ProgramaMiniJava --> ClasePrincipal ( DeclaracionDeClase )* EOF
ClasePrincipal --> "class" Identificador "{" "public" "static" "void" "main"
"(" "String" "[" "]" Identificador ")" "{" Instruccion "}" "}"
DeclaracionDeClase --> "class" Identificador ( "extends" Identificador )? "{"
( DeclaracionVar )* ( DeclaracionMetodo )* "}"
DeclaracionVar --> Tipo Identificador ";"
DeclaracionMetodo --> "public" Tipo Identificador "(" ( Tipo Identificador
( "," Tipo Identificador )* )? ")" "{" ( DeclaracionVar)*
( Instruccion )* "return" Expresion ";" "}"
Tipo --> "int" "[" "]"
| "boolean"
| "int"
| Identificador
Instruccion --> "{" ( Instruccion )* "}"
| "if" "(" Expresion ")" Instruccion "else" Instruccion
| "while" "(" Expresion ")" Instruccion
| "System.out.println" "(" Expresion ")" ";"
| Identificador "=" Expresion ";"
| Identificador "[" Expresion "]" "=" Expresion ";"
Expresion --> Expresion ( "&&" | "<" | "+" | "-" | "*" ) Expresion
| Expresion "[" Expresion "]"
| Expresion "." "length"
| Expresion "." Identificador "(" ( Expresion (
"," Expresion )* )? ")"
| NUMERO_ENTERO
| "true"
| "false"
| Identificador
| "this"
| "new" "int" "[" Expresion "]"
| "new" Identificador "(" ")"
| "!" Expresion
| "(" Expresion ")"
Identificador --> IDENTIFICADOR
|