summaryrefslogtreecommitdiff
path: root/src/minijava/MiniJavaParser.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/minijava/MiniJavaParser.java')
-rw-r--r--src/minijava/MiniJavaParser.java1947
1 files changed, 1947 insertions, 0 deletions
diff --git a/src/minijava/MiniJavaParser.java b/src/minijava/MiniJavaParser.java
new file mode 100644
index 0000000..fbae7bb
--- /dev/null
+++ b/src/minijava/MiniJavaParser.java
@@ -0,0 +1,1947 @@
+package minijava;
+/* Generated By:JavaCC: Do not edit this line. MiniJavaParser.java */
+import minijava.syntaxtree.AllocationExpression;
+import minijava.syntaxtree.AndExpression;
+import minijava.syntaxtree.ArrayAllocationExpression;
+import minijava.syntaxtree.ArrayAssignmentStatement;
+import minijava.syntaxtree.ArrayLength;
+import minijava.syntaxtree.ArrayLookup;
+import minijava.syntaxtree.ArrayType;
+import minijava.syntaxtree.AssignmentStatement;
+import minijava.syntaxtree.Block;
+import minijava.syntaxtree.BooleanType;
+import minijava.syntaxtree.BracketExpression;
+import minijava.syntaxtree.ClassDeclaration;
+import minijava.syntaxtree.ClassExtendsDeclaration;
+import minijava.syntaxtree.CompareExpression;
+import minijava.syntaxtree.Expression;
+import minijava.syntaxtree.ExpressionList;
+import minijava.syntaxtree.ExpressionRest;
+import minijava.syntaxtree.FalseLiteral;
+import minijava.syntaxtree.FormalParameter;
+import minijava.syntaxtree.FormalParameterList;
+import minijava.syntaxtree.FormalParameterRest;
+import minijava.syntaxtree.Goal;
+import minijava.syntaxtree.Identifier;
+import minijava.syntaxtree.IfStatement;
+import minijava.syntaxtree.IntegerLiteral;
+import minijava.syntaxtree.IntegerType;
+import minijava.syntaxtree.MainClass;
+import minijava.syntaxtree.MessageSend;
+import minijava.syntaxtree.MethodDeclaration;
+import minijava.syntaxtree.MinusExpression;
+import minijava.syntaxtree.NodeChoice;
+import minijava.syntaxtree.NodeListOptional;
+import minijava.syntaxtree.NodeOptional;
+import minijava.syntaxtree.NodeToken;
+import minijava.syntaxtree.NotExpression;
+import minijava.syntaxtree.PlusExpression;
+import minijava.syntaxtree.PrimaryExpression;
+import minijava.syntaxtree.PrintStatement;
+import minijava.syntaxtree.Statement;
+import minijava.syntaxtree.ThisExpression;
+import minijava.syntaxtree.TimesExpression;
+import minijava.syntaxtree.TrueLiteral;
+import minijava.syntaxtree.Type;
+import minijava.syntaxtree.TypeDeclaration;
+import minijava.syntaxtree.VarDeclaration;
+import minijava.syntaxtree.WhileStatement;
+
+
+public class MiniJavaParser implements MiniJavaParserConstants {
+
+ static final public Goal Goal() throws ParseException {
+ MainClass n0;
+ NodeListOptional n1 = new NodeListOptional();
+ TypeDeclaration n2;
+ NodeToken n3;
+ Token n4;
+ n0 = MainClass();
+ label_1:
+ while (true) {
+ switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+ case CLASS:
+ ;
+ break;
+ default:
+ jj_la1[0] = jj_gen;
+ break label_1;
+ }
+ n2 = TypeDeclaration();
+ n1.addNode(n2);
+ }
+ n1.nodes.trimToSize();
+ n4 = jj_consume_token(0);
+ n4.beginColumn++; n4.endColumn++;
+ n3 = JTBToolkit.makeNodeToken(n4);
+ {if (true) return new Goal(n0,n1,n3);}
+ throw new Error("Missing return statement in function");
+ }
+
+ static final public MainClass MainClass() throws ParseException {
+ NodeToken n0;
+ Token n1;
+ Identifier n2;
+ NodeToken n3;
+ Token n4;
+ NodeToken n5;
+ Token n6;
+ NodeToken n7;
+ Token n8;
+ NodeToken n9;
+ Token n10;
+ NodeToken n11;
+ Token n12;
+ NodeToken n13;
+ Token n14;
+ NodeToken n15;
+ Token n16;
+ NodeToken n17;
+ Token n18;
+ NodeToken n19;
+ Token n20;
+ Identifier n21;
+ NodeToken n22;
+ Token n23;
+ NodeToken n24;
+ Token n25;
+ PrintStatement n26;
+ NodeToken n27;
+ Token n28;
+ NodeToken n29;
+ Token n30;
+ n1 = jj_consume_token(CLASS);
+ n0 = JTBToolkit.makeNodeToken(n1);
+ n2 = Identifier();
+ n4 = jj_consume_token(LBRACE);
+ n3 = JTBToolkit.makeNodeToken(n4);
+ n6 = jj_consume_token(PUBLIC);
+ n5 = JTBToolkit.makeNodeToken(n6);
+ n8 = jj_consume_token(STATIC);
+ n7 = JTBToolkit.makeNodeToken(n8);
+ n10 = jj_consume_token(VOID);
+ n9 = JTBToolkit.makeNodeToken(n10);
+ n12 = jj_consume_token(MAIN);
+ n11 = JTBToolkit.makeNodeToken(n12);
+ n14 = jj_consume_token(LPAREN);
+ n13 = JTBToolkit.makeNodeToken(n14);
+ n16 = jj_consume_token(STRING);
+ n15 = JTBToolkit.makeNodeToken(n16);
+ n18 = jj_consume_token(LSQPAREN);
+ n17 = JTBToolkit.makeNodeToken(n18);
+ n20 = jj_consume_token(RSQPAREN);
+ n19 = JTBToolkit.makeNodeToken(n20);
+ n21 = Identifier();
+ n23 = jj_consume_token(RPAREN);
+ n22 = JTBToolkit.makeNodeToken(n23);
+ n25 = jj_consume_token(LBRACE);
+ n24 = JTBToolkit.makeNodeToken(n25);
+ n26 = PrintStatement();
+ n28 = jj_consume_token(RBRACE);
+ n27 = JTBToolkit.makeNodeToken(n28);
+ n30 = jj_consume_token(RBRACE);
+ n29 = JTBToolkit.makeNodeToken(n30);
+ {if (true) return new MainClass(n0,n2,n3,n5,n7,n9,n11,n13,n15,n17,n19,n21,n22,n24,n26,n27,n29);}
+ throw new Error("Missing return statement in function");
+ }
+
+ static final public TypeDeclaration TypeDeclaration() throws ParseException {
+ NodeChoice n0;
+ ClassDeclaration n1;
+ ClassExtendsDeclaration n2;
+ if (jj_2_1(3)) {
+ n1 = ClassDeclaration();
+ n0 = new NodeChoice(n1, 0);
+ } else {
+ switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+ case CLASS:
+ n2 = ClassExtendsDeclaration();
+ n0 = new NodeChoice(n2, 1);
+ break;
+ default:
+ jj_la1[1] = jj_gen;
+ jj_consume_token(-1);
+ throw new ParseException();
+ }
+ }
+ {if (true) return new TypeDeclaration(n0);}
+ throw new Error("Missing return statement in function");
+ }
+
+ static final public ClassDeclaration ClassDeclaration() throws ParseException {
+ NodeToken n0;
+ Token n1;
+ Identifier n2;
+ NodeToken n3;
+ Token n4;
+ NodeListOptional n5 = new NodeListOptional();
+ VarDeclaration n6;
+ NodeListOptional n7 = new NodeListOptional();
+ MethodDeclaration n8;
+ NodeToken n9;
+ Token n10;
+ n1 = jj_consume_token(CLASS);
+ n0 = JTBToolkit.makeNodeToken(n1);
+ n2 = Identifier();
+ n4 = jj_consume_token(LBRACE);
+ n3 = JTBToolkit.makeNodeToken(n4);
+ label_2:
+ while (true) {
+ switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+ case BOOLEAN:
+ case INTEGER:
+ case IDENTIFIER:
+ ;
+ break;
+ default:
+ jj_la1[2] = jj_gen;
+ break label_2;
+ }
+ n6 = VarDeclaration();
+ n5.addNode(n6);
+ }
+ n5.nodes.trimToSize();
+ label_3:
+ while (true) {
+ switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+ case PUBLIC:
+ ;
+ break;
+ default:
+ jj_la1[3] = jj_gen;
+ break label_3;
+ }
+ n8 = MethodDeclaration();
+ n7.addNode(n8);
+ }
+ n7.nodes.trimToSize();
+ n10 = jj_consume_token(RBRACE);
+ n9 = JTBToolkit.makeNodeToken(n10);
+ {if (true) return new ClassDeclaration(n0,n2,n3,n5,n7,n9);}
+ throw new Error("Missing return statement in function");
+ }
+
+ static final public ClassExtendsDeclaration ClassExtendsDeclaration() throws ParseException {
+ NodeToken n0;
+ Token n1;
+ Identifier n2;
+ NodeToken n3;
+ Token n4;
+ Identifier n5;
+ NodeToken n6;
+ Token n7;
+ NodeListOptional n8 = new NodeListOptional();
+ VarDeclaration n9;
+ NodeListOptional n10 = new NodeListOptional();
+ MethodDeclaration n11;
+ NodeToken n12;
+ Token n13;
+ n1 = jj_consume_token(CLASS);
+ n0 = JTBToolkit.makeNodeToken(n1);
+ n2 = Identifier();
+ n4 = jj_consume_token(EXTENDS);
+ n3 = JTBToolkit.makeNodeToken(n4);
+ n5 = Identifier();
+ n7 = jj_consume_token(LBRACE);
+ n6 = JTBToolkit.makeNodeToken(n7);
+ label_4:
+ while (true) {
+ switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+ case BOOLEAN:
+ case INTEGER:
+ case IDENTIFIER:
+ ;
+ break;
+ default:
+ jj_la1[4] = jj_gen;
+ break label_4;
+ }
+ n9 = VarDeclaration();
+ n8.addNode(n9);
+ }
+ n8.nodes.trimToSize();
+ label_5:
+ while (true) {
+ switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+ case PUBLIC:
+ ;
+ break;
+ default:
+ jj_la1[5] = jj_gen;
+ break label_5;
+ }
+ n11 = MethodDeclaration();
+ n10.addNode(n11);
+ }
+ n10.nodes.trimToSize();
+ n13 = jj_consume_token(RBRACE);
+ n12 = JTBToolkit.makeNodeToken(n13);
+ {if (true) return new ClassExtendsDeclaration(n0,n2,n3,n5,n6,n8,n10,n12);}
+ throw new Error("Missing return statement in function");
+ }
+
+ static final public VarDeclaration VarDeclaration() throws ParseException {
+ Type n0;
+ Identifier n1;
+ NodeToken n2;
+ Token n3;
+ n0 = Type();
+ n1 = Identifier();
+ n3 = jj_consume_token(SEMICOLON);
+ n2 = JTBToolkit.makeNodeToken(n3);
+ {if (true) return new VarDeclaration(n0,n1,n2);}
+ throw new Error("Missing return statement in function");
+ }
+
+ static final public MethodDeclaration MethodDeclaration() throws ParseException {
+ NodeToken n0;
+ Token n1;
+ Type n2;
+ Identifier n3;
+ NodeToken n4;
+ Token n5;
+ NodeOptional n6 = new NodeOptional();
+ FormalParameterList n7;
+ NodeToken n8;
+ Token n9;
+ NodeToken n10;
+ Token n11;
+ NodeListOptional n12 = new NodeListOptional();
+ VarDeclaration n13;
+ NodeListOptional n14 = new NodeListOptional();
+ Statement n15;
+ NodeToken n16;
+ Token n17;
+ Expression n18;
+ NodeToken n19;
+ Token n20;
+ NodeToken n21;
+ Token n22;
+ n1 = jj_consume_token(PUBLIC);
+ n0 = JTBToolkit.makeNodeToken(n1);
+ n2 = Type();
+ n3 = Identifier();
+ n5 = jj_consume_token(LPAREN);
+ n4 = JTBToolkit.makeNodeToken(n5);
+ switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+ case BOOLEAN:
+ case INTEGER:
+ case IDENTIFIER:
+ n7 = FormalParameterList();
+ n6.addNode(n7);
+ break;
+ default:
+ jj_la1[6] = jj_gen;
+ ;
+ }
+ n9 = jj_consume_token(RPAREN);
+ n8 = JTBToolkit.makeNodeToken(n9);
+ n11 = jj_consume_token(LBRACE);
+ n10 = JTBToolkit.makeNodeToken(n11);
+ label_6:
+ while (true) {
+ if (jj_2_2(2)) {
+ ;
+ } else {
+ break label_6;
+ }
+ n13 = VarDeclaration();
+ n12.addNode(n13);
+ }
+ n12.nodes.trimToSize();
+ label_7:
+ while (true) {
+ switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+ case LBRACE:
+ case IF:
+ case WHILE:
+ case PRINT:
+ case IDENTIFIER:
+ ;
+ break;
+ default:
+ jj_la1[7] = jj_gen;
+ break label_7;
+ }
+ n15 = Statement();
+ n14.addNode(n15);
+ }
+ n14.nodes.trimToSize();
+ n17 = jj_consume_token(RETURN);
+ n16 = JTBToolkit.makeNodeToken(n17);
+ n18 = Expression();
+ n20 = jj_consume_token(SEMICOLON);
+ n19 = JTBToolkit.makeNodeToken(n20);
+ n22 = jj_consume_token(RBRACE);
+ n21 = JTBToolkit.makeNodeToken(n22);
+ {if (true) return new MethodDeclaration(n0,n2,n3,n4,n6,n8,n10,n12,n14,n16,n18,n19,n21);}
+ throw new Error("Missing return statement in function");
+ }
+
+ static final public FormalParameterList FormalParameterList() throws ParseException {
+ FormalParameter n0;
+ NodeListOptional n1 = new NodeListOptional();
+ FormalParameterRest n2;
+ n0 = FormalParameter();
+ label_8:
+ while (true) {
+ switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+ case 47:
+ ;
+ break;
+ default:
+ jj_la1[8] = jj_gen;
+ break label_8;
+ }
+ n2 = FormalParameterRest();
+ n1.addNode(n2);
+ }
+ n1.nodes.trimToSize();
+ {if (true) return new FormalParameterList(n0,n1);}
+ throw new Error("Missing return statement in function");
+ }
+
+ static final public FormalParameter FormalParameter() throws ParseException {
+ Type n0;
+ Identifier n1;
+ n0 = Type();
+ n1 = Identifier();
+ {if (true) return new FormalParameter(n0,n1);}
+ throw new Error("Missing return statement in function");
+ }
+
+ static final public FormalParameterRest FormalParameterRest() throws ParseException {
+ NodeToken n0;
+ Token n1;
+ FormalParameter n2;
+ n1 = jj_consume_token(47);
+ n0 = JTBToolkit.makeNodeToken(n1);
+ n2 = FormalParameter();
+ {if (true) return new FormalParameterRest(n0,n2);}
+ throw new Error("Missing return statement in function");
+ }
+
+ static final public Type Type() throws ParseException {
+ NodeChoice n0;
+ ArrayType n1;
+ BooleanType n2;
+ IntegerType n3;
+ Identifier n4;
+ if (jj_2_3(3)) {
+ n1 = ArrayType();
+ n0 = new NodeChoice(n1, 0);
+ } else {
+ switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+ case BOOLEAN:
+ n2 = BooleanType();
+ n0 = new NodeChoice(n2, 1);
+ break;
+ case INTEGER:
+ n3 = IntegerType();
+ n0 = new NodeChoice(n3, 2);
+ break;
+ case IDENTIFIER:
+ n4 = Identifier();
+ n0 = new NodeChoice(n4, 3);
+ break;
+ default:
+ jj_la1[9] = jj_gen;
+ jj_consume_token(-1);
+ throw new ParseException();
+ }
+ }
+ {if (true) return new Type(n0);}
+ throw new Error("Missing return statement in function");
+ }
+
+ static final public ArrayType ArrayType() throws ParseException {
+ NodeToken n0;
+ Token n1;
+ NodeToken n2;
+ Token n3;
+ NodeToken n4;
+ Token n5;
+ n1 = jj_consume_token(INTEGER);
+ n0 = JTBToolkit.makeNodeToken(n1);
+ n3 = jj_consume_token(LSQPAREN);
+ n2 = JTBToolkit.makeNodeToken(n3);
+ n5 = jj_consume_token(RSQPAREN);
+ n4 = JTBToolkit.makeNodeToken(n5);
+ {if (true) return new ArrayType(n0,n2,n4);}
+ throw new Error("Missing return statement in function");
+ }
+
+ static final public BooleanType BooleanType() throws ParseException {
+ NodeToken n0;
+ Token n1;
+ n1 = jj_consume_token(BOOLEAN);
+ n0 = JTBToolkit.makeNodeToken(n1);
+ {if (true) return new BooleanType(n0);}
+ throw new Error("Missing return statement in function");
+ }
+
+ static final public IntegerType IntegerType() throws ParseException {
+ NodeToken n0;
+ Token n1;
+ n1 = jj_consume_token(INTEGER);
+ n0 = JTBToolkit.makeNodeToken(n1);
+ {if (true) return new IntegerType(n0);}
+ throw new Error("Missing return statement in function");
+ }
+
+ static final public Statement Statement() throws ParseException {
+ NodeChoice n0;
+ Block n1;
+ AssignmentStatement n2;
+ ArrayAssignmentStatement n3;
+ IfStatement n4;
+ WhileStatement n5;
+ PrintStatement n6;
+ switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+ case LBRACE:
+ n1 = Block();
+ n0 = new NodeChoice(n1, 0);
+ break;
+ default:
+ jj_la1[10] = jj_gen;
+ if (jj_2_4(2)) {
+ n2 = AssignmentStatement();
+ n0 = new NodeChoice(n2, 1);
+ } else if (jj_2_5(2)) {
+ n3 = ArrayAssignmentStatement();
+ n0 = new NodeChoice(n3, 2);
+ } else {
+ switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+ case IF:
+ n4 = IfStatement();
+ n0 = new NodeChoice(n4, 3);
+ break;
+ case WHILE:
+ n5 = WhileStatement();
+ n0 = new NodeChoice(n5, 4);
+ break;
+ case PRINT:
+ n6 = PrintStatement();
+ n0 = new NodeChoice(n6, 5);
+ break;
+ default:
+ jj_la1[11] = jj_gen;
+ jj_consume_token(-1);
+ throw new ParseException();
+ }
+ }
+ }
+ {if (true) return new Statement(n0);}
+ throw new Error("Missing return statement in function");
+ }
+
+ static final public Block Block() throws ParseException {
+ NodeToken n0;
+ Token n1;
+ NodeListOptional n2 = new NodeListOptional();
+ Statement n3;
+ NodeToken n4;
+ Token n5;
+ n1 = jj_consume_token(LBRACE);
+ n0 = JTBToolkit.makeNodeToken(n1);
+ label_9:
+ while (true) {
+ switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+ case LBRACE:
+ case IF:
+ case WHILE:
+ case PRINT:
+ case IDENTIFIER:
+ ;
+ break;
+ default:
+ jj_la1[12] = jj_gen;
+ break label_9;
+ }
+ n3 = Statement();
+ n2.addNode(n3);
+ }
+ n2.nodes.trimToSize();
+ n5 = jj_consume_token(RBRACE);
+ n4 = JTBToolkit.makeNodeToken(n5);
+ {if (true) return new Block(n0,n2,n4);}
+ throw new Error("Missing return statement in function");
+ }
+
+ static final public AssignmentStatement AssignmentStatement() throws ParseException {
+ Identifier n0;
+ NodeToken n1;
+ Token n2;
+ Expression n3;
+ NodeToken n4;
+ Token n5;
+ n0 = Identifier();
+ n2 = jj_consume_token(ASSIGN);
+ n1 = JTBToolkit.makeNodeToken(n2);
+ n3 = Expression();
+ n5 = jj_consume_token(SEMICOLON);
+ n4 = JTBToolkit.makeNodeToken(n5);
+ {if (true) return new AssignmentStatement(n0,n1,n3,n4);}
+ throw new Error("Missing return statement in function");
+ }
+
+ static final public ArrayAssignmentStatement ArrayAssignmentStatement() throws ParseException {
+ Identifier n0;
+ NodeToken n1;
+ Token n2;
+ Expression n3;
+ NodeToken n4;
+ Token n5;
+ NodeToken n6;
+ Token n7;
+ Expression n8;
+ NodeToken n9;
+ Token n10;
+ n0 = Identifier();
+ n2 = jj_consume_token(LSQPAREN);
+ n1 = JTBToolkit.makeNodeToken(n2);
+ n3 = Expression();
+ n5 = jj_consume_token(RSQPAREN);
+ n4 = JTBToolkit.makeNodeToken(n5);
+ n7 = jj_consume_token(ASSIGN);
+ n6 = JTBToolkit.makeNodeToken(n7);
+ n8 = Expression();
+ n10 = jj_consume_token(SEMICOLON);
+ n9 = JTBToolkit.makeNodeToken(n10);
+ {if (true) return new ArrayAssignmentStatement(n0,n1,n3,n4,n6,n8,n9);}
+ throw new Error("Missing return statement in function");
+ }
+
+ static final public IfStatement IfStatement() throws ParseException {
+ NodeToken n0;
+ Token n1;
+ NodeToken n2;
+ Token n3;
+ Expression n4;
+ NodeToken n5;
+ Token n6;
+ Statement n7;
+ NodeToken n8;
+ Token n9;
+ Statement n10;
+ n1 = jj_consume_token(IF);
+ n0 = JTBToolkit.makeNodeToken(n1);
+ n3 = jj_consume_token(LPAREN);
+ n2 = JTBToolkit.makeNodeToken(n3);
+ n4 = Expression();
+ n6 = jj_consume_token(RPAREN);
+ n5 = JTBToolkit.makeNodeToken(n6);
+ n7 = Statement();
+ n9 = jj_consume_token(ELSE);
+ n8 = JTBToolkit.makeNodeToken(n9);
+ n10 = Statement();
+ {if (true) return new IfStatement(n0,n2,n4,n5,n7,n8,n10);}
+ throw new Error("Missing return statement in function");
+ }
+
+ static final public WhileStatement WhileStatement() throws ParseException {
+ NodeToken n0;
+ Token n1;
+ NodeToken n2;
+ Token n3;
+ Expression n4;
+ NodeToken n5;
+ Token n6;
+ Statement n7;
+ n1 = jj_consume_token(WHILE);
+ n0 = JTBToolkit.makeNodeToken(n1);
+ n3 = jj_consume_token(LPAREN);
+ n2 = JTBToolkit.makeNodeToken(n3);
+ n4 = Expression();
+ n6 = jj_consume_token(RPAREN);
+ n5 = JTBToolkit.makeNodeToken(n6);
+ n7 = Statement();
+ {if (true) return new WhileStatement(n0,n2,n4,n5,n7);}
+ throw new Error("Missing return statement in function");
+ }
+
+ static final public PrintStatement PrintStatement() throws ParseException {
+ NodeToken n0;
+ Token n1;
+ NodeToken n2;
+ Token n3;
+ Expression n4;
+ NodeToken n5;
+ Token n6;
+ NodeToken n7;
+ Token n8;
+ n1 = jj_consume_token(PRINT);
+ n0 = JTBToolkit.makeNodeToken(n1);
+ n3 = jj_consume_token(LPAREN);
+ n2 = JTBToolkit.makeNodeToken(n3);
+ n4 = Expression();
+ n6 = jj_consume_token(RPAREN);
+ n5 = JTBToolkit.makeNodeToken(n6);
+ n8 = jj_consume_token(SEMICOLON);
+ n7 = JTBToolkit.makeNodeToken(n8);
+ {if (true) return new PrintStatement(n0,n2,n4,n5,n7);}
+ throw new Error("Missing return statement in function");
+ }
+
+ static final public Expression Expression() throws ParseException {
+ NodeChoice n0;
+ AndExpression n1;
+ CompareExpression n2;
+ PlusExpression n3;
+ MinusExpression n4;
+ TimesExpression n5;
+ ArrayLookup n6;
+ ArrayLength n7;
+ MessageSend n8;
+ PrimaryExpression n9;
+ if (jj_2_6(2147483647)) {
+ n1 = AndExpression();
+ n0 = new NodeChoice(n1, 0);
+ } else if (jj_2_7(2147483647)) {
+ n2 = CompareExpression();
+ n0 = new NodeChoice(n2, 1);
+ } else if (jj_2_8(2147483647)) {
+ n3 = PlusExpression();
+ n0 = new NodeChoice(n3, 2);
+ } else if (jj_2_9(2147483647)) {
+ n4 = MinusExpression();
+ n0 = new NodeChoice(n4, 3);
+ } else if (jj_2_10(2147483647)) {
+ n5 = TimesExpression();
+ n0 = new NodeChoice(n5, 4);
+ } else if (jj_2_11(2147483647)) {
+ n6 = ArrayLookup();
+ n0 = new NodeChoice(n6, 5);
+ } else if (jj_2_12(2147483647)) {
+ n7 = ArrayLength();
+ n0 = new NodeChoice(n7, 6);
+ } else if (jj_2_13(2147483647)) {
+ n8 = MessageSend();
+ n0 = new NodeChoice(n8, 7);
+ } else {
+ switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+ case LPAREN:
+ case NOT:
+ case FALSE:
+ case NEW:
+ case THIS:
+ case TRUE:
+ case INTEGER_LITERAL:
+ case IDENTIFIER:
+ n9 = PrimaryExpression();
+ n0 = new NodeChoice(n9, 8);
+ break;
+ default:
+ jj_la1[13] = jj_gen;
+ jj_consume_token(-1);
+ throw new ParseException();
+ }
+ }
+ {if (true) return new Expression(n0);}
+ throw new Error("Missing return statement in function");
+ }
+
+ static final public AndExpression AndExpression() throws ParseException {
+ PrimaryExpression n0;
+ NodeToken n1;
+ Token n2;
+ PrimaryExpression n3;
+ n0 = PrimaryExpression();
+ n2 = jj_consume_token(AND);
+ n1 = JTBToolkit.makeNodeToken(n2);
+ n3 = PrimaryExpression();
+ {if (true) return new AndExpression(n0,n1,n3);}
+ throw new Error("Missing return statement in function");
+ }
+
+ static final public CompareExpression CompareExpression() throws ParseException {
+ PrimaryExpression n0;
+ NodeToken n1;
+ Token n2;
+ PrimaryExpression n3;
+ n0 = PrimaryExpression();
+ n2 = jj_consume_token(LT);
+ n1 = JTBToolkit.makeNodeToken(n2);
+ n3 = PrimaryExpression();
+ {if (true) return new CompareExpression(n0,n1,n3);}
+ throw new Error("Missing return statement in function");
+ }
+
+ static final public PlusExpression PlusExpression() throws ParseException {
+ PrimaryExpression n0;
+ NodeToken n1;
+ Token n2;
+ PrimaryExpression n3;
+ n0 = PrimaryExpression();
+ n2 = jj_consume_token(PLUS);
+ n1 = JTBToolkit.makeNodeToken(n2);
+ n3 = PrimaryExpression();
+ {if (true) return new PlusExpression(n0,n1,n3);}
+ throw new Error("Missing return statement in function");
+ }
+
+ static final public MinusExpression MinusExpression() throws ParseException {
+ PrimaryExpression n0;
+ NodeToken n1;
+ Token n2;
+ PrimaryExpression n3;
+ n0 = PrimaryExpression();
+ n2 = jj_consume_token(MINUS);
+ n1 = JTBToolkit.makeNodeToken(n2);
+ n3 = PrimaryExpression();
+ {if (true) return new MinusExpression(n0,n1,n3);}
+ throw new Error("Missing return statement in function");
+ }
+
+ static final public TimesExpression TimesExpression() throws ParseException {
+ PrimaryExpression n0;
+ NodeToken n1;
+ Token n2;
+ PrimaryExpression n3;
+ n0 = PrimaryExpression();
+ n2 = jj_consume_token(48);
+ n1 = JTBToolkit.makeNodeToken(n2);
+ n3 = PrimaryExpression();
+ {if (true) return new TimesExpression(n0,n1,n3);}
+ throw new Error("Missing return statement in function");
+ }
+
+ static final public ArrayLookup ArrayLookup() throws ParseException {
+ PrimaryExpression n0;
+ NodeToken n1;
+ Token n2;
+ PrimaryExpression n3;
+ NodeToken n4;
+ Token n5;
+ n0 = PrimaryExpression();
+ n2 = jj_consume_token(LSQPAREN);
+ n1 = JTBToolkit.makeNodeToken(n2);
+ n3 = PrimaryExpression();
+ n5 = jj_consume_token(RSQPAREN);
+ n4 = JTBToolkit.makeNodeToken(n5);
+ {if (true) return new ArrayLookup(n0,n1,n3,n4);}
+ throw new Error("Missing return statement in function");
+ }
+
+ static final public ArrayLength ArrayLength() throws ParseException {
+ PrimaryExpression n0;
+ NodeToken n1;
+ Token n2;
+ NodeToken n3;
+ Token n4;
+ n0 = PrimaryExpression();
+ n2 = jj_consume_token(DOT);
+ n1 = JTBToolkit.makeNodeToken(n2);
+ n4 = jj_consume_token(LENGTH);
+ n3 = JTBToolkit.makeNodeToken(n4);
+ {if (true) return new ArrayLength(n0,n1,n3);}
+ throw new Error("Missing return statement in function");
+ }
+
+ static final public MessageSend MessageSend() throws ParseException {
+ PrimaryExpression n0;
+ NodeToken n1;
+ Token n2;
+ Identifier n3;
+ NodeToken n4;
+ Token n5;
+ NodeOptional n6 = new NodeOptional();
+ ExpressionList n7;
+ NodeToken n8;
+ Token n9;
+ n0 = PrimaryExpression();
+ n2 = jj_consume_token(DOT);
+ n1 = JTBToolkit.makeNodeToken(n2);
+ n3 = Identifier();
+ n5 = jj_consume_token(LPAREN);
+ n4 = JTBToolkit.makeNodeToken(n5);
+ switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+ case LPAREN:
+ case NOT:
+ case FALSE:
+ case NEW:
+ case THIS:
+ case TRUE:
+ case INTEGER_LITERAL:
+ case IDENTIFIER:
+ n7 = ExpressionList();
+ n6.addNode(n7);
+ break;
+ default:
+ jj_la1[14] = jj_gen;
+ ;
+ }
+ n9 = jj_consume_token(RPAREN);
+ n8 = JTBToolkit.makeNodeToken(n9);
+ {if (true) return new MessageSend(n0,n1,n3,n4,n6,n8);}
+ throw new Error("Missing return statement in function");
+ }
+
+ static final public ExpressionList ExpressionList() throws ParseException {
+ Expression n0;
+ NodeListOptional n1 = new NodeListOptional();
+ ExpressionRest n2;
+ n0 = Expression();
+ label_10:
+ while (true) {
+ switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+ case 47:
+ ;
+ break;
+ default:
+ jj_la1[15] = jj_gen;
+ break label_10;
+ }
+ n2 = ExpressionRest();
+ n1.addNode(n2);
+ }
+ n1.nodes.trimToSize();
+ {if (true) return new ExpressionList(n0,n1);}
+ throw new Error("Missing return statement in function");
+ }
+
+ static final public ExpressionRest ExpressionRest() throws ParseException {
+ NodeToken n0;
+ Token n1;
+ Expression n2;
+ n1 = jj_consume_token(47);
+ n0 = JTBToolkit.makeNodeToken(n1);
+ n2 = Expression();
+ {if (true) return new ExpressionRest(n0,n2);}
+ throw new Error("Missing return statement in function");
+ }
+
+ static final public PrimaryExpression PrimaryExpression() throws ParseException {
+ NodeChoice n0;
+ IntegerLiteral n1;
+ TrueLiteral n2;
+ FalseLiteral n3;
+ Identifier n4;
+ ThisExpression n5;
+ ArrayAllocationExpression n6;
+ AllocationExpression n7;
+ NotExpression n8;
+ BracketExpression n9;
+ switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+ case INTEGER_LITERAL:
+ n1 = IntegerLiteral();
+ n0 = new NodeChoice(n1, 0);
+ break;
+ case TRUE:
+ n2 = TrueLiteral();
+ n0 = new NodeChoice(n2, 1);
+ break;
+ case FALSE:
+ n3 = FalseLiteral();
+ n0 = new NodeChoice(n3, 2);
+ break;
+ case IDENTIFIER:
+ n4 = Identifier();
+ n0 = new NodeChoice(n4, 3);
+ break;
+ case THIS:
+ n5 = ThisExpression();
+ n0 = new NodeChoice(n5, 4);
+ break;
+ default:
+ jj_la1[16] = jj_gen;
+ if (jj_2_14(3)) {
+ n6 = ArrayAllocationExpression();
+ n0 = new NodeChoice(n6, 5);
+ } else {
+ switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+ case NEW:
+ n7 = AllocationExpression();
+ n0 = new NodeChoice(n7, 6);
+ break;
+ case NOT:
+ n8 = NotExpression();
+ n0 = new NodeChoice(n8, 7);
+ break;
+ case LPAREN:
+ n9 = BracketExpression();
+ n0 = new NodeChoice(n9, 8);
+ break;
+ default:
+ jj_la1[17] = jj_gen;
+ jj_consume_token(-1);
+ throw new ParseException();
+ }
+ }
+ }
+ {if (true) return new PrimaryExpression(n0);}
+ throw new Error("Missing return statement in function");
+ }
+
+ static final public IntegerLiteral IntegerLiteral() throws ParseException {
+ NodeToken n0;
+ Token n1;
+ n1 = jj_consume_token(INTEGER_LITERAL);
+ n0 = JTBToolkit.makeNodeToken(n1);
+ {if (true) return new IntegerLiteral(n0);}
+ throw new Error("Missing return statement in function");
+ }
+
+ static final public TrueLiteral TrueLiteral() throws ParseException {
+ NodeToken n0;
+ Token n1;
+ n1 = jj_consume_token(TRUE);
+ n0 = JTBToolkit.makeNodeToken(n1);
+ {if (true) return new TrueLiteral(n0);}
+ throw new Error("Missing return statement in function");
+ }
+
+ static final public FalseLiteral FalseLiteral() throws ParseException {
+ NodeToken n0;
+ Token n1;
+ n1 = jj_consume_token(FALSE);
+ n0 = JTBToolkit.makeNodeToken(n1);
+ {if (true) return new FalseLiteral(n0);}
+ throw new Error("Missing return statement in function");
+ }
+
+ static final public Identifier Identifier() throws ParseException {
+ NodeToken n0;
+ Token n1;
+ n1 = jj_consume_token(IDENTIFIER);
+ n0 = JTBToolkit.makeNodeToken(n1);
+ {if (true) return new Identifier(n0);}
+ throw new Error("Missing return statement in function");
+ }
+
+ static final public ThisExpression ThisExpression() throws ParseException {
+ NodeToken n0;
+ Token n1;
+ n1 = jj_consume_token(THIS);
+ n0 = JTBToolkit.makeNodeToken(n1);
+ {if (true) return new ThisExpression(n0);}
+ throw new Error("Missing return statement in function");
+ }
+
+ static final public ArrayAllocationExpression ArrayAllocationExpression() throws ParseException {
+ NodeToken n0;
+ Token n1;
+ NodeToken n2;
+ Token n3;
+ NodeToken n4;
+ Token n5;
+ Expression n6;
+ NodeToken n7;
+ Token n8;
+ n1 = jj_consume_token(NEW);
+ n0 = JTBToolkit.makeNodeToken(n1);
+ n3 = jj_consume_token(INTEGER);
+ n2 = JTBToolkit.makeNodeToken(n3);
+ n5 = jj_consume_token(LSQPAREN);
+ n4 = JTBToolkit.makeNodeToken(n5);
+ n6 = Expression();
+ n8 = jj_consume_token(RSQPAREN);
+ n7 = JTBToolkit.makeNodeToken(n8);
+ {if (true) return new ArrayAllocationExpression(n0,n2,n4,n6,n7);}
+ throw new Error("Missing return statement in function");
+ }
+
+ static final public AllocationExpression AllocationExpression() throws ParseException {
+ NodeToken n0;
+ Token n1;
+ Identifier n2;
+ NodeToken n3;
+ Token n4;
+ NodeToken n5;
+ Token n6;
+ n1 = jj_consume_token(NEW);
+ n0 = JTBToolkit.makeNodeToken(n1);
+ n2 = Identifier();
+ n4 = jj_consume_token(LPAREN);
+ n3 = JTBToolkit.makeNodeToken(n4);
+ n6 = jj_consume_token(RPAREN);
+ n5 = JTBToolkit.makeNodeToken(n6);
+ {if (true) return new AllocationExpression(n0,n2,n3,n5);}
+ throw new Error("Missing return statement in function");
+ }
+
+ static final public NotExpression NotExpression() throws ParseException {
+ NodeToken n0;
+ Token n1;
+ Expression n2;
+ n1 = jj_consume_token(NOT);
+ n0 = JTBToolkit.makeNodeToken(n1);
+ n2 = Expression();
+ {if (true) return new NotExpression(n0,n2);}
+ throw new Error("Missing return statement in function");
+ }
+
+ static final public BracketExpression BracketExpression() throws ParseException {
+ NodeToken n0;
+ Token n1;
+ Expression n2;
+ NodeToken n3;
+ Token n4;
+ n1 = jj_consume_token(LPAREN);
+ n0 = JTBToolkit.makeNodeToken(n1);
+ n2 = Expression();
+ n4 = jj_consume_token(RPAREN);
+ n3 = JTBToolkit.makeNodeToken(n4);
+ {if (true) return new BracketExpression(n0,n2,n3);}
+ throw new Error("Missing return statement in function");
+ }
+
+ static final private boolean jj_2_1(int xla) {
+ jj_la = xla; jj_lastpos = jj_scanpos = token;
+ try { return !jj_3_1(); }
+ catch(LookaheadSuccess ls) { return true; }
+ finally { jj_save(0, xla); }
+ }
+
+ static final private boolean jj_2_2(int xla) {
+ jj_la = xla; jj_lastpos = jj_scanpos = token;
+ try { return !jj_3_2(); }
+ catch(LookaheadSuccess ls) { return true; }
+ finally { jj_save(1, xla); }
+ }
+
+ static final private boolean jj_2_3(int xla) {
+ jj_la = xla; jj_lastpos = jj_scanpos = token;
+ try { return !jj_3_3(); }
+ catch(LookaheadSuccess ls) { return true; }
+ finally { jj_save(2, xla); }
+ }
+
+ static final private boolean jj_2_4(int xla) {
+ jj_la = xla; jj_lastpos = jj_scanpos = token;
+ try { return !jj_3_4(); }
+ catch(LookaheadSuccess ls) { return true; }
+ finally { jj_save(3, xla); }
+ }
+
+ static final private boolean jj_2_5(int xla) {
+ jj_la = xla; jj_lastpos = jj_scanpos = token;
+ try { return !jj_3_5(); }
+ catch(LookaheadSuccess ls) { return true; }
+ finally { jj_save(4, xla); }
+ }
+
+ static final private boolean jj_2_6(int xla) {
+ jj_la = xla; jj_lastpos = jj_scanpos = token;
+ try { return !jj_3_6(); }
+ catch(LookaheadSuccess ls) { return true; }
+ finally { jj_save(5, xla); }
+ }
+
+ static final private boolean jj_2_7(int xla) {
+ jj_la = xla; jj_lastpos = jj_scanpos = token;
+ try { return !jj_3_7(); }
+ catch(LookaheadSuccess ls) { return true; }
+ finally { jj_save(6, xla); }
+ }
+
+ static final private boolean jj_2_8(int xla) {
+ jj_la = xla; jj_lastpos = jj_scanpos = token;
+ try { return !jj_3_8(); }
+ catch(LookaheadSuccess ls) { return true; }
+ finally { jj_save(7, xla); }
+ }
+
+ static final private boolean jj_2_9(int xla) {
+ jj_la = xla; jj_lastpos = jj_scanpos = token;
+ try { return !jj_3_9(); }
+ catch(LookaheadSuccess ls) { return true; }
+ finally { jj_save(8, xla); }
+ }
+
+ static final private boolean jj_2_10(int xla) {
+ jj_la = xla; jj_lastpos = jj_scanpos = token;
+ try { return !jj_3_10(); }
+ catch(LookaheadSuccess ls) { return true; }
+ finally { jj_save(9, xla); }
+ }
+
+ static final private boolean jj_2_11(int xla) {
+ jj_la = xla; jj_lastpos = jj_scanpos = token;
+ try { return !jj_3_11(); }
+ catch(LookaheadSuccess ls) { return true; }
+ finally { jj_save(10, xla); }
+ }
+
+ static final private boolean jj_2_12(int xla) {
+ jj_la = xla; jj_lastpos = jj_scanpos = token;
+ try { return !jj_3_12(); }
+ catch(LookaheadSuccess ls) { return true; }
+ finally { jj_save(11, xla); }
+ }
+
+ static final private boolean jj_2_13(int xla) {
+ jj_la = xla; jj_lastpos = jj_scanpos = token;
+ try { return !jj_3_13(); }
+ catch(LookaheadSuccess ls) { return true; }
+ finally { jj_save(12, xla); }
+ }
+
+ static final private boolean jj_2_14(int xla) {
+ jj_la = xla; jj_lastpos = jj_scanpos = token;
+ try { return !jj_3_14(); }
+ catch(LookaheadSuccess ls) { return true; }
+ finally { jj_save(13, xla); }
+ }
+
+ static final private boolean jj_3R_57() {
+ if (jj_3R_16()) return true;
+ if (jj_scan_token(DOT)) return true;
+ if (jj_3R_17()) return true;
+ if (jj_scan_token(LPAREN)) return true;
+ Token xsp;
+ xsp = jj_scanpos;
+ if (jj_3R_58()) jj_scanpos = xsp;
+ if (jj_scan_token(RPAREN)) return true;
+ return false;
+ }
+
+ static final private boolean jj_3R_52() {
+ if (jj_3R_16()) return true;
+ if (jj_scan_token(PLUS)) return true;
+ if (jj_3R_16()) return true;
+ return false;
+ }
+
+ static final private boolean jj_3R_27() {
+ if (jj_3R_37()) return true;
+ return false;
+ }
+
+ static final private boolean jj_3R_39() {
+ if (jj_scan_token(INTEGER)) return true;
+ return false;
+ }
+
+ static final private boolean jj_3R_26() {
+ if (jj_3R_36()) return true;
+ return false;
+ }
+
+ static final private boolean jj_3R_25() {
+ if (jj_3R_35()) return true;
+ return false;
+ }
+
+ static final private boolean jj_3_14() {
+ if (jj_3R_18()) return true;
+ return false;
+ }
+
+ static final private boolean jj_3R_18() {
+ if (jj_scan_token(NEW)) return true;
+ if (jj_scan_token(INTEGER)) return true;
+ if (jj_scan_token(LSQPAREN)) return true;
+ if (jj_3R_40()) return true;
+ if (jj_scan_token(RSQPAREN)) return true;
+ return false;
+ }
+
+ static final private boolean jj_3R_24() {
+ if (jj_3R_34()) return true;
+ return false;
+ }
+
+ static final private boolean jj_3R_51() {
+ if (jj_3R_16()) return true;
+ if (jj_scan_token(LT)) return true;
+ if (jj_3R_16()) return true;
+ return false;
+ }
+
+ static final private boolean jj_3R_38() {
+ if (jj_scan_token(BOOLEAN)) return true;
+ return false;
+ }
+
+ static final private boolean jj_3R_23() {
+ if (jj_3R_17()) return true;
+ return false;
+ }
+
+ static final private boolean jj_3R_14() {
+ if (jj_3R_17()) return true;
+ if (jj_scan_token(ASSIGN)) return true;
+ return false;
+ }
+
+ static final private boolean jj_3R_22() {
+ if (jj_3R_33()) return true;
+ return false;
+ }
+
+ static final private boolean jj_3R_56() {
+ if (jj_3R_16()) return true;
+ if (jj_scan_token(DOT)) return true;
+ if (jj_scan_token(LENGTH)) return true;
+ return false;
+ }
+
+ static final private boolean jj_3R_21() {
+ if (jj_3R_32()) return true;
+ return false;
+ }
+
+ static final private boolean jj_3R_20() {
+ if (jj_3R_31()) return true;
+ return false;
+ }
+
+ static final private boolean jj_3R_13() {
+ if (jj_scan_token(INTEGER)) return true;
+ if (jj_scan_token(LSQPAREN)) return true;
+ if (jj_scan_token(RSQPAREN)) return true;
+ return false;
+ }
+
+ static final private boolean jj_3R_16() {
+ Token xsp;
+ xsp = jj_scanpos;
+ if (jj_3R_20()) {
+ jj_scanpos = xsp;
+ if (jj_3R_21()) {
+ jj_scanpos = xsp;
+ if (jj_3R_22()) {
+ jj_scanpos = xsp;
+ if (jj_3R_23()) {
+ jj_scanpos = xsp;
+ if (jj_3R_24()) {
+ jj_scanpos = xsp;
+ if (jj_3_14()) {
+ jj_scanpos = xsp;
+ if (jj_3R_25()) {
+ jj_scanpos = xsp;
+ if (jj_3R_26()) {
+ jj_scanpos = xsp;
+ if (jj_3R_27()) return true;
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ return false;
+ }
+
+ static final private boolean jj_3R_50() {
+ if (jj_3R_16()) return true;
+ if (jj_scan_token(AND)) return true;
+ if (jj_3R_16()) return true;
+ return false;
+ }
+
+ static final private boolean jj_3R_34() {
+ if (jj_scan_token(THIS)) return true;
+ return false;
+ }
+
+ static final private boolean jj_3_2() {
+ if (jj_3R_12()) return true;
+ return false;
+ }
+
+ static final private boolean jj_3R_55() {
+ if (jj_3R_16()) return true;
+ if (jj_scan_token(LSQPAREN)) return true;
+ if (jj_3R_16()) return true;
+ if (jj_scan_token(RSQPAREN)) return true;
+ return false;
+ }
+
+ static final private boolean jj_3_13() {
+ if (jj_3R_16()) return true;
+ if (jj_scan_token(DOT)) return true;
+ if (jj_3R_17()) return true;
+ if (jj_scan_token(LPAREN)) return true;
+ return false;
+ }
+
+ static final private boolean jj_3_12() {
+ if (jj_3R_16()) return true;
+ if (jj_scan_token(DOT)) return true;
+ if (jj_scan_token(LENGTH)) return true;
+ return false;
+ }
+
+ static final private boolean jj_3R_17() {
+ if (jj_scan_token(IDENTIFIER)) return true;
+ return false;
+ }
+
+ static final private boolean jj_3R_49() {
+ if (jj_3R_16()) return true;
+ return false;
+ }
+
+ static final private boolean jj_3R_30() {
+ if (jj_3R_17()) return true;
+ return false;
+ }
+
+ static final private boolean jj_3_11() {
+ if (jj_3R_16()) return true;
+ if (jj_scan_token(LSQPAREN)) return true;
+ return false;
+ }
+
+ static final private boolean jj_3R_29() {
+ if (jj_3R_39()) return true;
+ return false;
+ }
+
+ static final private boolean jj_3R_48() {
+ if (jj_3R_57()) return true;
+ return false;
+ }
+
+ static final private boolean jj_3R_37() {
+ if (jj_scan_token(LPAREN)) return true;
+ if (jj_3R_40()) return true;
+ if (jj_scan_token(RPAREN)) return true;
+ return false;
+ }
+
+ static final private boolean jj_3R_61() {
+ if (jj_scan_token(47)) return true;
+ if (jj_3R_40()) return true;
+ return false;
+ }
+
+ static final private boolean jj_3R_28() {
+ if (jj_3R_38()) return true;
+ return false;
+ }
+
+ static final private boolean jj_3_10() {
+ if (jj_3R_16()) return true;
+ if (jj_scan_token(48)) return true;
+ return false;
+ }
+
+ static final private boolean jj_3R_47() {
+ if (jj_3R_56()) return true;
+ return false;
+ }
+
+ static final private boolean jj_3_3() {
+ if (jj_3R_13()) return true;
+ return false;
+ }
+
+ static final private boolean jj_3_9() {
+ if (jj_3R_16()) return true;
+ if (jj_scan_token(MINUS)) return true;
+ return false;
+ }
+
+ static final private boolean jj_3R_46() {
+ if (jj_3R_55()) return true;
+ return false;
+ }
+
+ static final private boolean jj_3R_33() {
+ if (jj_scan_token(FALSE)) return true;
+ return false;
+ }
+
+ static final private boolean jj_3R_54() {
+ if (jj_3R_16()) return true;
+ if (jj_scan_token(48)) return true;
+ if (jj_3R_16()) return true;
+ return false;
+ }
+
+ static final private boolean jj_3R_19() {
+ Token xsp;
+ xsp = jj_scanpos;
+ if (jj_3_3()) {
+ jj_scanpos = xsp;
+ if (jj_3R_28()) {
+ jj_scanpos = xsp;
+ if (jj_3R_29()) {
+ jj_scanpos = xsp;
+ if (jj_3R_30()) return true;
+ }
+ }
+ }
+ return false;
+ }
+
+ static final private boolean jj_3_8() {
+ if (jj_3R_16()) return true;
+ if (jj_scan_token(PLUS)) return true;
+ return false;
+ }
+
+ static final private boolean jj_3R_45() {
+ if (jj_3R_54()) return true;
+ return false;
+ }
+
+ static final private boolean jj_3R_11() {
+ if (jj_scan_token(CLASS)) return true;
+ if (jj_3R_17()) return true;
+ if (jj_scan_token(LBRACE)) return true;
+ return false;
+ }
+
+ static final private boolean jj_3_7() {
+ if (jj_3R_16()) return true;
+ if (jj_scan_token(LT)) return true;
+ return false;
+ }
+
+ static final private boolean jj_3R_60() {
+ if (jj_3R_61()) return true;
+ return false;
+ }
+
+ static final private boolean jj_3R_44() {
+ if (jj_3R_53()) return true;
+ return false;
+ }
+
+ static final private boolean jj_3R_36() {
+ if (jj_scan_token(NOT)) return true;
+ if (jj_3R_40()) return true;
+ return false;
+ }
+
+ static final private boolean jj_3_5() {
+ if (jj_3R_15()) return true;
+ return false;
+ }
+
+ static final private boolean jj_3_6() {
+ if (jj_3R_16()) return true;
+ if (jj_scan_token(AND)) return true;
+ return false;
+ }
+
+ static final private boolean jj_3R_43() {
+ if (jj_3R_52()) return true;
+ return false;
+ }
+
+ static final private boolean jj_3R_59() {
+ if (jj_3R_40()) return true;
+ Token xsp;
+ while (true) {
+ xsp = jj_scanpos;
+ if (jj_3R_60()) { jj_scanpos = xsp; break; }
+ }
+ return false;
+ }
+
+ static final private boolean jj_3R_32() {
+ if (jj_scan_token(TRUE)) return true;
+ return false;
+ }
+
+ static final private boolean jj_3_4() {
+ if (jj_3R_14()) return true;
+ return false;
+ }
+
+ static final private boolean jj_3R_42() {
+ if (jj_3R_51()) return true;
+ return false;
+ }
+
+ static final private boolean jj_3R_53() {
+ if (jj_3R_16()) return true;
+ if (jj_scan_token(MINUS)) return true;
+ if (jj_3R_16()) return true;
+ return false;
+ }
+
+ static final private boolean jj_3R_41() {
+ if (jj_3R_50()) return true;
+ return false;
+ }
+
+ static final private boolean jj_3R_40() {
+ Token xsp;
+ xsp = jj_scanpos;
+ if (jj_3R_41()) {
+ jj_scanpos = xsp;
+ if (jj_3R_42()) {
+ jj_scanpos = xsp;
+ if (jj_3R_43()) {
+ jj_scanpos = xsp;
+ if (jj_3R_44()) {
+ jj_scanpos = xsp;
+ if (jj_3R_45()) {
+ jj_scanpos = xsp;
+ if (jj_3R_46()) {
+ jj_scanpos = xsp;
+ if (jj_3R_47()) {
+ jj_scanpos = xsp;
+ if (jj_3R_48()) {
+ jj_scanpos = xsp;
+ if (jj_3R_49()) return true;
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ return false;
+ }
+
+ static final private boolean jj_3R_31() {
+ if (jj_scan_token(INTEGER_LITERAL)) return true;
+ return false;
+ }
+
+ static final private boolean jj_3R_58() {
+ if (jj_3R_59()) return true;
+ return false;
+ }
+
+ static final private boolean jj_3R_35() {
+ if (jj_scan_token(NEW)) return true;
+ if (jj_3R_17()) return true;
+ if (jj_scan_token(LPAREN)) return true;
+ if (jj_scan_token(RPAREN)) return true;
+ return false;
+ }
+
+ static final private boolean jj_3_1() {
+ if (jj_3R_11()) return true;
+ return false;
+ }
+
+ static final private boolean jj_3R_12() {
+ if (jj_3R_19()) return true;
+ if (jj_3R_17()) return true;
+ return false;
+ }
+
+ static final private boolean jj_3R_15() {
+ if (jj_3R_17()) return true;
+ if (jj_scan_token(LSQPAREN)) return true;
+ return false;
+ }
+
+ static private boolean jj_initialized_once = false;
+ static public MiniJavaParserTokenManager token_source;
+ static JavaCharStream jj_input_stream;
+ static public Token token, jj_nt;
+ static private int jj_ntk;
+ static private Token jj_scanpos, jj_lastpos;
+ static private int jj_la;
+ static public boolean lookingAhead = false;
+ static private boolean jj_semLA;
+ static private int jj_gen;
+ static final private int[] jj_la1 = new int[18];
+ static private int[] jj_la1_0;
+ static private int[] jj_la1_1;
+ static {
+ jj_la1_0();
+ jj_la1_1();
+ }
+ private static void jj_la1_0() {
+ jj_la1_0 = new int[] {0x1000000,0x1000000,0x80800000,0x0,0x80800000,0x0,0x80800000,0x60002000,0x0,0x80800000,0x2000,0x60000000,0x60002000,0x10400200,0x10400200,0x0,0x10000000,0x400200,};
+ }
+ private static void jj_la1_1() {
+ jj_la1_1 = new int[] {0x0,0x0,0x1000,0x8,0x1000,0x8,0x1000,0x1200,0x8000,0x1000,0x0,0x200,0x1200,0x1984,0x1984,0x8000,0x1980,0x4,};
+ }
+ static final private JJCalls[] jj_2_rtns = new JJCalls[14];
+ static private boolean jj_rescan = false;
+ static private int jj_gc = 0;
+
+ public MiniJavaParser(java.io.InputStream stream) {
+ this(stream, null);
+ }
+ public MiniJavaParser(java.io.InputStream stream, String encoding) {
+ if (jj_initialized_once) {
+ System.out.println("ERROR: Second call to constructor of static parser. You must");
+ System.out.println(" either use ReInit() or set the JavaCC option STATIC to false");
+ System.out.println(" during parser generation.");
+ throw new Error();
+ }
+ jj_initialized_once = true;
+ try { jj_input_stream = new JavaCharStream(stream, encoding, 1, 1); } catch(java.io.UnsupportedEncodingException e) { throw new RuntimeException(e); }
+ token_source = new MiniJavaParserTokenManager(jj_input_stream);
+ token = new Token();
+ jj_ntk = -1;
+ jj_gen = 0;
+ for (int i = 0; i < 18; i++) jj_la1[i] = -1;
+ for (int i = 0; i < jj_2_rtns.length; i++) jj_2_rtns[i] = new JJCalls();
+ }
+
+ static public void ReInit(java.io.InputStream stream) {
+ ReInit(stream, null);
+ }
+ static public void ReInit(java.io.InputStream stream, String encoding) {
+ try { jj_input_stream.ReInit(stream, encoding, 1, 1); } catch(java.io.UnsupportedEncodingException e) { throw new RuntimeException(e); }
+ token_source.ReInit(jj_input_stream);
+ token = new Token();
+ jj_ntk = -1;
+ jj_gen = 0;
+ for (int i = 0; i < 18; i++) jj_la1[i] = -1;
+ for (int i = 0; i < jj_2_rtns.length; i++) jj_2_rtns[i] = new JJCalls();
+ }
+
+ public MiniJavaParser(java.io.Reader stream) {
+ if (jj_initialized_once) {
+ System.out.println("ERROR: Second call to constructor of static parser. You must");
+ System.out.println(" either use ReInit() or set the JavaCC option STATIC to false");
+ System.out.println(" during parser generation.");
+ throw new Error();
+ }
+ jj_initialized_once = true;
+ jj_input_stream = new JavaCharStream(stream, 1, 1);
+ token_source = new MiniJavaParserTokenManager(jj_input_stream);
+ token = new Token();
+ jj_ntk = -1;
+ jj_gen = 0;
+ for (int i = 0; i < 18; i++) jj_la1[i] = -1;
+ for (int i = 0; i < jj_2_rtns.length; i++) jj_2_rtns[i] = new JJCalls();
+ }
+
+ static public void ReInit(java.io.Reader stream) {
+ jj_input_stream.ReInit(stream, 1, 1);
+ token_source.ReInit(jj_input_stream);
+ token = new Token();
+ jj_ntk = -1;
+ jj_gen = 0;
+ for (int i = 0; i < 18; i++) jj_la1[i] = -1;
+ for (int i = 0; i < jj_2_rtns.length; i++) jj_2_rtns[i] = new JJCalls();
+ }
+
+ public MiniJavaParser(MiniJavaParserTokenManager tm) {
+ if (jj_initialized_once) {
+ System.out.println("ERROR: Second call to constructor of static parser. You must");
+ System.out.println(" either use ReInit() or set the JavaCC option STATIC to false");
+ System.out.println(" during parser generation.");
+ throw new Error();
+ }
+ jj_initialized_once = true;
+ token_source = tm;
+ token = new Token();
+ jj_ntk = -1;
+ jj_gen = 0;
+ for (int i = 0; i < 18; i++) jj_la1[i] = -1;
+ for (int i = 0; i < jj_2_rtns.length; i++) jj_2_rtns[i] = new JJCalls();
+ }
+
+ public void ReInit(MiniJavaParserTokenManager tm) {
+ token_source = tm;
+ token = new Token();
+ jj_ntk = -1;
+ jj_gen = 0;
+ for (int i = 0; i < 18; i++) jj_la1[i] = -1;
+ for (int i = 0; i < jj_2_rtns.length; i++) jj_2_rtns[i] = new JJCalls();
+ }
+
+ static final private Token jj_consume_token(int kind) throws ParseException {
+ Token oldToken;
+ if ((oldToken = token).next != null) token = token.next;
+ else token = token.next = token_source.getNextToken();
+ jj_ntk = -1;
+ if (token.kind == kind) {
+ jj_gen++;
+ if (++jj_gc > 100) {
+ jj_gc = 0;
+ for (int i = 0; i < jj_2_rtns.length; i++) {
+ JJCalls c = jj_2_rtns[i];
+ while (c != null) {
+ if (c.gen < jj_gen) c.first = null;
+ c = c.next;
+ }
+ }
+ }
+ return token;
+ }
+ token = oldToken;
+ jj_kind = kind;
+ throw generateParseException();
+ }
+
+ static private final class LookaheadSuccess extends java.lang.Error { }
+ static final private LookaheadSuccess jj_ls = new LookaheadSuccess();
+ static final private boolean jj_scan_token(int kind) {
+ if (jj_scanpos == jj_lastpos) {
+ jj_la--;
+ if (jj_scanpos.next == null) {
+ jj_lastpos = jj_scanpos = jj_scanpos.next = token_source.getNextToken();
+ } else {
+ jj_lastpos = jj_scanpos = jj_scanpos.next;
+ }
+ } else {
+ jj_scanpos = jj_scanpos.next;
+ }
+ if (jj_rescan) {
+ int i = 0; Token tok = token;
+ while (tok != null && tok != jj_scanpos) { i++; tok = tok.next; }
+ if (tok != null) jj_add_error_token(kind, i);
+ }
+ if (jj_scanpos.kind != kind) return true;
+ if (jj_la == 0 && jj_scanpos == jj_lastpos) throw jj_ls;
+ return false;
+ }
+
+ static final public Token getNextToken() {
+ if (token.next != null) token = token.next;
+ else token = token.next = token_source.getNextToken();
+ jj_ntk = -1;
+ jj_gen++;
+ return token;
+ }
+
+ static final public Token getToken(int index) {
+ Token t = lookingAhead ? jj_scanpos : token;
+ for (int i = 0; i < index; i++) {
+ if (t.next != null) t = t.next;
+ else t = t.next = token_source.getNextToken();
+ }
+ return t;
+ }
+
+ static final private int jj_ntk() {
+ if ((jj_nt=token.next) == null)
+ return (jj_ntk = (token.next=token_source.getNextToken()).kind);
+ else
+ return (jj_ntk = jj_nt.kind);
+ }
+
+ static private java.util.Vector jj_expentries = new java.util.Vector();
+ static private int[] jj_expentry;
+ static private int jj_kind = -1;
+ static private int[] jj_lasttokens = new int[100];
+ static private int jj_endpos;
+
+ static private void jj_add_error_token(int kind, int pos) {
+ if (pos >= 100) return;
+ if (pos == jj_endpos + 1) {
+ jj_lasttokens[jj_endpos++] = kind;
+ } else if (jj_endpos != 0) {
+ jj_expentry = new int[jj_endpos];
+ for (int i = 0; i < jj_endpos; i++) {
+ jj_expentry[i] = jj_lasttokens[i];
+ }
+ boolean exists = false;
+ for (java.util.Enumeration e = jj_expentries.elements(); e.hasMoreElements();) {
+ int[] oldentry = (int[])(e.nextElement());
+ if (oldentry.length == jj_expentry.length) {
+ exists = true;
+ for (int i = 0; i < jj_expentry.length; i++) {
+ if (oldentry[i] != jj_expentry[i]) {
+ exists = false;
+ break;
+ }
+ }
+ if (exists) break;
+ }
+ }
+ if (!exists) jj_expentries.addElement(jj_expentry);
+ if (pos != 0) jj_lasttokens[(jj_endpos = pos) - 1] = kind;
+ }
+ }
+
+ static public ParseException generateParseException() {
+ jj_expentries.removeAllElements();
+ boolean[] la1tokens = new boolean[49];
+ for (int i = 0; i < 49; i++) {
+ la1tokens[i] = false;
+ }
+ if (jj_kind >= 0) {
+ la1tokens[jj_kind] = true;
+ jj_kind = -1;
+ }
+ for (int i = 0; i < 18; i++) {
+ if (jj_la1[i] == jj_gen) {
+ for (int j = 0; j < 32; j++) {
+ if ((jj_la1_0[i] & (1<<j)) != 0) {
+ la1tokens[j] = true;
+ }
+ if ((jj_la1_1[i] & (1<<j)) != 0) {
+ la1tokens[32+j] = true;
+ }
+ }
+ }
+ }
+ for (int i = 0; i < 49; i++) {
+ if (la1tokens[i]) {
+ jj_expentry = new int[1];
+ jj_expentry[0] = i;
+ jj_expentries.addElement(jj_expentry);
+ }
+ }
+ jj_endpos = 0;
+ jj_rescan_token();
+ jj_add_error_token(0, 0);
+ int[][] exptokseq = new int[jj_expentries.size()][];
+ for (int i = 0; i < jj_expentries.size(); i++) {
+ exptokseq[i] = (int[])jj_expentries.elementAt(i);
+ }
+ return new ParseException(token, exptokseq, tokenImage);
+ }
+
+ static final public void enable_tracing() {
+ }
+
+ static final public void disable_tracing() {
+ }
+
+ static final private void jj_rescan_token() {
+ jj_rescan = true;
+ for (int i = 0; i < 14; i++) {
+ try {
+ JJCalls p = jj_2_rtns[i];
+ do {
+ if (p.gen > jj_gen) {
+ jj_la = p.arg; jj_lastpos = jj_scanpos = p.first;
+ switch (i) {
+ case 0: jj_3_1(); break;
+ case 1: jj_3_2(); break;
+ case 2: jj_3_3(); break;
+ case 3: jj_3_4(); break;
+ case 4: jj_3_5(); break;
+ case 5: jj_3_6(); break;
+ case 6: jj_3_7(); break;
+ case 7: jj_3_8(); break;
+ case 8: jj_3_9(); break;
+ case 9: jj_3_10(); break;
+ case 10: jj_3_11(); break;
+ case 11: jj_3_12(); break;
+ case 12: jj_3_13(); break;
+ case 13: jj_3_14(); break;
+ }
+ }
+ p = p.next;
+ } while (p != null);
+ } catch(LookaheadSuccess ls) { }
+ }
+ jj_rescan = false;
+ }
+
+ static final private void jj_save(int index, int xla) {
+ JJCalls p = jj_2_rtns[index];
+ while (p.gen > jj_gen) {
+ if (p.next == null) { p = p.next = new JJCalls(); break; }
+ p = p.next;
+ }
+ p.gen = jj_gen + xla - jj_la; p.first = token; p.arg = xla;
+ }
+
+ static final class JJCalls {
+ int gen;
+ Token first;
+ int arg;
+ JJCalls next;
+ }
+
+}
+
+class JTBToolkit {
+ static NodeToken makeNodeToken(Token t) {
+ return new NodeToken(t.image.intern(), t.kind, t.beginLine, t.beginColumn, t.endLine, t.endColumn);
+ }
+}