From 2891356e1b688a03591938ce4e8f5257c49003c7 Mon Sep 17 00:00:00 2001 From: Dhruv Maroo Date: Wed, 26 Apr 2023 08:41:30 +0530 Subject: [PATCH] Add `CContext` to store context information while parsing * For now, it is being used to denote whether to use a semicolon or not --- .../decompiler/parser/c/CContext.java | 9 + .../parser/c/gen/ASTGhostStringToken.java | 13 +- .../parser/c/gen/ASTIterationStatement.java | 2 + .../parser/c/gen/ASTStringToken.java | 14 +- .../parser/c/gen/ASTTypeStringToken.java | 12 +- .../decompiler/parser/c/gen/CParser.java | 849 +++++++++--------- .../parser/c/gen/CParserTokenManager.java | 1 + .../ghidrust/decompiler/parser/c/gen/c.jj | 56 +- .../ghidrust/decompiler/parser/c/gen/c.jjt | 43 +- .../ghidrust/decompiler/parser/generate.sh | 2 +- 10 files changed, 507 insertions(+), 494 deletions(-) create mode 100644 src/main/java/ghidrust/decompiler/parser/c/CContext.java diff --git a/src/main/java/ghidrust/decompiler/parser/c/CContext.java b/src/main/java/ghidrust/decompiler/parser/c/CContext.java new file mode 100644 index 0000000..8f59667 --- /dev/null +++ b/src/main/java/ghidrust/decompiler/parser/c/CContext.java @@ -0,0 +1,9 @@ +package ghidrust.decompiler.parser.c; + +public class CContext { + public boolean statement_end_sc; + + public CContext() { + statement_end_sc = true; + } +} diff --git a/src/main/java/ghidrust/decompiler/parser/c/gen/ASTGhostStringToken.java b/src/main/java/ghidrust/decompiler/parser/c/gen/ASTGhostStringToken.java index e69ac9f..72629f6 100644 --- a/src/main/java/ghidrust/decompiler/parser/c/gen/ASTGhostStringToken.java +++ b/src/main/java/ghidrust/decompiler/parser/c/gen/ASTGhostStringToken.java @@ -4,8 +4,7 @@ package ghidrust.decompiler.parser.c.gen; /* JavaCCOptions:MULTI=true,NODE_USES_PARSER=false,VISITOR=true,TRACK_TOKENS=false,NODE_PREFIX=AST,NODE_EXTENDS=,NODE_FACTORY=,SUPPORT_CLASS_VISIBILITY_PUBLIC=true */ public class ASTGhostStringToken extends SimpleNode { - String str_val; - + public String image; public ASTGhostStringToken(int id) { super(id); } @@ -21,13 +20,5 @@ class ASTGhostStringToken extends SimpleNode { return visitor.visit(this, data); } - - public String getValue() { - return str_val; - } - - public void setValue(String value) { - this.str_val = value; - } } -/* JavaCC - OriginalChecksum=7d91f560265b12b4f437803bcd66b7ba (do not edit this line) */ +/* JavaCC - OriginalChecksum=f69f4334f2315a848a78628a0a52e742 (do not edit this line) */ diff --git a/src/main/java/ghidrust/decompiler/parser/c/gen/ASTIterationStatement.java b/src/main/java/ghidrust/decompiler/parser/c/gen/ASTIterationStatement.java index 2bdc886..dca34c0 100644 --- a/src/main/java/ghidrust/decompiler/parser/c/gen/ASTIterationStatement.java +++ b/src/main/java/ghidrust/decompiler/parser/c/gen/ASTIterationStatement.java @@ -4,6 +4,8 @@ package ghidrust.decompiler.parser.c.gen; /* JavaCCOptions:MULTI=true,NODE_USES_PARSER=false,VISITOR=true,TRACK_TOKENS=false,NODE_PREFIX=AST,NODE_EXTENDS=,NODE_FACTORY=,SUPPORT_CLASS_VISIBILITY_PUBLIC=true */ public class ASTIterationStatement extends SimpleNode { + public int choice; + public ASTIterationStatement(int id) { super(id); } diff --git a/src/main/java/ghidrust/decompiler/parser/c/gen/ASTStringToken.java b/src/main/java/ghidrust/decompiler/parser/c/gen/ASTStringToken.java index 67f4d9c..e5f0ce6 100644 --- a/src/main/java/ghidrust/decompiler/parser/c/gen/ASTStringToken.java +++ b/src/main/java/ghidrust/decompiler/parser/c/gen/ASTStringToken.java @@ -4,8 +4,8 @@ package ghidrust.decompiler.parser.c.gen; /* JavaCCOptions:MULTI=true,NODE_USES_PARSER=false,VISITOR=true,TRACK_TOKENS=false,NODE_PREFIX=AST,NODE_EXTENDS=,NODE_FACTORY=,SUPPORT_CLASS_VISIBILITY_PUBLIC=true */ public class ASTStringToken extends SimpleNode { - String str_val; - + public String image; + public ASTStringToken(int id) { super(id); } @@ -21,13 +21,5 @@ class ASTStringToken extends SimpleNode { return visitor.visit(this, data); } - - public String getValue() { - return str_val; - } - - public void setValue(String value) { - this.str_val = value; - } } -/* JavaCC - OriginalChecksum=c289df07a5b51163b866d4bfab28fb00 (do not edit this line) */ +/* JavaCC - OriginalChecksum=73f64d714d8c3f0f819df770be5c932d (do not edit this line) */ diff --git a/src/main/java/ghidrust/decompiler/parser/c/gen/ASTTypeStringToken.java b/src/main/java/ghidrust/decompiler/parser/c/gen/ASTTypeStringToken.java index b6d0601..367d675 100644 --- a/src/main/java/ghidrust/decompiler/parser/c/gen/ASTTypeStringToken.java +++ b/src/main/java/ghidrust/decompiler/parser/c/gen/ASTTypeStringToken.java @@ -4,7 +4,7 @@ package ghidrust.decompiler.parser.c.gen; /* JavaCCOptions:MULTI=true,NODE_USES_PARSER=false,VISITOR=true,TRACK_TOKENS=false,NODE_PREFIX=AST,NODE_EXTENDS=,NODE_FACTORY=,SUPPORT_CLASS_VISIBILITY_PUBLIC=true */ public class ASTTypeStringToken extends SimpleNode { - String str_val; + public String image; public ASTTypeStringToken(int id) { super(id); @@ -21,13 +21,5 @@ class ASTTypeStringToken extends SimpleNode { return visitor.visit(this, data); } - - public String getValue() { - return str_val; - } - - public void setValue(String value) { - this.str_val = value; - } } -/* JavaCC - OriginalChecksum=726f5c0cafc2cba1f5ca608dfd54d3e2 (do not edit this line) */ +/* JavaCC - OriginalChecksum=b189beab6a69b3fbf2cd6d3dc65da871 (do not edit this line) */ diff --git a/src/main/java/ghidrust/decompiler/parser/c/gen/CParser.java b/src/main/java/ghidrust/decompiler/parser/c/gen/CParser.java index 34b2cc9..2a3e622 100644 --- a/src/main/java/ghidrust/decompiler/parser/c/gen/CParser.java +++ b/src/main/java/ghidrust/decompiler/parser/c/gen/CParser.java @@ -6,6 +6,7 @@ import java.io.InputStream; import java.io.ByteArrayInputStream; import java.nio.charset.StandardCharsets; import ghidrust.decompiler.parser.c.CVisitor; +import ghidrust.decompiler.parser.c.CContext; public class CParser/*@bgen(jjtree)*/implements CParserTreeConstants, CParserConstants {/*@bgen(jjtree)*/ protected JJTCParserState jjtree = new JJTCParserState();private static CParser c_parser; @@ -30,7 +31,7 @@ public class CParser/*@bgen(jjtree)*/implements CParserTreeConstants, CParserCon public static String parse() throws ParseException { CParserVisitor visitor = new CVisitor(); - return (String) c_parser.FunctionDefinition().jjtAccept(visitor, null); + return (String) c_parser.FunctionDefinition().jjtAccept(visitor, new CContext()); } final public SimpleNode FunctionDefinition() throws ParseException {/*@bgen(jjtree) FunctionDefinition */ @@ -253,7 +254,7 @@ if (jjtc000) { } jjtree.closeNodeScope(jjtn000, true); jjtc000 = false; -jjtn000.setValue(t.image); +jjtn000.image = t.image; } finally { if (jjtc000) { jjtree.closeNodeScope(jjtn000, true); @@ -322,7 +323,7 @@ if (jjtc000) { } jjtree.closeNodeScope(jjtn000, true); jjtc000 = false; -jjtn000.setValue(t.image); +jjtn000.image = t.image; } finally { if (jjtc000) { jjtree.closeNodeScope(jjtn000, true); @@ -351,7 +352,7 @@ if (jjtc000) { } jjtree.closeNodeScope(jjtn000, true); jjtc000 = false; -jjtn000.setValue(t.image); +jjtn000.image = t.image; } finally { if (jjtc000) { jjtree.closeNodeScope(jjtn000, true); @@ -1722,9 +1723,9 @@ if (jjtc000) { } final public void IterationStatement() throws ParseException {/*@bgen(jjtree) IterationStatement */ - ASTIterationStatement jjtn000 = new ASTIterationStatement(JJTITERATIONSTATEMENT); - boolean jjtc000 = true; - jjtree.openNodeScope(jjtn000); + ASTIterationStatement jjtn000 = new ASTIterationStatement(JJTITERATIONSTATEMENT); + boolean jjtc000 = true; + jjtree.openNodeScope(jjtn000);int choice = 0; try { switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) { case WHILE:{ @@ -1733,6 +1734,7 @@ if (jjtc000) { Expression(); jj_consume_token(64); Statement(); +choice = 1; break; } case DO:{ @@ -1743,6 +1745,7 @@ if (jjtc000) { Expression(); jj_consume_token(64); jj_consume_token(60); +choice = 2; break; } case FOR:{ @@ -1884,6 +1887,7 @@ if (jjtc000) { } jj_consume_token(64); Statement(); +choice = 3; break; } default: @@ -1891,6 +1895,9 @@ if (jjtc000) { jj_consume_token(-1); throw new ParseException(); } +jjtree.closeNodeScope(jjtn000, true); + jjtc000 = false; +jjtn000.choice = choice; } catch (Throwable jjte000) { if (jjtc000) { jjtree.clearNodeScope(jjtn000); @@ -2191,7 +2198,7 @@ if (jjtc000) { } jjtree.closeNodeScope(jjtn000, true); jjtc000 = false; -jjtn000.setValue(t.image); +jjtn000.image = t.image; } finally { if (jjtc000) { jjtree.closeNodeScope(jjtn000, true); @@ -2672,7 +2679,7 @@ if (jjtc000) { } jjtree.closeNodeScope(jjtn000, true); jjtc000 = false; -jjtn000.setValue(t.image); +jjtn000.image = t.image; } finally { if (jjtc000) { jjtree.closeNodeScope(jjtn000, true); @@ -3104,11 +3111,11 @@ if (jjtc000) { jjtree.openNodeScope(jjtn000);Token r = null; ASTStringToken t = null; Token s = null; - int choice; + int choice = 0; try { if (jj_2_23(2147483647)) { r = jj_consume_token(IDENTIFIER); -choice = 0; +choice = 1; } else { switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) { case IDENTIFIER: @@ -3134,7 +3141,7 @@ choice = 0; jj_la1[73] = jj_gen; ; } -choice = 1; +choice = 2; break; } default: @@ -3145,10 +3152,10 @@ choice = 1; } jjtree.closeNodeScope(jjtn000, true); jjtc000 = false; -if (choice == 1) { - jjtn000.setValue((r != null ? r.image : "") + "<" + t.getValue() + ">" + (s != null ? s.image : "")); - } else { - jjtn000.setValue(r.image); +if (choice == 2) { + jjtn000.image = (r != null ? r.image : "") + "<" + t.image + ">" + (s != null ? s.image : ""); + } else if (choice == 1) { + jjtn000.image = r.image; } {if ("" != null) return jjtn000;} @@ -3207,7 +3214,7 @@ if (jjtc000) { } jjtree.closeNodeScope(jjtn000, true); jjtc000 = false; -jjtn000.setValue(t.image); +jjtn000.image = t.image; } finally { if (jjtc000) { jjtree.closeNodeScope(jjtn000, true); @@ -3399,30 +3406,21 @@ if (jjtc000) { finally { jj_save(22, xla); } } - private boolean jj_3R_ConditionalExpression_371_9_27() + private boolean jj_3_17() { - if (jj_3R_LogicalORExpression_381_9_59()) return true; - Token xsp; - xsp = jj_scanpos; - if (jj_3R_ConditionalExpression_371_33_60()) jj_scanpos = xsp; + if (jj_3R_UnaryExpression_455_9_25()) return true; + if (jj_3R_AssignmentOperator_370_9_26()) return true; return false; } private boolean jj_3_16() { if (jj_scan_token(ELSE)) return true; - if (jj_3R_Statement_294_9_24()) return true; + if (jj_3R_Statement_295_9_24()) return true; return false; } - private boolean jj_3_17() - { - if (jj_3R_UnaryExpression_448_9_25()) return true; - if (jj_3R_AssignmentOperator_363_9_26()) return true; - return false; - } - - private boolean jj_3R_AssignmentOperator_363_9_26() + private boolean jj_3R_AssignmentOperator_370_9_26() { Token xsp; xsp = jj_scanpos; @@ -3462,306 +3460,306 @@ if (jjtc000) { private boolean jj_3_18() { - if (jj_3R_ConditionalExpression_371_9_27()) return true; + if (jj_3R_ConditionalExpression_378_9_27()) return true; return false; } - private boolean jj_3R_AssignmentExpression_354_9_66() + private boolean jj_3R_AssignmentExpression_361_9_66() { Token xsp; xsp = jj_scanpos; - if (jj_3R_AssignmentExpression_354_9_104()) { + if (jj_3R_AssignmentExpression_361_9_104()) { jj_scanpos = xsp; if (jj_3_18()) return true; } return false; } - private boolean jj_3R_AssignmentExpression_354_9_104() + private boolean jj_3R_AssignmentExpression_361_9_104() { - if (jj_3R_UnaryExpression_448_9_25()) return true; - if (jj_3R_AssignmentOperator_363_9_26()) return true; - if (jj_3R_AssignmentExpression_354_9_66()) return true; + if (jj_3R_UnaryExpression_455_9_25()) return true; + if (jj_3R_AssignmentOperator_370_9_26()) return true; + if (jj_3R_AssignmentExpression_361_9_66()) return true; return false; } - private boolean jj_3R_Expression_349_9_94() + private boolean jj_3R_Expression_356_9_94() { Token xsp; xsp = jj_scanpos; - if (jj_3R_Expression_349_9_129()) { + if (jj_3R_Expression_356_9_129()) { jj_scanpos = xsp; - if (jj_3R_Expression_349_66_130()) return true; + if (jj_3R_Expression_356_66_130()) return true; } return false; } - private boolean jj_3R_Expression_349_9_129() + private boolean jj_3R_Expression_356_9_129() { - if (jj_3R_AssignmentExpression_354_9_66()) return true; + if (jj_3R_AssignmentExpression_361_9_66()) return true; Token xsp; while (true) { xsp = jj_scanpos; - if (jj_3R_Expression_349_34_145()) { jj_scanpos = xsp; break; } + if (jj_3R_Expression_356_34_145()) { jj_scanpos = xsp; break; } } return false; } - private boolean jj_3R_JumpStatement_344_9_126() + private boolean jj_3R_JumpStatement_351_9_126() { if (jj_scan_token(RETURN)) return true; return false; } - private boolean jj_3R_JumpStatement_341_11_123() + private boolean jj_3R_JumpStatement_348_11_123() { if (jj_scan_token(GOTO)) return true; return false; } - private boolean jj_3R_JumpStatement_343_9_125() + private boolean jj_3R_JumpStatement_350_9_125() { if (jj_scan_token(BREAK)) return true; return false; } - private boolean jj_3R_JumpStatement_342_9_124() + private boolean jj_3R_JumpStatement_349_9_124() { if (jj_scan_token(CONTINUE)) return true; return false; } - private boolean jj_3R_JumpStatement_341_9_88() + private boolean jj_3R_JumpStatement_348_9_88() { Token xsp; xsp = jj_scanpos; - if (jj_3R_JumpStatement_341_11_123()) { + if (jj_3R_JumpStatement_348_11_123()) { jj_scanpos = xsp; - if (jj_3R_JumpStatement_342_9_124()) { + if (jj_3R_JumpStatement_349_9_124()) { jj_scanpos = xsp; - if (jj_3R_JumpStatement_343_9_125()) { + if (jj_3R_JumpStatement_350_9_125()) { jj_scanpos = xsp; - if (jj_3R_JumpStatement_344_9_126()) return true; + if (jj_3R_JumpStatement_351_9_126()) return true; } } } return false; } - private boolean jj_3R_IterationStatement_334_11_120() + private boolean jj_3R_IterationStatement_338_11_120() { if (jj_scan_token(WHILE)) return true; return false; } - private boolean jj_3R_IterationStatement_336_9_122() + private boolean jj_3R_IterationStatement_340_9_122() { if (jj_scan_token(FOR)) return true; return false; } - private boolean jj_3R_IterationStatement_335_9_121() + private boolean jj_3R_IterationStatement_339_9_121() { if (jj_scan_token(DO)) return true; return false; } - private boolean jj_3R_IterationStatement_334_9_87() + private boolean jj_3R_IterationStatement_338_9_87() { Token xsp; xsp = jj_scanpos; - if (jj_3R_IterationStatement_334_11_120()) { + if (jj_3R_IterationStatement_338_11_120()) { jj_scanpos = xsp; - if (jj_3R_IterationStatement_335_9_121()) { + if (jj_3R_IterationStatement_339_9_121()) { jj_scanpos = xsp; - if (jj_3R_IterationStatement_336_9_122()) return true; + if (jj_3R_IterationStatement_340_9_122()) return true; } } return false; } - private boolean jj_3R_DirectAbstractDeclarator_289_52_157() + private boolean jj_3R_DirectAbstractDeclarator_290_52_157() { - if (jj_3R_ParameterTypeList_242_9_16()) return true; + if (jj_3R_ParameterTypeList_243_9_16()) return true; return false; } private boolean jj_3_15() { - if (jj_3R_DeclarationList_152_9_23()) return true; + if (jj_3R_DeclarationList_153_9_23()) return true; return false; } - private boolean jj_3R_SelectionStatement_328_11_118() + private boolean jj_3R_SelectionStatement_329_11_118() { if (jj_scan_token(IF)) return true; return false; } - private boolean jj_3R_SelectionStatement_329_9_119() + private boolean jj_3R_SelectionStatement_330_9_119() { if (jj_scan_token(SWITCH)) return true; return false; } - private boolean jj_3R_SelectionStatement_328_9_86() + private boolean jj_3R_SelectionStatement_329_9_86() { Token xsp; xsp = jj_scanpos; - if (jj_3R_SelectionStatement_328_11_118()) { + if (jj_3R_SelectionStatement_329_11_118()) { jj_scanpos = xsp; - if (jj_3R_SelectionStatement_329_9_119()) return true; + if (jj_3R_SelectionStatement_330_9_119()) return true; } return false; } - private boolean jj_3R_DirectAbstractDeclarator_289_46_152() + private boolean jj_3R_DirectAbstractDeclarator_290_46_152() { if (jj_scan_token(63)) return true; Token xsp; xsp = jj_scanpos; - if (jj_3R_DirectAbstractDeclarator_289_52_157()) jj_scanpos = xsp; + if (jj_3R_DirectAbstractDeclarator_290_52_157()) jj_scanpos = xsp; if (jj_scan_token(64)) return true; return false; } - private boolean jj_3R_ParameterDeclaration_252_76_134() + private boolean jj_3R_ParameterDeclaration_253_76_134() { - if (jj_3R_AbstractDeclarator_279_9_21()) return true; + if (jj_3R_AbstractDeclarator_280_9_21()) return true; return false; } - private boolean jj_3R_ParameterDeclaration_252_74_108() + private boolean jj_3R_ParameterDeclaration_253_74_108() { Token xsp; xsp = jj_scanpos; - if (jj_3R_ParameterDeclaration_252_76_134()) jj_scanpos = xsp; + if (jj_3R_ParameterDeclaration_253_76_134()) jj_scanpos = xsp; return false; } - private boolean jj_3R_CompoundStatement_316_9_85() + private boolean jj_3R_CompoundStatement_317_9_85() { if (jj_scan_token(69)) return true; return false; } - private boolean jj_3R_ExpressionStatement_311_11_117() + private boolean jj_3R_ExpressionStatement_312_11_117() { - if (jj_3R_Expression_349_9_94()) return true; + if (jj_3R_Expression_356_9_94()) return true; return false; } - private boolean jj_3R_ExpressionStatement_311_9_84() + private boolean jj_3R_ExpressionStatement_312_9_84() { Token xsp; xsp = jj_scanpos; - if (jj_3R_ExpressionStatement_311_11_117()) jj_scanpos = xsp; + if (jj_3R_ExpressionStatement_312_11_117()) jj_scanpos = xsp; if (jj_scan_token(60)) return true; return false; } private boolean jj_3_14() { - if (jj_3R_Identifier_495_9_22()) return true; + if (jj_3R_Identifier_502_9_22()) return true; if (jj_scan_token(71)) return true; return false; } - private boolean jj_3R_LabeledStatement_304_11_114() + private boolean jj_3R_LabeledStatement_305_11_114() { - if (jj_3R_Identifier_495_9_22()) return true; + if (jj_3R_Identifier_502_9_22()) return true; return false; } - private boolean jj_3R_LabeledStatement_306_9_116() + private boolean jj_3R_LabeledStatement_307_9_116() { if (jj_scan_token(DFLT)) return true; return false; } - private boolean jj_3R_LabeledStatement_305_9_115() + private boolean jj_3R_LabeledStatement_306_9_115() { if (jj_scan_token(CASE)) return true; return false; } - private boolean jj_3R_LabeledStatement_304_9_83() + private boolean jj_3R_LabeledStatement_305_9_83() { Token xsp; xsp = jj_scanpos; - if (jj_3R_LabeledStatement_304_11_114()) { + if (jj_3R_LabeledStatement_305_11_114()) { jj_scanpos = xsp; - if (jj_3R_LabeledStatement_305_9_115()) { + if (jj_3R_LabeledStatement_306_9_115()) { jj_scanpos = xsp; - if (jj_3R_LabeledStatement_306_9_116()) return true; + if (jj_3R_LabeledStatement_307_9_116()) return true; } } return false; } - private boolean jj_3R_TypeName_273_36_61() + private boolean jj_3R_TypeName_274_36_61() { - if (jj_3R_AbstractDeclarator_279_9_21()) return true; + if (jj_3R_AbstractDeclarator_280_9_21()) return true; return false; } - private boolean jj_3R_Statement_299_9_54() + private boolean jj_3R_Statement_300_9_54() { - if (jj_3R_JumpStatement_341_9_88()) return true; + if (jj_3R_JumpStatement_348_9_88()) return true; return false; } - private boolean jj_3R_Statement_298_9_53() + private boolean jj_3R_Statement_299_9_53() { - if (jj_3R_IterationStatement_334_9_87()) return true; + if (jj_3R_IterationStatement_338_9_87()) return true; return false; } - private boolean jj_3R_DirectAbstractDeclarator_289_17_156() + private boolean jj_3R_DirectAbstractDeclarator_290_17_156() { - if (jj_3R_ConstantExpression_376_9_139()) return true; + if (jj_3R_ConstantExpression_383_9_139()) return true; return false; } - private boolean jj_3R_Statement_297_9_52() + private boolean jj_3R_Statement_298_9_52() { - if (jj_3R_SelectionStatement_328_9_86()) return true; + if (jj_3R_SelectionStatement_329_9_86()) return true; return false; } - private boolean jj_3R_Statement_296_9_51() + private boolean jj_3R_Statement_297_9_51() { - if (jj_3R_CompoundStatement_316_9_85()) return true; + if (jj_3R_CompoundStatement_317_9_85()) return true; return false; } - private boolean jj_3R_Statement_294_11_49() + private boolean jj_3R_Statement_295_11_49() { - if (jj_3R_LabeledStatement_304_9_83()) return true; + if (jj_3R_LabeledStatement_305_9_83()) return true; return false; } - private boolean jj_3R_Statement_295_9_50() + private boolean jj_3R_Statement_296_9_50() { - if (jj_3R_ExpressionStatement_311_9_84()) return true; + if (jj_3R_ExpressionStatement_312_9_84()) return true; return false; } - private boolean jj_3R_Statement_294_9_24() + private boolean jj_3R_Statement_295_9_24() { Token xsp; xsp = jj_scanpos; - if (jj_3R_Statement_294_11_49()) { + if (jj_3R_Statement_295_11_49()) { jj_scanpos = xsp; - if (jj_3R_Statement_295_9_50()) { + if (jj_3R_Statement_296_9_50()) { jj_scanpos = xsp; - if (jj_3R_Statement_296_9_51()) { + if (jj_3R_Statement_297_9_51()) { jj_scanpos = xsp; - if (jj_3R_Statement_297_9_52()) { + if (jj_3R_Statement_298_9_52()) { jj_scanpos = xsp; - if (jj_3R_Statement_298_9_53()) { + if (jj_3R_Statement_299_9_53()) { jj_scanpos = xsp; - if (jj_3R_Statement_299_9_54()) return true; + if (jj_3R_Statement_300_9_54()) return true; } } } @@ -3770,87 +3768,87 @@ if (jjtc000) { return false; } - private boolean jj_3R_DirectAbstractDeclarator_287_14_150() + private boolean jj_3R_DirectAbstractDeclarator_288_14_150() { - if (jj_3R_ParameterTypeList_242_9_16()) return true; + if (jj_3R_ParameterTypeList_243_9_16()) return true; return false; } - private boolean jj_3R_DirectAbstractDeclarator_289_11_151() + private boolean jj_3R_DirectAbstractDeclarator_290_11_151() { if (jj_scan_token(65)) return true; Token xsp; xsp = jj_scanpos; - if (jj_3R_DirectAbstractDeclarator_289_17_156()) jj_scanpos = xsp; + if (jj_3R_DirectAbstractDeclarator_290_17_156()) jj_scanpos = xsp; if (jj_scan_token(66)) return true; return false; } - private boolean jj_3R_DirectAbstractDeclarator_286_14_149() + private boolean jj_3R_DirectAbstractDeclarator_287_14_149() { - if (jj_3R_ConstantExpression_376_9_139()) return true; + if (jj_3R_ConstantExpression_383_9_139()) return true; return false; } - private boolean jj_3R_DirectAbstractDeclarator_289_11_144() + private boolean jj_3R_DirectAbstractDeclarator_290_11_144() { Token xsp; xsp = jj_scanpos; - if (jj_3R_DirectAbstractDeclarator_289_11_151()) { + if (jj_3R_DirectAbstractDeclarator_290_11_151()) { jj_scanpos = xsp; - if (jj_3R_DirectAbstractDeclarator_289_46_152()) return true; + if (jj_3R_DirectAbstractDeclarator_290_46_152()) return true; } return false; } private boolean jj_3_10() { - if (jj_3R_Declarator_219_9_18()) return true; + if (jj_3R_Declarator_220_9_18()) return true; return false; } private boolean jj_3_13() { if (jj_scan_token(63)) return true; - if (jj_3R_AbstractDeclarator_279_9_21()) return true; + if (jj_3R_AbstractDeclarator_280_9_21()) return true; if (jj_scan_token(64)) return true; return false; } - private boolean jj_3R_DirectAbstractDeclarator_287_9_113() + private boolean jj_3R_DirectAbstractDeclarator_288_9_113() { if (jj_scan_token(63)) return true; Token xsp; xsp = jj_scanpos; - if (jj_3R_DirectAbstractDeclarator_287_14_150()) jj_scanpos = xsp; + if (jj_3R_DirectAbstractDeclarator_288_14_150()) jj_scanpos = xsp; if (jj_scan_token(64)) return true; return false; } - private boolean jj_3R_DirectAbstractDeclarator_286_9_112() + private boolean jj_3R_DirectAbstractDeclarator_287_9_112() { if (jj_scan_token(65)) return true; Token xsp; xsp = jj_scanpos; - if (jj_3R_DirectAbstractDeclarator_286_14_149()) jj_scanpos = xsp; + if (jj_3R_DirectAbstractDeclarator_287_14_149()) jj_scanpos = xsp; if (jj_scan_token(66)) return true; return false; } - private boolean jj_3R_DirectAbstractDeclarator_285_9_82() + private boolean jj_3R_DirectAbstractDeclarator_286_9_82() { Token xsp; xsp = jj_scanpos; if (jj_3_13()) { jj_scanpos = xsp; - if (jj_3R_DirectAbstractDeclarator_286_9_112()) { + if (jj_3R_DirectAbstractDeclarator_287_9_112()) { jj_scanpos = xsp; - if (jj_3R_DirectAbstractDeclarator_287_9_113()) return true; + if (jj_3R_DirectAbstractDeclarator_288_9_113()) return true; } } while (true) { xsp = jj_scanpos; - if (jj_3R_DirectAbstractDeclarator_289_11_144()) { jj_scanpos = xsp; break; } + if (jj_3R_DirectAbstractDeclarator_290_11_144()) { jj_scanpos = xsp; break; } } return false; } @@ -3858,74 +3856,74 @@ if (jjtc000) { private boolean jj_3_11() { if (jj_scan_token(61)) return true; - if (jj_3R_Initializer_262_9_19()) return true; + if (jj_3R_Initializer_263_9_19()) return true; return false; } private boolean jj_3_12() { - if (jj_3R_Pointer_232_9_20()) return true; + if (jj_3R_Pointer_233_9_20()) return true; return false; } - private boolean jj_3R_AbstractDeclarator_280_10_81() + private boolean jj_3R_AbstractDeclarator_281_10_81() { - if (jj_3R_Pointer_232_9_20()) return true; + if (jj_3R_Pointer_233_9_20()) return true; return false; } - private boolean jj_3R_AbstractDeclarator_280_9_45() + private boolean jj_3R_AbstractDeclarator_281_9_45() { Token xsp; xsp = jj_scanpos; - if (jj_3R_AbstractDeclarator_280_10_81()) jj_scanpos = xsp; - if (jj_3R_DirectAbstractDeclarator_285_9_82()) return true; + if (jj_3R_AbstractDeclarator_281_10_81()) jj_scanpos = xsp; + if (jj_3R_DirectAbstractDeclarator_286_9_82()) return true; return false; } - private boolean jj_3R_AbstractDeclarator_279_9_21() + private boolean jj_3R_AbstractDeclarator_280_9_21() { Token xsp; xsp = jj_scanpos; if (jj_3_12()) { jj_scanpos = xsp; - if (jj_3R_AbstractDeclarator_280_9_45()) return true; + if (jj_3R_AbstractDeclarator_281_9_45()) return true; } return false; } - private boolean jj_3R_ParameterDeclaration_252_35_107() + private boolean jj_3R_ParameterDeclaration_253_35_107() { - if (jj_3R_Declarator_219_9_18()) return true; + if (jj_3R_Declarator_220_9_18()) return true; return false; } - private boolean jj_3R_TypeName_273_9_28() + private boolean jj_3R_TypeName_274_9_28() { - if (jj_3R_SpecifierQualifierList_211_9_15()) return true; + if (jj_3R_SpecifierQualifierList_212_9_15()) return true; Token xsp; xsp = jj_scanpos; - if (jj_3R_TypeName_273_36_61()) jj_scanpos = xsp; + if (jj_3R_TypeName_274_36_61()) jj_scanpos = xsp; return false; } - private boolean jj_3R_IdentifierList_257_23_146() + private boolean jj_3R_IdentifierList_258_23_146() { if (jj_scan_token(61)) return true; - if (jj_3R_Identifier_495_9_22()) return true; + if (jj_3R_Identifier_502_9_22()) return true; return false; } private boolean jj_3_9() { if (jj_scan_token(61)) return true; - if (jj_3R_ParameterDeclaration_252_9_17()) return true; + if (jj_3R_ParameterDeclaration_253_9_17()) return true; return false; } - private boolean jj_3R_InitializerList_268_9_153() + private boolean jj_3R_InitializerList_269_9_153() { - if (jj_3R_Initializer_262_9_19()) return true; + if (jj_3R_Initializer_263_9_19()) return true; Token xsp; while (true) { xsp = jj_scanpos; @@ -3934,16 +3932,16 @@ if (jjtc000) { return false; } - private boolean jj_3R_Initializer_262_11_41() + private boolean jj_3R_Initializer_263_11_41() { - if (jj_3R_AssignmentExpression_354_9_66()) return true; + if (jj_3R_AssignmentExpression_361_9_66()) return true; return false; } - private boolean jj_3R_Initializer_263_9_42() + private boolean jj_3R_Initializer_264_9_42() { if (jj_scan_token(69)) return true; - if (jj_3R_InitializerList_268_9_153()) return true; + if (jj_3R_InitializerList_269_9_153()) return true; Token xsp; xsp = jj_scanpos; if (jj_scan_token(61)) jj_scanpos = xsp; @@ -3951,56 +3949,56 @@ if (jjtc000) { return false; } - private boolean jj_3R_Pointer_232_39_44() + private boolean jj_3R_Pointer_233_39_44() { - if (jj_3R_Pointer_232_9_20()) return true; + if (jj_3R_Pointer_233_9_20()) return true; return false; } - private boolean jj_3R_Initializer_262_9_19() + private boolean jj_3R_Initializer_263_9_19() { Token xsp; xsp = jj_scanpos; - if (jj_3R_Initializer_262_11_41()) { + if (jj_3R_Initializer_263_11_41()) { jj_scanpos = xsp; - if (jj_3R_Initializer_263_9_42()) return true; + if (jj_3R_Initializer_264_9_42()) return true; } return false; } - private boolean jj_3R_ParameterTypeList_242_26_140() + private boolean jj_3R_ParameterTypeList_243_26_140() { if (jj_scan_token(61)) return true; if (jj_scan_token(68)) return true; return false; } - private boolean jj_3R_IdentifierList_257_9_141() + private boolean jj_3R_IdentifierList_258_9_141() { - if (jj_3R_Identifier_495_9_22()) return true; + if (jj_3R_Identifier_502_9_22()) return true; Token xsp; while (true) { xsp = jj_scanpos; - if (jj_3R_IdentifierList_257_23_146()) { jj_scanpos = xsp; break; } + if (jj_3R_IdentifierList_258_23_146()) { jj_scanpos = xsp; break; } } return false; } - private boolean jj_3R_ParameterDeclaration_252_9_17() + private boolean jj_3R_ParameterDeclaration_253_9_17() { - if (jj_3R_DeclarationSpecifiers_157_9_13()) return true; + if (jj_3R_DeclarationSpecifiers_158_9_13()) return true; Token xsp; xsp = jj_scanpos; - if (jj_3R_ParameterDeclaration_252_35_107()) { + if (jj_3R_ParameterDeclaration_253_35_107()) { jj_scanpos = xsp; - if (jj_3R_ParameterDeclaration_252_74_108()) return true; + if (jj_3R_ParameterDeclaration_253_74_108()) return true; } return false; } - private boolean jj_3R_ParameterList_247_9_38() + private boolean jj_3R_ParameterList_248_9_38() { - if (jj_3R_ParameterDeclaration_252_9_17()) return true; + if (jj_3R_ParameterDeclaration_253_9_17()) return true; Token xsp; while (true) { xsp = jj_scanpos; @@ -4009,123 +4007,123 @@ if (jjtc000) { return false; } - private boolean jj_3R_ParameterTypeList_242_9_16() + private boolean jj_3R_ParameterTypeList_243_9_16() { - if (jj_3R_ParameterList_247_9_38()) return true; + if (jj_3R_ParameterList_248_9_38()) return true; Token xsp; xsp = jj_scanpos; - if (jj_3R_ParameterTypeList_242_26_140()) jj_scanpos = xsp; + if (jj_3R_ParameterTypeList_243_26_140()) jj_scanpos = xsp; return false; } private boolean jj_3_7() { - if (jj_3R_SpecifierQualifierList_211_9_15()) return true; + if (jj_3R_SpecifierQualifierList_212_9_15()) return true; return false; } - private boolean jj_3R_DirectDeclarator_224_26_78() + private boolean jj_3R_DirectDeclarator_225_26_78() { if (jj_scan_token(63)) return true; - if (jj_3R_Declarator_219_9_18()) return true; + if (jj_3R_Declarator_220_9_18()) return true; if (jj_scan_token(64)) return true; return false; } private boolean jj_3_6() { - if (jj_3R_SpecifierQualifierList_211_9_15()) return true; + if (jj_3R_SpecifierQualifierList_212_9_15()) return true; return false; } - private boolean jj_3R_Pointer_232_15_43() + private boolean jj_3R_Pointer_233_15_43() { - if (jj_3R_TypeQualifierList_237_9_80()) return true; + if (jj_3R_TypeQualifierList_238_9_80()) return true; return false; } - private boolean jj_3R_TypeQualifierList_237_10_111() + private boolean jj_3R_TypeQualifierList_238_10_111() { - if (jj_3R_TypeQualifier_193_9_72()) return true; + if (jj_3R_TypeQualifier_194_9_72()) return true; return false; } - private boolean jj_3R_TypeQualifierList_237_9_80() + private boolean jj_3R_TypeQualifierList_238_9_80() { Token xsp; - if (jj_3R_TypeQualifierList_237_10_111()) return true; + if (jj_3R_TypeQualifierList_238_10_111()) return true; while (true) { xsp = jj_scanpos; - if (jj_3R_TypeQualifierList_237_10_111()) { jj_scanpos = xsp; break; } + if (jj_3R_TypeQualifierList_238_10_111()) { jj_scanpos = xsp; break; } } return false; } - private boolean jj_3R_DirectDeclarator_227_15_136() + private boolean jj_3R_DirectDeclarator_228_15_136() { - if (jj_3R_IdentifierList_257_9_141()) return true; + if (jj_3R_IdentifierList_258_9_141()) return true; return false; } - private boolean jj_3R_DirectDeclarator_225_17_135() + private boolean jj_3R_DirectDeclarator_226_17_135() { - if (jj_3R_ConstantExpression_376_9_139()) return true; + if (jj_3R_ConstantExpression_383_9_139()) return true; return false; } - private boolean jj_3R_Pointer_232_9_20() + private boolean jj_3R_Pointer_233_9_20() { if (jj_scan_token(67)) return true; Token xsp; xsp = jj_scanpos; - if (jj_3R_Pointer_232_15_43()) jj_scanpos = xsp; + if (jj_3R_Pointer_233_15_43()) jj_scanpos = xsp; xsp = jj_scanpos; - if (jj_3R_Pointer_232_39_44()) jj_scanpos = xsp; + if (jj_3R_Pointer_233_39_44()) jj_scanpos = xsp; return false; } - private boolean jj_3R_SpecifierQualifierList_213_27_76() + private boolean jj_3R_SpecifierQualifierList_214_27_76() { - if (jj_3R_SpecifierQualifierList_211_9_15()) return true; + if (jj_3R_SpecifierQualifierList_212_9_15()) return true; return false; } - private boolean jj_3R_SpecifierQualifierList_211_27_75() + private boolean jj_3R_SpecifierQualifierList_212_27_75() { - if (jj_3R_SpecifierQualifierList_211_9_15()) return true; + if (jj_3R_SpecifierQualifierList_212_9_15()) return true; return false; } - private boolean jj_3R_DirectDeclarator_225_11_79() + private boolean jj_3R_DirectDeclarator_226_11_79() { Token xsp; xsp = jj_scanpos; - if (jj_3R_DirectDeclarator_225_11_109()) { + if (jj_3R_DirectDeclarator_226_11_109()) { jj_scanpos = xsp; if (jj_3_8()) { jj_scanpos = xsp; - if (jj_3R_DirectDeclarator_227_9_110()) return true; + if (jj_3R_DirectDeclarator_228_9_110()) return true; } } return false; } - private boolean jj_3R_DirectDeclarator_225_11_109() + private boolean jj_3R_DirectDeclarator_226_11_109() { if (jj_scan_token(65)) return true; Token xsp; xsp = jj_scanpos; - if (jj_3R_DirectDeclarator_225_17_135()) jj_scanpos = xsp; + if (jj_3R_DirectDeclarator_226_17_135()) jj_scanpos = xsp; if (jj_scan_token(66)) return true; return false; } - private boolean jj_3R_DirectDeclarator_227_9_110() + private boolean jj_3R_DirectDeclarator_228_9_110() { if (jj_scan_token(63)) return true; Token xsp; xsp = jj_scanpos; - if (jj_3R_DirectDeclarator_227_15_136()) jj_scanpos = xsp; + if (jj_3R_DirectDeclarator_228_15_136()) jj_scanpos = xsp; if (jj_scan_token(64)) return true; return false; } @@ -4133,117 +4131,117 @@ if (jjtc000) { private boolean jj_3_8() { if (jj_scan_token(63)) return true; - if (jj_3R_ParameterTypeList_242_9_16()) return true; + if (jj_3R_ParameterTypeList_243_9_16()) return true; if (jj_scan_token(64)) return true; return false; } - private boolean jj_3R_DirectDeclarator_224_11_77() + private boolean jj_3R_DirectDeclarator_225_11_77() { - if (jj_3R_Identifier_495_9_22()) return true; + if (jj_3R_Identifier_502_9_22()) return true; return false; } - private boolean jj_3R_DirectDeclarator_224_9_40() + private boolean jj_3R_DirectDeclarator_225_9_40() { Token xsp; xsp = jj_scanpos; - if (jj_3R_DirectDeclarator_224_11_77()) { + if (jj_3R_DirectDeclarator_225_11_77()) { jj_scanpos = xsp; - if (jj_3R_DirectDeclarator_224_26_78()) return true; + if (jj_3R_DirectDeclarator_225_26_78()) return true; } while (true) { xsp = jj_scanpos; - if (jj_3R_DirectDeclarator_225_11_79()) { jj_scanpos = xsp; break; } + if (jj_3R_DirectDeclarator_226_11_79()) { jj_scanpos = xsp; break; } } return false; } - private boolean jj_3R_InitDeclarator_206_24_133() + private boolean jj_3R_InitDeclarator_207_24_133() { if (jj_scan_token(62)) return true; - if (jj_3R_Initializer_262_9_19()) return true; + if (jj_3R_Initializer_263_9_19()) return true; return false; } - private boolean jj_3R_Declarator_219_11_39() + private boolean jj_3R_Declarator_220_11_39() { - if (jj_3R_Pointer_232_9_20()) return true; + if (jj_3R_Pointer_233_9_20()) return true; return false; } - private boolean jj_3R_Declarator_219_9_18() + private boolean jj_3R_Declarator_220_9_18() { Token xsp; xsp = jj_scanpos; - if (jj_3R_Declarator_219_11_39()) jj_scanpos = xsp; - if (jj_3R_DirectDeclarator_224_9_40()) return true; + if (jj_3R_Declarator_220_11_39()) jj_scanpos = xsp; + if (jj_3R_DirectDeclarator_225_9_40()) return true; return false; } - private boolean jj_3R_InitDeclaratorList_201_27_106() + private boolean jj_3R_InitDeclaratorList_202_27_106() { if (jj_scan_token(61)) return true; - if (jj_3R_InitDeclarator_206_9_105()) return true; + if (jj_3R_InitDeclarator_207_9_105()) return true; return false; } - private boolean jj_3R_SpecifierQualifierList_213_9_37() + private boolean jj_3R_SpecifierQualifierList_214_9_37() { - if (jj_3R_TypeQualifier_193_9_72()) return true; + if (jj_3R_TypeQualifier_194_9_72()) return true; Token xsp; xsp = jj_scanpos; - if (jj_3R_SpecifierQualifierList_213_27_76()) jj_scanpos = xsp; + if (jj_3R_SpecifierQualifierList_214_27_76()) jj_scanpos = xsp; return false; } - private boolean jj_3R_SpecifierQualifierList_211_9_36() + private boolean jj_3R_SpecifierQualifierList_212_9_36() { - if (jj_3R_TypeSpecifier_181_9_70()) return true; + if (jj_3R_TypeSpecifier_182_9_70()) return true; Token xsp; xsp = jj_scanpos; - if (jj_3R_SpecifierQualifierList_211_27_75()) jj_scanpos = xsp; + if (jj_3R_SpecifierQualifierList_212_27_75()) jj_scanpos = xsp; return false; } - private boolean jj_3R_SpecifierQualifierList_211_9_15() + private boolean jj_3R_SpecifierQualifierList_212_9_15() { Token xsp; xsp = jj_scanpos; - if (jj_3R_SpecifierQualifierList_211_9_36()) { + if (jj_3R_SpecifierQualifierList_212_9_36()) { jj_scanpos = xsp; - if (jj_3R_SpecifierQualifierList_213_9_37()) return true; + if (jj_3R_SpecifierQualifierList_214_9_37()) return true; } return false; } - private boolean jj_3R_InitDeclarator_206_9_105() + private boolean jj_3R_InitDeclarator_207_9_105() { - if (jj_3R_Declarator_219_9_18()) return true; + if (jj_3R_Declarator_220_9_18()) return true; Token xsp; xsp = jj_scanpos; - if (jj_3R_InitDeclarator_206_24_133()) jj_scanpos = xsp; + if (jj_3R_InitDeclarator_207_24_133()) jj_scanpos = xsp; return false; } - private boolean jj_3R_InitDeclaratorList_201_9_74() + private boolean jj_3R_InitDeclaratorList_202_9_74() { - if (jj_3R_InitDeclarator_206_9_105()) return true; + if (jj_3R_InitDeclarator_207_9_105()) return true; Token xsp; while (true) { xsp = jj_scanpos; - if (jj_3R_InitDeclaratorList_201_27_106()) { jj_scanpos = xsp; break; } + if (jj_3R_InitDeclaratorList_202_27_106()) { jj_scanpos = xsp; break; } } return false; } private boolean jj_3_3() { - if (jj_3R_DeclarationSpecifiers_157_9_13()) return true; + if (jj_3R_DeclarationSpecifiers_158_9_13()) return true; return false; } - private boolean jj_3R_TypeQualifier_193_9_72() + private boolean jj_3R_TypeQualifier_194_9_72() { Token xsp; xsp = jj_scanpos; @@ -4256,23 +4254,23 @@ if (jjtc000) { private boolean jj_3_5() { - if (jj_3R_DeclarationSpecifiers_157_9_13()) return true; + if (jj_3R_DeclarationSpecifiers_158_9_13()) return true; return false; } private boolean jj_3_4() { - if (jj_3R_DeclarationSpecifiers_157_9_13()) return true; + if (jj_3R_DeclarationSpecifiers_158_9_13()) return true; return false; } - private boolean jj_3R_DeclarationSpecifiers_157_35_69() + private boolean jj_3R_DeclarationSpecifiers_158_35_69() { - if (jj_3R_DeclarationSpecifiers_157_9_13()) return true; + if (jj_3R_DeclarationSpecifiers_158_9_13()) return true; return false; } - private boolean jj_3R_TypeSpecifier_181_9_70() + private boolean jj_3R_TypeSpecifier_182_9_70() { Token xsp; xsp = jj_scanpos; @@ -4313,38 +4311,38 @@ if (jjtc000) { return false; } - private boolean jj_3R_DeclarationSpecifiers_161_27_73() + private boolean jj_3R_DeclarationSpecifiers_162_27_73() { - if (jj_3R_DeclarationSpecifiers_157_9_13()) return true; + if (jj_3R_DeclarationSpecifiers_158_9_13()) return true; return false; } - private boolean jj_3R_DeclarationSpecifiers_159_28_71() + private boolean jj_3R_DeclarationSpecifiers_160_28_71() { - if (jj_3R_DeclarationSpecifiers_157_9_13()) return true; + if (jj_3R_DeclarationSpecifiers_158_9_13()) return true; return false; } - private boolean jj_3R_Declaration_147_35_35() - { - if (jj_3R_InitDeclaratorList_201_9_74()) return true; - return false; - } - - private boolean jj_3R_Identifier_495_69_47() + private boolean jj_3R_Identifier_502_69_47() { Token xsp; xsp = jj_scanpos; if (jj_scan_token(56)) jj_scanpos = xsp; if (jj_scan_token(90)) return true; - if (jj_3R_Identifier_495_9_22()) return true; + if (jj_3R_Identifier_502_9_22()) return true; if (jj_scan_token(91)) return true; xsp = jj_scanpos; if (jj_scan_token(56)) jj_scanpos = xsp; return false; } - private boolean jj_3R_StorageClassSpecifier_170_9_68() + private boolean jj_3R_Declaration_148_35_35() + { + if (jj_3R_InitDeclaratorList_202_9_74()) return true; + return false; + } + + private boolean jj_3R_StorageClassSpecifier_171_9_68() { Token xsp; xsp = jj_scanpos; @@ -4366,93 +4364,93 @@ if (jjtc000) { private boolean jj_3_2() { - if (jj_3R_Declaration_147_9_14()) return true; + if (jj_3R_Declaration_148_9_14()) return true; return false; } - private boolean jj_3R_DeclarationSpecifiers_161_9_34() + private boolean jj_3R_DeclarationSpecifiers_162_9_34() { - if (jj_3R_TypeQualifier_193_9_72()) return true; + if (jj_3R_TypeQualifier_194_9_72()) return true; Token xsp; xsp = jj_scanpos; - if (jj_3R_DeclarationSpecifiers_161_27_73()) jj_scanpos = xsp; + if (jj_3R_DeclarationSpecifiers_162_27_73()) jj_scanpos = xsp; return false; } - private boolean jj_3R_DeclarationSpecifiers_159_9_33() + private boolean jj_3R_DeclarationSpecifiers_160_9_33() { - if (jj_3R_TypeSpecifier_181_9_70()) return true; + if (jj_3R_TypeSpecifier_182_9_70()) return true; Token xsp; xsp = jj_scanpos; - if (jj_3R_DeclarationSpecifiers_159_28_71()) jj_scanpos = xsp; + if (jj_3R_DeclarationSpecifiers_160_28_71()) jj_scanpos = xsp; return false; } - private boolean jj_3R_DeclarationSpecifiers_157_9_32() + private boolean jj_3R_DeclarationSpecifiers_158_9_32() { - if (jj_3R_StorageClassSpecifier_170_9_68()) return true; + if (jj_3R_StorageClassSpecifier_171_9_68()) return true; Token xsp; xsp = jj_scanpos; - if (jj_3R_DeclarationSpecifiers_157_35_69()) jj_scanpos = xsp; + if (jj_3R_DeclarationSpecifiers_158_35_69()) jj_scanpos = xsp; return false; } - private boolean jj_3R_DeclarationSpecifiers_157_9_13() + private boolean jj_3R_DeclarationSpecifiers_158_9_13() { Token xsp; xsp = jj_scanpos; - if (jj_3R_DeclarationSpecifiers_157_9_32()) { + if (jj_3R_DeclarationSpecifiers_158_9_32()) { jj_scanpos = xsp; - if (jj_3R_DeclarationSpecifiers_159_9_33()) { + if (jj_3R_DeclarationSpecifiers_160_9_33()) { jj_scanpos = xsp; - if (jj_3R_DeclarationSpecifiers_161_9_34()) return true; + if (jj_3R_DeclarationSpecifiers_162_9_34()) return true; } } return false; } - private boolean jj_3R_DeclarationList_152_11_48() + private boolean jj_3R_DeclarationList_153_11_48() { - if (jj_3R_Declaration_147_9_14()) return true; + if (jj_3R_Declaration_148_9_14()) return true; return false; } - private boolean jj_3R_DeclarationList_152_9_23() + private boolean jj_3R_DeclarationList_153_9_23() { Token xsp; - if (jj_3R_DeclarationList_152_11_48()) return true; + if (jj_3R_DeclarationList_153_11_48()) return true; while (true) { xsp = jj_scanpos; - if (jj_3R_DeclarationList_152_11_48()) { jj_scanpos = xsp; break; } + if (jj_3R_DeclarationList_153_11_48()) { jj_scanpos = xsp; break; } } return false; } private boolean jj_3_1() { - if (jj_3R_DeclarationSpecifiers_157_9_13()) return true; + if (jj_3R_DeclarationSpecifiers_158_9_13()) return true; return false; } - private boolean jj_3R_Declaration_147_9_14() + private boolean jj_3R_Declaration_148_9_14() { - if (jj_3R_DeclarationSpecifiers_157_9_13()) return true; + if (jj_3R_DeclarationSpecifiers_158_9_13()) return true; Token xsp; xsp = jj_scanpos; - if (jj_3R_Declaration_147_35_35()) jj_scanpos = xsp; + if (jj_3R_Declaration_148_35_35()) jj_scanpos = xsp; if (jj_scan_token(60)) return true; return false; } - private boolean jj_3R_UnaryExpression_452_70_91() + private boolean jj_3R_UnaryExpression_459_70_91() { if (jj_scan_token(63)) return true; - if (jj_3R_TypeName_273_9_28()) return true; + if (jj_3R_TypeName_274_9_28()) return true; if (jj_scan_token(64)) return true; return false; } - private boolean jj_3R_Constant_512_9_131() + private boolean jj_3R_Constant_519_9_131() { Token xsp; xsp = jj_scanpos; @@ -4472,10 +4470,10 @@ if (jjtc000) { return false; } - private boolean jj_3R_ArgumentExpressionList_484_34_67() + private boolean jj_3R_ArgumentExpressionList_491_34_67() { if (jj_scan_token(61)) return true; - if (jj_3R_AssignmentExpression_354_9_66()) return true; + if (jj_3R_AssignmentExpression_361_9_66()) return true; return false; } @@ -4485,44 +4483,44 @@ if (jjtc000) { return false; } - private boolean jj_3R_Identifier_495_10_46() + private boolean jj_3R_Identifier_502_10_46() { if (jj_scan_token(IDENTIFIER)) return true; return false; } - private boolean jj_3R_Identifier_495_9_22() + private boolean jj_3R_Identifier_502_9_22() { Token xsp; xsp = jj_scanpos; - if (jj_3R_Identifier_495_10_46()) { + if (jj_3R_Identifier_502_10_46()) { jj_scanpos = xsp; - if (jj_3R_Identifier_495_69_47()) return true; + if (jj_3R_Identifier_502_69_47()) return true; } return false; } - private boolean jj_3R_PostfixExpression_467_29_102() + private boolean jj_3R_PostfixExpression_474_29_102() { if (jj_scan_token(100)) return true; return false; } - private boolean jj_3R_PostfixExpression_464_31_65() + private boolean jj_3R_PostfixExpression_471_31_65() { Token xsp; xsp = jj_scanpos; - if (jj_3R_PostfixExpression_464_31_98()) { + if (jj_3R_PostfixExpression_471_31_98()) { jj_scanpos = xsp; - if (jj_3R_PostfixExpression_465_9_99()) { + if (jj_3R_PostfixExpression_472_9_99()) { jj_scanpos = xsp; - if (jj_3R_PostfixExpression_466_9_100()) { + if (jj_3R_PostfixExpression_473_9_100()) { jj_scanpos = xsp; - if (jj_3R_PostfixExpression_467_9_101()) { + if (jj_3R_PostfixExpression_474_9_101()) { jj_scanpos = xsp; - if (jj_3R_PostfixExpression_467_29_102()) { + if (jj_3R_PostfixExpression_474_29_102()) { jj_scanpos = xsp; - if (jj_3R_PostfixExpression_468_16_103()) return true; + if (jj_3R_PostfixExpression_475_16_103()) return true; } } } @@ -4531,66 +4529,66 @@ if (jjtc000) { return false; } - private boolean jj_3R_PostfixExpression_464_31_98() + private boolean jj_3R_PostfixExpression_471_31_98() { if (jj_scan_token(65)) return true; - if (jj_3R_Expression_349_9_94()) return true; + if (jj_3R_Expression_356_9_94()) return true; if (jj_scan_token(66)) return true; return false; } - private boolean jj_3R_ArgumentExpressionList_484_9_31() + private boolean jj_3R_ArgumentExpressionList_491_9_31() { - if (jj_3R_AssignmentExpression_354_9_66()) return true; + if (jj_3R_AssignmentExpression_361_9_66()) return true; Token xsp; while (true) { xsp = jj_scanpos; - if (jj_3R_ArgumentExpressionList_484_34_67()) { jj_scanpos = xsp; break; } + if (jj_3R_ArgumentExpressionList_491_34_67()) { jj_scanpos = xsp; break; } } return false; } private boolean jj_3_22() { - if (jj_3R_ArgumentExpressionList_484_9_31()) return true; + if (jj_3R_ArgumentExpressionList_491_9_31()) return true; return false; } - private boolean jj_3R_PrimaryExpression_477_11_95() + private boolean jj_3R_PrimaryExpression_484_11_95() { - if (jj_3R_Identifier_495_9_22()) return true; + if (jj_3R_Identifier_502_9_22()) return true; return false; } - private boolean jj_3R_PrimaryExpression_479_9_97() + private boolean jj_3R_PrimaryExpression_486_9_97() { if (jj_scan_token(63)) return true; - if (jj_3R_Expression_349_9_94()) return true; + if (jj_3R_Expression_356_9_94()) return true; if (jj_scan_token(64)) return true; return false; } - private boolean jj_3R_PrimaryExpression_478_9_96() + private boolean jj_3R_PrimaryExpression_485_9_96() { - if (jj_3R_Constant_512_9_131()) return true; + if (jj_3R_Constant_519_9_131()) return true; return false; } - private boolean jj_3R_PrimaryExpression_477_9_64() + private boolean jj_3R_PrimaryExpression_484_9_64() { Token xsp; xsp = jj_scanpos; - if (jj_3R_PrimaryExpression_477_11_95()) { + if (jj_3R_PrimaryExpression_484_11_95()) { jj_scanpos = xsp; - if (jj_3R_PrimaryExpression_478_9_96()) { + if (jj_3R_PrimaryExpression_485_9_96()) { jj_scanpos = xsp; - if (jj_3R_PrimaryExpression_479_9_97()) return true; + if (jj_3R_PrimaryExpression_486_9_97()) return true; } } return false; } - private boolean jj_3R_PostfixExpression_468_16_103() + private boolean jj_3R_PostfixExpression_475_16_103() { if (jj_scan_token(101)) return true; return false; @@ -4598,58 +4596,58 @@ if (jjtc000) { private boolean jj_3_20() { - if (jj_3R_UnaryExpression_448_9_25()) return true; + if (jj_3R_UnaryExpression_455_9_25()) return true; return false; } - private boolean jj_3R_PostfixExpression_465_15_132() + private boolean jj_3R_PostfixExpression_472_15_132() { - if (jj_3R_ArgumentExpressionList_484_9_31()) return true; + if (jj_3R_ArgumentExpressionList_491_9_31()) return true; return false; } - private boolean jj_3R_PostfixExpression_467_9_101() + private boolean jj_3R_PostfixExpression_474_9_101() { if (jj_scan_token(105)) return true; - if (jj_3R_Identifier_495_9_22()) return true; + if (jj_3R_Identifier_502_9_22()) return true; return false; } - private boolean jj_3R_PostfixExpression_466_9_100() + private boolean jj_3R_PostfixExpression_473_9_100() { if (jj_scan_token(104)) return true; - if (jj_3R_Identifier_495_9_22()) return true; + if (jj_3R_Identifier_502_9_22()) return true; return false; } - private boolean jj_3R_PostfixExpression_465_9_99() + private boolean jj_3R_PostfixExpression_472_9_99() { if (jj_scan_token(63)) return true; Token xsp; xsp = jj_scanpos; - if (jj_3R_PostfixExpression_465_15_132()) jj_scanpos = xsp; + if (jj_3R_PostfixExpression_472_15_132()) jj_scanpos = xsp; if (jj_scan_token(64)) return true; return false; } - private boolean jj_3R_PostfixExpression_464_9_30() + private boolean jj_3R_PostfixExpression_471_9_30() { - if (jj_3R_PrimaryExpression_477_9_64()) return true; + if (jj_3R_PrimaryExpression_484_9_64()) return true; Token xsp; while (true) { xsp = jj_scanpos; - if (jj_3R_PostfixExpression_464_31_65()) { jj_scanpos = xsp; break; } + if (jj_3R_PostfixExpression_471_31_65()) { jj_scanpos = xsp; break; } } return false; } - private boolean jj_3R_UnaryExpression_452_20_90() + private boolean jj_3R_UnaryExpression_459_20_90() { - if (jj_3R_UnaryExpression_448_9_25()) return true; + if (jj_3R_UnaryExpression_455_9_25()) return true; return false; } - private boolean jj_3R_UnaryOperator_457_9_89() + private boolean jj_3R_UnaryOperator_464_9_89() { Token xsp; xsp = jj_scanpos; @@ -4672,7 +4670,7 @@ if (jjtc000) { return false; } - private boolean jj_3R_MultiplicativeExpression_437_28_164() + private boolean jj_3R_MultiplicativeExpression_444_28_164() { Token xsp; xsp = jj_scanpos; @@ -4683,78 +4681,78 @@ if (jjtc000) { if (jj_scan_token(99)) return true; } } - if (jj_3R_MultiplicativeExpression_437_9_162()) return true; + if (jj_3R_MultiplicativeExpression_444_9_162()) return true; return false; } private boolean jj_3_19() { if (jj_scan_token(63)) return true; - if (jj_3R_TypeName_273_9_28()) return true; + if (jj_3R_TypeName_274_9_28()) return true; if (jj_scan_token(64)) return true; - if (jj_3R_CastExpression_442_9_29()) return true; + if (jj_3R_CastExpression_449_9_29()) return true; return false; } - private boolean jj_3R_UnaryExpression_452_9_58() + private boolean jj_3R_UnaryExpression_459_9_58() { if (jj_scan_token(SIZEOF)) return true; Token xsp; xsp = jj_scanpos; - if (jj_3R_UnaryExpression_452_20_90()) { + if (jj_3R_UnaryExpression_459_20_90()) { jj_scanpos = xsp; - if (jj_3R_UnaryExpression_452_70_91()) return true; + if (jj_3R_UnaryExpression_459_70_91()) return true; } return false; } - private boolean jj_3R_UnaryExpression_451_9_57() + private boolean jj_3R_UnaryExpression_458_9_57() { - if (jj_3R_UnaryOperator_457_9_89()) return true; - if (jj_3R_CastExpression_442_9_29()) return true; + if (jj_3R_UnaryOperator_464_9_89()) return true; + if (jj_3R_CastExpression_449_9_29()) return true; return false; } - private boolean jj_3R_AdditiveExpression_421_38_163() + private boolean jj_3R_AdditiveExpression_428_38_163() { - if (jj_3R_AdditionOperator_429_9_165()) return true; - if (jj_3R_AdditiveExpression_421_9_160()) return true; + if (jj_3R_AdditionOperator_436_9_165()) return true; + if (jj_3R_AdditiveExpression_428_9_160()) return true; return false; } - private boolean jj_3R_UnaryExpression_450_9_56() + private boolean jj_3R_UnaryExpression_457_9_56() { if (jj_scan_token(101)) return true; - if (jj_3R_UnaryExpression_448_9_25()) return true; + if (jj_3R_UnaryExpression_455_9_25()) return true; return false; } private boolean jj_3_21() { - if (jj_3R_PostfixExpression_464_9_30()) return true; + if (jj_3R_PostfixExpression_471_9_30()) return true; return false; } - private boolean jj_3R_UnaryExpression_449_9_55() + private boolean jj_3R_UnaryExpression_456_9_55() { if (jj_scan_token(100)) return true; - if (jj_3R_UnaryExpression_448_9_25()) return true; + if (jj_3R_UnaryExpression_455_9_25()) return true; return false; } - private boolean jj_3R_UnaryExpression_448_9_25() + private boolean jj_3R_UnaryExpression_455_9_25() { Token xsp; xsp = jj_scanpos; if (jj_3_21()) { jj_scanpos = xsp; - if (jj_3R_UnaryExpression_449_9_55()) { + if (jj_3R_UnaryExpression_456_9_55()) { jj_scanpos = xsp; - if (jj_3R_UnaryExpression_450_9_56()) { + if (jj_3R_UnaryExpression_457_9_56()) { jj_scanpos = xsp; - if (jj_3R_UnaryExpression_451_9_57()) { + if (jj_3R_UnaryExpression_458_9_57()) { jj_scanpos = xsp; - if (jj_3R_UnaryExpression_452_9_58()) return true; + if (jj_3R_UnaryExpression_459_9_58()) return true; } } } @@ -4762,33 +4760,33 @@ if (jjtc000) { return false; } - private boolean jj_3R_CastExpression_442_11_62() + private boolean jj_3R_CastExpression_449_11_62() { if (jj_scan_token(63)) return true; - if (jj_3R_TypeName_273_9_28()) return true; + if (jj_3R_TypeName_274_9_28()) return true; if (jj_scan_token(64)) return true; - if (jj_3R_CastExpression_442_9_29()) return true; + if (jj_3R_CastExpression_449_9_29()) return true; return false; } - private boolean jj_3R_CastExpression_443_9_63() + private boolean jj_3R_CastExpression_450_9_63() { - if (jj_3R_UnaryExpression_448_9_25()) return true; + if (jj_3R_UnaryExpression_455_9_25()) return true; return false; } - private boolean jj_3R_CastExpression_442_9_29() + private boolean jj_3R_CastExpression_449_9_29() { Token xsp; xsp = jj_scanpos; - if (jj_3R_CastExpression_442_11_62()) { + if (jj_3R_CastExpression_449_11_62()) { jj_scanpos = xsp; - if (jj_3R_CastExpression_443_9_63()) return true; + if (jj_3R_CastExpression_450_9_63()) return true; } return false; } - private boolean jj_3R_ShiftExpression_416_32_161() + private boolean jj_3R_ShiftExpression_423_32_161() { Token xsp; xsp = jj_scanpos; @@ -4796,20 +4794,32 @@ if (jjtc000) { jj_scanpos = xsp; if (jj_scan_token(95)) return true; } - if (jj_3R_ShiftExpression_416_9_158()) return true; + if (jj_3R_ShiftExpression_423_9_158()) return true; return false; } - private boolean jj_3R_MultiplicativeExpression_437_9_162() + private boolean jj_3R_MultiplicativeExpression_444_9_162() { - if (jj_3R_CastExpression_442_9_29()) return true; + if (jj_3R_CastExpression_449_9_29()) return true; Token xsp; xsp = jj_scanpos; - if (jj_3R_MultiplicativeExpression_437_28_164()) jj_scanpos = xsp; + if (jj_3R_MultiplicativeExpression_444_28_164()) jj_scanpos = xsp; return false; } - private boolean jj_3R_RelationalExpression_411_29_159() + private boolean jj_3R_EqualityExpression_413_34_155() + { + Token xsp; + xsp = jj_scanpos; + if (jj_scan_token(88)) { + jj_scanpos = xsp; + if (jj_scan_token(89)) return true; + } + if (jj_3R_EqualityExpression_413_9_147()) return true; + return false; + } + + private boolean jj_3R_RelationalExpression_418_28_159() { Token xsp; xsp = jj_scanpos; @@ -4823,23 +4833,11 @@ if (jjtc000) { } } } - if (jj_3R_RelationalExpression_411_9_154()) return true; + if (jj_3R_RelationalExpression_418_9_154()) return true; return false; } - private boolean jj_3R_EqualityExpression_406_34_155() - { - Token xsp; - xsp = jj_scanpos; - if (jj_scan_token(88)) { - jj_scanpos = xsp; - if (jj_scan_token(89)) return true; - } - if (jj_3R_EqualityExpression_406_9_147()) return true; - return false; - } - - private boolean jj_3R_AdditionOperator_429_9_165() + private boolean jj_3R_AdditionOperator_436_9_165() { Token xsp; xsp = jj_scanpos; @@ -4850,148 +4848,157 @@ if (jjtc000) { return false; } - private boolean jj_3R_ANDExpression_401_32_148() + private boolean jj_3R_ANDExpression_408_32_148() { if (jj_scan_token(87)) return true; - if (jj_3R_ANDExpression_401_9_142()) return true; + if (jj_3R_ANDExpression_408_9_142()) return true; return false; } - private boolean jj_3R_AdditiveExpression_421_9_160() + private boolean jj_3R_AdditiveExpression_428_9_160() { - if (jj_3R_MultiplicativeExpression_437_9_162()) return true; + if (jj_3R_MultiplicativeExpression_444_9_162()) return true; Token xsp; xsp = jj_scanpos; - if (jj_3R_AdditiveExpression_421_38_163()) jj_scanpos = xsp; + if (jj_3R_AdditiveExpression_428_38_163()) jj_scanpos = xsp; return false; } - private boolean jj_3R_InclusiveORExpression_391_35_138() + private boolean jj_3R_InclusiveORExpression_398_35_138() { if (jj_scan_token(85)) return true; - if (jj_3R_InclusiveORExpression_391_9_127()) return true; + if (jj_3R_InclusiveORExpression_398_9_127()) return true; return false; } - private boolean jj_3R_ShiftExpression_416_9_158() + private boolean jj_3R_ShiftExpression_423_9_158() { - if (jj_3R_AdditiveExpression_421_9_160()) return true; + if (jj_3R_AdditiveExpression_428_9_160()) return true; Token xsp; xsp = jj_scanpos; - if (jj_3R_ShiftExpression_416_32_161()) jj_scanpos = xsp; + if (jj_3R_ShiftExpression_423_32_161()) jj_scanpos = xsp; return false; } - private boolean jj_3R_ExclusiveORExpression_396_27_143() + private boolean jj_3R_ExclusiveORExpression_403_27_143() { if (jj_scan_token(86)) return true; - if (jj_3R_ExclusiveORExpression_396_9_137()) return true; + if (jj_3R_ExclusiveORExpression_403_9_137()) return true; return false; } - private boolean jj_3R_LogicalANDExpression_386_35_128() + private boolean jj_3R_LogicalANDExpression_393_35_128() { if (jj_scan_token(84)) return true; - if (jj_3R_LogicalANDExpression_386_9_92()) return true; + if (jj_3R_LogicalANDExpression_393_9_92()) return true; return false; } - private boolean jj_3R_RelationalExpression_411_9_154() + private boolean jj_3R_RelationalExpression_418_9_154() { - if (jj_3R_ShiftExpression_416_9_158()) return true; + if (jj_3R_ShiftExpression_423_9_158()) return true; Token xsp; xsp = jj_scanpos; - if (jj_3R_RelationalExpression_411_29_159()) jj_scanpos = xsp; + if (jj_3R_RelationalExpression_418_28_159()) jj_scanpos = xsp; return false; } - private boolean jj_3R_EqualityExpression_406_9_147() + private boolean jj_3R_EqualityExpression_413_9_147() { - if (jj_3R_RelationalExpression_411_9_154()) return true; + if (jj_3R_RelationalExpression_418_9_154()) return true; Token xsp; xsp = jj_scanpos; - if (jj_3R_EqualityExpression_406_34_155()) jj_scanpos = xsp; + if (jj_3R_EqualityExpression_413_34_155()) jj_scanpos = xsp; return false; } - private boolean jj_3R_LogicalORExpression_381_34_93() + private boolean jj_3R_LogicalORExpression_388_34_93() { if (jj_scan_token(83)) return true; - if (jj_3R_LogicalORExpression_381_9_59()) return true; + if (jj_3R_LogicalORExpression_388_9_59()) return true; return false; } - private boolean jj_3R_Expression_349_66_130() + private boolean jj_3R_Expression_356_66_130() { - if (jj_3R_DeclarationSpecifiers_157_9_13()) return true; - if (jj_3R_InitDeclaratorList_201_9_74()) return true; + if (jj_3R_DeclarationSpecifiers_158_9_13()) return true; + if (jj_3R_InitDeclaratorList_202_9_74()) return true; return false; } - private boolean jj_3R_ANDExpression_401_9_142() + private boolean jj_3R_ANDExpression_408_9_142() { - if (jj_3R_EqualityExpression_406_9_147()) return true; + if (jj_3R_EqualityExpression_413_9_147()) return true; Token xsp; xsp = jj_scanpos; - if (jj_3R_ANDExpression_401_32_148()) jj_scanpos = xsp; + if (jj_3R_ANDExpression_408_32_148()) jj_scanpos = xsp; return false; } - private boolean jj_3R_ExclusiveORExpression_396_9_137() + private boolean jj_3R_ExclusiveORExpression_403_9_137() { - if (jj_3R_ANDExpression_401_9_142()) return true; + if (jj_3R_ANDExpression_408_9_142()) return true; Token xsp; xsp = jj_scanpos; - if (jj_3R_ExclusiveORExpression_396_27_143()) jj_scanpos = xsp; + if (jj_3R_ExclusiveORExpression_403_27_143()) jj_scanpos = xsp; return false; } - private boolean jj_3R_ConditionalExpression_371_33_60() + private boolean jj_3R_ConditionalExpression_378_33_60() { if (jj_scan_token(82)) return true; - if (jj_3R_Expression_349_9_94()) return true; + if (jj_3R_Expression_356_9_94()) return true; if (jj_scan_token(71)) return true; - if (jj_3R_ConditionalExpression_371_9_27()) return true; + if (jj_3R_ConditionalExpression_378_9_27()) return true; return false; } - private boolean jj_3R_InclusiveORExpression_391_9_127() + private boolean jj_3R_InclusiveORExpression_398_9_127() { - if (jj_3R_ExclusiveORExpression_396_9_137()) return true; + if (jj_3R_ExclusiveORExpression_403_9_137()) return true; Token xsp; xsp = jj_scanpos; - if (jj_3R_InclusiveORExpression_391_35_138()) jj_scanpos = xsp; + if (jj_3R_InclusiveORExpression_398_35_138()) jj_scanpos = xsp; return false; } - private boolean jj_3R_LogicalANDExpression_386_9_92() + private boolean jj_3R_LogicalANDExpression_393_9_92() { - if (jj_3R_InclusiveORExpression_391_9_127()) return true; + if (jj_3R_InclusiveORExpression_398_9_127()) return true; Token xsp; xsp = jj_scanpos; - if (jj_3R_LogicalANDExpression_386_35_128()) jj_scanpos = xsp; + if (jj_3R_LogicalANDExpression_393_35_128()) jj_scanpos = xsp; return false; } - private boolean jj_3R_LogicalORExpression_381_9_59() + private boolean jj_3R_LogicalORExpression_388_9_59() { - if (jj_3R_LogicalANDExpression_386_9_92()) return true; + if (jj_3R_LogicalANDExpression_393_9_92()) return true; Token xsp; xsp = jj_scanpos; - if (jj_3R_LogicalORExpression_381_34_93()) jj_scanpos = xsp; + if (jj_3R_LogicalORExpression_388_34_93()) jj_scanpos = xsp; return false; } - private boolean jj_3R_ConstantExpression_376_9_139() + private boolean jj_3R_ConstantExpression_383_9_139() { - if (jj_3R_ConditionalExpression_371_9_27()) return true; + if (jj_3R_ConditionalExpression_378_9_27()) return true; return false; } - private boolean jj_3R_Expression_349_34_145() + private boolean jj_3R_Expression_356_34_145() { if (jj_scan_token(61)) return true; - if (jj_3R_AssignmentExpression_354_9_66()) return true; + if (jj_3R_AssignmentExpression_361_9_66()) return true; + return false; + } + + private boolean jj_3R_ConditionalExpression_378_9_27() + { + if (jj_3R_LogicalORExpression_388_9_59()) return true; + Token xsp; + xsp = jj_scanpos; + if (jj_3R_ConditionalExpression_378_33_60()) jj_scanpos = xsp; return false; } diff --git a/src/main/java/ghidrust/decompiler/parser/c/gen/CParserTokenManager.java b/src/main/java/ghidrust/decompiler/parser/c/gen/CParserTokenManager.java index ae6c085..6c9d159 100644 --- a/src/main/java/ghidrust/decompiler/parser/c/gen/CParserTokenManager.java +++ b/src/main/java/ghidrust/decompiler/parser/c/gen/CParserTokenManager.java @@ -6,6 +6,7 @@ import java.io.InputStream; import java.io.ByteArrayInputStream; import java.nio.charset.StandardCharsets; import ghidrust.decompiler.parser.c.CVisitor; +import ghidrust.decompiler.parser.c.CContext; /** Token Manager. */ @SuppressWarnings ("unused") diff --git a/src/main/java/ghidrust/decompiler/parser/c/gen/c.jj b/src/main/java/ghidrust/decompiler/parser/c/gen/c.jj index 9cb6991..8b9ef9a 100644 --- a/src/main/java/ghidrust/decompiler/parser/c/gen/c.jj +++ b/src/main/java/ghidrust/decompiler/parser/c/gen/c.jj @@ -21,6 +21,7 @@ import java.io.InputStream; import java.io.ByteArrayInputStream; import java.nio.charset.StandardCharsets; import ghidrust.decompiler.parser.c.CVisitor; +import ghidrust.decompiler.parser.c.CContext; public class CParser/*@bgen(jjtree)*/implements CParserTreeConstants/*@egen*/ {/*@bgen(jjtree)*/ protected JJTCParserState jjtree = new JJTCParserState(); @@ -48,7 +49,7 @@ public class CParser/*@bgen(jjtree)*/implements CParserTreeConstants/*@egen*/ {/ public static String parse() throws ParseException { CParserVisitor visitor = new CVisitor(); - return (String) c_parser.FunctionDefinition().jjtAccept(visitor, null); + return (String) c_parser.FunctionDefinition().jjtAccept(visitor, new CContext()); } } @@ -293,7 +294,7 @@ void StorageClassSpecifier() : } /*@egen*/ { - jjtn000.setValue(t.image); + jjtn000.image = t.image; }/*@bgen(jjtree)*/ } finally { if (jjtc000) { @@ -322,7 +323,7 @@ void TypeSpecifier() : } /*@egen*/ { - jjtn000.setValue(t.image); + jjtn000.image = t.image; }/*@bgen(jjtree)*/ } finally { if (jjtc000) { @@ -350,7 +351,7 @@ void TypeQualifier() : } /*@egen*/ { - jjtn000.setValue(t.image); + jjtn000.image = t.image; }/*@bgen(jjtree)*/ } finally { if (jjtc000) { @@ -1065,17 +1066,28 @@ void SelectionStatement() : {/*@bgen(jjtree) SelectionStatement */ /*@egen*/ } -void IterationStatement() : {/*@bgen(jjtree) IterationStatement */ - ASTIterationStatement jjtn000 = new ASTIterationStatement(JJTITERATIONSTATEMENT); - boolean jjtc000 = true; - jjtree.openNodeScope(jjtn000); -/*@egen*/} +void IterationStatement() : +{/*@bgen(jjtree) IterationStatement */ + ASTIterationStatement jjtn000 = new ASTIterationStatement(JJTITERATIONSTATEMENT); + boolean jjtc000 = true; + jjtree.openNodeScope(jjtn000); +/*@egen*/ + int choice = 0; +} {/*@bgen(jjtree) IterationStatement */ try { /*@egen*/ - ( "(" Expression() ")" Statement() | - Statement() "(" Expression() ")" ";" | - "(" [ Expression() ] ";" [ Expression() ] ";" [ Expression() ] ")" Statement() )/*@bgen(jjtree)*/ + ( "(" Expression() ")" Statement() { choice = 1; } | + Statement() "(" Expression() ")" ";" { choice = 2; } | + "(" [ Expression() ] ";" [ Expression() ] ";" [ Expression() ] ")" Statement() { choice = 3; } )/*@bgen(jjtree)*/ + { + jjtree.closeNodeScope(jjtn000, true); + jjtc000 = false; + } +/*@egen*/ + { + jjtn000.choice = choice; + }/*@bgen(jjtree)*/ } catch (Throwable jjte000) { if (jjtc000) { jjtree.clearNodeScope(jjtn000); @@ -1213,7 +1225,7 @@ void AssignmentOperator() : } /*@egen*/ { - jjtn000.setValue(t.image); + jjtn000.image = t.image; }/*@bgen(jjtree)*/ } finally { if (jjtc000) { @@ -1479,7 +1491,7 @@ void RelationalExpression() : {/*@bgen(jjtree) RelationalExpression */ {/*@bgen(jjtree) RelationalExpression */ try { /*@egen*/ - ShiftExpression() [ ( "<" | ">" | "<=" | ">=" ) RelationalExpression() ]/*@bgen(jjtree)*/ + ShiftExpression() [( "<" | ">" | "<=" | ">=" ) RelationalExpression()]/*@bgen(jjtree)*/ } catch (Throwable jjte000) { if (jjtc000) { jjtree.clearNodeScope(jjtn000); @@ -1582,7 +1594,7 @@ void AdditionOperator() : } /*@egen*/ { - jjtn000.setValue(t.image); + jjtn000.image = t.image; }/*@bgen(jjtree)*/ } finally { if (jjtc000) { @@ -1826,22 +1838,22 @@ ASTStringToken Identifier() : Token r = null; ASTStringToken t = null; Token s = null; - int choice; + int choice = 0; } {/*@bgen(jjtree) StringToken */ try { /*@egen*/ - (LOOKAHEAD() r = { choice = 0; } | [ r = ] "<" t = Identifier() ">" [ s = ] { choice = 1; })/*@bgen(jjtree)*/ + (LOOKAHEAD() r = { choice = 1; } | [ r = ] "<" t = Identifier() ">" [ s = ] { choice = 2; })/*@bgen(jjtree)*/ { jjtree.closeNodeScope(jjtn000, true); jjtc000 = false; } /*@egen*/ { - if (choice == 1) { - jjtn000.setValue((r != null ? r.image : "") + "<" + t.getValue() + ">" + (s != null ? s.image : "")); - } else { - jjtn000.setValue(r.image); + if (choice == 2) { + jjtn000.image = (r != null ? r.image : "") + "<" + t.image + ">" + (s != null ? s.image : ""); + } else if (choice == 1) { + jjtn000.image = r.image; } return jjtn000; @@ -1886,7 +1898,7 @@ void Constant() : } /*@egen*/ { - jjtn000.setValue(t.image); + jjtn000.image = t.image; }/*@bgen(jjtree)*/ } finally { if (jjtc000) { diff --git a/src/main/java/ghidrust/decompiler/parser/c/gen/c.jjt b/src/main/java/ghidrust/decompiler/parser/c/gen/c.jjt index ca68c45..2e0a3c5 100644 --- a/src/main/java/ghidrust/decompiler/parser/c/gen/c.jjt +++ b/src/main/java/ghidrust/decompiler/parser/c/gen/c.jjt @@ -20,6 +20,7 @@ import java.io.InputStream; import java.io.ByteArrayInputStream; import java.nio.charset.StandardCharsets; import ghidrust.decompiler.parser.c.CVisitor; +import ghidrust.decompiler.parser.c.CContext; public class CParser { private static CParser c_parser; @@ -44,7 +45,7 @@ public class CParser { public static String parse() throws ParseException { CParserVisitor visitor = new CVisitor(); - return (String) c_parser.FunctionDefinition().jjtAccept(visitor, null); + return (String) c_parser.FunctionDefinition().jjtAccept(visitor, new CContext()); } } @@ -169,7 +170,7 @@ void StorageClassSpecifier() #GhostStringToken : { ( t = | t = | t = | t = | t = ) { - jjtThis.setValue(t.image); + jjtThis.image = t.image; } } @@ -181,7 +182,7 @@ void TypeSpecifier() #TypeStringToken : ( t = | t = | t = | t = | t = | t = | t = | t = | t = | t = | t = | t = ) { - jjtThis.setValue(t.image); + jjtThis.image = t.image; } } @@ -192,7 +193,7 @@ void TypeQualifier() #StringToken : { ( t = | t = ) { - jjtThis.setValue(t.image); + jjtThis.image = t.image; } } @@ -329,11 +330,17 @@ void SelectionStatement() : {} "(" Expression() ")" Statement() ) } -void IterationStatement() : {} +void IterationStatement() : { - ( "(" Expression() ")" Statement() | - Statement() "(" Expression() ")" ";" | - "(" [ Expression() ] ";" [ Expression() ] ";" [ Expression() ] ")" Statement() ) + int choice = 0; +} +{ + ( "(" Expression() ")" Statement() { choice = 1; } | + Statement() "(" Expression() ")" ";" { choice = 2; } | + "(" [ Expression() ] ";" [ Expression() ] ";" [ Expression() ] ")" Statement() { choice = 3; } ) + { + jjtThis.choice = choice; + } } void JumpStatement() : {} @@ -362,7 +369,7 @@ void AssignmentOperator() #StringToken : { ( t = "=" | t = "*=" | t = "/=" | t = "%=" | t = "+=" | t = "-=" | t = "<<=" | t = ">>=" | t = "&=" | t = "^=" | t = "|=" ) { - jjtThis.setValue(t.image); + jjtThis.image = t.image; } } @@ -408,7 +415,7 @@ void EqualityExpression() : {} void RelationalExpression() : {} { - ShiftExpression() [ ( "<" | ">" | "<=" | ">=" ) RelationalExpression() ] + ShiftExpression() [( "<" | ">" | "<=" | ">=" ) RelationalExpression()] } void ShiftExpression() : {} @@ -428,7 +435,7 @@ void AdditionOperator() #StringToken : { ( t = "+" | t = "-" ) { - jjtThis.setValue(t.image); + jjtThis.image = t.image; } } @@ -489,15 +496,15 @@ ASTStringToken Identifier() #StringToken : Token r = null; ASTStringToken t = null; Token s = null; - int choice; + int choice = 0; } { - (LOOKAHEAD() r = { choice = 0; } | [ r = ] "<" t = Identifier() ">" [ s = ] { choice = 1; }) + (LOOKAHEAD() r = { choice = 1; } | [ r = ] "<" t = Identifier() ">" [ s = ] { choice = 2; }) { - if (choice == 1) { - jjtThis.setValue((r != null ? r.image : "") + "<" + t.getValue() + ">" + (s != null ? s.image : "")); - } else { - jjtThis.setValue(r.image); + if (choice == 2) { + jjtThis.image = (r != null ? r.image : "") + "<" + t.image + ">" + (s != null ? s.image : ""); + } else if (choice == 1) { + jjtThis.image = r.image; } return jjtThis; @@ -511,6 +518,6 @@ void Constant() #StringToken : { (t = | t = | t = | t = | t = ) { - jjtThis.setValue(t.image); + jjtThis.image = t.image; } } diff --git a/src/main/java/ghidrust/decompiler/parser/generate.sh b/src/main/java/ghidrust/decompiler/parser/generate.sh index 6d5dadc..f011513 100755 --- a/src/main/java/ghidrust/decompiler/parser/generate.sh +++ b/src/main/java/ghidrust/decompiler/parser/generate.sh @@ -4,7 +4,7 @@ cd c/gen -BACKUP_FILES="ASTPostfixExpression \ +BACKUP_FILES="ASTPostfixExpression ASTIterationStatement \ $(ls -1 AST*Token.java | cut -d. -f1 | tr '\n' ' ')" for file in $BACKUP_FILES; do