Goal |
::= |
MainClass ( ClassDeclaration )* <EOF> |
MainClass |
::= |
"class" Identifier "{" "public" "static" "void" "main" "(" "String" "[" "]" Identifier ")" "{" Statement "}" "}" |
ClassDeclaration |
::= |
"class" Identifier ( "extends" Identifier )? "{" ( VarDeclaration )* ( MethodDeclaration )* "}" |
VarDeclaration |
::= |
Type Identifier ";" |
MethodDeclaration |
::= |
"public" Type Identifier "(" ( Type Identifier ( "," Type Identifier )* )? ")" "{" ( VarDeclaration )* ( Statement )* "return" Expression ";" "}" |
Type |
::= |
"int" "[" "]" |
|
| |
"boolean" |
|
| |
"int" |
|
| |
Identifier |
Statement |
::= |
"{" ( Statement )* "}" |
|
| |
"if" "(" Expression ")" Statement "else" Statement |
|
| |
"while" "(" Expression ")" Statement |
|
| |
"System.out.println" "(" Expression ")" ";" |
|
| |
Identifier "=" Expression ";" |
|
| |
Identifier "[" Expression "]" "=" Expression ";" |
Expression |
::= |
Expression ( "&&" | "<" | "+" | "-" | "*" ) Expression |
|
| |
Expression "[" Expression "]" |
|
| |
Expression "." "length" |
|
| |
Expression "." Identifier "(" ( Expression ( "," Expression )* )? ")" |
|
| |
<INTEGER_LITERAL> |
|
| |
"true" |
|
| |
"false" |
|
| |
Identifier |
|
| |
"this" |
|
| |
"new" "int" "[" Expression "]" |
|
| |
"new" Identifier "(" ")" |
|
| |
"!" Expression |
|
| |
"(" Expression ")" |
Identifier |
::= |
<IDENTIFIER> |