===== Terminals ===== [0]EOF [1]error [2]OP_GE [3]OP_LE [4]OP_EQ [5]OP_NE [6]OP_LAND [7]OP_LOR [8]INSTANCEOF [9]BOOLEAN [10]CLASS [11]ELSE [12]IF [13]INT [14]NEW [15]NULL [16]ONLY [17]PRIVATE [18]PUBLIC [19]RETURN [20]STATIC [21]SUPER [22]THIS [23]TRANSIENT [24]VOID [25]WHILE [26]DO [27]FOR [28]ASS_ADD [29]LPAREN [30]RPAREN [31]LBRACE [32]RBRACE [33]EQUALS [34]LBRACKET [35]RBRACKET [36]PERIOD [37]COLON [38]SEMICOLON [39]COMMA [40]PIPE [41]AND [42]ASTERICK [43]PLUSOP [44]MINUSOP [45]RSLASH [46]PERCENT [47]GREATER [48]LESSTHAN [49]QUESTION [50]BANG [51]EXTENDS [52]TRY [53]CATCH [54]IMPORT [55]IDENTIFIER [56]LITERAL [57]INTNUMBER [58]DOUBLE [59]BOOLEAN_VALUE [60]PRINT [61]DATABASE [62]SCHEMA_MANAGER [63]INSTANCE_ADAPTER [64]EDIT [65]AFTER [66]AROUND [67]BEFORE ===== Non terminals ===== [0]$START [1]ClassDecl [2]MemberDecl [3]Member [4]VariableDecl [5]MethodDecl [6]IdentifierList [7]Params [8]Param [9]Block [10]Statements [11]Statement [12]LValue [13]RValue [14]FieldReference [15]Assignment [16]MethodCall [17]Conditional [18]Version [19]Type [20]Types [21]Arguments [22]BooleanExprs [23]BooleanExpr [24]BooleanElem [25]ComparisonElem [26]Expression [27]ExpressionElem [28]ExpressionOp [29]Comparison [30]ComparisonOp [31]BoolOpr [32]ObjectCreation [33]ConstructorCall [34]ConstructorDecl [35]PackageName [36]SuperList [37]TopLevel [38]Modifiers [39]AccessModifier [40]Modifier [41]Edit [42]Primitive ===== Productions ===== [0] $START ::= TopLevel EOF [1] TopLevel ::= ClassDecl [2] TopLevel ::= EDIT Edit [3] TopLevel ::= Statement [4] Edit ::= LPAREN Types RPAREN Block [5] Edit ::= LPAREN ASTERICK RPAREN Block [6] Edit ::= LPAREN Types RPAREN COLON IDENTIFIER LPAREN Types RPAREN Block [7] Edit ::= LPAREN ASTERICK RPAREN COLON IDENTIFIER LPAREN Types RPAREN Block [8] Edit ::= LPAREN Types RPAREN COLON MethodDecl Block [9] Edit ::= LPAREN RPAREN COLON MethodDecl Block [10] Edit ::= LPAREN ASTERICK RPAREN COLON MethodDecl Block [11] Edit ::= Primitive [12] Primitive ::= AFTER LPAREN Types RPAREN Block [13] Primitive ::= AROUND LPAREN Types RPAREN Block Block [14] Primitive ::= BEFORE LPAREN Types RPAREN Block [15] Primitive ::= AFTER LPAREN Params RPAREN Block [16] Primitive ::= BEFORE LPAREN Params RPAREN Block [17] Primitive ::= AROUND LPAREN Params RPAREN Block Block [18] ClassDecl ::= CLASS Type LBRACE MemberDecl RBRACE [19] ClassDecl ::= CLASS Type EXTENDS Types LBRACE MemberDecl RBRACE [20] Version ::= LESSTHAN DOUBLE GREATER [21] Version ::= LESSTHAN ONLY GREATER [22] Version ::= LESSTHAN IDENTIFIER EQUALS DOUBLE GREATER [23] MemberDecl ::= MemberDecl Member [24] MemberDecl ::= Member [25] Member ::= Modifiers VariableDecl SEMICOLON [26] Member ::= VariableDecl SEMICOLON [27] Member ::= MethodDecl [28] Member ::= ConstructorDecl [29] Member ::= Primitive [30] VariableDecl ::= Type IdentifierList [31] Modifiers ::= AccessModifier Modifier [32] Modifiers ::= AccessModifier [33] Modifiers ::= Modifier [34] Modifier ::= STATIC [35] Modifier ::= TRANSIENT [36] AccessModifier ::= PUBLIC [37] AccessModifier ::= PRIVATE [38] IdentifierList ::= IdentifierList COMMA IDENTIFIER [39] IdentifierList ::= IdentifierList COMMA IDENTIFIER Assignment [40] IdentifierList ::= IDENTIFIER Assignment [41] IdentifierList ::= IDENTIFIER [42] ConstructorDecl ::= Type LPAREN Params RPAREN Block [43] ConstructorDecl ::= Type LPAREN RPAREN Block [44] ConstructorDecl ::= Type LPAREN Params RPAREN COLON SuperList Block [45] ConstructorDecl ::= Type LPAREN RPAREN COLON SuperList Block [46] SuperList ::= SuperList COMMA ConstructorCall [47] SuperList ::= ConstructorCall [48] Types ::= Types COMMA Type [49] Types ::= Type [50] Type ::= IDENTIFIER COLON IDENTIFIER [51] Type ::= IDENTIFIER COLON IDENTIFIER Version [52] Type ::= IDENTIFIER Version [53] Type ::= IDENTIFIER [54] MethodDecl ::= Type IDENTIFIER LPAREN Params RPAREN Block [55] MethodDecl ::= Type IDENTIFIER LPAREN RPAREN Block [56] Arguments ::= Arguments COMMA RValue [57] Arguments ::= RValue [58] Params ::= Params COMMA Param [59] Params ::= Param [60] Param ::= Type IDENTIFIER [61] Block ::= LBRACE Statements RBRACE [62] Block ::= LBRACE RBRACE [63] Statements ::= Statements Statement [64] Statements ::= Statement [65] Statement ::= VariableDecl SEMICOLON [66] Statement ::= RValue SEMICOLON [67] Statement ::= LValue Assignment SEMICOLON [68] Statement ::= Block [69] Statement ::= IF LPAREN Conditional RPAREN Statement [70] Statement ::= IF LPAREN Conditional RPAREN Statement ELSE Statement [71] Statement ::= WHILE LPAREN Conditional RPAREN Statement [72] Statement ::= FOR LPAREN Statement Conditional RValue RPAREN Statement [73] Statement ::= TRY Block CATCH LPAREN VariableDecl RPAREN Block [74] Statement ::= RETURN SEMICOLON [75] Statement ::= RETURN RValue SEMICOLON [76] Statement ::= RETURN Comparison SEMICOLON [77] Statement ::= PRINT LPAREN RValue RPAREN SEMICOLON [78] LValue ::= IDENTIFIER [79] LValue ::= FieldReference [80] FieldReference ::= IDENTIFIER PERIOD IDENTIFIER [81] FieldReference ::= THIS PERIOD IDENTIFIER [82] Assignment ::= EQUALS RValue [83] RValue ::= LITERAL [84] RValue ::= IDENTIFIER [85] RValue ::= THIS [86] RValue ::= LBRACKET Type RBRACKET [87] RValue ::= LBRACE Types RBRACE [88] RValue ::= MethodCall [89] RValue ::= IDENTIFIER PERIOD MethodCall [90] RValue ::= ObjectCreation [91] RValue ::= Expression [92] RValue ::= FieldReference [93] RValue ::= DOUBLE [94] RValue ::= BOOLEAN_VALUE [95] PackageName ::= PackageName IDENTIFIER PERIOD [96] PackageName ::= IDENTIFIER PERIOD [97] ObjectCreation ::= NEW ConstructorCall [98] ObjectCreation ::= NEW PackageName ConstructorCall [99] ConstructorCall ::= Type LPAREN Arguments RPAREN [100] ConstructorCall ::= Type LPAREN RPAREN [101] Expression ::= Expression ExpressionOp ExpressionElem [102] Expression ::= ExpressionElem ExpressionOp ExpressionElem [103] ExpressionOp ::= PLUSOP [104] ExpressionOp ::= MINUSOP [105] ExpressionOp ::= RSLASH [106] ExpressionOp ::= ASTERICK [107] ExpressionElem ::= LITERAL [108] ExpressionElem ::= IDENTIFIER [109] ExpressionElem ::= MethodCall [110] ExpressionElem ::= IDENTIFIER PERIOD MethodCall [111] ExpressionElem ::= ObjectCreation [112] ExpressionElem ::= FieldReference [113] ExpressionElem ::= DOUBLE [114] ExpressionElem ::= BOOLEAN_VALUE [115] MethodCall ::= IDENTIFIER LPAREN Arguments RPAREN [116] MethodCall ::= IDENTIFIER LPAREN RPAREN [117] Conditional ::= BooleanExprs [118] BooleanExprs ::= BooleanExprs BoolOpr BooleanExpr [119] BooleanExprs ::= BooleanExpr [120] BooleanExpr ::= BooleanElem [121] BooleanExpr ::= BANG BooleanElem [122] BooleanExpr ::= Comparison [123] BooleanElem ::= IDENTIFIER [124] BooleanElem ::= IDENTIFIER INSTANCEOF Type [125] BooleanElem ::= MethodCall [126] BooleanElem ::= IDENTIFIER PERIOD MethodCall [127] BooleanElem ::= BOOLEAN_VALUE [128] BoolOpr ::= OP_LAND [129] BoolOpr ::= OP_LOR [130] Comparison ::= ComparisonElem ComparisonOp ComparisonElem [131] ComparisonElem ::= IDENTIFIER [132] ComparisonElem ::= MethodCall [133] ComparisonElem ::= IDENTIFIER PERIOD MethodCall [134] ComparisonElem ::= IDENTIFIER PERIOD IDENTIFIER [135] ComparisonElem ::= LITERAL [136] ComparisonElem ::= DOUBLE [137] ComparisonOp ::= OP_GE [138] ComparisonOp ::= OP_LE [139] ComparisonOp ::= OP_EQ [140] ComparisonOp ::= OP_NE [141] ComparisonOp ::= GREATER [142] ComparisonOp ::= LESSTHAN