diff --git a/pom.xml b/pom.xml index 6a10a82..e190088 100644 --- a/pom.xml +++ b/pom.xml @@ -1,85 +1,112 @@ - - 4.0.0 - - cb2java - net.sf.cb2java - cb2java - 5.3 - https://github.com/devstopfix/cb2java + 4.0.0 - Library that allows dynamic access to Copybook structures at run-time from a Java application + cb2java + net.sf.cb2java + cb2java + 5.3 + https://github.com/montoyaedu/cb2java - - - dubwai - http://sourceforge.net/users/dubwai - - developer - - - - ptrthomas - Peter Thomas - http://ptrthomas.users.sourceforge.net/ - - developer - - - - montoyaedu - H. Eduardo Montoya Sánchez - https://github.com/montoyaedu - - + Library that allows dynamic access to Copybook structures at run-time from a Java application - - - GNU GENERAL PUBLIC LICENSE Version 1, February 1989 - http://www.gnu.org/licenses/gpl-1.0.txt - See ./LICENSE - - + + + dubwai + http://sourceforge.net/users/dubwai + + developer + + + + ptrthomas + Peter Thomas + http://ptrthomas.users.sourceforge.net/ + + developer + + + + montoyaedu + H. Eduardo Montoya Sánchez + https://github.com/montoyaedu + + developer + + + - - https://github.com/devstopfix/cb2java - scm:git:git://github.com/devstopfix/cb2java.git - + + + GNU GENERAL PUBLIC LICENSE Version 1, February 1989 + http://www.gnu.org/licenses/gpl-1.0.txt + See ./LICENSE + + - - - - - src/main/java - - **/lexer.dat - **/parser.dat - - - - - - org.apache.maven.plugins - maven-compiler-plugin - 2.3.2 - - 1.6 - 1.6 - - - - + + https://github.com/montoyaedu/cb2java + scm:git:git://github.com/montoyaedu/cb2java.git + - - - junit - junit - 3.8.1 - test - - + + + + + src/main/java + + **/lexer.dat + **/parser.dat + + + + + + org.apache.maven.plugins + maven-compiler-plugin + 2.3.2 + + 1.6 + 1.6 + + + + + org.apache.maven.plugins + maven-source-plugin + 2.2.1 + + + attach-sources + package + + jar + + + + + + + + + + + junit + junit + 3.8.1 + test + + + + org.slf4j + slf4j-api + 1.7.6 + + + + \ No newline at end of file diff --git a/src/main/java/net/sf/cb2java/Settings.java b/src/main/java/net/sf/cb2java/Settings.java index c678b01..fd665db 100644 --- a/src/main/java/net/sf/cb2java/Settings.java +++ b/src/main/java/net/sf/cb2java/Settings.java @@ -1,110 +1,107 @@ -/** - * cb2java - Dynamic COBOL copybook parser for Java. - * Copyright (C) 2006 James Watson - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 1, or (at your option) - * any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. - */ -package net.sf.cb2java; - -import java.util.Properties; -import net.sf.cb2java.types.Numeric; -import net.sf.cb2java.types.Numeric.Position; - -public interface Settings -{ - public static Settings DEFAULT = new Default(); - - String getEncoding(); - - Values getValues(); - - boolean getLittleEndian(); - - String getFloatConversion(); - - Numeric.Position getSignPosition(); - - public static class Default implements Settings - { - private static final String DEFAULT_ENCODING; - private static final boolean DEFAULT_LITTLE_ENDIAN; - private static final String DEFAULT_FLOAT_CONVERSION; - private static final Numeric.Position DEFAULT_DEFAULT_SIGN_POSITION; - private static final Values DEFAULT_VALUES = new Values(); - - static { - Properties props = new Properties(); - - try { - props.load(ClassLoader.getSystemResourceAsStream("copybook.props")); - } catch (Exception e) { - // TODO logging - } - - DEFAULT_ENCODING = getSetting("encoding", System.getProperty("file.encoding"), props); - DEFAULT_LITTLE_ENDIAN = "false".equals(getSetting("little-endian", "false", props)); - DEFAULT_FLOAT_CONVERSION = getSetting("float-conversion", - "net.sf.cb2java.copybook.floating.IEEE754", props); - DEFAULT_DEFAULT_SIGN_POSITION = "leading".equalsIgnoreCase( - getSetting("default-sign-position", "trailing", props)) ? Numeric.LEADING : Numeric.TRAILING; - } - - private static String getSetting(String name, String defaultValue, Properties props) - { - try { - String value = System.getProperty("cb2java." + name, defaultValue); - - try { - try { - value = props.getProperty("encoding", value); - } catch (Exception e) { - // TODO logging - } - } catch (Exception e) { - // TODO logging - } - - return value; - } catch (Exception e) { - return defaultValue; - } - } - - public String getEncoding() - { - return DEFAULT_ENCODING; - } - - public String getFloatConversion() - { - return DEFAULT_FLOAT_CONVERSION; - } - - public boolean getLittleEndian() - { - return DEFAULT_LITTLE_ENDIAN; - } - - public Values getValues() - { - return DEFAULT_VALUES; - } - - public Position getSignPosition() - { - return DEFAULT_DEFAULT_SIGN_POSITION; - } - } -} +/** + * cb2java - Dynamic COBOL copybook parser for Java. + * Copyright (C) 2006 James Watson + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 1, or (at your option) + * any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + */ +package net.sf.cb2java; + +import java.util.Properties; + +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import net.sf.cb2java.types.Numeric; +import net.sf.cb2java.types.Numeric.Position; + +public interface Settings +{ + public static Settings DEFAULT = new Default(); + + + String getEncoding(); + + Values getValues(); + + boolean getLittleEndian(); + + String getFloatConversion(); + + Numeric.Position getSignPosition(); + + public static class Default implements Settings + { + private static final Logger LOGGER = LoggerFactory.getLogger(Settings.class); + + private static final String DEFAULT_ENCODING; + private static final boolean DEFAULT_LITTLE_ENDIAN; + private static final String DEFAULT_FLOAT_CONVERSION; + private static final Numeric.Position DEFAULT_DEFAULT_SIGN_POSITION; + private static final Values DEFAULT_VALUES = new Values(); + + static { + Properties props = new Properties(); + + try { + props.load(Settings.class.getResourceAsStream("/copybook.props")); + } catch (Exception e) { + LOGGER.warn("Could not load 'copybook.props' file, reverting to defaults.", e.getMessage()); + } + + DEFAULT_ENCODING = getSetting("encoding", System.getProperty("file.encoding"), props); + DEFAULT_LITTLE_ENDIAN = "false".equals(getSetting("little-endian", "false", props)); + DEFAULT_FLOAT_CONVERSION = getSetting("float-conversion", + "net.sf.cb2java.copybook.floating.IEEE754", props); + DEFAULT_DEFAULT_SIGN_POSITION = "leading".equalsIgnoreCase( + getSetting("default-sign-position", "trailing", props)) ? Numeric.LEADING : Numeric.TRAILING; + } + + private static String getSetting(String name, String defaultValue, Properties props) + { + try { + String value = System.getProperty("cb2java." + name, defaultValue); + value = props.getProperty(name, value); + return value; + } catch (Exception e) { + return defaultValue; + } + } + + public String getEncoding() + { + return DEFAULT_ENCODING; + } + + public String getFloatConversion() + { + return DEFAULT_FLOAT_CONVERSION; + } + + public boolean getLittleEndian() + { + return DEFAULT_LITTLE_ENDIAN; + } + + public Values getValues() + { + return DEFAULT_VALUES; + } + + public Position getSignPosition() + { + return DEFAULT_DEFAULT_SIGN_POSITION; + } + } +} diff --git a/src/main/java/net/sf/cb2java/Value.java b/src/main/java/net/sf/cb2java/Value.java index ab97b8b..99638c3 100644 --- a/src/main/java/net/sf/cb2java/Value.java +++ b/src/main/java/net/sf/cb2java/Value.java @@ -28,16 +28,17 @@ public abstract class Value public static final Side LEFT = new Side(); public static final Side RIGHT = new Side(); - private final String encoding; + private final Values values; - public Value(String encoding) + public Value(Values values) { - this.encoding = encoding; + this.values = values; } public String getEncoding() { - return encoding; + String valueEncoding = values.getEncoding(); + return valueEncoding == null ? Settings.DEFAULT.getEncoding(): valueEncoding; } public byte[] get(int length) diff --git a/src/main/java/net/sf/cb2java/Values.java b/src/main/java/net/sf/cb2java/Values.java index 742402d..3311adf 100644 --- a/src/main/java/net/sf/cb2java/Values.java +++ b/src/main/java/net/sf/cb2java/Values.java @@ -22,7 +22,7 @@ public class Values { - protected String encoding; + private String encoding; public Values() { @@ -41,13 +41,17 @@ public void setEncoding(String encoding) } } + protected String getEncoding() { + return encoding; + } + public class Literal extends Value { private final String value; public Literal(final String value) { - super(encoding); + super(Values.this); this.value = value; } @@ -73,7 +77,7 @@ private class StringBasedValue extends Value { public StringBasedValue(Values parent) { - super(encoding); + super(Values.this); } byte bite; @@ -86,7 +90,7 @@ public byte getByte() public final Value SPACES = new StringBasedValue(Values.this); - public final Value LOW_VALUES = new Value(encoding) { + public final Value LOW_VALUES = new Value(Values.this) { public byte getByte() { @@ -94,7 +98,7 @@ public byte getByte() } }; - public final Value HIGH_VALUES = new Value(encoding) { + public final Value HIGH_VALUES = new Value(Values.this) { public byte getByte() { diff --git a/src/main/java/net/sf/cb2java/copybook/Copybook.java b/src/main/java/net/sf/cb2java/copybook/Copybook.java index 67f0b71..70c0d6d 100644 --- a/src/main/java/net/sf/cb2java/copybook/Copybook.java +++ b/src/main/java/net/sf/cb2java/copybook/Copybook.java @@ -48,7 +48,7 @@ public class Copybook extends Group implements Settings private String floatConversion = Settings.DEFAULT.getFloatConversion(); private Numeric.Position signPosition = Settings.DEFAULT.getSignPosition(); - private Map redefines = new HashMap(); + private Map redefines = new HashMap(); private final Values values; diff --git a/src/main/java/net/sf/cb2java/copybook/CopybookAnalyzer.java b/src/main/java/net/sf/cb2java/copybook/CopybookAnalyzer.java index 25ac92e..ce088f1 100644 --- a/src/main/java/net/sf/cb2java/copybook/CopybookAnalyzer.java +++ b/src/main/java/net/sf/cb2java/copybook/CopybookAnalyzer.java @@ -1,25 +1,27 @@ /** - * cb2java - Dynamic COBOL copybook parser for Java. Copyright (C) 2006 James - * Watson + * cb2java - Dynamic COBOL copybook parser for Java. + * Copyright (C) 2006 James Watson * - * This program is free software; you can redistribute it and/or modify it under - * the terms of the GNU General Public License as published by the Free Software - * Foundation; either version 1, or (at your option) any later version. + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 1, or (at your option) + * any later version. * - * This program is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS - * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more - * details. + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. * - * You should have received a copy of the GNU General Public License along with - * this program; if not, write to the Free Software Foundation, Inc., 675 Mass - * Ave, Cambridge, MA 02139, USA. + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ package net.sf.cb2java.copybook; import java.util.Iterator; import java.util.List; import java.util.StringTokenizer; + import net.sf.cb2java.Values; import net.sf.cb2java.types.Element; import net.sf.cb2java.types.Group; @@ -68,320 +70,308 @@ import net.sf.cb2xml.sablecc.parser.Parser; /** - * This class handles the hard part of the parsing work. It captures all the - * parsing events of the sablecc parsing classes and marks up Item instances for - * each field definition - * + * This class handles the hard part of the parsing work. + * It captures all the parsing events of the sablecc + * parsing classes and marks up Item instances for each + * field definition + * * @author James Watson (adapted from Cb2XML project) */ -class CopybookAnalyzer extends DepthFirstAdapter { - - Values values = new Values(); +class CopybookAnalyzer extends DepthFirstAdapter +{ + final Values values = new Values(); + private Parser parser; private Item document; private Item current; - + /** - * Creates a new instance with the given parser and name - * + * Creates a new instance with the given parser and + * name + * * @param copyBookName the name to give this copybook - * @param parser sablecc parser instance + * @param parser sablecc parser instance */ - CopybookAnalyzer(String copyBookName, Parser parser) { + CopybookAnalyzer(String copyBookName, Parser parser) + { document = new Item(values, true); document.name = copyBookName; current = document; - this.parser = parser; - } - - /** + this.parser = parser; + } + + /** * getter for XML document - */ - public Copybook getDocument() { - return (Copybook) document.getElement(); - } + */ + public Copybook getDocument() + { + return (Copybook) document.getElement(); + } - /** + /** * enter copybook, set up XML DOM and root element - */ - @Override - public void inARecordDescription(ARecordDescription node) { + */ + public void inARecordDescription(ARecordDescription node) + { // TODO begin - } - - /** - * exit root element, save XML as file + } + + /** + * exit root element, save XML as file */ - @Override - public void outARecordDescription(ARecordDescription node) { + public void outARecordDescription(ARecordDescription node) + { // TODO end walkTree(document); - } + } - private void walkTree(Item item) { + private void walkTree(Item item) + { item.getElement().setSettings((Copybook) document.getElement()); - - for (Iterator i = item.children.iterator(); i.hasNext();) { + + for (Iterator i = item.children.iterator(); i.hasNext();) { Item child = (Item) i.next(); - + if (child.redefines != null) { ((Copybook) document.getElement()).redefine(child.redefines, child.getElement()); } else { ((Group) item.getElement()).addChild(child.getElement()); } - + walkTree(child); } } - + /** * check for comments before these Tokens and add to XML */ - @Override - public void caseTNumberNot88(TNumberNot88 node) { - checkForComments(node); - } - - @Override - public void caseTNumber88(TNumber88 node) { - checkForComments(node); - } - - public void checkForComments(Token node) { - List list = (List) parser.ignoredTokens.getIn(node); - if (list != null) { - Iterator i = list.iterator(); - while (i.hasNext()) { - String s = i.next().toString().trim(); - if (s.length() > 1) { + public void caseTNumberNot88(TNumberNot88 node) + { + checkForComments(node); + } + + public void caseTNumber88(TNumber88 node) + { + checkForComments(node); + } + + public void checkForComments(Token node) + { + List list = (List) parser.ignoredTokens.getIn(node); + if (list != null) { + Iterator i = list.iterator(); + while (i.hasNext()) { + String s = i.next().toString().trim(); + if (s.length() > 1) { // TODO - } - } - } - } + } + } + } + } /** - * main elementary item enter item, set up Item object - */ - @Override - public void inAItem(AItem node) { + * main elementary item + * enter item, set up Item object + */ + public void inAItem(AItem node) + { Item prevItem = current; current = new Item(values, false); current.level = Integer.parseInt(node.getNumberNot88().toString().trim()); current.name = node.getDataNameOrFiller().toString().trim(); - - if (current.level <= 77) { + + if (current.level <= 77) { current.setParent(prevItem); - } - } - + } + } + /** * end of parsing the element? */ - @Override - public void outAItem(AItem node) { + public void outAItem(AItem node) + { current.createElement(); } + + public void inARedefinesClause(ARedefinesClause node) + { + String dataName = node.getDataName().getText(); + current.redefines = dataName; + } - @Override - public void inARedefinesClause(ARedefinesClause node) { - String dataName = node.getDataName().getText(); - current.redefines = dataName; - } - - @Override - public void inAFixedOccursFixedOrVariable(AFixedOccursFixedOrVariable node) { - current.occurs = Integer.parseInt(node.getNumber().toString().trim()); - } + public void inAFixedOccursFixedOrVariable(AFixedOccursFixedOrVariable node) + { + current.occurs = Integer.parseInt(node.getNumber().toString().trim()); + } - @Override - public void inAVariableOccursFixedOrVariable(AVariableOccursFixedOrVariable node) { + public void inAVariableOccursFixedOrVariable(AVariableOccursFixedOrVariable node) + { current.occurs = Integer.parseInt(node.getNumber().toString().trim()); current.dependsOn = node.getDataName().getText(); - } + } - @Override - public void inAOccursTo(AOccursTo node) { - current.minOccurs = Integer.parseInt(node.getNumber().toString().trim()); - } + public void inAOccursTo(AOccursTo node) + { + current.minOccurs = Integer.parseInt(node.getNumber().toString().trim()); + } - @Override - public void inAPictureClause(APictureClause node) { + public void inAPictureClause(APictureClause node) + { current.picture = removeChars(node.getCharacterString() - .toString().toUpperCase(), " "); - + .toString().toUpperCase(), " "); + for (int i = 0; i < current.picture.length(); i++) { char c = current.picture.charAt(i); switch (c) { - case 'A': /* alpha */ - case 'B': /* space */ - case 'X': /* number or alpha */ - case '/': /* '/' */ - case ',': /* ',' */ - current.isAlpha = true; - break; - case 'N': /* national */ - throw new IllegalArgumentException("national data not yet supported"); - case 'E': /* exponent */ - throw new IllegalArgumentException("E in picture String not yet supported"); - case 'G': /* ??? */ - throw new IllegalArgumentException("G in picture String not yet supported"); - case 'P': //decimal position? - throw new IllegalArgumentException("P in picture String not yet supported"); - case 'C': /* CR - credit */ - case 'D': /* DR - debit */ - /* skip R */ - i++; - case '.': /* decimal position */ - case 'V': /* decimal position */ - case '$': /* '$' */ - case 'Z': - case '9': - case '0': - case '+': - case '-': - case '*': - break; + case 'A': /* alpha */ + case 'B': /* space */ + case 'X': /* number or alpha */ + case '/': /* '/' */ + case ',': /* ',' */ + current.isAlpha = true; + break; + case 'N': /* national */ + throw new IllegalArgumentException("national data not yet supported"); + case 'E': /* exponent */ + throw new IllegalArgumentException("E in picture String not yet supported"); + case 'G': /* ??? */ + throw new IllegalArgumentException("G in picture String not yet supported"); + case 'P': //decimal position? + throw new IllegalArgumentException("P in picture String not yet supported"); + case 'C': /* CR - credit */ + case 'D': /* DR - debit */ + /* skip R */ + i++; + case '.': /* decimal position */ + case 'V': /* decimal position */ + case '$': /* '$' */ + case 'Z': + case '9': + case '0': + case '+': + case '-': + case '*': + break; } } } + + public void inASignClause(ASignClause node) + { + if (node.getSeparateCharacter() != null) { + current.signSeparate = true; + } + } - @Override - public void inASignClause(ASignClause node) { - if (node.getSeparateCharacter() != null) { - current.signSeparate = true; - } - } - - @Override - public void inALeadingLeadingOrTrailing(ALeadingLeadingOrTrailing node) { + public void inALeadingLeadingOrTrailing(ALeadingLeadingOrTrailing node) + { current.signPosition = SignedSeparate.LEADING; } - public void inATrailimngLeadingOrTrailing(ALeadingLeadingOrTrailing node) { + public void inATrailimngLeadingOrTrailing(ALeadingLeadingOrTrailing node) + { current.signPosition = SignedSeparate.TRAILING; } - //======================= USAGE CLAUSE ========================== - @Override - public void inABinaryUsagePhrase(ABinaryUsagePhrase node) { + //======================= USAGE CLAUSE ========================== + + public void inABinaryUsagePhrase(ABinaryUsagePhrase node) { current.usage = Usage.BINARY; - } + } - @Override - public void inACompUsagePhrase(ACompUsagePhrase node) { + public void inACompUsagePhrase(ACompUsagePhrase node) { current.usage = Usage.COMPUTATIONAL; - } + } - @Override - public void inAComp1UsagePhrase(AComp1UsagePhrase node) { + public void inAComp1UsagePhrase(AComp1UsagePhrase node) { current.usage = Usage.COMPUTATIONAL_1; - } + } - @Override - public void inAComp2UsagePhrase(AComp2UsagePhrase node) { + public void inAComp2UsagePhrase(AComp2UsagePhrase node) { current.usage = Usage.COMPUTATIONAL_2; - } + } - @Override - public void inAComp3UsagePhrase(AComp3UsagePhrase node) { + public void inAComp3UsagePhrase(AComp3UsagePhrase node) { current.usage = Usage.COMPUTATIONAL_3; - } + } - @Override - public void inAComp4UsagePhrase(AComp4UsagePhrase node) { + public void inAComp4UsagePhrase(AComp4UsagePhrase node) { current.usage = Usage.COMPUTATIONAL_4; - } - - @Override - public void inAComp5UsagePhrase(AComp5UsagePhrase node) { + } + + public void inAComp5UsagePhrase(AComp5UsagePhrase node) { current.usage = Usage.COMPUTATIONAL_5; - } + } - @Override - public void inADisplay1UsagePhrase(ADisplay1UsagePhrase node) { + public void inADisplay1UsagePhrase(ADisplay1UsagePhrase node) { throw new IllegalArgumentException("display-1"); - } + } - @Override - public void inAIndexUsagePhrase(AIndexUsagePhrase node) { + public void inAIndexUsagePhrase(AIndexUsagePhrase node) { throw new IllegalArgumentException("index"); - } + } - @Override - public void inANationalUsagePhrase(ANationalUsagePhrase node) { + public void inANationalUsagePhrase(ANationalUsagePhrase node) { throw new IllegalArgumentException("national"); - } + } - @Override - public void inAObjectReferencePhrase(AObjectReferencePhrase node) { + public void inAObjectReferencePhrase(AObjectReferencePhrase node) { throw new IllegalArgumentException("object-reference");//, node.getDataName().getText()); - } - - @Override - public void inAPackedDecimalUsagePhrase(APackedDecimalUsagePhrase node) { + } + + public void inAPackedDecimalUsagePhrase(APackedDecimalUsagePhrase node) { current.usage = Usage.PACKED_DECIMAL; - } + } - @Override - public void inAPointerUsagePhrase(APointerUsagePhrase node) { + public void inAPointerUsagePhrase(APointerUsagePhrase node) { throw new IllegalArgumentException("pointer"); - } + } - @Override - public void inAProcedurePointerUsagePhrase(AProcedurePointerUsagePhrase node) { + public void inAProcedurePointerUsagePhrase(AProcedurePointerUsagePhrase node) { throw new IllegalArgumentException("procedure-pointer"); - } - - @Override - public void inAFunctionPointerUsagePhrase(AFunctionPointerUsagePhrase node) { + } + + public void inAFunctionPointerUsagePhrase(AFunctionPointerUsagePhrase node) { throw new IllegalArgumentException("function-pointer"); - } - - // ======================= 88 / VALUE CLAUSE ========================== - @Override - public void caseTZeros(TZeros node) { - current.value = values.ZEROS; - } - - @Override - public void caseTSpaces(TSpaces node) { + } + + // ======================= 88 / VALUE CLAUSE ========================== + + public void caseTZeros(TZeros node) { + current.value = values.ZEROS; + } + + public void caseTSpaces(TSpaces node) { current.value = values.SPACES; - } - - @Override - public void caseTHighValues(THighValues node) { + } + + public void caseTHighValues(THighValues node) { current.value = values.HIGH_VALUES; - } - - @Override - public void caseTLowValues(TLowValues node) { + } + + public void caseTLowValues(TLowValues node) { current.value = values.LOW_VALUES; - } - - @Override - public void caseTQuotes(TQuotes node) { + } + + public void caseTQuotes(TQuotes node) { current.value = values.QUOTES; - } - - @Override - public void caseTNulls(TNulls node) { + } + + public void caseTNulls(TNulls node) { current.value = values.NULLS; - } - - @Override - public void caseTAlphanumericLiteral(TAlphanumericLiteral node) { + } + + public void caseTAlphanumericLiteral(TAlphanumericLiteral node) + { current.value = values.new Literal(node.getText()); - } - - @Override - public void outAValueClause(AValueClause node) { - current.value = values.new Literal(node.getLiteral().toString().trim()); - } - - // 88 LEVEL CONDITION NODE - @Override - public void inAValueItem(AValueItem node) { + } + + public void outAValueClause(AValueClause node) { + current.value = values.new Literal(node.getLiteral().toString().trim()); + } + + // 88 LEVEL CONDITION NODE + public void inAValueItem(AValueItem node) { // String name = node.getDataName().getText(); // curItem = new Item(); // curItem.element = document.createElement("condition"); @@ -389,10 +379,9 @@ public void inAValueItem(AValueItem node) { // curItem.element.setAttribute("name", name); // prevItem.element.appendChild(curItem.element); throw new IllegalArgumentException("'a value item' not yet supported"); - } - - @Override - public void outASingleLiteralSequence(ASingleLiteralSequence node) { + } + + public void outASingleLiteralSequence(ASingleLiteralSequence node) { // if (node.getAll() != null) { // curItem.element.setAttribute("all", "true"); // } @@ -400,61 +389,61 @@ public void outASingleLiteralSequence(ASingleLiteralSequence node) { // element.setAttribute("value", node.getLiteral().toString().trim()); // curItem.element.appendChild(element); throw new IllegalArgumentException("'a single literal sequence' not yet supported"); - } - - @Override - public void outASequenceLiteralSequence(ASequenceLiteralSequence node) { + } + + public void outASequenceLiteralSequence(ASequenceLiteralSequence node) { // Element element = document.createElement("condition"); // element.setAttribute("value", node.getLiteral().toString().trim()); // curItem.element.appendChild(element); throw new IllegalArgumentException("'a sequence literal sequence' not yet supported"); - } + } - @Override - public void outAThroughSingleLiteralSequence(AThroughSingleLiteralSequence node) { + public void outAThroughSingleLiteralSequence(AThroughSingleLiteralSequence node) { // Element element = document.createElement("condition"); // element.setAttribute("value", node.getFrom().toString().trim()); // element.setAttribute("through", node.getTo().toString().trim()); // curItem.element.appendChild(element); throw new IllegalArgumentException("'a through single literal sequence' not yet supported"); - } + } - @Override - public void outAThroughSequenceLiteralSequence(AThroughSequenceLiteralSequence node) { + public void outAThroughSequenceLiteralSequence(AThroughSequenceLiteralSequence node) { // Element element = document.createElement("condition"); // element.setAttribute("value", node.getFrom().toString().trim()); // element.setAttribute("through", node.getTo().toString().trim()); // curItem.element.appendChild(element); throw new IllegalArgumentException("'a through sequence literal sequence' not yet supported"); - } - - //=============================================================================== - private String removeChars(String s, String charToRemove) { - StringTokenizer st = new StringTokenizer(s, charToRemove, false); - StringBuffer b = new StringBuffer(); - while (st.hasMoreElements()) { - b.append(st.nextElement()); - } - return b.toString(); - } - - /** - * This is for DOM post-processing of the XML before saving to resolve the - * field lengths of each node and also calculate the start position of the - * data field in the raw copybook buffer (mainframe equivalent) recursive - * traversal. note that REDEFINES declarations are taken care of as well as - * the OCCURS declarations - */ - int getPosition(String name) { - List children = document.getElement().getChildren(); - - for (Iterator i = children.iterator(); i.hasNext();) { + } + + //=============================================================================== + + private String removeChars(String s, String charToRemove) { + StringTokenizer st = new StringTokenizer(s, charToRemove, false); + StringBuffer b = new StringBuffer(); + while (st.hasMoreElements()) { + b.append(st.nextElement()); + } + return b.toString(); + } + + /** + * This is for DOM post-processing of the XML before saving to resolve the field lengths + * of each node and also calculate the start position of the data field in the + * raw copybook buffer (mainframe equivalent) + * recursive traversal. note that REDEFINES declarations are taken care of + * as well as the OCCURS declarations + */ + + int getPosition(String name) + { + List children = document.getElement().getChildren(); + + for (Iterator i = children.iterator(); i.hasNext();) { Element testElement = (Element) i.next(); if (testElement.getName().equals(name)) { return testElement.getPosition(); } } - + throw new IllegalArgumentException("no element named '" + name + "'"); } } \ No newline at end of file diff --git a/src/main/java/net/sf/cb2java/copybook/Copybooks.java b/src/main/java/net/sf/cb2java/copybook/Copybooks.java index 9e9467b..00c12fb 100644 --- a/src/main/java/net/sf/cb2java/copybook/Copybooks.java +++ b/src/main/java/net/sf/cb2java/copybook/Copybooks.java @@ -1,41 +1,51 @@ -package net.sf.cb2java.copybook; - -import java.io.File; -import java.io.FileInputStream; -import java.io.FileNotFoundException; -import java.util.List; -import java.util.Map; -import java.util.TreeMap; - -/** - * A map of named Copybook definitions. - * - * @author - */ -public class Copybooks { - - public static Map readCopybooks(List files) throws FileNotFoundException { - return readCopybooks(files.toArray(new File[] {})); - } - - public static Map readCopybooks(File[] files) throws FileNotFoundException { - Map copybooks = new TreeMap(); - for(File f:files) { - String copybookName = copybookNameOfFile(f); - try { - copybooks.put(copybookName, CopybookParser.parse(copybookName, new FileInputStream(f))); - } catch (RuntimeException e) { - throw new RuntimeException(String.format("Cannot parse copybook structure in file '%s'", f.getName()), e); - } - } - return copybooks; - } - - public static String copybookNameOfFile(File f) { - if (f.getName().contains(".")) - return f.getName().toLowerCase().split("\\.")[0]; - else - return f.getName().toLowerCase(); - } - -} +package net.sf.cb2java.copybook; + +import java.io.File; +import java.io.FileInputStream; +import java.io.FileNotFoundException; +import java.io.IOException; +import java.util.List; +import java.util.Map; +import java.util.TreeMap; + +/** + * A map of named Copybook definitions. + * + * @author + */ +public class Copybooks { + + public static Map readCopybooks(List files) throws FileNotFoundException { + return readCopybooks(files.toArray(new File[] {})); + } + + /* + * Make a map of copybook name (the lowercase filename without extension) + * to Copybook instance for each given file. + */ + public static Map readCopybooks(File[] files) throws FileNotFoundException { + Map copybooks = new TreeMap(); + for(File f:files) { + String copybookName = copybookNameOfFile(f); + FileInputStream fin = new FileInputStream(f); + try { + copybooks.put(copybookName, CopybookParser.parse(copybookName, fin)); + } catch (RuntimeException e) { + throw new RuntimeException(String.format("Cannot parse copybook structure in file '%s'", f.getName()), e); + } finally { + try { + fin.close(); + } catch (IOException io) {}; + } + } + return copybooks; + } + + public static String copybookNameOfFile(File f) { + if (f.getName().contains(".")) + return f.getName().toLowerCase().split("\\.")[0]; + else + return f.getName().toLowerCase(); + } + +} \ No newline at end of file diff --git a/src/main/java/net/sf/cb2java/copybook/Item.java b/src/main/java/net/sf/cb2java/copybook/Item.java index b72842a..5377535 100644 --- a/src/main/java/net/sf/cb2java/copybook/Item.java +++ b/src/main/java/net/sf/cb2java/copybook/Item.java @@ -57,7 +57,7 @@ class Item Item parent; int length; - List children = new ArrayList(); + List children = new ArrayList(); String redefines; int occurs = 1; diff --git a/src/main/java/net/sf/cb2java/data/GroupData.java b/src/main/java/net/sf/cb2java/data/GroupData.java index 5c5e9bb..6284472 100644 --- a/src/main/java/net/sf/cb2java/data/GroupData.java +++ b/src/main/java/net/sf/cb2java/data/GroupData.java @@ -88,7 +88,7 @@ public List getChildren() */ public Data getChild(String name) { - for (Iterator i = wrapper.iterator(); i.hasNext();) + for (Iterator i = wrapper.iterator(); i.hasNext();) { Data child = (Data) i.next(); @@ -111,7 +111,7 @@ public String toString(String indent) buffer.append(getName()); - for (Iterator i = wrapper.iterator(); i.hasNext();) { + for (Iterator i = wrapper.iterator(); i.hasNext();) { buffer.append('\n'); buffer.append(((Data) i.next()).toString(indent + INDENT)); } @@ -122,7 +122,7 @@ public String toString(String indent) @Override public void write(OutputStream stream) throws IOException { - for (Iterator i = wrapper.iterator(); i.hasNext();) { + for (Iterator i = wrapper.iterator(); i.hasNext();) { Data child = (Data) i.next(); child.write(stream); } @@ -172,7 +172,7 @@ protected Object toPOJO() { Data child = groupIterator.next(); int occurs = child.getDefinition().getOccurs(); if (occurs > 1) { - List childOccurs = new ArrayList(occurs); + List childOccurs = new ArrayList(occurs); childOccurs.add(child.toPOJO()); for(int i=1; i getChildren() { - return Collections.EMPTY_LIST; + return Collections.emptyList(); } @Override diff --git a/src/main/java/net/sf/cb2java/types/Decimal.java b/src/main/java/net/sf/cb2java/types/Decimal.java index aa7811a..71f4380 100644 --- a/src/main/java/net/sf/cb2java/types/Decimal.java +++ b/src/main/java/net/sf/cb2java/types/Decimal.java @@ -221,21 +221,22 @@ private char getNumber(char overpunched) public Data parse(byte[] bytes) { String input = getString(bytes).trim(); - String s; + String s = input; if (input.length() < 1) { s = null; - }else if (getSignPosition() == LEADING) { - char c = input.charAt(0); - s = (isPositive(c) ? "" : "-") + getNumber(c) - + (input.length() > 1 ? input.substring(1) : ""); - } else { - int last = input.length() - 1; - char c = input.charAt(last); - s = (isPositive(c) ? "" : "-") - + (input.length() > 1 ? input.substring(0, last-1) : "") + getNumber(c); - } - + } else if (signed()) { + if (getSignPosition() == LEADING) { + char c = input.charAt(0); + s = (isPositive(c) ? "" : "-") + getNumber(c) + + (input.length() > 1 ? input.substring(1) : ""); + } else { + int last = input.length() - 1; + char c = input.charAt(last); + s = (isPositive(c) ? "" : "-") + + (input.length() > 1 ? input.substring(0, last) : "") + getNumber(c); + } + } BigInteger big = s == null ? null : new BigInteger(s); Data data = create(); diff --git a/src/main/java/net/sf/cb2java/types/Element.java b/src/main/java/net/sf/cb2java/types/Element.java index e0aaa7e..3dd28e2 100644 --- a/src/main/java/net/sf/cb2java/types/Element.java +++ b/src/main/java/net/sf/cb2java/types/Element.java @@ -79,7 +79,7 @@ public Value getValue() * * @return the children of this element or null if there are none */ - public abstract List getChildren(); + public abstract List getChildren(); /** * returns the number of bytes of one instance of this element diff --git a/src/main/java/net/sf/cb2java/types/Floating.java b/src/main/java/net/sf/cb2java/types/Floating.java index 7fc2d2c..af0a2ee 100644 --- a/src/main/java/net/sf/cb2java/types/Floating.java +++ b/src/main/java/net/sf/cb2java/types/Floating.java @@ -47,7 +47,7 @@ public Floating(String name, int level, int occurs, Precision precision) Conversion temp; try { - Class clazz = Class.forName(getSettings().getFloatConversion()); + Class clazz = Class.forName(getSettings().getFloatConversion()); temp = (Conversion) clazz.newInstance(); } catch (Exception e) { temp = new IEEE754(); diff --git a/src/main/java/net/sf/cb2java/types/Group.java b/src/main/java/net/sf/cb2java/types/Group.java index a9eb8a5..48b2f46 100644 --- a/src/main/java/net/sf/cb2java/types/Group.java +++ b/src/main/java/net/sf/cb2java/types/Group.java @@ -32,7 +32,7 @@ public class Group extends Element { /** the list of children */ - private final List children = new ArrayList(); + private final List children = new ArrayList(); /** the wrapper list exposed through getChildren() */ private final List wrapper = Collections.unmodifiableList(children); @@ -61,7 +61,7 @@ public int getLength() { int length = 0; - for (Iterator i = children.iterator(); i.hasNext();) { + for (Iterator i = children.iterator(); i.hasNext();) { Element element = (Element) i.next(); for (int j = 0; j < element.getOccurs(); j++) { length += element.getLength(); @@ -78,7 +78,7 @@ public String toString() buffer.append(super.toString()); - for (Iterator i = children.iterator(); i.hasNext();) { + for (Iterator i = children.iterator(); i.hasNext();) { buffer.append(i.next()); } @@ -89,7 +89,7 @@ public Data create() { ArrayList dataChildren = new ArrayList(); - for (Iterator i = children.iterator(); i.hasNext();) { + for (Iterator i = children.iterator(); i.hasNext();) { Element element = (Element) i.next(); for (int j = 0; j < element.getOccurs(); j++) { dataChildren.add(element.create()); @@ -101,11 +101,11 @@ public Data create() public Data parse(final byte[] bytes) { - ArrayList dataChildren = new ArrayList(); + ArrayList dataChildren = new ArrayList(); int pos = 0; - for (Iterator i = children.iterator(); i.hasNext();) { + for (Iterator i = children.iterator(); i.hasNext();) { final Element element = (Element) i.next(); for (int j = 0; j < element.getOccurs(); j++) { // final int p = pos; @@ -130,10 +130,7 @@ private byte[] sub(byte[] in, int start, int end) { byte[] out = new byte[end - start]; -// System.out.println("sub: " + in.length + ", " + start + ", " + end); - - System.arraycopy(in, start, out, 0, out.length); - + System.arraycopy(in, start, out, 0, Math.min(out.length, in.length)); return out; } diff --git a/src/main/java/net/sf/cb2java/types/Leaf.java b/src/main/java/net/sf/cb2java/types/Leaf.java index d93f0b7..2e63774 100644 --- a/src/main/java/net/sf/cb2java/types/Leaf.java +++ b/src/main/java/net/sf/cb2java/types/Leaf.java @@ -38,8 +38,8 @@ protected Leaf(String name, int level, final int occurs) * * @return an empty collection */ - public List getChildren() + public List getChildren() { - return Collections.EMPTY_LIST; + return Collections.emptyList(); } } \ No newline at end of file diff --git a/src/main/java/net/sf/cb2java/types/Numeric.java b/src/main/java/net/sf/cb2java/types/Numeric.java index cda3aa2..7ce10e4 100644 --- a/src/main/java/net/sf/cb2java/types/Numeric.java +++ b/src/main/java/net/sf/cb2java/types/Numeric.java @@ -41,11 +41,12 @@ public abstract class Numeric extends Leaf private final int length; private final int decimalPlaces; private final boolean signed; + private String picture; protected Numeric(String name, int level, int occurs, final String picture) { super(name, level, occurs); - + this.setPicture(picture); this.length = getLength(picture); this.decimalPlaces = getScale(picture, length); this.signed = isSigned(picture); @@ -93,8 +94,11 @@ public static int getLength(String pic) for (int i = 0; i < pic.length(); i++) { char c = pic.charAt(i); - - if (c == '9' && (i == pic.length() - 1 || pic.charAt(i + 1) != '(')) { + /** + * I don't remember why i added 'S' to length calculation... + * but this breaks tests :( + */ + if (/*c == 'S' ||*/ c == '9' && (i == pic.length() - 1 || pic.charAt(i + 1) != '(')) { length++; } else if (c == '(') { int pos = pic.indexOf(')', i); @@ -112,18 +116,24 @@ public static int getScale(String pic, int length) int position = 0; pic = pic.toUpperCase(); - for (int i = 0; i < pic.length(); i++) { - char c = pic.charAt(i); - - if (c == '(') { - int pos = pic.indexOf(')', i); - int times = Integer.parseInt(pic.substring(i + 1, pos)); - i = pos; - position += times; - } else if (c == 'V') { - return length - position; + if (pic.matches("S?[0-9]+\\([0-9]+\\)(V)[0-9]+")) + { + for (int i = 0; i < pic.length(); i++) { + char c = pic.charAt(i); + if (c == '(') { + int pos = pic.indexOf(')', i); + int times = Integer.parseInt(pic.substring(i + 1, pos)); + i = pos; + position += times; + } else if (c == 'V') { + return length - position; + } } } + else if (pic.matches("S?[0-9]+(V)[0-9]+")) + { + return length - pic.indexOf('V'); + } return 0; } @@ -261,7 +271,15 @@ public IllegalArgumentException createEx(BigDecimal data, String reason, Throwab + (cause == null ? "" : " " + cause.getMessage())); } - public static class Position + public void setPicture(String picture) { + this.picture = picture; + } + + public String getPicture() { + return picture; + } + + public static class Position { private Position(){} } diff --git a/src/main/java/net/sf/cb2xml/sablecc/lexer/Lexer.java b/src/main/java/net/sf/cb2xml/sablecc/lexer/Lexer.java index 452e990..5e38cdb 100644 --- a/src/main/java/net/sf/cb2xml/sablecc/lexer/Lexer.java +++ b/src/main/java/net/sf/cb2xml/sablecc/lexer/Lexer.java @@ -3,7 +3,9 @@ package net.sf.cb2xml.sablecc.lexer; import java.io.*; +import java.net.URL; import java.util.*; + import net.sf.cb2xml.sablecc.node.*; public class Lexer @@ -17,63 +19,798 @@ public class Lexer private boolean cr; private boolean eof; private final StringBuffer text = new StringBuffer(); + + private static int[][] accept; + /* { + // INITIAL + {14, 77, 0, 0, 0, 0, 77, 8, 77, 9, 10, 7, 5, 3, 6, 2, 4, 12, 12, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 0, 0, 0, 0, 0, -1, 13, -1, 13, -1, 1, 1, -1, 14, 14, 15, 12, 76, 76, 11, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 21, 76, 76, 21, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 42, 76, 42, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 53, 76, 76, 53, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 69, 76, 76, 76, 69, 76, 76, 76, 76, 76, 76, 76, 76, 76, -1, -1, 1, -1, 16, 16, 17, 17, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 44, 44, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 55, 55, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, -1, -1, 14, 76, 76, 76, 76, 76, 76, 76, 76, 23, 23, 29, 29, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 43, 43, 76, 76, 46, 46, 76, 76, 76, 50, 50, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 64, 64, 76, 76, 66, 66, 76, 67, 76, 67, 76, 76, 76, 76, 76, 76, 76, 76, 74, 74, 75, 75, 76, 76, 76, 76, 20, 20, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 40, 40, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 50, 50, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 58, 58, 76, 76, 76, 76, 76, 76, 62, 62, 76, 76, 65, 65, 76, 76, 76, 76, 68, 68, 76, 76, 71, 71, 72, 72, 76, 75, 76, 75, 76, 76, 19, 19, 76, 76, 24, 25, 26, 27, 28, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 35, 35, 36, 36, 76, 76, 38, 38, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 49, 49, 51, 51, 52, 52, 76, 76, 76, 76, 76, 76, 76, 76, 58, 58, 76, 76, 76, 76, 76, 76, 76, 76, 65, 65, 76, 76, 76, 76, 76, 76, 73, 73, 75, 75, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 32, 32, 76, 76, 76, 76, 76, 76, 41, 41, 76, 76, 45, 45, 76, 76, 76, 76, 76, 55, 55, 56, 56, 76, 76, 76, 76, 76, 76, 61, 61, 76, 76, 76, 76, 67, 67, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 34, 34, 76, 76, 76, 76, 76, 76, 76, 76, 48, 48, 76, 76, 76, 76, 76, 76, 76, 76, 63, 63, 76, 76, 70, 70, 18, 18, 22, 22, 76, 76, 30, 30, 76, 76, 33, 76, 76, 76, 43, 43, 47, 47, 76, 76, 76, 76, 59, 59, 60, 60, 76, 76, 76, 76, 31, 31, 76, 76, 39, 39, 47, 47, 76, 76, 76, 76, 76, 76, 76, 76, 76, 39, 39, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 66, 66, 23, 23, 76, 76, 76, 76, 76, 76, 76, 76, 76, 54, 54, 76, 76, 24, 25, 26, 27, 28, 76, 76, 76, 76, 37, 37, 76, 76, 57, 57, }, - protected void filter() throws LexerException, IOException - { - } + };*/ + + private static int[][][][] gotoTable; + /* { + { // INITIAL + {{0, 8, 1}, {9, 9, 2}, {10, 10, 3}, {11, 12, 1}, {13, 13, 4}, {14, 31, 1}, {32, 32, 5}, {33, 33, 1}, {34, 34, 6}, {35, 35, 1}, {36, 36, 7}, {37, 38, 1}, {39, 39, 8}, {40, 40, 9}, {41, 41, 10}, {42, 42, 11}, {43, 43, 12}, {44, 44, 13}, {45, 45, 14}, {46, 46, 15}, {47, 47, 16}, {48, 55, 17}, {56, 56, 18}, {57, 57, 17}, {58, 64, 1}, {65, 65, 19}, {66, 66, 20}, {67, 67, 21}, {68, 68, 22}, {69, 69, 23}, {70, 70, 24}, {71, 71, 25}, {72, 72, 26}, {73, 73, 27}, {74, 74, 28}, {75, 75, 29}, {76, 76, 30}, {77, 77, 31}, {78, 78, 32}, {79, 79, 33}, {80, 80, 34}, {81, 81, 35}, {82, 82, 36}, {83, 83, 37}, {84, 84, 38}, {85, 85, 39}, {86, 86, 40}, {87, 87, 41}, {88, 89, 31}, {90, 90, 42}, {91, 96, 1}, {97, 97, 43}, {98, 98, 44}, {99, 99, 45}, {100, 100, 46}, {101, 101, 47}, {102, 102, 48}, {103, 103, 49}, {104, 104, 50}, {105, 105, 51}, {106, 106, 52}, {107, 107, 53}, {108, 108, 54}, {109, 109, 55}, {110, 110, 56}, {111, 111, 57}, {112, 112, 58}, {113, 113, 59}, {114, 114, 60}, {115, 115, 61}, {116, 116, 62}, {117, 117, 63}, {118, 118, 64}, {119, 119, 65}, {120, 121, 55}, {122, 122, 66}, {123, 65535, 1}, }, + {}, + {{9, 9, 67}, {10, 10, 68}, {13, 13, 69}, {32, 32, 70}, }, + {{9, 32, -4}, }, + {{9, 9, 67}, {10, 10, 71}, {13, 32, -4}, }, + {{9, 32, -4}, }, + {{0, 33, 72}, {34, 34, 73}, {35, 65535, 72}, }, + {}, + {{0, 38, 74}, {39, 39, 75}, {40, 65535, 74}, }, + {}, + {}, + {{0, 9, 76}, {10, 10, 77}, {11, 12, 76}, {13, 13, 78}, {14, 65535, 76}, }, + {{46, 46, 79}, {48, 57, 80}, }, + {}, + {{46, 57, -14}, }, + {{48, 57, 81}, {90, 90, 82}, }, + {}, + {{46, 46, 79}, {48, 57, 83}, {65, 90, 84}, {97, 122, 85}, }, + {{46, 46, 79}, {48, 55, 83}, {56, 56, 86}, {57, 57, 83}, {65, 122, -19}, }, + {{45, 45, 87}, {48, 57, 88}, {65, 75, 89}, {76, 76, 90}, {77, 81, 89}, {82, 82, 91}, {83, 83, 92}, {84, 90, 89}, {97, 107, 93}, {108, 108, 94}, {109, 113, 93}, {114, 114, 95}, {115, 115, 96}, {116, 122, 93}, }, + {{45, 57, -21}, {65, 72, 89}, {73, 73, 97}, {74, 75, 89}, {76, 76, 98}, {77, 88, 89}, {89, 89, 99}, {90, 90, 89}, {97, 104, 93}, {105, 105, 100}, {106, 107, 93}, {108, 108, 101}, {109, 120, 93}, {121, 121, 102}, {122, 122, 93}, }, + {{45, 57, -21}, {65, 71, 89}, {72, 72, 103}, {73, 78, 89}, {79, 79, 104}, {80, 90, 89}, {97, 103, 93}, {104, 104, 105}, {105, 110, 93}, {111, 111, 106}, {112, 122, 93}, }, + {{45, 57, -21}, {65, 65, 107}, {66, 68, 89}, {69, 69, 108}, {70, 72, 89}, {73, 73, 109}, {74, 90, 89}, {97, 97, 110}, {98, 100, 93}, {101, 101, 111}, {102, 104, 93}, {105, 105, 112}, {106, 122, 93}, }, + {{45, 57, -21}, {65, 87, 89}, {88, 88, 113}, {89, 90, 89}, {97, 119, 93}, {120, 120, 114}, {121, 122, 93}, }, + {{45, 72, -22}, {73, 73, 115}, {74, 78, 89}, {79, 79, 116}, {80, 84, 89}, {85, 85, 117}, {86, 90, 89}, {97, 104, 93}, {105, 105, 118}, {106, 110, 93}, {111, 111, 119}, {112, 116, 93}, {117, 117, 120}, {118, 122, 93}, }, + {{45, 75, -21}, {76, 76, 121}, {77, 90, 89}, {97, 107, 93}, {108, 108, 122}, {109, 122, 93}, }, + {{45, 72, -22}, {73, 73, 123}, {74, 90, 89}, {97, 104, 93}, {105, 105, 124}, {106, 122, 93}, }, + {{45, 57, -21}, {65, 77, 89}, {78, 78, 125}, {79, 82, 89}, {83, 83, 126}, {84, 90, 89}, {97, 109, 93}, {110, 110, 127}, {111, 114, 93}, {115, 115, 128}, {116, 122, 93}, }, + {{45, 57, -21}, {65, 84, 89}, {85, 85, 129}, {86, 90, 89}, {97, 116, 93}, {117, 117, 130}, {118, 122, 93}, }, + {{45, 57, -21}, {65, 68, 89}, {69, 69, 131}, {70, 90, 89}, {97, 100, 93}, {101, 101, 132}, {102, 122, 93}, }, + {{45, 68, -31}, {69, 69, 133}, {70, 78, 89}, {79, 79, 134}, {80, 90, 89}, {97, 100, 93}, {101, 101, 135}, {102, 110, 93}, {111, 111, 136}, {112, 122, 93}, }, + {{45, 57, -21}, {65, 90, 89}, {97, 122, 93}, }, + {{45, 57, -21}, {65, 65, 137}, {66, 84, 89}, {85, 85, 138}, {86, 90, 89}, {97, 97, 139}, {98, 116, 93}, {117, 117, 140}, {118, 122, 93}, }, + {{45, 57, -21}, {65, 65, 89}, {66, 66, 141}, {67, 67, 142}, {68, 77, 89}, {78, 78, 143}, {79, 90, 89}, {97, 97, 93}, {98, 98, 144}, {99, 99, 145}, {100, 109, 93}, {110, 110, 146}, {111, 122, 93}, }, + {{45, 57, -21}, {65, 65, 147}, {66, 72, 89}, {73, 73, 148}, {74, 78, 89}, {79, 79, 149}, {80, 81, 89}, {82, 82, 150}, {83, 90, 89}, {97, 97, 151}, {98, 104, 93}, {105, 105, 152}, {106, 110, 93}, {111, 111, 153}, {112, 113, 93}, {114, 114, 154}, {115, 122, 93}, }, + {{45, 84, -30}, {85, 85, 155}, {86, 116, -30}, {117, 117, 156}, {118, 122, 93}, }, + {{45, 68, -31}, {69, 69, 157}, {70, 72, 89}, {73, 73, 158}, {74, 90, 89}, {97, 100, 93}, {101, 101, 159}, {102, 104, 93}, {105, 105, 160}, {106, 122, 93}, }, + {{45, 68, -31}, {69, 69, 161}, {70, 72, 89}, {73, 73, 162}, {74, 79, 89}, {80, 80, 163}, {81, 88, 89}, {89, 89, 164}, {90, 90, 89}, {97, 100, 93}, {101, 101, 165}, {102, 104, 93}, {105, 105, 166}, {106, 111, 93}, {112, 112, 167}, {113, 120, 93}, {121, 121, 168}, {122, 122, 93}, }, + {{45, 71, -23}, {72, 72, 169}, {73, 73, 170}, {74, 78, 89}, {79, 79, 171}, {80, 81, 89}, {82, 82, 172}, {83, 90, 89}, {97, 103, 93}, {104, 104, 173}, {105, 105, 174}, {106, 110, 93}, {111, 111, 175}, {112, 113, 93}, {114, 114, 176}, {115, 122, 93}, }, + {{45, 57, -21}, {65, 82, 89}, {83, 83, 177}, {84, 90, 89}, {97, 114, 93}, {115, 115, 178}, {116, 122, 93}, }, + {{45, 57, -21}, {65, 65, 179}, {66, 90, 89}, {97, 97, 180}, {98, 122, 93}, }, + {{45, 71, -23}, {72, 72, 181}, {73, 90, 89}, {97, 103, 93}, {104, 104, 182}, {105, 122, 93}, }, + {{45, 68, -31}, {69, 69, 183}, {70, 100, -31}, {101, 101, 184}, {102, 122, 93}, }, + {{45, 122, -21}, }, + {{45, 122, -22}, }, + {{45, 122, -23}, }, + {{45, 122, -24}, }, + {{45, 122, -25}, }, + {{45, 122, -26}, }, + {{45, 122, -27}, }, + {{45, 122, -28}, }, + {{45, 122, -29}, }, + {{45, 122, -30}, }, + {{45, 122, -31}, }, + {{45, 122, -32}, }, + {{45, 122, -33}, }, + {{45, 122, -34}, }, + {{45, 122, -35}, }, + {{45, 122, -36}, }, + {{45, 122, -37}, }, + {{45, 122, -38}, }, + {{45, 122, -39}, }, + {{45, 122, -40}, }, + {{45, 122, -41}, }, + {{45, 122, -42}, }, + {{45, 122, -43}, }, + {{45, 122, -44}, }, + {{9, 32, -4}, }, + {{9, 32, -4}, }, + {{9, 32, -6}, }, + {{9, 32, -4}, }, + {{9, 32, -4}, }, + {{0, 65535, -8}, }, + {{34, 34, 185}, }, + {{0, 65535, -10}, }, + {{39, 39, 186}, }, + {{0, 65535, -13}, }, + {}, + {{10, 10, 187}, }, + {{48, 57, 81}, }, + {{46, 57, -14}, }, + {{48, 57, 81}, {69, 69, 188}, }, + {{90, 90, 82}, }, + {{46, 122, -19}, }, + {{45, 122, -33}, }, + {{45, 122, -33}, }, + {{46, 122, -19}, }, + {{45, 122, -33}, }, + {{45, 122, -33}, }, + {{45, 122, -33}, }, + {{45, 75, -21}, {76, 76, 189}, {77, 107, -27}, {108, 108, 190}, {109, 122, 93}, }, + {{45, 68, -31}, {69, 69, 191}, {70, 100, -31}, {101, 101, 192}, {102, 122, 93}, }, + {{45, 57, -21}, {65, 66, 89}, {67, 67, 193}, {68, 90, 89}, {97, 98, 93}, {99, 99, 194}, {100, 122, 93}, }, + {{45, 122, -33}, }, + {{45, 122, -92}, }, + {{45, 122, -93}, }, + {{45, 122, -94}, }, + {{45, 77, -29}, {78, 78, 195}, {79, 90, 89}, {97, 109, 93}, {110, 110, 196}, {111, 122, 93}, }, + {{45, 57, -21}, {65, 65, 197}, {66, 90, 89}, {97, 97, 198}, {98, 122, 93}, }, + {{45, 122, -33}, }, + {{45, 122, -99}, }, + {{45, 122, -100}, }, + {{45, 122, -33}, }, + {{45, 57, -21}, {65, 65, 199}, {66, 90, 89}, {97, 97, 200}, {98, 122, 93}, }, + {{45, 57, -21}, {65, 76, 89}, {77, 77, 201}, {78, 90, 89}, {97, 108, 93}, {109, 109, 202}, {110, 122, 93}, }, + {{45, 122, -105}, }, + {{45, 122, -106}, }, + {{45, 57, -21}, {65, 83, 89}, {84, 84, 203}, {85, 90, 89}, {97, 115, 93}, {116, 116, 204}, {117, 122, 93}, }, + {{45, 57, -21}, {65, 79, 89}, {80, 80, 205}, {81, 82, 89}, {83, 83, 206}, {84, 90, 89}, {97, 111, 93}, {112, 112, 207}, {113, 114, 93}, {115, 115, 208}, {116, 122, 93}, }, + {{45, 82, -41}, {83, 83, 209}, {84, 114, -41}, {115, 115, 210}, {116, 122, 93}, }, + {{45, 122, -109}, }, + {{45, 122, -110}, }, + {{45, 122, -111}, }, + {{45, 83, -109}, {84, 84, 211}, {85, 115, -109}, {116, 116, 212}, {117, 122, 93}, }, + {{45, 122, -115}, }, + {{45, 75, -21}, {76, 76, 213}, {77, 107, -27}, {108, 108, 214}, {109, 122, 93}, }, + {{45, 57, -21}, {65, 81, 89}, {82, 82, 215}, {83, 90, 89}, {97, 113, 93}, {114, 114, 216}, {115, 122, 93}, }, + {{45, 77, -29}, {78, 78, 217}, {79, 109, -99}, {110, 110, 218}, {111, 122, 93}, }, + {{45, 122, -117}, }, + {{45, 122, -118}, }, + {{45, 122, -119}, }, + {{45, 57, -21}, {65, 78, 89}, {79, 79, 219}, {80, 90, 89}, {97, 110, 93}, {111, 111, 220}, {112, 122, 93}, }, + {{45, 122, -123}, }, + {{45, 57, -21}, {65, 70, 89}, {71, 71, 221}, {72, 90, 89}, {97, 102, 93}, {103, 103, 222}, {104, 122, 93}, }, + {{45, 122, -125}, }, + {{45, 57, -21}, {65, 67, 89}, {68, 68, 223}, {69, 90, 89}, {97, 99, 93}, {100, 100, 224}, {101, 122, 93}, }, + {{45, 122, -33}, }, + {{45, 122, -127}, }, + {{45, 122, -33}, }, + {{45, 82, -41}, {83, 83, 225}, {84, 114, -41}, {115, 115, 226}, {116, 122, 93}, }, + {{45, 122, -131}, }, + {{45, 57, -21}, {65, 88, 89}, {89, 89, 227}, {90, 90, 89}, {97, 120, 93}, {121, 121, 228}, {122, 122, 93}, }, + {{45, 122, -133}, }, + {{45, 57, -21}, {65, 65, 229}, {66, 69, 89}, {70, 70, 230}, {71, 90, 89}, {97, 97, 231}, {98, 101, 93}, {102, 102, 232}, {103, 122, 93}, }, + {{45, 57, -21}, {65, 86, 89}, {87, 87, 233}, {88, 90, 89}, {97, 118, 93}, {119, 119, 234}, {120, 122, 93}, }, + {{45, 122, -135}, }, + {{45, 122, -136}, }, + {{45, 83, -109}, {84, 84, 235}, {85, 115, -109}, {116, 116, 236}, {117, 122, 93}, }, + {{45, 75, -21}, {76, 76, 237}, {77, 107, -27}, {108, 108, 238}, {109, 122, 93}, }, + {{45, 122, -139}, }, + {{45, 122, -140}, }, + {{45, 57, -21}, {65, 73, 89}, {74, 74, 239}, {75, 90, 89}, {97, 105, 93}, {106, 106, 240}, {107, 122, 93}, }, + {{45, 66, -94}, {67, 67, 241}, {68, 98, -94}, {99, 99, 242}, {100, 122, 93}, }, + {{45, 122, -33}, }, + {{45, 122, -143}, }, + {{45, 122, -144}, }, + {{45, 122, -33}, }, + {{45, 66, -94}, {67, 67, 243}, {68, 98, -94}, {99, 99, 244}, {100, 122, 93}, }, + {{45, 66, -94}, {67, 67, 245}, {68, 98, -94}, {99, 99, 246}, {100, 122, 93}, }, + {{45, 72, -22}, {73, 73, 247}, {74, 104, -28}, {105, 105, 248}, {106, 122, 93}, }, + {{45, 78, -123}, {79, 79, 249}, {80, 110, -123}, {111, 111, 250}, {112, 122, 93}, }, + {{45, 122, -149}, }, + {{45, 122, -150}, }, + {{45, 122, -151}, }, + {{45, 122, -152}, }, + {{45, 78, -123}, {79, 79, 251}, {80, 110, -123}, {111, 111, 252}, {112, 122, 93}, }, + {{45, 122, -157}, }, + {{45, 67, -127}, {68, 68, 253}, {69, 69, 89}, {70, 70, 254}, {71, 77, 89}, {78, 78, 255}, {79, 90, 89}, {97, 99, 93}, {100, 100, 256}, {101, 101, 93}, {102, 102, 257}, {103, 109, 93}, {110, 110, 258}, {111, 122, 93}, }, + {{45, 70, -125}, {71, 71, 259}, {72, 102, -125}, {103, 103, 260}, {104, 122, 93}, }, + {{45, 122, -159}, }, + {{45, 122, -160}, }, + {{45, 79, -110}, {80, 80, 261}, {81, 90, 89}, {97, 111, 93}, {112, 112, 262}, {113, 122, 93}, }, + {{45, 70, -125}, {71, 71, 263}, {72, 102, -125}, {103, 103, 264}, {104, 122, 93}, }, + {{45, 57, -21}, {65, 65, 265}, {66, 90, 89}, {97, 97, 266}, {98, 122, 93}, }, + {{45, 77, -29}, {78, 78, 267}, {79, 109, -99}, {110, 110, 268}, {111, 122, 93}, }, + {{45, 122, -163}, }, + {{45, 122, -164}, }, + {{45, 122, -165}, }, + {{45, 122, -166}, }, + {{45, 81, -118}, {82, 82, 269}, {83, 113, -118}, {114, 114, 270}, {115, 122, 93}, }, + {{45, 76, -106}, {77, 77, 271}, {78, 108, -106}, {109, 109, 272}, {110, 122, 93}, }, + {{45, 122, -33}, }, + {{45, 57, -21}, {65, 65, 273}, {66, 90, 89}, {97, 97, 274}, {98, 122, 93}, }, + {{45, 122, -171}, }, + {{45, 122, -172}, }, + {{45, 122, -33}, }, + {{45, 122, -174}, }, + {{45, 57, -21}, {65, 65, 275}, {66, 90, 89}, {97, 97, 276}, {98, 122, 93}, }, + {{45, 122, -179}, }, + {{45, 75, -21}, {76, 76, 277}, {77, 107, -27}, {108, 108, 278}, {109, 122, 93}, }, + {{45, 122, -181}, }, + {{45, 68, -31}, {69, 69, 279}, {70, 100, -31}, {101, 101, 280}, {102, 122, 93}, }, + {{45, 122, -183}, }, + {{45, 81, -118}, {82, 82, 281}, {83, 113, -118}, {114, 114, 282}, {115, 122, 93}, }, + {{45, 122, -185}, }, + {{0, 65535, -8}, }, + {{0, 65535, -10}, }, + {}, + {{43, 43, 283}, {45, 45, 284}, {48, 57, 285}, }, + {{45, 122, -33}, }, + {{45, 122, -33}, }, + {{45, 122, -33}, }, + {{45, 122, -33}, }, + {{45, 68, -31}, {69, 69, 286}, {70, 100, -31}, {101, 101, 287}, {102, 122, 93}, }, + {{45, 122, -195}, }, + {{45, 57, -21}, {65, 65, 288}, {66, 90, 89}, {97, 97, 289}, {98, 122, 93}, }, + {{45, 122, -197}, }, + {{45, 77, -29}, {78, 78, 290}, {79, 109, -99}, {110, 110, 291}, {111, 122, 93}, }, + {{45, 122, -199}, }, + {{45, 81, -118}, {82, 82, 292}, {83, 113, -118}, {114, 114, 293}, {115, 122, 93}, }, + {{45, 122, -201}, }, + {{45, 79, -110}, {80, 80, 294}, {81, 111, -163}, {112, 112, 295}, {113, 122, 93}, }, + {{45, 122, -203}, }, + {{45, 68, -31}, {69, 69, 296}, {70, 100, -31}, {101, 101, 297}, {102, 122, 93}, }, + {{45, 122, -205}, }, + {{45, 68, -31}, {69, 69, 298}, {70, 100, -31}, {101, 101, 299}, {102, 122, 93}, }, + {{45, 66, -94}, {67, 67, 300}, {68, 98, -94}, {99, 99, 301}, {100, 122, 93}, }, + {{45, 122, -207}, }, + {{45, 122, -208}, }, + {{45, 79, -110}, {80, 80, 302}, {81, 111, -163}, {112, 112, 303}, {113, 122, 93}, }, + {{45, 122, -211}, }, + {{45, 68, -31}, {69, 69, 304}, {70, 100, -31}, {101, 101, 305}, {102, 122, 93}, }, + {{45, 122, -213}, }, + {{45, 75, -21}, {76, 76, 306}, {77, 107, -27}, {108, 108, 307}, {109, 122, 93}, }, + {{45, 122, -215}, }, + {{45, 76, -106}, {77, 77, 308}, {78, 108, -106}, {109, 109, 309}, {110, 122, 93}, }, + {{45, 122, -217}, }, + {{45, 66, -94}, {67, 67, 310}, {68, 98, -94}, {99, 99, 311}, {100, 122, 93}, }, + {{45, 122, -219}, }, + {{45, 65, -35}, {66, 66, 312}, {67, 90, 89}, {97, 97, 93}, {98, 98, 313}, {99, 122, 93}, }, + {{45, 122, -221}, }, + {{45, 71, -23}, {72, 72, 314}, {73, 103, -43}, {104, 104, 315}, {105, 122, 93}, }, + {{45, 122, -223}, }, + {{45, 68, -31}, {69, 69, 316}, {70, 100, -31}, {101, 101, 317}, {102, 122, 93}, }, + {{45, 122, -225}, }, + {{45, 83, -109}, {84, 84, 318}, {85, 115, -109}, {116, 116, 319}, {117, 122, 93}, }, + {{45, 122, -227}, }, + {{45, 122, -33}, }, + {{45, 122, -33}, }, + {{45, 67, -127}, {68, 68, 320}, {69, 99, -127}, {100, 100, 321}, {101, 122, 93}, }, + {{45, 83, -109}, {84, 84, 322}, {85, 115, -109}, {116, 116, 323}, {117, 122, 93}, }, + {{45, 122, -231}, }, + {{45, 122, -232}, }, + {{45, 45, 324}, {48, 122, -33}, }, + {{45, 122, -235}, }, + {{45, 72, -22}, {73, 73, 325}, {74, 104, -28}, {105, 105, 326}, {106, 122, 93}, }, + {{45, 122, -237}, }, + {{45, 75, -21}, {76, 76, 327}, {77, 107, -27}, {108, 108, 328}, {109, 122, 93}, }, + {{45, 122, -239}, }, + {{45, 68, -31}, {69, 69, 329}, {70, 100, -31}, {101, 101, 330}, {102, 122, 93}, }, + {{45, 122, -241}, }, + {{45, 84, -30}, {85, 85, 331}, {86, 116, -30}, {117, 117, 332}, {118, 122, 93}, }, + {{45, 122, -243}, }, + {{45, 57, -21}, {65, 74, 89}, {75, 75, 333}, {76, 90, 89}, {97, 106, 93}, {107, 107, 334}, {108, 122, 93}, }, + {{45, 122, -245}, }, + {{45, 83, -109}, {84, 84, 335}, {85, 115, -109}, {116, 116, 336}, {117, 122, 93}, }, + {{45, 122, -247}, }, + {{45, 77, -29}, {78, 78, 337}, {79, 109, -99}, {110, 110, 338}, {111, 122, 93}, }, + {{45, 122, -249}, }, + {{45, 66, -94}, {67, 67, 339}, {68, 98, -94}, {99, 99, 340}, {100, 122, 93}, }, + {{45, 122, -251}, }, + {{45, 83, -109}, {84, 84, 341}, {85, 115, -109}, {116, 116, 342}, {117, 122, 93}, }, + {{45, 122, -253}, }, + {{45, 68, -31}, {69, 69, 343}, {70, 100, -31}, {101, 101, 344}, {102, 122, 93}, }, + {{45, 68, -31}, {69, 69, 345}, {70, 100, -31}, {101, 101, 346}, {102, 122, 93}, }, + {{45, 57, -21}, {65, 65, 347}, {66, 90, 89}, {97, 97, 348}, {98, 122, 93}, }, + {{45, 122, -255}, }, + {{45, 122, -256}, }, + {{45, 122, -257}, }, + {{45, 71, -23}, {72, 72, 349}, {73, 103, -43}, {104, 104, 350}, {105, 122, 93}, }, + {{45, 122, -261}, }, + {{45, 57, -21}, {65, 65, 351}, {66, 90, 89}, {97, 97, 352}, {98, 122, 93}, }, + {{45, 122, -263}, }, + {{45, 77, -29}, {78, 78, 353}, {79, 109, -99}, {110, 110, 354}, {111, 122, 93}, }, + {{45, 122, -265}, }, + {{45, 66, -94}, {67, 67, 355}, {68, 98, -94}, {99, 99, 356}, {100, 122, 93}, }, + {{45, 122, -267}, }, + {{45, 66, -94}, {67, 67, 357}, {68, 98, -94}, {99, 99, 358}, {100, 122, 93}, }, + {{45, 122, -269}, }, + {{45, 78, -123}, {79, 79, 359}, {80, 84, 89}, {85, 85, 360}, {86, 90, 89}, {97, 110, 93}, {111, 111, 361}, {112, 116, 93}, {117, 117, 362}, {118, 122, 93}, }, + {{45, 122, -271}, }, + {{45, 68, -31}, {69, 69, 363}, {70, 100, -31}, {101, 101, 364}, {102, 122, 93}, }, + {{45, 122, -273}, }, + {{45, 72, -22}, {73, 73, 365}, {74, 104, -28}, {105, 105, 366}, {106, 122, 93}, }, + {{45, 122, -275}, }, + {{45, 70, -125}, {71, 71, 367}, {72, 102, -125}, {103, 103, 368}, {104, 122, 93}, }, + {{45, 122, -277}, }, + {{45, 84, -30}, {85, 85, 369}, {86, 116, -30}, {117, 117, 370}, {118, 122, 93}, }, + {{45, 122, -279}, }, + {{45, 77, -29}, {78, 78, 371}, {79, 109, -99}, {110, 110, 372}, {111, 122, 93}, }, + {{45, 122, -281}, }, + {{45, 78, -123}, {79, 79, 373}, {80, 110, -123}, {111, 111, 374}, {112, 122, 93}, }, + {{45, 122, -283}, }, + {{48, 57, 285}, }, + {{48, 57, 285}, }, + {{48, 57, 285}, }, + {{45, 77, -29}, {78, 78, 375}, {79, 109, -99}, {110, 110, 376}, {111, 122, 93}, }, + {{45, 122, -288}, }, + {{45, 81, -118}, {82, 82, 377}, {83, 113, -118}, {114, 114, 378}, {115, 122, 93}, }, + {{45, 122, -290}, }, + {{45, 74, -245}, {75, 75, 379}, {76, 106, -245}, {107, 107, 380}, {108, 122, 93}, }, + {{45, 122, -292}, }, + {{45, 57, -21}, {65, 65, 381}, {66, 90, 89}, {97, 97, 382}, {98, 122, 93}, }, + {{45, 122, -294}, }, + {{45, 45, 383}, {48, 84, -30}, {85, 85, 384}, {86, 116, -30}, {117, 117, 385}, {118, 122, 93}, }, + {{45, 122, -296}, }, + {{45, 122, -33}, }, + {{45, 122, -33}, }, + {{45, 77, -29}, {78, 78, 386}, {79, 109, -99}, {110, 110, 387}, {111, 122, 93}, }, + {{45, 122, -300}, }, + {{45, 68, -31}, {69, 69, 388}, {70, 100, -31}, {101, 101, 389}, {102, 122, 93}, }, + {{45, 122, -302}, }, + {{45, 75, -21}, {76, 76, 390}, {77, 107, -27}, {108, 108, 391}, {109, 122, 93}, }, + {{45, 122, -304}, }, + {{45, 81, -118}, {82, 82, 392}, {83, 113, -118}, {114, 114, 393}, {115, 122, 93}, }, + {{45, 122, -306}, }, + {{45, 68, -31}, {69, 69, 394}, {70, 100, -31}, {101, 101, 395}, {102, 122, 93}, }, + {{45, 122, -308}, }, + {{45, 57, -21}, {65, 65, 396}, {66, 90, 89}, {97, 97, 397}, {98, 122, 93}, }, + {{45, 122, -310}, }, + {{45, 83, -109}, {84, 84, 398}, {85, 115, -109}, {116, 116, 399}, {117, 122, 93}, }, + {{45, 122, -312}, }, + {{45, 57, -21}, {65, 65, 400}, {66, 90, 89}, {97, 97, 401}, {98, 122, 93}, }, + {{45, 122, -314}, }, + {{45, 45, 402}, {48, 122, -33}, }, + {{45, 122, -316}, }, + {{45, 87, -25}, {88, 88, 403}, {89, 119, -25}, {120, 120, 404}, {121, 122, 93}, }, + {{45, 122, -318}, }, + {{45, 72, -22}, {73, 73, 405}, {74, 104, -28}, {105, 105, 406}, {106, 122, 93}, }, + {{45, 122, -320}, }, + {{45, 72, -22}, {73, 73, 407}, {74, 104, -28}, {105, 105, 408}, {106, 122, 93}, }, + {{45, 122, -322}, }, + {{45, 122, -33}, }, + {{45, 122, -33}, }, + {{45, 57, -21}, {65, 85, 89}, {86, 86, 409}, {87, 90, 89}, {97, 117, 93}, {118, 118, 410}, {119, 122, 93}, }, + {{45, 78, -123}, {79, 79, 411}, {80, 85, 89}, {86, 86, 412}, {87, 90, 89}, {97, 110, 93}, {111, 111, 413}, {112, 117, 93}, {118, 118, 414}, {119, 122, 93}, }, + {{45, 122, -327}, }, + {{45, 82, -41}, {83, 83, 415}, {84, 114, -41}, {115, 115, 416}, {116, 122, 93}, }, + {{45, 122, -329}, }, + {{45, 66, -94}, {67, 67, 417}, {68, 98, -94}, {99, 99, 418}, {100, 122, 93}, }, + {{45, 122, -331}, }, + {{45, 81, -118}, {82, 82, 419}, {83, 113, -118}, {114, 114, 420}, {115, 122, 93}, }, + {{45, 122, -333}, }, + {{45, 68, -31}, {69, 69, 421}, {70, 100, -31}, {101, 101, 422}, {102, 122, 93}, }, + {{45, 122, -335}, }, + {{45, 84, -30}, {85, 85, 423}, {86, 116, -30}, {117, 117, 424}, {118, 122, 93}, }, + {{45, 122, -337}, }, + {{45, 83, -109}, {84, 84, 425}, {85, 115, -109}, {116, 116, 426}, {117, 122, 93}, }, + {{45, 122, -339}, }, + {{45, 68, -31}, {69, 69, 427}, {70, 100, -31}, {101, 101, 428}, {102, 122, 93}, }, + {{45, 122, -341}, }, + {{45, 68, -31}, {69, 69, 429}, {70, 100, -31}, {101, 101, 430}, {102, 122, 93}, }, + {{45, 122, -343}, }, + {{45, 57, -21}, {65, 69, 89}, {70, 70, 431}, {71, 90, 89}, {97, 101, 93}, {102, 102, 432}, {103, 122, 93}, }, + {{45, 122, -345}, }, + {{45, 81, -118}, {82, 82, 433}, {83, 113, -118}, {114, 114, 434}, {115, 122, 93}, }, + {{45, 122, -347}, }, + {{45, 76, -106}, {77, 77, 435}, {78, 108, -106}, {109, 109, 436}, {110, 122, 93}, }, + {{45, 122, -349}, }, + {{45, 83, -109}, {84, 84, 437}, {85, 115, -109}, {116, 116, 438}, {117, 122, 93}, }, + {{45, 122, -351}, }, + {{45, 81, -118}, {82, 82, 439}, {83, 113, -118}, {114, 114, 440}, {115, 122, 93}, }, + {{45, 122, -353}, }, + {{45, 122, -33}, }, + {{45, 122, -33}, }, + {{45, 68, -31}, {69, 69, 441}, {70, 100, -31}, {101, 101, 442}, {102, 122, 93}, }, + {{45, 122, -357}, }, + {{45, 71, -23}, {72, 72, 443}, {73, 103, -43}, {104, 104, 444}, {105, 122, 93}, }, + {{45, 122, -359}, }, + {{45, 84, -30}, {85, 85, 445}, {86, 116, -30}, {117, 117, 446}, {118, 122, 93}, }, + {{45, 122, -33}, }, + {{45, 122, -361}, }, + {{45, 122, -33}, }, + {{45, 82, -41}, {83, 83, 447}, {84, 114, -41}, {115, 115, 448}, {116, 122, 93}, }, + {{45, 122, -365}, }, + {{45, 75, -21}, {76, 76, 449}, {77, 107, -27}, {108, 108, 450}, {109, 122, 93}, }, + {{45, 122, -367}, }, + {{45, 68, -31}, {69, 69, 451}, {70, 100, -31}, {101, 101, 452}, {102, 122, 93}, }, + {{45, 122, -369}, }, + {{45, 68, -31}, {69, 69, 453}, {70, 100, -31}, {101, 101, 454}, {102, 122, 93}, }, + {{45, 122, -371}, }, + {{45, 122, -33}, }, + {{45, 122, -33}, }, + {{45, 68, -31}, {69, 69, 455}, {70, 82, 89}, {83, 83, 456}, {84, 90, 89}, {97, 100, 93}, {101, 101, 457}, {102, 114, 93}, {115, 115, 458}, {116, 122, 93}, }, + {{45, 122, -375}, }, + {{45, 67, -127}, {68, 68, 459}, {69, 99, -127}, {100, 100, 460}, {101, 122, 93}, }, + {{45, 122, -377}, }, + {{45, 88, -133}, {89, 89, 461}, {90, 120, -133}, {121, 121, 462}, {122, 122, 93}, }, + {{45, 122, -379}, }, + {{45, 122, -33}, }, + {{45, 122, -33}, }, + {{45, 66, -94}, {67, 67, 463}, {68, 98, -94}, {99, 99, 464}, {100, 122, 93}, }, + {{45, 122, -383}, }, + {{45, 45, 87}, {48, 48, 88}, {49, 49, 465}, {50, 50, 466}, {51, 51, 467}, {52, 52, 468}, {53, 53, 469}, {54, 57, 88}, {65, 122, -33}, }, + {{45, 83, -109}, {84, 84, 470}, {85, 115, -109}, {116, 116, 471}, {117, 122, 93}, }, + {{45, 122, -386}, }, + {{45, 67, -127}, {68, 68, 472}, {69, 99, -127}, {100, 100, 473}, {101, 122, 93}, }, + {{45, 122, -388}, }, + {{45, 77, -29}, {78, 78, 474}, {79, 109, -99}, {110, 110, 475}, {111, 122, 93}, }, + {{45, 122, -390}, }, + {{45, 57, -21}, {65, 65, 476}, {66, 90, 89}, {97, 97, 477}, {98, 122, 93}, }, + {{45, 122, -392}, }, + {{45, 77, -29}, {78, 78, 478}, {79, 109, -99}, {110, 110, 479}, {111, 122, 93}, }, + {{45, 122, -394}, }, + {{45, 81, -118}, {82, 82, 480}, {83, 113, -118}, {114, 114, 481}, {115, 122, 93}, }, + {{45, 122, -396}, }, + {{45, 83, -109}, {84, 84, 482}, {85, 115, -109}, {116, 116, 483}, {117, 122, 93}, }, + {{45, 122, -398}, }, + {{45, 72, -22}, {73, 73, 484}, {74, 104, -28}, {105, 105, 485}, {106, 122, 93}, }, + {{45, 122, -400}, }, + {{45, 75, -21}, {76, 76, 486}, {77, 107, -27}, {108, 108, 487}, {109, 122, 93}, }, + {{45, 122, -402}, }, + {{45, 85, -326}, {86, 86, 488}, {87, 117, -326}, {118, 118, 489}, {119, 122, 93}, }, + {{45, 68, -31}, {69, 69, 490}, {70, 100, -31}, {101, 101, 491}, {102, 122, 93}, }, + {{45, 122, -405}, }, + {{45, 69, -345}, {70, 70, 492}, {71, 101, -345}, {102, 102, 493}, {103, 122, 93}, }, + {{45, 122, -407}, }, + {{45, 77, -29}, {78, 78, 494}, {79, 109, -99}, {110, 110, 495}, {111, 122, 93}, }, + {{45, 122, -409}, }, + {{45, 57, -21}, {65, 65, 496}, {66, 90, 89}, {97, 97, 497}, {98, 122, 93}, }, + {{45, 122, -411}, }, + {{45, 77, -29}, {78, 78, 498}, {79, 109, -99}, {110, 110, 499}, {111, 122, 93}, }, + {{45, 68, -31}, {69, 69, 500}, {70, 100, -31}, {101, 101, 501}, {102, 122, 93}, }, + {{45, 122, -413}, }, + {{45, 122, -414}, }, + {{45, 122, -33}, }, + {{45, 122, -33}, }, + {{45, 83, -109}, {84, 84, 502}, {85, 115, -109}, {116, 116, 503}, {117, 122, 93}, }, + {{45, 122, -419}, }, + {{45, 82, -41}, {83, 83, 504}, {84, 114, -41}, {115, 115, 505}, {116, 122, 93}, }, + {{45, 122, -421}, }, + {{45, 67, -127}, {68, 68, 506}, {69, 99, -127}, {100, 100, 507}, {101, 122, 93}, }, + {{45, 122, -423}, }, + {{45, 81, -118}, {82, 82, 508}, {83, 113, -118}, {114, 114, 509}, {115, 122, 93}, }, + {{45, 122, -425}, }, + {{45, 68, -31}, {69, 69, 510}, {70, 100, -31}, {101, 101, 511}, {102, 122, 93}, }, + {{45, 122, -427}, }, + {{45, 67, -127}, {68, 68, 512}, {69, 99, -127}, {100, 100, 513}, {101, 122, 93}, }, + {{45, 122, -429}, }, + {{45, 82, -41}, {83, 83, 514}, {84, 114, -41}, {115, 115, 515}, {116, 122, 93}, }, + {{45, 122, -431}, }, + {{45, 72, -22}, {73, 73, 516}, {74, 104, -28}, {105, 105, 517}, {106, 122, 93}, }, + {{45, 122, -433}, }, + {{45, 68, -31}, {69, 69, 518}, {70, 100, -31}, {101, 101, 519}, {102, 122, 93}, }, + {{45, 122, -435}, }, + {{45, 68, -31}, {69, 69, 520}, {70, 100, -31}, {101, 101, 521}, {102, 122, 93}, }, + {{45, 122, -437}, }, + {{45, 122, -33}, }, + {{45, 122, -33}, }, + {{45, 57, -21}, {65, 65, 522}, {66, 90, 89}, {97, 97, 523}, {98, 122, 93}, }, + {{45, 122, -441}, }, + {{45, 82, -41}, {83, 83, 524}, {84, 114, -41}, {115, 115, 525}, {116, 122, 93}, }, + {{45, 122, -443}, }, + {{45, 81, -118}, {82, 82, 526}, {83, 113, -118}, {114, 114, 527}, {115, 122, 93}, }, + {{45, 122, -445}, }, + {{45, 70, -125}, {71, 71, 528}, {72, 102, -125}, {103, 103, 529}, {104, 122, 93}, }, + {{45, 122, -447}, }, + {{45, 122, -33}, }, + {{45, 122, -33}, }, + {{45, 72, -22}, {73, 73, 530}, {74, 104, -28}, {105, 105, 531}, {106, 122, 93}, }, + {{45, 122, -451}, }, + {{45, 122, -33}, }, + {{45, 122, -33}, }, + {{45, 82, -41}, {83, 83, 532}, {84, 114, -41}, {115, 115, 533}, {116, 122, 93}, }, + {{45, 122, -455}, }, + {{45, 82, -41}, {83, 83, 534}, {84, 114, -41}, {115, 115, 535}, {116, 122, 93}, }, + {{45, 122, -33}, }, + {{45, 122, -457}, }, + {{45, 122, -33}, }, + {{45, 72, -22}, {73, 73, 536}, {74, 104, -28}, {105, 105, 537}, {106, 122, 93}, }, + {{45, 122, -461}, }, + {{45, 122, -33}, }, + {{45, 122, -33}, }, + {{45, 83, -109}, {84, 84, 538}, {85, 115, -109}, {116, 116, 539}, {117, 122, 93}, }, + {{45, 122, -465}, }, + {{45, 122, -33}, }, + {{45, 122, -33}, }, + {{45, 122, -33}, }, + {{45, 122, -33}, }, + {{45, 122, -33}, }, + {{45, 57, -21}, {65, 65, 540}, {66, 90, 89}, {97, 97, 541}, {98, 122, 93}, }, + {{45, 122, -472}, }, + {{45, 72, -22}, {73, 73, 542}, {74, 104, -28}, {105, 105, 543}, {106, 122, 93}, }, + {{45, 122, -474}, }, + {{45, 67, -127}, {68, 68, 544}, {69, 99, -127}, {100, 100, 545}, {101, 122, 93}, }, + {{45, 122, -476}, }, + {{45, 88, -133}, {89, 89, 546}, {90, 120, -133}, {121, 121, 547}, {122, 122, 93}, }, + {{45, 122, -478}, }, + {{45, 57, -21}, {65, 65, 548}, {66, 90, 89}, {97, 97, 549}, {98, 122, 93}, }, + {{45, 122, -480}, }, + {{45, 122, -33}, }, + {{45, 122, -33}, }, + {{45, 122, -33}, }, + {{45, 122, -33}, }, + {{45, 78, -123}, {79, 79, 550}, {80, 110, -123}, {111, 111, 551}, {112, 122, 93}, }, + {{45, 122, -486}, }, + {{45, 122, -33}, }, + {{45, 122, -33}, }, + {{45, 57, -21}, {65, 65, 552}, {66, 90, 89}, {97, 97, 553}, {98, 122, 93}, }, + {{45, 122, -490}, }, + {{45, 67, -127}, {68, 68, 554}, {69, 99, -127}, {100, 100, 555}, {101, 122, 93}, }, + {{45, 122, -492}, }, + {{45, 72, -22}, {73, 73, 556}, {74, 104, -28}, {105, 105, 557}, {106, 122, 93}, }, + {{45, 122, -494}, }, + {{45, 70, -125}, {71, 71, 558}, {72, 102, -125}, {103, 103, 559}, {104, 122, 93}, }, + {{45, 122, -496}, }, + {{45, 75, -21}, {76, 76, 560}, {77, 107, -27}, {108, 108, 561}, {109, 122, 93}, }, + {{45, 122, -498}, }, + {{45, 57, -21}, {65, 65, 562}, {66, 90, 89}, {97, 97, 563}, {98, 122, 93}, }, + {{45, 122, -500}, }, + {{45, 122, -33}, }, + {{45, 122, -33}, }, + {{45, 122, -33}, }, + {{45, 122, -33}, }, + {{45, 122, -33}, }, + {{45, 122, -33}, }, + {{45, 45, 564}, {48, 122, -33}, }, + {{45, 122, -508}, }, + {{45, 68, -31}, {69, 69, 565}, {70, 100, -31}, {101, 101, 566}, {102, 122, 93}, }, + {{45, 122, -510}, }, + {{45, 81, -118}, {82, 82, 567}, {83, 113, -118}, {114, 114, 568}, {115, 122, 93}, }, + {{45, 122, -512}, }, + {{45, 84, -30}, {85, 85, 569}, {86, 116, -30}, {117, 117, 570}, {118, 122, 93}, }, + {{45, 122, -514}, }, + {{45, 122, -33}, }, + {{45, 122, -33}, }, + {{45, 77, -29}, {78, 78, 571}, {79, 109, -99}, {110, 110, 572}, {111, 122, 93}, }, + {{45, 122, -518}, }, + {{45, 77, -29}, {78, 78, 573}, {79, 109, -99}, {110, 110, 574}, {111, 122, 93}, }, + {{45, 122, -520}, }, + {{45, 82, -41}, {83, 83, 575}, {84, 114, -41}, {115, 115, 576}, {116, 122, 93}, }, + {{45, 122, -522}, }, + {{45, 83, -109}, {84, 84, 577}, {85, 115, -109}, {116, 116, 578}, {117, 122, 93}, }, + {{45, 122, -524}, }, + {{45, 122, -33}, }, + {{45, 122, -33}, }, + {{45, 78, -123}, {79, 79, 579}, {80, 110, -123}, {111, 111, 580}, {112, 122, 93}, }, + {{45, 122, -528}, }, + {{45, 71, -23}, {72, 72, 581}, {73, 103, -43}, {104, 104, 582}, {105, 122, 93}, }, + {{45, 122, -530}, }, + {{45, 77, -29}, {78, 78, 583}, {79, 109, -99}, {110, 110, 584}, {111, 122, 93}, }, + {{45, 122, -532}, }, + {{45, 122, -33}, }, + {{45, 122, -33}, }, + {{45, 122, -33}, }, + {{45, 122, -33}, }, + {{45, 77, -29}, {78, 78, 585}, {79, 109, -99}, {110, 110, 586}, {111, 122, 93}, }, + {{45, 122, -538}, }, + {{45, 68, -31}, {69, 69, 587}, {70, 100, -31}, {101, 101, 588}, {102, 122, 93}, }, + {{45, 122, -540}, }, + {{45, 83, -109}, {84, 84, 589}, {85, 115, -109}, {116, 116, 590}, {117, 122, 93}, }, + {{45, 122, -542}, }, + {{45, 77, -29}, {78, 78, 591}, {79, 109, -99}, {110, 110, 592}, {111, 122, 93}, }, + {{45, 122, -544}, }, + {{45, 72, -22}, {73, 73, 593}, {74, 104, -28}, {105, 105, 594}, {106, 122, 93}, }, + {{45, 122, -546}, }, + {{45, 45, 595}, {48, 122, -33}, }, + {{45, 122, -548}, }, + {{45, 75, -21}, {76, 76, 596}, {77, 107, -27}, {108, 108, 597}, {109, 122, 93}, }, + {{45, 122, -550}, }, + {{45, 77, -29}, {78, 78, 598}, {79, 109, -99}, {110, 110, 599}, {111, 122, 93}, }, + {{45, 122, -552}, }, + {{45, 75, -21}, {76, 76, 600}, {77, 107, -27}, {108, 108, 601}, {109, 122, 93}, }, + {{45, 122, -554}, }, + {{45, 122, -33}, }, + {{45, 122, -33}, }, + {{45, 68, -31}, {69, 69, 602}, {70, 100, -31}, {101, 101, 603}, {102, 122, 93}, }, + {{45, 122, -558}, }, + {{45, 122, -33}, }, + {{45, 122, -33}, }, + {{45, 84, -30}, {85, 85, 604}, {86, 116, -30}, {117, 117, 605}, {118, 122, 93}, }, + {{45, 122, -562}, }, + {{45, 75, -21}, {76, 76, 606}, {77, 107, -27}, {108, 108, 607}, {109, 122, 93}, }, + {{45, 122, -564}, }, + {{45, 67, -127}, {68, 68, 608}, {69, 99, -127}, {100, 100, 609}, {101, 122, 93}, }, + {{45, 122, -33}, }, + {{45, 122, -33}, }, + {{45, 122, -33}, }, + {{45, 122, -33}, }, + {{45, 81, -118}, {82, 82, 610}, {83, 113, -118}, {114, 114, 611}, {115, 122, 93}, }, + {{45, 122, -571}, }, + {{45, 68, -31}, {69, 69, 612}, {70, 100, -31}, {101, 101, 613}, {102, 122, 93}, }, + {{45, 122, -573}, }, + {{45, 66, -94}, {67, 67, 614}, {68, 98, -94}, {99, 99, 615}, {100, 122, 93}, }, + {{45, 122, -575}, }, + {{45, 122, -33}, }, + {{45, 122, -33}, }, + {{45, 68, -31}, {69, 69, 616}, {70, 100, -31}, {101, 101, 617}, {102, 122, 93}, }, + {{45, 122, -579}, }, + {{45, 77, -29}, {78, 78, 618}, {79, 109, -99}, {110, 110, 619}, {111, 122, 93}, }, + {{45, 122, -581}, }, + {{45, 122, -33}, }, + {{45, 122, -33}, }, + {{45, 70, -125}, {71, 71, 620}, {72, 102, -125}, {103, 103, 621}, {104, 122, 93}, }, + {{45, 122, -585}, }, + {{45, 70, -125}, {71, 71, 622}, {72, 102, -125}, {103, 103, 623}, {104, 122, 93}, }, + {{45, 122, -587}, }, + {{45, 81, -118}, {82, 82, 624}, {83, 113, -118}, {114, 114, 625}, {115, 122, 93}, }, + {{45, 122, -589}, }, + {{45, 72, -22}, {73, 73, 626}, {74, 104, -28}, {105, 105, 627}, {106, 122, 93}, }, + {{45, 122, -591}, }, + {{45, 70, -125}, {71, 71, 628}, {72, 102, -125}, {103, 103, 629}, {104, 122, 93}, }, + {{45, 122, -593}, }, + {{45, 77, -29}, {78, 78, 630}, {79, 109, -99}, {110, 110, 631}, {111, 122, 93}, }, + {{45, 122, -595}, }, + {{45, 48, -385}, {49, 49, 632}, {50, 57, 88}, {65, 122, -33}, }, + {{45, 122, -33}, }, + {{45, 122, -33}, }, + {{45, 45, 633}, {48, 122, -33}, }, + {{45, 122, -600}, }, + {{45, 84, -30}, {85, 85, 634}, {86, 116, -30}, {117, 117, 635}, {118, 122, 93}, }, + {{45, 122, -602}, }, + {{45, 67, -127}, {68, 68, 636}, {69, 99, -127}, {100, 100, 637}, {101, 122, 93}, }, + {{45, 122, -604}, }, + {{45, 68, -31}, {69, 69, 638}, {70, 100, -31}, {101, 101, 639}, {102, 122, 93}, }, + {{45, 122, -606}, }, + {{45, 122, -33}, }, + {{45, 122, -33}, }, + {{45, 68, -31}, {69, 69, 640}, {70, 100, -31}, {101, 101, 641}, {102, 122, 93}, }, + {{45, 122, -610}, }, + {{45, 68, -31}, {69, 69, 642}, {70, 100, -31}, {101, 101, 643}, {102, 122, 93}, }, + {{45, 122, -612}, }, + {{45, 82, -41}, {83, 83, 644}, {84, 114, -41}, {115, 115, 645}, {116, 122, 93}, }, + {{45, 122, -614}, }, + {{45, 68, -31}, {69, 69, 646}, {70, 100, -31}, {101, 101, 647}, {102, 122, 93}, }, + {{45, 122, -616}, }, + {{45, 122, -33}, }, + {{45, 122, -33}, }, + {{45, 72, -22}, {73, 73, 648}, {74, 104, -28}, {105, 105, 649}, {106, 122, 93}, }, + {{45, 122, -620}, }, + {{45, 122, -33}, }, + {{45, 122, -33}, }, + {{45, 122, -33}, }, + {{45, 122, -33}, }, + {{45, 122, -33}, }, + {{45, 122, -33}, }, + {{45, 78, -123}, {79, 79, 650}, {80, 110, -123}, {111, 111, 651}, {112, 122, 93}, }, + {{45, 122, -628}, }, + {{45, 122, -33}, }, + {{45, 122, -33}, }, + {{45, 70, -125}, {71, 71, 652}, {72, 102, -125}, {103, 103, 653}, {104, 122, 93}, }, + {{45, 122, -632}, }, + {{45, 122, -33}, }, + {{45, 79, -110}, {80, 80, 654}, {81, 111, -163}, {112, 112, 655}, {113, 122, 93}, }, + {{45, 68, -31}, {69, 69, 656}, {70, 100, -31}, {101, 101, 657}, {102, 122, 93}, }, + {{45, 122, -636}, }, + {{45, 122, -33}, }, + {{45, 122, -33}, }, + {{45, 82, -41}, {83, 83, 658}, {84, 114, -41}, {115, 115, 659}, {116, 122, 93}, }, + {{45, 122, -640}, }, + {{45, 66, -94}, {67, 67, 660}, {68, 98, -94}, {99, 99, 661}, {100, 122, 93}, }, + {{45, 122, -642}, }, + {{45, 45, 662}, {48, 122, -33}, }, + {{45, 122, -644}, }, + {{45, 122, -33}, }, + {{45, 122, -33}, }, + {{45, 122, -33}, }, + {{45, 122, -33}, }, + {{45, 57, -21}, {65, 89, 89}, {90, 90, 663}, {97, 121, 93}, {122, 122, 664}, }, + {{45, 122, -650}, }, + {{45, 77, -29}, {78, 78, 665}, {79, 109, -99}, {110, 110, 666}, {111, 122, 93}, }, + {{45, 122, -652}, }, + {{45, 122, -33}, }, + {{45, 122, -33}, }, + {{45, 78, -123}, {79, 79, 667}, {80, 110, -123}, {111, 111, 668}, {112, 122, 93}, }, + {{45, 122, -656}, }, + {{45, 82, -41}, {83, 83, 669}, {84, 114, -41}, {115, 115, 670}, {116, 122, 93}, }, + {{45, 122, -658}, }, + {{45, 122, -33}, }, + {{45, 122, -33}, }, + {{45, 72, -22}, {73, 73, 671}, {74, 104, -28}, {105, 105, 672}, {106, 122, 93}, }, + {{45, 122, -662}, }, + {{45, 79, -110}, {80, 80, 673}, {81, 111, -163}, {112, 112, 674}, {113, 122, 93}, }, + {{45, 68, -31}, {69, 69, 675}, {70, 100, -31}, {101, 101, 676}, {102, 122, 93}, }, + {{45, 122, -665}, }, + {{45, 57, -21}, {65, 65, 677}, {66, 90, 89}, {97, 97, 678}, {98, 122, 93}, }, + {{45, 122, -667}, }, + {{45, 72, -22}, {73, 73, 679}, {74, 104, -28}, {105, 105, 680}, {106, 122, 93}, }, + {{45, 122, -669}, }, + {{45, 122, -33}, }, + {{45, 122, -33}, }, + {{45, 76, -106}, {77, 77, 681}, {78, 108, -106}, {109, 109, 682}, {110, 122, 93}, }, + {{45, 122, -673}, }, + {{45, 78, -123}, {79, 79, 683}, {80, 110, -123}, {111, 111, 684}, {112, 122, 93}, }, + {{45, 122, -675}, }, + {{45, 67, -127}, {68, 68, 685}, {69, 99, -127}, {100, 100, 686}, {101, 122, 93}, }, + {{45, 122, -677}, }, + {{45, 75, -21}, {76, 76, 687}, {77, 107, -27}, {108, 108, 688}, {109, 122, 93}, }, + {{45, 122, -679}, }, + {{45, 77, -29}, {78, 78, 689}, {79, 109, -99}, {110, 110, 690}, {111, 122, 93}, }, + {{45, 122, -681}, }, + {{45, 57, -21}, {65, 65, 691}, {66, 90, 89}, {97, 97, 692}, {98, 122, 93}, }, + {{45, 122, -683}, }, + {{45, 72, -22}, {73, 73, 693}, {74, 104, -28}, {105, 105, 694}, {106, 122, 93}, }, + {{45, 122, -685}, }, + {{45, 122, -33}, }, + {{45, 122, -33}, }, + {{45, 45, 695}, {48, 122, -33}, }, + {{45, 122, -689}, }, + {{45, 83, -109}, {84, 84, 696}, {85, 115, -109}, {116, 116, 697}, {117, 122, 93}, }, + {{45, 122, -691}, }, + {{45, 75, -21}, {76, 76, 698}, {77, 107, -27}, {108, 108, 699}, {109, 122, 93}, }, + {{45, 122, -693}, }, + {{45, 77, -29}, {78, 78, 700}, {79, 109, -99}, {110, 110, 701}, {111, 122, 93}, }, + {{45, 122, -695}, }, + {{45, 48, -385}, {49, 49, 702}, {50, 50, 703}, {51, 51, 704}, {52, 52, 705}, {53, 53, 706}, {54, 122, -385}, }, + {{45, 68, -31}, {69, 69, 707}, {70, 100, -31}, {101, 101, 708}, {102, 122, 93}, }, + {{45, 122, -698}, }, + {{45, 122, -33}, }, + {{45, 122, -33}, }, + {{45, 83, -109}, {84, 84, 709}, {85, 115, -109}, {116, 116, 710}, {117, 122, 93}, }, + {{45, 122, -702}, }, + {{45, 122, -33}, }, + {{45, 122, -33}, }, + {{45, 122, -33}, }, + {{45, 122, -33}, }, + {{45, 122, -33}, }, + {{45, 81, -118}, {82, 82, 711}, {83, 113, -118}, {114, 114, 712}, {115, 122, 93}, }, + {{45, 122, -709}, }, + {{45, 68, -31}, {69, 69, 713}, {70, 100, -31}, {101, 101, 714}, {102, 122, 93}, }, + {{45, 122, -711}, }, + {{45, 122, -33}, }, + {{45, 122, -33}, }, + {{45, 81, -118}, {82, 82, 715}, {83, 113, -118}, {114, 114, 716}, {115, 122, 93}, }, + {{45, 122, -715}, }, + {{45, 122, -33}, }, + {{45, 122, -33}, }, + } + };*/ - public Lexer(PushbackReader in) - { - this.in = in; - if(gotoTable == null) + + static { + URL resource = Lexer.class.getClassLoader().getResource("net/sf/cb2xml/sablecc/lexer/lexer.dat"); + + try { - try - { - DataInputStream s = new DataInputStream( - new BufferedInputStream( - Lexer.class.getResourceAsStream("lexer.dat"))); + DataInputStream s = new DataInputStream(resource.openStream()); - // read gotoTable - int length = s.readInt(); - gotoTable = new int[length][][][]; - for(int i = 0; i < gotoTable.length; i++) + // read gotoTable + int length = s.readInt(); + gotoTable = new int[length][][][]; + for(int i = 0; i < gotoTable.length; i++) + { + length = s.readInt(); + gotoTable[i] = new int[length][][]; + for(int j = 0; j < gotoTable[i].length; j++) { length = s.readInt(); - gotoTable[i] = new int[length][][]; - for(int j = 0; j < gotoTable[i].length; j++) + gotoTable[i][j] = new int[length][3]; + for(int k = 0; k < gotoTable[i][j].length; k++) { - length = s.readInt(); - gotoTable[i][j] = new int[length][3]; - for(int k = 0; k < gotoTable[i][j].length; k++) + for(int l = 0; l < 3; l++) { - for(int l = 0; l < 3; l++) - { - gotoTable[i][j][k][l] = s.readInt(); - } + gotoTable[i][j][k][l] = s.readInt(); } } } + } - // read accept + // read accept + length = s.readInt(); + accept = new int[length][]; + for(int i = 0; i < accept.length; i++) + { length = s.readInt(); - accept = new int[length][]; - for(int i = 0; i < accept.length; i++) + accept[i] = new int[length]; + for(int j = 0; j < accept[i].length; j++) { - length = s.readInt(); - accept[i] = new int[length]; - for(int j = 0; j < accept[i].length; j++) - { - accept[i][j] = s.readInt(); - } + accept[i][j] = s.readInt(); } - - s.close(); - } - catch(Exception e) - { - throw new RuntimeException("The file \"lexer.dat\" is either missing or corrupted."); } + + s.close(); + } + catch(Exception e) + { + throw new RuntimeException("The file \"lexer.dat\" is either missing or corrupted.", e); + } + } + + protected void filter() throws LexerException, IOException + { + } + public Lexer(PushbackReader in) + { + this.in = in; + + if(gotoTable == null) + { + throw new RuntimeException("The file \"lexer.dat\" is either missing or corrupted."); } } @@ -1208,736 +1945,7 @@ private String getText(int acceptLength) return s.toString(); } - private static int[][][][] gotoTable; -/* { - { // INITIAL - {{0, 8, 1}, {9, 9, 2}, {10, 10, 3}, {11, 12, 1}, {13, 13, 4}, {14, 31, 1}, {32, 32, 5}, {33, 33, 1}, {34, 34, 6}, {35, 35, 1}, {36, 36, 7}, {37, 38, 1}, {39, 39, 8}, {40, 40, 9}, {41, 41, 10}, {42, 42, 11}, {43, 43, 12}, {44, 44, 13}, {45, 45, 14}, {46, 46, 15}, {47, 47, 16}, {48, 55, 17}, {56, 56, 18}, {57, 57, 17}, {58, 64, 1}, {65, 65, 19}, {66, 66, 20}, {67, 67, 21}, {68, 68, 22}, {69, 69, 23}, {70, 70, 24}, {71, 71, 25}, {72, 72, 26}, {73, 73, 27}, {74, 74, 28}, {75, 75, 29}, {76, 76, 30}, {77, 77, 31}, {78, 78, 32}, {79, 79, 33}, {80, 80, 34}, {81, 81, 35}, {82, 82, 36}, {83, 83, 37}, {84, 84, 38}, {85, 85, 39}, {86, 86, 40}, {87, 87, 41}, {88, 89, 31}, {90, 90, 42}, {91, 96, 1}, {97, 97, 43}, {98, 98, 44}, {99, 99, 45}, {100, 100, 46}, {101, 101, 47}, {102, 102, 48}, {103, 103, 49}, {104, 104, 50}, {105, 105, 51}, {106, 106, 52}, {107, 107, 53}, {108, 108, 54}, {109, 109, 55}, {110, 110, 56}, {111, 111, 57}, {112, 112, 58}, {113, 113, 59}, {114, 114, 60}, {115, 115, 61}, {116, 116, 62}, {117, 117, 63}, {118, 118, 64}, {119, 119, 65}, {120, 121, 55}, {122, 122, 66}, {123, 65535, 1}, }, - {}, - {{9, 9, 67}, {10, 10, 68}, {13, 13, 69}, {32, 32, 70}, }, - {{9, 32, -4}, }, - {{9, 9, 67}, {10, 10, 71}, {13, 32, -4}, }, - {{9, 32, -4}, }, - {{0, 33, 72}, {34, 34, 73}, {35, 65535, 72}, }, - {}, - {{0, 38, 74}, {39, 39, 75}, {40, 65535, 74}, }, - {}, - {}, - {{0, 9, 76}, {10, 10, 77}, {11, 12, 76}, {13, 13, 78}, {14, 65535, 76}, }, - {{46, 46, 79}, {48, 57, 80}, }, - {}, - {{46, 57, -14}, }, - {{48, 57, 81}, {90, 90, 82}, }, - {}, - {{46, 46, 79}, {48, 57, 83}, {65, 90, 84}, {97, 122, 85}, }, - {{46, 46, 79}, {48, 55, 83}, {56, 56, 86}, {57, 57, 83}, {65, 122, -19}, }, - {{45, 45, 87}, {48, 57, 88}, {65, 75, 89}, {76, 76, 90}, {77, 81, 89}, {82, 82, 91}, {83, 83, 92}, {84, 90, 89}, {97, 107, 93}, {108, 108, 94}, {109, 113, 93}, {114, 114, 95}, {115, 115, 96}, {116, 122, 93}, }, - {{45, 57, -21}, {65, 72, 89}, {73, 73, 97}, {74, 75, 89}, {76, 76, 98}, {77, 88, 89}, {89, 89, 99}, {90, 90, 89}, {97, 104, 93}, {105, 105, 100}, {106, 107, 93}, {108, 108, 101}, {109, 120, 93}, {121, 121, 102}, {122, 122, 93}, }, - {{45, 57, -21}, {65, 71, 89}, {72, 72, 103}, {73, 78, 89}, {79, 79, 104}, {80, 90, 89}, {97, 103, 93}, {104, 104, 105}, {105, 110, 93}, {111, 111, 106}, {112, 122, 93}, }, - {{45, 57, -21}, {65, 65, 107}, {66, 68, 89}, {69, 69, 108}, {70, 72, 89}, {73, 73, 109}, {74, 90, 89}, {97, 97, 110}, {98, 100, 93}, {101, 101, 111}, {102, 104, 93}, {105, 105, 112}, {106, 122, 93}, }, - {{45, 57, -21}, {65, 87, 89}, {88, 88, 113}, {89, 90, 89}, {97, 119, 93}, {120, 120, 114}, {121, 122, 93}, }, - {{45, 72, -22}, {73, 73, 115}, {74, 78, 89}, {79, 79, 116}, {80, 84, 89}, {85, 85, 117}, {86, 90, 89}, {97, 104, 93}, {105, 105, 118}, {106, 110, 93}, {111, 111, 119}, {112, 116, 93}, {117, 117, 120}, {118, 122, 93}, }, - {{45, 75, -21}, {76, 76, 121}, {77, 90, 89}, {97, 107, 93}, {108, 108, 122}, {109, 122, 93}, }, - {{45, 72, -22}, {73, 73, 123}, {74, 90, 89}, {97, 104, 93}, {105, 105, 124}, {106, 122, 93}, }, - {{45, 57, -21}, {65, 77, 89}, {78, 78, 125}, {79, 82, 89}, {83, 83, 126}, {84, 90, 89}, {97, 109, 93}, {110, 110, 127}, {111, 114, 93}, {115, 115, 128}, {116, 122, 93}, }, - {{45, 57, -21}, {65, 84, 89}, {85, 85, 129}, {86, 90, 89}, {97, 116, 93}, {117, 117, 130}, {118, 122, 93}, }, - {{45, 57, -21}, {65, 68, 89}, {69, 69, 131}, {70, 90, 89}, {97, 100, 93}, {101, 101, 132}, {102, 122, 93}, }, - {{45, 68, -31}, {69, 69, 133}, {70, 78, 89}, {79, 79, 134}, {80, 90, 89}, {97, 100, 93}, {101, 101, 135}, {102, 110, 93}, {111, 111, 136}, {112, 122, 93}, }, - {{45, 57, -21}, {65, 90, 89}, {97, 122, 93}, }, - {{45, 57, -21}, {65, 65, 137}, {66, 84, 89}, {85, 85, 138}, {86, 90, 89}, {97, 97, 139}, {98, 116, 93}, {117, 117, 140}, {118, 122, 93}, }, - {{45, 57, -21}, {65, 65, 89}, {66, 66, 141}, {67, 67, 142}, {68, 77, 89}, {78, 78, 143}, {79, 90, 89}, {97, 97, 93}, {98, 98, 144}, {99, 99, 145}, {100, 109, 93}, {110, 110, 146}, {111, 122, 93}, }, - {{45, 57, -21}, {65, 65, 147}, {66, 72, 89}, {73, 73, 148}, {74, 78, 89}, {79, 79, 149}, {80, 81, 89}, {82, 82, 150}, {83, 90, 89}, {97, 97, 151}, {98, 104, 93}, {105, 105, 152}, {106, 110, 93}, {111, 111, 153}, {112, 113, 93}, {114, 114, 154}, {115, 122, 93}, }, - {{45, 84, -30}, {85, 85, 155}, {86, 116, -30}, {117, 117, 156}, {118, 122, 93}, }, - {{45, 68, -31}, {69, 69, 157}, {70, 72, 89}, {73, 73, 158}, {74, 90, 89}, {97, 100, 93}, {101, 101, 159}, {102, 104, 93}, {105, 105, 160}, {106, 122, 93}, }, - {{45, 68, -31}, {69, 69, 161}, {70, 72, 89}, {73, 73, 162}, {74, 79, 89}, {80, 80, 163}, {81, 88, 89}, {89, 89, 164}, {90, 90, 89}, {97, 100, 93}, {101, 101, 165}, {102, 104, 93}, {105, 105, 166}, {106, 111, 93}, {112, 112, 167}, {113, 120, 93}, {121, 121, 168}, {122, 122, 93}, }, - {{45, 71, -23}, {72, 72, 169}, {73, 73, 170}, {74, 78, 89}, {79, 79, 171}, {80, 81, 89}, {82, 82, 172}, {83, 90, 89}, {97, 103, 93}, {104, 104, 173}, {105, 105, 174}, {106, 110, 93}, {111, 111, 175}, {112, 113, 93}, {114, 114, 176}, {115, 122, 93}, }, - {{45, 57, -21}, {65, 82, 89}, {83, 83, 177}, {84, 90, 89}, {97, 114, 93}, {115, 115, 178}, {116, 122, 93}, }, - {{45, 57, -21}, {65, 65, 179}, {66, 90, 89}, {97, 97, 180}, {98, 122, 93}, }, - {{45, 71, -23}, {72, 72, 181}, {73, 90, 89}, {97, 103, 93}, {104, 104, 182}, {105, 122, 93}, }, - {{45, 68, -31}, {69, 69, 183}, {70, 100, -31}, {101, 101, 184}, {102, 122, 93}, }, - {{45, 122, -21}, }, - {{45, 122, -22}, }, - {{45, 122, -23}, }, - {{45, 122, -24}, }, - {{45, 122, -25}, }, - {{45, 122, -26}, }, - {{45, 122, -27}, }, - {{45, 122, -28}, }, - {{45, 122, -29}, }, - {{45, 122, -30}, }, - {{45, 122, -31}, }, - {{45, 122, -32}, }, - {{45, 122, -33}, }, - {{45, 122, -34}, }, - {{45, 122, -35}, }, - {{45, 122, -36}, }, - {{45, 122, -37}, }, - {{45, 122, -38}, }, - {{45, 122, -39}, }, - {{45, 122, -40}, }, - {{45, 122, -41}, }, - {{45, 122, -42}, }, - {{45, 122, -43}, }, - {{45, 122, -44}, }, - {{9, 32, -4}, }, - {{9, 32, -4}, }, - {{9, 32, -6}, }, - {{9, 32, -4}, }, - {{9, 32, -4}, }, - {{0, 65535, -8}, }, - {{34, 34, 185}, }, - {{0, 65535, -10}, }, - {{39, 39, 186}, }, - {{0, 65535, -13}, }, - {}, - {{10, 10, 187}, }, - {{48, 57, 81}, }, - {{46, 57, -14}, }, - {{48, 57, 81}, {69, 69, 188}, }, - {{90, 90, 82}, }, - {{46, 122, -19}, }, - {{45, 122, -33}, }, - {{45, 122, -33}, }, - {{46, 122, -19}, }, - {{45, 122, -33}, }, - {{45, 122, -33}, }, - {{45, 122, -33}, }, - {{45, 75, -21}, {76, 76, 189}, {77, 107, -27}, {108, 108, 190}, {109, 122, 93}, }, - {{45, 68, -31}, {69, 69, 191}, {70, 100, -31}, {101, 101, 192}, {102, 122, 93}, }, - {{45, 57, -21}, {65, 66, 89}, {67, 67, 193}, {68, 90, 89}, {97, 98, 93}, {99, 99, 194}, {100, 122, 93}, }, - {{45, 122, -33}, }, - {{45, 122, -92}, }, - {{45, 122, -93}, }, - {{45, 122, -94}, }, - {{45, 77, -29}, {78, 78, 195}, {79, 90, 89}, {97, 109, 93}, {110, 110, 196}, {111, 122, 93}, }, - {{45, 57, -21}, {65, 65, 197}, {66, 90, 89}, {97, 97, 198}, {98, 122, 93}, }, - {{45, 122, -33}, }, - {{45, 122, -99}, }, - {{45, 122, -100}, }, - {{45, 122, -33}, }, - {{45, 57, -21}, {65, 65, 199}, {66, 90, 89}, {97, 97, 200}, {98, 122, 93}, }, - {{45, 57, -21}, {65, 76, 89}, {77, 77, 201}, {78, 90, 89}, {97, 108, 93}, {109, 109, 202}, {110, 122, 93}, }, - {{45, 122, -105}, }, - {{45, 122, -106}, }, - {{45, 57, -21}, {65, 83, 89}, {84, 84, 203}, {85, 90, 89}, {97, 115, 93}, {116, 116, 204}, {117, 122, 93}, }, - {{45, 57, -21}, {65, 79, 89}, {80, 80, 205}, {81, 82, 89}, {83, 83, 206}, {84, 90, 89}, {97, 111, 93}, {112, 112, 207}, {113, 114, 93}, {115, 115, 208}, {116, 122, 93}, }, - {{45, 82, -41}, {83, 83, 209}, {84, 114, -41}, {115, 115, 210}, {116, 122, 93}, }, - {{45, 122, -109}, }, - {{45, 122, -110}, }, - {{45, 122, -111}, }, - {{45, 83, -109}, {84, 84, 211}, {85, 115, -109}, {116, 116, 212}, {117, 122, 93}, }, - {{45, 122, -115}, }, - {{45, 75, -21}, {76, 76, 213}, {77, 107, -27}, {108, 108, 214}, {109, 122, 93}, }, - {{45, 57, -21}, {65, 81, 89}, {82, 82, 215}, {83, 90, 89}, {97, 113, 93}, {114, 114, 216}, {115, 122, 93}, }, - {{45, 77, -29}, {78, 78, 217}, {79, 109, -99}, {110, 110, 218}, {111, 122, 93}, }, - {{45, 122, -117}, }, - {{45, 122, -118}, }, - {{45, 122, -119}, }, - {{45, 57, -21}, {65, 78, 89}, {79, 79, 219}, {80, 90, 89}, {97, 110, 93}, {111, 111, 220}, {112, 122, 93}, }, - {{45, 122, -123}, }, - {{45, 57, -21}, {65, 70, 89}, {71, 71, 221}, {72, 90, 89}, {97, 102, 93}, {103, 103, 222}, {104, 122, 93}, }, - {{45, 122, -125}, }, - {{45, 57, -21}, {65, 67, 89}, {68, 68, 223}, {69, 90, 89}, {97, 99, 93}, {100, 100, 224}, {101, 122, 93}, }, - {{45, 122, -33}, }, - {{45, 122, -127}, }, - {{45, 122, -33}, }, - {{45, 82, -41}, {83, 83, 225}, {84, 114, -41}, {115, 115, 226}, {116, 122, 93}, }, - {{45, 122, -131}, }, - {{45, 57, -21}, {65, 88, 89}, {89, 89, 227}, {90, 90, 89}, {97, 120, 93}, {121, 121, 228}, {122, 122, 93}, }, - {{45, 122, -133}, }, - {{45, 57, -21}, {65, 65, 229}, {66, 69, 89}, {70, 70, 230}, {71, 90, 89}, {97, 97, 231}, {98, 101, 93}, {102, 102, 232}, {103, 122, 93}, }, - {{45, 57, -21}, {65, 86, 89}, {87, 87, 233}, {88, 90, 89}, {97, 118, 93}, {119, 119, 234}, {120, 122, 93}, }, - {{45, 122, -135}, }, - {{45, 122, -136}, }, - {{45, 83, -109}, {84, 84, 235}, {85, 115, -109}, {116, 116, 236}, {117, 122, 93}, }, - {{45, 75, -21}, {76, 76, 237}, {77, 107, -27}, {108, 108, 238}, {109, 122, 93}, }, - {{45, 122, -139}, }, - {{45, 122, -140}, }, - {{45, 57, -21}, {65, 73, 89}, {74, 74, 239}, {75, 90, 89}, {97, 105, 93}, {106, 106, 240}, {107, 122, 93}, }, - {{45, 66, -94}, {67, 67, 241}, {68, 98, -94}, {99, 99, 242}, {100, 122, 93}, }, - {{45, 122, -33}, }, - {{45, 122, -143}, }, - {{45, 122, -144}, }, - {{45, 122, -33}, }, - {{45, 66, -94}, {67, 67, 243}, {68, 98, -94}, {99, 99, 244}, {100, 122, 93}, }, - {{45, 66, -94}, {67, 67, 245}, {68, 98, -94}, {99, 99, 246}, {100, 122, 93}, }, - {{45, 72, -22}, {73, 73, 247}, {74, 104, -28}, {105, 105, 248}, {106, 122, 93}, }, - {{45, 78, -123}, {79, 79, 249}, {80, 110, -123}, {111, 111, 250}, {112, 122, 93}, }, - {{45, 122, -149}, }, - {{45, 122, -150}, }, - {{45, 122, -151}, }, - {{45, 122, -152}, }, - {{45, 78, -123}, {79, 79, 251}, {80, 110, -123}, {111, 111, 252}, {112, 122, 93}, }, - {{45, 122, -157}, }, - {{45, 67, -127}, {68, 68, 253}, {69, 69, 89}, {70, 70, 254}, {71, 77, 89}, {78, 78, 255}, {79, 90, 89}, {97, 99, 93}, {100, 100, 256}, {101, 101, 93}, {102, 102, 257}, {103, 109, 93}, {110, 110, 258}, {111, 122, 93}, }, - {{45, 70, -125}, {71, 71, 259}, {72, 102, -125}, {103, 103, 260}, {104, 122, 93}, }, - {{45, 122, -159}, }, - {{45, 122, -160}, }, - {{45, 79, -110}, {80, 80, 261}, {81, 90, 89}, {97, 111, 93}, {112, 112, 262}, {113, 122, 93}, }, - {{45, 70, -125}, {71, 71, 263}, {72, 102, -125}, {103, 103, 264}, {104, 122, 93}, }, - {{45, 57, -21}, {65, 65, 265}, {66, 90, 89}, {97, 97, 266}, {98, 122, 93}, }, - {{45, 77, -29}, {78, 78, 267}, {79, 109, -99}, {110, 110, 268}, {111, 122, 93}, }, - {{45, 122, -163}, }, - {{45, 122, -164}, }, - {{45, 122, -165}, }, - {{45, 122, -166}, }, - {{45, 81, -118}, {82, 82, 269}, {83, 113, -118}, {114, 114, 270}, {115, 122, 93}, }, - {{45, 76, -106}, {77, 77, 271}, {78, 108, -106}, {109, 109, 272}, {110, 122, 93}, }, - {{45, 122, -33}, }, - {{45, 57, -21}, {65, 65, 273}, {66, 90, 89}, {97, 97, 274}, {98, 122, 93}, }, - {{45, 122, -171}, }, - {{45, 122, -172}, }, - {{45, 122, -33}, }, - {{45, 122, -174}, }, - {{45, 57, -21}, {65, 65, 275}, {66, 90, 89}, {97, 97, 276}, {98, 122, 93}, }, - {{45, 122, -179}, }, - {{45, 75, -21}, {76, 76, 277}, {77, 107, -27}, {108, 108, 278}, {109, 122, 93}, }, - {{45, 122, -181}, }, - {{45, 68, -31}, {69, 69, 279}, {70, 100, -31}, {101, 101, 280}, {102, 122, 93}, }, - {{45, 122, -183}, }, - {{45, 81, -118}, {82, 82, 281}, {83, 113, -118}, {114, 114, 282}, {115, 122, 93}, }, - {{45, 122, -185}, }, - {{0, 65535, -8}, }, - {{0, 65535, -10}, }, - {}, - {{43, 43, 283}, {45, 45, 284}, {48, 57, 285}, }, - {{45, 122, -33}, }, - {{45, 122, -33}, }, - {{45, 122, -33}, }, - {{45, 122, -33}, }, - {{45, 68, -31}, {69, 69, 286}, {70, 100, -31}, {101, 101, 287}, {102, 122, 93}, }, - {{45, 122, -195}, }, - {{45, 57, -21}, {65, 65, 288}, {66, 90, 89}, {97, 97, 289}, {98, 122, 93}, }, - {{45, 122, -197}, }, - {{45, 77, -29}, {78, 78, 290}, {79, 109, -99}, {110, 110, 291}, {111, 122, 93}, }, - {{45, 122, -199}, }, - {{45, 81, -118}, {82, 82, 292}, {83, 113, -118}, {114, 114, 293}, {115, 122, 93}, }, - {{45, 122, -201}, }, - {{45, 79, -110}, {80, 80, 294}, {81, 111, -163}, {112, 112, 295}, {113, 122, 93}, }, - {{45, 122, -203}, }, - {{45, 68, -31}, {69, 69, 296}, {70, 100, -31}, {101, 101, 297}, {102, 122, 93}, }, - {{45, 122, -205}, }, - {{45, 68, -31}, {69, 69, 298}, {70, 100, -31}, {101, 101, 299}, {102, 122, 93}, }, - {{45, 66, -94}, {67, 67, 300}, {68, 98, -94}, {99, 99, 301}, {100, 122, 93}, }, - {{45, 122, -207}, }, - {{45, 122, -208}, }, - {{45, 79, -110}, {80, 80, 302}, {81, 111, -163}, {112, 112, 303}, {113, 122, 93}, }, - {{45, 122, -211}, }, - {{45, 68, -31}, {69, 69, 304}, {70, 100, -31}, {101, 101, 305}, {102, 122, 93}, }, - {{45, 122, -213}, }, - {{45, 75, -21}, {76, 76, 306}, {77, 107, -27}, {108, 108, 307}, {109, 122, 93}, }, - {{45, 122, -215}, }, - {{45, 76, -106}, {77, 77, 308}, {78, 108, -106}, {109, 109, 309}, {110, 122, 93}, }, - {{45, 122, -217}, }, - {{45, 66, -94}, {67, 67, 310}, {68, 98, -94}, {99, 99, 311}, {100, 122, 93}, }, - {{45, 122, -219}, }, - {{45, 65, -35}, {66, 66, 312}, {67, 90, 89}, {97, 97, 93}, {98, 98, 313}, {99, 122, 93}, }, - {{45, 122, -221}, }, - {{45, 71, -23}, {72, 72, 314}, {73, 103, -43}, {104, 104, 315}, {105, 122, 93}, }, - {{45, 122, -223}, }, - {{45, 68, -31}, {69, 69, 316}, {70, 100, -31}, {101, 101, 317}, {102, 122, 93}, }, - {{45, 122, -225}, }, - {{45, 83, -109}, {84, 84, 318}, {85, 115, -109}, {116, 116, 319}, {117, 122, 93}, }, - {{45, 122, -227}, }, - {{45, 122, -33}, }, - {{45, 122, -33}, }, - {{45, 67, -127}, {68, 68, 320}, {69, 99, -127}, {100, 100, 321}, {101, 122, 93}, }, - {{45, 83, -109}, {84, 84, 322}, {85, 115, -109}, {116, 116, 323}, {117, 122, 93}, }, - {{45, 122, -231}, }, - {{45, 122, -232}, }, - {{45, 45, 324}, {48, 122, -33}, }, - {{45, 122, -235}, }, - {{45, 72, -22}, {73, 73, 325}, {74, 104, -28}, {105, 105, 326}, {106, 122, 93}, }, - {{45, 122, -237}, }, - {{45, 75, -21}, {76, 76, 327}, {77, 107, -27}, {108, 108, 328}, {109, 122, 93}, }, - {{45, 122, -239}, }, - {{45, 68, -31}, {69, 69, 329}, {70, 100, -31}, {101, 101, 330}, {102, 122, 93}, }, - {{45, 122, -241}, }, - {{45, 84, -30}, {85, 85, 331}, {86, 116, -30}, {117, 117, 332}, {118, 122, 93}, }, - {{45, 122, -243}, }, - {{45, 57, -21}, {65, 74, 89}, {75, 75, 333}, {76, 90, 89}, {97, 106, 93}, {107, 107, 334}, {108, 122, 93}, }, - {{45, 122, -245}, }, - {{45, 83, -109}, {84, 84, 335}, {85, 115, -109}, {116, 116, 336}, {117, 122, 93}, }, - {{45, 122, -247}, }, - {{45, 77, -29}, {78, 78, 337}, {79, 109, -99}, {110, 110, 338}, {111, 122, 93}, }, - {{45, 122, -249}, }, - {{45, 66, -94}, {67, 67, 339}, {68, 98, -94}, {99, 99, 340}, {100, 122, 93}, }, - {{45, 122, -251}, }, - {{45, 83, -109}, {84, 84, 341}, {85, 115, -109}, {116, 116, 342}, {117, 122, 93}, }, - {{45, 122, -253}, }, - {{45, 68, -31}, {69, 69, 343}, {70, 100, -31}, {101, 101, 344}, {102, 122, 93}, }, - {{45, 68, -31}, {69, 69, 345}, {70, 100, -31}, {101, 101, 346}, {102, 122, 93}, }, - {{45, 57, -21}, {65, 65, 347}, {66, 90, 89}, {97, 97, 348}, {98, 122, 93}, }, - {{45, 122, -255}, }, - {{45, 122, -256}, }, - {{45, 122, -257}, }, - {{45, 71, -23}, {72, 72, 349}, {73, 103, -43}, {104, 104, 350}, {105, 122, 93}, }, - {{45, 122, -261}, }, - {{45, 57, -21}, {65, 65, 351}, {66, 90, 89}, {97, 97, 352}, {98, 122, 93}, }, - {{45, 122, -263}, }, - {{45, 77, -29}, {78, 78, 353}, {79, 109, -99}, {110, 110, 354}, {111, 122, 93}, }, - {{45, 122, -265}, }, - {{45, 66, -94}, {67, 67, 355}, {68, 98, -94}, {99, 99, 356}, {100, 122, 93}, }, - {{45, 122, -267}, }, - {{45, 66, -94}, {67, 67, 357}, {68, 98, -94}, {99, 99, 358}, {100, 122, 93}, }, - {{45, 122, -269}, }, - {{45, 78, -123}, {79, 79, 359}, {80, 84, 89}, {85, 85, 360}, {86, 90, 89}, {97, 110, 93}, {111, 111, 361}, {112, 116, 93}, {117, 117, 362}, {118, 122, 93}, }, - {{45, 122, -271}, }, - {{45, 68, -31}, {69, 69, 363}, {70, 100, -31}, {101, 101, 364}, {102, 122, 93}, }, - {{45, 122, -273}, }, - {{45, 72, -22}, {73, 73, 365}, {74, 104, -28}, {105, 105, 366}, {106, 122, 93}, }, - {{45, 122, -275}, }, - {{45, 70, -125}, {71, 71, 367}, {72, 102, -125}, {103, 103, 368}, {104, 122, 93}, }, - {{45, 122, -277}, }, - {{45, 84, -30}, {85, 85, 369}, {86, 116, -30}, {117, 117, 370}, {118, 122, 93}, }, - {{45, 122, -279}, }, - {{45, 77, -29}, {78, 78, 371}, {79, 109, -99}, {110, 110, 372}, {111, 122, 93}, }, - {{45, 122, -281}, }, - {{45, 78, -123}, {79, 79, 373}, {80, 110, -123}, {111, 111, 374}, {112, 122, 93}, }, - {{45, 122, -283}, }, - {{48, 57, 285}, }, - {{48, 57, 285}, }, - {{48, 57, 285}, }, - {{45, 77, -29}, {78, 78, 375}, {79, 109, -99}, {110, 110, 376}, {111, 122, 93}, }, - {{45, 122, -288}, }, - {{45, 81, -118}, {82, 82, 377}, {83, 113, -118}, {114, 114, 378}, {115, 122, 93}, }, - {{45, 122, -290}, }, - {{45, 74, -245}, {75, 75, 379}, {76, 106, -245}, {107, 107, 380}, {108, 122, 93}, }, - {{45, 122, -292}, }, - {{45, 57, -21}, {65, 65, 381}, {66, 90, 89}, {97, 97, 382}, {98, 122, 93}, }, - {{45, 122, -294}, }, - {{45, 45, 383}, {48, 84, -30}, {85, 85, 384}, {86, 116, -30}, {117, 117, 385}, {118, 122, 93}, }, - {{45, 122, -296}, }, - {{45, 122, -33}, }, - {{45, 122, -33}, }, - {{45, 77, -29}, {78, 78, 386}, {79, 109, -99}, {110, 110, 387}, {111, 122, 93}, }, - {{45, 122, -300}, }, - {{45, 68, -31}, {69, 69, 388}, {70, 100, -31}, {101, 101, 389}, {102, 122, 93}, }, - {{45, 122, -302}, }, - {{45, 75, -21}, {76, 76, 390}, {77, 107, -27}, {108, 108, 391}, {109, 122, 93}, }, - {{45, 122, -304}, }, - {{45, 81, -118}, {82, 82, 392}, {83, 113, -118}, {114, 114, 393}, {115, 122, 93}, }, - {{45, 122, -306}, }, - {{45, 68, -31}, {69, 69, 394}, {70, 100, -31}, {101, 101, 395}, {102, 122, 93}, }, - {{45, 122, -308}, }, - {{45, 57, -21}, {65, 65, 396}, {66, 90, 89}, {97, 97, 397}, {98, 122, 93}, }, - {{45, 122, -310}, }, - {{45, 83, -109}, {84, 84, 398}, {85, 115, -109}, {116, 116, 399}, {117, 122, 93}, }, - {{45, 122, -312}, }, - {{45, 57, -21}, {65, 65, 400}, {66, 90, 89}, {97, 97, 401}, {98, 122, 93}, }, - {{45, 122, -314}, }, - {{45, 45, 402}, {48, 122, -33}, }, - {{45, 122, -316}, }, - {{45, 87, -25}, {88, 88, 403}, {89, 119, -25}, {120, 120, 404}, {121, 122, 93}, }, - {{45, 122, -318}, }, - {{45, 72, -22}, {73, 73, 405}, {74, 104, -28}, {105, 105, 406}, {106, 122, 93}, }, - {{45, 122, -320}, }, - {{45, 72, -22}, {73, 73, 407}, {74, 104, -28}, {105, 105, 408}, {106, 122, 93}, }, - {{45, 122, -322}, }, - {{45, 122, -33}, }, - {{45, 122, -33}, }, - {{45, 57, -21}, {65, 85, 89}, {86, 86, 409}, {87, 90, 89}, {97, 117, 93}, {118, 118, 410}, {119, 122, 93}, }, - {{45, 78, -123}, {79, 79, 411}, {80, 85, 89}, {86, 86, 412}, {87, 90, 89}, {97, 110, 93}, {111, 111, 413}, {112, 117, 93}, {118, 118, 414}, {119, 122, 93}, }, - {{45, 122, -327}, }, - {{45, 82, -41}, {83, 83, 415}, {84, 114, -41}, {115, 115, 416}, {116, 122, 93}, }, - {{45, 122, -329}, }, - {{45, 66, -94}, {67, 67, 417}, {68, 98, -94}, {99, 99, 418}, {100, 122, 93}, }, - {{45, 122, -331}, }, - {{45, 81, -118}, {82, 82, 419}, {83, 113, -118}, {114, 114, 420}, {115, 122, 93}, }, - {{45, 122, -333}, }, - {{45, 68, -31}, {69, 69, 421}, {70, 100, -31}, {101, 101, 422}, {102, 122, 93}, }, - {{45, 122, -335}, }, - {{45, 84, -30}, {85, 85, 423}, {86, 116, -30}, {117, 117, 424}, {118, 122, 93}, }, - {{45, 122, -337}, }, - {{45, 83, -109}, {84, 84, 425}, {85, 115, -109}, {116, 116, 426}, {117, 122, 93}, }, - {{45, 122, -339}, }, - {{45, 68, -31}, {69, 69, 427}, {70, 100, -31}, {101, 101, 428}, {102, 122, 93}, }, - {{45, 122, -341}, }, - {{45, 68, -31}, {69, 69, 429}, {70, 100, -31}, {101, 101, 430}, {102, 122, 93}, }, - {{45, 122, -343}, }, - {{45, 57, -21}, {65, 69, 89}, {70, 70, 431}, {71, 90, 89}, {97, 101, 93}, {102, 102, 432}, {103, 122, 93}, }, - {{45, 122, -345}, }, - {{45, 81, -118}, {82, 82, 433}, {83, 113, -118}, {114, 114, 434}, {115, 122, 93}, }, - {{45, 122, -347}, }, - {{45, 76, -106}, {77, 77, 435}, {78, 108, -106}, {109, 109, 436}, {110, 122, 93}, }, - {{45, 122, -349}, }, - {{45, 83, -109}, {84, 84, 437}, {85, 115, -109}, {116, 116, 438}, {117, 122, 93}, }, - {{45, 122, -351}, }, - {{45, 81, -118}, {82, 82, 439}, {83, 113, -118}, {114, 114, 440}, {115, 122, 93}, }, - {{45, 122, -353}, }, - {{45, 122, -33}, }, - {{45, 122, -33}, }, - {{45, 68, -31}, {69, 69, 441}, {70, 100, -31}, {101, 101, 442}, {102, 122, 93}, }, - {{45, 122, -357}, }, - {{45, 71, -23}, {72, 72, 443}, {73, 103, -43}, {104, 104, 444}, {105, 122, 93}, }, - {{45, 122, -359}, }, - {{45, 84, -30}, {85, 85, 445}, {86, 116, -30}, {117, 117, 446}, {118, 122, 93}, }, - {{45, 122, -33}, }, - {{45, 122, -361}, }, - {{45, 122, -33}, }, - {{45, 82, -41}, {83, 83, 447}, {84, 114, -41}, {115, 115, 448}, {116, 122, 93}, }, - {{45, 122, -365}, }, - {{45, 75, -21}, {76, 76, 449}, {77, 107, -27}, {108, 108, 450}, {109, 122, 93}, }, - {{45, 122, -367}, }, - {{45, 68, -31}, {69, 69, 451}, {70, 100, -31}, {101, 101, 452}, {102, 122, 93}, }, - {{45, 122, -369}, }, - {{45, 68, -31}, {69, 69, 453}, {70, 100, -31}, {101, 101, 454}, {102, 122, 93}, }, - {{45, 122, -371}, }, - {{45, 122, -33}, }, - {{45, 122, -33}, }, - {{45, 68, -31}, {69, 69, 455}, {70, 82, 89}, {83, 83, 456}, {84, 90, 89}, {97, 100, 93}, {101, 101, 457}, {102, 114, 93}, {115, 115, 458}, {116, 122, 93}, }, - {{45, 122, -375}, }, - {{45, 67, -127}, {68, 68, 459}, {69, 99, -127}, {100, 100, 460}, {101, 122, 93}, }, - {{45, 122, -377}, }, - {{45, 88, -133}, {89, 89, 461}, {90, 120, -133}, {121, 121, 462}, {122, 122, 93}, }, - {{45, 122, -379}, }, - {{45, 122, -33}, }, - {{45, 122, -33}, }, - {{45, 66, -94}, {67, 67, 463}, {68, 98, -94}, {99, 99, 464}, {100, 122, 93}, }, - {{45, 122, -383}, }, - {{45, 45, 87}, {48, 48, 88}, {49, 49, 465}, {50, 50, 466}, {51, 51, 467}, {52, 52, 468}, {53, 53, 469}, {54, 57, 88}, {65, 122, -33}, }, - {{45, 83, -109}, {84, 84, 470}, {85, 115, -109}, {116, 116, 471}, {117, 122, 93}, }, - {{45, 122, -386}, }, - {{45, 67, -127}, {68, 68, 472}, {69, 99, -127}, {100, 100, 473}, {101, 122, 93}, }, - {{45, 122, -388}, }, - {{45, 77, -29}, {78, 78, 474}, {79, 109, -99}, {110, 110, 475}, {111, 122, 93}, }, - {{45, 122, -390}, }, - {{45, 57, -21}, {65, 65, 476}, {66, 90, 89}, {97, 97, 477}, {98, 122, 93}, }, - {{45, 122, -392}, }, - {{45, 77, -29}, {78, 78, 478}, {79, 109, -99}, {110, 110, 479}, {111, 122, 93}, }, - {{45, 122, -394}, }, - {{45, 81, -118}, {82, 82, 480}, {83, 113, -118}, {114, 114, 481}, {115, 122, 93}, }, - {{45, 122, -396}, }, - {{45, 83, -109}, {84, 84, 482}, {85, 115, -109}, {116, 116, 483}, {117, 122, 93}, }, - {{45, 122, -398}, }, - {{45, 72, -22}, {73, 73, 484}, {74, 104, -28}, {105, 105, 485}, {106, 122, 93}, }, - {{45, 122, -400}, }, - {{45, 75, -21}, {76, 76, 486}, {77, 107, -27}, {108, 108, 487}, {109, 122, 93}, }, - {{45, 122, -402}, }, - {{45, 85, -326}, {86, 86, 488}, {87, 117, -326}, {118, 118, 489}, {119, 122, 93}, }, - {{45, 68, -31}, {69, 69, 490}, {70, 100, -31}, {101, 101, 491}, {102, 122, 93}, }, - {{45, 122, -405}, }, - {{45, 69, -345}, {70, 70, 492}, {71, 101, -345}, {102, 102, 493}, {103, 122, 93}, }, - {{45, 122, -407}, }, - {{45, 77, -29}, {78, 78, 494}, {79, 109, -99}, {110, 110, 495}, {111, 122, 93}, }, - {{45, 122, -409}, }, - {{45, 57, -21}, {65, 65, 496}, {66, 90, 89}, {97, 97, 497}, {98, 122, 93}, }, - {{45, 122, -411}, }, - {{45, 77, -29}, {78, 78, 498}, {79, 109, -99}, {110, 110, 499}, {111, 122, 93}, }, - {{45, 68, -31}, {69, 69, 500}, {70, 100, -31}, {101, 101, 501}, {102, 122, 93}, }, - {{45, 122, -413}, }, - {{45, 122, -414}, }, - {{45, 122, -33}, }, - {{45, 122, -33}, }, - {{45, 83, -109}, {84, 84, 502}, {85, 115, -109}, {116, 116, 503}, {117, 122, 93}, }, - {{45, 122, -419}, }, - {{45, 82, -41}, {83, 83, 504}, {84, 114, -41}, {115, 115, 505}, {116, 122, 93}, }, - {{45, 122, -421}, }, - {{45, 67, -127}, {68, 68, 506}, {69, 99, -127}, {100, 100, 507}, {101, 122, 93}, }, - {{45, 122, -423}, }, - {{45, 81, -118}, {82, 82, 508}, {83, 113, -118}, {114, 114, 509}, {115, 122, 93}, }, - {{45, 122, -425}, }, - {{45, 68, -31}, {69, 69, 510}, {70, 100, -31}, {101, 101, 511}, {102, 122, 93}, }, - {{45, 122, -427}, }, - {{45, 67, -127}, {68, 68, 512}, {69, 99, -127}, {100, 100, 513}, {101, 122, 93}, }, - {{45, 122, -429}, }, - {{45, 82, -41}, {83, 83, 514}, {84, 114, -41}, {115, 115, 515}, {116, 122, 93}, }, - {{45, 122, -431}, }, - {{45, 72, -22}, {73, 73, 516}, {74, 104, -28}, {105, 105, 517}, {106, 122, 93}, }, - {{45, 122, -433}, }, - {{45, 68, -31}, {69, 69, 518}, {70, 100, -31}, {101, 101, 519}, {102, 122, 93}, }, - {{45, 122, -435}, }, - {{45, 68, -31}, {69, 69, 520}, {70, 100, -31}, {101, 101, 521}, {102, 122, 93}, }, - {{45, 122, -437}, }, - {{45, 122, -33}, }, - {{45, 122, -33}, }, - {{45, 57, -21}, {65, 65, 522}, {66, 90, 89}, {97, 97, 523}, {98, 122, 93}, }, - {{45, 122, -441}, }, - {{45, 82, -41}, {83, 83, 524}, {84, 114, -41}, {115, 115, 525}, {116, 122, 93}, }, - {{45, 122, -443}, }, - {{45, 81, -118}, {82, 82, 526}, {83, 113, -118}, {114, 114, 527}, {115, 122, 93}, }, - {{45, 122, -445}, }, - {{45, 70, -125}, {71, 71, 528}, {72, 102, -125}, {103, 103, 529}, {104, 122, 93}, }, - {{45, 122, -447}, }, - {{45, 122, -33}, }, - {{45, 122, -33}, }, - {{45, 72, -22}, {73, 73, 530}, {74, 104, -28}, {105, 105, 531}, {106, 122, 93}, }, - {{45, 122, -451}, }, - {{45, 122, -33}, }, - {{45, 122, -33}, }, - {{45, 82, -41}, {83, 83, 532}, {84, 114, -41}, {115, 115, 533}, {116, 122, 93}, }, - {{45, 122, -455}, }, - {{45, 82, -41}, {83, 83, 534}, {84, 114, -41}, {115, 115, 535}, {116, 122, 93}, }, - {{45, 122, -33}, }, - {{45, 122, -457}, }, - {{45, 122, -33}, }, - {{45, 72, -22}, {73, 73, 536}, {74, 104, -28}, {105, 105, 537}, {106, 122, 93}, }, - {{45, 122, -461}, }, - {{45, 122, -33}, }, - {{45, 122, -33}, }, - {{45, 83, -109}, {84, 84, 538}, {85, 115, -109}, {116, 116, 539}, {117, 122, 93}, }, - {{45, 122, -465}, }, - {{45, 122, -33}, }, - {{45, 122, -33}, }, - {{45, 122, -33}, }, - {{45, 122, -33}, }, - {{45, 122, -33}, }, - {{45, 57, -21}, {65, 65, 540}, {66, 90, 89}, {97, 97, 541}, {98, 122, 93}, }, - {{45, 122, -472}, }, - {{45, 72, -22}, {73, 73, 542}, {74, 104, -28}, {105, 105, 543}, {106, 122, 93}, }, - {{45, 122, -474}, }, - {{45, 67, -127}, {68, 68, 544}, {69, 99, -127}, {100, 100, 545}, {101, 122, 93}, }, - {{45, 122, -476}, }, - {{45, 88, -133}, {89, 89, 546}, {90, 120, -133}, {121, 121, 547}, {122, 122, 93}, }, - {{45, 122, -478}, }, - {{45, 57, -21}, {65, 65, 548}, {66, 90, 89}, {97, 97, 549}, {98, 122, 93}, }, - {{45, 122, -480}, }, - {{45, 122, -33}, }, - {{45, 122, -33}, }, - {{45, 122, -33}, }, - {{45, 122, -33}, }, - {{45, 78, -123}, {79, 79, 550}, {80, 110, -123}, {111, 111, 551}, {112, 122, 93}, }, - {{45, 122, -486}, }, - {{45, 122, -33}, }, - {{45, 122, -33}, }, - {{45, 57, -21}, {65, 65, 552}, {66, 90, 89}, {97, 97, 553}, {98, 122, 93}, }, - {{45, 122, -490}, }, - {{45, 67, -127}, {68, 68, 554}, {69, 99, -127}, {100, 100, 555}, {101, 122, 93}, }, - {{45, 122, -492}, }, - {{45, 72, -22}, {73, 73, 556}, {74, 104, -28}, {105, 105, 557}, {106, 122, 93}, }, - {{45, 122, -494}, }, - {{45, 70, -125}, {71, 71, 558}, {72, 102, -125}, {103, 103, 559}, {104, 122, 93}, }, - {{45, 122, -496}, }, - {{45, 75, -21}, {76, 76, 560}, {77, 107, -27}, {108, 108, 561}, {109, 122, 93}, }, - {{45, 122, -498}, }, - {{45, 57, -21}, {65, 65, 562}, {66, 90, 89}, {97, 97, 563}, {98, 122, 93}, }, - {{45, 122, -500}, }, - {{45, 122, -33}, }, - {{45, 122, -33}, }, - {{45, 122, -33}, }, - {{45, 122, -33}, }, - {{45, 122, -33}, }, - {{45, 122, -33}, }, - {{45, 45, 564}, {48, 122, -33}, }, - {{45, 122, -508}, }, - {{45, 68, -31}, {69, 69, 565}, {70, 100, -31}, {101, 101, 566}, {102, 122, 93}, }, - {{45, 122, -510}, }, - {{45, 81, -118}, {82, 82, 567}, {83, 113, -118}, {114, 114, 568}, {115, 122, 93}, }, - {{45, 122, -512}, }, - {{45, 84, -30}, {85, 85, 569}, {86, 116, -30}, {117, 117, 570}, {118, 122, 93}, }, - {{45, 122, -514}, }, - {{45, 122, -33}, }, - {{45, 122, -33}, }, - {{45, 77, -29}, {78, 78, 571}, {79, 109, -99}, {110, 110, 572}, {111, 122, 93}, }, - {{45, 122, -518}, }, - {{45, 77, -29}, {78, 78, 573}, {79, 109, -99}, {110, 110, 574}, {111, 122, 93}, }, - {{45, 122, -520}, }, - {{45, 82, -41}, {83, 83, 575}, {84, 114, -41}, {115, 115, 576}, {116, 122, 93}, }, - {{45, 122, -522}, }, - {{45, 83, -109}, {84, 84, 577}, {85, 115, -109}, {116, 116, 578}, {117, 122, 93}, }, - {{45, 122, -524}, }, - {{45, 122, -33}, }, - {{45, 122, -33}, }, - {{45, 78, -123}, {79, 79, 579}, {80, 110, -123}, {111, 111, 580}, {112, 122, 93}, }, - {{45, 122, -528}, }, - {{45, 71, -23}, {72, 72, 581}, {73, 103, -43}, {104, 104, 582}, {105, 122, 93}, }, - {{45, 122, -530}, }, - {{45, 77, -29}, {78, 78, 583}, {79, 109, -99}, {110, 110, 584}, {111, 122, 93}, }, - {{45, 122, -532}, }, - {{45, 122, -33}, }, - {{45, 122, -33}, }, - {{45, 122, -33}, }, - {{45, 122, -33}, }, - {{45, 77, -29}, {78, 78, 585}, {79, 109, -99}, {110, 110, 586}, {111, 122, 93}, }, - {{45, 122, -538}, }, - {{45, 68, -31}, {69, 69, 587}, {70, 100, -31}, {101, 101, 588}, {102, 122, 93}, }, - {{45, 122, -540}, }, - {{45, 83, -109}, {84, 84, 589}, {85, 115, -109}, {116, 116, 590}, {117, 122, 93}, }, - {{45, 122, -542}, }, - {{45, 77, -29}, {78, 78, 591}, {79, 109, -99}, {110, 110, 592}, {111, 122, 93}, }, - {{45, 122, -544}, }, - {{45, 72, -22}, {73, 73, 593}, {74, 104, -28}, {105, 105, 594}, {106, 122, 93}, }, - {{45, 122, -546}, }, - {{45, 45, 595}, {48, 122, -33}, }, - {{45, 122, -548}, }, - {{45, 75, -21}, {76, 76, 596}, {77, 107, -27}, {108, 108, 597}, {109, 122, 93}, }, - {{45, 122, -550}, }, - {{45, 77, -29}, {78, 78, 598}, {79, 109, -99}, {110, 110, 599}, {111, 122, 93}, }, - {{45, 122, -552}, }, - {{45, 75, -21}, {76, 76, 600}, {77, 107, -27}, {108, 108, 601}, {109, 122, 93}, }, - {{45, 122, -554}, }, - {{45, 122, -33}, }, - {{45, 122, -33}, }, - {{45, 68, -31}, {69, 69, 602}, {70, 100, -31}, {101, 101, 603}, {102, 122, 93}, }, - {{45, 122, -558}, }, - {{45, 122, -33}, }, - {{45, 122, -33}, }, - {{45, 84, -30}, {85, 85, 604}, {86, 116, -30}, {117, 117, 605}, {118, 122, 93}, }, - {{45, 122, -562}, }, - {{45, 75, -21}, {76, 76, 606}, {77, 107, -27}, {108, 108, 607}, {109, 122, 93}, }, - {{45, 122, -564}, }, - {{45, 67, -127}, {68, 68, 608}, {69, 99, -127}, {100, 100, 609}, {101, 122, 93}, }, - {{45, 122, -33}, }, - {{45, 122, -33}, }, - {{45, 122, -33}, }, - {{45, 122, -33}, }, - {{45, 81, -118}, {82, 82, 610}, {83, 113, -118}, {114, 114, 611}, {115, 122, 93}, }, - {{45, 122, -571}, }, - {{45, 68, -31}, {69, 69, 612}, {70, 100, -31}, {101, 101, 613}, {102, 122, 93}, }, - {{45, 122, -573}, }, - {{45, 66, -94}, {67, 67, 614}, {68, 98, -94}, {99, 99, 615}, {100, 122, 93}, }, - {{45, 122, -575}, }, - {{45, 122, -33}, }, - {{45, 122, -33}, }, - {{45, 68, -31}, {69, 69, 616}, {70, 100, -31}, {101, 101, 617}, {102, 122, 93}, }, - {{45, 122, -579}, }, - {{45, 77, -29}, {78, 78, 618}, {79, 109, -99}, {110, 110, 619}, {111, 122, 93}, }, - {{45, 122, -581}, }, - {{45, 122, -33}, }, - {{45, 122, -33}, }, - {{45, 70, -125}, {71, 71, 620}, {72, 102, -125}, {103, 103, 621}, {104, 122, 93}, }, - {{45, 122, -585}, }, - {{45, 70, -125}, {71, 71, 622}, {72, 102, -125}, {103, 103, 623}, {104, 122, 93}, }, - {{45, 122, -587}, }, - {{45, 81, -118}, {82, 82, 624}, {83, 113, -118}, {114, 114, 625}, {115, 122, 93}, }, - {{45, 122, -589}, }, - {{45, 72, -22}, {73, 73, 626}, {74, 104, -28}, {105, 105, 627}, {106, 122, 93}, }, - {{45, 122, -591}, }, - {{45, 70, -125}, {71, 71, 628}, {72, 102, -125}, {103, 103, 629}, {104, 122, 93}, }, - {{45, 122, -593}, }, - {{45, 77, -29}, {78, 78, 630}, {79, 109, -99}, {110, 110, 631}, {111, 122, 93}, }, - {{45, 122, -595}, }, - {{45, 48, -385}, {49, 49, 632}, {50, 57, 88}, {65, 122, -33}, }, - {{45, 122, -33}, }, - {{45, 122, -33}, }, - {{45, 45, 633}, {48, 122, -33}, }, - {{45, 122, -600}, }, - {{45, 84, -30}, {85, 85, 634}, {86, 116, -30}, {117, 117, 635}, {118, 122, 93}, }, - {{45, 122, -602}, }, - {{45, 67, -127}, {68, 68, 636}, {69, 99, -127}, {100, 100, 637}, {101, 122, 93}, }, - {{45, 122, -604}, }, - {{45, 68, -31}, {69, 69, 638}, {70, 100, -31}, {101, 101, 639}, {102, 122, 93}, }, - {{45, 122, -606}, }, - {{45, 122, -33}, }, - {{45, 122, -33}, }, - {{45, 68, -31}, {69, 69, 640}, {70, 100, -31}, {101, 101, 641}, {102, 122, 93}, }, - {{45, 122, -610}, }, - {{45, 68, -31}, {69, 69, 642}, {70, 100, -31}, {101, 101, 643}, {102, 122, 93}, }, - {{45, 122, -612}, }, - {{45, 82, -41}, {83, 83, 644}, {84, 114, -41}, {115, 115, 645}, {116, 122, 93}, }, - {{45, 122, -614}, }, - {{45, 68, -31}, {69, 69, 646}, {70, 100, -31}, {101, 101, 647}, {102, 122, 93}, }, - {{45, 122, -616}, }, - {{45, 122, -33}, }, - {{45, 122, -33}, }, - {{45, 72, -22}, {73, 73, 648}, {74, 104, -28}, {105, 105, 649}, {106, 122, 93}, }, - {{45, 122, -620}, }, - {{45, 122, -33}, }, - {{45, 122, -33}, }, - {{45, 122, -33}, }, - {{45, 122, -33}, }, - {{45, 122, -33}, }, - {{45, 122, -33}, }, - {{45, 78, -123}, {79, 79, 650}, {80, 110, -123}, {111, 111, 651}, {112, 122, 93}, }, - {{45, 122, -628}, }, - {{45, 122, -33}, }, - {{45, 122, -33}, }, - {{45, 70, -125}, {71, 71, 652}, {72, 102, -125}, {103, 103, 653}, {104, 122, 93}, }, - {{45, 122, -632}, }, - {{45, 122, -33}, }, - {{45, 79, -110}, {80, 80, 654}, {81, 111, -163}, {112, 112, 655}, {113, 122, 93}, }, - {{45, 68, -31}, {69, 69, 656}, {70, 100, -31}, {101, 101, 657}, {102, 122, 93}, }, - {{45, 122, -636}, }, - {{45, 122, -33}, }, - {{45, 122, -33}, }, - {{45, 82, -41}, {83, 83, 658}, {84, 114, -41}, {115, 115, 659}, {116, 122, 93}, }, - {{45, 122, -640}, }, - {{45, 66, -94}, {67, 67, 660}, {68, 98, -94}, {99, 99, 661}, {100, 122, 93}, }, - {{45, 122, -642}, }, - {{45, 45, 662}, {48, 122, -33}, }, - {{45, 122, -644}, }, - {{45, 122, -33}, }, - {{45, 122, -33}, }, - {{45, 122, -33}, }, - {{45, 122, -33}, }, - {{45, 57, -21}, {65, 89, 89}, {90, 90, 663}, {97, 121, 93}, {122, 122, 664}, }, - {{45, 122, -650}, }, - {{45, 77, -29}, {78, 78, 665}, {79, 109, -99}, {110, 110, 666}, {111, 122, 93}, }, - {{45, 122, -652}, }, - {{45, 122, -33}, }, - {{45, 122, -33}, }, - {{45, 78, -123}, {79, 79, 667}, {80, 110, -123}, {111, 111, 668}, {112, 122, 93}, }, - {{45, 122, -656}, }, - {{45, 82, -41}, {83, 83, 669}, {84, 114, -41}, {115, 115, 670}, {116, 122, 93}, }, - {{45, 122, -658}, }, - {{45, 122, -33}, }, - {{45, 122, -33}, }, - {{45, 72, -22}, {73, 73, 671}, {74, 104, -28}, {105, 105, 672}, {106, 122, 93}, }, - {{45, 122, -662}, }, - {{45, 79, -110}, {80, 80, 673}, {81, 111, -163}, {112, 112, 674}, {113, 122, 93}, }, - {{45, 68, -31}, {69, 69, 675}, {70, 100, -31}, {101, 101, 676}, {102, 122, 93}, }, - {{45, 122, -665}, }, - {{45, 57, -21}, {65, 65, 677}, {66, 90, 89}, {97, 97, 678}, {98, 122, 93}, }, - {{45, 122, -667}, }, - {{45, 72, -22}, {73, 73, 679}, {74, 104, -28}, {105, 105, 680}, {106, 122, 93}, }, - {{45, 122, -669}, }, - {{45, 122, -33}, }, - {{45, 122, -33}, }, - {{45, 76, -106}, {77, 77, 681}, {78, 108, -106}, {109, 109, 682}, {110, 122, 93}, }, - {{45, 122, -673}, }, - {{45, 78, -123}, {79, 79, 683}, {80, 110, -123}, {111, 111, 684}, {112, 122, 93}, }, - {{45, 122, -675}, }, - {{45, 67, -127}, {68, 68, 685}, {69, 99, -127}, {100, 100, 686}, {101, 122, 93}, }, - {{45, 122, -677}, }, - {{45, 75, -21}, {76, 76, 687}, {77, 107, -27}, {108, 108, 688}, {109, 122, 93}, }, - {{45, 122, -679}, }, - {{45, 77, -29}, {78, 78, 689}, {79, 109, -99}, {110, 110, 690}, {111, 122, 93}, }, - {{45, 122, -681}, }, - {{45, 57, -21}, {65, 65, 691}, {66, 90, 89}, {97, 97, 692}, {98, 122, 93}, }, - {{45, 122, -683}, }, - {{45, 72, -22}, {73, 73, 693}, {74, 104, -28}, {105, 105, 694}, {106, 122, 93}, }, - {{45, 122, -685}, }, - {{45, 122, -33}, }, - {{45, 122, -33}, }, - {{45, 45, 695}, {48, 122, -33}, }, - {{45, 122, -689}, }, - {{45, 83, -109}, {84, 84, 696}, {85, 115, -109}, {116, 116, 697}, {117, 122, 93}, }, - {{45, 122, -691}, }, - {{45, 75, -21}, {76, 76, 698}, {77, 107, -27}, {108, 108, 699}, {109, 122, 93}, }, - {{45, 122, -693}, }, - {{45, 77, -29}, {78, 78, 700}, {79, 109, -99}, {110, 110, 701}, {111, 122, 93}, }, - {{45, 122, -695}, }, - {{45, 48, -385}, {49, 49, 702}, {50, 50, 703}, {51, 51, 704}, {52, 52, 705}, {53, 53, 706}, {54, 122, -385}, }, - {{45, 68, -31}, {69, 69, 707}, {70, 100, -31}, {101, 101, 708}, {102, 122, 93}, }, - {{45, 122, -698}, }, - {{45, 122, -33}, }, - {{45, 122, -33}, }, - {{45, 83, -109}, {84, 84, 709}, {85, 115, -109}, {116, 116, 710}, {117, 122, 93}, }, - {{45, 122, -702}, }, - {{45, 122, -33}, }, - {{45, 122, -33}, }, - {{45, 122, -33}, }, - {{45, 122, -33}, }, - {{45, 122, -33}, }, - {{45, 81, -118}, {82, 82, 711}, {83, 113, -118}, {114, 114, 712}, {115, 122, 93}, }, - {{45, 122, -709}, }, - {{45, 68, -31}, {69, 69, 713}, {70, 100, -31}, {101, 101, 714}, {102, 122, 93}, }, - {{45, 122, -711}, }, - {{45, 122, -33}, }, - {{45, 122, -33}, }, - {{45, 81, -118}, {82, 82, 715}, {83, 113, -118}, {114, 114, 716}, {115, 122, 93}, }, - {{45, 122, -715}, }, - {{45, 122, -33}, }, - {{45, 122, -33}, }, - } - };*/ - - private static int[][] accept; -/* { - // INITIAL - {14, 77, 0, 0, 0, 0, 77, 8, 77, 9, 10, 7, 5, 3, 6, 2, 4, 12, 12, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 0, 0, 0, 0, 0, -1, 13, -1, 13, -1, 1, 1, -1, 14, 14, 15, 12, 76, 76, 11, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 21, 76, 76, 21, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 42, 76, 42, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 53, 76, 76, 53, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 69, 76, 76, 76, 69, 76, 76, 76, 76, 76, 76, 76, 76, 76, -1, -1, 1, -1, 16, 16, 17, 17, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 44, 44, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 55, 55, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, -1, -1, 14, 76, 76, 76, 76, 76, 76, 76, 76, 23, 23, 29, 29, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 43, 43, 76, 76, 46, 46, 76, 76, 76, 50, 50, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 64, 64, 76, 76, 66, 66, 76, 67, 76, 67, 76, 76, 76, 76, 76, 76, 76, 76, 74, 74, 75, 75, 76, 76, 76, 76, 20, 20, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 40, 40, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 50, 50, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 58, 58, 76, 76, 76, 76, 76, 76, 62, 62, 76, 76, 65, 65, 76, 76, 76, 76, 68, 68, 76, 76, 71, 71, 72, 72, 76, 75, 76, 75, 76, 76, 19, 19, 76, 76, 24, 25, 26, 27, 28, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 35, 35, 36, 36, 76, 76, 38, 38, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 49, 49, 51, 51, 52, 52, 76, 76, 76, 76, 76, 76, 76, 76, 58, 58, 76, 76, 76, 76, 76, 76, 76, 76, 65, 65, 76, 76, 76, 76, 76, 76, 73, 73, 75, 75, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 32, 32, 76, 76, 76, 76, 76, 76, 41, 41, 76, 76, 45, 45, 76, 76, 76, 76, 76, 55, 55, 56, 56, 76, 76, 76, 76, 76, 76, 61, 61, 76, 76, 76, 76, 67, 67, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 34, 34, 76, 76, 76, 76, 76, 76, 76, 76, 48, 48, 76, 76, 76, 76, 76, 76, 76, 76, 63, 63, 76, 76, 70, 70, 18, 18, 22, 22, 76, 76, 30, 30, 76, 76, 33, 76, 76, 76, 43, 43, 47, 47, 76, 76, 76, 76, 59, 59, 60, 60, 76, 76, 76, 76, 31, 31, 76, 76, 39, 39, 47, 47, 76, 76, 76, 76, 76, 76, 76, 76, 76, 39, 39, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 66, 66, 23, 23, 76, 76, 76, 76, 76, 76, 76, 76, 76, 54, 54, 76, 76, 24, 25, 26, 27, 28, 76, 76, 76, 76, 37, 37, 76, 76, 57, 57, }, - - };*/ - + public static class State { public final static State INITIAL = new State(0); diff --git a/src/main/java/net/sf/cb2xml/sablecc/parser/Parser.java b/src/main/java/net/sf/cb2xml/sablecc/parser/Parser.java index 3c4f86d..bffe96a 100644 --- a/src/main/java/net/sf/cb2xml/sablecc/parser/Parser.java +++ b/src/main/java/net/sf/cb2xml/sablecc/parser/Parser.java @@ -11,2007 +11,2449 @@ import java.io.BufferedInputStream; import java.io.IOException; -public class Parser -{ - public final Analysis ignoredTokens = new AnalysisAdapter(); - - protected Node node; - - private final Lexer lexer; - private final ListIterator stack = new LinkedList().listIterator(); - private int last_shift; - private int last_pos; - private int last_line; - private Token last_token; - private final TokenIndex converter = new TokenIndex(); - private final int[] action = new int[2]; - - private final static int SHIFT = 0; - private final static int REDUCE = 1; - private final static int ACCEPT = 2; - private final static int ERROR = 3; - - protected void filter() throws ParserException, LexerException, IOException - { - } - - public Parser(Lexer lexer) - { - this.lexer = lexer; - - if(actionTable == null) - { - try - { - DataInputStream s = new DataInputStream( - new BufferedInputStream( - Parser.class.getResourceAsStream("parser.dat"))); - - // read actionTable - int length = s.readInt(); - actionTable = new int[length][][]; - for(int i = 0; i < actionTable.length; i++) - { - length = s.readInt(); - actionTable[i] = new int[length][3]; - for(int j = 0; j < actionTable[i].length; j++) - { - for(int k = 0; k < 3; k++) - { - actionTable[i][j][k] = s.readInt(); - } - } - } - - // read gotoTable - length = s.readInt(); - gotoTable = new int[length][][]; - for(int i = 0; i < gotoTable.length; i++) - { - length = s.readInt(); - gotoTable[i] = new int[length][2]; - for(int j = 0; j < gotoTable[i].length; j++) - { - for(int k = 0; k < 2; k++) - { - gotoTable[i][j][k] = s.readInt(); - } - } - } - - // read errorMessages - length = s.readInt(); - errorMessages = new String[length]; - for(int i = 0; i < errorMessages.length; i++) - { - length = s.readInt(); - StringBuffer buffer = new StringBuffer(); - - for(int j = 0; j < length; j++) - { - buffer.append(s.readChar()); - } - errorMessages[i] = buffer.toString(); - } - - // read errors - length = s.readInt(); - errors = new int[length]; - for(int i = 0; i < errors.length; i++) - { - errors[i] = s.readInt(); - } - - s.close(); - } - catch(Exception e) - { - throw new RuntimeException("The file \"parser.dat\" is either missing or corrupted."); - } - } - } - - private int goTo(int index) - { - int state = state(); - int low = 1; - int high = gotoTable[index].length - 1; - int value = gotoTable[index][0][1]; - - while(low <= high) - { - int middle = (low + high) / 2; - - if(state < gotoTable[index][middle][0]) - { - high = middle - 1; - } - else if(state > gotoTable[index][middle][0]) - { - low = middle + 1; - } - else - { - value = gotoTable[index][middle][1]; - break; - } - } - - return value; - } - - private void push(int state, Node node, boolean filter) throws ParserException, LexerException, IOException - { - this.node = node; - - if(filter) - { - filter(); - } - - if(!stack.hasNext()) - { - stack.add(new State(state, this.node)); - return; - } - - State s = (State) stack.next(); - s.state = state; - s.node = this.node; - } - - private int state() - { - State s = (State) stack.previous(); - stack.next(); - return s.state; - } - - private Node pop() - { - return (Node) ((State) stack.previous()).node; - } - - private int index(Switchable token) - { - converter.index = -1; - token.apply(converter); - return converter.index; - } - - public Start parse() throws ParserException, LexerException, IOException - { - push(0, null, false); - - List ign = null; - while(true) - { - while(index(lexer.peek()) == -1) - { - if(ign == null) - { - ign = new TypedLinkedList(NodeCast.instance); - } - - ign.add(lexer.next()); - } - - if(ign != null) - { - ignoredTokens.setIn(lexer.peek(), ign); - ign = null; - } - - last_pos = lexer.peek().getPos(); - last_line = lexer.peek().getLine(); - last_token = lexer.peek(); - - int index = index(lexer.peek()); - action[0] = actionTable[state()][0][1]; - action[1] = actionTable[state()][0][2]; - - int low = 1; - int high = actionTable[state()].length - 1; - - while(low <= high) - { - int middle = (low + high) / 2; - - if(index < actionTable[state()][middle][0]) - { - high = middle - 1; - } - else if(index > actionTable[state()][middle][0]) - { - low = middle + 1; - } - else - { - action[0] = actionTable[state()][middle][1]; - action[1] = actionTable[state()][middle][2]; - break; - } - } - - switch(action[0]) - { - case SHIFT: - push(action[1], lexer.next(), true); - last_shift = action[1]; - break; - case REDUCE: - switch(action[1]) - { - case 0: { Node node = new0(); push(goTo(0), node, true); } break; - case 1: { Node node = new1(); push(goTo(1), node, true); } break; - case 2: { Node node = new2(); push(goTo(1), node, true); } break; - case 3: { Node node = new3(); push(goTo(2), node, true); } break; - case 4: { Node node = new4(); push(goTo(2), node, true); } break; - case 5: { Node node = new5(); push(goTo(2), node, true); } break; - case 6: { Node node = new6(); push(goTo(3), node, true); } break; - case 7: { Node node = new7(); push(goTo(3), node, true); } break; - case 8: { Node node = new8(); push(goTo(3), node, true); } break; - case 9: { Node node = new9(); push(goTo(3), node, true); } break; - case 10: { Node node = new10(); push(goTo(3), node, true); } break; - case 11: { Node node = new11(); push(goTo(3), node, true); } break; - case 12: { Node node = new12(); push(goTo(3), node, true); } break; - case 13: { Node node = new13(); push(goTo(3), node, true); } break; - case 14: { Node node = new14(); push(goTo(4), node, true); } break; - case 15: { Node node = new15(); push(goTo(4), node, true); } break; - case 16: { Node node = new16(); push(goTo(5), node, true); } break; - case 17: { Node node = new17(); push(goTo(6), node, true); } break; - case 18: { Node node = new18(); push(goTo(6), node, true); } break; - case 19: { Node node = new19(); push(goTo(7), node, true); } break; - case 20: { Node node = new20(); push(goTo(7), node, true); } break; - case 21: { Node node = new21(); push(goTo(7), node, true); } break; - case 22: { Node node = new22(); push(goTo(7), node, true); } break; - case 23: { Node node = new23(); push(goTo(7), node, true); } break; - case 24: { Node node = new24(); push(goTo(7), node, true); } break; - case 25: { Node node = new25(); push(goTo(7), node, true); } break; - case 26: { Node node = new26(); push(goTo(7), node, true); } break; - case 27: { Node node = new27(); push(goTo(7), node, true); } break; - case 28: { Node node = new28(); push(goTo(7), node, true); } break; - case 29: { Node node = new29(); push(goTo(7), node, true); } break; - case 30: { Node node = new30(); push(goTo(8), node, true); } break; - case 31: { Node node = new31(); push(goTo(8), node, true); } break; - case 32: { Node node = new32(); push(goTo(9), node, true); } break; - case 33: { Node node = new33(); push(goTo(9), node, true); } break; - case 34: { Node node = new34(); push(goTo(10), node, true); } break; - case 35: { Node node = new35(); push(goTo(11), node, true); } break; - case 36: { Node node = new36(); push(goTo(12), node, true); } break; - case 37: { Node node = new37(); push(goTo(12), node, true); } break; - case 38: { Node node = new38(); push(goTo(13), node, true); } break; - case 39: { Node node = new39(); push(goTo(13), node, true); } break; - case 40: { Node node = new40(); push(goTo(41), node, false); } break; - case 41: { Node node = new41(); push(goTo(41), node, false); } break; - case 42: { Node node = new42(); push(goTo(13), node, true); } break; - case 43: { Node node = new43(); push(goTo(42), node, false); } break; - case 44: { Node node = new44(); push(goTo(42), node, false); } break; - case 45: { Node node = new45(); push(goTo(13), node, true); } break; - case 46: { Node node = new46(); push(goTo(14), node, true); } break; - case 47: { Node node = new47(); push(goTo(14), node, true); } break; - case 48: { Node node = new48(); push(goTo(14), node, true); } break; - case 49: { Node node = new49(); push(goTo(14), node, true); } break; - case 50: { Node node = new50(); push(goTo(14), node, true); } break; - case 51: { Node node = new51(); push(goTo(14), node, true); } break; - case 52: { Node node = new52(); push(goTo(14), node, true); } break; - case 53: { Node node = new53(); push(goTo(14), node, true); } break; - case 54: { Node node = new54(); push(goTo(14), node, true); } break; - case 55: { Node node = new55(); push(goTo(14), node, true); } break; - case 56: { Node node = new56(); push(goTo(15), node, true); } break; - case 57: { Node node = new57(); push(goTo(16), node, true); } break; - case 58: { Node node = new58(); push(goTo(43), node, false); } break; - case 59: { Node node = new59(); push(goTo(43), node, false); } break; - case 60: { Node node = new60(); push(goTo(16), node, true); } break; - case 61: { Node node = new61(); push(goTo(16), node, true); } break; - case 62: { Node node = new62(); push(goTo(16), node, true); } break; - case 63: { Node node = new63(); push(goTo(17), node, true); } break; - case 64: { Node node = new64(); push(goTo(17), node, true); } break; - case 65: { Node node = new65(); push(goTo(18), node, true); } break; - case 66: { Node node = new66(); push(goTo(18), node, true); } break; - case 67: { Node node = new67(); push(goTo(19), node, true); } break; - case 68: { Node node = new68(); push(goTo(19), node, true); } break; - case 69: { Node node = new69(); push(goTo(20), node, true); } break; - case 70: { Node node = new70(); push(goTo(20), node, true); } break; - case 71: { Node node = new71(); push(goTo(20), node, true); } break; - case 72: { Node node = new72(); push(goTo(20), node, true); } break; - case 73: { Node node = new73(); push(goTo(21), node, true); } break; - case 74: { Node node = new74(); push(goTo(21), node, true); } break; - case 75: { Node node = new75(); push(goTo(22), node, true); } break; - case 76: { Node node = new76(); push(goTo(22), node, true); } break; - case 77: { Node node = new77(); push(goTo(23), node, true); } break; - case 78: { Node node = new78(); push(goTo(23), node, true); } break; - case 79: { Node node = new79(); push(goTo(24), node, true); } break; - case 80: { Node node = new80(); push(goTo(24), node, true); } break; - case 81: { Node node = new81(); push(goTo(25), node, true); } break; - case 82: { Node node = new82(); push(goTo(25), node, true); } break; - case 83: { Node node = new83(); push(goTo(26), node, true); } break; - case 84: { Node node = new84(); push(goTo(26), node, true); } break; - case 85: { Node node = new85(); push(goTo(27), node, true); } break; - case 86: { Node node = new86(); push(goTo(27), node, true); } break; - case 87: { Node node = new87(); push(goTo(28), node, true); } break; - case 88: { Node node = new88(); push(goTo(28), node, true); } break; - case 89: { Node node = new89(); push(goTo(28), node, true); } break; - case 90: { Node node = new90(); push(goTo(28), node, true); } break; - case 91: { Node node = new91(); push(goTo(28), node, true); } break; - case 92: { Node node = new92(); push(goTo(28), node, true); } break; - case 93: { Node node = new93(); push(goTo(28), node, true); } break; - case 94: { Node node = new94(); push(goTo(28), node, true); } break; - case 95: { Node node = new95(); push(goTo(28), node, true); } break; - case 96: { Node node = new96(); push(goTo(28), node, true); } break; - case 97: { Node node = new97(); push(goTo(28), node, true); } break; - case 98: { Node node = new98(); push(goTo(28), node, true); } break; - case 99: { Node node = new99(); push(goTo(28), node, true); } break; - case 100: { Node node = new100(); push(goTo(28), node, true); } break; - case 101: { Node node = new101(); push(goTo(28), node, true); } break; - case 102: { Node node = new102(); push(goTo(28), node, true); } break; - case 103: { Node node = new103(); push(goTo(28), node, true); } break; - case 104: { Node node = new104(); push(goTo(28), node, true); } break; - case 105: { Node node = new105(); push(goTo(28), node, true); } break; - case 106: { Node node = new106(); push(goTo(28), node, true); } break; - case 107: { Node node = new107(); push(goTo(28), node, true); } break; - case 108: { Node node = new108(); push(goTo(28), node, true); } break; - case 109: { Node node = new109(); push(goTo(29), node, true); } break; - case 110: { Node node = new110(); push(goTo(29), node, true); } break; - case 111: { Node node = new111(); push(goTo(30), node, true); } break; - case 112: { Node node = new112(); push(goTo(30), node, true); } break; - case 113: { Node node = new113(); push(goTo(31), node, true); } break; - case 114: { Node node = new114(); push(goTo(32), node, true); } break; - case 115: { Node node = new115(); push(goTo(32), node, true); } break; - case 116: { Node node = new116(); push(goTo(32), node, true); } break; - case 117: { Node node = new117(); push(goTo(32), node, true); } break; - case 118: { Node node = new118(); push(goTo(33), node, true); } break; - case 119: { Node node = new119(); push(goTo(34), node, true); } break; - case 120: { Node node = new120(); push(goTo(34), node, true); } break; - case 121: { Node node = new121(); push(goTo(34), node, true); } break; - case 122: { Node node = new122(); push(goTo(34), node, true); } break; - case 123: { Node node = new123(); push(goTo(35), node, true); } break; - case 124: { Node node = new124(); push(goTo(35), node, true); } break; - case 125: { Node node = new125(); push(goTo(35), node, true); } break; - case 126: { Node node = new126(); push(goTo(35), node, true); } break; - case 127: { Node node = new127(); push(goTo(35), node, true); } break; - case 128: { Node node = new128(); push(goTo(35), node, true); } break; - case 129: { Node node = new129(); push(goTo(35), node, true); } break; - case 130: { Node node = new130(); push(goTo(36), node, true); } break; - case 131: { Node node = new131(); push(goTo(36), node, true); } break; - case 132: { Node node = new132(); push(goTo(36), node, true); } break; - case 133: { Node node = new133(); push(goTo(36), node, true); } break; - case 134: { Node node = new134(); push(goTo(36), node, true); } break; - case 135: { Node node = new135(); push(goTo(36), node, true); } break; - case 136: { Node node = new136(); push(goTo(36), node, true); } break; - case 137: { Node node = new137(); push(goTo(36), node, true); } break; - case 138: { Node node = new138(); push(goTo(36), node, true); } break; - case 139: { Node node = new139(); push(goTo(37), node, true); } break; - case 140: { Node node = new140(); push(goTo(37), node, true); } break; - case 141: { Node node = new141(); push(goTo(38), node, true); } break; - case 142: { Node node = new142(); push(goTo(38), node, true); } break; - case 143: { Node node = new143(); push(goTo(38), node, true); } break; - case 144: { Node node = new144(); push(goTo(38), node, true); } break; - case 145: { Node node = new145(); push(goTo(38), node, true); } break; - case 146: { Node node = new146(); push(goTo(38), node, true); } break; - case 147: { Node node = new147(); push(goTo(38), node, true); } break; - case 148: { Node node = new148(); push(goTo(38), node, true); } break; - case 149: { Node node = new149(); push(goTo(38), node, true); } break; - case 150: { Node node = new150(); push(goTo(38), node, true); } break; - case 151: { Node node = new151(); push(goTo(38), node, true); } break; - case 152: { Node node = new152(); push(goTo(39), node, true); } break; - case 153: { Node node = new153(); push(goTo(40), node, true); } break; - case 154: { Node node = new154(); push(goTo(40), node, true); } break; - } - break; - case ACCEPT: - { - EOF node2 = (EOF) lexer.next(); - PRecordDescription node1 = (PRecordDescription) pop(); - Start node = new Start(node1, node2); - return node; - } - case ERROR: - throw new ParserException(last_token, - "[" + last_line + "," + last_pos + "] " + - errorMessages[errors[action[1]]]); - } - } - } - - Node new0() - { - TDot node2 = (TDot) pop(); - PGroupItem node1 = (PGroupItem) pop(); - ARecordDescription node = new ARecordDescription(node1, node2); - return node; - } - - Node new1() - { - PElementaryItem node1 = (PElementaryItem) pop(); - ASingleGroupItem node = new ASingleGroupItem(node1); - return node; - } - - Node new2() - { - PElementaryItem node3 = (PElementaryItem) pop(); - TDot node2 = (TDot) pop(); - PGroupItem node1 = (PGroupItem) pop(); - ASequenceGroupItem node = new ASequenceGroupItem(node1, node2, node3); - return node; - } - - Node new3() - { - PItem node1 = (PItem) pop(); - AItemElementaryItem node = new AItemElementaryItem(node1); - return node; - } - - Node new4() - { - PRenamesItem node1 = (PRenamesItem) pop(); - ARenamesItemElementaryItem node = new ARenamesItemElementaryItem(node1); - return node; - } - - Node new5() - { - PValueItem node1 = (PValueItem) pop(); - AValueItemElementaryItem node = new AValueItemElementaryItem(node1); - return node; - } - - Node new6() - { - PClauseSequence node4 = null; - PRedefinesClause node3 = null; - PDataNameOrFiller node2 = null; - TNumberNot88 node1 = (TNumberNot88) pop(); - AItem node = new AItem(node1, node2, node3, node4); - return node; - } - - Node new7() - { - PClauseSequence node4 = null; - PRedefinesClause node3 = null; - PDataNameOrFiller node2 = (PDataNameOrFiller) pop(); - TNumberNot88 node1 = (TNumberNot88) pop(); - AItem node = new AItem(node1, node2, node3, node4); - return node; - } - - Node new8() - { - PClauseSequence node4 = null; - PRedefinesClause node3 = (PRedefinesClause) pop(); - PDataNameOrFiller node2 = null; - TNumberNot88 node1 = (TNumberNot88) pop(); - AItem node = new AItem(node1, node2, node3, node4); - return node; - } - - Node new9() - { - PClauseSequence node4 = null; - PRedefinesClause node3 = (PRedefinesClause) pop(); - PDataNameOrFiller node2 = (PDataNameOrFiller) pop(); - TNumberNot88 node1 = (TNumberNot88) pop(); - AItem node = new AItem(node1, node2, node3, node4); - return node; - } - - Node new10() - { - PClauseSequence node4 = (PClauseSequence) pop(); - PRedefinesClause node3 = null; - PDataNameOrFiller node2 = null; - TNumberNot88 node1 = (TNumberNot88) pop(); - AItem node = new AItem(node1, node2, node3, node4); - return node; - } - - Node new11() - { - PClauseSequence node4 = (PClauseSequence) pop(); - PRedefinesClause node3 = null; - PDataNameOrFiller node2 = (PDataNameOrFiller) pop(); - TNumberNot88 node1 = (TNumberNot88) pop(); - AItem node = new AItem(node1, node2, node3, node4); - return node; - } - - Node new12() - { - PClauseSequence node4 = (PClauseSequence) pop(); - PRedefinesClause node3 = (PRedefinesClause) pop(); - PDataNameOrFiller node2 = null; - TNumberNot88 node1 = (TNumberNot88) pop(); - AItem node = new AItem(node1, node2, node3, node4); - return node; - } - - Node new13() - { - PClauseSequence node4 = (PClauseSequence) pop(); - PRedefinesClause node3 = (PRedefinesClause) pop(); - PDataNameOrFiller node2 = (PDataNameOrFiller) pop(); - TNumberNot88 node1 = (TNumberNot88) pop(); - AItem node = new AItem(node1, node2, node3, node4); - return node; - } - - Node new14() - { - TDataName node1 = (TDataName) pop(); - ADataNameDataNameOrFiller node = new ADataNameDataNameOrFiller(node1); - return node; - } - - Node new15() - { - TFiller node1 = (TFiller) pop(); - AFillerDataNameOrFiller node = new AFillerDataNameOrFiller(node1); - return node; - } - - Node new16() - { - TDataName node2 = (TDataName) pop(); - TRedefines node1 = (TRedefines) pop(); - ARedefinesClause node = new ARedefinesClause(node1, node2); - return node; - } - - Node new17() - { - PClause node1 = (PClause) pop(); - ASingleClauseSequence node = new ASingleClauseSequence(node1); - return node; - } - - Node new18() - { - PClause node2 = (PClause) pop(); - PClauseSequence node1 = (PClauseSequence) pop(); - ASequenceClauseSequence node = new ASequenceClauseSequence(node1, node2); - return node; - } - - Node new19() - { - PBlankWhenZeroClause node1 = (PBlankWhenZeroClause) pop(); - ABlankWhenZeroClauseClause node = new ABlankWhenZeroClauseClause(node1); - return node; - } - - Node new20() - { - PDateFormatClause node1 = (PDateFormatClause) pop(); - ADateFormatClauseClause node = new ADateFormatClauseClause(node1); - return node; - } - - Node new21() - { - PExternalClause node1 = (PExternalClause) pop(); - AExternalClauseClause node = new AExternalClauseClause(node1); - return node; - } - - Node new22() - { - PGlobalClause node1 = (PGlobalClause) pop(); - AGlobalClauseClause node = new AGlobalClauseClause(node1); - return node; - } - - Node new23() - { - PJustifiedClause node1 = (PJustifiedClause) pop(); - AJustifiedClauseClause node = new AJustifiedClauseClause(node1); - return node; - } - - Node new24() - { - POccursClause node1 = (POccursClause) pop(); - AOccursClauseClause node = new AOccursClauseClause(node1); - return node; - } - - Node new25() - { - PPictureClause node1 = (PPictureClause) pop(); - APictureClauseClause node = new APictureClauseClause(node1); - return node; - } - - Node new26() - { - PSignClause node1 = (PSignClause) pop(); - ASignClauseClause node = new ASignClauseClause(node1); - return node; - } - - Node new27() - { - PSynchronizedClause node1 = (PSynchronizedClause) pop(); - ASynchronizedClauseClause node = new ASynchronizedClauseClause(node1); - return node; - } - - Node new28() - { - PUsageClause node1 = (PUsageClause) pop(); - AUsageClauseClause node = new AUsageClauseClause(node1); - return node; - } - - Node new29() - { - PValueClause node1 = (PValueClause) pop(); - AValueClauseClause node = new AValueClauseClause(node1); - return node; - } - - Node new30() - { - TZeros node3 = (TZeros) pop(); - TWhen node2 = null; - TBlank node1 = (TBlank) pop(); - ABlankWhenZeroClause node = new ABlankWhenZeroClause(node1, node2, node3); - return node; - } - - Node new31() - { - TZeros node3 = (TZeros) pop(); - TWhen node2 = (TWhen) pop(); - TBlank node1 = (TBlank) pop(); - ABlankWhenZeroClause node = new ABlankWhenZeroClause(node1, node2, node3); - return node; - } - - Node new32() - { - TDataName node4 = (TDataName) pop(); - TIs node3 = null; - TFormat node2 = (TFormat) pop(); - TDate node1 = (TDate) pop(); - ADateFormatClause node = new ADateFormatClause(node1, node2, node3, node4); - return node; - } - - Node new33() - { - TDataName node4 = (TDataName) pop(); - TIs node3 = (TIs) pop(); - TFormat node2 = (TFormat) pop(); - TDate node1 = (TDate) pop(); - ADateFormatClause node = new ADateFormatClause(node1, node2, node3, node4); - return node; - } - - Node new34() - { - TExternal node1 = (TExternal) pop(); - AExternalClause node = new AExternalClause(node1); - return node; - } - - Node new35() - { - TGlobal node1 = (TGlobal) pop(); - AGlobalClause node = new AGlobalClause(node1); - return node; - } - - Node new36() - { - TRight node2 = null; - TJustified node1 = (TJustified) pop(); - AJustifiedClause node = new AJustifiedClause(node1, node2); - return node; - } - - Node new37() - { - TRight node2 = (TRight) pop(); - TJustified node1 = (TJustified) pop(); - AJustifiedClause node = new AJustifiedClause(node1, node2); - return node; - } - - Node new38() - { - XPIndexedByPhrase node3 = null; - XPAscendingOrDescendingKeyPhrase node2 = null; - POccursFixedOrVariable node1 = (POccursFixedOrVariable) pop(); - AOccursClause node = new AOccursClause(node1, node2, node3); - return node; - } - - Node new39() - { - XPIndexedByPhrase node3 = null; - XPAscendingOrDescendingKeyPhrase node2 = (XPAscendingOrDescendingKeyPhrase) pop(); - POccursFixedOrVariable node1 = (POccursFixedOrVariable) pop(); - AOccursClause node = new AOccursClause(node1, node2, node3); - return node; - } - - Node new40() - { - PAscendingOrDescendingKeyPhrase node2 = (PAscendingOrDescendingKeyPhrase) pop(); - XPAscendingOrDescendingKeyPhrase node1 = (XPAscendingOrDescendingKeyPhrase) pop(); - X1PAscendingOrDescendingKeyPhrase node = new X1PAscendingOrDescendingKeyPhrase(node1, node2); - return node; - } - - Node new41() - { - PAscendingOrDescendingKeyPhrase node1 = (PAscendingOrDescendingKeyPhrase) pop(); - X2PAscendingOrDescendingKeyPhrase node = new X2PAscendingOrDescendingKeyPhrase(node1); - return node; - } - - Node new42() - { - XPIndexedByPhrase node3 = (XPIndexedByPhrase) pop(); - XPAscendingOrDescendingKeyPhrase node2 = null; - POccursFixedOrVariable node1 = (POccursFixedOrVariable) pop(); - AOccursClause node = new AOccursClause(node1, node2, node3); - return node; - } - - Node new43() - { - PIndexedByPhrase node2 = (PIndexedByPhrase) pop(); - XPIndexedByPhrase node1 = (XPIndexedByPhrase) pop(); - X1PIndexedByPhrase node = new X1PIndexedByPhrase(node1, node2); - return node; - } - - Node new44() - { - PIndexedByPhrase node1 = (PIndexedByPhrase) pop(); - X2PIndexedByPhrase node = new X2PIndexedByPhrase(node1); - return node; - } - - Node new45() - { - XPIndexedByPhrase node3 = (XPIndexedByPhrase) pop(); - XPAscendingOrDescendingKeyPhrase node2 = (XPAscendingOrDescendingKeyPhrase) pop(); - POccursFixedOrVariable node1 = (POccursFixedOrVariable) pop(); - AOccursClause node = new AOccursClause(node1, node2, node3); - return node; - } - - Node new46() - { - TTimes node3 = null; - PNumber node2 = (PNumber) pop(); - TOccurs node1 = (TOccurs) pop(); - AFixedOccursFixedOrVariable node = new AFixedOccursFixedOrVariable(node1, node2, node3); - return node; - } - - Node new47() - { - TTimes node3 = (TTimes) pop(); - PNumber node2 = (PNumber) pop(); - TOccurs node1 = (TOccurs) pop(); - AFixedOccursFixedOrVariable node = new AFixedOccursFixedOrVariable(node1, node2, node3); - return node; - } - - Node new48() - { - TDataName node7 = (TDataName) pop(); - TOn node6 = null; - TDepending node5 = (TDepending) pop(); - TTimes node4 = null; - PNumber node3 = (PNumber) pop(); - POccursTo node2 = null; - TOccurs node1 = (TOccurs) pop(); - AVariableOccursFixedOrVariable node = new AVariableOccursFixedOrVariable(node1, node2, node3, node4, node5, node6, node7); - return node; - } - - Node new49() - { - TDataName node7 = (TDataName) pop(); - TOn node6 = null; - TDepending node5 = (TDepending) pop(); - TTimes node4 = null; - PNumber node3 = (PNumber) pop(); - POccursTo node2 = (POccursTo) pop(); - TOccurs node1 = (TOccurs) pop(); - AVariableOccursFixedOrVariable node = new AVariableOccursFixedOrVariable(node1, node2, node3, node4, node5, node6, node7); - return node; - } - - Node new50() - { - TDataName node7 = (TDataName) pop(); - TOn node6 = null; - TDepending node5 = (TDepending) pop(); - TTimes node4 = (TTimes) pop(); - PNumber node3 = (PNumber) pop(); - POccursTo node2 = null; - TOccurs node1 = (TOccurs) pop(); - AVariableOccursFixedOrVariable node = new AVariableOccursFixedOrVariable(node1, node2, node3, node4, node5, node6, node7); - return node; - } - - Node new51() - { - TDataName node7 = (TDataName) pop(); - TOn node6 = null; - TDepending node5 = (TDepending) pop(); - TTimes node4 = (TTimes) pop(); - PNumber node3 = (PNumber) pop(); - POccursTo node2 = (POccursTo) pop(); - TOccurs node1 = (TOccurs) pop(); - AVariableOccursFixedOrVariable node = new AVariableOccursFixedOrVariable(node1, node2, node3, node4, node5, node6, node7); - return node; - } - - Node new52() - { - TDataName node7 = (TDataName) pop(); - TOn node6 = (TOn) pop(); - TDepending node5 = (TDepending) pop(); - TTimes node4 = null; - PNumber node3 = (PNumber) pop(); - POccursTo node2 = null; - TOccurs node1 = (TOccurs) pop(); - AVariableOccursFixedOrVariable node = new AVariableOccursFixedOrVariable(node1, node2, node3, node4, node5, node6, node7); - return node; - } - - Node new53() - { - TDataName node7 = (TDataName) pop(); - TOn node6 = (TOn) pop(); - TDepending node5 = (TDepending) pop(); - TTimes node4 = null; - PNumber node3 = (PNumber) pop(); - POccursTo node2 = (POccursTo) pop(); - TOccurs node1 = (TOccurs) pop(); - AVariableOccursFixedOrVariable node = new AVariableOccursFixedOrVariable(node1, node2, node3, node4, node5, node6, node7); - return node; - } - - Node new54() - { - TDataName node7 = (TDataName) pop(); - TOn node6 = (TOn) pop(); - TDepending node5 = (TDepending) pop(); - TTimes node4 = (TTimes) pop(); - PNumber node3 = (PNumber) pop(); - POccursTo node2 = null; - TOccurs node1 = (TOccurs) pop(); - AVariableOccursFixedOrVariable node = new AVariableOccursFixedOrVariable(node1, node2, node3, node4, node5, node6, node7); - return node; - } - - Node new55() - { - TDataName node7 = (TDataName) pop(); - TOn node6 = (TOn) pop(); - TDepending node5 = (TDepending) pop(); - TTimes node4 = (TTimes) pop(); - PNumber node3 = (PNumber) pop(); - POccursTo node2 = (POccursTo) pop(); - TOccurs node1 = (TOccurs) pop(); - AVariableOccursFixedOrVariable node = new AVariableOccursFixedOrVariable(node1, node2, node3, node4, node5, node6, node7); - return node; - } - - Node new56() - { - TTo node2 = (TTo) pop(); - PNumber node1 = (PNumber) pop(); - AOccursTo node = new AOccursTo(node1, node2); - return node; - } - - Node new57() - { - XTDataName node4 = (XTDataName) pop(); - TIs node3 = null; - TKey node2 = null; - PAscendingOrDescending node1 = (PAscendingOrDescending) pop(); - AAscendingOrDescendingKeyPhrase node = new AAscendingOrDescendingKeyPhrase(node1, node2, node3, node4); - return node; - } - - Node new58() - { - TDataName node2 = (TDataName) pop(); - XTDataName node1 = (XTDataName) pop(); - X1TDataName node = new X1TDataName(node1, node2); - return node; - } - - Node new59() - { - TDataName node1 = (TDataName) pop(); - X2TDataName node = new X2TDataName(node1); - return node; - } - - Node new60() - { - XTDataName node4 = (XTDataName) pop(); - TIs node3 = null; - TKey node2 = (TKey) pop(); - PAscendingOrDescending node1 = (PAscendingOrDescending) pop(); - AAscendingOrDescendingKeyPhrase node = new AAscendingOrDescendingKeyPhrase(node1, node2, node3, node4); - return node; - } - - Node new61() - { - XTDataName node4 = (XTDataName) pop(); - TIs node3 = (TIs) pop(); - TKey node2 = null; - PAscendingOrDescending node1 = (PAscendingOrDescending) pop(); - AAscendingOrDescendingKeyPhrase node = new AAscendingOrDescendingKeyPhrase(node1, node2, node3, node4); - return node; - } - - Node new62() - { - XTDataName node4 = (XTDataName) pop(); - TIs node3 = (TIs) pop(); - TKey node2 = (TKey) pop(); - PAscendingOrDescending node1 = (PAscendingOrDescending) pop(); - AAscendingOrDescendingKeyPhrase node = new AAscendingOrDescendingKeyPhrase(node1, node2, node3, node4); - return node; - } - - Node new63() - { - TAscending node1 = (TAscending) pop(); - AAscendingAscendingOrDescending node = new AAscendingAscendingOrDescending(node1); - return node; - } - - Node new64() - { - TDescending node1 = (TDescending) pop(); - ADescendingAscendingOrDescending node = new ADescendingAscendingOrDescending(node1); - return node; - } - - Node new65() - { - XTDataName node3 = (XTDataName) pop(); - TBy node2 = null; - TIndexed node1 = (TIndexed) pop(); - AIndexedByPhrase node = new AIndexedByPhrase(node1, node2, node3); - return node; - } - - Node new66() - { - XTDataName node3 = (XTDataName) pop(); - TBy node2 = (TBy) pop(); - TIndexed node1 = (TIndexed) pop(); - AIndexedByPhrase node = new AIndexedByPhrase(node1, node2, node3); - return node; - } - - Node new67() - { - PCharacterString node3 = (PCharacterString) pop(); - TIs node2 = null; - TPicture node1 = (TPicture) pop(); - APictureClause node = new APictureClause(node1, node2, node3); - return node; - } - - Node new68() - { - PCharacterString node3 = (PCharacterString) pop(); - TIs node2 = (TIs) pop(); - TPicture node1 = (TPicture) pop(); - APictureClause node = new APictureClause(node1, node2, node3); - return node; - } - - Node new69() - { - PSeparateCharacter node3 = null; - PLeadingOrTrailing node2 = (PLeadingOrTrailing) pop(); - PSignIs node1 = null; - ASignClause node = new ASignClause(node1, node2, node3); - return node; - } - - Node new70() - { - PSeparateCharacter node3 = null; - PLeadingOrTrailing node2 = (PLeadingOrTrailing) pop(); - PSignIs node1 = (PSignIs) pop(); - ASignClause node = new ASignClause(node1, node2, node3); - return node; - } - - Node new71() - { - PSeparateCharacter node3 = (PSeparateCharacter) pop(); - PLeadingOrTrailing node2 = (PLeadingOrTrailing) pop(); - PSignIs node1 = null; - ASignClause node = new ASignClause(node1, node2, node3); - return node; - } - - Node new72() - { - PSeparateCharacter node3 = (PSeparateCharacter) pop(); - PLeadingOrTrailing node2 = (PLeadingOrTrailing) pop(); - PSignIs node1 = (PSignIs) pop(); - ASignClause node = new ASignClause(node1, node2, node3); - return node; - } - - Node new73() - { - TIs node2 = null; - TSign node1 = (TSign) pop(); - ASignIs node = new ASignIs(node1, node2); - return node; - } - - Node new74() - { - TIs node2 = (TIs) pop(); - TSign node1 = (TSign) pop(); - ASignIs node = new ASignIs(node1, node2); - return node; - } - - Node new75() - { - TLeading node1 = (TLeading) pop(); - ALeadingLeadingOrTrailing node = new ALeadingLeadingOrTrailing(node1); - return node; - } - - Node new76() - { - TTrailing node1 = (TTrailing) pop(); - ATrailingLeadingOrTrailing node = new ATrailingLeadingOrTrailing(node1); - return node; - } - - Node new77() - { - TCharacter node2 = null; - TSeparate node1 = (TSeparate) pop(); - ASeparateCharacter node = new ASeparateCharacter(node1, node2); - return node; - } - - Node new78() - { - TCharacter node2 = (TCharacter) pop(); - TSeparate node1 = (TSeparate) pop(); - ASeparateCharacter node = new ASeparateCharacter(node1, node2); - return node; - } - - Node new79() - { - PLeftOrRight node2 = null; - TSynchronized node1 = (TSynchronized) pop(); - ASynchronizedClause node = new ASynchronizedClause(node1, node2); - return node; - } - - Node new80() - { - PLeftOrRight node2 = (PLeftOrRight) pop(); - TSynchronized node1 = (TSynchronized) pop(); - ASynchronizedClause node = new ASynchronizedClause(node1, node2); - return node; - } - - Node new81() - { - TLeft node1 = (TLeft) pop(); - ALeftLeftOrRight node = new ALeftLeftOrRight(node1); - return node; - } - - Node new82() - { - TRight node1 = (TRight) pop(); - ARightLeftOrRight node = new ARightLeftOrRight(node1); - return node; - } - - Node new83() - { - PUsagePhrase node2 = (PUsagePhrase) pop(); - PUsageIs node1 = null; - AUsageClause node = new AUsageClause(node1, node2); - return node; - } - - Node new84() - { - PUsagePhrase node2 = (PUsagePhrase) pop(); - PUsageIs node1 = (PUsageIs) pop(); - AUsageClause node = new AUsageClause(node1, node2); - return node; - } - - Node new85() - { - TIs node2 = null; - TUsage node1 = (TUsage) pop(); - AUsageIs node = new AUsageIs(node1, node2); - return node; - } - - Node new86() - { - TIs node2 = (TIs) pop(); - TUsage node1 = (TUsage) pop(); - AUsageIs node = new AUsageIs(node1, node2); - return node; - } - - Node new87() - { - TNative node2 = null; - TBinary node1 = (TBinary) pop(); - ABinaryUsagePhrase node = new ABinaryUsagePhrase(node1, node2); - return node; - } - - Node new88() - { - TNative node2 = (TNative) pop(); - TBinary node1 = (TBinary) pop(); - ABinaryUsagePhrase node = new ABinaryUsagePhrase(node1, node2); - return node; - } - - Node new89() - { - TComp node1 = (TComp) pop(); - ACompUsagePhrase node = new ACompUsagePhrase(node1); - return node; - } - - Node new90() - { - TNative node2 = null; - TComp1 node1 = (TComp1) pop(); - AComp1UsagePhrase node = new AComp1UsagePhrase(node1, node2); - return node; - } - - Node new91() - { - TNative node2 = (TNative) pop(); - TComp1 node1 = (TComp1) pop(); - AComp1UsagePhrase node = new AComp1UsagePhrase(node1, node2); - return node; - } - - Node new92() - { - TNative node2 = null; - TComp2 node1 = (TComp2) pop(); - AComp2UsagePhrase node = new AComp2UsagePhrase(node1, node2); - return node; - } - - Node new93() - { - TNative node2 = (TNative) pop(); - TComp2 node1 = (TComp2) pop(); - AComp2UsagePhrase node = new AComp2UsagePhrase(node1, node2); - return node; - } - - Node new94() - { - TComp3 node1 = (TComp3) pop(); - AComp3UsagePhrase node = new AComp3UsagePhrase(node1); - return node; - } - - Node new95() - { - TNative node2 = null; - TComp4 node1 = (TComp4) pop(); - AComp4UsagePhrase node = new AComp4UsagePhrase(node1, node2); - return node; - } - - Node new96() - { - TNative node2 = (TNative) pop(); - TComp4 node1 = (TComp4) pop(); - AComp4UsagePhrase node = new AComp4UsagePhrase(node1, node2); - return node; - } - - Node new97() - { - TComp5 node1 = (TComp5) pop(); - AComp5UsagePhrase node = new AComp5UsagePhrase(node1); - return node; - } - - Node new98() - { - TNative node2 = null; - TDisplay node1 = (TDisplay) pop(); - ADisplayUsagePhrase node = new ADisplayUsagePhrase(node1, node2); - return node; - } - - Node new99() - { - TNative node2 = (TNative) pop(); - TDisplay node1 = (TDisplay) pop(); - ADisplayUsagePhrase node = new ADisplayUsagePhrase(node1, node2); - return node; - } - - Node new100() - { - TNative node2 = null; - TDisplay1 node1 = (TDisplay1) pop(); - ADisplay1UsagePhrase node = new ADisplay1UsagePhrase(node1, node2); - return node; - } - - Node new101() - { - TNative node2 = (TNative) pop(); - TDisplay1 node1 = (TDisplay1) pop(); - ADisplay1UsagePhrase node = new ADisplay1UsagePhrase(node1, node2); - return node; - } - - Node new102() - { - TIndex node1 = (TIndex) pop(); - AIndexUsagePhrase node = new AIndexUsagePhrase(node1); - return node; - } - - Node new103() - { - TNational node1 = (TNational) pop(); - ANationalUsagePhrase node = new ANationalUsagePhrase(node1); - return node; - } - - Node new104() - { - PObjectReferencePhrase node1 = (PObjectReferencePhrase) pop(); - AObjectReferencePhraseUsagePhrase node = new AObjectReferencePhraseUsagePhrase(node1); - return node; - } - - Node new105() - { - TPackedDecimal node1 = (TPackedDecimal) pop(); - APackedDecimalUsagePhrase node = new APackedDecimalUsagePhrase(node1); - return node; - } - - Node new106() - { - TPointer node1 = (TPointer) pop(); - APointerUsagePhrase node = new APointerUsagePhrase(node1); - return node; - } - - Node new107() - { - TProcedurePointer node1 = (TProcedurePointer) pop(); - AProcedurePointerUsagePhrase node = new AProcedurePointerUsagePhrase(node1); - return node; - } - - Node new108() - { - TFunctionPointer node1 = (TFunctionPointer) pop(); - AFunctionPointerUsagePhrase node = new AFunctionPointerUsagePhrase(node1); - return node; - } - - Node new109() - { - TDataName node3 = null; - TReference node2 = (TReference) pop(); - TObject node1 = (TObject) pop(); - AObjectReferencePhrase node = new AObjectReferencePhrase(node1, node2, node3); - return node; - } - - Node new110() - { - TDataName node3 = (TDataName) pop(); - TReference node2 = (TReference) pop(); - TObject node1 = (TObject) pop(); - AObjectReferencePhrase node = new AObjectReferencePhrase(node1, node2, node3); - return node; - } - - Node new111() - { - PThroughPhrase node5 = null; - TDataName node4 = (TDataName) pop(); - TRenames node3 = (TRenames) pop(); - TDataName node2 = (TDataName) pop(); - TNumberNot88 node1 = (TNumberNot88) pop(); - ARenamesItem node = new ARenamesItem(node1, node2, node3, node4, node5); - return node; - } - - Node new112() - { - PThroughPhrase node5 = (PThroughPhrase) pop(); - TDataName node4 = (TDataName) pop(); - TRenames node3 = (TRenames) pop(); - TDataName node2 = (TDataName) pop(); - TNumberNot88 node1 = (TNumberNot88) pop(); - ARenamesItem node = new ARenamesItem(node1, node2, node3, node4, node5); - return node; - } - - Node new113() - { - TDataName node2 = (TDataName) pop(); - TThrough node1 = (TThrough) pop(); - AThroughPhrase node = new AThroughPhrase(node1, node2); - return node; - } - - Node new114() - { - PLiteral node4 = (PLiteral) pop(); - TAll node3 = null; - TIs node2 = null; - TValue node1 = (TValue) pop(); - AValueClause node = new AValueClause(node1, node2, node3, node4); - return node; - } - - Node new115() - { - PLiteral node4 = (PLiteral) pop(); - TAll node3 = null; - TIs node2 = (TIs) pop(); - TValue node1 = (TValue) pop(); - AValueClause node = new AValueClause(node1, node2, node3, node4); - return node; - } - - Node new116() - { - PLiteral node4 = (PLiteral) pop(); - TAll node3 = (TAll) pop(); - TIs node2 = null; - TValue node1 = (TValue) pop(); - AValueClause node = new AValueClause(node1, node2, node3, node4); - return node; - } - - Node new117() - { - PLiteral node4 = (PLiteral) pop(); - TAll node3 = (TAll) pop(); - TIs node2 = (TIs) pop(); - TValue node1 = (TValue) pop(); - AValueClause node = new AValueClause(node1, node2, node3, node4); - return node; - } - - Node new118() - { - PLiteralSequence node4 = (PLiteralSequence) pop(); - PValueOrValues node3 = (PValueOrValues) pop(); - TDataName node2 = (TDataName) pop(); - TNumber88 node1 = (TNumber88) pop(); - AValueItem node = new AValueItem(node1, node2, node3, node4); - return node; - } - - Node new119() - { - TIs node2 = null; - TValue node1 = (TValue) pop(); - AValueValueOrValues node = new AValueValueOrValues(node1, node2); - return node; - } - - Node new120() - { - TIs node2 = (TIs) pop(); - TValue node1 = (TValue) pop(); - AValueValueOrValues node = new AValueValueOrValues(node1, node2); - return node; - } - - Node new121() - { - TAre node2 = null; - TValues node1 = (TValues) pop(); - AValuesValueOrValues node = new AValuesValueOrValues(node1, node2); - return node; - } - - Node new122() - { - TAre node2 = (TAre) pop(); - TValues node1 = (TValues) pop(); - AValuesValueOrValues node = new AValuesValueOrValues(node1, node2); - return node; - } - - Node new123() - { - PLiteral node2 = (PLiteral) pop(); - TAll node1 = null; - ASingleLiteralSequence node = new ASingleLiteralSequence(node1, node2); - return node; - } - - Node new124() - { - PLiteral node2 = (PLiteral) pop(); - TAll node1 = (TAll) pop(); - ASingleLiteralSequence node = new ASingleLiteralSequence(node1, node2); - return node; - } - - Node new125() - { - PLiteral node3 = (PLiteral) pop(); - TComma node2 = null; - PLiteralSequence node1 = (PLiteralSequence) pop(); - ASequenceLiteralSequence node = new ASequenceLiteralSequence(node1, node2, node3); - return node; - } - - Node new126() - { - PLiteral node3 = (PLiteral) pop(); - TComma node2 = (TComma) pop(); - PLiteralSequence node1 = (PLiteralSequence) pop(); - ASequenceLiteralSequence node = new ASequenceLiteralSequence(node1, node2, node3); - return node; - } - - Node new127() - { - PLiteral node3 = (PLiteral) pop(); - TThrough node2 = (TThrough) pop(); - PLiteral node1 = (PLiteral) pop(); - AThroughSingleLiteralSequence node = new AThroughSingleLiteralSequence(node1, node2, node3); - return node; - } - - Node new128() - { - PLiteral node5 = (PLiteral) pop(); - TThrough node4 = (TThrough) pop(); - PLiteral node3 = (PLiteral) pop(); - TComma node2 = null; - PLiteralSequence node1 = (PLiteralSequence) pop(); - AThroughSequenceLiteralSequence node = new AThroughSequenceLiteralSequence(node1, node2, node3, node4, node5); - return node; - } - - Node new129() - { - PLiteral node5 = (PLiteral) pop(); - TThrough node4 = (TThrough) pop(); - PLiteral node3 = (PLiteral) pop(); - TComma node2 = (TComma) pop(); - PLiteralSequence node1 = (PLiteralSequence) pop(); - AThroughSequenceLiteralSequence node = new AThroughSequenceLiteralSequence(node1, node2, node3, node4, node5); - return node; - } - - Node new130() - { - TZeros node1 = (TZeros) pop(); - AZerosLiteral node = new AZerosLiteral(node1); - return node; - } - - Node new131() - { - TSpaces node1 = (TSpaces) pop(); - ASpacesLiteral node = new ASpacesLiteral(node1); - return node; - } - - Node new132() - { - THighValues node1 = (THighValues) pop(); - AHighValuesLiteral node = new AHighValuesLiteral(node1); - return node; - } - - Node new133() - { - TLowValues node1 = (TLowValues) pop(); - ALowValuesLiteral node = new ALowValuesLiteral(node1); - return node; - } - - Node new134() - { - TQuotes node1 = (TQuotes) pop(); - AQuotesLiteral node = new AQuotesLiteral(node1); - return node; - } - - Node new135() - { - TNulls node1 = (TNulls) pop(); - ANullsLiteral node = new ANullsLiteral(node1); - return node; - } - - Node new136() - { - PNumber node1 = (PNumber) pop(); - ANumberLiteral node = new ANumberLiteral(node1); - return node; - } - - Node new137() - { - TNumericLiteral node1 = (TNumericLiteral) pop(); - ANumericLiteralLiteral node = new ANumericLiteralLiteral(node1); - return node; - } - - Node new138() - { - TAlphanumericLiteral node1 = (TAlphanumericLiteral) pop(); - AAlphanumericLiteralLiteral node = new AAlphanumericLiteralLiteral(node1); - return node; - } - - Node new139() - { - PCharacterSubstring node1 = (PCharacterSubstring) pop(); - ASingleCharacterString node = new ASingleCharacterString(node1); - return node; - } - - Node new140() - { - PCharacterSubstring node2 = (PCharacterSubstring) pop(); - PCharacterString node1 = (PCharacterString) pop(); - ASequenceCharacterString node = new ASequenceCharacterString(node1, node2); - return node; - } - - Node new141() - { - TDataName node1 = (TDataName) pop(); - ADataNameCharacterSubstring node = new ADataNameCharacterSubstring(node1); - return node; - } - - Node new142() - { - TPlus node1 = (TPlus) pop(); - APlusCharacterSubstring node = new APlusCharacterSubstring(node1); - return node; - } - - Node new143() - { - TMinus node1 = (TMinus) pop(); - AMinusCharacterSubstring node = new AMinusCharacterSubstring(node1); - return node; - } - - Node new144() - { - TStar node1 = (TStar) pop(); - AStarCharacterSubstring node = new AStarCharacterSubstring(node1); - return node; - } - - Node new145() - { - TSlash node1 = (TSlash) pop(); - ASlashCharacterSubstring node = new ASlashCharacterSubstring(node1); - return node; - } - - Node new146() - { - TDollar node1 = (TDollar) pop(); - ADollarCharacterSubstring node = new ADollarCharacterSubstring(node1); - return node; - } - - Node new147() - { - TComma node1 = (TComma) pop(); - ACommaCharacterSubstring node = new ACommaCharacterSubstring(node1); - return node; - } - - Node new148() - { - TNumberNot88 node1 = (TNumberNot88) pop(); - ANumberCharacterSubstring node = new ANumberCharacterSubstring(node1); - return node; - } - - Node new149() - { - TNumericLiteral node1 = (TNumericLiteral) pop(); - ANumericLiteralCharacterSubstring node = new ANumericLiteralCharacterSubstring(node1); - return node; - } - - Node new150() - { - PBracketedNumber node1 = (PBracketedNumber) pop(); - ABracketedNumberCharacterSubstring node = new ABracketedNumberCharacterSubstring(node1); - return node; - } - - Node new151() - { - TDotZee node1 = (TDotZee) pop(); - ADotZeeCharacterSubstring node = new ADotZeeCharacterSubstring(node1); - return node; - } - - Node new152() - { - TRparen node3 = (TRparen) pop(); - PNumber node2 = (PNumber) pop(); - TLparen node1 = (TLparen) pop(); - ABracketedNumber node = new ABracketedNumber(node1, node2, node3); - return node; - } - - Node new153() - { - TNumberNot88 node1 = (TNumberNot88) pop(); - ANumberNot88Number node = new ANumberNot88Number(node1); - return node; - } - - Node new154() - { - TNumber88 node1 = (TNumber88) pop(); - ANumber88Number node = new ANumber88Number(node1); - return node; - } - - private static int[][][] actionTable; -/* { - {{-1, ERROR, 0}, {9, SHIFT, 1}, {10, SHIFT, 2}, }, - {{-1, ERROR, 1}, {74, SHIFT, 9}, }, - {{-1, REDUCE, 6}, {17, SHIFT, 10}, {18, SHIFT, 11}, {21, SHIFT, 12}, {22, SHIFT, 13}, {23, SHIFT, 14}, {24, SHIFT, 15}, {25, SHIFT, 16}, {26, SHIFT, 17}, {27, SHIFT, 18}, {30, SHIFT, 19}, {31, SHIFT, 20}, {32, SHIFT, 21}, {33, SHIFT, 22}, {35, SHIFT, 23}, {36, SHIFT, 24}, {38, SHIFT, 25}, {41, SHIFT, 26}, {43, SHIFT, 27}, {46, SHIFT, 28}, {49, SHIFT, 29}, {50, SHIFT, 30}, {52, SHIFT, 31}, {53, SHIFT, 32}, {54, SHIFT, 33}, {55, SHIFT, 34}, {57, SHIFT, 35}, {62, SHIFT, 36}, {64, SHIFT, 37}, {68, SHIFT, 38}, {69, SHIFT, 39}, {70, SHIFT, 40}, {74, SHIFT, 41}, }, - {{-1, ERROR, 3}, {75, ACCEPT, -1}, }, - {{-1, ERROR, 4}, {0, SHIFT, 63}, }, - {{-1, REDUCE, 1}, }, - {{-1, REDUCE, 3}, }, - {{-1, REDUCE, 4}, }, - {{-1, REDUCE, 5}, }, - {{-1, ERROR, 9}, {70, SHIFT, 64}, {71, SHIFT, 65}, }, - {{-1, REDUCE, 87}, {47, SHIFT, 67}, }, - {{-1, ERROR, 11}, {72, SHIFT, 68}, {73, SHIFT, 69}, }, - {{-1, REDUCE, 89}, }, - {{-1, REDUCE, 90}, {47, SHIFT, 70}, }, - {{-1, REDUCE, 92}, {47, SHIFT, 71}, }, - {{-1, REDUCE, 94}, }, - {{-1, REDUCE, 95}, {47, SHIFT, 72}, }, - {{-1, REDUCE, 97}, }, - {{-1, ERROR, 18}, {34, SHIFT, 73}, }, - {{-1, REDUCE, 98}, {47, SHIFT, 74}, }, - {{-1, REDUCE, 100}, {47, SHIFT, 75}, }, - {{-1, REDUCE, 34}, }, - {{-1, REDUCE, 15}, }, - {{-1, REDUCE, 108}, }, - {{-1, REDUCE, 35}, }, - {{-1, REDUCE, 102}, }, - {{-1, REDUCE, 36}, {60, SHIFT, 76}, }, - {{-1, REDUCE, 75}, }, - {{-1, REDUCE, 103}, }, - {{-1, ERROR, 29}, {58, SHIFT, 77}, }, - {{-1, ERROR, 30}, {9, SHIFT, 78}, {10, SHIFT, 79}, }, - {{-1, REDUCE, 105}, }, - {{-1, ERROR, 32}, {1, SHIFT, 82}, {2, SHIFT, 83}, {3, SHIFT, 84}, {4, SHIFT, 85}, {5, SHIFT, 86}, {6, SHIFT, 87}, {7, SHIFT, 88}, {10, SHIFT, 89}, {12, SHIFT, 90}, {13, SHIFT, 91}, {40, SHIFT, 92}, {74, SHIFT, 93}, }, - {{-1, REDUCE, 106}, }, - {{-1, REDUCE, 107}, }, - {{-1, ERROR, 35}, {74, SHIFT, 97}, }, - {{-1, REDUCE, 73}, {40, SHIFT, 98}, }, - {{-1, REDUCE, 79}, {44, SHIFT, 99}, {60, SHIFT, 100}, }, - {{-1, REDUCE, 76}, }, - {{-1, REDUCE, 85}, {40, SHIFT, 102}, }, - {{-1, ERROR, 40}, {9, SHIFT, 78}, {10, SHIFT, 79}, {11, SHIFT, 103}, {12, SHIFT, 104}, {14, SHIFT, 105}, {37, SHIFT, 106}, {40, SHIFT, 107}, {45, SHIFT, 108}, {48, SHIFT, 109}, {56, SHIFT, 110}, {63, SHIFT, 111}, {73, SHIFT, 112}, }, - {{-1, REDUCE, 14}, {59, SHIFT, 115}, }, - {{-1, REDUCE, 7}, {17, SHIFT, 10}, {18, SHIFT, 11}, {21, SHIFT, 12}, {22, SHIFT, 13}, {23, SHIFT, 14}, {24, SHIFT, 15}, {25, SHIFT, 16}, {26, SHIFT, 17}, {27, SHIFT, 18}, {30, SHIFT, 19}, {31, SHIFT, 20}, {32, SHIFT, 21}, {35, SHIFT, 23}, {36, SHIFT, 24}, {38, SHIFT, 25}, {41, SHIFT, 26}, {43, SHIFT, 27}, {46, SHIFT, 28}, {49, SHIFT, 29}, {50, SHIFT, 30}, {52, SHIFT, 31}, {53, SHIFT, 32}, {54, SHIFT, 33}, {55, SHIFT, 34}, {57, SHIFT, 35}, {62, SHIFT, 36}, {64, SHIFT, 37}, {68, SHIFT, 38}, {69, SHIFT, 39}, {70, SHIFT, 40}, }, - {{-1, REDUCE, 8}, {17, SHIFT, 10}, {18, SHIFT, 11}, {21, SHIFT, 12}, {22, SHIFT, 13}, {23, SHIFT, 14}, {24, SHIFT, 15}, {25, SHIFT, 16}, {26, SHIFT, 17}, {27, SHIFT, 18}, {30, SHIFT, 19}, {31, SHIFT, 20}, {32, SHIFT, 21}, {35, SHIFT, 23}, {36, SHIFT, 24}, {38, SHIFT, 25}, {41, SHIFT, 26}, {43, SHIFT, 27}, {46, SHIFT, 28}, {49, SHIFT, 29}, {50, SHIFT, 30}, {52, SHIFT, 31}, {53, SHIFT, 32}, {54, SHIFT, 33}, {55, SHIFT, 34}, {62, SHIFT, 36}, {64, SHIFT, 37}, {68, SHIFT, 38}, {69, SHIFT, 39}, {70, SHIFT, 40}, }, - {{-1, REDUCE, 10}, {17, SHIFT, 10}, {18, SHIFT, 11}, {21, SHIFT, 12}, {22, SHIFT, 13}, {23, SHIFT, 14}, {24, SHIFT, 15}, {25, SHIFT, 16}, {26, SHIFT, 17}, {27, SHIFT, 18}, {30, SHIFT, 19}, {31, SHIFT, 20}, {32, SHIFT, 21}, {35, SHIFT, 23}, {36, SHIFT, 24}, {38, SHIFT, 25}, {41, SHIFT, 26}, {43, SHIFT, 27}, {46, SHIFT, 28}, {49, SHIFT, 29}, {50, SHIFT, 30}, {52, SHIFT, 31}, {53, SHIFT, 32}, {54, SHIFT, 33}, {55, SHIFT, 34}, {62, SHIFT, 36}, {64, SHIFT, 37}, {68, SHIFT, 38}, {69, SHIFT, 39}, {70, SHIFT, 40}, }, - {{-1, REDUCE, 17}, }, - {{-1, REDUCE, 19}, }, - {{-1, REDUCE, 20}, }, - {{-1, REDUCE, 21}, }, - {{-1, REDUCE, 22}, }, - {{-1, REDUCE, 23}, }, - {{-1, REDUCE, 24}, }, - {{-1, REDUCE, 38}, {16, SHIFT, 120}, {29, SHIFT, 121}, {39, SHIFT, 122}, }, - {{-1, REDUCE, 25}, }, - {{-1, REDUCE, 26}, }, - {{-1, ERROR, 55}, {43, SHIFT, 27}, {68, SHIFT, 38}, }, - {{-1, REDUCE, 69}, {61, SHIFT, 129}, }, - {{-1, REDUCE, 27}, }, - {{-1, REDUCE, 28}, }, - {{-1, ERROR, 59}, {17, SHIFT, 10}, {21, SHIFT, 12}, {22, SHIFT, 13}, {23, SHIFT, 14}, {24, SHIFT, 15}, {25, SHIFT, 16}, {26, SHIFT, 17}, {30, SHIFT, 19}, {31, SHIFT, 20}, {35, SHIFT, 23}, {38, SHIFT, 25}, {46, SHIFT, 28}, {49, SHIFT, 29}, {52, SHIFT, 31}, {54, SHIFT, 33}, {55, SHIFT, 34}, }, - {{-1, REDUCE, 83}, }, - {{-1, REDUCE, 104}, }, - {{-1, REDUCE, 29}, }, - {{-1, REDUCE, 0}, {9, SHIFT, 1}, {10, SHIFT, 2}, }, - {{-1, REDUCE, 119}, {40, SHIFT, 133}, }, - {{-1, REDUCE, 121}, {15, SHIFT, 134}, }, - {{-1, ERROR, 66}, {9, SHIFT, 78}, {10, SHIFT, 79}, {11, SHIFT, 103}, {12, SHIFT, 104}, {14, SHIFT, 135}, {37, SHIFT, 106}, {45, SHIFT, 108}, {48, SHIFT, 109}, {56, SHIFT, 110}, {63, SHIFT, 111}, {73, SHIFT, 112}, }, - {{-1, REDUCE, 88}, }, - {{-1, ERROR, 68}, {73, SHIFT, 138}, }, - {{-1, REDUCE, 30}, }, - {{-1, REDUCE, 91}, }, - {{-1, REDUCE, 93}, }, - {{-1, REDUCE, 96}, }, - {{-1, ERROR, 73}, {40, SHIFT, 139}, {74, SHIFT, 140}, }, - {{-1, REDUCE, 99}, }, - {{-1, REDUCE, 101}, }, - {{-1, REDUCE, 37}, }, - {{-1, REDUCE, 109}, {74, SHIFT, 141}, }, - {{-1, REDUCE, 154}, }, - {{-1, REDUCE, 153}, }, - {{-1, ERROR, 80}, {9, SHIFT, 78}, {10, SHIFT, 79}, }, - {{-1, REDUCE, 46}, {28, SHIFT, 143}, {66, SHIFT, 144}, {67, SHIFT, 145}, }, - {{-1, REDUCE, 147}, }, - {{-1, REDUCE, 145}, }, - {{-1, REDUCE, 142}, }, - {{-1, REDUCE, 143}, }, - {{-1, REDUCE, 144}, }, - {{-1, REDUCE, 146}, }, - {{-1, ERROR, 88}, {9, SHIFT, 78}, {10, SHIFT, 79}, }, - {{-1, REDUCE, 148}, }, - {{-1, REDUCE, 149}, }, - {{-1, REDUCE, 151}, }, - {{-1, ERROR, 92}, {1, SHIFT, 82}, {2, SHIFT, 83}, {3, SHIFT, 84}, {4, SHIFT, 85}, {5, SHIFT, 86}, {6, SHIFT, 87}, {7, SHIFT, 88}, {10, SHIFT, 89}, {12, SHIFT, 90}, {13, SHIFT, 91}, {74, SHIFT, 93}, }, - {{-1, REDUCE, 141}, }, - {{-1, REDUCE, 67}, {1, SHIFT, 82}, {2, SHIFT, 83}, {3, SHIFT, 84}, {4, SHIFT, 85}, {5, SHIFT, 86}, {6, SHIFT, 87}, {7, SHIFT, 88}, {10, SHIFT, 89}, {12, SHIFT, 90}, {13, SHIFT, 91}, {74, SHIFT, 93}, }, - {{-1, REDUCE, 139}, }, - {{-1, REDUCE, 150}, }, - {{-1, REDUCE, 16}, }, - {{-1, REDUCE, 74}, }, - {{-1, REDUCE, 81}, }, - {{-1, REDUCE, 82}, }, - {{-1, REDUCE, 80}, }, - {{-1, REDUCE, 86}, }, - {{-1, REDUCE, 138}, }, - {{-1, REDUCE, 137}, }, - {{-1, ERROR, 105}, {9, SHIFT, 78}, {10, SHIFT, 79}, {11, SHIFT, 103}, {12, SHIFT, 104}, {37, SHIFT, 106}, {45, SHIFT, 108}, {48, SHIFT, 109}, {56, SHIFT, 110}, {63, SHIFT, 111}, {73, SHIFT, 112}, }, - {{-1, REDUCE, 132}, }, - {{-1, ERROR, 107}, {9, SHIFT, 78}, {10, SHIFT, 79}, {11, SHIFT, 103}, {12, SHIFT, 104}, {14, SHIFT, 150}, {37, SHIFT, 106}, {45, SHIFT, 108}, {48, SHIFT, 109}, {56, SHIFT, 110}, {63, SHIFT, 111}, {73, SHIFT, 112}, }, - {{-1, REDUCE, 133}, }, - {{-1, REDUCE, 135}, }, - {{-1, REDUCE, 134}, }, - {{-1, REDUCE, 131}, }, - {{-1, REDUCE, 130}, }, - {{-1, REDUCE, 114}, }, - {{-1, REDUCE, 136}, }, - {{-1, ERROR, 115}, {74, SHIFT, 152}, }, - {{-1, REDUCE, 9}, {17, SHIFT, 10}, {18, SHIFT, 11}, {21, SHIFT, 12}, {22, SHIFT, 13}, {23, SHIFT, 14}, {24, SHIFT, 15}, {25, SHIFT, 16}, {26, SHIFT, 17}, {27, SHIFT, 18}, {30, SHIFT, 19}, {31, SHIFT, 20}, {32, SHIFT, 21}, {35, SHIFT, 23}, {36, SHIFT, 24}, {38, SHIFT, 25}, {41, SHIFT, 26}, {43, SHIFT, 27}, {46, SHIFT, 28}, {49, SHIFT, 29}, {50, SHIFT, 30}, {52, SHIFT, 31}, {53, SHIFT, 32}, {54, SHIFT, 33}, {55, SHIFT, 34}, {62, SHIFT, 36}, {64, SHIFT, 37}, {68, SHIFT, 38}, {69, SHIFT, 39}, {70, SHIFT, 40}, }, - {{-1, REDUCE, 11}, {17, SHIFT, 10}, {18, SHIFT, 11}, {21, SHIFT, 12}, {22, SHIFT, 13}, {23, SHIFT, 14}, {24, SHIFT, 15}, {25, SHIFT, 16}, {26, SHIFT, 17}, {27, SHIFT, 18}, {30, SHIFT, 19}, {31, SHIFT, 20}, {32, SHIFT, 21}, {35, SHIFT, 23}, {36, SHIFT, 24}, {38, SHIFT, 25}, {41, SHIFT, 26}, {43, SHIFT, 27}, {46, SHIFT, 28}, {49, SHIFT, 29}, {50, SHIFT, 30}, {52, SHIFT, 31}, {53, SHIFT, 32}, {54, SHIFT, 33}, {55, SHIFT, 34}, {62, SHIFT, 36}, {64, SHIFT, 37}, {68, SHIFT, 38}, {69, SHIFT, 39}, {70, SHIFT, 40}, }, - {{-1, REDUCE, 12}, {17, SHIFT, 10}, {18, SHIFT, 11}, {21, SHIFT, 12}, {22, SHIFT, 13}, {23, SHIFT, 14}, {24, SHIFT, 15}, {25, SHIFT, 16}, {26, SHIFT, 17}, {27, SHIFT, 18}, {30, SHIFT, 19}, {31, SHIFT, 20}, {32, SHIFT, 21}, {35, SHIFT, 23}, {36, SHIFT, 24}, {38, SHIFT, 25}, {41, SHIFT, 26}, {43, SHIFT, 27}, {46, SHIFT, 28}, {49, SHIFT, 29}, {50, SHIFT, 30}, {52, SHIFT, 31}, {53, SHIFT, 32}, {54, SHIFT, 33}, {55, SHIFT, 34}, {62, SHIFT, 36}, {64, SHIFT, 37}, {68, SHIFT, 38}, {69, SHIFT, 39}, {70, SHIFT, 40}, }, - {{-1, REDUCE, 18}, }, - {{-1, REDUCE, 63}, }, - {{-1, REDUCE, 64}, }, - {{-1, ERROR, 122}, {19, SHIFT, 154}, {74, SHIFT, 155}, }, - {{-1, REDUCE, 41}, }, - {{-1, ERROR, 124}, {40, SHIFT, 157}, {42, SHIFT, 158}, {74, SHIFT, 155}, }, - {{-1, REDUCE, 44}, }, - {{-1, REDUCE, 39}, {16, SHIFT, 120}, {29, SHIFT, 121}, {39, SHIFT, 122}, }, - {{-1, REDUCE, 42}, {39, SHIFT, 122}, }, - {{-1, REDUCE, 70}, {61, SHIFT, 129}, }, - {{-1, REDUCE, 77}, {20, SHIFT, 164}, }, - {{-1, REDUCE, 71}, }, - {{-1, REDUCE, 84}, }, - {{-1, REDUCE, 2}, }, - {{-1, REDUCE, 120}, }, - {{-1, REDUCE, 122}, }, - {{-1, ERROR, 135}, {9, SHIFT, 78}, {10, SHIFT, 79}, {11, SHIFT, 103}, {12, SHIFT, 104}, {37, SHIFT, 106}, {45, SHIFT, 108}, {48, SHIFT, 109}, {56, SHIFT, 110}, {63, SHIFT, 111}, {73, SHIFT, 112}, }, - {{-1, REDUCE, 118}, {1, SHIFT, 166}, {9, SHIFT, 78}, {10, SHIFT, 79}, {11, SHIFT, 103}, {12, SHIFT, 104}, {37, SHIFT, 106}, {45, SHIFT, 108}, {48, SHIFT, 109}, {56, SHIFT, 110}, {63, SHIFT, 111}, {73, SHIFT, 112}, }, - {{-1, REDUCE, 123}, {65, SHIFT, 168}, }, - {{-1, REDUCE, 31}, }, - {{-1, ERROR, 139}, {74, SHIFT, 169}, }, - {{-1, REDUCE, 32}, }, - {{-1, REDUCE, 110}, }, - {{-1, ERROR, 142}, {28, SHIFT, 170}, {66, SHIFT, 171}, }, - {{-1, ERROR, 143}, {51, SHIFT, 172}, {74, SHIFT, 173}, }, - {{-1, REDUCE, 47}, {28, SHIFT, 174}, }, - {{-1, REDUCE, 56}, }, - {{-1, ERROR, 146}, {8, SHIFT, 175}, }, - {{-1, REDUCE, 68}, {1, SHIFT, 82}, {2, SHIFT, 83}, {3, SHIFT, 84}, {4, SHIFT, 85}, {5, SHIFT, 86}, {6, SHIFT, 87}, {7, SHIFT, 88}, {10, SHIFT, 89}, {12, SHIFT, 90}, {13, SHIFT, 91}, {74, SHIFT, 93}, }, - {{-1, REDUCE, 140}, }, - {{-1, REDUCE, 116}, }, - {{-1, ERROR, 150}, {9, SHIFT, 78}, {10, SHIFT, 79}, {11, SHIFT, 103}, {12, SHIFT, 104}, {37, SHIFT, 106}, {45, SHIFT, 108}, {48, SHIFT, 109}, {56, SHIFT, 110}, {63, SHIFT, 111}, {73, SHIFT, 112}, }, - {{-1, REDUCE, 115}, }, - {{-1, REDUCE, 111}, {65, SHIFT, 177}, }, - {{-1, REDUCE, 13}, {17, SHIFT, 10}, {18, SHIFT, 11}, {21, SHIFT, 12}, {22, SHIFT, 13}, {23, SHIFT, 14}, {24, SHIFT, 15}, {25, SHIFT, 16}, {26, SHIFT, 17}, {27, SHIFT, 18}, {30, SHIFT, 19}, {31, SHIFT, 20}, {32, SHIFT, 21}, {35, SHIFT, 23}, {36, SHIFT, 24}, {38, SHIFT, 25}, {41, SHIFT, 26}, {43, SHIFT, 27}, {46, SHIFT, 28}, {49, SHIFT, 29}, {50, SHIFT, 30}, {52, SHIFT, 31}, {53, SHIFT, 32}, {54, SHIFT, 33}, {55, SHIFT, 34}, {62, SHIFT, 36}, {64, SHIFT, 37}, {68, SHIFT, 38}, {69, SHIFT, 39}, {70, SHIFT, 40}, }, - {{-1, ERROR, 154}, {74, SHIFT, 155}, }, - {{-1, REDUCE, 59}, }, - {{-1, REDUCE, 65}, {74, SHIFT, 180}, }, - {{-1, ERROR, 157}, {74, SHIFT, 155}, }, - {{-1, ERROR, 158}, {40, SHIFT, 182}, {74, SHIFT, 155}, }, - {{-1, REDUCE, 57}, {74, SHIFT, 180}, }, - {{-1, REDUCE, 40}, }, - {{-1, REDUCE, 45}, {39, SHIFT, 122}, }, - {{-1, REDUCE, 43}, }, - {{-1, REDUCE, 72}, }, - {{-1, REDUCE, 78}, }, - {{-1, REDUCE, 124}, }, - {{-1, ERROR, 166}, {9, SHIFT, 78}, {10, SHIFT, 79}, {11, SHIFT, 103}, {12, SHIFT, 104}, {37, SHIFT, 106}, {45, SHIFT, 108}, {48, SHIFT, 109}, {56, SHIFT, 110}, {63, SHIFT, 111}, {73, SHIFT, 112}, }, - {{-1, REDUCE, 125}, {65, SHIFT, 185}, }, - {{-1, ERROR, 168}, {9, SHIFT, 78}, {10, SHIFT, 79}, {11, SHIFT, 103}, {12, SHIFT, 104}, {37, SHIFT, 106}, {45, SHIFT, 108}, {48, SHIFT, 109}, {56, SHIFT, 110}, {63, SHIFT, 111}, {73, SHIFT, 112}, }, - {{-1, REDUCE, 33}, }, - {{-1, ERROR, 170}, {51, SHIFT, 187}, {74, SHIFT, 188}, }, - {{-1, ERROR, 171}, {28, SHIFT, 189}, }, - {{-1, ERROR, 172}, {74, SHIFT, 190}, }, - {{-1, REDUCE, 48}, }, - {{-1, ERROR, 174}, {51, SHIFT, 191}, {74, SHIFT, 192}, }, - {{-1, REDUCE, 152}, }, - {{-1, REDUCE, 117}, }, - {{-1, ERROR, 177}, {74, SHIFT, 193}, }, - {{-1, REDUCE, 112}, }, - {{-1, REDUCE, 66}, {74, SHIFT, 180}, }, - {{-1, REDUCE, 58}, }, - {{-1, REDUCE, 61}, {74, SHIFT, 180}, }, - {{-1, ERROR, 182}, {74, SHIFT, 155}, }, - {{-1, REDUCE, 60}, {74, SHIFT, 180}, }, - {{-1, REDUCE, 126}, {65, SHIFT, 195}, }, - {{-1, ERROR, 185}, {9, SHIFT, 78}, {10, SHIFT, 79}, {11, SHIFT, 103}, {12, SHIFT, 104}, {37, SHIFT, 106}, {45, SHIFT, 108}, {48, SHIFT, 109}, {56, SHIFT, 110}, {63, SHIFT, 111}, {73, SHIFT, 112}, }, - {{-1, REDUCE, 127}, }, - {{-1, ERROR, 187}, {74, SHIFT, 197}, }, - {{-1, REDUCE, 49}, }, - {{-1, ERROR, 189}, {51, SHIFT, 198}, {74, SHIFT, 199}, }, - {{-1, REDUCE, 52}, }, - {{-1, ERROR, 191}, {74, SHIFT, 200}, }, - {{-1, REDUCE, 50}, }, - {{-1, REDUCE, 113}, }, - {{-1, REDUCE, 62}, {74, SHIFT, 180}, }, - {{-1, ERROR, 195}, {9, SHIFT, 78}, {10, SHIFT, 79}, {11, SHIFT, 103}, {12, SHIFT, 104}, {37, SHIFT, 106}, {45, SHIFT, 108}, {48, SHIFT, 109}, {56, SHIFT, 110}, {63, SHIFT, 111}, {73, SHIFT, 112}, }, - {{-1, REDUCE, 128}, }, - {{-1, REDUCE, 53}, }, - {{-1, ERROR, 198}, {74, SHIFT, 202}, }, - {{-1, REDUCE, 51}, }, - {{-1, REDUCE, 54}, }, - {{-1, REDUCE, 129}, }, - {{-1, REDUCE, 55}, }, - };*/ - private static int[][][] gotoTable; -/* { - {{-1, 3}, }, - {{-1, 4}, }, - {{-1, 5}, {63, 132}, }, - {{-1, 6}, }, - {{-1, 42}, }, - {{-1, 43}, {42, 116}, }, - {{-1, 44}, {42, 117}, {43, 118}, {116, 153}, }, - {{-1, 45}, {44, 119}, {117, 119}, {118, 119}, {153, 119}, }, - {{-1, 46}, }, - {{-1, 47}, }, - {{-1, 48}, }, - {{-1, 49}, }, - {{-1, 50}, }, - {{-1, 51}, }, - {{-1, 52}, }, - {{-1, 80}, }, - {{-1, 123}, {126, 160}, }, - {{-1, 124}, }, - {{-1, 125}, {127, 162}, {161, 162}, }, - {{-1, 53}, }, - {{-1, 54}, }, - {{-1, 55}, }, - {{-1, 56}, {55, 128}, }, - {{-1, 130}, {128, 163}, }, - {{-1, 57}, }, - {{-1, 101}, }, - {{-1, 58}, }, - {{-1, 59}, }, - {{-1, 60}, {59, 131}, }, - {{-1, 61}, }, - {{-1, 7}, }, - {{-1, 178}, }, - {{-1, 62}, }, - {{-1, 8}, }, - {{-1, 66}, }, - {{-1, 136}, }, - {{-1, 113}, {66, 137}, {105, 149}, {107, 151}, {135, 165}, {136, 167}, {150, 176}, {166, 184}, {168, 186}, {185, 196}, {195, 201}, }, - {{-1, 94}, {92, 147}, }, - {{-1, 95}, {94, 148}, {147, 148}, }, - {{-1, 96}, }, - {{-1, 114}, {30, 81}, {80, 142}, {88, 146}, }, - {{-1, 126}, }, - {{-1, 127}, {126, 161}, }, - {{-1, 156}, {124, 159}, {154, 179}, {157, 181}, {158, 183}, {182, 194}, }, - };*/ - private static String[] errorMessages; -/* { - "expecting: number88, number not88", - "expecting: data name", - "expecting: '.', binary, blank, comp, comp1, comp2, comp3, comp4, comp5, date, display, display1, external, filler, function pointer, global, index, justified, leading, national, object, occurs, packed decimal, picture, pointer, procedure pointer, redefines, sign, synchronized, trailing, usage, value, data name", - "expecting: EOF", - "expecting: '.'", - "expecting: value, values", - "expecting: '.', binary, blank, comp, comp1, comp2, comp3, comp4, comp5, date, display, display1, external, function pointer, global, index, justified, leading, national, native, object, occurs, packed decimal, picture, pointer, procedure pointer, sign, synchronized, trailing, usage, value", - "expecting: when, zeros", - "expecting: '.', binary, blank, comp, comp1, comp2, comp3, comp4, comp5, date, display, display1, external, function pointer, global, index, justified, leading, national, object, occurs, packed decimal, picture, pointer, procedure pointer, sign, synchronized, trailing, usage, value", - "expecting: format", - "expecting: '.', binary, blank, comp, comp1, comp2, comp3, comp4, comp5, date, display, display1, external, function pointer, global, index, justified, leading, national, object, occurs, packed decimal, picture, pointer, procedure pointer, redefines, sign, synchronized, trailing, usage, value", - "expecting: '.', binary, blank, comp, comp1, comp2, comp3, comp4, comp5, date, display, display1, external, function pointer, global, index, justified, leading, national, object, occurs, packed decimal, picture, pointer, procedure pointer, right, sign, synchronized, trailing, usage, value", - "expecting: '.', binary, blank, comp, comp1, comp2, comp3, comp4, comp5, date, display, display1, external, function pointer, global, index, justified, leading, national, object, occurs, packed decimal, picture, pointer, procedure pointer, separate, sign, synchronized, trailing, usage, value", - "expecting: reference", - "expecting: ',', '/', '+', '-', '*', '$', '(', number not88, numeric literal, dot zee, is, data name", - "expecting: is, leading, trailing", - "expecting: '.', binary, blank, comp, comp1, comp2, comp3, comp4, comp5, date, display, display1, external, function pointer, global, index, justified, leading, left, national, object, occurs, packed decimal, picture, pointer, procedure pointer, right, sign, synchronized, trailing, usage, value", - "expecting: binary, comp, comp1, comp2, comp3, comp4, comp5, display, display1, function pointer, index, is, national, object, packed decimal, pointer, procedure pointer", - "expecting: number88, number not88, alphanumeric literal, numeric literal, all, high values, is, low values, nulls, quotes, spaces, zeros", - "expecting: '.', binary, blank, comp, comp1, comp2, comp3, comp4, comp5, date, display, display1, external, function pointer, global, index, justified, leading, national, object, occurs, packed decimal, picture, pointer, procedure pointer, redefines, renames, sign, synchronized, trailing, usage, value", - "expecting: '.', ascending, binary, blank, comp, comp1, comp2, comp3, comp4, comp5, date, descending, display, display1, external, function pointer, global, index, indexed, justified, leading, national, object, occurs, packed decimal, picture, pointer, procedure pointer, sign, synchronized, trailing, usage, value", - "expecting: leading, trailing", - "expecting: binary, comp, comp1, comp2, comp3, comp4, comp5, display, display1, function pointer, index, national, object, packed decimal, pointer, procedure pointer", - "expecting: number88, number not88, EOF", - "expecting: number88, number not88, alphanumeric literal, numeric literal, all, are, high values, low values, nulls, quotes, spaces, zeros", - "expecting: number88, number not88, alphanumeric literal, numeric literal, all, high values, low values, nulls, quotes, spaces, zeros", - "expecting: zeros", - "expecting: is, data name", - "expecting: '.', binary, blank, comp, comp1, comp2, comp3, comp4, comp5, date, display, display1, external, function pointer, global, index, justified, leading, national, object, occurs, packed decimal, picture, pointer, procedure pointer, sign, synchronized, trailing, usage, value, data name", - "expecting: '.', ',', ')', number88, number not88, alphanumeric literal, numeric literal, ascending, binary, blank, comp, comp1, comp2, comp3, comp4, comp5, date, depending, descending, display, display1, external, function pointer, global, high values, index, indexed, justified, leading, low values, national, nulls, object, occurs, packed decimal, picture, pointer, procedure pointer, quotes, sign, spaces, synchronized, through, times, to, trailing, usage, value, zeros", - "expecting: '.', ascending, binary, blank, comp, comp1, comp2, comp3, comp4, comp5, date, depending, descending, display, display1, external, function pointer, global, index, indexed, justified, leading, national, object, occurs, packed decimal, picture, pointer, procedure pointer, sign, synchronized, times, to, trailing, usage, value", - "expecting: '.', ',', '/', '+', '-', '*', '$', '(', number not88, numeric literal, dot zee, binary, blank, comp, comp1, comp2, comp3, comp4, comp5, date, display, display1, external, function pointer, global, index, justified, leading, national, object, occurs, packed decimal, picture, pointer, procedure pointer, sign, synchronized, trailing, usage, value, data name", - "expecting: ',', '/', '+', '-', '*', '$', '(', number not88, numeric literal, dot zee, data name", - "expecting: '.', ',', number88, number not88, alphanumeric literal, numeric literal, binary, blank, comp, comp1, comp2, comp3, comp4, comp5, date, display, display1, external, function pointer, global, high values, index, justified, leading, low values, national, nulls, object, occurs, packed decimal, picture, pointer, procedure pointer, quotes, sign, spaces, synchronized, through, trailing, usage, value, zeros", - "expecting: number88, number not88, alphanumeric literal, numeric literal, high values, low values, nulls, quotes, spaces, zeros", - "expecting: is, key, data name", - "expecting: by, data name", - "expecting: '.', binary, blank, comp, comp1, comp2, comp3, comp4, comp5, date, display, display1, external, function pointer, global, index, indexed, justified, leading, national, object, occurs, packed decimal, picture, pointer, procedure pointer, sign, synchronized, trailing, usage, value", - "expecting: '.', binary, blank, character, comp, comp1, comp2, comp3, comp4, comp5, date, display, display1, external, function pointer, global, index, justified, leading, national, object, occurs, packed decimal, picture, pointer, procedure pointer, sign, synchronized, trailing, usage, value", - "expecting: '.', ',', number88, number not88, alphanumeric literal, numeric literal, high values, low values, nulls, quotes, spaces, zeros", - "expecting: '.', ',', number88, number not88, alphanumeric literal, numeric literal, high values, low values, nulls, quotes, spaces, through, zeros", - "expecting: depending, times", - "expecting: on, data name", - "expecting: '.', ascending, binary, blank, comp, comp1, comp2, comp3, comp4, comp5, date, depending, descending, display, display1, external, function pointer, global, index, indexed, justified, leading, national, object, occurs, packed decimal, picture, pointer, procedure pointer, sign, synchronized, trailing, usage, value", - "expecting: ')'", - "expecting: '.', through", - "expecting: '.', ascending, binary, blank, comp, comp1, comp2, comp3, comp4, comp5, date, descending, display, display1, external, function pointer, global, index, indexed, justified, leading, national, object, occurs, packed decimal, picture, pointer, procedure pointer, sign, synchronized, trailing, usage, value, data name", - "expecting: '.', binary, blank, comp, comp1, comp2, comp3, comp4, comp5, date, display, display1, external, function pointer, global, index, indexed, justified, leading, national, object, occurs, packed decimal, picture, pointer, procedure pointer, sign, synchronized, trailing, usage, value, data name", - "expecting: depending", - };*/ - private static int[] errors; -/* { - 0, 1, 2, 3, 4, 4, 4, 4, 4, 5, 6, 7, 8, 6, 6, 8, 6, 8, 9, 6, 6, 8, 10, 8, 8, 8, 11, 12, 8, 13, 0, 8, 14, 8, 8, 1, 15, 16, 12, 17, 18, 19, 10, 8, 8, 8, 8, 8, 8, 8, 8, 8, 20, 8, 8, 21, 12, 8, 8, 22, 8, 8, 8, 23, 18, 24, 25, 8, 26, 8, 8, 8, 8, 27, 8, 8, 8, 28, 29, 29, 0, 30, 31, 31, 31, 31, 31, 31, 0, 31, 31, 31, 32, 31, 31, 31, 31, 8, 21, 8, 8, 8, 22, 33, 33, 34, 33, 25, 33, 33, 33, 33, 33, 8, 33, 1, 8, 8, 8, 8, 35, 35, 36, 20, 35, 37, 20, 37, 12, 38, 8, 8, 4, 25, 25, 34, 39, 40, 8, 1, 8, 8, 41, 42, 43, 0, 44, 31, 31, 8, 34, 8, 45, 8, 1, 46, 47, 1, 27, 46, 20, 37, 37, 8, 8, 39, 34, 40, 34, 8, 42, 48, 1, 20, 42, 31, 8, 1, 4, 47, 46, 46, 1, 46, 40, 34, 39, 1, 20, 42, 20, 1, 20, 4, 46, 34, 39, 20, 1, 20, 20, 39, 20, - };*/ +public class Parser { + public final Analysis ignoredTokens = new AnalysisAdapter(); + + protected Node node; + + private final Lexer lexer; + private final ListIterator stack = new LinkedList().listIterator(); + private int last_shift; + private int last_pos; + private int last_line; + private Token last_token; + private final TokenIndex converter = new TokenIndex(); + private final int[] action = new int[2]; + + private final static int SHIFT = 0; + private final static int REDUCE = 1; + private final static int ACCEPT = 2; + private final static int ERROR = 3; + + protected void filter() throws ParserException, LexerException, IOException { + } + + private static int[][][] actionTable; + /* + * { {{-1, ERROR, 0}, {9, SHIFT, 1}, {10, SHIFT, 2}, }, {{-1, ERROR, 1}, + * {74, SHIFT, 9}, }, {{-1, REDUCE, 6}, {17, SHIFT, 10}, {18, SHIFT, 11}, + * {21, SHIFT, 12}, {22, SHIFT, 13}, {23, SHIFT, 14}, {24, SHIFT, 15}, {25, + * SHIFT, 16}, {26, SHIFT, 17}, {27, SHIFT, 18}, {30, SHIFT, 19}, {31, + * SHIFT, 20}, {32, SHIFT, 21}, {33, SHIFT, 22}, {35, SHIFT, 23}, {36, + * SHIFT, 24}, {38, SHIFT, 25}, {41, SHIFT, 26}, {43, SHIFT, 27}, {46, + * SHIFT, 28}, {49, SHIFT, 29}, {50, SHIFT, 30}, {52, SHIFT, 31}, {53, + * SHIFT, 32}, {54, SHIFT, 33}, {55, SHIFT, 34}, {57, SHIFT, 35}, {62, + * SHIFT, 36}, {64, SHIFT, 37}, {68, SHIFT, 38}, {69, SHIFT, 39}, {70, + * SHIFT, 40}, {74, SHIFT, 41}, }, {{-1, ERROR, 3}, {75, ACCEPT, -1}, }, + * {{-1, ERROR, 4}, {0, SHIFT, 63}, }, {{-1, REDUCE, 1}, }, {{-1, REDUCE, + * 3}, }, {{-1, REDUCE, 4}, }, {{-1, REDUCE, 5}, }, {{-1, ERROR, 9}, {70, + * SHIFT, 64}, {71, SHIFT, 65}, }, {{-1, REDUCE, 87}, {47, SHIFT, 67}, }, + * {{-1, ERROR, 11}, {72, SHIFT, 68}, {73, SHIFT, 69}, }, {{-1, REDUCE, 89}, + * }, {{-1, REDUCE, 90}, {47, SHIFT, 70}, }, {{-1, REDUCE, 92}, {47, SHIFT, + * 71}, }, {{-1, REDUCE, 94}, }, {{-1, REDUCE, 95}, {47, SHIFT, 72}, }, + * {{-1, REDUCE, 97}, }, {{-1, ERROR, 18}, {34, SHIFT, 73}, }, {{-1, REDUCE, + * 98}, {47, SHIFT, 74}, }, {{-1, REDUCE, 100}, {47, SHIFT, 75}, }, {{-1, + * REDUCE, 34}, }, {{-1, REDUCE, 15}, }, {{-1, REDUCE, 108}, }, {{-1, + * REDUCE, 35}, }, {{-1, REDUCE, 102}, }, {{-1, REDUCE, 36}, {60, SHIFT, + * 76}, }, {{-1, REDUCE, 75}, }, {{-1, REDUCE, 103}, }, {{-1, ERROR, 29}, + * {58, SHIFT, 77}, }, {{-1, ERROR, 30}, {9, SHIFT, 78}, {10, SHIFT, 79}, }, + * {{-1, REDUCE, 105}, }, {{-1, ERROR, 32}, {1, SHIFT, 82}, {2, SHIFT, 83}, + * {3, SHIFT, 84}, {4, SHIFT, 85}, {5, SHIFT, 86}, {6, SHIFT, 87}, {7, + * SHIFT, 88}, {10, SHIFT, 89}, {12, SHIFT, 90}, {13, SHIFT, 91}, {40, + * SHIFT, 92}, {74, SHIFT, 93}, }, {{-1, REDUCE, 106}, }, {{-1, REDUCE, + * 107}, }, {{-1, ERROR, 35}, {74, SHIFT, 97}, }, {{-1, REDUCE, 73}, {40, + * SHIFT, 98}, }, {{-1, REDUCE, 79}, {44, SHIFT, 99}, {60, SHIFT, 100}, }, + * {{-1, REDUCE, 76}, }, {{-1, REDUCE, 85}, {40, SHIFT, 102}, }, {{-1, + * ERROR, 40}, {9, SHIFT, 78}, {10, SHIFT, 79}, {11, SHIFT, 103}, {12, + * SHIFT, 104}, {14, SHIFT, 105}, {37, SHIFT, 106}, {40, SHIFT, 107}, {45, + * SHIFT, 108}, {48, SHIFT, 109}, {56, SHIFT, 110}, {63, SHIFT, 111}, {73, + * SHIFT, 112}, }, {{-1, REDUCE, 14}, {59, SHIFT, 115}, }, {{-1, REDUCE, 7}, + * {17, SHIFT, 10}, {18, SHIFT, 11}, {21, SHIFT, 12}, {22, SHIFT, 13}, {23, + * SHIFT, 14}, {24, SHIFT, 15}, {25, SHIFT, 16}, {26, SHIFT, 17}, {27, + * SHIFT, 18}, {30, SHIFT, 19}, {31, SHIFT, 20}, {32, SHIFT, 21}, {35, + * SHIFT, 23}, {36, SHIFT, 24}, {38, SHIFT, 25}, {41, SHIFT, 26}, {43, + * SHIFT, 27}, {46, SHIFT, 28}, {49, SHIFT, 29}, {50, SHIFT, 30}, {52, + * SHIFT, 31}, {53, SHIFT, 32}, {54, SHIFT, 33}, {55, SHIFT, 34}, {57, + * SHIFT, 35}, {62, SHIFT, 36}, {64, SHIFT, 37}, {68, SHIFT, 38}, {69, + * SHIFT, 39}, {70, SHIFT, 40}, }, {{-1, REDUCE, 8}, {17, SHIFT, 10}, {18, + * SHIFT, 11}, {21, SHIFT, 12}, {22, SHIFT, 13}, {23, SHIFT, 14}, {24, + * SHIFT, 15}, {25, SHIFT, 16}, {26, SHIFT, 17}, {27, SHIFT, 18}, {30, + * SHIFT, 19}, {31, SHIFT, 20}, {32, SHIFT, 21}, {35, SHIFT, 23}, {36, + * SHIFT, 24}, {38, SHIFT, 25}, {41, SHIFT, 26}, {43, SHIFT, 27}, {46, + * SHIFT, 28}, {49, SHIFT, 29}, {50, SHIFT, 30}, {52, SHIFT, 31}, {53, + * SHIFT, 32}, {54, SHIFT, 33}, {55, SHIFT, 34}, {62, SHIFT, 36}, {64, + * SHIFT, 37}, {68, SHIFT, 38}, {69, SHIFT, 39}, {70, SHIFT, 40}, }, {{-1, + * REDUCE, 10}, {17, SHIFT, 10}, {18, SHIFT, 11}, {21, SHIFT, 12}, {22, + * SHIFT, 13}, {23, SHIFT, 14}, {24, SHIFT, 15}, {25, SHIFT, 16}, {26, + * SHIFT, 17}, {27, SHIFT, 18}, {30, SHIFT, 19}, {31, SHIFT, 20}, {32, + * SHIFT, 21}, {35, SHIFT, 23}, {36, SHIFT, 24}, {38, SHIFT, 25}, {41, + * SHIFT, 26}, {43, SHIFT, 27}, {46, SHIFT, 28}, {49, SHIFT, 29}, {50, + * SHIFT, 30}, {52, SHIFT, 31}, {53, SHIFT, 32}, {54, SHIFT, 33}, {55, + * SHIFT, 34}, {62, SHIFT, 36}, {64, SHIFT, 37}, {68, SHIFT, 38}, {69, + * SHIFT, 39}, {70, SHIFT, 40}, }, {{-1, REDUCE, 17}, }, {{-1, REDUCE, 19}, + * }, {{-1, REDUCE, 20}, }, {{-1, REDUCE, 21}, }, {{-1, REDUCE, 22}, }, + * {{-1, REDUCE, 23}, }, {{-1, REDUCE, 24}, }, {{-1, REDUCE, 38}, {16, + * SHIFT, 120}, {29, SHIFT, 121}, {39, SHIFT, 122}, }, {{-1, REDUCE, 25}, }, + * {{-1, REDUCE, 26}, }, {{-1, ERROR, 55}, {43, SHIFT, 27}, {68, SHIFT, 38}, + * }, {{-1, REDUCE, 69}, {61, SHIFT, 129}, }, {{-1, REDUCE, 27}, }, {{-1, + * REDUCE, 28}, }, {{-1, ERROR, 59}, {17, SHIFT, 10}, {21, SHIFT, 12}, {22, + * SHIFT, 13}, {23, SHIFT, 14}, {24, SHIFT, 15}, {25, SHIFT, 16}, {26, + * SHIFT, 17}, {30, SHIFT, 19}, {31, SHIFT, 20}, {35, SHIFT, 23}, {38, + * SHIFT, 25}, {46, SHIFT, 28}, {49, SHIFT, 29}, {52, SHIFT, 31}, {54, + * SHIFT, 33}, {55, SHIFT, 34}, }, {{-1, REDUCE, 83}, }, {{-1, REDUCE, 104}, + * }, {{-1, REDUCE, 29}, }, {{-1, REDUCE, 0}, {9, SHIFT, 1}, {10, SHIFT, 2}, + * }, {{-1, REDUCE, 119}, {40, SHIFT, 133}, }, {{-1, REDUCE, 121}, {15, + * SHIFT, 134}, }, {{-1, ERROR, 66}, {9, SHIFT, 78}, {10, SHIFT, 79}, {11, + * SHIFT, 103}, {12, SHIFT, 104}, {14, SHIFT, 135}, {37, SHIFT, 106}, {45, + * SHIFT, 108}, {48, SHIFT, 109}, {56, SHIFT, 110}, {63, SHIFT, 111}, {73, + * SHIFT, 112}, }, {{-1, REDUCE, 88}, }, {{-1, ERROR, 68}, {73, SHIFT, 138}, + * }, {{-1, REDUCE, 30}, }, {{-1, REDUCE, 91}, }, {{-1, REDUCE, 93}, }, + * {{-1, REDUCE, 96}, }, {{-1, ERROR, 73}, {40, SHIFT, 139}, {74, SHIFT, + * 140}, }, {{-1, REDUCE, 99}, }, {{-1, REDUCE, 101}, }, {{-1, REDUCE, 37}, + * }, {{-1, REDUCE, 109}, {74, SHIFT, 141}, }, {{-1, REDUCE, 154}, }, {{-1, + * REDUCE, 153}, }, {{-1, ERROR, 80}, {9, SHIFT, 78}, {10, SHIFT, 79}, }, + * {{-1, REDUCE, 46}, {28, SHIFT, 143}, {66, SHIFT, 144}, {67, SHIFT, 145}, + * }, {{-1, REDUCE, 147}, }, {{-1, REDUCE, 145}, }, {{-1, REDUCE, 142}, }, + * {{-1, REDUCE, 143}, }, {{-1, REDUCE, 144}, }, {{-1, REDUCE, 146}, }, + * {{-1, ERROR, 88}, {9, SHIFT, 78}, {10, SHIFT, 79}, }, {{-1, REDUCE, 148}, + * }, {{-1, REDUCE, 149}, }, {{-1, REDUCE, 151}, }, {{-1, ERROR, 92}, {1, + * SHIFT, 82}, {2, SHIFT, 83}, {3, SHIFT, 84}, {4, SHIFT, 85}, {5, SHIFT, + * 86}, {6, SHIFT, 87}, {7, SHIFT, 88}, {10, SHIFT, 89}, {12, SHIFT, 90}, + * {13, SHIFT, 91}, {74, SHIFT, 93}, }, {{-1, REDUCE, 141}, }, {{-1, REDUCE, + * 67}, {1, SHIFT, 82}, {2, SHIFT, 83}, {3, SHIFT, 84}, {4, SHIFT, 85}, {5, + * SHIFT, 86}, {6, SHIFT, 87}, {7, SHIFT, 88}, {10, SHIFT, 89}, {12, SHIFT, + * 90}, {13, SHIFT, 91}, {74, SHIFT, 93}, }, {{-1, REDUCE, 139}, }, {{-1, + * REDUCE, 150}, }, {{-1, REDUCE, 16}, }, {{-1, REDUCE, 74}, }, {{-1, + * REDUCE, 81}, }, {{-1, REDUCE, 82}, }, {{-1, REDUCE, 80}, }, {{-1, REDUCE, + * 86}, }, {{-1, REDUCE, 138}, }, {{-1, REDUCE, 137}, }, {{-1, ERROR, 105}, + * {9, SHIFT, 78}, {10, SHIFT, 79}, {11, SHIFT, 103}, {12, SHIFT, 104}, {37, + * SHIFT, 106}, {45, SHIFT, 108}, {48, SHIFT, 109}, {56, SHIFT, 110}, {63, + * SHIFT, 111}, {73, SHIFT, 112}, }, {{-1, REDUCE, 132}, }, {{-1, ERROR, + * 107}, {9, SHIFT, 78}, {10, SHIFT, 79}, {11, SHIFT, 103}, {12, SHIFT, + * 104}, {14, SHIFT, 150}, {37, SHIFT, 106}, {45, SHIFT, 108}, {48, SHIFT, + * 109}, {56, SHIFT, 110}, {63, SHIFT, 111}, {73, SHIFT, 112}, }, {{-1, + * REDUCE, 133}, }, {{-1, REDUCE, 135}, }, {{-1, REDUCE, 134}, }, {{-1, + * REDUCE, 131}, }, {{-1, REDUCE, 130}, }, {{-1, REDUCE, 114}, }, {{-1, + * REDUCE, 136}, }, {{-1, ERROR, 115}, {74, SHIFT, 152}, }, {{-1, REDUCE, + * 9}, {17, SHIFT, 10}, {18, SHIFT, 11}, {21, SHIFT, 12}, {22, SHIFT, 13}, + * {23, SHIFT, 14}, {24, SHIFT, 15}, {25, SHIFT, 16}, {26, SHIFT, 17}, {27, + * SHIFT, 18}, {30, SHIFT, 19}, {31, SHIFT, 20}, {32, SHIFT, 21}, {35, + * SHIFT, 23}, {36, SHIFT, 24}, {38, SHIFT, 25}, {41, SHIFT, 26}, {43, + * SHIFT, 27}, {46, SHIFT, 28}, {49, SHIFT, 29}, {50, SHIFT, 30}, {52, + * SHIFT, 31}, {53, SHIFT, 32}, {54, SHIFT, 33}, {55, SHIFT, 34}, {62, + * SHIFT, 36}, {64, SHIFT, 37}, {68, SHIFT, 38}, {69, SHIFT, 39}, {70, + * SHIFT, 40}, }, {{-1, REDUCE, 11}, {17, SHIFT, 10}, {18, SHIFT, 11}, {21, + * SHIFT, 12}, {22, SHIFT, 13}, {23, SHIFT, 14}, {24, SHIFT, 15}, {25, + * SHIFT, 16}, {26, SHIFT, 17}, {27, SHIFT, 18}, {30, SHIFT, 19}, {31, + * SHIFT, 20}, {32, SHIFT, 21}, {35, SHIFT, 23}, {36, SHIFT, 24}, {38, + * SHIFT, 25}, {41, SHIFT, 26}, {43, SHIFT, 27}, {46, SHIFT, 28}, {49, + * SHIFT, 29}, {50, SHIFT, 30}, {52, SHIFT, 31}, {53, SHIFT, 32}, {54, + * SHIFT, 33}, {55, SHIFT, 34}, {62, SHIFT, 36}, {64, SHIFT, 37}, {68, + * SHIFT, 38}, {69, SHIFT, 39}, {70, SHIFT, 40}, }, {{-1, REDUCE, 12}, {17, + * SHIFT, 10}, {18, SHIFT, 11}, {21, SHIFT, 12}, {22, SHIFT, 13}, {23, + * SHIFT, 14}, {24, SHIFT, 15}, {25, SHIFT, 16}, {26, SHIFT, 17}, {27, + * SHIFT, 18}, {30, SHIFT, 19}, {31, SHIFT, 20}, {32, SHIFT, 21}, {35, + * SHIFT, 23}, {36, SHIFT, 24}, {38, SHIFT, 25}, {41, SHIFT, 26}, {43, + * SHIFT, 27}, {46, SHIFT, 28}, {49, SHIFT, 29}, {50, SHIFT, 30}, {52, + * SHIFT, 31}, {53, SHIFT, 32}, {54, SHIFT, 33}, {55, SHIFT, 34}, {62, + * SHIFT, 36}, {64, SHIFT, 37}, {68, SHIFT, 38}, {69, SHIFT, 39}, {70, + * SHIFT, 40}, }, {{-1, REDUCE, 18}, }, {{-1, REDUCE, 63}, }, {{-1, REDUCE, + * 64}, }, {{-1, ERROR, 122}, {19, SHIFT, 154}, {74, SHIFT, 155}, }, {{-1, + * REDUCE, 41}, }, {{-1, ERROR, 124}, {40, SHIFT, 157}, {42, SHIFT, 158}, + * {74, SHIFT, 155}, }, {{-1, REDUCE, 44}, }, {{-1, REDUCE, 39}, {16, SHIFT, + * 120}, {29, SHIFT, 121}, {39, SHIFT, 122}, }, {{-1, REDUCE, 42}, {39, + * SHIFT, 122}, }, {{-1, REDUCE, 70}, {61, SHIFT, 129}, }, {{-1, REDUCE, + * 77}, {20, SHIFT, 164}, }, {{-1, REDUCE, 71}, }, {{-1, REDUCE, 84}, }, + * {{-1, REDUCE, 2}, }, {{-1, REDUCE, 120}, }, {{-1, REDUCE, 122}, }, {{-1, + * ERROR, 135}, {9, SHIFT, 78}, {10, SHIFT, 79}, {11, SHIFT, 103}, {12, + * SHIFT, 104}, {37, SHIFT, 106}, {45, SHIFT, 108}, {48, SHIFT, 109}, {56, + * SHIFT, 110}, {63, SHIFT, 111}, {73, SHIFT, 112}, }, {{-1, REDUCE, 118}, + * {1, SHIFT, 166}, {9, SHIFT, 78}, {10, SHIFT, 79}, {11, SHIFT, 103}, {12, + * SHIFT, 104}, {37, SHIFT, 106}, {45, SHIFT, 108}, {48, SHIFT, 109}, {56, + * SHIFT, 110}, {63, SHIFT, 111}, {73, SHIFT, 112}, }, {{-1, REDUCE, 123}, + * {65, SHIFT, 168}, }, {{-1, REDUCE, 31}, }, {{-1, ERROR, 139}, {74, SHIFT, + * 169}, }, {{-1, REDUCE, 32}, }, {{-1, REDUCE, 110}, }, {{-1, ERROR, 142}, + * {28, SHIFT, 170}, {66, SHIFT, 171}, }, {{-1, ERROR, 143}, {51, SHIFT, + * 172}, {74, SHIFT, 173}, }, {{-1, REDUCE, 47}, {28, SHIFT, 174}, }, {{-1, + * REDUCE, 56}, }, {{-1, ERROR, 146}, {8, SHIFT, 175}, }, {{-1, REDUCE, 68}, + * {1, SHIFT, 82}, {2, SHIFT, 83}, {3, SHIFT, 84}, {4, SHIFT, 85}, {5, + * SHIFT, 86}, {6, SHIFT, 87}, {7, SHIFT, 88}, {10, SHIFT, 89}, {12, SHIFT, + * 90}, {13, SHIFT, 91}, {74, SHIFT, 93}, }, {{-1, REDUCE, 140}, }, {{-1, + * REDUCE, 116}, }, {{-1, ERROR, 150}, {9, SHIFT, 78}, {10, SHIFT, 79}, {11, + * SHIFT, 103}, {12, SHIFT, 104}, {37, SHIFT, 106}, {45, SHIFT, 108}, {48, + * SHIFT, 109}, {56, SHIFT, 110}, {63, SHIFT, 111}, {73, SHIFT, 112}, }, + * {{-1, REDUCE, 115}, }, {{-1, REDUCE, 111}, {65, SHIFT, 177}, }, {{-1, + * REDUCE, 13}, {17, SHIFT, 10}, {18, SHIFT, 11}, {21, SHIFT, 12}, {22, + * SHIFT, 13}, {23, SHIFT, 14}, {24, SHIFT, 15}, {25, SHIFT, 16}, {26, + * SHIFT, 17}, {27, SHIFT, 18}, {30, SHIFT, 19}, {31, SHIFT, 20}, {32, + * SHIFT, 21}, {35, SHIFT, 23}, {36, SHIFT, 24}, {38, SHIFT, 25}, {41, + * SHIFT, 26}, {43, SHIFT, 27}, {46, SHIFT, 28}, {49, SHIFT, 29}, {50, + * SHIFT, 30}, {52, SHIFT, 31}, {53, SHIFT, 32}, {54, SHIFT, 33}, {55, + * SHIFT, 34}, {62, SHIFT, 36}, {64, SHIFT, 37}, {68, SHIFT, 38}, {69, + * SHIFT, 39}, {70, SHIFT, 40}, }, {{-1, ERROR, 154}, {74, SHIFT, 155}, }, + * {{-1, REDUCE, 59}, }, {{-1, REDUCE, 65}, {74, SHIFT, 180}, }, {{-1, + * ERROR, 157}, {74, SHIFT, 155}, }, {{-1, ERROR, 158}, {40, SHIFT, 182}, + * {74, SHIFT, 155}, }, {{-1, REDUCE, 57}, {74, SHIFT, 180}, }, {{-1, + * REDUCE, 40}, }, {{-1, REDUCE, 45}, {39, SHIFT, 122}, }, {{-1, REDUCE, + * 43}, }, {{-1, REDUCE, 72}, }, {{-1, REDUCE, 78}, }, {{-1, REDUCE, 124}, + * }, {{-1, ERROR, 166}, {9, SHIFT, 78}, {10, SHIFT, 79}, {11, SHIFT, 103}, + * {12, SHIFT, 104}, {37, SHIFT, 106}, {45, SHIFT, 108}, {48, SHIFT, 109}, + * {56, SHIFT, 110}, {63, SHIFT, 111}, {73, SHIFT, 112}, }, {{-1, REDUCE, + * 125}, {65, SHIFT, 185}, }, {{-1, ERROR, 168}, {9, SHIFT, 78}, {10, SHIFT, + * 79}, {11, SHIFT, 103}, {12, SHIFT, 104}, {37, SHIFT, 106}, {45, SHIFT, + * 108}, {48, SHIFT, 109}, {56, SHIFT, 110}, {63, SHIFT, 111}, {73, SHIFT, + * 112}, }, {{-1, REDUCE, 33}, }, {{-1, ERROR, 170}, {51, SHIFT, 187}, {74, + * SHIFT, 188}, }, {{-1, ERROR, 171}, {28, SHIFT, 189}, }, {{-1, ERROR, + * 172}, {74, SHIFT, 190}, }, {{-1, REDUCE, 48}, }, {{-1, ERROR, 174}, {51, + * SHIFT, 191}, {74, SHIFT, 192}, }, {{-1, REDUCE, 152}, }, {{-1, REDUCE, + * 117}, }, {{-1, ERROR, 177}, {74, SHIFT, 193}, }, {{-1, REDUCE, 112}, }, + * {{-1, REDUCE, 66}, {74, SHIFT, 180}, }, {{-1, REDUCE, 58}, }, {{-1, + * REDUCE, 61}, {74, SHIFT, 180}, }, {{-1, ERROR, 182}, {74, SHIFT, 155}, }, + * {{-1, REDUCE, 60}, {74, SHIFT, 180}, }, {{-1, REDUCE, 126}, {65, SHIFT, + * 195}, }, {{-1, ERROR, 185}, {9, SHIFT, 78}, {10, SHIFT, 79}, {11, SHIFT, + * 103}, {12, SHIFT, 104}, {37, SHIFT, 106}, {45, SHIFT, 108}, {48, SHIFT, + * 109}, {56, SHIFT, 110}, {63, SHIFT, 111}, {73, SHIFT, 112}, }, {{-1, + * REDUCE, 127}, }, {{-1, ERROR, 187}, {74, SHIFT, 197}, }, {{-1, REDUCE, + * 49}, }, {{-1, ERROR, 189}, {51, SHIFT, 198}, {74, SHIFT, 199}, }, {{-1, + * REDUCE, 52}, }, {{-1, ERROR, 191}, {74, SHIFT, 200}, }, {{-1, REDUCE, + * 50}, }, {{-1, REDUCE, 113}, }, {{-1, REDUCE, 62}, {74, SHIFT, 180}, }, + * {{-1, ERROR, 195}, {9, SHIFT, 78}, {10, SHIFT, 79}, {11, SHIFT, 103}, + * {12, SHIFT, 104}, {37, SHIFT, 106}, {45, SHIFT, 108}, {48, SHIFT, 109}, + * {56, SHIFT, 110}, {63, SHIFT, 111}, {73, SHIFT, 112}, }, {{-1, REDUCE, + * 128}, }, {{-1, REDUCE, 53}, }, {{-1, ERROR, 198}, {74, SHIFT, 202}, }, + * {{-1, REDUCE, 51}, }, {{-1, REDUCE, 54}, }, {{-1, REDUCE, 129}, }, {{-1, + * REDUCE, 55}, }, }; + */ + private static int[][][] gotoTable; + /* + * { {{-1, 3}, }, {{-1, 4}, }, {{-1, 5}, {63, 132}, }, {{-1, 6}, }, {{-1, + * 42}, }, {{-1, 43}, {42, 116}, }, {{-1, 44}, {42, 117}, {43, 118}, {116, + * 153}, }, {{-1, 45}, {44, 119}, {117, 119}, {118, 119}, {153, 119}, }, + * {{-1, 46}, }, {{-1, 47}, }, {{-1, 48}, }, {{-1, 49}, }, {{-1, 50}, }, + * {{-1, 51}, }, {{-1, 52}, }, {{-1, 80}, }, {{-1, 123}, {126, 160}, }, + * {{-1, 124}, }, {{-1, 125}, {127, 162}, {161, 162}, }, {{-1, 53}, }, {{-1, + * 54}, }, {{-1, 55}, }, {{-1, 56}, {55, 128}, }, {{-1, 130}, {128, 163}, }, + * {{-1, 57}, }, {{-1, 101}, }, {{-1, 58}, }, {{-1, 59}, }, {{-1, 60}, {59, + * 131}, }, {{-1, 61}, }, {{-1, 7}, }, {{-1, 178}, }, {{-1, 62}, }, {{-1, + * 8}, }, {{-1, 66}, }, {{-1, 136}, }, {{-1, 113}, {66, 137}, {105, 149}, + * {107, 151}, {135, 165}, {136, 167}, {150, 176}, {166, 184}, {168, 186}, + * {185, 196}, {195, 201}, }, {{-1, 94}, {92, 147}, }, {{-1, 95}, {94, 148}, + * {147, 148}, }, {{-1, 96}, }, {{-1, 114}, {30, 81}, {80, 142}, {88, 146}, + * }, {{-1, 126}, }, {{-1, 127}, {126, 161}, }, {{-1, 156}, {124, 159}, + * {154, 179}, {157, 181}, {158, 183}, {182, 194}, }, }; + */ + private static String[] errorMessages; + /* + * { "expecting: number88, number not88", "expecting: data name", + * "expecting: '.', binary, blank, comp, comp1, comp2, comp3, comp4, comp5, date, display, display1, external, filler, function pointer, global, index, justified, leading, national, object, occurs, packed decimal, picture, pointer, procedure pointer, redefines, sign, synchronized, trailing, usage, value, data name" + * , "expecting: EOF", "expecting: '.'", "expecting: value, values", + * "expecting: '.', binary, blank, comp, comp1, comp2, comp3, comp4, comp5, date, display, display1, external, function pointer, global, index, justified, leading, national, native, object, occurs, packed decimal, picture, pointer, procedure pointer, sign, synchronized, trailing, usage, value" + * , "expecting: when, zeros", + * "expecting: '.', binary, blank, comp, comp1, comp2, comp3, comp4, comp5, date, display, display1, external, function pointer, global, index, justified, leading, national, object, occurs, packed decimal, picture, pointer, procedure pointer, sign, synchronized, trailing, usage, value" + * , "expecting: format", + * "expecting: '.', binary, blank, comp, comp1, comp2, comp3, comp4, comp5, date, display, display1, external, function pointer, global, index, justified, leading, national, object, occurs, packed decimal, picture, pointer, procedure pointer, redefines, sign, synchronized, trailing, usage, value" + * , + * "expecting: '.', binary, blank, comp, comp1, comp2, comp3, comp4, comp5, date, display, display1, external, function pointer, global, index, justified, leading, national, object, occurs, packed decimal, picture, pointer, procedure pointer, right, sign, synchronized, trailing, usage, value" + * , + * "expecting: '.', binary, blank, comp, comp1, comp2, comp3, comp4, comp5, date, display, display1, external, function pointer, global, index, justified, leading, national, object, occurs, packed decimal, picture, pointer, procedure pointer, separate, sign, synchronized, trailing, usage, value" + * , "expecting: reference", + * "expecting: ',', '/', '+', '-', '*', '$', '(', number not88, numeric literal, dot zee, is, data name" + * , "expecting: is, leading, trailing", + * "expecting: '.', binary, blank, comp, comp1, comp2, comp3, comp4, comp5, date, display, display1, external, function pointer, global, index, justified, leading, left, national, object, occurs, packed decimal, picture, pointer, procedure pointer, right, sign, synchronized, trailing, usage, value" + * , + * "expecting: binary, comp, comp1, comp2, comp3, comp4, comp5, display, display1, function pointer, index, is, national, object, packed decimal, pointer, procedure pointer" + * , + * "expecting: number88, number not88, alphanumeric literal, numeric literal, all, high values, is, low values, nulls, quotes, spaces, zeros" + * , + * "expecting: '.', binary, blank, comp, comp1, comp2, comp3, comp4, comp5, date, display, display1, external, function pointer, global, index, justified, leading, national, object, occurs, packed decimal, picture, pointer, procedure pointer, redefines, renames, sign, synchronized, trailing, usage, value" + * , + * "expecting: '.', ascending, binary, blank, comp, comp1, comp2, comp3, comp4, comp5, date, descending, display, display1, external, function pointer, global, index, indexed, justified, leading, national, object, occurs, packed decimal, picture, pointer, procedure pointer, sign, synchronized, trailing, usage, value" + * , "expecting: leading, trailing", + * "expecting: binary, comp, comp1, comp2, comp3, comp4, comp5, display, display1, function pointer, index, national, object, packed decimal, pointer, procedure pointer" + * , "expecting: number88, number not88, EOF", + * "expecting: number88, number not88, alphanumeric literal, numeric literal, all, are, high values, low values, nulls, quotes, spaces, zeros" + * , + * "expecting: number88, number not88, alphanumeric literal, numeric literal, all, high values, low values, nulls, quotes, spaces, zeros" + * , "expecting: zeros", "expecting: is, data name", + * "expecting: '.', binary, blank, comp, comp1, comp2, comp3, comp4, comp5, date, display, display1, external, function pointer, global, index, justified, leading, national, object, occurs, packed decimal, picture, pointer, procedure pointer, sign, synchronized, trailing, usage, value, data name" + * , + * "expecting: '.', ',', ')', number88, number not88, alphanumeric literal, numeric literal, ascending, binary, blank, comp, comp1, comp2, comp3, comp4, comp5, date, depending, descending, display, display1, external, function pointer, global, high values, index, indexed, justified, leading, low values, national, nulls, object, occurs, packed decimal, picture, pointer, procedure pointer, quotes, sign, spaces, synchronized, through, times, to, trailing, usage, value, zeros" + * , + * "expecting: '.', ascending, binary, blank, comp, comp1, comp2, comp3, comp4, comp5, date, depending, descending, display, display1, external, function pointer, global, index, indexed, justified, leading, national, object, occurs, packed decimal, picture, pointer, procedure pointer, sign, synchronized, times, to, trailing, usage, value" + * , + * "expecting: '.', ',', '/', '+', '-', '*', '$', '(', number not88, numeric literal, dot zee, binary, blank, comp, comp1, comp2, comp3, comp4, comp5, date, display, display1, external, function pointer, global, index, justified, leading, national, object, occurs, packed decimal, picture, pointer, procedure pointer, sign, synchronized, trailing, usage, value, data name" + * , + * "expecting: ',', '/', '+', '-', '*', '$', '(', number not88, numeric literal, dot zee, data name" + * , + * "expecting: '.', ',', number88, number not88, alphanumeric literal, numeric literal, binary, blank, comp, comp1, comp2, comp3, comp4, comp5, date, display, display1, external, function pointer, global, high values, index, justified, leading, low values, national, nulls, object, occurs, packed decimal, picture, pointer, procedure pointer, quotes, sign, spaces, synchronized, through, trailing, usage, value, zeros" + * , + * "expecting: number88, number not88, alphanumeric literal, numeric literal, high values, low values, nulls, quotes, spaces, zeros" + * , "expecting: is, key, data name", "expecting: by, data name", + * "expecting: '.', binary, blank, comp, comp1, comp2, comp3, comp4, comp5, date, display, display1, external, function pointer, global, index, indexed, justified, leading, national, object, occurs, packed decimal, picture, pointer, procedure pointer, sign, synchronized, trailing, usage, value" + * , + * "expecting: '.', binary, blank, character, comp, comp1, comp2, comp3, comp4, comp5, date, display, display1, external, function pointer, global, index, justified, leading, national, object, occurs, packed decimal, picture, pointer, procedure pointer, sign, synchronized, trailing, usage, value" + * , + * "expecting: '.', ',', number88, number not88, alphanumeric literal, numeric literal, high values, low values, nulls, quotes, spaces, zeros" + * , + * "expecting: '.', ',', number88, number not88, alphanumeric literal, numeric literal, high values, low values, nulls, quotes, spaces, through, zeros" + * , "expecting: depending, times", "expecting: on, data name", + * "expecting: '.', ascending, binary, blank, comp, comp1, comp2, comp3, comp4, comp5, date, depending, descending, display, display1, external, function pointer, global, index, indexed, justified, leading, national, object, occurs, packed decimal, picture, pointer, procedure pointer, sign, synchronized, trailing, usage, value" + * , "expecting: ')'", "expecting: '.', through", + * "expecting: '.', ascending, binary, blank, comp, comp1, comp2, comp3, comp4, comp5, date, descending, display, display1, external, function pointer, global, index, indexed, justified, leading, national, object, occurs, packed decimal, picture, pointer, procedure pointer, sign, synchronized, trailing, usage, value, data name" + * , + * "expecting: '.', binary, blank, comp, comp1, comp2, comp3, comp4, comp5, date, display, display1, external, function pointer, global, index, indexed, justified, leading, national, object, occurs, packed decimal, picture, pointer, procedure pointer, sign, synchronized, trailing, usage, value, data name" + * , "expecting: depending", }; + */ + private static int[] errors; + /* + * { 0, 1, 2, 3, 4, 4, 4, 4, 4, 5, 6, 7, 8, 6, 6, 8, 6, 8, 9, 6, 6, 8, 10, + * 8, 8, 8, 11, 12, 8, 13, 0, 8, 14, 8, 8, 1, 15, 16, 12, 17, 18, 19, 10, 8, + * 8, 8, 8, 8, 8, 8, 8, 8, 20, 8, 8, 21, 12, 8, 8, 22, 8, 8, 8, 23, 18, 24, + * 25, 8, 26, 8, 8, 8, 8, 27, 8, 8, 8, 28, 29, 29, 0, 30, 31, 31, 31, 31, + * 31, 31, 0, 31, 31, 31, 32, 31, 31, 31, 31, 8, 21, 8, 8, 8, 22, 33, 33, + * 34, 33, 25, 33, 33, 33, 33, 33, 8, 33, 1, 8, 8, 8, 8, 35, 35, 36, 20, 35, + * 37, 20, 37, 12, 38, 8, 8, 4, 25, 25, 34, 39, 40, 8, 1, 8, 8, 41, 42, 43, + * 0, 44, 31, 31, 8, 34, 8, 45, 8, 1, 46, 47, 1, 27, 46, 20, 37, 37, 8, 8, + * 39, 34, 40, 34, 8, 42, 48, 1, 20, 42, 31, 8, 1, 4, 47, 46, 46, 1, 46, 40, + * 34, 39, 1, 20, 42, 20, 1, 20, 4, 46, 34, 39, 20, 1, 20, 20, 39, 20, }; + */ + + static { + + try { + DataInputStream s = new DataInputStream(new BufferedInputStream( + Parser.class.getClassLoader().getResourceAsStream( + "net/sf/cb2xml/sablecc/parser/parser.dat"))); + + // read actionTable + int length = s.readInt(); + actionTable = new int[length][][]; + for (int i = 0; i < actionTable.length; i++) { + length = s.readInt(); + actionTable[i] = new int[length][3]; + for (int j = 0; j < actionTable[i].length; j++) { + for (int k = 0; k < 3; k++) { + actionTable[i][j][k] = s.readInt(); + } + } + } + + // read gotoTable + length = s.readInt(); + gotoTable = new int[length][][]; + for (int i = 0; i < gotoTable.length; i++) { + length = s.readInt(); + gotoTable[i] = new int[length][2]; + for (int j = 0; j < gotoTable[i].length; j++) { + for (int k = 0; k < 2; k++) { + gotoTable[i][j][k] = s.readInt(); + } + } + } + + // read errorMessages + length = s.readInt(); + errorMessages = new String[length]; + for (int i = 0; i < errorMessages.length; i++) { + length = s.readInt(); + StringBuffer buffer = new StringBuffer(); + + for (int j = 0; j < length; j++) { + buffer.append(s.readChar()); + } + errorMessages[i] = buffer.toString(); + } + + // read errors + length = s.readInt(); + errors = new int[length]; + for (int i = 0; i < errors.length; i++) { + errors[i] = s.readInt(); + } + + s.close(); + } catch (Exception e) { + throw new RuntimeException( + "The file \"parser.dat\" is either missing or corrupted."); + } + } + + public Parser(Lexer lexer) { + this.lexer = lexer; + + if (actionTable == null) { + throw new RuntimeException( + "The file \"parser.dat\" is either missing or corrupted."); + } + } + + private int goTo(int index) { + int state = state(); + int low = 1; + int high = gotoTable[index].length - 1; + int value = gotoTable[index][0][1]; + + while (low <= high) { + int middle = (low + high) / 2; + + if (state < gotoTable[index][middle][0]) { + high = middle - 1; + } else if (state > gotoTable[index][middle][0]) { + low = middle + 1; + } else { + value = gotoTable[index][middle][1]; + break; + } + } + + return value; + } + + private void push(int state, Node node, boolean filter) + throws ParserException, LexerException, IOException { + this.node = node; + + if (filter) { + filter(); + } + + if (!stack.hasNext()) { + stack.add(new State(state, this.node)); + return; + } + + State s = (State) stack.next(); + s.state = state; + s.node = this.node; + } + + private int state() { + State s = (State) stack.previous(); + stack.next(); + return s.state; + } + + private Node pop() { + return (Node) ((State) stack.previous()).node; + } + + private int index(Switchable token) { + converter.index = -1; + token.apply(converter); + return converter.index; + } + + public Start parse() throws ParserException, LexerException, IOException { + push(0, null, false); + + List ign = null; + while (true) { + while (index(lexer.peek()) == -1) { + if (ign == null) { + ign = new TypedLinkedList(NodeCast.instance); + } + + ign.add(lexer.next()); + } + + if (ign != null) { + ignoredTokens.setIn(lexer.peek(), ign); + ign = null; + } + + last_pos = lexer.peek().getPos(); + last_line = lexer.peek().getLine(); + last_token = lexer.peek(); + + int index = index(lexer.peek()); + action[0] = actionTable[state()][0][1]; + action[1] = actionTable[state()][0][2]; + + int low = 1; + int high = actionTable[state()].length - 1; + + while (low <= high) { + int middle = (low + high) / 2; + + if (index < actionTable[state()][middle][0]) { + high = middle - 1; + } else if (index > actionTable[state()][middle][0]) { + low = middle + 1; + } else { + action[0] = actionTable[state()][middle][1]; + action[1] = actionTable[state()][middle][2]; + break; + } + } + + switch (action[0]) { + case SHIFT: + push(action[1], lexer.next(), true); + last_shift = action[1]; + break; + case REDUCE: + switch (action[1]) { + case 0: { + Node node = new0(); + push(goTo(0), node, true); + } + break; + case 1: { + Node node = new1(); + push(goTo(1), node, true); + } + break; + case 2: { + Node node = new2(); + push(goTo(1), node, true); + } + break; + case 3: { + Node node = new3(); + push(goTo(2), node, true); + } + break; + case 4: { + Node node = new4(); + push(goTo(2), node, true); + } + break; + case 5: { + Node node = new5(); + push(goTo(2), node, true); + } + break; + case 6: { + Node node = new6(); + push(goTo(3), node, true); + } + break; + case 7: { + Node node = new7(); + push(goTo(3), node, true); + } + break; + case 8: { + Node node = new8(); + push(goTo(3), node, true); + } + break; + case 9: { + Node node = new9(); + push(goTo(3), node, true); + } + break; + case 10: { + Node node = new10(); + push(goTo(3), node, true); + } + break; + case 11: { + Node node = new11(); + push(goTo(3), node, true); + } + break; + case 12: { + Node node = new12(); + push(goTo(3), node, true); + } + break; + case 13: { + Node node = new13(); + push(goTo(3), node, true); + } + break; + case 14: { + Node node = new14(); + push(goTo(4), node, true); + } + break; + case 15: { + Node node = new15(); + push(goTo(4), node, true); + } + break; + case 16: { + Node node = new16(); + push(goTo(5), node, true); + } + break; + case 17: { + Node node = new17(); + push(goTo(6), node, true); + } + break; + case 18: { + Node node = new18(); + push(goTo(6), node, true); + } + break; + case 19: { + Node node = new19(); + push(goTo(7), node, true); + } + break; + case 20: { + Node node = new20(); + push(goTo(7), node, true); + } + break; + case 21: { + Node node = new21(); + push(goTo(7), node, true); + } + break; + case 22: { + Node node = new22(); + push(goTo(7), node, true); + } + break; + case 23: { + Node node = new23(); + push(goTo(7), node, true); + } + break; + case 24: { + Node node = new24(); + push(goTo(7), node, true); + } + break; + case 25: { + Node node = new25(); + push(goTo(7), node, true); + } + break; + case 26: { + Node node = new26(); + push(goTo(7), node, true); + } + break; + case 27: { + Node node = new27(); + push(goTo(7), node, true); + } + break; + case 28: { + Node node = new28(); + push(goTo(7), node, true); + } + break; + case 29: { + Node node = new29(); + push(goTo(7), node, true); + } + break; + case 30: { + Node node = new30(); + push(goTo(8), node, true); + } + break; + case 31: { + Node node = new31(); + push(goTo(8), node, true); + } + break; + case 32: { + Node node = new32(); + push(goTo(9), node, true); + } + break; + case 33: { + Node node = new33(); + push(goTo(9), node, true); + } + break; + case 34: { + Node node = new34(); + push(goTo(10), node, true); + } + break; + case 35: { + Node node = new35(); + push(goTo(11), node, true); + } + break; + case 36: { + Node node = new36(); + push(goTo(12), node, true); + } + break; + case 37: { + Node node = new37(); + push(goTo(12), node, true); + } + break; + case 38: { + Node node = new38(); + push(goTo(13), node, true); + } + break; + case 39: { + Node node = new39(); + push(goTo(13), node, true); + } + break; + case 40: { + Node node = new40(); + push(goTo(41), node, false); + } + break; + case 41: { + Node node = new41(); + push(goTo(41), node, false); + } + break; + case 42: { + Node node = new42(); + push(goTo(13), node, true); + } + break; + case 43: { + Node node = new43(); + push(goTo(42), node, false); + } + break; + case 44: { + Node node = new44(); + push(goTo(42), node, false); + } + break; + case 45: { + Node node = new45(); + push(goTo(13), node, true); + } + break; + case 46: { + Node node = new46(); + push(goTo(14), node, true); + } + break; + case 47: { + Node node = new47(); + push(goTo(14), node, true); + } + break; + case 48: { + Node node = new48(); + push(goTo(14), node, true); + } + break; + case 49: { + Node node = new49(); + push(goTo(14), node, true); + } + break; + case 50: { + Node node = new50(); + push(goTo(14), node, true); + } + break; + case 51: { + Node node = new51(); + push(goTo(14), node, true); + } + break; + case 52: { + Node node = new52(); + push(goTo(14), node, true); + } + break; + case 53: { + Node node = new53(); + push(goTo(14), node, true); + } + break; + case 54: { + Node node = new54(); + push(goTo(14), node, true); + } + break; + case 55: { + Node node = new55(); + push(goTo(14), node, true); + } + break; + case 56: { + Node node = new56(); + push(goTo(15), node, true); + } + break; + case 57: { + Node node = new57(); + push(goTo(16), node, true); + } + break; + case 58: { + Node node = new58(); + push(goTo(43), node, false); + } + break; + case 59: { + Node node = new59(); + push(goTo(43), node, false); + } + break; + case 60: { + Node node = new60(); + push(goTo(16), node, true); + } + break; + case 61: { + Node node = new61(); + push(goTo(16), node, true); + } + break; + case 62: { + Node node = new62(); + push(goTo(16), node, true); + } + break; + case 63: { + Node node = new63(); + push(goTo(17), node, true); + } + break; + case 64: { + Node node = new64(); + push(goTo(17), node, true); + } + break; + case 65: { + Node node = new65(); + push(goTo(18), node, true); + } + break; + case 66: { + Node node = new66(); + push(goTo(18), node, true); + } + break; + case 67: { + Node node = new67(); + push(goTo(19), node, true); + } + break; + case 68: { + Node node = new68(); + push(goTo(19), node, true); + } + break; + case 69: { + Node node = new69(); + push(goTo(20), node, true); + } + break; + case 70: { + Node node = new70(); + push(goTo(20), node, true); + } + break; + case 71: { + Node node = new71(); + push(goTo(20), node, true); + } + break; + case 72: { + Node node = new72(); + push(goTo(20), node, true); + } + break; + case 73: { + Node node = new73(); + push(goTo(21), node, true); + } + break; + case 74: { + Node node = new74(); + push(goTo(21), node, true); + } + break; + case 75: { + Node node = new75(); + push(goTo(22), node, true); + } + break; + case 76: { + Node node = new76(); + push(goTo(22), node, true); + } + break; + case 77: { + Node node = new77(); + push(goTo(23), node, true); + } + break; + case 78: { + Node node = new78(); + push(goTo(23), node, true); + } + break; + case 79: { + Node node = new79(); + push(goTo(24), node, true); + } + break; + case 80: { + Node node = new80(); + push(goTo(24), node, true); + } + break; + case 81: { + Node node = new81(); + push(goTo(25), node, true); + } + break; + case 82: { + Node node = new82(); + push(goTo(25), node, true); + } + break; + case 83: { + Node node = new83(); + push(goTo(26), node, true); + } + break; + case 84: { + Node node = new84(); + push(goTo(26), node, true); + } + break; + case 85: { + Node node = new85(); + push(goTo(27), node, true); + } + break; + case 86: { + Node node = new86(); + push(goTo(27), node, true); + } + break; + case 87: { + Node node = new87(); + push(goTo(28), node, true); + } + break; + case 88: { + Node node = new88(); + push(goTo(28), node, true); + } + break; + case 89: { + Node node = new89(); + push(goTo(28), node, true); + } + break; + case 90: { + Node node = new90(); + push(goTo(28), node, true); + } + break; + case 91: { + Node node = new91(); + push(goTo(28), node, true); + } + break; + case 92: { + Node node = new92(); + push(goTo(28), node, true); + } + break; + case 93: { + Node node = new93(); + push(goTo(28), node, true); + } + break; + case 94: { + Node node = new94(); + push(goTo(28), node, true); + } + break; + case 95: { + Node node = new95(); + push(goTo(28), node, true); + } + break; + case 96: { + Node node = new96(); + push(goTo(28), node, true); + } + break; + case 97: { + Node node = new97(); + push(goTo(28), node, true); + } + break; + case 98: { + Node node = new98(); + push(goTo(28), node, true); + } + break; + case 99: { + Node node = new99(); + push(goTo(28), node, true); + } + break; + case 100: { + Node node = new100(); + push(goTo(28), node, true); + } + break; + case 101: { + Node node = new101(); + push(goTo(28), node, true); + } + break; + case 102: { + Node node = new102(); + push(goTo(28), node, true); + } + break; + case 103: { + Node node = new103(); + push(goTo(28), node, true); + } + break; + case 104: { + Node node = new104(); + push(goTo(28), node, true); + } + break; + case 105: { + Node node = new105(); + push(goTo(28), node, true); + } + break; + case 106: { + Node node = new106(); + push(goTo(28), node, true); + } + break; + case 107: { + Node node = new107(); + push(goTo(28), node, true); + } + break; + case 108: { + Node node = new108(); + push(goTo(28), node, true); + } + break; + case 109: { + Node node = new109(); + push(goTo(29), node, true); + } + break; + case 110: { + Node node = new110(); + push(goTo(29), node, true); + } + break; + case 111: { + Node node = new111(); + push(goTo(30), node, true); + } + break; + case 112: { + Node node = new112(); + push(goTo(30), node, true); + } + break; + case 113: { + Node node = new113(); + push(goTo(31), node, true); + } + break; + case 114: { + Node node = new114(); + push(goTo(32), node, true); + } + break; + case 115: { + Node node = new115(); + push(goTo(32), node, true); + } + break; + case 116: { + Node node = new116(); + push(goTo(32), node, true); + } + break; + case 117: { + Node node = new117(); + push(goTo(32), node, true); + } + break; + case 118: { + Node node = new118(); + push(goTo(33), node, true); + } + break; + case 119: { + Node node = new119(); + push(goTo(34), node, true); + } + break; + case 120: { + Node node = new120(); + push(goTo(34), node, true); + } + break; + case 121: { + Node node = new121(); + push(goTo(34), node, true); + } + break; + case 122: { + Node node = new122(); + push(goTo(34), node, true); + } + break; + case 123: { + Node node = new123(); + push(goTo(35), node, true); + } + break; + case 124: { + Node node = new124(); + push(goTo(35), node, true); + } + break; + case 125: { + Node node = new125(); + push(goTo(35), node, true); + } + break; + case 126: { + Node node = new126(); + push(goTo(35), node, true); + } + break; + case 127: { + Node node = new127(); + push(goTo(35), node, true); + } + break; + case 128: { + Node node = new128(); + push(goTo(35), node, true); + } + break; + case 129: { + Node node = new129(); + push(goTo(35), node, true); + } + break; + case 130: { + Node node = new130(); + push(goTo(36), node, true); + } + break; + case 131: { + Node node = new131(); + push(goTo(36), node, true); + } + break; + case 132: { + Node node = new132(); + push(goTo(36), node, true); + } + break; + case 133: { + Node node = new133(); + push(goTo(36), node, true); + } + break; + case 134: { + Node node = new134(); + push(goTo(36), node, true); + } + break; + case 135: { + Node node = new135(); + push(goTo(36), node, true); + } + break; + case 136: { + Node node = new136(); + push(goTo(36), node, true); + } + break; + case 137: { + Node node = new137(); + push(goTo(36), node, true); + } + break; + case 138: { + Node node = new138(); + push(goTo(36), node, true); + } + break; + case 139: { + Node node = new139(); + push(goTo(37), node, true); + } + break; + case 140: { + Node node = new140(); + push(goTo(37), node, true); + } + break; + case 141: { + Node node = new141(); + push(goTo(38), node, true); + } + break; + case 142: { + Node node = new142(); + push(goTo(38), node, true); + } + break; + case 143: { + Node node = new143(); + push(goTo(38), node, true); + } + break; + case 144: { + Node node = new144(); + push(goTo(38), node, true); + } + break; + case 145: { + Node node = new145(); + push(goTo(38), node, true); + } + break; + case 146: { + Node node = new146(); + push(goTo(38), node, true); + } + break; + case 147: { + Node node = new147(); + push(goTo(38), node, true); + } + break; + case 148: { + Node node = new148(); + push(goTo(38), node, true); + } + break; + case 149: { + Node node = new149(); + push(goTo(38), node, true); + } + break; + case 150: { + Node node = new150(); + push(goTo(38), node, true); + } + break; + case 151: { + Node node = new151(); + push(goTo(38), node, true); + } + break; + case 152: { + Node node = new152(); + push(goTo(39), node, true); + } + break; + case 153: { + Node node = new153(); + push(goTo(40), node, true); + } + break; + case 154: { + Node node = new154(); + push(goTo(40), node, true); + } + break; + } + break; + case ACCEPT: { + EOF node2 = (EOF) lexer.next(); + PRecordDescription node1 = (PRecordDescription) pop(); + Start node = new Start(node1, node2); + return node; + } + case ERROR: + throw new ParserException(last_token, "[" + last_line + "," + + last_pos + "] " + errorMessages[errors[action[1]]]); + } + } + } + + Node new0() { + TDot node2 = (TDot) pop(); + PGroupItem node1 = (PGroupItem) pop(); + ARecordDescription node = new ARecordDescription(node1, node2); + return node; + } + + Node new1() { + PElementaryItem node1 = (PElementaryItem) pop(); + ASingleGroupItem node = new ASingleGroupItem(node1); + return node; + } + + Node new2() { + PElementaryItem node3 = (PElementaryItem) pop(); + TDot node2 = (TDot) pop(); + PGroupItem node1 = (PGroupItem) pop(); + ASequenceGroupItem node = new ASequenceGroupItem(node1, node2, node3); + return node; + } + + Node new3() { + PItem node1 = (PItem) pop(); + AItemElementaryItem node = new AItemElementaryItem(node1); + return node; + } + + Node new4() { + PRenamesItem node1 = (PRenamesItem) pop(); + ARenamesItemElementaryItem node = new ARenamesItemElementaryItem(node1); + return node; + } + + Node new5() { + PValueItem node1 = (PValueItem) pop(); + AValueItemElementaryItem node = new AValueItemElementaryItem(node1); + return node; + } + + Node new6() { + PClauseSequence node4 = null; + PRedefinesClause node3 = null; + PDataNameOrFiller node2 = null; + TNumberNot88 node1 = (TNumberNot88) pop(); + AItem node = new AItem(node1, node2, node3, node4); + return node; + } + + Node new7() { + PClauseSequence node4 = null; + PRedefinesClause node3 = null; + PDataNameOrFiller node2 = (PDataNameOrFiller) pop(); + TNumberNot88 node1 = (TNumberNot88) pop(); + AItem node = new AItem(node1, node2, node3, node4); + return node; + } + + Node new8() { + PClauseSequence node4 = null; + PRedefinesClause node3 = (PRedefinesClause) pop(); + PDataNameOrFiller node2 = null; + TNumberNot88 node1 = (TNumberNot88) pop(); + AItem node = new AItem(node1, node2, node3, node4); + return node; + } + + Node new9() { + PClauseSequence node4 = null; + PRedefinesClause node3 = (PRedefinesClause) pop(); + PDataNameOrFiller node2 = (PDataNameOrFiller) pop(); + TNumberNot88 node1 = (TNumberNot88) pop(); + AItem node = new AItem(node1, node2, node3, node4); + return node; + } + + Node new10() { + PClauseSequence node4 = (PClauseSequence) pop(); + PRedefinesClause node3 = null; + PDataNameOrFiller node2 = null; + TNumberNot88 node1 = (TNumberNot88) pop(); + AItem node = new AItem(node1, node2, node3, node4); + return node; + } + + Node new11() { + PClauseSequence node4 = (PClauseSequence) pop(); + PRedefinesClause node3 = null; + PDataNameOrFiller node2 = (PDataNameOrFiller) pop(); + TNumberNot88 node1 = (TNumberNot88) pop(); + AItem node = new AItem(node1, node2, node3, node4); + return node; + } + + Node new12() { + PClauseSequence node4 = (PClauseSequence) pop(); + PRedefinesClause node3 = (PRedefinesClause) pop(); + PDataNameOrFiller node2 = null; + TNumberNot88 node1 = (TNumberNot88) pop(); + AItem node = new AItem(node1, node2, node3, node4); + return node; + } + + Node new13() { + PClauseSequence node4 = (PClauseSequence) pop(); + PRedefinesClause node3 = (PRedefinesClause) pop(); + PDataNameOrFiller node2 = (PDataNameOrFiller) pop(); + TNumberNot88 node1 = (TNumberNot88) pop(); + AItem node = new AItem(node1, node2, node3, node4); + return node; + } + + Node new14() { + TDataName node1 = (TDataName) pop(); + ADataNameDataNameOrFiller node = new ADataNameDataNameOrFiller(node1); + return node; + } + + Node new15() { + TFiller node1 = (TFiller) pop(); + AFillerDataNameOrFiller node = new AFillerDataNameOrFiller(node1); + return node; + } + + Node new16() { + TDataName node2 = (TDataName) pop(); + TRedefines node1 = (TRedefines) pop(); + ARedefinesClause node = new ARedefinesClause(node1, node2); + return node; + } + + Node new17() { + PClause node1 = (PClause) pop(); + ASingleClauseSequence node = new ASingleClauseSequence(node1); + return node; + } + + Node new18() { + PClause node2 = (PClause) pop(); + PClauseSequence node1 = (PClauseSequence) pop(); + ASequenceClauseSequence node = new ASequenceClauseSequence(node1, node2); + return node; + } + + Node new19() { + PBlankWhenZeroClause node1 = (PBlankWhenZeroClause) pop(); + ABlankWhenZeroClauseClause node = new ABlankWhenZeroClauseClause(node1); + return node; + } + + Node new20() { + PDateFormatClause node1 = (PDateFormatClause) pop(); + ADateFormatClauseClause node = new ADateFormatClauseClause(node1); + return node; + } + + Node new21() { + PExternalClause node1 = (PExternalClause) pop(); + AExternalClauseClause node = new AExternalClauseClause(node1); + return node; + } + + Node new22() { + PGlobalClause node1 = (PGlobalClause) pop(); + AGlobalClauseClause node = new AGlobalClauseClause(node1); + return node; + } + + Node new23() { + PJustifiedClause node1 = (PJustifiedClause) pop(); + AJustifiedClauseClause node = new AJustifiedClauseClause(node1); + return node; + } + + Node new24() { + POccursClause node1 = (POccursClause) pop(); + AOccursClauseClause node = new AOccursClauseClause(node1); + return node; + } + + Node new25() { + PPictureClause node1 = (PPictureClause) pop(); + APictureClauseClause node = new APictureClauseClause(node1); + return node; + } + + Node new26() { + PSignClause node1 = (PSignClause) pop(); + ASignClauseClause node = new ASignClauseClause(node1); + return node; + } + + Node new27() { + PSynchronizedClause node1 = (PSynchronizedClause) pop(); + ASynchronizedClauseClause node = new ASynchronizedClauseClause(node1); + return node; + } + + Node new28() { + PUsageClause node1 = (PUsageClause) pop(); + AUsageClauseClause node = new AUsageClauseClause(node1); + return node; + } + + Node new29() { + PValueClause node1 = (PValueClause) pop(); + AValueClauseClause node = new AValueClauseClause(node1); + return node; + } + + Node new30() { + TZeros node3 = (TZeros) pop(); + TWhen node2 = null; + TBlank node1 = (TBlank) pop(); + ABlankWhenZeroClause node = new ABlankWhenZeroClause(node1, node2, + node3); + return node; + } + + Node new31() { + TZeros node3 = (TZeros) pop(); + TWhen node2 = (TWhen) pop(); + TBlank node1 = (TBlank) pop(); + ABlankWhenZeroClause node = new ABlankWhenZeroClause(node1, node2, + node3); + return node; + } + + Node new32() { + TDataName node4 = (TDataName) pop(); + TIs node3 = null; + TFormat node2 = (TFormat) pop(); + TDate node1 = (TDate) pop(); + ADateFormatClause node = new ADateFormatClause(node1, node2, node3, + node4); + return node; + } + + Node new33() { + TDataName node4 = (TDataName) pop(); + TIs node3 = (TIs) pop(); + TFormat node2 = (TFormat) pop(); + TDate node1 = (TDate) pop(); + ADateFormatClause node = new ADateFormatClause(node1, node2, node3, + node4); + return node; + } + + Node new34() { + TExternal node1 = (TExternal) pop(); + AExternalClause node = new AExternalClause(node1); + return node; + } + + Node new35() { + TGlobal node1 = (TGlobal) pop(); + AGlobalClause node = new AGlobalClause(node1); + return node; + } + + Node new36() { + TRight node2 = null; + TJustified node1 = (TJustified) pop(); + AJustifiedClause node = new AJustifiedClause(node1, node2); + return node; + } + + Node new37() { + TRight node2 = (TRight) pop(); + TJustified node1 = (TJustified) pop(); + AJustifiedClause node = new AJustifiedClause(node1, node2); + return node; + } + + Node new38() { + XPIndexedByPhrase node3 = null; + XPAscendingOrDescendingKeyPhrase node2 = null; + POccursFixedOrVariable node1 = (POccursFixedOrVariable) pop(); + AOccursClause node = new AOccursClause(node1, node2, node3); + return node; + } + + Node new39() { + XPIndexedByPhrase node3 = null; + XPAscendingOrDescendingKeyPhrase node2 = (XPAscendingOrDescendingKeyPhrase) pop(); + POccursFixedOrVariable node1 = (POccursFixedOrVariable) pop(); + AOccursClause node = new AOccursClause(node1, node2, node3); + return node; + } + + Node new40() { + PAscendingOrDescendingKeyPhrase node2 = (PAscendingOrDescendingKeyPhrase) pop(); + XPAscendingOrDescendingKeyPhrase node1 = (XPAscendingOrDescendingKeyPhrase) pop(); + X1PAscendingOrDescendingKeyPhrase node = new X1PAscendingOrDescendingKeyPhrase( + node1, node2); + return node; + } + + Node new41() { + PAscendingOrDescendingKeyPhrase node1 = (PAscendingOrDescendingKeyPhrase) pop(); + X2PAscendingOrDescendingKeyPhrase node = new X2PAscendingOrDescendingKeyPhrase( + node1); + return node; + } + + Node new42() { + XPIndexedByPhrase node3 = (XPIndexedByPhrase) pop(); + XPAscendingOrDescendingKeyPhrase node2 = null; + POccursFixedOrVariable node1 = (POccursFixedOrVariable) pop(); + AOccursClause node = new AOccursClause(node1, node2, node3); + return node; + } + + Node new43() { + PIndexedByPhrase node2 = (PIndexedByPhrase) pop(); + XPIndexedByPhrase node1 = (XPIndexedByPhrase) pop(); + X1PIndexedByPhrase node = new X1PIndexedByPhrase(node1, node2); + return node; + } + + Node new44() { + PIndexedByPhrase node1 = (PIndexedByPhrase) pop(); + X2PIndexedByPhrase node = new X2PIndexedByPhrase(node1); + return node; + } + + Node new45() { + XPIndexedByPhrase node3 = (XPIndexedByPhrase) pop(); + XPAscendingOrDescendingKeyPhrase node2 = (XPAscendingOrDescendingKeyPhrase) pop(); + POccursFixedOrVariable node1 = (POccursFixedOrVariable) pop(); + AOccursClause node = new AOccursClause(node1, node2, node3); + return node; + } + + Node new46() { + TTimes node3 = null; + PNumber node2 = (PNumber) pop(); + TOccurs node1 = (TOccurs) pop(); + AFixedOccursFixedOrVariable node = new AFixedOccursFixedOrVariable( + node1, node2, node3); + return node; + } + + Node new47() { + TTimes node3 = (TTimes) pop(); + PNumber node2 = (PNumber) pop(); + TOccurs node1 = (TOccurs) pop(); + AFixedOccursFixedOrVariable node = new AFixedOccursFixedOrVariable( + node1, node2, node3); + return node; + } + + Node new48() { + TDataName node7 = (TDataName) pop(); + TOn node6 = null; + TDepending node5 = (TDepending) pop(); + TTimes node4 = null; + PNumber node3 = (PNumber) pop(); + POccursTo node2 = null; + TOccurs node1 = (TOccurs) pop(); + AVariableOccursFixedOrVariable node = new AVariableOccursFixedOrVariable( + node1, node2, node3, node4, node5, node6, node7); + return node; + } + + Node new49() { + TDataName node7 = (TDataName) pop(); + TOn node6 = null; + TDepending node5 = (TDepending) pop(); + TTimes node4 = null; + PNumber node3 = (PNumber) pop(); + POccursTo node2 = (POccursTo) pop(); + TOccurs node1 = (TOccurs) pop(); + AVariableOccursFixedOrVariable node = new AVariableOccursFixedOrVariable( + node1, node2, node3, node4, node5, node6, node7); + return node; + } + + Node new50() { + TDataName node7 = (TDataName) pop(); + TOn node6 = null; + TDepending node5 = (TDepending) pop(); + TTimes node4 = (TTimes) pop(); + PNumber node3 = (PNumber) pop(); + POccursTo node2 = null; + TOccurs node1 = (TOccurs) pop(); + AVariableOccursFixedOrVariable node = new AVariableOccursFixedOrVariable( + node1, node2, node3, node4, node5, node6, node7); + return node; + } + + Node new51() { + TDataName node7 = (TDataName) pop(); + TOn node6 = null; + TDepending node5 = (TDepending) pop(); + TTimes node4 = (TTimes) pop(); + PNumber node3 = (PNumber) pop(); + POccursTo node2 = (POccursTo) pop(); + TOccurs node1 = (TOccurs) pop(); + AVariableOccursFixedOrVariable node = new AVariableOccursFixedOrVariable( + node1, node2, node3, node4, node5, node6, node7); + return node; + } + + Node new52() { + TDataName node7 = (TDataName) pop(); + TOn node6 = (TOn) pop(); + TDepending node5 = (TDepending) pop(); + TTimes node4 = null; + PNumber node3 = (PNumber) pop(); + POccursTo node2 = null; + TOccurs node1 = (TOccurs) pop(); + AVariableOccursFixedOrVariable node = new AVariableOccursFixedOrVariable( + node1, node2, node3, node4, node5, node6, node7); + return node; + } + + Node new53() { + TDataName node7 = (TDataName) pop(); + TOn node6 = (TOn) pop(); + TDepending node5 = (TDepending) pop(); + TTimes node4 = null; + PNumber node3 = (PNumber) pop(); + POccursTo node2 = (POccursTo) pop(); + TOccurs node1 = (TOccurs) pop(); + AVariableOccursFixedOrVariable node = new AVariableOccursFixedOrVariable( + node1, node2, node3, node4, node5, node6, node7); + return node; + } + + Node new54() { + TDataName node7 = (TDataName) pop(); + TOn node6 = (TOn) pop(); + TDepending node5 = (TDepending) pop(); + TTimes node4 = (TTimes) pop(); + PNumber node3 = (PNumber) pop(); + POccursTo node2 = null; + TOccurs node1 = (TOccurs) pop(); + AVariableOccursFixedOrVariable node = new AVariableOccursFixedOrVariable( + node1, node2, node3, node4, node5, node6, node7); + return node; + } + + Node new55() { + TDataName node7 = (TDataName) pop(); + TOn node6 = (TOn) pop(); + TDepending node5 = (TDepending) pop(); + TTimes node4 = (TTimes) pop(); + PNumber node3 = (PNumber) pop(); + POccursTo node2 = (POccursTo) pop(); + TOccurs node1 = (TOccurs) pop(); + AVariableOccursFixedOrVariable node = new AVariableOccursFixedOrVariable( + node1, node2, node3, node4, node5, node6, node7); + return node; + } + + Node new56() { + TTo node2 = (TTo) pop(); + PNumber node1 = (PNumber) pop(); + AOccursTo node = new AOccursTo(node1, node2); + return node; + } + + Node new57() { + XTDataName node4 = (XTDataName) pop(); + TIs node3 = null; + TKey node2 = null; + PAscendingOrDescending node1 = (PAscendingOrDescending) pop(); + AAscendingOrDescendingKeyPhrase node = new AAscendingOrDescendingKeyPhrase( + node1, node2, node3, node4); + return node; + } + + Node new58() { + TDataName node2 = (TDataName) pop(); + XTDataName node1 = (XTDataName) pop(); + X1TDataName node = new X1TDataName(node1, node2); + return node; + } + + Node new59() { + TDataName node1 = (TDataName) pop(); + X2TDataName node = new X2TDataName(node1); + return node; + } + + Node new60() { + XTDataName node4 = (XTDataName) pop(); + TIs node3 = null; + TKey node2 = (TKey) pop(); + PAscendingOrDescending node1 = (PAscendingOrDescending) pop(); + AAscendingOrDescendingKeyPhrase node = new AAscendingOrDescendingKeyPhrase( + node1, node2, node3, node4); + return node; + } + + Node new61() { + XTDataName node4 = (XTDataName) pop(); + TIs node3 = (TIs) pop(); + TKey node2 = null; + PAscendingOrDescending node1 = (PAscendingOrDescending) pop(); + AAscendingOrDescendingKeyPhrase node = new AAscendingOrDescendingKeyPhrase( + node1, node2, node3, node4); + return node; + } + + Node new62() { + XTDataName node4 = (XTDataName) pop(); + TIs node3 = (TIs) pop(); + TKey node2 = (TKey) pop(); + PAscendingOrDescending node1 = (PAscendingOrDescending) pop(); + AAscendingOrDescendingKeyPhrase node = new AAscendingOrDescendingKeyPhrase( + node1, node2, node3, node4); + return node; + } + + Node new63() { + TAscending node1 = (TAscending) pop(); + AAscendingAscendingOrDescending node = new AAscendingAscendingOrDescending( + node1); + return node; + } + + Node new64() { + TDescending node1 = (TDescending) pop(); + ADescendingAscendingOrDescending node = new ADescendingAscendingOrDescending( + node1); + return node; + } + + Node new65() { + XTDataName node3 = (XTDataName) pop(); + TBy node2 = null; + TIndexed node1 = (TIndexed) pop(); + AIndexedByPhrase node = new AIndexedByPhrase(node1, node2, node3); + return node; + } + + Node new66() { + XTDataName node3 = (XTDataName) pop(); + TBy node2 = (TBy) pop(); + TIndexed node1 = (TIndexed) pop(); + AIndexedByPhrase node = new AIndexedByPhrase(node1, node2, node3); + return node; + } + + Node new67() { + PCharacterString node3 = (PCharacterString) pop(); + TIs node2 = null; + TPicture node1 = (TPicture) pop(); + APictureClause node = new APictureClause(node1, node2, node3); + return node; + } + + Node new68() { + PCharacterString node3 = (PCharacterString) pop(); + TIs node2 = (TIs) pop(); + TPicture node1 = (TPicture) pop(); + APictureClause node = new APictureClause(node1, node2, node3); + return node; + } + + Node new69() { + PSeparateCharacter node3 = null; + PLeadingOrTrailing node2 = (PLeadingOrTrailing) pop(); + PSignIs node1 = null; + ASignClause node = new ASignClause(node1, node2, node3); + return node; + } + + Node new70() { + PSeparateCharacter node3 = null; + PLeadingOrTrailing node2 = (PLeadingOrTrailing) pop(); + PSignIs node1 = (PSignIs) pop(); + ASignClause node = new ASignClause(node1, node2, node3); + return node; + } + + Node new71() { + PSeparateCharacter node3 = (PSeparateCharacter) pop(); + PLeadingOrTrailing node2 = (PLeadingOrTrailing) pop(); + PSignIs node1 = null; + ASignClause node = new ASignClause(node1, node2, node3); + return node; + } + + Node new72() { + PSeparateCharacter node3 = (PSeparateCharacter) pop(); + PLeadingOrTrailing node2 = (PLeadingOrTrailing) pop(); + PSignIs node1 = (PSignIs) pop(); + ASignClause node = new ASignClause(node1, node2, node3); + return node; + } + + Node new73() { + TIs node2 = null; + TSign node1 = (TSign) pop(); + ASignIs node = new ASignIs(node1, node2); + return node; + } + + Node new74() { + TIs node2 = (TIs) pop(); + TSign node1 = (TSign) pop(); + ASignIs node = new ASignIs(node1, node2); + return node; + } + + Node new75() { + TLeading node1 = (TLeading) pop(); + ALeadingLeadingOrTrailing node = new ALeadingLeadingOrTrailing(node1); + return node; + } + + Node new76() { + TTrailing node1 = (TTrailing) pop(); + ATrailingLeadingOrTrailing node = new ATrailingLeadingOrTrailing(node1); + return node; + } + + Node new77() { + TCharacter node2 = null; + TSeparate node1 = (TSeparate) pop(); + ASeparateCharacter node = new ASeparateCharacter(node1, node2); + return node; + } + + Node new78() { + TCharacter node2 = (TCharacter) pop(); + TSeparate node1 = (TSeparate) pop(); + ASeparateCharacter node = new ASeparateCharacter(node1, node2); + return node; + } + + Node new79() { + PLeftOrRight node2 = null; + TSynchronized node1 = (TSynchronized) pop(); + ASynchronizedClause node = new ASynchronizedClause(node1, node2); + return node; + } + + Node new80() { + PLeftOrRight node2 = (PLeftOrRight) pop(); + TSynchronized node1 = (TSynchronized) pop(); + ASynchronizedClause node = new ASynchronizedClause(node1, node2); + return node; + } + + Node new81() { + TLeft node1 = (TLeft) pop(); + ALeftLeftOrRight node = new ALeftLeftOrRight(node1); + return node; + } + + Node new82() { + TRight node1 = (TRight) pop(); + ARightLeftOrRight node = new ARightLeftOrRight(node1); + return node; + } + + Node new83() { + PUsagePhrase node2 = (PUsagePhrase) pop(); + PUsageIs node1 = null; + AUsageClause node = new AUsageClause(node1, node2); + return node; + } + + Node new84() { + PUsagePhrase node2 = (PUsagePhrase) pop(); + PUsageIs node1 = (PUsageIs) pop(); + AUsageClause node = new AUsageClause(node1, node2); + return node; + } + + Node new85() { + TIs node2 = null; + TUsage node1 = (TUsage) pop(); + AUsageIs node = new AUsageIs(node1, node2); + return node; + } + + Node new86() { + TIs node2 = (TIs) pop(); + TUsage node1 = (TUsage) pop(); + AUsageIs node = new AUsageIs(node1, node2); + return node; + } + + Node new87() { + TNative node2 = null; + TBinary node1 = (TBinary) pop(); + ABinaryUsagePhrase node = new ABinaryUsagePhrase(node1, node2); + return node; + } + + Node new88() { + TNative node2 = (TNative) pop(); + TBinary node1 = (TBinary) pop(); + ABinaryUsagePhrase node = new ABinaryUsagePhrase(node1, node2); + return node; + } + + Node new89() { + TComp node1 = (TComp) pop(); + ACompUsagePhrase node = new ACompUsagePhrase(node1); + return node; + } + + Node new90() { + TNative node2 = null; + TComp1 node1 = (TComp1) pop(); + AComp1UsagePhrase node = new AComp1UsagePhrase(node1, node2); + return node; + } + + Node new91() { + TNative node2 = (TNative) pop(); + TComp1 node1 = (TComp1) pop(); + AComp1UsagePhrase node = new AComp1UsagePhrase(node1, node2); + return node; + } + + Node new92() { + TNative node2 = null; + TComp2 node1 = (TComp2) pop(); + AComp2UsagePhrase node = new AComp2UsagePhrase(node1, node2); + return node; + } + + Node new93() { + TNative node2 = (TNative) pop(); + TComp2 node1 = (TComp2) pop(); + AComp2UsagePhrase node = new AComp2UsagePhrase(node1, node2); + return node; + } + + Node new94() { + TComp3 node1 = (TComp3) pop(); + AComp3UsagePhrase node = new AComp3UsagePhrase(node1); + return node; + } + + Node new95() { + TNative node2 = null; + TComp4 node1 = (TComp4) pop(); + AComp4UsagePhrase node = new AComp4UsagePhrase(node1, node2); + return node; + } + + Node new96() { + TNative node2 = (TNative) pop(); + TComp4 node1 = (TComp4) pop(); + AComp4UsagePhrase node = new AComp4UsagePhrase(node1, node2); + return node; + } + + Node new97() { + TComp5 node1 = (TComp5) pop(); + AComp5UsagePhrase node = new AComp5UsagePhrase(node1); + return node; + } + + Node new98() { + TNative node2 = null; + TDisplay node1 = (TDisplay) pop(); + ADisplayUsagePhrase node = new ADisplayUsagePhrase(node1, node2); + return node; + } + + Node new99() { + TNative node2 = (TNative) pop(); + TDisplay node1 = (TDisplay) pop(); + ADisplayUsagePhrase node = new ADisplayUsagePhrase(node1, node2); + return node; + } + + Node new100() { + TNative node2 = null; + TDisplay1 node1 = (TDisplay1) pop(); + ADisplay1UsagePhrase node = new ADisplay1UsagePhrase(node1, node2); + return node; + } + + Node new101() { + TNative node2 = (TNative) pop(); + TDisplay1 node1 = (TDisplay1) pop(); + ADisplay1UsagePhrase node = new ADisplay1UsagePhrase(node1, node2); + return node; + } + + Node new102() { + TIndex node1 = (TIndex) pop(); + AIndexUsagePhrase node = new AIndexUsagePhrase(node1); + return node; + } + + Node new103() { + TNational node1 = (TNational) pop(); + ANationalUsagePhrase node = new ANationalUsagePhrase(node1); + return node; + } + + Node new104() { + PObjectReferencePhrase node1 = (PObjectReferencePhrase) pop(); + AObjectReferencePhraseUsagePhrase node = new AObjectReferencePhraseUsagePhrase( + node1); + return node; + } + + Node new105() { + TPackedDecimal node1 = (TPackedDecimal) pop(); + APackedDecimalUsagePhrase node = new APackedDecimalUsagePhrase(node1); + return node; + } + + Node new106() { + TPointer node1 = (TPointer) pop(); + APointerUsagePhrase node = new APointerUsagePhrase(node1); + return node; + } + + Node new107() { + TProcedurePointer node1 = (TProcedurePointer) pop(); + AProcedurePointerUsagePhrase node = new AProcedurePointerUsagePhrase( + node1); + return node; + } + + Node new108() { + TFunctionPointer node1 = (TFunctionPointer) pop(); + AFunctionPointerUsagePhrase node = new AFunctionPointerUsagePhrase( + node1); + return node; + } + + Node new109() { + TDataName node3 = null; + TReference node2 = (TReference) pop(); + TObject node1 = (TObject) pop(); + AObjectReferencePhrase node = new AObjectReferencePhrase(node1, node2, + node3); + return node; + } + + Node new110() { + TDataName node3 = (TDataName) pop(); + TReference node2 = (TReference) pop(); + TObject node1 = (TObject) pop(); + AObjectReferencePhrase node = new AObjectReferencePhrase(node1, node2, + node3); + return node; + } + + Node new111() { + PThroughPhrase node5 = null; + TDataName node4 = (TDataName) pop(); + TRenames node3 = (TRenames) pop(); + TDataName node2 = (TDataName) pop(); + TNumberNot88 node1 = (TNumberNot88) pop(); + ARenamesItem node = new ARenamesItem(node1, node2, node3, node4, node5); + return node; + } + + Node new112() { + PThroughPhrase node5 = (PThroughPhrase) pop(); + TDataName node4 = (TDataName) pop(); + TRenames node3 = (TRenames) pop(); + TDataName node2 = (TDataName) pop(); + TNumberNot88 node1 = (TNumberNot88) pop(); + ARenamesItem node = new ARenamesItem(node1, node2, node3, node4, node5); + return node; + } + + Node new113() { + TDataName node2 = (TDataName) pop(); + TThrough node1 = (TThrough) pop(); + AThroughPhrase node = new AThroughPhrase(node1, node2); + return node; + } + + Node new114() { + PLiteral node4 = (PLiteral) pop(); + TAll node3 = null; + TIs node2 = null; + TValue node1 = (TValue) pop(); + AValueClause node = new AValueClause(node1, node2, node3, node4); + return node; + } + + Node new115() { + PLiteral node4 = (PLiteral) pop(); + TAll node3 = null; + TIs node2 = (TIs) pop(); + TValue node1 = (TValue) pop(); + AValueClause node = new AValueClause(node1, node2, node3, node4); + return node; + } + + Node new116() { + PLiteral node4 = (PLiteral) pop(); + TAll node3 = (TAll) pop(); + TIs node2 = null; + TValue node1 = (TValue) pop(); + AValueClause node = new AValueClause(node1, node2, node3, node4); + return node; + } + + Node new117() { + PLiteral node4 = (PLiteral) pop(); + TAll node3 = (TAll) pop(); + TIs node2 = (TIs) pop(); + TValue node1 = (TValue) pop(); + AValueClause node = new AValueClause(node1, node2, node3, node4); + return node; + } + + Node new118() { + PLiteralSequence node4 = (PLiteralSequence) pop(); + PValueOrValues node3 = (PValueOrValues) pop(); + TDataName node2 = (TDataName) pop(); + TNumber88 node1 = (TNumber88) pop(); + AValueItem node = new AValueItem(node1, node2, node3, node4); + return node; + } + + Node new119() { + TIs node2 = null; + TValue node1 = (TValue) pop(); + AValueValueOrValues node = new AValueValueOrValues(node1, node2); + return node; + } + + Node new120() { + TIs node2 = (TIs) pop(); + TValue node1 = (TValue) pop(); + AValueValueOrValues node = new AValueValueOrValues(node1, node2); + return node; + } + + Node new121() { + TAre node2 = null; + TValues node1 = (TValues) pop(); + AValuesValueOrValues node = new AValuesValueOrValues(node1, node2); + return node; + } + + Node new122() { + TAre node2 = (TAre) pop(); + TValues node1 = (TValues) pop(); + AValuesValueOrValues node = new AValuesValueOrValues(node1, node2); + return node; + } + + Node new123() { + PLiteral node2 = (PLiteral) pop(); + TAll node1 = null; + ASingleLiteralSequence node = new ASingleLiteralSequence(node1, node2); + return node; + } + + Node new124() { + PLiteral node2 = (PLiteral) pop(); + TAll node1 = (TAll) pop(); + ASingleLiteralSequence node = new ASingleLiteralSequence(node1, node2); + return node; + } + + Node new125() { + PLiteral node3 = (PLiteral) pop(); + TComma node2 = null; + PLiteralSequence node1 = (PLiteralSequence) pop(); + ASequenceLiteralSequence node = new ASequenceLiteralSequence(node1, + node2, node3); + return node; + } + + Node new126() { + PLiteral node3 = (PLiteral) pop(); + TComma node2 = (TComma) pop(); + PLiteralSequence node1 = (PLiteralSequence) pop(); + ASequenceLiteralSequence node = new ASequenceLiteralSequence(node1, + node2, node3); + return node; + } + + Node new127() { + PLiteral node3 = (PLiteral) pop(); + TThrough node2 = (TThrough) pop(); + PLiteral node1 = (PLiteral) pop(); + AThroughSingleLiteralSequence node = new AThroughSingleLiteralSequence( + node1, node2, node3); + return node; + } + + Node new128() { + PLiteral node5 = (PLiteral) pop(); + TThrough node4 = (TThrough) pop(); + PLiteral node3 = (PLiteral) pop(); + TComma node2 = null; + PLiteralSequence node1 = (PLiteralSequence) pop(); + AThroughSequenceLiteralSequence node = new AThroughSequenceLiteralSequence( + node1, node2, node3, node4, node5); + return node; + } + + Node new129() { + PLiteral node5 = (PLiteral) pop(); + TThrough node4 = (TThrough) pop(); + PLiteral node3 = (PLiteral) pop(); + TComma node2 = (TComma) pop(); + PLiteralSequence node1 = (PLiteralSequence) pop(); + AThroughSequenceLiteralSequence node = new AThroughSequenceLiteralSequence( + node1, node2, node3, node4, node5); + return node; + } + + Node new130() { + TZeros node1 = (TZeros) pop(); + AZerosLiteral node = new AZerosLiteral(node1); + return node; + } + + Node new131() { + TSpaces node1 = (TSpaces) pop(); + ASpacesLiteral node = new ASpacesLiteral(node1); + return node; + } + + Node new132() { + THighValues node1 = (THighValues) pop(); + AHighValuesLiteral node = new AHighValuesLiteral(node1); + return node; + } + + Node new133() { + TLowValues node1 = (TLowValues) pop(); + ALowValuesLiteral node = new ALowValuesLiteral(node1); + return node; + } + + Node new134() { + TQuotes node1 = (TQuotes) pop(); + AQuotesLiteral node = new AQuotesLiteral(node1); + return node; + } + + Node new135() { + TNulls node1 = (TNulls) pop(); + ANullsLiteral node = new ANullsLiteral(node1); + return node; + } + + Node new136() { + PNumber node1 = (PNumber) pop(); + ANumberLiteral node = new ANumberLiteral(node1); + return node; + } + + Node new137() { + TNumericLiteral node1 = (TNumericLiteral) pop(); + ANumericLiteralLiteral node = new ANumericLiteralLiteral(node1); + return node; + } + + Node new138() { + TAlphanumericLiteral node1 = (TAlphanumericLiteral) pop(); + AAlphanumericLiteralLiteral node = new AAlphanumericLiteralLiteral( + node1); + return node; + } + + Node new139() { + PCharacterSubstring node1 = (PCharacterSubstring) pop(); + ASingleCharacterString node = new ASingleCharacterString(node1); + return node; + } + + Node new140() { + PCharacterSubstring node2 = (PCharacterSubstring) pop(); + PCharacterString node1 = (PCharacterString) pop(); + ASequenceCharacterString node = new ASequenceCharacterString(node1, + node2); + return node; + } + + Node new141() { + TDataName node1 = (TDataName) pop(); + ADataNameCharacterSubstring node = new ADataNameCharacterSubstring( + node1); + return node; + } + + Node new142() { + TPlus node1 = (TPlus) pop(); + APlusCharacterSubstring node = new APlusCharacterSubstring(node1); + return node; + } + + Node new143() { + TMinus node1 = (TMinus) pop(); + AMinusCharacterSubstring node = new AMinusCharacterSubstring(node1); + return node; + } + + Node new144() { + TStar node1 = (TStar) pop(); + AStarCharacterSubstring node = new AStarCharacterSubstring(node1); + return node; + } + + Node new145() { + TSlash node1 = (TSlash) pop(); + ASlashCharacterSubstring node = new ASlashCharacterSubstring(node1); + return node; + } + + Node new146() { + TDollar node1 = (TDollar) pop(); + ADollarCharacterSubstring node = new ADollarCharacterSubstring(node1); + return node; + } + + Node new147() { + TComma node1 = (TComma) pop(); + ACommaCharacterSubstring node = new ACommaCharacterSubstring(node1); + return node; + } + + Node new148() { + TNumberNot88 node1 = (TNumberNot88) pop(); + ANumberCharacterSubstring node = new ANumberCharacterSubstring(node1); + return node; + } + + Node new149() { + TNumericLiteral node1 = (TNumericLiteral) pop(); + ANumericLiteralCharacterSubstring node = new ANumericLiteralCharacterSubstring( + node1); + return node; + } + + Node new150() { + PBracketedNumber node1 = (PBracketedNumber) pop(); + ABracketedNumberCharacterSubstring node = new ABracketedNumberCharacterSubstring( + node1); + return node; + } + + Node new151() { + TDotZee node1 = (TDotZee) pop(); + ADotZeeCharacterSubstring node = new ADotZeeCharacterSubstring(node1); + return node; + } + + Node new152() { + TRparen node3 = (TRparen) pop(); + PNumber node2 = (PNumber) pop(); + TLparen node1 = (TLparen) pop(); + ABracketedNumber node = new ABracketedNumber(node1, node2, node3); + return node; + } + + Node new153() { + TNumberNot88 node1 = (TNumberNot88) pop(); + ANumberNot88Number node = new ANumberNot88Number(node1); + return node; + } + + Node new154() { + TNumber88 node1 = (TNumber88) pop(); + ANumber88Number node = new ANumber88Number(node1); + return node; + } + } diff --git a/src/test/java/net/sf/cb2java/copybook/CopybooksTest.java b/src/test/java/net/sf/cb2java/copybook/CopybooksTest.java index 1e01630..60b9863 100644 --- a/src/test/java/net/sf/cb2java/copybook/CopybooksTest.java +++ b/src/test/java/net/sf/cb2java/copybook/CopybooksTest.java @@ -31,7 +31,6 @@ public CopybooksTest(String testName) { */ public void testReadCopybooks_FileArr() throws Exception { Map copybooks = readCopybooks(new File("./target/test-classes/").listFiles(new FilenameFilter() { - @Override public boolean accept(File file, String filename) { return filename.endsWith(".copybook"); } diff --git a/src/test/java/net/sf/cb2java/types/AlphaNumericTest.java b/src/test/java/net/sf/cb2java/types/AlphaNumericTest.java new file mode 100644 index 0000000..10ffccf --- /dev/null +++ b/src/test/java/net/sf/cb2java/types/AlphaNumericTest.java @@ -0,0 +1,29 @@ +package net.sf.cb2java.types; + +import junit.framework.TestCase; + +public class AlphaNumericTest extends TestCase { + + protected void setUp() throws Exception { + super.setUp(); + } + + public void testValidateX2000() { + AlphaNumeric cut = new AlphaNumeric("DATA-ITEM", 5, 0, "X(100)"); + cut.validate("Lorem ipsum dolor sit amet"); + } + + public void testValidateX2000WithCarriageReturn() { + try { + AlphaNumeric cut = new AlphaNumeric("DATA-ITEM", 5, 0, "X(100)"); + cut.validate("Lorem ipsum \n dolor sit amet"); + fail("AlphaNumeric does not currently allow carriage return characters."); + } catch (IllegalArgumentException e) { + // Test passes, however I'm not sure it's correct. According to the + // COBOL reference: "The contents of the item in standard data format can be any allowable characters + // from the character set of the computer." + // http://publib.boulder.ibm.com/infocenter/ratdevz/v7r1m1/topic/com.ibm.ent.cbl.zos.doc/topics/igy3lr31.pdf + } + } + +} diff --git a/src/test/java/net/sf/cb2java/types/DecimalTest.java b/src/test/java/net/sf/cb2java/types/DecimalTest.java new file mode 100644 index 0000000..2939d2d --- /dev/null +++ b/src/test/java/net/sf/cb2java/types/DecimalTest.java @@ -0,0 +1,31 @@ +package net.sf.cb2java.types; + +import java.io.UnsupportedEncodingException; +import java.math.BigDecimal; +import java.math.BigInteger; + +import junit.framework.TestCase; +import net.sf.cb2java.data.Data; + +public class DecimalTest extends TestCase { + + protected void setUp() throws Exception { + super.setUp(); + } + + public void testParse() throws UnsupportedEncodingException { + assertEquals(new BigInteger("9050"), parse("9(4)", "9050")); + assertEquals(new BigInteger("-9050"), parse("S9(4)", "905}")); + assertEquals(new BigInteger("-2345"), parse("S9(4)", "234N")); // Real example + assertEquals(new BigDecimal("2345.67"), parse("9(4)V99", "234567")); + assertEquals(new BigDecimal("-2345.67"), parse("S9(4)V99", "23456P")); + assertEquals(new BigDecimal("1.23"), parse("S9(6)V99", "0000012C")); // Real example + } + + protected Object parse(String pic, String string) throws UnsupportedEncodingException { + Decimal decimal = new Decimal("DUMMY", pic); + Data data = decimal.parse(string.getBytes("cp1252")); + Object value = data.getValue(); + return value; + } +}