Expression Grammar

digit::=
0 | .. | 9
hex_digit::=
0 | .. | 9 | a | .. | f
octal_digit::=
0 | .. | 7
decimal_integer::=
digit { digit }
hex_integer::=
0x hex_digit { hexdigit }
octal_integer::=
0 octal_digit { octdigit }
integer::=
decimal_integer | hex_integer | octal_integer
float::=
digit { digit } [ . ] { digit } [ e | E [ + | - ] digit { digit } ]
quoted_character::=
\ any_character
character::=
any_character | quoted_character
string::=
{ character }
identifier_character::=
_ | @ | & | . | $ | alpha_character
identifier::=
identifier_character { identifier_character | digit }
function::=
identifier [( [ term ] { , [ term ] } )]
label::=
identifier
parenterm::=
( term )
negterm::=
- primary
primary::=
function | label | parenterm | negterm
powterm::=
[-]primary { primary }
mathterm::=
powterm { / | * | % powterm }
factor::=
mathterm { + | - mathterm }
relterm::=
factor {< | <= | >= | > | == | != factor }
conjterm::=
relterm { and relterm }
term::=
conjterm { or conjterm }