Hp_Config 		::= 	Section_list;
Section_list		::=	{Section [";"] ...};
Section			::=	"Section" Section_body "EndSection";
Section_body		::= 	Variables | Globals | Languages;

Variables 		::= 	"variables" Variable_list;
Variable_list		::= 	{Printer_variable [";"] ...};
Printer_variable	::= 	Switch_type Variable_syntax Options Default;	
Variable_syntax		::= 	String_type;
Options			::= 	{Setting "," ...};
Setting			::= 	Alpha_type | Numeric_type | String_type | Interval_type;
Default			::= 	Setting;

Globals			::=	"globals" Globals_list;
Globals_list		::= 	{Global [";"] ...};
Global			::= 	Alpha_type String_type;

Languages		::= 	Language_list;
Language_list		::=	{Language [";"] ...};
Language		::=	Alpha_type Language_command Numeric_type Language_magic_string;
Language_command	::=	String_type;
Language_magic_string 	::= 	String_type;

Switch_type		::=	"'-' ('a'..'z') *(~('a'..'z') | '_' | ('0'..'9'))";
Alpha_type		::=	"~('a'..'z') *(~('a'..'z') | '_' | ('0'..'9'))";
Numeric_type		::=	"$Z";
Interval_type		::=	"$N '-' $N";
String_type		::=	"'%"' *($. - '%"') '%"'";
