|
program |
::= |
( functiondefinition )* <EOF> |
|
functiondefinition |
::= |
type <ID> "(" ")" "{" statementlist "}" |
|
functioncall |
::= |
<ID> "(" ")" |
|
statementlist |
::= |
( block )* |
|
block |
::= |
"{" statementlist "}" |
|
|
| |
statement |
|
statement |
::= |
ifstatement |
|
|
| |
returnstatement ";" |
|
|
| |
printf ";" |
|
|
| |
statassignment ";" |
|
|
| |
functioncall ";" |
|
ifstatement |
::= |
<KW_IF> "(" assignment ")" block |
|
returnstatement |
::= |
<KW_RETURN> ( assignment )? |
|
printf |
::= |
<KW_PRINTF> "(" assignment ")" |
|
type |
::= |
<KW_BOOLEAN> |
|
|
| |
<KW_FLOAT> |
|
|
| |
<KW_INT> |
|
|
| |
<KW_VOID> |
|
statassignment |
::= |
<ID> "=" assignment |
|
assignment |
::= |
( ( <ID> "=" assignment ) | expr ) |
|
expr |
::= |
simpexpr ( ( "==" | "!=" | "<=" | ">=" | "<" | ">" ) simpexpr )? |
|
simpexpr |
::= |
( "-" )? term ( ( "+" | "-" | "||" ) term )* |
|
term |
::= |
factor ( ( "*" | "/" | "&&" ) factor )* |
|
factor |
::= |
<CONST_INT> |
|
|
| |
<CONST_FLOAT> |
|
|
| |
<CONST_BOOLEAN> |
|
|
| |
functioncall |
|
|
| |
<ID> |
|
|
| |
"(" assignment ")" |