Program: MainClass ClassDeclaration eof
Program  ::= MainClass ClassDeclaration* 'eof'
no referencesMainClass: class Identifier { public static void main ( String [ ] Identifier ) { Statement } }
MainClass
         ::= 'class' Identifier '{' 'public' 'static' 'void' 'main' '(' 'String' '[' ']' Identifier ')' '{' Statement '}' '}'
referenced by: Program ClassDeclaration: class Identifier extends Identifier { VarDeclaration MethodDeclaration }
         ::= 'class' Identifier ( 'extends' Identifier )? '{' VarDeclaration* MethodDeclaration* '}'
referenced by: Program VarDeclaration: Type Identifier ;
         ::= Type Identifier ';'
referenced by: ClassDeclaration MethodDeclaration MethodDeclaration: public Type Identifier ( Type Identifier , ) { VarDeclaration Statement return Expression ; }
         ::= 'public' Type Identifier '(' ( Type Identifier ( ',' Type Identifier )* )? ')' '{' VarDeclaration* Statement* 'return' Expression ';' '}'
referenced by: ClassDeclaration Type: int [ ] boolean Identifier
Type     ::= 'int' ( '[' ']' )?
           | 'boolean'
           | Identifier
referenced by: MethodDeclaration VarDeclaration Statement: { Statement } if ( Expression ) Statement else while ( Expression ) Statement System.out.println ( Expression ) Identifier [ Expression ] = Expression ;
         ::= '{' Statement* '}'
           | ( 'if' '(' Expression ')' Statement 'else' | 'while' '(' Expression ')' ) Statement
           | ( 'System.out.println' '(' Expression ')' | Identifier ( '[' Expression ']' )? '=' Expression ) ';'
referenced by: MainClass MethodDeclaration Statement Expression: Expression && < + - * Expression [ Expression ] . length Identifier ( Expression , ) Integer true false Identifier this new int [ Expression ] Identifier ( ) ! Expression ( Expression )
         ::= Expression ( ( '&&' | '<' | '+' | '-' | '*' ) Expression | '[' Expression ']' | '.' ( 'length' | Identifier '(' ( Expression ( ',' Expression )* )? ')' ) )
           | Integer
           | 'true'
           | 'false'
           | Identifier
           | 'this'
           | 'new' ( 'int' '[' Expression ']' | Identifier '(' ')' )
           | '!' Expression
           | '(' Expression ')'
referenced by: Expression MethodDeclaration Statement Integer: [0-9]
Integer  ::= [0-9]+
referenced by: Expression Identifier: [a-z] [A-Z] _ [a-z] [A-Z] [0-9] _
         ::= [a-zA-Z_] [a-zA-Z0-9_]*
referenced by: ClassDeclaration Expression MainClass MethodDeclaration Statement Type VarDeclaration   ... generated by Railroad Diagram Generator R R