From 067e3078eccb42c63b8e7460b8724733866348d3 Mon Sep 17 00:00:00 2001 From: codemanyak Date: Tue, 19 Mar 2024 20:03:36 +0100 Subject: [PATCH 1/8] Fixes #1148, rectifies #1146 w.r.t. disabling --- buildapp.xml | 4 +- .../fisch/structorizer/elements/Element.java | 2 +- .../structorizer/generators/BasGenerator.java | 28 ++++- .../structorizer/generators/CGenerator.java | 27 ++++ .../structorizer/generators/Generator.java | 49 ++++++++ .../generators/OberonGenerator.java | 57 +-------- .../structorizer/generators/PHPGenerator.java | 35 +++++- .../generators/PerlGenerator.java | 118 ++++++++++-------- src/lu/fisch/structorizer/gui/changelog.txt | 4 +- 9 files changed, 211 insertions(+), 113 deletions(-) diff --git a/buildapp.xml b/buildapp.xml index 767be3de..bed421f9 100644 --- a/buildapp.xml +++ b/buildapp.xml @@ -15,8 +15,8 @@ name="Structorizer" displayname="Structorizer" identifier="lu.fisch.Structorizer" - shortversion="3.32-18" - version="3.32-18" + shortversion="3.32-19" + version="3.32-19" icon="icons/Structorizer.icns" mainclassname="Structorizer" copyright="Bob Fisch" diff --git a/src/lu/fisch/structorizer/elements/Element.java b/src/lu/fisch/structorizer/elements/Element.java index c000852b..afc2b4ce 100644 --- a/src/lu/fisch/structorizer/elements/Element.java +++ b/src/lu/fisch/structorizer/elements/Element.java @@ -308,7 +308,7 @@ public String toString() public static final long E_HELP_FILE_SIZE = 12300000; public static final String E_DOWNLOAD_PAGE = "https://www.fisch.lu/Php/download.php"; // END KGU#791 2020-01-20 - public static final String E_VERSION = "3.32-18"; + public static final String E_VERSION = "3.32-19"; public static final String E_THANKS = "Developed and maintained by\n"+ " - Robert Fisch \n"+ diff --git a/src/lu/fisch/structorizer/generators/BasGenerator.java b/src/lu/fisch/structorizer/generators/BasGenerator.java index 1e4b934e..c67d24fe 100644 --- a/src/lu/fisch/structorizer/generators/BasGenerator.java +++ b/src/lu/fisch/structorizer/generators/BasGenerator.java @@ -73,6 +73,7 @@ * Kay Gürtzig 2021-10-03/04 Bugfix #993: Wrong handling of constant parameters, array types, and mere declarations * Kay Gürtzig 2021-12-05 Bugfix #1024: Precautions against defective record initializers * Kay Gürtzig 2023-10-04 Bugfix #1093 Undue final return 0 on function diagrams + * Kay Gürtzig 2024-03-19 Issue #1148: Special indentation for "if else if" chains * ****************************************************************************************************** * @@ -91,6 +92,7 @@ import java.util.HashMap; import java.util.Map; +import java.util.Stack; import java.util.Map.Entry; import lu.fisch.structorizer.elements.Alternative; @@ -826,11 +828,31 @@ protected void generateCode(Alternative _alt, String _indent) addCode(transformKeyword("IF ") + condition + " " + transformKeyword("THEN"), _indent, disabled); // END KGU#277 2016-10-13 generateCode(_alt.qTrue, indentPlusOne); + + // START KGU#1137 2024-03-19: Issue #1148 We ought to make use of the ELSIF if possible + Element ele = null; + // We must cater for the code mapping of the chained sub-alternatives + Stack processedAlts = new Stack(); + Stack storedLineNos = new Stack(); + while (_alt.qFalse.getSize() == 1 + && (ele = _alt.qFalse.getElement(0)) instanceof Alternative + && !this.optionCodeLineNumbering()) { + _alt = (Alternative)ele; + condition = transform(_alt.getUnbrokenText().getLongString()).trim(); + // We must care for the code mapping explicitly here since we circumvent generateCode() + markElementStart(_alt, _indent, processedAlts, storedLineNos); + appendComment(_alt, _indent); + addCode(transformKeyword("ELSEIF ") + condition + " " + transformKeyword("THEN"), + _indent, _alt.isDisabled(false)); + generateCode(_alt.qTrue, _indent+this.getIndent()); + } + // END KGU#1137 2024-03-19 + if(_alt.qFalse.getSize() > 0) { // START KGU#277 2016-10-13: Enh. #270 //code.add(this.getLineNumber() + _indent + "ELSE"); - addCode(transformKeyword("ELSE"), _indent, disabled); + addCode(transformKeyword("ELSE"), _indent, _alt.isDisabled(false)); // END KGU#277 2016-10-13 generateCode(_alt.qFalse, indentPlusOne); } @@ -838,6 +860,10 @@ protected void generateCode(Alternative _alt, String _indent) //code.add(this.getLineNumber() + _indent + "END IF"); addCode(transformKeyword("END IF"), _indent, disabled); // END KGU#277 2016-10-13 + + // START KGU#1137 2024-03-19: Issue #1148 Accomplish the code map for the processed child alternatives + markElementEnds(processedAlts, storedLineNos); + // END KGU#1137 2024-03-19 } @Override diff --git a/src/lu/fisch/structorizer/generators/CGenerator.java b/src/lu/fisch/structorizer/generators/CGenerator.java index 529576ee..82625dc9 100644 --- a/src/lu/fisch/structorizer/generators/CGenerator.java +++ b/src/lu/fisch/structorizer/generators/CGenerator.java @@ -124,6 +124,7 @@ * to top (to change execution order could severely compromise the algorithm!) * Kay Gürtzig 2023-12-14 Bugfix #1118: The comment of Instructions without a line wasn't exported * Kay Gürtzig 2023-12-26 Issue #1123: Translation of built-in function random() added. + * Kay Gürtzig 2024-03-19 Issue #1148: Special indentation for "if else if" chains * ****************************************************************************************************** * @@ -195,6 +196,7 @@ import java.util.HashMap; import java.util.LinkedHashMap; +import java.util.Stack; import java.util.TreeMap; import java.util.Vector; import java.util.Map.Entry; @@ -1778,11 +1780,36 @@ protected void generateCode(Alternative _alt, String _indent) { generateCode(_alt.qTrue, _indent + this.getIndent()); appendBlockTail(_alt, null, _indent); + // START KGU#1137 2024-03-19: Issue #1148 We ought to make use of the ELSE IF if possible + Element ele = null; + // We must cater for the code mapping of the chained sub-alternatives + Stack processedAlts = new Stack(); + Stack storedLineNos = new Stack(); + while (_alt.qFalse.getSize() == 1 + && (ele = _alt.qFalse.getElement(0)) instanceof Alternative) { + _alt = (Alternative)ele; + condition = transform(_alt.getUnbrokenText().getLongString(), false).trim(); + if (!isParenthesized(condition)) { + condition = "(" + condition + ")"; + } + // We must care for the code mapping explicitly here since we circumvent generateCode() + markElementStart(_alt, _indent, processedAlts, storedLineNos); + appendComment(_alt, _indent); + appendBlockHeading(_alt, "else if " + condition, _indent); + generateCode(_alt.qTrue, _indent + this.getIndent()); + appendBlockTail(_alt, null, _indent); + } + // END KGU#1137 2024-03-19 + if (_alt.qFalse.getSize() != 0) { appendBlockHeading(_alt, "else", _indent); generateCode(_alt.qFalse, _indent + this.getIndent()); appendBlockTail(_alt, null, _indent); } + + // START KGU#1137 2024-03-19: Issue #1148 Accomplish the code map for the processed child alternatives + markElementEnds(processedAlts, storedLineNos); + // END KGU#1137 2024-03-19 } @Override diff --git a/src/lu/fisch/structorizer/generators/Generator.java b/src/lu/fisch/structorizer/generators/Generator.java index afdd2783..f90b3344 100644 --- a/src/lu/fisch/structorizer/generators/Generator.java +++ b/src/lu/fisch/structorizer/generators/Generator.java @@ -125,6 +125,8 @@ * Kay Gürtzig 2022-08-23 Issue #1068: Auxiliary method transformIndexLists(StringList) added * Kay Gürtzig 2023-09-28 Bugfix #1092: Sensible export of alias type definitions enabled * Kay Gürtzig 2024-03-14 Bugfix #1139: NullPointerException risk in generateCode(Try, String) + * Kay Gürtzig 2024-03-19 Issue #1148 Auxiliary methods markElementStart() and markElementEnds() + * moved up to Generator in order to facilitate IF ELSE IF chains * ****************************************************************************************************** * @@ -185,6 +187,7 @@ import java.util.Queue; import java.util.Set; import java.util.SortedMap; +import java.util.Stack; import java.util.TreeMap; import java.util.Vector; import java.util.logging.Level; @@ -3435,6 +3438,52 @@ protected void generateCode(Subqueue _subqueue, String _indent) } } + // START KGU#1135 2024-03-19: Issue #1146 Refactored to regain clarity + /** + * Marks the start of the instruction code for nested alternative {@code _alt} + * within the IF ELSIF chain for the code preview. + * + * @param _alt - nested alternative in the IF ELSIF sequence + * @param _indent - current indentation + * @param _processedAlts - stack of the marked nested Alternatives (to be modified) + * @param _storedLineNos - stack of the associated start line numbers (to be modified) + */ + protected void markElementStart(Alternative _alt, String _indent, Stack _processedAlts, + Stack _storedLineNos) { + if (codeMap != null) { + int line0 = code.count(); + codeMap.put(_alt, new int[]{line0, line0, _indent.length()}); + _processedAlts.push(_alt); + _storedLineNos.push(line0); + } + } + /** + * Marks the common end of the instruction codes of all the alternatives + * gathered in stack {@code -processedAlts}, considering the differences + * between the start line numbers held in the {@link codeMap} and in the + * stack {@code _storedLineNos}. + * + * @param _processedAlts - stack of the marked nested Alternatives (to be emptied) + * @param _storedLineNos - stack of the associated start line numbers (to be emptied) + */ + protected void markElementEnds(Stack _processedAlts, Stack _storedLineNos) { + Element ele; + assert _processedAlts.size() == _storedLineNos.size(); + if (codeMap!= null) { + while (!_processedAlts.isEmpty()) { + ele = _processedAlts.pop(); + int line0 = _storedLineNos.pop(); + int[] codeMapEntry = codeMap.get(ele); + if (codeMapEntry[0] > line0) { + // The element code was moved due to some insertions, update line0 + line0 = codeMap.get(ele)[0]; + } + codeMapEntry[1] += (code.count() - line0); + } + } + } + // END KGU#1135 2024-03-18 + /******** Public Methods *************/ /** diff --git a/src/lu/fisch/structorizer/generators/OberonGenerator.java b/src/lu/fisch/structorizer/generators/OberonGenerator.java index 1cc50298..55be29c0 100644 --- a/src/lu/fisch/structorizer/generators/OberonGenerator.java +++ b/src/lu/fisch/structorizer/generators/OberonGenerator.java @@ -96,6 +96,8 @@ * Kay Gürtzig 2023-10-04 Bugfix #1093 Undue final return 0 on function diagrams * Kay Gürtzig 2024-03-18/19 Bugfix #1146 Wrong END between THEN and ELSE on Alternative export, * missed opportunity to use ELSIF in IF chains now implemented + * Kay Gürtzig 2024-03-19 Issue #1148 Auxiliary methods markElementStart() and markElementEnds() + * moved up to Generator, reaction to disabled state improved * ****************************************************************************************************** * @@ -1002,20 +1004,19 @@ protected void generateCode(Alternative _alt, String _indent) _indent, isDisabled); generateCode(_alt.qTrue, _indent+this.getIndent()); - // START KGU#1135 2024-03-18: Issue #1146 We ought to make use of the ELSIf if possible + // START KGU#1135 2024-03-18: Issue #1146 We ought to make use of the ELSIF if possible Element ele = null; // We must cater for the code mapping of the chained sub-alternatives Stack processedAlts = new Stack(); Stack storedLineNos = new Stack(); while (_alt.qFalse.getSize() == 1 - && (ele = _alt.qFalse.getElement(0)) instanceof Alternative - && !ele.isDisabled(isDisabled)) { + && (ele = _alt.qFalse.getElement(0)) instanceof Alternative) { _alt = (Alternative)ele; // We must care for the code mapping explicitly here since we circumvent generateCode() markElementStart(_alt, _indent, processedAlts, storedLineNos); appendComment(_alt, _indent); addCode("ELSIF "+ transform(_alt.getUnbrokenText().getLongString()) + " THEN", - _indent, isDisabled); + _indent, ele.isDisabled(false)); generateCode(_alt.qTrue, _indent+this.getIndent()); } // END KGU#1135 2024-03-18 @@ -1025,7 +1026,7 @@ protected void generateCode(Alternative _alt, String _indent) // START KGU#1135 2024-03-18: Bugfix #1146 END is wrong here //addCode("END", _indent, isDisabled); // END KGU#1135 2024-03-18 - addCode("ELSE", _indent, isDisabled); + addCode("ELSE", _indent, _alt.isDisabled(false)); generateCode(_alt.qFalse, _indent+this.getIndent()); } addCode("END;", _indent, isDisabled); @@ -1034,52 +1035,6 @@ protected void generateCode(Alternative _alt, String _indent) // END KGU#1135 2024-03-18 } - // START KGU#1135 2024-03-19: Issue #1146 Refactored to regain clarity - /** - * Marks the start of the instruction code for nested alternative {@code _alt} - * within the IF ELSIF chain for the code preview. - * - * @param _alt - nested alternative in the IF ELSIF sequence - * @param _indent - current indentation - * @param _processedAlts - stack of the marked nested Alternatives (to be modified) - * @param _storedLineNos - stack of the associated start line numbers (to be modified) - */ - private void markElementStart(Alternative _alt, String _indent, Stack _processedAlts, - Stack _storedLineNos) { - if (codeMap != null) { - int line0 = code.count(); - codeMap.put(_alt, new int[]{line0, line0, _indent.length()}); - _processedAlts.push(_alt); - _storedLineNos.push(line0); - } - } - /** - * Marks the common end of the instruction codes of all the alternatives - * gathered in stack {@code -processedAlts}, considering the differences - * between the start line numbers held in the {@link codeMap} and in the - * stack {@code _storedLineNos}. - * - * @param _processedAlts - stack of the marked nested Alternatives (to be emptied) - * @param _storedLineNos - stack of the associated start line numbers (to be emptied) - */ - private void markElementEnds(Stack _processedAlts, Stack _storedLineNos) { - Element ele; - assert _processedAlts.size() == _storedLineNos.size(); - if (codeMap!= null) { - while (!_processedAlts.isEmpty()) { - ele = _processedAlts.pop(); - int line0 = _storedLineNos.pop(); - int[] codeMapEntry = codeMap.get(ele); - if (codeMapEntry[0] > line0) { - // The element code was moved due to some insertions, update line0 - line0 = codeMap.get(ele)[0]; - } - codeMapEntry[1] += (code.count() - line0); - } - } - } - // END KGU#1135 2024-03-18 - protected void generateCode(Case _case, String _indent) { boolean isDisabled = _case.isDisabled(false); diff --git a/src/lu/fisch/structorizer/generators/PHPGenerator.java b/src/lu/fisch/structorizer/generators/PHPGenerator.java index 49c33bb4..a6147cc0 100644 --- a/src/lu/fisch/structorizer/generators/PHPGenerator.java +++ b/src/lu/fisch/structorizer/generators/PHPGenerator.java @@ -80,6 +80,7 @@ * Kay Gürtzig 2023-10-13 Issue #980 Export of multi-variable declaration revised * Kay Gürtzig 2023-10-18 Bugfix #1099: Handling of constants was not correct. * Kay Gürtzig 2023-10-04 Bugfix #1093 Undue final return 0 on function diagrams + * Kay Gürtzig 2024-03-19 Issue #1148: Special indentation for "if else if" chains * ****************************************************************************************************** * @@ -140,6 +141,7 @@ import java.util.HashMap; import java.util.LinkedHashMap; +import java.util.Stack; import java.util.Map.Entry; import lu.fisch.structorizer.elements.*; @@ -730,15 +732,40 @@ protected void generateCode(Alternative _alt, String _indent) addCode("if "+condition+"", _indent, isDisabled); addCode("{", _indent, isDisabled); - generateCode(_alt.qTrue,_indent+this.getIndent()); + generateCode(_alt.qTrue, _indent + this.getIndent()); + addCode("}", _indent, isDisabled); + + // START KGU#1137 2024-03-19: Issue #1148 We ought to make use of the ELSIF if possible + Element ele = null; + // We must cater for the code mapping of the chained sub-alternatives + Stack processedAlts = new Stack(); + Stack storedLineNos = new Stack(); + while (_alt.qFalse.getSize() == 1 + && (ele = _alt.qFalse.getElement(0)) instanceof Alternative) { + _alt = (Alternative)ele; + isDisabled = _alt.isDisabled(false); + condition = transform(_alt.getUnbrokenText().getLongString()).trim(); + // We must care for the code mapping explicitly here since we circumvent generateCode() + markElementStart(_alt, _indent, processedAlts, storedLineNos); + appendComment(_alt, _indent); + addCode("else if " + condition, _indent, isDisabled); + addCode("{", _indent, isDisabled); + generateCode(_alt.qTrue, _indent + this.getIndent()); + addCode("}", _indent, isDisabled); + } + // END KGU#1137 2024-03-19 + if(_alt.qFalse.getSize()!=0) { - addCode("}", _indent, isDisabled); addCode("else", _indent, isDisabled); addCode("{", _indent, isDisabled); - generateCode(_alt.qFalse,_indent+this.getIndent()); + generateCode(_alt.qFalse, _indent + this.getIndent()); + addCode("}", _indent, isDisabled); } - addCode("}", _indent, isDisabled); + + // START KGU#1137 2024-03-19: Issue #1148 Accomplish the code map for the processed child alternatives + markElementEnds(processedAlts, storedLineNos); + // END KGU#1137 2024-03-19 } @Override diff --git a/src/lu/fisch/structorizer/generators/PerlGenerator.java b/src/lu/fisch/structorizer/generators/PerlGenerator.java index 68c5a391..2fcb3a65 100644 --- a/src/lu/fisch/structorizer/generators/PerlGenerator.java +++ b/src/lu/fisch/structorizer/generators/PerlGenerator.java @@ -86,6 +86,7 @@ * Kay Gürtzig 2021-02-03 Issue #920: Transformation for "Infinity" literal * Kay Gürtzig 2021-12-05 Bugfix #1024: Precautions against defective record initializers * Kay Gürtzig 2023-10-04 Bugfix #1093 Undue final return 0 on function diagrams + * Kay Gürtzig 2024-03-19 Issue #1148: Special indentation for "if else if" chains * ****************************************************************************************************** * @@ -98,6 +99,7 @@ ******************************************************************************************************/// import java.util.HashMap; +import java.util.Stack; import java.util.Map.Entry; import java.util.regex.Matcher; import java.util.regex.Pattern; @@ -719,22 +721,76 @@ protected void generateCode(Alternative _alt, String _indent) { boolean isDisabled = _alt.isDisabled(false); - addCode("", "", isDisabled); + addCode("", "", false); appendComment(_alt, _indent); + String condition = extractCondition(_alt, _indent); + addCode("if " + condition + " {", _indent, isDisabled); + generateCode(_alt.qTrue,_indent+this.getIndent()); + addCode("}", _indent, isDisabled); + + // START KGU#1137 2024-03-19: Issue #1148 We ought to make use of the ELSIF if possible + Element ele = null; + // We must cater for the code mapping of the chained sub-alternatives + Stack processedAlts = new Stack(); + Stack storedLineNos = new Stack(); + while (_alt.qFalse.getSize() == 1 + && (ele = _alt.qFalse.getElement(0)) instanceof Alternative) { + _alt = (Alternative)ele; + isDisabled = _alt.isDisabled(false); + // We must care for the code mapping explicitly here since we circumvent generateCode() + markElementStart(_alt, _indent, processedAlts, storedLineNos); + appendComment(_alt, _indent); + condition = extractCondition(_alt, _indent); + addCode("else if " + condition + " {", _indent, isDisabled); + generateCode(_alt.qTrue, _indent + this.getIndent()); + addCode("}", _indent, isDisabled); + } + // END KGU#1137 2024-03-19 + + if(_alt.qFalse.getSize() != 0) { + + addCode("else {", _indent, isDisabled); + generateCode(_alt.qFalse, _indent + this.getIndent()); + addCode("}", _indent, isDisabled); + + } + + addCode("", "", false); + + // START KGU#1137 2024-03-19: Issue #1148 Accomplish the code map for the processed child alternatives + markElementEnds(processedAlts, storedLineNos); + // END KGU#1137 2024-03-19 + } + + // START KGU#1137 2024-03-19: Issue #1148 Prefer IF ELSE IF chains over strict nesting + /** + * Auxiliary method to obtain the condition from the text of Element {@code _ele} + * (which is supposed to be an Alternative, While, or Repeat loop), considering FileAPI + * and encapsulation in parenthesis.
+ * ATTENTION: This method may append comments to the code if the condition refers + * to FileAPI functions or variables! + * + * @param _ele - the {@link Element} to get the condition expression from + * @param _indent - the current indentation (for the possible comment generation) + * @return - the prepared condition expression as string + */ + private String extractCondition(Element _ele, String _indent) { + boolean isDisabled = _ele.isDisabled(false); // START KGU#162 2016-04-01: Enh. #144 new restrictive export mode //code.add(_indent+"if ( "+BString.replace(transform(_alt.getText().getText()),"\n","").trim()+" ) {"); - String condition = transform(_alt.getUnbrokenText().getLongString()).trim(); + String condition = transform(_ele.getUnbrokenText().getLongString()).trim(); // START KGU#311 2017-01-04: Enh. #314 - steer the user through the File API implications if (this.usesFileAPI && !isDisabled) { if (condition.contains("fileEOF(")) { this.appendComment("TODO FileAPI: Replace the fileEOF test by something like «» in combination with «$_» for the next fileRead", _indent); } - else { + // TODO Why was this test resticted to Alternatives? Is it irrelevant/wrong for loops? + else /*if (_ele instanceof Alternative)*/ { for (int k = 0; k < this.fileVars.count(); k++) { if (condition.contains(this.fileVars.get(k))) { - this.appendComment("TODO FileAPI: Consider replacing / dropping this now inappropriate file test.", _indent); + this.appendComment("TODO FileAPI: Consider replacing / dropping this now inappropriate file test.", _indent); } } } @@ -747,21 +803,9 @@ protected void generateCode(Alternative _alt, String _indent) { { condition = "( " + condition + " )"; } - addCode("if " + condition + " {", _indent, isDisabled); - generateCode(_alt.qTrue,_indent+this.getIndent()); - - if(_alt.qFalse.getSize()!=0) { - - addCode("}", _indent, isDisabled); - addCode("else {", _indent, isDisabled); - generateCode(_alt.qFalse,_indent+this.getIndent()); - - } - - addCode("}", _indent, isDisabled); - addCode("", "", isDisabled); - + return condition; } + // END KGU#1137 2024-03-19 protected void generateCode(Case _case, String _indent) { @@ -907,23 +951,7 @@ protected void generateCode(While _while, String _indent) { addCode("", "", isDisabled); appendComment(_while, _indent); - // START KGU#162 2016-04-01: Enh. #144 new restrictive export mode - //code.add(_indent+"while ("+BString.replace(transform(_while.getText().getText()),"\n","").trim()+") {"); - String condition = transform(_while.getUnbrokenText().getLongString()).trim(); - // START KGU#311 2017-01-04: Enh. #314 - steer the user through the File API implications - if (this.usesFileAPI && !isDisabled) { - if (condition.contains("fileEOF(")) { - this.appendComment("TODO FileAPI: Replace the fileEOF test by something like «» in combination with «$_» for the next fileRead", _indent); - } - } - // END KGU#311 2017-01-04 - // START KGU#301 2016-12-01: Bugfix #301 - //if (!this.suppressTransformation || !(condition.startsWith("(") && condition.endsWith(")"))) - if (!this.suppressTransformation && !isParenthesized(condition)) - // END KGU#301 2016-12-01 - { - condition = "( " + condition + " )"; - } + String condition = extractCondition(_while, _indent); addCode("while " + condition + " {", _indent, isDisabled); // END KGU#162 2016-04-01 generateCode(_while.q, _indent+this.getIndent()); @@ -945,24 +973,8 @@ protected void generateCode(Repeat _repeat, String _indent) { appendComment(_repeat, _indent); addCode("do {", _indent, isDisabled); - generateCode(_repeat.q,_indent+this.getIndent()); - // START KGU#162 2016-04-01: Enh. #144 new restrictive export mode - //code.add(_indent+"} while (!("+BString.replace(transform(_repeat.getText().getText()),"\n","").trim()+")) {"); - String condition = transform(_repeat.getUnbrokenText().getLongString()).trim(); - // START KGU#311 2017-01-04: Enh. #314 - steer the user through the File API implications - if (this.usesFileAPI && !isDisabled) { - if (condition.contains("fileEOF(")) { - this.appendComment("TODO FileAPI: Replace the fileEOF test by something like «» in combination with «$_» for the next fileRead", _indent); - } - } - // END KGU#311 2017-01-04 - // START KGU#301 2016-12-01: Bugfix #301 - //if (!this.suppressTransformation || !(condition.startsWith("(") && condition.endsWith(")"))) - if (!this.suppressTransformation && !isParenthesized(condition)) - // END KGU#301 2016-12-01 - { - condition = "( " + condition + " )"; - } + generateCode(_repeat.q, _indent + this.getIndent()); + String condition = extractCondition(_repeat, _indent + this.getIndent()); addCode("} while (!" + condition + ");", _indent, isDisabled); // END KGU#162 2016-04-01 // START KGU#78 2015-12-17: Enh. #23 Put a trailing label if this is a jump target diff --git a/src/lu/fisch/structorizer/gui/changelog.txt b/src/lu/fisch/structorizer/gui/changelog.txt index d6458f48..2b827f26 100644 --- a/src/lu/fisch/structorizer/gui/changelog.txt +++ b/src/lu/fisch/structorizer/gui/changelog.txt @@ -25,7 +25,7 @@ Known issues (also see https://github.com/fesch/Structorizer.Desktop/issues): - ARM export is still experimental and relies on a specific and very restricted syntax for the element contents in order to produce meaningful results. -Current development version 3.32-18 (2024-03-19) +Current development version 3.32-19 (2024-03-19) - 01: Bugfix #987: Duplicate subroutine comment export by Pascal generator <2> - 01: Bugfix #988: Syntax error in Structorizer.bat and Arranger.bat fixed <2> - 01: Bugfix #989: Expressions in EXIT elements (e.g. return) were forgotten @@ -220,6 +220,8 @@ Current development version 3.32-18 (2024-03-19) - 18: Bugfix #1145 Java import crashed when source file contains two or more classes / interfaces / enumerators on top level <2> - 18: Bugfix #1146: Wrong/awkward Oberon export of Alternatives [K.-P. R.]2 +- 19: Issue #1148: Special indentation on exporting IF ELSE IF chains to C, + C++, C#, Java, Javascript, modern BASIC, Perl, PHP <2> Version 3.32 (2021-09-19) requiring Java 11 or newer - 01: Bugfix #851/2: SPECIAL-NAMES sections caused COBOL parser abort <2> From 82acb4c1e46b67ac81cbb6285a8481bcee3388d1 Mon Sep 17 00:00:00 2001 From: codemanyak Date: Tue, 19 Mar 2024 20:14:21 +0100 Subject: [PATCH 2/8] Fixes #1149 --- src/lu/fisch/structorizer/gui/Diagram.java | 4 ++++ src/lu/fisch/structorizer/gui/changelog.txt | 1 + 2 files changed, 5 insertions(+) diff --git a/src/lu/fisch/structorizer/gui/Diagram.java b/src/lu/fisch/structorizer/gui/Diagram.java index 388c0217..3c758e29 100644 --- a/src/lu/fisch/structorizer/gui/Diagram.java +++ b/src/lu/fisch/structorizer/gui/Diagram.java @@ -247,6 +247,7 @@ * Kay Gürtzig 2024-03-15 Bugfix #1140: Transmutation conditions were too strict for method calls * Kay Gürtzig 2024-03-17 Issue #1138: code import and arrangement loading now in serial mode to * allow the user to suppress Arranger collision warnings (new serial aspect) + * Kay Gürtzig 2024-03-19 Bugfix #1149: On selection change from Code Preview doButtons() was forgotten * ****************************************************************************************************** * @@ -2327,6 +2328,9 @@ public void selectElement(Element element) { } // END KGU#978 2021-06-09 } + // START KGU#1138 2024-03-19: Bugfix #1149 We must update the buttons after selection + this.doButtons(); + // END KGU#1138 2024-03-19 this.highlightCodeForElement(element, false); } } diff --git a/src/lu/fisch/structorizer/gui/changelog.txt b/src/lu/fisch/structorizer/gui/changelog.txt index 2b827f26..07924468 100644 --- a/src/lu/fisch/structorizer/gui/changelog.txt +++ b/src/lu/fisch/structorizer/gui/changelog.txt @@ -222,6 +222,7 @@ Current development version 3.32-19 (2024-03-19) - 18: Bugfix #1146: Wrong/awkward Oberon export of Alternatives [K.-P. R.]2 - 19: Issue #1148: Special indentation on exporting IF ELSE IF chains to C, C++, C#, Java, Javascript, modern BASIC, Perl, PHP <2> +- 19: Bugfix #1149: Selection in Code Preview missed to update buttons <2> Version 3.32 (2021-09-19) requiring Java 11 or newer - 01: Bugfix #851/2: SPECIAL-NAMES sections caused COBOL parser abort <2> From 1befddebbc02b226819f3db339ca36952731ae3c Mon Sep 17 00:00:00 2001 From: codemanyak Date: Wed, 20 Mar 2024 15:55:41 +0100 Subject: [PATCH 3/8] Fixes #1150 by a grammar update --- src/lu/fisch/structorizer/gui/changelog.txt | 1 + .../structorizer/parsers/JavaParser.java | 782 +++++++++--------- src/lu/fisch/structorizer/parsers/JavaSE8.egt | Bin 311626 -> 311658 bytes 3 files changed, 393 insertions(+), 390 deletions(-) diff --git a/src/lu/fisch/structorizer/gui/changelog.txt b/src/lu/fisch/structorizer/gui/changelog.txt index 07924468..426241c3 100644 --- a/src/lu/fisch/structorizer/gui/changelog.txt +++ b/src/lu/fisch/structorizer/gui/changelog.txt @@ -223,6 +223,7 @@ Current development version 3.32-19 (2024-03-19) - 19: Issue #1148: Special indentation on exporting IF ELSE IF chains to C, C++, C#, Java, Javascript, modern BASIC, Perl, PHP <2> - 19: Bugfix #1149: Selection in Code Preview missed to update buttons <2> +- 19: Bugfix #1150: Java import failed on parameterized class declarations <2> Version 3.32 (2021-09-19) requiring Java 11 or newer - 01: Bugfix #851/2: SPECIAL-NAMES sections caused COBOL parser abort <2> diff --git a/src/lu/fisch/structorizer/parsers/JavaParser.java b/src/lu/fisch/structorizer/parsers/JavaParser.java index 55697953..2b4b3b50 100644 --- a/src/lu/fisch/structorizer/parsers/JavaParser.java +++ b/src/lu/fisch/structorizer/parsers/JavaParser.java @@ -69,6 +69,7 @@ * bugfix #1142: assert statements hadn't been supported. * Kay Gürtzig 2024-03-18 Bugfix #1143: {@code } unduly required modifiers, * bugfix #1145: Crash with more than 1 class / interface on top level + * Kay Gürtzig 2024-03-20 Bugfix #1150: RuleConstants adapted to new grammar version 0.9 * ****************************************************************************************************** * @@ -565,396 +566,397 @@ private interface RuleConstants // final int PROD_TYPEPARAMETER_IDENTIFIER = 74; // ::= Identifier // final int PROD_TYPEBOUNDOPT_EXTENDS = 75; // ::= extends // final int PROD_TYPEBOUNDOPT_EXTENDS2 = 76; // ::= extends -// final int PROD_ADDITIONALBOUNDOPT_AMP = 77; // ::= '&' -// final int PROD_ADDITIONALBOUNDOPT = 78; // ::= -// final int PROD_COMPILATIONUNIT = 79; // ::= -// final int PROD_COMPILATIONUNIT2 = 80; // ::= -// final int PROD_COMPILATIONUNIT3 = 81; // ::= -// final int PROD_COMPILATIONUNIT4 = 82; // ::= -// final int PROD_COMPILATIONUNIT5 = 83; // ::= -// final int PROD_COMPILATIONUNIT6 = 84; // ::= -// final int PROD_COMPILATIONUNIT7 = 85; // ::= -// final int PROD_COMPILATIONUNIT8 = 86; // ::= -// final int PROD_IMPORTDECLARATIONS = 87; // ::= -// final int PROD_IMPORTDECLARATIONS2 = 88; // ::= -// final int PROD_TYPEDECLARATIONS = 89; // ::= -// final int PROD_TYPEDECLARATIONS2 = 90; // ::= - final int PROD_PACKAGEDECLARATION_PACKAGE_SEMI = 91; // ::= package ';' -// final int PROD_IMPORTDECLARATION = 92; // ::= -// final int PROD_IMPORTDECLARATION2 = 93; // ::= -// final int PROD_IMPORTDECLARATION3 = 94; // ::= -// final int PROD_IMPORTDECLARATION4 = 95; // ::= - final int PROD_SINGLETYPEIMPORTDECLARATION_IMPORT_SEMI = 96; // ::= import ';' - final int PROD_TYPEIMPORTONDEMANDDECLARATION_IMPORT_DOT_TIMES_SEMI = 97; // ::= import '.' '*' ';' - final int PROD_SINGLESTATICIMPORTDECLARATION_IMPORT_STATIC_SEMI = 98; // ::= import static ';' - final int PROD_STATICIMPORTONDEMANDDECLARATION_IMPORT_STATIC_DOT_TIMES_SEMI = 99; // ::= import static '.' '*' ';' -// final int PROD_TYPEDECLARATION = 100; // ::= -// final int PROD_TYPEDECLARATION2 = 101; // ::= -// final int PROD_TYPEDECLARATION_SEMI = 102; // ::= ';' -// final int PROD_MODIFIERS = 103; // ::= -// final int PROD_MODIFIERS2 = 104; // ::= -// final int PROD_MODIFIERSOPT = 105; // ::= -// final int PROD_MODIFIERSOPT2 = 106; // ::= -// final int PROD_MODIFIER_PUBLIC = 107; // ::= public -// final int PROD_MODIFIER_PROTECTED = 108; // ::= protected -// final int PROD_MODIFIER_PRIVATE = 109; // ::= private -// final int PROD_MODIFIER_STATIC = 110; // ::= static -// final int PROD_MODIFIER_ABSTRACT = 111; // ::= abstract -// final int PROD_MODIFIER_FINAL = 112; // ::= final -// final int PROD_MODIFIER_NATIVE = 113; // ::= native -// final int PROD_MODIFIER_SYNCHRONIZED = 114; // ::= synchronized -// final int PROD_MODIFIER_TRANSIENT = 115; // ::= transient -// final int PROD_MODIFIER_VOLATILE = 116; // ::= volatile -// final int PROD_MODIFIER_DEFAULT = 117; // ::= default -// final int PROD_MODIFIER_STRICTFP = 118; // ::= strictfp -// final int PROD_CLASSDECLARATION = 119; // ::= -// final int PROD_CLASSDECLARATION2 = 120; // ::= - final int PROD_NORMALCLASSDECLARATION = 121; // ::= -// final int PROD_NORMALCLASSDECLARATION2 = 122; // ::= - final int PROD_PURECLASSDECLARATION_CLASS_IDENTIFIER = 123; // ::= class Identifier - final int PROD_PURECLASSDECLARATION_CLASS_IDENTIFIER2 = 124; // ::= class Identifier - final int PROD_PURECLASSDECLARATION_CLASS_IDENTIFIER3 = 125; // ::= class Identifier - final int PROD_PURECLASSDECLARATION_CLASS_IDENTIFIER4 = 126; // ::= class Identifier -// final int PROD_TYPEPARAMETERSOPT_LT_GT = 127; // ::= '<' '>' -// final int PROD_TYPEPARAMETERSOPT = 128; // ::= -// final int PROD_TYPEPARAMETERS = 129; // ::= -// final int PROD_TYPEPARAMETERS_COMMA = 130; // ::= ',' -// final int PROD_SUPER_EXTENDS = 131; // ::= extends -// final int PROD_INTERFACES_IMPLEMENTS = 132; // ::= implements -// final int PROD_INTERFACETYPELIST = 133; // ::= -// final int PROD_INTERFACETYPELIST_COMMA = 134; // ::= ',' - final int PROD_ENUMDECLARATION_ENUM_IDENTIFIER = 135; // ::= enum Identifier - final int PROD_ENUMDECLARATION_ENUM_IDENTIFIER2 = 136; // ::= enum Identifier -// final int PROD_ENUMBODY_LBRACE_COMMA_RBRACE = 137; // ::= '{' ',' '}' -// final int PROD_ENUMBODY_LBRACE_RBRACE = 138; // ::= '{' '}' -// final int PROD_ENUMBODYDECLARATIONSOPT_SEMI = 139; // ::= ';' -// final int PROD_ENUMBODYDECLARATIONSOPT = 140; // ::= -// final int PROD_ENUMCONSTANTS = 141; // ::= - final int PROD_ENUMCONSTANTS_COMMA = 142; // ::= ',' - final int PROD_ENUMCONSTANT_IDENTIFIER_LPAREN_RPAREN = 143; // ::= Identifier '(' ')' - final int PROD_ENUMCONSTANT_IDENTIFIER = 144; // ::= Identifier -// final int PROD_CLASSBODYOPT = 145; // ::= -// final int PROD_CLASSBODYOPT2 = 146; // ::= - final int PROD_CLASSBODY_LBRACE_RBRACE = 147; // ::= '{' '}' -// final int PROD_CLASSBODY_LBRACE_RBRACE2 = 148; // ::= '{' '}' -// final int PROD_CLASSBODYDECLARATIONS = 149; // ::= - final int PROD_CLASSBODYDECLARATIONS2 = 150; // ::= -// final int PROD_CLASSBODYDECLARATION = 151; // ::= -// final int PROD_CLASSBODYDECLARATION2 = 152; // ::= -// final int PROD_CLASSBODYDECLARATION3 = 153; // ::= -// final int PROD_CLASSBODYDECLARATION4 = 154; // ::= -// final int PROD_CLASSMEMBERDECLARATION = 155; // ::= -// final int PROD_CLASSMEMBERDECLARATION2 = 156; // ::= -// final int PROD_CLASSMEMBERDECLARATION3 = 157; // ::= -// final int PROD_CLASSMEMBERDECLARATION4 = 158; // ::= -// final int PROD_CLASSMEMBERDECLARATION_SEMI = 159; // ::= ';' - final int PROD_FIELDDECLARATION_SEMI = 160; // ::= ';' - final int PROD_FIELDDECLARATION_SEMI2 = 161; // ::= ';' -// final int PROD_VARIABLEDECLARATORS = 162; // ::= - final int PROD_VARIABLEDECLARATORS_COMMA = 163; // ::= ',' -// final int PROD_VARIABLEDECLARATOR = 164; // ::= - final int PROD_VARIABLEDECLARATOR_EQ = 165; // ::= '=' -// final int PROD_VARIABLEDECLARATORID_IDENTIFIER = 166; // ::= Identifier -// final int PROD_VARIABLEDECLARATORID_IDENTIFIER2 = 167; // ::= Identifier -// final int PROD_VARIABLEINITIALIZER = 168; // ::= -// final int PROD_VARIABLEINITIALIZER2 = 169; // ::= - final int PROD_METHODDECLARATION = 170; // ::= - final int PROD_METHODHEADER = 171; // ::= - final int PROD_METHODHEADER2 = 172; // ::= -// final int PROD_METHODHEADER3 = 173; // ::= -// final int PROD_METHODHEADER4 = 174; // ::= - final int PROD_METHODHEADER_VOID = 175; // ::= void - final int PROD_METHODHEADER_VOID2 = 176; // ::= void -// final int PROD_METHODHEADER_VOID3 = 177; // ::= void -// final int PROD_METHODHEADER_VOID4 = 178; // ::= void - final int PROD_METHODDECLARATOR_IDENTIFIER_LPAREN_RPAREN = 179; // ::= Identifier '(' ')' -// final int PROD_METHODDECLARATOR_IDENTIFIER_LPAREN_RPAREN2 = 180; // ::= Identifier '(' ')' - final int PROD_METHODDECLARATOR_IDENTIFIER_LPAREN_RPAREN3 = 181; // ::= Identifier '(' ')' - final int PROD_METHODDECLARATOR_IDENTIFIER_LPAREN_RPAREN4 = 182; // ::= Identifier '(' ')' -// final int PROD_FORMALPARAMETERLIST = 183; // ::= - final int PROD_FORMALPARAMETERLIST_COMMA = 184; // ::= ',' -// final int PROD_FORMALPARAMETER = 185; // ::= - final int PROD_FORMALPARAMETER_FINAL = 186; // ::= final -// final int PROD_FORMALPARAMETER2 = 187; // ::= -// final int PROD_FORMALPARAMETER3 = 188; // ::= - final int PROD_LASTFORMALPARAMETER_ELLIPSIS = 189; // ::= Ellipsis -// final int PROD_RECEIVERPARAMETER_THIS = 190; // ::= this -// final int PROD_QUALPREFIXOPT_IDENTIFIER_DOT = 191; // ::= Identifier '.' -// final int PROD_QUALPREFIXOPT = 192; // ::= -// final int PROD_THROWS_THROWS = 193; // ::= throws -// final int PROD_CLASSTYPELIST = 194; // ::= -// final int PROD_CLASSTYPELIST_COMMA = 195; // ::= ',' -// final int PROD_METHODBODY = 196; // ::= -// final int PROD_METHODBODY_SEMI = 197; // ::= ';' -// final int PROD_INSTANCEINITIALIZER = 198; // ::= - final int PROD_STATICINITIALIZER_STATIC = 199; // ::= static - final int PROD_CONSTRUCTORDECLARATION = 200; // ::= - final int PROD_CONSTRUCTORDECLARATION2 = 201; // ::= - final int PROD_CONSTRUCTORDECLARATION3 = 202; // ::= - final int PROD_CONSTRUCTORDECLARATION4 = 203; // ::= - final int PROD_CONSTRUCTORDECLARATOR_LPAREN_RPAREN = 204; // ::= '(' ')' - final int PROD_CONSTRUCTORDECLARATOR_LPAREN_RPAREN2 = 205; // ::= '(' ')' -// final int PROD_CONSTRUCTORBODY_LBRACE_RBRACE = 206; // ::= '{' '}' -// final int PROD_CONSTRUCTORBODY_LBRACE_RBRACE2 = 207; // ::= '{' '}' -// final int PROD_CONSTRUCTORBODY_LBRACE_RBRACE3 = 208; // ::= '{' '}' -// final int PROD_CONSTRUCTORBODY_LBRACE_RBRACE4 = 209; // ::= '{' '}' - final int PROD_EXPLICITCONSTRUCTORINVOCATION_THIS_LPAREN_RPAREN_SEMI = 210; // ::= this '(' ')' ';' - final int PROD_EXPLICITCONSTRUCTORINVOCATION_THIS_LPAREN_RPAREN_SEMI2 = 211; // ::= this '(' ')' ';' - final int PROD_EXPLICITCONSTRUCTORINVOCATION_SUPER_LPAREN_RPAREN_SEMI = 212; // ::= super '(' ')' ';' - final int PROD_EXPLICITCONSTRUCTORINVOCATION_SUPER_LPAREN_RPAREN_SEMI2 = 213; // ::= super '(' ')' ';' - final int PROD_INTERFACEDECLARATION_INTERFACE_IDENTIFIER = 214; // ::= interface Identifier - final int PROD_INTERFACEDECLARATION_INTERFACE_IDENTIFIER2 = 215; // ::= interface Identifier - final int PROD_INTERFACEDECLARATION_INTERFACE_IDENTIFIER3 = 216; // ::= interface Identifier - final int PROD_INTERFACEDECLARATION_INTERFACE_IDENTIFIER4 = 217; // ::= interface Identifier -// final int PROD_EXTENDSINTERFACES_EXTENDS = 218; // ::= extends -// final int PROD_EXTENDSINTERFACES_COMMA = 219; // ::= ',' -// final int PROD_INTERFACEBODY_LBRACE_RBRACE = 220; // ::= '{' '}' -// final int PROD_INTERFACEBODY_LBRACE_RBRACE2 = 221; // ::= '{' '}' -// final int PROD_INTERFACEMEMBERDECLARATIONS = 222; // ::= -// final int PROD_INTERFACEMEMBERDECLARATIONS2 = 223; // ::= -// final int PROD_INTERFACEMEMBERDECLARATION = 224; // ::= -// final int PROD_INTERFACEMEMBERDECLARATION2 = 225; // ::= -// final int PROD_INTERFACEMEMBERDECLARATION3 = 226; // ::= -// final int PROD_INTERFACEMEMBERDECLARATION4 = 227; // ::= -// final int PROD_CONSTANTDECLARATION = 228; // ::= -// final int PROD_ARRAYINITIALIZER_LBRACE_COMMA_RBRACE = 229; // ::= '{' ',' '}' - final int PROD_ARRAYINITIALIZER_LBRACE_RBRACE = 230; // ::= '{' '}' -// final int PROD_ARRAYINITIALIZER_LBRACE_COMMA_RBRACE2 = 231; // ::= '{' ',' '}' -// final int PROD_ARRAYINITIALIZER_LBRACE_RBRACE2 = 232; // ::= '{' '}' -// final int PROD_VARIABLEINITIALIZERS = 233; // ::= - final int PROD_VARIABLEINITIALIZERS_COMMA = 234; // ::= ',' -// final int PROD_BLOCK_LBRACE_RBRACE = 235; // ::= '{' '}' -// final int PROD_BLOCK_LBRACE_RBRACE2 = 236; // ::= '{' '}' -// final int PROD_BLOCKSTATEMENTS = 237; // ::= - final int PROD_BLOCKSTATEMENTS2 = 238; // ::= -// final int PROD_BLOCKSTATEMENT = 239; // ::= -// final int PROD_BLOCKSTATEMENT2 = 240; // ::= -// final int PROD_BLOCKSTATEMENT3 = 241; // ::= -// final int PROD_LOCALVARIABLEDECLARATIONSTATEMENT_SEMI = 242; // ::= ';' - final int PROD_LOCALVARIABLEDECLARATION_FINAL = 243; // ::= final - final int PROD_LOCALVARIABLEDECLARATION = 244; // ::= - final int PROD_LOCALCLASSDECLARATION = 245; // ::= -// final int PROD_LOCALCLASSDECLARATION2 = 246; // ::= -// final int PROD_LOCALCLASSMODIFIERS_ABSTRACT = 247; // ::= abstract -// final int PROD_LOCALCLASSMODIFIERS_FINAL = 248; // ::= final -// final int PROD_STATEMENT = 249; // ::= -// final int PROD_STATEMENT2 = 250; // ::= -// final int PROD_STATEMENT3 = 251; // ::= -// final int PROD_STATEMENT4 = 252; // ::= -// final int PROD_STATEMENT5 = 253; // ::= -// final int PROD_STATEMENT6 = 254; // ::= -// final int PROD_STATEMENTNOSHORTIF = 255; // ::= -// final int PROD_STATEMENTNOSHORTIF2 = 256; // ::= -// final int PROD_STATEMENTNOSHORTIF3 = 257; // ::= -// final int PROD_STATEMENTNOSHORTIF4 = 258; // ::= -// final int PROD_STATEMENTNOSHORTIF5 = 259; // ::= -// final int PROD_STATEMENTWITHOUTTRAILINGSUBSTATEMENT = 260; // ::= -// final int PROD_STATEMENTWITHOUTTRAILINGSUBSTATEMENT2 = 261; // ::= -// final int PROD_STATEMENTWITHOUTTRAILINGSUBSTATEMENT3 = 262; // ::= -// final int PROD_STATEMENTWITHOUTTRAILINGSUBSTATEMENT4 = 263; // ::= -// final int PROD_STATEMENTWITHOUTTRAILINGSUBSTATEMENT5 = 264; // ::= -// final int PROD_STATEMENTWITHOUTTRAILINGSUBSTATEMENT6 = 265; // ::= -// final int PROD_STATEMENTWITHOUTTRAILINGSUBSTATEMENT7 = 266; // ::= -// final int PROD_STATEMENTWITHOUTTRAILINGSUBSTATEMENT8 = 267; // ::= -// final int PROD_STATEMENTWITHOUTTRAILINGSUBSTATEMENT9 = 268; // ::= -// final int PROD_STATEMENTWITHOUTTRAILINGSUBSTATEMENT10 = 269; // ::= -// final int PROD_STATEMENTWITHOUTTRAILINGSUBSTATEMENT11 = 270; // ::= -// final int PROD_STATEMENTWITHOUTTRAILINGSUBSTATEMENT12 = 271; // ::= -// final int PROD_EMPTYSTATEMENT_SEMI = 272; // ::= ';' - final int PROD_LABELEDSTATEMENT_IDENTIFIER_COLON = 273; // ::= Identifier ':' - final int PROD_LABELEDSTATEMENTNOSHORTIF_IDENTIFIER_COLON = 274; // ::= Identifier ':' - final int PROD_EXPRESSIONSTATEMENT_SEMI = 275; // ::= ';' -// final int PROD_STATEMENTEXPRESSION = 276; // ::= -// final int PROD_STATEMENTEXPRESSION2 = 277; // ::= -// final int PROD_STATEMENTEXPRESSION3 = 278; // ::= -// final int PROD_STATEMENTEXPRESSION4 = 279; // ::= -// final int PROD_STATEMENTEXPRESSION5 = 280; // ::= -// final int PROD_STATEMENTEXPRESSION6 = 281; // ::= -// final int PROD_STATEMENTEXPRESSION7 = 282; // ::= - final int PROD_IFTHENSTATEMENT_IF_LPAREN_RPAREN = 283; // ::= if '(' ')' - final int PROD_IFTHENELSESTATEMENT_IF_LPAREN_RPAREN_ELSE = 284; // ::= if '(' ')' else - final int PROD_IFTHENELSESTATEMENTNOSHORTIF_IF_LPAREN_RPAREN_ELSE = 285; // ::= if '(' ')' else - final int PROD_SWITCHSTATEMENT_SWITCH_LPAREN_RPAREN = 286; // ::= switch '(' ')' - final int PROD_SWITCHBLOCK_LBRACE_RBRACE = 287; // ::= '{' '}' -// final int PROD_SWITCHBLOCK_LBRACE_RBRACE2 = 288; // ::= '{' '}' - final int PROD_SWITCHBLOCK_LBRACE_RBRACE3 = 289; // ::= '{' '}' - final int PROD_SWITCHBLOCK_LBRACE_RBRACE4 = 290; // ::= '{' '}' -// final int PROD_SWITCHBLOCKSTATEMENTGROUPS = 291; // ::= - final int PROD_SWITCHBLOCKSTATEMENTGROUPS2 = 292; // ::= -// final int PROD_SWITCHBLOCKSTATEMENTGROUP = 293; // ::= -// final int PROD_SWITCHLABELS = 294; // ::= - final int PROD_SWITCHLABELS2 = 295; // ::= -// final int PROD_SWITCHLABEL_CASE_COLON = 296; // ::= case ':' - final int PROD_SWITCHLABEL_DEFAULT_COLON = 297; // ::= default ':' - final int PROD_WHILESTATEMENT_WHILE_LPAREN_RPAREN = 298; // ::= while '(' ')' - final int PROD_WHILESTATEMENTNOSHORTIF_WHILE_LPAREN_RPAREN = 299; // ::= while '(' ')' - final int PROD_DOSTATEMENT_DO_WHILE_LPAREN_RPAREN_SEMI = 300; // ::= do while '(' ')' ';' -// final int PROD_FORSTATEMENT = 301; // ::= -// final int PROD_FORSTATEMENT2 = 302; // ::= - final int PROD_BASICFORSTATEMENT_FOR_LPAREN_SEMI_SEMI_RPAREN = 303; // ::= for '(' ';' ';' ')' -// final int PROD_EXPRESSIONOPT = 304; // ::= -// final int PROD_EXPRESSIONOPT2 = 305; // ::= -// final int PROD_FORSTATEMENTNOSHORTIF = 306; // ::= -// final int PROD_FORSTATEMENTNOSHORTIF2 = 307; // ::= - final int PROD_BASICFORSTATEMENTNOSHORTIF_FOR_LPAREN_SEMI_SEMI_RPAREN = 308; // ::= for '(' ';' ';' ')' -// final int PROD_FORINITOPT = 309; // ::= -// final int PROD_FORINITOPT2 = 310; // ::= -// final int PROD_FORINITOPT3 = 311; // ::= -// final int PROD_FORUPDATEOPT = 312; // ::= -// final int PROD_FORUPDATEOPT2 = 313; // ::= - final int PROD_ENHANCEDFORSTATEMENT_FOR_LPAREN_FINAL_COLON_RPAREN = 314; // ::= for '(' final ':' ')' - final int PROD_ENHANCEDFORSTATEMENT_FOR_LPAREN_COLON_RPAREN = 315; // ::= for '(' ':' ')' - final int PROD_ENHANCEDFORSTATEMENTNOSHORTIF_FOR_LPAREN_FINAL_COLON_RPAREN = 316; // ::= for '(' final ':' ')' - final int PROD_ENHANCEDFORSTATEMENTNOSHORTIF_FOR_LPAREN_COLON_RPAREN = 317; // ::= for '(' ':' ')' -// final int PROD_STATEMENTEXPRESSIONLIST = 318; // ::= -// final int PROD_STATEMENTEXPRESSIONLIST_COMMA = 319; // ::= ',' - final int PROD_BREAKSTATEMENT_BREAK_IDENTIFIER_SEMI = 320; // ::= break Identifier ';' - final int PROD_BREAKSTATEMENT_BREAK_SEMI = 321; // ::= break ';' - final int PROD_CONTINUESTATEMENT_CONTINUE_IDENTIFIER_SEMI = 322; // ::= continue Identifier ';' - final int PROD_CONTINUESTATEMENT_CONTINUE_SEMI = 323; // ::= continue ';' - final int PROD_RETURNSTATEMENT_RETURN_SEMI = 324; // ::= return ';' - final int PROD_RETURNSTATEMENT_RETURN_SEMI2 = 325; // ::= return ';' - final int PROD_THROWSTATEMENT_THROW_SEMI = 326; // ::= throw ';' - final int PROD_SYNCHRONIZEDSTATEMENT_SYNCHRONIZED_LPAREN_RPAREN = 327; // ::= synchronized '(' ')' - final int PROD_TRYSTATEMENT_TRY = 328; // ::= try - final int PROD_TRYSTATEMENT_TRY2 = 329; // ::= try - final int PROD_TRYSTATEMENT_TRY3 = 330; // ::= try - final int PROD_TRYSTATEMENT_TRY4 = 331; // ::= try - final int PROD_TRYSTATEMENT_TRY5 = 332; // ::= try - final int PROD_TRYSTATEMENT_TRY6 = 333; // ::= try - final int PROD_TRYSTATEMENT_TRY7 = 334; // ::= try -// final int PROD_CATCHES = 335; // ::= - final int PROD_CATCHES2 = 336; // ::= -// final int PROD_CATCHCLAUSE_CATCH_LPAREN_RPAREN = 337; // ::= catch '(' ')' - final int PROD_CATCHFORMALPARAMETER_FINAL = 338; // ::= final -// final int PROD_CATCHFORMALPARAMETER = 339; // ::= -// final int PROD_CATCHTYPE = 340; // ::= - final int PROD_CATCHTYPE_PIPE = 341; // ::= '|' -// final int PROD_FINALLY_FINALLY = 342; // ::= finally - final int PROD_ASSERTSTATEMENT_ASSERT = 343; // ::= assert -// final int PROD_ASSERTMESSAGEOPT_COLON = 344; // ::= ':' -// final int PROD_ASSERTMESSAGEOPT = 345; // ::= -// final int PROD_RESOURCESPECIFICATION_LPAREN_RPAREN = 346; // ::= '(' ')' -// final int PROD_RESOURCESPECIFICATION_LPAREN_SEMI_RPAREN = 347; // ::= '(' ';' ')' -// final int PROD_RESOURCES = 348; // ::= - final int PROD_RESOURCES_SEMI = 349; // ::= ';' -// final int PROD_RESOURCE_EQ = 350; // ::= '=' - final int PROD_RESOURCE_FINAL_EQ = 351; // ::= final '=' -// final int PROD_PRIMARY = 352; // ::= -// final int PROD_PRIMARY2 = 353; // ::= -// final int PROD_PRIMARYNONEWARRAY = 354; // ::= -// final int PROD_PRIMARYNONEWARRAY_THIS = 355; // ::= this - final int PROD_PRIMARYNONEWARRAY_LPAREN_RPAREN = 356; // ::= '(' ')' -// final int PROD_PRIMARYNONEWARRAY2 = 357; // ::= -// final int PROD_PRIMARYNONEWARRAY3 = 358; // ::= -// final int PROD_PRIMARYNONEWARRAY4 = 359; // ::= -// final int PROD_PRIMARYNONEWARRAY5 = 360; // ::= -// final int PROD_PRIMARYNONEWARRAY6 = 361; // ::= - final int PROD_CLASSINSTANCECREATIONEXPRESSION_NEW_LPAREN_RPAREN = 362; // ::= new '(' ')' - final int PROD_CLASSINSTANCECREATIONEXPRESSION_NEW_LPAREN_RPAREN2 = 363; // ::= new '(' ')' - final int PROD_CLASSINSTANCECREATIONEXPRESSION_NEW_LPAREN_RPAREN3 = 364; // ::= new '(' ')' - final int PROD_CLASSINSTANCECREATIONEXPRESSION_NEW_LPAREN_RPAREN4 = 365; // ::= new '(' ')' -// final int PROD_ARGUMENTLIST = 366; // ::= - final int PROD_ARGUMENTLIST_COMMA = 367; // ::= ',' - final int PROD_ARRAYCREATIONEXPRESSION_NEW = 368; // ::= new - final int PROD_ARRAYCREATIONEXPRESSION_NEW2 = 369; // ::= new - final int PROD_ARRAYCREATIONEXPRESSION_NEW3 = 370; // ::= new - final int PROD_ARRAYCREATIONEXPRESSION_NEW4 = 371; // ::= new - final int PROD_ARRAYCREATIONEXPRESSION_NEW5 = 372; // ::= new - final int PROD_ARRAYCREATIONEXPRESSION_NEW6 = 373; // ::= new -// final int PROD_DIMEXPRS = 374; // ::= -// final int PROD_DIMEXPRS2 = 375; // ::= -// final int PROD_DIMEXPR_LBRACKET_RBRACKET = 376; // ::= '[' ']' -// final int PROD_DIMS_LBRACKET_RBRACKET = 377; // ::= '[' ']' -// final int PROD_DIMS_LBRACKET_RBRACKET2 = 378; // ::= '[' ']' - final int PROD_FIELDACCESS_DOT_IDENTIFIER = 379; // ::= '.' Identifier - final int PROD_FIELDACCESS_SUPER_DOT_IDENTIFIER = 380; // ::= super '.' Identifier - final int PROD_METHODINVOCATION_LPAREN_RPAREN = 381; // ::= '(' ')' - final int PROD_METHODINVOCATION_LPAREN_RPAREN2 = 382; // ::= '(' ')' - final int PROD_METHODINVOCATION_DOT_IDENTIFIER_LPAREN_RPAREN = 383; // ::= '.' Identifier '(' ')' - final int PROD_METHODINVOCATION_DOT_IDENTIFIER_LPAREN_RPAREN2 = 384; // ::= '.' Identifier '(' ')' - final int PROD_METHODINVOCATION_SUPER_DOT_IDENTIFIER_LPAREN_RPAREN = 385; // ::= super '.' Identifier '(' ')' - final int PROD_METHODINVOCATION_SUPER_DOT_IDENTIFIER_LPAREN_RPAREN2 = 386; // ::= super '.' Identifier '(' ')' - final int PROD_PROCESSINGTYPECONVERSION_INT_LPAREN_RPAREN = 387; // ::= int '(' ')' - final int PROD_PROCESSINGTYPECONVERSION_BYTE_LPAREN_RPAREN = 388; // ::= byte '(' ')' - final int PROD_PROCESSINGTYPECONVERSION_CHAR_LPAREN_RPAREN = 389; // ::= char '(' ')' - final int PROD_PROCESSINGTYPECONVERSION_FLOAT_LPAREN_RPAREN = 390; // ::= float '(' ')' - final int PROD_PROCESSINGTYPECONVERSION_BOOLEAN_LPAREN_RPAREN = 391; // ::= boolean '(' ')' - final int PROD_ARRAYACCESS_LBRACKET_RBRACKET = 392; // ::= '[' ']' - final int PROD_ARRAYACCESS_LBRACKET_RBRACKET2 = 393; // ::= '[' ']' -// final int PROD_POSTFIXEXPRESSION = 394; // ::= -// final int PROD_POSTFIXEXPRESSION2 = 395; // ::= -// final int PROD_POSTFIXEXPRESSION3 = 396; // ::= -// final int PROD_POSTFIXEXPRESSION4 = 397; // ::= - final int PROD_POSTINCREMENTEXPRESSION_PLUSPLUS = 398; // ::= '++' - final int PROD_POSTDECREMENTEXPRESSION_MINUSMINUS = 399; // ::= '--' -// final int PROD_UNARYEXPRESSION = 400; // ::= -// final int PROD_UNARYEXPRESSION2 = 401; // ::= - final int PROD_UNARYEXPRESSION_PLUS = 402; // ::= '+' - final int PROD_UNARYEXPRESSION_MINUS = 403; // ::= '-' -// final int PROD_UNARYEXPRESSION3 = 404; // ::= - final int PROD_PREINCREMENTEXPRESSION_PLUSPLUS = 405; // ::= '++' - final int PROD_PREDECREMENTEXPRESSION_MINUSMINUS = 406; // ::= '--' -// final int PROD_UNARYEXPRESSIONNOTPLUSMINUS = 407; // ::= - final int PROD_UNARYEXPRESSIONNOTPLUSMINUS_TILDE = 408; // ::= '~' - final int PROD_UNARYEXPRESSIONNOTPLUSMINUS_EXCLAM = 409; // ::= '!' -// final int PROD_UNARYEXPRESSIONNOTPLUSMINUS2 = 410; // ::= - final int PROD_CASTEXPRESSION_LPAREN_RPAREN = 411; // ::= '(' ')' - final int PROD_CASTEXPRESSION_LPAREN_RPAREN2 = 412; // ::= '(' ')' - final int PROD_CASTEXPRESSION_LPAREN_RPAREN3 = 413; // ::= '(' ')' - final int PROD_CASTEXPRESSION_LPAREN_RPAREN4 = 414; // ::= '(' ')' -// final int PROD_MULTIPLICATIVEEXPRESSION = 415; // ::= - final int PROD_MULTIPLICATIVEEXPRESSION_TIMES = 416; // ::= '*' - final int PROD_MULTIPLICATIVEEXPRESSION_DIV = 417; // ::= '/' - final int PROD_MULTIPLICATIVEEXPRESSION_PERCENT = 418; // ::= '%' -// final int PROD_ADDITIVEEXPRESSION = 419; // ::= - final int PROD_ADDITIVEEXPRESSION_PLUS = 420; // ::= '+' - final int PROD_ADDITIVEEXPRESSION_MINUS = 421; // ::= '-' -// final int PROD_SHIFTEXPRESSION = 422; // ::= - final int PROD_SHIFTEXPRESSION_LTLT = 423; // ::= '<<' - final int PROD_SHIFTEXPRESSION_GTGT = 424; // ::= '>>' - final int PROD_SHIFTEXPRESSION_GTGTGT = 425; // ::= '>>>' -// final int PROD_RELATIONALEXPRESSION = 426; // ::= - final int PROD_RELATIONALEXPRESSION_LT = 427; // ::= '<' - final int PROD_RELATIONALEXPRESSION_GT = 428; // ::= '>' - final int PROD_RELATIONALEXPRESSION_LTEQ = 429; // ::= '<=' - final int PROD_RELATIONALEXPRESSION_GTEQ = 430; // ::= '>=' - final int PROD_RELATIONALEXPRESSION_INSTANCEOF = 431; // ::= instanceof -// final int PROD_EQUALITYEXPRESSION = 432; // ::= - final int PROD_EQUALITYEXPRESSION_EQEQ = 433; // ::= '==' - final int PROD_EQUALITYEXPRESSION_EXCLAMEQ = 434; // ::= '!=' -// final int PROD_ANDEXPRESSION = 435; // ::= - final int PROD_ANDEXPRESSION_AMP = 436; // ::= '&' -// final int PROD_EXCLUSIVEOREXPRESSION = 437; // ::= - final int PROD_EXCLUSIVEOREXPRESSION_CARET = 438; // ::= '^' -// final int PROD_INCLUSIVEOREXPRESSION = 439; // ::= - final int PROD_INCLUSIVEOREXPRESSION_PIPE = 440; // ::= '|' -// final int PROD_CONDITIONALANDEXPRESSION = 441; // ::= - final int PROD_CONDITIONALANDEXPRESSION_AMPAMP = 442; // ::= '&&' -// final int PROD_CONDITIONALOREXPRESSION = 443; // ::= - final int PROD_CONDITIONALOREXPRESSION_PIPEPIPE = 444; // ::= '||' -// final int PROD_CONDITIONALEXPRESSION = 445; // ::= - final int PROD_CONDITIONALEXPRESSION_QUESTION_COLON = 446; // ::= '?' ':' -// final int PROD_ASSIGNMENTEXPRESSION = 447; // ::= -// final int PROD_ASSIGNMENTEXPRESSION2 = 448; // ::= - final int PROD_ASSIGNMENT = 449; // ::= -// final int PROD_LEFTHANDSIDE = 450; // ::= -// final int PROD_LEFTHANDSIDE2 = 451; // ::= -// final int PROD_LEFTHANDSIDE3 = 452; // ::= - final int PROD_ASSIGNMENTOPERATOR_EQ = 453; // ::= '=' -// final int PROD_ASSIGNMENTOPERATOR_TIMESEQ = 454; // ::= '*=' -// final int PROD_ASSIGNMENTOPERATOR_DIVEQ = 455; // ::= '/=' -// final int PROD_ASSIGNMENTOPERATOR_PERCENTEQ = 456; // ::= '%=' - final int PROD_ASSIGNMENTOPERATOR_PLUSEQ = 457; // ::= '+=' - final int PROD_ASSIGNMENTOPERATOR_MINUSEQ = 458; // ::= '-=' -// final int PROD_ASSIGNMENTOPERATOR_LTLTEQ = 459; // ::= '<<=' -// final int PROD_ASSIGNMENTOPERATOR_GTGTEQ = 460; // ::= '>>=' -// final int PROD_ASSIGNMENTOPERATOR_GTGTGTEQ = 461; // ::= '>>>=' -// final int PROD_ASSIGNMENTOPERATOR_AMPEQ = 462; // ::= '&=' -// final int PROD_ASSIGNMENTOPERATOR_CARETEQ = 463; // ::= '^=' -// final int PROD_ASSIGNMENTOPERATOR_PIPEEQ = 464; // ::= '|=' -// final int PROD_EXPRESSION = 465; // ::= -// final int PROD_CONSTANTEXPRESSION = 466; // ::= +// final int PROD_TYPEBOUNDOPT = 77; // ::= +// final int PROD_ADDITIONALBOUNDOPT_AMP = 78; // ::= '&' +// final int PROD_ADDITIONALBOUNDOPT = 79; // ::= +// final int PROD_COMPILATIONUNIT = 80; // ::= +// final int PROD_COMPILATIONUNIT2 = 81; // ::= +// final int PROD_COMPILATIONUNIT3 = 82; // ::= +// final int PROD_COMPILATIONUNIT4 = 83; // ::= +// final int PROD_COMPILATIONUNIT5 = 84; // ::= +// final int PROD_COMPILATIONUNIT6 = 85; // ::= +// final int PROD_COMPILATIONUNIT7 = 86; // ::= +// final int PROD_COMPILATIONUNIT8 = 87; // ::= +// final int PROD_IMPORTDECLARATIONS = 88; // ::= +// final int PROD_IMPORTDECLARATIONS2 = 89; // ::= +// final int PROD_TYPEDECLARATIONS = 90; // ::= +// final int PROD_TYPEDECLARATIONS2 = 91; // ::= + final int PROD_PACKAGEDECLARATION_PACKAGE_SEMI = 92; // ::= package ';' +// final int PROD_IMPORTDECLARATION = 93; // ::= +// final int PROD_IMPORTDECLARATION2 = 94; // ::= +// final int PROD_IMPORTDECLARATION3 = 95; // ::= +// final int PROD_IMPORTDECLARATION4 = 96; // ::= + final int PROD_SINGLETYPEIMPORTDECLARATION_IMPORT_SEMI = 97; // ::= import ';' + final int PROD_TYPEIMPORTONDEMANDDECLARATION_IMPORT_DOT_TIMES_SEMI = 98; // ::= import '.' '*' ';' + final int PROD_SINGLESTATICIMPORTDECLARATION_IMPORT_STATIC_SEMI = 99; // ::= import static ';' + final int PROD_STATICIMPORTONDEMANDDECLARATION_IMPORT_STATIC_DOT_TIMES_SEMI = 100; // ::= import static '.' '*' ';' +// final int PROD_TYPEDECLARATION = 101; // ::= +// final int PROD_TYPEDECLARATION2 = 102; // ::= +// final int PROD_TYPEDECLARATION_SEMI = 103; // ::= ';' +// final int PROD_MODIFIERS = 104; // ::= +// final int PROD_MODIFIERS2 = 105; // ::= +// final int PROD_MODIFIERSOPT = 106; // ::= +// final int PROD_MODIFIERSOPT2 = 107; // ::= +// final int PROD_MODIFIER_PUBLIC = 108; // ::= public +// final int PROD_MODIFIER_PROTECTED = 109; // ::= protected +// final int PROD_MODIFIER_PRIVATE = 110; // ::= private +// final int PROD_MODIFIER_STATIC = 111; // ::= static +// final int PROD_MODIFIER_ABSTRACT = 112; // ::= abstract +// final int PROD_MODIFIER_FINAL = 113; // ::= final +// final int PROD_MODIFIER_NATIVE = 114; // ::= native +// final int PROD_MODIFIER_SYNCHRONIZED = 115; // ::= synchronized +// final int PROD_MODIFIER_TRANSIENT = 116; // ::= transient +// final int PROD_MODIFIER_VOLATILE = 117; // ::= volatile +// final int PROD_MODIFIER_DEFAULT = 118; // ::= default +// final int PROD_MODIFIER_STRICTFP = 119; // ::= strictfp +// final int PROD_CLASSDECLARATION = 120; // ::= +// final int PROD_CLASSDECLARATION2 = 121; // ::= + final int PROD_NORMALCLASSDECLARATION = 122; // ::= +// final int PROD_NORMALCLASSDECLARATION2 = 123; // ::= + final int PROD_PURECLASSDECLARATION_CLASS_IDENTIFIER = 124; // ::= class Identifier + final int PROD_PURECLASSDECLARATION_CLASS_IDENTIFIER2 = 125; // ::= class Identifier + final int PROD_PURECLASSDECLARATION_CLASS_IDENTIFIER3 = 126; // ::= class Identifier + final int PROD_PURECLASSDECLARATION_CLASS_IDENTIFIER4 = 127; // ::= class Identifier +// final int PROD_TYPEPARAMETERSOPT_LT_GT = 128; // ::= '<' '>' +// final int PROD_TYPEPARAMETERSOPT = 129; // ::= +// final int PROD_TYPEPARAMETERS = 130; // ::= +// final int PROD_TYPEPARAMETERS_COMMA = 131; // ::= ',' +// final int PROD_SUPER_EXTENDS = 132; // ::= extends +// final int PROD_INTERFACES_IMPLEMENTS = 133; // ::= implements +// final int PROD_INTERFACETYPELIST = 134; // ::= +// final int PROD_INTERFACETYPELIST_COMMA = 135; // ::= ',' + final int PROD_ENUMDECLARATION_ENUM_IDENTIFIER = 136; // ::= enum Identifier + final int PROD_ENUMDECLARATION_ENUM_IDENTIFIER2 = 137; // ::= enum Identifier +// final int PROD_ENUMBODY_LBRACE_COMMA_RBRACE = 138; // ::= '{' ',' '}' +// final int PROD_ENUMBODY_LBRACE_RBRACE = 139; // ::= '{' '}' +// final int PROD_ENUMBODYDECLARATIONSOPT_SEMI = 140; // ::= ';' +// final int PROD_ENUMBODYDECLARATIONSOPT = 141; // ::= +// final int PROD_ENUMCONSTANTS = 142; // ::= + final int PROD_ENUMCONSTANTS_COMMA = 143; // ::= ',' + final int PROD_ENUMCONSTANT_IDENTIFIER_LPAREN_RPAREN = 144; // ::= Identifier '(' ')' + final int PROD_ENUMCONSTANT_IDENTIFIER = 145; // ::= Identifier +// final int PROD_CLASSBODYOPT = 146; // ::= +// final int PROD_CLASSBODYOPT2 = 147; // ::= + final int PROD_CLASSBODY_LBRACE_RBRACE = 148; // ::= '{' '}' +// final int PROD_CLASSBODY_LBRACE_RBRACE2 = 149; // ::= '{' '}' +// final int PROD_CLASSBODYDECLARATIONS = 150; // ::= + final int PROD_CLASSBODYDECLARATIONS2 = 151; // ::= +// final int PROD_CLASSBODYDECLARATION = 152; // ::= +// final int PROD_CLASSBODYDECLARATION2 = 153; // ::= +// final int PROD_CLASSBODYDECLARATION3 = 154; // ::= +// final int PROD_CLASSBODYDECLARATION4 = 155; // ::= +// final int PROD_CLASSMEMBERDECLARATION = 156; // ::= +// final int PROD_CLASSMEMBERDECLARATION2 = 157; // ::= +// final int PROD_CLASSMEMBERDECLARATION3 = 158; // ::= +// final int PROD_CLASSMEMBERDECLARATION4 = 159; // ::= +// final int PROD_CLASSMEMBERDECLARATION_SEMI = 160; // ::= ';' + final int PROD_FIELDDECLARATION_SEMI = 161; // ::= ';' + final int PROD_FIELDDECLARATION_SEMI2 = 162; // ::= ';' +// final int PROD_VARIABLEDECLARATORS = 163; // ::= + final int PROD_VARIABLEDECLARATORS_COMMA = 164; // ::= ',' +// final int PROD_VARIABLEDECLARATOR = 165; // ::= + final int PROD_VARIABLEDECLARATOR_EQ = 166; // ::= '=' +// final int PROD_VARIABLEDECLARATORID_IDENTIFIER = 167; // ::= Identifier +// final int PROD_VARIABLEDECLARATORID_IDENTIFIER2 = 168; // ::= Identifier +// final int PROD_VARIABLEINITIALIZER = 169; // ::= +// final int PROD_VARIABLEINITIALIZER2 = 170; // ::= + final int PROD_METHODDECLARATION = 171; // ::= + final int PROD_METHODHEADER = 172; // ::= + final int PROD_METHODHEADER2 = 173; // ::= +// final int PROD_METHODHEADER3 = 174; // ::= +// final int PROD_METHODHEADER4 = 175; // ::= + final int PROD_METHODHEADER_VOID = 176; // ::= void + final int PROD_METHODHEADER_VOID2 = 177; // ::= void +// final int PROD_METHODHEADER_VOID3 = 178; // ::= void +// final int PROD_METHODHEADER_VOID4 = 179; // ::= void + final int PROD_METHODDECLARATOR_IDENTIFIER_LPAREN_RPAREN = 180; // ::= Identifier '(' ')' +// final int PROD_METHODDECLARATOR_IDENTIFIER_LPAREN_RPAREN2 = 181; // ::= Identifier '(' ')' + final int PROD_METHODDECLARATOR_IDENTIFIER_LPAREN_RPAREN3 = 182; // ::= Identifier '(' ')' + final int PROD_METHODDECLARATOR_IDENTIFIER_LPAREN_RPAREN4 = 183; // ::= Identifier '(' ')' +// final int PROD_FORMALPARAMETERLIST = 184; // ::= + final int PROD_FORMALPARAMETERLIST_COMMA = 185; // ::= ',' +// final int PROD_FORMALPARAMETER = 186; // ::= + final int PROD_FORMALPARAMETER_FINAL = 187; // ::= final +// final int PROD_FORMALPARAMETER2 = 188; // ::= +// final int PROD_FORMALPARAMETER3 = 189; // ::= + final int PROD_LASTFORMALPARAMETER_ELLIPSIS = 190; // ::= Ellipsis +// final int PROD_RECEIVERPARAMETER_THIS = 191; // ::= this +// final int PROD_QUALPREFIXOPT_IDENTIFIER_DOT = 192; // ::= Identifier '.' +// final int PROD_QUALPREFIXOPT = 193; // ::= +// final int PROD_THROWS_THROWS = 194; // ::= throws +// final int PROD_CLASSTYPELIST = 195; // ::= +// final int PROD_CLASSTYPELIST_COMMA = 196; // ::= ',' +// final int PROD_METHODBODY = 197; // ::= +// final int PROD_METHODBODY_SEMI = 198; // ::= ';' +// final int PROD_INSTANCEINITIALIZER = 199; // ::= + final int PROD_STATICINITIALIZER_STATIC = 200; // ::= static + final int PROD_CONSTRUCTORDECLARATION = 201; // ::= + final int PROD_CONSTRUCTORDECLARATION2 = 202; // ::= + final int PROD_CONSTRUCTORDECLARATION3 = 203; // ::= + final int PROD_CONSTRUCTORDECLARATION4 = 204; // ::= + final int PROD_CONSTRUCTORDECLARATOR_LPAREN_RPAREN = 205; // ::= '(' ')' + final int PROD_CONSTRUCTORDECLARATOR_LPAREN_RPAREN2 = 206; // ::= '(' ')' +// final int PROD_CONSTRUCTORBODY_LBRACE_RBRACE = 207; // ::= '{' '}' +// final int PROD_CONSTRUCTORBODY_LBRACE_RBRACE2 = 208; // ::= '{' '}' +// final int PROD_CONSTRUCTORBODY_LBRACE_RBRACE3 = 209; // ::= '{' '}' +// final int PROD_CONSTRUCTORBODY_LBRACE_RBRACE4 = 210; // ::= '{' '}' + final int PROD_EXPLICITCONSTRUCTORINVOCATION_THIS_LPAREN_RPAREN_SEMI = 211; // ::= this '(' ')' ';' + final int PROD_EXPLICITCONSTRUCTORINVOCATION_THIS_LPAREN_RPAREN_SEMI2 = 212; // ::= this '(' ')' ';' + final int PROD_EXPLICITCONSTRUCTORINVOCATION_SUPER_LPAREN_RPAREN_SEMI = 213; // ::= super '(' ')' ';' + final int PROD_EXPLICITCONSTRUCTORINVOCATION_SUPER_LPAREN_RPAREN_SEMI2 = 214; // ::= super '(' ')' ';' + final int PROD_INTERFACEDECLARATION_INTERFACE_IDENTIFIER = 215; // ::= interface Identifier + final int PROD_INTERFACEDECLARATION_INTERFACE_IDENTIFIER2 = 216; // ::= interface Identifier + final int PROD_INTERFACEDECLARATION_INTERFACE_IDENTIFIER3 = 217; // ::= interface Identifier + final int PROD_INTERFACEDECLARATION_INTERFACE_IDENTIFIER4 = 218; // ::= interface Identifier +// final int PROD_EXTENDSINTERFACES_EXTENDS = 219; // ::= extends +// final int PROD_EXTENDSINTERFACES_COMMA = 220; // ::= ',' +// final int PROD_INTERFACEBODY_LBRACE_RBRACE = 221; // ::= '{' '}' +// final int PROD_INTERFACEBODY_LBRACE_RBRACE2 = 222; // ::= '{' '}' +// final int PROD_INTERFACEMEMBERDECLARATIONS = 223; // ::= +// final int PROD_INTERFACEMEMBERDECLARATIONS2 = 224; // ::= +// final int PROD_INTERFACEMEMBERDECLARATION = 225; // ::= +// final int PROD_INTERFACEMEMBERDECLARATION2 = 226; // ::= +// final int PROD_INTERFACEMEMBERDECLARATION3 = 227; // ::= +// final int PROD_INTERFACEMEMBERDECLARATION4 = 228; // ::= +// final int PROD_CONSTANTDECLARATION = 229; // ::= +// final int PROD_ARRAYINITIALIZER_LBRACE_COMMA_RBRACE = 230; // ::= '{' ',' '}' + final int PROD_ARRAYINITIALIZER_LBRACE_RBRACE = 231; // ::= '{' '}' +// final int PROD_ARRAYINITIALIZER_LBRACE_COMMA_RBRACE2 = 232; // ::= '{' ',' '}' +// final int PROD_ARRAYINITIALIZER_LBRACE_RBRACE2 = 233; // ::= '{' '}' +// final int PROD_VARIABLEINITIALIZERS = 234; // ::= + final int PROD_VARIABLEINITIALIZERS_COMMA = 235; // ::= ',' +// final int PROD_BLOCK_LBRACE_RBRACE = 236; // ::= '{' '}' +// final int PROD_BLOCK_LBRACE_RBRACE2 = 237; // ::= '{' '}' +// final int PROD_BLOCKSTATEMENTS = 238; // ::= + final int PROD_BLOCKSTATEMENTS2 = 239; // ::= +// final int PROD_BLOCKSTATEMENT = 240; // ::= +// final int PROD_BLOCKSTATEMENT2 = 241; // ::= +// final int PROD_BLOCKSTATEMENT3 = 242; // ::= +// final int PROD_LOCALVARIABLEDECLARATIONSTATEMENT_SEMI = 243; // ::= ';' + final int PROD_LOCALVARIABLEDECLARATION_FINAL = 244; // ::= final + final int PROD_LOCALVARIABLEDECLARATION = 245; // ::= + final int PROD_LOCALCLASSDECLARATION = 246; // ::= +// final int PROD_LOCALCLASSDECLARATION2 = 247; // ::= +// final int PROD_LOCALCLASSMODIFIERS_ABSTRACT = 248; // ::= abstract +// final int PROD_LOCALCLASSMODIFIERS_FINAL = 249; // ::= final +// final int PROD_STATEMENT = 250; // ::= +// final int PROD_STATEMENT2 = 251; // ::= +// final int PROD_STATEMENT3 = 252; // ::= +// final int PROD_STATEMENT4 = 253; // ::= +// final int PROD_STATEMENT5 = 254; // ::= +// final int PROD_STATEMENT6 = 255; // ::= +// final int PROD_STATEMENTNOSHORTIF = 256; // ::= +// final int PROD_STATEMENTNOSHORTIF2 = 257; // ::= +// final int PROD_STATEMENTNOSHORTIF3 = 258; // ::= +// final int PROD_STATEMENTNOSHORTIF4 = 259; // ::= +// final int PROD_STATEMENTNOSHORTIF5 = 260; // ::= +// final int PROD_STATEMENTWITHOUTTRAILINGSUBSTATEMENT = 261; // ::= +// final int PROD_STATEMENTWITHOUTTRAILINGSUBSTATEMENT2 = 262; // ::= +// final int PROD_STATEMENTWITHOUTTRAILINGSUBSTATEMENT3 = 263; // ::= +// final int PROD_STATEMENTWITHOUTTRAILINGSUBSTATEMENT4 = 264; // ::= +// final int PROD_STATEMENTWITHOUTTRAILINGSUBSTATEMENT5 = 265; // ::= +// final int PROD_STATEMENTWITHOUTTRAILINGSUBSTATEMENT6 = 266; // ::= +// final int PROD_STATEMENTWITHOUTTRAILINGSUBSTATEMENT7 = 267; // ::= +// final int PROD_STATEMENTWITHOUTTRAILINGSUBSTATEMENT8 = 268; // ::= +// final int PROD_STATEMENTWITHOUTTRAILINGSUBSTATEMENT9 = 269; // ::= +// final int PROD_STATEMENTWITHOUTTRAILINGSUBSTATEMENT10 = 270; // ::= +// final int PROD_STATEMENTWITHOUTTRAILINGSUBSTATEMENT11 = 271; // ::= +// final int PROD_STATEMENTWITHOUTTRAILINGSUBSTATEMENT12 = 272; // ::= +// final int PROD_EMPTYSTATEMENT_SEMI = 273; // ::= ';' + final int PROD_LABELEDSTATEMENT_IDENTIFIER_COLON = 274; // ::= Identifier ':' + final int PROD_LABELEDSTATEMENTNOSHORTIF_IDENTIFIER_COLON = 275; // ::= Identifier ':' + final int PROD_EXPRESSIONSTATEMENT_SEMI = 276; // ::= ';' +// final int PROD_STATEMENTEXPRESSION = 277; // ::= +// final int PROD_STATEMENTEXPRESSION2 = 278; // ::= +// final int PROD_STATEMENTEXPRESSION3 = 279; // ::= +// final int PROD_STATEMENTEXPRESSION4 = 280; // ::= +// final int PROD_STATEMENTEXPRESSION5 = 281; // ::= +// final int PROD_STATEMENTEXPRESSION6 = 282; // ::= +// final int PROD_STATEMENTEXPRESSION7 = 283; // ::= + final int PROD_IFTHENSTATEMENT_IF_LPAREN_RPAREN = 284; // ::= if '(' ')' + final int PROD_IFTHENELSESTATEMENT_IF_LPAREN_RPAREN_ELSE = 285; // ::= if '(' ')' else + final int PROD_IFTHENELSESTATEMENTNOSHORTIF_IF_LPAREN_RPAREN_ELSE = 286; // ::= if '(' ')' else + final int PROD_SWITCHSTATEMENT_SWITCH_LPAREN_RPAREN = 287; // ::= switch '(' ')' + final int PROD_SWITCHBLOCK_LBRACE_RBRACE = 288; // ::= '{' '}' +// final int PROD_SWITCHBLOCK_LBRACE_RBRACE2 = 289; // ::= '{' '}' + final int PROD_SWITCHBLOCK_LBRACE_RBRACE3 = 290; // ::= '{' '}' + final int PROD_SWITCHBLOCK_LBRACE_RBRACE4 = 291; // ::= '{' '}' +// final int PROD_SWITCHBLOCKSTATEMENTGROUPS = 292; // ::= + final int PROD_SWITCHBLOCKSTATEMENTGROUPS2 = 293; // ::= +// final int PROD_SWITCHBLOCKSTATEMENTGROUP = 294; // ::= +// final int PROD_SWITCHLABELS = 295; // ::= + final int PROD_SWITCHLABELS2 = 296; // ::= +// final int PROD_SWITCHLABEL_CASE_COLON = 297; // ::= case ':' + final int PROD_SWITCHLABEL_DEFAULT_COLON = 298; // ::= default ':' + final int PROD_WHILESTATEMENT_WHILE_LPAREN_RPAREN = 299; // ::= while '(' ')' + final int PROD_WHILESTATEMENTNOSHORTIF_WHILE_LPAREN_RPAREN = 300; // ::= while '(' ')' + final int PROD_DOSTATEMENT_DO_WHILE_LPAREN_RPAREN_SEMI = 301; // ::= do while '(' ')' ';' +// final int PROD_FORSTATEMENT = 302; // ::= +// final int PROD_FORSTATEMENT2 = 303; // ::= + final int PROD_BASICFORSTATEMENT_FOR_LPAREN_SEMI_SEMI_RPAREN = 304; // ::= for '(' ';' ';' ')' +// final int PROD_EXPRESSIONOPT = 305; // ::= +// final int PROD_EXPRESSIONOPT2 = 306; // ::= +// final int PROD_FORSTATEMENTNOSHORTIF = 307; // ::= +// final int PROD_FORSTATEMENTNOSHORTIF2 = 308; // ::= + final int PROD_BASICFORSTATEMENTNOSHORTIF_FOR_LPAREN_SEMI_SEMI_RPAREN = 309; // ::= for '(' ';' ';' ')' +// final int PROD_FORINITOPT = 310; // ::= +// final int PROD_FORINITOPT2 = 311; // ::= +// final int PROD_FORINITOPT3 = 312; // ::= +// final int PROD_FORUPDATEOPT = 313; // ::= +// final int PROD_FORUPDATEOPT2 = 314; // ::= + final int PROD_ENHANCEDFORSTATEMENT_FOR_LPAREN_FINAL_COLON_RPAREN = 315; // ::= for '(' final ':' ')' + final int PROD_ENHANCEDFORSTATEMENT_FOR_LPAREN_COLON_RPAREN = 316; // ::= for '(' ':' ')' + final int PROD_ENHANCEDFORSTATEMENTNOSHORTIF_FOR_LPAREN_FINAL_COLON_RPAREN = 317; // ::= for '(' final ':' ')' + final int PROD_ENHANCEDFORSTATEMENTNOSHORTIF_FOR_LPAREN_COLON_RPAREN = 318; // ::= for '(' ':' ')' +// final int PROD_STATEMENTEXPRESSIONLIST = 319; // ::= +// final int PROD_STATEMENTEXPRESSIONLIST_COMMA = 320; // ::= ',' + final int PROD_BREAKSTATEMENT_BREAK_IDENTIFIER_SEMI = 321; // ::= break Identifier ';' + final int PROD_BREAKSTATEMENT_BREAK_SEMI = 322; // ::= break ';' + final int PROD_CONTINUESTATEMENT_CONTINUE_IDENTIFIER_SEMI = 323; // ::= continue Identifier ';' + final int PROD_CONTINUESTATEMENT_CONTINUE_SEMI = 324; // ::= continue ';' + final int PROD_RETURNSTATEMENT_RETURN_SEMI = 325; // ::= return ';' + final int PROD_RETURNSTATEMENT_RETURN_SEMI2 = 326; // ::= return ';' + final int PROD_THROWSTATEMENT_THROW_SEMI = 327; // ::= throw ';' + final int PROD_SYNCHRONIZEDSTATEMENT_SYNCHRONIZED_LPAREN_RPAREN = 328; // ::= synchronized '(' ')' + final int PROD_TRYSTATEMENT_TRY = 329; // ::= try + final int PROD_TRYSTATEMENT_TRY2 = 330; // ::= try + final int PROD_TRYSTATEMENT_TRY3 = 331; // ::= try + final int PROD_TRYSTATEMENT_TRY4 = 332; // ::= try + final int PROD_TRYSTATEMENT_TRY5 = 333; // ::= try + final int PROD_TRYSTATEMENT_TRY6 = 334; // ::= try + final int PROD_TRYSTATEMENT_TRY7 = 335; // ::= try +// final int PROD_CATCHES = 336; // ::= + final int PROD_CATCHES2 = 337; // ::= +// final int PROD_CATCHCLAUSE_CATCH_LPAREN_RPAREN = 338; // ::= catch '(' ')' + final int PROD_CATCHFORMALPARAMETER_FINAL = 339; // ::= final +// final int PROD_CATCHFORMALPARAMETER = 340; // ::= +// final int PROD_CATCHTYPE = 341; // ::= + final int PROD_CATCHTYPE_PIPE = 342; // ::= '|' +// final int PROD_FINALLY_FINALLY = 343; // ::= finally + final int PROD_ASSERTSTATEMENT_ASSERT = 344; // ::= assert +// final int PROD_ASSERTMESSAGEOPT_COLON = 345; // ::= ':' +// final int PROD_ASSERTMESSAGEOPT = 346; // ::= +// final int PROD_RESOURCESPECIFICATION_LPAREN_RPAREN = 347; // ::= '(' ')' +// final int PROD_RESOURCESPECIFICATION_LPAREN_SEMI_RPAREN = 348; // ::= '(' ';' ')' +// final int PROD_RESOURCES = 349; // ::= + final int PROD_RESOURCES_SEMI = 350; // ::= ';' +// final int PROD_RESOURCE_EQ = 351; // ::= '=' + final int PROD_RESOURCE_FINAL_EQ = 352; // ::= final '=' +// final int PROD_PRIMARY = 353; // ::= +// final int PROD_PRIMARY2 = 354; // ::= +// final int PROD_PRIMARYNONEWARRAY = 355; // ::= +// final int PROD_PRIMARYNONEWARRAY_THIS = 356; // ::= this + final int PROD_PRIMARYNONEWARRAY_LPAREN_RPAREN = 357; // ::= '(' ')' +// final int PROD_PRIMARYNONEWARRAY2 = 358; // ::= +// final int PROD_PRIMARYNONEWARRAY3 = 359; // ::= +// final int PROD_PRIMARYNONEWARRAY4 = 360; // ::= +// final int PROD_PRIMARYNONEWARRAY5 = 361; // ::= +// final int PROD_PRIMARYNONEWARRAY6 = 362; // ::= + final int PROD_CLASSINSTANCECREATIONEXPRESSION_NEW_LPAREN_RPAREN = 363; // ::= new '(' ')' + final int PROD_CLASSINSTANCECREATIONEXPRESSION_NEW_LPAREN_RPAREN2 = 364; // ::= new '(' ')' + final int PROD_CLASSINSTANCECREATIONEXPRESSION_NEW_LPAREN_RPAREN3 = 365; // ::= new '(' ')' + final int PROD_CLASSINSTANCECREATIONEXPRESSION_NEW_LPAREN_RPAREN4 = 366; // ::= new '(' ')' +// final int PROD_ARGUMENTLIST = 367; // ::= + final int PROD_ARGUMENTLIST_COMMA = 368; // ::= ',' + final int PROD_ARRAYCREATIONEXPRESSION_NEW = 369; // ::= new + final int PROD_ARRAYCREATIONEXPRESSION_NEW2 = 370; // ::= new + final int PROD_ARRAYCREATIONEXPRESSION_NEW3 = 371; // ::= new + final int PROD_ARRAYCREATIONEXPRESSION_NEW4 = 372; // ::= new + final int PROD_ARRAYCREATIONEXPRESSION_NEW5 = 373; // ::= new + final int PROD_ARRAYCREATIONEXPRESSION_NEW6 = 374; // ::= new +// final int PROD_DIMEXPRS = 375; // ::= +// final int PROD_DIMEXPRS2 = 376; // ::= +// final int PROD_DIMEXPR_LBRACKET_RBRACKET = 377; // ::= '[' ']' +// final int PROD_DIMS_LBRACKET_RBRACKET = 378; // ::= '[' ']' +// final int PROD_DIMS_LBRACKET_RBRACKET2 = 379; // ::= '[' ']' + final int PROD_FIELDACCESS_DOT_IDENTIFIER = 380; // ::= '.' Identifier + final int PROD_FIELDACCESS_SUPER_DOT_IDENTIFIER = 381; // ::= super '.' Identifier + final int PROD_METHODINVOCATION_LPAREN_RPAREN = 382; // ::= '(' ')' + final int PROD_METHODINVOCATION_LPAREN_RPAREN2 = 383; // ::= '(' ')' + final int PROD_METHODINVOCATION_DOT_IDENTIFIER_LPAREN_RPAREN = 384; // ::= '.' Identifier '(' ')' + final int PROD_METHODINVOCATION_DOT_IDENTIFIER_LPAREN_RPAREN2 = 385; // ::= '.' Identifier '(' ')' + final int PROD_METHODINVOCATION_SUPER_DOT_IDENTIFIER_LPAREN_RPAREN = 386; // ::= super '.' Identifier '(' ')' + final int PROD_METHODINVOCATION_SUPER_DOT_IDENTIFIER_LPAREN_RPAREN2 = 387; // ::= super '.' Identifier '(' ')' + final int PROD_PROCESSINGTYPECONVERSION_INT_LPAREN_RPAREN = 388; // ::= int '(' ')' + final int PROD_PROCESSINGTYPECONVERSION_BYTE_LPAREN_RPAREN = 389; // ::= byte '(' ')' + final int PROD_PROCESSINGTYPECONVERSION_CHAR_LPAREN_RPAREN = 390; // ::= char '(' ')' + final int PROD_PROCESSINGTYPECONVERSION_FLOAT_LPAREN_RPAREN = 391; // ::= float '(' ')' + final int PROD_PROCESSINGTYPECONVERSION_BOOLEAN_LPAREN_RPAREN = 392; // ::= boolean '(' ')' + final int PROD_ARRAYACCESS_LBRACKET_RBRACKET = 393; // ::= '[' ']' + final int PROD_ARRAYACCESS_LBRACKET_RBRACKET2 = 394; // ::= '[' ']' +// final int PROD_POSTFIXEXPRESSION = 395; // ::= +// final int PROD_POSTFIXEXPRESSION2 = 396; // ::= +// final int PROD_POSTFIXEXPRESSION3 = 397; // ::= +// final int PROD_POSTFIXEXPRESSION4 = 398; // ::= + final int PROD_POSTINCREMENTEXPRESSION_PLUSPLUS = 399; // ::= '++' + final int PROD_POSTDECREMENTEXPRESSION_MINUSMINUS = 400; // ::= '--' +// final int PROD_UNARYEXPRESSION = 401; // ::= +// final int PROD_UNARYEXPRESSION2 = 402; // ::= + final int PROD_UNARYEXPRESSION_PLUS = 403; // ::= '+' + final int PROD_UNARYEXPRESSION_MINUS = 404; // ::= '-' +// final int PROD_UNARYEXPRESSION3 = 405; // ::= + final int PROD_PREINCREMENTEXPRESSION_PLUSPLUS = 406; // ::= '++' + final int PROD_PREDECREMENTEXPRESSION_MINUSMINUS = 407; // ::= '--' +// final int PROD_UNARYEXPRESSIONNOTPLUSMINUS = 408; // ::= + final int PROD_UNARYEXPRESSIONNOTPLUSMINUS_TILDE = 409; // ::= '~' + final int PROD_UNARYEXPRESSIONNOTPLUSMINUS_EXCLAM = 410; // ::= '!' +// final int PROD_UNARYEXPRESSIONNOTPLUSMINUS2 = 411; // ::= + final int PROD_CASTEXPRESSION_LPAREN_RPAREN = 412; // ::= '(' ')' + final int PROD_CASTEXPRESSION_LPAREN_RPAREN2 = 413; // ::= '(' ')' + final int PROD_CASTEXPRESSION_LPAREN_RPAREN3 = 414; // ::= '(' ')' + final int PROD_CASTEXPRESSION_LPAREN_RPAREN4 = 415; // ::= '(' ')' +// final int PROD_MULTIPLICATIVEEXPRESSION = 416; // ::= + final int PROD_MULTIPLICATIVEEXPRESSION_TIMES = 417; // ::= '*' + final int PROD_MULTIPLICATIVEEXPRESSION_DIV = 418; // ::= '/' + final int PROD_MULTIPLICATIVEEXPRESSION_PERCENT = 419; // ::= '%' +// final int PROD_ADDITIVEEXPRESSION = 420; // ::= + final int PROD_ADDITIVEEXPRESSION_PLUS = 421; // ::= '+' + final int PROD_ADDITIVEEXPRESSION_MINUS = 422; // ::= '-' +// final int PROD_SHIFTEXPRESSION = 423; // ::= + final int PROD_SHIFTEXPRESSION_LTLT = 424; // ::= '<<' + final int PROD_SHIFTEXPRESSION_GTGT = 425; // ::= '>>' + final int PROD_SHIFTEXPRESSION_GTGTGT = 426; // ::= '>>>' +// final int PROD_RELATIONALEXPRESSION = 427; // ::= + final int PROD_RELATIONALEXPRESSION_LT = 428; // ::= '<' + final int PROD_RELATIONALEXPRESSION_GT = 429; // ::= '>' + final int PROD_RELATIONALEXPRESSION_LTEQ = 430; // ::= '<=' + final int PROD_RELATIONALEXPRESSION_GTEQ = 431; // ::= '>=' + final int PROD_RELATIONALEXPRESSION_INSTANCEOF = 432; // ::= instanceof +// final int PROD_EQUALITYEXPRESSION = 433; // ::= + final int PROD_EQUALITYEXPRESSION_EQEQ = 434; // ::= '==' + final int PROD_EQUALITYEXPRESSION_EXCLAMEQ = 435; // ::= '!=' +// final int PROD_ANDEXPRESSION = 436; // ::= + final int PROD_ANDEXPRESSION_AMP = 437; // ::= '&' +// final int PROD_EXCLUSIVEOREXPRESSION = 438; // ::= + final int PROD_EXCLUSIVEOREXPRESSION_CARET = 439; // ::= '^' +// final int PROD_INCLUSIVEOREXPRESSION = 440; // ::= + final int PROD_INCLUSIVEOREXPRESSION_PIPE = 441; // ::= '|' +// final int PROD_CONDITIONALANDEXPRESSION = 442; // ::= + final int PROD_CONDITIONALANDEXPRESSION_AMPAMP = 443; // ::= '&&' +// final int PROD_CONDITIONALOREXPRESSION = 444; // ::= + final int PROD_CONDITIONALOREXPRESSION_PIPEPIPE = 445; // ::= '||' +// final int PROD_CONDITIONALEXPRESSION = 446; // ::= + final int PROD_CONDITIONALEXPRESSION_QUESTION_COLON = 447; // ::= '?' ':' +// final int PROD_ASSIGNMENTEXPRESSION = 448; // ::= +// final int PROD_ASSIGNMENTEXPRESSION2 = 449; // ::= + final int PROD_ASSIGNMENT = 450; // ::= +// final int PROD_LEFTHANDSIDE = 451; // ::= +// final int PROD_LEFTHANDSIDE2 = 452; // ::= +// final int PROD_LEFTHANDSIDE3 = 453; // ::= + final int PROD_ASSIGNMENTOPERATOR_EQ = 454; // ::= '=' +// final int PROD_ASSIGNMENTOPERATOR_TIMESEQ = 455; // ::= '*=' +// final int PROD_ASSIGNMENTOPERATOR_DIVEQ = 456; // ::= '/=' +// final int PROD_ASSIGNMENTOPERATOR_PERCENTEQ = 457; // ::= '%=' + final int PROD_ASSIGNMENTOPERATOR_PLUSEQ = 458; // ::= '+=' + final int PROD_ASSIGNMENTOPERATOR_MINUSEQ = 459; // ::= '-=' +// final int PROD_ASSIGNMENTOPERATOR_LTLTEQ = 460; // ::= '<<=' +// final int PROD_ASSIGNMENTOPERATOR_GTGTEQ = 461; // ::= '>>=' +// final int PROD_ASSIGNMENTOPERATOR_GTGTGTEQ = 462; // ::= '>>>=' +// final int PROD_ASSIGNMENTOPERATOR_AMPEQ = 463; // ::= '&=' +// final int PROD_ASSIGNMENTOPERATOR_CARETEQ = 464; // ::= '^=' +// final int PROD_ASSIGNMENTOPERATOR_PIPEEQ = 465; // ::= '|=' +// final int PROD_EXPRESSION = 466; // ::= +// final int PROD_CONSTANTEXPRESSION = 467; // ::= }; //----------------------------- Comment configuration ----------------------------- diff --git a/src/lu/fisch/structorizer/parsers/JavaSE8.egt b/src/lu/fisch/structorizer/parsers/JavaSE8.egt index a43a32f154069470b4ce6f43f79974da0b37cda8..6b44c838dfa36e0b08c7c255bfc03a613d0dc286 100644 GIT binary patch delta 27026 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 W*EcWTRx$(&RiC`8b#Qf8+5Z8(tTkEy From 3a1ec02c4fa21706cca0dca757797568b5af45ec Mon Sep 17 00:00:00 2001 From: codemanyak Date: Wed, 20 Mar 2024 23:44:24 +0100 Subject: [PATCH 4/8] Fixes #1151 --- src/lu/fisch/structorizer/gui/changelog.txt | 1 + .../fisch/structorizer/parsers/AuParser.java | 5 ++++- .../fisch/structorizer/parsers/C-ANSI99.egt | Bin 119455 -> 119473 bytes .../fisch/structorizer/parsers/C-ANSI99.grm | 16 +++++++++------- src/lu/fisch/structorizer/parsers/JavaSE8.egt | Bin 311658 -> 311670 bytes src/lu/fisch/structorizer/parsers/JavaSE8.grm | 7 +++++-- 6 files changed, 19 insertions(+), 10 deletions(-) diff --git a/src/lu/fisch/structorizer/gui/changelog.txt b/src/lu/fisch/structorizer/gui/changelog.txt index 426241c3..0b2c67d0 100644 --- a/src/lu/fisch/structorizer/gui/changelog.txt +++ b/src/lu/fisch/structorizer/gui/changelog.txt @@ -224,6 +224,7 @@ Current development version 3.32-19 (2024-03-19) C++, C#, Java, Javascript, modern BASIC, Perl, PHP <2> - 19: Bugfix #1149: Selection in Code Preview missed to update buttons <2> - 19: Bugfix #1150: Java import failed on parameterized class declarations <2> +- 19: Bugfix #1151: Java and C import failed with tab in string literals <2> Version 3.32 (2021-09-19) requiring Java 11 or newer - 01: Bugfix #851/2: SPECIAL-NAMES sections caused COBOL parser abort <2> diff --git a/src/lu/fisch/structorizer/parsers/AuParser.java b/src/lu/fisch/structorizer/parsers/AuParser.java index 0053da90..cfdc8fb3 100644 --- a/src/lu/fisch/structorizer/parsers/AuParser.java +++ b/src/lu/fisch/structorizer/parsers/AuParser.java @@ -192,7 +192,8 @@ public AuParser(InputStream cgtFile, String rulesPackage, boolean trimReductions * Inserts Group objects into the group table, so comments can be processed in a * grammar. It is assumed that version 1.0 files have a maximum of 1 closed * comment block and one comment line symbol. - */ + */ + @Override protected void resolveCommentGroupsForVersion1Grammars() { if (isVersion1Format()) { Group group; @@ -253,6 +254,7 @@ protected void resolveCommentGroupsForVersion1Grammars() { } } + @Override protected boolean processTokenRead() { Token token = this.getCurrentToken(); // START KGU#511 2018-04-12: Issue #489 @@ -315,6 +317,7 @@ else if (!name.equalsIgnoreCase("whitespace")) { /** * Just allowing public access to the current token */ + @Override public Token getCurrentToken() { // START KGU#511 2018-04-12: Issue #489 //return super.getCurrentToken(); diff --git a/src/lu/fisch/structorizer/parsers/C-ANSI99.egt b/src/lu/fisch/structorizer/parsers/C-ANSI99.egt index 268254dd0d4672f8c4f6eaca3ef10b41a9f86243..6251b9a585d5f4c4962cf7706608ce12f89e754f 100644 GIT binary patch delta 141 zcmbQglzrn;_6a47rW;ESGD?~-=rR~E7z0ToAgur-jTx+fr0HgVrhHZrMTVqgPjd!O z1_n<)23Jo`1|XVzhP^;c9wcE2mf(d+c-Bu=V3(TwfkSulWR96qTnwJP48GhTg|=XY R%rJ$`4xHN^I2q$l0sv5a9bEtb delta 129 zcmdnElzskE_6a47CL2o+GD;dV=rR~ESOQ5y22%zFAlrb!3dl0q?9Y_XDj?60l>dKLAPGyb1P@T6ezF3))Z{-Lx|8Q~%oO1SsrKarDX|4B RVPbG?4&vM%#K{ was added ! * The erroneous ',' was removed from the rule ! * Rule for function call with empty argument list had been missing -! Modified 2018-06-20 +! V 1.2 (2018-06-20) ! * Erroneous use of "Literal" in >Selector> rule corrected to ! * Forgotten equality sign in assign operator '^=' added -! Modified 2018-06-24 +! V 1.3 (2018-06-24) ! * Forgotten empty block (without ) as possible ! added. ! * Identifiers allowed as CASE selectors. -! Modified 2020-02-12 +! V 1.4 (2020-02-12) ! * FloatLiteral variant without decimal point added +! V 1.5 (2024-03-20) +! * Tab character {#9} added to {String Ch} ! ----------------------------------------------------------------------- "Name" = 'ANSI-C99' "Author" = 'Kay Gürtzig' -"Version" = '1.4' +"Version" = '1.5' "About" = 'ANSI C99 (ISO/IEC 9899:TC3 draft from September 7, 2007)' "Case Sensitive" = True @@ -96,7 +98,7 @@ {ID Head} = {Letter} + [_] {ID Tail} = {Alphanumeric} + [_] -{String Ch} = {All Printable} - ["] +{String Ch} = {All Printable} + {#9} - ["] {Char Ch} = {All Printable} - [''] !{H Ch} = {All Printable} - [>] diff --git a/src/lu/fisch/structorizer/parsers/JavaSE8.egt b/src/lu/fisch/structorizer/parsers/JavaSE8.egt index 6b44c838dfa36e0b08c7c255bfc03a613d0dc286..608f592e79d0b54b114d6a71725073b0cddfb477 100644 GIT binary patch delta 91 zcmaFWB>b&Oc!Lx(rxAlOgB61TgZXA<<|tMXMTVqgPZI`D1_n<)23Jo`1|XW;&GA}9 f9wcE2mf(d+G`DcJw{S87F%u9oZ*SpbdA1z@wL}$Z delta 79 zcmey?B>bvLc!Lx(ry+wWgB61TgT-cL<|tM^d4{B9PZI`D1_n=F2G_|GIbQS0f`lx= bLOcwv%@a7=CvY+XF%u9oZ=b-)@@zW*1y diff --git a/src/lu/fisch/structorizer/parsers/JavaSE8.grm b/src/lu/fisch/structorizer/parsers/JavaSE8.grm index e6d9cdbf..f8826d69 100644 --- a/src/lu/fisch/structorizer/parsers/JavaSE8.grm +++ b/src/lu/fisch/structorizer/parsers/JavaSE8.grm @@ -61,14 +61,16 @@ ! Processing conversion function str disabled (impeded 'str' identifiers) ! V 0.8 2024-03-18 Kay Gürtzig Identifier syntax extended to {All Latin} (as Java accepts them in fact), ! introduced (#1142), enum without enabled (#1143) +! V 0.9 2024-03-20 Kay Gürtzig Missing empty rule for added (#1150), +! tab added to {String Char} (#1151) ! ----------------------------------------------------------------------- "Name" = 'Java SE 8' -"Version" = '0.8, March 2024' +"Version" = '0.9, March 2024' "Author" = 'Kay Gürtzig' "About" = 'Simplified Java SE 8 grammar, based on a partial conversion of Sun Java 1.0-2.0 specification by Dmitry Gazko and the Oracle Java SE 8 specification.' -{String Char} = {all printable} - ["] - [\] +{String Char} = {all printable} + {#9} - ["] - [\] {Quote} = [''] {IdLetter} = {Letter} + [_$] !{IdAlphaNumeric} = {Alphanumeric} + [_$] @@ -294,6 +296,7 @@ Comment Line = '//' ::= 'extends' | 'extends' + | ::= '&' From 44e8d45d68d94cb8e80ae3b0df4fa35a8cd1bb05 Mon Sep 17 00:00:00 2001 From: codemanyak Date: Thu, 21 Mar 2024 00:47:51 +0100 Subject: [PATCH 5/8] Fixes #1152 --- src/lu/fisch/structorizer/gui/changelog.txt | 3 +- .../fisch/structorizer/parsers/D7Parser.java | 122 ++---------------- 2 files changed, 13 insertions(+), 112 deletions(-) diff --git a/src/lu/fisch/structorizer/gui/changelog.txt b/src/lu/fisch/structorizer/gui/changelog.txt index 0b2c67d0..f9ee62f3 100644 --- a/src/lu/fisch/structorizer/gui/changelog.txt +++ b/src/lu/fisch/structorizer/gui/changelog.txt @@ -25,7 +25,7 @@ Known issues (also see https://github.com/fesch/Structorizer.Desktop/issues): - ARM export is still experimental and relies on a specific and very restricted syntax for the element contents in order to produce meaningful results. -Current development version 3.32-19 (2024-03-19) +Current development version 3.32-19 (2024-03-21) - 01: Bugfix #987: Duplicate subroutine comment export by Pascal generator <2> - 01: Bugfix #988: Syntax error in Structorizer.bat and Arranger.bat fixed <2> - 01: Bugfix #989: Expressions in EXIT elements (e.g. return) were forgotten @@ -225,6 +225,7 @@ Current development version 3.32-19 (2024-03-19) - 19: Bugfix #1149: Selection in Code Preview missed to update buttons <2> - 19: Bugfix #1150: Java import failed on parameterized class declarations <2> - 19: Bugfix #1151: Java and C import failed with tab in string literals <2> +- 19: Bugfix #1152: Pascal import had failed completely in version 3.32-18 <2> Version 3.32 (2021-09-19) requiring Java 11 or newer - 01: Bugfix #851/2: SPECIAL-NAMES sections caused COBOL parser abort <2> diff --git a/src/lu/fisch/structorizer/parsers/D7Parser.java b/src/lu/fisch/structorizer/parsers/D7Parser.java index f669e51f..c20142f3 100644 --- a/src/lu/fisch/structorizer/parsers/D7Parser.java +++ b/src/lu/fisch/structorizer/parsers/D7Parser.java @@ -78,6 +78,7 @@ * Kay Gürtzig 2024-03-14 Issue #1084 RuleConstants updated to new grammar version 1.6 * Kay Gürtzig 2024-03-15 Issue #1084 Substantial achievements to import ObjectPascal / Delphi code * Kay Gürtzig 2024-03-17 Bugfix #1141: Measures against stack overflow in buildNSD_R() + * Kay Gürtzig 2024-03-21 Bugfix #1152: Defect of fix #1141 mended (caused NullPointerException) * ****************************************************************************************************** * @@ -129,8 +130,8 @@ import java.util.logging.Level; /** - * Code import parser class of Structorizer 3.27, based on GOLDParser 5.0 for the ObjectPascal, Pascal - * or Delphi 7 language. + * Code import parser class of Structorizer 3.27, based on GOLDParser 5.0, for the + * ObjectPascal, Pascal or Delphi 7 language. * This file contains grammar-specific constants and individual routines to build * structograms (Nassi-Shneiderman diagrams) from the parsing tree. * @author Kay Gürtzig @@ -887,23 +888,6 @@ private interface RuleConstants private static final StringList NAMES_TO_LOWER = StringList.explode("FALSE,TRUE,CHR,ORD,POS,COPY,DELETE,INSERT,UPPERCASE,LOWERCASE", ","); // END KGU#843 2020-04-11 -// START KGU#387 2021-02-16: Issue #939 workaround no longer necessary -// // START KGU#575 2018-09-17: Issue #594 - replace obsolete 3rd-party regex library -// /** Matcher for temporary newline surrogates */ -// private static final java.util.regex.Matcher NEWLINE_MATCHER = java.util.regex.Pattern.compile("(.*?)[\u2190](.*?)").matcher(""); -// // END KGU#575 2018-09-17 -// END KGU#387 2021-02-16 - - // START KGU#354 2017-03-04: Now inherited from CodeParser - //Root root = null; - // START KGU#194 2016-05-08: Bugfix #185 - // We may obtain a collection of Roots (unit or program with subroutines)! - //private List subRoots = new LinkedList(); - // END KGU#194 2016-05-08 - // - //public String error = new String(); - // END KGU#354 2017-03-04 - // START KGU#194 2016-05-08: Bugfix #185 - if being a unit we must retain its name private String unitName = null; // END KGU#194 2016-05-08 @@ -992,14 +976,7 @@ protected File prepareTextfile(String _textToParse, String _encoding) throws Par checkCancelled(); // END KGU#537 2018-07-01 - // START KGU#387/KGU#589 2021-02-15: #939 Workaround #615 now obsolete - // START KGU#589 2018-09-28: Workaround #615 - //strLine = unifyComments(strLine, inComments); - // END KGU#589 2018-09-28 - // add no ending because of comment filter - //pasCode += strLine+"\u2190"; - pasCode+=strLine+"\n"; - // END KGU#387/KGU#589 2021-02-15 + pasCode += strLine + "\n"; } } finally { @@ -1011,35 +988,11 @@ protected File prepareTextfile(String _textToParse, String _encoding) throws Par pasCode = embedSubroutineDeclaration(pasCode); // END KGU#195 2016-05-04 -// START KGU#387 2021-02-16: Issue #939 obsolete stuff disabled -// // reset correct endings -// // START KGU#575 2018-09-17: Issue #594 - replacing obsolete 3rd-party regex library -// //Regex r = new Regex("(.*?)[\u2190](.*?)","$1\n$2"); -// //pasCode = r.replaceAll(pasCode); -// pasCode = NEWLINE_MATCHER.reset(pasCode).replaceAll("$1\n$2"); -// // END KGU#575 2018-09-17 -// // START KGU#354 2017-03-07: Workaround for missing second comment delimiter pair in GOLDParser 5.0 -//// pasCode = pasCode.replaceAll("(.*?)(\\(\\*)(.*?)(\\*\\))(.*?)", "$1\\{$3\\}$5"); -// // END KGU#354 2017-03-07 -// -// //System.out.println(pasCode); -// END KGU#387 2021-02-16 - // trim and save as new file - //interm = new File(_textToParse + ".structorizer"); interm = File.createTempFile("Structorizer", ".pas"); - // START KGU#387 2021-02-16: Issue #939 - Eventually we may get rid of this filtering - //OutputStreamWriter ow = new OutputStreamWriter(new FileOutputStream(interm), "ISO-8859-1"); - //try { - // ow.write(filterNonAscii(pasCode.trim()+"\n")); - //} - //finally { - // ow.close(); - //} try (OutputStreamWriter ow = new OutputStreamWriter(new FileOutputStream(interm), _encoding)) { ow.write(pasCode.trim() +"\n"); } - // END KGU#387 2021-02-16 } catch (Exception e) { @@ -1049,65 +1002,6 @@ protected File prepareTextfile(String _textToParse, String _encoding) throws Par } // END KGU#354 2017-03-03 -// // START KGU589 2018-09-28: Issue #615 - KGU#387 2021-02-16: No longer needed (Issue #939) -// /** -// * Replaces all comment delimiters of kind (* *) by pairs of curly braces (and therefore closing -// * braces within (* *) former comments with "[brace-close]" to avoid comment corruption as comments -// * of same kind cannot be nested. -// * FIXME: This method is only a workaround while the grammar doesn't cope with (* *) comments. -// * @param pasLine - the original Pascal line -// * @param withinComments - a pair of flags: [0] for inside (* *), [1] for inside { }. -// * @return the Pascal line with unified comments (length may have changed) -// */ -// private String unifyComments(String pasLine, boolean[] withinComments) { -// // Let's do a quick test first -// if (withinComments[0] && (pasLine.contains("*)") || (pasLine.contains("}"))) -// || !withinComments[0] && pasLine.contains("(*")) { -// // Now we must have a closer look to exclude false positives in string constants -// StringBuilder sb = new StringBuilder(); -// boolean inString = false; -// int len = pasLine.length(); -// int i = 0; -// while (i < len) { -// char c = pasLine.charAt(i); -// if (!withinComments[0] && !withinComments[1]) { -// if (c == '\'') { -// inString = !inString; -// } -// else if (c == '{') { -// withinComments[1] = true; -// } -// else if (!inString && c == '(' && i+1 < len && pasLine.charAt(i+1) == '*') { -// withinComments[0] = true; -// c = '{'; -// i++; -// } -// } -// else if (withinComments[1]) { -// if (c == '}') { -// withinComments[1] = false; -// } -// } -// // So we must be within a comment of type (* *) -// else if (c == '*' && i+1 < len && pasLine.charAt(i+1) == ')') { -// withinComments[0] = false; -// c = '}'; -// i++; -// } -// else if (c == '}') { -// // This might cause trouble as it would shorten the comment! -// // so replace it by something irrelevant within a comment -// sb.append("[brace-close"); -// c = ']'; -// } -// sb.append(c); -// i++; -// } -// pasLine = sb.toString(); -// } -// return pasLine; -// } -// // END KGU#589 2018-09-28 // START KGU#195 2016-05-04: Issue #185 - Workaround for mere subroutines private String embedSubroutineDeclaration(String _pasCode) throws ParserCancelled @@ -1893,9 +1787,15 @@ else if (ruleId == RuleConstants.PROD_EXPORTDECLLIST2 // ::= // ::= ';' int loopId = ruleId; + // START KGU#1140 2024-03-21: Bugfix #1152 Wrong rule index for statement list + int ixItem = ruleId == RuleConstants.PROD_STMTLIST_SEMI ? 2 : 1; + // END KGU#1140 2024-03-21 Stack redStack = new Stack(); do { - redStack.push(_reduction.get(1).asReduction()); + // START KGU#1140 2024-03-21: Bugfix #1152 Wrong rule index for statement list + //redStack.push(_reduction.get(1).asReduction()); + redStack.push(_reduction.get(ixItem).asReduction()); + // END KGU#1140 2024-03-21 _reduction = _reduction.get(0).asReduction(); ruleId = _reduction.getParent().getTableIndex(); } while (ruleId == loopId); From 2ac97d61f976689ea94691c4906d6545bc185584 Mon Sep 17 00:00:00 2001 From: codemanyak Date: Thu, 21 Mar 2024 01:17:37 +0100 Subject: [PATCH 6/8] Messages for #1136 modified (EN, DE, ES) --- src/lu/fisch/structorizer/gui/parsers.xml | 4 ++-- src/lu/fisch/structorizer/locales/de.txt | 2 +- src/lu/fisch/structorizer/locales/en.txt | 4 ++-- src/lu/fisch/structorizer/locales/es.txt | 2 +- 4 files changed, 6 insertions(+), 6 deletions(-) diff --git a/src/lu/fisch/structorizer/gui/parsers.xml b/src/lu/fisch/structorizer/gui/parsers.xml index 0a56e29e..5900fd8d 100644 --- a/src/lu/fisch/structorizer/gui/parsers.xml +++ b/src/lu/fisch/structorizer/gui/parsers.xml @@ -24,12 +24,12 @@ diff --git a/src/lu/fisch/structorizer/locales/de.txt b/src/lu/fisch/structorizer/locales/de.txt index 98e8ee9b..ac47f8a8 100644 --- a/src/lu/fisch/structorizer/locales/de.txt +++ b/src/lu/fisch/structorizer/locales/de.txt @@ -1212,7 +1212,7 @@ PluginOptionDialog.optionComponents.convert_syntax.text=Deklarationen/Ausdrücke PluginOptionDialog.optionComponents.convert_syntax.tooltip=Diese Einstellung vergrößert die Chancen der Ausführbarkeit oder des Re-Exports in Structorizer PluginOptionDialog.optionComponents.dissect_anon_inner_class.text=Anonyme innere Klassen in Diagramme zerlegen PluginOptionDialog.optionComponents.dissect_anon_inner_class.tooltip=Anderenfalls würde die en passant definierte innere Klasse einfach als sehr langer Quellcode-Ausdruck in das instanziierende Element durchgereicht. -PluginOptionDialog.optionComponents.separate_angular_brackets.text=Trenne >> bei Typparametern zu > > +PluginOptionDialog.optionComponents.separate_angular_brackets.text=Trenne >> bei geschachtelten Typparametern zu > > PluginOptionDialog.optionComponents.separate_angular_brackets.tooltip=Heuristische Vermeidung, dass '>>' bei verschachtelten Typparametern als Shift-Operator fehlinterprtiert wird. (Bei Übergriffigkeit deaktivieren und von Hand ändern!) PluginOptionDialog.optionComponents.debugLines.text[getPluginKey():COBOLParser]=Debug-Zeilen als aktiven Code importieren PluginOptionDialog.optionComponents.debugLines.tooltip[getPluginKey():COBOLParser]=Falls aktiviert, werden Debug-Zeilen ggf. als gültiger Code importiert, anderenfalls in Kommentarzeilen "DEBUG ..." umgewandelt. diff --git a/src/lu/fisch/structorizer/locales/en.txt b/src/lu/fisch/structorizer/locales/en.txt index e6c957b1..d29c9d8b 100644 --- a/src/lu/fisch/structorizer/locales/en.txt +++ b/src/lu/fisch/structorizer/locales/en.txt @@ -1207,8 +1207,8 @@ PluginOptionDialog.optionComponents.convert_syntax.text= PluginOptionDialog.optionComponents.convert_syntax.tooltip= PluginOptionDialog.optionComponents.dissect_anon_inner_class.text= PluginOptionDialog.optionComponents.dissect_anon_inner_class.tooltip= -PluginOptionDialog.optionComponents.separate_angular_brackets.text= -PluginOptionDialog.optionComponents.separate_angular_brackets.tooltip= +PluginOptionDialog.optionComponents.separate_angular_brackets.text=Separate >> of nested type parameters to > > +PluginOptionDialog.optionComponents.separate_angular_brackets.tooltip=Heuristic preprocessing to avoid nested type parameter closing be mistaken for shift operator '>>'. If it overdoes, do it manually. PluginOptionDialog.optionComponents.debugLines.text[getPluginKey():COBOLParser]= PluginOptionDialog.optionComponents.debugLines.tooltip[getPluginKey():COBOLParser]= PluginOptionDialog.optionComponents.decimalComma.text[getPluginKey():COBOLParser]= diff --git a/src/lu/fisch/structorizer/locales/es.txt b/src/lu/fisch/structorizer/locales/es.txt index c95f2bff..c0ac6330 100644 --- a/src/lu/fisch/structorizer/locales/es.txt +++ b/src/lu/fisch/structorizer/locales/es.txt @@ -1214,7 +1214,7 @@ PluginOptionDialog.optionComponents.convert_syntax.text=Convertir declaraciones/ PluginOptionDialog.optionComponents.convert_syntax.tooltip=Esta opción aumenta la probabilidad de poder ejecutar o re-exportar el resultado en Structorizer PluginOptionDialog.optionComponents.dissect_anon_inner_class.text=Desglosar clases anónimas interiores a diagramas PluginOptionDialog.optionComponents.dissect_anon_inner_class.tooltip=De otro modo, una clase anónima definida en pasada simplemente sería puesto como una larga expresión de código fuente al elemento que contiene su instanciación. -PluginOptionDialog.optionComponents.separate_angular_brackets.text=Separar >> detrás parametros de tipos hacia > > +PluginOptionDialog.optionComponents.separate_angular_brackets.text=Separar >> por anidados parametros de tipos hacia > > PluginOptionDialog.optionComponents.separate_angular_brackets.tooltip=Tentativa heuristica de evitar, que '>>' por parametros de tipos anidados sean ecivocados con operadores >>. (En caso de exageración ¡desactivelo y hagalo manualmente!) PluginOptionDialog.optionComponents.debugLines.text[getPluginKey():COBOLParser]=Importar líneas debug como código válido PluginOptionDialog.optionComponents.debugLines.tooltip[getPluginKey():COBOLParser]=Si es activada, líneas debug serán importadas como código válido, de otro modo serían convertidas en comentarios "DEBUG ...". From 5a834c2b861e91524eff055e87e86c689fa6eef5 Mon Sep 17 00:00:00 2001 From: codemanyak Date: Thu, 21 Mar 2024 03:08:36 +0100 Subject: [PATCH 7/8] Revision and extension of bugfix #1136 --- src/lu/fisch/structorizer/gui/changelog.txt | 1 + .../structorizer/parsers/JavaParser.java | 811 +++++++++--------- src/lu/fisch/structorizer/parsers/JavaSE8.egt | Bin 311670 -> 311734 bytes src/lu/fisch/structorizer/parsers/JavaSE8.grm | 3 +- 4 files changed, 405 insertions(+), 410 deletions(-) diff --git a/src/lu/fisch/structorizer/gui/changelog.txt b/src/lu/fisch/structorizer/gui/changelog.txt index f9ee62f3..215ab5e4 100644 --- a/src/lu/fisch/structorizer/gui/changelog.txt +++ b/src/lu/fisch/structorizer/gui/changelog.txt @@ -220,6 +220,7 @@ Current development version 3.32-19 (2024-03-21) - 18: Bugfix #1145 Java import crashed when source file contains two or more classes / interfaces / enumerators on top level <2> - 18: Bugfix #1146: Wrong/awkward Oberon export of Alternatives [K.-P. R.]2 +- 19: Bugfix #1136 revised ('?' now generally accepted as type parameter) <2> - 19: Issue #1148: Special indentation on exporting IF ELSE IF chains to C, C++, C#, Java, Javascript, modern BASIC, Perl, PHP <2> - 19: Bugfix #1149: Selection in Code Preview missed to update buttons <2> diff --git a/src/lu/fisch/structorizer/parsers/JavaParser.java b/src/lu/fisch/structorizer/parsers/JavaParser.java index 2b4b3b50..c9896ed6 100644 --- a/src/lu/fisch/structorizer/parsers/JavaParser.java +++ b/src/lu/fisch/structorizer/parsers/JavaParser.java @@ -70,6 +70,7 @@ * Kay Gürtzig 2024-03-18 Bugfix #1143: {@code } unduly required modifiers, * bugfix #1145: Crash with more than 1 class / interface on top level * Kay Gürtzig 2024-03-20 Bugfix #1150: RuleConstants adapted to new grammar version 0.9 + * Kay Gürtzig 2024-03-21 Bugfix #1136 revision (type parameter "?" is now accepted by the grammar) * ****************************************************************************************************** * @@ -564,399 +565,400 @@ private interface RuleConstants // final int PROD_WILDCARDBOUNDSOPT_SUPER = 72; // ::= super // final int PROD_WILDCARDBOUNDSOPT = 73; // ::= // final int PROD_TYPEPARAMETER_IDENTIFIER = 74; // ::= Identifier -// final int PROD_TYPEBOUNDOPT_EXTENDS = 75; // ::= extends -// final int PROD_TYPEBOUNDOPT_EXTENDS2 = 76; // ::= extends -// final int PROD_TYPEBOUNDOPT = 77; // ::= -// final int PROD_ADDITIONALBOUNDOPT_AMP = 78; // ::= '&' -// final int PROD_ADDITIONALBOUNDOPT = 79; // ::= -// final int PROD_COMPILATIONUNIT = 80; // ::= -// final int PROD_COMPILATIONUNIT2 = 81; // ::= -// final int PROD_COMPILATIONUNIT3 = 82; // ::= -// final int PROD_COMPILATIONUNIT4 = 83; // ::= -// final int PROD_COMPILATIONUNIT5 = 84; // ::= -// final int PROD_COMPILATIONUNIT6 = 85; // ::= -// final int PROD_COMPILATIONUNIT7 = 86; // ::= -// final int PROD_COMPILATIONUNIT8 = 87; // ::= -// final int PROD_IMPORTDECLARATIONS = 88; // ::= -// final int PROD_IMPORTDECLARATIONS2 = 89; // ::= -// final int PROD_TYPEDECLARATIONS = 90; // ::= -// final int PROD_TYPEDECLARATIONS2 = 91; // ::= - final int PROD_PACKAGEDECLARATION_PACKAGE_SEMI = 92; // ::= package ';' -// final int PROD_IMPORTDECLARATION = 93; // ::= -// final int PROD_IMPORTDECLARATION2 = 94; // ::= -// final int PROD_IMPORTDECLARATION3 = 95; // ::= -// final int PROD_IMPORTDECLARATION4 = 96; // ::= - final int PROD_SINGLETYPEIMPORTDECLARATION_IMPORT_SEMI = 97; // ::= import ';' - final int PROD_TYPEIMPORTONDEMANDDECLARATION_IMPORT_DOT_TIMES_SEMI = 98; // ::= import '.' '*' ';' - final int PROD_SINGLESTATICIMPORTDECLARATION_IMPORT_STATIC_SEMI = 99; // ::= import static ';' - final int PROD_STATICIMPORTONDEMANDDECLARATION_IMPORT_STATIC_DOT_TIMES_SEMI = 100; // ::= import static '.' '*' ';' -// final int PROD_TYPEDECLARATION = 101; // ::= -// final int PROD_TYPEDECLARATION2 = 102; // ::= -// final int PROD_TYPEDECLARATION_SEMI = 103; // ::= ';' -// final int PROD_MODIFIERS = 104; // ::= -// final int PROD_MODIFIERS2 = 105; // ::= -// final int PROD_MODIFIERSOPT = 106; // ::= -// final int PROD_MODIFIERSOPT2 = 107; // ::= -// final int PROD_MODIFIER_PUBLIC = 108; // ::= public -// final int PROD_MODIFIER_PROTECTED = 109; // ::= protected -// final int PROD_MODIFIER_PRIVATE = 110; // ::= private -// final int PROD_MODIFIER_STATIC = 111; // ::= static -// final int PROD_MODIFIER_ABSTRACT = 112; // ::= abstract -// final int PROD_MODIFIER_FINAL = 113; // ::= final -// final int PROD_MODIFIER_NATIVE = 114; // ::= native -// final int PROD_MODIFIER_SYNCHRONIZED = 115; // ::= synchronized -// final int PROD_MODIFIER_TRANSIENT = 116; // ::= transient -// final int PROD_MODIFIER_VOLATILE = 117; // ::= volatile -// final int PROD_MODIFIER_DEFAULT = 118; // ::= default -// final int PROD_MODIFIER_STRICTFP = 119; // ::= strictfp -// final int PROD_CLASSDECLARATION = 120; // ::= -// final int PROD_CLASSDECLARATION2 = 121; // ::= - final int PROD_NORMALCLASSDECLARATION = 122; // ::= -// final int PROD_NORMALCLASSDECLARATION2 = 123; // ::= - final int PROD_PURECLASSDECLARATION_CLASS_IDENTIFIER = 124; // ::= class Identifier - final int PROD_PURECLASSDECLARATION_CLASS_IDENTIFIER2 = 125; // ::= class Identifier - final int PROD_PURECLASSDECLARATION_CLASS_IDENTIFIER3 = 126; // ::= class Identifier - final int PROD_PURECLASSDECLARATION_CLASS_IDENTIFIER4 = 127; // ::= class Identifier -// final int PROD_TYPEPARAMETERSOPT_LT_GT = 128; // ::= '<' '>' -// final int PROD_TYPEPARAMETERSOPT = 129; // ::= -// final int PROD_TYPEPARAMETERS = 130; // ::= -// final int PROD_TYPEPARAMETERS_COMMA = 131; // ::= ',' -// final int PROD_SUPER_EXTENDS = 132; // ::= extends -// final int PROD_INTERFACES_IMPLEMENTS = 133; // ::= implements -// final int PROD_INTERFACETYPELIST = 134; // ::= -// final int PROD_INTERFACETYPELIST_COMMA = 135; // ::= ',' - final int PROD_ENUMDECLARATION_ENUM_IDENTIFIER = 136; // ::= enum Identifier - final int PROD_ENUMDECLARATION_ENUM_IDENTIFIER2 = 137; // ::= enum Identifier -// final int PROD_ENUMBODY_LBRACE_COMMA_RBRACE = 138; // ::= '{' ',' '}' -// final int PROD_ENUMBODY_LBRACE_RBRACE = 139; // ::= '{' '}' -// final int PROD_ENUMBODYDECLARATIONSOPT_SEMI = 140; // ::= ';' -// final int PROD_ENUMBODYDECLARATIONSOPT = 141; // ::= -// final int PROD_ENUMCONSTANTS = 142; // ::= - final int PROD_ENUMCONSTANTS_COMMA = 143; // ::= ',' - final int PROD_ENUMCONSTANT_IDENTIFIER_LPAREN_RPAREN = 144; // ::= Identifier '(' ')' - final int PROD_ENUMCONSTANT_IDENTIFIER = 145; // ::= Identifier -// final int PROD_CLASSBODYOPT = 146; // ::= -// final int PROD_CLASSBODYOPT2 = 147; // ::= - final int PROD_CLASSBODY_LBRACE_RBRACE = 148; // ::= '{' '}' -// final int PROD_CLASSBODY_LBRACE_RBRACE2 = 149; // ::= '{' '}' -// final int PROD_CLASSBODYDECLARATIONS = 150; // ::= - final int PROD_CLASSBODYDECLARATIONS2 = 151; // ::= -// final int PROD_CLASSBODYDECLARATION = 152; // ::= -// final int PROD_CLASSBODYDECLARATION2 = 153; // ::= -// final int PROD_CLASSBODYDECLARATION3 = 154; // ::= -// final int PROD_CLASSBODYDECLARATION4 = 155; // ::= -// final int PROD_CLASSMEMBERDECLARATION = 156; // ::= -// final int PROD_CLASSMEMBERDECLARATION2 = 157; // ::= -// final int PROD_CLASSMEMBERDECLARATION3 = 158; // ::= -// final int PROD_CLASSMEMBERDECLARATION4 = 159; // ::= -// final int PROD_CLASSMEMBERDECLARATION_SEMI = 160; // ::= ';' - final int PROD_FIELDDECLARATION_SEMI = 161; // ::= ';' - final int PROD_FIELDDECLARATION_SEMI2 = 162; // ::= ';' -// final int PROD_VARIABLEDECLARATORS = 163; // ::= - final int PROD_VARIABLEDECLARATORS_COMMA = 164; // ::= ',' -// final int PROD_VARIABLEDECLARATOR = 165; // ::= - final int PROD_VARIABLEDECLARATOR_EQ = 166; // ::= '=' -// final int PROD_VARIABLEDECLARATORID_IDENTIFIER = 167; // ::= Identifier -// final int PROD_VARIABLEDECLARATORID_IDENTIFIER2 = 168; // ::= Identifier -// final int PROD_VARIABLEINITIALIZER = 169; // ::= -// final int PROD_VARIABLEINITIALIZER2 = 170; // ::= - final int PROD_METHODDECLARATION = 171; // ::= - final int PROD_METHODHEADER = 172; // ::= - final int PROD_METHODHEADER2 = 173; // ::= -// final int PROD_METHODHEADER3 = 174; // ::= -// final int PROD_METHODHEADER4 = 175; // ::= - final int PROD_METHODHEADER_VOID = 176; // ::= void - final int PROD_METHODHEADER_VOID2 = 177; // ::= void -// final int PROD_METHODHEADER_VOID3 = 178; // ::= void -// final int PROD_METHODHEADER_VOID4 = 179; // ::= void - final int PROD_METHODDECLARATOR_IDENTIFIER_LPAREN_RPAREN = 180; // ::= Identifier '(' ')' -// final int PROD_METHODDECLARATOR_IDENTIFIER_LPAREN_RPAREN2 = 181; // ::= Identifier '(' ')' - final int PROD_METHODDECLARATOR_IDENTIFIER_LPAREN_RPAREN3 = 182; // ::= Identifier '(' ')' - final int PROD_METHODDECLARATOR_IDENTIFIER_LPAREN_RPAREN4 = 183; // ::= Identifier '(' ')' -// final int PROD_FORMALPARAMETERLIST = 184; // ::= - final int PROD_FORMALPARAMETERLIST_COMMA = 185; // ::= ',' -// final int PROD_FORMALPARAMETER = 186; // ::= - final int PROD_FORMALPARAMETER_FINAL = 187; // ::= final -// final int PROD_FORMALPARAMETER2 = 188; // ::= -// final int PROD_FORMALPARAMETER3 = 189; // ::= - final int PROD_LASTFORMALPARAMETER_ELLIPSIS = 190; // ::= Ellipsis -// final int PROD_RECEIVERPARAMETER_THIS = 191; // ::= this -// final int PROD_QUALPREFIXOPT_IDENTIFIER_DOT = 192; // ::= Identifier '.' -// final int PROD_QUALPREFIXOPT = 193; // ::= -// final int PROD_THROWS_THROWS = 194; // ::= throws -// final int PROD_CLASSTYPELIST = 195; // ::= -// final int PROD_CLASSTYPELIST_COMMA = 196; // ::= ',' -// final int PROD_METHODBODY = 197; // ::= -// final int PROD_METHODBODY_SEMI = 198; // ::= ';' -// final int PROD_INSTANCEINITIALIZER = 199; // ::= - final int PROD_STATICINITIALIZER_STATIC = 200; // ::= static - final int PROD_CONSTRUCTORDECLARATION = 201; // ::= - final int PROD_CONSTRUCTORDECLARATION2 = 202; // ::= - final int PROD_CONSTRUCTORDECLARATION3 = 203; // ::= - final int PROD_CONSTRUCTORDECLARATION4 = 204; // ::= - final int PROD_CONSTRUCTORDECLARATOR_LPAREN_RPAREN = 205; // ::= '(' ')' - final int PROD_CONSTRUCTORDECLARATOR_LPAREN_RPAREN2 = 206; // ::= '(' ')' -// final int PROD_CONSTRUCTORBODY_LBRACE_RBRACE = 207; // ::= '{' '}' -// final int PROD_CONSTRUCTORBODY_LBRACE_RBRACE2 = 208; // ::= '{' '}' -// final int PROD_CONSTRUCTORBODY_LBRACE_RBRACE3 = 209; // ::= '{' '}' -// final int PROD_CONSTRUCTORBODY_LBRACE_RBRACE4 = 210; // ::= '{' '}' - final int PROD_EXPLICITCONSTRUCTORINVOCATION_THIS_LPAREN_RPAREN_SEMI = 211; // ::= this '(' ')' ';' - final int PROD_EXPLICITCONSTRUCTORINVOCATION_THIS_LPAREN_RPAREN_SEMI2 = 212; // ::= this '(' ')' ';' - final int PROD_EXPLICITCONSTRUCTORINVOCATION_SUPER_LPAREN_RPAREN_SEMI = 213; // ::= super '(' ')' ';' - final int PROD_EXPLICITCONSTRUCTORINVOCATION_SUPER_LPAREN_RPAREN_SEMI2 = 214; // ::= super '(' ')' ';' - final int PROD_INTERFACEDECLARATION_INTERFACE_IDENTIFIER = 215; // ::= interface Identifier - final int PROD_INTERFACEDECLARATION_INTERFACE_IDENTIFIER2 = 216; // ::= interface Identifier - final int PROD_INTERFACEDECLARATION_INTERFACE_IDENTIFIER3 = 217; // ::= interface Identifier - final int PROD_INTERFACEDECLARATION_INTERFACE_IDENTIFIER4 = 218; // ::= interface Identifier -// final int PROD_EXTENDSINTERFACES_EXTENDS = 219; // ::= extends -// final int PROD_EXTENDSINTERFACES_COMMA = 220; // ::= ',' -// final int PROD_INTERFACEBODY_LBRACE_RBRACE = 221; // ::= '{' '}' -// final int PROD_INTERFACEBODY_LBRACE_RBRACE2 = 222; // ::= '{' '}' -// final int PROD_INTERFACEMEMBERDECLARATIONS = 223; // ::= -// final int PROD_INTERFACEMEMBERDECLARATIONS2 = 224; // ::= -// final int PROD_INTERFACEMEMBERDECLARATION = 225; // ::= -// final int PROD_INTERFACEMEMBERDECLARATION2 = 226; // ::= -// final int PROD_INTERFACEMEMBERDECLARATION3 = 227; // ::= -// final int PROD_INTERFACEMEMBERDECLARATION4 = 228; // ::= -// final int PROD_CONSTANTDECLARATION = 229; // ::= -// final int PROD_ARRAYINITIALIZER_LBRACE_COMMA_RBRACE = 230; // ::= '{' ',' '}' - final int PROD_ARRAYINITIALIZER_LBRACE_RBRACE = 231; // ::= '{' '}' -// final int PROD_ARRAYINITIALIZER_LBRACE_COMMA_RBRACE2 = 232; // ::= '{' ',' '}' -// final int PROD_ARRAYINITIALIZER_LBRACE_RBRACE2 = 233; // ::= '{' '}' -// final int PROD_VARIABLEINITIALIZERS = 234; // ::= - final int PROD_VARIABLEINITIALIZERS_COMMA = 235; // ::= ',' -// final int PROD_BLOCK_LBRACE_RBRACE = 236; // ::= '{' '}' -// final int PROD_BLOCK_LBRACE_RBRACE2 = 237; // ::= '{' '}' -// final int PROD_BLOCKSTATEMENTS = 238; // ::= - final int PROD_BLOCKSTATEMENTS2 = 239; // ::= -// final int PROD_BLOCKSTATEMENT = 240; // ::= -// final int PROD_BLOCKSTATEMENT2 = 241; // ::= -// final int PROD_BLOCKSTATEMENT3 = 242; // ::= -// final int PROD_LOCALVARIABLEDECLARATIONSTATEMENT_SEMI = 243; // ::= ';' - final int PROD_LOCALVARIABLEDECLARATION_FINAL = 244; // ::= final - final int PROD_LOCALVARIABLEDECLARATION = 245; // ::= - final int PROD_LOCALCLASSDECLARATION = 246; // ::= -// final int PROD_LOCALCLASSDECLARATION2 = 247; // ::= -// final int PROD_LOCALCLASSMODIFIERS_ABSTRACT = 248; // ::= abstract -// final int PROD_LOCALCLASSMODIFIERS_FINAL = 249; // ::= final -// final int PROD_STATEMENT = 250; // ::= -// final int PROD_STATEMENT2 = 251; // ::= -// final int PROD_STATEMENT3 = 252; // ::= -// final int PROD_STATEMENT4 = 253; // ::= -// final int PROD_STATEMENT5 = 254; // ::= -// final int PROD_STATEMENT6 = 255; // ::= -// final int PROD_STATEMENTNOSHORTIF = 256; // ::= -// final int PROD_STATEMENTNOSHORTIF2 = 257; // ::= -// final int PROD_STATEMENTNOSHORTIF3 = 258; // ::= -// final int PROD_STATEMENTNOSHORTIF4 = 259; // ::= -// final int PROD_STATEMENTNOSHORTIF5 = 260; // ::= -// final int PROD_STATEMENTWITHOUTTRAILINGSUBSTATEMENT = 261; // ::= -// final int PROD_STATEMENTWITHOUTTRAILINGSUBSTATEMENT2 = 262; // ::= -// final int PROD_STATEMENTWITHOUTTRAILINGSUBSTATEMENT3 = 263; // ::= -// final int PROD_STATEMENTWITHOUTTRAILINGSUBSTATEMENT4 = 264; // ::= -// final int PROD_STATEMENTWITHOUTTRAILINGSUBSTATEMENT5 = 265; // ::= -// final int PROD_STATEMENTWITHOUTTRAILINGSUBSTATEMENT6 = 266; // ::= -// final int PROD_STATEMENTWITHOUTTRAILINGSUBSTATEMENT7 = 267; // ::= -// final int PROD_STATEMENTWITHOUTTRAILINGSUBSTATEMENT8 = 268; // ::= -// final int PROD_STATEMENTWITHOUTTRAILINGSUBSTATEMENT9 = 269; // ::= -// final int PROD_STATEMENTWITHOUTTRAILINGSUBSTATEMENT10 = 270; // ::= -// final int PROD_STATEMENTWITHOUTTRAILINGSUBSTATEMENT11 = 271; // ::= -// final int PROD_STATEMENTWITHOUTTRAILINGSUBSTATEMENT12 = 272; // ::= -// final int PROD_EMPTYSTATEMENT_SEMI = 273; // ::= ';' - final int PROD_LABELEDSTATEMENT_IDENTIFIER_COLON = 274; // ::= Identifier ':' - final int PROD_LABELEDSTATEMENTNOSHORTIF_IDENTIFIER_COLON = 275; // ::= Identifier ':' - final int PROD_EXPRESSIONSTATEMENT_SEMI = 276; // ::= ';' -// final int PROD_STATEMENTEXPRESSION = 277; // ::= -// final int PROD_STATEMENTEXPRESSION2 = 278; // ::= -// final int PROD_STATEMENTEXPRESSION3 = 279; // ::= -// final int PROD_STATEMENTEXPRESSION4 = 280; // ::= -// final int PROD_STATEMENTEXPRESSION5 = 281; // ::= -// final int PROD_STATEMENTEXPRESSION6 = 282; // ::= -// final int PROD_STATEMENTEXPRESSION7 = 283; // ::= - final int PROD_IFTHENSTATEMENT_IF_LPAREN_RPAREN = 284; // ::= if '(' ')' - final int PROD_IFTHENELSESTATEMENT_IF_LPAREN_RPAREN_ELSE = 285; // ::= if '(' ')' else - final int PROD_IFTHENELSESTATEMENTNOSHORTIF_IF_LPAREN_RPAREN_ELSE = 286; // ::= if '(' ')' else - final int PROD_SWITCHSTATEMENT_SWITCH_LPAREN_RPAREN = 287; // ::= switch '(' ')' - final int PROD_SWITCHBLOCK_LBRACE_RBRACE = 288; // ::= '{' '}' -// final int PROD_SWITCHBLOCK_LBRACE_RBRACE2 = 289; // ::= '{' '}' - final int PROD_SWITCHBLOCK_LBRACE_RBRACE3 = 290; // ::= '{' '}' - final int PROD_SWITCHBLOCK_LBRACE_RBRACE4 = 291; // ::= '{' '}' -// final int PROD_SWITCHBLOCKSTATEMENTGROUPS = 292; // ::= - final int PROD_SWITCHBLOCKSTATEMENTGROUPS2 = 293; // ::= -// final int PROD_SWITCHBLOCKSTATEMENTGROUP = 294; // ::= -// final int PROD_SWITCHLABELS = 295; // ::= - final int PROD_SWITCHLABELS2 = 296; // ::= -// final int PROD_SWITCHLABEL_CASE_COLON = 297; // ::= case ':' - final int PROD_SWITCHLABEL_DEFAULT_COLON = 298; // ::= default ':' - final int PROD_WHILESTATEMENT_WHILE_LPAREN_RPAREN = 299; // ::= while '(' ')' - final int PROD_WHILESTATEMENTNOSHORTIF_WHILE_LPAREN_RPAREN = 300; // ::= while '(' ')' - final int PROD_DOSTATEMENT_DO_WHILE_LPAREN_RPAREN_SEMI = 301; // ::= do while '(' ')' ';' -// final int PROD_FORSTATEMENT = 302; // ::= -// final int PROD_FORSTATEMENT2 = 303; // ::= - final int PROD_BASICFORSTATEMENT_FOR_LPAREN_SEMI_SEMI_RPAREN = 304; // ::= for '(' ';' ';' ')' -// final int PROD_EXPRESSIONOPT = 305; // ::= -// final int PROD_EXPRESSIONOPT2 = 306; // ::= -// final int PROD_FORSTATEMENTNOSHORTIF = 307; // ::= -// final int PROD_FORSTATEMENTNOSHORTIF2 = 308; // ::= - final int PROD_BASICFORSTATEMENTNOSHORTIF_FOR_LPAREN_SEMI_SEMI_RPAREN = 309; // ::= for '(' ';' ';' ')' -// final int PROD_FORINITOPT = 310; // ::= -// final int PROD_FORINITOPT2 = 311; // ::= -// final int PROD_FORINITOPT3 = 312; // ::= -// final int PROD_FORUPDATEOPT = 313; // ::= -// final int PROD_FORUPDATEOPT2 = 314; // ::= - final int PROD_ENHANCEDFORSTATEMENT_FOR_LPAREN_FINAL_COLON_RPAREN = 315; // ::= for '(' final ':' ')' - final int PROD_ENHANCEDFORSTATEMENT_FOR_LPAREN_COLON_RPAREN = 316; // ::= for '(' ':' ')' - final int PROD_ENHANCEDFORSTATEMENTNOSHORTIF_FOR_LPAREN_FINAL_COLON_RPAREN = 317; // ::= for '(' final ':' ')' - final int PROD_ENHANCEDFORSTATEMENTNOSHORTIF_FOR_LPAREN_COLON_RPAREN = 318; // ::= for '(' ':' ')' -// final int PROD_STATEMENTEXPRESSIONLIST = 319; // ::= -// final int PROD_STATEMENTEXPRESSIONLIST_COMMA = 320; // ::= ',' - final int PROD_BREAKSTATEMENT_BREAK_IDENTIFIER_SEMI = 321; // ::= break Identifier ';' - final int PROD_BREAKSTATEMENT_BREAK_SEMI = 322; // ::= break ';' - final int PROD_CONTINUESTATEMENT_CONTINUE_IDENTIFIER_SEMI = 323; // ::= continue Identifier ';' - final int PROD_CONTINUESTATEMENT_CONTINUE_SEMI = 324; // ::= continue ';' - final int PROD_RETURNSTATEMENT_RETURN_SEMI = 325; // ::= return ';' - final int PROD_RETURNSTATEMENT_RETURN_SEMI2 = 326; // ::= return ';' - final int PROD_THROWSTATEMENT_THROW_SEMI = 327; // ::= throw ';' - final int PROD_SYNCHRONIZEDSTATEMENT_SYNCHRONIZED_LPAREN_RPAREN = 328; // ::= synchronized '(' ')' - final int PROD_TRYSTATEMENT_TRY = 329; // ::= try - final int PROD_TRYSTATEMENT_TRY2 = 330; // ::= try - final int PROD_TRYSTATEMENT_TRY3 = 331; // ::= try - final int PROD_TRYSTATEMENT_TRY4 = 332; // ::= try - final int PROD_TRYSTATEMENT_TRY5 = 333; // ::= try - final int PROD_TRYSTATEMENT_TRY6 = 334; // ::= try - final int PROD_TRYSTATEMENT_TRY7 = 335; // ::= try -// final int PROD_CATCHES = 336; // ::= - final int PROD_CATCHES2 = 337; // ::= -// final int PROD_CATCHCLAUSE_CATCH_LPAREN_RPAREN = 338; // ::= catch '(' ')' - final int PROD_CATCHFORMALPARAMETER_FINAL = 339; // ::= final -// final int PROD_CATCHFORMALPARAMETER = 340; // ::= -// final int PROD_CATCHTYPE = 341; // ::= - final int PROD_CATCHTYPE_PIPE = 342; // ::= '|' -// final int PROD_FINALLY_FINALLY = 343; // ::= finally - final int PROD_ASSERTSTATEMENT_ASSERT = 344; // ::= assert -// final int PROD_ASSERTMESSAGEOPT_COLON = 345; // ::= ':' -// final int PROD_ASSERTMESSAGEOPT = 346; // ::= -// final int PROD_RESOURCESPECIFICATION_LPAREN_RPAREN = 347; // ::= '(' ')' -// final int PROD_RESOURCESPECIFICATION_LPAREN_SEMI_RPAREN = 348; // ::= '(' ';' ')' -// final int PROD_RESOURCES = 349; // ::= - final int PROD_RESOURCES_SEMI = 350; // ::= ';' -// final int PROD_RESOURCE_EQ = 351; // ::= '=' - final int PROD_RESOURCE_FINAL_EQ = 352; // ::= final '=' -// final int PROD_PRIMARY = 353; // ::= -// final int PROD_PRIMARY2 = 354; // ::= -// final int PROD_PRIMARYNONEWARRAY = 355; // ::= -// final int PROD_PRIMARYNONEWARRAY_THIS = 356; // ::= this - final int PROD_PRIMARYNONEWARRAY_LPAREN_RPAREN = 357; // ::= '(' ')' -// final int PROD_PRIMARYNONEWARRAY2 = 358; // ::= -// final int PROD_PRIMARYNONEWARRAY3 = 359; // ::= -// final int PROD_PRIMARYNONEWARRAY4 = 360; // ::= -// final int PROD_PRIMARYNONEWARRAY5 = 361; // ::= -// final int PROD_PRIMARYNONEWARRAY6 = 362; // ::= - final int PROD_CLASSINSTANCECREATIONEXPRESSION_NEW_LPAREN_RPAREN = 363; // ::= new '(' ')' - final int PROD_CLASSINSTANCECREATIONEXPRESSION_NEW_LPAREN_RPAREN2 = 364; // ::= new '(' ')' - final int PROD_CLASSINSTANCECREATIONEXPRESSION_NEW_LPAREN_RPAREN3 = 365; // ::= new '(' ')' - final int PROD_CLASSINSTANCECREATIONEXPRESSION_NEW_LPAREN_RPAREN4 = 366; // ::= new '(' ')' -// final int PROD_ARGUMENTLIST = 367; // ::= - final int PROD_ARGUMENTLIST_COMMA = 368; // ::= ',' - final int PROD_ARRAYCREATIONEXPRESSION_NEW = 369; // ::= new - final int PROD_ARRAYCREATIONEXPRESSION_NEW2 = 370; // ::= new - final int PROD_ARRAYCREATIONEXPRESSION_NEW3 = 371; // ::= new - final int PROD_ARRAYCREATIONEXPRESSION_NEW4 = 372; // ::= new - final int PROD_ARRAYCREATIONEXPRESSION_NEW5 = 373; // ::= new - final int PROD_ARRAYCREATIONEXPRESSION_NEW6 = 374; // ::= new -// final int PROD_DIMEXPRS = 375; // ::= -// final int PROD_DIMEXPRS2 = 376; // ::= -// final int PROD_DIMEXPR_LBRACKET_RBRACKET = 377; // ::= '[' ']' -// final int PROD_DIMS_LBRACKET_RBRACKET = 378; // ::= '[' ']' -// final int PROD_DIMS_LBRACKET_RBRACKET2 = 379; // ::= '[' ']' - final int PROD_FIELDACCESS_DOT_IDENTIFIER = 380; // ::= '.' Identifier - final int PROD_FIELDACCESS_SUPER_DOT_IDENTIFIER = 381; // ::= super '.' Identifier - final int PROD_METHODINVOCATION_LPAREN_RPAREN = 382; // ::= '(' ')' - final int PROD_METHODINVOCATION_LPAREN_RPAREN2 = 383; // ::= '(' ')' - final int PROD_METHODINVOCATION_DOT_IDENTIFIER_LPAREN_RPAREN = 384; // ::= '.' Identifier '(' ')' - final int PROD_METHODINVOCATION_DOT_IDENTIFIER_LPAREN_RPAREN2 = 385; // ::= '.' Identifier '(' ')' - final int PROD_METHODINVOCATION_SUPER_DOT_IDENTIFIER_LPAREN_RPAREN = 386; // ::= super '.' Identifier '(' ')' - final int PROD_METHODINVOCATION_SUPER_DOT_IDENTIFIER_LPAREN_RPAREN2 = 387; // ::= super '.' Identifier '(' ')' - final int PROD_PROCESSINGTYPECONVERSION_INT_LPAREN_RPAREN = 388; // ::= int '(' ')' - final int PROD_PROCESSINGTYPECONVERSION_BYTE_LPAREN_RPAREN = 389; // ::= byte '(' ')' - final int PROD_PROCESSINGTYPECONVERSION_CHAR_LPAREN_RPAREN = 390; // ::= char '(' ')' - final int PROD_PROCESSINGTYPECONVERSION_FLOAT_LPAREN_RPAREN = 391; // ::= float '(' ')' - final int PROD_PROCESSINGTYPECONVERSION_BOOLEAN_LPAREN_RPAREN = 392; // ::= boolean '(' ')' - final int PROD_ARRAYACCESS_LBRACKET_RBRACKET = 393; // ::= '[' ']' - final int PROD_ARRAYACCESS_LBRACKET_RBRACKET2 = 394; // ::= '[' ']' -// final int PROD_POSTFIXEXPRESSION = 395; // ::= -// final int PROD_POSTFIXEXPRESSION2 = 396; // ::= -// final int PROD_POSTFIXEXPRESSION3 = 397; // ::= -// final int PROD_POSTFIXEXPRESSION4 = 398; // ::= - final int PROD_POSTINCREMENTEXPRESSION_PLUSPLUS = 399; // ::= '++' - final int PROD_POSTDECREMENTEXPRESSION_MINUSMINUS = 400; // ::= '--' -// final int PROD_UNARYEXPRESSION = 401; // ::= -// final int PROD_UNARYEXPRESSION2 = 402; // ::= - final int PROD_UNARYEXPRESSION_PLUS = 403; // ::= '+' - final int PROD_UNARYEXPRESSION_MINUS = 404; // ::= '-' -// final int PROD_UNARYEXPRESSION3 = 405; // ::= - final int PROD_PREINCREMENTEXPRESSION_PLUSPLUS = 406; // ::= '++' - final int PROD_PREDECREMENTEXPRESSION_MINUSMINUS = 407; // ::= '--' -// final int PROD_UNARYEXPRESSIONNOTPLUSMINUS = 408; // ::= - final int PROD_UNARYEXPRESSIONNOTPLUSMINUS_TILDE = 409; // ::= '~' - final int PROD_UNARYEXPRESSIONNOTPLUSMINUS_EXCLAM = 410; // ::= '!' -// final int PROD_UNARYEXPRESSIONNOTPLUSMINUS2 = 411; // ::= - final int PROD_CASTEXPRESSION_LPAREN_RPAREN = 412; // ::= '(' ')' - final int PROD_CASTEXPRESSION_LPAREN_RPAREN2 = 413; // ::= '(' ')' - final int PROD_CASTEXPRESSION_LPAREN_RPAREN3 = 414; // ::= '(' ')' - final int PROD_CASTEXPRESSION_LPAREN_RPAREN4 = 415; // ::= '(' ')' -// final int PROD_MULTIPLICATIVEEXPRESSION = 416; // ::= - final int PROD_MULTIPLICATIVEEXPRESSION_TIMES = 417; // ::= '*' - final int PROD_MULTIPLICATIVEEXPRESSION_DIV = 418; // ::= '/' - final int PROD_MULTIPLICATIVEEXPRESSION_PERCENT = 419; // ::= '%' -// final int PROD_ADDITIVEEXPRESSION = 420; // ::= - final int PROD_ADDITIVEEXPRESSION_PLUS = 421; // ::= '+' - final int PROD_ADDITIVEEXPRESSION_MINUS = 422; // ::= '-' -// final int PROD_SHIFTEXPRESSION = 423; // ::= - final int PROD_SHIFTEXPRESSION_LTLT = 424; // ::= '<<' - final int PROD_SHIFTEXPRESSION_GTGT = 425; // ::= '>>' - final int PROD_SHIFTEXPRESSION_GTGTGT = 426; // ::= '>>>' -// final int PROD_RELATIONALEXPRESSION = 427; // ::= - final int PROD_RELATIONALEXPRESSION_LT = 428; // ::= '<' - final int PROD_RELATIONALEXPRESSION_GT = 429; // ::= '>' - final int PROD_RELATIONALEXPRESSION_LTEQ = 430; // ::= '<=' - final int PROD_RELATIONALEXPRESSION_GTEQ = 431; // ::= '>=' - final int PROD_RELATIONALEXPRESSION_INSTANCEOF = 432; // ::= instanceof -// final int PROD_EQUALITYEXPRESSION = 433; // ::= - final int PROD_EQUALITYEXPRESSION_EQEQ = 434; // ::= '==' - final int PROD_EQUALITYEXPRESSION_EXCLAMEQ = 435; // ::= '!=' -// final int PROD_ANDEXPRESSION = 436; // ::= - final int PROD_ANDEXPRESSION_AMP = 437; // ::= '&' -// final int PROD_EXCLUSIVEOREXPRESSION = 438; // ::= - final int PROD_EXCLUSIVEOREXPRESSION_CARET = 439; // ::= '^' -// final int PROD_INCLUSIVEOREXPRESSION = 440; // ::= - final int PROD_INCLUSIVEOREXPRESSION_PIPE = 441; // ::= '|' -// final int PROD_CONDITIONALANDEXPRESSION = 442; // ::= - final int PROD_CONDITIONALANDEXPRESSION_AMPAMP = 443; // ::= '&&' -// final int PROD_CONDITIONALOREXPRESSION = 444; // ::= - final int PROD_CONDITIONALOREXPRESSION_PIPEPIPE = 445; // ::= '||' -// final int PROD_CONDITIONALEXPRESSION = 446; // ::= - final int PROD_CONDITIONALEXPRESSION_QUESTION_COLON = 447; // ::= '?' ':' -// final int PROD_ASSIGNMENTEXPRESSION = 448; // ::= -// final int PROD_ASSIGNMENTEXPRESSION2 = 449; // ::= - final int PROD_ASSIGNMENT = 450; // ::= -// final int PROD_LEFTHANDSIDE = 451; // ::= -// final int PROD_LEFTHANDSIDE2 = 452; // ::= -// final int PROD_LEFTHANDSIDE3 = 453; // ::= - final int PROD_ASSIGNMENTOPERATOR_EQ = 454; // ::= '=' -// final int PROD_ASSIGNMENTOPERATOR_TIMESEQ = 455; // ::= '*=' -// final int PROD_ASSIGNMENTOPERATOR_DIVEQ = 456; // ::= '/=' -// final int PROD_ASSIGNMENTOPERATOR_PERCENTEQ = 457; // ::= '%=' - final int PROD_ASSIGNMENTOPERATOR_PLUSEQ = 458; // ::= '+=' - final int PROD_ASSIGNMENTOPERATOR_MINUSEQ = 459; // ::= '-=' -// final int PROD_ASSIGNMENTOPERATOR_LTLTEQ = 460; // ::= '<<=' -// final int PROD_ASSIGNMENTOPERATOR_GTGTEQ = 461; // ::= '>>=' -// final int PROD_ASSIGNMENTOPERATOR_GTGTGTEQ = 462; // ::= '>>>=' -// final int PROD_ASSIGNMENTOPERATOR_AMPEQ = 463; // ::= '&=' -// final int PROD_ASSIGNMENTOPERATOR_CARETEQ = 464; // ::= '^=' -// final int PROD_ASSIGNMENTOPERATOR_PIPEEQ = 465; // ::= '|=' -// final int PROD_EXPRESSION = 466; // ::= -// final int PROD_CONSTANTEXPRESSION = 467; // ::= +// final int PROD_TYPEPARAMETER_QUESTION = 75; // ::= '?' +// final int PROD_TYPEBOUNDOPT_EXTENDS = 76; // ::= extends +// final int PROD_TYPEBOUNDOPT_EXTENDS2 = 77; // ::= extends +// final int PROD_TYPEBOUNDOPT = 78; // ::= +// final int PROD_ADDITIONALBOUNDOPT_AMP = 79; // ::= '&' +// final int PROD_ADDITIONALBOUNDOPT = 80; // ::= +// final int PROD_COMPILATIONUNIT = 81; // ::= +// final int PROD_COMPILATIONUNIT2 = 82; // ::= +// final int PROD_COMPILATIONUNIT3 = 83; // ::= +// final int PROD_COMPILATIONUNIT4 = 84; // ::= +// final int PROD_COMPILATIONUNIT5 = 85; // ::= +// final int PROD_COMPILATIONUNIT6 = 86; // ::= +// final int PROD_COMPILATIONUNIT7 = 87; // ::= +// final int PROD_COMPILATIONUNIT8 = 88; // ::= +// final int PROD_IMPORTDECLARATIONS = 89; // ::= +// final int PROD_IMPORTDECLARATIONS2 = 90; // ::= +// final int PROD_TYPEDECLARATIONS = 91; // ::= +// final int PROD_TYPEDECLARATIONS2 = 92; // ::= + final int PROD_PACKAGEDECLARATION_PACKAGE_SEMI = 93; // ::= package ';' +// final int PROD_IMPORTDECLARATION = 94; // ::= +// final int PROD_IMPORTDECLARATION2 = 95; // ::= +// final int PROD_IMPORTDECLARATION3 = 96; // ::= +// final int PROD_IMPORTDECLARATION4 = 97; // ::= + final int PROD_SINGLETYPEIMPORTDECLARATION_IMPORT_SEMI = 98; // ::= import ';' + final int PROD_TYPEIMPORTONDEMANDDECLARATION_IMPORT_DOT_TIMES_SEMI = 99; // ::= import '.' '*' ';' + final int PROD_SINGLESTATICIMPORTDECLARATION_IMPORT_STATIC_SEMI = 100; // ::= import static ';' + final int PROD_STATICIMPORTONDEMANDDECLARATION_IMPORT_STATIC_DOT_TIMES_SEMI = 101; // ::= import static '.' '*' ';' +// final int PROD_TYPEDECLARATION = 102; // ::= +// final int PROD_TYPEDECLARATION2 = 103; // ::= +// final int PROD_TYPEDECLARATION_SEMI = 104; // ::= ';' +// final int PROD_MODIFIERS = 105; // ::= +// final int PROD_MODIFIERS2 = 106; // ::= +// final int PROD_MODIFIERSOPT = 107; // ::= +// final int PROD_MODIFIERSOPT2 = 108; // ::= +// final int PROD_MODIFIER_PUBLIC = 109; // ::= public +// final int PROD_MODIFIER_PROTECTED = 110; // ::= protected +// final int PROD_MODIFIER_PRIVATE = 111; // ::= private +// final int PROD_MODIFIER_STATIC = 112; // ::= static +// final int PROD_MODIFIER_ABSTRACT = 113; // ::= abstract +// final int PROD_MODIFIER_FINAL = 114; // ::= final +// final int PROD_MODIFIER_NATIVE = 115; // ::= native +// final int PROD_MODIFIER_SYNCHRONIZED = 116; // ::= synchronized +// final int PROD_MODIFIER_TRANSIENT = 117; // ::= transient +// final int PROD_MODIFIER_VOLATILE = 118; // ::= volatile +// final int PROD_MODIFIER_DEFAULT = 119; // ::= default +// final int PROD_MODIFIER_STRICTFP = 120; // ::= strictfp +// final int PROD_CLASSDECLARATION = 121; // ::= +// final int PROD_CLASSDECLARATION2 = 122; // ::= + final int PROD_NORMALCLASSDECLARATION = 123; // ::= +// final int PROD_NORMALCLASSDECLARATION2 = 124; // ::= + final int PROD_PURECLASSDECLARATION_CLASS_IDENTIFIER = 125; // ::= class Identifier + final int PROD_PURECLASSDECLARATION_CLASS_IDENTIFIER2 = 126; // ::= class Identifier + final int PROD_PURECLASSDECLARATION_CLASS_IDENTIFIER3 = 127; // ::= class Identifier + final int PROD_PURECLASSDECLARATION_CLASS_IDENTIFIER4 = 128; // ::= class Identifier +// final int PROD_TYPEPARAMETERSOPT_LT_GT = 129; // ::= '<' '>' +// final int PROD_TYPEPARAMETERSOPT = 130; // ::= +// final int PROD_TYPEPARAMETERS = 131; // ::= +// final int PROD_TYPEPARAMETERS_COMMA = 132; // ::= ',' +// final int PROD_SUPER_EXTENDS = 133; // ::= extends +// final int PROD_INTERFACES_IMPLEMENTS = 134; // ::= implements +// final int PROD_INTERFACETYPELIST = 135; // ::= +// final int PROD_INTERFACETYPELIST_COMMA = 136; // ::= ',' + final int PROD_ENUMDECLARATION_ENUM_IDENTIFIER = 137; // ::= enum Identifier + final int PROD_ENUMDECLARATION_ENUM_IDENTIFIER2 = 138; // ::= enum Identifier +// final int PROD_ENUMBODY_LBRACE_COMMA_RBRACE = 139; // ::= '{' ',' '}' +// final int PROD_ENUMBODY_LBRACE_RBRACE = 140; // ::= '{' '}' +// final int PROD_ENUMBODYDECLARATIONSOPT_SEMI = 141; // ::= ';' +// final int PROD_ENUMBODYDECLARATIONSOPT = 142; // ::= +// final int PROD_ENUMCONSTANTS = 143; // ::= + final int PROD_ENUMCONSTANTS_COMMA = 144; // ::= ',' + final int PROD_ENUMCONSTANT_IDENTIFIER_LPAREN_RPAREN = 145; // ::= Identifier '(' ')' + final int PROD_ENUMCONSTANT_IDENTIFIER = 146; // ::= Identifier +// final int PROD_CLASSBODYOPT = 147; // ::= +// final int PROD_CLASSBODYOPT2 = 148; // ::= + final int PROD_CLASSBODY_LBRACE_RBRACE = 149; // ::= '{' '}' +// final int PROD_CLASSBODY_LBRACE_RBRACE2 = 150; // ::= '{' '}' +// final int PROD_CLASSBODYDECLARATIONS = 151; // ::= + final int PROD_CLASSBODYDECLARATIONS2 = 152; // ::= +// final int PROD_CLASSBODYDECLARATION = 153; // ::= +// final int PROD_CLASSBODYDECLARATION2 = 154; // ::= +// final int PROD_CLASSBODYDECLARATION3 = 155; // ::= +// final int PROD_CLASSBODYDECLARATION4 = 156; // ::= +// final int PROD_CLASSMEMBERDECLARATION = 157; // ::= +// final int PROD_CLASSMEMBERDECLARATION2 = 158; // ::= +// final int PROD_CLASSMEMBERDECLARATION3 = 159; // ::= +// final int PROD_CLASSMEMBERDECLARATION4 = 160; // ::= +// final int PROD_CLASSMEMBERDECLARATION_SEMI = 161; // ::= ';' + final int PROD_FIELDDECLARATION_SEMI = 162; // ::= ';' + final int PROD_FIELDDECLARATION_SEMI2 = 163; // ::= ';' +// final int PROD_VARIABLEDECLARATORS = 164; // ::= + final int PROD_VARIABLEDECLARATORS_COMMA = 165; // ::= ',' +// final int PROD_VARIABLEDECLARATOR = 166; // ::= + final int PROD_VARIABLEDECLARATOR_EQ = 167; // ::= '=' +// final int PROD_VARIABLEDECLARATORID_IDENTIFIER = 168; // ::= Identifier +// final int PROD_VARIABLEDECLARATORID_IDENTIFIER2 = 169; // ::= Identifier +// final int PROD_VARIABLEINITIALIZER = 170; // ::= +// final int PROD_VARIABLEINITIALIZER2 = 171; // ::= + final int PROD_METHODDECLARATION = 172; // ::= + final int PROD_METHODHEADER = 173; // ::= + final int PROD_METHODHEADER2 = 174; // ::= +// final int PROD_METHODHEADER3 = 175; // ::= +// final int PROD_METHODHEADER4 = 176; // ::= + final int PROD_METHODHEADER_VOID = 177; // ::= void + final int PROD_METHODHEADER_VOID2 = 178; // ::= void +// final int PROD_METHODHEADER_VOID3 = 179; // ::= void +// final int PROD_METHODHEADER_VOID4 = 180; // ::= void + final int PROD_METHODDECLARATOR_IDENTIFIER_LPAREN_RPAREN = 181; // ::= Identifier '(' ')' +// final int PROD_METHODDECLARATOR_IDENTIFIER_LPAREN_RPAREN2 = 182; // ::= Identifier '(' ')' + final int PROD_METHODDECLARATOR_IDENTIFIER_LPAREN_RPAREN3 = 183; // ::= Identifier '(' ')' + final int PROD_METHODDECLARATOR_IDENTIFIER_LPAREN_RPAREN4 = 184; // ::= Identifier '(' ')' +// final int PROD_FORMALPARAMETERLIST = 185; // ::= + final int PROD_FORMALPARAMETERLIST_COMMA = 186; // ::= ',' +// final int PROD_FORMALPARAMETER = 187; // ::= + final int PROD_FORMALPARAMETER_FINAL = 188; // ::= final +// final int PROD_FORMALPARAMETER2 = 189; // ::= +// final int PROD_FORMALPARAMETER3 = 190; // ::= + final int PROD_LASTFORMALPARAMETER_ELLIPSIS = 191; // ::= Ellipsis +// final int PROD_RECEIVERPARAMETER_THIS = 192; // ::= this +// final int PROD_QUALPREFIXOPT_IDENTIFIER_DOT = 193; // ::= Identifier '.' +// final int PROD_QUALPREFIXOPT = 194; // ::= +// final int PROD_THROWS_THROWS = 195; // ::= throws +// final int PROD_CLASSTYPELIST = 196; // ::= +// final int PROD_CLASSTYPELIST_COMMA = 197; // ::= ',' +// final int PROD_METHODBODY = 198; // ::= +// final int PROD_METHODBODY_SEMI = 199; // ::= ';' +// final int PROD_INSTANCEINITIALIZER = 200; // ::= + final int PROD_STATICINITIALIZER_STATIC = 201; // ::= static + final int PROD_CONSTRUCTORDECLARATION = 202; // ::= + final int PROD_CONSTRUCTORDECLARATION2 = 203; // ::= + final int PROD_CONSTRUCTORDECLARATION3 = 204; // ::= + final int PROD_CONSTRUCTORDECLARATION4 = 205; // ::= + final int PROD_CONSTRUCTORDECLARATOR_LPAREN_RPAREN = 206; // ::= '(' ')' + final int PROD_CONSTRUCTORDECLARATOR_LPAREN_RPAREN2 = 207; // ::= '(' ')' +// final int PROD_CONSTRUCTORBODY_LBRACE_RBRACE = 208; // ::= '{' '}' +// final int PROD_CONSTRUCTORBODY_LBRACE_RBRACE2 = 209; // ::= '{' '}' +// final int PROD_CONSTRUCTORBODY_LBRACE_RBRACE3 = 210; // ::= '{' '}' +// final int PROD_CONSTRUCTORBODY_LBRACE_RBRACE4 = 211; // ::= '{' '}' + final int PROD_EXPLICITCONSTRUCTORINVOCATION_THIS_LPAREN_RPAREN_SEMI = 212; // ::= this '(' ')' ';' + final int PROD_EXPLICITCONSTRUCTORINVOCATION_THIS_LPAREN_RPAREN_SEMI2 = 213; // ::= this '(' ')' ';' + final int PROD_EXPLICITCONSTRUCTORINVOCATION_SUPER_LPAREN_RPAREN_SEMI = 214; // ::= super '(' ')' ';' + final int PROD_EXPLICITCONSTRUCTORINVOCATION_SUPER_LPAREN_RPAREN_SEMI2 = 215; // ::= super '(' ')' ';' + final int PROD_INTERFACEDECLARATION_INTERFACE_IDENTIFIER = 216; // ::= interface Identifier + final int PROD_INTERFACEDECLARATION_INTERFACE_IDENTIFIER2 = 217; // ::= interface Identifier + final int PROD_INTERFACEDECLARATION_INTERFACE_IDENTIFIER3 = 218; // ::= interface Identifier + final int PROD_INTERFACEDECLARATION_INTERFACE_IDENTIFIER4 = 219; // ::= interface Identifier +// final int PROD_EXTENDSINTERFACES_EXTENDS = 220; // ::= extends +// final int PROD_EXTENDSINTERFACES_COMMA = 221; // ::= ',' +// final int PROD_INTERFACEBODY_LBRACE_RBRACE = 222; // ::= '{' '}' +// final int PROD_INTERFACEBODY_LBRACE_RBRACE2 = 223; // ::= '{' '}' +// final int PROD_INTERFACEMEMBERDECLARATIONS = 224; // ::= +// final int PROD_INTERFACEMEMBERDECLARATIONS2 = 225; // ::= +// final int PROD_INTERFACEMEMBERDECLARATION = 226; // ::= +// final int PROD_INTERFACEMEMBERDECLARATION2 = 227; // ::= +// final int PROD_INTERFACEMEMBERDECLARATION3 = 228; // ::= +// final int PROD_INTERFACEMEMBERDECLARATION4 = 229; // ::= +// final int PROD_CONSTANTDECLARATION = 230; // ::= +// final int PROD_ARRAYINITIALIZER_LBRACE_COMMA_RBRACE = 231; // ::= '{' ',' '}' + final int PROD_ARRAYINITIALIZER_LBRACE_RBRACE = 232; // ::= '{' '}' +// final int PROD_ARRAYINITIALIZER_LBRACE_COMMA_RBRACE2 = 233; // ::= '{' ',' '}' +// final int PROD_ARRAYINITIALIZER_LBRACE_RBRACE2 = 234; // ::= '{' '}' +// final int PROD_VARIABLEINITIALIZERS = 235; // ::= + final int PROD_VARIABLEINITIALIZERS_COMMA = 236; // ::= ',' +// final int PROD_BLOCK_LBRACE_RBRACE = 237; // ::= '{' '}' +// final int PROD_BLOCK_LBRACE_RBRACE2 = 238; // ::= '{' '}' +// final int PROD_BLOCKSTATEMENTS = 239; // ::= + final int PROD_BLOCKSTATEMENTS2 = 240; // ::= +// final int PROD_BLOCKSTATEMENT = 241; // ::= +// final int PROD_BLOCKSTATEMENT2 = 242; // ::= +// final int PROD_BLOCKSTATEMENT3 = 243; // ::= +// final int PROD_LOCALVARIABLEDECLARATIONSTATEMENT_SEMI = 244; // ::= ';' + final int PROD_LOCALVARIABLEDECLARATION_FINAL = 245; // ::= final + final int PROD_LOCALVARIABLEDECLARATION = 246; // ::= + final int PROD_LOCALCLASSDECLARATION = 247; // ::= +// final int PROD_LOCALCLASSDECLARATION2 = 248; // ::= +// final int PROD_LOCALCLASSMODIFIERS_ABSTRACT = 249; // ::= abstract +// final int PROD_LOCALCLASSMODIFIERS_FINAL = 250; // ::= final +// final int PROD_STATEMENT = 251; // ::= +// final int PROD_STATEMENT2 = 252; // ::= +// final int PROD_STATEMENT3 = 253; // ::= +// final int PROD_STATEMENT4 = 254; // ::= +// final int PROD_STATEMENT5 = 255; // ::= +// final int PROD_STATEMENT6 = 256; // ::= +// final int PROD_STATEMENTNOSHORTIF = 257; // ::= +// final int PROD_STATEMENTNOSHORTIF2 = 258; // ::= +// final int PROD_STATEMENTNOSHORTIF3 = 259; // ::= +// final int PROD_STATEMENTNOSHORTIF4 = 260; // ::= +// final int PROD_STATEMENTNOSHORTIF5 = 261; // ::= +// final int PROD_STATEMENTWITHOUTTRAILINGSUBSTATEMENT = 262; // ::= +// final int PROD_STATEMENTWITHOUTTRAILINGSUBSTATEMENT2 = 263; // ::= +// final int PROD_STATEMENTWITHOUTTRAILINGSUBSTATEMENT3 = 264; // ::= +// final int PROD_STATEMENTWITHOUTTRAILINGSUBSTATEMENT4 = 265; // ::= +// final int PROD_STATEMENTWITHOUTTRAILINGSUBSTATEMENT5 = 266; // ::= +// final int PROD_STATEMENTWITHOUTTRAILINGSUBSTATEMENT6 = 267; // ::= +// final int PROD_STATEMENTWITHOUTTRAILINGSUBSTATEMENT7 = 268; // ::= +// final int PROD_STATEMENTWITHOUTTRAILINGSUBSTATEMENT8 = 269; // ::= +// final int PROD_STATEMENTWITHOUTTRAILINGSUBSTATEMENT9 = 270; // ::= +// final int PROD_STATEMENTWITHOUTTRAILINGSUBSTATEMENT10 = 271; // ::= +// final int PROD_STATEMENTWITHOUTTRAILINGSUBSTATEMENT11 = 272; // ::= +// final int PROD_STATEMENTWITHOUTTRAILINGSUBSTATEMENT12 = 273; // ::= +// final int PROD_EMPTYSTATEMENT_SEMI = 274; // ::= ';' + final int PROD_LABELEDSTATEMENT_IDENTIFIER_COLON = 275; // ::= Identifier ':' + final int PROD_LABELEDSTATEMENTNOSHORTIF_IDENTIFIER_COLON = 276; // ::= Identifier ':' + final int PROD_EXPRESSIONSTATEMENT_SEMI = 277; // ::= ';' +// final int PROD_STATEMENTEXPRESSION = 278; // ::= +// final int PROD_STATEMENTEXPRESSION2 = 279; // ::= +// final int PROD_STATEMENTEXPRESSION3 = 280; // ::= +// final int PROD_STATEMENTEXPRESSION4 = 281; // ::= +// final int PROD_STATEMENTEXPRESSION5 = 282; // ::= +// final int PROD_STATEMENTEXPRESSION6 = 283; // ::= +// final int PROD_STATEMENTEXPRESSION7 = 284; // ::= + final int PROD_IFTHENSTATEMENT_IF_LPAREN_RPAREN = 285; // ::= if '(' ')' + final int PROD_IFTHENELSESTATEMENT_IF_LPAREN_RPAREN_ELSE = 286; // ::= if '(' ')' else + final int PROD_IFTHENELSESTATEMENTNOSHORTIF_IF_LPAREN_RPAREN_ELSE = 287; // ::= if '(' ')' else + final int PROD_SWITCHSTATEMENT_SWITCH_LPAREN_RPAREN = 288; // ::= switch '(' ')' + final int PROD_SWITCHBLOCK_LBRACE_RBRACE = 289; // ::= '{' '}' +// final int PROD_SWITCHBLOCK_LBRACE_RBRACE2 = 290; // ::= '{' '}' + final int PROD_SWITCHBLOCK_LBRACE_RBRACE3 = 291; // ::= '{' '}' + final int PROD_SWITCHBLOCK_LBRACE_RBRACE4 = 292; // ::= '{' '}' +// final int PROD_SWITCHBLOCKSTATEMENTGROUPS = 293; // ::= + final int PROD_SWITCHBLOCKSTATEMENTGROUPS2 = 294; // ::= +// final int PROD_SWITCHBLOCKSTATEMENTGROUP = 295; // ::= +// final int PROD_SWITCHLABELS = 296; // ::= + final int PROD_SWITCHLABELS2 = 297; // ::= +// final int PROD_SWITCHLABEL_CASE_COLON = 298; // ::= case ':' + final int PROD_SWITCHLABEL_DEFAULT_COLON = 299; // ::= default ':' + final int PROD_WHILESTATEMENT_WHILE_LPAREN_RPAREN = 300; // ::= while '(' ')' + final int PROD_WHILESTATEMENTNOSHORTIF_WHILE_LPAREN_RPAREN = 301; // ::= while '(' ')' + final int PROD_DOSTATEMENT_DO_WHILE_LPAREN_RPAREN_SEMI = 302; // ::= do while '(' ')' ';' +// final int PROD_FORSTATEMENT = 303; // ::= +// final int PROD_FORSTATEMENT2 = 304; // ::= + final int PROD_BASICFORSTATEMENT_FOR_LPAREN_SEMI_SEMI_RPAREN = 305; // ::= for '(' ';' ';' ')' +// final int PROD_EXPRESSIONOPT = 306; // ::= +// final int PROD_EXPRESSIONOPT2 = 307; // ::= +// final int PROD_FORSTATEMENTNOSHORTIF = 308; // ::= +// final int PROD_FORSTATEMENTNOSHORTIF2 = 309; // ::= + final int PROD_BASICFORSTATEMENTNOSHORTIF_FOR_LPAREN_SEMI_SEMI_RPAREN = 310; // ::= for '(' ';' ';' ')' +// final int PROD_FORINITOPT = 311; // ::= +// final int PROD_FORINITOPT2 = 312; // ::= +// final int PROD_FORINITOPT3 = 313; // ::= +// final int PROD_FORUPDATEOPT = 314; // ::= +// final int PROD_FORUPDATEOPT2 = 315; // ::= + final int PROD_ENHANCEDFORSTATEMENT_FOR_LPAREN_FINAL_COLON_RPAREN = 316; // ::= for '(' final ':' ')' + final int PROD_ENHANCEDFORSTATEMENT_FOR_LPAREN_COLON_RPAREN = 317; // ::= for '(' ':' ')' + final int PROD_ENHANCEDFORSTATEMENTNOSHORTIF_FOR_LPAREN_FINAL_COLON_RPAREN = 318; // ::= for '(' final ':' ')' + final int PROD_ENHANCEDFORSTATEMENTNOSHORTIF_FOR_LPAREN_COLON_RPAREN = 319; // ::= for '(' ':' ')' +// final int PROD_STATEMENTEXPRESSIONLIST = 320; // ::= +// final int PROD_STATEMENTEXPRESSIONLIST_COMMA = 321; // ::= ',' + final int PROD_BREAKSTATEMENT_BREAK_IDENTIFIER_SEMI = 322; // ::= break Identifier ';' + final int PROD_BREAKSTATEMENT_BREAK_SEMI = 323; // ::= break ';' + final int PROD_CONTINUESTATEMENT_CONTINUE_IDENTIFIER_SEMI = 324; // ::= continue Identifier ';' + final int PROD_CONTINUESTATEMENT_CONTINUE_SEMI = 325; // ::= continue ';' + final int PROD_RETURNSTATEMENT_RETURN_SEMI = 326; // ::= return ';' + final int PROD_RETURNSTATEMENT_RETURN_SEMI2 = 327; // ::= return ';' + final int PROD_THROWSTATEMENT_THROW_SEMI = 328; // ::= throw ';' + final int PROD_SYNCHRONIZEDSTATEMENT_SYNCHRONIZED_LPAREN_RPAREN = 329; // ::= synchronized '(' ')' + final int PROD_TRYSTATEMENT_TRY = 330; // ::= try + final int PROD_TRYSTATEMENT_TRY2 = 331; // ::= try + final int PROD_TRYSTATEMENT_TRY3 = 332; // ::= try + final int PROD_TRYSTATEMENT_TRY4 = 333; // ::= try + final int PROD_TRYSTATEMENT_TRY5 = 334; // ::= try + final int PROD_TRYSTATEMENT_TRY6 = 335; // ::= try + final int PROD_TRYSTATEMENT_TRY7 = 336; // ::= try +// final int PROD_CATCHES = 337; // ::= + final int PROD_CATCHES2 = 338; // ::= +// final int PROD_CATCHCLAUSE_CATCH_LPAREN_RPAREN = 339; // ::= catch '(' ')' + final int PROD_CATCHFORMALPARAMETER_FINAL = 340; // ::= final +// final int PROD_CATCHFORMALPARAMETER = 341; // ::= +// final int PROD_CATCHTYPE = 342; // ::= + final int PROD_CATCHTYPE_PIPE = 343; // ::= '|' +// final int PROD_FINALLY_FINALLY = 344; // ::= finally + final int PROD_ASSERTSTATEMENT_ASSERT = 345; // ::= assert +// final int PROD_ASSERTMESSAGEOPT_COLON = 346; // ::= ':' +// final int PROD_ASSERTMESSAGEOPT = 347; // ::= +// final int PROD_RESOURCESPECIFICATION_LPAREN_RPAREN = 348; // ::= '(' ')' +// final int PROD_RESOURCESPECIFICATION_LPAREN_SEMI_RPAREN = 349; // ::= '(' ';' ')' +// final int PROD_RESOURCES = 350; // ::= + final int PROD_RESOURCES_SEMI = 351; // ::= ';' +// final int PROD_RESOURCE_EQ = 352; // ::= '=' + final int PROD_RESOURCE_FINAL_EQ = 353; // ::= final '=' +// final int PROD_PRIMARY = 354; // ::= +// final int PROD_PRIMARY2 = 355; // ::= +// final int PROD_PRIMARYNONEWARRAY = 356; // ::= +// final int PROD_PRIMARYNONEWARRAY_THIS = 357; // ::= this + final int PROD_PRIMARYNONEWARRAY_LPAREN_RPAREN = 358; // ::= '(' ')' +// final int PROD_PRIMARYNONEWARRAY2 = 359; // ::= +// final int PROD_PRIMARYNONEWARRAY3 = 360; // ::= +// final int PROD_PRIMARYNONEWARRAY4 = 361; // ::= +// final int PROD_PRIMARYNONEWARRAY5 = 362; // ::= +// final int PROD_PRIMARYNONEWARRAY6 = 363; // ::= + final int PROD_CLASSINSTANCECREATIONEXPRESSION_NEW_LPAREN_RPAREN = 364; // ::= new '(' ')' + final int PROD_CLASSINSTANCECREATIONEXPRESSION_NEW_LPAREN_RPAREN2 = 365; // ::= new '(' ')' + final int PROD_CLASSINSTANCECREATIONEXPRESSION_NEW_LPAREN_RPAREN3 = 366; // ::= new '(' ')' + final int PROD_CLASSINSTANCECREATIONEXPRESSION_NEW_LPAREN_RPAREN4 = 367; // ::= new '(' ')' +// final int PROD_ARGUMENTLIST = 368; // ::= + final int PROD_ARGUMENTLIST_COMMA = 369; // ::= ',' + final int PROD_ARRAYCREATIONEXPRESSION_NEW = 370; // ::= new + final int PROD_ARRAYCREATIONEXPRESSION_NEW2 = 371; // ::= new + final int PROD_ARRAYCREATIONEXPRESSION_NEW3 = 372; // ::= new + final int PROD_ARRAYCREATIONEXPRESSION_NEW4 = 373; // ::= new + final int PROD_ARRAYCREATIONEXPRESSION_NEW5 = 374; // ::= new + final int PROD_ARRAYCREATIONEXPRESSION_NEW6 = 375; // ::= new +// final int PROD_DIMEXPRS = 376; // ::= +// final int PROD_DIMEXPRS2 = 377; // ::= +// final int PROD_DIMEXPR_LBRACKET_RBRACKET = 378; // ::= '[' ']' +// final int PROD_DIMS_LBRACKET_RBRACKET = 379; // ::= '[' ']' +// final int PROD_DIMS_LBRACKET_RBRACKET2 = 380; // ::= '[' ']' + final int PROD_FIELDACCESS_DOT_IDENTIFIER = 381; // ::= '.' Identifier + final int PROD_FIELDACCESS_SUPER_DOT_IDENTIFIER = 382; // ::= super '.' Identifier + final int PROD_METHODINVOCATION_LPAREN_RPAREN = 383; // ::= '(' ')' + final int PROD_METHODINVOCATION_LPAREN_RPAREN2 = 384; // ::= '(' ')' + final int PROD_METHODINVOCATION_DOT_IDENTIFIER_LPAREN_RPAREN = 385; // ::= '.' Identifier '(' ')' + final int PROD_METHODINVOCATION_DOT_IDENTIFIER_LPAREN_RPAREN2 = 386; // ::= '.' Identifier '(' ')' + final int PROD_METHODINVOCATION_SUPER_DOT_IDENTIFIER_LPAREN_RPAREN = 387; // ::= super '.' Identifier '(' ')' + final int PROD_METHODINVOCATION_SUPER_DOT_IDENTIFIER_LPAREN_RPAREN2 = 388; // ::= super '.' Identifier '(' ')' + final int PROD_PROCESSINGTYPECONVERSION_INT_LPAREN_RPAREN = 389; // ::= int '(' ')' + final int PROD_PROCESSINGTYPECONVERSION_BYTE_LPAREN_RPAREN = 390; // ::= byte '(' ')' + final int PROD_PROCESSINGTYPECONVERSION_CHAR_LPAREN_RPAREN = 391; // ::= char '(' ')' + final int PROD_PROCESSINGTYPECONVERSION_FLOAT_LPAREN_RPAREN = 392; // ::= float '(' ')' + final int PROD_PROCESSINGTYPECONVERSION_BOOLEAN_LPAREN_RPAREN = 393; // ::= boolean '(' ')' + final int PROD_ARRAYACCESS_LBRACKET_RBRACKET = 394; // ::= '[' ']' + final int PROD_ARRAYACCESS_LBRACKET_RBRACKET2 = 395; // ::= '[' ']' +// final int PROD_POSTFIXEXPRESSION = 396; // ::= +// final int PROD_POSTFIXEXPRESSION2 = 397; // ::= +// final int PROD_POSTFIXEXPRESSION3 = 398; // ::= +// final int PROD_POSTFIXEXPRESSION4 = 399; // ::= + final int PROD_POSTINCREMENTEXPRESSION_PLUSPLUS = 400; // ::= '++' + final int PROD_POSTDECREMENTEXPRESSION_MINUSMINUS = 401; // ::= '--' +// final int PROD_UNARYEXPRESSION = 402; // ::= +// final int PROD_UNARYEXPRESSION2 = 403; // ::= + final int PROD_UNARYEXPRESSION_PLUS = 404; // ::= '+' + final int PROD_UNARYEXPRESSION_MINUS = 405; // ::= '-' +// final int PROD_UNARYEXPRESSION3 = 406; // ::= + final int PROD_PREINCREMENTEXPRESSION_PLUSPLUS = 407; // ::= '++' + final int PROD_PREDECREMENTEXPRESSION_MINUSMINUS = 408; // ::= '--' +// final int PROD_UNARYEXPRESSIONNOTPLUSMINUS = 409; // ::= + final int PROD_UNARYEXPRESSIONNOTPLUSMINUS_TILDE = 410; // ::= '~' + final int PROD_UNARYEXPRESSIONNOTPLUSMINUS_EXCLAM = 411; // ::= '!' +// final int PROD_UNARYEXPRESSIONNOTPLUSMINUS2 = 412; // ::= + final int PROD_CASTEXPRESSION_LPAREN_RPAREN = 413; // ::= '(' ')' + final int PROD_CASTEXPRESSION_LPAREN_RPAREN2 = 414; // ::= '(' ')' + final int PROD_CASTEXPRESSION_LPAREN_RPAREN3 = 415; // ::= '(' ')' + final int PROD_CASTEXPRESSION_LPAREN_RPAREN4 = 416; // ::= '(' ')' +// final int PROD_MULTIPLICATIVEEXPRESSION = 417; // ::= + final int PROD_MULTIPLICATIVEEXPRESSION_TIMES = 418; // ::= '*' + final int PROD_MULTIPLICATIVEEXPRESSION_DIV = 419; // ::= '/' + final int PROD_MULTIPLICATIVEEXPRESSION_PERCENT = 420; // ::= '%' +// final int PROD_ADDITIVEEXPRESSION = 421; // ::= + final int PROD_ADDITIVEEXPRESSION_PLUS = 422; // ::= '+' + final int PROD_ADDITIVEEXPRESSION_MINUS = 423; // ::= '-' +// final int PROD_SHIFTEXPRESSION = 424; // ::= + final int PROD_SHIFTEXPRESSION_LTLT = 425; // ::= '<<' + final int PROD_SHIFTEXPRESSION_GTGT = 426; // ::= '>>' + final int PROD_SHIFTEXPRESSION_GTGTGT = 427; // ::= '>>>' +// final int PROD_RELATIONALEXPRESSION = 428; // ::= + final int PROD_RELATIONALEXPRESSION_LT = 429; // ::= '<' + final int PROD_RELATIONALEXPRESSION_GT = 430; // ::= '>' + final int PROD_RELATIONALEXPRESSION_LTEQ = 431; // ::= '<=' + final int PROD_RELATIONALEXPRESSION_GTEQ = 432; // ::= '>=' + final int PROD_RELATIONALEXPRESSION_INSTANCEOF = 433; // ::= instanceof +// final int PROD_EQUALITYEXPRESSION = 434; // ::= + final int PROD_EQUALITYEXPRESSION_EQEQ = 435; // ::= '==' + final int PROD_EQUALITYEXPRESSION_EXCLAMEQ = 436; // ::= '!=' +// final int PROD_ANDEXPRESSION = 437; // ::= + final int PROD_ANDEXPRESSION_AMP = 438; // ::= '&' +// final int PROD_EXCLUSIVEOREXPRESSION = 439; // ::= + final int PROD_EXCLUSIVEOREXPRESSION_CARET = 440; // ::= '^' +// final int PROD_INCLUSIVEOREXPRESSION = 441; // ::= + final int PROD_INCLUSIVEOREXPRESSION_PIPE = 442; // ::= '|' +// final int PROD_CONDITIONALANDEXPRESSION = 443; // ::= + final int PROD_CONDITIONALANDEXPRESSION_AMPAMP = 444; // ::= '&&' +// final int PROD_CONDITIONALOREXPRESSION = 445; // ::= + final int PROD_CONDITIONALOREXPRESSION_PIPEPIPE = 446; // ::= '||' +// final int PROD_CONDITIONALEXPRESSION = 447; // ::= + final int PROD_CONDITIONALEXPRESSION_QUESTION_COLON = 448; // ::= '?' ':' +// final int PROD_ASSIGNMENTEXPRESSION = 449; // ::= +// final int PROD_ASSIGNMENTEXPRESSION2 = 450; // ::= + final int PROD_ASSIGNMENT = 451; // ::= +// final int PROD_LEFTHANDSIDE = 452; // ::= +// final int PROD_LEFTHANDSIDE2 = 453; // ::= +// final int PROD_LEFTHANDSIDE3 = 454; // ::= + final int PROD_ASSIGNMENTOPERATOR_EQ = 455; // ::= '=' +// final int PROD_ASSIGNMENTOPERATOR_TIMESEQ = 456; // ::= '*=' +// final int PROD_ASSIGNMENTOPERATOR_DIVEQ = 457; // ::= '/=' +// final int PROD_ASSIGNMENTOPERATOR_PERCENTEQ = 458; // ::= '%=' + final int PROD_ASSIGNMENTOPERATOR_PLUSEQ = 459; // ::= '+=' + final int PROD_ASSIGNMENTOPERATOR_MINUSEQ = 460; // ::= '-=' +// final int PROD_ASSIGNMENTOPERATOR_LTLTEQ = 461; // ::= '<<=' +// final int PROD_ASSIGNMENTOPERATOR_GTGTEQ = 462; // ::= '>>=' +// final int PROD_ASSIGNMENTOPERATOR_GTGTGTEQ = 463; // ::= '>>>=' +// final int PROD_ASSIGNMENTOPERATOR_AMPEQ = 464; // ::= '&=' +// final int PROD_ASSIGNMENTOPERATOR_CARETEQ = 465; // ::= '^=' +// final int PROD_ASSIGNMENTOPERATOR_PIPEEQ = 466; // ::= '|=' +// final int PROD_EXPRESSION = 467; // ::= +// final int PROD_CONSTANTEXPRESSION = 468; // ::= }; //----------------------------- Comment configuration ----------------------------- @@ -1066,8 +1068,8 @@ private interface RuleConstants // START KGU#1122 2024-03-12: Bugfix #1136 Temporary replacements for certain angular brackets /** A String array with temporary substitutes for '<' (at [0]), ',' (at [1]), '>' (at [2]), - * '[' (at [3]), and ']' (at [4]) within type castings */ - static final String[] ANG_BRACK_SUBST = {"íí", "îî", "ìì", "úú", "ùù"}; + * '[' (at [3]), ']' (at [4]), and '?' (at [5]) within type castings */ + static final String[] ANG_BRACK_SUBST = {"íí", "îî", "ìì", "úú", "ùù", "ûû"}; // END KGU#1122 2024-03-12 /** @@ -1181,7 +1183,7 @@ protected File prepareTextfile(String _textToParse, String _encoding) throws Par castMatcher.reset(strLine); arrayDeclMatcher.reset(strLine); if (castMatcher.matches() || arrayDeclMatcher.matches() - || strLine.contains(">>") || strLine.contains("?>") || strLine.contains("<>")) { + || strLine.contains(">>") || strLine.contains("<>")) { boolean replaced = false; StringList tokens = Element.splitLexically(strLine, true); // Initially decompose all ">>" tokens into ">", ">" ... @@ -1197,23 +1199,13 @@ protected File prepareTextfile(String _textToParse, String _encoding) throws Par replaced = true; } // END KGU#1122 2024-03-18 - // ... and remove all token sequences "<", "?", ">" and "<", ">". + // ... and remove all token sequences "<", ">". posAngBr = -1; while ((posAngBr = tokens.indexOf(">", posAngBr+1)) >= 0) { int pos = posAngBr - 1; while (pos > 0 && tokens.get(pos).isBlank()) pos--; - if (pos > 0 && tokens.get(pos).equals("?")) { - // Look for preceding "<" in order to verify "<", "?", ">" - while (--pos >= 0 && tokens.get(pos).isBlank()); - if (pos >= 0 && tokens.get(pos).equals("<")) { - // Found token sequence "<", "?", ">", so efface it - tokens.remove(pos, posAngBr+1); - replaced = true; - posAngBr = pos; - } - } // START KGU#1122 2024-03-18: Bugfix #1136 - else if (pos > 0 && tokens.get(pos).equals("<")) { + if (pos > 0 && tokens.get(pos).equals("<")) { // Found token sequence "<", ">", which can only be an empty type param list tokens.remove(pos, posAngBr+1); replaced = true; @@ -1324,7 +1316,7 @@ else if (!isCast && angCount == 0) { } } else if (!Function.testIdentifier(token, false, "$") - && !(token.length() == 1 && "[],.".contains(token))) { + && !(token.length() == 1 && "[],.?".contains(token))) { break; } posPar0--; @@ -1338,6 +1330,7 @@ && isTypeSpecificationList(tokens.subSequence(posId, posAngBr+1))) { tokens.replaceAllBetween(",", ANG_BRACK_SUBST[1], true, posPar0+1, posPar1); tokens.replaceAllBetween("[", ANG_BRACK_SUBST[3], true, posPar0+1, posPar1); tokens.replaceAllBetween("]", ANG_BRACK_SUBST[4], true, posPar0+1, posPar1); + tokens.replaceAllBetween("?", ANG_BRACK_SUBST[5], true, posPar0+1, posPar1); // Ensure the operator symbols will be restored after the parsing this.replacedIds.putIfAbsent(tokens.concatenate("", posId, posAngBr+1), origSequence); replaced = true; diff --git a/src/lu/fisch/structorizer/parsers/JavaSE8.egt b/src/lu/fisch/structorizer/parsers/JavaSE8.egt index 608f592e79d0b54b114d6a71725073b0cddfb477..ce3d8c0ce4c07ffccee9d27d7a11b162c559e644 100644 GIT binary patch delta 52969 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 delta 53630 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 diff --git a/src/lu/fisch/structorizer/parsers/JavaSE8.grm b/src/lu/fisch/structorizer/parsers/JavaSE8.grm index f8826d69..541bdbce 100644 --- a/src/lu/fisch/structorizer/parsers/JavaSE8.grm +++ b/src/lu/fisch/structorizer/parsers/JavaSE8.grm @@ -62,7 +62,7 @@ ! V 0.8 2024-03-18 Kay Gürtzig Identifier syntax extended to {All Latin} (as Java accepts them in fact), ! introduced (#1142), enum without enabled (#1143) ! V 0.9 2024-03-20 Kay Gürtzig Missing empty rule for added (#1150), -! tab added to {String Char} (#1151) +! tab added to {String Char} (#1151), '?' enabled as (#1136) ! ----------------------------------------------------------------------- "Name" = 'Java SE 8' @@ -292,6 +292,7 @@ Comment Line = '//' ::= Identifier + | '?' ::= 'extends' From a2cc2f0c7eed80130d0c950afa44a25f3a029c59 Mon Sep 17 00:00:00 2001 From: codemanyak Date: Thu, 21 Mar 2024 07:02:26 +0100 Subject: [PATCH 8/8] Further refinement of #1136 (removal of , etc.) --- src/lu/fisch/structorizer/parsers/JavaParser.java | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/lu/fisch/structorizer/parsers/JavaParser.java b/src/lu/fisch/structorizer/parsers/JavaParser.java index c9896ed6..b5e1dae8 100644 --- a/src/lu/fisch/structorizer/parsers/JavaParser.java +++ b/src/lu/fisch/structorizer/parsers/JavaParser.java @@ -1331,6 +1331,8 @@ && isTypeSpecificationList(tokens.subSequence(posId, posAngBr+1))) { tokens.replaceAllBetween("[", ANG_BRACK_SUBST[3], true, posPar0+1, posPar1); tokens.replaceAllBetween("]", ANG_BRACK_SUBST[4], true, posPar0+1, posPar1); tokens.replaceAllBetween("?", ANG_BRACK_SUBST[5], true, posPar0+1, posPar1); + // Remove pure "" sequences as questionmarks may cause trouble later + origSequence = origSequence.replaceAll("<\\?(,\\?)*>", ""); // Ensure the operator symbols will be restored after the parsing this.replacedIds.putIfAbsent(tokens.concatenate("", posId, posAngBr+1), origSequence); replaced = true;