[pkg-eucalyptus-commits] r248 - in sablecc: . sablecc sablecc/branches sablecc/branches/upstream sablecc/branches/upstream/current sablecc/branches/upstream/current/bin sablecc/branches/upstream/current/etc sablecc/branches/upstream/current/src sablecc/branches/upstream/current/src/org sablecc/branches/upstream/current/src/org/sablecc sablecc/branches/upstream/current/src/org/sablecc/sablecc sablecc/branches/upstream/current/src/org/sablecc/sablecc/analysis sablecc/branches/upstream/current/src/org/sablecc/sablecc/lexer sablecc/branches/upstream/current/src/org/sablecc/sablecc/node sablecc/branches/upstream/current/src/org/sablecc/sablecc/parser
Chris Halls
halls at alioth.debian.org
Thu Jul 12 16:49:25 UTC 2012
Author: halls
Date: 2012-07-12 16:49:25 +0000 (Thu, 12 Jul 2012)
New Revision: 248
Added:
sablecc/sablecc/
sablecc/sablecc/branches/
sablecc/sablecc/branches/upstream/
sablecc/sablecc/branches/upstream/current/
sablecc/sablecc/branches/upstream/current/AUTHORS
sablecc/sablecc/branches/upstream/current/COPYING-LESSER
sablecc/sablecc/branches/upstream/current/ChangeLog
sablecc/sablecc/branches/upstream/current/ChangeLog.old
sablecc/sablecc/branches/upstream/current/LICENSE
sablecc/sablecc/branches/upstream/current/README.html
sablecc/sablecc/branches/upstream/current/THANKS
sablecc/sablecc/branches/upstream/current/bin/
sablecc/sablecc/branches/upstream/current/bin/sablecc
sablecc/sablecc/branches/upstream/current/bin/sablecc.bat
sablecc/sablecc/branches/upstream/current/build.xml
sablecc/sablecc/branches/upstream/current/etc/
sablecc/sablecc/branches/upstream/current/etc/manifest
sablecc/sablecc/branches/upstream/current/sablecc-anttask-1.0.1.tar.gz
sablecc/sablecc/branches/upstream/current/src/
sablecc/sablecc/branches/upstream/current/src/org/
sablecc/sablecc/branches/upstream/current/src/org/sablecc/
sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/
sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/AUTHORS
sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/AcceptStates.java
sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/BooleanCast.java
sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/COPYING-LESSER
sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/Cast.java
sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/CharSet.java
sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/ConstructNFA.java
sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/DFA.java
sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/DisplayLicense.java
sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/GenAlts.java
sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/GenAnalyses.java
sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/GenLexer.java
sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/GenParser.java
sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/GenProds.java
sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/GenTokens.java
sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/GenUtils.java
sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/Grammar.java
sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/IntSet.java
sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/IntegerCast.java
sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/IntegerComparator.java
sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/LICENSE
sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/LR0Collection.java
sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/LR0Item.java
sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/LR0ItemAndSetPair.java
sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/LR0ItemSet.java
sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/LR1Collection.java
sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/LR1Item.java
sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/LR1ItemSet.java
sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/ListCast.java
sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/MacroExpander.java
sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/NFA.java
sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/NoCast.java
sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/NodeCast.java
sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/NodeComparator.java
sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/Production.java
sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/ResolveIds.java
sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/SableCC.java
sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/StringCast.java
sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/StringComparator.java
sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/Switch.java
sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/Switchable.java
sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/Symbol.java
sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/SymbolSet.java
sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/Transitions.java
sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/TypedLinkedList.java
sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/TypedTreeMap.java
sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/Version.java
sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/alternatives.txt
sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/analyses.txt
sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/analysis/
sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/analysis/Analysis.java
sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/analysis/AnalysisAdapter.java
sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/analysis/DepthFirstAdapter.java
sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/lexer.txt
sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/lexer/
sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/lexer/Lexer.java
sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/lexer/LexerException.java
sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/
sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/Alt.java
sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/Alt1.java
sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/Alt2.java
sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/AltName.java
sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/AltName1.java
sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/AltNameOpt.java
sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/AltNameOpt1.java
sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/AltNameOpt2.java
sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/Alts.java
sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/Alts1.java
sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/AltsTail.java
sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/AltsTail1.java
sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/AltsTails.java
sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/AltsTails1.java
sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/AltsTails2.java
sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/Basic.java
sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/Basic1.java
sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/Basic2.java
sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/Basic3.java
sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/Basic4.java
sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/Basic5.java
sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/BinOp.java
sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/BinOp1.java
sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/BinOp2.java
sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/Concat.java
sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/Concat1.java
sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/EOF.java
sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/Elem.java
sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/Elem1.java
sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/ElemName.java
sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/ElemName1.java
sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/ElemNameOpt.java
sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/ElemNameOpt1.java
sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/ElemNameOpt2.java
sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/Elems.java
sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/Elems1.java
sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/Elems2.java
sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/Grammar.java
sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/Grammar1.java
sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/HelperDef.java
sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/HelperDef1.java
sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/HelperDefs.java
sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/HelperDefs1.java
sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/HelperDefs2.java
sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/Helpers.java
sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/Helpers1.java
sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/HelpersOpt.java
sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/HelpersOpt1.java
sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/HelpersOpt2.java
sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/IdList.java
sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/IdList1.java
sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/IdListOpt.java
sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/IdListOpt1.java
sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/IdListTail.java
sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/IdListTail1.java
sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/IdListTails.java
sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/IdListTails1.java
sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/IdListTails2.java
sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/IgnTokens.java
sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/IgnTokens1.java
sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/IgnTokensOpt.java
sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/IgnTokensOpt1.java
sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/IgnTokensOpt2.java
sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/LookAhead.java
sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/LookAhead1.java
sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/LookAheadOpt.java
sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/LookAheadOpt1.java
sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/LookAheadOpt2.java
sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/Node.java
sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/PChar.java
sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/PChar1.java
sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/PChar2.java
sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/PChar3.java
sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/PSet.java
sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/PSet1.java
sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/PSet2.java
sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/Package.java
sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/Package1.java
sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/PackageOpt.java
sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/PackageOpt1.java
sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/PackageOpt2.java
sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/PkgId.java
sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/PkgId1.java
sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/PkgId10.java
sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/PkgId2.java
sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/PkgId3.java
sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/PkgId4.java
sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/PkgId5.java
sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/PkgId6.java
sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/PkgId7.java
sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/PkgId8.java
sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/PkgId9.java
sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/PkgName.java
sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/PkgName1.java
sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/PkgNameOpt.java
sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/PkgNameOpt1.java
sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/PkgNameTail.java
sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/PkgNameTail1.java
sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/PkgNameTails.java
sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/PkgNameTails1.java
sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/PkgNameTails2.java
sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/Prod.java
sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/Prod1.java
sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/Prods.java
sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/Prods1.java
sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/Prods2.java
sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/Productions.java
sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/Productions1.java
sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/ProductionsOpt.java
sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/ProductionsOpt1.java
sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/ProductionsOpt2.java
sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/RegExp.java
sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/RegExp1.java
sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/RegExpTail.java
sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/RegExpTail1.java
sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/RegExpTails.java
sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/RegExpTails1.java
sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/RegExpTails2.java
sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/Specifier.java
sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/Specifier1.java
sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/Specifier2.java
sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/SpecifierOpt.java
sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/SpecifierOpt1.java
sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/SpecifierOpt2.java
sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/Start.java
sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/Start1.java
sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/StateList.java
sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/StateList1.java
sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/StateListOpt.java
sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/StateListOpt1.java
sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/StateListOpt2.java
sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/StateListTail.java
sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/StateListTail1.java
sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/StateListTails.java
sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/StateListTails1.java
sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/StateListTails2.java
sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/States.java
sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/States1.java
sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/StatesOpt.java
sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/StatesOpt1.java
sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/StatesOpt2.java
sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/TArrow.java
sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/TBar.java
sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/TBlank.java
sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/TChar.java
sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/TColon.java
sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/TComma.java
sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/TComment.java
sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/TDDot.java
sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/TDecChar.java
sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/TDot.java
sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/TEqual.java
sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/THelpers.java
sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/THexChar.java
sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/TId.java
sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/TIgnored.java
sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/TLBkt.java
sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/TLBrace.java
sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/TLPar.java
sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/TMinus.java
sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/TPackage.java
sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/TPkgId.java
sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/TPlus.java
sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/TProductionSpecifier.java
sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/TProductions.java
sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/TQMark.java
sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/TRBkt.java
sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/TRBrace.java
sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/TRPar.java
sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/TSemicolon.java
sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/TSlash.java
sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/TStar.java
sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/TStates.java
sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/TString.java
sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/TTokenSpecifier.java
sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/TTokens.java
sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/Token.java
sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/TokenDef.java
sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/TokenDef1.java
sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/TokenDefs.java
sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/TokenDefs1.java
sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/TokenDefs2.java
sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/Tokens.java
sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/Tokens1.java
sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/TokensOpt.java
sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/TokensOpt1.java
sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/TokensOpt2.java
sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/Transition.java
sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/Transition1.java
sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/TransitionOpt.java
sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/TransitionOpt1.java
sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/TransitionOpt2.java
sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/UnExp.java
sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/UnExp1.java
sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/UnExps.java
sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/UnExps1.java
sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/UnExps2.java
sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/UnOp.java
sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/UnOp1.java
sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/UnOp2.java
sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/UnOp3.java
sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/UnOpOpt.java
sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/UnOpOpt1.java
sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/UnOpOpt2.java
sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/parser.txt
sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/parser/
sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/parser/Parser.java
sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/parser/ParserException.java
sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/parser/State.java
sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/parser/TokenIndex.java
sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/parser/parser.dat
sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/productions.txt
sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/tokens.txt
sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/utils.txt
Log:
[svn-inject] Installing original source of sablecc (2.16.2)
Added: sablecc/sablecc/branches/upstream/current/AUTHORS
===================================================================
--- sablecc/sablecc/branches/upstream/current/AUTHORS (rev 0)
+++ sablecc/sablecc/branches/upstream/current/AUTHORS 2012-07-12 16:49:25 UTC (rev 248)
@@ -0,0 +1,5 @@
+This file contains the name of all copyright holders.
+
+Etienne M. Gagnon <egagnon at j-meg.com>
+Ben Menking <bmenking at bigfoot.com>
+Mariusz Nowostawski <mariusz at marni.otago.ac.nz>
Added: sablecc/sablecc/branches/upstream/current/COPYING-LESSER
===================================================================
--- sablecc/sablecc/branches/upstream/current/COPYING-LESSER (rev 0)
+++ sablecc/sablecc/branches/upstream/current/COPYING-LESSER 2012-07-12 16:49:25 UTC (rev 248)
@@ -0,0 +1,504 @@
+ GNU LESSER GENERAL PUBLIC LICENSE
+ Version 2.1, February 1999
+
+ Copyright (C) 1991, 1999 Free Software Foundation, Inc.
+ 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ Everyone is permitted to copy and distribute verbatim copies
+ of this license document, but changing it is not allowed.
+
+[This is the first released version of the Lesser GPL. It also counts
+ as the successor of the GNU Library Public License, version 2, hence
+ the version number 2.1.]
+
+ Preamble
+
+ The licenses for most software are designed to take away your
+freedom to share and change it. By contrast, the GNU General Public
+Licenses are intended to guarantee your freedom to share and change
+free software--to make sure the software is free for all its users.
+
+ This license, the Lesser General Public License, applies to some
+specially designated software packages--typically libraries--of the
+Free Software Foundation and other authors who decide to use it. You
+can use it too, but we suggest you first think carefully about whether
+this license or the ordinary General Public License is the better
+strategy to use in any particular case, based on the explanations below.
+
+ When we speak of free software, we are referring to freedom of use,
+not price. Our General Public Licenses are designed to make sure that
+you have the freedom to distribute copies of free software (and charge
+for this service if you wish); that you receive source code or can get
+it if you want it; that you can change the software and use pieces of
+it in new free programs; and that you are informed that you can do
+these things.
+
+ To protect your rights, we need to make restrictions that forbid
+distributors to deny you these rights or to ask you to surrender these
+rights. These restrictions translate to certain responsibilities for
+you if you distribute copies of the library or if you modify it.
+
+ For example, if you distribute copies of the library, whether gratis
+or for a fee, you must give the recipients all the rights that we gave
+you. You must make sure that they, too, receive or can get the source
+code. If you link other code with the library, you must provide
+complete object files to the recipients, so that they can relink them
+with the library after making changes to the library and recompiling
+it. And you must show them these terms so they know their rights.
+
+ We protect your rights with a two-step method: (1) we copyright the
+library, and (2) we offer you this license, which gives you legal
+permission to copy, distribute and/or modify the library.
+
+ To protect each distributor, we want to make it very clear that
+there is no warranty for the free library. Also, if the library is
+modified by someone else and passed on, the recipients should know
+that what they have is not the original version, so that the original
+author's reputation will not be affected by problems that might be
+introduced by others.
+
+ Finally, software patents pose a constant threat to the existence of
+any free program. We wish to make sure that a company cannot
+effectively restrict the users of a free program by obtaining a
+restrictive license from a patent holder. Therefore, we insist that
+any patent license obtained for a version of the library must be
+consistent with the full freedom of use specified in this license.
+
+ Most GNU software, including some libraries, is covered by the
+ordinary GNU General Public License. This license, the GNU Lesser
+General Public License, applies to certain designated libraries, and
+is quite different from the ordinary General Public License. We use
+this license for certain libraries in order to permit linking those
+libraries into non-free programs.
+
+ When a program is linked with a library, whether statically or using
+a shared library, the combination of the two is legally speaking a
+combined work, a derivative of the original library. The ordinary
+General Public License therefore permits such linking only if the
+entire combination fits its criteria of freedom. The Lesser General
+Public License permits more lax criteria for linking other code with
+the library.
+
+ We call this license the "Lesser" General Public License because it
+does Less to protect the user's freedom than the ordinary General
+Public License. It also provides other free software developers Less
+of an advantage over competing non-free programs. These disadvantages
+are the reason we use the ordinary General Public License for many
+libraries. However, the Lesser license provides advantages in certain
+special circumstances.
+
+ For example, on rare occasions, there may be a special need to
+encourage the widest possible use of a certain library, so that it becomes
+a de-facto standard. To achieve this, non-free programs must be
+allowed to use the library. A more frequent case is that a free
+library does the same job as widely used non-free libraries. In this
+case, there is little to gain by limiting the free library to free
+software only, so we use the Lesser General Public License.
+
+ In other cases, permission to use a particular library in non-free
+programs enables a greater number of people to use a large body of
+free software. For example, permission to use the GNU C Library in
+non-free programs enables many more people to use the whole GNU
+operating system, as well as its variant, the GNU/Linux operating
+system.
+
+ Although the Lesser General Public License is Less protective of the
+users' freedom, it does ensure that the user of a program that is
+linked with the Library has the freedom and the wherewithal to run
+that program using a modified version of the Library.
+
+ The precise terms and conditions for copying, distribution and
+modification follow. Pay close attention to the difference between a
+"work based on the library" and a "work that uses the library". The
+former contains code derived from the library, whereas the latter must
+be combined with the library in order to run.
+
+ GNU LESSER GENERAL PUBLIC LICENSE
+ TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
+
+ 0. This License Agreement applies to any software library or other
+program which contains a notice placed by the copyright holder or
+other authorized party saying it may be distributed under the terms of
+this Lesser General Public License (also called "this License").
+Each licensee is addressed as "you".
+
+ A "library" means a collection of software functions and/or data
+prepared so as to be conveniently linked with application programs
+(which use some of those functions and data) to form executables.
+
+ The "Library", below, refers to any such software library or work
+which has been distributed under these terms. A "work based on the
+Library" means either the Library or any derivative work under
+copyright law: that is to say, a work containing the Library or a
+portion of it, either verbatim or with modifications and/or translated
+straightforwardly into another language. (Hereinafter, translation is
+included without limitation in the term "modification".)
+
+ "Source code" for a work means the preferred form of the work for
+making modifications to it. For a library, complete source code means
+all the source code for all modules it contains, plus any associated
+interface definition files, plus the scripts used to control compilation
+and installation of the library.
+
+ Activities other than copying, distribution and modification are not
+covered by this License; they are outside its scope. The act of
+running a program using the Library is not restricted, and output from
+such a program is covered only if its contents constitute a work based
+on the Library (independent of the use of the Library in a tool for
+writing it). Whether that is true depends on what the Library does
+and what the program that uses the Library does.
+
+ 1. You may copy and distribute verbatim copies of the Library's
+complete source code as you receive it, in any medium, provided that
+you conspicuously and appropriately publish on each copy an
+appropriate copyright notice and disclaimer of warranty; keep intact
+all the notices that refer to this License and to the absence of any
+warranty; and distribute a copy of this License along with the
+Library.
+
+ You may charge a fee for the physical act of transferring a copy,
+and you may at your option offer warranty protection in exchange for a
+fee.
+
+ 2. You may modify your copy or copies of the Library or any portion
+of it, thus forming a work based on the Library, and copy and
+distribute such modifications or work under the terms of Section 1
+above, provided that you also meet all of these conditions:
+
+ a) The modified work must itself be a software library.
+
+ b) You must cause the files modified to carry prominent notices
+ stating that you changed the files and the date of any change.
+
+ c) You must cause the whole of the work to be licensed at no
+ charge to all third parties under the terms of this License.
+
+ d) If a facility in the modified Library refers to a function or a
+ table of data to be supplied by an application program that uses
+ the facility, other than as an argument passed when the facility
+ is invoked, then you must make a good faith effort to ensure that,
+ in the event an application does not supply such function or
+ table, the facility still operates, and performs whatever part of
+ its purpose remains meaningful.
+
+ (For example, a function in a library to compute square roots has
+ a purpose that is entirely well-defined independent of the
+ application. Therefore, Subsection 2d requires that any
+ application-supplied function or table used by this function must
+ be optional: if the application does not supply it, the square
+ root function must still compute square roots.)
+
+These requirements apply to the modified work as a whole. If
+identifiable sections of that work are not derived from the Library,
+and can be reasonably considered independent and separate works in
+themselves, then this License, and its terms, do not apply to those
+sections when you distribute them as separate works. But when you
+distribute the same sections as part of a whole which is a work based
+on the Library, the distribution of the whole must be on the terms of
+this License, whose permissions for other licensees extend to the
+entire whole, and thus to each and every part regardless of who wrote
+it.
+
+Thus, it is not the intent of this section to claim rights or contest
+your rights to work written entirely by you; rather, the intent is to
+exercise the right to control the distribution of derivative or
+collective works based on the Library.
+
+In addition, mere aggregation of another work not based on the Library
+with the Library (or with a work based on the Library) on a volume of
+a storage or distribution medium does not bring the other work under
+the scope of this License.
+
+ 3. You may opt to apply the terms of the ordinary GNU General Public
+License instead of this License to a given copy of the Library. To do
+this, you must alter all the notices that refer to this License, so
+that they refer to the ordinary GNU General Public License, version 2,
+instead of to this License. (If a newer version than version 2 of the
+ordinary GNU General Public License has appeared, then you can specify
+that version instead if you wish.) Do not make any other change in
+these notices.
+
+ Once this change is made in a given copy, it is irreversible for
+that copy, so the ordinary GNU General Public License applies to all
+subsequent copies and derivative works made from that copy.
+
+ This option is useful when you wish to copy part of the code of
+the Library into a program that is not a library.
+
+ 4. You may copy and distribute the Library (or a portion or
+derivative of it, under Section 2) in object code or executable form
+under the terms of Sections 1 and 2 above provided that you accompany
+it with the complete corresponding machine-readable source code, which
+must be distributed under the terms of Sections 1 and 2 above on a
+medium customarily used for software interchange.
+
+ If distribution of object code is made by offering access to copy
+from a designated place, then offering equivalent access to copy the
+source code from the same place satisfies the requirement to
+distribute the source code, even though third parties are not
+compelled to copy the source along with the object code.
+
+ 5. A program that contains no derivative of any portion of the
+Library, but is designed to work with the Library by being compiled or
+linked with it, is called a "work that uses the Library". Such a
+work, in isolation, is not a derivative work of the Library, and
+therefore falls outside the scope of this License.
+
+ However, linking a "work that uses the Library" with the Library
+creates an executable that is a derivative of the Library (because it
+contains portions of the Library), rather than a "work that uses the
+library". The executable is therefore covered by this License.
+Section 6 states terms for distribution of such executables.
+
+ When a "work that uses the Library" uses material from a header file
+that is part of the Library, the object code for the work may be a
+derivative work of the Library even though the source code is not.
+Whether this is true is especially significant if the work can be
+linked without the Library, or if the work is itself a library. The
+threshold for this to be true is not precisely defined by law.
+
+ If such an object file uses only numerical parameters, data
+structure layouts and accessors, and small macros and small inline
+functions (ten lines or less in length), then the use of the object
+file is unrestricted, regardless of whether it is legally a derivative
+work. (Executables containing this object code plus portions of the
+Library will still fall under Section 6.)
+
+ Otherwise, if the work is a derivative of the Library, you may
+distribute the object code for the work under the terms of Section 6.
+Any executables containing that work also fall under Section 6,
+whether or not they are linked directly with the Library itself.
+
+ 6. As an exception to the Sections above, you may also combine or
+link a "work that uses the Library" with the Library to produce a
+work containing portions of the Library, and distribute that work
+under terms of your choice, provided that the terms permit
+modification of the work for the customer's own use and reverse
+engineering for debugging such modifications.
+
+ You must give prominent notice with each copy of the work that the
+Library is used in it and that the Library and its use are covered by
+this License. You must supply a copy of this License. If the work
+during execution displays copyright notices, you must include the
+copyright notice for the Library among them, as well as a reference
+directing the user to the copy of this License. Also, you must do one
+of these things:
+
+ a) Accompany the work with the complete corresponding
+ machine-readable source code for the Library including whatever
+ changes were used in the work (which must be distributed under
+ Sections 1 and 2 above); and, if the work is an executable linked
+ with the Library, with the complete machine-readable "work that
+ uses the Library", as object code and/or source code, so that the
+ user can modify the Library and then relink to produce a modified
+ executable containing the modified Library. (It is understood
+ that the user who changes the contents of definitions files in the
+ Library will not necessarily be able to recompile the application
+ to use the modified definitions.)
+
+ b) Use a suitable shared library mechanism for linking with the
+ Library. A suitable mechanism is one that (1) uses at run time a
+ copy of the library already present on the user's computer system,
+ rather than copying library functions into the executable, and (2)
+ will operate properly with a modified version of the library, if
+ the user installs one, as long as the modified version is
+ interface-compatible with the version that the work was made with.
+
+ c) Accompany the work with a written offer, valid for at
+ least three years, to give the same user the materials
+ specified in Subsection 6a, above, for a charge no more
+ than the cost of performing this distribution.
+
+ d) If distribution of the work is made by offering access to copy
+ from a designated place, offer equivalent access to copy the above
+ specified materials from the same place.
+
+ e) Verify that the user has already received a copy of these
+ materials or that you have already sent this user a copy.
+
+ For an executable, the required form of the "work that uses the
+Library" must include any data and utility programs needed for
+reproducing the executable from it. However, as a special exception,
+the materials to be distributed need not include anything that is
+normally distributed (in either source or binary form) with the major
+components (compiler, kernel, and so on) of the operating system on
+which the executable runs, unless that component itself accompanies
+the executable.
+
+ It may happen that this requirement contradicts the license
+restrictions of other proprietary libraries that do not normally
+accompany the operating system. Such a contradiction means you cannot
+use both them and the Library together in an executable that you
+distribute.
+
+ 7. You may place library facilities that are a work based on the
+Library side-by-side in a single library together with other library
+facilities not covered by this License, and distribute such a combined
+library, provided that the separate distribution of the work based on
+the Library and of the other library facilities is otherwise
+permitted, and provided that you do these two things:
+
+ a) Accompany the combined library with a copy of the same work
+ based on the Library, uncombined with any other library
+ facilities. This must be distributed under the terms of the
+ Sections above.
+
+ b) Give prominent notice with the combined library of the fact
+ that part of it is a work based on the Library, and explaining
+ where to find the accompanying uncombined form of the same work.
+
+ 8. You may not copy, modify, sublicense, link with, or distribute
+the Library except as expressly provided under this License. Any
+attempt otherwise to copy, modify, sublicense, link with, or
+distribute the Library is void, and will automatically terminate your
+rights under this License. However, parties who have received copies,
+or rights, from you under this License will not have their licenses
+terminated so long as such parties remain in full compliance.
+
+ 9. You are not required to accept this License, since you have not
+signed it. However, nothing else grants you permission to modify or
+distribute the Library or its derivative works. These actions are
+prohibited by law if you do not accept this License. Therefore, by
+modifying or distributing the Library (or any work based on the
+Library), you indicate your acceptance of this License to do so, and
+all its terms and conditions for copying, distributing or modifying
+the Library or works based on it.
+
+ 10. Each time you redistribute the Library (or any work based on the
+Library), the recipient automatically receives a license from the
+original licensor to copy, distribute, link with or modify the Library
+subject to these terms and conditions. You may not impose any further
+restrictions on the recipients' exercise of the rights granted herein.
+You are not responsible for enforcing compliance by third parties with
+this License.
+
+ 11. If, as a consequence of a court judgment or allegation of patent
+infringement or for any other reason (not limited to patent issues),
+conditions are imposed on you (whether by court order, agreement or
+otherwise) that contradict the conditions of this License, they do not
+excuse you from the conditions of this License. If you cannot
+distribute so as to satisfy simultaneously your obligations under this
+License and any other pertinent obligations, then as a consequence you
+may not distribute the Library at all. For example, if a patent
+license would not permit royalty-free redistribution of the Library by
+all those who receive copies directly or indirectly through you, then
+the only way you could satisfy both it and this License would be to
+refrain entirely from distribution of the Library.
+
+If any portion of this section is held invalid or unenforceable under any
+particular circumstance, the balance of the section is intended to apply,
+and the section as a whole is intended to apply in other circumstances.
+
+It is not the purpose of this section to induce you to infringe any
+patents or other property right claims or to contest validity of any
+such claims; this section has the sole purpose of protecting the
+integrity of the free software distribution system which is
+implemented by public license practices. Many people have made
+generous contributions to the wide range of software distributed
+through that system in reliance on consistent application of that
+system; it is up to the author/donor to decide if he or she is willing
+to distribute software through any other system and a licensee cannot
+impose that choice.
+
+This section is intended to make thoroughly clear what is believed to
+be a consequence of the rest of this License.
+
+ 12. If the distribution and/or use of the Library is restricted in
+certain countries either by patents or by copyrighted interfaces, the
+original copyright holder who places the Library under this License may add
+an explicit geographical distribution limitation excluding those countries,
+so that distribution is permitted only in or among countries not thus
+excluded. In such case, this License incorporates the limitation as if
+written in the body of this License.
+
+ 13. The Free Software Foundation may publish revised and/or new
+versions of the Lesser General Public License from time to time.
+Such new versions will be similar in spirit to the present version,
+but may differ in detail to address new problems or concerns.
+
+Each version is given a distinguishing version number. If the Library
+specifies a version number of this License which applies to it and
+"any later version", you have the option of following the terms and
+conditions either of that version or of any later version published by
+the Free Software Foundation. If the Library does not specify a
+license version number, you may choose any version ever published by
+the Free Software Foundation.
+
+ 14. If you wish to incorporate parts of the Library into other free
+programs whose distribution conditions are incompatible with these,
+write to the author to ask for permission. For software which is
+copyrighted by the Free Software Foundation, write to the Free
+Software Foundation; we sometimes make exceptions for this. Our
+decision will be guided by the two goals of preserving the free status
+of all derivatives of our free software and of promoting the sharing
+and reuse of software generally.
+
+ NO WARRANTY
+
+ 15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO
+WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW.
+EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR
+OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY
+KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE
+IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE
+LIBRARY IS WITH YOU. SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME
+THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
+
+ 16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN
+WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY
+AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU
+FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR
+CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE
+LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING
+RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A
+FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF
+SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH
+DAMAGES.
+
+ END OF TERMS AND CONDITIONS
+
+ How to Apply These Terms to Your New Libraries
+
+ If you develop a new library, and you want it to be of the greatest
+possible use to the public, we recommend making it free software that
+everyone can redistribute and change. You can do so by permitting
+redistribution under these terms (or, alternatively, under the terms of the
+ordinary General Public License).
+
+ To apply these terms, attach the following notices to the library. It is
+safest to attach them to the start of each source file to most effectively
+convey the exclusion of warranty; and each file should have at least the
+"copyright" line and a pointer to where the full notice is found.
+
+ <one line to give the library's name and a brief idea of what it does.>
+ Copyright (C) <year> <name of author>
+
+ This library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Lesser General Public
+ License as published by the Free Software Foundation; either
+ version 2 of the License, or (at your option) any later version.
+
+ This library 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
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public
+ License along with this library; if not, write to the Free Software
+ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+
+Also add information on how to contact you by electronic and paper mail.
+
+You should also get your employer (if you work as a programmer) or your
+school, if any, to sign a "copyright disclaimer" for the library, if
+necessary. Here is a sample; alter the names:
+
+ Yoyodyne, Inc., hereby disclaims all copyright interest in the
+ library `Frob' (a library for tweaking knobs) written by James Random Hacker.
+
+ <signature of Ty Coon>, 1 April 1990
+ Ty Coon, President of Vice
+
+That's all there is to it!
+
+
Added: sablecc/sablecc/branches/upstream/current/ChangeLog
===================================================================
--- sablecc/sablecc/branches/upstream/current/ChangeLog (rev 0)
+++ sablecc/sablecc/branches/upstream/current/ChangeLog 2012-07-12 16:49:25 UTC (rev 248)
@@ -0,0 +1,435 @@
+This file contains the history of changes.
+
+Time is shown in UTC.
+
+2001-01-30 03:30 Etienne M. Gagnon <egagnon at j-meg.com>
+
+ * README.html, README.html.in, build.xml,
+ src/org/sablecc/sablecc/Version.java,
+ src/org/sablecc/sablecc/alternatives.txt:
+
+ Minor change to node.setXXX in generated code. Updated version.
+
+2001-01-22 23:54 Etienne M. Gagnon <egagnon at j-meg.com>
+
+ * README.html, build.xml, src/org/sablecc/sablecc/Version.java,
+ src/org/sablecc/sablecc/lexer.txt,
+ src/org/sablecc/sablecc/parser.txt:
+
+ Improved error message for missing lexer.dat and parser.dat files.
+
+2001-01-21 16:24 Etienne M. Gagnon <egagnon at j-meg.com>
+
+ * LICENSE, src/org/sablecc/sablecc/SableCC.java:
+
+ Change copyright year.
+
+2001-01-21 16:13 Etienne M. Gagnon <egagnon at j-meg.com>
+
+ * README.html, README.html.in, THANKS, build.xml,
+ src/org/sablecc/sablecc/GenParser.java,
+ src/org/sablecc/sablecc/GenTokens.java,
+ src/org/sablecc/sablecc/Grammar.java,
+ src/org/sablecc/sablecc/LR0Collection.java,
+ src/org/sablecc/sablecc/ResolveIds.java,
+ src/org/sablecc/sablecc/SableCC.java,
+ src/org/sablecc/sablecc/Version.java,
+ src/org/sablecc/sablecc/parser.txt:
+
+ Include token in parser exception. Update version to stable branch
+ 2.16.x.
+
+2001-01-03 03:28 Etienne M. Gagnon <egagnon at j-meg.com>
+
+ * README.html.in, build.xml,
+ src/org/sablecc/sablecc/GenParser.java,
+ src/org/sablecc/sablecc/GenTokens.java,
+ src/org/sablecc/sablecc/Grammar.java,
+ src/org/sablecc/sablecc/ResolveIds.java,
+ src/org/sablecc/sablecc/Symbol.java, README.html,
+ src/org/sablecc/sablecc/Version.java:
+
+ Improved error messages. Updated version to experimental branch
+ 2.15.x.
+
+2000-12-24 19:32 Etienne M. Gagnon <egagnon at j-meg.com>
+
+ * README.html, build.xml, src/org/sablecc/sablecc/Version.java:
+
+ Fixed the build process to get a specific version of ant-task (this
+ is important for historical purpose. Updated project version.
+
+2000-12-22 08:01 Mariusz Nowostawski <mariusz at marni.otago.ac.nz>
+
+ * build.xml:
+
+ Adding support to include sablecc ANT task into the binary jar of
+ sablecc.
+
+2000-12-17 01:44 Etienne M. Gagnon <egagnon at j-meg.com>
+
+ * README.html, README.html.in, build.xml,
+ src/org/sablecc/sablecc/SableCC.java,
+ src/org/sablecc/sablecc/Version.java:
+
+ Update version information.
+
+2000-12-17 01:06 Etienne M. Gagnon <egagnon at j-meg.com>
+
+ * README, README.html, README.html.in, build.xml, bin/sablecc,
+ bin/sablecc.bat, src/org/sablecc/sablecc/SableCC.java:
+
+ Improved the build process.
+
+2000-12-08 17:02 Etienne M. Gagnon <egagnon at j-meg.com>
+
+ * build.xml:
+
+ Touch regenerated files, and add a dependency on build.xml for *.in
+ files.
+
+2000-12-08 07:17 Etienne M. Gagnon <egagnon at j-meg.com>
+
+ * build.xml:
+
+ Added reconfigure build target to force re-expansion of *.in files.
+
+2000-12-08 07:10 Etienne M. Gagnon <egagnon at j-meg.com>
+
+ * README.html, src/org/sablecc/sablecc/Version.java:
+
+ Added generated source files in the CVS repository to simplify the
+ life of casual users.
+
+2000-12-08 07:05 Etienne M. Gagnon <egagnon at j-meg.com>
+
+ * AUTHORS, INSTALL, README, README.html.in, THANKS, build.xml,
+ etc/manifest, src/SableCC.java,
+ src/org/sablecc/sablecc/DisplayLicense.java,
+ src/org/sablecc/sablecc/SableCC.java,
+ src/org/sablecc/sablecc/Version.java.in:
+
+ Fixed the build file to have the following targets: compile, jar,
+ srcdist, dist, clean, distclean.
+
+2000-12-07 14:09 Etienne M. Gagnon <egagnon at j-meg.com>
+
+ * src/org/sablecc/sablecc/SableCC.java:
+
+ Fixed command line syntax.
+
+2000-12-07 08:50 Mariusz Nowostawski <mariusz at marni.otago.ac.nz>
+
+ * src/org/sablecc/sablecc/: DisplayLicense.java, Grammar.java,
+ LR0Collection.java, Production.java, SableCC.java, Symbol.java:
+
+ Removing dependency on static final structures, adding optional
+ reinitialization to the sablecc engine. From the command line it is
+ now possible to invoke SableCC with multiple grammar files to
+ generate multiple parsers with single sablecc instance. From tools
+ it is possible to invoke sablecc engine for mutliple grammar files
+ and reuse all already loaded and initialized classes.
+
+2000-12-07 04:32 Etienne M. Gagnon <egagnon at j-meg.com>
+
+ * AUTHORS:
+
+ Added new author.
+
+2000-12-07 04:24 Mariusz Nowostawski <mariusz at marni.otago.ac.nz>
+
+ * build.xml:
+
+ Adding copyright info. Removing obsolete deltree construct. Fixing
+ etc/manifest in the dist target.
+
+2000-12-07 04:17 Mariusz Nowostawski <mariusz at marni.otago.ac.nz>
+
+ * build.xml, etc/manifest:
+
+ Initial skeleton of built system to work with ANT (ant 1.3
+ compatibile).
+
+2000-12-06 05:05 Etienne M. Gagnon <egagnon at j-meg.com>
+
+ * src/org/sablecc/sablecc/parser/parser.dat:
+
+ Adding file as binary.
+
+2000-12-06 05:04 Etienne M. Gagnon <egagnon at j-meg.com>
+
+ * src/org/sablecc/sablecc/parser/parser.dat:
+
+ Removing file, because not checked-in as binary.
+
+2000-12-06 04:57 Etienne M. Gagnon <egagnon at j-meg.com>
+
+ * AUTHORS, COPYING-LESSER, INSTALL, LICENSE, README, THANKS,
+ src/SableCC.java, src/org/sablecc/sablecc/AcceptStates.java,
+ src/org/sablecc/sablecc/BooleanCast.java,
+ src/org/sablecc/sablecc/Cast.java,
+ src/org/sablecc/sablecc/CharSet.java,
+ src/org/sablecc/sablecc/ConstructNFA.java,
+ src/org/sablecc/sablecc/DFA.java,
+ src/org/sablecc/sablecc/DisplayLicense.java,
+ src/org/sablecc/sablecc/GenAlts.java,
+ src/org/sablecc/sablecc/GenAnalyses.java,
+ src/org/sablecc/sablecc/GenLexer.java,
+ src/org/sablecc/sablecc/GenParser.java,
+ src/org/sablecc/sablecc/GenProds.java,
+ src/org/sablecc/sablecc/GenTokens.java,
+ src/org/sablecc/sablecc/GenUtils.java,
+ src/org/sablecc/sablecc/Grammar.java,
+ src/org/sablecc/sablecc/IntSet.java,
+ src/org/sablecc/sablecc/IntegerCast.java,
+ src/org/sablecc/sablecc/IntegerComparator.java,
+ src/org/sablecc/sablecc/LR0Collection.java,
+ src/org/sablecc/sablecc/LR0Item.java,
+ src/org/sablecc/sablecc/LR0ItemAndSetPair.java,
+ src/org/sablecc/sablecc/LR0ItemSet.java,
+ src/org/sablecc/sablecc/LR1Collection.java,
+ src/org/sablecc/sablecc/LR1Item.java,
+ src/org/sablecc/sablecc/LR1ItemSet.java,
+ src/org/sablecc/sablecc/ListCast.java,
+ src/org/sablecc/sablecc/MacroExpander.java,
+ src/org/sablecc/sablecc/NFA.java,
+ src/org/sablecc/sablecc/NoCast.java,
+ src/org/sablecc/sablecc/NodeCast.java,
+ src/org/sablecc/sablecc/NodeComparator.java,
+ src/org/sablecc/sablecc/Production.java,
+ src/org/sablecc/sablecc/ResolveIds.java,
+ src/org/sablecc/sablecc/SableCC.java,
+ src/org/sablecc/sablecc/StringCast.java,
+ src/org/sablecc/sablecc/StringComparator.java,
+ src/org/sablecc/sablecc/Switch.java,
+ src/org/sablecc/sablecc/Switchable.java,
+ src/org/sablecc/sablecc/Symbol.java,
+ src/org/sablecc/sablecc/SymbolSet.java,
+ src/org/sablecc/sablecc/Transitions.java,
+ src/org/sablecc/sablecc/TypedLinkedList.java,
+ src/org/sablecc/sablecc/TypedTreeMap.java,
+ src/org/sablecc/sablecc/alternatives.txt,
+ src/org/sablecc/sablecc/analyses.txt,
+ src/org/sablecc/sablecc/lexer.txt,
+ src/org/sablecc/sablecc/parser.txt,
+ src/org/sablecc/sablecc/productions.txt,
+ src/org/sablecc/sablecc/tokens.txt,
+ src/org/sablecc/sablecc/utils.txt,
+ src/org/sablecc/sablecc/analysis/Analysis.java,
+ src/org/sablecc/sablecc/analysis/AnalysisAdapter.java,
+ src/org/sablecc/sablecc/analysis/DepthFirstAdapter.java,
+ src/org/sablecc/sablecc/lexer/Lexer.java,
+ src/org/sablecc/sablecc/lexer/LexerException.java,
+ src/org/sablecc/sablecc/node/Alt.java,
+ src/org/sablecc/sablecc/node/Alt1.java,
+ src/org/sablecc/sablecc/node/Alt2.java,
+ src/org/sablecc/sablecc/node/AltName.java,
+ src/org/sablecc/sablecc/node/AltName1.java,
+ src/org/sablecc/sablecc/node/AltNameOpt.java,
+ src/org/sablecc/sablecc/node/AltNameOpt1.java,
+ src/org/sablecc/sablecc/node/AltNameOpt2.java,
+ src/org/sablecc/sablecc/node/Alts.java,
+ src/org/sablecc/sablecc/node/Alts1.java,
+ src/org/sablecc/sablecc/node/AltsTail.java,
+ src/org/sablecc/sablecc/node/AltsTail1.java,
+ src/org/sablecc/sablecc/node/AltsTails.java,
+ src/org/sablecc/sablecc/node/AltsTails1.java,
+ src/org/sablecc/sablecc/node/AltsTails2.java,
+ src/org/sablecc/sablecc/node/Basic.java,
+ src/org/sablecc/sablecc/node/Basic1.java,
+ src/org/sablecc/sablecc/node/Basic2.java,
+ src/org/sablecc/sablecc/node/Basic3.java,
+ src/org/sablecc/sablecc/node/Basic4.java,
+ src/org/sablecc/sablecc/node/Basic5.java,
+ src/org/sablecc/sablecc/node/BinOp.java,
+ src/org/sablecc/sablecc/node/BinOp1.java,
+ src/org/sablecc/sablecc/node/BinOp2.java,
+ src/org/sablecc/sablecc/node/Concat.java,
+ src/org/sablecc/sablecc/node/Concat1.java,
+ src/org/sablecc/sablecc/node/EOF.java,
+ src/org/sablecc/sablecc/node/Elem.java,
+ src/org/sablecc/sablecc/node/Elem1.java,
+ src/org/sablecc/sablecc/node/ElemName.java,
+ src/org/sablecc/sablecc/node/ElemName1.java,
+ src/org/sablecc/sablecc/node/ElemNameOpt.java,
+ src/org/sablecc/sablecc/node/ElemNameOpt1.java,
+ src/org/sablecc/sablecc/node/ElemNameOpt2.java,
+ src/org/sablecc/sablecc/node/Elems.java,
+ src/org/sablecc/sablecc/node/Elems1.java,
+ src/org/sablecc/sablecc/node/Elems2.java,
+ src/org/sablecc/sablecc/node/Grammar.java,
+ src/org/sablecc/sablecc/node/Grammar1.java,
+ src/org/sablecc/sablecc/node/HelperDef.java,
+ src/org/sablecc/sablecc/node/HelperDef1.java,
+ src/org/sablecc/sablecc/node/HelperDefs.java,
+ src/org/sablecc/sablecc/node/HelperDefs1.java,
+ src/org/sablecc/sablecc/node/HelperDefs2.java,
+ src/org/sablecc/sablecc/node/Helpers.java,
+ src/org/sablecc/sablecc/node/Helpers1.java,
+ src/org/sablecc/sablecc/node/HelpersOpt.java,
+ src/org/sablecc/sablecc/node/HelpersOpt1.java,
+ src/org/sablecc/sablecc/node/HelpersOpt2.java,
+ src/org/sablecc/sablecc/node/IdList.java,
+ src/org/sablecc/sablecc/node/IdList1.java,
+ src/org/sablecc/sablecc/node/IdListOpt.java,
+ src/org/sablecc/sablecc/node/IdListOpt1.java,
+ src/org/sablecc/sablecc/node/IdListTail.java,
+ src/org/sablecc/sablecc/node/IdListTail1.java,
+ src/org/sablecc/sablecc/node/IdListTails.java,
+ src/org/sablecc/sablecc/node/IdListTails1.java,
+ src/org/sablecc/sablecc/node/IdListTails2.java,
+ src/org/sablecc/sablecc/node/IgnTokens.java,
+ src/org/sablecc/sablecc/node/IgnTokens1.java,
+ src/org/sablecc/sablecc/node/IgnTokensOpt.java,
+ src/org/sablecc/sablecc/node/IgnTokensOpt1.java,
+ src/org/sablecc/sablecc/node/IgnTokensOpt2.java,
+ src/org/sablecc/sablecc/node/LookAhead.java,
+ src/org/sablecc/sablecc/node/LookAhead1.java,
+ src/org/sablecc/sablecc/node/LookAheadOpt.java,
+ src/org/sablecc/sablecc/node/LookAheadOpt1.java,
+ src/org/sablecc/sablecc/node/LookAheadOpt2.java,
+ src/org/sablecc/sablecc/node/Node.java,
+ src/org/sablecc/sablecc/node/PChar.java,
+ src/org/sablecc/sablecc/node/PChar1.java,
+ src/org/sablecc/sablecc/node/PChar2.java,
+ src/org/sablecc/sablecc/node/PChar3.java,
+ src/org/sablecc/sablecc/node/PSet.java,
+ src/org/sablecc/sablecc/node/PSet1.java,
+ src/org/sablecc/sablecc/node/PSet2.java,
+ src/org/sablecc/sablecc/node/Package.java,
+ src/org/sablecc/sablecc/node/Package1.java,
+ src/org/sablecc/sablecc/node/PackageOpt.java,
+ src/org/sablecc/sablecc/node/PackageOpt1.java,
+ src/org/sablecc/sablecc/node/PackageOpt2.java,
+ src/org/sablecc/sablecc/node/PkgId.java,
+ src/org/sablecc/sablecc/node/PkgId1.java,
+ src/org/sablecc/sablecc/node/PkgId10.java,
+ src/org/sablecc/sablecc/node/PkgId2.java,
+ src/org/sablecc/sablecc/node/PkgId3.java,
+ src/org/sablecc/sablecc/node/PkgId4.java,
+ src/org/sablecc/sablecc/node/PkgId5.java,
+ src/org/sablecc/sablecc/node/PkgId6.java,
+ src/org/sablecc/sablecc/node/PkgId7.java,
+ src/org/sablecc/sablecc/node/PkgId8.java,
+ src/org/sablecc/sablecc/node/PkgId9.java,
+ src/org/sablecc/sablecc/node/PkgName.java,
+ src/org/sablecc/sablecc/node/PkgName1.java,
+ src/org/sablecc/sablecc/node/PkgNameOpt.java,
+ src/org/sablecc/sablecc/node/PkgNameOpt1.java,
+ src/org/sablecc/sablecc/node/PkgNameTail.java,
+ src/org/sablecc/sablecc/node/PkgNameTail1.java,
+ src/org/sablecc/sablecc/node/PkgNameTails.java,
+ src/org/sablecc/sablecc/node/PkgNameTails1.java,
+ src/org/sablecc/sablecc/node/PkgNameTails2.java,
+ src/org/sablecc/sablecc/node/Prod.java,
+ src/org/sablecc/sablecc/node/Prod1.java,
+ src/org/sablecc/sablecc/node/Prods.java,
+ src/org/sablecc/sablecc/node/Prods1.java,
+ src/org/sablecc/sablecc/node/Prods2.java,
+ src/org/sablecc/sablecc/node/Productions.java,
+ src/org/sablecc/sablecc/node/Productions1.java,
+ src/org/sablecc/sablecc/node/ProductionsOpt.java,
+ src/org/sablecc/sablecc/node/ProductionsOpt1.java,
+ src/org/sablecc/sablecc/node/ProductionsOpt2.java,
+ src/org/sablecc/sablecc/node/RegExp.java,
+ src/org/sablecc/sablecc/node/RegExp1.java,
+ src/org/sablecc/sablecc/node/RegExpTail.java,
+ src/org/sablecc/sablecc/node/RegExpTail1.java,
+ src/org/sablecc/sablecc/node/RegExpTails.java,
+ src/org/sablecc/sablecc/node/RegExpTails1.java,
+ src/org/sablecc/sablecc/node/RegExpTails2.java,
+ src/org/sablecc/sablecc/node/Specifier.java,
+ src/org/sablecc/sablecc/node/Specifier1.java,
+ src/org/sablecc/sablecc/node/Specifier2.java,
+ src/org/sablecc/sablecc/node/SpecifierOpt.java,
+ src/org/sablecc/sablecc/node/SpecifierOpt1.java,
+ src/org/sablecc/sablecc/node/SpecifierOpt2.java,
+ src/org/sablecc/sablecc/node/Start.java,
+ src/org/sablecc/sablecc/node/Start1.java,
+ src/org/sablecc/sablecc/node/StateList.java,
+ src/org/sablecc/sablecc/node/StateList1.java,
+ src/org/sablecc/sablecc/node/StateListOpt.java,
+ src/org/sablecc/sablecc/node/StateListOpt1.java,
+ src/org/sablecc/sablecc/node/StateListOpt2.java,
+ src/org/sablecc/sablecc/node/StateListTail.java,
+ src/org/sablecc/sablecc/node/StateListTail1.java,
+ src/org/sablecc/sablecc/node/StateListTails.java,
+ src/org/sablecc/sablecc/node/StateListTails1.java,
+ src/org/sablecc/sablecc/node/StateListTails2.java,
+ src/org/sablecc/sablecc/node/States.java,
+ src/org/sablecc/sablecc/node/States1.java,
+ src/org/sablecc/sablecc/node/StatesOpt.java,
+ src/org/sablecc/sablecc/node/StatesOpt1.java,
+ src/org/sablecc/sablecc/node/StatesOpt2.java,
+ src/org/sablecc/sablecc/node/TArrow.java,
+ src/org/sablecc/sablecc/node/TBar.java,
+ src/org/sablecc/sablecc/node/TBlank.java,
+ src/org/sablecc/sablecc/node/TChar.java,
+ src/org/sablecc/sablecc/node/TColon.java,
+ src/org/sablecc/sablecc/node/TComma.java,
+ src/org/sablecc/sablecc/node/TComment.java,
+ src/org/sablecc/sablecc/node/TDDot.java,
+ src/org/sablecc/sablecc/node/TDecChar.java,
+ src/org/sablecc/sablecc/node/TDot.java,
+ src/org/sablecc/sablecc/node/TEqual.java,
+ src/org/sablecc/sablecc/node/THelpers.java,
+ src/org/sablecc/sablecc/node/THexChar.java,
+ src/org/sablecc/sablecc/node/TId.java,
+ src/org/sablecc/sablecc/node/TIgnored.java,
+ src/org/sablecc/sablecc/node/TLBkt.java,
+ src/org/sablecc/sablecc/node/TLBrace.java,
+ src/org/sablecc/sablecc/node/TLPar.java,
+ src/org/sablecc/sablecc/node/TMinus.java,
+ src/org/sablecc/sablecc/node/TPackage.java,
+ src/org/sablecc/sablecc/node/TPkgId.java,
+ src/org/sablecc/sablecc/node/TPlus.java,
+ src/org/sablecc/sablecc/node/TProductionSpecifier.java,
+ src/org/sablecc/sablecc/node/TProductions.java,
+ src/org/sablecc/sablecc/node/TQMark.java,
+ src/org/sablecc/sablecc/node/TRBkt.java,
+ src/org/sablecc/sablecc/node/TRBrace.java,
+ src/org/sablecc/sablecc/node/TRPar.java,
+ src/org/sablecc/sablecc/node/TSemicolon.java,
+ src/org/sablecc/sablecc/node/TSlash.java,
+ src/org/sablecc/sablecc/node/TStar.java,
+ src/org/sablecc/sablecc/node/TStates.java,
+ src/org/sablecc/sablecc/node/TString.java,
+ src/org/sablecc/sablecc/node/TTokenSpecifier.java,
+ src/org/sablecc/sablecc/node/TTokens.java,
+ src/org/sablecc/sablecc/node/Token.java,
+ src/org/sablecc/sablecc/node/TokenDef.java,
+ src/org/sablecc/sablecc/node/TokenDef1.java,
+ src/org/sablecc/sablecc/node/TokenDefs.java,
+ src/org/sablecc/sablecc/node/TokenDefs1.java,
+ src/org/sablecc/sablecc/node/TokenDefs2.java,
+ src/org/sablecc/sablecc/node/Tokens.java,
+ src/org/sablecc/sablecc/node/Tokens1.java,
+ src/org/sablecc/sablecc/node/TokensOpt.java,
+ src/org/sablecc/sablecc/node/TokensOpt1.java,
+ src/org/sablecc/sablecc/node/TokensOpt2.java,
+ src/org/sablecc/sablecc/node/Transition.java,
+ src/org/sablecc/sablecc/node/Transition1.java,
+ src/org/sablecc/sablecc/node/TransitionOpt.java,
+ src/org/sablecc/sablecc/node/TransitionOpt1.java,
+ src/org/sablecc/sablecc/node/TransitionOpt2.java,
+ src/org/sablecc/sablecc/node/UnExp.java,
+ src/org/sablecc/sablecc/node/UnExp1.java,
+ src/org/sablecc/sablecc/node/UnExps.java,
+ src/org/sablecc/sablecc/node/UnExps1.java,
+ src/org/sablecc/sablecc/node/UnExps2.java,
+ src/org/sablecc/sablecc/node/UnOp.java,
+ src/org/sablecc/sablecc/node/UnOp1.java,
+ src/org/sablecc/sablecc/node/UnOp2.java,
+ src/org/sablecc/sablecc/node/UnOp3.java,
+ src/org/sablecc/sablecc/node/UnOpOpt.java,
+ src/org/sablecc/sablecc/node/UnOpOpt1.java,
+ src/org/sablecc/sablecc/node/UnOpOpt2.java,
+ src/org/sablecc/sablecc/parser/Parser.java,
+ src/org/sablecc/sablecc/parser/ParserException.java,
+ src/org/sablecc/sablecc/parser/State.java,
+ src/org/sablecc/sablecc/parser/TokenIndex.java,
+ src/org/sablecc/sablecc/parser/parser.dat:
+
+ Changed the directory structure. Use the org.sablecc.sablecc
+ package.
+
Added: sablecc/sablecc/branches/upstream/current/ChangeLog.old
===================================================================
--- sablecc/sablecc/branches/upstream/current/ChangeLog.old (rev 0)
+++ sablecc/sablecc/branches/upstream/current/ChangeLog.old 2012-07-12 16:49:25 UTC (rev 248)
@@ -0,0 +1,38 @@
+2000-03-04 Etienne M. Gagnon <egagnon at j-meg.com>
+
+ * ca/mcgill/sable/sablecc/LR0Collection.java:
+
+ Added a "names" vector to hold the name for each set that
+ corresponds to the shortest stack path to the state
+ represented by the set.
+
+ * ca/mcgill/sable/sablecc/Grammar.java,
+ ca/mcgill/sable/sablecc/LR0Item.java,
+ ca/mcgill/sable/sablecc/LR1Item.java,
+ ca/mcgill/sable/sablecc/LR1ItemSet.java:
+
+ Fixed bugs in Ben Menking's code. Changed variable names to
+ be more intuitive. Improved output look. Optimized the code.
+
+2000-03-04 Ben Menking <bmenking at bigfoot.com>
+
+ * ca/mcgill/sable/sablecc/Grammar.java,
+ ca/mcgill/sable/sablecc/LR0Item.java,
+ ca/mcgill/sable/sablecc/LR1Item.java,
+ ca/mcgill/sable/sablecc/LR1ItemSet.java,
+ ca/mcgill/sable/sablecc/Production.java, SableCC-LICENSE:
+
+ [First integrated contribution into SableCC]
+ Modified SableCC's dump that results from shift-reduce and
+ reduce-reduce errors to:
+ - Indicate the current position in a production using a *
+ symbol instead of using a position number
+ - Filtering out the state's irrelevant productions and
+ displaying only those that are directly involved in the
+ conflict.
+
+2000-03-03 Etienne M. Gagnon <egagnon at j-meg.com>
+
+ Released SableCC version 2.12.
+ [Up to this point, all the code has been solely written by
+ Etienne M. Gagnon <egagnon at j-meg.com>.]
Added: sablecc/sablecc/branches/upstream/current/LICENSE
===================================================================
--- sablecc/sablecc/branches/upstream/current/LICENSE (rev 0)
+++ sablecc/sablecc/branches/upstream/current/LICENSE 2012-07-12 16:49:25 UTC (rev 248)
@@ -0,0 +1,23 @@
+SableCC, an object-oriented compiler framework.
+Copyright (C) 1997-2001 Etienne M. Gagnon <egagnon at j-meg.com> and
+others. All rights reserved.
+
+See the file "AUTHORS" for the name of all copyright holders.
+
+This program is free software; you can redistribute it and/or modify it
+under the terms of the GNU Lesser General Public License as published
+by the Free Software Foundation; either version 2.1 of the License, 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
+Lesser General Public License for more details.
+
+You should have received a copy of the GNU Lesser General Public
+License along with this program in the file "COPYING-LESSER"; if not,
+write to the Free Software Foundation, Inc., 59 Temple Place,
+Suite 330, Boston, MA 02111-1307 USA
+
+The SableCC web site is located at:
+http://www.sablecc.org/
Added: sablecc/sablecc/branches/upstream/current/README.html
===================================================================
--- sablecc/sablecc/branches/upstream/current/README.html (rev 0)
+++ sablecc/sablecc/branches/upstream/current/README.html 2012-07-12 16:49:25 UTC (rev 248)
@@ -0,0 +1,264 @@
+<HTML>
+ <HEAD>
+ <TITLE>SableCC 2.16.2 - Read Me</TITLE>
+ </HEAD>
+
+ <BODY bgcolor="#FFFFFF">
+
+ <A NAME="top"></A>
+ <CENTER><TABLE WIDTH="100%" BGCOLOR="#F2FF80" >
+ <TR ALIGN=CENTER>
+ <TD>
+ <H1><B><I><FONT size=+4>SableCC</FONT></I></B>
+ <!-- <FONT COLOR="red"><B>experimental version</B></FONT> -->
+ <!-- -->version<!-- -->
+ 2.16.2</H1>
+ <H2>ReadMe</H2>
+ </TD>
+ </TR>
+ </TABLE></CENTER>
+
+ <P>Welcome to <B><I><FONT size=+1>SableCC</FONT></I></B> version 2.16.2.</P>
+ <!--
+ <P><FONT COLOR="red"><B>WARNING:</B></FONT> This is an EXPERIMENTAL version. <BR>
+ Each <B><I><FONT size=+1>SableCC</FONT></I></B> version is composed of three integers:
+ "<i>major.minor.revision</i>".<BR>
+ If you want a <B>stable</B> version, pick a version with an <b>even</b>
+ <i>minor</i> integer. (e.g. 14, 16, ...)</P>
+ -->
+ <P>Please read this document carefully.</P>
+
+ <A NAME="content"></A>
+ <TABLE WIDTH="100%" BGCOLOR="#F2FF80" >
+ <TR>
+ <TD>
+ <TABLE WIDTH="100%" >
+ <TR VALIGN=TOP>
+ <TD>
+ <H2>Content</H2>
+ </TD>
+ <TD ALIGN=RIGHT><A href="#top">top</A></TD>
+ </TR>
+ </TABLE>
+ </TD>
+ </TR>
+ </TABLE>
+
+ <UL>
+ <LI>
+ <A href="#start">Getting Started</A>
+ </LI>
+
+ <LI>
+ <A href="#license">License</A>
+ </LI>
+
+ <LI>
+ <A href="#documentation">Documentation</A>
+ </LI>
+
+ <LI>
+ <A href="#help">Getting Help</A>
+ </LI>
+
+ <LI>
+ <A href="#mailing-list">Mailing-list</A>
+ </LI>
+
+ <LI>
+ <A href="#donations">Donations</A>
+ </LI>
+ </UL>
+
+ <A NAME="start"></A>
+ <TABLE WIDTH="100%" BGCOLOR="#F2FF80" >
+ <TR>
+ <TD>
+ <TABLE WIDTH="100%" >
+ <TR VALIGN=TOP>
+ <TD>
+ <H2>Getting Started</H2>
+ </TD>
+ <TD ALIGN=RIGHT><A href="#content">content</A></TD>
+ </TR>
+ </TABLE>
+ </TD>
+ </TR>
+ </TABLE>
+
+ <P>Here are the minimal steps to get <B><I><FONT size=+1>SableCC</FONT></I></B>
+ running.</P>
+
+ <H3>If you got <TT>sablecc-2.16.2.tar.gz</TT> (or <TT>sablecc-2.16.2.zip</TT>)</H3>
+
+ <OL>
+ <LI>
+ Decompress the file <TT>sablecc-2.16.2.tar.gz</TT> (or <TT>sablecc-2.16.2.zip</TT>):
+ <TT><PRE>
+ tar -xzvf sablecc-2.16.2.tar.gz
+ </PRE></TT> or <TT><PRE>
+ jar -xvf sablecc-2.16.2.zip
+ </PRE></TT>
+ </LI>
+
+ <LI>
+ Go into the in <TT>sablecc-2.16.2</TT> directory:
+ <TT><PRE>
+ cd sablecc-2.16.2
+ </PRE></TT>
+ </LI>
+
+ <LI>
+ You will find an executable <TT>sablecc.jar</TT> file in the <TT>lib</TT>
+ directory:
+ <TT><PRE>
+ java -jar lib/sablecc.jar
+ </PRE></TT>
+ </LI>
+ </OL>
+ <P>This is it. If you have <A href="http://jakarta.apache.org/ant/">Jakarta-Ant</A>
+ and <A href="http://xml.apache.org/xerces-j/">Xerces</A> installed, you
+ can install <B><I><FONT size=+1>SableCC</FONT></I></B> with the command:
+ <TT><PRE>
+ ant -Dinstall.dir=<I>destination</I> install
+ </PRE></TT>
+ </P>
+ <P>If you want to manually install <B><I><FONT size=+1>SableCC</FONT></I></B>, you must
+ copy (and edit) the files <TT>bin/sablecc</TT> and <TT>lib/sablecc.jar</TT>
+ (or <TT>bin\sablecc.bat</TT> and <TT>lib\sablecc.jar</TT>) to an appropriate
+ location, and set your PATH environment variable appropriately.
+ </P>
+
+ <H3>If you got <TT>sablecc-2.16.2-src.tar.gz</TT> (sources-only package)</H3>
+
+ <OL>
+ <LI>
+ Decompress the file <TT>sablecc-2.16.2-src.tar.gz</TT>:
+ <TT><PRE>
+ tar -xzvf sablecc-2.16.2-src.tar.gz
+ </PRE></TT>
+ </LI>
+
+ <LI>
+ Go into the in <TT>sablecc-2.16.2</TT> directory:
+ <TT><PRE>
+ cd sablecc-2.16.2
+ </PRE></TT>
+ </LI>
+
+ <LI>
+ If you want an automatic build process, you need to have <A href="http://jakarta.apache.org/ant/">Jakarta-Ant</A>
+ and <A href="http://xml.apache.org/xerces-j/">Xerces</A> installed.
+ Simply type:
+ <TT><PRE>
+ ant -Dinstall.dir=<I>destination</I> install
+ </PRE></TT>
+ </LI>
+ </OL>
+
+ <A NAME="license"></A>
+ <TABLE WIDTH="100%" BGCOLOR="#F2FF80" >
+ <TR>
+ <TD>
+ <TABLE WIDTH="100%" >
+ <TR VALIGN=TOP>
+ <TD>
+ <H2>License</H2>
+ </TD>
+ <TD ALIGN=RIGHT><A href="#content">content</A></TD>
+ </TR>
+ </TABLE>
+ </TD>
+ </TR>
+ </TABLE>
+
+ <P><B><I><FONT size=+1>SableCC</FONT></I></B> is covered by the GNU Lesser
+ General Public License. You can view the copyright notice and the exact
+ terms of the license in the files <A href="LICENSE">LICENSE</A>, <A href="AUTHORS">AUTHORS</A>
+ and <A href="COPYING-LESSER">COPYING-LESSER</A>.</P>
+
+ <A NAME="documentation"></A>
+ <TABLE WIDTH="100%" BGCOLOR="#F2FF80" >
+ <TR>
+ <TD>
+ <TABLE WIDTH="100%" >
+ <TR VALIGN=TOP>
+ <TD>
+ <H2>Documentation</H2>
+ </TD>
+ <TD ALIGN=RIGHT><A href="#content">content</A></TD>
+ </TR>
+ </TABLE>
+ </TD>
+ </TR>
+ </TABLE>
+
+ <P>You can find complete and detailed documentation on the <B><I><FONT size=+1>SableCC</FONT></I></B>framework
+ and syntax at the following site: <A href="http://www.sablecc.org/">http://www.sablecc.org/</A>.</P>
+
+ <A NAME="help"></A>
+ <TABLE WIDTH="100%" BGCOLOR="#F2FF80" >
+ <TR>
+ <TD>
+ <TABLE WIDTH="100%" >
+ <TR VALIGN=TOP>
+ <TD>
+ <H2>Getting Help</H2>
+ </TD>
+ <TD ALIGN=RIGHT><A href="#content">content</A></TD>
+ </TR>
+ </TABLE>
+ </TD>
+ </TR>
+ </TABLE>
+
+ <P>The easiest way of obtaining help is to get on the <I><A href="#mailing-list"><B><FONT size=+1>SableCC</FONT></B>
+ mailing-list</A></I>. Many <B><I><FONT size=+1>SableCC</FONT></I></B> users
+ around the world are already on this mailing-list. This is the best pool
+ of information available to you.</P>
+
+ <A NAME="mailing-list"></A>
+ <TABLE WIDTH="100%" BGCOLOR="#F2FF80" >
+ <TR>
+ <TD>
+ <TABLE WIDTH="100%" >
+ <TR VALIGN=TOP>
+ <TD>
+ <H2>Mailing-list</H2>
+ </TD>
+ <TD ALIGN=RIGHT><A href="#content">content</A></TD>
+ </TR>
+ </TABLE>
+ </TD>
+ </TR>
+ </TABLE>
+
+ <P>To get on the <I><B><FONT size=+1>SableCC</FONT></B> mailing-list</I>,
+ send an e-mail message to <A href="mailto:majordomo at sable.mcgill.ca">majordomo at sable.mcgill.ca</A>.
+ Put '<B>subscribe sablecc-list your at email.address</B>' in the <B>body</B>
+ of the message. Once you are on the list, you can send your questions.</P>
+
+ <A NAME="donations"></A>
+ <TABLE WIDTH="100%" BGCOLOR="#F2FF80" >
+ <TR>
+ <TD>
+ <TABLE WIDTH="100%" >
+ <TR VALIGN=TOP>
+ <TD>
+ <H2>Donations</H2>
+ </TD>
+ <TD ALIGN=RIGHT><A href="#content">content</A></TD>
+ </TR>
+ </TABLE>
+ </TD>
+ </TR>
+ </TABLE>
+
+ <P>You are very welcome to express your appreciation of <B><I><FONT size=+1>SableCC</FONT></I></B> through any kind of donation.
+ If you would like to make a financial donation
+ (or another kind of donation), or if you would like to fund further development of
+ <B><I><FONT size=+1>SableCC</FONT></I></B>, please send an email to Etienne M. Gagnon
+ (<A href="mailto:egagnon at j-meg.com">egagnon at j-meg.com</A>). Thank you in advance. </P>
+
+ </BODY>
+</HTML>
Added: sablecc/sablecc/branches/upstream/current/THANKS
===================================================================
--- sablecc/sablecc/branches/upstream/current/THANKS (rev 0)
+++ sablecc/sablecc/branches/upstream/current/THANKS 2012-07-12 16:49:25 UTC (rev 248)
@@ -0,0 +1,18 @@
+THANKS file.
+
+SableCC has been initially developed by Etienne M. Gagnon as his
+M.Sc. research project.
+
+Many people have contributed to SableCC by reporting problems,
+suggesting various improvements or providing other services. Here is
+a list of (some of) these people and organizations. Please help us
+keep it complete and exempt of errors.
+
+Thanks to you
+-------------
+
+* Prof. Laurie J. Hendren <hendren at sable.mcgill.ca>:
+ research advisor
+
+* Will Hartung <willh at msoft.com>
+ small patch for including token in parser exception
Added: sablecc/sablecc/branches/upstream/current/bin/sablecc
===================================================================
--- sablecc/sablecc/branches/upstream/current/bin/sablecc (rev 0)
+++ sablecc/sablecc/branches/upstream/current/bin/sablecc 2012-07-12 16:49:25 UTC (rev 248)
@@ -0,0 +1,11 @@
+#!/bin/sh
+#
+# * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+# * This file is part of SableCC. *
+# * See the file "LICENSE" for copyright information and the *
+# * terms and conditions for copying, distribution and *
+# * modification of SableCC. *
+# * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+#
+# IMPORTANT: Put the absolute path to sablecc.jar below.
+java -jar lib/sablecc.jar $*
Added: sablecc/sablecc/branches/upstream/current/bin/sablecc.bat
===================================================================
--- sablecc/sablecc/branches/upstream/current/bin/sablecc.bat (rev 0)
+++ sablecc/sablecc/branches/upstream/current/bin/sablecc.bat 2012-07-12 16:49:25 UTC (rev 248)
@@ -0,0 +1,10 @@
+rem * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+rem * This file is part of SableCC. *
+rem * See the file "LICENSE" for copyright information and the *
+rem * terms and conditions for copying, distribution and *
+rem * modification of SableCC. *
+rem * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+rem
+rem IMPORTANT: Put the absolute path to sablecc.jar below.
+rem
+java -jar lib\sablecc.jar %1 %2 %3 %4 %5 %6 %7 %8 %9
Added: sablecc/sablecc/branches/upstream/current/build.xml
===================================================================
--- sablecc/sablecc/branches/upstream/current/build.xml (rev 0)
+++ sablecc/sablecc/branches/upstream/current/build.xml 2012-07-12 16:49:25 UTC (rev 248)
@@ -0,0 +1,472 @@
+<?xml version="1.0"?>
+
+<!--
+* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+* This file is part of SableCC. *
+* See the file "LICENSE" for copyright information and the *
+* terms and conditions for copying, distribution and *
+* modification of SableCC. *
+* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+-->
+
+<project name="sablecc" default="compile" basedir=".">
+
+<!--
+=====================================
+Global Properties
+=====================================
+-->
+
+ <property name="package" value="sablecc"/>
+ <property name="version" value="2.16.2"/>
+
+ <property name="src.dir" value="src"/>
+ <property name="classes.dir" value="classes"/>
+ <property name="package.name" value="${package}-${version}"/>
+ <property name="lib.dir" value="lib"/>
+ <property name="bin.dir" value="bin"/>
+ <property name="sablecc-anttask.version" value="1.0.1"/>
+ <property name="manifest" value="etc/manifest"/>
+
+<!-- we have to force modern/classic, other compilers might not work, including jikes 1.12 -->
+ <property name="build.compiler" value="modern" />
+
+ <property file="${user.home}/.ant.properties" />
+
+
+<!--
+=====================================
+Configure Target
+=====================================
+-->
+
+ <target
+ name="configure"
+ depends="version-in,readme-in"
+ description="expand *.in files"
+ />
+
+ <target
+ name="version-in"
+ depends="version-in-available,version-in-notRequired"
+ if="version-in.available"
+ unless="version-in.notRequired"
+ >
+
+ <copy file="${version-in.file}.in" tofile="${version-in.file}"/>
+ <replace file="${version-in.file}" token="@version@" value="${version}"/>
+ <touch file="${version-in.file}"/>
+
+ </target>
+
+ <target name="version-in-name">
+
+ <property
+ name="version-in.file"
+ value="${src.dir}/org/sablecc/sablecc/Version.java"
+ />
+
+ </target>
+
+ <target name="version-in-available" depends="version-in-name">
+
+ <available property="version-in.available" file="${version-in.file}.in"/>
+
+ </target>
+
+ <target name="version-in-notRequired" depends="version-in-name">
+
+ <uptodate property="version-in.notRequired" targetfile="${version-in.file}">
+ <srcfiles dir= "" includes="${version-in.file}.in"/>
+ <srcfiles dir= "" includes="build.xml"/>
+ </uptodate>
+
+ </target>
+
+ <target
+ name="readme-in"
+ depends="readme-in-available,readme-in-notRequired"
+ if="readme-in.available"
+ unless="readme-in.notRequired"
+ >
+
+ <copy file="${readme-in.file}.in" tofile="${readme-in.file}"/>
+ <replace file="${readme-in.file}" token="@version@" value="${version}"/>
+ <touch file="${readme-in.file}"/>
+
+ </target>
+
+ <target name="readme-in-name">
+
+ <property
+ name="readme-in.file"
+ value="README.html"
+ />
+
+ </target>
+
+ <target name="readme-in-available" depends="readme-in-name">
+
+ <available property="readme-in.available" file="${readme-in.file}.in"/>
+
+ </target>
+
+ <target name="readme-in-notRequired" depends="readme-in-name">
+
+ <uptodate property="readme-in.notRequired" targetfile="${readme-in.file}">
+ <srcfiles dir= "" includes="${readme-in.file}.in"/>
+ <srcfiles dir= "" includes="build.xml"/>
+ </uptodate>
+
+ </target>
+
+<!--
+=====================================
+Reconfigure Target
+=====================================
+-->
+
+ <target
+ name="reconfigure"
+ depends="version-in-delete,readme-in-delete,configure"
+ description="force expansion of *.in files"
+ />
+
+ <target
+ name="version-in-delete"
+ depends="version-in-available"
+ if="version-in.available"
+ >
+
+ <delete file="${version-in.file}"/>
+
+ </target>
+
+ <target
+ name="readme-in-delete"
+ depends="readme-in-available"
+ if="readme-in.available"
+ >
+
+ <delete file="${readme-in.file}"/>
+
+ </target>
+
+<!--
+=====================================
+Compile Target
+=====================================
+-->
+
+ <target
+ name="compile"
+ depends="configure"
+ description="compile source files"
+ >
+
+ <mkdir dir="${classes.dir}"/>
+
+ <javac
+ srcdir="${src.dir}"
+ destdir="${classes.dir}"
+ includes="**/*.java"
+ depend="yes"
+ />
+
+ <copy todir="${classes.dir}">
+ <fileset dir="${src.dir}">
+ <include name="**/*.dat"/>
+ <include name="**/*.txt"/>
+ </fileset>
+ </copy>
+
+ <copy todir="${classes.dir}/org/sablecc/sablecc">
+ <fileset dir="${basedir}">
+ <include name="LICENSE"/>
+ <include name="AUTHORS"/>
+ <include name="COPYING-LESSER"/>
+ </fileset>
+ </copy>
+
+ </target>
+
+<!--
+=====================================
+Dist Target
+=====================================
+-->
+
+ <target
+ name="dist"
+ depends="srcdist,jar"
+ description="build main distribution file"
+ >
+
+ <gunzip src="${package.name}-src.tar.gz" dest="${package.name}-src.tar"/>
+ <untar src="${package.name}-src.tar" dest="${basedir}"/>
+
+ <copy todir="${package.name}/lib">
+ <fileset dir="${lib.dir}"/>
+ </copy>
+
+ <tar tarfile="${package.name}.tar" basedir="${basedir}" includes="${package.name}/"/>
+ <gzip zipfile="${package.name}.tar.gz" src="${package.name}.tar"/>
+
+ <delete file="${package.name}.tar"/>
+ <delete file="${package.name}-src.tar"/>
+ <delete dir="${package.name}"/>
+
+ </target>
+
+<!--
+=====================================
+Dist-zip Target
+=====================================
+-->
+
+ <target
+ name="dist-zip"
+ depends="dist"
+ description="build main distribution file in zip format"
+ >
+
+ <gunzip src="${package.name}.tar.gz" dest="${package.name}.tar"/>
+ <untar src="${package.name}.tar" dest="${basedir}"/>
+
+ <zip zipfile="${package.name}.zip" basedir="${basedir}" includes="${package.name}/"/>
+
+ <delete file="${package.name}.tar"/>
+ <delete dir="${package.name}"/>
+
+ </target>
+
+<!--
+=====================================
+Srcdist Target
+=====================================
+-->
+
+ <target
+ name="srcdist"
+ depends="configure,sablecc-anttask_get"
+ description="build source-only distribution"
+ >
+
+ <copy todir="${package.name}/src" includeEmptyDirs="no">
+ <fileset dir="${src.dir}">
+ <include name="**/*.java"/>
+ <include name="**/*.dat"/>
+ <include name="**/*.txt"/>
+ </fileset>
+ </copy>
+
+ <copy todir="${package.name}/bin">
+ <fileset dir="${bin.dir}"/>
+ </copy>
+
+ <copy file="${manifest}" todir="${package.name}/etc"/>
+
+ <copy todir="${package.name}">
+ <fileset dir="${basedir}">
+ <include name="AUTHORS"/>
+ <include name="COPYING-LESSER"/>
+ <include name="ChangeLog"/>
+ <include name="ChangeLog.old"/>
+ <include name="LICENSE"/>
+ <include name="README.html"/>
+ <include name="THANKS"/>
+ <include name="sablecc-anttask-${sablecc-anttask.version}.tar.gz"/>
+ <include name="build.xml"/>
+ </fileset>
+ </copy>
+
+ <copy todir="${package.name}/src/org/sablecc/sablecc">
+ <fileset dir="${basedir}">
+ <include name="LICENSE"/>
+ <include name="AUTHORS"/>
+ <include name="COPYING-LESSER"/>
+ </fileset>
+ </copy>
+
+ <tar tarfile="${package.name}-src.tar" basedir="${basedir}" includes="${package.name}/"/>
+ <gzip zipfile="${package.name}-src.tar.gz" src="${package.name}-src.tar"/>
+
+ <delete file="${package.name}-src.tar"/>
+ <delete dir="${package.name}"/>
+
+ </target>
+
+<!--
+=====================================
+Jar Target
+=====================================
+-->
+
+ <target
+ name="jar"
+ depends="sablecc-anttask_prepare"
+ description="build executable jar"
+ >
+
+ <mkdir dir="${lib.dir}"/>
+
+ <jar
+ jarfile="${lib.dir}/${package}.jar"
+ basedir="${classes.dir}"
+ manifest="${manifest}"
+ />
+
+ </target>
+
+ <target name="sablecc-anttask_check_ready" depends="compile">
+
+ <available
+ property="sablecc-anttask_ready"
+ file="${classes.dir}/org/sablecc/ant/taskdef/Sablecc.class"
+ />
+
+ </target>
+
+ <target name="sablecc-anttask_check_available">
+
+ <available
+ property="sablecc-anttask_available"
+ file="sablecc-anttask-${sablecc-anttask.version}.tar.gz"
+ />
+
+ </target>
+
+ <target
+ name="sablecc-anttask_get"
+ depends="sablecc-anttask_check_available"
+ unless="sablecc-anttask_available"
+ >
+
+ <!-- GET sablecc-anttask-${sablecc-anttask.version}.tar.gz -->
+ <get
+ src="http://download.sourceforge.net/sablecc/sablecc-anttask-${sablecc-anttask.version}.tar.gz"
+ dest="sablecc-anttask-${sablecc-anttask.version}.tar.gz"
+ />
+
+ </target>
+
+ <target
+ name="sablecc-anttask_prepare"
+ depends="sablecc-anttask_check_ready,sablecc-anttask_get"
+ unless="sablecc-anttask_ready"
+ >
+
+ <gunzip src="sablecc-anttask-${sablecc-anttask.version}.tar.gz" dest="sablecc-anttask-${sablecc-anttask.version}.tar"/>
+ <untar src="sablecc-anttask-${sablecc-anttask.version}.tar" dest="${basedir}"/>
+ <unjar src="sablecc-anttask-${sablecc-anttask.version}/lib/sablecc-anttask.jar" dest="${classes.dir}"/>
+ <delete file="sablecc-anttask-${sablecc-anttask.version}.tar"/>
+ <delete dir="sablecc-anttask-${sablecc-anttask.version}"/>
+ <delete dir="${classes.dir}/META-INF"/>
+
+ </target>
+
+<!--
+=====================================
+Clean Target
+=====================================
+-->
+
+ <target name="clean" description="remove compiled files">
+
+ <delete dir="${classes.dir}"/>
+
+ </target>
+
+<!--
+=====================================
+Distclean Target
+=====================================
+-->
+
+ <target
+ name="distclean"
+ depends="clean,version-in-delete,readme-in-delete"
+ description="remove all generated files"
+ >
+
+ <delete dir="${lib.dir}"/>
+ <delete>
+ <fileset dir="${basedir}" includes="${package.name}*"/>
+ </delete>
+
+ </target>
+
+<!--
+=====================================
+Changelog Target
+=====================================
+-->
+
+ <target name="changelog" description="regenerate the change log">
+
+ <exec executable="cvs2cl" dir="${basedir}">
+ <arg line="--utc -g -z9 -F TRUNK -S -W 3600 --usermap ChangeLog.usermap --header ChangeLog.header -I ChangeLog"/>
+ </exec>
+
+ </target>
+
+<!--
+=====================================
+Install Target
+=====================================
+-->
+
+ <target
+ name="install"
+ depends="install-error,install-no-error"
+ description="install executables"
+ />
+
+ <target name="install-error" unless="install.dir">
+
+ <echo>
+========================================================================
+*** ERROR *** You must provide an installation directory. For example:
+
+ ant -Dinstall.dir=/usr/local install (on Linux)
+or
+ ant -Dinstall.dir=C:\sablecc install (on Windows)
+========================================================================
+ </echo>
+
+ <fail message="missing installation directory (see explanation above)"/>
+
+ </target>
+
+ <target
+ name="install-no-error"
+ depends="jar"
+ if="install.dir"
+ >
+
+ <property name="install.location" location="${install.dir}"/>
+
+ <copy todir="${install.location}/bin" overwrite="yes">
+ <fileset dir="${bin.dir}"/>
+ </copy>
+ <replace file="${install.location}/bin/sablecc" token="lib/sablecc.jar" value="${install.location}/lib/sablecc.jar"/>
+ <replace file="${install.location}/bin/sablecc.bat" token="lib\sablecc.jar" value="${install.location}\lib\sablecc.jar"/>
+ <chmod file="${install.location}/bin/sablecc" perm="ugo+x"/>
+
+ <copy todir="${install.location}/lib" overwrite="yes">
+ <fileset dir="${lib.dir}"/>
+ </copy>
+
+ <echo>
+==========================================================================
+IMPORTANT: You must add ${install.location}/bin to your PATH. For example:
+
+ export PATH=${install.location}/bin:$$PATH (on Linux)
+or
+ set PATH=${install.location}\bin;%PATH% (on Windows)
+==========================================================================
+ </echo>
+
+ </target>
+
+</project>
Added: sablecc/sablecc/branches/upstream/current/etc/manifest
===================================================================
--- sablecc/sablecc/branches/upstream/current/etc/manifest (rev 0)
+++ sablecc/sablecc/branches/upstream/current/etc/manifest 2012-07-12 16:49:25 UTC (rev 248)
@@ -0,0 +1,2 @@
+Manifest-Version: 1.0
+Main-Class: org.sablecc.sablecc.SableCC
Added: sablecc/sablecc/branches/upstream/current/sablecc-anttask-1.0.1.tar.gz
===================================================================
(Binary files differ)
Property changes on: sablecc/sablecc/branches/upstream/current/sablecc-anttask-1.0.1.tar.gz
___________________________________________________________________
Added: svn:mime-type
+ application/octet-stream
Added: sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/AUTHORS
===================================================================
--- sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/AUTHORS (rev 0)
+++ sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/AUTHORS 2012-07-12 16:49:25 UTC (rev 248)
@@ -0,0 +1,5 @@
+This file contains the name of all copyright holders.
+
+Etienne M. Gagnon <egagnon at j-meg.com>
+Ben Menking <bmenking at bigfoot.com>
+Mariusz Nowostawski <mariusz at marni.otago.ac.nz>
Added: sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/AcceptStates.java
===================================================================
--- sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/AcceptStates.java (rev 0)
+++ sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/AcceptStates.java 2012-07-12 16:49:25 UTC (rev 248)
@@ -0,0 +1,59 @@
+/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+ * This file is part of SableCC. *
+ * See the file "LICENSE" for copyright information and the *
+ * terms and conditions for copying, distribution and *
+ * modification of SableCC. *
+ * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
+
+package org.sablecc.sablecc;
+
+import org.sablecc.sablecc.analysis.*;
+import org.sablecc.sablecc.node.*;
+import java.util.*;
+
+public class AcceptStates extends DepthFirstAdapter
+{
+ public DFA dfa;
+ public String stateName;
+ private ResolveIds ids;
+
+ public AcceptStates(DFA dfa, ResolveIds ids, String stateName)
+ {
+ this.dfa = dfa;
+ this.ids = ids;
+ this.stateName = stateName;
+ }
+
+ public void caseStart1(Start1 node)
+ {
+ for(int i = 0; i < dfa.states.size(); i++)
+ {
+ DFA.State state = (DFA.State) dfa.states.elementAt(i);
+ state.accept = -1;
+
+ int accept = -1;
+
+ for(int k = 0; k < state.nfaStates.size(); k++)
+ {
+ if(state.nfaStates.get(k))
+ {
+ if(dfa.nfa.states[k].accept != null)
+ {
+ if(accept == -1)
+ {
+ accept = ids.tokenList.indexOf(dfa.nfa.states[k].accept);
+ }
+ else
+ {
+ accept = Math.min(
+ ids.tokenList.indexOf(dfa.nfa.states[k].accept),
+ accept);
+ }
+ }
+ }
+ }
+
+ state.accept = accept;
+ }
+ }
+}
Added: sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/BooleanCast.java
===================================================================
--- sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/BooleanCast.java (rev 0)
+++ sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/BooleanCast.java 2012-07-12 16:49:25 UTC (rev 248)
@@ -0,0 +1,25 @@
+/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+ * This file is part of SableCC. *
+ * See the file "LICENSE" for copyright information and the *
+ * terms and conditions for copying, distribution and *
+ * modification of SableCC. *
+ * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
+
+package org.sablecc.sablecc;
+
+import java.util.*;
+
+public class BooleanCast implements Cast
+{
+ public final static BooleanCast instance = new BooleanCast();
+
+ private BooleanCast()
+ {
+ }
+
+ public Object cast(Object o)
+ {
+ return (Boolean) o;
+ }
+}
+
Added: sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/COPYING-LESSER
===================================================================
--- sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/COPYING-LESSER (rev 0)
+++ sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/COPYING-LESSER 2012-07-12 16:49:25 UTC (rev 248)
@@ -0,0 +1,504 @@
+ GNU LESSER GENERAL PUBLIC LICENSE
+ Version 2.1, February 1999
+
+ Copyright (C) 1991, 1999 Free Software Foundation, Inc.
+ 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ Everyone is permitted to copy and distribute verbatim copies
+ of this license document, but changing it is not allowed.
+
+[This is the first released version of the Lesser GPL. It also counts
+ as the successor of the GNU Library Public License, version 2, hence
+ the version number 2.1.]
+
+ Preamble
+
+ The licenses for most software are designed to take away your
+freedom to share and change it. By contrast, the GNU General Public
+Licenses are intended to guarantee your freedom to share and change
+free software--to make sure the software is free for all its users.
+
+ This license, the Lesser General Public License, applies to some
+specially designated software packages--typically libraries--of the
+Free Software Foundation and other authors who decide to use it. You
+can use it too, but we suggest you first think carefully about whether
+this license or the ordinary General Public License is the better
+strategy to use in any particular case, based on the explanations below.
+
+ When we speak of free software, we are referring to freedom of use,
+not price. Our General Public Licenses are designed to make sure that
+you have the freedom to distribute copies of free software (and charge
+for this service if you wish); that you receive source code or can get
+it if you want it; that you can change the software and use pieces of
+it in new free programs; and that you are informed that you can do
+these things.
+
+ To protect your rights, we need to make restrictions that forbid
+distributors to deny you these rights or to ask you to surrender these
+rights. These restrictions translate to certain responsibilities for
+you if you distribute copies of the library or if you modify it.
+
+ For example, if you distribute copies of the library, whether gratis
+or for a fee, you must give the recipients all the rights that we gave
+you. You must make sure that they, too, receive or can get the source
+code. If you link other code with the library, you must provide
+complete object files to the recipients, so that they can relink them
+with the library after making changes to the library and recompiling
+it. And you must show them these terms so they know their rights.
+
+ We protect your rights with a two-step method: (1) we copyright the
+library, and (2) we offer you this license, which gives you legal
+permission to copy, distribute and/or modify the library.
+
+ To protect each distributor, we want to make it very clear that
+there is no warranty for the free library. Also, if the library is
+modified by someone else and passed on, the recipients should know
+that what they have is not the original version, so that the original
+author's reputation will not be affected by problems that might be
+introduced by others.
+
+ Finally, software patents pose a constant threat to the existence of
+any free program. We wish to make sure that a company cannot
+effectively restrict the users of a free program by obtaining a
+restrictive license from a patent holder. Therefore, we insist that
+any patent license obtained for a version of the library must be
+consistent with the full freedom of use specified in this license.
+
+ Most GNU software, including some libraries, is covered by the
+ordinary GNU General Public License. This license, the GNU Lesser
+General Public License, applies to certain designated libraries, and
+is quite different from the ordinary General Public License. We use
+this license for certain libraries in order to permit linking those
+libraries into non-free programs.
+
+ When a program is linked with a library, whether statically or using
+a shared library, the combination of the two is legally speaking a
+combined work, a derivative of the original library. The ordinary
+General Public License therefore permits such linking only if the
+entire combination fits its criteria of freedom. The Lesser General
+Public License permits more lax criteria for linking other code with
+the library.
+
+ We call this license the "Lesser" General Public License because it
+does Less to protect the user's freedom than the ordinary General
+Public License. It also provides other free software developers Less
+of an advantage over competing non-free programs. These disadvantages
+are the reason we use the ordinary General Public License for many
+libraries. However, the Lesser license provides advantages in certain
+special circumstances.
+
+ For example, on rare occasions, there may be a special need to
+encourage the widest possible use of a certain library, so that it becomes
+a de-facto standard. To achieve this, non-free programs must be
+allowed to use the library. A more frequent case is that a free
+library does the same job as widely used non-free libraries. In this
+case, there is little to gain by limiting the free library to free
+software only, so we use the Lesser General Public License.
+
+ In other cases, permission to use a particular library in non-free
+programs enables a greater number of people to use a large body of
+free software. For example, permission to use the GNU C Library in
+non-free programs enables many more people to use the whole GNU
+operating system, as well as its variant, the GNU/Linux operating
+system.
+
+ Although the Lesser General Public License is Less protective of the
+users' freedom, it does ensure that the user of a program that is
+linked with the Library has the freedom and the wherewithal to run
+that program using a modified version of the Library.
+
+ The precise terms and conditions for copying, distribution and
+modification follow. Pay close attention to the difference between a
+"work based on the library" and a "work that uses the library". The
+former contains code derived from the library, whereas the latter must
+be combined with the library in order to run.
+
+ GNU LESSER GENERAL PUBLIC LICENSE
+ TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
+
+ 0. This License Agreement applies to any software library or other
+program which contains a notice placed by the copyright holder or
+other authorized party saying it may be distributed under the terms of
+this Lesser General Public License (also called "this License").
+Each licensee is addressed as "you".
+
+ A "library" means a collection of software functions and/or data
+prepared so as to be conveniently linked with application programs
+(which use some of those functions and data) to form executables.
+
+ The "Library", below, refers to any such software library or work
+which has been distributed under these terms. A "work based on the
+Library" means either the Library or any derivative work under
+copyright law: that is to say, a work containing the Library or a
+portion of it, either verbatim or with modifications and/or translated
+straightforwardly into another language. (Hereinafter, translation is
+included without limitation in the term "modification".)
+
+ "Source code" for a work means the preferred form of the work for
+making modifications to it. For a library, complete source code means
+all the source code for all modules it contains, plus any associated
+interface definition files, plus the scripts used to control compilation
+and installation of the library.
+
+ Activities other than copying, distribution and modification are not
+covered by this License; they are outside its scope. The act of
+running a program using the Library is not restricted, and output from
+such a program is covered only if its contents constitute a work based
+on the Library (independent of the use of the Library in a tool for
+writing it). Whether that is true depends on what the Library does
+and what the program that uses the Library does.
+
+ 1. You may copy and distribute verbatim copies of the Library's
+complete source code as you receive it, in any medium, provided that
+you conspicuously and appropriately publish on each copy an
+appropriate copyright notice and disclaimer of warranty; keep intact
+all the notices that refer to this License and to the absence of any
+warranty; and distribute a copy of this License along with the
+Library.
+
+ You may charge a fee for the physical act of transferring a copy,
+and you may at your option offer warranty protection in exchange for a
+fee.
+
+ 2. You may modify your copy or copies of the Library or any portion
+of it, thus forming a work based on the Library, and copy and
+distribute such modifications or work under the terms of Section 1
+above, provided that you also meet all of these conditions:
+
+ a) The modified work must itself be a software library.
+
+ b) You must cause the files modified to carry prominent notices
+ stating that you changed the files and the date of any change.
+
+ c) You must cause the whole of the work to be licensed at no
+ charge to all third parties under the terms of this License.
+
+ d) If a facility in the modified Library refers to a function or a
+ table of data to be supplied by an application program that uses
+ the facility, other than as an argument passed when the facility
+ is invoked, then you must make a good faith effort to ensure that,
+ in the event an application does not supply such function or
+ table, the facility still operates, and performs whatever part of
+ its purpose remains meaningful.
+
+ (For example, a function in a library to compute square roots has
+ a purpose that is entirely well-defined independent of the
+ application. Therefore, Subsection 2d requires that any
+ application-supplied function or table used by this function must
+ be optional: if the application does not supply it, the square
+ root function must still compute square roots.)
+
+These requirements apply to the modified work as a whole. If
+identifiable sections of that work are not derived from the Library,
+and can be reasonably considered independent and separate works in
+themselves, then this License, and its terms, do not apply to those
+sections when you distribute them as separate works. But when you
+distribute the same sections as part of a whole which is a work based
+on the Library, the distribution of the whole must be on the terms of
+this License, whose permissions for other licensees extend to the
+entire whole, and thus to each and every part regardless of who wrote
+it.
+
+Thus, it is not the intent of this section to claim rights or contest
+your rights to work written entirely by you; rather, the intent is to
+exercise the right to control the distribution of derivative or
+collective works based on the Library.
+
+In addition, mere aggregation of another work not based on the Library
+with the Library (or with a work based on the Library) on a volume of
+a storage or distribution medium does not bring the other work under
+the scope of this License.
+
+ 3. You may opt to apply the terms of the ordinary GNU General Public
+License instead of this License to a given copy of the Library. To do
+this, you must alter all the notices that refer to this License, so
+that they refer to the ordinary GNU General Public License, version 2,
+instead of to this License. (If a newer version than version 2 of the
+ordinary GNU General Public License has appeared, then you can specify
+that version instead if you wish.) Do not make any other change in
+these notices.
+
+ Once this change is made in a given copy, it is irreversible for
+that copy, so the ordinary GNU General Public License applies to all
+subsequent copies and derivative works made from that copy.
+
+ This option is useful when you wish to copy part of the code of
+the Library into a program that is not a library.
+
+ 4. You may copy and distribute the Library (or a portion or
+derivative of it, under Section 2) in object code or executable form
+under the terms of Sections 1 and 2 above provided that you accompany
+it with the complete corresponding machine-readable source code, which
+must be distributed under the terms of Sections 1 and 2 above on a
+medium customarily used for software interchange.
+
+ If distribution of object code is made by offering access to copy
+from a designated place, then offering equivalent access to copy the
+source code from the same place satisfies the requirement to
+distribute the source code, even though third parties are not
+compelled to copy the source along with the object code.
+
+ 5. A program that contains no derivative of any portion of the
+Library, but is designed to work with the Library by being compiled or
+linked with it, is called a "work that uses the Library". Such a
+work, in isolation, is not a derivative work of the Library, and
+therefore falls outside the scope of this License.
+
+ However, linking a "work that uses the Library" with the Library
+creates an executable that is a derivative of the Library (because it
+contains portions of the Library), rather than a "work that uses the
+library". The executable is therefore covered by this License.
+Section 6 states terms for distribution of such executables.
+
+ When a "work that uses the Library" uses material from a header file
+that is part of the Library, the object code for the work may be a
+derivative work of the Library even though the source code is not.
+Whether this is true is especially significant if the work can be
+linked without the Library, or if the work is itself a library. The
+threshold for this to be true is not precisely defined by law.
+
+ If such an object file uses only numerical parameters, data
+structure layouts and accessors, and small macros and small inline
+functions (ten lines or less in length), then the use of the object
+file is unrestricted, regardless of whether it is legally a derivative
+work. (Executables containing this object code plus portions of the
+Library will still fall under Section 6.)
+
+ Otherwise, if the work is a derivative of the Library, you may
+distribute the object code for the work under the terms of Section 6.
+Any executables containing that work also fall under Section 6,
+whether or not they are linked directly with the Library itself.
+
+ 6. As an exception to the Sections above, you may also combine or
+link a "work that uses the Library" with the Library to produce a
+work containing portions of the Library, and distribute that work
+under terms of your choice, provided that the terms permit
+modification of the work for the customer's own use and reverse
+engineering for debugging such modifications.
+
+ You must give prominent notice with each copy of the work that the
+Library is used in it and that the Library and its use are covered by
+this License. You must supply a copy of this License. If the work
+during execution displays copyright notices, you must include the
+copyright notice for the Library among them, as well as a reference
+directing the user to the copy of this License. Also, you must do one
+of these things:
+
+ a) Accompany the work with the complete corresponding
+ machine-readable source code for the Library including whatever
+ changes were used in the work (which must be distributed under
+ Sections 1 and 2 above); and, if the work is an executable linked
+ with the Library, with the complete machine-readable "work that
+ uses the Library", as object code and/or source code, so that the
+ user can modify the Library and then relink to produce a modified
+ executable containing the modified Library. (It is understood
+ that the user who changes the contents of definitions files in the
+ Library will not necessarily be able to recompile the application
+ to use the modified definitions.)
+
+ b) Use a suitable shared library mechanism for linking with the
+ Library. A suitable mechanism is one that (1) uses at run time a
+ copy of the library already present on the user's computer system,
+ rather than copying library functions into the executable, and (2)
+ will operate properly with a modified version of the library, if
+ the user installs one, as long as the modified version is
+ interface-compatible with the version that the work was made with.
+
+ c) Accompany the work with a written offer, valid for at
+ least three years, to give the same user the materials
+ specified in Subsection 6a, above, for a charge no more
+ than the cost of performing this distribution.
+
+ d) If distribution of the work is made by offering access to copy
+ from a designated place, offer equivalent access to copy the above
+ specified materials from the same place.
+
+ e) Verify that the user has already received a copy of these
+ materials or that you have already sent this user a copy.
+
+ For an executable, the required form of the "work that uses the
+Library" must include any data and utility programs needed for
+reproducing the executable from it. However, as a special exception,
+the materials to be distributed need not include anything that is
+normally distributed (in either source or binary form) with the major
+components (compiler, kernel, and so on) of the operating system on
+which the executable runs, unless that component itself accompanies
+the executable.
+
+ It may happen that this requirement contradicts the license
+restrictions of other proprietary libraries that do not normally
+accompany the operating system. Such a contradiction means you cannot
+use both them and the Library together in an executable that you
+distribute.
+
+ 7. You may place library facilities that are a work based on the
+Library side-by-side in a single library together with other library
+facilities not covered by this License, and distribute such a combined
+library, provided that the separate distribution of the work based on
+the Library and of the other library facilities is otherwise
+permitted, and provided that you do these two things:
+
+ a) Accompany the combined library with a copy of the same work
+ based on the Library, uncombined with any other library
+ facilities. This must be distributed under the terms of the
+ Sections above.
+
+ b) Give prominent notice with the combined library of the fact
+ that part of it is a work based on the Library, and explaining
+ where to find the accompanying uncombined form of the same work.
+
+ 8. You may not copy, modify, sublicense, link with, or distribute
+the Library except as expressly provided under this License. Any
+attempt otherwise to copy, modify, sublicense, link with, or
+distribute the Library is void, and will automatically terminate your
+rights under this License. However, parties who have received copies,
+or rights, from you under this License will not have their licenses
+terminated so long as such parties remain in full compliance.
+
+ 9. You are not required to accept this License, since you have not
+signed it. However, nothing else grants you permission to modify or
+distribute the Library or its derivative works. These actions are
+prohibited by law if you do not accept this License. Therefore, by
+modifying or distributing the Library (or any work based on the
+Library), you indicate your acceptance of this License to do so, and
+all its terms and conditions for copying, distributing or modifying
+the Library or works based on it.
+
+ 10. Each time you redistribute the Library (or any work based on the
+Library), the recipient automatically receives a license from the
+original licensor to copy, distribute, link with or modify the Library
+subject to these terms and conditions. You may not impose any further
+restrictions on the recipients' exercise of the rights granted herein.
+You are not responsible for enforcing compliance by third parties with
+this License.
+
+ 11. If, as a consequence of a court judgment or allegation of patent
+infringement or for any other reason (not limited to patent issues),
+conditions are imposed on you (whether by court order, agreement or
+otherwise) that contradict the conditions of this License, they do not
+excuse you from the conditions of this License. If you cannot
+distribute so as to satisfy simultaneously your obligations under this
+License and any other pertinent obligations, then as a consequence you
+may not distribute the Library at all. For example, if a patent
+license would not permit royalty-free redistribution of the Library by
+all those who receive copies directly or indirectly through you, then
+the only way you could satisfy both it and this License would be to
+refrain entirely from distribution of the Library.
+
+If any portion of this section is held invalid or unenforceable under any
+particular circumstance, the balance of the section is intended to apply,
+and the section as a whole is intended to apply in other circumstances.
+
+It is not the purpose of this section to induce you to infringe any
+patents or other property right claims or to contest validity of any
+such claims; this section has the sole purpose of protecting the
+integrity of the free software distribution system which is
+implemented by public license practices. Many people have made
+generous contributions to the wide range of software distributed
+through that system in reliance on consistent application of that
+system; it is up to the author/donor to decide if he or she is willing
+to distribute software through any other system and a licensee cannot
+impose that choice.
+
+This section is intended to make thoroughly clear what is believed to
+be a consequence of the rest of this License.
+
+ 12. If the distribution and/or use of the Library is restricted in
+certain countries either by patents or by copyrighted interfaces, the
+original copyright holder who places the Library under this License may add
+an explicit geographical distribution limitation excluding those countries,
+so that distribution is permitted only in or among countries not thus
+excluded. In such case, this License incorporates the limitation as if
+written in the body of this License.
+
+ 13. The Free Software Foundation may publish revised and/or new
+versions of the Lesser General Public License from time to time.
+Such new versions will be similar in spirit to the present version,
+but may differ in detail to address new problems or concerns.
+
+Each version is given a distinguishing version number. If the Library
+specifies a version number of this License which applies to it and
+"any later version", you have the option of following the terms and
+conditions either of that version or of any later version published by
+the Free Software Foundation. If the Library does not specify a
+license version number, you may choose any version ever published by
+the Free Software Foundation.
+
+ 14. If you wish to incorporate parts of the Library into other free
+programs whose distribution conditions are incompatible with these,
+write to the author to ask for permission. For software which is
+copyrighted by the Free Software Foundation, write to the Free
+Software Foundation; we sometimes make exceptions for this. Our
+decision will be guided by the two goals of preserving the free status
+of all derivatives of our free software and of promoting the sharing
+and reuse of software generally.
+
+ NO WARRANTY
+
+ 15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO
+WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW.
+EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR
+OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY
+KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE
+IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE
+LIBRARY IS WITH YOU. SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME
+THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
+
+ 16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN
+WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY
+AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU
+FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR
+CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE
+LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING
+RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A
+FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF
+SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH
+DAMAGES.
+
+ END OF TERMS AND CONDITIONS
+
+ How to Apply These Terms to Your New Libraries
+
+ If you develop a new library, and you want it to be of the greatest
+possible use to the public, we recommend making it free software that
+everyone can redistribute and change. You can do so by permitting
+redistribution under these terms (or, alternatively, under the terms of the
+ordinary General Public License).
+
+ To apply these terms, attach the following notices to the library. It is
+safest to attach them to the start of each source file to most effectively
+convey the exclusion of warranty; and each file should have at least the
+"copyright" line and a pointer to where the full notice is found.
+
+ <one line to give the library's name and a brief idea of what it does.>
+ Copyright (C) <year> <name of author>
+
+ This library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Lesser General Public
+ License as published by the Free Software Foundation; either
+ version 2 of the License, or (at your option) any later version.
+
+ This library 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
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public
+ License along with this library; if not, write to the Free Software
+ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+
+Also add information on how to contact you by electronic and paper mail.
+
+You should also get your employer (if you work as a programmer) or your
+school, if any, to sign a "copyright disclaimer" for the library, if
+necessary. Here is a sample; alter the names:
+
+ Yoyodyne, Inc., hereby disclaims all copyright interest in the
+ library `Frob' (a library for tweaking knobs) written by James Random Hacker.
+
+ <signature of Ty Coon>, 1 April 1990
+ Ty Coon, President of Vice
+
+That's all there is to it!
+
+
Added: sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/Cast.java
===================================================================
--- sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/Cast.java (rev 0)
+++ sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/Cast.java 2012-07-12 16:49:25 UTC (rev 248)
@@ -0,0 +1,14 @@
+/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+ * This file is part of SableCC. *
+ * See the file "LICENSE" for copyright information and the *
+ * terms and conditions for copying, distribution and *
+ * modification of SableCC. *
+ * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
+
+package org.sablecc.sablecc;
+
+public interface Cast
+{
+ Object cast(Object o);
+}
+
Added: sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/CharSet.java
===================================================================
--- sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/CharSet.java (rev 0)
+++ sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/CharSet.java 2012-07-12 16:49:25 UTC (rev 248)
@@ -0,0 +1,228 @@
+/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+ * This file is part of SableCC. *
+ * See the file "LICENSE" for copyright information and the *
+ * terms and conditions for copying, distribution and *
+ * modification of SableCC. *
+ * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
+
+package org.sablecc.sablecc;
+
+import java.util.*;
+import java.util.Enumeration;
+import java.util.Vector;
+
+public class CharSet implements Cloneable
+{
+ private final Vector intervals = new Vector(0);
+
+ public CharSet(char c)
+ {
+ intervals.addElement(new Interval(c, c));
+ }
+
+ public CharSet(char start, char end)
+ {
+ intervals.addElement(new Interval(start, end));
+ }
+
+ private CharSet(Vector intervals)
+ {
+ for(Enumeration e = intervals.elements(); e.hasMoreElements();)
+ {
+ this.intervals.addElement(((Interval) e.nextElement()).clone());
+ }
+ }
+
+ public Object clone()
+ {
+ return new CharSet(intervals);
+ }
+
+ public Interval findOverlap(Interval interval1)
+ {
+ int low = 0;
+ int high = intervals.size() - 1;
+ Interval interval2;
+ Interval result = null;
+
+ while(high >= low)
+ {
+ int middle = (high + low) / 2;
+
+ interval2 = (Interval) intervals.elementAt(middle);
+
+ if(interval1.start <= interval2.end)
+ {
+ if(interval1.end >= interval2.start)
+ {
+ result = interval2;
+ // we continue, to find the lowest matching interval!
+ }
+
+ high = middle - 1;
+ }
+ else
+ {
+ low = middle + 1;
+ }
+ }
+
+ return result;
+ }
+
+ private void remove(Interval interval)
+ {
+ intervals.removeElement(interval);
+ }
+
+ private void add(Interval interval)
+ {
+ for(int i = 0; i < intervals.size(); i++)
+ {
+ Interval iv = (Interval) intervals.elementAt(i);
+
+ if(iv.start > interval.start)
+ {
+ intervals.insertElementAt(interval, i);
+ return;
+ }
+ }
+
+ intervals.addElement(interval);
+ }
+
+ public CharSet union(CharSet chars)
+ {
+ CharSet result = (CharSet) clone();
+
+ Interval interval;
+ Interval largeInterval;
+ Interval overlap;
+
+ for(Enumeration e = chars.intervals.elements(); e.hasMoreElements();)
+ {
+ interval = (Interval) ((Interval) e.nextElement()).clone();
+
+ do
+ {
+ largeInterval = new Interval(
+ (interval.start == 0) ? (char) 0 : (char) (interval.start - 1),
+ (interval.end == 0xffff) ? (char) 0xffff : (char) (interval.end + 1));
+
+ overlap = result.findOverlap(largeInterval);
+ if(overlap != null)
+ {
+ result.remove(overlap);
+ interval.start = (char) Math.min(interval.start, overlap.start);
+ interval.end = (char) Math.max(interval.end, overlap.end);
+ }
+ }
+ while(overlap != null);
+
+ result.add(interval);
+ }
+
+ return result;
+ }
+
+ public CharSet diff(CharSet chars)
+ {
+ CharSet result = (CharSet) clone();
+
+ Interval interval;
+ Interval overlap;
+
+ for(Enumeration e = chars.intervals.elements(); e.hasMoreElements();)
+ {
+ interval = (Interval) ((Interval) e.nextElement()).clone();
+
+ do
+ {
+ overlap = result.findOverlap(interval);
+ if(overlap != null)
+ {
+ result.remove(overlap);
+ if(overlap.start < interval.start)
+ {
+ result.add(new Interval(overlap.start, (char) (interval.start - 1)));
+ }
+ if(overlap.end > interval.end)
+ {
+ result.add(new Interval((char) (interval.end + 1), overlap.end));
+ }
+ }
+ }
+ while(overlap != null);
+ }
+
+ return result;
+ }
+
+ public String toString()
+ {
+ StringBuffer result = new StringBuffer();
+
+ for(Enumeration e = intervals.elements(); e.hasMoreElements();)
+ {
+ result.append("[" + e.nextElement() + "] ");
+ }
+
+ return "" + result;
+ }
+
+
+ public static class Interval implements Cloneable
+ {
+ public Interval(char start, char end)
+ {
+ this.start = start;
+ this.end = end;
+ }
+
+ public Object clone()
+ {
+ return new Interval(start, end);
+ }
+
+ private String c(char c)
+ {
+ if((c >= 32) && (c < 127))
+ {
+ return "" + c;
+ }
+
+ return "" + ((int) c);
+ }
+
+ public String toString()
+ {
+ if(start < end)
+ {
+ return c(start) + " .. " + c(end);
+ }
+ else
+ {
+ return c(start);
+ }
+ }
+
+ public char start;
+ public char end;
+ }
+
+ public static class IntervalCast implements Cast
+ {
+ public final static IntervalCast instance = new IntervalCast();
+
+ private IntervalCast()
+ {
+ }
+
+ public Object cast(Object o)
+ {
+ return (Interval) o;
+ }
+ }
+}
+
+
Added: sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/ConstructNFA.java
===================================================================
--- sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/ConstructNFA.java (rev 0)
+++ sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/ConstructNFA.java 2012-07-12 16:49:25 UTC (rev 248)
@@ -0,0 +1,471 @@
+/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+ * This file is part of SableCC. *
+ * See the file "LICENSE" for copyright information and the *
+ * terms and conditions for copying, distribution and *
+ * modification of SableCC. *
+ * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
+
+package org.sablecc.sablecc;
+
+import java.util.*;
+import org.sablecc.sablecc.analysis.*;
+import org.sablecc.sablecc.node.*;
+
+public class ConstructNFA extends DepthFirstAdapter
+{
+ private ResolveIds ids;
+ private String stateName;
+
+ private int i;
+
+ ConstructNFA(ResolveIds ids, String stateName)
+ {
+ this.ids = ids;
+ this.stateName = stateName;
+ }
+
+ public void outStart1(Start1 node)
+ {
+ setOut(node, getOut(node.getNode1()));
+
+ // free memory
+ if(getOut(node.getNode1()) != null) setOut(node.getNode1(), null);
+ }
+
+ public void outGrammar1(Grammar1 node)
+ {
+ setOut(node, getOut(node.getNode4()));
+
+ // free memory
+ if(getOut(node.getNode4()) != null) setOut(node.getNode4(), null);
+ }
+
+ public void outHelperDef1(HelperDef1 node)
+ {
+ setOut(node, getOut(node.getNode3()));
+
+ // free memory
+ if(getOut(node.getNode3()) != null) setOut(node.getNode3(), null);
+ }
+
+ public void outTokensOpt1(TokensOpt1 node)
+ {
+ setOut(node, getOut(node.getNode1()));
+
+ // free memory
+ if(getOut(node.getNode1()) != null) setOut(node.getNode1(), null);
+ }
+
+ public void outTokens1(Tokens1 node)
+ {
+ setOut(node, getOut(node.getNode2()));
+
+ // free memory
+ if(getOut(node.getNode2()) != null) setOut(node.getNode2(), null);
+ }
+
+ public void outTokenDefs1(TokenDefs1 node)
+ {
+ NFA n1 = (NFA) getOut(node.getNode1());
+ NFA n2 = (NFA) getOut(node.getNode2());
+
+ if(n1 == null)
+ {
+ setOut(node, n2);
+ }
+ else if(n2 == null)
+ {
+ setOut(node, n1);
+ }
+ else
+ {
+ setOut(node, n1.merge(n2));
+ }
+
+ // free memory
+ if(getOut(node.getNode1()) != null) setOut(node.getNode1(), null);
+ if(getOut(node.getNode2()) != null) setOut(node.getNode2(), null);
+ }
+
+ public void outTokenDef1(TokenDef1 node)
+ {
+ Set set = (Set) getOut(node.getNode1());
+ Object o1 = getOut(node.getNode4());
+ Object o2 = getOut(node.getNode5());
+
+ if((set == null) || (set.size() == 0) || set.contains(stateName))
+ {
+ //System.out.print("*");
+
+ NFA n1 = (o1 instanceof NFA) ? (NFA) o1 : new NFA((CharSet) o1);
+ String name = (String) ids.names.get(node);
+
+ if(o2 != null)
+ {
+ NFA n2 = (o2 instanceof NFA) ? (NFA) o2 : new NFA((CharSet) o2);
+
+ NFA n3 = n1.concatenate(n2);
+
+ n1.states[n1.states.length - 1].accept = name + "_Token";
+ n2.states[n2.states.length - 1].accept = name + "_LookAhead";
+ n3.states[n3.states.length - 1].accept = name;
+
+ setOut(node, n1.merge(n2.merge(n3)));
+ }
+ else
+ {
+ n1.states[n1.states.length - 1].accept = name;
+ setOut(node, n1);
+ }
+ }
+ else
+ {
+ //System.out.print("-");
+ }
+
+ // free memory
+ if(getOut(node.getNode1()) != null) setOut(node.getNode1(), null);
+ if(getOut(node.getNode4()) != null) setOut(node.getNode4(), null);
+ if(getOut(node.getNode5()) != null) setOut(node.getNode5(), null);
+ }
+
+ public void outStateListOpt1(StateListOpt1 node)
+ {
+ setOut(node, getOut(node.getNode1()));
+
+ // free memory
+ setOut(node.getNode1(), null);
+ }
+
+ public void outStateList1(StateList1 node)
+ {
+ String str = node.getNode2().getText().toUpperCase();
+ Set set = (Set) getOut(node.getNode4());
+
+ set.add(str);
+ setOut(node, set);
+
+ // free memory
+ setOut(node.getNode4(), null);
+ }
+
+ public void outStateListTails1(StateListTails1 node)
+ {
+ String str = (String) getOut(node.getNode1());
+ Set set = (Set) getOut(node.getNode2());
+
+ set.add(str);
+ setOut(node, set);
+
+ // free memory
+ setOut(node.getNode1(), null);
+ setOut(node.getNode2(), null);
+ }
+
+ public void outStateListTails2(StateListTails2 node)
+ {
+ setOut(node, new TreeSet());
+ }
+
+ public void outStateListTail1(StateListTail1 node)
+ {
+ setOut(node, node.getNode2().getText().toUpperCase());
+ }
+
+ public void outLookAheadOpt1(LookAheadOpt1 node)
+ {
+ setOut(node, getOut(node.getNode1()));
+
+ // free memory
+ if(getOut(node.getNode1()) != null) setOut(node.getNode1(), null);
+ }
+
+ public void outLookAhead1(LookAhead1 node)
+ {
+ setOut(node, getOut(node.getNode2()));
+
+ // free memory
+ if(getOut(node.getNode2()) != null) setOut(node.getNode2(), null);
+ }
+
+ public void outRegExp1(RegExp1 node)
+ {
+ Object o1 = getOut(node.getNode1());
+ Object o2 = getOut(node.getNode2());
+
+ if(o2 != null)
+ {
+ NFA n1 = (o1 instanceof NFA) ? (NFA) o1 : new NFA((CharSet) o1);
+ NFA n2 = (o2 instanceof NFA) ? (NFA) o2 : new NFA((CharSet) o2);
+
+ setOut(node, n1.alternate(n2));
+ }
+ else
+ {
+ setOut(node, o1);
+ }
+
+ // free memory
+ if(getOut(node.getNode1()) != null) setOut(node.getNode1(), null);
+ if(getOut(node.getNode2()) != null) setOut(node.getNode2(), null);
+ }
+
+ public void outRegExpTails1(RegExpTails1 node)
+ {
+ Object o1 = getOut(node.getNode1());
+ Object o2 = getOut(node.getNode2());
+
+ if(o2 != null)
+ {
+ NFA n1 = (o1 instanceof NFA) ? (NFA) o1 : new NFA((CharSet) o1);
+ NFA n2 = (o2 instanceof NFA) ? (NFA) o2 : new NFA((CharSet) o2);
+
+ setOut(node, n1.alternate(n2));
+ }
+ else
+ {
+ setOut(node, o1);
+ }
+
+ // free memory
+ if(getOut(node.getNode1()) != null) setOut(node.getNode1(), null);
+ if(getOut(node.getNode2()) != null) setOut(node.getNode2(), null);
+ }
+
+ public void outRegExpTail1(RegExpTail1 node)
+ {
+ setOut(node, getOut(node.getNode2()));
+
+ // free memory
+ if(getOut(node.getNode2()) != null) setOut(node.getNode2(), null);
+ }
+
+ public void outConcat1(Concat1 node)
+ {
+ Object o = getOut(node.getNode1());
+
+ if(o == null)
+ {
+ setOut(node, new NFA());
+ }
+ else
+ {
+ setOut(node, o);
+ }
+
+ // free memory
+ if(getOut(node.getNode1()) != null) setOut(node.getNode1(), null);
+ }
+
+ public void outUnExps1(UnExps1 node)
+ {
+ Object o1 = getOut(node.getNode1());
+ Object o2 = getOut(node.getNode2());
+
+ if(o2 != null)
+ {
+ NFA n1 = (o1 instanceof NFA) ? (NFA) o1 : new NFA((CharSet) o1);
+ NFA n2 = (o2 instanceof NFA) ? (NFA) o2 : new NFA((CharSet) o2);
+
+ setOut(node, n1.concatenate(n2));
+ }
+ else
+ {
+ setOut(node, o1);
+ }
+
+ // free memory
+ if(getOut(node.getNode1()) != null) setOut(node.getNode1(), null);
+ if(getOut(node.getNode2()) != null) setOut(node.getNode2(), null);
+ }
+
+ public void outUnExp1(UnExp1 node)
+ {
+ Object o = getOut(node.getNode1());
+ char c = ((Character) getOut(node.getNode2())).charValue();
+
+ switch(c)
+ {
+ case '*':
+ {
+ NFA n = (o instanceof NFA) ? (NFA) o : new NFA((CharSet) o);
+ setOut(node, n.zeroOrMore());
+ }
+ break;
+ case '?':
+ {
+ NFA n = (o instanceof NFA) ? (NFA) o : new NFA((CharSet) o);
+ setOut(node, n.zeroOrOne());
+ }
+ break;
+ case '+':
+ {
+ NFA n = (o instanceof NFA) ? (NFA) o : new NFA((CharSet) o);
+ setOut(node, n.oneOrMore());
+ }
+ break;
+ default:
+ {
+ setOut(node, o);
+ }
+ break;
+ }
+
+ // free memory
+ if(getOut(node.getNode1()) != null) setOut(node.getNode1(), null);
+ if(getOut(node.getNode2()) != null) setOut(node.getNode2(), null);
+ }
+
+ public void outBasic1(Basic1 node)
+ {
+ char c = ((Character) getOut(node.getNode1())).charValue();
+ setOut(node, new CharSet(c));
+
+ // free memory
+ if(getOut(node.getNode1()) != null) setOut(node.getNode1(), null);
+ }
+
+ public void outBasic2(Basic2 node)
+ {
+ setOut(node, getOut(node.getNode1()));
+
+ // free memory
+ if(getOut(node.getNode1()) != null) setOut(node.getNode1(), null);
+ }
+
+ public void outBasic3(Basic3 node)
+ {
+ String s = node.getNode1().getText();
+ s = s.substring(1, s.length() -1);
+
+ setOut(node, new NFA(s));
+ }
+
+ public void outBasic4(Basic4 node)
+ {
+ Object o = getOut((Node) ids.helpers.get(node.getNode1().getText()));
+
+ if(o instanceof NFA)
+ {
+ setOut(node, ((NFA) o).clone());
+ }
+ else
+ {
+ setOut(node, ((CharSet) o).clone());
+ }
+ }
+
+ public void outBasic5(Basic5 node)
+ {
+ setOut(node, getOut(node.getNode2()));
+
+ // free memory
+ if(getOut(node.getNode2()) != null) setOut(node.getNode2(), null);
+ }
+
+ public void outPChar1(PChar1 node)
+ {
+ setOut(node, new Character(node.getNode1().getText().charAt(1)));
+ }
+
+ public void outPChar2(PChar2 node)
+ {
+ setOut(node, new Character((char) Integer.parseInt(node.getNode1().getText())));
+ }
+
+ public void outPChar3(PChar3 node)
+ {
+ setOut(node, new Character((char)
+ Integer.parseInt(node.getNode1().getText().substring(2), 16)));
+ }
+
+ public void outPSet1(PSet1 node)
+ {
+ try
+ {
+ CharSet cs1 = (CharSet) getOut(node.getNode2());
+ CharSet cs2 = (CharSet) getOut(node.getNode4());
+ char binop = ((Character) getOut(node.getNode3())).charValue();
+
+ switch(binop)
+ {
+ case '+':
+ {
+ setOut(node, cs1.union(cs2));
+ }
+ break;
+ case '-':
+ {
+ setOut(node, cs1.diff(cs2));
+ }
+ break;
+ }
+ }
+ catch(Exception e)
+ {
+ throw new RuntimeException(node + " is invalid.");
+ }
+
+ // free memory
+ if(getOut(node.getNode2()) != null) setOut(node.getNode2(), null);
+ if(getOut(node.getNode3()) != null) setOut(node.getNode3(), null);
+ if(getOut(node.getNode4()) != null) setOut(node.getNode4(), null);
+ }
+
+ public void outPSet2(PSet2 node)
+ {
+ char c1 = ((Character) getOut(node.getNode2())).charValue();
+ char c2 = ((Character) getOut(node.getNode4())).charValue();
+
+ if(c1 > c2)
+ {
+ throw new RuntimeException(node + " is invalid.");
+ }
+
+ setOut(node, new CharSet(c1, c2));
+
+ // free memory
+ if(getOut(node.getNode2()) != null) setOut(node.getNode2(), null);
+ if(getOut(node.getNode4()) != null) setOut(node.getNode4(), null);
+ }
+
+ public void outUnOpOpt1(UnOpOpt1 node)
+ {
+ setOut(node, getOut(node.getNode1()));
+
+ // free memory
+ if(getOut(node.getNode1()) != null) setOut(node.getNode1(), null);
+ }
+
+ public void outUnOpOpt2(UnOpOpt2 node)
+ {
+ setOut(node, new Character(' '));
+ }
+
+ public void outUnOp1(UnOp1 node)
+ {
+ setOut(node, new Character('*'));
+ }
+
+ public void outUnOp2(UnOp2 node)
+ {
+ setOut(node, new Character('?'));
+ }
+
+ public void outUnOp3(UnOp3 node)
+ {
+ setOut(node, new Character('+'));
+ }
+
+ public void outBinOp1(BinOp1 node)
+ {
+ setOut(node, new Character('+'));
+ }
+
+ public void outBinOp2(BinOp2 node)
+ {
+ setOut(node, new Character('-'));
+ }
+}
+
+
Added: sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/DFA.java
===================================================================
--- sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/DFA.java (rev 0)
+++ sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/DFA.java 2012-07-12 16:49:25 UTC (rev 248)
@@ -0,0 +1,402 @@
+/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+ * This file is part of SableCC. *
+ * See the file "LICENSE" for copyright information and the *
+ * terms and conditions for copying, distribution and *
+ * modification of SableCC. *
+ * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
+
+package org.sablecc.sablecc;
+
+import java.util.Vector;
+import java.util.Hashtable;
+
+public class DFA
+{
+ public DFA(NFA nfa)
+ {
+ this.nfa = nfa;
+ construct();
+ optimize();
+ }
+
+ public NFA nfa;
+ public final Vector states = new Vector(0);
+ public final Hashtable finder = new Hashtable(1);
+
+ private void optimize()
+ {
+ Vector transitions = new Vector(0);
+
+ for(int i = 0; i < states.size(); i++)
+ {
+ DFA.State state = (DFA.State) states.elementAt(i);
+ transitions.addElement(new Vector(0));
+
+ for(int j = 0; j < state.transitions.size(); j++)
+ {
+ int max = 0;
+ int st = -1;
+
+ for(int k = 0; k < i; k++)
+ {
+ int match = match(i,j,k);
+
+ if(match > max)
+ {
+ max = match;
+ st = k;
+ }
+ }
+
+ if(max < 2)
+ {
+ ((Vector) transitions.elementAt(i)).addElement(
+ state.transitions.elementAt(j));
+ }
+ else
+ {
+ DFA.Transition transition1 =
+ (DFA.Transition) state.transitions.elementAt(j);
+ DFA.Transition transition2 =
+ (DFA.Transition) state.transitions.elementAt(j + max - 1);
+
+ DFA.Transition transition =
+ new DFA.Transition(
+ new CharSet.Interval(
+ transition1.interval().start,
+ transition2.interval().end),
+ -2 - st);
+
+ ((Vector) transitions.elementAt(i)).addElement(transition);
+ j += max - 1;
+ }
+ }
+ }
+
+ for(int i = 0; i < states.size(); i++)
+ {
+ DFA.State state = (DFA.State) states.elementAt(i);
+ state.transitions = (Vector) transitions.elementAt(i);
+ }
+ }
+
+ private int match(int st1, int tr, int st2)
+ {
+ DFA.State state1 = (DFA.State) states.elementAt(st1);
+ DFA.State state2 = (DFA.State) states.elementAt(st2);
+
+ DFA.Transition first =
+ (DFA.Transition) state1.transitions.elementAt(tr);
+
+ int j = -1;
+
+ for(int i = 0; i < state2.transitions.size(); i++)
+ {
+ DFA.Transition transition =
+ (DFA.Transition) state2.transitions.elementAt(i);
+
+ if(transition.match(first))
+ {
+ j = i;
+ break;
+ }
+ }
+
+ if(j == -1)
+ {
+ return 0;
+ }
+
+ int max = 0;
+ int i = tr;
+
+ while((i < state1.transitions.size()) &&
+ (j < state2.transitions.size()))
+ {
+ DFA.Transition transition1 =
+ (DFA.Transition) state1.transitions.elementAt(i);
+
+ DFA.Transition transition2 =
+ (DFA.Transition) state2.transitions.elementAt(j);
+
+ if(!transition1.match(transition2))
+ {
+ return max;
+ }
+
+ max++;
+ i++;
+ j++;
+ }
+
+ return max;
+ }
+
+ private void construct()
+ {
+ computeEClosures();
+
+ IntSet initial = new IntSet();
+ initial.or(eclosure(0));
+
+ State state = new State(initial);
+ states.addElement(state);
+ finder.put(state.nfaStates, new Integer(0));
+
+ int i = -1;
+ while(++i < states.size())
+ {
+ System.out.print(".");
+
+ state = (State) states.elementAt(i);
+
+ CharSet.Interval interval = new CharSet.Interval((char) 0, (char) 0xffff);
+
+ do
+ {
+ IntSet destination = new IntSet();
+ interval.end = (char) 0xffff;
+ boolean modified = false;
+
+ int[] elements = state.nfaStates.elements();
+
+ for(int k = 0; k < elements.length; k++)
+ {
+ int j = elements[k];
+
+ if((nfa.states[j].transitions[0] != null) &&
+ (nfa.states[j].transitions[0].chars != null))
+ {
+ CharSet.Interval overlap =
+ nfa.states[j].transitions[0].chars.findOverlap(interval);
+
+ if(overlap != null)
+ {
+ if(overlap.start > interval.start)
+ {
+ interval.end = (char) (overlap.start - 1);
+ }
+ else
+ {
+ destination.set(nfa.states[j].transitions[0].destination);
+ modified = true;
+
+ if(overlap.end < interval.end)
+ {
+ interval.end = overlap.end;
+ }
+ }
+ }
+ }
+
+ if((nfa.states[j].transitions[1] != null) &&
+ (nfa.states[j].transitions[1].chars != null))
+ {
+ CharSet.Interval overlap =
+ nfa.states[j].transitions[1].chars.findOverlap(interval);
+
+ if(overlap != null)
+ {
+ if(overlap.start > interval.start)
+ {
+ interval.end = (char) (overlap.start - 1);
+ }
+ else
+ {
+ destination.set(nfa.states[j].transitions[1].destination);
+
+ if(overlap.end < interval.end)
+ {
+ interval.end = overlap.end;
+ }
+ }
+ }
+ }
+ }
+
+ if(modified)
+ {
+ destination = eclosure(destination);
+ Integer dest = (Integer) finder.get(destination);
+
+ if(dest != null)
+ {
+ state.transitions.addElement(
+ new Transition((CharSet.Interval) interval.clone(), dest.intValue()));
+ }
+ else
+ {
+ State s = new State(destination);
+ states.addElement(s);
+ finder.put(s.nfaStates, new Integer(states.size() - 1));
+
+ state.transitions.addElement(
+ new Transition((CharSet.Interval) interval.clone(), states.size() - 1));
+ }
+ }
+
+ interval.start = (char) (interval.end + 1);
+ }
+ while(interval.end != (char) 0xffff);
+
+// System.out.println(state);
+ }
+
+// System.out.println(this);
+ }
+
+ private IntSet[] eclosures;
+
+ private void computeEClosures()
+ {
+ eclosures = new IntSet[nfa.states.length];
+
+ for(int i = 0; i < nfa.states.length; i++)
+ {
+ System.out.print(".");
+
+ IntSet set = new IntSet();
+ eclosure(i, set);
+ eclosures[i] = set;
+ }
+
+ System.out.println();
+ }
+
+ private IntSet eclosure(int state)
+ {
+ return eclosures[state];
+ }
+
+ private void eclosure(int state, IntSet nfaStates)
+ {
+ if(eclosures[state] != null)
+ {
+ nfaStates.or(eclosures[state]);
+ return;
+ }
+
+ nfaStates.set(state);
+
+ if((nfa.states[state].transitions[0] != null) &&
+ (nfa.states[state].transitions[0].chars == null) &&
+ (!nfaStates.get(nfa.states[state].transitions[0].destination)))
+
+ {
+ eclosure(nfa.states[state].transitions[0].destination, nfaStates);
+ }
+
+ if((nfa.states[state].transitions[1] != null) &&
+ (nfa.states[state].transitions[1].chars == null) &&
+ (!nfaStates.get(nfa.states[state].transitions[1].destination)))
+
+ {
+ eclosure(nfa.states[state].transitions[1].destination, nfaStates);
+ }
+ }
+
+ private IntSet eclosure(IntSet nfaStates)
+ {
+ IntSet result = new IntSet();
+
+ int[] elements = nfaStates.elements();
+
+ for(int j = 0; j < elements.length; j++)
+ {
+ int i = elements[j];
+
+ result.or(eclosure(i));
+ }
+
+ return result;
+ }
+
+ public String toString()
+ {
+ StringBuffer result = new StringBuffer();
+
+ for(int i = 0; i < states.size(); i++)
+ {
+ result.append(i + ": " + states.elementAt(i) +
+ System.getProperty("line.separator"));
+ }
+
+ return result.toString();
+ }
+
+ public static class State
+ {
+ public State(IntSet nfaStates)
+ {
+ this.nfaStates = nfaStates;
+ }
+
+ public IntSet nfaStates = new IntSet();
+ public Vector transitions = new Vector(0);
+ public int accept;
+
+ public String toString()
+ {
+ StringBuffer result = new StringBuffer();
+
+/* for(int i = 0; i < nfaStates.size(); i++)
+ {
+ if(nfaStates.get(i))
+ {
+ if(nfa.states[i].accept != null)
+ {
+ result.append("(" + nfa.states[i].accept + ")");
+ }
+ }
+ }*/
+
+ for(int i = 0; i < transitions.size(); i++)
+ {
+ result.append(transitions.elementAt(i) + ",");
+ }
+
+ return result /*+ " " + nfaStates*/ + "";
+ }
+ }
+
+ public static class Transition
+ {
+ private char start;
+ private char end;
+
+ public int destination;
+
+ public Transition(CharSet.Interval interval, int destination)
+ {
+ this.start = interval.start;
+ this.end = interval.end;
+ this.destination = destination;
+ }
+
+ public CharSet.Interval interval()
+ {
+ return new CharSet.Interval(start, end);
+ }
+
+ public Transition(Transition transition)
+ {
+ start = transition.start;
+ end = transition.end;
+ destination = transition.destination;
+ }
+
+ public String toString()
+ {
+ return destination + ":[" + interval() + "]";
+ }
+
+ public boolean match(Transition transition)
+ {
+ return (start == transition.start) &&
+ (end == transition.end) &&
+ (destination == transition.destination);
+ }
+ }
+}
+
+
Added: sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/DisplayLicense.java
===================================================================
--- sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/DisplayLicense.java (rev 0)
+++ sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/DisplayLicense.java 2012-07-12 16:49:25 UTC (rev 248)
@@ -0,0 +1,68 @@
+/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+ * This file is part of SableCC. *
+ * See the file "LICENSE" for copyright information and the *
+ * terms and conditions for copying, distribution and *
+ * modification of SableCC. *
+ * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
+
+package org.sablecc.sablecc;
+
+import java.io.*;
+
+class DisplayLicense
+{
+ DisplayLicense()
+ {
+ try
+ {
+ BufferedReader in =
+ new BufferedReader(
+ new InputStreamReader(
+ getClass().getResourceAsStream("LICENSE")));
+ System.out.println("---- FILE: LICENSE ----");
+
+ String s;
+ while((s = in.readLine()) != null)
+ {
+ System.out.println(s);
+ }
+ in.close();
+
+ System.out.println("---- END OF FILE: SableVM-LICENSE ----");
+ System.out.println();
+
+ System.out.println("---- FILE: AUTHORS ----");
+ in =
+ new BufferedReader(
+ new InputStreamReader(
+ getClass().getResourceAsStream("AUTHORS")));
+
+ while((s = in.readLine()) != null)
+ {
+ System.out.println(s);
+ }
+ in.close();
+ System.out.println("---- END OF FILE: AUTHORS ----");
+ System.out.println();
+
+ System.out.println("---- FILE: COPYING-LESSER ----");
+
+ in =
+ new BufferedReader(
+ new InputStreamReader(
+ getClass().getResourceAsStream("COPYING-LESSER")));
+
+ while((s = in.readLine()) != null)
+ {
+ System.out.println(s);
+ }
+ in.close();
+ System.out.println("---- END OF FILE: COPYING-LESSER ----");
+ }
+ catch(Exception e)
+ {
+ System.out.println(e);
+ System.exit(1);
+ }
+ }
+}
Added: sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/GenAlts.java
===================================================================
--- sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/GenAlts.java (rev 0)
+++ sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/GenAlts.java 2012-07-12 16:49:25 UTC (rev 248)
@@ -0,0 +1,487 @@
+/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+ * This file is part of SableCC. *
+ * See the file "LICENSE" for copyright information and the *
+ * terms and conditions for copying, distribution and *
+ * modification of SableCC. *
+ * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
+
+package org.sablecc.sablecc;
+
+import org.sablecc.sablecc.analysis.*;
+import org.sablecc.sablecc.node.*;
+import java.util.*;
+import java.io.*;
+
+public class GenAlts extends DepthFirstAdapter
+{
+ private MacroExpander macros;
+ private ResolveIds ids;
+ private File pkgDir;
+ private String pkgName;
+ private List elemList;
+
+ private String currentProd;
+ ElemInfo info;
+// final GenAlts instance = this;
+
+ public GenAlts(ResolveIds ids)
+ {
+ this.ids = ids;
+
+ try
+ {
+ macros = new MacroExpander(
+ new InputStreamReader(
+ getClass().getResourceAsStream("alternatives.txt")));
+ }
+ catch(IOException e)
+ {
+ throw new RuntimeException("unable to open alternatives.txt.");
+ }
+
+ pkgDir = new File(ids.pkgDir, "node");
+ pkgName = ids.pkgName.equals("") ? "node" : ids.pkgName + ".node";
+
+ if(!pkgDir.exists())
+ {
+ if(!pkgDir.mkdir())
+ {
+ throw new RuntimeException("Unable to create " + pkgDir.getAbsolutePath());
+ }
+ }
+ }
+
+ public void inProd1(Prod1 node)
+ {
+ currentProd = (String) ids.names.get(node);
+ }
+
+ public void inAlt1(Alt1 node)
+ {
+ inAlt(node);
+ }
+
+ public void inAlt2(Alt2 node)
+ {
+ inAlt(node);
+ }
+
+ public void inAlt(Alt node)
+ {
+ elemList = new TypedLinkedList(ElemInfoCast.instance);
+ }
+
+ public void inElem1(Elem1 node)
+ {
+ info = new ElemInfo();
+
+ info.name = (String) ids.names.get(node);
+ info.type = (String) ids.elemTypes.get(node);
+ info.operator = ElemInfo.NONE;
+
+ node.getNode4().apply(new DepthFirstAdapter()
+ {
+ public void caseUnOp1(UnOp1 node)
+ {
+ info.operator = ElemInfo.STAR;
+ }
+
+ public void caseUnOp2(UnOp2 node)
+ {
+ info.operator = ElemInfo.QMARK;
+ }
+
+ public void caseUnOp3(UnOp3 node)
+ {
+ info.operator = ElemInfo.PLUS;
+ }
+ });
+
+ elemList.add(info);
+ info = null;
+ }
+
+ public void outAlt1(Alt1 node)
+ {
+ outAlt(node);
+ }
+
+ public void outAlt2(Alt2 node)
+ {
+ outAlt(node);
+ }
+
+ public void outAlt(Alt node)
+ {
+ String name = (String) ids.names.get(node);
+
+ BufferedWriter file;
+
+ try
+ {
+ file = new BufferedWriter(
+ new FileWriter(
+ new File(pkgDir, name + ".java")));
+ }
+ catch(IOException e)
+ {
+ throw new RuntimeException("Unable to create " + new File(pkgDir, name + ".java").getAbsolutePath());
+ }
+
+ try
+ {
+ boolean hasOperator = false;
+
+ macros.apply(file, "AlternativeHeader", new String[] {pkgName,
+ ids.pkgName.equals("") ? "analysis" : ids.pkgName + ".analysis",
+ name, currentProd});
+
+ for(Iterator i = elemList.iterator(); i.hasNext();)
+ {
+ ElemInfo info = (ElemInfo) i.next();
+
+ switch(info.operator)
+ {
+ case ElemInfo.QMARK:
+ case ElemInfo.NONE:
+ {
+ macros.apply(file, "NodeElement",
+ new String[] {info.type,
+ nodeName(info.name)});
+ }
+ break;
+ case ElemInfo.STAR:
+ case ElemInfo.PLUS:
+ {
+ hasOperator = true;
+ macros.apply(file, "ListElement",
+ new String[] {info.name, nodeName(info.name)});
+ }
+ break;
+ }
+ }
+
+ macros.apply(file, "ConstructorHeader",
+ new String[] {name});
+ macros.apply(file, "ConstructorBodyHeader", null);
+ macros.apply(file, "ConstructorBodyTail", null);
+
+
+ if(elemList.size() > 0)
+ {
+ macros.apply(file, "ConstructorHeader",
+ new String[] {name});
+
+ for(Iterator i = elemList.iterator(); i.hasNext();)
+ {
+ ElemInfo info = (ElemInfo) i.next();
+
+ switch(info.operator)
+ {
+ case ElemInfo.QMARK:
+ case ElemInfo.NONE:
+ {
+ macros.apply(file, "ConstructorHeaderDeclNode",
+ new String[] {info.type, nodeName(info.name), i.hasNext() ? "," : ""});
+ }
+ break;
+ case ElemInfo.STAR:
+ case ElemInfo.PLUS:
+ {
+ macros.apply(file, "ConstructorHeaderDeclList",
+ new String[] {"List", nodeName(info.name), i.hasNext() ? "," : ""});
+ }
+ break;
+ }
+ }
+
+ macros.apply(file, "ConstructorBodyHeader", null);
+
+ for(Iterator i = elemList.iterator(); i.hasNext();)
+ {
+ ElemInfo info = (ElemInfo) i.next();
+
+ switch(info.operator)
+ {
+ case ElemInfo.QMARK:
+ case ElemInfo.NONE:
+ {
+ macros.apply(file, "ConstructorBodyNode",
+ new String[] {info.name, nodeName(info.name)});
+ }
+ break;
+ case ElemInfo.STAR:
+ case ElemInfo.PLUS:
+ {
+ macros.apply(file, "ConstructorBodyList",
+ new String[] {nodeName(info.name)});
+ }
+ break;
+ }
+ }
+
+ macros.apply(file, "ConstructorBodyTail", null);
+ }
+
+ if(hasOperator)
+ {
+ macros.apply(file, "ConstructorHeader",
+ new String[] {name});
+
+ for(Iterator i = elemList.iterator(); i.hasNext();)
+ {
+ ElemInfo info = (ElemInfo) i.next();
+
+ switch(info.operator)
+ {
+ case ElemInfo.NONE:
+ case ElemInfo.QMARK:
+ {
+ macros.apply(file, "ConstructorHeaderDeclNode",
+ new String[] {info.type, nodeName(info.name), i.hasNext() ? "," : ""});
+ }
+ break;
+ case ElemInfo.STAR:
+ case ElemInfo.PLUS:
+ {
+ macros.apply(file, "ConstructorHeaderDeclList",
+ new String[] {"X" + info.type,
+ nodeName(info.name), i.hasNext() ? "," : ""});
+ }
+ break;
+ }
+ }
+
+ macros.apply(file, "ConstructorBodyHeader", null);
+
+ for(Iterator i = elemList.iterator(); i.hasNext();)
+ {
+ ElemInfo info = (ElemInfo) i.next();
+
+ switch(info.operator)
+ {
+ case ElemInfo.NONE:
+ case ElemInfo.QMARK:
+ {
+ macros.apply(file, "ConstructorBodyNode",
+ new String[] {info.name, nodeName(info.name)});
+ }
+ break;
+ case ElemInfo.STAR:
+ case ElemInfo.PLUS:
+ {
+ macros.apply(file, "ConstructorBodyPlus",
+ new String[] {nodeName(info.name), info.type});
+ }
+ break;
+ }
+ }
+
+ macros.apply(file, "ConstructorBodyTail", null);
+ }
+
+//****************
+ macros.apply(file, "CloneHeader",
+ new String[] {name});
+
+ for(Iterator i = elemList.iterator(); i.hasNext();)
+ {
+ ElemInfo info = (ElemInfo) i.next();
+
+ switch(info.operator)
+ {
+ case ElemInfo.QMARK:
+ case ElemInfo.NONE:
+ {
+ macros.apply(file, "CloneBodyNode",
+ new String[] {info.type, nodeName(info.name), i.hasNext() ? "," : ""});
+ }
+ break;
+ case ElemInfo.STAR:
+ case ElemInfo.PLUS:
+ {
+ macros.apply(file, "CloneBodyList",
+ new String[] {nodeName(info.name), i.hasNext() ? "," : ""});
+ }
+ break;
+ }
+ }
+
+ macros.apply(file, "CloneTail", null);
+//****************
+
+ macros.apply(file, "Apply", new String[] {name});
+
+ for(Iterator i = elemList.iterator(); i.hasNext();)
+ {
+ ElemInfo info = (ElemInfo) i.next();
+
+ switch(info.operator)
+ {
+ case ElemInfo.QMARK:
+ case ElemInfo.NONE:
+ {
+ macros.apply(file, "GetSetNode",
+ new String[] {info.type, info.name, nodeName(info.name)});
+ }
+ break;
+ case ElemInfo.STAR:
+ case ElemInfo.PLUS:
+ {
+ macros.apply(file, "GetSetList",
+ new String[] {info.name, nodeName(info.name)});
+ }
+ break;
+ }
+ }
+
+ macros.apply(file, "ToStringHeader", null);
+ for(Iterator i = elemList.iterator(); i.hasNext();)
+ {
+ ElemInfo info = (ElemInfo) i.next();
+
+ switch(info.operator)
+ {
+ case ElemInfo.QMARK:
+ case ElemInfo.NONE:
+ {
+ macros.apply(file, "ToStringBodyNode",
+ new String[] {nodeName(info.name)});
+ }
+ break;
+ case ElemInfo.STAR:
+ case ElemInfo.PLUS:
+ {
+ macros.apply(file, "ToStringBodyList",
+ new String[] {nodeName(info.name)});
+ }
+ break;
+ }
+ }
+ macros.apply(file, "ToStringTail", null);
+
+ macros.apply(file, "RemoveChildHeader", null);
+ for(Iterator i = elemList.iterator(); i.hasNext();)
+ {
+ ElemInfo info = (ElemInfo) i.next();
+
+ switch(info.operator)
+ {
+ case ElemInfo.QMARK:
+ case ElemInfo.NONE:
+ {
+ macros.apply(file, "RemoveChildNode",
+ new String[] {nodeName(info.name)});
+ }
+ break;
+ case ElemInfo.STAR:
+ case ElemInfo.PLUS:
+ {
+ macros.apply(file, "RemoveChildList",
+ new String[] {nodeName(info.name)});
+ }
+ break;
+ }
+ }
+ macros.apply(file, "RemoveChildTail", null);
+/* */
+ macros.apply(file, "ReplaceChildHeader", null);
+ for(Iterator i = elemList.iterator(); i.hasNext();)
+ {
+ ElemInfo info = (ElemInfo) i.next();
+
+ switch(info.operator)
+ {
+ case ElemInfo.QMARK:
+ case ElemInfo.NONE:
+ {
+ macros.apply(file, "ReplaceChildNode",
+ new String[] {nodeName(info.name), info.name, info.type});
+ }
+ break;
+ case ElemInfo.STAR:
+ case ElemInfo.PLUS:
+ {
+ macros.apply(file, "ReplaceChildList",
+ new String[] {nodeName(info.name)});
+ }
+ break;
+ }
+ }
+ macros.apply(file, "ReplaceChildTail", null);
+
+/* */
+ for(Iterator i = elemList.iterator(); i.hasNext();)
+ {
+ ElemInfo info = (ElemInfo) i.next();
+
+ switch(info.operator)
+ {
+ case ElemInfo.STAR:
+ case ElemInfo.PLUS:
+ {
+ macros.apply(file, "Cast",
+ new String[] {info.name, info.type, name});
+ }
+ break;
+ }
+ }
+
+ macros.apply(file, "AlternativeTail", null);
+ }
+ catch(IOException e)
+ {
+ throw new RuntimeException("An error occured while writing to " +
+ new File(pkgDir, name + ".java").getAbsolutePath());
+ }
+
+ try
+ {
+ file.close();
+ }
+ catch(IOException e)
+ {
+ }
+
+ elemList = null;
+ }
+
+ public static String nodeName(String s)
+ {
+ StringBuffer result = new StringBuffer(s);
+
+ if(result.length() > 0)
+ {
+ result.setCharAt(0, Character.toLowerCase(result.charAt(0)));
+ }
+
+ return result.toString();
+ }
+
+ private static class ElemInfo
+ {
+ final static int NONE = 0;
+ final static int STAR = 1;
+ final static int QMARK = 2;
+ final static int PLUS = 3;
+
+ String name;
+ String type;
+ int operator;
+ }
+
+ private static class ElemInfoCast implements Cast
+ {
+ public final static ElemInfoCast instance = new ElemInfoCast();
+
+ private ElemInfoCast()
+ {
+ }
+
+ public Object cast(Object o)
+ {
+ return (ElemInfo) o;
+ }
+ }
+}
+
Added: sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/GenAnalyses.java
===================================================================
--- sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/GenAnalyses.java (rev 0)
+++ sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/GenAnalyses.java 2012-07-12 16:49:25 UTC (rev 248)
@@ -0,0 +1,460 @@
+/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+ * This file is part of SableCC. *
+ * See the file "LICENSE" for copyright information and the *
+ * terms and conditions for copying, distribution and *
+ * modification of SableCC. *
+ * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
+
+package org.sablecc.sablecc;
+
+import org.sablecc.sablecc.analysis.*;
+import org.sablecc.sablecc.node.*;
+import java.util.*;
+import java.io.*;
+
+public class GenAnalyses extends DepthFirstAdapter
+{
+ private MacroExpander macros;
+ private ResolveIds ids;
+ private File pkgDir;
+ private String pkgName;
+ private List elemList;
+ private List altList = new TypedLinkedList(AltInfoCast.instance);
+ private List tokenList = new TypedLinkedList(StringCast.instance);
+ private String mainProduction;
+
+ ElemInfo info;
+// final GenAnalyses instance = this;
+
+ public GenAnalyses(ResolveIds ids)
+ {
+ this.ids = ids;
+
+ try
+ {
+ macros = new MacroExpander(
+ new InputStreamReader(
+ getClass().getResourceAsStream("analyses.txt")));
+ }
+ catch(IOException e)
+ {
+ throw new RuntimeException("unable to open analyses.txt.");
+ }
+
+ pkgDir = new File(ids.pkgDir, "analysis");
+ pkgName = ids.pkgName.equals("") ? "analysis" : ids.pkgName + ".analysis";
+
+ if(!pkgDir.exists())
+ {
+ if(!pkgDir.mkdir())
+ {
+ throw new RuntimeException("Unable to create " + pkgDir.getAbsolutePath());
+ }
+ }
+ }
+
+ public void inProd1(Prod1 node)
+ {
+ if(mainProduction == null)
+ {
+ mainProduction = (String) ids.names.get(node);
+ }
+ }
+
+ public void inTokenDef1(TokenDef1 node)
+ {
+ tokenList.add(ids.names.get(node));
+ }
+
+ public void inAlt1(Alt1 node)
+ {
+ inAlt(node);
+ }
+
+ public void inAlt2(Alt2 node)
+ {
+ inAlt(node);
+ }
+
+ public void inAlt(Alt node)
+ {
+ elemList = new TypedLinkedList(ElemInfoCast.instance);
+ }
+
+ public void inElem1(Elem1 node)
+ {
+ info = new ElemInfo();
+
+ info.name = (String) ids.names.get(node);
+ info.type = (String) ids.elemTypes.get(node);
+ info.operator = ElemInfo.NONE;
+
+ node.getNode4().apply(new DepthFirstAdapter()
+ {
+ public void caseUnOp1(UnOp1 node)
+ {
+ info.operator = ElemInfo.STAR;
+ }
+
+ public void caseUnOp2(UnOp2 node)
+ {
+ info.operator = ElemInfo.QMARK;
+ }
+
+ public void caseUnOp3(UnOp3 node)
+ {
+ info.operator = ElemInfo.PLUS;
+ }
+ });
+
+ elemList.add(info);
+ info = null;
+ }
+
+ public void outAlt1(Alt1 node)
+ {
+ outAlt(node);
+ }
+
+ public void outAlt2(Alt2 node)
+ {
+ outAlt(node);
+ }
+
+ public void outAlt(Alt node)
+ {
+ AltInfo info = new AltInfo();
+
+ info.name = (String) ids.names.get(node);
+ info.elems.addAll(elemList);
+ elemList = null;
+
+ altList.add(info);
+ }
+
+ public void outStart1(Start1 node)
+ {
+ createAnalysis();
+ createAnalysisAdapter();
+
+ if(mainProduction != null)
+ {
+ createDepthFirstAdapter();
+ createReversedDepthFirstAdapter();
+ }
+ }
+
+ public void createAnalysis()
+ {
+ BufferedWriter file;
+
+ try
+ {
+ file = new BufferedWriter(
+ new FileWriter(
+ new File(pkgDir, "Analysis.java")));
+ }
+ catch(IOException e)
+ {
+ throw new RuntimeException("Unable to create " + new File(pkgDir, "Analysis.java").getAbsolutePath());
+ }
+
+ try
+ {
+ macros.apply(file, "AnalysisHeader", new String[] {pkgName,
+ ids.pkgName.equals("") ? "node" : ids.pkgName + ".node"});
+
+ if(mainProduction != null)
+ {
+ macros.apply(file, "AnalysisStart", null);
+
+ for(Iterator i = altList.iterator(); i.hasNext();)
+ {
+ AltInfo info = (AltInfo) i.next();
+
+ macros.apply(file, "AnalysisBody",
+ new String[] {info.name});
+ }
+
+ file.newLine();
+ }
+
+ for(Iterator i = tokenList.iterator(); i.hasNext();)
+ {
+ macros.apply(file, "AnalysisBody",
+ new String[] {(String) i.next()});
+ }
+
+ macros.apply(file, "AnalysisTail", null);
+ }
+ catch(IOException e)
+ {
+ throw new RuntimeException("An error occured while writing to " +
+ new File(pkgDir, "Analysis.java").getAbsolutePath());
+ }
+
+ try
+ {
+ file.close();
+ }
+ catch(IOException e)
+ {
+ }
+ }
+
+ public void createAnalysisAdapter()
+ {
+ BufferedWriter file;
+
+ try
+ {
+ file = new BufferedWriter(
+ new FileWriter(
+ new File(pkgDir, "AnalysisAdapter.java")));
+ }
+ catch(IOException e)
+ {
+ throw new RuntimeException("Unable to create " + new File(pkgDir, "AnalysisAdapter.java").getAbsolutePath());
+ }
+
+ try
+ {
+ macros.apply(file, "AnalysisAdapterHeader", new String[] {pkgName,
+ ids.pkgName.equals("") ? "node" : ids.pkgName + ".node"});
+
+ if(mainProduction != null)
+ {
+ macros.apply(file, "AnalysisAdapterStart", null);
+
+ for(Iterator i = altList.iterator(); i.hasNext();)
+ {
+ AltInfo info = (AltInfo) i.next();
+
+ macros.apply(file, "AnalysisAdapterBody",
+ new String[] {info.name});
+ }
+ }
+
+ for(Iterator i = tokenList.iterator(); i.hasNext();)
+ {
+ macros.apply(file, "AnalysisAdapterBody",
+ new String[] {(String) i.next()});
+ }
+
+ macros.apply(file, "AnalysisAdapterTail", null);
+ }
+ catch(IOException e)
+ {
+ throw new RuntimeException("An error occured while writing to " +
+ new File(pkgDir, "AnalysisAdapter.java").getAbsolutePath());
+ }
+
+ try
+ {
+ file.close();
+ }
+ catch(IOException e)
+ {
+ }
+ }
+
+ public void createDepthFirstAdapter()
+ {
+ BufferedWriter file;
+
+ try
+ {
+ file = new BufferedWriter(
+ new FileWriter(
+ new File(pkgDir, "DepthFirstAdapter.java")));
+ }
+ catch(IOException e)
+ {
+ throw new RuntimeException("Unable to create " + new File(pkgDir, "DepthFirstAdapter.java").getAbsolutePath());
+ }
+
+ try
+ {
+ macros.apply(file, "DepthFirstAdapterHeader", new String[] {pkgName,
+ ids.pkgName.equals("") ? "node" : ids.pkgName + ".node",
+ mainProduction});
+
+ for(Iterator i = altList.iterator(); i.hasNext();)
+ {
+ AltInfo info = (AltInfo) i.next();
+
+ macros.apply(file, "DepthFirstAdapterInOut",
+ new String[] {info.name});
+
+ macros.apply(file, "DepthFirstAdapterCaseHeader",
+ new String[] {info.name});
+
+ for(Iterator j = info.elems.iterator(); j.hasNext();)
+ {
+ ElemInfo eInfo = (ElemInfo) j.next();
+
+ switch(eInfo.operator)
+ {
+ case ElemInfo.QMARK:
+ case ElemInfo.NONE:
+ {
+ macros.apply(file, "DepthFirstAdapterCaseBodyNode",
+ new String[] {eInfo.name});
+ }
+ break;
+ case ElemInfo.STAR:
+ case ElemInfo.PLUS:
+ {
+ macros.apply(file, "DepthFirstAdapterCaseBodyList",
+ new String[] {eInfo.name, eInfo.type});
+ }
+ break;
+ }
+ }
+
+ macros.apply(file, "DepthFirstAdapterCaseTail",
+ new String[] {info.name});
+
+ }
+
+ macros.apply(file, "DepthFirstAdapterTail", null);
+ }
+ catch(IOException e)
+ {
+ throw new RuntimeException("An error occured while writing to " +
+ new File(pkgDir, "DepthFirstAdapter.java").getAbsolutePath());
+ }
+
+ try
+ {
+ file.close();
+ }
+ catch(IOException e)
+ {
+ }
+ }
+
+ public void createReversedDepthFirstAdapter()
+ {
+ BufferedWriter file;
+
+ try
+ {
+ file = new BufferedWriter(
+ new FileWriter(
+ new File(pkgDir, "ReversedDepthFirstAdapter.java")));
+ }
+ catch(IOException e)
+ {
+ throw new RuntimeException("Unable to create " + new File(pkgDir, "ReversedDepthFirstAdapter.java").getAbsolutePath());
+ }
+
+ try
+ {
+ macros.apply(file, "ReversedDepthFirstAdapterHeader", new String[] {pkgName,
+ ids.pkgName.equals("") ? "node" : ids.pkgName + ".node",
+ mainProduction});
+
+ for(Iterator i = altList.iterator(); i.hasNext();)
+ {
+ AltInfo info = (AltInfo) i.next();
+
+ macros.apply(file, "DepthFirstAdapterInOut",
+ new String[] {info.name});
+
+ macros.apply(file, "DepthFirstAdapterCaseHeader",
+ new String[] {info.name});
+
+ for(ListIterator j = info.elems.listIterator(info.elems.size()); j.hasPrevious();)
+ {
+ ElemInfo eInfo = (ElemInfo) j.previous();
+
+ switch(eInfo.operator)
+ {
+ case ElemInfo.QMARK:
+ case ElemInfo.NONE:
+ {
+ macros.apply(file, "DepthFirstAdapterCaseBodyNode",
+ new String[] {eInfo.name});
+ }
+ break;
+ case ElemInfo.STAR:
+ case ElemInfo.PLUS:
+ {
+ macros.apply(file, "ReversedDepthFirstAdapterCaseBodyList",
+ new String[] {eInfo.name, eInfo.type});
+ }
+ break;
+ }
+ }
+
+ macros.apply(file, "DepthFirstAdapterCaseTail",
+ new String[] {info.name});
+
+ }
+
+ macros.apply(file, "DepthFirstAdapterTail", null);
+ }
+ catch(IOException e)
+ {
+ throw new RuntimeException("An error occured while writing to " +
+ new File(pkgDir, "ReversedDepthFirstAdapter.java").getAbsolutePath());
+ }
+
+ try
+ {
+ file.close();
+ }
+ catch(IOException e)
+ {
+ }
+ }
+
+ private static class ElemInfo
+ {
+ final static int NONE = 0;
+ final static int STAR = 1;
+ final static int QMARK = 2;
+ final static int PLUS = 3;
+
+ String name;
+ String type;
+ int operator;
+ }
+
+ private static class ElemInfoCast implements Cast
+ {
+ final static ElemInfoCast instance = new ElemInfoCast();
+
+ private ElemInfoCast()
+ {
+ }
+
+ public Object cast(Object o)
+ {
+ return (ElemInfo) o;
+ }
+ }
+
+ private static class AltInfo
+ {
+ String name;
+ final List elems = new TypedLinkedList(ElemInfoCast.instance);
+ }
+
+ private static class AltInfoCast implements Cast
+ {
+ final static AltInfoCast instance = new AltInfoCast();
+
+ private AltInfoCast()
+ {
+ }
+
+ public Object cast(Object o)
+ {
+ return (AltInfo) o;
+ }
+ }
+}
+
+
Added: sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/GenLexer.java
===================================================================
--- sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/GenLexer.java (rev 0)
+++ sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/GenLexer.java 2012-07-12 16:49:25 UTC (rev 248)
@@ -0,0 +1,361 @@
+/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+ * This file is part of SableCC. *
+ * See the file "LICENSE" for copyright information and the *
+ * terms and conditions for copying, distribution and *
+ * modification of SableCC. *
+ * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
+
+package org.sablecc.sablecc;
+
+import java.util.*;
+import org.sablecc.sablecc.analysis.*;
+import org.sablecc.sablecc.node.*;
+import java.io.*;
+import java.util.Vector;
+import java.util.Enumeration;
+
+public class GenLexer extends AnalysisAdapter
+{
+ private MacroExpander macros;
+ private ResolveIds ids;
+ private File pkgDir;
+ private String pkgName;
+ private AcceptStates[] acceptStatesArray;
+ private Transitions transitions;
+
+ public GenLexer(ResolveIds ids)
+ {
+ this.ids = ids;
+
+ try
+ {
+ macros = new MacroExpander(
+ new InputStreamReader(
+ getClass().getResourceAsStream("lexer.txt")));
+ }
+ catch(IOException e)
+ {
+ throw new RuntimeException("unable to open lexer.txt.");
+ }
+
+ pkgDir = new File(ids.pkgDir, "lexer");
+ pkgName = ids.pkgName.equals("") ? "lexer" : ids.pkgName + ".lexer";
+
+ if(!pkgDir.exists())
+ {
+ if(!pkgDir.mkdir())
+ {
+ throw new RuntimeException("Unable to create " + pkgDir.getAbsolutePath());
+ }
+ }
+ }
+
+ public void caseStart1(Start1 tree)
+ {
+ String[] names;
+ int numStates = Math.max(1, ids.stateList.size());
+
+ acceptStatesArray = new AcceptStates[numStates];
+ names = new String[numStates];
+
+ if(ids.stateList.size() == 0)
+ {
+ names[0] = "INITIAL";
+ }
+ else
+ {
+ Iterator iter = ids.stateList.iterator();
+ for(int i = 0; i < numStates; i++)
+ {
+ names[i] = (String) iter.next();
+ }
+ }
+
+ for(int i = 0; i < numStates; i++)
+ {
+ System.out.println(" State: " + names[i]);
+
+ System.out.println(" - Constructing NFA.");
+ ConstructNFA nfaConstructor = new ConstructNFA(ids, names[i]);
+ tree.apply(nfaConstructor);
+ System.out.println();
+
+ NFA nfa = (NFA) nfaConstructor.getOut(tree);
+ nfaConstructor = null;
+
+ System.out.println(" - Constructing DFA.");
+ DFA dfa = new DFA(nfa);
+ System.out.println();
+
+ System.out.println(" - resolving ACCEPT states.");
+ acceptStatesArray[i] = new AcceptStates(dfa, ids, names[i]);
+ tree.apply(acceptStatesArray[i]);
+ }
+
+ transitions = new Transitions();
+ tree.apply(transitions);
+
+ createLexerException();
+ createLexer();
+ }
+
+ private void createLexerException()
+ {
+ BufferedWriter file;
+
+ try
+ {
+ file = new BufferedWriter(
+ new FileWriter(
+ new File(pkgDir, "LexerException.java")));
+ }
+ catch(IOException e)
+ {
+ throw new RuntimeException("Unable to create " + new File(pkgDir, "LexerException.java").getAbsolutePath());
+ }
+
+ try
+ {
+ macros.apply(file, "LexerException", new String[] {pkgName});
+ }
+ catch(IOException e)
+ {
+ throw new RuntimeException("An error occured while writing to " +
+ new File(pkgDir, "LexerException.java").getAbsolutePath());
+ }
+
+ try
+ {
+ file.close();
+ }
+ catch(IOException e)
+ {
+ }
+ }
+
+ private void createLexer()
+ {
+ BufferedWriter file;
+
+ try
+ {
+ file = new BufferedWriter(
+ new FileWriter(
+ new File(pkgDir, "Lexer.java")));
+ }
+ catch(IOException e)
+ {
+ throw new RuntimeException("Unable to create " + new File(pkgDir, "Lexer.java").getAbsolutePath());
+ }
+
+ try
+ {
+ String startState = "INITIAL";
+ if(ids.stateList.size() > 0)
+ {
+ startState = (String) ids.stateList.getFirst();
+ }
+
+ macros.apply(file, "LexerHeader", new String[] {pkgName,
+ ids.pkgName.equals("") ? "node" : ids.pkgName + ".node",
+ startState});
+
+ for(ListIterator i = ids.tokenList.listIterator(); i.hasNext();)
+ {
+ String name = (String) i.next();
+ Node node = (Node) ids.tokens.get(name);
+ boolean fixed = ((Boolean) ids.fixedTokens.get(node)).booleanValue();
+
+ if(fixed)
+ {
+ macros.apply(file, "LexerFixedToken",
+ new String[] {"" + i.previousIndex(), name});
+ }
+ else
+ {
+ macros.apply(file, "LexerVariableToken",
+ new String[] {"" + i.previousIndex(), name});
+ }
+
+ Map map = (Map) transitions.tokenStates.get(node);
+ if(map.size() > 0)
+ {
+ macros.apply(file, "TokenSwitchHeader", null);
+
+ for(Iterator j = map.entrySet().iterator(); j.hasNext();)
+ {
+ Map.Entry entry = (Map.Entry) j.next();
+
+ macros.apply(file, "TokenCase",
+ new String[] {ids.stateList.indexOf((String) entry.getKey()) + "",
+ (String) entry.getValue()});
+ }
+
+ macros.apply(file, "TokenSwitchTail", null);
+ }
+
+ macros.apply(file, "LexerTokenTail", null);
+ }
+
+ macros.apply(file, "LexerBody1");
+
+ for(ListIterator i = ids.tokenList.listIterator(); i.hasNext();)
+ {
+ String name = (String) i.next();
+ Node node = (Node) ids.tokens.get(name);
+ boolean fixed = ((Boolean) ids.fixedTokens.get(node)).booleanValue();
+
+ if(fixed)
+ {
+ macros.apply(file, "LexerNewFixedToken",
+ new String[] {"" + i.previousIndex(), name});
+ }
+ else
+ {
+ macros.apply(file, "LexerNewVariableToken",
+ new String[] {"" + i.previousIndex(), name});
+ }
+ }
+
+ macros.apply(file, "LexerBody2");
+
+ DataOutputStream out = new DataOutputStream(
+ new BufferedOutputStream(
+ new FileOutputStream(
+ new File(pkgDir, "lexer.dat"))));
+
+ out.writeInt(acceptStatesArray.length);
+ for(int accSt = 0; accSt < acceptStatesArray.length; accSt++)
+ {
+ DFA dfa = acceptStatesArray[accSt].dfa;
+
+ file.write(" { // " + acceptStatesArray[accSt].stateName + System.getProperty("line.separator"));
+ Vector outerArray = new Vector();
+
+ for(int i = 0; i < dfa.states.size(); i++)
+ {
+ Vector innerArray = new Vector();
+
+ DFA.State state = (DFA.State) dfa.states.elementAt(i);
+ file.write(" {");
+
+ for(int j = 0; j < state.transitions.size(); j++)
+ {
+ DFA.Transition transition =
+ (DFA.Transition) state.transitions.elementAt(j);
+
+ file.write("{" + ((int) transition.interval().start) + ", " +
+ ((int) transition.interval().end) + ", " +
+ transition.destination + "}, ");
+
+ innerArray.addElement(new int[] {
+ ((int) transition.interval().start),
+ ((int) transition.interval().end),
+ transition.destination});
+ }
+
+ file.write("}," + System.getProperty("line.separator"));
+
+ outerArray.addElement(innerArray);
+ }
+ file.write(" }" + System.getProperty("line.separator"));
+
+ out.writeInt(outerArray.size());
+ for(Enumeration e = outerArray.elements(); e.hasMoreElements();)
+ {
+ Vector innerArray = (Vector) e.nextElement();
+ out.writeInt(innerArray.size());
+ for(Enumeration n = innerArray.elements(); n.hasMoreElements();)
+ {
+ int[] array = (int[]) n.nextElement();
+
+ for(int i = 0; i < 3; i++)
+ {
+ out.writeInt(array[i]);
+ }
+ }
+ }
+ }
+
+ macros.apply(file, "LexerAcceptHeader");
+
+ final int stateNumber = acceptStatesArray.length;
+
+ Vector outerArray = new Vector();
+
+ for(int i = 0; i < stateNumber; i++)
+ {
+ DFA dfa = acceptStatesArray[i].dfa;
+ Vector innerArray = new Vector();
+
+ file.write(" // " + acceptStatesArray[i].stateName + System.getProperty("line.separator"));
+ file.write(" {");
+
+ for(int j = 0; j < dfa.states.size(); j++)
+ {
+ DFA.State state = (DFA.State) dfa.states.elementAt(j);
+
+ file.write(state.accept + ", ");
+ innerArray.addElement(new Integer(state.accept));
+ }
+
+ file.write("}," + System.getProperty("line.separator"));
+
+ outerArray.addElement(innerArray);
+ }
+
+ out.writeInt(outerArray.size());
+ for(Enumeration e = outerArray.elements(); e.hasMoreElements();)
+ {
+ Vector innerArray = (Vector) e.nextElement();
+ out.writeInt(innerArray.size());
+ for(Enumeration n = innerArray.elements(); n.hasMoreElements();)
+ {
+ Integer i = (Integer) n.nextElement();
+ out.writeInt(i.intValue());
+ }
+ }
+ out.close();
+
+ file.write(System.getProperty("line.separator"));
+
+ macros.apply(file, "LexerAcceptTail");
+
+ macros.apply(file, "LexerStateHeader");
+
+ if(ids.stateList.size() > 0)
+ {
+ for(ListIterator i = ids.stateList.listIterator(); i.hasNext();)
+ {
+ String s = (String) i.next();
+
+ macros.apply(file, "LexerStateBody",
+ new String[] {s, "" + i.previousIndex()});
+ }
+ }
+ else
+ {
+ macros.apply(file, "LexerStateBody",
+ new String[] {"INITIAL", "" + 0});
+ }
+
+ macros.apply(file, "LexerStateTail");
+
+ macros.apply(file, "LexerTail");
+ }
+ catch(IOException e)
+ {
+ throw new RuntimeException("An error occured while writing to " +
+ new File(pkgDir, "Lexer.java").getAbsolutePath());
+ }
+
+ try
+ {
+ file.close();
+ }
+ catch(IOException e)
+ {
+ }
+ }
+}
+
Added: sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/GenParser.java
===================================================================
--- sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/GenParser.java (rev 0)
+++ sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/GenParser.java 2012-07-12 16:49:25 UTC (rev 248)
@@ -0,0 +1,883 @@
+/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+ * This file is part of SableCC. *
+ * See the file "LICENSE" for copyright information and the *
+ * terms and conditions for copying, distribution and *
+ * modification of SableCC. *
+ * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
+
+package org.sablecc.sablecc;
+
+import java.util.*;
+import org.sablecc.sablecc.analysis.*;
+import org.sablecc.sablecc.node.*;
+import java.io.*;
+import org.sablecc.sablecc.Grammar;
+import java.util.Vector;
+import java.util.Enumeration;
+
+public class GenParser extends DepthFirstAdapter
+{
+ private MacroExpander macros;
+ private ResolveIds ids;
+ private File pkgDir;
+ private String pkgName;
+ private String currentProd;
+ private int currentAlt;
+ private boolean hasProductions;
+
+ static final int NONE = 0;
+ static final int STAR = 1;
+ static final int QMARK = 2;
+ static final int PLUS = 3;
+ int count;
+ int elem;
+ Map alts = new TypedTreeMap(
+ StringComparator.instance,
+ StringCast.instance,
+ NodeCast.instance);
+
+ public GenParser(ResolveIds ids)
+ {
+ this.ids = ids;
+
+ try
+ {
+ macros = new MacroExpander(
+ new InputStreamReader(
+ getClass().getResourceAsStream("parser.txt")));
+ }
+ catch(IOException e)
+ {
+ throw new RuntimeException("unable to open parser.txt.");
+ }
+
+ pkgDir = new File(ids.pkgDir, "parser");
+ pkgName = ids.pkgName.equals("") ? "parser" : ids.pkgName + ".parser";
+
+ if(!pkgDir.exists())
+ {
+ if(!pkgDir.mkdir())
+ {
+ throw new RuntimeException("Unable to create " + pkgDir.getAbsolutePath());
+ }
+ }
+ }
+
+ public void caseStart1(Start1 tree)
+ {
+ tree.apply(new DepthFirstAdapter()
+ {
+ private boolean hasAlternative;
+
+ public void caseTokenDef1(TokenDef1 node)
+ {
+ String name = (String) ids.names.get(node);
+ String errorName = (String) ids.errorNames.get(node);
+
+ if(!ids.ignTokens.containsKey(name))
+ {
+ Grammar.addTerminal(name, errorName);
+ }
+ }
+
+ public void inProd1(Prod1 node)
+ {
+ hasAlternative = false;
+ }
+
+ public void inAlt1(Alt1 node)
+ {
+ hasAlternative = true;
+ }
+
+ public void outProd1(Prod1 node)
+ {
+ if(hasAlternative)
+ {
+ Grammar.addNonterminal((String) ids.names.get(node));
+ }
+ }
+ });
+
+ tree.getNode1().apply(this);
+
+ if(!hasProductions)
+ {
+ return;
+ }
+
+ Grammar.computeLALR();
+
+ createParser();
+ createParserException();
+ createState();
+ createTokenIndex();
+ }
+
+ public void inProd1(Prod1 node)
+ {
+ hasProductions = true;
+ currentProd = (String) ids.names.get(node);
+ }
+
+ public void caseAlt1(Alt1 node)
+ {
+ count = 1;
+
+ node.apply(new DepthFirstAdapter()
+ {
+ public void inElem1(Elem1 node)
+ {
+ GenParser.this.setOut(node, new Integer(NONE));
+ }
+
+ public void caseUnOp1(UnOp1 node)
+ {
+ count *= 2;
+
+ GenParser.this.setOut(node.getParent().getParent(), new Integer(STAR));
+ }
+
+ public void caseUnOp2(UnOp2 node)
+ {
+ count *= 2;
+
+ GenParser.this.setOut(node.getParent().getParent(), new Integer(QMARK));
+ }
+
+ public void caseUnOp3(UnOp3 node)
+ {
+ GenParser.this.setOut(node.getParent().getParent(), new Integer(PLUS));
+ }
+ });
+
+ if(count == 1)
+ {
+ alts.put(ids.names.get(node), node);
+
+ currentAlt = Grammar.addProduction(currentProd, (String) ids.names.get(node));
+ node.getNode2().apply(this);
+ }
+ else
+ {
+ int max = count;
+
+ for(count = 0; count < max; count++)
+ {
+ elem = 0;
+
+ alts.put(
+ "X" + (count + 1) + (String) ids.names.get(node),
+ node);
+
+ currentAlt = Grammar.addProduction(currentProd,
+ "X" + (count + 1) + (String) ids.names.get(node));
+
+ node.getNode2().apply(this);
+ }
+ }
+ }
+
+ public void caseElem1(Elem1 node)
+ {
+ int op = ((Integer) getOut(node)).intValue();
+ String name = (String) ids.elemTypes.get(node);
+
+ switch(op)
+ {
+ case NONE:
+ {
+ Grammar.addSymbolToProduction(name, currentAlt);
+ }
+ break;
+ case STAR:
+ {
+// System.out.println("Star:" + count + ", " + (1 << elem));
+
+ if((count & (1 << elem)) != 0)
+ {
+// System.out.println("yes");
+
+ try
+ {
+ Grammar.addNonterminal("X" + name);
+
+ int alt = Grammar.addProduction("X" + name, "X1" + name);
+
+ Grammar.addSymbolToProduction("X" + name, alt);
+ Grammar.addSymbolToProduction(name, alt);
+
+ alt = Grammar.addProduction("X" + name, "X2" + name);
+
+ Grammar.addSymbolToProduction(name, alt);
+ }
+ catch(Exception e)
+ {
+ }
+
+ Grammar.addSymbolToProduction("X" + name, currentAlt);
+ }
+
+ elem++;
+ }
+ break;
+ case QMARK:
+ {
+ if((count & (1 << elem)) != 0)
+ {
+ Grammar.addSymbolToProduction(name, currentAlt);
+ }
+
+ elem++;
+ }
+ break;
+ case PLUS:
+ {
+ try
+ {
+ Grammar.addNonterminal("X" + name);
+
+ int alt = Grammar.addProduction("X" + name, "X1" + name);
+
+ Grammar.addSymbolToProduction("X" + name, alt);
+ Grammar.addSymbolToProduction(name, alt);
+
+ alt = Grammar.addProduction("X" + name, "X2" + name);
+
+ Grammar.addSymbolToProduction(name, alt);
+ }
+ catch(Exception e)
+ {
+ }
+
+ Grammar.addSymbolToProduction("X" + name, currentAlt);
+ }
+ break;
+ }
+ }
+
+ public void caseAlt2(Alt2 node)
+ {
+ }
+
+ private void createParser()
+ {
+ BufferedWriter file;
+
+ try
+ {
+ file = new BufferedWriter(
+ new FileWriter(
+ new File(pkgDir, "Parser.java")));
+ }
+ catch(IOException e)
+ {
+ throw new RuntimeException("Unable to create " + new File(pkgDir, "Parser.java").getAbsolutePath());
+ }
+
+ try
+ {
+ Symbol[] terminals = Symbol.terminals();
+ Symbol[] nonterminals = Symbol.nonterminals();
+ Production[] productions = Production.productions();
+
+ macros.apply(file, "ParserHeader", new String[] {pkgName,
+ ids.pkgName.equals("") ? "lexer" : ids.pkgName + ".lexer",
+ ids.pkgName.equals("") ? "node" : ids.pkgName + ".node",
+ ids.pkgName.equals("") ? "analysis" : ids.pkgName + ".analysis"});
+
+ for(int i = 0; i < (productions.length - 1); i++)
+ {
+ Node node = (Node) alts.get(productions[i].name);
+
+ if(node == null)
+ {
+ macros.apply(file, "ParserReduceNoFilter", new String[] {
+ "" + productions[i].index,
+ "" + productions[i].leftside});
+ }
+ else
+ {
+ macros.apply(file, "ParserReduceFilter", new String[] {
+ "" + productions[i].index,
+ "" + productions[i].leftside});
+ }
+ }
+
+ {
+ Symbol[] rightside = productions[productions.length - 1].rightside();
+ macros.apply(file, "ParserParseTail", new String[] {rightside[0].name});
+ }
+
+ for(int i = 0; i < (productions.length - 1); i++)
+ {
+ macros.apply(file, "ParserNewHeader",
+ new String[] {"" + productions[i].index});
+
+ Node node = (Node) alts.get(productions[i].name);
+
+ if(node == null)
+ {
+ Symbol[] rightside = productions[i].rightside();
+ for(int k = rightside.length - 1; k >= 0; k--)
+ {
+ macros.apply(file, "ParserNewBodyDecl",
+ new String[] {rightside[k].name, "" + (k + 1)});
+ }
+
+ macros.apply(file, "ParserNewBodyNew",
+ new String[] {productions[i].name});
+
+ for(int k = 0; k < rightside.length; k++)
+ {
+ macros.apply(file, "ParserNewBodyParams",
+ new String[] {(k == 0) ? "" : ", ",
+ (k + 1) + ""});
+ }
+
+ macros.apply(file, "ParserNewTail", new String[] { "" + productions[i].leftside});
+ }
+ else
+ {
+ count = count(productions[i].name) - 1;
+ elem = 0;
+ final BufferedWriter finalFile = file;
+ final LinkedList stack = new LinkedList();
+
+ node.apply(new DepthFirstAdapter()
+ {
+ private int current;
+
+ public void caseElem1(Elem1 node)
+ {
+ int op = ((Integer) GenParser.this.getOut(node)).intValue();
+ String name = (String) ids.elemTypes.get(node);
+ current++;
+
+ switch(op)
+ {
+ case NONE:
+ {
+ stack.addFirst(new Element("ParserNewBodyDecl",
+ new String[] {name, "" + current}));
+ }
+ break;
+ case STAR:
+ {
+ if((count & (1 << elem)) != 0)
+ {
+ stack.addFirst(new Element("ParserNewBodyDecl",
+ new String[] {"X" + name, "" + current}));
+ }
+ else
+ {
+ stack.addFirst(new Element("ParserNewBodyDeclNull",
+ new String[] {"X" + name, "" + current}));
+ }
+
+ elem++;
+ }
+ break;
+ case QMARK:
+ {
+ if((count & (1 << elem)) != 0)
+ {
+ stack.addFirst(new Element("ParserNewBodyDecl",
+ new String[] {name, "" + current}));
+ }
+ else
+ {
+ stack.addFirst(new Element("ParserNewBodyDeclNull",
+ new String[] {name, "" + current}));
+ }
+
+ elem++;
+ }
+ break;
+ case PLUS:
+ {
+ stack.addFirst(new Element("ParserNewBodyDecl",
+ new String[] {"X" + name, "" + current}));
+ }
+ break;
+ }
+ }
+ });
+
+ try
+ {
+ for(Iterator it = stack.iterator(); it.hasNext();)
+ {
+ Element e = (Element) it.next();
+
+ macros.apply(file, e.macro, e.arguments);
+ }
+ }
+ catch(IOException e)
+ {
+ throw new RuntimeException("An error occured while writing to " +
+ new File(pkgDir, "Parser.java").getAbsolutePath());
+ }
+
+ macros.apply(file, "ParserNewBodyNew",
+ new String[] {
+ (node == null) ? productions[i].name : name(productions[i].name)});
+
+ node.apply(new DepthFirstAdapter()
+ {
+ private int current;
+
+ public void caseElem1(Elem1 node)
+ {
+ try
+ {
+ String name = (String) ids.elemTypes.get(node);
+ current++;
+
+ macros.apply(finalFile, "ParserNewBodyParams",
+ new String[] {(current == 1) ? "" : ", ",
+ current + ""});
+ }
+ catch(IOException e)
+ {
+ throw new RuntimeException("An error occured while writing to " +
+ new File(pkgDir, "Parser.java").getAbsolutePath());
+ }
+ }
+ });
+
+ macros.apply(file, "ParserNewTail", new String[] { "" + productions[i].leftside});
+ }
+ }
+
+ macros.apply(file, "ParserActionHeader");
+
+ StringBuffer table = new StringBuffer();
+
+ DataOutputStream out = new DataOutputStream(
+ new BufferedOutputStream(
+ new FileOutputStream(
+ new File(pkgDir, "parser.dat"))));
+
+ Vector outerArray = new Vector();
+
+ for(int i = 0; i < Grammar.action_.length; i++)
+ {
+ Vector innerArray = new Vector();
+
+ String mostFrequentAction = "ERROR";
+ int mostFrequentDestination = i;
+ int frequence = 0;
+ Map map = new TreeMap(IntegerComparator.instance);
+
+ for(int j = 0; j < Grammar.action_[i].length; j++)
+ {
+ if(Grammar.action_[i][j] != null)
+ {
+ if(Grammar.action_[i][j][0] == 1)
+ {
+ Integer index = new Integer(Grammar.action_[i][j][1]);
+ Integer count = (Integer) map.get(index);
+ int freq = count == null ? 0 : count.intValue();
+ map.put(index, new Integer(++freq));
+ if(freq > frequence)
+ {
+ frequence = freq;
+ mostFrequentAction = "REDUCE";
+ mostFrequentDestination = Grammar.action_[i][j][1];
+ }
+ }
+ }
+ }
+ table.append("\t\t\t{");
+
+ table.append("{" + -1 + ", " +
+ mostFrequentAction + ", " +
+ mostFrequentDestination + "}, ");
+ innerArray.addElement(
+ new int[] {-1,
+ mostFrequentAction.equals("ERROR") ? 3 : 1,
+ mostFrequentDestination});
+
+ for(int j = 0; j < Grammar.action_[i].length; j++)
+ {
+ if(Grammar.action_[i][j] != null)
+ {
+ switch(Grammar.action_[i][j][0])
+ {
+ case 0:
+ table.append("{" + j + ", SHIFT, " + Grammar.action_[i][j][1] + "}, ");
+ innerArray.addElement(new int[] {j, 0, Grammar.action_[i][j][1]});
+ break;
+ case 1:
+ if(Grammar.action_[i][j][1] != mostFrequentDestination)
+ {
+ table.append("{" + j + ", REDUCE, " + Grammar.action_[i][j][1] + "}, ");
+ innerArray.addElement(new int[] {j, 1, Grammar.action_[i][j][1]});
+ }
+ break;
+ case 2:
+ table.append("{" + j + ", ACCEPT, -1}, ");
+ innerArray.addElement(new int[] {j, 2, -1});
+ break;
+ }
+ }
+ }
+
+ table.append("}," + System.getProperty("line.separator"));
+ outerArray.addElement(innerArray);
+ }
+
+ file.write("" + table);
+
+ out.writeInt(outerArray.size());
+ for(Enumeration e = outerArray.elements(); e.hasMoreElements();)
+ {
+ Vector innerArray = (Vector) e.nextElement();
+ out.writeInt(innerArray.size());
+ for(Enumeration n = innerArray.elements(); n.hasMoreElements();)
+ {
+ int[] array = (int[]) n.nextElement();
+
+ for(int i = 0; i < 3; i++)
+ {
+ out.writeInt(array[i]);
+ }
+ }
+ }
+
+ macros.apply(file, "ParserActionTail");
+
+ macros.apply(file, "ParserGotoHeader");
+
+ table = new StringBuffer();
+ outerArray = new Vector();
+
+ for(int j = 0; j < nonterminals.length - 1; j++)
+ {
+ Vector innerArray = new Vector();
+
+ int mostFrequent = -1;
+ int frequence = 0;
+ Map map = new TreeMap(IntegerComparator.instance);
+
+ for(int i = 0; i < Grammar.goto_.length; i++)
+ {
+ if(Grammar.goto_[i][j] != -1)
+ {
+ Integer index = new Integer(Grammar.goto_[i][j]);
+ Integer count = (Integer) map.get(index);
+ int freq = count == null ? 0 : count.intValue();
+ map.put(index, new Integer(++freq));
+ if(freq > frequence)
+ {
+ frequence = freq;
+ mostFrequent = Grammar.goto_[i][j];
+ }
+ }
+ }
+
+ table.append("\t\t\t{");
+
+ table.append("{" + (-1) + ", " + mostFrequent + "}, ");
+ innerArray.addElement(new int[] {-1, mostFrequent});
+
+ for(int i = 0; i < Grammar.goto_.length; i++)
+ {
+ if((Grammar.goto_[i][j] != -1) &&
+ (Grammar.goto_[i][j] != mostFrequent))
+ {
+ table.append("{" + i + ", " + Grammar.goto_[i][j] + "}, ");
+ innerArray.addElement(new int[] {i, Grammar.goto_[i][j]});
+ }
+ }
+
+ table.append("}," + System.getProperty("line.separator"));
+
+ outerArray.addElement(innerArray);
+ }
+
+ file.write("" + table);
+
+ out.writeInt(outerArray.size());
+ for(Enumeration e = outerArray.elements(); e.hasMoreElements();)
+ {
+ Vector innerArray = (Vector) e.nextElement();
+ out.writeInt(innerArray.size());
+ for(Enumeration n = innerArray.elements(); n.hasMoreElements();)
+ {
+ int[] array = (int[]) n.nextElement();
+
+ for(int i = 0; i < 2; i++)
+ {
+ out.writeInt(array[i]);
+ }
+ }
+ }
+
+ macros.apply(file, "ParserGotoTail");
+
+ macros.apply(file, "ParserErrorsHeader");
+
+ table = new StringBuffer();
+ StringBuffer index = new StringBuffer();
+ int nextIndex = 0;
+
+ Map errorIndex = new TypedTreeMap(
+ StringComparator.instance,
+ StringCast.instance,
+ IntegerCast.instance);
+
+ outerArray = new Vector();
+ Vector indexArray = new Vector();
+
+ index.append("\t\t\t");
+ for(int i = 0; i < Grammar.action_.length; i++)
+ {
+ StringBuffer s = new StringBuffer();
+ s.append("expecting: ");
+
+ boolean comma = false;
+ for(int j = 0; j < Grammar.action_[i].length; j++)
+ {
+ if(Grammar.action_[i][j] != null)
+ {
+ if(comma)
+ {
+ s.append(", ");
+ }
+ else
+ {
+ comma = true;
+ }
+
+ s.append(Symbol.symbol(j, true).errorName);
+ }
+ }
+
+ if(errorIndex.containsKey(s.toString()))
+ {
+ index.append(errorIndex.get(s.toString()) + ", ");
+ indexArray.addElement(errorIndex.get(s.toString()));
+ }
+ else
+ {
+ table.append("\t\t\t\"" + s + "\"," + System.getProperty("line.separator"));
+ outerArray.addElement(s.toString());
+ errorIndex.put(s.toString(), new Integer(nextIndex));
+ indexArray.addElement(new Integer(nextIndex));
+ index.append(nextIndex++ + ", ");
+ }
+ }
+
+ file.write("" + table);
+
+ out.writeInt(outerArray.size());
+ for(Enumeration e = outerArray.elements(); e.hasMoreElements();)
+ {
+ String s = (String) e.nextElement();
+ out.writeInt(s.length());
+ int length = s.length();
+ for(int i = 0; i < length; i++)
+ {
+ out.writeChar(s.charAt(i));
+ }
+ }
+
+ out.writeInt(indexArray.size());
+ for(Enumeration e = indexArray.elements(); e.hasMoreElements();)
+ {
+ Integer n = (Integer) e.nextElement();
+ out.writeInt(n.intValue());
+ }
+
+ out.close();
+
+ macros.apply(file, "ParserErrorsTail");
+
+ macros.apply(file, "ParserErrorIndexHeader");
+ file.write("" + index);
+ macros.apply(file, "ParserErrorIndexTail");
+
+ macros.apply(file, "ParserTail");
+ }
+ catch(IOException e)
+ {
+ throw new RuntimeException("An error occured while writing to " +
+ new File(pkgDir, "Parser.java").getAbsolutePath());
+ }
+
+ try
+ {
+ file.close();
+ }
+ catch(IOException e)
+ {
+ }
+ }
+
+ private void createTokenIndex()
+ {
+ BufferedWriter file;
+
+ try
+ {
+ file = new BufferedWriter(
+ new FileWriter(
+ new File(pkgDir, "TokenIndex.java")));
+ }
+ catch(IOException e)
+ {
+ throw new RuntimeException("Unable to create " + new File(pkgDir, "TokenIndex.java").getAbsolutePath());
+ }
+
+ try
+ {
+ Symbol[] terminals = Symbol.terminals();
+
+ macros.apply(file, "TokenIndexHeader", new String[] {pkgName,
+ ids.pkgName.equals("") ? "node" : ids.pkgName + ".node",
+ ids.pkgName.equals("") ? "analysis" : ids.pkgName + ".analysis"});
+
+ for(int i = 0; i < (terminals.length - 2); i++)
+ {
+ macros.apply(file, "TokenIndexBody", new String[] {terminals[i].name, "" + i});
+ }
+
+ macros.apply(file, "TokenIndexTail", new String[] {"" + (terminals.length - 2)});
+ }
+ catch(IOException e)
+ {
+ throw new RuntimeException("An error occured while writing to " +
+ new File(pkgDir, "TokenIndex.java").getAbsolutePath());
+ }
+
+ try
+ {
+ file.close();
+ }
+ catch(IOException e)
+ {
+ }
+ }
+
+ private void createParserException()
+ {
+ BufferedWriter file;
+
+ try
+ {
+ file = new BufferedWriter(
+ new FileWriter(
+ new File(pkgDir, "ParserException.java")));
+ }
+ catch(IOException e)
+ {
+ throw new RuntimeException("Unable to create " + new File(pkgDir, "ParserException.java").getAbsolutePath());
+ }
+
+ try
+ {
+ macros.apply(file, "ParserException", new String[] {pkgName,
+ ids.pkgName.equals("") ? "node" : ids.pkgName + ".node"});
+ }
+ catch(IOException e)
+ {
+ throw new RuntimeException("An error occured while writing to " +
+ new File(pkgDir, "ParserException.java").getAbsolutePath());
+ }
+
+ try
+ {
+ file.close();
+ }
+ catch(IOException e)
+ {
+ }
+ }
+
+ private void createState()
+ {
+ BufferedWriter file;
+
+ try
+ {
+ file = new BufferedWriter(
+ new FileWriter(
+ new File(pkgDir, "State.java")));
+ }
+ catch(IOException e)
+ {
+ throw new RuntimeException("Unable to create " + new File(pkgDir, "State.java").getAbsolutePath());
+ }
+
+ try
+ {
+ macros.apply(file, "State", new String[] {pkgName});
+ }
+ catch(IOException e)
+ {
+ throw new RuntimeException("An error occured while writing to " +
+ new File(pkgDir, "State.java").getAbsolutePath());
+ }
+
+ try
+ {
+ file.close();
+ }
+ catch(IOException e)
+ {
+ }
+ }
+
+ private int count(String name)
+ {
+ if(name.charAt(0) != 'X')
+ {
+ return 0;
+ }
+
+ StringBuffer s = new StringBuffer();
+ int i = 1;
+
+ while((i < name.length()) &&
+ (name.charAt(i) >= '0') &&
+ (name.charAt(i) <= '9'))
+ {
+ s.append(name.charAt(i++));
+ }
+
+ return Integer.parseInt(s.toString());
+ }
+
+ private String name(String name)
+ {
+ if(name.charAt(0) != 'X')
+ {
+ return name;
+ }
+
+ int i = 1;
+ while((i < name.length()) &&
+ (name.charAt(i) >= '0') &&
+ (name.charAt(i) <= '9'))
+ {
+ i++;
+ }
+
+ return name.substring(i);
+ }
+
+ static class Element
+ {
+ String macro;
+ String[] arguments;
+
+ Element(String macro, String[] arguments)
+ {
+ this.macro = macro;
+ this.arguments = arguments;
+ }
+ }
+}
+
Added: sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/GenProds.java
===================================================================
--- sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/GenProds.java (rev 0)
+++ sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/GenProds.java 2012-07-12 16:49:25 UTC (rev 248)
@@ -0,0 +1,201 @@
+/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+ * This file is part of SableCC. *
+ * See the file "LICENSE" for copyright information and the *
+ * terms and conditions for copying, distribution and *
+ * modification of SableCC. *
+ * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
+
+package org.sablecc.sablecc;
+
+import org.sablecc.sablecc.analysis.*;
+import org.sablecc.sablecc.node.*;
+import java.util.*;
+import java.io.*;
+
+public class GenProds extends DepthFirstAdapter
+{
+ private MacroExpander macros;
+ private ResolveIds ids;
+ private File pkgDir;
+ private String pkgName;
+ private Map hiddenProds = new TypedTreeMap(
+ StringComparator.instance,
+ StringCast.instance,
+ NodeCast.instance);
+
+ public GenProds(ResolveIds ids)
+ {
+ this.ids = ids;
+
+ try
+ {
+ macros = new MacroExpander(
+ new InputStreamReader(
+ getClass().getResourceAsStream("productions.txt")));
+ }
+ catch(IOException e)
+ {
+ throw new RuntimeException("unable to open productions.txt.");
+ }
+
+ pkgDir = new File(ids.pkgDir, "node");
+ pkgName = ids.pkgName.equals("") ? "node" : ids.pkgName + ".node";
+
+ if(!pkgDir.exists())
+ {
+ if(!pkgDir.mkdir())
+ {
+ throw new RuntimeException("Unable to create " + pkgDir.getAbsolutePath());
+ }
+ }
+ }
+
+ public void inProd1(Prod1 node)
+ {
+ String name = (String) ids.names.get(node);
+
+ createProduction(name);
+ }
+
+ private void createProduction(String name)
+ {
+ BufferedWriter file;
+
+ try
+ {
+ file = new BufferedWriter(
+ new FileWriter(
+ new File(pkgDir, name + ".java")));
+ }
+ catch(IOException e)
+ {
+ throw new RuntimeException("Unable to create " + new File(pkgDir, name + ".java").getAbsolutePath());
+ }
+
+ try
+ {
+ macros.apply(file, "Production", new String[] {pkgName, name});
+ }
+ catch(IOException e)
+ {
+ throw new RuntimeException("An error occured while writing to " +
+ new File(pkgDir, name + ".java").getAbsolutePath());
+ }
+
+ try
+ {
+ file.close();
+ }
+ catch(IOException e)
+ {
+ }
+ }
+
+ public void inUnOp1(UnOp1 node)
+ {
+ if(node.getParent().getParent() instanceof Elem1)
+ {
+ Elem1 elem = (Elem1) node.getParent().getParent();
+
+ String name = (String) ids.elemTypes.get(elem);
+
+ if(hiddenProds.put("X" + name, elem) == null)
+ {
+ createProduction("X" + name);
+
+ createAlternative(
+ "X1" + name,
+ "HiddenAlternative2",
+ new String[] {pkgName,
+ ids.pkgName.equals("") ? "analysis" : ids.pkgName + ".analysis",
+ "X1" + name,
+ "X" + name,
+ name,
+ GenAlts.nodeName(name),
+ GenAlts.nodeName("X" + name)});
+
+ createAlternative(
+ "X2" + name,
+ "HiddenAlternative1",
+ new String[] {pkgName,
+ ids.pkgName.equals("") ? "analysis" : ids.pkgName + ".analysis",
+ "X2" + name,
+ "X" + name,
+ name,
+ GenAlts.nodeName(name)});
+ }
+ }
+ }
+
+ public void inUnOp3(UnOp3 node)
+ {
+ if(node.getParent().getParent() instanceof Elem1)
+ {
+ Elem1 elem = (Elem1) node.getParent().getParent();
+
+ String name = (String) ids.elemTypes.get(elem);
+
+ if(hiddenProds.put("X" + name, elem) == null)
+ {
+ createProduction("X" + name);
+
+ createAlternative(
+ "X1" + name,
+ "HiddenAlternative2",
+ new String[] {pkgName,
+ ids.pkgName.equals("") ? "analysis" : ids.pkgName + ".analysis",
+ "X1" + name,
+ "X" + name,
+ name,
+ GenAlts.nodeName(name),
+ GenAlts.nodeName("X" + name)});
+
+ createAlternative(
+ "X2" + name,
+ "HiddenAlternative1",
+ new String[] {pkgName,
+ ids.pkgName.equals("") ? "analysis" : ids.pkgName + ".analysis",
+ "X2" + name,
+ "X" + name,
+ name,
+ GenAlts.nodeName(name)});
+ }
+ }
+ }
+
+ private void createAlternative(String name, String macro, String[] arg)
+ {
+ BufferedWriter file;
+
+ try
+ {
+ file = new BufferedWriter(
+ new FileWriter(
+ new File(pkgDir, name + ".java")));
+ }
+ catch(IOException e)
+ {
+ throw new RuntimeException("Unable to create " + new File(pkgDir, name + ".java").getAbsolutePath());
+ }
+
+ try
+ {
+ macros.apply(file, macro, arg);
+ }
+ catch(IOException e)
+ {
+ throw new RuntimeException("An error occured while writing to " +
+ new File(pkgDir, name + ".java").getAbsolutePath());
+ }
+
+ try
+ {
+ file.close();
+ }
+ catch(IOException e)
+ {
+ }
+ }
+}
+
+
Added: sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/GenTokens.java
===================================================================
--- sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/GenTokens.java (rev 0)
+++ sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/GenTokens.java 2012-07-12 16:49:25 UTC (rev 248)
@@ -0,0 +1,208 @@
+/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+ * This file is part of SableCC. *
+ * See the file "LICENSE" for copyright information and the *
+ * terms and conditions for copying, distribution and *
+ * modification of SableCC. *
+ * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
+
+package org.sablecc.sablecc;
+
+import org.sablecc.sablecc.analysis.*;
+import org.sablecc.sablecc.node.*;
+import java.io.*;
+
+public class GenTokens extends DepthFirstAdapter
+{
+ private MacroExpander macros;
+ private ResolveIds ids;
+ private File pkgDir;
+ private String pkgName;
+
+// final GenTokens instance = this;
+ String text;
+
+ public GenTokens(ResolveIds ids)
+ {
+ this.ids = ids;
+
+ try
+ {
+ macros = new MacroExpander(
+ new InputStreamReader(
+ getClass().getResourceAsStream("tokens.txt")));
+ }
+ catch(IOException e)
+ {
+ throw new RuntimeException("unable to open tokens.txt.");
+ }
+
+ pkgDir = new File(ids.pkgDir, "node");
+ pkgName = ids.pkgName.equals("") ? "node" : ids.pkgName + ".node";
+
+ if(!pkgDir.exists())
+ {
+ if(!pkgDir.mkdir())
+ {
+ throw new RuntimeException("Unable to create " + pkgDir.getAbsolutePath());
+ }
+ }
+ }
+
+ public void inTokenDef1(TokenDef1 node)
+ {
+ String name = (String) ids.names.get(node);
+
+ BufferedWriter file;
+
+ try
+ {
+ file = new BufferedWriter(
+ new FileWriter(
+ new File(pkgDir, name + ".java")));
+ }
+ catch(IOException e)
+ {
+ throw new RuntimeException("Unable to create " + new File(pkgDir, name + ".java").getAbsolutePath());
+ }
+
+ text = null;
+
+ RegExp1 regExp = (RegExp1) node.getNode4();
+
+ Concat1 concat = (Concat1) regExp.getNode1();
+ RegExpTails regExpTails = regExp.getNode2();
+
+ if(regExpTails instanceof RegExpTails2)
+ {
+ UnExps unExps = concat.getNode1();
+
+ if(unExps instanceof UnExps1)
+ {
+ UnExps unExps_2 = ((UnExps1) unExps).getNode2();
+
+ if(unExps_2 instanceof UnExps2)
+ {
+ UnExp1 unExp = (UnExp1) ((UnExps1) unExps).getNode1();
+
+ Basic basic = unExp.getNode1();
+ UnOpOpt unOpOpt = unExp.getNode2();
+
+ if((basic instanceof Basic3) &&
+ (unOpOpt instanceof UnOpOpt2))
+ {
+ text = ((Basic3) basic).getNode1().getText();
+ text = text.substring(1, text.length() - 1);
+ }
+ else if((basic instanceof Basic1) &&
+ (unOpOpt instanceof UnOpOpt2))
+ {
+ PChar pChar = ((Basic1) basic).getNode1();
+
+ if(pChar instanceof PChar1)
+ {
+ text = ((PChar1) pChar).getNode1().getText();
+ text = text.substring(1, text.length() - 1);
+ }
+ }
+ }
+ }
+ }
+
+ try
+ {
+ if(text == null)
+ {
+ ids.fixedTokens.put(node, new Boolean(false));
+
+ macros.apply(file, "VariableTextToken", new String[] { pkgName,
+ ids.pkgName.equals("") ? "analysis" : ids.pkgName + ".analysis",
+ name});
+ }
+ else
+ {
+ ids.fixedTokens.put(node, new Boolean(true));
+
+ macros.apply(file, "FixedTextToken", new String[] { pkgName,
+ ids.pkgName.equals("") ? "analysis" : ids.pkgName + ".analysis",
+ name, processText(text)});
+
+ ids.errorNames.put(node, "'" + text + "'");
+ }
+ }
+ catch(IOException e)
+ {
+ throw new RuntimeException("An error occured while writing to " +
+ new File(pkgDir, name + ".java").getAbsolutePath());
+ }
+
+ try
+ {
+ file.close();
+ }
+ catch(IOException e)
+ {
+ }
+ }
+
+ private String processText(String s)
+ {
+ StringBuffer result = new StringBuffer();
+
+ for(int i = 0; i < s.length(); i++)
+ {
+ char c = s.charAt(i);
+
+ switch(c)
+ {
+ case '\b':
+ {
+ result.append("\\t");
+ break;
+ }
+ case '\t':
+ {
+ result.append("\\t");
+ break;
+ }
+ case '\n':
+ {
+ result.append("\\n");
+ break;
+ }
+ case '\f':
+ {
+ result.append("\\f");
+ break;
+ }
+ case '\r':
+ {
+ result.append("\\r");
+ break;
+ }
+ case '\"':
+ {
+ result.append("\\\"");
+ break;
+ }
+ case '\'':
+ {
+ result.append("\\\'");
+ break;
+ }
+ case '\\':
+ {
+ result.append("\\\\");
+ break;
+ }
+ default:
+ {
+ result.append(c);
+ }
+ }
+ }
+
+ return result.toString();
+ }
+}
+
+
Added: sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/GenUtils.java
===================================================================
--- sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/GenUtils.java (rev 0)
+++ sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/GenUtils.java 2012-07-12 16:49:25 UTC (rev 248)
@@ -0,0 +1,290 @@
+/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+ * This file is part of SableCC. *
+ * See the file "LICENSE" for copyright information and the *
+ * terms and conditions for copying, distribution and *
+ * modification of SableCC. *
+ * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
+
+package org.sablecc.sablecc;
+
+import org.sablecc.sablecc.analysis.*;
+import org.sablecc.sablecc.node.*;
+import java.util.*;
+import java.io.*;
+
+public class GenUtils extends DepthFirstAdapter
+{
+ private MacroExpander macros;
+ private ResolveIds ids;
+ private File pkgDir;
+ private String pkgName;
+ private String mainProduction;
+
+ public GenUtils(ResolveIds ids)
+ {
+ this.ids = ids;
+
+ try
+ {
+ macros = new MacroExpander(
+ new InputStreamReader(
+ getClass().getResourceAsStream("utils.txt")));
+ }
+ catch(IOException e)
+ {
+ throw new RuntimeException("unable to open utils.txt.");
+ }
+
+ pkgDir = new File(ids.pkgDir, "node");
+ pkgName = ids.pkgName.equals("") ? "node" : ids.pkgName + ".node";
+
+ if(!pkgDir.exists())
+ {
+ if(!pkgDir.mkdir())
+ {
+ throw new RuntimeException("Unable to create " + pkgDir.getAbsolutePath());
+ }
+ }
+ }
+
+ public void caseGrammar1(Grammar1 node)
+ {
+ node.getNode6().apply(this);
+ }
+
+ public void caseProd1(Prod1 node)
+ {
+ if(mainProduction == null)
+ {
+ mainProduction = (String) ids.names.get(node);
+ }
+ }
+
+ public void outStart1(Start1 node)
+ {
+ if(mainProduction != null)
+ {
+ createStart();
+ }
+
+ createEOF();
+ createNode();
+ createNodeCast();
+ createToken();
+ create("Switch");
+ create("Switchable");
+ create("TypedLinkedList");
+ create("Cast");
+ create("NoCast");
+ }
+
+ public void createStart()
+ {
+ BufferedWriter file;
+
+ try
+ {
+ file = new BufferedWriter(
+ new FileWriter(
+ new File(pkgDir, "Start.java")));
+ }
+ catch(IOException e)
+ {
+ throw new RuntimeException("Unable to create " + new File(pkgDir, "Start.java").getAbsolutePath());
+ }
+
+ try
+ {
+ macros.apply(file, "Start", new String[] {pkgName,
+ ids.pkgName.equals("") ? "analysis" : ids.pkgName + ".analysis",
+ mainProduction, GenAlts.nodeName(mainProduction)});
+ }
+ catch(IOException e)
+ {
+ throw new RuntimeException("An error occured while writing to " +
+ new File(pkgDir, "Start.java").getAbsolutePath());
+ }
+
+ try
+ {
+ file.close();
+ }
+ catch(IOException e)
+ {
+ }
+ }
+
+ public void createEOF()
+ {
+ BufferedWriter file;
+
+ try
+ {
+ file = new BufferedWriter(
+ new FileWriter(
+ new File(pkgDir, "EOF.java")));
+ }
+ catch(IOException e)
+ {
+ throw new RuntimeException("Unable to create " + new File(pkgDir, "EOF.java").getAbsolutePath());
+ }
+
+ try
+ {
+ macros.apply(file, "EOF", new String[] {pkgName,
+ ids.pkgName.equals("") ? "analysis" : ids.pkgName + ".analysis"});
+ }
+ catch(IOException e)
+ {
+ throw new RuntimeException("An error occured while writing to " +
+ new File(pkgDir, "EOF.java").getAbsolutePath());
+ }
+
+ try
+ {
+ file.close();
+ }
+ catch(IOException e)
+ {
+ }
+ }
+
+ public void createNode()
+ {
+ BufferedWriter file;
+
+ try
+ {
+ file = new BufferedWriter(
+ new FileWriter(
+ new File(pkgDir, "Node.java")));
+ }
+ catch(IOException e)
+ {
+ throw new RuntimeException("Unable to create " + new File(pkgDir, "Node.java").getAbsolutePath());
+ }
+
+ try
+ {
+ macros.apply(file, "Node", new String[] {pkgName,
+ ids.pkgName.equals("") ? "analysis" : ids.pkgName + ".analysis"});
+ }
+ catch(IOException e)
+ {
+ throw new RuntimeException("An error occured while writing to " +
+ new File(pkgDir, "Node.java").getAbsolutePath());
+ }
+
+ try
+ {
+ file.close();
+ }
+ catch(IOException e)
+ {
+ }
+ }
+
+ public void createNodeCast()
+ {
+ BufferedWriter file;
+
+ try
+ {
+ file = new BufferedWriter(
+ new FileWriter(
+ new File(pkgDir, "NodeCast.java")));
+ }
+ catch(IOException e)
+ {
+ throw new RuntimeException("Unable to create " + new File(pkgDir, "NodeCast.java").getAbsolutePath());
+ }
+
+ try
+ {
+ macros.apply(file, "NodeCast", new String[] {pkgName});
+ }
+ catch(IOException e)
+ {
+ throw new RuntimeException("An error occured while writing to " +
+ new File(pkgDir, "NodeCast.java").getAbsolutePath());
+ }
+
+ try
+ {
+ file.close();
+ }
+ catch(IOException e)
+ {
+ }
+ }
+
+ public void createToken()
+ {
+ BufferedWriter file;
+
+ try
+ {
+ file = new BufferedWriter(
+ new FileWriter(
+ new File(pkgDir, "Token.java")));
+ }
+ catch(IOException e)
+ {
+ throw new RuntimeException("Unable to create " + new File(pkgDir, "Token.java").getAbsolutePath());
+ }
+
+ try
+ {
+ macros.apply(file, "Token", new String[] {pkgName});
+ }
+ catch(IOException e)
+ {
+ throw new RuntimeException("An error occured while writing to " +
+ new File(pkgDir, "Token.java").getAbsolutePath());
+ }
+
+ try
+ {
+ file.close();
+ }
+ catch(IOException e)
+ {
+ }
+ }
+
+ public void create(String cls)
+ {
+ BufferedWriter file;
+
+ try
+ {
+ file = new BufferedWriter(
+ new FileWriter(
+ new File(pkgDir, cls + ".java")));
+ }
+ catch(IOException e)
+ {
+ throw new RuntimeException("Unable to create " + new File(pkgDir, cls + ".java").getAbsolutePath());
+ }
+
+ try
+ {
+ macros.apply(file, cls, new String[] {pkgName});
+ }
+ catch(IOException e)
+ {
+ throw new RuntimeException("An error occured while writing to " +
+ new File(pkgDir, cls + ".java").getAbsolutePath());
+ }
+
+ try
+ {
+ file.close();
+ }
+ catch(IOException e)
+ {
+ }
+ }
+}
+
+
Added: sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/Grammar.java
===================================================================
--- sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/Grammar.java (rev 0)
+++ sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/Grammar.java 2012-07-12 16:49:25 UTC (rev 248)
@@ -0,0 +1,632 @@
+/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+ * This file is part of SableCC. *
+ * See the file "LICENSE" for copyright information and the *
+ * terms and conditions for copying, distribution and *
+ * modification of SableCC. *
+ * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
+
+package org.sablecc.sablecc;
+
+import java.util.Vector;
+import java.util.*;
+
+public final class Grammar
+{
+ private static TreeMap fastLr0Closure = new TreeMap();
+ private static TreeMap fastLr1Closure = new TreeMap();
+
+ static int startSymbol;
+ static int startProduction;
+ static int eof ;
+ static int dummy ;
+
+ static int[][][] action_;
+ static int[][] goto_;
+
+ static
+ {
+ reinit();
+ }
+
+ private Grammar()
+ {
+ }
+
+ public static int addTerminal(String name, String errorName)
+ {
+ return new Symbol(name, errorName, true).index;
+ }
+
+ public static int addNonterminal(String name)
+ {
+ return new Symbol(name, null, false).index;
+ }
+
+ public static int addProduction(String nonterminal, String name)
+ {
+ Symbol symbol = Symbol.symbol(nonterminal);
+
+ if(symbol.terminal)
+ {
+ throw new IllegalArgumentException("The symbol " + nonterminal +
+ " is a terminal.");
+ }
+
+ return new Production(symbol.index, name).index;
+ }
+
+ public static void addSymbolToProduction(String symbol, int production)
+ {
+ Production.production(production).addSymbol(Symbol.symbol(symbol));
+ }
+
+ public static void reinit()
+ {
+ fastLr0Closure = new TreeMap();
+ fastLr1Closure = new TreeMap();
+ startSymbol = 0;
+ startProduction = -1;
+ eof = -1;
+ dummy = -1;
+ action_ = null;
+ goto_ = null;
+ }
+
+ public static void computeLALR()
+ {
+ // Add EOF to terminals
+ eof = addTerminal("EOF", "EOF");
+ // Add dummy to terminals
+ dummy = addTerminal("#", null);
+
+ // Add the production S'->S
+ startSymbol = addNonterminal("Start");
+ Production start = new Production(startSymbol, "Start");
+ start.addSymbol(Symbol.symbol(0, false));
+ startProduction = start.index;
+
+ computeFirst();
+
+ LR0ItemSet set = new LR0ItemSet();
+ set.set(new LR0Item(startProduction, 0));
+ LR1Collection collection = new LR1Collection(set);
+
+ LR0ItemSet[] sets = collection.collection.sets();
+ Symbol[] terminals = Symbol.terminals();
+ Symbol[] nonterminals = Symbol.nonterminals();
+
+ action_ = new int[sets.length][terminals.length - 1][];
+ goto_ = new int[sets.length][nonterminals.length - 1];
+
+ for(int i = 0; i < sets.length; i++)
+ {
+ System.out.print(".");
+
+ LR1ItemSet state = new LR1ItemSet();
+
+ {
+ LR0Item[] items = sets[i].items();
+ for(int j = 0; j < items.length; j++)
+ {
+ Symbol[] lookaheads = ((SymbolSet) collection.lookaheads[i].
+ get(items[j])).getSymbols();
+
+ for(int k = 0; k < lookaheads.length; k++)
+ {
+ state.set(new LR1Item(items[j], lookaheads[k].index));
+ }
+ }
+ }
+
+ state = CLOSURE(state);
+
+ LR1Item[] items = state.items();
+
+ for(int j = 0; j < terminals.length; j++)
+ {
+ Integer destination = collection.collection.GOTO(i, terminals[j]);
+ if(destination != null)
+ {
+ action_[i][j] = new int[] {0, destination.intValue()};
+ }
+
+ for(int k = 0; k < items.length; k++)
+ {
+ Production production = Production.
+ production(items[k].lr0Item.production);
+
+ try
+ {
+ production.rightside(items[k].lr0Item.position);
+ }
+ catch(Exception e)
+ {
+ if(production.leftside != startSymbol)
+ {
+ if(items[k].terminal == terminals[j].index)
+ {
+ int[] action = action_[i][j];
+ if(action != null)
+ {
+ switch(action[0])
+ {
+ case 0:
+ throw new RuntimeException(
+ "\n\nshift/reduce conflict in state [stack:" +
+ collection.collection.names.elementAt(i) + "*] on " +
+ terminals[j] + " in " + state.toString(terminals[j]));
+ case 1:
+ throw new RuntimeException(
+ "\n\nreduce/reduce conflict in state [stack:" +
+ collection.collection.names.elementAt(i) + "*] on " +
+ terminals[j] + " in " + state.toString(terminals[j]));
+ case 2:
+ throw new RuntimeException(
+ "\n\nreduce/accept conflict in state [stack:" +
+ collection.collection.names.elementAt(i) + "*] on " +
+ terminals[j] + " in " + state.toString(terminals[j]));
+ }
+ }
+ else
+ {
+ action_[i][j] = new int[] {1,
+ items[k].lr0Item.production};
+ }
+ }
+ }
+ else
+ {
+ if(terminals[j].index == eof)
+ {
+ int[] action = action_[i][j];
+ if(action != null)
+ {
+ switch(action[0])
+ {
+ case 0:
+ throw new RuntimeException(
+ "shift/accept conflict in state [stack:" +
+ collection.collection.names.elementAt(i) + "*] on " +
+ terminals[j] + " in " + state);
+ case 1:
+ throw new RuntimeException(
+ "reduce/accept conflict in state [stack:" +
+ collection.collection.names.elementAt(i) + "*] on " +
+ terminals[j] + " in " + state);
+ }
+ }
+ else
+ {
+ action_[i][j] = new int[] {2};
+ }
+ }
+ }
+ }
+ }
+ }
+
+ for(int j = 0; j < nonterminals.length - 1; j++)
+ {
+ Integer destination = collection.collection.GOTO(i, nonterminals[j]);
+
+ if(destination != null)
+ {
+ goto_[i][j] = destination.intValue();
+ }
+ else
+ {
+ goto_[i][j] = -1;
+ }
+ }
+ }
+
+ System.out.println();
+ }
+
+ static SymbolSet[] FIRST_Terminal;
+ static SymbolSet[] FIRST_Nonterminal;
+
+ static void computeFirst()
+ {
+ // Get terminals, nonterminals and productions
+ Symbol[] terminals = Symbol.terminals();
+ Symbol[] nonterminals = Symbol.nonterminals();
+ Production[] productions = Production.productions();
+
+ // Initialize FIRST(X) to {}
+ FIRST_Terminal = new SymbolSet[terminals.length];
+ for(int i = 0; i < terminals.length; i++)
+ {
+ FIRST_Terminal[i] = new SymbolSet();
+ }
+
+ FIRST_Nonterminal = new SymbolSet[nonterminals.length];
+ for(int i = 0; i < nonterminals.length; i++)
+ {
+ FIRST_Nonterminal[i] = new SymbolSet();
+ }
+
+ // if X is terminal, then FIRST(X) is {X}
+ for(int i = 0; i < terminals.length; i++)
+ {
+ FIRST_Terminal[i].setTerminal(terminals[i].index);
+ }
+
+ // if X -> empty is a production, then add empty to FIRST(X)
+ for(int i = 0; i < productions.length; i++)
+ {
+ if(productions[i].rightside().length == 0)
+ {
+ FIRST_Nonterminal[productions[i].leftside].
+ setEmpty();
+ }
+ }
+
+ // if X is nonterminal and X -> Y(1) Y(2) ... Y(k) is a production,
+ // then place t in FIRST(X) if for some i, t is in FIRST(Y(i)), and
+ // empty is in all of FIRST(Y(1)), ... , FIRST(Y(i-1)).
+ boolean changed;
+ do
+ {
+ changed = false;
+
+ for(int i = 0; i < productions.length; i++)
+ {
+ SymbolSet before =
+ (SymbolSet) FIRST_Nonterminal[productions[i].leftside].clone();
+
+ FIRST_Nonterminal[productions[i].leftside].
+ or(FIRST(productions[i].rightside()));
+
+ if(!before.equals(FIRST_Nonterminal[productions[i].leftside]))
+ {
+ changed = true;
+ }
+ }
+ }
+ while(changed);
+ }
+
+ static SymbolSet FIRST(Symbol[] symbols)
+ {
+ return FIRST(symbols, 0, symbols.length);
+ }
+
+ static SymbolSet FIRST(Symbol[] symbols, int begin)
+ {
+ return FIRST(symbols, begin, symbols.length);
+ }
+
+ static SymbolSet FIRST(Symbol[] symbols, int begin, int end)
+ {
+ SymbolSet result = new SymbolSet();
+
+ boolean previousContainsEmpty = true;
+
+ for(int i = begin; i < end; i++)
+ {
+ if(!previousContainsEmpty)
+ {
+ break;
+ }
+
+ if(symbols[i].terminal)
+ {
+ result.or(FIRST_Terminal[symbols[i].index]);
+ previousContainsEmpty = FIRST_Terminal[symbols[i].index].getEmpty();
+ }
+ else
+ {
+ result.or(FIRST_Nonterminal[symbols[i].index]);
+ previousContainsEmpty = FIRST_Nonterminal[symbols[i].index].getEmpty();
+ }
+ }
+
+ if(previousContainsEmpty)
+ {
+ result.setEmpty();
+ }
+ else
+ {
+ result.clearEmpty();
+ }
+
+ return result;
+ }
+
+ static SymbolSet[] FOLLOW;
+
+ static void computeFollow()
+ {
+ // Get terminals, nonterminals and productions
+ Symbol[] terminals = Symbol.terminals();
+ Symbol[] nonterminals = Symbol.nonterminals();
+ Production[] productions = Production.productions();
+
+ // Initialize FOLLOW(A) to {}
+ FOLLOW = new SymbolSet[nonterminals.length];
+ for(int i = 0; i < nonterminals.length; i++)
+ {
+ FOLLOW[i] = new SymbolSet();
+ }
+
+ // Place eof in FOLLOW(S) where S is the start symbol.
+ FOLLOW[startSymbol].setTerminal(eof);
+
+ // If there is a production A->xBy, then everything in FIRST(y) except
+ // for empty is placed in FOLLOW(B).
+ for(int i = 0; i < productions.length; i++)
+ {
+ Symbol[] rightside = productions[i].rightside();
+
+ for(int j = 0; j < rightside.length; j++)
+ {
+ if(!rightside[j].terminal)
+ {
+ SymbolSet set = FIRST(rightside, j + 1);
+ set.clearEmpty();
+ FOLLOW[rightside[j].index].or(set);
+ }
+ }
+ }
+
+ // If there is a production A->xB, or a production A->xBy where FIRST(y)
+ // contains empty, then everything in FOLLOW(A) is in FOLLOW(B).
+ boolean changed;
+ do
+ {
+ changed = false;
+
+ for(int i = 0; i < productions.length; i++)
+ {
+ Symbol[] rightside = productions[i].rightside();
+
+ for(int j = 0; j < rightside.length; j++)
+ {
+ if(!rightside[j].terminal)
+ {
+ SymbolSet before =
+ (SymbolSet) FOLLOW[rightside[j].index].clone();
+
+ if(FIRST(rightside, j + 1).getEmpty())
+ {
+ FOLLOW[rightside[j].index].
+ or(FOLLOW[productions[i].leftside]);
+ }
+
+ if(!before.equals(FOLLOW[rightside[j].index]))
+ {
+ changed = true;
+ }
+ }
+ }
+ }
+ }
+ while(changed);
+ }
+
+ static SymbolSet FOLLOW(int nonterminal)
+ {
+ return FOLLOW[nonterminal];
+ }
+
+ static LR0ItemSet CLOSURE(LR0Item item)
+ {
+ LR0ItemSet result = (LR0ItemSet) fastLr0Closure.get(item);
+
+ if(result != null)
+ {
+ return result;
+ }
+
+ result = new LR0ItemSet();
+ result.set(item);
+
+ LR0ItemSet newItems = result;
+ boolean modified;
+ do
+ {
+ modified = false;
+ LR0Item[] items = newItems.items();
+ newItems = new LR0ItemSet();
+
+ for(int i = 0; i < items.length; i++)
+ {
+ Production production = Production.production(items[i].production);
+ Symbol[] rightside = production.rightside();
+ if(items[i].position < rightside.length)
+ {
+ Symbol symbol = rightside[items[i].position];
+
+ if(!symbol.terminal)
+ {
+ Production[] alternatives =
+ Production.alternatives(symbol.index);
+
+ for(int j = 0; j < alternatives.length; j++)
+ {
+ LR0Item newItem = new LR0Item(alternatives[j].index, 0);
+
+ if(!result.get(newItem))
+ {
+ result.set(newItem);
+ newItems.set(newItem);
+ modified = true;
+ }
+ }
+ }
+ }
+ }
+ }
+ while(modified);
+
+ fastLr0Closure.put(item, result);
+
+ return result;
+ }
+
+// private static final SplayTreeMap fastLr0SetClosure = new SplayTreeMap();
+
+ static LR0ItemSet CLOSURE(LR0ItemSet set)
+ {
+ LR0ItemSet result = /*(LR0ItemSet) fastLr0SetClosure.get(set);
+
+ if(result != null)
+ {
+ return result;
+ }
+
+ result =*/ new LR0ItemSet();
+
+ LR0Item[] setItems = set.items();
+
+ for(int i = 0; i < setItems.length; i++)
+ {
+ LR0Item[] items = CLOSURE(setItems[i]).items();
+
+ for(int j = 0; j < items.length; j++)
+ {
+ result.set(items[j]);
+ }
+ }
+
+// fastLr0SetClosure.put(set, result);
+
+ return result;
+ }
+
+ static LR1ItemSet CLOSURE(LR1Item item)
+ {
+ LR1ItemSet result = (LR1ItemSet) fastLr1Closure.get(item);
+
+ if(result != null)
+ {
+ return result;
+ }
+
+ result = new LR1ItemSet();
+ result.set(item);
+
+ LR1ItemSet newItems = result;
+ boolean modified;
+ do
+ {
+ modified = false;
+ LR1Item[] items = newItems.items();
+ newItems = new LR1ItemSet();
+
+ for(int i = 0; i < items.length; i++)
+ {
+ Production production = Production.production(items[i].lr0Item.production);
+ Symbol[] rightside = production.rightside();
+ if(items[i].lr0Item.position < rightside.length)
+ {
+ Symbol symbol = rightside[items[i].lr0Item.position];
+
+ if(!symbol.terminal)
+ {
+ Vector tailVector = new Vector(0);
+
+ for(int k = items[i].lr0Item.position + 1; k < rightside.length; k++)
+ {
+ tailVector.addElement(rightside[k]);
+ }
+
+ tailVector.addElement(Symbol.symbol(items[i].terminal, true));
+
+ Symbol[] tail = new Symbol[tailVector.size()];
+ tailVector.copyInto(tail);
+
+ Symbol[] symbols = FIRST(tail).getSymbols();
+
+ Production[] alternatives =
+ Production.alternatives(symbol.index);
+
+ for(int k = 0; k < symbols.length; k++)
+ {
+ if(symbols[k].terminal)
+ {
+ for(int j = 0; j < alternatives.length; j++)
+ {
+ LR1Item newItem = new LR1Item(
+ new LR0Item(alternatives[j].index, 0),
+ symbols[k].index);
+
+ if(!result.get(newItem))
+ {
+ result.set(newItem);
+ newItems.set(newItem);
+ modified = true;
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ while(modified);
+
+ fastLr1Closure.put(item, result);
+
+ return result;
+ }
+
+// private static final SplayTreeMap fastLr1SetClosure = new SplayTreeMap();
+
+ static LR1ItemSet CLOSURE(LR1ItemSet set)
+ {
+ LR1ItemSet result = /*(LR1ItemSet) fastLr1SetClosure.get(set);
+
+ if(result != null)
+ {
+ return result;
+ }
+
+ result =*/ new LR1ItemSet();
+
+ LR1Item[] setItems = set.items();
+
+ for(int i = 0; i < setItems.length; i++)
+ {
+ LR1Item[] items = CLOSURE(new LR1Item(setItems[i].lr0Item, dummy)).items();
+
+ for(int j = 0; j < items.length; j++)
+ {
+ result.set(new LR1Item(items[j].lr0Item,
+ items[j].terminal == dummy ? setItems[i].terminal : items[j].terminal));
+ }
+ }
+
+// fastLr1SetClosure.put(set, result);
+
+ return result;
+ }
+
+ static LR0ItemSet GOTO(LR0ItemSet set, Symbol symbol)
+ {
+ LR0ItemSet initialset = set;
+ set = CLOSURE(set);
+ LR0ItemSet result = new LR0ItemSet();
+
+ // return all items A->xS.y such that A->x.Sy is in set. (S=symbol)
+ LR0Item[] items = set.items();
+ for(int i = 0; i < items.length; i++)
+ {
+ Production production = Production.production(items[i].production);
+ Symbol[] rightside = production.rightside();
+ if(items[i].position < rightside.length)
+ {
+ if(symbol.equals(rightside[items[i].position]))
+ {
+ result.set(new LR0Item(items[i].production,
+ items[i].position + 1));
+ }
+ }
+ }
+
+ return result;
+ }
+}
+
+
Added: sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/IntSet.java
===================================================================
--- sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/IntSet.java (rev 0)
+++ sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/IntSet.java 2012-07-12 16:49:25 UTC (rev 248)
@@ -0,0 +1,378 @@
+/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+ * This file is part of SableCC. *
+ * See the file "LICENSE" for copyright information and the *
+ * terms and conditions for copying, distribution and *
+ * modification of SableCC. *
+ * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
+
+package org.sablecc.sablecc;
+
+public class IntSet
+{
+// public static boolean DEBUG = false;
+ private int[] elements = new int[0];
+
+ public IntSet()
+ {
+ }
+
+ private IntSet(IntSet set)
+ {
+ elements = (int[]) set.elements.clone();
+ }
+
+ public void and(IntSet set)
+ {
+ if(set == this)
+ {
+ return;
+ }
+
+ int length = 0;
+
+ int l = 0; int r = 0;
+ while((l < elements.length) && (r < set.elements.length))
+ {
+ if(elements[l] < set.elements[r])
+ {
+ l++;
+ }
+ else if(elements[l] == set.elements[r])
+ {
+ length++;
+ l++;
+ r++;
+ }
+ else
+ {
+ r++;
+ }
+ }
+
+ int[] old = elements;
+ elements = new int[length];
+
+ length = l = r = 0;
+ while((l < old.length) && (r < set.elements.length))
+ {
+ if(old[l] < set.elements[r])
+ {
+ l++;
+ }
+ else if(old[l] == set.elements[r])
+ {
+ elements[length++] = old[l];
+ l++;
+ r++;
+ }
+ else
+ {
+ r++;
+ }
+ }
+
+ }
+
+ public void clear(int bit)
+ {
+ elements = new int[0];
+ }
+
+ public Object clone()
+ {
+ return new IntSet(this);
+ }
+
+ public boolean equals(Object obj)
+ {
+ if(obj == null)
+ {
+ return false;
+ }
+
+ if(!(obj instanceof IntSet))
+ {
+ return false;
+ }
+
+ IntSet set = (IntSet) obj;
+
+ if(elements.length != set.elements.length)
+ {
+ return false;
+ }
+
+ for(int i = 0; i < elements.length; i++)
+ {
+ if(elements[i] != set.elements[i])
+ {
+ return false;
+ }
+ }
+
+ return true;
+ }
+
+ public boolean get(int bit)
+ {
+ int low = 0;
+ int high = elements.length - 1;
+
+ while(low <= high)
+ {
+ int middle = (low + high) / 2;
+
+ if(bit < elements[middle])
+ {
+ high = middle - 1;
+ }
+ else if(bit == elements[middle])
+ {
+ return true;
+ }
+ else
+ {
+ low = middle + 1;
+ }
+ }
+
+ return false;
+ }
+
+ public int hashCode()
+ {
+ int result = 0;
+
+ for(int i = 0; i < elements.length; i++)
+ {
+ result += elements[i];
+ }
+
+ return result;
+ }
+
+ public void or(IntSet set)
+ {
+ if(set == this)
+ {
+ return;
+ }
+
+// if(DEBUG)
+// {
+// System.out.println(
+// " elements.length:" + elements.length +
+// " set.elements.length:" + set.elements.length);
+// }
+
+ int length = 0;
+
+ int l = 0; int r = 0;
+ while((l < elements.length) || (r < set.elements.length))
+ {
+// if(DEBUG)
+// {
+// System.out.println(
+// " l:" + l +
+// " r:" + r +
+// " length:" + length);
+// }
+
+ if((r == set.elements.length) ||
+ ((l != elements.length) && (elements[l] < set.elements[r])))
+ {
+ length++;
+ l++;
+ }
+ else if((l == elements.length) ||
+ (elements[l] > set.elements[r]))
+ {
+ length++;
+ r++;
+ }
+ else
+ {
+ length++;
+ l++;
+ r++;
+ }
+ }
+
+ int[] old = elements;
+ elements = new int[length];
+
+ length = l = r = 0;
+ while((l < old.length) || (r < set.elements.length))
+ {
+// if(DEBUG)
+// {
+// System.out.println(
+// " l:" + l +
+// " r:" + r +
+// " length:" + length);
+// }
+
+ if((r == set.elements.length) ||
+ ((l != old.length) && (old[l] < set.elements[r])))
+ {
+ elements[length++] = old[l];
+ l++;
+ }
+ else if((l == old.length) ||
+ (old[l] > set.elements[r]))
+ {
+ elements[length++] = set.elements[r];
+ r++;
+ }
+ else
+ {
+ elements[length++] = old[l];
+ l++;
+ r++;
+ }
+ }
+
+ }
+
+
+ public void set(int bit)
+ {
+ if(!get(bit))
+ {
+ int[] old = elements;
+ elements = new int[old.length + 1];
+
+ int old_pos = 0;
+ boolean bit_inserted = false;
+ int pos = 0;
+
+ while(pos < elements.length)
+ {
+ if(!bit_inserted)
+ {
+ if(old_pos < old.length)
+ {
+ if(bit < old[old_pos])
+ {
+ elements[pos++] = bit;
+ bit_inserted = true;
+ }
+ else
+ {
+ elements[pos++] = old[old_pos++];
+ }
+ }
+ else
+ {
+ elements[pos++] = bit;
+ bit_inserted = true;
+ }
+ }
+ else
+ {
+ elements[pos++] = old[old_pos++];
+ }
+ }
+ }
+ }
+
+ public int size()
+ {
+ if(elements.length == 0)
+ {
+ return 0;
+ }
+
+ return elements[elements.length - 1] + 1;
+ }
+
+ public String toString()
+ {
+ StringBuffer s = new StringBuffer();
+
+ s.append("{");
+
+ boolean comma = false;
+
+ for(int i = 0; i < elements.length; i++)
+ {
+ if(comma)
+ {
+ s.append(", ");
+ }
+ else
+ {
+ comma = true;
+ }
+
+ s.append(elements[i]);
+ }
+ s.append("}");
+
+ return s.toString();
+ }
+
+ public void xor(IntSet set)
+ {
+ if(set == this)
+ {
+ set = (IntSet) set.clone();
+ }
+
+ int length = 0;
+ int l = 0; int r = 0;
+
+ while((l < elements.length) || (r < set.elements.length))
+ {
+ if((r == set.elements.length) ||
+ ((l != elements.length) && (elements[l] < set.elements[r])))
+ {
+ length++;
+ l++;
+ }
+ else if((l == elements.length) ||
+ (elements[l] > set.elements[r]))
+ {
+ length++;
+ r++;
+ }
+ else
+ {
+ l++;
+ r++;
+ }
+ }
+
+ int[] old = elements;
+ elements = new int[length];
+
+ length = l = r = 0;
+ while((l < old.length) || (r < set.elements.length))
+ {
+ if((r == set.elements.length) ||
+ ((l != old.length) && (old[l] < set.elements[r])))
+ {
+ elements[length++] = old[l];
+ l++;
+ }
+ else if((l == old.length) ||
+ (old[l] > set.elements[r]))
+ {
+ elements[length++] = set.elements[r];
+ r++;
+ }
+ else
+ {
+ l++;
+ r++;
+ }
+ }
+ }
+
+ public int[] elements()
+ {
+ return (int[]) elements/*.clone()*/;
+ }
+}
+
+
Added: sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/IntegerCast.java
===================================================================
--- sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/IntegerCast.java (rev 0)
+++ sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/IntegerCast.java 2012-07-12 16:49:25 UTC (rev 248)
@@ -0,0 +1,25 @@
+/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+ * This file is part of SableCC. *
+ * See the file "LICENSE" for copyright information and the *
+ * terms and conditions for copying, distribution and *
+ * modification of SableCC. *
+ * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
+
+package org.sablecc.sablecc;
+
+import java.util.*;
+
+public class IntegerCast implements Cast
+{
+ public final static IntegerCast instance = new IntegerCast();
+
+ private IntegerCast()
+ {
+ }
+
+ public Object cast(Object o)
+ {
+ return (Integer) o;
+ }
+}
+
Added: sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/IntegerComparator.java
===================================================================
--- sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/IntegerComparator.java (rev 0)
+++ sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/IntegerComparator.java 2012-07-12 16:49:25 UTC (rev 248)
@@ -0,0 +1,25 @@
+/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+ * This file is part of SableCC. *
+ * See the file "LICENSE" for copyright information and the *
+ * terms and conditions for copying, distribution and *
+ * modification of SableCC. *
+ * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
+
+package org.sablecc.sablecc;
+
+import java.util.*;
+
+public class IntegerComparator implements Comparator
+{
+ public final static IntegerComparator instance = new IntegerComparator();
+
+ private IntegerComparator()
+ {
+ }
+
+ public int compare(Object o1, Object o2)
+ {
+ return ((Integer) o1).intValue() - ((Integer) o2).intValue();
+ }
+}
+
Added: sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/LICENSE
===================================================================
--- sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/LICENSE (rev 0)
+++ sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/LICENSE 2012-07-12 16:49:25 UTC (rev 248)
@@ -0,0 +1,23 @@
+SableCC, an object-oriented compiler framework.
+Copyright (C) 1997-2001 Etienne M. Gagnon <egagnon at j-meg.com> and
+others. All rights reserved.
+
+See the file "AUTHORS" for the name of all copyright holders.
+
+This program is free software; you can redistribute it and/or modify it
+under the terms of the GNU Lesser General Public License as published
+by the Free Software Foundation; either version 2.1 of the License, 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
+Lesser General Public License for more details.
+
+You should have received a copy of the GNU Lesser General Public
+License along with this program in the file "COPYING-LESSER"; if not,
+write to the Free Software Foundation, Inc., 59 Temple Place,
+Suite 330, Boston, MA 02111-1307 USA
+
+The SableCC web site is located at:
+http://www.sablecc.org/
Added: sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/LR0Collection.java
===================================================================
--- sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/LR0Collection.java (rev 0)
+++ sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/LR0Collection.java 2012-07-12 16:49:25 UTC (rev 248)
@@ -0,0 +1,132 @@
+/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+ * This file is part of SableCC. *
+ * See the file "LICENSE" for copyright information and the *
+ * terms and conditions for copying, distribution and *
+ * modification of SableCC. *
+ * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
+
+package org.sablecc.sablecc;
+
+import java.util.*;
+import java.util.Vector;
+
+final class LR0Collection
+{
+ private final Vector sets = new Vector(0);
+ private final TreeMap setIndices = new TreeMap();
+ private final Vector GOTO = new Vector(0);
+ final Vector names = new Vector(0);
+
+ LR0Collection(LR0ItemSet set)
+ {
+ add(set, -1, null);
+
+ for(int i = 0; i < sets.size(); i++)
+ {
+ System.out.print(".");
+ Symbol[] symbols = Symbol.symbols();
+
+ for(int j = 0; j < symbols.length; j++)
+ {
+ addGoto(i, symbols[j], Grammar.GOTO(set(i), symbols[j]));
+ }
+ }
+ System.out.println();
+ }
+
+ private int add(LR0ItemSet set, int from, Symbol symbol)
+ {
+ Integer result = set(set);
+
+ if(result == null)
+ {
+ result = new Integer(sets.size());
+
+ setIndices.put(set, result);
+ sets.addElement(set);
+ GOTO.addElement(new TreeMap());
+ if(from == -1)
+ {
+ names.addElement(" ");
+ }
+ else
+ {
+ names.addElement(names.elementAt(from) + "" + symbol + " ");
+ }
+ }
+
+ return result.intValue();
+ }
+
+ private static LR0ItemSet empty = new LR0ItemSet();
+
+ public static void reinit()
+ {
+ empty = new LR0ItemSet();
+ }
+
+ private void addGoto(int from, Symbol symbol, LR0ItemSet to)
+ {
+ if(!to.equals(empty))
+ {
+ ((TreeMap) GOTO.elementAt(from)).put(symbol, new Integer(add(to, from, symbol)));
+ }
+ }
+
+ private Integer set(LR0ItemSet set)
+ {
+ return (Integer) setIndices.get(set);
+ }
+
+ private LR0ItemSet set(int index)
+ {
+ return (LR0ItemSet) sets.elementAt(index);
+ }
+
+ LR0ItemSet[] sets()
+ {
+ LR0ItemSet[] result = new LR0ItemSet[sets.size()];
+ sets.copyInto(result);
+
+ return result;
+ }
+
+ Integer GOTO(int set, Symbol symbol)
+ {
+ return (Integer) ((TreeMap) GOTO.elementAt(set)).get(symbol);
+ }
+
+ public String toString()
+ {
+ StringBuffer result = new StringBuffer();
+
+ result.append("{[LR0ItemCollection]" + System.getProperty("line.separator"));
+ LR0ItemSet[] sets = sets();
+ Symbol[] symbols = Symbol.symbols();
+
+ for(int i = 0; i < sets.length; i++)
+ {
+ result.append(i + ":" + Grammar.CLOSURE(sets[i]));
+ result.append(System.getProperty("line.separator"));
+
+ for(int j = 0; j < symbols.length; j++)
+ {
+ if(GOTO(i, symbols[j]) != null)
+ {
+ result.append("[");
+ result.append(symbols[j]);
+ result.append(":");
+ result.append(GOTO(i, symbols[j]));
+ result.append("]");
+ }
+ }
+
+ result.append(System.getProperty("line.separator"));
+ }
+
+ result.append("}");
+ return result.toString();
+ }
+}
+
+
Added: sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/LR0Item.java
===================================================================
--- sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/LR0Item.java (rev 0)
+++ sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/LR0Item.java 2012-07-12 16:49:25 UTC (rev 248)
@@ -0,0 +1,99 @@
+/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+ * This file is part of SableCC. *
+ * See the file "LICENSE" for copyright information and the *
+ * terms and conditions for copying, distribution and *
+ * modification of SableCC. *
+ * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
+
+package org.sablecc.sablecc;
+
+import java.util.*;
+
+final class LR0Item implements Cloneable, Comparable
+{
+ final int production;
+ final int position;
+
+ LR0Item(int production, int position)
+ {
+ this.production = production;
+ this.position = position;
+ }
+
+ public int compareTo(Object object)
+ {
+ LR0Item item = (LR0Item) object;
+
+ int result = production - item.production;
+
+ if(result == 0)
+ {
+ result = position - item.position;
+ }
+
+ return result;
+ }
+
+ public Object clone()
+ {
+ return new LR0Item(production, position);
+ }
+
+ public boolean equals(Object obj)
+ {
+ if((obj == null) ||
+ (obj.getClass() != this.getClass()))
+ {
+ return false;
+ }
+
+ LR0Item item = (LR0Item) obj;
+
+ return (item.production == production) &&
+ (item.position == position);
+ }
+
+ public int hashCode()
+ {
+ return (production * 13) ^ (position * 17);
+ }
+
+ public String toString()
+ {
+ StringBuffer result = new StringBuffer();
+ String prodStr = (Production.production(production)).toString();
+ int pos = 0;
+
+ StringTokenizer list = new StringTokenizer(prodStr, "= ");
+
+ // we know that there is at least one token (lhs)
+ result.append(list.nextToken());
+ result.append(" =");
+
+ while(list.hasMoreElements())
+ {
+ String tmp = list.nextToken();
+
+ if(pos == position)
+ {
+ result.append(" * ");
+ result.append(tmp);
+ }
+ else
+ {
+ result.append(" ");
+ result.append(tmp);
+ }
+
+ pos++;
+ }
+
+ if(pos == position)
+ {
+ result.append(" *");
+ }
+
+ return "[ " + result + " ]";
+ }
+}
+
Added: sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/LR0ItemAndSetPair.java
===================================================================
--- sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/LR0ItemAndSetPair.java (rev 0)
+++ sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/LR0ItemAndSetPair.java 2012-07-12 16:49:25 UTC (rev 248)
@@ -0,0 +1,21 @@
+/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+ * This file is part of SableCC. *
+ * See the file "LICENSE" for copyright information and the *
+ * terms and conditions for copying, distribution and *
+ * modification of SableCC. *
+ * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
+
+package org.sablecc.sablecc;
+
+final class LR0ItemAndSetPair
+{
+ public final LR0Item item;
+ public final int set;
+
+ LR0ItemAndSetPair(LR0Item item, int set)
+ {
+ this.item = item;
+ this.set = set;
+ }
+}
+
Added: sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/LR0ItemSet.java
===================================================================
--- sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/LR0ItemSet.java (rev 0)
+++ sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/LR0ItemSet.java 2012-07-12 16:49:25 UTC (rev 248)
@@ -0,0 +1,176 @@
+/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+ * This file is part of SableCC. *
+ * See the file "LICENSE" for copyright information and the *
+ * terms and conditions for copying, distribution and *
+ * modification of SableCC. *
+ * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
+
+package org.sablecc.sablecc;
+
+import java.util.*;
+
+import java.util.Vector;
+
+final class LR0ItemSet implements Cloneable, Comparable
+{
+ private final TreeMap items;
+ private int hashCode;
+
+ LR0ItemSet()
+ {
+ items = new TreeMap();
+ }
+
+ private LR0ItemSet(LR0ItemSet set)
+ {
+ items = (TreeMap) set.items.clone();
+ }
+
+ void set(LR0Item item)
+ {
+ if(items.put(item, item) == null)
+ {
+ hashCode += item.hashCode();
+ modified_ = true;
+ }
+ }
+
+ boolean get(LR0Item item)
+ {
+ return items.get(item) != null;
+ }
+
+ LR0Item[] items_;
+ boolean modified_ = true;
+
+ private void computeArray()
+ {
+ Vector itemVector = new Vector(0);
+
+ for(Iterator e = items.keySet().iterator(); e.hasNext();)
+ {
+ itemVector.addElement(e.next());
+ }
+
+ items_ = new LR0Item[itemVector.size()];
+ itemVector.copyInto(items_);
+ modified_ = false;
+ }
+
+ LR0Item[] items()
+ {
+ if(modified_)
+ {
+ computeArray();
+ }
+
+ return items_;
+ }
+
+ public String toString()
+ {
+ StringBuffer result = new StringBuffer();
+ result.append("{");
+
+ Production[] productions = Production.productions();
+ boolean space = false;
+ for(int i = 0; i < productions.length; i++)
+ {
+ int rightsideLength = productions[i].rightside().length;
+
+ for(int j = 0; j <= rightsideLength; j++)
+ {
+ LR0Item item = new LR0Item(productions[i].index, j);
+ if(get(item))
+ {
+ if(space)
+ {
+ result.append(",");
+ }
+ else
+ {
+ space = true;
+ }
+
+ result.append(item);
+ }
+ }
+
+ }
+
+ result.append("}");
+ return result.toString();
+ }
+
+ public Object clone()
+ {
+ return new LR0ItemSet(this);
+ }
+
+ public boolean equals(Object obj)
+ {
+ if((obj == null) ||
+ (obj.getClass() != this.getClass()))
+ {
+ return false;
+ }
+
+ LR0ItemSet set = (LR0ItemSet) obj;
+
+ if(set.items.size() != items.size())
+ {
+ return false;
+ }
+
+ for(Iterator e = items.keySet().iterator(); e.hasNext();)
+ {
+ if(!set.get((LR0Item) e.next()))
+ {
+ return false;
+ }
+ }
+
+ return true;
+ }
+
+ public int hashCode()
+ {
+ return hashCode;
+ }
+
+ public int compareTo(Object object)
+ {
+ LR0ItemSet set = (LR0ItemSet) object;
+
+ int result = items.size() - set.items.size();
+
+ if(result == 0)
+ {
+ Iterator e = items.keySet().iterator();
+ Iterator f = set.items.keySet().iterator();
+
+ while(e.hasNext() && f.hasNext() && (result == 0))
+ {
+ result = ((LR0Item) e.next()).compareTo(f.next());
+ }
+
+ if(result == 0)
+ {
+ if(e.hasNext())
+ {
+ return 1;
+ }
+
+ if(f.hasNext())
+ {
+ return -1;
+ }
+ }
+ }
+
+ return result;
+ }
+
+}
+
+
Added: sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/LR1Collection.java
===================================================================
--- sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/LR1Collection.java (rev 0)
+++ sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/LR1Collection.java 2012-07-12 16:49:25 UTC (rev 248)
@@ -0,0 +1,182 @@
+/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+ * This file is part of SableCC. *
+ * See the file "LICENSE" for copyright information and the *
+ * terms and conditions for copying, distribution and *
+ * modification of SableCC. *
+ * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
+
+package org.sablecc.sablecc;
+
+import java.util.Vector;
+import java.util.Enumeration;
+import java.util.*;
+
+final class LR1Collection
+{
+ final LR0Collection collection;
+ final TreeMap[] lookaheads;
+ private final TreeMap[] propagation;
+
+ LR1Collection(LR0ItemSet set)
+ {
+ collection = new LR0Collection(set);
+
+ // Initialize lookaheads to nothing, propagation to nothing
+ LR0ItemSet[] sets = collection.sets();
+ lookaheads = new TreeMap[sets.length];
+ propagation = new TreeMap[sets.length];
+
+ for(int i = 0; i < sets.length; i++)
+ {
+ System.out.print(".");
+ lookaheads[i] = new TreeMap();
+ propagation[i] = new TreeMap();
+
+ LR0Item[] items = sets[i].items();
+ for(int j = 0; j < items.length; j++)
+ {
+ lookaheads[i].put(items[j], new SymbolSet());
+ propagation[i].put(items[j], new Vector(0));
+ }
+ }
+ System.out.println();
+
+
+ ((SymbolSet) lookaheads[0].get(set.items()[0])).setTerminal(Grammar.eof);
+
+ for(int i = 0; i < sets.length; i++)
+ {
+ System.out.print(".");
+ LR0Item[] items = sets[i].items();
+
+ for(int j = 0; j < items.length; j++)
+ {
+ LR1ItemSet lr1Set = new LR1ItemSet();
+ lr1Set.set(new LR1Item(items[j], Grammar.dummy));
+
+ LR1Item[] closure = Grammar.CLOSURE(lr1Set).items();
+
+ for(int k = 0; k < closure.length; k++)
+ {
+ if(closure[k].terminal != Grammar.dummy)
+ {
+ Symbol[] rightside = Production.
+ production(closure[k].lr0Item.production).
+ rightside();
+
+ if(closure[k].lr0Item.position < rightside.length)
+ {
+ Integer destination = collection.GOTO(i,
+ rightside[closure[k].lr0Item.position]);
+
+ if(destination != null)
+ {
+
+ ((SymbolSet) lookaheads[destination.intValue()].
+ get(new LR0Item(closure[k].lr0Item.production,
+ closure[k].lr0Item.position + 1))).
+ setTerminal(closure[k].terminal);
+
+ /*((SymbolSet) lookaheads[collection.GOTO(i,
+ Production.production(closure[k].lr0Item.production).
+ rightside(closure[k].lr0Item.position)).intValue()].
+ get(new LR0Item(closure[k].lr0Item.production,
+ closure[k].lr0Item.position + 1))).
+ setTerminal(closure[k].terminal);*/
+ }
+ }
+ }
+ else
+ {
+ Symbol[] rightside = Production.
+ production(closure[k].lr0Item.production).
+ rightside();
+
+ if(closure[k].lr0Item.position < rightside.length)
+ {
+ Integer destination = collection.GOTO(i,
+ rightside[closure[k].lr0Item.position]);
+
+ if(destination != null)
+ {
+ ((Vector) propagation[i].get(items[j])).
+ addElement(new LR0ItemAndSetPair(
+ new LR0Item(closure[k].lr0Item.production,
+ closure[k].lr0Item.position + 1),
+ destination.intValue()));
+
+ /*((Vector) propagation[i].get(items[j])).
+ addElement(new LR0ItemAndSetPair(
+ new LR0Item(closure[k].lr0Item.production,
+ closure[k].lr0Item.position + 1),
+ collection.GOTO(i,
+ Production.production(closure[k].lr0Item.production).
+ rightside(closure[k].lr0Item.position)).intValue()));*/
+ }
+ }
+ }
+ }
+ }
+ }
+ System.out.println();
+
+ boolean changed;
+ do
+ {
+ System.out.print(".");
+ changed = false;
+ for(int i = 0; i < sets.length; i++)
+ {
+ LR0Item[] items = sets[i].items();
+
+ for(int j = 0; j < items.length; j++)
+ {
+ for(Enumeration e = ((Vector) propagation[i].get(items[j])).
+ elements(); e.hasMoreElements();)
+ {
+ LR0ItemAndSetPair pair = (LR0ItemAndSetPair) e.nextElement();
+
+ SymbolSet before = (SymbolSet)
+ ((SymbolSet) lookaheads[pair.set].get(pair.item)).clone();
+
+ ((SymbolSet) lookaheads[pair.set].get(pair.item)).
+ or((SymbolSet) lookaheads[i].get(items[j]));
+
+ if(!before.equals(lookaheads[pair.set].get(pair.item)))
+ {
+ changed = true;
+ }
+ }
+ }
+ }
+ }
+ while(changed);
+ System.out.println();
+ }
+
+ public String toString()
+ {
+ StringBuffer result = new StringBuffer();
+
+ result.append(collection);
+ result.append(System.getProperty("line.separator"));
+
+ result.append("Lookaheads" + System.getProperty("line.separator"));
+ LR0ItemSet[] sets = collection.sets();
+
+ for(int i = 0; i < sets.length; i++)
+ {
+ result.append(i + ":" + System.getProperty("line.separator"));
+ LR0Item[] items = sets[i].items();
+
+ for(int j = 0; j < items.length; j++)
+ {
+ result.append(items[j] + ":" + lookaheads[i].get(items[j]) +
+ System.getProperty("line.separator"));
+ }
+ }
+
+ return result.toString();
+ }
+}
+
Added: sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/LR1Item.java
===================================================================
--- sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/LR1Item.java (rev 0)
+++ sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/LR1Item.java 2012-07-12 16:49:25 UTC (rev 248)
@@ -0,0 +1,101 @@
+/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+ * This file is part of SableCC. *
+ * See the file "LICENSE" for copyright information and the *
+ * terms and conditions for copying, distribution and *
+ * modification of SableCC. *
+ * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
+
+package org.sablecc.sablecc;
+
+import java.util.*;
+
+final class LR1Item implements Cloneable, Comparable
+{
+ final LR0Item lr0Item;
+ final int terminal;
+
+ LR1Item(LR0Item lr0Item, int terminal)
+ {
+ this.lr0Item = lr0Item;
+ this.terminal = terminal;
+ }
+
+ public Object clone()
+ {
+ return new LR1Item(lr0Item, terminal);
+ }
+
+ public boolean equals(Object obj)
+ {
+ if((obj == null) ||
+ (obj.getClass() != this.getClass()))
+ {
+ return false;
+ }
+
+ LR1Item item = (LR1Item) obj;
+
+ return (item.lr0Item.equals(lr0Item)) &&
+ (item.terminal == terminal);
+ }
+
+ public int hashCode()
+ {
+ return lr0Item.hashCode() * (terminal + 1) * 37;
+ }
+
+ public String toString()
+ {
+ return lr0Item + ":" + Symbol.symbol(terminal, true);
+ }
+
+ public String toString(Symbol lookahead)
+ {
+ // two cases:
+ // (1) we are facing a reduction, and the lookahed
+ // should match
+ // (2) we are in the middle of a production. The
+ // next element should match.
+
+ Symbol[] rightside = Production.production(lr0Item.production).rightside();
+
+ if(lr0Item.position == rightside.length)
+ {
+ Symbol term = Symbol.symbol(terminal, true);
+
+ if(term == lookahead)
+ {
+ return lr0Item + " followed by " + term + " (reduce)";
+ }
+ else
+ {
+ return null;
+ }
+ }
+
+ if(rightside[lr0Item.position] == lookahead)
+ {
+ return lr0Item + " (shift)";
+ }
+ else
+ {
+ return null;
+ }
+ }
+
+ public int compareTo(Object object)
+ {
+ LR1Item item = (LR1Item) object;
+
+ int result = lr0Item.compareTo(item.lr0Item);
+
+ if(result == 0)
+ {
+ result = terminal - item.terminal;
+ }
+
+ return result;
+ }
+}
+
+
Added: sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/LR1ItemSet.java
===================================================================
--- sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/LR1ItemSet.java (rev 0)
+++ sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/LR1ItemSet.java 2012-07-12 16:49:25 UTC (rev 248)
@@ -0,0 +1,228 @@
+/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+ * This file is part of SableCC. *
+ * See the file "LICENSE" for copyright information and the *
+ * terms and conditions for copying, distribution and *
+ * modification of SableCC. *
+ * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
+
+package org.sablecc.sablecc;
+
+import java.util.*;
+import java.util.Vector;
+
+final class LR1ItemSet implements Cloneable, Comparable
+{
+ private final TreeMap items;
+ private int hashCode = 0;
+
+ LR1ItemSet()
+ {
+ this.items = new TreeMap();
+ }
+
+ private LR1ItemSet(LR1ItemSet set)
+ {
+ this.items = (TreeMap) set.items.clone();
+ this.hashCode = set.hashCode;
+ }
+
+ void set(LR1Item item)
+ {
+ if(items.put(item, item) == null)
+ {
+ hashCode += item.hashCode();
+ modified_ = true;
+ }
+ }
+
+ boolean get(LR1Item item)
+ {
+ return items.get(item) != null;
+ }
+
+
+ LR1Item[] items_;
+ boolean modified_ = true;
+
+ private void computeArray()
+ {
+ Vector itemVector = new Vector(0);
+
+ for(Iterator e = items.keySet().iterator(); e.hasNext();)
+ {
+ itemVector.addElement(e.next());
+ }
+
+ items_ = new LR1Item[itemVector.size()];
+ itemVector.copyInto(items_);
+ modified_ = false;
+ }
+
+ LR1Item[] items()
+ {
+ if(modified_)
+ {
+ computeArray();
+ }
+
+ return items_;
+ }
+
+ public String toString()
+ {
+ String nl = System.getProperty("line.separator");
+
+ StringBuffer result = new StringBuffer();
+ result.append("{" + nl + "\t");
+
+ Production[] productions = Production.productions();
+ Symbol[] terminals = Symbol.terminals();
+ boolean comma = false;
+ for(int i = 0; i < productions.length; i++)
+ {
+ int rightsideLength = productions[i].rightside().length;
+
+ for(int j = 0; j <= rightsideLength; j++)
+ {
+ LR0Item lr0Item = new LR0Item(productions[i].index, j);
+
+ for(int k = 0; k < terminals.length; k++)
+ {
+ LR1Item item = new LR1Item(lr0Item, terminals[k].index);
+ if(get(item))
+ {
+ if(comma)
+ {
+ result.append("," + nl + "\t");
+ }
+ else
+ {
+ comma = true;
+ }
+
+ result.append(item);
+ }
+ }
+ }
+ }
+
+ result.append(nl + "}");
+ return result.toString();
+ }
+
+ public String toString(Symbol lookahead)
+ {
+ String nl = System.getProperty("line.separator");
+
+ LR1Item[] items = items();
+ int length = items.length;
+
+ TreeSet strings = new TreeSet();
+
+ for(int i = 0; i < length; i++)
+ {
+ String s = items[i].toString(lookahead);
+
+ if(s != null)
+ {
+ strings.add(s);
+ }
+ }
+
+ StringBuffer result = new StringBuffer();
+ result.append("{");
+
+ boolean colon = false;
+ for(Iterator i = strings.iterator(); i.hasNext(); )
+ {
+ if(colon)
+ {
+ result.append(",");
+ result.append(nl);
+ }
+ else
+ {
+ colon = true;
+ result.append(nl);
+ }
+
+ result.append("\t");
+ result.append(i.next());
+ }
+
+ result.append(nl);
+ result.append("}");
+
+ return result.toString();
+ }
+
+ public Object clone()
+ {
+ return new LR1ItemSet(this);
+ }
+
+ public boolean equals(Object obj)
+ {
+ if((obj == null) ||
+ (obj.getClass() != this.getClass()))
+ {
+ return false;
+ }
+
+ LR1ItemSet set = (LR1ItemSet) obj;
+
+ if(set.items.size() != items.size())
+ {
+ return false;
+ }
+
+ for(Iterator e = items.keySet().iterator(); e.hasNext();)
+ {
+ if(!set.get((LR1Item) e.next()))
+ {
+ return false;
+ }
+ }
+
+ return true;
+ }
+
+ public int hashCode()
+ {
+ return hashCode;
+ }
+
+ public int compareTo(Object object)
+ {
+ LR1ItemSet set = (LR1ItemSet) object;
+
+ int result = items.size() - set.items.size();
+
+ if(result == 0)
+ {
+ Iterator e = items.keySet().iterator();
+ Iterator f = set.items.keySet().iterator();
+
+ while(e.hasNext() && f.hasNext() && (result == 0))
+ {
+ result = ((LR1Item) e.next()).compareTo(f.next());
+ }
+
+ if(result == 0)
+ {
+ if(e.hasNext())
+ {
+ return 1;
+ }
+
+ if(f.hasNext())
+ {
+ return -1;
+ }
+ }
+ }
+
+ return result;
+ }
+}
+
Added: sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/ListCast.java
===================================================================
--- sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/ListCast.java (rev 0)
+++ sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/ListCast.java 2012-07-12 16:49:25 UTC (rev 248)
@@ -0,0 +1,25 @@
+/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+ * This file is part of SableCC. *
+ * See the file "LICENSE" for copyright information and the *
+ * terms and conditions for copying, distribution and *
+ * modification of SableCC. *
+ * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
+
+package org.sablecc.sablecc;
+
+import java.util.*;
+
+public class ListCast implements Cast
+{
+ public final static ListCast instance = new ListCast();
+
+ private ListCast()
+ {
+ }
+
+ public Object cast(Object o)
+ {
+ return (List) o;
+ }
+}
+
Added: sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/MacroExpander.java
===================================================================
--- sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/MacroExpander.java (rev 0)
+++ sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/MacroExpander.java 2012-07-12 16:49:25 UTC (rev 248)
@@ -0,0 +1,112 @@
+/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+ * This file is part of SableCC. *
+ * See the file "LICENSE" for copyright information and the *
+ * terms and conditions for copying, distribution and *
+ * modification of SableCC. *
+ * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
+
+package org.sablecc.sablecc;
+
+import java.io.*;
+import java.util.*;
+
+public class MacroExpander
+{
+ private static final String MACRO = "Macro:";
+ private static final String lineSeparator = System.getProperty("line.separator");
+
+ private Map macros = new TypedTreeMap(
+ StringComparator.instance,
+ StringCast.instance,
+ ListCast.instance);
+
+ public MacroExpander(Reader in) throws IOException
+ {
+ BufferedReader br = new BufferedReader(in);
+ while(readInMacro(br));
+ in.close();
+ }
+
+ private boolean readInMacro(BufferedReader in) throws IOException
+ {
+ String line;
+ while((line = in.readLine()) != null)
+ {
+ if(line.startsWith(MACRO))
+ {
+ String name = line.substring(MACRO.length());
+ List macro = new TypedLinkedList(StringCast.instance);
+
+ while((line = in.readLine()) != null)
+ {
+ if(line.equals("$"))
+ {
+ macros.put(name, macro);
+ return true;
+ }
+
+ macro.add(line);
+ }
+
+ macros.put(name, macro);
+ return false;
+ }
+ }
+
+ return false;
+ }
+
+ public String toString()
+ {
+ return this.getClass().getName() + macros;
+ }
+
+ public void apply(BufferedWriter out, String macroName) throws IOException
+ {
+ apply(out, macroName, null);
+ }
+
+ public void apply(BufferedWriter out, String macroName, String[] arguments) throws IOException
+ {
+ List macro = (List) macros.get(macroName);
+
+ for(ListIterator li = macro.listIterator(); li.hasNext();)
+ {
+ if(li.nextIndex() != 0)
+ {
+ out.newLine();
+ }
+
+ String line = (String) li.next();
+ char c;
+
+ for(int i = 0; i < line.length(); i++)
+ {
+ if((c = line.charAt(i)) == '$')
+ {
+ StringBuffer index = new StringBuffer();
+
+ while((c = line.charAt(++i)) != '$')
+ {
+ index.append(c);
+ }
+
+ if(index.length() == 0)
+ {
+ out.write('$');
+ }
+ else
+ {
+ out.write(arguments[Integer.parseInt(index.toString())]);
+ }
+ }
+ else
+ {
+ out.write(c);
+ }
+ }
+ }
+ }
+}
+
+
Added: sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/NFA.java
===================================================================
--- sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/NFA.java (rev 0)
+++ sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/NFA.java 2012-07-12 16:49:25 UTC (rev 248)
@@ -0,0 +1,357 @@
+/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+ * This file is part of SableCC. *
+ * See the file "LICENSE" for copyright information and the *
+ * terms and conditions for copying, distribution and *
+ * modification of SableCC. *
+ * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
+
+package org.sablecc.sablecc;
+
+import java.util.*;
+
+public class NFA implements Cloneable
+{
+ public State[] states;
+
+ private NFA(int size)
+ {
+ System.out.print(".");
+ states = new State[size];
+ }
+
+ public NFA()
+ {
+ this(2);
+ states[0] = new State();
+ states[0].transitions[0] = new Transition(null, 1);
+ states[1] = new State();
+ }
+
+ public NFA(CharSet chars)
+ {
+ this(2);
+ states[0] = new State();
+ states[0].transitions[0] = new Transition(chars, 1);
+ states[1] = new State();
+ }
+
+ public NFA(String string)
+ {
+ this(string.length() + 1);
+
+ for(int i = 0; i < string.length(); i++)
+ {
+ states[i] = new State();
+ states[i].transitions[0] = new Transition(new CharSet(string.charAt(i)), i + 1);
+ }
+
+ states[string.length()] = new State();
+ }
+
+ private NFA(NFA nfa)
+ {
+ this(nfa.states.length);
+
+ for(int i = 0; i < nfa.states.length; i++)
+ {
+ states[i] = new State(nfa.states[i]);
+ }
+ }
+
+ public NFA zeroOrMore()
+ {
+ NFA nfa = new NFA(states.length + 2);
+ nfa.states[0] = new State();
+ nfa.states[0].transitions[0] = new Transition(null, 1);
+ nfa.states[0].transitions[1] = new Transition(null, states.length + 1);
+
+ for(int i = 0; i < states.length; i++)
+ {
+ nfa.states[i + 1] = new State(states[i]);
+
+ if(nfa.states[i + 1].transitions[0] != null)
+ {
+ nfa.states[i + 1].transitions[0].destination += 1;
+ }
+
+ if(nfa.states[i + 1].transitions[1] != null)
+ {
+ nfa.states[i + 1].transitions[1].destination += 1;
+ }
+ }
+
+ nfa.states[states.length].transitions[0] = new Transition(null, 1);
+ nfa.states[states.length].transitions[1] = new Transition(null, states.length + 1);
+
+ nfa.states[states.length + 1] = new State();
+
+ return nfa;
+ }
+
+ public NFA zeroOrOne()
+ {
+ NFA nfa = new NFA(states.length + 2);
+ nfa.states[0] = new State();
+ nfa.states[0].transitions[0] = new Transition(null, 1);
+ nfa.states[0].transitions[1] = new Transition(null, states.length + 1);
+
+ for(int i = 0; i < states.length; i++)
+ {
+ nfa.states[i + 1] = new State(states[i]);
+
+ if(nfa.states[i + 1].transitions[0] != null)
+ {
+ nfa.states[i + 1].transitions[0].destination += 1;
+ }
+
+ if(nfa.states[i + 1].transitions[1] != null)
+ {
+ nfa.states[i + 1].transitions[1].destination += 1;
+ }
+ }
+
+ nfa.states[states.length].transitions[1] = new Transition(null, states.length + 1);
+
+ nfa.states[states.length + 1] = new State();
+
+ return nfa;
+ }
+
+ public NFA oneOrMore()
+ {
+ NFA nfa = new NFA(states.length + 2);
+ nfa.states[0] = new State();
+ nfa.states[0].transitions[0] = new Transition(null, 1);
+
+ for(int i = 0; i < states.length; i++)
+ {
+ nfa.states[i + 1] = new State(states[i]);
+
+ if(nfa.states[i + 1].transitions[0] != null)
+ {
+ nfa.states[i + 1].transitions[0].destination += 1;
+ }
+
+ if(nfa.states[i + 1].transitions[1] != null)
+ {
+ nfa.states[i + 1].transitions[1].destination += 1;
+ }
+ }
+
+ nfa.states[states.length].transitions[0] = new Transition(null, 1);
+ nfa.states[states.length].transitions[1] = new Transition(null, states.length + 1);
+
+ nfa.states[states.length + 1] = new State();
+
+ return nfa;
+ }
+
+ public NFA concatenate(NFA next)
+ {
+ NFA nfa = new NFA(states.length + next.states.length - 1);
+
+ for(int i = 0; i < states.length - 1; i++)
+ {
+ nfa.states[i] = new State(states[i]);
+ }
+
+ for(int i = 0; i < next.states.length; i++)
+ {
+ nfa.states[states.length + i - 1] = new State(next.states[i]);
+
+ if(nfa.states[states.length + i - 1].transitions[0] != null)
+ {
+ nfa.states[states.length + i - 1].transitions[0].destination +=
+ states.length - 1;
+ }
+
+ if(nfa.states[states.length + i - 1].transitions[1] != null)
+ {
+ nfa.states[states.length + i - 1].transitions[1].destination +=
+ states.length - 1;
+ }
+ }
+
+ return nfa;
+ }
+
+ public NFA alternate(NFA next)
+ {
+ NFA nfa = new NFA(states.length + next.states.length + 2);
+
+ nfa.states[0] = new State();
+ nfa.states[0].transitions[0] = new Transition(null, 1);
+ nfa.states[0].transitions[1] = new Transition(null, states.length + 1);
+
+ for(int i = 0; i < states.length; i++)
+ {
+ nfa.states[i + 1] = new State(states[i]);
+
+ if(nfa.states[i + 1].transitions[0] != null)
+ {
+ nfa.states[i + 1].transitions[0].destination += 1;
+ }
+
+ if(nfa.states[i + 1].transitions[1] != null)
+ {
+ nfa.states[i + 1].transitions[1].destination += 1;
+ }
+ }
+
+ nfa.states[states.length].transitions[0] =
+ new Transition(null, states.length + next.states.length + 1);
+
+ for(int i = 0; i < next.states.length; i++)
+ {
+ nfa.states[states.length + i + 1] = new State(next.states[i]);
+
+ if(nfa.states[states.length + i + 1].transitions[0] != null)
+ {
+ nfa.states[states.length + i + 1].transitions[0].destination +=
+ states.length + 1;
+ }
+
+ if(nfa.states[states.length + i + 1].transitions[1] != null)
+ {
+ nfa.states[states.length + i + 1].transitions[1].destination +=
+ states.length + 1;
+ }
+ }
+
+ nfa.states[states.length + next.states.length].transitions[0] =
+ new Transition(null, states.length + next.states.length + 1);
+
+ nfa.states[states.length + next.states.length + 1] = new State();
+
+ return nfa;
+ }
+
+ public NFA merge(NFA next)
+ {
+ NFA nfa = new NFA(states.length + next.states.length + 1);
+
+ nfa.states[0] = new State();
+ nfa.states[0].transitions[0] = new Transition(null, 1);
+ nfa.states[0].transitions[1] = new Transition(null, states.length + 1);
+
+ for(int i = 0; i < states.length; i++)
+ {
+ nfa.states[i + 1] = new State(states[i]);
+
+ if(nfa.states[i + 1].transitions[0] != null)
+ {
+ nfa.states[i + 1].transitions[0].destination += 1;
+ }
+
+ if(nfa.states[i + 1].transitions[1] != null)
+ {
+ nfa.states[i + 1].transitions[1].destination += 1;
+ }
+ }
+
+ for(int i = 0; i < next.states.length; i++)
+ {
+ nfa.states[states.length + i + 1] = new State(next.states[i]);
+
+ if(nfa.states[states.length + i + 1].transitions[0] != null)
+ {
+ nfa.states[states.length + i + 1].transitions[0].destination +=
+ states.length + 1;
+ }
+
+ if(nfa.states[states.length + i + 1].transitions[1] != null)
+ {
+ nfa.states[states.length + i + 1].transitions[1].destination +=
+ states.length + 1;
+ }
+ }
+
+ return nfa;
+ }
+
+ public Object clone()
+ {
+ return new NFA(this);
+ }
+
+ public String toString()
+ {
+ StringBuffer result = new StringBuffer();
+ for(int i = 0; i < states.length; i++)
+ {
+ result.append(i + ":" + states[i] + System.getProperty("line.separator"));
+ }
+ return result.toString();
+ }
+
+ public static class State
+ {
+ public String accept;
+
+ public Transition[] transitions = new Transition[2];
+
+ public State()
+ {
+ }
+
+ public State(State state)
+ {
+ if(state.accept != null)
+ {
+ accept = state.accept;
+ }
+
+ if(state.transitions[0] != null)
+ {
+ transitions[0] = new Transition(state.transitions[0]);
+ }
+
+ if(state.transitions[1] != null)
+ {
+ transitions[1] = new Transition(state.transitions[1]);
+ }
+ }
+
+ public String toString()
+ {
+ StringBuffer result = new StringBuffer();
+ if(accept != null)
+ {
+ result.append("(" + accept + ") ");
+ }
+ if(transitions[0] != null)
+ {
+ result.append(" " + transitions[0]);
+ }
+ if(transitions[1] != null)
+ {
+ result.append(" " + transitions[1]);
+ }
+ return result.toString();
+ }
+ }
+
+ public static class Transition
+ {
+ public CharSet chars;
+ public int destination;
+
+ public Transition(CharSet chars, int destination)
+ {
+ this.chars = chars;
+ this.destination = destination;
+ }
+
+ public Transition(Transition transition)
+ {
+ chars = transition.chars;
+ destination = transition.destination;
+ }
+
+ public String toString()
+ {
+ return destination + ":{" + chars + "}";
+ }
+ }
+}
+
Added: sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/NoCast.java
===================================================================
--- sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/NoCast.java (rev 0)
+++ sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/NoCast.java 2012-07-12 16:49:25 UTC (rev 248)
@@ -0,0 +1,22 @@
+/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+ * This file is part of SableCC. *
+ * See the file "LICENSE" for copyright information and the *
+ * terms and conditions for copying, distribution and *
+ * modification of SableCC. *
+ * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
+
+package org.sablecc.sablecc;
+
+public class NoCast implements Cast
+{
+ public final static NoCast instance = new NoCast();
+
+ private NoCast()
+ {
+ }
+
+ public Object cast(Object o)
+ {
+ return o;
+ }
+}
Added: sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/NodeCast.java
===================================================================
--- sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/NodeCast.java (rev 0)
+++ sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/NodeCast.java 2012-07-12 16:49:25 UTC (rev 248)
@@ -0,0 +1,26 @@
+/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+ * This file is part of SableCC. *
+ * See the file "LICENSE" for copyright information and the *
+ * terms and conditions for copying, distribution and *
+ * modification of SableCC. *
+ * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
+
+package org.sablecc.sablecc;
+
+import java.util.*;
+import org.sablecc.sablecc.node.*;
+
+public class NodeCast implements Cast
+{
+ public final static NodeCast instance = new NodeCast();
+
+ private NodeCast()
+ {
+ }
+
+ public Object cast(Object o)
+ {
+ return (Node) o;
+ }
+}
+
Added: sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/NodeComparator.java
===================================================================
--- sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/NodeComparator.java (rev 0)
+++ sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/NodeComparator.java 2012-07-12 16:49:25 UTC (rev 248)
@@ -0,0 +1,26 @@
+/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+ * This file is part of SableCC. *
+ * See the file "LICENSE" for copyright information and the *
+ * terms and conditions for copying, distribution and *
+ * modification of SableCC. *
+ * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
+
+package org.sablecc.sablecc;
+
+import java.util.*;
+import org.sablecc.sablecc.node.*;
+
+public class NodeComparator implements Comparator
+{
+ public final static NodeComparator instance = new NodeComparator();
+
+ private NodeComparator()
+ {
+ }
+
+ public int compare(Object o1, Object o2)
+ {
+ return ((Node) o1).getId() - ((Node) o2).getId();
+ }
+}
+
Added: sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/Production.java
===================================================================
--- sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/Production.java (rev 0)
+++ sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/Production.java 2012-07-12 16:49:25 UTC (rev 248)
@@ -0,0 +1,160 @@
+/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+ * This file is part of SableCC. *
+ * See the file "LICENSE" for copyright information and the *
+ * terms and conditions for copying, distribution and *
+ * modification of SableCC. *
+ * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
+
+package org.sablecc.sablecc;
+
+import java.util.*;
+import java.util.Vector;
+import java.util.Enumeration;
+
+final class Production
+{
+ final int leftside;
+ final int index;
+ final String name;
+
+ private final Vector rightside = new Vector();
+ private static final Vector productions = new Vector(0);
+ private static TreeMap alternatives_ = new TreeMap(IntegerComparator.instance);
+ private static boolean modified_ = true;
+ private static Production[] productions_;
+
+ public static void reinit()
+ {
+ productions.removeAllElements();
+ alternatives_ = new TreeMap(IntegerComparator.instance);
+ productions_ = null;
+ modified_ = true;
+ productions_ = null;
+ }
+
+ private static void computeArray_()
+ {
+ productions_ = new Production[productions.size()];
+ productions.copyInto(productions_);
+ modified_ = false;
+ }
+
+ private boolean modified = true;
+ private Symbol[] rightside_;
+
+ private void computeArray()
+ {
+ rightside_ = new Symbol[rightside.size()];
+ rightside.copyInto(rightside_);
+ modified = false;
+ }
+
+ Production(int leftside, String name)
+ {
+ productions.addElement(this);
+
+ this.name = name;
+ this.leftside = leftside;
+ this.index = productions.indexOf(this);
+ modified_ = true;
+ }
+
+ Symbol[] rightside()
+ {
+ if(modified)
+ {
+ computeArray();
+ }
+
+ return rightside_;
+ }
+
+ void addSymbol(Symbol s)
+ {
+ rightside.addElement(s);
+ modified = true;
+ modified_ = true;
+ }
+
+ Symbol rightside(int index)
+ {
+ return (Symbol) rightside.elementAt(index);
+ }
+
+ static Production production(int index)
+ {
+ return (Production) productions.elementAt(index);
+ }
+
+ static Production[] alternatives(int nonterminal)
+ {
+ if(modified_)
+ {
+ alternatives_ = new TreeMap(IntegerComparator.instance);
+ }
+
+ Production[] result = (Production[]) alternatives_.get(new Integer(nonterminal));
+
+ if(result == null)
+ {
+ Vector alternatives = new Vector(0);
+
+ for(Enumeration e = productions.elements(); e.hasMoreElements();)
+ {
+ Production production = (Production) e.nextElement();
+
+ if(production.leftside == nonterminal)
+ {
+ alternatives.addElement(production);
+ }
+ }
+
+ result = new Production[alternatives.size()];
+ alternatives.copyInto(result);
+
+ alternatives_.put(new Integer(nonterminal), result);
+ }
+
+ return result;
+ }
+
+ static Production[] productions()
+ {
+ if(modified_)
+ {
+ computeArray_();
+ }
+
+ return productions_;
+ }
+
+ public String toString()
+ {
+ StringBuffer result = new StringBuffer();
+
+ result.append(Symbol.symbol(leftside, false));
+
+ result.append(" = ");
+
+ Symbol[] symbols = rightside();
+ boolean space = false;
+ for(int i = 0; i < symbols.length; i++)
+ {
+ if(space)
+ {
+ result.append(" ");
+ }
+ else
+ {
+ space = true;
+ }
+
+ result.append(symbols[i]);
+ }
+
+
+ return result.toString();
+ }
+}
+
+
Added: sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/ResolveIds.java
===================================================================
--- sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/ResolveIds.java (rev 0)
+++ sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/ResolveIds.java 2012-07-12 16:49:25 UTC (rev 248)
@@ -0,0 +1,652 @@
+/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+ * This file is part of SableCC. *
+ * See the file "LICENSE" for copyright information and the *
+ * terms and conditions for copying, distribution and *
+ * modification of SableCC. *
+ * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
+
+package org.sablecc.sablecc;
+
+import org.sablecc.sablecc.analysis.*;
+import org.sablecc.sablecc.node.*;
+import java.util.*;
+import java.io.*;
+
+public class ResolveIds extends DepthFirstAdapter
+{
+ public final Map helpers = new TypedTreeMap(
+ StringComparator.instance,
+ StringCast.instance,
+ NodeCast.instance);
+ public final Map states = new TypedTreeMap(
+ StringComparator.instance,
+ StringCast.instance,
+ NodeCast.instance);
+ public final Map tokens = new TypedTreeMap(
+ StringComparator.instance,
+ StringCast.instance,
+ NodeCast.instance);
+ public final Map ignTokens = new TypedTreeMap(
+ StringComparator.instance,
+ StringCast.instance,
+ NodeCast.instance);
+ public final Map prods = new TypedTreeMap(
+ StringComparator.instance,
+ StringCast.instance,
+ NodeCast.instance);
+ public final Map alts = new TypedTreeMap(
+ StringComparator.instance,
+ StringCast.instance,
+ NodeCast.instance);
+ public final Map elems = new TypedTreeMap(
+ StringComparator.instance,
+ StringCast.instance,
+ NodeCast.instance);
+ public final Map names = new TypedTreeMap(
+ NodeComparator.instance,
+ NodeCast.instance,
+ StringCast.instance);
+ public final Map errorNames = new TypedTreeMap(
+ NodeComparator.instance,
+ NodeCast.instance,
+ StringCast.instance);
+ public final Map elemTypes = new TypedTreeMap(
+ NodeComparator.instance,
+ NodeCast.instance,
+ StringCast.instance);
+ public final Map fixedTokens = new TypedTreeMap(
+ NodeComparator.instance,
+ NodeCast.instance,
+ BooleanCast.instance);
+ public final List tokenList = new TypedLinkedList(StringCast.instance);
+ public final LinkedList stateList = new TypedLinkedList(StringCast.instance);
+ public File pkgDir;
+ public String pkgName = "";
+
+ private boolean processingStates;
+ private boolean processingIgnTokens;
+
+ String currentProd;
+ String currentAlt;
+ private int lastLine;
+ private int lastPos;
+
+ public ResolveIds(File currentDir)
+ {
+ pkgDir = currentDir;
+ }
+
+ public void inPkgName1(PkgName1 node)
+ {
+ pkgName = node.getNode1().getText();
+ pkgDir = new File(pkgDir, node.getNode1().getText());
+
+ if(!pkgDir.exists())
+ {
+ if(!pkgDir.mkdir())
+ {
+ throw new RuntimeException("Unable to create " + pkgDir.getAbsolutePath());
+ }
+ }
+ }
+
+ public void inPkgNameTail1(PkgNameTail1 node)
+ {
+ pkgName += "." + node.getNode2().getText();
+ pkgDir = new File(pkgDir, node.getNode2().getText());
+
+ if(!pkgDir.exists())
+ {
+ if(!pkgDir.mkdir())
+ {
+ throw new RuntimeException("Unable to create " + pkgDir.getAbsolutePath());
+ }
+ }
+ }
+
+ public void caseBasic4(Basic4 node)
+ {
+ String name = node.getNode1().getText();
+
+ if(helpers.get(name) == null)
+ {
+ error2(node.getNode1(), name);
+ }
+ }
+
+ public void outHelperDef1(HelperDef1 node)
+ {
+ String name = node.getNode1().getText();
+
+ if(helpers.put(name, node) != null)
+ {
+ error(node.getNode1(), name);
+ }
+
+ names.put(node, name);
+ }
+
+ public void outTokenDef1(TokenDef1 node)
+ {
+ String name = "T" + name(node.getNode2().getText());
+ String errorName = errorName(node.getNode2().getText());
+
+ if(tokens.put(name, node) != null)
+ {
+ error(node.getNode2(), name);
+ }
+
+ names.put(node, name);
+ errorNames.put(node, errorName);
+ tokenList.add(name);
+ }
+
+ public void inStates1(States1 node)
+ {
+ processingStates = true;
+ }
+
+ public void outStates1(States1 node)
+ {
+ processingStates = false;
+ }
+
+ public void inIgnTokens1(IgnTokens1 node)
+ {
+ processingIgnTokens = true;
+ }
+
+ public void outIgnTokens1(IgnTokens1 node)
+ {
+ processingIgnTokens = false;
+ }
+
+ public void inIdList1(IdList1 node)
+ {
+ if(processingStates)
+ {
+ String name = node.getNode1().getText().toUpperCase();
+
+ if(states.put(name, node.getNode1()) != null)
+ {
+ error(node.getNode1(), name);
+ }
+
+ names.put(node.getNode1(), name);
+ stateList.add(name);
+ }
+
+ if(processingIgnTokens)
+ {
+ String name = "T" + name(node.getNode1().getText());
+
+ if(tokens.get(name) == null)
+ {
+ error2(node.getNode1(), name);
+ }
+
+ if(ignTokens.put(name, node.getNode1()) != null)
+ {
+ error(node.getNode1(), name);
+ }
+
+ names.put(node.getNode1(), name);
+ }
+ }
+
+ public void inIdListTail1(IdListTail1 node)
+ {
+ if(processingStates)
+ {
+ String name = node.getNode2().getText().toUpperCase();
+
+ if(states.put(name, node.getNode2()) != null)
+ {
+ error(node.getNode2(), name);
+ }
+
+ names.put(node.getNode2(), name);
+ stateList.add(name);
+ }
+
+ if(processingIgnTokens)
+ {
+ String name = "T" + name(node.getNode2().getText());
+
+ if(tokens.get(name) == null)
+ {
+ error2(node.getNode2(), name);
+ }
+
+ if(ignTokens.put(name, node.getNode2()) != null)
+ {
+ error(node.getNode2(), name);
+ }
+
+ names.put(node.getNode2(), name);
+ }
+ }
+
+ private Map stateMap;
+
+ public void inStateList1(StateList1 node)
+ {
+ stateMap = new TypedTreeMap(
+ StringComparator.instance,
+ StringCast.instance,
+ NodeCast.instance);
+
+ String name = node.getNode2().getText().toUpperCase();
+
+ if(states.get(name) == null)
+ {
+ error2(node.getNode2(), name);
+ }
+
+ if(stateMap.put(name, node) != null)
+ {
+ error(node.getNode2(), name);
+ }
+ }
+
+ public void outStateList1(StateList1 node)
+ {
+ stateMap = null;
+ }
+
+ public void inStateListTail1(StateListTail1 node)
+ {
+ String name = node.getNode2().getText().toUpperCase();
+
+ if(states.get(name) == null)
+ {
+ error2(node.getNode2(), name);
+ }
+
+ if(stateMap.put(name, node) != null)
+ {
+ error(node.getNode2(), name);
+ }
+ }
+
+ public void inTransition1(Transition1 node)
+ {
+ String name = node.getNode2().getText().toUpperCase();
+
+ if(states.get(name) == null)
+ {
+ error2(node.getNode2(), name);
+ }
+ }
+
+ public void inProd1(Prod1 node)
+ {
+ currentProd = name(node.getNode1().getText());
+
+ String name = "P" + currentProd;
+
+ if(prods.put(name, node) != null)
+ {
+ error(node.getNode1(), name);
+ }
+
+ names.put(node, name);
+ }
+
+ private class Alt1Switch extends AnalysisAdapter
+ {
+ Alt1 alt;
+
+ Alt1Switch(Alt1 alt)
+ {
+ this.alt = alt;
+ }
+
+ public void caseAltNameOpt1(AltNameOpt1 node)
+ {
+ currentAlt =
+ "A" +
+ name(((AltName1) node.getNode1()).getNode2().getText()) +
+ currentProd;
+
+ if(alts.put(currentAlt, alt) != null)
+ {
+ error(((AltName1) node.getNode1()).getNode2(), currentAlt);
+ }
+
+ names.put(alt, currentAlt);
+ }
+
+ public void caseAltNameOpt2(AltNameOpt2 node)
+ {
+ currentAlt = "A" + currentProd;
+
+ if(alts.put(currentAlt, alt) != null)
+ {
+ error(currentAlt);
+ }
+
+ names.put(alt, currentAlt);
+ }
+ }
+
+ public void inAlt1(final Alt1 alt)
+ {
+ alt.getNode1().apply(new Alt1Switch(alt));
+ }
+
+ public void defaultcase(Node node)
+ {
+ if(node instanceof Token)
+ {
+ Token t = (Token) node;
+ lastLine = t.getLine();
+ lastPos = t.getPos() + t.getText().length();
+ }
+ }
+
+ private class Alt2Switch extends AnalysisAdapter
+ {
+ Alt2 alt;
+
+ Alt2Switch(Alt2 alt)
+ {
+ this.alt = alt;
+ }
+
+ public void caseAltNameOpt1(AltNameOpt1 node)
+ {
+ currentAlt =
+ "A" +
+ name(((AltName1) node.getNode1()).getNode2().getText()) +
+ currentProd;
+
+ if(alts.put(currentAlt, alt) != null)
+ {
+ error(((AltName1) node.getNode1()).getNode2(), currentAlt);
+ }
+
+ names.put(alt, currentAlt);
+ }
+
+ public void caseAltNameOpt2(AltNameOpt2 node)
+ {
+ currentAlt = "A" + currentProd;
+
+ if(alts.put(currentAlt, alt) != null)
+ {
+ error(currentAlt);
+ }
+
+ names.put(alt, currentAlt);
+ }
+ }
+
+ public void inLookAhead1(LookAhead1 node)
+ {
+ Token token = (Token) node.getNode1();
+
+ throw new RuntimeException(
+ "[" + token.getLine() + "," + token.getPos() + "] " +
+ "Look ahead not yet supported.");
+ }
+ public void inAlt2(final Alt2 alt)
+ {
+ alt.getNode2().apply(new Alt2Switch(alt));
+ }
+
+ public void caseElem1(final Elem1 elem)
+ {
+ elem.getNode1().apply(new AnalysisAdapter()
+ {
+ public void caseElemNameOpt1(ElemNameOpt1 node)
+ {
+ String name = currentAlt + "." +
+ name(((ElemName1)node.getNode1()).getNode2().getText());
+
+ if(elems.put(name, elem) != null)
+ {
+ error(((ElemName1)node.getNode1()).getNode2(), name);
+ }
+
+ if(((ElemName1)node.getNode1()).getNode2().getText().equals("class"))
+ {
+ error5(((ElemName1)node.getNode1()).getNode2());
+ }
+
+ names.put(elem, name(((ElemName1)node.getNode1()).getNode2().getText()));
+ }
+
+ public void caseElemNameOpt2(ElemNameOpt2 node)
+ {
+ String name = currentAlt + "." +
+ name(elem.getNode3().getText());
+
+ if(elems.put(name, elem) != null)
+ {
+ error(elem.getNode3(), name);
+ }
+
+ if(elem.getNode3().getText().equals("class"))
+ {
+ error5(elem.getNode3());
+ }
+
+ names.put(elem, name(elem.getNode3().getText()));
+ }
+ });
+ }
+
+ public void outProductions1(Productions1 prod)
+ {
+ prod.apply(new DepthFirstAdapter()
+ {
+ public void caseElem1(Elem1 node)
+ {
+ String name = name(node.getNode3().getText());
+
+ if(node.getNode2() instanceof SpecifierOpt1)
+ {
+ if(((SpecifierOpt1) node.getNode2()).getNode1() instanceof Specifier1)
+ {
+ if(tokens.get("T" + name) == null)
+ {
+ error2(node.getNode3(), "T" + name);
+ }
+
+ if(ignTokens.get("T" + name) != null)
+ {
+ error3(node.getNode3(), "T" + name);
+ }
+
+ elemTypes.put(node, "T" + name);
+ }
+ else
+ {
+ if(prods.get("P" + name) == null)
+ {
+ error2(node.getNode3(), "P" + name);
+ }
+
+ elemTypes.put(node, "P" + name);
+ }
+ }
+ else
+ {
+ Object token = tokens.get("T" + name);
+ Object ignToken = ignTokens.get("T" + name);
+ Object production = prods.get("P" + name);
+
+ if((token == null) && (production == null))
+ {
+ error2(node.getNode3(), "P" + name + " and T" + name);
+ }
+
+ if(token != null)
+ {
+ if(production != null)
+ {
+ error4(node.getNode3(), "P" + name + " and T" + name);
+ }
+
+ if(ignToken != null)
+ {
+ error3(node.getNode3(), "T" + name);
+ }
+
+ elemTypes.put(node, "T" + name);
+ }
+ else
+ {
+ elemTypes.put(node, "P" + name);
+ }
+ }
+ }
+ });
+ }
+
+ public static String name(String s)
+ {
+ StringBuffer result = new StringBuffer();
+ boolean upcase = true;
+ int length = s.length();
+ char c;
+
+ for(int i = 0; i < length; i++)
+ {
+ c = s.charAt(i);
+ switch(c)
+ {
+ case '_':
+ upcase = true;
+ break;
+ default:
+ if(upcase)
+ {
+ result.append(Character.toUpperCase(c));
+ upcase = false;
+ }
+ else
+ {
+ result.append(c);
+ }
+ break;
+ }
+ }
+
+ return result.toString();
+ }
+
+ public static String errorName(String s)
+ {
+ StringBuffer result = new StringBuffer();
+ int length = s.length();
+ char c;
+
+ for(int i = 0; i < length; i++)
+ {
+ c = s.charAt(i);
+ switch(c)
+ {
+ case '_':
+ {
+ result.append(' ');
+ }
+ break;
+ default:
+ {
+ result.append(c);
+ }
+ break;
+ }
+ }
+
+ return result.toString();
+ }
+
+ private static void error(Token token, String name)
+ {
+ throw new RuntimeException(
+ "[" + token.getLine() + "," + token.getPos() + "] " +
+ "Redefinition of " + name + ".");
+ }
+
+ private void error(String name)
+ {
+ throw new RuntimeException(
+ "[" + lastLine + "," + lastPos + "] " +
+ "Redefinition of " + name + ".");
+ }
+
+ private static void error2(Token token, String name)
+ {
+ throw new RuntimeException(
+ "[" + token.getLine() + "," + token.getPos() + "] " +
+ name + " undefined.");
+ }
+
+ private static void error3(Token token, String name)
+ {
+ throw new RuntimeException(
+ "[" + token.getLine() + "," + token.getPos() + "] " +
+ name + " is ignored.");
+ }
+
+ private static void error4(Token token, String name)
+ {
+ throw new RuntimeException(
+ "[" + token.getLine() + "," + token.getPos() + "] " +
+ "ambiguous " + name + ".");
+ }
+
+ private static void error5(Token token)
+ {
+ throw new RuntimeException(
+ "[" + token.getLine() + "," + token.getPos() + "] " +
+ "class is an invalid element name.");
+ }
+
+ public String toString()
+ {
+ StringBuffer s = new StringBuffer();
+ String nl = System.getProperty("line.separator");
+
+ s.append("Helpers:");
+ s.append(nl);
+ s.append(helpers);
+ s.append(nl);
+
+ s.append("States:");
+ s.append(nl);
+ s.append(states);
+ s.append(nl);
+
+ s.append("Tokens:");
+ s.append(nl);
+ s.append(tokens);
+ s.append(nl);
+
+ s.append("Ignored Tokens:");
+ s.append(nl);
+ s.append(ignTokens);
+ s.append(nl);
+
+ s.append("Productions:");
+ s.append(nl);
+ s.append(prods);
+ s.append(nl);
+
+ s.append("Alternatives:");
+ s.append(nl);
+ s.append(alts);
+ s.append(nl);
+
+ s.append("Elements:");
+ s.append(nl);
+ s.append(elems);
+ s.append(nl);
+
+ return s.toString();
+ }
+}
+
Added: sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/SableCC.java
===================================================================
--- sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/SableCC.java (rev 0)
+++ sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/SableCC.java 2012-07-12 16:49:25 UTC (rev 248)
@@ -0,0 +1,210 @@
+/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+ * This file is part of SableCC. *
+ * See the file "LICENSE" for copyright information and the *
+ * terms and conditions for copying, distribution and *
+ * modification of SableCC. *
+ * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
+
+package org.sablecc.sablecc;
+
+import java.io.*;
+import java.awt.*;
+import java.util.*;
+import org.sablecc.sablecc.node.*;
+import org.sablecc.sablecc.analysis.*;
+import org.sablecc.sablecc.lexer.*;
+import org.sablecc.sablecc.parser.*;
+import java.util.Vector;
+
+public class SableCC
+{
+ private static void displayCopyright()
+ {
+ System.out.println();
+ System.out.println("SableCC version " + Version.VERSION);
+ System.out.println("Copyright (C) 1997-2001 Etienne M. Gagnon <egagnon at j-meg.com> and");
+ System.out.println("others. All rights reserved.");
+ System.out.println();
+ System.out.println("This software comes with ABSOLUTELY NO WARRANTY. This is free software,");
+ System.out.println("and you are welcome to redistribute it under certain conditions.");
+ System.out.println();
+ System.out.println("Type 'sablecc -license' to view");
+ System.out.println("the complete copyright notice and license.");
+ System.out.println();
+ }
+
+ private static void displayUsage()
+ {
+ System.out.println("Usage:");
+ System.out.println(" sablecc [-d destination] filename [filename]...");
+ System.out.println(" sablecc -license");
+ }
+
+ public static void main(String[] arguments)
+ {
+ String d_option = null;
+ Vector filename = new Vector();
+
+ if(arguments.length == 0)
+ {
+ displayCopyright();
+ displayUsage();
+ System.exit(1);
+ }
+
+ if((arguments.length == 1) && (arguments[0].equals("-license")))
+ {
+ new DisplayLicense();
+ System.exit(0);
+ }
+
+ displayCopyright();
+
+ {
+ int arg = 0;
+ while(arg < arguments.length)
+ {
+ if(arguments[arg].equals("-d"))
+ {
+ if((d_option == null) && (++arg < arguments.length))
+ {
+ d_option = arguments[arg];
+ }
+ else
+ {
+ displayUsage();
+ System.exit(1);
+ }
+ }
+ else
+ {
+ filename.addElement(arguments[arg]);
+ }
+ arg++;
+ }
+
+ if(filename.size() == 0)
+ {
+ displayUsage();
+ System.exit(1);
+ }
+ }
+
+ try
+ {
+ for(int i=0; i<filename.size(); i++){
+ processGrammar((String)filename.elementAt(i), d_option);
+ }
+ }catch(Exception e)
+ {
+ System.out.println(e);
+ System.exit(1);
+ }
+ catch(Throwable e)
+ {
+ System.out.println(e);
+ System.exit(1);
+ }
+ finally
+ {
+ System.exit(0);
+ }
+ }
+
+
+ /**
+ * The main method for processing grammar file and generating the parser/lexer.
+ * @param in input grammar file
+ * @param dir output directory
+ */
+ public static void processGrammar(String grammar, String destDir) throws Exception, Throwable
+ {
+ File in;
+ File dir;
+
+ in = new File(grammar);
+ in = new File(in.getAbsolutePath());
+
+ if(destDir == null)
+ {
+ dir = new File(in.getParent());
+ }
+ else
+ {
+ dir = new File(destDir);
+ dir = new File(dir.getAbsolutePath());
+ }
+
+ processGrammar(in, dir);
+ }
+
+ /**
+ * The main method for processing grammar file and generating the parser/lexer.
+ * @param in input grammar file
+ * @param dir output directory
+ */
+ public static void processGrammar(File in, File dir) throws Exception, Throwable
+ {
+ if(!in.exists()){ System.out.println("ERROR: grammar file "+in.getName()+" does not exist."); System.exit(1); }
+ if(!dir.exists()){ System.out.println("ERROR: destination directory "+dir.getName()+" does not exist."); System.exit(1); }
+
+ // re-initialize all static structures in the engine
+ LR0Collection.reinit();
+ Symbol.reinit();
+ Production.reinit();
+ Grammar.reinit();
+
+ System.out.println("\n -- Generating parser for "+in.getName()+" in "+dir.getPath());
+
+ FileReader temp;
+
+ // Build the AST
+ Start tree = new Parser(new Lexer(new BufferedReader(
+ temp = new FileReader(in)))).parse();
+ temp.close();
+
+ System.out.println("Verifying identifiers.");
+ ResolveIds ids = new ResolveIds(dir);
+ tree.apply(ids);
+
+ // Create the node.* and analysis.* files
+ System.out.println("Generating token classes.");
+ tree.apply(new GenTokens(ids));
+
+ System.out.println("Generating production classes.");
+ tree.apply(new GenProds(ids));
+
+ System.out.println("Generating alternative classes.");
+ tree.apply(new GenAlts(ids));
+
+ System.out.println("Generating analysis classes.");
+ tree.apply(new GenAnalyses(ids));
+
+ System.out.println("Generating utility classes.");
+ tree.apply(new GenUtils(ids));
+
+ try
+ {
+ System.out.println("Generating the lexer.");
+ tree.apply(new GenLexer(ids));
+ }
+ catch(Exception e)
+ {
+ System.out.println(e.getMessage());
+ throw e;
+ }
+
+ try
+ {
+ System.out.println("Generating the parser.");
+ tree.apply(new GenParser(ids));
+ }
+ catch(Exception e)
+ {
+ System.out.println(e.getMessage());
+ throw e;
+ }
+ }
+
+}
+
Added: sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/StringCast.java
===================================================================
--- sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/StringCast.java (rev 0)
+++ sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/StringCast.java 2012-07-12 16:49:25 UTC (rev 248)
@@ -0,0 +1,25 @@
+/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+ * This file is part of SableCC. *
+ * See the file "LICENSE" for copyright information and the *
+ * terms and conditions for copying, distribution and *
+ * modification of SableCC. *
+ * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
+
+package org.sablecc.sablecc;
+
+import java.util.*;
+
+public class StringCast implements Cast
+{
+ public final static StringCast instance = new StringCast();
+
+ private StringCast()
+ {
+ }
+
+ public Object cast(Object o)
+ {
+ return (String) o;
+ }
+}
+
Added: sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/StringComparator.java
===================================================================
--- sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/StringComparator.java (rev 0)
+++ sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/StringComparator.java 2012-07-12 16:49:25 UTC (rev 248)
@@ -0,0 +1,25 @@
+/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+ * This file is part of SableCC. *
+ * See the file "LICENSE" for copyright information and the *
+ * terms and conditions for copying, distribution and *
+ * modification of SableCC. *
+ * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
+
+package org.sablecc.sablecc;
+
+import java.util.*;
+
+public class StringComparator implements Comparator
+{
+ public final static StringComparator instance = new StringComparator();
+
+ private StringComparator()
+ {
+ }
+
+ public int compare(Object o1, Object o2)
+ {
+ return ((String) o1).compareTo((String) o2);
+ }
+}
+
Added: sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/Switch.java
===================================================================
--- sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/Switch.java (rev 0)
+++ sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/Switch.java 2012-07-12 16:49:25 UTC (rev 248)
@@ -0,0 +1,13 @@
+/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+ * This file is part of SableCC. *
+ * See the file "LICENSE" for copyright information and the *
+ * terms and conditions for copying, distribution and *
+ * modification of SableCC. *
+ * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
+
+package org.sablecc.sablecc;
+
+public interface Switch
+{
+}
+
Added: sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/Switchable.java
===================================================================
--- sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/Switchable.java (rev 0)
+++ sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/Switchable.java 2012-07-12 16:49:25 UTC (rev 248)
@@ -0,0 +1,14 @@
+/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+ * This file is part of SableCC. *
+ * See the file "LICENSE" for copyright information and the *
+ * terms and conditions for copying, distribution and *
+ * modification of SableCC. *
+ * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
+
+package org.sablecc.sablecc;
+
+public interface Switchable
+{
+ void apply(Switch sw);
+}
+
Added: sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/Symbol.java
===================================================================
--- sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/Symbol.java (rev 0)
+++ sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/Symbol.java 2012-07-12 16:49:25 UTC (rev 248)
@@ -0,0 +1,153 @@
+/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+ * This file is part of SableCC. *
+ * See the file "LICENSE" for copyright information and the *
+ * terms and conditions for copying, distribution and *
+ * modification of SableCC. *
+ * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
+
+package org.sablecc.sablecc;
+
+import java.util.*;
+import java.util.Vector;
+
+final class Symbol implements Comparable
+{
+ private static Vector terminals;
+ private static Vector nonterminals;
+ private static TreeMap names;
+
+ private static boolean modified_ = true;
+ private static Symbol[] symbols_;
+ private static Symbol[] terminals_;
+ private static Symbol[] nonterminals_;
+
+ final String name;
+ final String errorName;
+ final boolean terminal;
+ final int index;
+
+ static {
+ reinit();
+ }
+
+ Symbol(String name, String errorName, boolean terminal)
+ {
+ if(names.get(name) != null)
+ {
+ throw new IllegalArgumentException("The symbol " + name + " aready exists.");
+ }
+
+ if(terminal)
+ {
+ terminals.addElement(this);
+ this.index = terminals.indexOf(this);
+ }
+ else
+ {
+ nonterminals.addElement(this);
+ this.index = nonterminals.indexOf(this);
+ }
+
+ this.name = name;
+ this.errorName = errorName;
+ this.terminal = terminal;
+ names.put(name, this);
+ modified_ = true;
+ }
+
+ public static void reinit()
+ {
+ terminals = new Vector();
+ nonterminals = new Vector();
+ names = new TreeMap(StringComparator.instance);
+ modified_ = true;
+ symbols_ = null;
+ terminals_ = null;
+ nonterminals_ = null;
+ }
+
+ static Symbol symbol(String name)
+ {
+ return (Symbol) names.get(name);
+ }
+
+ static Symbol symbol(int index, boolean terminal)
+ {
+ if(terminal)
+ {
+ return (Symbol) terminals.elementAt(index);
+ }
+ else
+ {
+ return (Symbol) nonterminals.elementAt(index);
+ }
+ }
+
+ private static void computeArrays()
+ {
+ symbols_ = new Symbol[terminals.size() + nonterminals.size()];
+ terminals_ = new Symbol[terminals.size()];
+ nonterminals_ = new Symbol[nonterminals.size()];
+
+ terminals.copyInto(terminals_);
+ nonterminals.copyInto(nonterminals_);
+ System.arraycopy(terminals_, 0, symbols_, 0, terminals_.length);
+ System.arraycopy(nonterminals_, 0, symbols_, terminals_.length, nonterminals_.length);
+
+ modified_ = false;
+ }
+
+ static Symbol[] symbols()
+ {
+ if(modified_)
+ {
+ computeArrays();
+ }
+
+ return symbols_;
+ }
+
+ static Symbol[] terminals()
+ {
+ if(modified_)
+ {
+ computeArrays();
+ }
+
+ return terminals_;
+ }
+
+ static Symbol[] nonterminals()
+ {
+ if(modified_)
+ {
+ computeArrays();
+ }
+
+ return nonterminals_;
+ }
+
+ public String toString()
+ {
+ return name;
+ }
+
+ public int compareTo(Object object)
+ {
+ Symbol symbol = (Symbol) object;
+
+ if(terminal ^ symbol.terminal)
+ {
+ if(terminal)
+ {
+ return 1;
+ }
+
+ return -1;
+ }
+
+ return index - symbol.index;
+ }
+}
+
+
Added: sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/SymbolSet.java
===================================================================
--- sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/SymbolSet.java (rev 0)
+++ sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/SymbolSet.java 2012-07-12 16:49:25 UTC (rev 248)
@@ -0,0 +1,207 @@
+/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+ * This file is part of SableCC. *
+ * See the file "LICENSE" for copyright information and the *
+ * terms and conditions for copying, distribution and *
+ * modification of SableCC. *
+ * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
+
+package org.sablecc.sablecc;
+
+import java.util.*;
+import java.util.Vector;
+
+final class SymbolSet implements Cloneable
+{
+ private final IntSet terminals;
+ private final IntSet nonterminals;
+ private boolean empty;
+
+ private boolean modified = true;
+ private Symbol[] symbols;
+
+ private void computeArray()
+ {
+ Vector symbols = new Vector(0);
+
+ int[] elements = terminals.elements();
+ for(int i = 0; i < elements.length; i++)
+ {
+ symbols.addElement(Symbol.symbol(elements[i], true));
+ }
+
+ elements = nonterminals.elements();
+ for(int i = 0; i < elements.length; i++)
+ {
+ symbols.addElement(Symbol.symbol(elements[i], false));
+ }
+
+ this.symbols = new Symbol[symbols.size()];
+ symbols.copyInto(this.symbols);
+
+ modified = false;
+ }
+
+ SymbolSet()
+ {
+ this.terminals = new IntSet();
+ this.nonterminals= new IntSet();
+ }
+
+ private SymbolSet(SymbolSet set)
+ {
+ this.terminals = (IntSet) set.terminals.clone();
+ this.nonterminals = (IntSet) set.nonterminals.clone();
+ this.empty = set.empty;
+ }
+
+ void setTerminal(int terminal)
+ {
+ terminals.set(terminal);
+ modified = true;
+ }
+
+ void clearTerminal(int terminal)
+ {
+ terminals.clear(terminal);
+ modified = true;
+ }
+
+ boolean getTerminal(int terminal)
+ {
+ return terminals.get(terminal);
+ }
+
+ void setNonterminal(int nonterminal)
+ {
+ nonterminals.set(nonterminal);
+ modified = true;
+ }
+
+ void clearNonterminal(int nonterminal)
+ {
+ nonterminals.clear(nonterminal);
+ modified = true;
+ }
+
+ boolean getNonterminal(int nonterminal)
+ {
+ return nonterminals.get(nonterminal);
+ }
+
+ void setEmpty()
+ {
+ empty = true;
+ modified = true;
+ }
+
+ void clearEmpty()
+ {
+ empty = false;
+ modified = true;
+ }
+
+ boolean getEmpty()
+ {
+ return empty;
+ }
+
+ void and(SymbolSet s)
+ {
+ terminals.and(s.terminals);
+ nonterminals.and(s.nonterminals);
+ empty &= s.empty;
+ modified = true;
+ }
+
+ void or(SymbolSet s)
+ {
+ terminals.or(s.terminals);
+ nonterminals.or(s.nonterminals);
+ empty |= s.empty;
+ modified = true;
+ }
+
+ void xor(SymbolSet s)
+ {
+ terminals.xor(s.terminals);
+ nonterminals.xor(s.nonterminals);
+ empty ^= s.empty;
+ modified = true;
+ }
+
+ public int hashCode()
+ {
+ return terminals.hashCode() + nonterminals.hashCode() + new Boolean(empty).hashCode();
+ }
+
+ public boolean equals(Object obj)
+ {
+ if((obj == null) ||
+ (obj.getClass() != this.getClass()))
+ {
+ return false;
+ }
+
+ SymbolSet s = (SymbolSet) obj;
+
+ return terminals.equals(s.terminals) &&
+ nonterminals.equals(s.nonterminals) &&
+ (empty == s.empty);
+ }
+
+ Symbol[] getSymbols()
+ {
+ if(modified)
+ {
+ computeArray();
+ }
+
+ return symbols;
+ }
+
+ public String toString()
+ {
+ StringBuffer result = new StringBuffer();
+ result.append("{");
+
+ Symbol[] symbols = getSymbols();
+ boolean comma = false;
+ for(int i = 0; i < symbols.length; i++)
+ {
+ if(comma)
+ {
+ result.append(",");
+ }
+ else
+ {
+ comma = true;
+ }
+
+ result.append(symbols[i]);
+ }
+
+ if(empty)
+ {
+ if(comma)
+ {
+ result.append(",");
+ }
+ else
+ {
+ comma = true;
+ }
+
+ result.append("*empty*");
+ }
+
+ result.append("}");
+
+ return result.toString();
+ }
+
+ public Object clone()
+ {
+ return new SymbolSet(this);
+ }
+}
+
Added: sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/Transitions.java
===================================================================
--- sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/Transitions.java (rev 0)
+++ sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/Transitions.java 2012-07-12 16:49:25 UTC (rev 248)
@@ -0,0 +1,77 @@
+/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+ * This file is part of SableCC. *
+ * See the file "LICENSE" for copyright information and the *
+ * terms and conditions for copying, distribution and *
+ * modification of SableCC. *
+ * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
+
+package org.sablecc.sablecc;
+
+import org.sablecc.sablecc.analysis.*;
+import org.sablecc.sablecc.node.*;
+import java.util.*;
+
+public class Transitions extends DepthFirstAdapter
+{
+ public final Map tokenStates = new TypedTreeMap(
+ NodeComparator.instance,
+ NodeCast.instance,
+ NoCast.instance);
+
+ private String state;
+ private String transition;
+ private Map map;
+
+ public void caseStateList1(StateList1 node)
+ {
+ inStateList1(node);
+
+ node.getNode1().apply(this);
+ node.getNode2().apply(this);
+ node.getNode3().apply(this);
+
+ outStateList1(node); // We moved this...
+
+ node.getNode4().apply(this);
+ node.getNode5().apply(this);
+
+ }
+
+ public void inTokenDef1(TokenDef1 node)
+ {
+ map = new TypedTreeMap(
+ StringComparator.instance,
+ StringCast.instance,
+ StringCast.instance);
+ }
+
+ public void inStateList1(StateList1 node)
+ {
+ state = transition = node.getNode2().getText().toUpperCase();
+ }
+
+ public void inStateListTail1(StateListTail1 node)
+ {
+ state = transition = node.getNode2().getText().toUpperCase();
+ }
+
+ public void outTransition1(Transition1 node)
+ {
+ transition = node.getNode2().getText().toUpperCase();
+ }
+
+ public void outStateList1(StateList1 node)
+ {
+ map.put(state, transition);
+ }
+
+ public void outStateListTail1(StateListTail1 node)
+ {
+ map.put(state, transition);
+ }
+
+ public void outTokenDef1(TokenDef1 node)
+ {
+ tokenStates.put(node, map);
+ }
+}
Added: sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/TypedLinkedList.java
===================================================================
--- sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/TypedLinkedList.java (rev 0)
+++ sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/TypedLinkedList.java 2012-07-12 16:49:25 UTC (rev 248)
@@ -0,0 +1,118 @@
+/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+ * This file is part of SableCC. *
+ * See the file "LICENSE" for copyright information and the *
+ * terms and conditions for copying, distribution and *
+ * modification of SableCC. *
+ * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
+
+package org.sablecc.sablecc;
+
+import java.util.*;
+
+public class TypedLinkedList extends LinkedList
+{
+ Cast cast;
+
+ public TypedLinkedList()
+ {
+ super();
+
+ cast = NoCast.instance;
+ }
+
+ public TypedLinkedList(Collection c)
+ {
+ super(c);
+
+ cast = NoCast.instance;
+ }
+
+ public TypedLinkedList(Cast cast)
+ {
+ super();
+
+ this.cast = cast;
+ }
+
+ public TypedLinkedList(Collection c, Cast cast)
+ {
+ super(c);
+
+ this.cast = cast;
+ }
+
+ public Cast getCast()
+ {
+ return cast;
+ }
+
+ public void addFirst(Object o)
+ {
+ super.addFirst(cast.cast(o));
+ }
+
+ public void addLast(Object o)
+ {
+ super.addLast(cast.cast(o));
+ }
+
+ public ListIterator listIterator(int index)
+ {
+ return new TypedLinkedListIterator(super.listIterator(index));
+ }
+
+ private class TypedLinkedListIterator implements ListIterator
+ {
+ ListIterator iterator;
+
+ TypedLinkedListIterator(ListIterator iterator)
+ {
+ this.iterator = iterator;
+ }
+
+ public boolean hasNext()
+ {
+ return iterator.hasNext();
+ }
+
+ public Object next()
+ {
+ return iterator.next();
+ }
+
+ public boolean hasPrevious()
+ {
+ return iterator.hasPrevious();
+ }
+
+ public Object previous()
+ {
+ return iterator.previous();
+ }
+
+ public int nextIndex()
+ {
+ return iterator.nextIndex();
+ }
+
+ public int previousIndex()
+ {
+ return iterator.previousIndex();
+ }
+
+ public void remove()
+ {
+ iterator.remove();
+ }
+
+ public void set(Object o)
+ {
+ iterator.set(cast.cast(o));
+ }
+
+ public void add(Object o)
+ {
+ iterator.add(cast.cast(o));
+ }
+ }
+}
Added: sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/TypedTreeMap.java
===================================================================
--- sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/TypedTreeMap.java (rev 0)
+++ sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/TypedTreeMap.java 2012-07-12 16:49:25 UTC (rev 248)
@@ -0,0 +1,181 @@
+/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+ * This file is part of SableCC. *
+ * See the file "LICENSE" for copyright information and the *
+ * terms and conditions for copying, distribution and *
+ * modification of SableCC. *
+ * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
+
+package org.sablecc.sablecc;
+
+import java.util.*;
+
+public class TypedTreeMap extends TreeMap
+{
+ private Cast keyCast;
+ private Cast valueCast;
+ private Set entries;
+
+ public TypedTreeMap()
+ {
+ super();
+
+ keyCast = NoCast.instance;
+ valueCast = NoCast.instance;
+ }
+
+ public TypedTreeMap(Comparator comparator)
+ {
+ super(comparator);
+
+ keyCast = NoCast.instance;
+ valueCast = NoCast.instance;
+ }
+
+ public TypedTreeMap(Map map)
+ {
+ super(map);
+
+ keyCast = NoCast.instance;
+ valueCast = NoCast.instance;
+ }
+
+ public TypedTreeMap(SortedMap smap)
+ {
+ super(smap);
+
+ keyCast = NoCast.instance;
+ valueCast = NoCast.instance;
+ }
+
+ public TypedTreeMap(Cast keyCast, Cast valueCast)
+ {
+ super();
+
+ this.keyCast = keyCast;
+ this.valueCast = valueCast;
+ }
+
+ public TypedTreeMap(Comparator comparator, Cast keyCast, Cast valueCast)
+ {
+ super(comparator);
+
+ this.keyCast = keyCast;
+ this.valueCast = valueCast;
+ }
+
+ public Object clone()
+ {
+ return new TypedTreeMap(this, keyCast, valueCast);
+ }
+
+ public TypedTreeMap(Map map, Cast keyCast, Cast valueCast)
+ {
+ super(map);
+
+ this.keyCast = keyCast;
+ this.valueCast = valueCast;
+ }
+
+ public TypedTreeMap(SortedMap smap, Cast keyCast, Cast valueCast)
+ {
+ super(smap);
+
+ this.keyCast = keyCast;
+ this.valueCast = valueCast;
+ }
+
+ public Cast getKeyCast()
+ {
+ return keyCast;
+ }
+
+ public Cast getValueCast()
+ {
+ return valueCast;
+ }
+
+ public Set entrySet()
+ {
+ if(entries == null)
+ {
+ entries = new EntrySet(super.entrySet());
+ }
+
+ return entries;
+ }
+
+ public Object put(Object key, Object value)
+ {
+ return super.put(keyCast.cast(key), valueCast.cast(value));
+ }
+
+ private class EntrySet extends AbstractSet
+ {
+ private Set set;
+
+ EntrySet(Set set)
+ {
+ this.set = set;
+ }
+
+ public int size()
+ {
+ return set.size();
+ }
+
+ public Iterator iterator()
+ {
+ return new EntryIterator(set.iterator());
+ }
+ }
+
+ private class EntryIterator implements Iterator
+ {
+ private Iterator iterator;
+
+ EntryIterator(Iterator iterator)
+ {
+ this.iterator = iterator;
+ }
+
+ public boolean hasNext()
+ {
+ return iterator.hasNext();
+ }
+
+ public Object next()
+ {
+ return new TypedEntry((Map.Entry) iterator.next());
+ }
+
+ public void remove()
+ {
+ iterator.remove();
+ }
+ }
+
+ private class TypedEntry implements Map.Entry
+ {
+ private Map.Entry entry;
+
+ TypedEntry(Map.Entry entry)
+ {
+ this.entry = entry;
+ }
+
+ public Object getKey()
+ {
+ return entry.getKey();
+ }
+
+ public Object getValue()
+ {
+ return entry.getValue();
+ }
+
+ public Object setValue(Object value)
+ {
+ return entry.setValue(valueCast.cast(value));
+ }
+ }
+}
Added: sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/Version.java
===================================================================
--- sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/Version.java (rev 0)
+++ sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/Version.java 2012-07-12 16:49:25 UTC (rev 248)
@@ -0,0 +1,6 @@
+package org.sablecc.sablecc;
+
+public class Version
+{
+ public static final String VERSION = "2.16.2";
+}
Added: sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/alternatives.txt
===================================================================
--- sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/alternatives.txt (rev 0)
+++ sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/alternatives.txt 2012-07-12 16:49:25 UTC (rev 248)
@@ -0,0 +1,312 @@
+/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+ * This file is part of SableCC. *
+ * See the file "LICENSE" for copyright information and the *
+ * terms and conditions for copying, distribution and *
+ * modification of SableCC. *
+ * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
+
+Macro:AlternativeHeader
+/* This file was generated by SableCC (http://www.sablecc.org/). */
+
+package $0$;
+
+import java.util.*;
+import $1$.*;
+
+public final class $2$ extends $3$
+{
+
+$
+
+Macro:NodeElement
+ private $0$ _$1$_;
+
+$
+
+Macro:ListElement
+ private final LinkedList _$1$_ = new TypedLinkedList(new $0$_Cast());
+
+$
+
+Macro:ConstructorHeader
+
+ public $0$(
+$
+
+Macro:ConstructorHeaderDeclNode
+
+ $0$ _$1$_$2$
+$
+
+Macro:ConstructorHeaderDeclList
+
+ $0$ _$1$_$2$
+$
+
+Macro:ConstructorBodyHeader
+)
+ {
+
+$
+
+Macro:ConstructorBodyNode
+ set$0$(_$1$_);
+
+
+$
+
+Macro:ConstructorBodyList
+ {
+ this._$0$_.clear();
+ this._$0$_.addAll(_$0$_);
+ }
+
+
+$
+
+Macro:ConstructorBodyQMark
+ if(_$2$_ instanceof X1QMark$1$)
+ {
+ set$0$(((X1QMark$1$) _$2$_).get$1$());
+ }
+ else
+ {
+ set$0$(null);
+ }
+
+
+$
+
+Macro:ConstructorBodyStar
+ while(_$0$_ instanceof X1Star$1$)
+ {
+ this._$0$_.add(((X1Star$1$) _$0$_).get$1$());
+ _$0$_ = ((X1Star$1$) _$0$_).getXStar$1$();
+ }
+
+
+$
+
+Macro:ConstructorBodyPlus
+ if(_$0$_ != null)
+ {
+ while(_$0$_ instanceof X1$1$)
+ {
+ this._$0$_.addFirst(((X1$1$) _$0$_).get$1$());
+ _$0$_ = ((X1$1$) _$0$_).getX$1$();
+ }
+ this._$0$_.addFirst(((X2$1$) _$0$_).get$1$());
+ }
+
+
+$
+
+Macro:ConstructorBodyTail
+ }
+
+$
+
+Macro:CloneHeader
+ public Object clone()
+ {
+ return new $0$(
+$
+
+Macro:CloneBodyNode
+
+ ($0$) cloneNode(_$1$_)$2$
+$
+
+Macro:CloneBodyList
+
+ cloneList(_$0$_)$1$
+$
+
+Macro:CloneTail
+);
+ }
+
+$
+
+Macro:Apply
+
+ public void apply(Switch sw)
+ {
+ ((Analysis) sw).case$0$(this);
+ }
+
+$
+
+Macro:GetSetNode
+
+ public $0$ get$1$()
+ {
+ return _$2$_;
+ }
+
+ public void set$1$($0$ node)
+ {
+ if(_$2$_ != null)
+ {
+ _$2$_.parent(null);
+ }
+
+ if(node != null)
+ {
+ if(node.parent() != null)
+ {
+ node.parent().removeChild(node);
+ }
+
+ node.parent(this);
+ }
+
+ _$2$_ = node;
+ }
+
+$
+
+Macro:GetSetList
+
+ public LinkedList get$0$()
+ {
+ return _$1$_;
+ }
+
+ public void set$0$(List list)
+ {
+ _$1$_.clear();
+ _$1$_.addAll(list);
+ }
+
+$
+
+Macro:ToStringHeader
+
+ public String toString()
+ {
+ return ""
+$
+
+Macro:ToStringBodyNode
+
+ + toString(_$0$_)
+$
+
+Macro:ToStringBodyList
+
+ + toString(_$0$_)
+$
+
+Macro:ToStringTail
+;
+ }
+
+$
+
+Macro:RemoveChildHeader
+
+ void removeChild(Node child)
+ {
+
+$
+
+Macro:RemoveChildNode
+ if(_$0$_ == child)
+ {
+ _$0$_ = null;
+ return;
+ }
+
+
+$
+
+Macro:RemoveChildList
+ if(_$0$_.remove(child))
+ {
+ return;
+ }
+
+
+$
+
+Macro:RemoveChildTail
+ }
+
+$
+
+Macro:ReplaceChildHeader
+
+ void replaceChild(Node oldChild, Node newChild)
+ {
+
+$
+
+Macro:ReplaceChildNode
+ if(_$0$_ == oldChild)
+ {
+ set$1$(($2$) newChild);
+ return;
+ }
+
+
+$
+
+Macro:ReplaceChildList
+ for(ListIterator i = _$0$_.listIterator(); i.hasNext();)
+ {
+ if(i.next() == oldChild)
+ {
+ if(newChild != null)
+ {
+ i.set(newChild);
+ oldChild.parent(null);
+ return;
+ }
+
+ i.remove();
+ oldChild.parent(null);
+ return;
+ }
+ }
+
+
+$
+
+Macro:ReplaceChildTail
+ }
+
+$
+
+Macro:Cast
+
+ private class $0$_Cast implements Cast
+ {
+ public Object cast(Object o)
+ {
+ $1$ node = ($1$) o;
+
+ if((node.parent() != null) &&
+ (node.parent() != $2$.this))
+ {
+ node.parent().removeChild(node);
+ }
+
+ if((node.parent() == null) ||
+ (node.parent() != $2$.this))
+ {
+ node.parent($2$.this);
+ }
+
+ return node;
+ }
+ }
+
+$
+
+Macro:AlternativeTail
+}
+
+$
+
+
Added: sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/analyses.txt
===================================================================
--- sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/analyses.txt (rev 0)
+++ sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/analyses.txt 2012-07-12 16:49:25 UTC (rev 248)
@@ -0,0 +1,277 @@
+/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+ * This file is part of SableCC. *
+ * See the file "LICENSE" for copyright information and the *
+ * terms and conditions for copying, distribution and *
+ * modification of SableCC. *
+ * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
+
+Macro:AnalysisHeader
+/* This file was generated by SableCC (http://www.sablecc.org/). */
+
+package $0$;
+
+import $1$.*;
+
+public interface Analysis extends Switch
+{
+ Object getIn(Node node);
+ void setIn(Node node, Object in);
+ Object getOut(Node node);
+ void setOut(Node node, Object out);
+
+
+$
+Macro:AnalysisStart
+ void caseStart(Start node);
+
+$
+
+Macro:AnalysisBody
+ void case$0$($0$ node);
+
+$
+
+Macro:AnalysisTail
+ void caseEOF(EOF node);
+}
+
+$
+
+Macro:AnalysisAdapterHeader
+/* This file was generated by SableCC (http://www.sablecc.org/). */
+
+package $0$;
+
+import java.util.*;
+import $1$.*;
+
+public class AnalysisAdapter implements Analysis
+{
+ private Hashtable in;
+ private Hashtable out;
+
+ public Object getIn(Node node)
+ {
+ if(in == null)
+ {
+ return null;
+ }
+
+ return in.get(node);
+ }
+
+ public void setIn(Node node, Object in)
+ {
+ if(this.in == null)
+ {
+ this.in = new Hashtable(1);
+ }
+
+ if(in != null)
+ {
+ this.in.put(node, in);
+ }
+ else
+ {
+ this.in.remove(node);
+ }
+ }
+
+ public Object getOut(Node node)
+ {
+ if(out == null)
+ {
+ return null;
+ }
+
+ return out.get(node);
+ }
+
+ public void setOut(Node node, Object out)
+ {
+ if(this.out == null)
+ {
+ this.out = new Hashtable(1);
+ }
+
+ if(out != null)
+ {
+ this.out.put(node, out);
+ }
+ else
+ {
+ this.out.remove(node);
+ }
+ }
+
+$
+
+Macro:AnalysisAdapterStart
+ public void caseStart(Start node)
+ {
+ defaultCase(node);
+ }
+
+$
+
+Macro:AnalysisAdapterBody
+
+ public void case$0$($0$ node)
+ {
+ defaultCase(node);
+ }
+
+$
+
+Macro:AnalysisAdapterTail
+
+ public void caseEOF(EOF node)
+ {
+ defaultCase(node);
+ }
+
+ public void defaultCase(Node node)
+ {
+ }
+}
+
+$
+
+Macro:DepthFirstAdapterHeader
+/* This file was generated by SableCC (http://www.sablecc.org/). */
+
+package $0$;
+
+import java.util.*;
+import $1$.*;
+
+public class DepthFirstAdapter extends AnalysisAdapter
+{
+ public void inStart(Start node)
+ {
+ defaultIn(node);
+ }
+
+ public void outStart(Start node)
+ {
+ defaultOut(node);
+ }
+
+ public void defaultIn(Node node)
+ {
+ }
+
+ public void defaultOut(Node node)
+ {
+ }
+
+ public void caseStart(Start node)
+ {
+ inStart(node);
+ node.get$2$().apply(this);
+ node.getEOF().apply(this);
+ outStart(node);
+ }
+
+$
+
+Macro:ReversedDepthFirstAdapterHeader
+/* This file was generated by SableCC (http://www.sablecc.org/). */
+
+package $0$;
+
+import $1$.*;
+
+public class ReversedDepthFirstAdapter extends AnalysisAdapter
+{
+ public void inStart(Start node)
+ {
+ defaultIn(node);
+ }
+
+ public void outStart(Start node)
+ {
+ defaultOut(node);
+ }
+
+ public void defaultIn(Node node)
+ {
+ }
+
+ public void defaultOut(Node node)
+ {
+ }
+
+ public void caseStart(Start node)
+ {
+ inStart(node);
+ node.getEOF().apply(this);
+ node.get$2$().apply(this);
+ outStart(node);
+ }
+
+$
+
+Macro:DepthFirstAdapterInOut
+
+ public void in$0$($0$ node)
+ {
+ defaultIn(node);
+ }
+
+ public void out$0$($0$ node)
+ {
+ defaultOut(node);
+ }
+
+$
+
+Macro:DepthFirstAdapterCaseHeader
+
+ public void case$0$($0$ node)
+ {
+ in$0$(node);
+
+$
+
+Macro:DepthFirstAdapterCaseBodyNode
+ if(node.get$0$() != null)
+ {
+ node.get$0$().apply(this);
+ }
+
+$
+
+Macro:DepthFirstAdapterCaseBodyList
+ {
+ Object temp[] = node.get$0$().toArray();
+ for(int i = 0; i < temp.length; i++)
+ {
+ (($1$) temp[i]).apply(this);
+ }
+ }
+
+$
+
+Macro:ReversedDepthFirstAdapterCaseBodyList
+ {
+ Object temp[] = node.get$0$().toArray();
+ for(int i = temp.length - 1; i >= 0; i--)
+ {
+ (($1$) temp[i]).apply(this);
+ }
+ }
+
+$
+
+Macro:DepthFirstAdapterCaseTail
+ out$0$(node);
+ }
+
+$
+
+Macro:DepthFirstAdapterTail
+}
+
+$
+
Added: sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/analysis/Analysis.java
===================================================================
--- sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/analysis/Analysis.java (rev 0)
+++ sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/analysis/Analysis.java 2012-07-12 16:49:25 UTC (rev 248)
@@ -0,0 +1,162 @@
+/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+ * This file is part of SableCC. *
+ * See the file "LICENSE" for copyright information and the *
+ * terms and conditions for copying, distribution and *
+ * modification of SableCC. *
+ * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
+
+package org.sablecc.sablecc.analysis;
+
+import org.sablecc.sablecc.Switch;
+import org.sablecc.sablecc.node.*;
+
+public interface Analysis extends Switch
+{
+ Object getIn(Node node);
+ void setIn(Node node, Object in);
+ Object getOut(Node node);
+ void setOut(Node node, Object out);
+
+ void caseGrammar1(Grammar1 node);
+ void casePackageOpt1(PackageOpt1 node);
+ void casePackageOpt2(PackageOpt2 node);
+ void casePackage1(Package1 node);
+ void casePkgNameOpt1(PkgNameOpt1 node);
+ void casePkgName1(PkgName1 node);
+ void casePkgNameTails1(PkgNameTails1 node);
+ void casePkgNameTails2(PkgNameTails2 node);
+ void casePkgNameTail1(PkgNameTail1 node);
+ void casePkgId1(PkgId1 node);
+ void casePkgId2(PkgId2 node);
+ void casePkgId3(PkgId3 node);
+ void casePkgId4(PkgId4 node);
+ void casePkgId5(PkgId5 node);
+ void casePkgId6(PkgId6 node);
+ void casePkgId7(PkgId7 node);
+ void casePkgId8(PkgId8 node);
+ void casePkgId9(PkgId9 node);
+ void casePkgId10(PkgId10 node);
+ void caseHelpersOpt1(HelpersOpt1 node);
+ void caseHelpersOpt2(HelpersOpt2 node);
+ void caseHelpers1(Helpers1 node);
+ void caseHelperDefs1(HelperDefs1 node);
+ void caseHelperDefs2(HelperDefs2 node);
+ void caseHelperDef1(HelperDef1 node);
+ void caseStatesOpt1(StatesOpt1 node);
+ void caseStatesOpt2(StatesOpt2 node);
+ void caseStates1(States1 node);
+ void caseIdListOpt1(IdListOpt1 node);
+ void caseIdList1(IdList1 node);
+ void caseIdListTails1(IdListTails1 node);
+ void caseIdListTails2(IdListTails2 node);
+ void caseIdListTail1(IdListTail1 node);
+ void caseTokensOpt1(TokensOpt1 node);
+ void caseTokensOpt2(TokensOpt2 node);
+ void caseTokens1(Tokens1 node);
+ void caseTokenDefs1(TokenDefs1 node);
+ void caseTokenDefs2(TokenDefs2 node);
+ void caseTokenDef1(TokenDef1 node);
+ void caseStateListOpt1(StateListOpt1 node);
+ void caseStateListOpt2(StateListOpt2 node);
+ void caseStateList1(StateList1 node);
+ void caseStateListTails1(StateListTails1 node);
+ void caseStateListTails2(StateListTails2 node);
+ void caseStateListTail1(StateListTail1 node);
+ void caseTransitionOpt1(TransitionOpt1 node);
+ void caseTransitionOpt2(TransitionOpt2 node);
+ void caseTransition1(Transition1 node);
+ void caseIgnTokensOpt1(IgnTokensOpt1 node);
+ void caseIgnTokensOpt2(IgnTokensOpt2 node);
+ void caseIgnTokens1(IgnTokens1 node);
+ void caseLookAheadOpt1(LookAheadOpt1 node);
+ void caseLookAheadOpt2(LookAheadOpt2 node);
+ void caseLookAhead1(LookAhead1 node);
+ void caseRegExp1(RegExp1 node);
+ void caseRegExpTails1(RegExpTails1 node);
+ void caseRegExpTails2(RegExpTails2 node);
+ void caseRegExpTail1(RegExpTail1 node);
+ void caseConcat1(Concat1 node);
+ void caseUnExps1(UnExps1 node);
+ void caseUnExps2(UnExps2 node);
+ void caseUnExp1(UnExp1 node);
+ void caseBasic1(Basic1 node);
+ void caseBasic2(Basic2 node);
+ void caseBasic3(Basic3 node);
+ void caseBasic4(Basic4 node);
+ void caseBasic5(Basic5 node);
+ void casePChar1(PChar1 node);
+ void casePChar2(PChar2 node);
+ void casePChar3(PChar3 node);
+ void casePSet1(PSet1 node);
+ void casePSet2(PSet2 node);
+ void caseUnOpOpt1(UnOpOpt1 node);
+ void caseUnOpOpt2(UnOpOpt2 node);
+ void caseUnOp1(UnOp1 node);
+ void caseUnOp2(UnOp2 node);
+ void caseUnOp3(UnOp3 node);
+ void caseBinOp1(BinOp1 node);
+ void caseBinOp2(BinOp2 node);
+ void caseProductionsOpt1(ProductionsOpt1 node);
+ void caseProductionsOpt2(ProductionsOpt2 node);
+ void caseProductions1(Productions1 node);
+ void caseProds1(Prods1 node);
+ void caseProds2(Prods2 node);
+ void caseProd1(Prod1 node);
+ void caseAlts1(Alts1 node);
+ void caseAltsTails1(AltsTails1 node);
+ void caseAltsTails2(AltsTails2 node);
+ void caseAltsTail1(AltsTail1 node);
+ void caseAlt1(Alt1 node);
+ void caseAlt2(Alt2 node);
+ void caseAltNameOpt1(AltNameOpt1 node);
+ void caseAltNameOpt2(AltNameOpt2 node);
+ void caseAltName1(AltName1 node);
+ void caseElems1(Elems1 node);
+ void caseElems2(Elems2 node);
+ void caseElem1(Elem1 node);
+ void caseElemNameOpt1(ElemNameOpt1 node);
+ void caseElemNameOpt2(ElemNameOpt2 node);
+ void caseElemName1(ElemName1 node);
+ void caseSpecifierOpt1(SpecifierOpt1 node);
+ void caseSpecifierOpt2(SpecifierOpt2 node);
+ void caseSpecifier1(Specifier1 node);
+ void caseSpecifier2(Specifier2 node);
+ void caseStart1(Start1 node);
+ void caseTPackage(TPackage node);
+ void caseTStates(TStates node);
+ void caseTHelpers(THelpers node);
+ void caseTTokens(TTokens node);
+ void caseTIgnored(TIgnored node);
+ void caseTProductions(TProductions node);
+ void caseTTokenSpecifier(TTokenSpecifier node);
+ void caseTProductionSpecifier(TProductionSpecifier node);
+ void caseTDot(TDot node);
+ void caseTDDot(TDDot node);
+ void caseTSemicolon(TSemicolon node);
+ void caseTEqual(TEqual node);
+ void caseTLBkt(TLBkt node);
+ void caseTRBkt(TRBkt node);
+ void caseTLPar(TLPar node);
+ void caseTRPar(TRPar node);
+ void caseTLBrace(TLBrace node);
+ void caseTRBrace(TRBrace node);
+ void caseTPlus(TPlus node);
+ void caseTMinus(TMinus node);
+ void caseTQMark(TQMark node);
+ void caseTStar(TStar node);
+ void caseTBar(TBar node);
+ void caseTComma(TComma node);
+ void caseTSlash(TSlash node);
+ void caseTArrow(TArrow node);
+ void caseTColon(TColon node);
+ void caseTId(TId node);
+ void caseTChar(TChar node);
+ void caseTDecChar(TDecChar node);
+ void caseTHexChar(THexChar node);
+ void caseTString(TString node);
+ void caseTPkgId(TPkgId node);
+ void caseTBlank(TBlank node);
+ void caseTComment(TComment node);
+ void caseEOF(EOF node);
+}
+
Added: sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/analysis/AnalysisAdapter.java
===================================================================
--- sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/analysis/AnalysisAdapter.java (rev 0)
+++ sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/analysis/AnalysisAdapter.java 2012-07-12 16:49:25 UTC (rev 248)
@@ -0,0 +1,789 @@
+/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+ * This file is part of SableCC. *
+ * See the file "LICENSE" for copyright information and the *
+ * terms and conditions for copying, distribution and *
+ * modification of SableCC. *
+ * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
+
+package org.sablecc.sablecc.analysis;
+
+import org.sablecc.sablecc.node.*;
+import java.util.*;
+import org.sablecc.sablecc.*;
+
+public class AnalysisAdapter implements Analysis
+{
+ private Map in;
+ private Map out;
+
+ public Object getIn(Node node)
+ {
+ if(in == null)
+ {
+ return null;
+ }
+
+ return in.get(node);
+ }
+
+ public void setIn(Node node, Object in)
+ {
+ if(this.in == null)
+ {
+ this.in = new TypedTreeMap(
+ NodeComparator.instance,
+ NodeCast.instance,
+ NoCast.instance);
+ }
+
+ if(in != null)
+ {
+ this.in.put(node, in);
+ }
+ else
+ {
+ this.in.remove(node);
+ }
+ }
+
+ public Object getOut(Node node)
+ {
+ if(out == null)
+ {
+ return null;
+ }
+
+ return out.get(node);
+ }
+
+ public void setOut(Node node, Object out)
+ {
+ if(this.out == null)
+ {
+ this.out = new TypedTreeMap(
+ NodeComparator.instance,
+ NodeCast.instance,
+ NoCast.instance);
+ }
+
+ if(out != null)
+ {
+ this.out.put(node, out);
+ }
+ else
+ {
+ this.out.remove(node);
+ }
+ }
+
+ public void defaultCase(Node node)
+ {
+ }
+
+ public void caseGrammar1(Grammar1 node)
+ {
+ defaultCase(node);
+ }
+
+ public void casePackageOpt1(PackageOpt1 node)
+ {
+ defaultCase(node);
+ }
+
+ public void casePackageOpt2(PackageOpt2 node)
+ {
+ defaultCase(node);
+ }
+
+ public void casePackage1(Package1 node)
+ {
+ defaultCase(node);
+ }
+
+ public void casePkgNameOpt1(PkgNameOpt1 node)
+ {
+ defaultCase(node);
+ }
+
+ public void casePkgName1(PkgName1 node)
+ {
+ defaultCase(node);
+ }
+
+ public void casePkgNameTails1(PkgNameTails1 node)
+ {
+ defaultCase(node);
+ }
+
+ public void casePkgNameTails2(PkgNameTails2 node)
+ {
+ defaultCase(node);
+ }
+
+ public void casePkgNameTail1(PkgNameTail1 node)
+ {
+ defaultCase(node);
+ }
+
+ public void casePkgId1(PkgId1 node)
+ {
+ defaultCase(node);
+ }
+
+ public void casePkgId2(PkgId2 node)
+ {
+ defaultCase(node);
+ }
+
+ public void casePkgId3(PkgId3 node)
+ {
+ defaultCase(node);
+ }
+
+ public void casePkgId4(PkgId4 node)
+ {
+ defaultCase(node);
+ }
+
+ public void casePkgId5(PkgId5 node)
+ {
+ defaultCase(node);
+ }
+
+ public void casePkgId6(PkgId6 node)
+ {
+ defaultCase(node);
+ }
+
+ public void casePkgId7(PkgId7 node)
+ {
+ defaultCase(node);
+ }
+
+ public void casePkgId8(PkgId8 node)
+ {
+ defaultCase(node);
+ }
+
+ public void casePkgId9(PkgId9 node)
+ {
+ defaultCase(node);
+ }
+
+ public void casePkgId10(PkgId10 node)
+ {
+ defaultCase(node);
+ }
+
+ public void caseHelpersOpt1(HelpersOpt1 node)
+ {
+ defaultCase(node);
+ }
+
+ public void caseHelpersOpt2(HelpersOpt2 node)
+ {
+ defaultCase(node);
+ }
+
+ public void caseHelpers1(Helpers1 node)
+ {
+ defaultCase(node);
+ }
+
+ public void caseHelperDefs1(HelperDefs1 node)
+ {
+ defaultCase(node);
+ }
+
+ public void caseHelperDefs2(HelperDefs2 node)
+ {
+ defaultCase(node);
+ }
+
+ public void caseHelperDef1(HelperDef1 node)
+ {
+ defaultCase(node);
+ }
+
+ public void caseStatesOpt1(StatesOpt1 node)
+ {
+ defaultCase(node);
+ }
+
+ public void caseStatesOpt2(StatesOpt2 node)
+ {
+ defaultCase(node);
+ }
+
+ public void caseStates1(States1 node)
+ {
+ defaultCase(node);
+ }
+
+ public void caseIdListOpt1(IdListOpt1 node)
+ {
+ defaultCase(node);
+ }
+
+ public void caseIdList1(IdList1 node)
+ {
+ defaultCase(node);
+ }
+
+ public void caseIdListTails1(IdListTails1 node)
+ {
+ defaultCase(node);
+ }
+
+ public void caseIdListTails2(IdListTails2 node)
+ {
+ defaultCase(node);
+ }
+
+ public void caseIdListTail1(IdListTail1 node)
+ {
+ defaultCase(node);
+ }
+
+ public void caseTokensOpt1(TokensOpt1 node)
+ {
+ defaultCase(node);
+ }
+
+ public void caseTokensOpt2(TokensOpt2 node)
+ {
+ defaultCase(node);
+ }
+
+ public void caseTokens1(Tokens1 node)
+ {
+ defaultCase(node);
+ }
+
+ public void caseTokenDefs1(TokenDefs1 node)
+ {
+ defaultCase(node);
+ }
+
+ public void caseTokenDefs2(TokenDefs2 node)
+ {
+ defaultCase(node);
+ }
+
+ public void caseTokenDef1(TokenDef1 node)
+ {
+ defaultCase(node);
+ }
+
+ public void caseStateListOpt1(StateListOpt1 node)
+ {
+ defaultCase(node);
+ }
+
+ public void caseStateListOpt2(StateListOpt2 node)
+ {
+ defaultCase(node);
+ }
+
+ public void caseStateList1(StateList1 node)
+ {
+ defaultCase(node);
+ }
+
+ public void caseStateListTails1(StateListTails1 node)
+ {
+ defaultCase(node);
+ }
+
+ public void caseStateListTails2(StateListTails2 node)
+ {
+ defaultCase(node);
+ }
+
+ public void caseStateListTail1(StateListTail1 node)
+ {
+ defaultCase(node);
+ }
+
+ public void caseTransitionOpt1(TransitionOpt1 node)
+ {
+ defaultCase(node);
+ }
+
+ public void caseTransitionOpt2(TransitionOpt2 node)
+ {
+ defaultCase(node);
+ }
+
+ public void caseTransition1(Transition1 node)
+ {
+ defaultCase(node);
+ }
+
+ public void caseIgnTokensOpt1(IgnTokensOpt1 node)
+ {
+ defaultCase(node);
+ }
+
+ public void caseIgnTokensOpt2(IgnTokensOpt2 node)
+ {
+ defaultCase(node);
+ }
+
+ public void caseIgnTokens1(IgnTokens1 node)
+ {
+ defaultCase(node);
+ }
+
+ public void caseLookAheadOpt1(LookAheadOpt1 node)
+ {
+ defaultCase(node);
+ }
+
+ public void caseLookAheadOpt2(LookAheadOpt2 node)
+ {
+ defaultCase(node);
+ }
+
+ public void caseLookAhead1(LookAhead1 node)
+ {
+ defaultCase(node);
+ }
+
+ public void caseRegExp1(RegExp1 node)
+ {
+ defaultCase(node);
+ }
+
+ public void caseRegExpTails1(RegExpTails1 node)
+ {
+ defaultCase(node);
+ }
+
+ public void caseRegExpTails2(RegExpTails2 node)
+ {
+ defaultCase(node);
+ }
+
+ public void caseRegExpTail1(RegExpTail1 node)
+ {
+ defaultCase(node);
+ }
+
+ public void caseConcat1(Concat1 node)
+ {
+ defaultCase(node);
+ }
+
+ public void caseUnExps1(UnExps1 node)
+ {
+ defaultCase(node);
+ }
+
+ public void caseUnExps2(UnExps2 node)
+ {
+ defaultCase(node);
+ }
+
+ public void caseUnExp1(UnExp1 node)
+ {
+ defaultCase(node);
+ }
+
+ public void caseBasic1(Basic1 node)
+ {
+ defaultCase(node);
+ }
+
+ public void caseBasic2(Basic2 node)
+ {
+ defaultCase(node);
+ }
+
+ public void caseBasic3(Basic3 node)
+ {
+ defaultCase(node);
+ }
+
+ public void caseBasic4(Basic4 node)
+ {
+ defaultCase(node);
+ }
+
+ public void caseBasic5(Basic5 node)
+ {
+ defaultCase(node);
+ }
+
+ public void casePChar1(PChar1 node)
+ {
+ defaultCase(node);
+ }
+
+ public void casePChar2(PChar2 node)
+ {
+ defaultCase(node);
+ }
+
+ public void casePChar3(PChar3 node)
+ {
+ defaultCase(node);
+ }
+
+ public void casePSet1(PSet1 node)
+ {
+ defaultCase(node);
+ }
+
+ public void casePSet2(PSet2 node)
+ {
+ defaultCase(node);
+ }
+
+ public void caseUnOpOpt1(UnOpOpt1 node)
+ {
+ defaultCase(node);
+ }
+
+ public void caseUnOpOpt2(UnOpOpt2 node)
+ {
+ defaultCase(node);
+ }
+
+ public void caseUnOp1(UnOp1 node)
+ {
+ defaultCase(node);
+ }
+
+ public void caseUnOp2(UnOp2 node)
+ {
+ defaultCase(node);
+ }
+
+ public void caseUnOp3(UnOp3 node)
+ {
+ defaultCase(node);
+ }
+
+ public void caseBinOp1(BinOp1 node)
+ {
+ defaultCase(node);
+ }
+
+ public void caseBinOp2(BinOp2 node)
+ {
+ defaultCase(node);
+ }
+
+ public void caseProductionsOpt1(ProductionsOpt1 node)
+ {
+ defaultCase(node);
+ }
+
+ public void caseProductionsOpt2(ProductionsOpt2 node)
+ {
+ defaultCase(node);
+ }
+
+ public void caseProductions1(Productions1 node)
+ {
+ defaultCase(node);
+ }
+
+ public void caseProds1(Prods1 node)
+ {
+ defaultCase(node);
+ }
+
+ public void caseProds2(Prods2 node)
+ {
+ defaultCase(node);
+ }
+
+ public void caseProd1(Prod1 node)
+ {
+ defaultCase(node);
+ }
+
+ public void caseAlts1(Alts1 node)
+ {
+ defaultCase(node);
+ }
+
+ public void caseAltsTails1(AltsTails1 node)
+ {
+ defaultCase(node);
+ }
+
+ public void caseAltsTails2(AltsTails2 node)
+ {
+ defaultCase(node);
+ }
+
+ public void caseAltsTail1(AltsTail1 node)
+ {
+ defaultCase(node);
+ }
+
+ public void caseAlt1(Alt1 node)
+ {
+ defaultCase(node);
+ }
+
+ public void caseAlt2(Alt2 node)
+ {
+ defaultCase(node);
+ }
+
+ public void caseAltNameOpt1(AltNameOpt1 node)
+ {
+ defaultCase(node);
+ }
+
+ public void caseAltNameOpt2(AltNameOpt2 node)
+ {
+ defaultCase(node);
+ }
+
+ public void caseAltName1(AltName1 node)
+ {
+ defaultCase(node);
+ }
+
+ public void caseElems1(Elems1 node)
+ {
+ defaultCase(node);
+ }
+
+ public void caseElems2(Elems2 node)
+ {
+ defaultCase(node);
+ }
+
+ public void caseElem1(Elem1 node)
+ {
+ defaultCase(node);
+ }
+
+ public void caseElemNameOpt1(ElemNameOpt1 node)
+ {
+ defaultCase(node);
+ }
+
+ public void caseElemNameOpt2(ElemNameOpt2 node)
+ {
+ defaultCase(node);
+ }
+
+ public void caseElemName1(ElemName1 node)
+ {
+ defaultCase(node);
+ }
+
+ public void caseSpecifierOpt1(SpecifierOpt1 node)
+ {
+ defaultCase(node);
+ }
+
+ public void caseSpecifierOpt2(SpecifierOpt2 node)
+ {
+ defaultCase(node);
+ }
+
+ public void caseSpecifier1(Specifier1 node)
+ {
+ defaultCase(node);
+ }
+
+ public void caseSpecifier2(Specifier2 node)
+ {
+ defaultCase(node);
+ }
+
+ public void caseStart1(Start1 node)
+ {
+ defaultCase(node);
+ }
+
+ public void caseTPackage(TPackage node)
+ {
+ defaultCase(node);
+ }
+
+ public void caseTStates(TStates node)
+ {
+ defaultCase(node);
+ }
+
+ public void caseTHelpers(THelpers node)
+ {
+ defaultCase(node);
+ }
+
+ public void caseTTokens(TTokens node)
+ {
+ defaultCase(node);
+ }
+
+ public void caseTIgnored(TIgnored node)
+ {
+ defaultCase(node);
+ }
+
+ public void caseTProductions(TProductions node)
+ {
+ defaultCase(node);
+ }
+
+ public void caseTTokenSpecifier(TTokenSpecifier node)
+ {
+ defaultCase(node);
+ }
+
+ public void caseTProductionSpecifier(TProductionSpecifier node)
+ {
+ defaultCase(node);
+ }
+
+ public void caseTDot(TDot node)
+ {
+ defaultCase(node);
+ }
+
+ public void caseTDDot(TDDot node)
+ {
+ defaultCase(node);
+ }
+
+ public void caseTSemicolon(TSemicolon node)
+ {
+ defaultCase(node);
+ }
+
+ public void caseTEqual(TEqual node)
+ {
+ defaultCase(node);
+ }
+
+ public void caseTLBkt(TLBkt node)
+ {
+ defaultCase(node);
+ }
+
+ public void caseTRBkt(TRBkt node)
+ {
+ defaultCase(node);
+ }
+
+ public void caseTLPar(TLPar node)
+ {
+ defaultCase(node);
+ }
+
+ public void caseTRPar(TRPar node)
+ {
+ defaultCase(node);
+ }
+
+ public void caseTLBrace(TLBrace node)
+ {
+ defaultCase(node);
+ }
+
+ public void caseTRBrace(TRBrace node)
+ {
+ defaultCase(node);
+ }
+
+ public void caseTPlus(TPlus node)
+ {
+ defaultCase(node);
+ }
+
+ public void caseTMinus(TMinus node)
+ {
+ defaultCase(node);
+ }
+
+ public void caseTQMark(TQMark node)
+ {
+ defaultCase(node);
+ }
+
+ public void caseTStar(TStar node)
+ {
+ defaultCase(node);
+ }
+
+ public void caseTBar(TBar node)
+ {
+ defaultCase(node);
+ }
+
+ public void caseTComma(TComma node)
+ {
+ defaultCase(node);
+ }
+
+ public void caseTSlash(TSlash node)
+ {
+ defaultCase(node);
+ }
+
+ public void caseTArrow(TArrow node)
+ {
+ defaultCase(node);
+ }
+
+ public void caseTColon(TColon node)
+ {
+ defaultCase(node);
+ }
+
+ public void caseTId(TId node)
+ {
+ defaultCase(node);
+ }
+
+ public void caseTChar(TChar node)
+ {
+ defaultCase(node);
+ }
+
+ public void caseTDecChar(TDecChar node)
+ {
+ defaultCase(node);
+ }
+
+ public void caseTHexChar(THexChar node)
+ {
+ defaultCase(node);
+ }
+
+ public void caseTString(TString node)
+ {
+ defaultCase(node);
+ }
+
+ public void caseTPkgId(TPkgId node)
+ {
+ defaultCase(node);
+ }
+
+ public void caseTBlank(TBlank node)
+ {
+ defaultCase(node);
+ }
+
+ public void caseTComment(TComment node)
+ {
+ defaultCase(node);
+ }
+
+ public void caseEOF(EOF node)
+ {
+ defaultCase(node);
+ }
+
+}
+
Added: sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/analysis/DepthFirstAdapter.java
===================================================================
--- sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/analysis/DepthFirstAdapter.java (rev 0)
+++ sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/analysis/DepthFirstAdapter.java 2012-07-12 16:49:25 UTC (rev 248)
@@ -0,0 +1,1855 @@
+/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+ * This file is part of SableCC. *
+ * See the file "LICENSE" for copyright information and the *
+ * terms and conditions for copying, distribution and *
+ * modification of SableCC. *
+ * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
+
+package org.sablecc.sablecc.analysis;
+
+import org.sablecc.sablecc.node.*;
+
+public class DepthFirstAdapter extends AnalysisAdapter
+{
+ public void inGrammar1(Grammar1 node)
+ {
+ }
+
+ public void outGrammar1(Grammar1 node)
+ {
+ }
+
+ public void caseGrammar1(Grammar1 node)
+ {
+ inGrammar1(node);
+
+ node.getNode1().apply(this);
+ node.getNode2().apply(this);
+ node.getNode3().apply(this);
+ node.getNode4().apply(this);
+ node.getNode5().apply(this);
+ node.getNode6().apply(this);
+
+ outGrammar1(node);
+ }
+
+ public void inPackageOpt1(PackageOpt1 node)
+ {
+ }
+
+ public void outPackageOpt1(PackageOpt1 node)
+ {
+ }
+
+ public void casePackageOpt1(PackageOpt1 node)
+ {
+ inPackageOpt1(node);
+
+ node.getNode1().apply(this);
+
+ outPackageOpt1(node);
+ }
+
+ public void inPackageOpt2(PackageOpt2 node)
+ {
+ }
+
+ public void outPackageOpt2(PackageOpt2 node)
+ {
+ }
+
+ public void casePackageOpt2(PackageOpt2 node)
+ {
+ inPackageOpt2(node);
+
+
+ outPackageOpt2(node);
+ }
+
+ public void inPackage1(Package1 node)
+ {
+ }
+
+ public void outPackage1(Package1 node)
+ {
+ }
+
+ public void casePackage1(Package1 node)
+ {
+ inPackage1(node);
+
+ node.getNode1().apply(this);
+ node.getNode2().apply(this);
+
+ outPackage1(node);
+ }
+
+ public void inPkgNameOpt1(PkgNameOpt1 node)
+ {
+ }
+
+ public void outPkgNameOpt1(PkgNameOpt1 node)
+ {
+ }
+
+ public void casePkgNameOpt1(PkgNameOpt1 node)
+ {
+ inPkgNameOpt1(node);
+
+ node.getNode1().apply(this);
+
+ outPkgNameOpt1(node);
+ }
+
+ public void inPkgName1(PkgName1 node)
+ {
+ }
+
+ public void outPkgName1(PkgName1 node)
+ {
+ }
+
+ public void casePkgName1(PkgName1 node)
+ {
+ inPkgName1(node);
+
+ node.getNode1().apply(this);
+ node.getNode2().apply(this);
+ node.getNode3().apply(this);
+
+ outPkgName1(node);
+ }
+
+ public void inPkgNameTails1(PkgNameTails1 node)
+ {
+ }
+
+ public void outPkgNameTails1(PkgNameTails1 node)
+ {
+ }
+
+ public void casePkgNameTails1(PkgNameTails1 node)
+ {
+ inPkgNameTails1(node);
+
+ node.getNode1().apply(this);
+ node.getNode2().apply(this);
+
+ outPkgNameTails1(node);
+ }
+
+ public void inPkgNameTails2(PkgNameTails2 node)
+ {
+ }
+
+ public void outPkgNameTails2(PkgNameTails2 node)
+ {
+ }
+
+ public void casePkgNameTails2(PkgNameTails2 node)
+ {
+ inPkgNameTails2(node);
+
+
+ outPkgNameTails2(node);
+ }
+
+ public void inPkgNameTail1(PkgNameTail1 node)
+ {
+ }
+
+ public void outPkgNameTail1(PkgNameTail1 node)
+ {
+ }
+
+ public void casePkgNameTail1(PkgNameTail1 node)
+ {
+ inPkgNameTail1(node);
+
+ node.getNode1().apply(this);
+ node.getNode2().apply(this);
+
+ outPkgNameTail1(node);
+ }
+
+ public void inPkgId1(PkgId1 node)
+ {
+ }
+
+ public void outPkgId1(PkgId1 node)
+ {
+ }
+
+ public void casePkgId1(PkgId1 node)
+ {
+ inPkgId1(node);
+
+ node.getNode1().apply(this);
+
+ outPkgId1(node);
+ }
+
+ public void inPkgId2(PkgId2 node)
+ {
+ }
+
+ public void outPkgId2(PkgId2 node)
+ {
+ }
+
+ public void casePkgId2(PkgId2 node)
+ {
+ inPkgId2(node);
+
+ node.getNode1().apply(this);
+
+ outPkgId2(node);
+ }
+
+ public void inPkgId3(PkgId3 node)
+ {
+ }
+
+ public void outPkgId3(PkgId3 node)
+ {
+ }
+
+ public void casePkgId3(PkgId3 node)
+ {
+ inPkgId3(node);
+
+ node.getNode1().apply(this);
+
+ outPkgId3(node);
+ }
+
+ public void inPkgId4(PkgId4 node)
+ {
+ }
+
+ public void outPkgId4(PkgId4 node)
+ {
+ }
+
+ public void casePkgId4(PkgId4 node)
+ {
+ inPkgId4(node);
+
+ node.getNode1().apply(this);
+
+ outPkgId4(node);
+ }
+
+ public void inPkgId5(PkgId5 node)
+ {
+ }
+
+ public void outPkgId5(PkgId5 node)
+ {
+ }
+
+ public void casePkgId5(PkgId5 node)
+ {
+ inPkgId5(node);
+
+ node.getNode1().apply(this);
+
+ outPkgId5(node);
+ }
+
+ public void inPkgId6(PkgId6 node)
+ {
+ }
+
+ public void outPkgId6(PkgId6 node)
+ {
+ }
+
+ public void casePkgId6(PkgId6 node)
+ {
+ inPkgId6(node);
+
+ node.getNode1().apply(this);
+
+ outPkgId6(node);
+ }
+
+ public void inPkgId7(PkgId7 node)
+ {
+ }
+
+ public void outPkgId7(PkgId7 node)
+ {
+ }
+
+ public void casePkgId7(PkgId7 node)
+ {
+ inPkgId7(node);
+
+ node.getNode1().apply(this);
+
+ outPkgId7(node);
+ }
+
+ public void inPkgId8(PkgId8 node)
+ {
+ }
+
+ public void outPkgId8(PkgId8 node)
+ {
+ }
+
+ public void casePkgId8(PkgId8 node)
+ {
+ inPkgId8(node);
+
+ node.getNode1().apply(this);
+
+ outPkgId8(node);
+ }
+
+ public void inPkgId9(PkgId9 node)
+ {
+ }
+
+ public void outPkgId9(PkgId9 node)
+ {
+ }
+
+ public void casePkgId9(PkgId9 node)
+ {
+ inPkgId9(node);
+
+ node.getNode1().apply(this);
+
+ outPkgId9(node);
+ }
+
+ public void inPkgId10(PkgId10 node)
+ {
+ }
+
+ public void outPkgId10(PkgId10 node)
+ {
+ }
+
+ public void casePkgId10(PkgId10 node)
+ {
+ inPkgId10(node);
+
+ node.getNode1().apply(this);
+
+ outPkgId10(node);
+ }
+
+ public void inHelpersOpt1(HelpersOpt1 node)
+ {
+ }
+
+ public void outHelpersOpt1(HelpersOpt1 node)
+ {
+ }
+
+ public void caseHelpersOpt1(HelpersOpt1 node)
+ {
+ inHelpersOpt1(node);
+
+ node.getNode1().apply(this);
+
+ outHelpersOpt1(node);
+ }
+
+ public void inHelpersOpt2(HelpersOpt2 node)
+ {
+ }
+
+ public void outHelpersOpt2(HelpersOpt2 node)
+ {
+ }
+
+ public void caseHelpersOpt2(HelpersOpt2 node)
+ {
+ inHelpersOpt2(node);
+
+
+ outHelpersOpt2(node);
+ }
+
+ public void inHelpers1(Helpers1 node)
+ {
+ }
+
+ public void outHelpers1(Helpers1 node)
+ {
+ }
+
+ public void caseHelpers1(Helpers1 node)
+ {
+ inHelpers1(node);
+
+ node.getNode1().apply(this);
+ node.getNode2().apply(this);
+
+ outHelpers1(node);
+ }
+
+ public void inHelperDefs1(HelperDefs1 node)
+ {
+ }
+
+ public void outHelperDefs1(HelperDefs1 node)
+ {
+ }
+
+ public void caseHelperDefs1(HelperDefs1 node)
+ {
+ inHelperDefs1(node);
+
+ node.getNode1().apply(this);
+ node.getNode2().apply(this);
+
+ outHelperDefs1(node);
+ }
+
+ public void inHelperDefs2(HelperDefs2 node)
+ {
+ }
+
+ public void outHelperDefs2(HelperDefs2 node)
+ {
+ }
+
+ public void caseHelperDefs2(HelperDefs2 node)
+ {
+ inHelperDefs2(node);
+
+
+ outHelperDefs2(node);
+ }
+
+ public void inHelperDef1(HelperDef1 node)
+ {
+ }
+
+ public void outHelperDef1(HelperDef1 node)
+ {
+ }
+
+ public void caseHelperDef1(HelperDef1 node)
+ {
+ inHelperDef1(node);
+
+ node.getNode1().apply(this);
+ node.getNode2().apply(this);
+ node.getNode3().apply(this);
+ node.getNode4().apply(this);
+
+ outHelperDef1(node);
+ }
+
+ public void inStatesOpt1(StatesOpt1 node)
+ {
+ }
+
+ public void outStatesOpt1(StatesOpt1 node)
+ {
+ }
+
+ public void caseStatesOpt1(StatesOpt1 node)
+ {
+ inStatesOpt1(node);
+
+ node.getNode1().apply(this);
+
+ outStatesOpt1(node);
+ }
+
+ public void inStatesOpt2(StatesOpt2 node)
+ {
+ }
+
+ public void outStatesOpt2(StatesOpt2 node)
+ {
+ }
+
+ public void caseStatesOpt2(StatesOpt2 node)
+ {
+ inStatesOpt2(node);
+
+
+ outStatesOpt2(node);
+ }
+
+ public void inStates1(States1 node)
+ {
+ }
+
+ public void outStates1(States1 node)
+ {
+ }
+
+ public void caseStates1(States1 node)
+ {
+ inStates1(node);
+
+ node.getNode1().apply(this);
+ node.getNode2().apply(this);
+ node.getNode3().apply(this);
+
+ outStates1(node);
+ }
+
+ public void inIdListOpt1(IdListOpt1 node)
+ {
+ }
+
+ public void outIdListOpt1(IdListOpt1 node)
+ {
+ }
+
+ public void caseIdListOpt1(IdListOpt1 node)
+ {
+ inIdListOpt1(node);
+
+ node.getNode1().apply(this);
+
+ outIdListOpt1(node);
+ }
+
+ public void inIdList1(IdList1 node)
+ {
+ }
+
+ public void outIdList1(IdList1 node)
+ {
+ }
+
+ public void caseIdList1(IdList1 node)
+ {
+ inIdList1(node);
+
+ node.getNode1().apply(this);
+ node.getNode2().apply(this);
+
+ outIdList1(node);
+ }
+
+ public void inIdListTails1(IdListTails1 node)
+ {
+ }
+
+ public void outIdListTails1(IdListTails1 node)
+ {
+ }
+
+ public void caseIdListTails1(IdListTails1 node)
+ {
+ inIdListTails1(node);
+
+ node.getNode1().apply(this);
+ node.getNode2().apply(this);
+
+ outIdListTails1(node);
+ }
+
+ public void inIdListTails2(IdListTails2 node)
+ {
+ }
+
+ public void outIdListTails2(IdListTails2 node)
+ {
+ }
+
+ public void caseIdListTails2(IdListTails2 node)
+ {
+ inIdListTails2(node);
+
+
+ outIdListTails2(node);
+ }
+
+ public void inIdListTail1(IdListTail1 node)
+ {
+ }
+
+ public void outIdListTail1(IdListTail1 node)
+ {
+ }
+
+ public void caseIdListTail1(IdListTail1 node)
+ {
+ inIdListTail1(node);
+
+ node.getNode1().apply(this);
+ node.getNode2().apply(this);
+
+ outIdListTail1(node);
+ }
+
+ public void inTokensOpt1(TokensOpt1 node)
+ {
+ }
+
+ public void outTokensOpt1(TokensOpt1 node)
+ {
+ }
+
+ public void caseTokensOpt1(TokensOpt1 node)
+ {
+ inTokensOpt1(node);
+
+ node.getNode1().apply(this);
+
+ outTokensOpt1(node);
+ }
+
+ public void inTokensOpt2(TokensOpt2 node)
+ {
+ }
+
+ public void outTokensOpt2(TokensOpt2 node)
+ {
+ }
+
+ public void caseTokensOpt2(TokensOpt2 node)
+ {
+ inTokensOpt2(node);
+
+
+ outTokensOpt2(node);
+ }
+
+ public void inTokens1(Tokens1 node)
+ {
+ }
+
+ public void outTokens1(Tokens1 node)
+ {
+ }
+
+ public void caseTokens1(Tokens1 node)
+ {
+ inTokens1(node);
+
+ node.getNode1().apply(this);
+ node.getNode2().apply(this);
+
+ outTokens1(node);
+ }
+
+ public void inTokenDefs1(TokenDefs1 node)
+ {
+ }
+
+ public void outTokenDefs1(TokenDefs1 node)
+ {
+ }
+
+ public void caseTokenDefs1(TokenDefs1 node)
+ {
+ inTokenDefs1(node);
+
+ node.getNode1().apply(this);
+ node.getNode2().apply(this);
+
+ outTokenDefs1(node);
+ }
+
+ public void inTokenDefs2(TokenDefs2 node)
+ {
+ }
+
+ public void outTokenDefs2(TokenDefs2 node)
+ {
+ }
+
+ public void caseTokenDefs2(TokenDefs2 node)
+ {
+ inTokenDefs2(node);
+
+
+ outTokenDefs2(node);
+ }
+
+ public void inTokenDef1(TokenDef1 node)
+ {
+ }
+
+ public void outTokenDef1(TokenDef1 node)
+ {
+ }
+
+ public void caseTokenDef1(TokenDef1 node)
+ {
+ inTokenDef1(node);
+
+ node.getNode1().apply(this);
+ node.getNode2().apply(this);
+ node.getNode3().apply(this);
+ node.getNode4().apply(this);
+ node.getNode5().apply(this);
+ node.getNode6().apply(this);
+
+ outTokenDef1(node);
+ }
+
+ public void inStateListOpt1(StateListOpt1 node)
+ {
+ }
+
+ public void outStateListOpt1(StateListOpt1 node)
+ {
+ }
+
+ public void caseStateListOpt1(StateListOpt1 node)
+ {
+ inStateListOpt1(node);
+
+ node.getNode1().apply(this);
+
+ outStateListOpt1(node);
+ }
+
+ public void inStateListOpt2(StateListOpt2 node)
+ {
+ }
+
+ public void outStateListOpt2(StateListOpt2 node)
+ {
+ }
+
+ public void caseStateListOpt2(StateListOpt2 node)
+ {
+ inStateListOpt2(node);
+
+
+ outStateListOpt2(node);
+ }
+
+ public void inStateList1(StateList1 node)
+ {
+ }
+
+ public void outStateList1(StateList1 node)
+ {
+ }
+
+ public void caseStateList1(StateList1 node)
+ {
+ inStateList1(node);
+
+ node.getNode1().apply(this);
+ node.getNode2().apply(this);
+ node.getNode3().apply(this);
+ node.getNode4().apply(this);
+ node.getNode5().apply(this);
+
+ outStateList1(node);
+ }
+
+ public void inStateListTails1(StateListTails1 node)
+ {
+ }
+
+ public void outStateListTails1(StateListTails1 node)
+ {
+ }
+
+ public void caseStateListTails1(StateListTails1 node)
+ {
+ inStateListTails1(node);
+
+ node.getNode1().apply(this);
+ node.getNode2().apply(this);
+
+ outStateListTails1(node);
+ }
+
+ public void inStateListTails2(StateListTails2 node)
+ {
+ }
+
+ public void outStateListTails2(StateListTails2 node)
+ {
+ }
+
+ public void caseStateListTails2(StateListTails2 node)
+ {
+ inStateListTails2(node);
+
+
+ outStateListTails2(node);
+ }
+
+ public void inStateListTail1(StateListTail1 node)
+ {
+ }
+
+ public void outStateListTail1(StateListTail1 node)
+ {
+ }
+
+ public void caseStateListTail1(StateListTail1 node)
+ {
+ inStateListTail1(node);
+
+ node.getNode1().apply(this);
+ node.getNode2().apply(this);
+ node.getNode3().apply(this);
+
+ outStateListTail1(node);
+ }
+
+ public void inTransitionOpt1(TransitionOpt1 node)
+ {
+ }
+
+ public void outTransitionOpt1(TransitionOpt1 node)
+ {
+ }
+
+ public void caseTransitionOpt1(TransitionOpt1 node)
+ {
+ inTransitionOpt1(node);
+
+ node.getNode1().apply(this);
+
+ outTransitionOpt1(node);
+ }
+
+ public void inTransitionOpt2(TransitionOpt2 node)
+ {
+ }
+
+ public void outTransitionOpt2(TransitionOpt2 node)
+ {
+ }
+
+ public void caseTransitionOpt2(TransitionOpt2 node)
+ {
+ inTransitionOpt2(node);
+
+
+ outTransitionOpt2(node);
+ }
+
+ public void inTransition1(Transition1 node)
+ {
+ }
+
+ public void outTransition1(Transition1 node)
+ {
+ }
+
+ public void caseTransition1(Transition1 node)
+ {
+ inTransition1(node);
+
+ node.getNode1().apply(this);
+ node.getNode2().apply(this);
+
+ outTransition1(node);
+ }
+
+ public void inIgnTokensOpt1(IgnTokensOpt1 node)
+ {
+ }
+
+ public void outIgnTokensOpt1(IgnTokensOpt1 node)
+ {
+ }
+
+ public void caseIgnTokensOpt1(IgnTokensOpt1 node)
+ {
+ inIgnTokensOpt1(node);
+
+ node.getNode1().apply(this);
+
+ outIgnTokensOpt1(node);
+ }
+
+ public void inIgnTokensOpt2(IgnTokensOpt2 node)
+ {
+ }
+
+ public void outIgnTokensOpt2(IgnTokensOpt2 node)
+ {
+ }
+
+ public void caseIgnTokensOpt2(IgnTokensOpt2 node)
+ {
+ inIgnTokensOpt2(node);
+
+
+ outIgnTokensOpt2(node);
+ }
+
+ public void inIgnTokens1(IgnTokens1 node)
+ {
+ }
+
+ public void outIgnTokens1(IgnTokens1 node)
+ {
+ }
+
+ public void caseIgnTokens1(IgnTokens1 node)
+ {
+ inIgnTokens1(node);
+
+ node.getNode1().apply(this);
+ node.getNode2().apply(this);
+ node.getNode3().apply(this);
+ node.getNode4().apply(this);
+
+ outIgnTokens1(node);
+ }
+
+ public void inLookAheadOpt1(LookAheadOpt1 node)
+ {
+ }
+
+ public void outLookAheadOpt1(LookAheadOpt1 node)
+ {
+ }
+
+ public void caseLookAheadOpt1(LookAheadOpt1 node)
+ {
+ inLookAheadOpt1(node);
+
+ node.getNode1().apply(this);
+
+ outLookAheadOpt1(node);
+ }
+
+ public void inLookAheadOpt2(LookAheadOpt2 node)
+ {
+ }
+
+ public void outLookAheadOpt2(LookAheadOpt2 node)
+ {
+ }
+
+ public void caseLookAheadOpt2(LookAheadOpt2 node)
+ {
+ inLookAheadOpt2(node);
+
+
+ outLookAheadOpt2(node);
+ }
+
+ public void inLookAhead1(LookAhead1 node)
+ {
+ }
+
+ public void outLookAhead1(LookAhead1 node)
+ {
+ }
+
+ public void caseLookAhead1(LookAhead1 node)
+ {
+ inLookAhead1(node);
+
+ node.getNode1().apply(this);
+ node.getNode2().apply(this);
+
+ outLookAhead1(node);
+ }
+
+ public void inRegExp1(RegExp1 node)
+ {
+ }
+
+ public void outRegExp1(RegExp1 node)
+ {
+ }
+
+ public void caseRegExp1(RegExp1 node)
+ {
+ inRegExp1(node);
+
+ node.getNode1().apply(this);
+ node.getNode2().apply(this);
+
+ outRegExp1(node);
+ }
+
+ public void inRegExpTails1(RegExpTails1 node)
+ {
+ }
+
+ public void outRegExpTails1(RegExpTails1 node)
+ {
+ }
+
+ public void caseRegExpTails1(RegExpTails1 node)
+ {
+ inRegExpTails1(node);
+
+ node.getNode1().apply(this);
+ node.getNode2().apply(this);
+
+ outRegExpTails1(node);
+ }
+
+ public void inRegExpTails2(RegExpTails2 node)
+ {
+ }
+
+ public void outRegExpTails2(RegExpTails2 node)
+ {
+ }
+
+ public void caseRegExpTails2(RegExpTails2 node)
+ {
+ inRegExpTails2(node);
+
+
+ outRegExpTails2(node);
+ }
+
+ public void inRegExpTail1(RegExpTail1 node)
+ {
+ }
+
+ public void outRegExpTail1(RegExpTail1 node)
+ {
+ }
+
+ public void caseRegExpTail1(RegExpTail1 node)
+ {
+ inRegExpTail1(node);
+
+ node.getNode1().apply(this);
+ node.getNode2().apply(this);
+
+ outRegExpTail1(node);
+ }
+
+ public void inConcat1(Concat1 node)
+ {
+ }
+
+ public void outConcat1(Concat1 node)
+ {
+ }
+
+ public void caseConcat1(Concat1 node)
+ {
+ inConcat1(node);
+
+ node.getNode1().apply(this);
+
+ outConcat1(node);
+ }
+
+ public void inUnExps1(UnExps1 node)
+ {
+ }
+
+ public void outUnExps1(UnExps1 node)
+ {
+ }
+
+ public void caseUnExps1(UnExps1 node)
+ {
+ inUnExps1(node);
+
+ node.getNode1().apply(this);
+ node.getNode2().apply(this);
+
+ outUnExps1(node);
+ }
+
+ public void inUnExps2(UnExps2 node)
+ {
+ }
+
+ public void outUnExps2(UnExps2 node)
+ {
+ }
+
+ public void caseUnExps2(UnExps2 node)
+ {
+ inUnExps2(node);
+
+
+ outUnExps2(node);
+ }
+
+ public void inUnExp1(UnExp1 node)
+ {
+ }
+
+ public void outUnExp1(UnExp1 node)
+ {
+ }
+
+ public void caseUnExp1(UnExp1 node)
+ {
+ inUnExp1(node);
+
+ node.getNode1().apply(this);
+ node.getNode2().apply(this);
+
+ outUnExp1(node);
+ }
+
+ public void inBasic1(Basic1 node)
+ {
+ }
+
+ public void outBasic1(Basic1 node)
+ {
+ }
+
+ public void caseBasic1(Basic1 node)
+ {
+ inBasic1(node);
+
+ node.getNode1().apply(this);
+
+ outBasic1(node);
+ }
+
+ public void inBasic2(Basic2 node)
+ {
+ }
+
+ public void outBasic2(Basic2 node)
+ {
+ }
+
+ public void caseBasic2(Basic2 node)
+ {
+ inBasic2(node);
+
+ node.getNode1().apply(this);
+
+ outBasic2(node);
+ }
+
+ public void inBasic3(Basic3 node)
+ {
+ }
+
+ public void outBasic3(Basic3 node)
+ {
+ }
+
+ public void caseBasic3(Basic3 node)
+ {
+ inBasic3(node);
+
+ node.getNode1().apply(this);
+
+ outBasic3(node);
+ }
+
+ public void inBasic4(Basic4 node)
+ {
+ }
+
+ public void outBasic4(Basic4 node)
+ {
+ }
+
+ public void caseBasic4(Basic4 node)
+ {
+ inBasic4(node);
+
+ node.getNode1().apply(this);
+
+ outBasic4(node);
+ }
+
+ public void inBasic5(Basic5 node)
+ {
+ }
+
+ public void outBasic5(Basic5 node)
+ {
+ }
+
+ public void caseBasic5(Basic5 node)
+ {
+ inBasic5(node);
+
+ node.getNode1().apply(this);
+ node.getNode2().apply(this);
+ node.getNode3().apply(this);
+
+ outBasic5(node);
+ }
+
+ public void inPChar1(PChar1 node)
+ {
+ }
+
+ public void outPChar1(PChar1 node)
+ {
+ }
+
+ public void casePChar1(PChar1 node)
+ {
+ inPChar1(node);
+
+ node.getNode1().apply(this);
+
+ outPChar1(node);
+ }
+
+ public void inPChar2(PChar2 node)
+ {
+ }
+
+ public void outPChar2(PChar2 node)
+ {
+ }
+
+ public void casePChar2(PChar2 node)
+ {
+ inPChar2(node);
+
+ node.getNode1().apply(this);
+
+ outPChar2(node);
+ }
+
+ public void inPChar3(PChar3 node)
+ {
+ }
+
+ public void outPChar3(PChar3 node)
+ {
+ }
+
+ public void casePChar3(PChar3 node)
+ {
+ inPChar3(node);
+
+ node.getNode1().apply(this);
+
+ outPChar3(node);
+ }
+
+ public void inPSet1(PSet1 node)
+ {
+ }
+
+ public void outPSet1(PSet1 node)
+ {
+ }
+
+ public void casePSet1(PSet1 node)
+ {
+ inPSet1(node);
+
+ node.getNode1().apply(this);
+ node.getNode2().apply(this);
+ node.getNode3().apply(this);
+ node.getNode4().apply(this);
+ node.getNode5().apply(this);
+
+ outPSet1(node);
+ }
+
+ public void inPSet2(PSet2 node)
+ {
+ }
+
+ public void outPSet2(PSet2 node)
+ {
+ }
+
+ public void casePSet2(PSet2 node)
+ {
+ inPSet2(node);
+
+ node.getNode1().apply(this);
+ node.getNode2().apply(this);
+ node.getNode3().apply(this);
+ node.getNode4().apply(this);
+ node.getNode5().apply(this);
+
+ outPSet2(node);
+ }
+
+ public void inUnOpOpt1(UnOpOpt1 node)
+ {
+ }
+
+ public void outUnOpOpt1(UnOpOpt1 node)
+ {
+ }
+
+ public void caseUnOpOpt1(UnOpOpt1 node)
+ {
+ inUnOpOpt1(node);
+
+ node.getNode1().apply(this);
+
+ outUnOpOpt1(node);
+ }
+
+ public void inUnOpOpt2(UnOpOpt2 node)
+ {
+ }
+
+ public void outUnOpOpt2(UnOpOpt2 node)
+ {
+ }
+
+ public void caseUnOpOpt2(UnOpOpt2 node)
+ {
+ inUnOpOpt2(node);
+
+
+ outUnOpOpt2(node);
+ }
+
+ public void inUnOp1(UnOp1 node)
+ {
+ }
+
+ public void outUnOp1(UnOp1 node)
+ {
+ }
+
+ public void caseUnOp1(UnOp1 node)
+ {
+ inUnOp1(node);
+
+ node.getNode1().apply(this);
+
+ outUnOp1(node);
+ }
+
+ public void inUnOp2(UnOp2 node)
+ {
+ }
+
+ public void outUnOp2(UnOp2 node)
+ {
+ }
+
+ public void caseUnOp2(UnOp2 node)
+ {
+ inUnOp2(node);
+
+ node.getNode1().apply(this);
+
+ outUnOp2(node);
+ }
+
+ public void inUnOp3(UnOp3 node)
+ {
+ }
+
+ public void outUnOp3(UnOp3 node)
+ {
+ }
+
+ public void caseUnOp3(UnOp3 node)
+ {
+ inUnOp3(node);
+
+ node.getNode1().apply(this);
+
+ outUnOp3(node);
+ }
+
+ public void inBinOp1(BinOp1 node)
+ {
+ }
+
+ public void outBinOp1(BinOp1 node)
+ {
+ }
+
+ public void caseBinOp1(BinOp1 node)
+ {
+ inBinOp1(node);
+
+ node.getNode1().apply(this);
+
+ outBinOp1(node);
+ }
+
+ public void inBinOp2(BinOp2 node)
+ {
+ }
+
+ public void outBinOp2(BinOp2 node)
+ {
+ }
+
+ public void caseBinOp2(BinOp2 node)
+ {
+ inBinOp2(node);
+
+ node.getNode1().apply(this);
+
+ outBinOp2(node);
+ }
+
+ public void inProductionsOpt1(ProductionsOpt1 node)
+ {
+ }
+
+ public void outProductionsOpt1(ProductionsOpt1 node)
+ {
+ }
+
+ public void caseProductionsOpt1(ProductionsOpt1 node)
+ {
+ inProductionsOpt1(node);
+
+ node.getNode1().apply(this);
+
+ outProductionsOpt1(node);
+ }
+
+ public void inProductionsOpt2(ProductionsOpt2 node)
+ {
+ }
+
+ public void outProductionsOpt2(ProductionsOpt2 node)
+ {
+ }
+
+ public void caseProductionsOpt2(ProductionsOpt2 node)
+ {
+ inProductionsOpt2(node);
+
+
+ outProductionsOpt2(node);
+ }
+
+ public void inProductions1(Productions1 node)
+ {
+ }
+
+ public void outProductions1(Productions1 node)
+ {
+ }
+
+ public void caseProductions1(Productions1 node)
+ {
+ inProductions1(node);
+
+ node.getNode1().apply(this);
+ node.getNode2().apply(this);
+
+ outProductions1(node);
+ }
+
+ public void inProds1(Prods1 node)
+ {
+ }
+
+ public void outProds1(Prods1 node)
+ {
+ }
+
+ public void caseProds1(Prods1 node)
+ {
+ inProds1(node);
+
+ node.getNode1().apply(this);
+ node.getNode2().apply(this);
+
+ outProds1(node);
+ }
+
+ public void inProds2(Prods2 node)
+ {
+ }
+
+ public void outProds2(Prods2 node)
+ {
+ }
+
+ public void caseProds2(Prods2 node)
+ {
+ inProds2(node);
+
+
+ outProds2(node);
+ }
+
+ public void inProd1(Prod1 node)
+ {
+ }
+
+ public void outProd1(Prod1 node)
+ {
+ }
+
+ public void caseProd1(Prod1 node)
+ {
+ inProd1(node);
+
+ node.getNode1().apply(this);
+ node.getNode2().apply(this);
+ node.getNode3().apply(this);
+ node.getNode4().apply(this);
+
+ outProd1(node);
+ }
+
+ public void inAlts1(Alts1 node)
+ {
+ }
+
+ public void outAlts1(Alts1 node)
+ {
+ }
+
+ public void caseAlts1(Alts1 node)
+ {
+ inAlts1(node);
+
+ node.getNode1().apply(this);
+ node.getNode2().apply(this);
+
+ outAlts1(node);
+ }
+
+ public void inAltsTails1(AltsTails1 node)
+ {
+ }
+
+ public void outAltsTails1(AltsTails1 node)
+ {
+ }
+
+ public void caseAltsTails1(AltsTails1 node)
+ {
+ inAltsTails1(node);
+
+ node.getNode1().apply(this);
+ node.getNode2().apply(this);
+
+ outAltsTails1(node);
+ }
+
+ public void inAltsTails2(AltsTails2 node)
+ {
+ }
+
+ public void outAltsTails2(AltsTails2 node)
+ {
+ }
+
+ public void caseAltsTails2(AltsTails2 node)
+ {
+ inAltsTails2(node);
+
+
+ outAltsTails2(node);
+ }
+
+ public void inAltsTail1(AltsTail1 node)
+ {
+ }
+
+ public void outAltsTail1(AltsTail1 node)
+ {
+ }
+
+ public void caseAltsTail1(AltsTail1 node)
+ {
+ inAltsTail1(node);
+
+ node.getNode1().apply(this);
+ node.getNode2().apply(this);
+
+ outAltsTail1(node);
+ }
+
+ public void inAlt1(Alt1 node)
+ {
+ }
+
+ public void outAlt1(Alt1 node)
+ {
+ }
+
+ public void caseAlt1(Alt1 node)
+ {
+ inAlt1(node);
+
+ node.getNode1().apply(this);
+ node.getNode2().apply(this);
+
+ outAlt1(node);
+ }
+
+ public void inAlt2(Alt2 node)
+ {
+ }
+
+ public void outAlt2(Alt2 node)
+ {
+ }
+
+ public void caseAlt2(Alt2 node)
+ {
+ inAlt2(node);
+
+ node.getNode1().apply(this);
+ node.getNode2().apply(this);
+ node.getNode3().apply(this);
+ node.getNode4().apply(this);
+
+ outAlt2(node);
+ }
+
+ public void inAltNameOpt1(AltNameOpt1 node)
+ {
+ }
+
+ public void outAltNameOpt1(AltNameOpt1 node)
+ {
+ }
+
+ public void caseAltNameOpt1(AltNameOpt1 node)
+ {
+ inAltNameOpt1(node);
+
+ node.getNode1().apply(this);
+
+ outAltNameOpt1(node);
+ }
+
+ public void inAltNameOpt2(AltNameOpt2 node)
+ {
+ }
+
+ public void outAltNameOpt2(AltNameOpt2 node)
+ {
+ }
+
+ public void caseAltNameOpt2(AltNameOpt2 node)
+ {
+ inAltNameOpt2(node);
+
+
+ outAltNameOpt2(node);
+ }
+
+ public void inAltName1(AltName1 node)
+ {
+ }
+
+ public void outAltName1(AltName1 node)
+ {
+ }
+
+ public void caseAltName1(AltName1 node)
+ {
+ inAltName1(node);
+
+ node.getNode1().apply(this);
+ node.getNode2().apply(this);
+ node.getNode3().apply(this);
+
+ outAltName1(node);
+ }
+
+ public void inElems1(Elems1 node)
+ {
+ }
+
+ public void outElems1(Elems1 node)
+ {
+ }
+
+ public void caseElems1(Elems1 node)
+ {
+ inElems1(node);
+
+ node.getNode1().apply(this);
+ node.getNode2().apply(this);
+
+ outElems1(node);
+ }
+
+ public void inElems2(Elems2 node)
+ {
+ }
+
+ public void outElems2(Elems2 node)
+ {
+ }
+
+ public void caseElems2(Elems2 node)
+ {
+ inElems2(node);
+
+
+ outElems2(node);
+ }
+
+ public void inElem1(Elem1 node)
+ {
+ }
+
+ public void outElem1(Elem1 node)
+ {
+ }
+
+ public void caseElem1(Elem1 node)
+ {
+ inElem1(node);
+
+ node.getNode1().apply(this);
+ node.getNode2().apply(this);
+ node.getNode3().apply(this);
+ node.getNode4().apply(this);
+
+ outElem1(node);
+ }
+
+ public void inElemNameOpt1(ElemNameOpt1 node)
+ {
+ }
+
+ public void outElemNameOpt1(ElemNameOpt1 node)
+ {
+ }
+
+ public void caseElemNameOpt1(ElemNameOpt1 node)
+ {
+ inElemNameOpt1(node);
+
+ node.getNode1().apply(this);
+
+ outElemNameOpt1(node);
+ }
+
+ public void inElemNameOpt2(ElemNameOpt2 node)
+ {
+ }
+
+ public void outElemNameOpt2(ElemNameOpt2 node)
+ {
+ }
+
+ public void caseElemNameOpt2(ElemNameOpt2 node)
+ {
+ inElemNameOpt2(node);
+
+
+ outElemNameOpt2(node);
+ }
+
+ public void inElemName1(ElemName1 node)
+ {
+ }
+
+ public void outElemName1(ElemName1 node)
+ {
+ }
+
+ public void caseElemName1(ElemName1 node)
+ {
+ inElemName1(node);
+
+ node.getNode1().apply(this);
+ node.getNode2().apply(this);
+ node.getNode3().apply(this);
+ node.getNode4().apply(this);
+
+ outElemName1(node);
+ }
+
+ public void inSpecifierOpt1(SpecifierOpt1 node)
+ {
+ }
+
+ public void outSpecifierOpt1(SpecifierOpt1 node)
+ {
+ }
+
+ public void caseSpecifierOpt1(SpecifierOpt1 node)
+ {
+ inSpecifierOpt1(node);
+
+ node.getNode1().apply(this);
+
+ outSpecifierOpt1(node);
+ }
+
+ public void inSpecifierOpt2(SpecifierOpt2 node)
+ {
+ }
+
+ public void outSpecifierOpt2(SpecifierOpt2 node)
+ {
+ }
+
+ public void caseSpecifierOpt2(SpecifierOpt2 node)
+ {
+ inSpecifierOpt2(node);
+
+
+ outSpecifierOpt2(node);
+ }
+
+ public void inSpecifier1(Specifier1 node)
+ {
+ }
+
+ public void outSpecifier1(Specifier1 node)
+ {
+ }
+
+ public void caseSpecifier1(Specifier1 node)
+ {
+ inSpecifier1(node);
+
+ node.getNode1().apply(this);
+ node.getNode2().apply(this);
+
+ outSpecifier1(node);
+ }
+
+ public void inSpecifier2(Specifier2 node)
+ {
+ }
+
+ public void outSpecifier2(Specifier2 node)
+ {
+ }
+
+ public void caseSpecifier2(Specifier2 node)
+ {
+ inSpecifier2(node);
+
+ node.getNode1().apply(this);
+ node.getNode2().apply(this);
+
+ outSpecifier2(node);
+ }
+
+ public void inStart1(Start1 node)
+ {
+ }
+
+ public void outStart1(Start1 node)
+ {
+ }
+
+ public void caseStart1(Start1 node)
+ {
+ inStart1(node);
+
+ node.getNode1().apply(this);
+ node.getNode2().apply(this);
+
+ outStart1(node);
+ }
+
+}
+
Added: sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/lexer/Lexer.java
===================================================================
--- sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/lexer/Lexer.java (rev 0)
+++ sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/lexer/Lexer.java 2012-07-12 16:49:25 UTC (rev 248)
@@ -0,0 +1,704 @@
+/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+ * This file is part of SableCC. *
+ * See the file "LICENSE" for copyright information and the *
+ * terms and conditions for copying, distribution and *
+ * modification of SableCC. *
+ * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
+
+package org.sablecc.sablecc.lexer;
+
+import java.io.*;
+import java.util.Stack;
+import java.util.Vector;
+
+import java.util.*;
+import org.sablecc.sablecc.node.*;
+
+public final class Lexer
+{
+ private final Reader in;
+
+ public Lexer(Reader in)
+ {
+ this.in = in;
+ }
+
+ private Token token;
+
+ public Token peek() throws LexerException, IOException
+ {
+ if(token == null)
+ {
+ token = getToken();
+ }
+
+ return token;
+ }
+
+ public Token next() throws LexerException, IOException
+ {
+ if(token == null)
+ {
+ return getToken();
+ }
+
+ Token result = token;
+ token = null;
+ return result;
+ }
+
+ private int line;
+ private int pos;
+
+ private boolean cr;
+
+ private Token getToken() throws IOException, LexerException
+ {
+ int state = 0;
+
+ int start_pos = pos;
+ int start_line = line;
+
+ int accept_state = -1;
+ int accept_token = -1;
+ int accept_length = -1;
+ int accept_pos = -1;
+ int accept_line = -1;
+
+ StringBuffer text = new StringBuffer();
+
+ while(true)
+ {
+ int c = getChar();
+
+ if(c != -1)
+ {
+ switch(c)
+ {
+ case 10:
+ if(cr)
+ {
+ cr = false;
+ }
+ else
+ {
+ line++;
+ pos = 0;
+ }
+ break;
+ case 13:
+ line++;
+ pos = 0;
+ cr = true;
+ break;
+ default:
+ pos++;
+ cr = false;
+ break;
+ };
+
+ text.append((char) c);
+
+ int oldState = state;
+ state = -1;
+
+ int low = 0;
+ int high = gotoTable[oldState].length - 1;
+
+ while(low <= high)
+ {
+ int middle = (low + high) / 2;
+
+ if(c < gotoTable[oldState][middle][0])
+ {
+ high = middle - 1;
+ }
+ else if(c > gotoTable[oldState][middle][1])
+ {
+ low = middle + 1;
+ }
+ else
+ {
+ state = gotoTable[oldState][middle][2];
+ break;
+ }
+ }
+ }
+ else
+ {
+ state = -1;
+ }
+
+ if(state >= 0)
+ {
+ if(accept[state] != -1)
+ {
+ accept_state = state;
+ accept_token = accept[state];
+ accept_length = text.length();
+ accept_pos = pos;
+ accept_line = line;
+ }
+ }
+ else
+ {
+ if(accept_state != -1)
+ {
+ switch(accept_token)
+ {
+ case 0:
+ {
+ TPackage token = new TPackage();
+ token.setPos(start_pos + 1);
+ token.setLine(start_line + 1);
+ token.setText(text.toString().substring(0, accept_length));
+ pushBack(text.toString().substring(accept_length));
+ pos = accept_pos;
+ line = accept_line;
+ return token;
+ }
+ case 1:
+ {
+ TStates token = new TStates();
+ token.setPos(start_pos + 1);
+ token.setLine(start_line + 1);
+ token.setText(text.toString().substring(0, accept_length));
+ pushBack(text.toString().substring(accept_length));
+ pos = accept_pos;
+ line = accept_line;
+ return token;
+ }
+ case 2:
+ {
+ THelpers token = new THelpers();
+ token.setPos(start_pos + 1);
+ token.setLine(start_line + 1);
+ token.setText(text.toString().substring(0, accept_length));
+ pushBack(text.toString().substring(accept_length));
+ pos = accept_pos;
+ line = accept_line;
+ return token;
+ }
+ case 3:
+ {
+ TTokens token = new TTokens();
+ token.setPos(start_pos + 1);
+ token.setLine(start_line + 1);
+ token.setText(text.toString().substring(0, accept_length));
+ pushBack(text.toString().substring(accept_length));
+ pos = accept_pos;
+ line = accept_line;
+ return token;
+ }
+ case 4:
+ {
+ TIgnored token = new TIgnored();
+ token.setPos(start_pos + 1);
+ token.setLine(start_line + 1);
+ token.setText(text.toString().substring(0, accept_length));
+ pushBack(text.toString().substring(accept_length));
+ pos = accept_pos;
+ line = accept_line;
+ return token;
+ }
+ case 5:
+ {
+ TProductions token = new TProductions();
+ token.setPos(start_pos + 1);
+ token.setLine(start_line + 1);
+ token.setText(text.toString().substring(0, accept_length));
+ pushBack(text.toString().substring(accept_length));
+ pos = accept_pos;
+ line = accept_line;
+ return token;
+ }
+ case 6:
+ {
+ TTokenSpecifier token = new TTokenSpecifier();
+ token.setPos(start_pos + 1);
+ token.setLine(start_line + 1);
+ token.setText(text.toString().substring(0, accept_length));
+ pushBack(text.toString().substring(accept_length));
+ pos = accept_pos;
+ line = accept_line;
+ return token;
+ }
+ case 7:
+ {
+ TProductionSpecifier token = new TProductionSpecifier();
+ token.setPos(start_pos + 1);
+ token.setLine(start_line + 1);
+ token.setText(text.toString().substring(0, accept_length));
+ pushBack(text.toString().substring(accept_length));
+ pos = accept_pos;
+ line = accept_line;
+ return token;
+ }
+ case 8:
+ {
+ TDot token = new TDot();
+ token.setPos(start_pos + 1);
+ token.setLine(start_line + 1);
+ token.setText(text.toString().substring(0, accept_length));
+ pushBack(text.toString().substring(accept_length));
+ pos = accept_pos;
+ line = accept_line;
+ return token;
+ }
+ case 9:
+ {
+ TDDot token = new TDDot();
+ token.setPos(start_pos + 1);
+ token.setLine(start_line + 1);
+ token.setText(text.toString().substring(0, accept_length));
+ pushBack(text.toString().substring(accept_length));
+ pos = accept_pos;
+ line = accept_line;
+ return token;
+ }
+ case 10:
+ {
+ TSemicolon token = new TSemicolon();
+ token.setPos(start_pos + 1);
+ token.setLine(start_line + 1);
+ token.setText(text.toString().substring(0, accept_length));
+ pushBack(text.toString().substring(accept_length));
+ pos = accept_pos;
+ line = accept_line;
+ return token;
+ }
+ case 11:
+ {
+ TEqual token = new TEqual();
+ token.setPos(start_pos + 1);
+ token.setLine(start_line + 1);
+ token.setText(text.toString().substring(0, accept_length));
+ pushBack(text.toString().substring(accept_length));
+ pos = accept_pos;
+ line = accept_line;
+ return token;
+ }
+ case 12:
+ {
+ TLBkt token = new TLBkt();
+ token.setPos(start_pos + 1);
+ token.setLine(start_line + 1);
+ token.setText(text.toString().substring(0, accept_length));
+ pushBack(text.toString().substring(accept_length));
+ pos = accept_pos;
+ line = accept_line;
+ return token;
+ }
+ case 13:
+ {
+ TRBkt token = new TRBkt();
+ token.setPos(start_pos + 1);
+ token.setLine(start_line + 1);
+ token.setText(text.toString().substring(0, accept_length));
+ pushBack(text.toString().substring(accept_length));
+ pos = accept_pos;
+ line = accept_line;
+ return token;
+ }
+ case 14:
+ {
+ TLPar token = new TLPar();
+ token.setPos(start_pos + 1);
+ token.setLine(start_line + 1);
+ token.setText(text.toString().substring(0, accept_length));
+ pushBack(text.toString().substring(accept_length));
+ pos = accept_pos;
+ line = accept_line;
+ return token;
+ }
+ case 15:
+ {
+ TRPar token = new TRPar();
+ token.setPos(start_pos + 1);
+ token.setLine(start_line + 1);
+ token.setText(text.toString().substring(0, accept_length));
+ pushBack(text.toString().substring(accept_length));
+ pos = accept_pos;
+ line = accept_line;
+ return token;
+ }
+ case 16:
+ {
+ TLBrace token = new TLBrace();
+ token.setPos(start_pos + 1);
+ token.setLine(start_line + 1);
+ token.setText(text.toString().substring(0, accept_length));
+ pushBack(text.toString().substring(accept_length));
+ pos = accept_pos;
+ line = accept_line;
+ return token;
+ }
+ case 17:
+ {
+ TRBrace token = new TRBrace();
+ token.setPos(start_pos + 1);
+ token.setLine(start_line + 1);
+ token.setText(text.toString().substring(0, accept_length));
+ pushBack(text.toString().substring(accept_length));
+ pos = accept_pos;
+ line = accept_line;
+ return token;
+ }
+ case 18:
+ {
+ TPlus token = new TPlus();
+ token.setPos(start_pos + 1);
+ token.setLine(start_line + 1);
+ token.setText(text.toString().substring(0, accept_length));
+ pushBack(text.toString().substring(accept_length));
+ pos = accept_pos;
+ line = accept_line;
+ return token;
+ }
+ case 19:
+ {
+ TMinus token = new TMinus();
+ token.setPos(start_pos + 1);
+ token.setLine(start_line + 1);
+ token.setText(text.toString().substring(0, accept_length));
+ pushBack(text.toString().substring(accept_length));
+ pos = accept_pos;
+ line = accept_line;
+ return token;
+ }
+ case 20:
+ {
+ TQMark token = new TQMark();
+ token.setPos(start_pos + 1);
+ token.setLine(start_line + 1);
+ token.setText(text.toString().substring(0, accept_length));
+ pushBack(text.toString().substring(accept_length));
+ pos = accept_pos;
+ line = accept_line;
+ return token;
+ }
+ case 21:
+ {
+ TStar token = new TStar();
+ token.setPos(start_pos + 1);
+ token.setLine(start_line + 1);
+ token.setText(text.toString().substring(0, accept_length));
+ pushBack(text.toString().substring(accept_length));
+ pos = accept_pos;
+ line = accept_line;
+ return token;
+ }
+ case 22:
+ {
+ TBar token = new TBar();
+ token.setPos(start_pos + 1);
+ token.setLine(start_line + 1);
+ token.setText(text.toString().substring(0, accept_length));
+ pushBack(text.toString().substring(accept_length));
+ pos = accept_pos;
+ line = accept_line;
+ return token;
+ }
+ case 23:
+ {
+ TComma token = new TComma();
+ token.setPos(start_pos + 1);
+ token.setLine(start_line + 1);
+ token.setText(text.toString().substring(0, accept_length));
+ pushBack(text.toString().substring(accept_length));
+ pos = accept_pos;
+ line = accept_line;
+ return token;
+ }
+ case 24:
+ {
+ TSlash token = new TSlash();
+ token.setPos(start_pos + 1);
+ token.setLine(start_line + 1);
+ token.setText(text.toString().substring(0, accept_length));
+ pushBack(text.toString().substring(accept_length));
+ pos = accept_pos;
+ line = accept_line;
+ return token;
+ }
+ case 25:
+ {
+ TArrow token = new TArrow();
+ token.setPos(start_pos + 1);
+ token.setLine(start_line + 1);
+ token.setText(text.toString().substring(0, accept_length));
+ pushBack(text.toString().substring(accept_length));
+ pos = accept_pos;
+ line = accept_line;
+ return token;
+ }
+ case 26:
+ {
+ TColon token = new TColon();
+ token.setPos(start_pos + 1);
+ token.setLine(start_line + 1);
+ token.setText(text.toString().substring(0, accept_length));
+ pushBack(text.toString().substring(accept_length));
+ pos = accept_pos;
+ line = accept_line;
+ return token;
+ }
+ case 27:
+ {
+ TId token = new TId();
+ token.setPos(start_pos + 1);
+ token.setLine(start_line + 1);
+ token.setText(text.toString().substring(0, accept_length));
+ pushBack(text.toString().substring(accept_length));
+ pos = accept_pos;
+ line = accept_line;
+ return token;
+ }
+ case 28:
+ {
+ TChar token = new TChar();
+ token.setPos(start_pos + 1);
+ token.setLine(start_line + 1);
+ token.setText(text.toString().substring(0, accept_length));
+ pushBack(text.toString().substring(accept_length));
+ pos = accept_pos;
+ line = accept_line;
+ return token;
+ }
+ case 29:
+ {
+ TDecChar token = new TDecChar();
+ token.setPos(start_pos + 1);
+ token.setLine(start_line + 1);
+ token.setText(text.toString().substring(0, accept_length));
+ pushBack(text.toString().substring(accept_length));
+ pos = accept_pos;
+ line = accept_line;
+ return token;
+ }
+ case 30:
+ {
+ THexChar token = new THexChar();
+ token.setPos(start_pos + 1);
+ token.setLine(start_line + 1);
+ token.setText(text.toString().substring(0, accept_length));
+ pushBack(text.toString().substring(accept_length));
+ pos = accept_pos;
+ line = accept_line;
+ return token;
+ }
+ case 31:
+ {
+ TString token = new TString();
+ token.setPos(start_pos + 1);
+ token.setLine(start_line + 1);
+ token.setText(text.toString().substring(0, accept_length));
+ pushBack(text.toString().substring(accept_length));
+ pos = accept_pos;
+ line = accept_line;
+ return token;
+ }
+ case 32:
+ {
+ TPkgId token = new TPkgId();
+ token.setPos(start_pos + 1);
+ token.setLine(start_line + 1);
+ token.setText(text.toString().substring(0, accept_length));
+ pushBack(text.toString().substring(accept_length));
+ pos = accept_pos;
+ line = accept_line;
+ return token;
+ }
+ case 33:
+ {
+ TBlank token = new TBlank();
+ token.setPos(start_pos + 1);
+ token.setLine(start_line + 1);
+ token.setText(text.toString().substring(0, accept_length));
+ pushBack(text.toString().substring(accept_length));
+ pos = accept_pos;
+ line = accept_line;
+ return token;
+ }
+ case 34:
+ {
+ TComment token = new TComment();
+ token.setPos(start_pos + 1);
+ token.setLine(start_line + 1);
+ token.setText(text.toString().substring(0, accept_length));
+ pushBack(text.toString().substring(accept_length));
+ pos = accept_pos;
+ line = accept_line;
+ return token;
+ }
+ }
+ }
+ else
+ {
+ if(text.length() > 0)
+ {
+ throw new LexerException(
+ "[" + (start_line + 1) + "," + (start_pos + 1) + "]" +
+ " Unknown token: " + text);
+ }
+ else
+ {
+ EOF token = new EOF();
+ token.setPos(start_pos + 1);
+ token.setLine(start_line + 1);
+ return token;
+ }
+ }
+ }
+ }
+ }
+
+ private final Stack chars = new Stack();
+ private boolean eof;
+
+ private int getChar() throws IOException
+ {
+ if(!chars.empty())
+ {
+ return ((Integer) chars.pop()).intValue();
+ }
+
+ if(eof)
+ {
+ return -1;
+ }
+
+ int result = in.read();
+
+ if(result == -1)
+ {
+ eof = true;
+ }
+
+ return result;
+ }
+
+ private void pushBack(String text)
+ {
+ for(int i = text.length() - 1; i >= 0; i--)
+ {
+ chars.push(new Integer((int) text.charAt(i)));
+ }
+ }
+
+ private static int[][][] gotoTable =
+ {
+ {{9, 9, 1}, {10, 10, 2}, {13, 13, 3}, {32, 32, 4}, {36, 36, 5}, {39, 39, 6}, {40, 40, 7}, {41, 41, 8}, {42, 42, 9}, {43, 43, 10}, {44, 44, 11}, {45, 45, 12}, {46, 46, 13}, {47, 47, 14}, {48, 48, 15}, {49, 57, 16}, {58, 58, 17}, {59, 59, 18}, {61, 61, 19}, {63, 63, 20}, {65, 71, 21}, {72, 72, 22}, {73, 73, 23}, {74, 79, 21}, {80, 80, 24}, {81, 82, 21}, {83, 83, 25}, {84, 84, 26}, {85, 90, 21}, {91, 91, 27}, {93, 93, 28}, {95, 95, 29}, {97, 122, 30}, {123, 123, 31}, {124, 124, 32}, {125, 125, 33}, },
+ {{9, 9, 1}, {10, 10, 2}, {13, 13, 3}, {32, 32, 4}, },
+ {{9, 9, 1}, {10, 10, 2}, {13, 13, 3}, {32, 32, 4}, },
+ {{9, 9, 1}, {10, 10, 34}, {13, 13, 3}, {32, 32, 4}, },
+ {{9, 9, 1}, {10, 10, 2}, {13, 13, 3}, {32, 32, 4}, },
+ {{36, 36, 35}, {48, 57, 36}, {65, 90, 37}, {95, 95, 38}, {97, 122, 39}, },
+ {{0, 9, 40}, {11, 12, 40}, {14, 38, 40}, {39, 39, 41}, {40, 65535, 40}, },
+ {},
+ {},
+ {},
+ {},
+ {},
+ {{62, 62, 42}, },
+ {{46, 46, 43}, },
+ {{42, 42, 44}, {47, 47, 45}, },
+ {{48, 57, 16}, {88, 88, 46}, {120, 120, 47}, },
+ {{48, 57, 16}, },
+ {},
+ {},
+ {},
+ {},
+ {{36, 36, 35}, {48, 57, 36}, {65, 90, 37}, {95, 95, 38}, {97, 122, 39}, },
+ {{36, 36, 35}, {48, 57, 36}, {65, 90, 37}, {95, 95, 38}, {97, 100, 39}, {101, 101, 48}, {102, 122, 39}, },
+ {{36, 36, 35}, {48, 57, 36}, {65, 90, 37}, {95, 95, 38}, {97, 102, 39}, {103, 103, 49}, {104, 122, 39}, },
+ {{36, 36, 35}, {48, 57, 36}, {65, 90, 37}, {95, 95, 38}, {97, 97, 50}, {98, 113, 39}, {114, 114, 51}, {115, 122, 39}, },
+ {{36, 36, 35}, {48, 57, 36}, {65, 90, 37}, {95, 95, 38}, {97, 115, 39}, {116, 116, 52}, {117, 122, 39}, },
+ {{36, 36, 35}, {48, 57, 36}, {65, 90, 37}, {95, 95, 38}, {97, 110, 39}, {111, 111, 53}, {112, 122, 39}, },
+ {},
+ {},
+ {{36, 36, 35}, {48, 57, 36}, {65, 90, 37}, {95, 95, 38}, {97, 122, 39}, },
+ {{36, 36, 35}, {48, 57, 54}, {65, 90, 37}, {95, 95, 55}, {97, 122, 56}, },
+ {},
+ {},
+ {},
+ {{9, 9, 1}, {10, 10, 2}, {13, 13, 3}, {32, 32, 4}, },
+ {{36, 36, 35}, {48, 57, 36}, {65, 90, 37}, {95, 95, 38}, {97, 122, 39}, },
+ {{36, 36, 35}, {48, 57, 36}, {65, 90, 37}, {95, 95, 38}, {97, 122, 39}, },
+ {{36, 36, 35}, {48, 57, 36}, {65, 90, 37}, {95, 95, 38}, {97, 122, 39}, },
+ {{36, 36, 35}, {48, 57, 36}, {65, 90, 37}, {95, 95, 38}, {97, 122, 39}, },
+ {{36, 36, 35}, {48, 57, 36}, {65, 90, 37}, {95, 95, 38}, {97, 122, 39}, },
+ {{0, 9, 57}, {11, 12, 57}, {14, 38, 57}, {39, 39, 58}, {40, 65535, 57}, },
+ {{39, 39, 59}, },
+ {},
+ {},
+ {{0, 41, 60}, {42, 42, 61}, {43, 65535, 60}, },
+ {{0, 9, 62}, {10, 10, 63}, {11, 12, 62}, {13, 13, 64}, {14, 65535, 62}, },
+ {{48, 57, 65}, {65, 70, 65}, {97, 102, 65}, },
+ {{48, 57, 65}, {65, 70, 65}, {97, 102, 65}, },
+ {{36, 36, 35}, {48, 57, 36}, {65, 90, 37}, {95, 95, 38}, {97, 107, 39}, {108, 108, 66}, {109, 122, 39}, },
+ {{36, 36, 35}, {48, 57, 36}, {65, 90, 37}, {95, 95, 38}, {97, 109, 39}, {110, 110, 67}, {111, 122, 39}, },
+ {{36, 36, 35}, {48, 57, 36}, {65, 90, 37}, {95, 95, 38}, {97, 98, 39}, {99, 99, 68}, {100, 122, 39}, },
+ {{36, 36, 35}, {48, 57, 36}, {65, 90, 37}, {95, 95, 38}, {97, 110, 39}, {111, 111, 69}, {112, 122, 39}, },
+ {{36, 36, 35}, {48, 57, 36}, {65, 90, 37}, {95, 95, 38}, {97, 97, 70}, {98, 122, 39}, },
+ {{36, 36, 35}, {48, 57, 36}, {65, 90, 37}, {95, 95, 38}, {97, 106, 39}, {107, 107, 71}, {108, 122, 39}, },
+ {{36, 36, 35}, {48, 57, 54}, {65, 90, 37}, {95, 95, 55}, {97, 122, 56}, },
+ {{36, 36, 35}, {48, 57, 36}, {65, 90, 37}, {95, 95, 38}, {97, 122, 72}, },
+ {{36, 36, 35}, {48, 57, 54}, {65, 90, 37}, {95, 95, 55}, {97, 122, 56}, },
+ {{0, 9, 57}, {11, 12, 57}, {14, 38, 57}, {39, 39, 73}, {40, 65535, 57}, },
+ {},
+ {},
+ {{0, 41, 60}, {42, 42, 61}, {43, 65535, 60}, },
+ {{0, 41, 74}, {42, 42, 61}, {43, 46, 74}, {47, 47, 75}, {48, 65535, 74}, },
+ {{0, 9, 62}, {10, 10, 63}, {11, 12, 62}, {13, 13, 64}, {14, 65535, 62}, },
+ {},
+ {{10, 10, 76}, },
+ {{48, 57, 65}, {65, 70, 65}, {97, 102, 65}, },
+ {{36, 36, 35}, {48, 57, 36}, {65, 90, 37}, {95, 95, 38}, {97, 111, 39}, {112, 112, 77}, {113, 122, 39}, },
+ {{36, 36, 35}, {48, 57, 36}, {65, 90, 37}, {95, 95, 38}, {97, 110, 39}, {111, 111, 78}, {112, 122, 39}, },
+ {{36, 36, 35}, {48, 57, 36}, {65, 90, 37}, {95, 95, 38}, {97, 106, 39}, {107, 107, 79}, {108, 122, 39}, },
+ {{36, 36, 35}, {48, 57, 36}, {65, 90, 37}, {95, 95, 38}, {97, 99, 39}, {100, 100, 80}, {101, 122, 39}, },
+ {{36, 36, 35}, {48, 57, 36}, {65, 90, 37}, {95, 95, 38}, {97, 115, 39}, {116, 116, 81}, {117, 122, 39}, },
+ {{36, 36, 35}, {48, 57, 36}, {65, 90, 37}, {95, 95, 38}, {97, 100, 39}, {101, 101, 82}, {102, 122, 39}, },
+ {{36, 36, 35}, {48, 57, 83}, {65, 90, 37}, {95, 95, 55}, {97, 122, 84}, },
+ {},
+ {{0, 41, 85}, {42, 42, 86}, {43, 65535, 85}, },
+ {},
+ {},
+ {{36, 36, 35}, {48, 57, 36}, {65, 90, 37}, {95, 95, 38}, {97, 100, 39}, {101, 101, 87}, {102, 122, 39}, },
+ {{36, 36, 35}, {48, 57, 36}, {65, 90, 37}, {95, 95, 38}, {97, 113, 39}, {114, 114, 88}, {115, 122, 39}, },
+ {{36, 36, 35}, {48, 57, 36}, {65, 90, 37}, {95, 95, 38}, {97, 97, 89}, {98, 122, 39}, },
+ {{36, 36, 35}, {48, 57, 36}, {65, 90, 37}, {95, 95, 38}, {97, 116, 39}, {117, 117, 90}, {118, 122, 39}, },
+ {{36, 36, 35}, {48, 57, 36}, {65, 90, 37}, {95, 95, 38}, {97, 100, 39}, {101, 101, 91}, {102, 122, 39}, },
+ {{36, 36, 35}, {48, 57, 36}, {65, 90, 37}, {95, 95, 38}, {97, 109, 39}, {110, 110, 92}, {111, 122, 39}, },
+ {{36, 36, 35}, {48, 57, 83}, {65, 90, 37}, {95, 95, 55}, {97, 122, 84}, },
+ {{36, 36, 35}, {48, 57, 83}, {65, 90, 37}, {95, 95, 55}, {97, 122, 84}, },
+ {{0, 41, 85}, {42, 42, 86}, {43, 65535, 85}, },
+ {{0, 41, 74}, {42, 42, 86}, {43, 46, 74}, {47, 47, 75}, {48, 65535, 74}, },
+ {{36, 36, 35}, {48, 57, 36}, {65, 90, 37}, {95, 95, 38}, {97, 113, 39}, {114, 114, 93}, {115, 122, 39}, },
+ {{36, 36, 35}, {48, 57, 36}, {65, 90, 37}, {95, 95, 38}, {97, 100, 39}, {101, 101, 94}, {102, 122, 39}, },
+ {{36, 36, 35}, {48, 57, 36}, {65, 90, 37}, {95, 95, 38}, {97, 102, 39}, {103, 103, 95}, {104, 122, 39}, },
+ {{36, 36, 35}, {48, 57, 36}, {65, 90, 37}, {95, 95, 38}, {97, 98, 39}, {99, 99, 96}, {100, 122, 39}, },
+ {{36, 36, 35}, {48, 57, 36}, {65, 90, 37}, {95, 95, 38}, {97, 114, 39}, {115, 115, 97}, {116, 122, 39}, },
+ {{36, 36, 35}, {48, 57, 36}, {65, 90, 37}, {95, 95, 38}, {97, 114, 39}, {115, 115, 98}, {116, 122, 39}, },
+ {{36, 36, 35}, {48, 57, 36}, {65, 90, 37}, {95, 95, 38}, {97, 114, 39}, {115, 115, 99}, {116, 122, 39}, },
+ {{36, 36, 35}, {48, 57, 36}, {65, 90, 37}, {95, 95, 38}, {97, 99, 39}, {100, 100, 100}, {101, 122, 39}, },
+ {{36, 36, 35}, {48, 57, 36}, {65, 90, 37}, {95, 95, 38}, {97, 100, 39}, {101, 101, 101}, {102, 122, 39}, },
+ {{36, 36, 35}, {48, 57, 36}, {65, 90, 37}, {95, 95, 38}, {97, 115, 39}, {116, 116, 102}, {117, 122, 39}, },
+ {{36, 36, 35}, {48, 57, 36}, {65, 90, 37}, {95, 95, 38}, {97, 122, 39}, },
+ {{36, 36, 35}, {48, 57, 36}, {65, 90, 37}, {95, 95, 38}, {97, 122, 39}, },
+ {{36, 36, 35}, {48, 57, 36}, {65, 90, 37}, {95, 95, 38}, {97, 122, 39}, },
+ {{36, 36, 35}, {48, 57, 36}, {65, 90, 37}, {95, 95, 38}, {97, 122, 39}, },
+ {{36, 36, 35}, {48, 57, 36}, {65, 90, 37}, {95, 95, 38}, {97, 122, 39}, },
+ {{36, 36, 35}, {48, 57, 36}, {65, 90, 37}, {95, 95, 38}, {97, 104, 39}, {105, 105, 103}, {106, 122, 39}, },
+ {{36, 36, 35}, {48, 57, 36}, {65, 90, 37}, {95, 95, 38}, {97, 110, 39}, {111, 111, 104}, {112, 122, 39}, },
+ {{36, 36, 35}, {48, 57, 36}, {65, 90, 37}, {95, 95, 38}, {97, 109, 39}, {110, 110, 105}, {111, 122, 39}, },
+ {{36, 36, 35}, {48, 57, 36}, {65, 90, 37}, {95, 95, 38}, {97, 114, 39}, {115, 115, 106}, {116, 122, 39}, },
+ {{36, 36, 35}, {48, 57, 36}, {65, 90, 37}, {95, 95, 38}, {97, 122, 39}, },
+ };
+
+ private static int[] accept =
+ {
+ -1, 33, 33, 33, 33, 32, -1, 14, 15, 21, 18, 23, 19, 8, 24, 29, 29, 26, 10, 11, 20, 32, 32, 32, 7, 32, 6, 12, 13, 32, 27, 16, 22, 17, 33, 32, 32, 32, 32, 32, -1, -1, 25, 9, -1, -1, -1, -1, 32, 32, 32, 32, 32, 32, 27, 32, 27, -1, 28, 28, -1, -1, -1, 34, 34, 30, 32, 32, 32, 32, 32, 32, 27, 31, -1, 34, 34, 32, 32, 32, 32, 32, 32, 27, 27, -1, -1, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 1, 3, 2, 4, 0, 32, 32, 32, 32, 5,
+ };
+}
Added: sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/lexer/LexerException.java
===================================================================
--- sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/lexer/LexerException.java (rev 0)
+++ sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/lexer/LexerException.java 2012-07-12 16:49:25 UTC (rev 248)
@@ -0,0 +1,16 @@
+/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+ * This file is part of SableCC. *
+ * See the file "LICENSE" for copyright information and the *
+ * terms and conditions for copying, distribution and *
+ * modification of SableCC. *
+ * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
+
+package org.sablecc.sablecc.lexer;
+
+public class LexerException extends Exception
+{
+ LexerException(String message)
+ {
+ super(message);
+ }
+}
Added: sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/lexer.txt
===================================================================
--- sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/lexer.txt (rev 0)
+++ sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/lexer.txt 2012-07-12 16:49:25 UTC (rev 248)
@@ -0,0 +1,423 @@
+/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+ * This file is part of SableCC. *
+ * See the file "LICENSE" for copyright information and the *
+ * terms and conditions for copying, distribution and *
+ * modification of SableCC. *
+ * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
+
+Macro:LexerException
+/* This file was generated by SableCC (http://www.sablecc.org/). */
+
+package $0$;
+
+public class LexerException extends Exception
+{
+ public LexerException(String message)
+ {
+ super(message);
+ }
+}
+
+$
+
+Macro:LexerHeader
+/* This file was generated by SableCC (http://www.sablecc.org/). */
+
+package $0$;
+
+import java.io.*;
+import java.util.*;
+import $1$.*;
+
+public class Lexer
+{
+ protected Token token;
+ protected State state = State.$2$;
+
+ private PushbackReader in;
+ private int line;
+ private int pos;
+ private boolean cr;
+ private boolean eof;
+ private final StringBuffer text = new StringBuffer();
+
+ protected void filter() throws LexerException, IOException
+ {
+ }
+
+ public Lexer(PushbackReader in)
+ {
+ this.in = in;
+
+ if(gotoTable == null)
+ {
+ try
+ {
+ DataInputStream s = new DataInputStream(
+ new BufferedInputStream(
+ Lexer.class.getResourceAsStream("lexer.dat")));
+
+ // 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][j] = new int[length][3];
+ for(int k = 0; k < gotoTable[i][j].length; k++)
+ {
+ for(int l = 0; l < 3; l++)
+ {
+ gotoTable[i][j][k][l] = s.readInt();
+ }
+ }
+ }
+ }
+
+ // read accept
+ length = s.readInt();
+ accept = new int[length][];
+ for(int i = 0; i < accept.length; i++)
+ {
+ length = s.readInt();
+ accept[i] = new int[length];
+ for(int j = 0; j < accept[i].length; j++)
+ {
+ accept[i][j] = s.readInt();
+ }
+ }
+
+ s.close();
+ }
+ catch(Exception e)
+ {
+ throw new RuntimeException("The file \"lexer.dat\" is either missing or corrupted.");
+ }
+ }
+ }
+
+ public Token peek() throws LexerException, IOException
+ {
+ while(token == null)
+ {
+ token = getToken();
+ filter();
+ }
+
+ return token;
+ }
+
+ public Token next() throws LexerException, IOException
+ {
+ while(token == null)
+ {
+ token = getToken();
+ filter();
+ }
+
+ Token result = token;
+ token = null;
+ return result;
+ }
+
+ protected Token getToken() throws IOException, LexerException
+ {
+ int dfa_state = 0;
+
+ int start_pos = pos;
+ int start_line = line;
+
+ int accept_state = -1;
+ int accept_token = -1;
+ int accept_length = -1;
+ int accept_pos = -1;
+ int accept_line = -1;
+
+ int[][][] gotoTable = this.gotoTable[state.id()];
+ int[] accept = this.accept[state.id()];
+ text.setLength(0);
+
+ while(true)
+ {
+ int c = getChar();
+
+ if(c != -1)
+ {
+ switch(c)
+ {
+ case 10:
+ if(cr)
+ {
+ cr = false;
+ }
+ else
+ {
+ line++;
+ pos = 0;
+ }
+ break;
+ case 13:
+ line++;
+ pos = 0;
+ cr = true;
+ break;
+ default:
+ pos++;
+ cr = false;
+ break;
+ };
+
+ text.append((char) c);
+
+ do
+ {
+ int oldState = (dfa_state < -1) ? (-2 -dfa_state) : dfa_state;
+
+ dfa_state = -1;
+
+ int[][] tmp1 = gotoTable[oldState];
+ int low = 0;
+ int high = tmp1.length - 1;
+
+ while(low <= high)
+ {
+ int middle = (low + high) / 2;
+ int[] tmp2 = tmp1[middle];
+
+ if(c < tmp2[0])
+ {
+ high = middle - 1;
+ }
+ else if(c > tmp2[1])
+ {
+ low = middle + 1;
+ }
+ else
+ {
+ dfa_state = tmp2[2];
+ break;
+ }
+ }
+ }while(dfa_state < -1);
+ }
+ else
+ {
+ dfa_state = -1;
+ }
+
+ if(dfa_state >= 0)
+ {
+ if(accept[dfa_state] != -1)
+ {
+ accept_state = dfa_state;
+ accept_token = accept[dfa_state];
+ accept_length = text.length();
+ accept_pos = pos;
+ accept_line = line;
+ }
+ }
+ else
+ {
+ if(accept_state != -1)
+ {
+ switch(accept_token)
+ {
+
+$
+
+Macro:LexerVariableToken
+ case $0$:
+ {
+ Token token = new$0$(
+ getText(accept_length),
+ start_line + 1,
+ start_pos + 1);
+ pushBack(accept_length);
+ pos = accept_pos;
+ line = accept_line;
+
+$
+
+Macro:LexerFixedToken
+ case $0$:
+ {
+ Token token = new$0$(
+ start_line + 1,
+ start_pos + 1);
+ pushBack(accept_length);
+ pos = accept_pos;
+ line = accept_line;
+
+$
+
+Macro:TokenSwitchHeader
+ switch(state.id())
+ {
+
+$
+
+Macro:TokenCase
+ case $0$: state = State.$1$; break;
+
+$
+
+Macro:TokenSwitchTail
+ }
+
+$
+
+Macro:LexerTokenTail
+ return token;
+ }
+
+$
+
+Macro:LexerBody1
+ }
+ }
+ else
+ {
+ if(text.length() > 0)
+ {
+ throw new LexerException(
+ "[" + (start_line + 1) + "," + (start_pos + 1) + "]" +
+ " Unknown token: " + text);
+ }
+ else
+ {
+ EOF token = new EOF(
+ start_line + 1,
+ start_pos + 1);
+ return token;
+ }
+ }
+ }
+ }
+ }
+
+
+$
+
+Macro:LexerNewVariableToken
+ Token new$0$(String text, int line, int pos) { return new $1$(text, line, pos); }
+
+$
+
+Macro:LexerNewFixedToken
+ Token new$0$(int line, int pos) { return new $1$(line, pos); }
+
+$
+
+Macro:LexerBody2
+
+ private int getChar() throws IOException
+ {
+ if(eof)
+ {
+ return -1;
+ }
+
+ int result = in.read();
+
+ if(result == -1)
+ {
+ eof = true;
+ }
+
+ return result;
+ }
+
+ private void pushBack(int acceptLength) throws IOException
+ {
+ int length = text.length();
+ for(int i = length - 1; i >= acceptLength; i--)
+ {
+ eof = false;
+
+ in.unread(text.charAt(i));
+ }
+ }
+
+ protected void unread(Token token) throws IOException
+ {
+ String text = token.getText();
+ int length = text.length();
+
+ for(int i = length - 1; i >= 0; i--)
+ {
+ eof = false;
+
+ in.unread(text.charAt(i));
+ }
+
+ pos = token.getPos() - 1;
+ line = token.getLine() - 1;
+ }
+
+ private String getText(int acceptLength)
+ {
+ StringBuffer s = new StringBuffer(acceptLength);
+ for(int i = 0; i < acceptLength; i++)
+ {
+ s.append(text.charAt(i));
+ }
+
+ return s.toString();
+ }
+
+ private static int[][][][] gotoTable;
+/* {
+
+$
+
+Macro:LexerAcceptHeader
+ };*/
+
+ private static int[][] accept;
+/* {
+
+$
+
+Macro:LexerAcceptTail
+ };*/
+
+
+$
+
+Macro:LexerStateHeader
+ public static class State
+ {
+
+$
+
+Macro:LexerStateBody
+ public final static State $0$ = new State($1$);
+
+$
+
+Macro:LexerStateTail
+
+ private int id;
+
+ private State(int id)
+ {
+ this.id = id;
+ }
+
+ public int id()
+ {
+ return id;
+ }
+ }
+
+$
+
+Macro:LexerTail
+}
+
+$
+
Added: sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/Alt.java
===================================================================
--- sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/Alt.java (rev 0)
+++ sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/Alt.java 2012-07-12 16:49:25 UTC (rev 248)
@@ -0,0 +1,13 @@
+/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+ * This file is part of SableCC. *
+ * See the file "LICENSE" for copyright information and the *
+ * terms and conditions for copying, distribution and *
+ * modification of SableCC. *
+ * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
+
+package org.sablecc.sablecc.node;
+
+public abstract class Alt extends Node
+{
+}
+
Added: sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/Alt1.java
===================================================================
--- sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/Alt1.java (rev 0)
+++ sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/Alt1.java 2012-07-12 16:49:25 UTC (rev 248)
@@ -0,0 +1,89 @@
+/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+ * This file is part of SableCC. *
+ * See the file "LICENSE" for copyright information and the *
+ * terms and conditions for copying, distribution and *
+ * modification of SableCC. *
+ * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
+
+package org.sablecc.sablecc.node;
+
+import org.sablecc.sablecc.Switch;
+import org.sablecc.sablecc.analysis.Analysis;
+
+public final class Alt1 extends Alt
+{
+ public void apply(Switch sw)
+ {
+ ((Analysis) sw).caseAlt1(this);
+ }
+
+ public String toString()
+ {
+ return ""
+ + node1
+ + node2;
+ }
+
+ private AltNameOpt node1;
+
+ public AltNameOpt getNode1()
+ {
+ return node1;
+ }
+
+ public void setNode1(AltNameOpt node)
+ {
+ if(node1 != null)
+ {
+ node1.setParent(null);
+ }
+
+ if(node.getParent() != null)
+ {
+ node.getParent().removeChild(node);
+ }
+
+ node.setParent(this);
+
+ node1 = node;
+ }
+
+ private Elems node2;
+
+ public Elems getNode2()
+ {
+ return node2;
+ }
+
+ public void setNode2(Elems node)
+ {
+ if(node2 != null)
+ {
+ node2.setParent(null);
+ }
+
+ if(node.getParent() != null)
+ {
+ node.getParent().removeChild(node);
+ }
+
+ node.setParent(this);
+
+ node2 = node;
+ }
+
+ void removeChild(Node child)
+ {
+ if(node1 == child)
+ {
+ node1 = null;
+ }
+
+ if(node2 == child)
+ {
+ node2 = null;
+ }
+
+ }
+}
+
Added: sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/Alt2.java
===================================================================
--- sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/Alt2.java (rev 0)
+++ sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/Alt2.java 2012-07-12 16:49:25 UTC (rev 248)
@@ -0,0 +1,149 @@
+/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+ * This file is part of SableCC. *
+ * See the file "LICENSE" for copyright information and the *
+ * terms and conditions for copying, distribution and *
+ * modification of SableCC. *
+ * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
+
+package org.sablecc.sablecc.node;
+
+import org.sablecc.sablecc.Switch;
+import org.sablecc.sablecc.analysis.Analysis;
+
+public final class Alt2 extends Alt
+{
+ public void apply(Switch sw)
+ {
+ ((Analysis) sw).caseAlt2(this);
+ }
+
+ public String toString()
+ {
+ return ""
+ + node1
+ + node2
+ + node3
+ + node4;
+ }
+
+ private TLPar node1;
+
+ public TLPar getNode1()
+ {
+ return node1;
+ }
+
+ public void setNode1(TLPar node)
+ {
+ if(node1 != null)
+ {
+ node1.setParent(null);
+ }
+
+ if(node.getParent() != null)
+ {
+ node.getParent().removeChild(node);
+ }
+
+ node.setParent(this);
+
+ node1 = node;
+ }
+
+ private AltNameOpt node2;
+
+ public AltNameOpt getNode2()
+ {
+ return node2;
+ }
+
+ public void setNode2(AltNameOpt node)
+ {
+ if(node2 != null)
+ {
+ node2.setParent(null);
+ }
+
+ if(node.getParent() != null)
+ {
+ node.getParent().removeChild(node);
+ }
+
+ node.setParent(this);
+
+ node2 = node;
+ }
+
+ private Elems node3;
+
+ public Elems getNode3()
+ {
+ return node3;
+ }
+
+ public void setNode3(Elems node)
+ {
+ if(node3 != null)
+ {
+ node3.setParent(null);
+ }
+
+ if(node.getParent() != null)
+ {
+ node.getParent().removeChild(node);
+ }
+
+ node.setParent(this);
+
+ node3 = node;
+ }
+
+ private TRPar node4;
+
+ public TRPar getNode4()
+ {
+ return node4;
+ }
+
+ public void setNode4(TRPar node)
+ {
+ if(node4 != null)
+ {
+ node4.setParent(null);
+ }
+
+ if(node.getParent() != null)
+ {
+ node.getParent().removeChild(node);
+ }
+
+ node.setParent(this);
+
+ node4 = node;
+ }
+
+ void removeChild(Node child)
+ {
+ if(node1 == child)
+ {
+ node1 = null;
+ }
+
+ if(node2 == child)
+ {
+ node2 = null;
+ }
+
+ if(node3 == child)
+ {
+ node3 = null;
+ }
+
+ if(node4 == child)
+ {
+ node4 = null;
+ }
+
+ }
+}
+
Added: sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/AltName.java
===================================================================
--- sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/AltName.java (rev 0)
+++ sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/AltName.java 2012-07-12 16:49:25 UTC (rev 248)
@@ -0,0 +1,13 @@
+/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+ * This file is part of SableCC. *
+ * See the file "LICENSE" for copyright information and the *
+ * terms and conditions for copying, distribution and *
+ * modification of SableCC. *
+ * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
+
+package org.sablecc.sablecc.node;
+
+public abstract class AltName extends Node
+{
+}
+
Added: sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/AltName1.java
===================================================================
--- sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/AltName1.java (rev 0)
+++ sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/AltName1.java 2012-07-12 16:49:25 UTC (rev 248)
@@ -0,0 +1,119 @@
+/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+ * This file is part of SableCC. *
+ * See the file "LICENSE" for copyright information and the *
+ * terms and conditions for copying, distribution and *
+ * modification of SableCC. *
+ * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
+
+package org.sablecc.sablecc.node;
+
+import org.sablecc.sablecc.Switch;
+import org.sablecc.sablecc.analysis.Analysis;
+
+public final class AltName1 extends AltName
+{
+ public void apply(Switch sw)
+ {
+ ((Analysis) sw).caseAltName1(this);
+ }
+
+ public String toString()
+ {
+ return ""
+ + node1
+ + node2
+ + node3;
+ }
+
+ private TLBrace node1;
+
+ public TLBrace getNode1()
+ {
+ return node1;
+ }
+
+ public void setNode1(TLBrace node)
+ {
+ if(node1 != null)
+ {
+ node1.setParent(null);
+ }
+
+ if(node.getParent() != null)
+ {
+ node.getParent().removeChild(node);
+ }
+
+ node.setParent(this);
+
+ node1 = node;
+ }
+
+ private TId node2;
+
+ public TId getNode2()
+ {
+ return node2;
+ }
+
+ public void setNode2(TId node)
+ {
+ if(node2 != null)
+ {
+ node2.setParent(null);
+ }
+
+ if(node.getParent() != null)
+ {
+ node.getParent().removeChild(node);
+ }
+
+ node.setParent(this);
+
+ node2 = node;
+ }
+
+ private TRBrace node3;
+
+ public TRBrace getNode3()
+ {
+ return node3;
+ }
+
+ public void setNode3(TRBrace node)
+ {
+ if(node3 != null)
+ {
+ node3.setParent(null);
+ }
+
+ if(node.getParent() != null)
+ {
+ node.getParent().removeChild(node);
+ }
+
+ node.setParent(this);
+
+ node3 = node;
+ }
+
+ void removeChild(Node child)
+ {
+ if(node1 == child)
+ {
+ node1 = null;
+ }
+
+ if(node2 == child)
+ {
+ node2 = null;
+ }
+
+ if(node3 == child)
+ {
+ node3 = null;
+ }
+
+ }
+}
+
Added: sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/AltNameOpt.java
===================================================================
--- sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/AltNameOpt.java (rev 0)
+++ sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/AltNameOpt.java 2012-07-12 16:49:25 UTC (rev 248)
@@ -0,0 +1,13 @@
+/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+ * This file is part of SableCC. *
+ * See the file "LICENSE" for copyright information and the *
+ * terms and conditions for copying, distribution and *
+ * modification of SableCC. *
+ * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
+
+package org.sablecc.sablecc.node;
+
+public abstract class AltNameOpt extends Node
+{
+}
+
Added: sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/AltNameOpt1.java
===================================================================
--- sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/AltNameOpt1.java (rev 0)
+++ sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/AltNameOpt1.java 2012-07-12 16:49:25 UTC (rev 248)
@@ -0,0 +1,59 @@
+/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+ * This file is part of SableCC. *
+ * See the file "LICENSE" for copyright information and the *
+ * terms and conditions for copying, distribution and *
+ * modification of SableCC. *
+ * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
+
+package org.sablecc.sablecc.node;
+
+import org.sablecc.sablecc.Switch;
+import org.sablecc.sablecc.analysis.Analysis;
+
+public final class AltNameOpt1 extends AltNameOpt
+{
+ public void apply(Switch sw)
+ {
+ ((Analysis) sw).caseAltNameOpt1(this);
+ }
+
+ public String toString()
+ {
+ return ""
+ + node1;
+ }
+
+ private AltName node1;
+
+ public AltName getNode1()
+ {
+ return node1;
+ }
+
+ public void setNode1(AltName node)
+ {
+ if(node1 != null)
+ {
+ node1.setParent(null);
+ }
+
+ if(node.getParent() != null)
+ {
+ node.getParent().removeChild(node);
+ }
+
+ node.setParent(this);
+
+ node1 = node;
+ }
+
+ void removeChild(Node child)
+ {
+ if(node1 == child)
+ {
+ node1 = null;
+ }
+
+ }
+}
+
Added: sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/AltNameOpt2.java
===================================================================
--- sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/AltNameOpt2.java (rev 0)
+++ sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/AltNameOpt2.java 2012-07-12 16:49:25 UTC (rev 248)
@@ -0,0 +1,29 @@
+/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+ * This file is part of SableCC. *
+ * See the file "LICENSE" for copyright information and the *
+ * terms and conditions for copying, distribution and *
+ * modification of SableCC. *
+ * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
+
+package org.sablecc.sablecc.node;
+
+import org.sablecc.sablecc.Switch;
+import org.sablecc.sablecc.analysis.Analysis;
+
+public final class AltNameOpt2 extends AltNameOpt
+{
+ public void apply(Switch sw)
+ {
+ ((Analysis) sw).caseAltNameOpt2(this);
+ }
+
+ public String toString()
+ {
+ return "";
+ }
+
+ void removeChild(Node child)
+ {
+ }
+}
+
Added: sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/Alts.java
===================================================================
--- sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/Alts.java (rev 0)
+++ sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/Alts.java 2012-07-12 16:49:25 UTC (rev 248)
@@ -0,0 +1,13 @@
+/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+ * This file is part of SableCC. *
+ * See the file "LICENSE" for copyright information and the *
+ * terms and conditions for copying, distribution and *
+ * modification of SableCC. *
+ * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
+
+package org.sablecc.sablecc.node;
+
+public abstract class Alts extends Node
+{
+}
+
Added: sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/Alts1.java
===================================================================
--- sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/Alts1.java (rev 0)
+++ sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/Alts1.java 2012-07-12 16:49:25 UTC (rev 248)
@@ -0,0 +1,89 @@
+/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+ * This file is part of SableCC. *
+ * See the file "LICENSE" for copyright information and the *
+ * terms and conditions for copying, distribution and *
+ * modification of SableCC. *
+ * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
+
+package org.sablecc.sablecc.node;
+
+import org.sablecc.sablecc.Switch;
+import org.sablecc.sablecc.analysis.Analysis;
+
+public final class Alts1 extends Alts
+{
+ public void apply(Switch sw)
+ {
+ ((Analysis) sw).caseAlts1(this);
+ }
+
+ public String toString()
+ {
+ return ""
+ + node1
+ + node2;
+ }
+
+ private Alt node1;
+
+ public Alt getNode1()
+ {
+ return node1;
+ }
+
+ public void setNode1(Alt node)
+ {
+ if(node1 != null)
+ {
+ node1.setParent(null);
+ }
+
+ if(node.getParent() != null)
+ {
+ node.getParent().removeChild(node);
+ }
+
+ node.setParent(this);
+
+ node1 = node;
+ }
+
+ private AltsTails node2;
+
+ public AltsTails getNode2()
+ {
+ return node2;
+ }
+
+ public void setNode2(AltsTails node)
+ {
+ if(node2 != null)
+ {
+ node2.setParent(null);
+ }
+
+ if(node.getParent() != null)
+ {
+ node.getParent().removeChild(node);
+ }
+
+ node.setParent(this);
+
+ node2 = node;
+ }
+
+ void removeChild(Node child)
+ {
+ if(node1 == child)
+ {
+ node1 = null;
+ }
+
+ if(node2 == child)
+ {
+ node2 = null;
+ }
+
+ }
+}
+
Added: sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/AltsTail.java
===================================================================
--- sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/AltsTail.java (rev 0)
+++ sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/AltsTail.java 2012-07-12 16:49:25 UTC (rev 248)
@@ -0,0 +1,13 @@
+/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+ * This file is part of SableCC. *
+ * See the file "LICENSE" for copyright information and the *
+ * terms and conditions for copying, distribution and *
+ * modification of SableCC. *
+ * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
+
+package org.sablecc.sablecc.node;
+
+public abstract class AltsTail extends Node
+{
+}
+
Added: sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/AltsTail1.java
===================================================================
--- sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/AltsTail1.java (rev 0)
+++ sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/AltsTail1.java 2012-07-12 16:49:25 UTC (rev 248)
@@ -0,0 +1,89 @@
+/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+ * This file is part of SableCC. *
+ * See the file "LICENSE" for copyright information and the *
+ * terms and conditions for copying, distribution and *
+ * modification of SableCC. *
+ * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
+
+package org.sablecc.sablecc.node;
+
+import org.sablecc.sablecc.Switch;
+import org.sablecc.sablecc.analysis.Analysis;
+
+public final class AltsTail1 extends AltsTail
+{
+ public void apply(Switch sw)
+ {
+ ((Analysis) sw).caseAltsTail1(this);
+ }
+
+ public String toString()
+ {
+ return ""
+ + node1
+ + node2;
+ }
+
+ private TBar node1;
+
+ public TBar getNode1()
+ {
+ return node1;
+ }
+
+ public void setNode1(TBar node)
+ {
+ if(node1 != null)
+ {
+ node1.setParent(null);
+ }
+
+ if(node.getParent() != null)
+ {
+ node.getParent().removeChild(node);
+ }
+
+ node.setParent(this);
+
+ node1 = node;
+ }
+
+ private Alt node2;
+
+ public Alt getNode2()
+ {
+ return node2;
+ }
+
+ public void setNode2(Alt node)
+ {
+ if(node2 != null)
+ {
+ node2.setParent(null);
+ }
+
+ if(node.getParent() != null)
+ {
+ node.getParent().removeChild(node);
+ }
+
+ node.setParent(this);
+
+ node2 = node;
+ }
+
+ void removeChild(Node child)
+ {
+ if(node1 == child)
+ {
+ node1 = null;
+ }
+
+ if(node2 == child)
+ {
+ node2 = null;
+ }
+
+ }
+}
+
Added: sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/AltsTails.java
===================================================================
--- sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/AltsTails.java (rev 0)
+++ sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/AltsTails.java 2012-07-12 16:49:25 UTC (rev 248)
@@ -0,0 +1,13 @@
+/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+ * This file is part of SableCC. *
+ * See the file "LICENSE" for copyright information and the *
+ * terms and conditions for copying, distribution and *
+ * modification of SableCC. *
+ * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
+
+package org.sablecc.sablecc.node;
+
+public abstract class AltsTails extends Node
+{
+}
+
Added: sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/AltsTails1.java
===================================================================
--- sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/AltsTails1.java (rev 0)
+++ sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/AltsTails1.java 2012-07-12 16:49:25 UTC (rev 248)
@@ -0,0 +1,89 @@
+/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+ * This file is part of SableCC. *
+ * See the file "LICENSE" for copyright information and the *
+ * terms and conditions for copying, distribution and *
+ * modification of SableCC. *
+ * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
+
+package org.sablecc.sablecc.node;
+
+import org.sablecc.sablecc.Switch;
+import org.sablecc.sablecc.analysis.Analysis;
+
+public final class AltsTails1 extends AltsTails
+{
+ public void apply(Switch sw)
+ {
+ ((Analysis) sw).caseAltsTails1(this);
+ }
+
+ public String toString()
+ {
+ return ""
+ + node1
+ + node2;
+ }
+
+ private AltsTail node1;
+
+ public AltsTail getNode1()
+ {
+ return node1;
+ }
+
+ public void setNode1(AltsTail node)
+ {
+ if(node1 != null)
+ {
+ node1.setParent(null);
+ }
+
+ if(node.getParent() != null)
+ {
+ node.getParent().removeChild(node);
+ }
+
+ node.setParent(this);
+
+ node1 = node;
+ }
+
+ private AltsTails node2;
+
+ public AltsTails getNode2()
+ {
+ return node2;
+ }
+
+ public void setNode2(AltsTails node)
+ {
+ if(node2 != null)
+ {
+ node2.setParent(null);
+ }
+
+ if(node.getParent() != null)
+ {
+ node.getParent().removeChild(node);
+ }
+
+ node.setParent(this);
+
+ node2 = node;
+ }
+
+ void removeChild(Node child)
+ {
+ if(node1 == child)
+ {
+ node1 = null;
+ }
+
+ if(node2 == child)
+ {
+ node2 = null;
+ }
+
+ }
+}
+
Added: sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/AltsTails2.java
===================================================================
--- sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/AltsTails2.java (rev 0)
+++ sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/AltsTails2.java 2012-07-12 16:49:25 UTC (rev 248)
@@ -0,0 +1,29 @@
+/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+ * This file is part of SableCC. *
+ * See the file "LICENSE" for copyright information and the *
+ * terms and conditions for copying, distribution and *
+ * modification of SableCC. *
+ * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
+
+package org.sablecc.sablecc.node;
+
+import org.sablecc.sablecc.Switch;
+import org.sablecc.sablecc.analysis.Analysis;
+
+public final class AltsTails2 extends AltsTails
+{
+ public void apply(Switch sw)
+ {
+ ((Analysis) sw).caseAltsTails2(this);
+ }
+
+ public String toString()
+ {
+ return "";
+ }
+
+ void removeChild(Node child)
+ {
+ }
+}
+
Added: sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/Basic.java
===================================================================
--- sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/Basic.java (rev 0)
+++ sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/Basic.java 2012-07-12 16:49:25 UTC (rev 248)
@@ -0,0 +1,13 @@
+/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+ * This file is part of SableCC. *
+ * See the file "LICENSE" for copyright information and the *
+ * terms and conditions for copying, distribution and *
+ * modification of SableCC. *
+ * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
+
+package org.sablecc.sablecc.node;
+
+public abstract class Basic extends Node
+{
+}
+
Added: sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/Basic1.java
===================================================================
--- sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/Basic1.java (rev 0)
+++ sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/Basic1.java 2012-07-12 16:49:25 UTC (rev 248)
@@ -0,0 +1,59 @@
+/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+ * This file is part of SableCC. *
+ * See the file "LICENSE" for copyright information and the *
+ * terms and conditions for copying, distribution and *
+ * modification of SableCC. *
+ * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
+
+package org.sablecc.sablecc.node;
+
+import org.sablecc.sablecc.Switch;
+import org.sablecc.sablecc.analysis.Analysis;
+
+public final class Basic1 extends Basic
+{
+ public void apply(Switch sw)
+ {
+ ((Analysis) sw).caseBasic1(this);
+ }
+
+ public String toString()
+ {
+ return ""
+ + node1;
+ }
+
+ private PChar node1;
+
+ public PChar getNode1()
+ {
+ return node1;
+ }
+
+ public void setNode1(PChar node)
+ {
+ if(node1 != null)
+ {
+ node1.setParent(null);
+ }
+
+ if(node.getParent() != null)
+ {
+ node.getParent().removeChild(node);
+ }
+
+ node.setParent(this);
+
+ node1 = node;
+ }
+
+ void removeChild(Node child)
+ {
+ if(node1 == child)
+ {
+ node1 = null;
+ }
+
+ }
+}
+
Added: sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/Basic2.java
===================================================================
--- sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/Basic2.java (rev 0)
+++ sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/Basic2.java 2012-07-12 16:49:25 UTC (rev 248)
@@ -0,0 +1,59 @@
+/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+ * This file is part of SableCC. *
+ * See the file "LICENSE" for copyright information and the *
+ * terms and conditions for copying, distribution and *
+ * modification of SableCC. *
+ * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
+
+package org.sablecc.sablecc.node;
+
+import org.sablecc.sablecc.Switch;
+import org.sablecc.sablecc.analysis.Analysis;
+
+public final class Basic2 extends Basic
+{
+ public void apply(Switch sw)
+ {
+ ((Analysis) sw).caseBasic2(this);
+ }
+
+ public String toString()
+ {
+ return ""
+ + node1;
+ }
+
+ private PSet node1;
+
+ public PSet getNode1()
+ {
+ return node1;
+ }
+
+ public void setNode1(PSet node)
+ {
+ if(node1 != null)
+ {
+ node1.setParent(null);
+ }
+
+ if(node.getParent() != null)
+ {
+ node.getParent().removeChild(node);
+ }
+
+ node.setParent(this);
+
+ node1 = node;
+ }
+
+ void removeChild(Node child)
+ {
+ if(node1 == child)
+ {
+ node1 = null;
+ }
+
+ }
+}
+
Added: sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/Basic3.java
===================================================================
--- sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/Basic3.java (rev 0)
+++ sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/Basic3.java 2012-07-12 16:49:25 UTC (rev 248)
@@ -0,0 +1,59 @@
+/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+ * This file is part of SableCC. *
+ * See the file "LICENSE" for copyright information and the *
+ * terms and conditions for copying, distribution and *
+ * modification of SableCC. *
+ * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
+
+package org.sablecc.sablecc.node;
+
+import org.sablecc.sablecc.Switch;
+import org.sablecc.sablecc.analysis.Analysis;
+
+public final class Basic3 extends Basic
+{
+ public void apply(Switch sw)
+ {
+ ((Analysis) sw).caseBasic3(this);
+ }
+
+ public String toString()
+ {
+ return ""
+ + node1;
+ }
+
+ private TString node1;
+
+ public TString getNode1()
+ {
+ return node1;
+ }
+
+ public void setNode1(TString node)
+ {
+ if(node1 != null)
+ {
+ node1.setParent(null);
+ }
+
+ if(node.getParent() != null)
+ {
+ node.getParent().removeChild(node);
+ }
+
+ node.setParent(this);
+
+ node1 = node;
+ }
+
+ void removeChild(Node child)
+ {
+ if(node1 == child)
+ {
+ node1 = null;
+ }
+
+ }
+}
+
Added: sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/Basic4.java
===================================================================
--- sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/Basic4.java (rev 0)
+++ sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/Basic4.java 2012-07-12 16:49:25 UTC (rev 248)
@@ -0,0 +1,59 @@
+/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+ * This file is part of SableCC. *
+ * See the file "LICENSE" for copyright information and the *
+ * terms and conditions for copying, distribution and *
+ * modification of SableCC. *
+ * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
+
+package org.sablecc.sablecc.node;
+
+import org.sablecc.sablecc.Switch;
+import org.sablecc.sablecc.analysis.Analysis;
+
+public final class Basic4 extends Basic
+{
+ public void apply(Switch sw)
+ {
+ ((Analysis) sw).caseBasic4(this);
+ }
+
+ public String toString()
+ {
+ return ""
+ + node1;
+ }
+
+ private TId node1;
+
+ public TId getNode1()
+ {
+ return node1;
+ }
+
+ public void setNode1(TId node)
+ {
+ if(node1 != null)
+ {
+ node1.setParent(null);
+ }
+
+ if(node.getParent() != null)
+ {
+ node.getParent().removeChild(node);
+ }
+
+ node.setParent(this);
+
+ node1 = node;
+ }
+
+ void removeChild(Node child)
+ {
+ if(node1 == child)
+ {
+ node1 = null;
+ }
+
+ }
+}
+
Added: sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/Basic5.java
===================================================================
--- sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/Basic5.java (rev 0)
+++ sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/Basic5.java 2012-07-12 16:49:25 UTC (rev 248)
@@ -0,0 +1,119 @@
+/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+ * This file is part of SableCC. *
+ * See the file "LICENSE" for copyright information and the *
+ * terms and conditions for copying, distribution and *
+ * modification of SableCC. *
+ * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
+
+package org.sablecc.sablecc.node;
+
+import org.sablecc.sablecc.Switch;
+import org.sablecc.sablecc.analysis.Analysis;
+
+public final class Basic5 extends Basic
+{
+ public void apply(Switch sw)
+ {
+ ((Analysis) sw).caseBasic5(this);
+ }
+
+ public String toString()
+ {
+ return ""
+ + node1
+ + node2
+ + node3;
+ }
+
+ private TLPar node1;
+
+ public TLPar getNode1()
+ {
+ return node1;
+ }
+
+ public void setNode1(TLPar node)
+ {
+ if(node1 != null)
+ {
+ node1.setParent(null);
+ }
+
+ if(node.getParent() != null)
+ {
+ node.getParent().removeChild(node);
+ }
+
+ node.setParent(this);
+
+ node1 = node;
+ }
+
+ private RegExp node2;
+
+ public RegExp getNode2()
+ {
+ return node2;
+ }
+
+ public void setNode2(RegExp node)
+ {
+ if(node2 != null)
+ {
+ node2.setParent(null);
+ }
+
+ if(node.getParent() != null)
+ {
+ node.getParent().removeChild(node);
+ }
+
+ node.setParent(this);
+
+ node2 = node;
+ }
+
+ private TRPar node3;
+
+ public TRPar getNode3()
+ {
+ return node3;
+ }
+
+ public void setNode3(TRPar node)
+ {
+ if(node3 != null)
+ {
+ node3.setParent(null);
+ }
+
+ if(node.getParent() != null)
+ {
+ node.getParent().removeChild(node);
+ }
+
+ node.setParent(this);
+
+ node3 = node;
+ }
+
+ void removeChild(Node child)
+ {
+ if(node1 == child)
+ {
+ node1 = null;
+ }
+
+ if(node2 == child)
+ {
+ node2 = null;
+ }
+
+ if(node3 == child)
+ {
+ node3 = null;
+ }
+
+ }
+}
+
Added: sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/BinOp.java
===================================================================
--- sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/BinOp.java (rev 0)
+++ sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/BinOp.java 2012-07-12 16:49:25 UTC (rev 248)
@@ -0,0 +1,13 @@
+/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+ * This file is part of SableCC. *
+ * See the file "LICENSE" for copyright information and the *
+ * terms and conditions for copying, distribution and *
+ * modification of SableCC. *
+ * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
+
+package org.sablecc.sablecc.node;
+
+public abstract class BinOp extends Node
+{
+}
+
Added: sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/BinOp1.java
===================================================================
--- sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/BinOp1.java (rev 0)
+++ sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/BinOp1.java 2012-07-12 16:49:25 UTC (rev 248)
@@ -0,0 +1,59 @@
+/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+ * This file is part of SableCC. *
+ * See the file "LICENSE" for copyright information and the *
+ * terms and conditions for copying, distribution and *
+ * modification of SableCC. *
+ * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
+
+package org.sablecc.sablecc.node;
+
+import org.sablecc.sablecc.Switch;
+import org.sablecc.sablecc.analysis.Analysis;
+
+public final class BinOp1 extends BinOp
+{
+ public void apply(Switch sw)
+ {
+ ((Analysis) sw).caseBinOp1(this);
+ }
+
+ public String toString()
+ {
+ return ""
+ + node1;
+ }
+
+ private TPlus node1;
+
+ public TPlus getNode1()
+ {
+ return node1;
+ }
+
+ public void setNode1(TPlus node)
+ {
+ if(node1 != null)
+ {
+ node1.setParent(null);
+ }
+
+ if(node.getParent() != null)
+ {
+ node.getParent().removeChild(node);
+ }
+
+ node.setParent(this);
+
+ node1 = node;
+ }
+
+ void removeChild(Node child)
+ {
+ if(node1 == child)
+ {
+ node1 = null;
+ }
+
+ }
+}
+
Added: sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/BinOp2.java
===================================================================
--- sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/BinOp2.java (rev 0)
+++ sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/BinOp2.java 2012-07-12 16:49:25 UTC (rev 248)
@@ -0,0 +1,59 @@
+/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+ * This file is part of SableCC. *
+ * See the file "LICENSE" for copyright information and the *
+ * terms and conditions for copying, distribution and *
+ * modification of SableCC. *
+ * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
+
+package org.sablecc.sablecc.node;
+
+import org.sablecc.sablecc.Switch;
+import org.sablecc.sablecc.analysis.Analysis;
+
+public final class BinOp2 extends BinOp
+{
+ public void apply(Switch sw)
+ {
+ ((Analysis) sw).caseBinOp2(this);
+ }
+
+ public String toString()
+ {
+ return ""
+ + node1;
+ }
+
+ private TMinus node1;
+
+ public TMinus getNode1()
+ {
+ return node1;
+ }
+
+ public void setNode1(TMinus node)
+ {
+ if(node1 != null)
+ {
+ node1.setParent(null);
+ }
+
+ if(node.getParent() != null)
+ {
+ node.getParent().removeChild(node);
+ }
+
+ node.setParent(this);
+
+ node1 = node;
+ }
+
+ void removeChild(Node child)
+ {
+ if(node1 == child)
+ {
+ node1 = null;
+ }
+
+ }
+}
+
Added: sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/Concat.java
===================================================================
--- sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/Concat.java (rev 0)
+++ sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/Concat.java 2012-07-12 16:49:25 UTC (rev 248)
@@ -0,0 +1,13 @@
+/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+ * This file is part of SableCC. *
+ * See the file "LICENSE" for copyright information and the *
+ * terms and conditions for copying, distribution and *
+ * modification of SableCC. *
+ * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
+
+package org.sablecc.sablecc.node;
+
+public abstract class Concat extends Node
+{
+}
+
Added: sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/Concat1.java
===================================================================
--- sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/Concat1.java (rev 0)
+++ sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/Concat1.java 2012-07-12 16:49:25 UTC (rev 248)
@@ -0,0 +1,59 @@
+/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+ * This file is part of SableCC. *
+ * See the file "LICENSE" for copyright information and the *
+ * terms and conditions for copying, distribution and *
+ * modification of SableCC. *
+ * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
+
+package org.sablecc.sablecc.node;
+
+import org.sablecc.sablecc.Switch;
+import org.sablecc.sablecc.analysis.Analysis;
+
+public final class Concat1 extends Concat
+{
+ public void apply(Switch sw)
+ {
+ ((Analysis) sw).caseConcat1(this);
+ }
+
+ public String toString()
+ {
+ return ""
+ + node1;
+ }
+
+ private UnExps node1;
+
+ public UnExps getNode1()
+ {
+ return node1;
+ }
+
+ public void setNode1(UnExps node)
+ {
+ if(node1 != null)
+ {
+ node1.setParent(null);
+ }
+
+ if(node.getParent() != null)
+ {
+ node.getParent().removeChild(node);
+ }
+
+ node.setParent(this);
+
+ node1 = node;
+ }
+
+ void removeChild(Node child)
+ {
+ if(node1 == child)
+ {
+ node1 = null;
+ }
+
+ }
+}
+
Added: sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/EOF.java
===================================================================
--- sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/EOF.java (rev 0)
+++ sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/EOF.java 2012-07-12 16:49:25 UTC (rev 248)
@@ -0,0 +1,25 @@
+/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+ * This file is part of SableCC. *
+ * See the file "LICENSE" for copyright information and the *
+ * terms and conditions for copying, distribution and *
+ * modification of SableCC. *
+ * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
+
+package org.sablecc.sablecc.node;
+
+import org.sablecc.sablecc.Switch;
+import org.sablecc.sablecc.analysis.Analysis;
+
+public final class EOF extends Token
+{
+ public void apply(Switch sw)
+ {
+ ((Analysis) sw).caseEOF(this);
+ }
+
+ public String toString()
+ {
+ return "";
+ }
+}
+
Added: sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/Elem.java
===================================================================
--- sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/Elem.java (rev 0)
+++ sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/Elem.java 2012-07-12 16:49:25 UTC (rev 248)
@@ -0,0 +1,13 @@
+/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+ * This file is part of SableCC. *
+ * See the file "LICENSE" for copyright information and the *
+ * terms and conditions for copying, distribution and *
+ * modification of SableCC. *
+ * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
+
+package org.sablecc.sablecc.node;
+
+public abstract class Elem extends Node
+{
+}
+
Added: sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/Elem1.java
===================================================================
--- sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/Elem1.java (rev 0)
+++ sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/Elem1.java 2012-07-12 16:49:25 UTC (rev 248)
@@ -0,0 +1,149 @@
+/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+ * This file is part of SableCC. *
+ * See the file "LICENSE" for copyright information and the *
+ * terms and conditions for copying, distribution and *
+ * modification of SableCC. *
+ * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
+
+package org.sablecc.sablecc.node;
+
+import org.sablecc.sablecc.Switch;
+import org.sablecc.sablecc.analysis.Analysis;
+
+public final class Elem1 extends Elem
+{
+ public void apply(Switch sw)
+ {
+ ((Analysis) sw).caseElem1(this);
+ }
+
+ public String toString()
+ {
+ return ""
+ + node1
+ + node2
+ + node3
+ + node4;
+ }
+
+ private ElemNameOpt node1;
+
+ public ElemNameOpt getNode1()
+ {
+ return node1;
+ }
+
+ public void setNode1(ElemNameOpt node)
+ {
+ if(node1 != null)
+ {
+ node1.setParent(null);
+ }
+
+ if(node.getParent() != null)
+ {
+ node.getParent().removeChild(node);
+ }
+
+ node.setParent(this);
+
+ node1 = node;
+ }
+
+ private SpecifierOpt node2;
+
+ public SpecifierOpt getNode2()
+ {
+ return node2;
+ }
+
+ public void setNode2(SpecifierOpt node)
+ {
+ if(node2 != null)
+ {
+ node2.setParent(null);
+ }
+
+ if(node.getParent() != null)
+ {
+ node.getParent().removeChild(node);
+ }
+
+ node.setParent(this);
+
+ node2 = node;
+ }
+
+ private TId node3;
+
+ public TId getNode3()
+ {
+ return node3;
+ }
+
+ public void setNode3(TId node)
+ {
+ if(node3 != null)
+ {
+ node3.setParent(null);
+ }
+
+ if(node.getParent() != null)
+ {
+ node.getParent().removeChild(node);
+ }
+
+ node.setParent(this);
+
+ node3 = node;
+ }
+
+ private UnOpOpt node4;
+
+ public UnOpOpt getNode4()
+ {
+ return node4;
+ }
+
+ public void setNode4(UnOpOpt node)
+ {
+ if(node4 != null)
+ {
+ node4.setParent(null);
+ }
+
+ if(node.getParent() != null)
+ {
+ node.getParent().removeChild(node);
+ }
+
+ node.setParent(this);
+
+ node4 = node;
+ }
+
+ void removeChild(Node child)
+ {
+ if(node1 == child)
+ {
+ node1 = null;
+ }
+
+ if(node2 == child)
+ {
+ node2 = null;
+ }
+
+ if(node3 == child)
+ {
+ node3 = null;
+ }
+
+ if(node4 == child)
+ {
+ node4 = null;
+ }
+
+ }
+}
+
Added: sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/ElemName.java
===================================================================
--- sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/ElemName.java (rev 0)
+++ sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/ElemName.java 2012-07-12 16:49:25 UTC (rev 248)
@@ -0,0 +1,13 @@
+/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+ * This file is part of SableCC. *
+ * See the file "LICENSE" for copyright information and the *
+ * terms and conditions for copying, distribution and *
+ * modification of SableCC. *
+ * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
+
+package org.sablecc.sablecc.node;
+
+public abstract class ElemName extends Node
+{
+}
+
Added: sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/ElemName1.java
===================================================================
--- sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/ElemName1.java (rev 0)
+++ sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/ElemName1.java 2012-07-12 16:49:25 UTC (rev 248)
@@ -0,0 +1,149 @@
+/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+ * This file is part of SableCC. *
+ * See the file "LICENSE" for copyright information and the *
+ * terms and conditions for copying, distribution and *
+ * modification of SableCC. *
+ * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
+
+package org.sablecc.sablecc.node;
+
+import org.sablecc.sablecc.Switch;
+import org.sablecc.sablecc.analysis.Analysis;
+
+public final class ElemName1 extends ElemName
+{
+ public void apply(Switch sw)
+ {
+ ((Analysis) sw).caseElemName1(this);
+ }
+
+ public String toString()
+ {
+ return ""
+ + node1
+ + node2
+ + node3
+ + node4;
+ }
+
+ private TLBkt node1;
+
+ public TLBkt getNode1()
+ {
+ return node1;
+ }
+
+ public void setNode1(TLBkt node)
+ {
+ if(node1 != null)
+ {
+ node1.setParent(null);
+ }
+
+ if(node.getParent() != null)
+ {
+ node.getParent().removeChild(node);
+ }
+
+ node.setParent(this);
+
+ node1 = node;
+ }
+
+ private TId node2;
+
+ public TId getNode2()
+ {
+ return node2;
+ }
+
+ public void setNode2(TId node)
+ {
+ if(node2 != null)
+ {
+ node2.setParent(null);
+ }
+
+ if(node.getParent() != null)
+ {
+ node.getParent().removeChild(node);
+ }
+
+ node.setParent(this);
+
+ node2 = node;
+ }
+
+ private TRBkt node3;
+
+ public TRBkt getNode3()
+ {
+ return node3;
+ }
+
+ public void setNode3(TRBkt node)
+ {
+ if(node3 != null)
+ {
+ node3.setParent(null);
+ }
+
+ if(node.getParent() != null)
+ {
+ node.getParent().removeChild(node);
+ }
+
+ node.setParent(this);
+
+ node3 = node;
+ }
+
+ private TColon node4;
+
+ public TColon getNode4()
+ {
+ return node4;
+ }
+
+ public void setNode4(TColon node)
+ {
+ if(node4 != null)
+ {
+ node4.setParent(null);
+ }
+
+ if(node.getParent() != null)
+ {
+ node.getParent().removeChild(node);
+ }
+
+ node.setParent(this);
+
+ node4 = node;
+ }
+
+ void removeChild(Node child)
+ {
+ if(node1 == child)
+ {
+ node1 = null;
+ }
+
+ if(node2 == child)
+ {
+ node2 = null;
+ }
+
+ if(node3 == child)
+ {
+ node3 = null;
+ }
+
+ if(node4 == child)
+ {
+ node4 = null;
+ }
+
+ }
+}
+
Added: sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/ElemNameOpt.java
===================================================================
--- sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/ElemNameOpt.java (rev 0)
+++ sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/ElemNameOpt.java 2012-07-12 16:49:25 UTC (rev 248)
@@ -0,0 +1,13 @@
+/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+ * This file is part of SableCC. *
+ * See the file "LICENSE" for copyright information and the *
+ * terms and conditions for copying, distribution and *
+ * modification of SableCC. *
+ * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
+
+package org.sablecc.sablecc.node;
+
+public abstract class ElemNameOpt extends Node
+{
+}
+
Added: sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/ElemNameOpt1.java
===================================================================
--- sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/ElemNameOpt1.java (rev 0)
+++ sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/ElemNameOpt1.java 2012-07-12 16:49:25 UTC (rev 248)
@@ -0,0 +1,59 @@
+/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+ * This file is part of SableCC. *
+ * See the file "LICENSE" for copyright information and the *
+ * terms and conditions for copying, distribution and *
+ * modification of SableCC. *
+ * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
+
+package org.sablecc.sablecc.node;
+
+import org.sablecc.sablecc.Switch;
+import org.sablecc.sablecc.analysis.Analysis;
+
+public final class ElemNameOpt1 extends ElemNameOpt
+{
+ public void apply(Switch sw)
+ {
+ ((Analysis) sw).caseElemNameOpt1(this);
+ }
+
+ public String toString()
+ {
+ return ""
+ + node1;
+ }
+
+ private ElemName node1;
+
+ public ElemName getNode1()
+ {
+ return node1;
+ }
+
+ public void setNode1(ElemName node)
+ {
+ if(node1 != null)
+ {
+ node1.setParent(null);
+ }
+
+ if(node.getParent() != null)
+ {
+ node.getParent().removeChild(node);
+ }
+
+ node.setParent(this);
+
+ node1 = node;
+ }
+
+ void removeChild(Node child)
+ {
+ if(node1 == child)
+ {
+ node1 = null;
+ }
+
+ }
+}
+
Added: sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/ElemNameOpt2.java
===================================================================
--- sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/ElemNameOpt2.java (rev 0)
+++ sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/ElemNameOpt2.java 2012-07-12 16:49:25 UTC (rev 248)
@@ -0,0 +1,29 @@
+/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+ * This file is part of SableCC. *
+ * See the file "LICENSE" for copyright information and the *
+ * terms and conditions for copying, distribution and *
+ * modification of SableCC. *
+ * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
+
+package org.sablecc.sablecc.node;
+
+import org.sablecc.sablecc.Switch;
+import org.sablecc.sablecc.analysis.Analysis;
+
+public final class ElemNameOpt2 extends ElemNameOpt
+{
+ public void apply(Switch sw)
+ {
+ ((Analysis) sw).caseElemNameOpt2(this);
+ }
+
+ public String toString()
+ {
+ return "";
+ }
+
+ void removeChild(Node child)
+ {
+ }
+}
+
Added: sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/Elems.java
===================================================================
--- sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/Elems.java (rev 0)
+++ sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/Elems.java 2012-07-12 16:49:25 UTC (rev 248)
@@ -0,0 +1,13 @@
+/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+ * This file is part of SableCC. *
+ * See the file "LICENSE" for copyright information and the *
+ * terms and conditions for copying, distribution and *
+ * modification of SableCC. *
+ * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
+
+package org.sablecc.sablecc.node;
+
+public abstract class Elems extends Node
+{
+}
+
Added: sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/Elems1.java
===================================================================
--- sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/Elems1.java (rev 0)
+++ sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/Elems1.java 2012-07-12 16:49:25 UTC (rev 248)
@@ -0,0 +1,89 @@
+/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+ * This file is part of SableCC. *
+ * See the file "LICENSE" for copyright information and the *
+ * terms and conditions for copying, distribution and *
+ * modification of SableCC. *
+ * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
+
+package org.sablecc.sablecc.node;
+
+import org.sablecc.sablecc.Switch;
+import org.sablecc.sablecc.analysis.Analysis;
+
+public final class Elems1 extends Elems
+{
+ public void apply(Switch sw)
+ {
+ ((Analysis) sw).caseElems1(this);
+ }
+
+ public String toString()
+ {
+ return ""
+ + node1
+ + node2;
+ }
+
+ private Elem node1;
+
+ public Elem getNode1()
+ {
+ return node1;
+ }
+
+ public void setNode1(Elem node)
+ {
+ if(node1 != null)
+ {
+ node1.setParent(null);
+ }
+
+ if(node.getParent() != null)
+ {
+ node.getParent().removeChild(node);
+ }
+
+ node.setParent(this);
+
+ node1 = node;
+ }
+
+ private Elems node2;
+
+ public Elems getNode2()
+ {
+ return node2;
+ }
+
+ public void setNode2(Elems node)
+ {
+ if(node2 != null)
+ {
+ node2.setParent(null);
+ }
+
+ if(node.getParent() != null)
+ {
+ node.getParent().removeChild(node);
+ }
+
+ node.setParent(this);
+
+ node2 = node;
+ }
+
+ void removeChild(Node child)
+ {
+ if(node1 == child)
+ {
+ node1 = null;
+ }
+
+ if(node2 == child)
+ {
+ node2 = null;
+ }
+
+ }
+}
+
Added: sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/Elems2.java
===================================================================
--- sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/Elems2.java (rev 0)
+++ sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/Elems2.java 2012-07-12 16:49:25 UTC (rev 248)
@@ -0,0 +1,29 @@
+/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+ * This file is part of SableCC. *
+ * See the file "LICENSE" for copyright information and the *
+ * terms and conditions for copying, distribution and *
+ * modification of SableCC. *
+ * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
+
+package org.sablecc.sablecc.node;
+
+import org.sablecc.sablecc.Switch;
+import org.sablecc.sablecc.analysis.Analysis;
+
+public final class Elems2 extends Elems
+{
+ public void apply(Switch sw)
+ {
+ ((Analysis) sw).caseElems2(this);
+ }
+
+ public String toString()
+ {
+ return "";
+ }
+
+ void removeChild(Node child)
+ {
+ }
+}
+
Added: sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/Grammar.java
===================================================================
--- sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/Grammar.java (rev 0)
+++ sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/Grammar.java 2012-07-12 16:49:25 UTC (rev 248)
@@ -0,0 +1,13 @@
+/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+ * This file is part of SableCC. *
+ * See the file "LICENSE" for copyright information and the *
+ * terms and conditions for copying, distribution and *
+ * modification of SableCC. *
+ * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
+
+package org.sablecc.sablecc.node;
+
+public abstract class Grammar extends Node
+{
+}
+
Added: sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/Grammar1.java
===================================================================
--- sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/Grammar1.java (rev 0)
+++ sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/Grammar1.java 2012-07-12 16:49:25 UTC (rev 248)
@@ -0,0 +1,209 @@
+/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+ * This file is part of SableCC. *
+ * See the file "LICENSE" for copyright information and the *
+ * terms and conditions for copying, distribution and *
+ * modification of SableCC. *
+ * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
+
+package org.sablecc.sablecc.node;
+
+import org.sablecc.sablecc.Switch;
+import org.sablecc.sablecc.analysis.Analysis;
+
+public final class Grammar1 extends Grammar
+{
+ public void apply(Switch sw)
+ {
+ ((Analysis) sw).caseGrammar1(this);
+ }
+
+ public String toString()
+ {
+ return ""
+ + node1
+ + node2
+ + node3
+ + node4
+ + node5
+ + node6;
+ }
+
+ private PackageOpt node1;
+
+ public PackageOpt getNode1()
+ {
+ return node1;
+ }
+
+ public void setNode1(PackageOpt node)
+ {
+ if(node1 != null)
+ {
+ node1.setParent(null);
+ }
+
+ if(node.getParent() != null)
+ {
+ node.getParent().removeChild(node);
+ }
+
+ node.setParent(this);
+
+ node1 = node;
+ }
+
+ private HelpersOpt node2;
+
+ public HelpersOpt getNode2()
+ {
+ return node2;
+ }
+
+ public void setNode2(HelpersOpt node)
+ {
+ if(node2 != null)
+ {
+ node2.setParent(null);
+ }
+
+ if(node.getParent() != null)
+ {
+ node.getParent().removeChild(node);
+ }
+
+ node.setParent(this);
+
+ node2 = node;
+ }
+
+ private StatesOpt node3;
+
+ public StatesOpt getNode3()
+ {
+ return node3;
+ }
+
+ public void setNode3(StatesOpt node)
+ {
+ if(node3 != null)
+ {
+ node3.setParent(null);
+ }
+
+ if(node.getParent() != null)
+ {
+ node.getParent().removeChild(node);
+ }
+
+ node.setParent(this);
+
+ node3 = node;
+ }
+
+ private TokensOpt node4;
+
+ public TokensOpt getNode4()
+ {
+ return node4;
+ }
+
+ public void setNode4(TokensOpt node)
+ {
+ if(node4 != null)
+ {
+ node4.setParent(null);
+ }
+
+ if(node.getParent() != null)
+ {
+ node.getParent().removeChild(node);
+ }
+
+ node.setParent(this);
+
+ node4 = node;
+ }
+
+ private IgnTokensOpt node5;
+
+ public IgnTokensOpt getNode5()
+ {
+ return node5;
+ }
+
+ public void setNode5(IgnTokensOpt node)
+ {
+ if(node5 != null)
+ {
+ node5.setParent(null);
+ }
+
+ if(node.getParent() != null)
+ {
+ node.getParent().removeChild(node);
+ }
+
+ node.setParent(this);
+
+ node5 = node;
+ }
+
+ private ProductionsOpt node6;
+
+ public ProductionsOpt getNode6()
+ {
+ return node6;
+ }
+
+ public void setNode6(ProductionsOpt node)
+ {
+ if(node6 != null)
+ {
+ node6.setParent(null);
+ }
+
+ if(node.getParent() != null)
+ {
+ node.getParent().removeChild(node);
+ }
+
+ node.setParent(this);
+
+ node6 = node;
+ }
+
+ void removeChild(Node child)
+ {
+ if(node1 == child)
+ {
+ node1 = null;
+ }
+
+ if(node2 == child)
+ {
+ node2 = null;
+ }
+
+ if(node3 == child)
+ {
+ node3 = null;
+ }
+
+ if(node4 == child)
+ {
+ node4 = null;
+ }
+
+ if(node5 == child)
+ {
+ node5 = null;
+ }
+
+ if(node6 == child)
+ {
+ node6 = null;
+ }
+
+ }
+}
+
Added: sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/HelperDef.java
===================================================================
--- sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/HelperDef.java (rev 0)
+++ sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/HelperDef.java 2012-07-12 16:49:25 UTC (rev 248)
@@ -0,0 +1,13 @@
+/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+ * This file is part of SableCC. *
+ * See the file "LICENSE" for copyright information and the *
+ * terms and conditions for copying, distribution and *
+ * modification of SableCC. *
+ * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
+
+package org.sablecc.sablecc.node;
+
+public abstract class HelperDef extends Node
+{
+}
+
Added: sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/HelperDef1.java
===================================================================
--- sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/HelperDef1.java (rev 0)
+++ sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/HelperDef1.java 2012-07-12 16:49:25 UTC (rev 248)
@@ -0,0 +1,149 @@
+/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+ * This file is part of SableCC. *
+ * See the file "LICENSE" for copyright information and the *
+ * terms and conditions for copying, distribution and *
+ * modification of SableCC. *
+ * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
+
+package org.sablecc.sablecc.node;
+
+import org.sablecc.sablecc.Switch;
+import org.sablecc.sablecc.analysis.Analysis;
+
+public final class HelperDef1 extends HelperDef
+{
+ public void apply(Switch sw)
+ {
+ ((Analysis) sw).caseHelperDef1(this);
+ }
+
+ public String toString()
+ {
+ return ""
+ + node1
+ + node2
+ + node3
+ + node4;
+ }
+
+ private TId node1;
+
+ public TId getNode1()
+ {
+ return node1;
+ }
+
+ public void setNode1(TId node)
+ {
+ if(node1 != null)
+ {
+ node1.setParent(null);
+ }
+
+ if(node.getParent() != null)
+ {
+ node.getParent().removeChild(node);
+ }
+
+ node.setParent(this);
+
+ node1 = node;
+ }
+
+ private TEqual node2;
+
+ public TEqual getNode2()
+ {
+ return node2;
+ }
+
+ public void setNode2(TEqual node)
+ {
+ if(node2 != null)
+ {
+ node2.setParent(null);
+ }
+
+ if(node.getParent() != null)
+ {
+ node.getParent().removeChild(node);
+ }
+
+ node.setParent(this);
+
+ node2 = node;
+ }
+
+ private RegExp node3;
+
+ public RegExp getNode3()
+ {
+ return node3;
+ }
+
+ public void setNode3(RegExp node)
+ {
+ if(node3 != null)
+ {
+ node3.setParent(null);
+ }
+
+ if(node.getParent() != null)
+ {
+ node.getParent().removeChild(node);
+ }
+
+ node.setParent(this);
+
+ node3 = node;
+ }
+
+ private TSemicolon node4;
+
+ public TSemicolon getNode4()
+ {
+ return node4;
+ }
+
+ public void setNode4(TSemicolon node)
+ {
+ if(node4 != null)
+ {
+ node4.setParent(null);
+ }
+
+ if(node.getParent() != null)
+ {
+ node.getParent().removeChild(node);
+ }
+
+ node.setParent(this);
+
+ node4 = node;
+ }
+
+ void removeChild(Node child)
+ {
+ if(node1 == child)
+ {
+ node1 = null;
+ }
+
+ if(node2 == child)
+ {
+ node2 = null;
+ }
+
+ if(node3 == child)
+ {
+ node3 = null;
+ }
+
+ if(node4 == child)
+ {
+ node4 = null;
+ }
+
+ }
+}
+
Added: sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/HelperDefs.java
===================================================================
--- sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/HelperDefs.java (rev 0)
+++ sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/HelperDefs.java 2012-07-12 16:49:25 UTC (rev 248)
@@ -0,0 +1,13 @@
+/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+ * This file is part of SableCC. *
+ * See the file "LICENSE" for copyright information and the *
+ * terms and conditions for copying, distribution and *
+ * modification of SableCC. *
+ * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
+
+package org.sablecc.sablecc.node;
+
+public abstract class HelperDefs extends Node
+{
+}
+
Added: sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/HelperDefs1.java
===================================================================
--- sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/HelperDefs1.java (rev 0)
+++ sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/HelperDefs1.java 2012-07-12 16:49:25 UTC (rev 248)
@@ -0,0 +1,89 @@
+/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+ * This file is part of SableCC. *
+ * See the file "LICENSE" for copyright information and the *
+ * terms and conditions for copying, distribution and *
+ * modification of SableCC. *
+ * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
+
+package org.sablecc.sablecc.node;
+
+import org.sablecc.sablecc.Switch;
+import org.sablecc.sablecc.analysis.Analysis;
+
+public final class HelperDefs1 extends HelperDefs
+{
+ public void apply(Switch sw)
+ {
+ ((Analysis) sw).caseHelperDefs1(this);
+ }
+
+ public String toString()
+ {
+ return ""
+ + node1
+ + node2;
+ }
+
+ private HelperDef node1;
+
+ public HelperDef getNode1()
+ {
+ return node1;
+ }
+
+ public void setNode1(HelperDef node)
+ {
+ if(node1 != null)
+ {
+ node1.setParent(null);
+ }
+
+ if(node.getParent() != null)
+ {
+ node.getParent().removeChild(node);
+ }
+
+ node.setParent(this);
+
+ node1 = node;
+ }
+
+ private HelperDefs node2;
+
+ public HelperDefs getNode2()
+ {
+ return node2;
+ }
+
+ public void setNode2(HelperDefs node)
+ {
+ if(node2 != null)
+ {
+ node2.setParent(null);
+ }
+
+ if(node.getParent() != null)
+ {
+ node.getParent().removeChild(node);
+ }
+
+ node.setParent(this);
+
+ node2 = node;
+ }
+
+ void removeChild(Node child)
+ {
+ if(node1 == child)
+ {
+ node1 = null;
+ }
+
+ if(node2 == child)
+ {
+ node2 = null;
+ }
+
+ }
+}
+
Added: sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/HelperDefs2.java
===================================================================
--- sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/HelperDefs2.java (rev 0)
+++ sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/HelperDefs2.java 2012-07-12 16:49:25 UTC (rev 248)
@@ -0,0 +1,29 @@
+/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+ * This file is part of SableCC. *
+ * See the file "LICENSE" for copyright information and the *
+ * terms and conditions for copying, distribution and *
+ * modification of SableCC. *
+ * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
+
+package org.sablecc.sablecc.node;
+
+import org.sablecc.sablecc.Switch;
+import org.sablecc.sablecc.analysis.Analysis;
+
+public final class HelperDefs2 extends HelperDefs
+{
+ public void apply(Switch sw)
+ {
+ ((Analysis) sw).caseHelperDefs2(this);
+ }
+
+ public String toString()
+ {
+ return "";
+ }
+
+ void removeChild(Node child)
+ {
+ }
+}
+
Added: sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/Helpers.java
===================================================================
--- sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/Helpers.java (rev 0)
+++ sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/Helpers.java 2012-07-12 16:49:25 UTC (rev 248)
@@ -0,0 +1,13 @@
+/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+ * This file is part of SableCC. *
+ * See the file "LICENSE" for copyright information and the *
+ * terms and conditions for copying, distribution and *
+ * modification of SableCC. *
+ * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
+
+package org.sablecc.sablecc.node;
+
+public abstract class Helpers extends Node
+{
+}
+
Added: sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/Helpers1.java
===================================================================
--- sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/Helpers1.java (rev 0)
+++ sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/Helpers1.java 2012-07-12 16:49:25 UTC (rev 248)
@@ -0,0 +1,89 @@
+/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+ * This file is part of SableCC. *
+ * See the file "LICENSE" for copyright information and the *
+ * terms and conditions for copying, distribution and *
+ * modification of SableCC. *
+ * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
+
+package org.sablecc.sablecc.node;
+
+import org.sablecc.sablecc.Switch;
+import org.sablecc.sablecc.analysis.Analysis;
+
+public final class Helpers1 extends Helpers
+{
+ public void apply(Switch sw)
+ {
+ ((Analysis) sw).caseHelpers1(this);
+ }
+
+ public String toString()
+ {
+ return ""
+ + node1
+ + node2;
+ }
+
+ private THelpers node1;
+
+ public THelpers getNode1()
+ {
+ return node1;
+ }
+
+ public void setNode1(THelpers node)
+ {
+ if(node1 != null)
+ {
+ node1.setParent(null);
+ }
+
+ if(node.getParent() != null)
+ {
+ node.getParent().removeChild(node);
+ }
+
+ node.setParent(this);
+
+ node1 = node;
+ }
+
+ private HelperDefs node2;
+
+ public HelperDefs getNode2()
+ {
+ return node2;
+ }
+
+ public void setNode2(HelperDefs node)
+ {
+ if(node2 != null)
+ {
+ node2.setParent(null);
+ }
+
+ if(node.getParent() != null)
+ {
+ node.getParent().removeChild(node);
+ }
+
+ node.setParent(this);
+
+ node2 = node;
+ }
+
+ void removeChild(Node child)
+ {
+ if(node1 == child)
+ {
+ node1 = null;
+ }
+
+ if(node2 == child)
+ {
+ node2 = null;
+ }
+
+ }
+}
+
Added: sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/HelpersOpt.java
===================================================================
--- sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/HelpersOpt.java (rev 0)
+++ sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/HelpersOpt.java 2012-07-12 16:49:25 UTC (rev 248)
@@ -0,0 +1,13 @@
+/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+ * This file is part of SableCC. *
+ * See the file "LICENSE" for copyright information and the *
+ * terms and conditions for copying, distribution and *
+ * modification of SableCC. *
+ * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
+
+package org.sablecc.sablecc.node;
+
+public abstract class HelpersOpt extends Node
+{
+}
+
Added: sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/HelpersOpt1.java
===================================================================
--- sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/HelpersOpt1.java (rev 0)
+++ sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/HelpersOpt1.java 2012-07-12 16:49:25 UTC (rev 248)
@@ -0,0 +1,59 @@
+/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+ * This file is part of SableCC. *
+ * See the file "LICENSE" for copyright information and the *
+ * terms and conditions for copying, distribution and *
+ * modification of SableCC. *
+ * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
+
+package org.sablecc.sablecc.node;
+
+import org.sablecc.sablecc.Switch;
+import org.sablecc.sablecc.analysis.Analysis;
+
+public final class HelpersOpt1 extends HelpersOpt
+{
+ public void apply(Switch sw)
+ {
+ ((Analysis) sw).caseHelpersOpt1(this);
+ }
+
+ public String toString()
+ {
+ return ""
+ + node1;
+ }
+
+ private Helpers node1;
+
+ public Helpers getNode1()
+ {
+ return node1;
+ }
+
+ public void setNode1(Helpers node)
+ {
+ if(node1 != null)
+ {
+ node1.setParent(null);
+ }
+
+ if(node.getParent() != null)
+ {
+ node.getParent().removeChild(node);
+ }
+
+ node.setParent(this);
+
+ node1 = node;
+ }
+
+ void removeChild(Node child)
+ {
+ if(node1 == child)
+ {
+ node1 = null;
+ }
+
+ }
+}
+
Added: sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/HelpersOpt2.java
===================================================================
--- sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/HelpersOpt2.java (rev 0)
+++ sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/HelpersOpt2.java 2012-07-12 16:49:25 UTC (rev 248)
@@ -0,0 +1,29 @@
+/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+ * This file is part of SableCC. *
+ * See the file "LICENSE" for copyright information and the *
+ * terms and conditions for copying, distribution and *
+ * modification of SableCC. *
+ * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
+
+package org.sablecc.sablecc.node;
+
+import org.sablecc.sablecc.Switch;
+import org.sablecc.sablecc.analysis.Analysis;
+
+public final class HelpersOpt2 extends HelpersOpt
+{
+ public void apply(Switch sw)
+ {
+ ((Analysis) sw).caseHelpersOpt2(this);
+ }
+
+ public String toString()
+ {
+ return "";
+ }
+
+ void removeChild(Node child)
+ {
+ }
+}
+
Added: sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/IdList.java
===================================================================
--- sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/IdList.java (rev 0)
+++ sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/IdList.java 2012-07-12 16:49:25 UTC (rev 248)
@@ -0,0 +1,13 @@
+/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+ * This file is part of SableCC. *
+ * See the file "LICENSE" for copyright information and the *
+ * terms and conditions for copying, distribution and *
+ * modification of SableCC. *
+ * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
+
+package org.sablecc.sablecc.node;
+
+public abstract class IdList extends Node
+{
+}
+
Added: sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/IdList1.java
===================================================================
--- sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/IdList1.java (rev 0)
+++ sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/IdList1.java 2012-07-12 16:49:25 UTC (rev 248)
@@ -0,0 +1,89 @@
+/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+ * This file is part of SableCC. *
+ * See the file "LICENSE" for copyright information and the *
+ * terms and conditions for copying, distribution and *
+ * modification of SableCC. *
+ * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
+
+package org.sablecc.sablecc.node;
+
+import org.sablecc.sablecc.Switch;
+import org.sablecc.sablecc.analysis.Analysis;
+
+public final class IdList1 extends IdList
+{
+ public void apply(Switch sw)
+ {
+ ((Analysis) sw).caseIdList1(this);
+ }
+
+ public String toString()
+ {
+ return ""
+ + node1
+ + node2;
+ }
+
+ private TId node1;
+
+ public TId getNode1()
+ {
+ return node1;
+ }
+
+ public void setNode1(TId node)
+ {
+ if(node1 != null)
+ {
+ node1.setParent(null);
+ }
+
+ if(node.getParent() != null)
+ {
+ node.getParent().removeChild(node);
+ }
+
+ node.setParent(this);
+
+ node1 = node;
+ }
+
+ private IdListTails node2;
+
+ public IdListTails getNode2()
+ {
+ return node2;
+ }
+
+ public void setNode2(IdListTails node)
+ {
+ if(node2 != null)
+ {
+ node2.setParent(null);
+ }
+
+ if(node.getParent() != null)
+ {
+ node.getParent().removeChild(node);
+ }
+
+ node.setParent(this);
+
+ node2 = node;
+ }
+
+ void removeChild(Node child)
+ {
+ if(node1 == child)
+ {
+ node1 = null;
+ }
+
+ if(node2 == child)
+ {
+ node2 = null;
+ }
+
+ }
+}
+
Added: sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/IdListOpt.java
===================================================================
--- sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/IdListOpt.java (rev 0)
+++ sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/IdListOpt.java 2012-07-12 16:49:25 UTC (rev 248)
@@ -0,0 +1,13 @@
+/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+ * This file is part of SableCC. *
+ * See the file "LICENSE" for copyright information and the *
+ * terms and conditions for copying, distribution and *
+ * modification of SableCC. *
+ * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
+
+package org.sablecc.sablecc.node;
+
+public abstract class IdListOpt extends Node
+{
+}
+
Added: sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/IdListOpt1.java
===================================================================
--- sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/IdListOpt1.java (rev 0)
+++ sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/IdListOpt1.java 2012-07-12 16:49:25 UTC (rev 248)
@@ -0,0 +1,59 @@
+/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+ * This file is part of SableCC. *
+ * See the file "LICENSE" for copyright information and the *
+ * terms and conditions for copying, distribution and *
+ * modification of SableCC. *
+ * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
+
+package org.sablecc.sablecc.node;
+
+import org.sablecc.sablecc.Switch;
+import org.sablecc.sablecc.analysis.Analysis;
+
+public final class IdListOpt1 extends IdListOpt
+{
+ public void apply(Switch sw)
+ {
+ ((Analysis) sw).caseIdListOpt1(this);
+ }
+
+ public String toString()
+ {
+ return ""
+ + node1;
+ }
+
+ private IdList node1;
+
+ public IdList getNode1()
+ {
+ return node1;
+ }
+
+ public void setNode1(IdList node)
+ {
+ if(node1 != null)
+ {
+ node1.setParent(null);
+ }
+
+ if(node.getParent() != null)
+ {
+ node.getParent().removeChild(node);
+ }
+
+ node.setParent(this);
+
+ node1 = node;
+ }
+
+ void removeChild(Node child)
+ {
+ if(node1 == child)
+ {
+ node1 = null;
+ }
+
+ }
+}
+
Added: sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/IdListTail.java
===================================================================
--- sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/IdListTail.java (rev 0)
+++ sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/IdListTail.java 2012-07-12 16:49:25 UTC (rev 248)
@@ -0,0 +1,13 @@
+/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+ * This file is part of SableCC. *
+ * See the file "LICENSE" for copyright information and the *
+ * terms and conditions for copying, distribution and *
+ * modification of SableCC. *
+ * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
+
+package org.sablecc.sablecc.node;
+
+public abstract class IdListTail extends Node
+{
+}
+
Added: sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/IdListTail1.java
===================================================================
--- sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/IdListTail1.java (rev 0)
+++ sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/IdListTail1.java 2012-07-12 16:49:25 UTC (rev 248)
@@ -0,0 +1,89 @@
+/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+ * This file is part of SableCC. *
+ * See the file "LICENSE" for copyright information and the *
+ * terms and conditions for copying, distribution and *
+ * modification of SableCC. *
+ * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
+
+package org.sablecc.sablecc.node;
+
+import org.sablecc.sablecc.Switch;
+import org.sablecc.sablecc.analysis.Analysis;
+
+public final class IdListTail1 extends IdListTail
+{
+ public void apply(Switch sw)
+ {
+ ((Analysis) sw).caseIdListTail1(this);
+ }
+
+ public String toString()
+ {
+ return ""
+ + node1
+ + node2;
+ }
+
+ private TComma node1;
+
+ public TComma getNode1()
+ {
+ return node1;
+ }
+
+ public void setNode1(TComma node)
+ {
+ if(node1 != null)
+ {
+ node1.setParent(null);
+ }
+
+ if(node.getParent() != null)
+ {
+ node.getParent().removeChild(node);
+ }
+
+ node.setParent(this);
+
+ node1 = node;
+ }
+
+ private TId node2;
+
+ public TId getNode2()
+ {
+ return node2;
+ }
+
+ public void setNode2(TId node)
+ {
+ if(node2 != null)
+ {
+ node2.setParent(null);
+ }
+
+ if(node.getParent() != null)
+ {
+ node.getParent().removeChild(node);
+ }
+
+ node.setParent(this);
+
+ node2 = node;
+ }
+
+ void removeChild(Node child)
+ {
+ if(node1 == child)
+ {
+ node1 = null;
+ }
+
+ if(node2 == child)
+ {
+ node2 = null;
+ }
+
+ }
+}
+
Added: sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/IdListTails.java
===================================================================
--- sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/IdListTails.java (rev 0)
+++ sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/IdListTails.java 2012-07-12 16:49:25 UTC (rev 248)
@@ -0,0 +1,13 @@
+/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+ * This file is part of SableCC. *
+ * See the file "LICENSE" for copyright information and the *
+ * terms and conditions for copying, distribution and *
+ * modification of SableCC. *
+ * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
+
+package org.sablecc.sablecc.node;
+
+public abstract class IdListTails extends Node
+{
+}
+
Added: sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/IdListTails1.java
===================================================================
--- sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/IdListTails1.java (rev 0)
+++ sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/IdListTails1.java 2012-07-12 16:49:25 UTC (rev 248)
@@ -0,0 +1,89 @@
+/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+ * This file is part of SableCC. *
+ * See the file "LICENSE" for copyright information and the *
+ * terms and conditions for copying, distribution and *
+ * modification of SableCC. *
+ * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
+
+package org.sablecc.sablecc.node;
+
+import org.sablecc.sablecc.Switch;
+import org.sablecc.sablecc.analysis.Analysis;
+
+public final class IdListTails1 extends IdListTails
+{
+ public void apply(Switch sw)
+ {
+ ((Analysis) sw).caseIdListTails1(this);
+ }
+
+ public String toString()
+ {
+ return ""
+ + node1
+ + node2;
+ }
+
+ private IdListTail node1;
+
+ public IdListTail getNode1()
+ {
+ return node1;
+ }
+
+ public void setNode1(IdListTail node)
+ {
+ if(node1 != null)
+ {
+ node1.setParent(null);
+ }
+
+ if(node.getParent() != null)
+ {
+ node.getParent().removeChild(node);
+ }
+
+ node.setParent(this);
+
+ node1 = node;
+ }
+
+ private IdListTails node2;
+
+ public IdListTails getNode2()
+ {
+ return node2;
+ }
+
+ public void setNode2(IdListTails node)
+ {
+ if(node2 != null)
+ {
+ node2.setParent(null);
+ }
+
+ if(node.getParent() != null)
+ {
+ node.getParent().removeChild(node);
+ }
+
+ node.setParent(this);
+
+ node2 = node;
+ }
+
+ void removeChild(Node child)
+ {
+ if(node1 == child)
+ {
+ node1 = null;
+ }
+
+ if(node2 == child)
+ {
+ node2 = null;
+ }
+
+ }
+}
+
Added: sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/IdListTails2.java
===================================================================
--- sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/IdListTails2.java (rev 0)
+++ sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/IdListTails2.java 2012-07-12 16:49:25 UTC (rev 248)
@@ -0,0 +1,29 @@
+/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+ * This file is part of SableCC. *
+ * See the file "LICENSE" for copyright information and the *
+ * terms and conditions for copying, distribution and *
+ * modification of SableCC. *
+ * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
+
+package org.sablecc.sablecc.node;
+
+import org.sablecc.sablecc.Switch;
+import org.sablecc.sablecc.analysis.Analysis;
+
+public final class IdListTails2 extends IdListTails
+{
+ public void apply(Switch sw)
+ {
+ ((Analysis) sw).caseIdListTails2(this);
+ }
+
+ public String toString()
+ {
+ return "";
+ }
+
+ void removeChild(Node child)
+ {
+ }
+}
+
Added: sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/IgnTokens.java
===================================================================
--- sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/IgnTokens.java (rev 0)
+++ sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/IgnTokens.java 2012-07-12 16:49:25 UTC (rev 248)
@@ -0,0 +1,13 @@
+/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+ * This file is part of SableCC. *
+ * See the file "LICENSE" for copyright information and the *
+ * terms and conditions for copying, distribution and *
+ * modification of SableCC. *
+ * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
+
+package org.sablecc.sablecc.node;
+
+public abstract class IgnTokens extends Node
+{
+}
+
Added: sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/IgnTokens1.java
===================================================================
--- sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/IgnTokens1.java (rev 0)
+++ sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/IgnTokens1.java 2012-07-12 16:49:25 UTC (rev 248)
@@ -0,0 +1,149 @@
+/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+ * This file is part of SableCC. *
+ * See the file "LICENSE" for copyright information and the *
+ * terms and conditions for copying, distribution and *
+ * modification of SableCC. *
+ * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
+
+package org.sablecc.sablecc.node;
+
+import org.sablecc.sablecc.Switch;
+import org.sablecc.sablecc.analysis.Analysis;
+
+public final class IgnTokens1 extends IgnTokens
+{
+ public void apply(Switch sw)
+ {
+ ((Analysis) sw).caseIgnTokens1(this);
+ }
+
+ public String toString()
+ {
+ return ""
+ + node1
+ + node2
+ + node3
+ + node4;
+ }
+
+ private TIgnored node1;
+
+ public TIgnored getNode1()
+ {
+ return node1;
+ }
+
+ public void setNode1(TIgnored node)
+ {
+ if(node1 != null)
+ {
+ node1.setParent(null);
+ }
+
+ if(node.getParent() != null)
+ {
+ node.getParent().removeChild(node);
+ }
+
+ node.setParent(this);
+
+ node1 = node;
+ }
+
+ private TTokens node2;
+
+ public TTokens getNode2()
+ {
+ return node2;
+ }
+
+ public void setNode2(TTokens node)
+ {
+ if(node2 != null)
+ {
+ node2.setParent(null);
+ }
+
+ if(node.getParent() != null)
+ {
+ node.getParent().removeChild(node);
+ }
+
+ node.setParent(this);
+
+ node2 = node;
+ }
+
+ private IdListOpt node3;
+
+ public IdListOpt getNode3()
+ {
+ return node3;
+ }
+
+ public void setNode3(IdListOpt node)
+ {
+ if(node3 != null)
+ {
+ node3.setParent(null);
+ }
+
+ if(node.getParent() != null)
+ {
+ node.getParent().removeChild(node);
+ }
+
+ node.setParent(this);
+
+ node3 = node;
+ }
+
+ private TSemicolon node4;
+
+ public TSemicolon getNode4()
+ {
+ return node4;
+ }
+
+ public void setNode4(TSemicolon node)
+ {
+ if(node4 != null)
+ {
+ node4.setParent(null);
+ }
+
+ if(node.getParent() != null)
+ {
+ node.getParent().removeChild(node);
+ }
+
+ node.setParent(this);
+
+ node4 = node;
+ }
+
+ void removeChild(Node child)
+ {
+ if(node1 == child)
+ {
+ node1 = null;
+ }
+
+ if(node2 == child)
+ {
+ node2 = null;
+ }
+
+ if(node3 == child)
+ {
+ node3 = null;
+ }
+
+ if(node4 == child)
+ {
+ node4 = null;
+ }
+
+ }
+}
+
Added: sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/IgnTokensOpt.java
===================================================================
--- sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/IgnTokensOpt.java (rev 0)
+++ sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/IgnTokensOpt.java 2012-07-12 16:49:25 UTC (rev 248)
@@ -0,0 +1,13 @@
+/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+ * This file is part of SableCC. *
+ * See the file "LICENSE" for copyright information and the *
+ * terms and conditions for copying, distribution and *
+ * modification of SableCC. *
+ * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
+
+package org.sablecc.sablecc.node;
+
+public abstract class IgnTokensOpt extends Node
+{
+}
+
Added: sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/IgnTokensOpt1.java
===================================================================
--- sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/IgnTokensOpt1.java (rev 0)
+++ sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/IgnTokensOpt1.java 2012-07-12 16:49:25 UTC (rev 248)
@@ -0,0 +1,59 @@
+/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+ * This file is part of SableCC. *
+ * See the file "LICENSE" for copyright information and the *
+ * terms and conditions for copying, distribution and *
+ * modification of SableCC. *
+ * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
+
+package org.sablecc.sablecc.node;
+
+import org.sablecc.sablecc.Switch;
+import org.sablecc.sablecc.analysis.Analysis;
+
+public final class IgnTokensOpt1 extends IgnTokensOpt
+{
+ public void apply(Switch sw)
+ {
+ ((Analysis) sw).caseIgnTokensOpt1(this);
+ }
+
+ public String toString()
+ {
+ return ""
+ + node1;
+ }
+
+ private IgnTokens node1;
+
+ public IgnTokens getNode1()
+ {
+ return node1;
+ }
+
+ public void setNode1(IgnTokens node)
+ {
+ if(node1 != null)
+ {
+ node1.setParent(null);
+ }
+
+ if(node.getParent() != null)
+ {
+ node.getParent().removeChild(node);
+ }
+
+ node.setParent(this);
+
+ node1 = node;
+ }
+
+ void removeChild(Node child)
+ {
+ if(node1 == child)
+ {
+ node1 = null;
+ }
+
+ }
+}
+
Added: sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/IgnTokensOpt2.java
===================================================================
--- sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/IgnTokensOpt2.java (rev 0)
+++ sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/IgnTokensOpt2.java 2012-07-12 16:49:25 UTC (rev 248)
@@ -0,0 +1,29 @@
+/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+ * This file is part of SableCC. *
+ * See the file "LICENSE" for copyright information and the *
+ * terms and conditions for copying, distribution and *
+ * modification of SableCC. *
+ * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
+
+package org.sablecc.sablecc.node;
+
+import org.sablecc.sablecc.Switch;
+import org.sablecc.sablecc.analysis.Analysis;
+
+public final class IgnTokensOpt2 extends IgnTokensOpt
+{
+ public void apply(Switch sw)
+ {
+ ((Analysis) sw).caseIgnTokensOpt2(this);
+ }
+
+ public String toString()
+ {
+ return "";
+ }
+
+ void removeChild(Node child)
+ {
+ }
+}
+
Added: sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/LookAhead.java
===================================================================
--- sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/LookAhead.java (rev 0)
+++ sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/LookAhead.java 2012-07-12 16:49:25 UTC (rev 248)
@@ -0,0 +1,13 @@
+/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+ * This file is part of SableCC. *
+ * See the file "LICENSE" for copyright information and the *
+ * terms and conditions for copying, distribution and *
+ * modification of SableCC. *
+ * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
+
+package org.sablecc.sablecc.node;
+
+public abstract class LookAhead extends Node
+{
+}
+
Added: sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/LookAhead1.java
===================================================================
--- sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/LookAhead1.java (rev 0)
+++ sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/LookAhead1.java 2012-07-12 16:49:25 UTC (rev 248)
@@ -0,0 +1,89 @@
+/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+ * This file is part of SableCC. *
+ * See the file "LICENSE" for copyright information and the *
+ * terms and conditions for copying, distribution and *
+ * modification of SableCC. *
+ * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
+
+package org.sablecc.sablecc.node;
+
+import org.sablecc.sablecc.Switch;
+import org.sablecc.sablecc.analysis.Analysis;
+
+public final class LookAhead1 extends LookAhead
+{
+ public void apply(Switch sw)
+ {
+ ((Analysis) sw).caseLookAhead1(this);
+ }
+
+ public String toString()
+ {
+ return ""
+ + node1
+ + node2;
+ }
+
+ private TSlash node1;
+
+ public TSlash getNode1()
+ {
+ return node1;
+ }
+
+ public void setNode1(TSlash node)
+ {
+ if(node1 != null)
+ {
+ node1.setParent(null);
+ }
+
+ if(node.getParent() != null)
+ {
+ node.getParent().removeChild(node);
+ }
+
+ node.setParent(this);
+
+ node1 = node;
+ }
+
+ private RegExp node2;
+
+ public RegExp getNode2()
+ {
+ return node2;
+ }
+
+ public void setNode2(RegExp node)
+ {
+ if(node2 != null)
+ {
+ node2.setParent(null);
+ }
+
+ if(node.getParent() != null)
+ {
+ node.getParent().removeChild(node);
+ }
+
+ node.setParent(this);
+
+ node2 = node;
+ }
+
+ void removeChild(Node child)
+ {
+ if(node1 == child)
+ {
+ node1 = null;
+ }
+
+ if(node2 == child)
+ {
+ node2 = null;
+ }
+
+ }
+}
+
Added: sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/LookAheadOpt.java
===================================================================
--- sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/LookAheadOpt.java (rev 0)
+++ sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/LookAheadOpt.java 2012-07-12 16:49:25 UTC (rev 248)
@@ -0,0 +1,13 @@
+/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+ * This file is part of SableCC. *
+ * See the file "LICENSE" for copyright information and the *
+ * terms and conditions for copying, distribution and *
+ * modification of SableCC. *
+ * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
+
+package org.sablecc.sablecc.node;
+
+public abstract class LookAheadOpt extends Node
+{
+}
+
Added: sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/LookAheadOpt1.java
===================================================================
--- sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/LookAheadOpt1.java (rev 0)
+++ sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/LookAheadOpt1.java 2012-07-12 16:49:25 UTC (rev 248)
@@ -0,0 +1,59 @@
+/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+ * This file is part of SableCC. *
+ * See the file "LICENSE" for copyright information and the *
+ * terms and conditions for copying, distribution and *
+ * modification of SableCC. *
+ * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
+
+package org.sablecc.sablecc.node;
+
+import org.sablecc.sablecc.Switch;
+import org.sablecc.sablecc.analysis.Analysis;
+
+public final class LookAheadOpt1 extends LookAheadOpt
+{
+ public void apply(Switch sw)
+ {
+ ((Analysis) sw).caseLookAheadOpt1(this);
+ }
+
+ public String toString()
+ {
+ return ""
+ + node1;
+ }
+
+ private LookAhead node1;
+
+ public LookAhead getNode1()
+ {
+ return node1;
+ }
+
+ public void setNode1(LookAhead node)
+ {
+ if(node1 != null)
+ {
+ node1.setParent(null);
+ }
+
+ if(node.getParent() != null)
+ {
+ node.getParent().removeChild(node);
+ }
+
+ node.setParent(this);
+
+ node1 = node;
+ }
+
+ void removeChild(Node child)
+ {
+ if(node1 == child)
+ {
+ node1 = null;
+ }
+
+ }
+}
+
Added: sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/LookAheadOpt2.java
===================================================================
--- sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/LookAheadOpt2.java (rev 0)
+++ sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/LookAheadOpt2.java 2012-07-12 16:49:25 UTC (rev 248)
@@ -0,0 +1,29 @@
+/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+ * This file is part of SableCC. *
+ * See the file "LICENSE" for copyright information and the *
+ * terms and conditions for copying, distribution and *
+ * modification of SableCC. *
+ * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
+
+package org.sablecc.sablecc.node;
+
+import org.sablecc.sablecc.Switch;
+import org.sablecc.sablecc.analysis.Analysis;
+
+public final class LookAheadOpt2 extends LookAheadOpt
+{
+ public void apply(Switch sw)
+ {
+ ((Analysis) sw).caseLookAheadOpt2(this);
+ }
+
+ public String toString()
+ {
+ return "";
+ }
+
+ void removeChild(Node child)
+ {
+ }
+}
+
Added: sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/Node.java
===================================================================
--- sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/Node.java (rev 0)
+++ sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/Node.java 2012-07-12 16:49:25 UTC (rev 248)
@@ -0,0 +1,57 @@
+/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+ * This file is part of SableCC. *
+ * See the file "LICENSE" for copyright information and the *
+ * terms and conditions for copying, distribution and *
+ * modification of SableCC. *
+ * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
+
+package org.sablecc.sablecc.node;
+
+import org.sablecc.sablecc.analysis.Analysis;
+import org.sablecc.sablecc.Switchable;
+
+public abstract class Node implements Switchable
+{
+ private static int nextId =0;
+
+ private final int id = nextId++;
+ private Node parent;
+
+ public int getId()
+ {
+ return id;
+ }
+
+ public Node getParent()
+ {
+ return parent;
+ }
+
+ void setParent(Node parent)
+ {
+ this.parent = parent;
+ }
+
+ abstract void removeChild(Node child);
+
+ public Object getIn(Analysis analysis)
+ {
+ return analysis.getIn(this);
+ }
+
+ public void setIn(Analysis analysis, Object in)
+ {
+ analysis.setIn(this, in);
+ }
+
+ public Object getOut(Analysis analysis)
+ {
+ return analysis.getOut(this);
+ }
+
+ public void setOut(Analysis analysis, Object out)
+ {
+ analysis.setOut(this, out);
+ }
+}
+
Added: sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/PChar.java
===================================================================
--- sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/PChar.java (rev 0)
+++ sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/PChar.java 2012-07-12 16:49:25 UTC (rev 248)
@@ -0,0 +1,13 @@
+/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+ * This file is part of SableCC. *
+ * See the file "LICENSE" for copyright information and the *
+ * terms and conditions for copying, distribution and *
+ * modification of SableCC. *
+ * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
+
+package org.sablecc.sablecc.node;
+
+public abstract class PChar extends Node
+{
+}
+
Added: sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/PChar1.java
===================================================================
--- sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/PChar1.java (rev 0)
+++ sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/PChar1.java 2012-07-12 16:49:25 UTC (rev 248)
@@ -0,0 +1,59 @@
+/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+ * This file is part of SableCC. *
+ * See the file "LICENSE" for copyright information and the *
+ * terms and conditions for copying, distribution and *
+ * modification of SableCC. *
+ * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
+
+package org.sablecc.sablecc.node;
+
+import org.sablecc.sablecc.Switch;
+import org.sablecc.sablecc.analysis.Analysis;
+
+public final class PChar1 extends PChar
+{
+ public void apply(Switch sw)
+ {
+ ((Analysis) sw).casePChar1(this);
+ }
+
+ public String toString()
+ {
+ return ""
+ + node1;
+ }
+
+ private TChar node1;
+
+ public TChar getNode1()
+ {
+ return node1;
+ }
+
+ public void setNode1(TChar node)
+ {
+ if(node1 != null)
+ {
+ node1.setParent(null);
+ }
+
+ if(node.getParent() != null)
+ {
+ node.getParent().removeChild(node);
+ }
+
+ node.setParent(this);
+
+ node1 = node;
+ }
+
+ void removeChild(Node child)
+ {
+ if(node1 == child)
+ {
+ node1 = null;
+ }
+
+ }
+}
+
Added: sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/PChar2.java
===================================================================
--- sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/PChar2.java (rev 0)
+++ sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/PChar2.java 2012-07-12 16:49:25 UTC (rev 248)
@@ -0,0 +1,59 @@
+/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+ * This file is part of SableCC. *
+ * See the file "LICENSE" for copyright information and the *
+ * terms and conditions for copying, distribution and *
+ * modification of SableCC. *
+ * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
+
+package org.sablecc.sablecc.node;
+
+import org.sablecc.sablecc.Switch;
+import org.sablecc.sablecc.analysis.Analysis;
+
+public final class PChar2 extends PChar
+{
+ public void apply(Switch sw)
+ {
+ ((Analysis) sw).casePChar2(this);
+ }
+
+ public String toString()
+ {
+ return ""
+ + node1;
+ }
+
+ private TDecChar node1;
+
+ public TDecChar getNode1()
+ {
+ return node1;
+ }
+
+ public void setNode1(TDecChar node)
+ {
+ if(node1 != null)
+ {
+ node1.setParent(null);
+ }
+
+ if(node.getParent() != null)
+ {
+ node.getParent().removeChild(node);
+ }
+
+ node.setParent(this);
+
+ node1 = node;
+ }
+
+ void removeChild(Node child)
+ {
+ if(node1 == child)
+ {
+ node1 = null;
+ }
+
+ }
+}
+
Added: sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/PChar3.java
===================================================================
--- sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/PChar3.java (rev 0)
+++ sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/PChar3.java 2012-07-12 16:49:25 UTC (rev 248)
@@ -0,0 +1,59 @@
+/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+ * This file is part of SableCC. *
+ * See the file "LICENSE" for copyright information and the *
+ * terms and conditions for copying, distribution and *
+ * modification of SableCC. *
+ * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
+
+package org.sablecc.sablecc.node;
+
+import org.sablecc.sablecc.Switch;
+import org.sablecc.sablecc.analysis.Analysis;
+
+public final class PChar3 extends PChar
+{
+ public void apply(Switch sw)
+ {
+ ((Analysis) sw).casePChar3(this);
+ }
+
+ public String toString()
+ {
+ return ""
+ + node1;
+ }
+
+ private THexChar node1;
+
+ public THexChar getNode1()
+ {
+ return node1;
+ }
+
+ public void setNode1(THexChar node)
+ {
+ if(node1 != null)
+ {
+ node1.setParent(null);
+ }
+
+ if(node.getParent() != null)
+ {
+ node.getParent().removeChild(node);
+ }
+
+ node.setParent(this);
+
+ node1 = node;
+ }
+
+ void removeChild(Node child)
+ {
+ if(node1 == child)
+ {
+ node1 = null;
+ }
+
+ }
+}
+
Added: sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/PSet.java
===================================================================
--- sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/PSet.java (rev 0)
+++ sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/PSet.java 2012-07-12 16:49:25 UTC (rev 248)
@@ -0,0 +1,13 @@
+/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+ * This file is part of SableCC. *
+ * See the file "LICENSE" for copyright information and the *
+ * terms and conditions for copying, distribution and *
+ * modification of SableCC. *
+ * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
+
+package org.sablecc.sablecc.node;
+
+public abstract class PSet extends Node
+{
+}
+
Added: sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/PSet1.java
===================================================================
--- sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/PSet1.java (rev 0)
+++ sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/PSet1.java 2012-07-12 16:49:25 UTC (rev 248)
@@ -0,0 +1,179 @@
+/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+ * This file is part of SableCC. *
+ * See the file "LICENSE" for copyright information and the *
+ * terms and conditions for copying, distribution and *
+ * modification of SableCC. *
+ * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
+
+package org.sablecc.sablecc.node;
+
+import org.sablecc.sablecc.Switch;
+import org.sablecc.sablecc.analysis.Analysis;
+
+public final class PSet1 extends PSet
+{
+ public void apply(Switch sw)
+ {
+ ((Analysis) sw).casePSet1(this);
+ }
+
+ public String toString()
+ {
+ return ""
+ + node1
+ + node2
+ + node3
+ + node4
+ + node5;
+ }
+
+ private TLBkt node1;
+
+ public TLBkt getNode1()
+ {
+ return node1;
+ }
+
+ public void setNode1(TLBkt node)
+ {
+ if(node1 != null)
+ {
+ node1.setParent(null);
+ }
+
+ if(node.getParent() != null)
+ {
+ node.getParent().removeChild(node);
+ }
+
+ node.setParent(this);
+
+ node1 = node;
+ }
+
+ private Basic node2;
+
+ public Basic getNode2()
+ {
+ return node2;
+ }
+
+ public void setNode2(Basic node)
+ {
+ if(node2 != null)
+ {
+ node2.setParent(null);
+ }
+
+ if(node.getParent() != null)
+ {
+ node.getParent().removeChild(node);
+ }
+
+ node.setParent(this);
+
+ node2 = node;
+ }
+
+ private BinOp node3;
+
+ public BinOp getNode3()
+ {
+ return node3;
+ }
+
+ public void setNode3(BinOp node)
+ {
+ if(node3 != null)
+ {
+ node3.setParent(null);
+ }
+
+ if(node.getParent() != null)
+ {
+ node.getParent().removeChild(node);
+ }
+
+ node.setParent(this);
+
+ node3 = node;
+ }
+
+ private Basic node4;
+
+ public Basic getNode4()
+ {
+ return node4;
+ }
+
+ public void setNode4(Basic node)
+ {
+ if(node4 != null)
+ {
+ node4.setParent(null);
+ }
+
+ if(node.getParent() != null)
+ {
+ node.getParent().removeChild(node);
+ }
+
+ node.setParent(this);
+
+ node4 = node;
+ }
+
+ private TRBkt node5;
+
+ public TRBkt getNode5()
+ {
+ return node5;
+ }
+
+ public void setNode5(TRBkt node)
+ {
+ if(node5 != null)
+ {
+ node5.setParent(null);
+ }
+
+ if(node.getParent() != null)
+ {
+ node.getParent().removeChild(node);
+ }
+
+ node.setParent(this);
+
+ node5 = node;
+ }
+
+ void removeChild(Node child)
+ {
+ if(node1 == child)
+ {
+ node1 = null;
+ }
+
+ if(node2 == child)
+ {
+ node2 = null;
+ }
+
+ if(node3 == child)
+ {
+ node3 = null;
+ }
+
+ if(node4 == child)
+ {
+ node4 = null;
+ }
+
+ if(node5 == child)
+ {
+ node5 = null;
+ }
+
+ }
+}
+
Added: sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/PSet2.java
===================================================================
--- sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/PSet2.java (rev 0)
+++ sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/PSet2.java 2012-07-12 16:49:25 UTC (rev 248)
@@ -0,0 +1,179 @@
+/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+ * This file is part of SableCC. *
+ * See the file "LICENSE" for copyright information and the *
+ * terms and conditions for copying, distribution and *
+ * modification of SableCC. *
+ * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
+
+package org.sablecc.sablecc.node;
+
+import org.sablecc.sablecc.Switch;
+import org.sablecc.sablecc.analysis.Analysis;
+
+public final class PSet2 extends PSet
+{
+ public void apply(Switch sw)
+ {
+ ((Analysis) sw).casePSet2(this);
+ }
+
+ public String toString()
+ {
+ return ""
+ + node1
+ + node2
+ + node3
+ + node4
+ + node5;
+ }
+
+ private TLBkt node1;
+
+ public TLBkt getNode1()
+ {
+ return node1;
+ }
+
+ public void setNode1(TLBkt node)
+ {
+ if(node1 != null)
+ {
+ node1.setParent(null);
+ }
+
+ if(node.getParent() != null)
+ {
+ node.getParent().removeChild(node);
+ }
+
+ node.setParent(this);
+
+ node1 = node;
+ }
+
+ private PChar node2;
+
+ public PChar getNode2()
+ {
+ return node2;
+ }
+
+ public void setNode2(PChar node)
+ {
+ if(node2 != null)
+ {
+ node2.setParent(null);
+ }
+
+ if(node.getParent() != null)
+ {
+ node.getParent().removeChild(node);
+ }
+
+ node.setParent(this);
+
+ node2 = node;
+ }
+
+ private TDDot node3;
+
+ public TDDot getNode3()
+ {
+ return node3;
+ }
+
+ public void setNode3(TDDot node)
+ {
+ if(node3 != null)
+ {
+ node3.setParent(null);
+ }
+
+ if(node.getParent() != null)
+ {
+ node.getParent().removeChild(node);
+ }
+
+ node.setParent(this);
+
+ node3 = node;
+ }
+
+ private PChar node4;
+
+ public PChar getNode4()
+ {
+ return node4;
+ }
+
+ public void setNode4(PChar node)
+ {
+ if(node4 != null)
+ {
+ node4.setParent(null);
+ }
+
+ if(node.getParent() != null)
+ {
+ node.getParent().removeChild(node);
+ }
+
+ node.setParent(this);
+
+ node4 = node;
+ }
+
+ private TRBkt node5;
+
+ public TRBkt getNode5()
+ {
+ return node5;
+ }
+
+ public void setNode5(TRBkt node)
+ {
+ if(node5 != null)
+ {
+ node5.setParent(null);
+ }
+
+ if(node.getParent() != null)
+ {
+ node.getParent().removeChild(node);
+ }
+
+ node.setParent(this);
+
+ node5 = node;
+ }
+
+ void removeChild(Node child)
+ {
+ if(node1 == child)
+ {
+ node1 = null;
+ }
+
+ if(node2 == child)
+ {
+ node2 = null;
+ }
+
+ if(node3 == child)
+ {
+ node3 = null;
+ }
+
+ if(node4 == child)
+ {
+ node4 = null;
+ }
+
+ if(node5 == child)
+ {
+ node5 = null;
+ }
+
+ }
+}
+
Added: sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/Package.java
===================================================================
--- sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/Package.java (rev 0)
+++ sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/Package.java 2012-07-12 16:49:25 UTC (rev 248)
@@ -0,0 +1,13 @@
+/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+ * This file is part of SableCC. *
+ * See the file "LICENSE" for copyright information and the *
+ * terms and conditions for copying, distribution and *
+ * modification of SableCC. *
+ * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
+
+package org.sablecc.sablecc.node;
+
+public abstract class Package extends Node
+{
+}
+
Added: sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/Package1.java
===================================================================
--- sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/Package1.java (rev 0)
+++ sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/Package1.java 2012-07-12 16:49:25 UTC (rev 248)
@@ -0,0 +1,90 @@
+/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+ * This file is part of SableCC. *
+ * See the file "LICENSE" for copyright information and the *
+ * terms and conditions for copying, distribution and *
+ * modification of SableCC. *
+ * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
+
+package org.sablecc.sablecc.node;
+
+import org.sablecc.sablecc.Switch;
+import org.sablecc.sablecc.analysis.Analysis;
+import org.sablecc.sablecc.node.Package;
+
+public final class Package1 extends Package
+{
+ public void apply(Switch sw)
+ {
+ ((Analysis) sw).casePackage1(this);
+ }
+
+ public String toString()
+ {
+ return ""
+ + node1
+ + node2;
+ }
+
+ private TPackage node1;
+
+ public TPackage getNode1()
+ {
+ return node1;
+ }
+
+ public void setNode1(TPackage node)
+ {
+ if(node1 != null)
+ {
+ node1.setParent(null);
+ }
+
+ if(node.getParent() != null)
+ {
+ node.getParent().removeChild(node);
+ }
+
+ node.setParent(this);
+
+ node1 = node;
+ }
+
+ private PkgNameOpt node2;
+
+ public PkgNameOpt getNode2()
+ {
+ return node2;
+ }
+
+ public void setNode2(PkgNameOpt node)
+ {
+ if(node2 != null)
+ {
+ node2.setParent(null);
+ }
+
+ if(node.getParent() != null)
+ {
+ node.getParent().removeChild(node);
+ }
+
+ node.setParent(this);
+
+ node2 = node;
+ }
+
+ void removeChild(Node child)
+ {
+ if(node1 == child)
+ {
+ node1 = null;
+ }
+
+ if(node2 == child)
+ {
+ node2 = null;
+ }
+
+ }
+}
+
Added: sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/PackageOpt.java
===================================================================
--- sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/PackageOpt.java (rev 0)
+++ sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/PackageOpt.java 2012-07-12 16:49:25 UTC (rev 248)
@@ -0,0 +1,13 @@
+/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+ * This file is part of SableCC. *
+ * See the file "LICENSE" for copyright information and the *
+ * terms and conditions for copying, distribution and *
+ * modification of SableCC. *
+ * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
+
+package org.sablecc.sablecc.node;
+
+public abstract class PackageOpt extends Node
+{
+}
+
Added: sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/PackageOpt1.java
===================================================================
--- sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/PackageOpt1.java (rev 0)
+++ sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/PackageOpt1.java 2012-07-12 16:49:25 UTC (rev 248)
@@ -0,0 +1,60 @@
+/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+ * This file is part of SableCC. *
+ * See the file "LICENSE" for copyright information and the *
+ * terms and conditions for copying, distribution and *
+ * modification of SableCC. *
+ * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
+
+package org.sablecc.sablecc.node;
+
+import org.sablecc.sablecc.Switch;
+import org.sablecc.sablecc.analysis.Analysis;
+import org.sablecc.sablecc.node.Package;
+
+public final class PackageOpt1 extends PackageOpt
+{
+ public void apply(Switch sw)
+ {
+ ((Analysis) sw).casePackageOpt1(this);
+ }
+
+ public String toString()
+ {
+ return ""
+ + node1;
+ }
+
+ private Package node1;
+
+ public Package getNode1()
+ {
+ return node1;
+ }
+
+ public void setNode1(Package node)
+ {
+ if(node1 != null)
+ {
+ node1.setParent(null);
+ }
+
+ if(node.getParent() != null)
+ {
+ node.getParent().removeChild(node);
+ }
+
+ node.setParent(this);
+
+ node1 = node;
+ }
+
+ void removeChild(Node child)
+ {
+ if(node1 == child)
+ {
+ node1 = null;
+ }
+
+ }
+}
+
Added: sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/PackageOpt2.java
===================================================================
--- sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/PackageOpt2.java (rev 0)
+++ sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/PackageOpt2.java 2012-07-12 16:49:25 UTC (rev 248)
@@ -0,0 +1,29 @@
+/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+ * This file is part of SableCC. *
+ * See the file "LICENSE" for copyright information and the *
+ * terms and conditions for copying, distribution and *
+ * modification of SableCC. *
+ * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
+
+package org.sablecc.sablecc.node;
+
+import org.sablecc.sablecc.Switch;
+import org.sablecc.sablecc.analysis.Analysis;
+
+public final class PackageOpt2 extends PackageOpt
+{
+ public void apply(Switch sw)
+ {
+ ((Analysis) sw).casePackageOpt2(this);
+ }
+
+ public String toString()
+ {
+ return "";
+ }
+
+ void removeChild(Node child)
+ {
+ }
+}
+
Added: sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/PkgId.java
===================================================================
--- sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/PkgId.java (rev 0)
+++ sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/PkgId.java 2012-07-12 16:49:25 UTC (rev 248)
@@ -0,0 +1,14 @@
+/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+ * This file is part of SableCC. *
+ * See the file "LICENSE" for copyright information and the *
+ * terms and conditions for copying, distribution and *
+ * modification of SableCC. *
+ * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
+
+package org.sablecc.sablecc.node;
+
+public abstract class PkgId extends Node
+{
+ abstract public String getText();
+}
+
Added: sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/PkgId1.java
===================================================================
--- sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/PkgId1.java (rev 0)
+++ sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/PkgId1.java 2012-07-12 16:49:25 UTC (rev 248)
@@ -0,0 +1,64 @@
+/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+ * This file is part of SableCC. *
+ * See the file "LICENSE" for copyright information and the *
+ * terms and conditions for copying, distribution and *
+ * modification of SableCC. *
+ * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
+
+package org.sablecc.sablecc.node;
+
+import org.sablecc.sablecc.Switch;
+import org.sablecc.sablecc.analysis.Analysis;
+
+public final class PkgId1 extends PkgId
+{
+ public void apply(Switch sw)
+ {
+ ((Analysis) sw).casePkgId1(this);
+ }
+
+ public String getText()
+ {
+ return node1.getText();
+ }
+
+ public String toString()
+ {
+ return ""
+ + node1;
+ }
+
+ private TPackage node1;
+
+ public TPackage getNode1()
+ {
+ return node1;
+ }
+
+ public void setNode1(TPackage node)
+ {
+ if(node1 != null)
+ {
+ node1.setParent(null);
+ }
+
+ if(node.getParent() != null)
+ {
+ node.getParent().removeChild(node);
+ }
+
+ node.setParent(this);
+
+ node1 = node;
+ }
+
+ void removeChild(Node child)
+ {
+ if(node1 == child)
+ {
+ node1 = null;
+ }
+
+ }
+}
+
Added: sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/PkgId10.java
===================================================================
--- sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/PkgId10.java (rev 0)
+++ sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/PkgId10.java 2012-07-12 16:49:25 UTC (rev 248)
@@ -0,0 +1,64 @@
+/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+ * This file is part of SableCC. *
+ * See the file "LICENSE" for copyright information and the *
+ * terms and conditions for copying, distribution and *
+ * modification of SableCC. *
+ * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
+
+package org.sablecc.sablecc.node;
+
+import org.sablecc.sablecc.Switch;
+import org.sablecc.sablecc.analysis.Analysis;
+
+public final class PkgId10 extends PkgId
+{
+ public void apply(Switch sw)
+ {
+ ((Analysis) sw).casePkgId10(this);
+ }
+
+ public String getText()
+ {
+ return node1.getText();
+ }
+
+ public String toString()
+ {
+ return ""
+ + node1;
+ }
+
+ private TPkgId node1;
+
+ public TPkgId getNode1()
+ {
+ return node1;
+ }
+
+ public void setNode1(TPkgId node)
+ {
+ if(node1 != null)
+ {
+ node1.setParent(null);
+ }
+
+ if(node.getParent() != null)
+ {
+ node.getParent().removeChild(node);
+ }
+
+ node.setParent(this);
+
+ node1 = node;
+ }
+
+ void removeChild(Node child)
+ {
+ if(node1 == child)
+ {
+ node1 = null;
+ }
+
+ }
+}
+
Added: sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/PkgId2.java
===================================================================
--- sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/PkgId2.java (rev 0)
+++ sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/PkgId2.java 2012-07-12 16:49:25 UTC (rev 248)
@@ -0,0 +1,64 @@
+/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+ * This file is part of SableCC. *
+ * See the file "LICENSE" for copyright information and the *
+ * terms and conditions for copying, distribution and *
+ * modification of SableCC. *
+ * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
+
+package org.sablecc.sablecc.node;
+
+import org.sablecc.sablecc.Switch;
+import org.sablecc.sablecc.analysis.Analysis;
+
+public final class PkgId2 extends PkgId
+{
+ public void apply(Switch sw)
+ {
+ ((Analysis) sw).casePkgId2(this);
+ }
+
+ public String getText()
+ {
+ return node1.getText();
+ }
+
+ public String toString()
+ {
+ return ""
+ + node1;
+ }
+
+ private TStates node1;
+
+ public TStates getNode1()
+ {
+ return node1;
+ }
+
+ public void setNode1(TStates node)
+ {
+ if(node1 != null)
+ {
+ node1.setParent(null);
+ }
+
+ if(node.getParent() != null)
+ {
+ node.getParent().removeChild(node);
+ }
+
+ node.setParent(this);
+
+ node1 = node;
+ }
+
+ void removeChild(Node child)
+ {
+ if(node1 == child)
+ {
+ node1 = null;
+ }
+
+ }
+}
+
Added: sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/PkgId3.java
===================================================================
--- sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/PkgId3.java (rev 0)
+++ sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/PkgId3.java 2012-07-12 16:49:25 UTC (rev 248)
@@ -0,0 +1,64 @@
+/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+ * This file is part of SableCC. *
+ * See the file "LICENSE" for copyright information and the *
+ * terms and conditions for copying, distribution and *
+ * modification of SableCC. *
+ * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
+
+package org.sablecc.sablecc.node;
+
+import org.sablecc.sablecc.Switch;
+import org.sablecc.sablecc.analysis.Analysis;
+
+public final class PkgId3 extends PkgId
+{
+ public void apply(Switch sw)
+ {
+ ((Analysis) sw).casePkgId3(this);
+ }
+
+ public String getText()
+ {
+ return node1.getText();
+ }
+
+ public String toString()
+ {
+ return ""
+ + node1;
+ }
+
+ private THelpers node1;
+
+ public THelpers getNode1()
+ {
+ return node1;
+ }
+
+ public void setNode1(THelpers node)
+ {
+ if(node1 != null)
+ {
+ node1.setParent(null);
+ }
+
+ if(node.getParent() != null)
+ {
+ node.getParent().removeChild(node);
+ }
+
+ node.setParent(this);
+
+ node1 = node;
+ }
+
+ void removeChild(Node child)
+ {
+ if(node1 == child)
+ {
+ node1 = null;
+ }
+
+ }
+}
+
Added: sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/PkgId4.java
===================================================================
--- sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/PkgId4.java (rev 0)
+++ sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/PkgId4.java 2012-07-12 16:49:25 UTC (rev 248)
@@ -0,0 +1,64 @@
+/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+ * This file is part of SableCC. *
+ * See the file "LICENSE" for copyright information and the *
+ * terms and conditions for copying, distribution and *
+ * modification of SableCC. *
+ * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
+
+package org.sablecc.sablecc.node;
+
+import org.sablecc.sablecc.Switch;
+import org.sablecc.sablecc.analysis.Analysis;
+
+public final class PkgId4 extends PkgId
+{
+ public void apply(Switch sw)
+ {
+ ((Analysis) sw).casePkgId4(this);
+ }
+
+ public String getText()
+ {
+ return node1.getText();
+ }
+
+ public String toString()
+ {
+ return ""
+ + node1;
+ }
+
+ private TTokens node1;
+
+ public TTokens getNode1()
+ {
+ return node1;
+ }
+
+ public void setNode1(TTokens node)
+ {
+ if(node1 != null)
+ {
+ node1.setParent(null);
+ }
+
+ if(node.getParent() != null)
+ {
+ node.getParent().removeChild(node);
+ }
+
+ node.setParent(this);
+
+ node1 = node;
+ }
+
+ void removeChild(Node child)
+ {
+ if(node1 == child)
+ {
+ node1 = null;
+ }
+
+ }
+}
+
Added: sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/PkgId5.java
===================================================================
--- sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/PkgId5.java (rev 0)
+++ sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/PkgId5.java 2012-07-12 16:49:25 UTC (rev 248)
@@ -0,0 +1,64 @@
+/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+ * This file is part of SableCC. *
+ * See the file "LICENSE" for copyright information and the *
+ * terms and conditions for copying, distribution and *
+ * modification of SableCC. *
+ * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
+
+package org.sablecc.sablecc.node;
+
+import org.sablecc.sablecc.Switch;
+import org.sablecc.sablecc.analysis.Analysis;
+
+public final class PkgId5 extends PkgId
+{
+ public void apply(Switch sw)
+ {
+ ((Analysis) sw).casePkgId5(this);
+ }
+
+ public String getText()
+ {
+ return node1.getText();
+ }
+
+ public String toString()
+ {
+ return ""
+ + node1;
+ }
+
+ private TIgnored node1;
+
+ public TIgnored getNode1()
+ {
+ return node1;
+ }
+
+ public void setNode1(TIgnored node)
+ {
+ if(node1 != null)
+ {
+ node1.setParent(null);
+ }
+
+ if(node.getParent() != null)
+ {
+ node.getParent().removeChild(node);
+ }
+
+ node.setParent(this);
+
+ node1 = node;
+ }
+
+ void removeChild(Node child)
+ {
+ if(node1 == child)
+ {
+ node1 = null;
+ }
+
+ }
+}
+
Added: sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/PkgId6.java
===================================================================
--- sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/PkgId6.java (rev 0)
+++ sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/PkgId6.java 2012-07-12 16:49:25 UTC (rev 248)
@@ -0,0 +1,64 @@
+/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+ * This file is part of SableCC. *
+ * See the file "LICENSE" for copyright information and the *
+ * terms and conditions for copying, distribution and *
+ * modification of SableCC. *
+ * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
+
+package org.sablecc.sablecc.node;
+
+import org.sablecc.sablecc.Switch;
+import org.sablecc.sablecc.analysis.Analysis;
+
+public final class PkgId6 extends PkgId
+{
+ public void apply(Switch sw)
+ {
+ ((Analysis) sw).casePkgId6(this);
+ }
+
+ public String getText()
+ {
+ return node1.getText();
+ }
+
+ public String toString()
+ {
+ return ""
+ + node1;
+ }
+
+ private TProductions node1;
+
+ public TProductions getNode1()
+ {
+ return node1;
+ }
+
+ public void setNode1(TProductions node)
+ {
+ if(node1 != null)
+ {
+ node1.setParent(null);
+ }
+
+ if(node.getParent() != null)
+ {
+ node.getParent().removeChild(node);
+ }
+
+ node.setParent(this);
+
+ node1 = node;
+ }
+
+ void removeChild(Node child)
+ {
+ if(node1 == child)
+ {
+ node1 = null;
+ }
+
+ }
+}
+
Added: sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/PkgId7.java
===================================================================
--- sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/PkgId7.java (rev 0)
+++ sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/PkgId7.java 2012-07-12 16:49:25 UTC (rev 248)
@@ -0,0 +1,64 @@
+/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+ * This file is part of SableCC. *
+ * See the file "LICENSE" for copyright information and the *
+ * terms and conditions for copying, distribution and *
+ * modification of SableCC. *
+ * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
+
+package org.sablecc.sablecc.node;
+
+import org.sablecc.sablecc.Switch;
+import org.sablecc.sablecc.analysis.Analysis;
+
+public final class PkgId7 extends PkgId
+{
+ public void apply(Switch sw)
+ {
+ ((Analysis) sw).casePkgId7(this);
+ }
+
+ public String getText()
+ {
+ return node1.getText();
+ }
+
+ public String toString()
+ {
+ return ""
+ + node1;
+ }
+
+ private TTokenSpecifier node1;
+
+ public TTokenSpecifier getNode1()
+ {
+ return node1;
+ }
+
+ public void setNode1(TTokenSpecifier node)
+ {
+ if(node1 != null)
+ {
+ node1.setParent(null);
+ }
+
+ if(node.getParent() != null)
+ {
+ node.getParent().removeChild(node);
+ }
+
+ node.setParent(this);
+
+ node1 = node;
+ }
+
+ void removeChild(Node child)
+ {
+ if(node1 == child)
+ {
+ node1 = null;
+ }
+
+ }
+}
+
Added: sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/PkgId8.java
===================================================================
--- sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/PkgId8.java (rev 0)
+++ sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/PkgId8.java 2012-07-12 16:49:25 UTC (rev 248)
@@ -0,0 +1,64 @@
+/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+ * This file is part of SableCC. *
+ * See the file "LICENSE" for copyright information and the *
+ * terms and conditions for copying, distribution and *
+ * modification of SableCC. *
+ * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
+
+package org.sablecc.sablecc.node;
+
+import org.sablecc.sablecc.Switch;
+import org.sablecc.sablecc.analysis.Analysis;
+
+public final class PkgId8 extends PkgId
+{
+ public void apply(Switch sw)
+ {
+ ((Analysis) sw).casePkgId8(this);
+ }
+
+ public String getText()
+ {
+ return node1.getText();
+ }
+
+ public String toString()
+ {
+ return ""
+ + node1;
+ }
+
+ private TProductionSpecifier node1;
+
+ public TProductionSpecifier getNode1()
+ {
+ return node1;
+ }
+
+ public void setNode1(TProductionSpecifier node)
+ {
+ if(node1 != null)
+ {
+ node1.setParent(null);
+ }
+
+ if(node.getParent() != null)
+ {
+ node.getParent().removeChild(node);
+ }
+
+ node.setParent(this);
+
+ node1 = node;
+ }
+
+ void removeChild(Node child)
+ {
+ if(node1 == child)
+ {
+ node1 = null;
+ }
+
+ }
+}
+
Added: sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/PkgId9.java
===================================================================
--- sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/PkgId9.java (rev 0)
+++ sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/PkgId9.java 2012-07-12 16:49:25 UTC (rev 248)
@@ -0,0 +1,64 @@
+/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+ * This file is part of SableCC. *
+ * See the file "LICENSE" for copyright information and the *
+ * terms and conditions for copying, distribution and *
+ * modification of SableCC. *
+ * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
+
+package org.sablecc.sablecc.node;
+
+import org.sablecc.sablecc.Switch;
+import org.sablecc.sablecc.analysis.Analysis;
+
+public final class PkgId9 extends PkgId
+{
+ public void apply(Switch sw)
+ {
+ ((Analysis) sw).casePkgId9(this);
+ }
+
+ public String getText()
+ {
+ return node1.getText();
+ }
+
+ public String toString()
+ {
+ return ""
+ + node1;
+ }
+
+ private TId node1;
+
+ public TId getNode1()
+ {
+ return node1;
+ }
+
+ public void setNode1(TId node)
+ {
+ if(node1 != null)
+ {
+ node1.setParent(null);
+ }
+
+ if(node.getParent() != null)
+ {
+ node.getParent().removeChild(node);
+ }
+
+ node.setParent(this);
+
+ node1 = node;
+ }
+
+ void removeChild(Node child)
+ {
+ if(node1 == child)
+ {
+ node1 = null;
+ }
+
+ }
+}
+
Added: sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/PkgName.java
===================================================================
--- sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/PkgName.java (rev 0)
+++ sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/PkgName.java 2012-07-12 16:49:25 UTC (rev 248)
@@ -0,0 +1,13 @@
+/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+ * This file is part of SableCC. *
+ * See the file "LICENSE" for copyright information and the *
+ * terms and conditions for copying, distribution and *
+ * modification of SableCC. *
+ * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
+
+package org.sablecc.sablecc.node;
+
+public abstract class PkgName extends Node
+{
+}
+
Added: sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/PkgName1.java
===================================================================
--- sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/PkgName1.java (rev 0)
+++ sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/PkgName1.java 2012-07-12 16:49:25 UTC (rev 248)
@@ -0,0 +1,119 @@
+/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+ * This file is part of SableCC. *
+ * See the file "LICENSE" for copyright information and the *
+ * terms and conditions for copying, distribution and *
+ * modification of SableCC. *
+ * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
+
+package org.sablecc.sablecc.node;
+
+import org.sablecc.sablecc.Switch;
+import org.sablecc.sablecc.analysis.Analysis;
+
+public final class PkgName1 extends PkgName
+{
+ public void apply(Switch sw)
+ {
+ ((Analysis) sw).casePkgName1(this);
+ }
+
+ public String toString()
+ {
+ return ""
+ + node1
+ + node2
+ + node3;
+ }
+
+ private PkgId node1;
+
+ public PkgId getNode1()
+ {
+ return node1;
+ }
+
+ public void setNode1(PkgId node)
+ {
+ if(node1 != null)
+ {
+ node1.setParent(null);
+ }
+
+ if(node.getParent() != null)
+ {
+ node.getParent().removeChild(node);
+ }
+
+ node.setParent(this);
+
+ node1 = node;
+ }
+
+ private PkgNameTails node2;
+
+ public PkgNameTails getNode2()
+ {
+ return node2;
+ }
+
+ public void setNode2(PkgNameTails node)
+ {
+ if(node2 != null)
+ {
+ node2.setParent(null);
+ }
+
+ if(node.getParent() != null)
+ {
+ node.getParent().removeChild(node);
+ }
+
+ node.setParent(this);
+
+ node2 = node;
+ }
+
+ private TSemicolon node3;
+
+ public TSemicolon getNode3()
+ {
+ return node3;
+ }
+
+ public void setNode3(TSemicolon node)
+ {
+ if(node3 != null)
+ {
+ node3.setParent(null);
+ }
+
+ if(node.getParent() != null)
+ {
+ node.getParent().removeChild(node);
+ }
+
+ node.setParent(this);
+
+ node3 = node;
+ }
+
+ void removeChild(Node child)
+ {
+ if(node1 == child)
+ {
+ node1 = null;
+ }
+
+ if(node2 == child)
+ {
+ node2 = null;
+ }
+
+ if(node3 == child)
+ {
+ node3 = null;
+ }
+
+ }
+}
+
Added: sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/PkgNameOpt.java
===================================================================
--- sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/PkgNameOpt.java (rev 0)
+++ sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/PkgNameOpt.java 2012-07-12 16:49:25 UTC (rev 248)
@@ -0,0 +1,13 @@
+/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+ * This file is part of SableCC. *
+ * See the file "LICENSE" for copyright information and the *
+ * terms and conditions for copying, distribution and *
+ * modification of SableCC. *
+ * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
+
+package org.sablecc.sablecc.node;
+
+public abstract class PkgNameOpt extends Node
+{
+}
+
Added: sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/PkgNameOpt1.java
===================================================================
--- sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/PkgNameOpt1.java (rev 0)
+++ sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/PkgNameOpt1.java 2012-07-12 16:49:25 UTC (rev 248)
@@ -0,0 +1,59 @@
+/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+ * This file is part of SableCC. *
+ * See the file "LICENSE" for copyright information and the *
+ * terms and conditions for copying, distribution and *
+ * modification of SableCC. *
+ * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
+
+package org.sablecc.sablecc.node;
+
+import org.sablecc.sablecc.Switch;
+import org.sablecc.sablecc.analysis.Analysis;
+
+public final class PkgNameOpt1 extends PkgNameOpt
+{
+ public void apply(Switch sw)
+ {
+ ((Analysis) sw).casePkgNameOpt1(this);
+ }
+
+ public String toString()
+ {
+ return ""
+ + node1;
+ }
+
+ private PkgName node1;
+
+ public PkgName getNode1()
+ {
+ return node1;
+ }
+
+ public void setNode1(PkgName node)
+ {
+ if(node1 != null)
+ {
+ node1.setParent(null);
+ }
+
+ if(node.getParent() != null)
+ {
+ node.getParent().removeChild(node);
+ }
+
+ node.setParent(this);
+
+ node1 = node;
+ }
+
+ void removeChild(Node child)
+ {
+ if(node1 == child)
+ {
+ node1 = null;
+ }
+
+ }
+}
+
Added: sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/PkgNameTail.java
===================================================================
--- sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/PkgNameTail.java (rev 0)
+++ sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/PkgNameTail.java 2012-07-12 16:49:25 UTC (rev 248)
@@ -0,0 +1,13 @@
+/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+ * This file is part of SableCC. *
+ * See the file "LICENSE" for copyright information and the *
+ * terms and conditions for copying, distribution and *
+ * modification of SableCC. *
+ * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
+
+package org.sablecc.sablecc.node;
+
+public abstract class PkgNameTail extends Node
+{
+}
+
Added: sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/PkgNameTail1.java
===================================================================
--- sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/PkgNameTail1.java (rev 0)
+++ sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/PkgNameTail1.java 2012-07-12 16:49:25 UTC (rev 248)
@@ -0,0 +1,89 @@
+/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+ * This file is part of SableCC. *
+ * See the file "LICENSE" for copyright information and the *
+ * terms and conditions for copying, distribution and *
+ * modification of SableCC. *
+ * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
+
+package org.sablecc.sablecc.node;
+
+import org.sablecc.sablecc.Switch;
+import org.sablecc.sablecc.analysis.Analysis;
+
+public final class PkgNameTail1 extends PkgNameTail
+{
+ public void apply(Switch sw)
+ {
+ ((Analysis) sw).casePkgNameTail1(this);
+ }
+
+ public String toString()
+ {
+ return ""
+ + node1
+ + node2;
+ }
+
+ private TDot node1;
+
+ public TDot getNode1()
+ {
+ return node1;
+ }
+
+ public void setNode1(TDot node)
+ {
+ if(node1 != null)
+ {
+ node1.setParent(null);
+ }
+
+ if(node.getParent() != null)
+ {
+ node.getParent().removeChild(node);
+ }
+
+ node.setParent(this);
+
+ node1 = node;
+ }
+
+ private PkgId node2;
+
+ public PkgId getNode2()
+ {
+ return node2;
+ }
+
+ public void setNode2(PkgId node)
+ {
+ if(node2 != null)
+ {
+ node2.setParent(null);
+ }
+
+ if(node.getParent() != null)
+ {
+ node.getParent().removeChild(node);
+ }
+
+ node.setParent(this);
+
+ node2 = node;
+ }
+
+ void removeChild(Node child)
+ {
+ if(node1 == child)
+ {
+ node1 = null;
+ }
+
+ if(node2 == child)
+ {
+ node2 = null;
+ }
+
+ }
+}
+
Added: sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/PkgNameTails.java
===================================================================
--- sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/PkgNameTails.java (rev 0)
+++ sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/PkgNameTails.java 2012-07-12 16:49:25 UTC (rev 248)
@@ -0,0 +1,13 @@
+/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+ * This file is part of SableCC. *
+ * See the file "LICENSE" for copyright information and the *
+ * terms and conditions for copying, distribution and *
+ * modification of SableCC. *
+ * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
+
+package org.sablecc.sablecc.node;
+
+public abstract class PkgNameTails extends Node
+{
+}
+
Added: sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/PkgNameTails1.java
===================================================================
--- sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/PkgNameTails1.java (rev 0)
+++ sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/PkgNameTails1.java 2012-07-12 16:49:25 UTC (rev 248)
@@ -0,0 +1,89 @@
+/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+ * This file is part of SableCC. *
+ * See the file "LICENSE" for copyright information and the *
+ * terms and conditions for copying, distribution and *
+ * modification of SableCC. *
+ * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
+
+package org.sablecc.sablecc.node;
+
+import org.sablecc.sablecc.Switch;
+import org.sablecc.sablecc.analysis.Analysis;
+
+public final class PkgNameTails1 extends PkgNameTails
+{
+ public void apply(Switch sw)
+ {
+ ((Analysis) sw).casePkgNameTails1(this);
+ }
+
+ public String toString()
+ {
+ return ""
+ + node1
+ + node2;
+ }
+
+ private PkgNameTail node1;
+
+ public PkgNameTail getNode1()
+ {
+ return node1;
+ }
+
+ public void setNode1(PkgNameTail node)
+ {
+ if(node1 != null)
+ {
+ node1.setParent(null);
+ }
+
+ if(node.getParent() != null)
+ {
+ node.getParent().removeChild(node);
+ }
+
+ node.setParent(this);
+
+ node1 = node;
+ }
+
+ private PkgNameTails node2;
+
+ public PkgNameTails getNode2()
+ {
+ return node2;
+ }
+
+ public void setNode2(PkgNameTails node)
+ {
+ if(node2 != null)
+ {
+ node2.setParent(null);
+ }
+
+ if(node.getParent() != null)
+ {
+ node.getParent().removeChild(node);
+ }
+
+ node.setParent(this);
+
+ node2 = node;
+ }
+
+ void removeChild(Node child)
+ {
+ if(node1 == child)
+ {
+ node1 = null;
+ }
+
+ if(node2 == child)
+ {
+ node2 = null;
+ }
+
+ }
+}
+
Added: sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/PkgNameTails2.java
===================================================================
--- sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/PkgNameTails2.java (rev 0)
+++ sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/PkgNameTails2.java 2012-07-12 16:49:25 UTC (rev 248)
@@ -0,0 +1,29 @@
+/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+ * This file is part of SableCC. *
+ * See the file "LICENSE" for copyright information and the *
+ * terms and conditions for copying, distribution and *
+ * modification of SableCC. *
+ * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
+
+package org.sablecc.sablecc.node;
+
+import org.sablecc.sablecc.Switch;
+import org.sablecc.sablecc.analysis.Analysis;
+
+public final class PkgNameTails2 extends PkgNameTails
+{
+ public void apply(Switch sw)
+ {
+ ((Analysis) sw).casePkgNameTails2(this);
+ }
+
+ public String toString()
+ {
+ return "";
+ }
+
+ void removeChild(Node child)
+ {
+ }
+}
+
Added: sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/Prod.java
===================================================================
--- sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/Prod.java (rev 0)
+++ sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/Prod.java 2012-07-12 16:49:25 UTC (rev 248)
@@ -0,0 +1,13 @@
+/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+ * This file is part of SableCC. *
+ * See the file "LICENSE" for copyright information and the *
+ * terms and conditions for copying, distribution and *
+ * modification of SableCC. *
+ * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
+
+package org.sablecc.sablecc.node;
+
+public abstract class Prod extends Node
+{
+}
+
Added: sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/Prod1.java
===================================================================
--- sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/Prod1.java (rev 0)
+++ sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/Prod1.java 2012-07-12 16:49:25 UTC (rev 248)
@@ -0,0 +1,149 @@
+/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+ * This file is part of SableCC. *
+ * See the file "LICENSE" for copyright information and the *
+ * terms and conditions for copying, distribution and *
+ * modification of SableCC. *
+ * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
+
+package org.sablecc.sablecc.node;
+
+import org.sablecc.sablecc.Switch;
+import org.sablecc.sablecc.analysis.Analysis;
+
+public final class Prod1 extends Prod
+{
+ public void apply(Switch sw)
+ {
+ ((Analysis) sw).caseProd1(this);
+ }
+
+ public String toString()
+ {
+ return ""
+ + node1
+ + node2
+ + node3
+ + node4;
+ }
+
+ private TId node1;
+
+ public TId getNode1()
+ {
+ return node1;
+ }
+
+ public void setNode1(TId node)
+ {
+ if(node1 != null)
+ {
+ node1.setParent(null);
+ }
+
+ if(node.getParent() != null)
+ {
+ node.getParent().removeChild(node);
+ }
+
+ node.setParent(this);
+
+ node1 = node;
+ }
+
+ private TEqual node2;
+
+ public TEqual getNode2()
+ {
+ return node2;
+ }
+
+ public void setNode2(TEqual node)
+ {
+ if(node2 != null)
+ {
+ node2.setParent(null);
+ }
+
+ if(node.getParent() != null)
+ {
+ node.getParent().removeChild(node);
+ }
+
+ node.setParent(this);
+
+ node2 = node;
+ }
+
+ private Alts node3;
+
+ public Alts getNode3()
+ {
+ return node3;
+ }
+
+ public void setNode3(Alts node)
+ {
+ if(node3 != null)
+ {
+ node3.setParent(null);
+ }
+
+ if(node.getParent() != null)
+ {
+ node.getParent().removeChild(node);
+ }
+
+ node.setParent(this);
+
+ node3 = node;
+ }
+
+ private TSemicolon node4;
+
+ public TSemicolon getNode4()
+ {
+ return node4;
+ }
+
+ public void setNode4(TSemicolon node)
+ {
+ if(node4 != null)
+ {
+ node4.setParent(null);
+ }
+
+ if(node.getParent() != null)
+ {
+ node.getParent().removeChild(node);
+ }
+
+ node.setParent(this);
+
+ node4 = node;
+ }
+
+ void removeChild(Node child)
+ {
+ if(node1 == child)
+ {
+ node1 = null;
+ }
+
+ if(node2 == child)
+ {
+ node2 = null;
+ }
+
+ if(node3 == child)
+ {
+ node3 = null;
+ }
+
+ if(node4 == child)
+ {
+ node4 = null;
+ }
+
+ }
+}
+
Added: sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/Prods.java
===================================================================
--- sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/Prods.java (rev 0)
+++ sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/Prods.java 2012-07-12 16:49:25 UTC (rev 248)
@@ -0,0 +1,13 @@
+/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+ * This file is part of SableCC. *
+ * See the file "LICENSE" for copyright information and the *
+ * terms and conditions for copying, distribution and *
+ * modification of SableCC. *
+ * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
+
+package org.sablecc.sablecc.node;
+
+public abstract class Prods extends Node
+{
+}
+
Added: sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/Prods1.java
===================================================================
--- sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/Prods1.java (rev 0)
+++ sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/Prods1.java 2012-07-12 16:49:25 UTC (rev 248)
@@ -0,0 +1,89 @@
+/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+ * This file is part of SableCC. *
+ * See the file "LICENSE" for copyright information and the *
+ * terms and conditions for copying, distribution and *
+ * modification of SableCC. *
+ * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
+
+package org.sablecc.sablecc.node;
+
+import org.sablecc.sablecc.Switch;
+import org.sablecc.sablecc.analysis.Analysis;
+
+public final class Prods1 extends Prods
+{
+ public void apply(Switch sw)
+ {
+ ((Analysis) sw).caseProds1(this);
+ }
+
+ public String toString()
+ {
+ return ""
+ + node1
+ + node2;
+ }
+
+ private Prod node1;
+
+ public Prod getNode1()
+ {
+ return node1;
+ }
+
+ public void setNode1(Prod node)
+ {
+ if(node1 != null)
+ {
+ node1.setParent(null);
+ }
+
+ if(node.getParent() != null)
+ {
+ node.getParent().removeChild(node);
+ }
+
+ node.setParent(this);
+
+ node1 = node;
+ }
+
+ private Prods node2;
+
+ public Prods getNode2()
+ {
+ return node2;
+ }
+
+ public void setNode2(Prods node)
+ {
+ if(node2 != null)
+ {
+ node2.setParent(null);
+ }
+
+ if(node.getParent() != null)
+ {
+ node.getParent().removeChild(node);
+ }
+
+ node.setParent(this);
+
+ node2 = node;
+ }
+
+ void removeChild(Node child)
+ {
+ if(node1 == child)
+ {
+ node1 = null;
+ }
+
+ if(node2 == child)
+ {
+ node2 = null;
+ }
+
+ }
+}
+
Added: sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/Prods2.java
===================================================================
--- sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/Prods2.java (rev 0)
+++ sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/Prods2.java 2012-07-12 16:49:25 UTC (rev 248)
@@ -0,0 +1,29 @@
+/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+ * This file is part of SableCC. *
+ * See the file "LICENSE" for copyright information and the *
+ * terms and conditions for copying, distribution and *
+ * modification of SableCC. *
+ * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
+
+package org.sablecc.sablecc.node;
+
+import org.sablecc.sablecc.Switch;
+import org.sablecc.sablecc.analysis.Analysis;
+
+public final class Prods2 extends Prods
+{
+ public void apply(Switch sw)
+ {
+ ((Analysis) sw).caseProds2(this);
+ }
+
+ public String toString()
+ {
+ return "";
+ }
+
+ void removeChild(Node child)
+ {
+ }
+}
+
Added: sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/Productions.java
===================================================================
--- sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/Productions.java (rev 0)
+++ sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/Productions.java 2012-07-12 16:49:25 UTC (rev 248)
@@ -0,0 +1,13 @@
+/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+ * This file is part of SableCC. *
+ * See the file "LICENSE" for copyright information and the *
+ * terms and conditions for copying, distribution and *
+ * modification of SableCC. *
+ * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
+
+package org.sablecc.sablecc.node;
+
+public abstract class Productions extends Node
+{
+}
+
Added: sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/Productions1.java
===================================================================
--- sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/Productions1.java (rev 0)
+++ sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/Productions1.java 2012-07-12 16:49:25 UTC (rev 248)
@@ -0,0 +1,89 @@
+/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+ * This file is part of SableCC. *
+ * See the file "LICENSE" for copyright information and the *
+ * terms and conditions for copying, distribution and *
+ * modification of SableCC. *
+ * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
+
+package org.sablecc.sablecc.node;
+
+import org.sablecc.sablecc.Switch;
+import org.sablecc.sablecc.analysis.Analysis;
+
+public final class Productions1 extends Productions
+{
+ public void apply(Switch sw)
+ {
+ ((Analysis) sw).caseProductions1(this);
+ }
+
+ public String toString()
+ {
+ return ""
+ + node1
+ + node2;
+ }
+
+ private TProductions node1;
+
+ public TProductions getNode1()
+ {
+ return node1;
+ }
+
+ public void setNode1(TProductions node)
+ {
+ if(node1 != null)
+ {
+ node1.setParent(null);
+ }
+
+ if(node.getParent() != null)
+ {
+ node.getParent().removeChild(node);
+ }
+
+ node.setParent(this);
+
+ node1 = node;
+ }
+
+ private Prods node2;
+
+ public Prods getNode2()
+ {
+ return node2;
+ }
+
+ public void setNode2(Prods node)
+ {
+ if(node2 != null)
+ {
+ node2.setParent(null);
+ }
+
+ if(node.getParent() != null)
+ {
+ node.getParent().removeChild(node);
+ }
+
+ node.setParent(this);
+
+ node2 = node;
+ }
+
+ void removeChild(Node child)
+ {
+ if(node1 == child)
+ {
+ node1 = null;
+ }
+
+ if(node2 == child)
+ {
+ node2 = null;
+ }
+
+ }
+}
+
Added: sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/ProductionsOpt.java
===================================================================
--- sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/ProductionsOpt.java (rev 0)
+++ sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/ProductionsOpt.java 2012-07-12 16:49:25 UTC (rev 248)
@@ -0,0 +1,13 @@
+/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+ * This file is part of SableCC. *
+ * See the file "LICENSE" for copyright information and the *
+ * terms and conditions for copying, distribution and *
+ * modification of SableCC. *
+ * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
+
+package org.sablecc.sablecc.node;
+
+public abstract class ProductionsOpt extends Node
+{
+}
+
Added: sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/ProductionsOpt1.java
===================================================================
--- sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/ProductionsOpt1.java (rev 0)
+++ sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/ProductionsOpt1.java 2012-07-12 16:49:25 UTC (rev 248)
@@ -0,0 +1,59 @@
+/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+ * This file is part of SableCC. *
+ * See the file "LICENSE" for copyright information and the *
+ * terms and conditions for copying, distribution and *
+ * modification of SableCC. *
+ * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
+
+package org.sablecc.sablecc.node;
+
+import org.sablecc.sablecc.Switch;
+import org.sablecc.sablecc.analysis.Analysis;
+
+public final class ProductionsOpt1 extends ProductionsOpt
+{
+ public void apply(Switch sw)
+ {
+ ((Analysis) sw).caseProductionsOpt1(this);
+ }
+
+ public String toString()
+ {
+ return ""
+ + node1;
+ }
+
+ private Productions node1;
+
+ public Productions getNode1()
+ {
+ return node1;
+ }
+
+ public void setNode1(Productions node)
+ {
+ if(node1 != null)
+ {
+ node1.setParent(null);
+ }
+
+ if(node.getParent() != null)
+ {
+ node.getParent().removeChild(node);
+ }
+
+ node.setParent(this);
+
+ node1 = node;
+ }
+
+ void removeChild(Node child)
+ {
+ if(node1 == child)
+ {
+ node1 = null;
+ }
+
+ }
+}
+
Added: sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/ProductionsOpt2.java
===================================================================
--- sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/ProductionsOpt2.java (rev 0)
+++ sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/ProductionsOpt2.java 2012-07-12 16:49:25 UTC (rev 248)
@@ -0,0 +1,29 @@
+/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+ * This file is part of SableCC. *
+ * See the file "LICENSE" for copyright information and the *
+ * terms and conditions for copying, distribution and *
+ * modification of SableCC. *
+ * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
+
+package org.sablecc.sablecc.node;
+
+import org.sablecc.sablecc.Switch;
+import org.sablecc.sablecc.analysis.Analysis;
+
+public final class ProductionsOpt2 extends ProductionsOpt
+{
+ public void apply(Switch sw)
+ {
+ ((Analysis) sw).caseProductionsOpt2(this);
+ }
+
+ public String toString()
+ {
+ return "";
+ }
+
+ void removeChild(Node child)
+ {
+ }
+}
+
Added: sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/RegExp.java
===================================================================
--- sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/RegExp.java (rev 0)
+++ sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/RegExp.java 2012-07-12 16:49:25 UTC (rev 248)
@@ -0,0 +1,13 @@
+/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+ * This file is part of SableCC. *
+ * See the file "LICENSE" for copyright information and the *
+ * terms and conditions for copying, distribution and *
+ * modification of SableCC. *
+ * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
+
+package org.sablecc.sablecc.node;
+
+public abstract class RegExp extends Node
+{
+}
+
Added: sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/RegExp1.java
===================================================================
--- sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/RegExp1.java (rev 0)
+++ sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/RegExp1.java 2012-07-12 16:49:25 UTC (rev 248)
@@ -0,0 +1,89 @@
+/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+ * This file is part of SableCC. *
+ * See the file "LICENSE" for copyright information and the *
+ * terms and conditions for copying, distribution and *
+ * modification of SableCC. *
+ * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
+
+package org.sablecc.sablecc.node;
+
+import org.sablecc.sablecc.Switch;
+import org.sablecc.sablecc.analysis.Analysis;
+
+public final class RegExp1 extends RegExp
+{
+ public void apply(Switch sw)
+ {
+ ((Analysis) sw).caseRegExp1(this);
+ }
+
+ public String toString()
+ {
+ return ""
+ + node1
+ + node2;
+ }
+
+ private Concat node1;
+
+ public Concat getNode1()
+ {
+ return node1;
+ }
+
+ public void setNode1(Concat node)
+ {
+ if(node1 != null)
+ {
+ node1.setParent(null);
+ }
+
+ if(node.getParent() != null)
+ {
+ node.getParent().removeChild(node);
+ }
+
+ node.setParent(this);
+
+ node1 = node;
+ }
+
+ private RegExpTails node2;
+
+ public RegExpTails getNode2()
+ {
+ return node2;
+ }
+
+ public void setNode2(RegExpTails node)
+ {
+ if(node2 != null)
+ {
+ node2.setParent(null);
+ }
+
+ if(node.getParent() != null)
+ {
+ node.getParent().removeChild(node);
+ }
+
+ node.setParent(this);
+
+ node2 = node;
+ }
+
+ void removeChild(Node child)
+ {
+ if(node1 == child)
+ {
+ node1 = null;
+ }
+
+ if(node2 == child)
+ {
+ node2 = null;
+ }
+
+ }
+}
+
Added: sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/RegExpTail.java
===================================================================
--- sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/RegExpTail.java (rev 0)
+++ sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/RegExpTail.java 2012-07-12 16:49:25 UTC (rev 248)
@@ -0,0 +1,13 @@
+/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+ * This file is part of SableCC. *
+ * See the file "LICENSE" for copyright information and the *
+ * terms and conditions for copying, distribution and *
+ * modification of SableCC. *
+ * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
+
+package org.sablecc.sablecc.node;
+
+public abstract class RegExpTail extends Node
+{
+}
+
Added: sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/RegExpTail1.java
===================================================================
--- sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/RegExpTail1.java (rev 0)
+++ sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/RegExpTail1.java 2012-07-12 16:49:25 UTC (rev 248)
@@ -0,0 +1,89 @@
+/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+ * This file is part of SableCC. *
+ * See the file "LICENSE" for copyright information and the *
+ * terms and conditions for copying, distribution and *
+ * modification of SableCC. *
+ * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
+
+package org.sablecc.sablecc.node;
+
+import org.sablecc.sablecc.Switch;
+import org.sablecc.sablecc.analysis.Analysis;
+
+public final class RegExpTail1 extends RegExpTail
+{
+ public void apply(Switch sw)
+ {
+ ((Analysis) sw).caseRegExpTail1(this);
+ }
+
+ public String toString()
+ {
+ return ""
+ + node1
+ + node2;
+ }
+
+ private TBar node1;
+
+ public TBar getNode1()
+ {
+ return node1;
+ }
+
+ public void setNode1(TBar node)
+ {
+ if(node1 != null)
+ {
+ node1.setParent(null);
+ }
+
+ if(node.getParent() != null)
+ {
+ node.getParent().removeChild(node);
+ }
+
+ node.setParent(this);
+
+ node1 = node;
+ }
+
+ private Concat node2;
+
+ public Concat getNode2()
+ {
+ return node2;
+ }
+
+ public void setNode2(Concat node)
+ {
+ if(node2 != null)
+ {
+ node2.setParent(null);
+ }
+
+ if(node.getParent() != null)
+ {
+ node.getParent().removeChild(node);
+ }
+
+ node.setParent(this);
+
+ node2 = node;
+ }
+
+ void removeChild(Node child)
+ {
+ if(node1 == child)
+ {
+ node1 = null;
+ }
+
+ if(node2 == child)
+ {
+ node2 = null;
+ }
+
+ }
+}
+
Added: sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/RegExpTails.java
===================================================================
--- sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/RegExpTails.java (rev 0)
+++ sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/RegExpTails.java 2012-07-12 16:49:25 UTC (rev 248)
@@ -0,0 +1,13 @@
+/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+ * This file is part of SableCC. *
+ * See the file "LICENSE" for copyright information and the *
+ * terms and conditions for copying, distribution and *
+ * modification of SableCC. *
+ * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
+
+package org.sablecc.sablecc.node;
+
+public abstract class RegExpTails extends Node
+{
+}
+
Added: sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/RegExpTails1.java
===================================================================
--- sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/RegExpTails1.java (rev 0)
+++ sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/RegExpTails1.java 2012-07-12 16:49:25 UTC (rev 248)
@@ -0,0 +1,89 @@
+/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+ * This file is part of SableCC. *
+ * See the file "LICENSE" for copyright information and the *
+ * terms and conditions for copying, distribution and *
+ * modification of SableCC. *
+ * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
+
+package org.sablecc.sablecc.node;
+
+import org.sablecc.sablecc.Switch;
+import org.sablecc.sablecc.analysis.Analysis;
+
+public final class RegExpTails1 extends RegExpTails
+{
+ public void apply(Switch sw)
+ {
+ ((Analysis) sw).caseRegExpTails1(this);
+ }
+
+ public String toString()
+ {
+ return ""
+ + node1
+ + node2;
+ }
+
+ private RegExpTail node1;
+
+ public RegExpTail getNode1()
+ {
+ return node1;
+ }
+
+ public void setNode1(RegExpTail node)
+ {
+ if(node1 != null)
+ {
+ node1.setParent(null);
+ }
+
+ if(node.getParent() != null)
+ {
+ node.getParent().removeChild(node);
+ }
+
+ node.setParent(this);
+
+ node1 = node;
+ }
+
+ private RegExpTails node2;
+
+ public RegExpTails getNode2()
+ {
+ return node2;
+ }
+
+ public void setNode2(RegExpTails node)
+ {
+ if(node2 != null)
+ {
+ node2.setParent(null);
+ }
+
+ if(node.getParent() != null)
+ {
+ node.getParent().removeChild(node);
+ }
+
+ node.setParent(this);
+
+ node2 = node;
+ }
+
+ void removeChild(Node child)
+ {
+ if(node1 == child)
+ {
+ node1 = null;
+ }
+
+ if(node2 == child)
+ {
+ node2 = null;
+ }
+
+ }
+}
+
Added: sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/RegExpTails2.java
===================================================================
--- sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/RegExpTails2.java (rev 0)
+++ sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/RegExpTails2.java 2012-07-12 16:49:25 UTC (rev 248)
@@ -0,0 +1,29 @@
+/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+ * This file is part of SableCC. *
+ * See the file "LICENSE" for copyright information and the *
+ * terms and conditions for copying, distribution and *
+ * modification of SableCC. *
+ * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
+
+package org.sablecc.sablecc.node;
+
+import org.sablecc.sablecc.Switch;
+import org.sablecc.sablecc.analysis.Analysis;
+
+public final class RegExpTails2 extends RegExpTails
+{
+ public void apply(Switch sw)
+ {
+ ((Analysis) sw).caseRegExpTails2(this);
+ }
+
+ public String toString()
+ {
+ return "";
+ }
+
+ void removeChild(Node child)
+ {
+ }
+}
+
Added: sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/Specifier.java
===================================================================
--- sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/Specifier.java (rev 0)
+++ sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/Specifier.java 2012-07-12 16:49:25 UTC (rev 248)
@@ -0,0 +1,13 @@
+/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+ * This file is part of SableCC. *
+ * See the file "LICENSE" for copyright information and the *
+ * terms and conditions for copying, distribution and *
+ * modification of SableCC. *
+ * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
+
+package org.sablecc.sablecc.node;
+
+public abstract class Specifier extends Node
+{
+}
+
Added: sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/Specifier1.java
===================================================================
--- sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/Specifier1.java (rev 0)
+++ sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/Specifier1.java 2012-07-12 16:49:25 UTC (rev 248)
@@ -0,0 +1,89 @@
+/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+ * This file is part of SableCC. *
+ * See the file "LICENSE" for copyright information and the *
+ * terms and conditions for copying, distribution and *
+ * modification of SableCC. *
+ * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
+
+package org.sablecc.sablecc.node;
+
+import org.sablecc.sablecc.Switch;
+import org.sablecc.sablecc.analysis.Analysis;
+
+public final class Specifier1 extends Specifier
+{
+ public void apply(Switch sw)
+ {
+ ((Analysis) sw).caseSpecifier1(this);
+ }
+
+ public String toString()
+ {
+ return ""
+ + node1
+ + node2;
+ }
+
+ private TTokenSpecifier node1;
+
+ public TTokenSpecifier getNode1()
+ {
+ return node1;
+ }
+
+ public void setNode1(TTokenSpecifier node)
+ {
+ if(node1 != null)
+ {
+ node1.setParent(null);
+ }
+
+ if(node.getParent() != null)
+ {
+ node.getParent().removeChild(node);
+ }
+
+ node.setParent(this);
+
+ node1 = node;
+ }
+
+ private TDot node2;
+
+ public TDot getNode2()
+ {
+ return node2;
+ }
+
+ public void setNode2(TDot node)
+ {
+ if(node2 != null)
+ {
+ node2.setParent(null);
+ }
+
+ if(node.getParent() != null)
+ {
+ node.getParent().removeChild(node);
+ }
+
+ node.setParent(this);
+
+ node2 = node;
+ }
+
+ void removeChild(Node child)
+ {
+ if(node1 == child)
+ {
+ node1 = null;
+ }
+
+ if(node2 == child)
+ {
+ node2 = null;
+ }
+
+ }
+}
+
Added: sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/Specifier2.java
===================================================================
--- sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/Specifier2.java (rev 0)
+++ sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/Specifier2.java 2012-07-12 16:49:25 UTC (rev 248)
@@ -0,0 +1,89 @@
+/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+ * This file is part of SableCC. *
+ * See the file "LICENSE" for copyright information and the *
+ * terms and conditions for copying, distribution and *
+ * modification of SableCC. *
+ * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
+
+package org.sablecc.sablecc.node;
+
+import org.sablecc.sablecc.Switch;
+import org.sablecc.sablecc.analysis.Analysis;
+
+public final class Specifier2 extends Specifier
+{
+ public void apply(Switch sw)
+ {
+ ((Analysis) sw).caseSpecifier2(this);
+ }
+
+ public String toString()
+ {
+ return ""
+ + node1
+ + node2;
+ }
+
+ private TProductionSpecifier node1;
+
+ public TProductionSpecifier getNode1()
+ {
+ return node1;
+ }
+
+ public void setNode1(TProductionSpecifier node)
+ {
+ if(node1 != null)
+ {
+ node1.setParent(null);
+ }
+
+ if(node.getParent() != null)
+ {
+ node.getParent().removeChild(node);
+ }
+
+ node.setParent(this);
+
+ node1 = node;
+ }
+
+ private TDot node2;
+
+ public TDot getNode2()
+ {
+ return node2;
+ }
+
+ public void setNode2(TDot node)
+ {
+ if(node2 != null)
+ {
+ node2.setParent(null);
+ }
+
+ if(node.getParent() != null)
+ {
+ node.getParent().removeChild(node);
+ }
+
+ node.setParent(this);
+
+ node2 = node;
+ }
+
+ void removeChild(Node child)
+ {
+ if(node1 == child)
+ {
+ node1 = null;
+ }
+
+ if(node2 == child)
+ {
+ node2 = null;
+ }
+
+ }
+}
+
Added: sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/SpecifierOpt.java
===================================================================
--- sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/SpecifierOpt.java (rev 0)
+++ sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/SpecifierOpt.java 2012-07-12 16:49:25 UTC (rev 248)
@@ -0,0 +1,13 @@
+/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+ * This file is part of SableCC. *
+ * See the file "LICENSE" for copyright information and the *
+ * terms and conditions for copying, distribution and *
+ * modification of SableCC. *
+ * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
+
+package org.sablecc.sablecc.node;
+
+public abstract class SpecifierOpt extends Node
+{
+}
+
Added: sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/SpecifierOpt1.java
===================================================================
--- sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/SpecifierOpt1.java (rev 0)
+++ sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/SpecifierOpt1.java 2012-07-12 16:49:25 UTC (rev 248)
@@ -0,0 +1,59 @@
+/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+ * This file is part of SableCC. *
+ * See the file "LICENSE" for copyright information and the *
+ * terms and conditions for copying, distribution and *
+ * modification of SableCC. *
+ * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
+
+package org.sablecc.sablecc.node;
+
+import org.sablecc.sablecc.Switch;
+import org.sablecc.sablecc.analysis.Analysis;
+
+public final class SpecifierOpt1 extends SpecifierOpt
+{
+ public void apply(Switch sw)
+ {
+ ((Analysis) sw).caseSpecifierOpt1(this);
+ }
+
+ public String toString()
+ {
+ return ""
+ + node1;
+ }
+
+ private Specifier node1;
+
+ public Specifier getNode1()
+ {
+ return node1;
+ }
+
+ public void setNode1(Specifier node)
+ {
+ if(node1 != null)
+ {
+ node1.setParent(null);
+ }
+
+ if(node.getParent() != null)
+ {
+ node.getParent().removeChild(node);
+ }
+
+ node.setParent(this);
+
+ node1 = node;
+ }
+
+ void removeChild(Node child)
+ {
+ if(node1 == child)
+ {
+ node1 = null;
+ }
+
+ }
+}
+
Added: sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/SpecifierOpt2.java
===================================================================
--- sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/SpecifierOpt2.java (rev 0)
+++ sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/SpecifierOpt2.java 2012-07-12 16:49:25 UTC (rev 248)
@@ -0,0 +1,29 @@
+/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+ * This file is part of SableCC. *
+ * See the file "LICENSE" for copyright information and the *
+ * terms and conditions for copying, distribution and *
+ * modification of SableCC. *
+ * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
+
+package org.sablecc.sablecc.node;
+
+import org.sablecc.sablecc.Switch;
+import org.sablecc.sablecc.analysis.Analysis;
+
+public final class SpecifierOpt2 extends SpecifierOpt
+{
+ public void apply(Switch sw)
+ {
+ ((Analysis) sw).caseSpecifierOpt2(this);
+ }
+
+ public String toString()
+ {
+ return "";
+ }
+
+ void removeChild(Node child)
+ {
+ }
+}
+
Added: sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/Start.java
===================================================================
--- sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/Start.java (rev 0)
+++ sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/Start.java 2012-07-12 16:49:25 UTC (rev 248)
@@ -0,0 +1,13 @@
+/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+ * This file is part of SableCC. *
+ * See the file "LICENSE" for copyright information and the *
+ * terms and conditions for copying, distribution and *
+ * modification of SableCC. *
+ * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
+
+package org.sablecc.sablecc.node;
+
+public abstract class Start extends Node
+{
+}
+
Added: sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/Start1.java
===================================================================
--- sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/Start1.java (rev 0)
+++ sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/Start1.java 2012-07-12 16:49:25 UTC (rev 248)
@@ -0,0 +1,89 @@
+/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+ * This file is part of SableCC. *
+ * See the file "LICENSE" for copyright information and the *
+ * terms and conditions for copying, distribution and *
+ * modification of SableCC. *
+ * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
+
+package org.sablecc.sablecc.node;
+
+import org.sablecc.sablecc.Switch;
+import org.sablecc.sablecc.analysis.Analysis;
+
+public final class Start1 extends Start
+{
+ public void apply(Switch sw)
+ {
+ ((Analysis) sw).caseStart1(this);
+ }
+
+ public String toString()
+ {
+ return ""
+ + node1
+ + node2;
+ }
+
+ private Grammar node1;
+
+ public Grammar getNode1()
+ {
+ return node1;
+ }
+
+ public void setNode1(Grammar node)
+ {
+ if(node1 != null)
+ {
+ node1.setParent(null);
+ }
+
+ if(node.getParent() != null)
+ {
+ node.getParent().removeChild(node);
+ }
+
+ node.setParent(this);
+
+ node1 = node;
+ }
+
+ private EOF node2;
+
+ public EOF getNode2()
+ {
+ return node2;
+ }
+
+ public void setNode2(EOF node)
+ {
+ if(node2 != null)
+ {
+ node2.setParent(null);
+ }
+
+ if(node.getParent() != null)
+ {
+ node.getParent().removeChild(node);
+ }
+
+ node.setParent(this);
+
+ node2 = node;
+ }
+
+ void removeChild(Node child)
+ {
+ if(node1 == child)
+ {
+ node1 = null;
+ }
+
+ if(node2 == child)
+ {
+ node2 = null;
+ }
+
+ }
+}
+
Added: sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/StateList.java
===================================================================
--- sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/StateList.java (rev 0)
+++ sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/StateList.java 2012-07-12 16:49:25 UTC (rev 248)
@@ -0,0 +1,13 @@
+/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+ * This file is part of SableCC. *
+ * See the file "LICENSE" for copyright information and the *
+ * terms and conditions for copying, distribution and *
+ * modification of SableCC. *
+ * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
+
+package org.sablecc.sablecc.node;
+
+public abstract class StateList extends Node
+{
+}
+
Added: sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/StateList1.java
===================================================================
--- sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/StateList1.java (rev 0)
+++ sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/StateList1.java 2012-07-12 16:49:25 UTC (rev 248)
@@ -0,0 +1,179 @@
+/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+ * This file is part of SableCC. *
+ * See the file "LICENSE" for copyright information and the *
+ * terms and conditions for copying, distribution and *
+ * modification of SableCC. *
+ * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
+
+package org.sablecc.sablecc.node;
+
+import org.sablecc.sablecc.Switch;
+import org.sablecc.sablecc.analysis.Analysis;
+
+public final class StateList1 extends StateList
+{
+ public void apply(Switch sw)
+ {
+ ((Analysis) sw).caseStateList1(this);
+ }
+
+ public String toString()
+ {
+ return ""
+ + node1
+ + node2
+ + node3
+ + node4
+ + node5;
+ }
+
+ private TLBrace node1;
+
+ public TLBrace getNode1()
+ {
+ return node1;
+ }
+
+ public void setNode1(TLBrace node)
+ {
+ if(node1 != null)
+ {
+ node1.setParent(null);
+ }
+
+ if(node.getParent() != null)
+ {
+ node.getParent().removeChild(node);
+ }
+
+ node.setParent(this);
+
+ node1 = node;
+ }
+
+ private TId node2;
+
+ public TId getNode2()
+ {
+ return node2;
+ }
+
+ public void setNode2(TId node)
+ {
+ if(node2 != null)
+ {
+ node2.setParent(null);
+ }
+
+ if(node.getParent() != null)
+ {
+ node.getParent().removeChild(node);
+ }
+
+ node.setParent(this);
+
+ node2 = node;
+ }
+
+ private TransitionOpt node3;
+
+ public TransitionOpt getNode3()
+ {
+ return node3;
+ }
+
+ public void setNode3(TransitionOpt node)
+ {
+ if(node3 != null)
+ {
+ node3.setParent(null);
+ }
+
+ if(node.getParent() != null)
+ {
+ node.getParent().removeChild(node);
+ }
+
+ node.setParent(this);
+
+ node3 = node;
+ }
+
+ private StateListTails node4;
+
+ public StateListTails getNode4()
+ {
+ return node4;
+ }
+
+ public void setNode4(StateListTails node)
+ {
+ if(node4 != null)
+ {
+ node4.setParent(null);
+ }
+
+ if(node.getParent() != null)
+ {
+ node.getParent().removeChild(node);
+ }
+
+ node.setParent(this);
+
+ node4 = node;
+ }
+
+ private TRBrace node5;
+
+ public TRBrace getNode5()
+ {
+ return node5;
+ }
+
+ public void setNode5(TRBrace node)
+ {
+ if(node5 != null)
+ {
+ node5.setParent(null);
+ }
+
+ if(node.getParent() != null)
+ {
+ node.getParent().removeChild(node);
+ }
+
+ node.setParent(this);
+
+ node5 = node;
+ }
+
+ void removeChild(Node child)
+ {
+ if(node1 == child)
+ {
+ node1 = null;
+ }
+
+ if(node2 == child)
+ {
+ node2 = null;
+ }
+
+ if(node3 == child)
+ {
+ node3 = null;
+ }
+
+ if(node4 == child)
+ {
+ node4 = null;
+ }
+
+ if(node5 == child)
+ {
+ node5 = null;
+ }
+
+ }
+}
+
Added: sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/StateListOpt.java
===================================================================
--- sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/StateListOpt.java (rev 0)
+++ sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/StateListOpt.java 2012-07-12 16:49:25 UTC (rev 248)
@@ -0,0 +1,13 @@
+/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+ * This file is part of SableCC. *
+ * See the file "LICENSE" for copyright information and the *
+ * terms and conditions for copying, distribution and *
+ * modification of SableCC. *
+ * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
+
+package org.sablecc.sablecc.node;
+
+public abstract class StateListOpt extends Node
+{
+}
+
Added: sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/StateListOpt1.java
===================================================================
--- sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/StateListOpt1.java (rev 0)
+++ sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/StateListOpt1.java 2012-07-12 16:49:25 UTC (rev 248)
@@ -0,0 +1,59 @@
+/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+ * This file is part of SableCC. *
+ * See the file "LICENSE" for copyright information and the *
+ * terms and conditions for copying, distribution and *
+ * modification of SableCC. *
+ * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
+
+package org.sablecc.sablecc.node;
+
+import org.sablecc.sablecc.Switch;
+import org.sablecc.sablecc.analysis.Analysis;
+
+public final class StateListOpt1 extends StateListOpt
+{
+ public void apply(Switch sw)
+ {
+ ((Analysis) sw).caseStateListOpt1(this);
+ }
+
+ public String toString()
+ {
+ return ""
+ + node1;
+ }
+
+ private StateList node1;
+
+ public StateList getNode1()
+ {
+ return node1;
+ }
+
+ public void setNode1(StateList node)
+ {
+ if(node1 != null)
+ {
+ node1.setParent(null);
+ }
+
+ if(node.getParent() != null)
+ {
+ node.getParent().removeChild(node);
+ }
+
+ node.setParent(this);
+
+ node1 = node;
+ }
+
+ void removeChild(Node child)
+ {
+ if(node1 == child)
+ {
+ node1 = null;
+ }
+
+ }
+}
+
Added: sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/StateListOpt2.java
===================================================================
--- sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/StateListOpt2.java (rev 0)
+++ sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/StateListOpt2.java 2012-07-12 16:49:25 UTC (rev 248)
@@ -0,0 +1,29 @@
+/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+ * This file is part of SableCC. *
+ * See the file "LICENSE" for copyright information and the *
+ * terms and conditions for copying, distribution and *
+ * modification of SableCC. *
+ * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
+
+package org.sablecc.sablecc.node;
+
+import org.sablecc.sablecc.Switch;
+import org.sablecc.sablecc.analysis.Analysis;
+
+public final class StateListOpt2 extends StateListOpt
+{
+ public void apply(Switch sw)
+ {
+ ((Analysis) sw).caseStateListOpt2(this);
+ }
+
+ public String toString()
+ {
+ return "";
+ }
+
+ void removeChild(Node child)
+ {
+ }
+}
+
Added: sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/StateListTail.java
===================================================================
--- sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/StateListTail.java (rev 0)
+++ sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/StateListTail.java 2012-07-12 16:49:25 UTC (rev 248)
@@ -0,0 +1,13 @@
+/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+ * This file is part of SableCC. *
+ * See the file "LICENSE" for copyright information and the *
+ * terms and conditions for copying, distribution and *
+ * modification of SableCC. *
+ * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
+
+package org.sablecc.sablecc.node;
+
+public abstract class StateListTail extends Node
+{
+}
+
Added: sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/StateListTail1.java
===================================================================
--- sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/StateListTail1.java (rev 0)
+++ sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/StateListTail1.java 2012-07-12 16:49:25 UTC (rev 248)
@@ -0,0 +1,119 @@
+/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+ * This file is part of SableCC. *
+ * See the file "LICENSE" for copyright information and the *
+ * terms and conditions for copying, distribution and *
+ * modification of SableCC. *
+ * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
+
+package org.sablecc.sablecc.node;
+
+import org.sablecc.sablecc.Switch;
+import org.sablecc.sablecc.analysis.Analysis;
+
+public final class StateListTail1 extends StateListTail
+{
+ public void apply(Switch sw)
+ {
+ ((Analysis) sw).caseStateListTail1(this);
+ }
+
+ public String toString()
+ {
+ return ""
+ + node1
+ + node2
+ + node3;
+ }
+
+ private TComma node1;
+
+ public TComma getNode1()
+ {
+ return node1;
+ }
+
+ public void setNode1(TComma node)
+ {
+ if(node1 != null)
+ {
+ node1.setParent(null);
+ }
+
+ if(node.getParent() != null)
+ {
+ node.getParent().removeChild(node);
+ }
+
+ node.setParent(this);
+
+ node1 = node;
+ }
+
+ private TId node2;
+
+ public TId getNode2()
+ {
+ return node2;
+ }
+
+ public void setNode2(TId node)
+ {
+ if(node2 != null)
+ {
+ node2.setParent(null);
+ }
+
+ if(node.getParent() != null)
+ {
+ node.getParent().removeChild(node);
+ }
+
+ node.setParent(this);
+
+ node2 = node;
+ }
+
+ private TransitionOpt node3;
+
+ public TransitionOpt getNode3()
+ {
+ return node3;
+ }
+
+ public void setNode3(TransitionOpt node)
+ {
+ if(node3 != null)
+ {
+ node3.setParent(null);
+ }
+
+ if(node.getParent() != null)
+ {
+ node.getParent().removeChild(node);
+ }
+
+ node.setParent(this);
+
+ node3 = node;
+ }
+
+ void removeChild(Node child)
+ {
+ if(node1 == child)
+ {
+ node1 = null;
+ }
+
+ if(node2 == child)
+ {
+ node2 = null;
+ }
+
+ if(node3 == child)
+ {
+ node3 = null;
+ }
+
+ }
+}
+
Added: sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/StateListTails.java
===================================================================
--- sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/StateListTails.java (rev 0)
+++ sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/StateListTails.java 2012-07-12 16:49:25 UTC (rev 248)
@@ -0,0 +1,13 @@
+/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+ * This file is part of SableCC. *
+ * See the file "LICENSE" for copyright information and the *
+ * terms and conditions for copying, distribution and *
+ * modification of SableCC. *
+ * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
+
+package org.sablecc.sablecc.node;
+
+public abstract class StateListTails extends Node
+{
+}
+
Added: sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/StateListTails1.java
===================================================================
--- sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/StateListTails1.java (rev 0)
+++ sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/StateListTails1.java 2012-07-12 16:49:25 UTC (rev 248)
@@ -0,0 +1,89 @@
+/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+ * This file is part of SableCC. *
+ * See the file "LICENSE" for copyright information and the *
+ * terms and conditions for copying, distribution and *
+ * modification of SableCC. *
+ * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
+
+package org.sablecc.sablecc.node;
+
+import org.sablecc.sablecc.Switch;
+import org.sablecc.sablecc.analysis.Analysis;
+
+public final class StateListTails1 extends StateListTails
+{
+ public void apply(Switch sw)
+ {
+ ((Analysis) sw).caseStateListTails1(this);
+ }
+
+ public String toString()
+ {
+ return ""
+ + node1
+ + node2;
+ }
+
+ private StateListTail node1;
+
+ public StateListTail getNode1()
+ {
+ return node1;
+ }
+
+ public void setNode1(StateListTail node)
+ {
+ if(node1 != null)
+ {
+ node1.setParent(null);
+ }
+
+ if(node.getParent() != null)
+ {
+ node.getParent().removeChild(node);
+ }
+
+ node.setParent(this);
+
+ node1 = node;
+ }
+
+ private StateListTails node2;
+
+ public StateListTails getNode2()
+ {
+ return node2;
+ }
+
+ public void setNode2(StateListTails node)
+ {
+ if(node2 != null)
+ {
+ node2.setParent(null);
+ }
+
+ if(node.getParent() != null)
+ {
+ node.getParent().removeChild(node);
+ }
+
+ node.setParent(this);
+
+ node2 = node;
+ }
+
+ void removeChild(Node child)
+ {
+ if(node1 == child)
+ {
+ node1 = null;
+ }
+
+ if(node2 == child)
+ {
+ node2 = null;
+ }
+
+ }
+}
+
Added: sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/StateListTails2.java
===================================================================
--- sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/StateListTails2.java (rev 0)
+++ sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/StateListTails2.java 2012-07-12 16:49:25 UTC (rev 248)
@@ -0,0 +1,29 @@
+/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+ * This file is part of SableCC. *
+ * See the file "LICENSE" for copyright information and the *
+ * terms and conditions for copying, distribution and *
+ * modification of SableCC. *
+ * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
+
+package org.sablecc.sablecc.node;
+
+import org.sablecc.sablecc.Switch;
+import org.sablecc.sablecc.analysis.Analysis;
+
+public final class StateListTails2 extends StateListTails
+{
+ public void apply(Switch sw)
+ {
+ ((Analysis) sw).caseStateListTails2(this);
+ }
+
+ public String toString()
+ {
+ return "";
+ }
+
+ void removeChild(Node child)
+ {
+ }
+}
+
Added: sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/States.java
===================================================================
--- sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/States.java (rev 0)
+++ sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/States.java 2012-07-12 16:49:25 UTC (rev 248)
@@ -0,0 +1,13 @@
+/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+ * This file is part of SableCC. *
+ * See the file "LICENSE" for copyright information and the *
+ * terms and conditions for copying, distribution and *
+ * modification of SableCC. *
+ * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
+
+package org.sablecc.sablecc.node;
+
+public abstract class States extends Node
+{
+}
+
Added: sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/States1.java
===================================================================
--- sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/States1.java (rev 0)
+++ sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/States1.java 2012-07-12 16:49:25 UTC (rev 248)
@@ -0,0 +1,119 @@
+/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+ * This file is part of SableCC. *
+ * See the file "LICENSE" for copyright information and the *
+ * terms and conditions for copying, distribution and *
+ * modification of SableCC. *
+ * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
+
+package org.sablecc.sablecc.node;
+
+import org.sablecc.sablecc.Switch;
+import org.sablecc.sablecc.analysis.Analysis;
+
+public final class States1 extends States
+{
+ public void apply(Switch sw)
+ {
+ ((Analysis) sw).caseStates1(this);
+ }
+
+ public String toString()
+ {
+ return ""
+ + node1
+ + node2
+ + node3;
+ }
+
+ private TStates node1;
+
+ public TStates getNode1()
+ {
+ return node1;
+ }
+
+ public void setNode1(TStates node)
+ {
+ if(node1 != null)
+ {
+ node1.setParent(null);
+ }
+
+ if(node.getParent() != null)
+ {
+ node.getParent().removeChild(node);
+ }
+
+ node.setParent(this);
+
+ node1 = node;
+ }
+
+ private IdListOpt node2;
+
+ public IdListOpt getNode2()
+ {
+ return node2;
+ }
+
+ public void setNode2(IdListOpt node)
+ {
+ if(node2 != null)
+ {
+ node2.setParent(null);
+ }
+
+ if(node.getParent() != null)
+ {
+ node.getParent().removeChild(node);
+ }
+
+ node.setParent(this);
+
+ node2 = node;
+ }
+
+ private TSemicolon node3;
+
+ public TSemicolon getNode3()
+ {
+ return node3;
+ }
+
+ public void setNode3(TSemicolon node)
+ {
+ if(node3 != null)
+ {
+ node3.setParent(null);
+ }
+
+ if(node.getParent() != null)
+ {
+ node.getParent().removeChild(node);
+ }
+
+ node.setParent(this);
+
+ node3 = node;
+ }
+
+ void removeChild(Node child)
+ {
+ if(node1 == child)
+ {
+ node1 = null;
+ }
+
+ if(node2 == child)
+ {
+ node2 = null;
+ }
+
+ if(node3 == child)
+ {
+ node3 = null;
+ }
+
+ }
+}
+
Added: sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/StatesOpt.java
===================================================================
--- sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/StatesOpt.java (rev 0)
+++ sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/StatesOpt.java 2012-07-12 16:49:25 UTC (rev 248)
@@ -0,0 +1,13 @@
+/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+ * This file is part of SableCC. *
+ * See the file "LICENSE" for copyright information and the *
+ * terms and conditions for copying, distribution and *
+ * modification of SableCC. *
+ * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
+
+package org.sablecc.sablecc.node;
+
+public abstract class StatesOpt extends Node
+{
+}
+
Added: sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/StatesOpt1.java
===================================================================
--- sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/StatesOpt1.java (rev 0)
+++ sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/StatesOpt1.java 2012-07-12 16:49:25 UTC (rev 248)
@@ -0,0 +1,59 @@
+/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+ * This file is part of SableCC. *
+ * See the file "LICENSE" for copyright information and the *
+ * terms and conditions for copying, distribution and *
+ * modification of SableCC. *
+ * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
+
+package org.sablecc.sablecc.node;
+
+import org.sablecc.sablecc.Switch;
+import org.sablecc.sablecc.analysis.Analysis;
+
+public final class StatesOpt1 extends StatesOpt
+{
+ public void apply(Switch sw)
+ {
+ ((Analysis) sw).caseStatesOpt1(this);
+ }
+
+ public String toString()
+ {
+ return ""
+ + node1;
+ }
+
+ private States node1;
+
+ public States getNode1()
+ {
+ return node1;
+ }
+
+ public void setNode1(States node)
+ {
+ if(node1 != null)
+ {
+ node1.setParent(null);
+ }
+
+ if(node.getParent() != null)
+ {
+ node.getParent().removeChild(node);
+ }
+
+ node.setParent(this);
+
+ node1 = node;
+ }
+
+ void removeChild(Node child)
+ {
+ if(node1 == child)
+ {
+ node1 = null;
+ }
+
+ }
+}
+
Added: sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/StatesOpt2.java
===================================================================
--- sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/StatesOpt2.java (rev 0)
+++ sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/StatesOpt2.java 2012-07-12 16:49:25 UTC (rev 248)
@@ -0,0 +1,29 @@
+/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+ * This file is part of SableCC. *
+ * See the file "LICENSE" for copyright information and the *
+ * terms and conditions for copying, distribution and *
+ * modification of SableCC. *
+ * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
+
+package org.sablecc.sablecc.node;
+
+import org.sablecc.sablecc.Switch;
+import org.sablecc.sablecc.analysis.Analysis;
+
+public final class StatesOpt2 extends StatesOpt
+{
+ public void apply(Switch sw)
+ {
+ ((Analysis) sw).caseStatesOpt2(this);
+ }
+
+ public String toString()
+ {
+ return "";
+ }
+
+ void removeChild(Node child)
+ {
+ }
+}
+
Added: sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/TArrow.java
===================================================================
--- sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/TArrow.java (rev 0)
+++ sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/TArrow.java 2012-07-12 16:49:25 UTC (rev 248)
@@ -0,0 +1,20 @@
+/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+ * This file is part of SableCC. *
+ * See the file "LICENSE" for copyright information and the *
+ * terms and conditions for copying, distribution and *
+ * modification of SableCC. *
+ * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
+
+package org.sablecc.sablecc.node;
+
+import org.sablecc.sablecc.Switch;
+import org.sablecc.sablecc.analysis.Analysis;
+
+public final class TArrow extends Token
+{
+ public void apply(Switch sw)
+ {
+ ((Analysis) sw).caseTArrow(this);
+ }
+}
+
Added: sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/TBar.java
===================================================================
--- sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/TBar.java (rev 0)
+++ sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/TBar.java 2012-07-12 16:49:25 UTC (rev 248)
@@ -0,0 +1,20 @@
+/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+ * This file is part of SableCC. *
+ * See the file "LICENSE" for copyright information and the *
+ * terms and conditions for copying, distribution and *
+ * modification of SableCC. *
+ * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
+
+package org.sablecc.sablecc.node;
+
+import org.sablecc.sablecc.Switch;
+import org.sablecc.sablecc.analysis.Analysis;
+
+public final class TBar extends Token
+{
+ public void apply(Switch sw)
+ {
+ ((Analysis) sw).caseTBar(this);
+ }
+}
+
Added: sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/TBlank.java
===================================================================
--- sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/TBlank.java (rev 0)
+++ sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/TBlank.java 2012-07-12 16:49:25 UTC (rev 248)
@@ -0,0 +1,20 @@
+/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+ * This file is part of SableCC. *
+ * See the file "LICENSE" for copyright information and the *
+ * terms and conditions for copying, distribution and *
+ * modification of SableCC. *
+ * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
+
+package org.sablecc.sablecc.node;
+
+import org.sablecc.sablecc.Switch;
+import org.sablecc.sablecc.analysis.Analysis;
+
+public final class TBlank extends Token
+{
+ public void apply(Switch sw)
+ {
+ ((Analysis) sw).caseTBlank(this);
+ }
+}
+
Added: sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/TChar.java
===================================================================
--- sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/TChar.java (rev 0)
+++ sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/TChar.java 2012-07-12 16:49:25 UTC (rev 248)
@@ -0,0 +1,20 @@
+/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+ * This file is part of SableCC. *
+ * See the file "LICENSE" for copyright information and the *
+ * terms and conditions for copying, distribution and *
+ * modification of SableCC. *
+ * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
+
+package org.sablecc.sablecc.node;
+
+import org.sablecc.sablecc.Switch;
+import org.sablecc.sablecc.analysis.Analysis;
+
+public final class TChar extends Token
+{
+ public void apply(Switch sw)
+ {
+ ((Analysis) sw).caseTChar(this);
+ }
+}
+
Added: sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/TColon.java
===================================================================
--- sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/TColon.java (rev 0)
+++ sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/TColon.java 2012-07-12 16:49:25 UTC (rev 248)
@@ -0,0 +1,20 @@
+/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+ * This file is part of SableCC. *
+ * See the file "LICENSE" for copyright information and the *
+ * terms and conditions for copying, distribution and *
+ * modification of SableCC. *
+ * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
+
+package org.sablecc.sablecc.node;
+
+import org.sablecc.sablecc.Switch;
+import org.sablecc.sablecc.analysis.Analysis;
+
+public final class TColon extends Token
+{
+ public void apply(Switch sw)
+ {
+ ((Analysis) sw).caseTColon(this);
+ }
+}
+
Added: sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/TComma.java
===================================================================
--- sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/TComma.java (rev 0)
+++ sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/TComma.java 2012-07-12 16:49:25 UTC (rev 248)
@@ -0,0 +1,20 @@
+/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+ * This file is part of SableCC. *
+ * See the file "LICENSE" for copyright information and the *
+ * terms and conditions for copying, distribution and *
+ * modification of SableCC. *
+ * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
+
+package org.sablecc.sablecc.node;
+
+import org.sablecc.sablecc.Switch;
+import org.sablecc.sablecc.analysis.Analysis;
+
+public final class TComma extends Token
+{
+ public void apply(Switch sw)
+ {
+ ((Analysis) sw).caseTComma(this);
+ }
+}
+
Added: sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/TComment.java
===================================================================
--- sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/TComment.java (rev 0)
+++ sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/TComment.java 2012-07-12 16:49:25 UTC (rev 248)
@@ -0,0 +1,20 @@
+/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+ * This file is part of SableCC. *
+ * See the file "LICENSE" for copyright information and the *
+ * terms and conditions for copying, distribution and *
+ * modification of SableCC. *
+ * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
+
+package org.sablecc.sablecc.node;
+
+import org.sablecc.sablecc.Switch;
+import org.sablecc.sablecc.analysis.Analysis;
+
+public final class TComment extends Token
+{
+ public void apply(Switch sw)
+ {
+ ((Analysis) sw).caseTComment(this);
+ }
+}
+
Added: sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/TDDot.java
===================================================================
--- sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/TDDot.java (rev 0)
+++ sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/TDDot.java 2012-07-12 16:49:25 UTC (rev 248)
@@ -0,0 +1,20 @@
+/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+ * This file is part of SableCC. *
+ * See the file "LICENSE" for copyright information and the *
+ * terms and conditions for copying, distribution and *
+ * modification of SableCC. *
+ * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
+
+package org.sablecc.sablecc.node;
+
+import org.sablecc.sablecc.Switch;
+import org.sablecc.sablecc.analysis.Analysis;
+
+public final class TDDot extends Token
+{
+ public void apply(Switch sw)
+ {
+ ((Analysis) sw).caseTDDot(this);
+ }
+}
+
Added: sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/TDecChar.java
===================================================================
--- sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/TDecChar.java (rev 0)
+++ sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/TDecChar.java 2012-07-12 16:49:25 UTC (rev 248)
@@ -0,0 +1,20 @@
+/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+ * This file is part of SableCC. *
+ * See the file "LICENSE" for copyright information and the *
+ * terms and conditions for copying, distribution and *
+ * modification of SableCC. *
+ * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
+
+package org.sablecc.sablecc.node;
+
+import org.sablecc.sablecc.Switch;
+import org.sablecc.sablecc.analysis.Analysis;
+
+public final class TDecChar extends Token
+{
+ public void apply(Switch sw)
+ {
+ ((Analysis) sw).caseTDecChar(this);
+ }
+}
+
Added: sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/TDot.java
===================================================================
--- sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/TDot.java (rev 0)
+++ sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/TDot.java 2012-07-12 16:49:25 UTC (rev 248)
@@ -0,0 +1,20 @@
+/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+ * This file is part of SableCC. *
+ * See the file "LICENSE" for copyright information and the *
+ * terms and conditions for copying, distribution and *
+ * modification of SableCC. *
+ * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
+
+package org.sablecc.sablecc.node;
+
+import org.sablecc.sablecc.Switch;
+import org.sablecc.sablecc.analysis.Analysis;
+
+public final class TDot extends Token
+{
+ public void apply(Switch sw)
+ {
+ ((Analysis) sw).caseTDot(this);
+ }
+}
+
Added: sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/TEqual.java
===================================================================
--- sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/TEqual.java (rev 0)
+++ sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/TEqual.java 2012-07-12 16:49:25 UTC (rev 248)
@@ -0,0 +1,20 @@
+/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+ * This file is part of SableCC. *
+ * See the file "LICENSE" for copyright information and the *
+ * terms and conditions for copying, distribution and *
+ * modification of SableCC. *
+ * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
+
+package org.sablecc.sablecc.node;
+
+import org.sablecc.sablecc.Switch;
+import org.sablecc.sablecc.analysis.Analysis;
+
+public final class TEqual extends Token
+{
+ public void apply(Switch sw)
+ {
+ ((Analysis) sw).caseTEqual(this);
+ }
+}
+
Added: sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/THelpers.java
===================================================================
--- sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/THelpers.java (rev 0)
+++ sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/THelpers.java 2012-07-12 16:49:25 UTC (rev 248)
@@ -0,0 +1,20 @@
+/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+ * This file is part of SableCC. *
+ * See the file "LICENSE" for copyright information and the *
+ * terms and conditions for copying, distribution and *
+ * modification of SableCC. *
+ * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
+
+package org.sablecc.sablecc.node;
+
+import org.sablecc.sablecc.Switch;
+import org.sablecc.sablecc.analysis.Analysis;
+
+public final class THelpers extends Token
+{
+ public void apply(Switch sw)
+ {
+ ((Analysis) sw).caseTHelpers(this);
+ }
+}
+
Added: sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/THexChar.java
===================================================================
--- sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/THexChar.java (rev 0)
+++ sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/THexChar.java 2012-07-12 16:49:25 UTC (rev 248)
@@ -0,0 +1,20 @@
+/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+ * This file is part of SableCC. *
+ * See the file "LICENSE" for copyright information and the *
+ * terms and conditions for copying, distribution and *
+ * modification of SableCC. *
+ * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
+
+package org.sablecc.sablecc.node;
+
+import org.sablecc.sablecc.Switch;
+import org.sablecc.sablecc.analysis.Analysis;
+
+public final class THexChar extends Token
+{
+ public void apply(Switch sw)
+ {
+ ((Analysis) sw).caseTHexChar(this);
+ }
+}
+
Added: sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/TId.java
===================================================================
--- sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/TId.java (rev 0)
+++ sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/TId.java 2012-07-12 16:49:25 UTC (rev 248)
@@ -0,0 +1,20 @@
+/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+ * This file is part of SableCC. *
+ * See the file "LICENSE" for copyright information and the *
+ * terms and conditions for copying, distribution and *
+ * modification of SableCC. *
+ * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
+
+package org.sablecc.sablecc.node;
+
+import org.sablecc.sablecc.Switch;
+import org.sablecc.sablecc.analysis.Analysis;
+
+public final class TId extends Token
+{
+ public void apply(Switch sw)
+ {
+ ((Analysis) sw).caseTId(this);
+ }
+}
+
Added: sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/TIgnored.java
===================================================================
--- sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/TIgnored.java (rev 0)
+++ sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/TIgnored.java 2012-07-12 16:49:25 UTC (rev 248)
@@ -0,0 +1,20 @@
+/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+ * This file is part of SableCC. *
+ * See the file "LICENSE" for copyright information and the *
+ * terms and conditions for copying, distribution and *
+ * modification of SableCC. *
+ * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
+
+package org.sablecc.sablecc.node;
+
+import org.sablecc.sablecc.Switch;
+import org.sablecc.sablecc.analysis.Analysis;
+
+public final class TIgnored extends Token
+{
+ public void apply(Switch sw)
+ {
+ ((Analysis) sw).caseTIgnored(this);
+ }
+}
+
Added: sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/TLBkt.java
===================================================================
--- sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/TLBkt.java (rev 0)
+++ sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/TLBkt.java 2012-07-12 16:49:25 UTC (rev 248)
@@ -0,0 +1,20 @@
+/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+ * This file is part of SableCC. *
+ * See the file "LICENSE" for copyright information and the *
+ * terms and conditions for copying, distribution and *
+ * modification of SableCC. *
+ * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
+
+package org.sablecc.sablecc.node;
+
+import org.sablecc.sablecc.Switch;
+import org.sablecc.sablecc.analysis.Analysis;
+
+public final class TLBkt extends Token
+{
+ public void apply(Switch sw)
+ {
+ ((Analysis) sw).caseTLBkt(this);
+ }
+}
+
Added: sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/TLBrace.java
===================================================================
--- sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/TLBrace.java (rev 0)
+++ sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/TLBrace.java 2012-07-12 16:49:25 UTC (rev 248)
@@ -0,0 +1,20 @@
+/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+ * This file is part of SableCC. *
+ * See the file "LICENSE" for copyright information and the *
+ * terms and conditions for copying, distribution and *
+ * modification of SableCC. *
+ * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
+
+package org.sablecc.sablecc.node;
+
+import org.sablecc.sablecc.Switch;
+import org.sablecc.sablecc.analysis.Analysis;
+
+public final class TLBrace extends Token
+{
+ public void apply(Switch sw)
+ {
+ ((Analysis) sw).caseTLBrace(this);
+ }
+}
+
Added: sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/TLPar.java
===================================================================
--- sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/TLPar.java (rev 0)
+++ sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/TLPar.java 2012-07-12 16:49:25 UTC (rev 248)
@@ -0,0 +1,20 @@
+/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+ * This file is part of SableCC. *
+ * See the file "LICENSE" for copyright information and the *
+ * terms and conditions for copying, distribution and *
+ * modification of SableCC. *
+ * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
+
+package org.sablecc.sablecc.node;
+
+import org.sablecc.sablecc.Switch;
+import org.sablecc.sablecc.analysis.Analysis;
+
+public final class TLPar extends Token
+{
+ public void apply(Switch sw)
+ {
+ ((Analysis) sw).caseTLPar(this);
+ }
+}
+
Added: sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/TMinus.java
===================================================================
--- sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/TMinus.java (rev 0)
+++ sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/TMinus.java 2012-07-12 16:49:25 UTC (rev 248)
@@ -0,0 +1,20 @@
+/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+ * This file is part of SableCC. *
+ * See the file "LICENSE" for copyright information and the *
+ * terms and conditions for copying, distribution and *
+ * modification of SableCC. *
+ * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
+
+package org.sablecc.sablecc.node;
+
+import org.sablecc.sablecc.Switch;
+import org.sablecc.sablecc.analysis.Analysis;
+
+public final class TMinus extends Token
+{
+ public void apply(Switch sw)
+ {
+ ((Analysis) sw).caseTMinus(this);
+ }
+}
+
Added: sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/TPackage.java
===================================================================
--- sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/TPackage.java (rev 0)
+++ sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/TPackage.java 2012-07-12 16:49:25 UTC (rev 248)
@@ -0,0 +1,20 @@
+/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+ * This file is part of SableCC. *
+ * See the file "LICENSE" for copyright information and the *
+ * terms and conditions for copying, distribution and *
+ * modification of SableCC. *
+ * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
+
+package org.sablecc.sablecc.node;
+
+import org.sablecc.sablecc.Switch;
+import org.sablecc.sablecc.analysis.Analysis;
+
+public final class TPackage extends Token
+{
+ public void apply(Switch sw)
+ {
+ ((Analysis) sw).caseTPackage(this);
+ }
+}
+
Added: sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/TPkgId.java
===================================================================
--- sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/TPkgId.java (rev 0)
+++ sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/TPkgId.java 2012-07-12 16:49:25 UTC (rev 248)
@@ -0,0 +1,20 @@
+/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+ * This file is part of SableCC. *
+ * See the file "LICENSE" for copyright information and the *
+ * terms and conditions for copying, distribution and *
+ * modification of SableCC. *
+ * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
+
+package org.sablecc.sablecc.node;
+
+import org.sablecc.sablecc.Switch;
+import org.sablecc.sablecc.analysis.Analysis;
+
+public final class TPkgId extends Token
+{
+ public void apply(Switch sw)
+ {
+ ((Analysis) sw).caseTPkgId(this);
+ }
+}
+
Added: sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/TPlus.java
===================================================================
--- sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/TPlus.java (rev 0)
+++ sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/TPlus.java 2012-07-12 16:49:25 UTC (rev 248)
@@ -0,0 +1,20 @@
+/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+ * This file is part of SableCC. *
+ * See the file "LICENSE" for copyright information and the *
+ * terms and conditions for copying, distribution and *
+ * modification of SableCC. *
+ * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
+
+package org.sablecc.sablecc.node;
+
+import org.sablecc.sablecc.Switch;
+import org.sablecc.sablecc.analysis.Analysis;
+
+public final class TPlus extends Token
+{
+ public void apply(Switch sw)
+ {
+ ((Analysis) sw).caseTPlus(this);
+ }
+}
+
Added: sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/TProductionSpecifier.java
===================================================================
--- sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/TProductionSpecifier.java (rev 0)
+++ sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/TProductionSpecifier.java 2012-07-12 16:49:25 UTC (rev 248)
@@ -0,0 +1,20 @@
+/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+ * This file is part of SableCC. *
+ * See the file "LICENSE" for copyright information and the *
+ * terms and conditions for copying, distribution and *
+ * modification of SableCC. *
+ * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
+
+package org.sablecc.sablecc.node;
+
+import org.sablecc.sablecc.Switch;
+import org.sablecc.sablecc.analysis.Analysis;
+
+public final class TProductionSpecifier extends Token
+{
+ public void apply(Switch sw)
+ {
+ ((Analysis) sw).caseTProductionSpecifier(this);
+ }
+}
+
Added: sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/TProductions.java
===================================================================
--- sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/TProductions.java (rev 0)
+++ sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/TProductions.java 2012-07-12 16:49:25 UTC (rev 248)
@@ -0,0 +1,20 @@
+/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+ * This file is part of SableCC. *
+ * See the file "LICENSE" for copyright information and the *
+ * terms and conditions for copying, distribution and *
+ * modification of SableCC. *
+ * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
+
+package org.sablecc.sablecc.node;
+
+import org.sablecc.sablecc.Switch;
+import org.sablecc.sablecc.analysis.Analysis;
+
+public final class TProductions extends Token
+{
+ public void apply(Switch sw)
+ {
+ ((Analysis) sw).caseTProductions(this);
+ }
+}
+
Added: sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/TQMark.java
===================================================================
--- sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/TQMark.java (rev 0)
+++ sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/TQMark.java 2012-07-12 16:49:25 UTC (rev 248)
@@ -0,0 +1,20 @@
+/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+ * This file is part of SableCC. *
+ * See the file "LICENSE" for copyright information and the *
+ * terms and conditions for copying, distribution and *
+ * modification of SableCC. *
+ * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
+
+package org.sablecc.sablecc.node;
+
+import org.sablecc.sablecc.Switch;
+import org.sablecc.sablecc.analysis.Analysis;
+
+public final class TQMark extends Token
+{
+ public void apply(Switch sw)
+ {
+ ((Analysis) sw).caseTQMark(this);
+ }
+}
+
Added: sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/TRBkt.java
===================================================================
--- sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/TRBkt.java (rev 0)
+++ sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/TRBkt.java 2012-07-12 16:49:25 UTC (rev 248)
@@ -0,0 +1,20 @@
+/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+ * This file is part of SableCC. *
+ * See the file "LICENSE" for copyright information and the *
+ * terms and conditions for copying, distribution and *
+ * modification of SableCC. *
+ * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
+
+package org.sablecc.sablecc.node;
+
+import org.sablecc.sablecc.Switch;
+import org.sablecc.sablecc.analysis.Analysis;
+
+public final class TRBkt extends Token
+{
+ public void apply(Switch sw)
+ {
+ ((Analysis) sw).caseTRBkt(this);
+ }
+}
+
Added: sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/TRBrace.java
===================================================================
--- sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/TRBrace.java (rev 0)
+++ sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/TRBrace.java 2012-07-12 16:49:25 UTC (rev 248)
@@ -0,0 +1,20 @@
+/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+ * This file is part of SableCC. *
+ * See the file "LICENSE" for copyright information and the *
+ * terms and conditions for copying, distribution and *
+ * modification of SableCC. *
+ * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
+
+package org.sablecc.sablecc.node;
+
+import org.sablecc.sablecc.Switch;
+import org.sablecc.sablecc.analysis.Analysis;
+
+public final class TRBrace extends Token
+{
+ public void apply(Switch sw)
+ {
+ ((Analysis) sw).caseTRBrace(this);
+ }
+}
+
Added: sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/TRPar.java
===================================================================
--- sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/TRPar.java (rev 0)
+++ sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/TRPar.java 2012-07-12 16:49:25 UTC (rev 248)
@@ -0,0 +1,20 @@
+/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+ * This file is part of SableCC. *
+ * See the file "LICENSE" for copyright information and the *
+ * terms and conditions for copying, distribution and *
+ * modification of SableCC. *
+ * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
+
+package org.sablecc.sablecc.node;
+
+import org.sablecc.sablecc.Switch;
+import org.sablecc.sablecc.analysis.Analysis;
+
+public final class TRPar extends Token
+{
+ public void apply(Switch sw)
+ {
+ ((Analysis) sw).caseTRPar(this);
+ }
+}
+
Added: sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/TSemicolon.java
===================================================================
--- sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/TSemicolon.java (rev 0)
+++ sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/TSemicolon.java 2012-07-12 16:49:25 UTC (rev 248)
@@ -0,0 +1,20 @@
+/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+ * This file is part of SableCC. *
+ * See the file "LICENSE" for copyright information and the *
+ * terms and conditions for copying, distribution and *
+ * modification of SableCC. *
+ * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
+
+package org.sablecc.sablecc.node;
+
+import org.sablecc.sablecc.Switch;
+import org.sablecc.sablecc.analysis.Analysis;
+
+public final class TSemicolon extends Token
+{
+ public void apply(Switch sw)
+ {
+ ((Analysis) sw).caseTSemicolon(this);
+ }
+}
+
Added: sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/TSlash.java
===================================================================
--- sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/TSlash.java (rev 0)
+++ sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/TSlash.java 2012-07-12 16:49:25 UTC (rev 248)
@@ -0,0 +1,20 @@
+/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+ * This file is part of SableCC. *
+ * See the file "LICENSE" for copyright information and the *
+ * terms and conditions for copying, distribution and *
+ * modification of SableCC. *
+ * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
+
+package org.sablecc.sablecc.node;
+
+import org.sablecc.sablecc.Switch;
+import org.sablecc.sablecc.analysis.Analysis;
+
+public final class TSlash extends Token
+{
+ public void apply(Switch sw)
+ {
+ ((Analysis) sw).caseTSlash(this);
+ }
+}
+
Added: sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/TStar.java
===================================================================
--- sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/TStar.java (rev 0)
+++ sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/TStar.java 2012-07-12 16:49:25 UTC (rev 248)
@@ -0,0 +1,20 @@
+/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+ * This file is part of SableCC. *
+ * See the file "LICENSE" for copyright information and the *
+ * terms and conditions for copying, distribution and *
+ * modification of SableCC. *
+ * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
+
+package org.sablecc.sablecc.node;
+
+import org.sablecc.sablecc.Switch;
+import org.sablecc.sablecc.analysis.Analysis;
+
+public final class TStar extends Token
+{
+ public void apply(Switch sw)
+ {
+ ((Analysis) sw).caseTStar(this);
+ }
+}
+
Added: sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/TStates.java
===================================================================
--- sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/TStates.java (rev 0)
+++ sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/TStates.java 2012-07-12 16:49:25 UTC (rev 248)
@@ -0,0 +1,20 @@
+/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+ * This file is part of SableCC. *
+ * See the file "LICENSE" for copyright information and the *
+ * terms and conditions for copying, distribution and *
+ * modification of SableCC. *
+ * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
+
+package org.sablecc.sablecc.node;
+
+import org.sablecc.sablecc.Switch;
+import org.sablecc.sablecc.analysis.Analysis;
+
+public final class TStates extends Token
+{
+ public void apply(Switch sw)
+ {
+ ((Analysis) sw).caseTStates(this);
+ }
+}
+
Added: sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/TString.java
===================================================================
--- sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/TString.java (rev 0)
+++ sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/TString.java 2012-07-12 16:49:25 UTC (rev 248)
@@ -0,0 +1,20 @@
+/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+ * This file is part of SableCC. *
+ * See the file "LICENSE" for copyright information and the *
+ * terms and conditions for copying, distribution and *
+ * modification of SableCC. *
+ * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
+
+package org.sablecc.sablecc.node;
+
+import org.sablecc.sablecc.Switch;
+import org.sablecc.sablecc.analysis.Analysis;
+
+public final class TString extends Token
+{
+ public void apply(Switch sw)
+ {
+ ((Analysis) sw).caseTString(this);
+ }
+}
+
Added: sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/TTokenSpecifier.java
===================================================================
--- sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/TTokenSpecifier.java (rev 0)
+++ sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/TTokenSpecifier.java 2012-07-12 16:49:25 UTC (rev 248)
@@ -0,0 +1,20 @@
+/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+ * This file is part of SableCC. *
+ * See the file "LICENSE" for copyright information and the *
+ * terms and conditions for copying, distribution and *
+ * modification of SableCC. *
+ * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
+
+package org.sablecc.sablecc.node;
+
+import org.sablecc.sablecc.Switch;
+import org.sablecc.sablecc.analysis.Analysis;
+
+public final class TTokenSpecifier extends Token
+{
+ public void apply(Switch sw)
+ {
+ ((Analysis) sw).caseTTokenSpecifier(this);
+ }
+}
+
Added: sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/TTokens.java
===================================================================
--- sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/TTokens.java (rev 0)
+++ sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/TTokens.java 2012-07-12 16:49:25 UTC (rev 248)
@@ -0,0 +1,20 @@
+/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+ * This file is part of SableCC. *
+ * See the file "LICENSE" for copyright information and the *
+ * terms and conditions for copying, distribution and *
+ * modification of SableCC. *
+ * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
+
+package org.sablecc.sablecc.node;
+
+import org.sablecc.sablecc.Switch;
+import org.sablecc.sablecc.analysis.Analysis;
+
+public final class TTokens extends Token
+{
+ public void apply(Switch sw)
+ {
+ ((Analysis) sw).caseTTokens(this);
+ }
+}
+
Added: sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/Token.java
===================================================================
--- sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/Token.java (rev 0)
+++ sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/Token.java 2012-07-12 16:49:25 UTC (rev 248)
@@ -0,0 +1,57 @@
+/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+ * This file is part of SableCC. *
+ * See the file "LICENSE" for copyright information and the *
+ * terms and conditions for copying, distribution and *
+ * modification of SableCC. *
+ * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
+
+package org.sablecc.sablecc.node;
+
+public abstract class Token extends Node
+{
+ public String toString()
+ {
+ return text + " ";
+ }
+
+ private String text;
+
+ public String getText()
+ {
+ return text;
+ }
+
+ public void setText(String text)
+ {
+ this.text = text;
+ }
+
+ private int line;
+
+ public int getLine()
+ {
+ return line;
+ }
+
+ public void setLine(int line)
+ {
+ this.line = line;
+ }
+
+ private int pos;
+
+ public int getPos()
+ {
+ return pos;
+ }
+
+ public void setPos(int pos)
+ {
+ this.pos = pos;
+ }
+
+ void removeChild(Node child)
+ {
+ }
+}
+
Added: sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/TokenDef.java
===================================================================
--- sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/TokenDef.java (rev 0)
+++ sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/TokenDef.java 2012-07-12 16:49:25 UTC (rev 248)
@@ -0,0 +1,13 @@
+/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+ * This file is part of SableCC. *
+ * See the file "LICENSE" for copyright information and the *
+ * terms and conditions for copying, distribution and *
+ * modification of SableCC. *
+ * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
+
+package org.sablecc.sablecc.node;
+
+public abstract class TokenDef extends Node
+{
+}
+
Added: sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/TokenDef1.java
===================================================================
--- sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/TokenDef1.java (rev 0)
+++ sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/TokenDef1.java 2012-07-12 16:49:25 UTC (rev 248)
@@ -0,0 +1,209 @@
+/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+ * This file is part of SableCC. *
+ * See the file "LICENSE" for copyright information and the *
+ * terms and conditions for copying, distribution and *
+ * modification of SableCC. *
+ * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
+
+package org.sablecc.sablecc.node;
+
+import org.sablecc.sablecc.Switch;
+import org.sablecc.sablecc.analysis.Analysis;
+
+public final class TokenDef1 extends TokenDef
+{
+ public void apply(Switch sw)
+ {
+ ((Analysis) sw).caseTokenDef1(this);
+ }
+
+ public String toString()
+ {
+ return ""
+ + node1
+ + node2
+ + node3
+ + node4
+ + node5
+ + node6;
+ }
+
+ private StateListOpt node1;
+
+ public StateListOpt getNode1()
+ {
+ return node1;
+ }
+
+ public void setNode1(StateListOpt node)
+ {
+ if(node1 != null)
+ {
+ node1.setParent(null);
+ }
+
+ if(node.getParent() != null)
+ {
+ node.getParent().removeChild(node);
+ }
+
+ node.setParent(this);
+
+ node1 = node;
+ }
+
+ private TId node2;
+
+ public TId getNode2()
+ {
+ return node2;
+ }
+
+ public void setNode2(TId node)
+ {
+ if(node2 != null)
+ {
+ node2.setParent(null);
+ }
+
+ if(node.getParent() != null)
+ {
+ node.getParent().removeChild(node);
+ }
+
+ node.setParent(this);
+
+ node2 = node;
+ }
+
+ private TEqual node3;
+
+ public TEqual getNode3()
+ {
+ return node3;
+ }
+
+ public void setNode3(TEqual node)
+ {
+ if(node3 != null)
+ {
+ node3.setParent(null);
+ }
+
+ if(node.getParent() != null)
+ {
+ node.getParent().removeChild(node);
+ }
+
+ node.setParent(this);
+
+ node3 = node;
+ }
+
+ private RegExp node4;
+
+ public RegExp getNode4()
+ {
+ return node4;
+ }
+
+ public void setNode4(RegExp node)
+ {
+ if(node4 != null)
+ {
+ node4.setParent(null);
+ }
+
+ if(node.getParent() != null)
+ {
+ node.getParent().removeChild(node);
+ }
+
+ node.setParent(this);
+
+ node4 = node;
+ }
+
+ private LookAheadOpt node5;
+
+ public LookAheadOpt getNode5()
+ {
+ return node5;
+ }
+
+ public void setNode5(LookAheadOpt node)
+ {
+ if(node5 != null)
+ {
+ node5.setParent(null);
+ }
+
+ if(node.getParent() != null)
+ {
+ node.getParent().removeChild(node);
+ }
+
+ node.setParent(this);
+
+ node5 = node;
+ }
+
+ private TSemicolon node6;
+
+ public TSemicolon getNode6()
+ {
+ return node6;
+ }
+
+ public void setNode6(TSemicolon node)
+ {
+ if(node6 != null)
+ {
+ node6.setParent(null);
+ }
+
+ if(node.getParent() != null)
+ {
+ node.getParent().removeChild(node);
+ }
+
+ node.setParent(this);
+
+ node6 = node;
+ }
+
+ void removeChild(Node child)
+ {
+ if(node1 == child)
+ {
+ node1 = null;
+ }
+
+ if(node2 == child)
+ {
+ node2 = null;
+ }
+
+ if(node3 == child)
+ {
+ node3 = null;
+ }
+
+ if(node4 == child)
+ {
+ node4 = null;
+ }
+
+ if(node5 == child)
+ {
+ node5 = null;
+ }
+
+ if(node6 == child)
+ {
+ node6 = null;
+ }
+
+ }
+}
+
Added: sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/TokenDefs.java
===================================================================
--- sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/TokenDefs.java (rev 0)
+++ sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/TokenDefs.java 2012-07-12 16:49:25 UTC (rev 248)
@@ -0,0 +1,13 @@
+/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+ * This file is part of SableCC. *
+ * See the file "LICENSE" for copyright information and the *
+ * terms and conditions for copying, distribution and *
+ * modification of SableCC. *
+ * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
+
+package org.sablecc.sablecc.node;
+
+public abstract class TokenDefs extends Node
+{
+}
+
Added: sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/TokenDefs1.java
===================================================================
--- sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/TokenDefs1.java (rev 0)
+++ sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/TokenDefs1.java 2012-07-12 16:49:25 UTC (rev 248)
@@ -0,0 +1,89 @@
+/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+ * This file is part of SableCC. *
+ * See the file "LICENSE" for copyright information and the *
+ * terms and conditions for copying, distribution and *
+ * modification of SableCC. *
+ * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
+
+package org.sablecc.sablecc.node;
+
+import org.sablecc.sablecc.Switch;
+import org.sablecc.sablecc.analysis.Analysis;
+
+public final class TokenDefs1 extends TokenDefs
+{
+ public void apply(Switch sw)
+ {
+ ((Analysis) sw).caseTokenDefs1(this);
+ }
+
+ public String toString()
+ {
+ return ""
+ + node1
+ + node2;
+ }
+
+ private TokenDef node1;
+
+ public TokenDef getNode1()
+ {
+ return node1;
+ }
+
+ public void setNode1(TokenDef node)
+ {
+ if(node1 != null)
+ {
+ node1.setParent(null);
+ }
+
+ if(node.getParent() != null)
+ {
+ node.getParent().removeChild(node);
+ }
+
+ node.setParent(this);
+
+ node1 = node;
+ }
+
+ private TokenDefs node2;
+
+ public TokenDefs getNode2()
+ {
+ return node2;
+ }
+
+ public void setNode2(TokenDefs node)
+ {
+ if(node2 != null)
+ {
+ node2.setParent(null);
+ }
+
+ if(node.getParent() != null)
+ {
+ node.getParent().removeChild(node);
+ }
+
+ node.setParent(this);
+
+ node2 = node;
+ }
+
+ void removeChild(Node child)
+ {
+ if(node1 == child)
+ {
+ node1 = null;
+ }
+
+ if(node2 == child)
+ {
+ node2 = null;
+ }
+
+ }
+}
+
Added: sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/TokenDefs2.java
===================================================================
--- sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/TokenDefs2.java (rev 0)
+++ sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/TokenDefs2.java 2012-07-12 16:49:25 UTC (rev 248)
@@ -0,0 +1,29 @@
+/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+ * This file is part of SableCC. *
+ * See the file "LICENSE" for copyright information and the *
+ * terms and conditions for copying, distribution and *
+ * modification of SableCC. *
+ * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
+
+package org.sablecc.sablecc.node;
+
+import org.sablecc.sablecc.Switch;
+import org.sablecc.sablecc.analysis.Analysis;
+
+public final class TokenDefs2 extends TokenDefs
+{
+ public void apply(Switch sw)
+ {
+ ((Analysis) sw).caseTokenDefs2(this);
+ }
+
+ public String toString()
+ {
+ return "";
+ }
+
+ void removeChild(Node child)
+ {
+ }
+}
+
Added: sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/Tokens.java
===================================================================
--- sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/Tokens.java (rev 0)
+++ sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/Tokens.java 2012-07-12 16:49:25 UTC (rev 248)
@@ -0,0 +1,13 @@
+/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+ * This file is part of SableCC. *
+ * See the file "LICENSE" for copyright information and the *
+ * terms and conditions for copying, distribution and *
+ * modification of SableCC. *
+ * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
+
+package org.sablecc.sablecc.node;
+
+public abstract class Tokens extends Node
+{
+}
+
Added: sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/Tokens1.java
===================================================================
--- sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/Tokens1.java (rev 0)
+++ sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/Tokens1.java 2012-07-12 16:49:25 UTC (rev 248)
@@ -0,0 +1,89 @@
+/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+ * This file is part of SableCC. *
+ * See the file "LICENSE" for copyright information and the *
+ * terms and conditions for copying, distribution and *
+ * modification of SableCC. *
+ * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
+
+package org.sablecc.sablecc.node;
+
+import org.sablecc.sablecc.Switch;
+import org.sablecc.sablecc.analysis.Analysis;
+
+public final class Tokens1 extends Tokens
+{
+ public void apply(Switch sw)
+ {
+ ((Analysis) sw).caseTokens1(this);
+ }
+
+ public String toString()
+ {
+ return ""
+ + node1
+ + node2;
+ }
+
+ private TTokens node1;
+
+ public TTokens getNode1()
+ {
+ return node1;
+ }
+
+ public void setNode1(TTokens node)
+ {
+ if(node1 != null)
+ {
+ node1.setParent(null);
+ }
+
+ if(node.getParent() != null)
+ {
+ node.getParent().removeChild(node);
+ }
+
+ node.setParent(this);
+
+ node1 = node;
+ }
+
+ private TokenDefs node2;
+
+ public TokenDefs getNode2()
+ {
+ return node2;
+ }
+
+ public void setNode2(TokenDefs node)
+ {
+ if(node2 != null)
+ {
+ node2.setParent(null);
+ }
+
+ if(node.getParent() != null)
+ {
+ node.getParent().removeChild(node);
+ }
+
+ node.setParent(this);
+
+ node2 = node;
+ }
+
+ void removeChild(Node child)
+ {
+ if(node1 == child)
+ {
+ node1 = null;
+ }
+
+ if(node2 == child)
+ {
+ node2 = null;
+ }
+
+ }
+}
+
Added: sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/TokensOpt.java
===================================================================
--- sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/TokensOpt.java (rev 0)
+++ sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/TokensOpt.java 2012-07-12 16:49:25 UTC (rev 248)
@@ -0,0 +1,13 @@
+/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+ * This file is part of SableCC. *
+ * See the file "LICENSE" for copyright information and the *
+ * terms and conditions for copying, distribution and *
+ * modification of SableCC. *
+ * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
+
+package org.sablecc.sablecc.node;
+
+public abstract class TokensOpt extends Node
+{
+}
+
Added: sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/TokensOpt1.java
===================================================================
--- sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/TokensOpt1.java (rev 0)
+++ sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/TokensOpt1.java 2012-07-12 16:49:25 UTC (rev 248)
@@ -0,0 +1,59 @@
+/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+ * This file is part of SableCC. *
+ * See the file "LICENSE" for copyright information and the *
+ * terms and conditions for copying, distribution and *
+ * modification of SableCC. *
+ * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
+
+package org.sablecc.sablecc.node;
+
+import org.sablecc.sablecc.Switch;
+import org.sablecc.sablecc.analysis.Analysis;
+
+public final class TokensOpt1 extends TokensOpt
+{
+ public void apply(Switch sw)
+ {
+ ((Analysis) sw).caseTokensOpt1(this);
+ }
+
+ public String toString()
+ {
+ return ""
+ + node1;
+ }
+
+ private Tokens node1;
+
+ public Tokens getNode1()
+ {
+ return node1;
+ }
+
+ public void setNode1(Tokens node)
+ {
+ if(node1 != null)
+ {
+ node1.setParent(null);
+ }
+
+ if(node.getParent() != null)
+ {
+ node.getParent().removeChild(node);
+ }
+
+ node.setParent(this);
+
+ node1 = node;
+ }
+
+ void removeChild(Node child)
+ {
+ if(node1 == child)
+ {
+ node1 = null;
+ }
+
+ }
+}
+
Added: sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/TokensOpt2.java
===================================================================
--- sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/TokensOpt2.java (rev 0)
+++ sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/TokensOpt2.java 2012-07-12 16:49:25 UTC (rev 248)
@@ -0,0 +1,29 @@
+/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+ * This file is part of SableCC. *
+ * See the file "LICENSE" for copyright information and the *
+ * terms and conditions for copying, distribution and *
+ * modification of SableCC. *
+ * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
+
+package org.sablecc.sablecc.node;
+
+import org.sablecc.sablecc.Switch;
+import org.sablecc.sablecc.analysis.Analysis;
+
+public final class TokensOpt2 extends TokensOpt
+{
+ public void apply(Switch sw)
+ {
+ ((Analysis) sw).caseTokensOpt2(this);
+ }
+
+ public String toString()
+ {
+ return "";
+ }
+
+ void removeChild(Node child)
+ {
+ }
+}
+
Added: sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/Transition.java
===================================================================
--- sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/Transition.java (rev 0)
+++ sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/Transition.java 2012-07-12 16:49:25 UTC (rev 248)
@@ -0,0 +1,13 @@
+/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+ * This file is part of SableCC. *
+ * See the file "LICENSE" for copyright information and the *
+ * terms and conditions for copying, distribution and *
+ * modification of SableCC. *
+ * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
+
+package org.sablecc.sablecc.node;
+
+public abstract class Transition extends Node
+{
+}
+
Added: sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/Transition1.java
===================================================================
--- sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/Transition1.java (rev 0)
+++ sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/Transition1.java 2012-07-12 16:49:25 UTC (rev 248)
@@ -0,0 +1,89 @@
+/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+ * This file is part of SableCC. *
+ * See the file "LICENSE" for copyright information and the *
+ * terms and conditions for copying, distribution and *
+ * modification of SableCC. *
+ * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
+
+package org.sablecc.sablecc.node;
+
+import org.sablecc.sablecc.Switch;
+import org.sablecc.sablecc.analysis.Analysis;
+
+public final class Transition1 extends Transition
+{
+ public void apply(Switch sw)
+ {
+ ((Analysis) sw).caseTransition1(this);
+ }
+
+ public String toString()
+ {
+ return ""
+ + node1
+ + node2;
+ }
+
+ private TArrow node1;
+
+ public TArrow getNode1()
+ {
+ return node1;
+ }
+
+ public void setNode1(TArrow node)
+ {
+ if(node1 != null)
+ {
+ node1.setParent(null);
+ }
+
+ if(node.getParent() != null)
+ {
+ node.getParent().removeChild(node);
+ }
+
+ node.setParent(this);
+
+ node1 = node;
+ }
+
+ private TId node2;
+
+ public TId getNode2()
+ {
+ return node2;
+ }
+
+ public void setNode2(TId node)
+ {
+ if(node2 != null)
+ {
+ node2.setParent(null);
+ }
+
+ if(node.getParent() != null)
+ {
+ node.getParent().removeChild(node);
+ }
+
+ node.setParent(this);
+
+ node2 = node;
+ }
+
+ void removeChild(Node child)
+ {
+ if(node1 == child)
+ {
+ node1 = null;
+ }
+
+ if(node2 == child)
+ {
+ node2 = null;
+ }
+
+ }
+}
+
Added: sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/TransitionOpt.java
===================================================================
--- sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/TransitionOpt.java (rev 0)
+++ sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/TransitionOpt.java 2012-07-12 16:49:25 UTC (rev 248)
@@ -0,0 +1,13 @@
+/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+ * This file is part of SableCC. *
+ * See the file "LICENSE" for copyright information and the *
+ * terms and conditions for copying, distribution and *
+ * modification of SableCC. *
+ * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
+
+package org.sablecc.sablecc.node;
+
+public abstract class TransitionOpt extends Node
+{
+}
+
Added: sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/TransitionOpt1.java
===================================================================
--- sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/TransitionOpt1.java (rev 0)
+++ sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/TransitionOpt1.java 2012-07-12 16:49:25 UTC (rev 248)
@@ -0,0 +1,59 @@
+/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+ * This file is part of SableCC. *
+ * See the file "LICENSE" for copyright information and the *
+ * terms and conditions for copying, distribution and *
+ * modification of SableCC. *
+ * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
+
+package org.sablecc.sablecc.node;
+
+import org.sablecc.sablecc.Switch;
+import org.sablecc.sablecc.analysis.Analysis;
+
+public final class TransitionOpt1 extends TransitionOpt
+{
+ public void apply(Switch sw)
+ {
+ ((Analysis) sw).caseTransitionOpt1(this);
+ }
+
+ public String toString()
+ {
+ return ""
+ + node1;
+ }
+
+ private Transition node1;
+
+ public Transition getNode1()
+ {
+ return node1;
+ }
+
+ public void setNode1(Transition node)
+ {
+ if(node1 != null)
+ {
+ node1.setParent(null);
+ }
+
+ if(node.getParent() != null)
+ {
+ node.getParent().removeChild(node);
+ }
+
+ node.setParent(this);
+
+ node1 = node;
+ }
+
+ void removeChild(Node child)
+ {
+ if(node1 == child)
+ {
+ node1 = null;
+ }
+
+ }
+}
+
Added: sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/TransitionOpt2.java
===================================================================
--- sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/TransitionOpt2.java (rev 0)
+++ sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/TransitionOpt2.java 2012-07-12 16:49:25 UTC (rev 248)
@@ -0,0 +1,29 @@
+/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+ * This file is part of SableCC. *
+ * See the file "LICENSE" for copyright information and the *
+ * terms and conditions for copying, distribution and *
+ * modification of SableCC. *
+ * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
+
+package org.sablecc.sablecc.node;
+
+import org.sablecc.sablecc.Switch;
+import org.sablecc.sablecc.analysis.Analysis;
+
+public final class TransitionOpt2 extends TransitionOpt
+{
+ public void apply(Switch sw)
+ {
+ ((Analysis) sw).caseTransitionOpt2(this);
+ }
+
+ public String toString()
+ {
+ return "";
+ }
+
+ void removeChild(Node child)
+ {
+ }
+}
+
Added: sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/UnExp.java
===================================================================
--- sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/UnExp.java (rev 0)
+++ sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/UnExp.java 2012-07-12 16:49:25 UTC (rev 248)
@@ -0,0 +1,13 @@
+/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+ * This file is part of SableCC. *
+ * See the file "LICENSE" for copyright information and the *
+ * terms and conditions for copying, distribution and *
+ * modification of SableCC. *
+ * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
+
+package org.sablecc.sablecc.node;
+
+public abstract class UnExp extends Node
+{
+}
+
Added: sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/UnExp1.java
===================================================================
--- sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/UnExp1.java (rev 0)
+++ sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/UnExp1.java 2012-07-12 16:49:25 UTC (rev 248)
@@ -0,0 +1,89 @@
+/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+ * This file is part of SableCC. *
+ * See the file "LICENSE" for copyright information and the *
+ * terms and conditions for copying, distribution and *
+ * modification of SableCC. *
+ * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
+
+package org.sablecc.sablecc.node;
+
+import org.sablecc.sablecc.Switch;
+import org.sablecc.sablecc.analysis.Analysis;
+
+public final class UnExp1 extends UnExp
+{
+ public void apply(Switch sw)
+ {
+ ((Analysis) sw).caseUnExp1(this);
+ }
+
+ public String toString()
+ {
+ return ""
+ + node1
+ + node2;
+ }
+
+ private Basic node1;
+
+ public Basic getNode1()
+ {
+ return node1;
+ }
+
+ public void setNode1(Basic node)
+ {
+ if(node1 != null)
+ {
+ node1.setParent(null);
+ }
+
+ if(node.getParent() != null)
+ {
+ node.getParent().removeChild(node);
+ }
+
+ node.setParent(this);
+
+ node1 = node;
+ }
+
+ private UnOpOpt node2;
+
+ public UnOpOpt getNode2()
+ {
+ return node2;
+ }
+
+ public void setNode2(UnOpOpt node)
+ {
+ if(node2 != null)
+ {
+ node2.setParent(null);
+ }
+
+ if(node.getParent() != null)
+ {
+ node.getParent().removeChild(node);
+ }
+
+ node.setParent(this);
+
+ node2 = node;
+ }
+
+ void removeChild(Node child)
+ {
+ if(node1 == child)
+ {
+ node1 = null;
+ }
+
+ if(node2 == child)
+ {
+ node2 = null;
+ }
+
+ }
+}
+
Added: sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/UnExps.java
===================================================================
--- sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/UnExps.java (rev 0)
+++ sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/UnExps.java 2012-07-12 16:49:25 UTC (rev 248)
@@ -0,0 +1,13 @@
+/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+ * This file is part of SableCC. *
+ * See the file "LICENSE" for copyright information and the *
+ * terms and conditions for copying, distribution and *
+ * modification of SableCC. *
+ * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
+
+package org.sablecc.sablecc.node;
+
+public abstract class UnExps extends Node
+{
+}
+
Added: sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/UnExps1.java
===================================================================
--- sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/UnExps1.java (rev 0)
+++ sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/UnExps1.java 2012-07-12 16:49:25 UTC (rev 248)
@@ -0,0 +1,89 @@
+/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+ * This file is part of SableCC. *
+ * See the file "LICENSE" for copyright information and the *
+ * terms and conditions for copying, distribution and *
+ * modification of SableCC. *
+ * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
+
+package org.sablecc.sablecc.node;
+
+import org.sablecc.sablecc.Switch;
+import org.sablecc.sablecc.analysis.Analysis;
+
+public final class UnExps1 extends UnExps
+{
+ public void apply(Switch sw)
+ {
+ ((Analysis) sw).caseUnExps1(this);
+ }
+
+ public String toString()
+ {
+ return ""
+ + node1
+ + node2;
+ }
+
+ private UnExp node1;
+
+ public UnExp getNode1()
+ {
+ return node1;
+ }
+
+ public void setNode1(UnExp node)
+ {
+ if(node1 != null)
+ {
+ node1.setParent(null);
+ }
+
+ if(node.getParent() != null)
+ {
+ node.getParent().removeChild(node);
+ }
+
+ node.setParent(this);
+
+ node1 = node;
+ }
+
+ private UnExps node2;
+
+ public UnExps getNode2()
+ {
+ return node2;
+ }
+
+ public void setNode2(UnExps node)
+ {
+ if(node2 != null)
+ {
+ node2.setParent(null);
+ }
+
+ if(node.getParent() != null)
+ {
+ node.getParent().removeChild(node);
+ }
+
+ node.setParent(this);
+
+ node2 = node;
+ }
+
+ void removeChild(Node child)
+ {
+ if(node1 == child)
+ {
+ node1 = null;
+ }
+
+ if(node2 == child)
+ {
+ node2 = null;
+ }
+
+ }
+}
+
Added: sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/UnExps2.java
===================================================================
--- sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/UnExps2.java (rev 0)
+++ sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/UnExps2.java 2012-07-12 16:49:25 UTC (rev 248)
@@ -0,0 +1,29 @@
+/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+ * This file is part of SableCC. *
+ * See the file "LICENSE" for copyright information and the *
+ * terms and conditions for copying, distribution and *
+ * modification of SableCC. *
+ * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
+
+package org.sablecc.sablecc.node;
+
+import org.sablecc.sablecc.Switch;
+import org.sablecc.sablecc.analysis.Analysis;
+
+public final class UnExps2 extends UnExps
+{
+ public void apply(Switch sw)
+ {
+ ((Analysis) sw).caseUnExps2(this);
+ }
+
+ public String toString()
+ {
+ return "";
+ }
+
+ void removeChild(Node child)
+ {
+ }
+}
+
Added: sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/UnOp.java
===================================================================
--- sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/UnOp.java (rev 0)
+++ sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/UnOp.java 2012-07-12 16:49:25 UTC (rev 248)
@@ -0,0 +1,13 @@
+/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+ * This file is part of SableCC. *
+ * See the file "LICENSE" for copyright information and the *
+ * terms and conditions for copying, distribution and *
+ * modification of SableCC. *
+ * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
+
+package org.sablecc.sablecc.node;
+
+public abstract class UnOp extends Node
+{
+}
+
Added: sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/UnOp1.java
===================================================================
--- sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/UnOp1.java (rev 0)
+++ sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/UnOp1.java 2012-07-12 16:49:25 UTC (rev 248)
@@ -0,0 +1,59 @@
+/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+ * This file is part of SableCC. *
+ * See the file "LICENSE" for copyright information and the *
+ * terms and conditions for copying, distribution and *
+ * modification of SableCC. *
+ * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
+
+package org.sablecc.sablecc.node;
+
+import org.sablecc.sablecc.Switch;
+import org.sablecc.sablecc.analysis.Analysis;
+
+public final class UnOp1 extends UnOp
+{
+ public void apply(Switch sw)
+ {
+ ((Analysis) sw).caseUnOp1(this);
+ }
+
+ public String toString()
+ {
+ return ""
+ + node1;
+ }
+
+ private TStar node1;
+
+ public TStar getNode1()
+ {
+ return node1;
+ }
+
+ public void setNode1(TStar node)
+ {
+ if(node1 != null)
+ {
+ node1.setParent(null);
+ }
+
+ if(node.getParent() != null)
+ {
+ node.getParent().removeChild(node);
+ }
+
+ node.setParent(this);
+
+ node1 = node;
+ }
+
+ void removeChild(Node child)
+ {
+ if(node1 == child)
+ {
+ node1 = null;
+ }
+
+ }
+}
+
Added: sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/UnOp2.java
===================================================================
--- sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/UnOp2.java (rev 0)
+++ sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/UnOp2.java 2012-07-12 16:49:25 UTC (rev 248)
@@ -0,0 +1,59 @@
+/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+ * This file is part of SableCC. *
+ * See the file "LICENSE" for copyright information and the *
+ * terms and conditions for copying, distribution and *
+ * modification of SableCC. *
+ * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
+
+package org.sablecc.sablecc.node;
+
+import org.sablecc.sablecc.Switch;
+import org.sablecc.sablecc.analysis.Analysis;
+
+public final class UnOp2 extends UnOp
+{
+ public void apply(Switch sw)
+ {
+ ((Analysis) sw).caseUnOp2(this);
+ }
+
+ public String toString()
+ {
+ return ""
+ + node1;
+ }
+
+ private TQMark node1;
+
+ public TQMark getNode1()
+ {
+ return node1;
+ }
+
+ public void setNode1(TQMark node)
+ {
+ if(node1 != null)
+ {
+ node1.setParent(null);
+ }
+
+ if(node.getParent() != null)
+ {
+ node.getParent().removeChild(node);
+ }
+
+ node.setParent(this);
+
+ node1 = node;
+ }
+
+ void removeChild(Node child)
+ {
+ if(node1 == child)
+ {
+ node1 = null;
+ }
+
+ }
+}
+
Added: sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/UnOp3.java
===================================================================
--- sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/UnOp3.java (rev 0)
+++ sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/UnOp3.java 2012-07-12 16:49:25 UTC (rev 248)
@@ -0,0 +1,59 @@
+/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+ * This file is part of SableCC. *
+ * See the file "LICENSE" for copyright information and the *
+ * terms and conditions for copying, distribution and *
+ * modification of SableCC. *
+ * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
+
+package org.sablecc.sablecc.node;
+
+import org.sablecc.sablecc.Switch;
+import org.sablecc.sablecc.analysis.Analysis;
+
+public final class UnOp3 extends UnOp
+{
+ public void apply(Switch sw)
+ {
+ ((Analysis) sw).caseUnOp3(this);
+ }
+
+ public String toString()
+ {
+ return ""
+ + node1;
+ }
+
+ private TPlus node1;
+
+ public TPlus getNode1()
+ {
+ return node1;
+ }
+
+ public void setNode1(TPlus node)
+ {
+ if(node1 != null)
+ {
+ node1.setParent(null);
+ }
+
+ if(node.getParent() != null)
+ {
+ node.getParent().removeChild(node);
+ }
+
+ node.setParent(this);
+
+ node1 = node;
+ }
+
+ void removeChild(Node child)
+ {
+ if(node1 == child)
+ {
+ node1 = null;
+ }
+
+ }
+}
+
Added: sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/UnOpOpt.java
===================================================================
--- sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/UnOpOpt.java (rev 0)
+++ sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/UnOpOpt.java 2012-07-12 16:49:25 UTC (rev 248)
@@ -0,0 +1,13 @@
+/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+ * This file is part of SableCC. *
+ * See the file "LICENSE" for copyright information and the *
+ * terms and conditions for copying, distribution and *
+ * modification of SableCC. *
+ * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
+
+package org.sablecc.sablecc.node;
+
+public abstract class UnOpOpt extends Node
+{
+}
+
Added: sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/UnOpOpt1.java
===================================================================
--- sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/UnOpOpt1.java (rev 0)
+++ sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/UnOpOpt1.java 2012-07-12 16:49:25 UTC (rev 248)
@@ -0,0 +1,59 @@
+/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+ * This file is part of SableCC. *
+ * See the file "LICENSE" for copyright information and the *
+ * terms and conditions for copying, distribution and *
+ * modification of SableCC. *
+ * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
+
+package org.sablecc.sablecc.node;
+
+import org.sablecc.sablecc.Switch;
+import org.sablecc.sablecc.analysis.Analysis;
+
+public final class UnOpOpt1 extends UnOpOpt
+{
+ public void apply(Switch sw)
+ {
+ ((Analysis) sw).caseUnOpOpt1(this);
+ }
+
+ public String toString()
+ {
+ return ""
+ + node1;
+ }
+
+ private UnOp node1;
+
+ public UnOp getNode1()
+ {
+ return node1;
+ }
+
+ public void setNode1(UnOp node)
+ {
+ if(node1 != null)
+ {
+ node1.setParent(null);
+ }
+
+ if(node.getParent() != null)
+ {
+ node.getParent().removeChild(node);
+ }
+
+ node.setParent(this);
+
+ node1 = node;
+ }
+
+ void removeChild(Node child)
+ {
+ if(node1 == child)
+ {
+ node1 = null;
+ }
+
+ }
+}
+
Added: sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/UnOpOpt2.java
===================================================================
--- sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/UnOpOpt2.java (rev 0)
+++ sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/node/UnOpOpt2.java 2012-07-12 16:49:25 UTC (rev 248)
@@ -0,0 +1,29 @@
+/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+ * This file is part of SableCC. *
+ * See the file "LICENSE" for copyright information and the *
+ * terms and conditions for copying, distribution and *
+ * modification of SableCC. *
+ * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
+
+package org.sablecc.sablecc.node;
+
+import org.sablecc.sablecc.Switch;
+import org.sablecc.sablecc.analysis.Analysis;
+
+public final class UnOpOpt2 extends UnOpOpt
+{
+ public void apply(Switch sw)
+ {
+ ((Analysis) sw).caseUnOpOpt2(this);
+ }
+
+ public String toString()
+ {
+ return "";
+ }
+
+ void removeChild(Node child)
+ {
+ }
+}
+
Added: sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/parser/Parser.java
===================================================================
--- sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/parser/Parser.java (rev 0)
+++ sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/parser/Parser.java 2012-07-12 16:49:25 UTC (rev 248)
@@ -0,0 +1,1394 @@
+/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+ * This file is part of SableCC. *
+ * See the file "LICENSE" for copyright information and the *
+ * terms and conditions for copying, distribution and *
+ * modification of SableCC. *
+ * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
+
+package org.sablecc.sablecc.parser;
+
+import org.sablecc.sablecc.node.*;
+import org.sablecc.sablecc.lexer.*;
+import java.util.*;
+import org.sablecc.sablecc.node.Package;
+import org.sablecc.sablecc.Switchable;
+
+import java.util.Vector;
+import java.util.Stack;
+import java.io.IOException;
+import java.io.ObjectInputStream;
+
+public final class Parser
+{
+ private final Lexer lexer;
+ private final Stack stack = new Stack();
+
+ public Parser(Lexer lexer)
+ {
+ this.lexer = lexer;
+
+ try
+ {
+ ObjectInputStream s = new ObjectInputStream(getClass().getResourceAsStream("parser.dat"));
+ actionTable = (int[][][]) s.readObject();
+ gotoTable = (int[][]) s.readObject();
+ errors = (String[]) s.readObject();
+ s.close();
+ }
+ catch(Exception e)
+ {
+ throw new RuntimeException("Unable to read parser.dat.");
+ }
+ }
+
+ private void push(int state, Object node)
+ {
+ stack.push(new State(state, node));
+ }
+
+ private int state()
+ {
+ return ((State) stack.peek()).state;
+ }
+
+ private Object pop()
+ {
+ return ((State) stack.pop()).node;
+ }
+
+ private final TokenIndex converter = new TokenIndex();
+
+ private int index(Switchable token)
+ {
+ converter.index = -1;
+ token.apply(converter);
+ return converter.index;
+ }
+
+ private int last_shift;
+ private int last_pos;
+ private int last_line;
+ private boolean get_last_coordinates = true;
+
+ public Start parse() throws ParserException, LexerException, IOException
+ {
+ push(0, null);
+
+ int[] action;
+ while(true)
+ {
+ while(index(lexer.peek()) == -1)
+ {
+ lexer.next();
+ }
+
+ if(get_last_coordinates)
+ {
+ last_pos = lexer.peek().getPos();
+ last_line = lexer.peek().getLine();
+ get_last_coordinates = false;
+ }
+
+ action = actionTable[state()][index(lexer.peek())];
+
+ switch(action[0])
+ {
+ case SHIFT:
+ push(action[1], lexer.next());
+ last_shift = action[1];
+ get_last_coordinates = true;
+ break;
+ case REDUCE:
+ switch(action[1])
+ {
+ case 0:
+ {
+ Grammar1 node = new Grammar1();
+ node.setNode6((ProductionsOpt) pop());
+ node.setNode5((IgnTokensOpt) pop());
+ node.setNode4((TokensOpt) pop());
+ node.setNode3((StatesOpt) pop());
+ node.setNode2((HelpersOpt) pop());
+ node.setNode1((PackageOpt) pop());
+ push(gotoTable[state()][0], node);
+ }
+ break;
+ case 1:
+ {
+ PackageOpt1 node = new PackageOpt1();
+ node.setNode1((Package) pop());
+ push(gotoTable[state()][1], node);
+ }
+ break;
+ case 2:
+ {
+ PackageOpt2 node = new PackageOpt2();
+ push(gotoTable[state()][1], node);
+ }
+ break;
+ case 3:
+ {
+ Package1 node = new Package1();
+ node.setNode2((PkgNameOpt) pop());
+ node.setNode1((TPackage) pop());
+ push(gotoTable[state()][2], node);
+ }
+ break;
+ case 4:
+ {
+ PkgNameOpt1 node = new PkgNameOpt1();
+ node.setNode1((PkgName) pop());
+ push(gotoTable[state()][3], node);
+ }
+ break;
+ case 5:
+ {
+ PkgName1 node = new PkgName1();
+ node.setNode3((TSemicolon) pop());
+ node.setNode2((PkgNameTails) pop());
+ node.setNode1((PkgId) pop());
+ push(gotoTable[state()][4], node);
+ }
+ break;
+ case 6:
+ {
+ PkgNameTails1 node = new PkgNameTails1();
+ node.setNode2((PkgNameTails) pop());
+ node.setNode1((PkgNameTail) pop());
+ push(gotoTable[state()][5], node);
+ }
+ break;
+ case 7:
+ {
+ PkgNameTails2 node = new PkgNameTails2();
+ push(gotoTable[state()][5], node);
+ }
+ break;
+ case 8:
+ {
+ PkgNameTail1 node = new PkgNameTail1();
+ node.setNode2((PkgId) pop());
+ node.setNode1((TDot) pop());
+ push(gotoTable[state()][6], node);
+ }
+ break;
+ case 9:
+ {
+ PkgId1 node = new PkgId1();
+ node.setNode1((TPackage) pop());
+ push(gotoTable[state()][7], node);
+ }
+ break;
+ case 10:
+ {
+ PkgId2 node = new PkgId2();
+ node.setNode1((TStates) pop());
+ push(gotoTable[state()][7], node);
+ }
+ break;
+ case 11:
+ {
+ PkgId3 node = new PkgId3();
+ node.setNode1((THelpers) pop());
+ push(gotoTable[state()][7], node);
+ }
+ break;
+ case 12:
+ {
+ PkgId4 node = new PkgId4();
+ node.setNode1((TTokens) pop());
+ push(gotoTable[state()][7], node);
+ }
+ break;
+ case 13:
+ {
+ PkgId5 node = new PkgId5();
+ node.setNode1((TIgnored) pop());
+ push(gotoTable[state()][7], node);
+ }
+ break;
+ case 14:
+ {
+ PkgId6 node = new PkgId6();
+ node.setNode1((TProductions) pop());
+ push(gotoTable[state()][7], node);
+ }
+ break;
+ case 15:
+ {
+ PkgId7 node = new PkgId7();
+ node.setNode1((TTokenSpecifier) pop());
+ push(gotoTable[state()][7], node);
+ }
+ break;
+ case 16:
+ {
+ PkgId8 node = new PkgId8();
+ node.setNode1((TProductionSpecifier) pop());
+ push(gotoTable[state()][7], node);
+ }
+ break;
+ case 17:
+ {
+ PkgId9 node = new PkgId9();
+ node.setNode1((TId) pop());
+ push(gotoTable[state()][7], node);
+ }
+ break;
+ case 18:
+ {
+ PkgId10 node = new PkgId10();
+ node.setNode1((TPkgId) pop());
+ push(gotoTable[state()][7], node);
+ }
+ break;
+ case 19:
+ {
+ HelpersOpt1 node = new HelpersOpt1();
+ node.setNode1((Helpers) pop());
+ push(gotoTable[state()][8], node);
+ }
+ break;
+ case 20:
+ {
+ HelpersOpt2 node = new HelpersOpt2();
+ push(gotoTable[state()][8], node);
+ }
+ break;
+ case 21:
+ {
+ Helpers1 node = new Helpers1();
+ node.setNode2((HelperDefs) pop());
+ node.setNode1((THelpers) pop());
+ push(gotoTable[state()][9], node);
+ }
+ break;
+ case 22:
+ {
+ HelperDefs1 node = new HelperDefs1();
+ node.setNode2((HelperDefs) pop());
+ node.setNode1((HelperDef) pop());
+ push(gotoTable[state()][10], node);
+ }
+ break;
+ case 23:
+ {
+ HelperDefs2 node = new HelperDefs2();
+ push(gotoTable[state()][10], node);
+ }
+ break;
+ case 24:
+ {
+ HelperDef1 node = new HelperDef1();
+ node.setNode4((TSemicolon) pop());
+ node.setNode3((RegExp) pop());
+ node.setNode2((TEqual) pop());
+ node.setNode1((TId) pop());
+ push(gotoTable[state()][11], node);
+ }
+ break;
+ case 25:
+ {
+ StatesOpt1 node = new StatesOpt1();
+ node.setNode1((States) pop());
+ push(gotoTable[state()][12], node);
+ }
+ break;
+ case 26:
+ {
+ StatesOpt2 node = new StatesOpt2();
+ push(gotoTable[state()][12], node);
+ }
+ break;
+ case 27:
+ {
+ States1 node = new States1();
+ node.setNode3((TSemicolon) pop());
+ node.setNode2((IdListOpt) pop());
+ node.setNode1((TStates) pop());
+ push(gotoTable[state()][13], node);
+ }
+ break;
+ case 28:
+ {
+ IdListOpt1 node = new IdListOpt1();
+ node.setNode1((IdList) pop());
+ push(gotoTable[state()][14], node);
+ }
+ break;
+ case 29:
+ {
+ IdList1 node = new IdList1();
+ node.setNode2((IdListTails) pop());
+ node.setNode1((TId) pop());
+ push(gotoTable[state()][15], node);
+ }
+ break;
+ case 30:
+ {
+ IdListTails1 node = new IdListTails1();
+ node.setNode2((IdListTails) pop());
+ node.setNode1((IdListTail) pop());
+ push(gotoTable[state()][16], node);
+ }
+ break;
+ case 31:
+ {
+ IdListTails2 node = new IdListTails2();
+ push(gotoTable[state()][16], node);
+ }
+ break;
+ case 32:
+ {
+ IdListTail1 node = new IdListTail1();
+ node.setNode2((TId) pop());
+ node.setNode1((TComma) pop());
+ push(gotoTable[state()][17], node);
+ }
+ break;
+ case 33:
+ {
+ TokensOpt1 node = new TokensOpt1();
+ node.setNode1((Tokens) pop());
+ push(gotoTable[state()][18], node);
+ }
+ break;
+ case 34:
+ {
+ TokensOpt2 node = new TokensOpt2();
+ push(gotoTable[state()][18], node);
+ }
+ break;
+ case 35:
+ {
+ Tokens1 node = new Tokens1();
+ node.setNode2((TokenDefs) pop());
+ node.setNode1((TTokens) pop());
+ push(gotoTable[state()][19], node);
+ }
+ break;
+ case 36:
+ {
+ TokenDefs1 node = new TokenDefs1();
+ node.setNode2((TokenDefs) pop());
+ node.setNode1((TokenDef) pop());
+ push(gotoTable[state()][20], node);
+ }
+ break;
+ case 37:
+ {
+ TokenDefs2 node = new TokenDefs2();
+ push(gotoTable[state()][20], node);
+ }
+ break;
+ case 38:
+ {
+ TokenDef1 node = new TokenDef1();
+ node.setNode6((TSemicolon) pop());
+ node.setNode5((LookAheadOpt) pop());
+ node.setNode4((RegExp) pop());
+ node.setNode3((TEqual) pop());
+ node.setNode2((TId) pop());
+ node.setNode1((StateListOpt) pop());
+ push(gotoTable[state()][21], node);
+ }
+ break;
+ case 39:
+ {
+ StateListOpt1 node = new StateListOpt1();
+ node.setNode1((StateList) pop());
+ push(gotoTable[state()][22], node);
+ }
+ break;
+ case 40:
+ {
+ StateListOpt2 node = new StateListOpt2();
+ push(gotoTable[state()][22], node);
+ }
+ break;
+ case 41:
+ {
+ StateList1 node = new StateList1();
+ node.setNode5((TRBrace) pop());
+ node.setNode4((StateListTails) pop());
+ node.setNode3((TransitionOpt) pop());
+ node.setNode2((TId) pop());
+ node.setNode1((TLBrace) pop());
+ push(gotoTable[state()][23], node);
+ }
+ break;
+ case 42:
+ {
+ StateListTails1 node = new StateListTails1();
+ node.setNode2((StateListTails) pop());
+ node.setNode1((StateListTail) pop());
+ push(gotoTable[state()][24], node);
+ }
+ break;
+ case 43:
+ {
+ StateListTails2 node = new StateListTails2();
+ push(gotoTable[state()][24], node);
+ }
+ break;
+ case 44:
+ {
+ StateListTail1 node = new StateListTail1();
+ node.setNode3((TransitionOpt) pop());
+ node.setNode2((TId) pop());
+ node.setNode1((TComma) pop());
+ push(gotoTable[state()][25], node);
+ }
+ break;
+ case 45:
+ {
+ TransitionOpt1 node = new TransitionOpt1();
+ node.setNode1((Transition) pop());
+ push(gotoTable[state()][26], node);
+ }
+ break;
+ case 46:
+ {
+ TransitionOpt2 node = new TransitionOpt2();
+ push(gotoTable[state()][26], node);
+ }
+ break;
+ case 47:
+ {
+ Transition1 node = new Transition1();
+ node.setNode2((TId) pop());
+ node.setNode1((TArrow) pop());
+ push(gotoTable[state()][27], node);
+ }
+ break;
+ case 48:
+ {
+ IgnTokensOpt1 node = new IgnTokensOpt1();
+ node.setNode1((IgnTokens) pop());
+ push(gotoTable[state()][28], node);
+ }
+ break;
+ case 49:
+ {
+ IgnTokensOpt2 node = new IgnTokensOpt2();
+ push(gotoTable[state()][28], node);
+ }
+ break;
+ case 50:
+ {
+ IgnTokens1 node = new IgnTokens1();
+ node.setNode4((TSemicolon) pop());
+ node.setNode3((IdListOpt) pop());
+ node.setNode2((TTokens) pop());
+ node.setNode1((TIgnored) pop());
+ push(gotoTable[state()][29], node);
+ }
+ break;
+ case 51:
+ {
+ LookAheadOpt1 node = new LookAheadOpt1();
+ node.setNode1((LookAhead) pop());
+ push(gotoTable[state()][30], node);
+ }
+ break;
+ case 52:
+ {
+ LookAheadOpt2 node = new LookAheadOpt2();
+ push(gotoTable[state()][30], node);
+ }
+ break;
+ case 53:
+ {
+ LookAhead1 node = new LookAhead1();
+ node.setNode2((RegExp) pop());
+ node.setNode1((TSlash) pop());
+ push(gotoTable[state()][31], node);
+ }
+ break;
+ case 54:
+ {
+ RegExp1 node = new RegExp1();
+ node.setNode2((RegExpTails) pop());
+ node.setNode1((Concat) pop());
+ push(gotoTable[state()][32], node);
+ }
+ break;
+ case 55:
+ {
+ RegExpTails1 node = new RegExpTails1();
+ node.setNode2((RegExpTails) pop());
+ node.setNode1((RegExpTail) pop());
+ push(gotoTable[state()][33], node);
+ }
+ break;
+ case 56:
+ {
+ RegExpTails2 node = new RegExpTails2();
+ push(gotoTable[state()][33], node);
+ }
+ break;
+ case 57:
+ {
+ RegExpTail1 node = new RegExpTail1();
+ node.setNode2((Concat) pop());
+ node.setNode1((TBar) pop());
+ push(gotoTable[state()][34], node);
+ }
+ break;
+ case 58:
+ {
+ Concat1 node = new Concat1();
+ node.setNode1((UnExps) pop());
+ push(gotoTable[state()][35], node);
+ }
+ break;
+ case 59:
+ {
+ UnExps1 node = new UnExps1();
+ node.setNode2((UnExps) pop());
+ node.setNode1((UnExp) pop());
+ push(gotoTable[state()][36], node);
+ }
+ break;
+ case 60:
+ {
+ UnExps2 node = new UnExps2();
+ push(gotoTable[state()][36], node);
+ }
+ break;
+ case 61:
+ {
+ UnExp1 node = new UnExp1();
+ node.setNode2((UnOpOpt) pop());
+ node.setNode1((Basic) pop());
+ push(gotoTable[state()][37], node);
+ }
+ break;
+ case 62:
+ {
+ Basic1 node = new Basic1();
+ node.setNode1((PChar) pop());
+ push(gotoTable[state()][38], node);
+ }
+ break;
+ case 63:
+ {
+ Basic2 node = new Basic2();
+ node.setNode1((PSet) pop());
+ push(gotoTable[state()][38], node);
+ }
+ break;
+ case 64:
+ {
+ Basic3 node = new Basic3();
+ node.setNode1((TString) pop());
+ push(gotoTable[state()][38], node);
+ }
+ break;
+ case 65:
+ {
+ Basic4 node = new Basic4();
+ node.setNode1((TId) pop());
+ push(gotoTable[state()][38], node);
+ }
+ break;
+ case 66:
+ {
+ Basic5 node = new Basic5();
+ node.setNode3((TRPar) pop());
+ node.setNode2((RegExp) pop());
+ node.setNode1((TLPar) pop());
+ push(gotoTable[state()][38], node);
+ }
+ break;
+ case 67:
+ {
+ PChar1 node = new PChar1();
+ node.setNode1((TChar) pop());
+ push(gotoTable[state()][39], node);
+ }
+ break;
+ case 68:
+ {
+ PChar2 node = new PChar2();
+ node.setNode1((TDecChar) pop());
+ push(gotoTable[state()][39], node);
+ }
+ break;
+ case 69:
+ {
+ PChar3 node = new PChar3();
+ node.setNode1((THexChar) pop());
+ push(gotoTable[state()][39], node);
+ }
+ break;
+ case 70:
+ {
+ PSet1 node = new PSet1();
+ node.setNode5((TRBkt) pop());
+ node.setNode4((Basic) pop());
+ node.setNode3((BinOp) pop());
+ node.setNode2((Basic) pop());
+ node.setNode1((TLBkt) pop());
+ push(gotoTable[state()][40], node);
+ }
+ break;
+ case 71:
+ {
+ PSet2 node = new PSet2();
+ node.setNode5((TRBkt) pop());
+ node.setNode4((PChar) pop());
+ node.setNode3((TDDot) pop());
+ node.setNode2((PChar) pop());
+ node.setNode1((TLBkt) pop());
+ push(gotoTable[state()][40], node);
+ }
+ break;
+ case 72:
+ {
+ UnOpOpt1 node = new UnOpOpt1();
+ node.setNode1((UnOp) pop());
+ push(gotoTable[state()][41], node);
+ }
+ break;
+ case 73:
+ {
+ UnOpOpt2 node = new UnOpOpt2();
+ push(gotoTable[state()][41], node);
+ }
+ break;
+ case 74:
+ {
+ UnOp1 node = new UnOp1();
+ node.setNode1((TStar) pop());
+ push(gotoTable[state()][42], node);
+ }
+ break;
+ case 75:
+ {
+ UnOp2 node = new UnOp2();
+ node.setNode1((TQMark) pop());
+ push(gotoTable[state()][42], node);
+ }
+ break;
+ case 76:
+ {
+ UnOp3 node = new UnOp3();
+ node.setNode1((TPlus) pop());
+ push(gotoTable[state()][42], node);
+ }
+ break;
+ case 77:
+ {
+ BinOp1 node = new BinOp1();
+ node.setNode1((TPlus) pop());
+ push(gotoTable[state()][43], node);
+ }
+ break;
+ case 78:
+ {
+ BinOp2 node = new BinOp2();
+ node.setNode1((TMinus) pop());
+ push(gotoTable[state()][43], node);
+ }
+ break;
+ case 79:
+ {
+ ProductionsOpt1 node = new ProductionsOpt1();
+ node.setNode1((Productions) pop());
+ push(gotoTable[state()][44], node);
+ }
+ break;
+ case 80:
+ {
+ ProductionsOpt2 node = new ProductionsOpt2();
+ push(gotoTable[state()][44], node);
+ }
+ break;
+ case 81:
+ {
+ Productions1 node = new Productions1();
+ node.setNode2((Prods) pop());
+ node.setNode1((TProductions) pop());
+ push(gotoTable[state()][45], node);
+ }
+ break;
+ case 82:
+ {
+ Prods1 node = new Prods1();
+ node.setNode2((Prods) pop());
+ node.setNode1((Prod) pop());
+ push(gotoTable[state()][46], node);
+ }
+ break;
+ case 83:
+ {
+ Prods2 node = new Prods2();
+ push(gotoTable[state()][46], node);
+ }
+ break;
+ case 84:
+ {
+ Prod1 node = new Prod1();
+ node.setNode4((TSemicolon) pop());
+ node.setNode3((Alts) pop());
+ node.setNode2((TEqual) pop());
+ node.setNode1((TId) pop());
+ push(gotoTable[state()][47], node);
+ }
+ break;
+ case 85:
+ {
+ Alts1 node = new Alts1();
+ node.setNode2((AltsTails) pop());
+ node.setNode1((Alt) pop());
+ push(gotoTable[state()][48], node);
+ }
+ break;
+ case 86:
+ {
+ AltsTails1 node = new AltsTails1();
+ node.setNode2((AltsTails) pop());
+ node.setNode1((AltsTail) pop());
+ push(gotoTable[state()][49], node);
+ }
+ break;
+ case 87:
+ {
+ AltsTails2 node = new AltsTails2();
+ push(gotoTable[state()][49], node);
+ }
+ break;
+ case 88:
+ {
+ AltsTail1 node = new AltsTail1();
+ node.setNode2((Alt) pop());
+ node.setNode1((TBar) pop());
+ push(gotoTable[state()][50], node);
+ }
+ break;
+ case 89:
+ {
+ Alt1 node = new Alt1();
+ node.setNode2((Elems) pop());
+ node.setNode1((AltNameOpt) pop());
+ push(gotoTable[state()][51], node);
+ }
+ break;
+ case 90:
+ {
+ Alt2 node = new Alt2();
+ node.setNode4((TRPar) pop());
+ node.setNode3((Elems) pop());
+ node.setNode2((AltNameOpt) pop());
+ node.setNode1((TLPar) pop());
+ push(gotoTable[state()][51], node);
+ }
+ break;
+ case 91:
+ {
+ AltNameOpt1 node = new AltNameOpt1();
+ node.setNode1((AltName) pop());
+ push(gotoTable[state()][52], node);
+ }
+ break;
+ case 92:
+ {
+ AltNameOpt2 node = new AltNameOpt2();
+ push(gotoTable[state()][52], node);
+ }
+ break;
+ case 93:
+ {
+ AltName1 node = new AltName1();
+ node.setNode3((TRBrace) pop());
+ node.setNode2((TId) pop());
+ node.setNode1((TLBrace) pop());
+ push(gotoTable[state()][53], node);
+ }
+ break;
+ case 94:
+ {
+ Elems1 node = new Elems1();
+ node.setNode2((Elems) pop());
+ node.setNode1((Elem) pop());
+ push(gotoTable[state()][54], node);
+ }
+ break;
+ case 95:
+ {
+ Elems2 node = new Elems2();
+ push(gotoTable[state()][54], node);
+ }
+ break;
+ case 96:
+ {
+ Elem1 node = new Elem1();
+ node.setNode4((UnOpOpt) pop());
+ node.setNode3((TId) pop());
+ node.setNode2((SpecifierOpt) pop());
+ node.setNode1((ElemNameOpt) pop());
+ push(gotoTable[state()][55], node);
+ }
+ break;
+ case 97:
+ {
+ ElemNameOpt1 node = new ElemNameOpt1();
+ node.setNode1((ElemName) pop());
+ push(gotoTable[state()][56], node);
+ }
+ break;
+ case 98:
+ {
+ ElemNameOpt2 node = new ElemNameOpt2();
+ push(gotoTable[state()][56], node);
+ }
+ break;
+ case 99:
+ {
+ ElemName1 node = new ElemName1();
+ node.setNode4((TColon) pop());
+ node.setNode3((TRBkt) pop());
+ node.setNode2((TId) pop());
+ node.setNode1((TLBkt) pop());
+ push(gotoTable[state()][57], node);
+ }
+ break;
+ case 100:
+ {
+ SpecifierOpt1 node = new SpecifierOpt1();
+ node.setNode1((Specifier) pop());
+ push(gotoTable[state()][58], node);
+ }
+ break;
+ case 101:
+ {
+ SpecifierOpt2 node = new SpecifierOpt2();
+ push(gotoTable[state()][58], node);
+ }
+ break;
+ case 102:
+ {
+ Specifier1 node = new Specifier1();
+ node.setNode2((TDot) pop());
+ node.setNode1((TTokenSpecifier) pop());
+ push(gotoTable[state()][59], node);
+ }
+ break;
+ case 103:
+ {
+ Specifier2 node = new Specifier2();
+ node.setNode2((TDot) pop());
+ node.setNode1((TProductionSpecifier) pop());
+ push(gotoTable[state()][59], node);
+ }
+ break;
+ }
+ break;
+ case ACCEPT:
+ {
+ Start1 node = new Start1();
+ node.setNode1((Grammar) pop());
+ node.setNode2((EOF) lexer.next());
+ return node;
+ }
+ case ERROR:
+ throw new ParserException(
+ "[" + last_line + "," + last_pos + "] " +
+// errors[last_shift]);
+ errors[action[1]]);
+ }
+ }
+ }
+
+ private final static int SHIFT = 0;
+ private final static int REDUCE = 1;
+ private final static int ACCEPT = 2;
+ private final static int ERROR = 3;
+ private /*final*/ static int[][][] actionTable; /* =
+ {
+ {{SHIFT, 1}, {REDUCE, 2}, {REDUCE, 2}, {REDUCE, 2}, {REDUCE, 2}, {REDUCE, 2}, {ERROR, 0}, {ERROR, 0}, {ERROR, 0}, {ERROR, 0}, {ERROR, 0}, {ERROR, 0}, {ERROR, 0}, {ERROR, 0}, {ERROR, 0}, {ERROR, 0}, {ERROR, 0}, {ERROR, 0}, {ERROR, 0}, {ERROR, 0}, {ERROR, 0}, {ERROR, 0}, {ERROR, 0}, {ERROR, 0}, {ERROR, 0}, {ERROR, 0}, {ERROR, 0}, {ERROR, 0}, {ERROR, 0}, {ERROR, 0}, {ERROR, 0}, {ERROR, 0}, {ERROR, 0}, {REDUCE, 2}, },
+ {{SHIFT, 5}, {SHIFT, 6}, {SHIFT, 7}, {SHIFT, 8}, {SHIFT, 9}, {SHIFT, 10}, {SHIFT, 11}, {SHIFT, 12}, {ERROR, 1}, {ERROR, 1}, {ERROR, 1}, {ERROR, 1}, {ERROR, 1}, {ERROR, 1}, {ERROR, 1}, {ERROR, 1}, {ERROR, 1}, {ERROR, 1}, {ERROR, 1}, {ERROR, 1}, {ERROR, 1}, {ERROR, 1}, {ERROR, 1}, {ERROR, 1}, {ERROR, 1}, {ERROR, 1}, {ERROR, 1}, {SHIFT, 13}, {ERROR, 1}, {ERROR, 1}, {ERROR, 1}, {ERROR, 1}, {SHIFT, 14}, {ERROR, 1}, },
+ {{ERROR, 2}, {ERROR, 2}, {ERROR, 2}, {ERROR, 2}, {ERROR, 2}, {ERROR, 2}, {ERROR, 2}, {ERROR, 2}, {ERROR, 2}, {ERROR, 2}, {ERROR, 2}, {ERROR, 2}, {ERROR, 2}, {ERROR, 2}, {ERROR, 2}, {ERROR, 2}, {ERROR, 2}, {ERROR, 2}, {ERROR, 2}, {ERROR, 2}, {ERROR, 2}, {ERROR, 2}, {ERROR, 2}, {ERROR, 2}, {ERROR, 2}, {ERROR, 2}, {ERROR, 2}, {ERROR, 2}, {ERROR, 2}, {ERROR, 2}, {ERROR, 2}, {ERROR, 2}, {ERROR, 2}, {ACCEPT}, },
+ {{ERROR, 3}, {REDUCE, 20}, {SHIFT, 18}, {REDUCE, 20}, {REDUCE, 20}, {REDUCE, 20}, {ERROR, 3}, {ERROR, 3}, {ERROR, 3}, {ERROR, 3}, {ERROR, 3}, {ERROR, 3}, {ERROR, 3}, {ERROR, 3}, {ERROR, 3}, {ERROR, 3}, {ERROR, 3}, {ERROR, 3}, {ERROR, 3}, {ERROR, 3}, {ERROR, 3}, {ERROR, 3}, {ERROR, 3}, {ERROR, 3}, {ERROR, 3}, {ERROR, 3}, {ERROR, 3}, {ERROR, 3}, {ERROR, 3}, {ERROR, 3}, {ERROR, 3}, {ERROR, 3}, {ERROR, 3}, {REDUCE, 20}, },
+ {{ERROR, 4}, {REDUCE, 1}, {REDUCE, 1}, {REDUCE, 1}, {REDUCE, 1}, {REDUCE, 1}, {ERROR, 4}, {ERROR, 4}, {ERROR, 4}, {ERROR, 4}, {ERROR, 4}, {ERROR, 4}, {ERROR, 4}, {ERROR, 4}, {ERROR, 4}, {ERROR, 4}, {ERROR, 4}, {ERROR, 4}, {ERROR, 4}, {ERROR, 4}, {ERROR, 4}, {ERROR, 4}, {ERROR, 4}, {ERROR, 4}, {ERROR, 4}, {ERROR, 4}, {ERROR, 4}, {ERROR, 4}, {ERROR, 4}, {ERROR, 4}, {ERROR, 4}, {ERROR, 4}, {ERROR, 4}, {REDUCE, 1}, },
+ {{ERROR, 5}, {ERROR, 5}, {ERROR, 5}, {ERROR, 5}, {ERROR, 5}, {ERROR, 5}, {ERROR, 5}, {ERROR, 5}, {REDUCE, 9}, {ERROR, 5}, {REDUCE, 9}, {ERROR, 5}, {ERROR, 5}, {ERROR, 5}, {ERROR, 5}, {ERROR, 5}, {ERROR, 5}, {ERROR, 5}, {ERROR, 5}, {ERROR, 5}, {ERROR, 5}, {ERROR, 5}, {ERROR, 5}, {ERROR, 5}, {ERROR, 5}, {ERROR, 5}, {ERROR, 5}, {ERROR, 5}, {ERROR, 5}, {ERROR, 5}, {ERROR, 5}, {ERROR, 5}, {ERROR, 5}, {ERROR, 5}, },
+ {{ERROR, 6}, {ERROR, 6}, {ERROR, 6}, {ERROR, 6}, {ERROR, 6}, {ERROR, 6}, {ERROR, 6}, {ERROR, 6}, {REDUCE, 10}, {ERROR, 6}, {REDUCE, 10}, {ERROR, 6}, {ERROR, 6}, {ERROR, 6}, {ERROR, 6}, {ERROR, 6}, {ERROR, 6}, {ERROR, 6}, {ERROR, 6}, {ERROR, 6}, {ERROR, 6}, {ERROR, 6}, {ERROR, 6}, {ERROR, 6}, {ERROR, 6}, {ERROR, 6}, {ERROR, 6}, {ERROR, 6}, {ERROR, 6}, {ERROR, 6}, {ERROR, 6}, {ERROR, 6}, {ERROR, 6}, {ERROR, 6}, },
+ {{ERROR, 7}, {ERROR, 7}, {ERROR, 7}, {ERROR, 7}, {ERROR, 7}, {ERROR, 7}, {ERROR, 7}, {ERROR, 7}, {REDUCE, 11}, {ERROR, 7}, {REDUCE, 11}, {ERROR, 7}, {ERROR, 7}, {ERROR, 7}, {ERROR, 7}, {ERROR, 7}, {ERROR, 7}, {ERROR, 7}, {ERROR, 7}, {ERROR, 7}, {ERROR, 7}, {ERROR, 7}, {ERROR, 7}, {ERROR, 7}, {ERROR, 7}, {ERROR, 7}, {ERROR, 7}, {ERROR, 7}, {ERROR, 7}, {ERROR, 7}, {ERROR, 7}, {ERROR, 7}, {ERROR, 7}, {ERROR, 7}, },
+ {{ERROR, 8}, {ERROR, 8}, {ERROR, 8}, {ERROR, 8}, {ERROR, 8}, {ERROR, 8}, {ERROR, 8}, {ERROR, 8}, {REDUCE, 12}, {ERROR, 8}, {REDUCE, 12}, {ERROR, 8}, {ERROR, 8}, {ERROR, 8}, {ERROR, 8}, {ERROR, 8}, {ERROR, 8}, {ERROR, 8}, {ERROR, 8}, {ERROR, 8}, {ERROR, 8}, {ERROR, 8}, {ERROR, 8}, {ERROR, 8}, {ERROR, 8}, {ERROR, 8}, {ERROR, 8}, {ERROR, 8}, {ERROR, 8}, {ERROR, 8}, {ERROR, 8}, {ERROR, 8}, {ERROR, 8}, {ERROR, 8}, },
+ {{ERROR, 9}, {ERROR, 9}, {ERROR, 9}, {ERROR, 9}, {ERROR, 9}, {ERROR, 9}, {ERROR, 9}, {ERROR, 9}, {REDUCE, 13}, {ERROR, 9}, {REDUCE, 13}, {ERROR, 9}, {ERROR, 9}, {ERROR, 9}, {ERROR, 9}, {ERROR, 9}, {ERROR, 9}, {ERROR, 9}, {ERROR, 9}, {ERROR, 9}, {ERROR, 9}, {ERROR, 9}, {ERROR, 9}, {ERROR, 9}, {ERROR, 9}, {ERROR, 9}, {ERROR, 9}, {ERROR, 9}, {ERROR, 9}, {ERROR, 9}, {ERROR, 9}, {ERROR, 9}, {ERROR, 9}, {ERROR, 9}, },
+ {{ERROR, 10}, {ERROR, 10}, {ERROR, 10}, {ERROR, 10}, {ERROR, 10}, {ERROR, 10}, {ERROR, 10}, {ERROR, 10}, {REDUCE, 14}, {ERROR, 10}, {REDUCE, 14}, {ERROR, 10}, {ERROR, 10}, {ERROR, 10}, {ERROR, 10}, {ERROR, 10}, {ERROR, 10}, {ERROR, 10}, {ERROR, 10}, {ERROR, 10}, {ERROR, 10}, {ERROR, 10}, {ERROR, 10}, {ERROR, 10}, {ERROR, 10}, {ERROR, 10}, {ERROR, 10}, {ERROR, 10}, {ERROR, 10}, {ERROR, 10}, {ERROR, 10}, {ERROR, 10}, {ERROR, 10}, {ERROR, 10}, },
+ {{ERROR, 11}, {ERROR, 11}, {ERROR, 11}, {ERROR, 11}, {ERROR, 11}, {ERROR, 11}, {ERROR, 11}, {ERROR, 11}, {REDUCE, 15}, {ERROR, 11}, {REDUCE, 15}, {ERROR, 11}, {ERROR, 11}, {ERROR, 11}, {ERROR, 11}, {ERROR, 11}, {ERROR, 11}, {ERROR, 11}, {ERROR, 11}, {ERROR, 11}, {ERROR, 11}, {ERROR, 11}, {ERROR, 11}, {ERROR, 11}, {ERROR, 11}, {ERROR, 11}, {ERROR, 11}, {ERROR, 11}, {ERROR, 11}, {ERROR, 11}, {ERROR, 11}, {ERROR, 11}, {ERROR, 11}, {ERROR, 11}, },
+ {{ERROR, 12}, {ERROR, 12}, {ERROR, 12}, {ERROR, 12}, {ERROR, 12}, {ERROR, 12}, {ERROR, 12}, {ERROR, 12}, {REDUCE, 16}, {ERROR, 12}, {REDUCE, 16}, {ERROR, 12}, {ERROR, 12}, {ERROR, 12}, {ERROR, 12}, {ERROR, 12}, {ERROR, 12}, {ERROR, 12}, {ERROR, 12}, {ERROR, 12}, {ERROR, 12}, {ERROR, 12}, {ERROR, 12}, {ERROR, 12}, {ERROR, 12}, {ERROR, 12}, {ERROR, 12}, {ERROR, 12}, {ERROR, 12}, {ERROR, 12}, {ERROR, 12}, {ERROR, 12}, {ERROR, 12}, {ERROR, 12}, },
+ {{ERROR, 13}, {ERROR, 13}, {ERROR, 13}, {ERROR, 13}, {ERROR, 13}, {ERROR, 13}, {ERROR, 13}, {ERROR, 13}, {REDUCE, 17}, {ERROR, 13}, {REDUCE, 17}, {ERROR, 13}, {ERROR, 13}, {ERROR, 13}, {ERROR, 13}, {ERROR, 13}, {ERROR, 13}, {ERROR, 13}, {ERROR, 13}, {ERROR, 13}, {ERROR, 13}, {ERROR, 13}, {ERROR, 13}, {ERROR, 13}, {ERROR, 13}, {ERROR, 13}, {ERROR, 13}, {ERROR, 13}, {ERROR, 13}, {ERROR, 13}, {ERROR, 13}, {ERROR, 13}, {ERROR, 13}, {ERROR, 13}, },
+ {{ERROR, 14}, {ERROR, 14}, {ERROR, 14}, {ERROR, 14}, {ERROR, 14}, {ERROR, 14}, {ERROR, 14}, {ERROR, 14}, {REDUCE, 18}, {ERROR, 14}, {REDUCE, 18}, {ERROR, 14}, {ERROR, 14}, {ERROR, 14}, {ERROR, 14}, {ERROR, 14}, {ERROR, 14}, {ERROR, 14}, {ERROR, 14}, {ERROR, 14}, {ERROR, 14}, {ERROR, 14}, {ERROR, 14}, {ERROR, 14}, {ERROR, 14}, {ERROR, 14}, {ERROR, 14}, {ERROR, 14}, {ERROR, 14}, {ERROR, 14}, {ERROR, 14}, {ERROR, 14}, {ERROR, 14}, {ERROR, 14}, },
+ {{ERROR, 15}, {REDUCE, 3}, {REDUCE, 3}, {REDUCE, 3}, {REDUCE, 3}, {REDUCE, 3}, {ERROR, 15}, {ERROR, 15}, {ERROR, 15}, {ERROR, 15}, {ERROR, 15}, {ERROR, 15}, {ERROR, 15}, {ERROR, 15}, {ERROR, 15}, {ERROR, 15}, {ERROR, 15}, {ERROR, 15}, {ERROR, 15}, {ERROR, 15}, {ERROR, 15}, {ERROR, 15}, {ERROR, 15}, {ERROR, 15}, {ERROR, 15}, {ERROR, 15}, {ERROR, 15}, {ERROR, 15}, {ERROR, 15}, {ERROR, 15}, {ERROR, 15}, {ERROR, 15}, {ERROR, 15}, {REDUCE, 3}, },
+ {{ERROR, 16}, {REDUCE, 4}, {REDUCE, 4}, {REDUCE, 4}, {REDUCE, 4}, {REDUCE, 4}, {ERROR, 16}, {ERROR, 16}, {ERROR, 16}, {ERROR, 16}, {ERROR, 16}, {ERROR, 16}, {ERROR, 16}, {ERROR, 16}, {ERROR, 16}, {ERROR, 16}, {ERROR, 16}, {ERROR, 16}, {ERROR, 16}, {ERROR, 16}, {ERROR, 16}, {ERROR, 16}, {ERROR, 16}, {ERROR, 16}, {ERROR, 16}, {ERROR, 16}, {ERROR, 16}, {ERROR, 16}, {ERROR, 16}, {ERROR, 16}, {ERROR, 16}, {ERROR, 16}, {ERROR, 16}, {REDUCE, 4}, },
+ {{ERROR, 17}, {ERROR, 17}, {ERROR, 17}, {ERROR, 17}, {ERROR, 17}, {ERROR, 17}, {ERROR, 17}, {ERROR, 17}, {SHIFT, 21}, {ERROR, 17}, {REDUCE, 7}, {ERROR, 17}, {ERROR, 17}, {ERROR, 17}, {ERROR, 17}, {ERROR, 17}, {ERROR, 17}, {ERROR, 17}, {ERROR, 17}, {ERROR, 17}, {ERROR, 17}, {ERROR, 17}, {ERROR, 17}, {ERROR, 17}, {ERROR, 17}, {ERROR, 17}, {ERROR, 17}, {ERROR, 17}, {ERROR, 17}, {ERROR, 17}, {ERROR, 17}, {ERROR, 17}, {ERROR, 17}, {ERROR, 17}, },
+ {{ERROR, 18}, {REDUCE, 23}, {ERROR, 18}, {REDUCE, 23}, {REDUCE, 23}, {REDUCE, 23}, {ERROR, 18}, {ERROR, 18}, {ERROR, 18}, {ERROR, 18}, {ERROR, 18}, {ERROR, 18}, {ERROR, 18}, {ERROR, 18}, {ERROR, 18}, {ERROR, 18}, {ERROR, 18}, {ERROR, 18}, {ERROR, 18}, {ERROR, 18}, {ERROR, 18}, {ERROR, 18}, {ERROR, 18}, {ERROR, 18}, {ERROR, 18}, {ERROR, 18}, {ERROR, 18}, {SHIFT, 24}, {ERROR, 18}, {ERROR, 18}, {ERROR, 18}, {ERROR, 18}, {ERROR, 18}, {REDUCE, 23}, },
+ {{ERROR, 19}, {SHIFT, 27}, {ERROR, 19}, {REDUCE, 26}, {REDUCE, 26}, {REDUCE, 26}, {ERROR, 19}, {ERROR, 19}, {ERROR, 19}, {ERROR, 19}, {ERROR, 19}, {ERROR, 19}, {ERROR, 19}, {ERROR, 19}, {ERROR, 19}, {ERROR, 19}, {ERROR, 19}, {ERROR, 19}, {ERROR, 19}, {ERROR, 19}, {ERROR, 19}, {ERROR, 19}, {ERROR, 19}, {ERROR, 19}, {ERROR, 19}, {ERROR, 19}, {ERROR, 19}, {ERROR, 19}, {ERROR, 19}, {ERROR, 19}, {ERROR, 19}, {ERROR, 19}, {ERROR, 19}, {REDUCE, 26}, },
+ {{ERROR, 20}, {REDUCE, 19}, {ERROR, 20}, {REDUCE, 19}, {REDUCE, 19}, {REDUCE, 19}, {ERROR, 20}, {ERROR, 20}, {ERROR, 20}, {ERROR, 20}, {ERROR, 20}, {ERROR, 20}, {ERROR, 20}, {ERROR, 20}, {ERROR, 20}, {ERROR, 20}, {ERROR, 20}, {ERROR, 20}, {ERROR, 20}, {ERROR, 20}, {ERROR, 20}, {ERROR, 20}, {ERROR, 20}, {ERROR, 20}, {ERROR, 20}, {ERROR, 20}, {ERROR, 20}, {ERROR, 20}, {ERROR, 20}, {ERROR, 20}, {ERROR, 20}, {ERROR, 20}, {ERROR, 20}, {REDUCE, 19}, },
+ {{SHIFT, 5}, {SHIFT, 6}, {SHIFT, 7}, {SHIFT, 8}, {SHIFT, 9}, {SHIFT, 10}, {SHIFT, 11}, {SHIFT, 12}, {ERROR, 21}, {ERROR, 21}, {ERROR, 21}, {ERROR, 21}, {ERROR, 21}, {ERROR, 21}, {ERROR, 21}, {ERROR, 21}, {ERROR, 21}, {ERROR, 21}, {ERROR, 21}, {ERROR, 21}, {ERROR, 21}, {ERROR, 21}, {ERROR, 21}, {ERROR, 21}, {ERROR, 21}, {ERROR, 21}, {ERROR, 21}, {SHIFT, 13}, {ERROR, 21}, {ERROR, 21}, {ERROR, 21}, {ERROR, 21}, {SHIFT, 14}, {ERROR, 21}, },
+ {{ERROR, 22}, {ERROR, 22}, {ERROR, 22}, {ERROR, 22}, {ERROR, 22}, {ERROR, 22}, {ERROR, 22}, {ERROR, 22}, {ERROR, 22}, {ERROR, 22}, {SHIFT, 31}, {ERROR, 22}, {ERROR, 22}, {ERROR, 22}, {ERROR, 22}, {ERROR, 22}, {ERROR, 22}, {ERROR, 22}, {ERROR, 22}, {ERROR, 22}, {ERROR, 22}, {ERROR, 22}, {ERROR, 22}, {ERROR, 22}, {ERROR, 22}, {ERROR, 22}, {ERROR, 22}, {ERROR, 22}, {ERROR, 22}, {ERROR, 22}, {ERROR, 22}, {ERROR, 22}, {ERROR, 22}, {ERROR, 22}, },
+ {{ERROR, 23}, {ERROR, 23}, {ERROR, 23}, {ERROR, 23}, {ERROR, 23}, {ERROR, 23}, {ERROR, 23}, {ERROR, 23}, {SHIFT, 21}, {ERROR, 23}, {REDUCE, 7}, {ERROR, 23}, {ERROR, 23}, {ERROR, 23}, {ERROR, 23}, {ERROR, 23}, {ERROR, 23}, {ERROR, 23}, {ERROR, 23}, {ERROR, 23}, {ERROR, 23}, {ERROR, 23}, {ERROR, 23}, {ERROR, 23}, {ERROR, 23}, {ERROR, 23}, {ERROR, 23}, {ERROR, 23}, {ERROR, 23}, {ERROR, 23}, {ERROR, 23}, {ERROR, 23}, {ERROR, 23}, {ERROR, 23}, },
+ {{ERROR, 24}, {ERROR, 24}, {ERROR, 24}, {ERROR, 24}, {ERROR, 24}, {ERROR, 24}, {ERROR, 24}, {ERROR, 24}, {ERROR, 24}, {ERROR, 24}, {ERROR, 24}, {SHIFT, 33}, {ERROR, 24}, {ERROR, 24}, {ERROR, 24}, {ERROR, 24}, {ERROR, 24}, {ERROR, 24}, {ERROR, 24}, {ERROR, 24}, {ERROR, 24}, {ERROR, 24}, {ERROR, 24}, {ERROR, 24}, {ERROR, 24}, {ERROR, 24}, {ERROR, 24}, {ERROR, 24}, {ERROR, 24}, {ERROR, 24}, {ERROR, 24}, {ERROR, 24}, {ERROR, 24}, {ERROR, 24}, },
+ {{ERROR, 25}, {REDUCE, 21}, {ERROR, 25}, {REDUCE, 21}, {REDUCE, 21}, {REDUCE, 21}, {ERROR, 25}, {ERROR, 25}, {ERROR, 25}, {ERROR, 25}, {ERROR, 25}, {ERROR, 25}, {ERROR, 25}, {ERROR, 25}, {ERROR, 25}, {ERROR, 25}, {ERROR, 25}, {ERROR, 25}, {ERROR, 25}, {ERROR, 25}, {ERROR, 25}, {ERROR, 25}, {ERROR, 25}, {ERROR, 25}, {ERROR, 25}, {ERROR, 25}, {ERROR, 25}, {ERROR, 25}, {ERROR, 25}, {ERROR, 25}, {ERROR, 25}, {ERROR, 25}, {ERROR, 25}, {REDUCE, 21}, },
+ {{ERROR, 26}, {REDUCE, 23}, {ERROR, 26}, {REDUCE, 23}, {REDUCE, 23}, {REDUCE, 23}, {ERROR, 26}, {ERROR, 26}, {ERROR, 26}, {ERROR, 26}, {ERROR, 26}, {ERROR, 26}, {ERROR, 26}, {ERROR, 26}, {ERROR, 26}, {ERROR, 26}, {ERROR, 26}, {ERROR, 26}, {ERROR, 26}, {ERROR, 26}, {ERROR, 26}, {ERROR, 26}, {ERROR, 26}, {ERROR, 26}, {ERROR, 26}, {ERROR, 26}, {ERROR, 26}, {SHIFT, 24}, {ERROR, 26}, {ERROR, 26}, {ERROR, 26}, {ERROR, 26}, {ERROR, 26}, {REDUCE, 23}, },
+ {{ERROR, 27}, {ERROR, 27}, {ERROR, 27}, {ERROR, 27}, {ERROR, 27}, {ERROR, 27}, {ERROR, 27}, {ERROR, 27}, {ERROR, 27}, {ERROR, 27}, {ERROR, 27}, {ERROR, 27}, {ERROR, 27}, {ERROR, 27}, {ERROR, 27}, {ERROR, 27}, {ERROR, 27}, {ERROR, 27}, {ERROR, 27}, {ERROR, 27}, {ERROR, 27}, {ERROR, 27}, {ERROR, 27}, {ERROR, 27}, {ERROR, 27}, {ERROR, 27}, {ERROR, 27}, {SHIFT, 35}, {ERROR, 27}, {ERROR, 27}, {ERROR, 27}, {ERROR, 27}, {ERROR, 27}, {ERROR, 27}, },
+ {{ERROR, 28}, {ERROR, 28}, {ERROR, 28}, {SHIFT, 38}, {REDUCE, 34}, {REDUCE, 34}, {ERROR, 28}, {ERROR, 28}, {ERROR, 28}, {ERROR, 28}, {ERROR, 28}, {ERROR, 28}, {ERROR, 28}, {ERROR, 28}, {ERROR, 28}, {ERROR, 28}, {ERROR, 28}, {ERROR, 28}, {ERROR, 28}, {ERROR, 28}, {ERROR, 28}, {ERROR, 28}, {ERROR, 28}, {ERROR, 28}, {ERROR, 28}, {ERROR, 28}, {ERROR, 28}, {ERROR, 28}, {ERROR, 28}, {ERROR, 28}, {ERROR, 28}, {ERROR, 28}, {ERROR, 28}, {REDUCE, 34}, },
+ {{ERROR, 29}, {ERROR, 29}, {ERROR, 29}, {REDUCE, 25}, {REDUCE, 25}, {REDUCE, 25}, {ERROR, 29}, {ERROR, 29}, {ERROR, 29}, {ERROR, 29}, {ERROR, 29}, {ERROR, 29}, {ERROR, 29}, {ERROR, 29}, {ERROR, 29}, {ERROR, 29}, {ERROR, 29}, {ERROR, 29}, {ERROR, 29}, {ERROR, 29}, {ERROR, 29}, {ERROR, 29}, {ERROR, 29}, {ERROR, 29}, {ERROR, 29}, {ERROR, 29}, {ERROR, 29}, {ERROR, 29}, {ERROR, 29}, {ERROR, 29}, {ERROR, 29}, {ERROR, 29}, {ERROR, 29}, {REDUCE, 25}, },
+ {{ERROR, 30}, {ERROR, 30}, {ERROR, 30}, {ERROR, 30}, {ERROR, 30}, {ERROR, 30}, {ERROR, 30}, {ERROR, 30}, {REDUCE, 8}, {ERROR, 30}, {REDUCE, 8}, {ERROR, 30}, {ERROR, 30}, {ERROR, 30}, {ERROR, 30}, {ERROR, 30}, {ERROR, 30}, {ERROR, 30}, {ERROR, 30}, {ERROR, 30}, {ERROR, 30}, {ERROR, 30}, {ERROR, 30}, {ERROR, 30}, {ERROR, 30}, {ERROR, 30}, {ERROR, 30}, {ERROR, 30}, {ERROR, 30}, {ERROR, 30}, {ERROR, 30}, {ERROR, 30}, {ERROR, 30}, {ERROR, 30}, },
+ {{ERROR, 31}, {REDUCE, 5}, {REDUCE, 5}, {REDUCE, 5}, {REDUCE, 5}, {REDUCE, 5}, {ERROR, 31}, {ERROR, 31}, {ERROR, 31}, {ERROR, 31}, {ERROR, 31}, {ERROR, 31}, {ERROR, 31}, {ERROR, 31}, {ERROR, 31}, {ERROR, 31}, {ERROR, 31}, {ERROR, 31}, {ERROR, 31}, {ERROR, 31}, {ERROR, 31}, {ERROR, 31}, {ERROR, 31}, {ERROR, 31}, {ERROR, 31}, {ERROR, 31}, {ERROR, 31}, {ERROR, 31}, {ERROR, 31}, {ERROR, 31}, {ERROR, 31}, {ERROR, 31}, {ERROR, 31}, {REDUCE, 5}, },
+ {{ERROR, 32}, {ERROR, 32}, {ERROR, 32}, {ERROR, 32}, {ERROR, 32}, {ERROR, 32}, {ERROR, 32}, {ERROR, 32}, {ERROR, 32}, {ERROR, 32}, {REDUCE, 6}, {ERROR, 32}, {ERROR, 32}, {ERROR, 32}, {ERROR, 32}, {ERROR, 32}, {ERROR, 32}, {ERROR, 32}, {ERROR, 32}, {ERROR, 32}, {ERROR, 32}, {ERROR, 32}, {ERROR, 32}, {ERROR, 32}, {ERROR, 32}, {ERROR, 32}, {ERROR, 32}, {ERROR, 32}, {ERROR, 32}, {ERROR, 32}, {ERROR, 32}, {ERROR, 32}, {ERROR, 32}, {ERROR, 32}, },
+ {{ERROR, 33}, {ERROR, 33}, {ERROR, 33}, {ERROR, 33}, {ERROR, 33}, {ERROR, 33}, {ERROR, 33}, {ERROR, 33}, {ERROR, 33}, {ERROR, 33}, {REDUCE, 60}, {ERROR, 33}, {SHIFT, 41}, {ERROR, 33}, {SHIFT, 42}, {ERROR, 33}, {ERROR, 33}, {ERROR, 33}, {ERROR, 33}, {ERROR, 33}, {ERROR, 33}, {ERROR, 33}, {REDUCE, 60}, {ERROR, 33}, {ERROR, 33}, {ERROR, 33}, {ERROR, 33}, {SHIFT, 43}, {SHIFT, 44}, {SHIFT, 45}, {SHIFT, 46}, {SHIFT, 47}, {ERROR, 33}, {ERROR, 33}, },
+ {{ERROR, 34}, {REDUCE, 22}, {ERROR, 34}, {REDUCE, 22}, {REDUCE, 22}, {REDUCE, 22}, {ERROR, 34}, {ERROR, 34}, {ERROR, 34}, {ERROR, 34}, {ERROR, 34}, {ERROR, 34}, {ERROR, 34}, {ERROR, 34}, {ERROR, 34}, {ERROR, 34}, {ERROR, 34}, {ERROR, 34}, {ERROR, 34}, {ERROR, 34}, {ERROR, 34}, {ERROR, 34}, {ERROR, 34}, {ERROR, 34}, {ERROR, 34}, {ERROR, 34}, {ERROR, 34}, {ERROR, 34}, {ERROR, 34}, {ERROR, 34}, {ERROR, 34}, {ERROR, 34}, {ERROR, 34}, {REDUCE, 22}, },
+ {{ERROR, 35}, {ERROR, 35}, {ERROR, 35}, {ERROR, 35}, {ERROR, 35}, {ERROR, 35}, {ERROR, 35}, {ERROR, 35}, {ERROR, 35}, {ERROR, 35}, {REDUCE, 31}, {ERROR, 35}, {ERROR, 35}, {ERROR, 35}, {ERROR, 35}, {ERROR, 35}, {ERROR, 35}, {ERROR, 35}, {ERROR, 35}, {ERROR, 35}, {ERROR, 35}, {ERROR, 35}, {ERROR, 35}, {SHIFT, 55}, {ERROR, 35}, {ERROR, 35}, {ERROR, 35}, {ERROR, 35}, {ERROR, 35}, {ERROR, 35}, {ERROR, 35}, {ERROR, 35}, {ERROR, 35}, {ERROR, 35}, },
+ {{ERROR, 36}, {ERROR, 36}, {ERROR, 36}, {ERROR, 36}, {ERROR, 36}, {ERROR, 36}, {ERROR, 36}, {ERROR, 36}, {ERROR, 36}, {ERROR, 36}, {SHIFT, 58}, {ERROR, 36}, {ERROR, 36}, {ERROR, 36}, {ERROR, 36}, {ERROR, 36}, {ERROR, 36}, {ERROR, 36}, {ERROR, 36}, {ERROR, 36}, {ERROR, 36}, {ERROR, 36}, {ERROR, 36}, {ERROR, 36}, {ERROR, 36}, {ERROR, 36}, {ERROR, 36}, {ERROR, 36}, {ERROR, 36}, {ERROR, 36}, {ERROR, 36}, {ERROR, 36}, {ERROR, 36}, {ERROR, 36}, },
+ {{ERROR, 37}, {ERROR, 37}, {ERROR, 37}, {ERROR, 37}, {ERROR, 37}, {ERROR, 37}, {ERROR, 37}, {ERROR, 37}, {ERROR, 37}, {ERROR, 37}, {REDUCE, 28}, {ERROR, 37}, {ERROR, 37}, {ERROR, 37}, {ERROR, 37}, {ERROR, 37}, {ERROR, 37}, {ERROR, 37}, {ERROR, 37}, {ERROR, 37}, {ERROR, 37}, {ERROR, 37}, {ERROR, 37}, {ERROR, 37}, {ERROR, 37}, {ERROR, 37}, {ERROR, 37}, {ERROR, 37}, {ERROR, 37}, {ERROR, 37}, {ERROR, 37}, {ERROR, 37}, {ERROR, 37}, {ERROR, 37}, },
+ {{ERROR, 38}, {ERROR, 38}, {ERROR, 38}, {ERROR, 38}, {REDUCE, 37}, {REDUCE, 37}, {ERROR, 38}, {ERROR, 38}, {ERROR, 38}, {ERROR, 38}, {ERROR, 38}, {ERROR, 38}, {ERROR, 38}, {ERROR, 38}, {ERROR, 38}, {ERROR, 38}, {SHIFT, 59}, {ERROR, 38}, {ERROR, 38}, {ERROR, 38}, {ERROR, 38}, {ERROR, 38}, {ERROR, 38}, {ERROR, 38}, {ERROR, 38}, {ERROR, 38}, {ERROR, 38}, {REDUCE, 40}, {ERROR, 38}, {ERROR, 38}, {ERROR, 38}, {ERROR, 38}, {ERROR, 38}, {REDUCE, 37}, },
+ {{ERROR, 39}, {ERROR, 39}, {ERROR, 39}, {ERROR, 39}, {SHIFT, 64}, {REDUCE, 49}, {ERROR, 39}, {ERROR, 39}, {ERROR, 39}, {ERROR, 39}, {ERROR, 39}, {ERROR, 39}, {ERROR, 39}, {ERROR, 39}, {ERROR, 39}, {ERROR, 39}, {ERROR, 39}, {ERROR, 39}, {ERROR, 39}, {ERROR, 39}, {ERROR, 39}, {ERROR, 39}, {ERROR, 39}, {ERROR, 39}, {ERROR, 39}, {ERROR, 39}, {ERROR, 39}, {ERROR, 39}, {ERROR, 39}, {ERROR, 39}, {ERROR, 39}, {ERROR, 39}, {ERROR, 39}, {REDUCE, 49}, },
+ {{ERROR, 40}, {ERROR, 40}, {ERROR, 40}, {ERROR, 40}, {REDUCE, 33}, {REDUCE, 33}, {ERROR, 40}, {ERROR, 40}, {ERROR, 40}, {ERROR, 40}, {ERROR, 40}, {ERROR, 40}, {ERROR, 40}, {ERROR, 40}, {ERROR, 40}, {ERROR, 40}, {ERROR, 40}, {ERROR, 40}, {ERROR, 40}, {ERROR, 40}, {ERROR, 40}, {ERROR, 40}, {ERROR, 40}, {ERROR, 40}, {ERROR, 40}, {ERROR, 40}, {ERROR, 40}, {ERROR, 40}, {ERROR, 40}, {ERROR, 40}, {ERROR, 40}, {ERROR, 40}, {ERROR, 40}, {REDUCE, 33}, },
+ {{ERROR, 41}, {ERROR, 41}, {ERROR, 41}, {ERROR, 41}, {ERROR, 41}, {ERROR, 41}, {ERROR, 41}, {ERROR, 41}, {ERROR, 41}, {ERROR, 41}, {ERROR, 41}, {ERROR, 41}, {SHIFT, 41}, {ERROR, 41}, {SHIFT, 42}, {ERROR, 41}, {ERROR, 41}, {ERROR, 41}, {ERROR, 41}, {ERROR, 41}, {ERROR, 41}, {ERROR, 41}, {ERROR, 41}, {ERROR, 41}, {ERROR, 41}, {ERROR, 41}, {ERROR, 41}, {SHIFT, 43}, {SHIFT, 44}, {SHIFT, 45}, {SHIFT, 46}, {SHIFT, 47}, {ERROR, 41}, {ERROR, 41}, },
+ {{ERROR, 42}, {ERROR, 42}, {ERROR, 42}, {ERROR, 42}, {ERROR, 42}, {ERROR, 42}, {ERROR, 42}, {ERROR, 42}, {ERROR, 42}, {ERROR, 42}, {ERROR, 42}, {ERROR, 42}, {SHIFT, 41}, {ERROR, 42}, {SHIFT, 42}, {REDUCE, 60}, {ERROR, 42}, {ERROR, 42}, {ERROR, 42}, {ERROR, 42}, {ERROR, 42}, {ERROR, 42}, {REDUCE, 60}, {ERROR, 42}, {ERROR, 42}, {ERROR, 42}, {ERROR, 42}, {SHIFT, 43}, {SHIFT, 44}, {SHIFT, 45}, {SHIFT, 46}, {SHIFT, 47}, {ERROR, 42}, {ERROR, 42}, },
+ {{ERROR, 43}, {ERROR, 43}, {ERROR, 43}, {ERROR, 43}, {ERROR, 43}, {ERROR, 43}, {ERROR, 43}, {ERROR, 43}, {ERROR, 43}, {ERROR, 43}, {REDUCE, 65}, {ERROR, 43}, {REDUCE, 65}, {REDUCE, 65}, {REDUCE, 65}, {REDUCE, 65}, {ERROR, 43}, {ERROR, 43}, {REDUCE, 65}, {REDUCE, 65}, {REDUCE, 65}, {REDUCE, 65}, {REDUCE, 65}, {ERROR, 43}, {REDUCE, 65}, {ERROR, 43}, {ERROR, 43}, {REDUCE, 65}, {REDUCE, 65}, {REDUCE, 65}, {REDUCE, 65}, {REDUCE, 65}, {ERROR, 43}, {ERROR, 43}, },
+ {{ERROR, 44}, {ERROR, 44}, {ERROR, 44}, {ERROR, 44}, {ERROR, 44}, {ERROR, 44}, {ERROR, 44}, {ERROR, 44}, {ERROR, 44}, {REDUCE, 67}, {REDUCE, 67}, {ERROR, 44}, {REDUCE, 67}, {REDUCE, 67}, {REDUCE, 67}, {REDUCE, 67}, {ERROR, 44}, {ERROR, 44}, {REDUCE, 67}, {REDUCE, 67}, {REDUCE, 67}, {REDUCE, 67}, {REDUCE, 67}, {ERROR, 44}, {REDUCE, 67}, {ERROR, 44}, {ERROR, 44}, {REDUCE, 67}, {REDUCE, 67}, {REDUCE, 67}, {REDUCE, 67}, {REDUCE, 67}, {ERROR, 44}, {ERROR, 44}, },
+ {{ERROR, 45}, {ERROR, 45}, {ERROR, 45}, {ERROR, 45}, {ERROR, 45}, {ERROR, 45}, {ERROR, 45}, {ERROR, 45}, {ERROR, 45}, {REDUCE, 68}, {REDUCE, 68}, {ERROR, 45}, {REDUCE, 68}, {REDUCE, 68}, {REDUCE, 68}, {REDUCE, 68}, {ERROR, 45}, {ERROR, 45}, {REDUCE, 68}, {REDUCE, 68}, {REDUCE, 68}, {REDUCE, 68}, {REDUCE, 68}, {ERROR, 45}, {REDUCE, 68}, {ERROR, 45}, {ERROR, 45}, {REDUCE, 68}, {REDUCE, 68}, {REDUCE, 68}, {REDUCE, 68}, {REDUCE, 68}, {ERROR, 45}, {ERROR, 45}, },
+ {{ERROR, 46}, {ERROR, 46}, {ERROR, 46}, {ERROR, 46}, {ERROR, 46}, {ERROR, 46}, {ERROR, 46}, {ERROR, 46}, {ERROR, 46}, {REDUCE, 69}, {REDUCE, 69}, {ERROR, 46}, {REDUCE, 69}, {REDUCE, 69}, {REDUCE, 69}, {REDUCE, 69}, {ERROR, 46}, {ERROR, 46}, {REDUCE, 69}, {REDUCE, 69}, {REDUCE, 69}, {REDUCE, 69}, {REDUCE, 69}, {ERROR, 46}, {REDUCE, 69}, {ERROR, 46}, {ERROR, 46}, {REDUCE, 69}, {REDUCE, 69}, {REDUCE, 69}, {REDUCE, 69}, {REDUCE, 69}, {ERROR, 46}, {ERROR, 46}, },
+ {{ERROR, 47}, {ERROR, 47}, {ERROR, 47}, {ERROR, 47}, {ERROR, 47}, {ERROR, 47}, {ERROR, 47}, {ERROR, 47}, {ERROR, 47}, {ERROR, 47}, {REDUCE, 64}, {ERROR, 47}, {REDUCE, 64}, {REDUCE, 64}, {REDUCE, 64}, {REDUCE, 64}, {ERROR, 47}, {ERROR, 47}, {REDUCE, 64}, {REDUCE, 64}, {REDUCE, 64}, {REDUCE, 64}, {REDUCE, 64}, {ERROR, 47}, {REDUCE, 64}, {ERROR, 47}, {ERROR, 47}, {REDUCE, 64}, {REDUCE, 64}, {REDUCE, 64}, {REDUCE, 64}, {REDUCE, 64}, {ERROR, 47}, {ERROR, 47}, },
+ {{ERROR, 48}, {ERROR, 48}, {ERROR, 48}, {ERROR, 48}, {ERROR, 48}, {ERROR, 48}, {ERROR, 48}, {ERROR, 48}, {ERROR, 48}, {ERROR, 48}, {SHIFT, 70}, {ERROR, 48}, {ERROR, 48}, {ERROR, 48}, {ERROR, 48}, {ERROR, 48}, {ERROR, 48}, {ERROR, 48}, {ERROR, 48}, {ERROR, 48}, {ERROR, 48}, {ERROR, 48}, {ERROR, 48}, {ERROR, 48}, {ERROR, 48}, {ERROR, 48}, {ERROR, 48}, {ERROR, 48}, {ERROR, 48}, {ERROR, 48}, {ERROR, 48}, {ERROR, 48}, {ERROR, 48}, {ERROR, 48}, },
+ {{ERROR, 49}, {ERROR, 49}, {ERROR, 49}, {ERROR, 49}, {ERROR, 49}, {ERROR, 49}, {ERROR, 49}, {ERROR, 49}, {ERROR, 49}, {ERROR, 49}, {REDUCE, 56}, {ERROR, 49}, {ERROR, 49}, {ERROR, 49}, {ERROR, 49}, {REDUCE, 56}, {ERROR, 49}, {ERROR, 49}, {ERROR, 49}, {ERROR, 49}, {ERROR, 49}, {ERROR, 49}, {SHIFT, 71}, {ERROR, 49}, {REDUCE, 56}, {ERROR, 49}, {ERROR, 49}, {ERROR, 49}, {ERROR, 49}, {ERROR, 49}, {ERROR, 49}, {ERROR, 49}, {ERROR, 49}, {ERROR, 49}, },
+ {{ERROR, 50}, {ERROR, 50}, {ERROR, 50}, {ERROR, 50}, {ERROR, 50}, {ERROR, 50}, {ERROR, 50}, {ERROR, 50}, {ERROR, 50}, {ERROR, 50}, {REDUCE, 58}, {ERROR, 50}, {ERROR, 50}, {ERROR, 50}, {ERROR, 50}, {REDUCE, 58}, {ERROR, 50}, {ERROR, 50}, {ERROR, 50}, {ERROR, 50}, {ERROR, 50}, {ERROR, 50}, {REDUCE, 58}, {ERROR, 50}, {REDUCE, 58}, {ERROR, 50}, {ERROR, 50}, {ERROR, 50}, {ERROR, 50}, {ERROR, 50}, {ERROR, 50}, {ERROR, 50}, {ERROR, 50}, {ERROR, 50}, },
+ {{ERROR, 51}, {ERROR, 51}, {ERROR, 51}, {ERROR, 51}, {ERROR, 51}, {ERROR, 51}, {ERROR, 51}, {ERROR, 51}, {ERROR, 51}, {ERROR, 51}, {REDUCE, 60}, {ERROR, 51}, {SHIFT, 41}, {ERROR, 51}, {SHIFT, 42}, {REDUCE, 60}, {ERROR, 51}, {ERROR, 51}, {ERROR, 51}, {ERROR, 51}, {ERROR, 51}, {ERROR, 51}, {REDUCE, 60}, {ERROR, 51}, {REDUCE, 60}, {ERROR, 51}, {ERROR, 51}, {SHIFT, 43}, {SHIFT, 44}, {SHIFT, 45}, {SHIFT, 46}, {SHIFT, 47}, {ERROR, 51}, {ERROR, 51}, },
+ {{ERROR, 52}, {ERROR, 52}, {ERROR, 52}, {ERROR, 52}, {ERROR, 52}, {ERROR, 52}, {ERROR, 52}, {ERROR, 52}, {ERROR, 52}, {ERROR, 52}, {REDUCE, 73}, {ERROR, 52}, {REDUCE, 73}, {ERROR, 52}, {REDUCE, 73}, {REDUCE, 73}, {ERROR, 52}, {ERROR, 52}, {SHIFT, 75}, {ERROR, 52}, {SHIFT, 76}, {SHIFT, 77}, {REDUCE, 73}, {ERROR, 52}, {REDUCE, 73}, {ERROR, 52}, {ERROR, 52}, {REDUCE, 73}, {REDUCE, 73}, {REDUCE, 73}, {REDUCE, 73}, {REDUCE, 73}, {ERROR, 52}, {ERROR, 52}, },
+ {{ERROR, 53}, {ERROR, 53}, {ERROR, 53}, {ERROR, 53}, {ERROR, 53}, {ERROR, 53}, {ERROR, 53}, {ERROR, 53}, {ERROR, 53}, {ERROR, 53}, {REDUCE, 62}, {ERROR, 53}, {REDUCE, 62}, {REDUCE, 62}, {REDUCE, 62}, {REDUCE, 62}, {ERROR, 53}, {ERROR, 53}, {REDUCE, 62}, {ERROR, 53}, {REDUCE, 62}, {REDUCE, 62}, {REDUCE, 62}, {ERROR, 53}, {REDUCE, 62}, {ERROR, 53}, {ERROR, 53}, {REDUCE, 62}, {REDUCE, 62}, {REDUCE, 62}, {REDUCE, 62}, {REDUCE, 62}, {ERROR, 53}, {ERROR, 53}, },
+ {{ERROR, 54}, {ERROR, 54}, {ERROR, 54}, {ERROR, 54}, {ERROR, 54}, {ERROR, 54}, {ERROR, 54}, {ERROR, 54}, {ERROR, 54}, {ERROR, 54}, {REDUCE, 63}, {ERROR, 54}, {REDUCE, 63}, {REDUCE, 63}, {REDUCE, 63}, {REDUCE, 63}, {ERROR, 54}, {ERROR, 54}, {REDUCE, 63}, {REDUCE, 63}, {REDUCE, 63}, {REDUCE, 63}, {REDUCE, 63}, {ERROR, 54}, {REDUCE, 63}, {ERROR, 54}, {ERROR, 54}, {REDUCE, 63}, {REDUCE, 63}, {REDUCE, 63}, {REDUCE, 63}, {REDUCE, 63}, {ERROR, 54}, {ERROR, 54}, },
+ {{ERROR, 55}, {ERROR, 55}, {ERROR, 55}, {ERROR, 55}, {ERROR, 55}, {ERROR, 55}, {ERROR, 55}, {ERROR, 55}, {ERROR, 55}, {ERROR, 55}, {ERROR, 55}, {ERROR, 55}, {ERROR, 55}, {ERROR, 55}, {ERROR, 55}, {ERROR, 55}, {ERROR, 55}, {ERROR, 55}, {ERROR, 55}, {ERROR, 55}, {ERROR, 55}, {ERROR, 55}, {ERROR, 55}, {ERROR, 55}, {ERROR, 55}, {ERROR, 55}, {ERROR, 55}, {SHIFT, 80}, {ERROR, 55}, {ERROR, 55}, {ERROR, 55}, {ERROR, 55}, {ERROR, 55}, {ERROR, 55}, },
+ {{ERROR, 56}, {ERROR, 56}, {ERROR, 56}, {ERROR, 56}, {ERROR, 56}, {ERROR, 56}, {ERROR, 56}, {ERROR, 56}, {ERROR, 56}, {ERROR, 56}, {REDUCE, 29}, {ERROR, 56}, {ERROR, 56}, {ERROR, 56}, {ERROR, 56}, {ERROR, 56}, {ERROR, 56}, {ERROR, 56}, {ERROR, 56}, {ERROR, 56}, {ERROR, 56}, {ERROR, 56}, {ERROR, 56}, {ERROR, 56}, {ERROR, 56}, {ERROR, 56}, {ERROR, 56}, {ERROR, 56}, {ERROR, 56}, {ERROR, 56}, {ERROR, 56}, {ERROR, 56}, {ERROR, 56}, {ERROR, 56}, },
+ {{ERROR, 57}, {ERROR, 57}, {ERROR, 57}, {ERROR, 57}, {ERROR, 57}, {ERROR, 57}, {ERROR, 57}, {ERROR, 57}, {ERROR, 57}, {ERROR, 57}, {REDUCE, 31}, {ERROR, 57}, {ERROR, 57}, {ERROR, 57}, {ERROR, 57}, {ERROR, 57}, {ERROR, 57}, {ERROR, 57}, {ERROR, 57}, {ERROR, 57}, {ERROR, 57}, {ERROR, 57}, {ERROR, 57}, {SHIFT, 55}, {ERROR, 57}, {ERROR, 57}, {ERROR, 57}, {ERROR, 57}, {ERROR, 57}, {ERROR, 57}, {ERROR, 57}, {ERROR, 57}, {ERROR, 57}, {ERROR, 57}, },
+ {{ERROR, 58}, {ERROR, 58}, {ERROR, 58}, {REDUCE, 27}, {REDUCE, 27}, {REDUCE, 27}, {ERROR, 58}, {ERROR, 58}, {ERROR, 58}, {ERROR, 58}, {ERROR, 58}, {ERROR, 58}, {ERROR, 58}, {ERROR, 58}, {ERROR, 58}, {ERROR, 58}, {ERROR, 58}, {ERROR, 58}, {ERROR, 58}, {ERROR, 58}, {ERROR, 58}, {ERROR, 58}, {ERROR, 58}, {ERROR, 58}, {ERROR, 58}, {ERROR, 58}, {ERROR, 58}, {ERROR, 58}, {ERROR, 58}, {ERROR, 58}, {ERROR, 58}, {ERROR, 58}, {ERROR, 58}, {REDUCE, 27}, },
+ {{ERROR, 59}, {ERROR, 59}, {ERROR, 59}, {ERROR, 59}, {ERROR, 59}, {ERROR, 59}, {ERROR, 59}, {ERROR, 59}, {ERROR, 59}, {ERROR, 59}, {ERROR, 59}, {ERROR, 59}, {ERROR, 59}, {ERROR, 59}, {ERROR, 59}, {ERROR, 59}, {ERROR, 59}, {ERROR, 59}, {ERROR, 59}, {ERROR, 59}, {ERROR, 59}, {ERROR, 59}, {ERROR, 59}, {ERROR, 59}, {ERROR, 59}, {ERROR, 59}, {ERROR, 59}, {SHIFT, 82}, {ERROR, 59}, {ERROR, 59}, {ERROR, 59}, {ERROR, 59}, {ERROR, 59}, {ERROR, 59}, },
+ {{ERROR, 60}, {ERROR, 60}, {ERROR, 60}, {ERROR, 60}, {REDUCE, 35}, {REDUCE, 35}, {ERROR, 60}, {ERROR, 60}, {ERROR, 60}, {ERROR, 60}, {ERROR, 60}, {ERROR, 60}, {ERROR, 60}, {ERROR, 60}, {ERROR, 60}, {ERROR, 60}, {ERROR, 60}, {ERROR, 60}, {ERROR, 60}, {ERROR, 60}, {ERROR, 60}, {ERROR, 60}, {ERROR, 60}, {ERROR, 60}, {ERROR, 60}, {ERROR, 60}, {ERROR, 60}, {ERROR, 60}, {ERROR, 60}, {ERROR, 60}, {ERROR, 60}, {ERROR, 60}, {ERROR, 60}, {REDUCE, 35}, },
+ {{ERROR, 61}, {ERROR, 61}, {ERROR, 61}, {ERROR, 61}, {REDUCE, 37}, {REDUCE, 37}, {ERROR, 61}, {ERROR, 61}, {ERROR, 61}, {ERROR, 61}, {ERROR, 61}, {ERROR, 61}, {ERROR, 61}, {ERROR, 61}, {ERROR, 61}, {ERROR, 61}, {SHIFT, 59}, {ERROR, 61}, {ERROR, 61}, {ERROR, 61}, {ERROR, 61}, {ERROR, 61}, {ERROR, 61}, {ERROR, 61}, {ERROR, 61}, {ERROR, 61}, {ERROR, 61}, {REDUCE, 40}, {ERROR, 61}, {ERROR, 61}, {ERROR, 61}, {ERROR, 61}, {ERROR, 61}, {REDUCE, 37}, },
+ {{ERROR, 62}, {ERROR, 62}, {ERROR, 62}, {ERROR, 62}, {ERROR, 62}, {ERROR, 62}, {ERROR, 62}, {ERROR, 62}, {ERROR, 62}, {ERROR, 62}, {ERROR, 62}, {ERROR, 62}, {ERROR, 62}, {ERROR, 62}, {ERROR, 62}, {ERROR, 62}, {ERROR, 62}, {ERROR, 62}, {ERROR, 62}, {ERROR, 62}, {ERROR, 62}, {ERROR, 62}, {ERROR, 62}, {ERROR, 62}, {ERROR, 62}, {ERROR, 62}, {ERROR, 62}, {SHIFT, 84}, {ERROR, 62}, {ERROR, 62}, {ERROR, 62}, {ERROR, 62}, {ERROR, 62}, {ERROR, 62}, },
+ {{ERROR, 63}, {ERROR, 63}, {ERROR, 63}, {ERROR, 63}, {ERROR, 63}, {ERROR, 63}, {ERROR, 63}, {ERROR, 63}, {ERROR, 63}, {ERROR, 63}, {ERROR, 63}, {ERROR, 63}, {ERROR, 63}, {ERROR, 63}, {ERROR, 63}, {ERROR, 63}, {ERROR, 63}, {ERROR, 63}, {ERROR, 63}, {ERROR, 63}, {ERROR, 63}, {ERROR, 63}, {ERROR, 63}, {ERROR, 63}, {ERROR, 63}, {ERROR, 63}, {ERROR, 63}, {REDUCE, 39}, {ERROR, 63}, {ERROR, 63}, {ERROR, 63}, {ERROR, 63}, {ERROR, 63}, {ERROR, 63}, },
+ {{ERROR, 64}, {ERROR, 64}, {ERROR, 64}, {SHIFT, 85}, {ERROR, 64}, {ERROR, 64}, {ERROR, 64}, {ERROR, 64}, {ERROR, 64}, {ERROR, 64}, {ERROR, 64}, {ERROR, 64}, {ERROR, 64}, {ERROR, 64}, {ERROR, 64}, {ERROR, 64}, {ERROR, 64}, {ERROR, 64}, {ERROR, 64}, {ERROR, 64}, {ERROR, 64}, {ERROR, 64}, {ERROR, 64}, {ERROR, 64}, {ERROR, 64}, {ERROR, 64}, {ERROR, 64}, {ERROR, 64}, {ERROR, 64}, {ERROR, 64}, {ERROR, 64}, {ERROR, 64}, {ERROR, 64}, {ERROR, 64}, },
+ {{ERROR, 65}, {ERROR, 65}, {ERROR, 65}, {ERROR, 65}, {ERROR, 65}, {SHIFT, 86}, {ERROR, 65}, {ERROR, 65}, {ERROR, 65}, {ERROR, 65}, {ERROR, 65}, {ERROR, 65}, {ERROR, 65}, {ERROR, 65}, {ERROR, 65}, {ERROR, 65}, {ERROR, 65}, {ERROR, 65}, {ERROR, 65}, {ERROR, 65}, {ERROR, 65}, {ERROR, 65}, {ERROR, 65}, {ERROR, 65}, {ERROR, 65}, {ERROR, 65}, {ERROR, 65}, {ERROR, 65}, {ERROR, 65}, {ERROR, 65}, {ERROR, 65}, {ERROR, 65}, {ERROR, 65}, {REDUCE, 80}, },
+ {{ERROR, 66}, {ERROR, 66}, {ERROR, 66}, {ERROR, 66}, {ERROR, 66}, {REDUCE, 48}, {ERROR, 66}, {ERROR, 66}, {ERROR, 66}, {ERROR, 66}, {ERROR, 66}, {ERROR, 66}, {ERROR, 66}, {ERROR, 66}, {ERROR, 66}, {ERROR, 66}, {ERROR, 66}, {ERROR, 66}, {ERROR, 66}, {ERROR, 66}, {ERROR, 66}, {ERROR, 66}, {ERROR, 66}, {ERROR, 66}, {ERROR, 66}, {ERROR, 66}, {ERROR, 66}, {ERROR, 66}, {ERROR, 66}, {ERROR, 66}, {ERROR, 66}, {ERROR, 66}, {ERROR, 66}, {REDUCE, 48}, },
+ {{ERROR, 67}, {ERROR, 67}, {ERROR, 67}, {ERROR, 67}, {ERROR, 67}, {ERROR, 67}, {ERROR, 67}, {ERROR, 67}, {ERROR, 67}, {ERROR, 67}, {ERROR, 67}, {ERROR, 67}, {ERROR, 67}, {ERROR, 67}, {ERROR, 67}, {ERROR, 67}, {ERROR, 67}, {ERROR, 67}, {SHIFT, 89}, {SHIFT, 90}, {ERROR, 67}, {ERROR, 67}, {ERROR, 67}, {ERROR, 67}, {ERROR, 67}, {ERROR, 67}, {ERROR, 67}, {ERROR, 67}, {ERROR, 67}, {ERROR, 67}, {ERROR, 67}, {ERROR, 67}, {ERROR, 67}, {ERROR, 67}, },
+ {{ERROR, 68}, {ERROR, 68}, {ERROR, 68}, {ERROR, 68}, {ERROR, 68}, {ERROR, 68}, {ERROR, 68}, {ERROR, 68}, {ERROR, 68}, {SHIFT, 92}, {ERROR, 68}, {ERROR, 68}, {ERROR, 68}, {ERROR, 68}, {ERROR, 68}, {ERROR, 68}, {ERROR, 68}, {ERROR, 68}, {REDUCE, 62}, {REDUCE, 62}, {ERROR, 68}, {ERROR, 68}, {ERROR, 68}, {ERROR, 68}, {ERROR, 68}, {ERROR, 68}, {ERROR, 68}, {ERROR, 68}, {ERROR, 68}, {ERROR, 68}, {ERROR, 68}, {ERROR, 68}, {ERROR, 68}, {ERROR, 68}, },
+ {{ERROR, 69}, {ERROR, 69}, {ERROR, 69}, {ERROR, 69}, {ERROR, 69}, {ERROR, 69}, {ERROR, 69}, {ERROR, 69}, {ERROR, 69}, {ERROR, 69}, {ERROR, 69}, {ERROR, 69}, {ERROR, 69}, {ERROR, 69}, {ERROR, 69}, {SHIFT, 93}, {ERROR, 69}, {ERROR, 69}, {ERROR, 69}, {ERROR, 69}, {ERROR, 69}, {ERROR, 69}, {ERROR, 69}, {ERROR, 69}, {ERROR, 69}, {ERROR, 69}, {ERROR, 69}, {ERROR, 69}, {ERROR, 69}, {ERROR, 69}, {ERROR, 69}, {ERROR, 69}, {ERROR, 69}, {ERROR, 69}, },
+ {{ERROR, 70}, {REDUCE, 24}, {ERROR, 70}, {REDUCE, 24}, {REDUCE, 24}, {REDUCE, 24}, {ERROR, 70}, {ERROR, 70}, {ERROR, 70}, {ERROR, 70}, {ERROR, 70}, {ERROR, 70}, {ERROR, 70}, {ERROR, 70}, {ERROR, 70}, {ERROR, 70}, {ERROR, 70}, {ERROR, 70}, {ERROR, 70}, {ERROR, 70}, {ERROR, 70}, {ERROR, 70}, {ERROR, 70}, {ERROR, 70}, {ERROR, 70}, {ERROR, 70}, {ERROR, 70}, {REDUCE, 24}, {ERROR, 70}, {ERROR, 70}, {ERROR, 70}, {ERROR, 70}, {ERROR, 70}, {REDUCE, 24}, },
+ {{ERROR, 71}, {ERROR, 71}, {ERROR, 71}, {ERROR, 71}, {ERROR, 71}, {ERROR, 71}, {ERROR, 71}, {ERROR, 71}, {ERROR, 71}, {ERROR, 71}, {REDUCE, 60}, {ERROR, 71}, {SHIFT, 41}, {ERROR, 71}, {SHIFT, 42}, {REDUCE, 60}, {ERROR, 71}, {ERROR, 71}, {ERROR, 71}, {ERROR, 71}, {ERROR, 71}, {ERROR, 71}, {REDUCE, 60}, {ERROR, 71}, {REDUCE, 60}, {ERROR, 71}, {ERROR, 71}, {SHIFT, 43}, {SHIFT, 44}, {SHIFT, 45}, {SHIFT, 46}, {SHIFT, 47}, {ERROR, 71}, {ERROR, 71}, },
+ {{ERROR, 72}, {ERROR, 72}, {ERROR, 72}, {ERROR, 72}, {ERROR, 72}, {ERROR, 72}, {ERROR, 72}, {ERROR, 72}, {ERROR, 72}, {ERROR, 72}, {REDUCE, 54}, {ERROR, 72}, {ERROR, 72}, {ERROR, 72}, {ERROR, 72}, {REDUCE, 54}, {ERROR, 72}, {ERROR, 72}, {ERROR, 72}, {ERROR, 72}, {ERROR, 72}, {ERROR, 72}, {ERROR, 72}, {ERROR, 72}, {REDUCE, 54}, {ERROR, 72}, {ERROR, 72}, {ERROR, 72}, {ERROR, 72}, {ERROR, 72}, {ERROR, 72}, {ERROR, 72}, {ERROR, 72}, {ERROR, 72}, },
+ {{ERROR, 73}, {ERROR, 73}, {ERROR, 73}, {ERROR, 73}, {ERROR, 73}, {ERROR, 73}, {ERROR, 73}, {ERROR, 73}, {ERROR, 73}, {ERROR, 73}, {REDUCE, 56}, {ERROR, 73}, {ERROR, 73}, {ERROR, 73}, {ERROR, 73}, {REDUCE, 56}, {ERROR, 73}, {ERROR, 73}, {ERROR, 73}, {ERROR, 73}, {ERROR, 73}, {ERROR, 73}, {SHIFT, 71}, {ERROR, 73}, {REDUCE, 56}, {ERROR, 73}, {ERROR, 73}, {ERROR, 73}, {ERROR, 73}, {ERROR, 73}, {ERROR, 73}, {ERROR, 73}, {ERROR, 73}, {ERROR, 73}, },
+ {{ERROR, 74}, {ERROR, 74}, {ERROR, 74}, {ERROR, 74}, {ERROR, 74}, {ERROR, 74}, {ERROR, 74}, {ERROR, 74}, {ERROR, 74}, {ERROR, 74}, {REDUCE, 59}, {ERROR, 74}, {ERROR, 74}, {ERROR, 74}, {ERROR, 74}, {REDUCE, 59}, {ERROR, 74}, {ERROR, 74}, {ERROR, 74}, {ERROR, 74}, {ERROR, 74}, {ERROR, 74}, {REDUCE, 59}, {ERROR, 74}, {REDUCE, 59}, {ERROR, 74}, {ERROR, 74}, {ERROR, 74}, {ERROR, 74}, {ERROR, 74}, {ERROR, 74}, {ERROR, 74}, {ERROR, 74}, {ERROR, 74}, },
+ {{ERROR, 75}, {ERROR, 75}, {ERROR, 75}, {ERROR, 75}, {ERROR, 75}, {ERROR, 75}, {REDUCE, 76}, {REDUCE, 76}, {ERROR, 75}, {ERROR, 75}, {REDUCE, 76}, {ERROR, 75}, {REDUCE, 76}, {ERROR, 75}, {REDUCE, 76}, {REDUCE, 76}, {ERROR, 75}, {ERROR, 75}, {ERROR, 75}, {ERROR, 75}, {ERROR, 75}, {ERROR, 75}, {REDUCE, 76}, {ERROR, 75}, {REDUCE, 76}, {ERROR, 75}, {ERROR, 75}, {REDUCE, 76}, {REDUCE, 76}, {REDUCE, 76}, {REDUCE, 76}, {REDUCE, 76}, {ERROR, 75}, {ERROR, 75}, },
+ {{ERROR, 76}, {ERROR, 76}, {ERROR, 76}, {ERROR, 76}, {ERROR, 76}, {ERROR, 76}, {REDUCE, 75}, {REDUCE, 75}, {ERROR, 76}, {ERROR, 76}, {REDUCE, 75}, {ERROR, 76}, {REDUCE, 75}, {ERROR, 76}, {REDUCE, 75}, {REDUCE, 75}, {ERROR, 76}, {ERROR, 76}, {ERROR, 76}, {ERROR, 76}, {ERROR, 76}, {ERROR, 76}, {REDUCE, 75}, {ERROR, 76}, {REDUCE, 75}, {ERROR, 76}, {ERROR, 76}, {REDUCE, 75}, {REDUCE, 75}, {REDUCE, 75}, {REDUCE, 75}, {REDUCE, 75}, {ERROR, 76}, {ERROR, 76}, },
+ {{ERROR, 77}, {ERROR, 77}, {ERROR, 77}, {ERROR, 77}, {ERROR, 77}, {ERROR, 77}, {REDUCE, 74}, {REDUCE, 74}, {ERROR, 77}, {ERROR, 77}, {REDUCE, 74}, {ERROR, 77}, {REDUCE, 74}, {ERROR, 77}, {REDUCE, 74}, {REDUCE, 74}, {ERROR, 77}, {ERROR, 77}, {ERROR, 77}, {ERROR, 77}, {ERROR, 77}, {ERROR, 77}, {REDUCE, 74}, {ERROR, 77}, {REDUCE, 74}, {ERROR, 77}, {ERROR, 77}, {REDUCE, 74}, {REDUCE, 74}, {REDUCE, 74}, {REDUCE, 74}, {REDUCE, 74}, {ERROR, 77}, {ERROR, 77}, },
+ {{ERROR, 78}, {ERROR, 78}, {ERROR, 78}, {ERROR, 78}, {ERROR, 78}, {ERROR, 78}, {ERROR, 78}, {ERROR, 78}, {ERROR, 78}, {ERROR, 78}, {REDUCE, 61}, {ERROR, 78}, {REDUCE, 61}, {ERROR, 78}, {REDUCE, 61}, {REDUCE, 61}, {ERROR, 78}, {ERROR, 78}, {ERROR, 78}, {ERROR, 78}, {ERROR, 78}, {ERROR, 78}, {REDUCE, 61}, {ERROR, 78}, {REDUCE, 61}, {ERROR, 78}, {ERROR, 78}, {REDUCE, 61}, {REDUCE, 61}, {REDUCE, 61}, {REDUCE, 61}, {REDUCE, 61}, {ERROR, 78}, {ERROR, 78}, },
+ {{ERROR, 79}, {ERROR, 79}, {ERROR, 79}, {ERROR, 79}, {ERROR, 79}, {ERROR, 79}, {REDUCE, 72}, {REDUCE, 72}, {ERROR, 79}, {ERROR, 79}, {REDUCE, 72}, {ERROR, 79}, {REDUCE, 72}, {ERROR, 79}, {REDUCE, 72}, {REDUCE, 72}, {ERROR, 79}, {ERROR, 79}, {ERROR, 79}, {ERROR, 79}, {ERROR, 79}, {ERROR, 79}, {REDUCE, 72}, {ERROR, 79}, {REDUCE, 72}, {ERROR, 79}, {ERROR, 79}, {REDUCE, 72}, {REDUCE, 72}, {REDUCE, 72}, {REDUCE, 72}, {REDUCE, 72}, {ERROR, 79}, {ERROR, 79}, },
+ {{ERROR, 80}, {ERROR, 80}, {ERROR, 80}, {ERROR, 80}, {ERROR, 80}, {ERROR, 80}, {ERROR, 80}, {ERROR, 80}, {ERROR, 80}, {ERROR, 80}, {REDUCE, 32}, {ERROR, 80}, {ERROR, 80}, {ERROR, 80}, {ERROR, 80}, {ERROR, 80}, {ERROR, 80}, {ERROR, 80}, {ERROR, 80}, {ERROR, 80}, {ERROR, 80}, {ERROR, 80}, {ERROR, 80}, {REDUCE, 32}, {ERROR, 80}, {ERROR, 80}, {ERROR, 80}, {ERROR, 80}, {ERROR, 80}, {ERROR, 80}, {ERROR, 80}, {ERROR, 80}, {ERROR, 80}, {ERROR, 80}, },
+ {{ERROR, 81}, {ERROR, 81}, {ERROR, 81}, {ERROR, 81}, {ERROR, 81}, {ERROR, 81}, {ERROR, 81}, {ERROR, 81}, {ERROR, 81}, {ERROR, 81}, {REDUCE, 30}, {ERROR, 81}, {ERROR, 81}, {ERROR, 81}, {ERROR, 81}, {ERROR, 81}, {ERROR, 81}, {ERROR, 81}, {ERROR, 81}, {ERROR, 81}, {ERROR, 81}, {ERROR, 81}, {ERROR, 81}, {ERROR, 81}, {ERROR, 81}, {ERROR, 81}, {ERROR, 81}, {ERROR, 81}, {ERROR, 81}, {ERROR, 81}, {ERROR, 81}, {ERROR, 81}, {ERROR, 81}, {ERROR, 81}, },
+ {{ERROR, 82}, {ERROR, 82}, {ERROR, 82}, {ERROR, 82}, {ERROR, 82}, {ERROR, 82}, {ERROR, 82}, {ERROR, 82}, {ERROR, 82}, {ERROR, 82}, {ERROR, 82}, {ERROR, 82}, {ERROR, 82}, {ERROR, 82}, {ERROR, 82}, {ERROR, 82}, {ERROR, 82}, {REDUCE, 46}, {ERROR, 82}, {ERROR, 82}, {ERROR, 82}, {ERROR, 82}, {ERROR, 82}, {REDUCE, 46}, {ERROR, 82}, {SHIFT, 96}, {ERROR, 82}, {ERROR, 82}, {ERROR, 82}, {ERROR, 82}, {ERROR, 82}, {ERROR, 82}, {ERROR, 82}, {ERROR, 82}, },
+ {{ERROR, 83}, {ERROR, 83}, {ERROR, 83}, {ERROR, 83}, {REDUCE, 36}, {REDUCE, 36}, {ERROR, 83}, {ERROR, 83}, {ERROR, 83}, {ERROR, 83}, {ERROR, 83}, {ERROR, 83}, {ERROR, 83}, {ERROR, 83}, {ERROR, 83}, {ERROR, 83}, {ERROR, 83}, {ERROR, 83}, {ERROR, 83}, {ERROR, 83}, {ERROR, 83}, {ERROR, 83}, {ERROR, 83}, {ERROR, 83}, {ERROR, 83}, {ERROR, 83}, {ERROR, 83}, {ERROR, 83}, {ERROR, 83}, {ERROR, 83}, {ERROR, 83}, {ERROR, 83}, {ERROR, 83}, {REDUCE, 36}, },
+ {{ERROR, 84}, {ERROR, 84}, {ERROR, 84}, {ERROR, 84}, {ERROR, 84}, {ERROR, 84}, {ERROR, 84}, {ERROR, 84}, {ERROR, 84}, {ERROR, 84}, {ERROR, 84}, {SHIFT, 99}, {ERROR, 84}, {ERROR, 84}, {ERROR, 84}, {ERROR, 84}, {ERROR, 84}, {ERROR, 84}, {ERROR, 84}, {ERROR, 84}, {ERROR, 84}, {ERROR, 84}, {ERROR, 84}, {ERROR, 84}, {ERROR, 84}, {ERROR, 84}, {ERROR, 84}, {ERROR, 84}, {ERROR, 84}, {ERROR, 84}, {ERROR, 84}, {ERROR, 84}, {ERROR, 84}, {ERROR, 84}, },
+ {{ERROR, 85}, {ERROR, 85}, {ERROR, 85}, {ERROR, 85}, {ERROR, 85}, {ERROR, 85}, {ERROR, 85}, {ERROR, 85}, {ERROR, 85}, {ERROR, 85}, {ERROR, 85}, {ERROR, 85}, {ERROR, 85}, {ERROR, 85}, {ERROR, 85}, {ERROR, 85}, {ERROR, 85}, {ERROR, 85}, {ERROR, 85}, {ERROR, 85}, {ERROR, 85}, {ERROR, 85}, {ERROR, 85}, {ERROR, 85}, {ERROR, 85}, {ERROR, 85}, {ERROR, 85}, {SHIFT, 35}, {ERROR, 85}, {ERROR, 85}, {ERROR, 85}, {ERROR, 85}, {ERROR, 85}, {ERROR, 85}, },
+ {{ERROR, 86}, {ERROR, 86}, {ERROR, 86}, {ERROR, 86}, {ERROR, 86}, {ERROR, 86}, {ERROR, 86}, {ERROR, 86}, {ERROR, 86}, {ERROR, 86}, {ERROR, 86}, {ERROR, 86}, {ERROR, 86}, {ERROR, 86}, {ERROR, 86}, {ERROR, 86}, {ERROR, 86}, {ERROR, 86}, {ERROR, 86}, {ERROR, 86}, {ERROR, 86}, {ERROR, 86}, {ERROR, 86}, {ERROR, 86}, {ERROR, 86}, {ERROR, 86}, {ERROR, 86}, {SHIFT, 101}, {ERROR, 86}, {ERROR, 86}, {ERROR, 86}, {ERROR, 86}, {ERROR, 86}, {REDUCE, 83}, },
+ {{ERROR, 87}, {ERROR, 87}, {ERROR, 87}, {ERROR, 87}, {ERROR, 87}, {ERROR, 87}, {ERROR, 87}, {ERROR, 87}, {ERROR, 87}, {ERROR, 87}, {ERROR, 87}, {ERROR, 87}, {ERROR, 87}, {ERROR, 87}, {ERROR, 87}, {ERROR, 87}, {ERROR, 87}, {ERROR, 87}, {ERROR, 87}, {ERROR, 87}, {ERROR, 87}, {ERROR, 87}, {ERROR, 87}, {ERROR, 87}, {ERROR, 87}, {ERROR, 87}, {ERROR, 87}, {ERROR, 87}, {ERROR, 87}, {ERROR, 87}, {ERROR, 87}, {ERROR, 87}, {ERROR, 87}, {REDUCE, 0}, },
+ {{ERROR, 88}, {ERROR, 88}, {ERROR, 88}, {ERROR, 88}, {ERROR, 88}, {ERROR, 88}, {ERROR, 88}, {ERROR, 88}, {ERROR, 88}, {ERROR, 88}, {ERROR, 88}, {ERROR, 88}, {ERROR, 88}, {ERROR, 88}, {ERROR, 88}, {ERROR, 88}, {ERROR, 88}, {ERROR, 88}, {ERROR, 88}, {ERROR, 88}, {ERROR, 88}, {ERROR, 88}, {ERROR, 88}, {ERROR, 88}, {ERROR, 88}, {ERROR, 88}, {ERROR, 88}, {ERROR, 88}, {ERROR, 88}, {ERROR, 88}, {ERROR, 88}, {ERROR, 88}, {ERROR, 88}, {REDUCE, 79}, },
+ {{ERROR, 89}, {ERROR, 89}, {ERROR, 89}, {ERROR, 89}, {ERROR, 89}, {ERROR, 89}, {ERROR, 89}, {ERROR, 89}, {ERROR, 89}, {ERROR, 89}, {ERROR, 89}, {ERROR, 89}, {REDUCE, 77}, {ERROR, 89}, {REDUCE, 77}, {ERROR, 89}, {ERROR, 89}, {ERROR, 89}, {ERROR, 89}, {ERROR, 89}, {ERROR, 89}, {ERROR, 89}, {ERROR, 89}, {ERROR, 89}, {ERROR, 89}, {ERROR, 89}, {ERROR, 89}, {REDUCE, 77}, {REDUCE, 77}, {REDUCE, 77}, {REDUCE, 77}, {REDUCE, 77}, {ERROR, 89}, {ERROR, 89}, },
+ {{ERROR, 90}, {ERROR, 90}, {ERROR, 90}, {ERROR, 90}, {ERROR, 90}, {ERROR, 90}, {ERROR, 90}, {ERROR, 90}, {ERROR, 90}, {ERROR, 90}, {ERROR, 90}, {ERROR, 90}, {REDUCE, 78}, {ERROR, 90}, {REDUCE, 78}, {ERROR, 90}, {ERROR, 90}, {ERROR, 90}, {ERROR, 90}, {ERROR, 90}, {ERROR, 90}, {ERROR, 90}, {ERROR, 90}, {ERROR, 90}, {ERROR, 90}, {ERROR, 90}, {ERROR, 90}, {REDUCE, 78}, {REDUCE, 78}, {REDUCE, 78}, {REDUCE, 78}, {REDUCE, 78}, {ERROR, 90}, {ERROR, 90}, },
+ {{ERROR, 91}, {ERROR, 91}, {ERROR, 91}, {ERROR, 91}, {ERROR, 91}, {ERROR, 91}, {ERROR, 91}, {ERROR, 91}, {ERROR, 91}, {ERROR, 91}, {ERROR, 91}, {ERROR, 91}, {SHIFT, 41}, {ERROR, 91}, {SHIFT, 42}, {ERROR, 91}, {ERROR, 91}, {ERROR, 91}, {ERROR, 91}, {ERROR, 91}, {ERROR, 91}, {ERROR, 91}, {ERROR, 91}, {ERROR, 91}, {ERROR, 91}, {ERROR, 91}, {ERROR, 91}, {SHIFT, 43}, {SHIFT, 44}, {SHIFT, 45}, {SHIFT, 46}, {SHIFT, 47}, {ERROR, 91}, {ERROR, 91}, },
+ {{ERROR, 92}, {ERROR, 92}, {ERROR, 92}, {ERROR, 92}, {ERROR, 92}, {ERROR, 92}, {ERROR, 92}, {ERROR, 92}, {ERROR, 92}, {ERROR, 92}, {ERROR, 92}, {ERROR, 92}, {ERROR, 92}, {ERROR, 92}, {ERROR, 92}, {ERROR, 92}, {ERROR, 92}, {ERROR, 92}, {ERROR, 92}, {ERROR, 92}, {ERROR, 92}, {ERROR, 92}, {ERROR, 92}, {ERROR, 92}, {ERROR, 92}, {ERROR, 92}, {ERROR, 92}, {ERROR, 92}, {SHIFT, 44}, {SHIFT, 45}, {SHIFT, 46}, {ERROR, 92}, {ERROR, 92}, {ERROR, 92}, },
+ {{ERROR, 93}, {ERROR, 93}, {ERROR, 93}, {ERROR, 93}, {ERROR, 93}, {ERROR, 93}, {ERROR, 93}, {ERROR, 93}, {ERROR, 93}, {ERROR, 93}, {REDUCE, 66}, {ERROR, 93}, {REDUCE, 66}, {REDUCE, 66}, {REDUCE, 66}, {REDUCE, 66}, {ERROR, 93}, {ERROR, 93}, {REDUCE, 66}, {REDUCE, 66}, {REDUCE, 66}, {REDUCE, 66}, {REDUCE, 66}, {ERROR, 93}, {REDUCE, 66}, {ERROR, 93}, {ERROR, 93}, {REDUCE, 66}, {REDUCE, 66}, {REDUCE, 66}, {REDUCE, 66}, {REDUCE, 66}, {ERROR, 93}, {ERROR, 93}, },
+ {{ERROR, 94}, {ERROR, 94}, {ERROR, 94}, {ERROR, 94}, {ERROR, 94}, {ERROR, 94}, {ERROR, 94}, {ERROR, 94}, {ERROR, 94}, {ERROR, 94}, {REDUCE, 57}, {ERROR, 94}, {ERROR, 94}, {ERROR, 94}, {ERROR, 94}, {REDUCE, 57}, {ERROR, 94}, {ERROR, 94}, {ERROR, 94}, {ERROR, 94}, {ERROR, 94}, {ERROR, 94}, {REDUCE, 57}, {ERROR, 94}, {REDUCE, 57}, {ERROR, 94}, {ERROR, 94}, {ERROR, 94}, {ERROR, 94}, {ERROR, 94}, {ERROR, 94}, {ERROR, 94}, {ERROR, 94}, {ERROR, 94}, },
+ {{ERROR, 95}, {ERROR, 95}, {ERROR, 95}, {ERROR, 95}, {ERROR, 95}, {ERROR, 95}, {ERROR, 95}, {ERROR, 95}, {ERROR, 95}, {ERROR, 95}, {REDUCE, 55}, {ERROR, 95}, {ERROR, 95}, {ERROR, 95}, {ERROR, 95}, {REDUCE, 55}, {ERROR, 95}, {ERROR, 95}, {ERROR, 95}, {ERROR, 95}, {ERROR, 95}, {ERROR, 95}, {ERROR, 95}, {ERROR, 95}, {REDUCE, 55}, {ERROR, 95}, {ERROR, 95}, {ERROR, 95}, {ERROR, 95}, {ERROR, 95}, {ERROR, 95}, {ERROR, 95}, {ERROR, 95}, {ERROR, 95}, },
+ {{ERROR, 96}, {ERROR, 96}, {ERROR, 96}, {ERROR, 96}, {ERROR, 96}, {ERROR, 96}, {ERROR, 96}, {ERROR, 96}, {ERROR, 96}, {ERROR, 96}, {ERROR, 96}, {ERROR, 96}, {ERROR, 96}, {ERROR, 96}, {ERROR, 96}, {ERROR, 96}, {ERROR, 96}, {ERROR, 96}, {ERROR, 96}, {ERROR, 96}, {ERROR, 96}, {ERROR, 96}, {ERROR, 96}, {ERROR, 96}, {ERROR, 96}, {ERROR, 96}, {ERROR, 96}, {SHIFT, 106}, {ERROR, 96}, {ERROR, 96}, {ERROR, 96}, {ERROR, 96}, {ERROR, 96}, {ERROR, 96}, },
+ {{ERROR, 97}, {ERROR, 97}, {ERROR, 97}, {ERROR, 97}, {ERROR, 97}, {ERROR, 97}, {ERROR, 97}, {ERROR, 97}, {ERROR, 97}, {ERROR, 97}, {ERROR, 97}, {ERROR, 97}, {ERROR, 97}, {ERROR, 97}, {ERROR, 97}, {ERROR, 97}, {ERROR, 97}, {REDUCE, 43}, {ERROR, 97}, {ERROR, 97}, {ERROR, 97}, {ERROR, 97}, {ERROR, 97}, {SHIFT, 107}, {ERROR, 97}, {ERROR, 97}, {ERROR, 97}, {ERROR, 97}, {ERROR, 97}, {ERROR, 97}, {ERROR, 97}, {ERROR, 97}, {ERROR, 97}, {ERROR, 97}, },
+ {{ERROR, 98}, {ERROR, 98}, {ERROR, 98}, {ERROR, 98}, {ERROR, 98}, {ERROR, 98}, {ERROR, 98}, {ERROR, 98}, {ERROR, 98}, {ERROR, 98}, {ERROR, 98}, {ERROR, 98}, {ERROR, 98}, {ERROR, 98}, {ERROR, 98}, {ERROR, 98}, {ERROR, 98}, {REDUCE, 45}, {ERROR, 98}, {ERROR, 98}, {ERROR, 98}, {ERROR, 98}, {ERROR, 98}, {REDUCE, 45}, {ERROR, 98}, {ERROR, 98}, {ERROR, 98}, {ERROR, 98}, {ERROR, 98}, {ERROR, 98}, {ERROR, 98}, {ERROR, 98}, {ERROR, 98}, {ERROR, 98}, },
+ {{ERROR, 99}, {ERROR, 99}, {ERROR, 99}, {ERROR, 99}, {ERROR, 99}, {ERROR, 99}, {ERROR, 99}, {ERROR, 99}, {ERROR, 99}, {ERROR, 99}, {REDUCE, 60}, {ERROR, 99}, {SHIFT, 41}, {ERROR, 99}, {SHIFT, 42}, {ERROR, 99}, {ERROR, 99}, {ERROR, 99}, {ERROR, 99}, {ERROR, 99}, {ERROR, 99}, {ERROR, 99}, {REDUCE, 60}, {ERROR, 99}, {REDUCE, 60}, {ERROR, 99}, {ERROR, 99}, {SHIFT, 43}, {SHIFT, 44}, {SHIFT, 45}, {SHIFT, 46}, {SHIFT, 47}, {ERROR, 99}, {ERROR, 99}, },
+ {{ERROR, 100}, {ERROR, 100}, {ERROR, 100}, {ERROR, 100}, {ERROR, 100}, {ERROR, 100}, {ERROR, 100}, {ERROR, 100}, {ERROR, 100}, {ERROR, 100}, {SHIFT, 111}, {ERROR, 100}, {ERROR, 100}, {ERROR, 100}, {ERROR, 100}, {ERROR, 100}, {ERROR, 100}, {ERROR, 100}, {ERROR, 100}, {ERROR, 100}, {ERROR, 100}, {ERROR, 100}, {ERROR, 100}, {ERROR, 100}, {ERROR, 100}, {ERROR, 100}, {ERROR, 100}, {ERROR, 100}, {ERROR, 100}, {ERROR, 100}, {ERROR, 100}, {ERROR, 100}, {ERROR, 100}, {ERROR, 100}, },
+ {{ERROR, 101}, {ERROR, 101}, {ERROR, 101}, {ERROR, 101}, {ERROR, 101}, {ERROR, 101}, {ERROR, 101}, {ERROR, 101}, {ERROR, 101}, {ERROR, 101}, {ERROR, 101}, {SHIFT, 112}, {ERROR, 101}, {ERROR, 101}, {ERROR, 101}, {ERROR, 101}, {ERROR, 101}, {ERROR, 101}, {ERROR, 101}, {ERROR, 101}, {ERROR, 101}, {ERROR, 101}, {ERROR, 101}, {ERROR, 101}, {ERROR, 101}, {ERROR, 101}, {ERROR, 101}, {ERROR, 101}, {ERROR, 101}, {ERROR, 101}, {ERROR, 101}, {ERROR, 101}, {ERROR, 101}, {ERROR, 101}, },
+ {{ERROR, 102}, {ERROR, 102}, {ERROR, 102}, {ERROR, 102}, {ERROR, 102}, {ERROR, 102}, {ERROR, 102}, {ERROR, 102}, {ERROR, 102}, {ERROR, 102}, {ERROR, 102}, {ERROR, 102}, {ERROR, 102}, {ERROR, 102}, {ERROR, 102}, {ERROR, 102}, {ERROR, 102}, {ERROR, 102}, {ERROR, 102}, {ERROR, 102}, {ERROR, 102}, {ERROR, 102}, {ERROR, 102}, {ERROR, 102}, {ERROR, 102}, {ERROR, 102}, {ERROR, 102}, {ERROR, 102}, {ERROR, 102}, {ERROR, 102}, {ERROR, 102}, {ERROR, 102}, {ERROR, 102}, {REDUCE, 81}, },
+ {{ERROR, 103}, {ERROR, 103}, {ERROR, 103}, {ERROR, 103}, {ERROR, 103}, {ERROR, 103}, {ERROR, 103}, {ERROR, 103}, {ERROR, 103}, {ERROR, 103}, {ERROR, 103}, {ERROR, 103}, {ERROR, 103}, {ERROR, 103}, {ERROR, 103}, {ERROR, 103}, {ERROR, 103}, {ERROR, 103}, {ERROR, 103}, {ERROR, 103}, {ERROR, 103}, {ERROR, 103}, {ERROR, 103}, {ERROR, 103}, {ERROR, 103}, {ERROR, 103}, {ERROR, 103}, {SHIFT, 101}, {ERROR, 103}, {ERROR, 103}, {ERROR, 103}, {ERROR, 103}, {ERROR, 103}, {REDUCE, 83}, },
+ {{ERROR, 104}, {ERROR, 104}, {ERROR, 104}, {ERROR, 104}, {ERROR, 104}, {ERROR, 104}, {ERROR, 104}, {ERROR, 104}, {ERROR, 104}, {ERROR, 104}, {ERROR, 104}, {ERROR, 104}, {ERROR, 104}, {SHIFT, 114}, {ERROR, 104}, {ERROR, 104}, {ERROR, 104}, {ERROR, 104}, {ERROR, 104}, {ERROR, 104}, {ERROR, 104}, {ERROR, 104}, {ERROR, 104}, {ERROR, 104}, {ERROR, 104}, {ERROR, 104}, {ERROR, 104}, {ERROR, 104}, {ERROR, 104}, {ERROR, 104}, {ERROR, 104}, {ERROR, 104}, {ERROR, 104}, {ERROR, 104}, },
+ {{ERROR, 105}, {ERROR, 105}, {ERROR, 105}, {ERROR, 105}, {ERROR, 105}, {ERROR, 105}, {ERROR, 105}, {ERROR, 105}, {ERROR, 105}, {ERROR, 105}, {ERROR, 105}, {ERROR, 105}, {ERROR, 105}, {SHIFT, 115}, {ERROR, 105}, {ERROR, 105}, {ERROR, 105}, {ERROR, 105}, {ERROR, 105}, {ERROR, 105}, {ERROR, 105}, {ERROR, 105}, {ERROR, 105}, {ERROR, 105}, {ERROR, 105}, {ERROR, 105}, {ERROR, 105}, {ERROR, 105}, {ERROR, 105}, {ERROR, 105}, {ERROR, 105}, {ERROR, 105}, {ERROR, 105}, {ERROR, 105}, },
+ {{ERROR, 106}, {ERROR, 106}, {ERROR, 106}, {ERROR, 106}, {ERROR, 106}, {ERROR, 106}, {ERROR, 106}, {ERROR, 106}, {ERROR, 106}, {ERROR, 106}, {ERROR, 106}, {ERROR, 106}, {ERROR, 106}, {ERROR, 106}, {ERROR, 106}, {ERROR, 106}, {ERROR, 106}, {REDUCE, 47}, {ERROR, 106}, {ERROR, 106}, {ERROR, 106}, {ERROR, 106}, {ERROR, 106}, {REDUCE, 47}, {ERROR, 106}, {ERROR, 106}, {ERROR, 106}, {ERROR, 106}, {ERROR, 106}, {ERROR, 106}, {ERROR, 106}, {ERROR, 106}, {ERROR, 106}, {ERROR, 106}, },
+ {{ERROR, 107}, {ERROR, 107}, {ERROR, 107}, {ERROR, 107}, {ERROR, 107}, {ERROR, 107}, {ERROR, 107}, {ERROR, 107}, {ERROR, 107}, {ERROR, 107}, {ERROR, 107}, {ERROR, 107}, {ERROR, 107}, {ERROR, 107}, {ERROR, 107}, {ERROR, 107}, {ERROR, 107}, {ERROR, 107}, {ERROR, 107}, {ERROR, 107}, {ERROR, 107}, {ERROR, 107}, {ERROR, 107}, {ERROR, 107}, {ERROR, 107}, {ERROR, 107}, {ERROR, 107}, {SHIFT, 116}, {ERROR, 107}, {ERROR, 107}, {ERROR, 107}, {ERROR, 107}, {ERROR, 107}, {ERROR, 107}, },
+ {{ERROR, 108}, {ERROR, 108}, {ERROR, 108}, {ERROR, 108}, {ERROR, 108}, {ERROR, 108}, {ERROR, 108}, {ERROR, 108}, {ERROR, 108}, {ERROR, 108}, {ERROR, 108}, {ERROR, 108}, {ERROR, 108}, {ERROR, 108}, {ERROR, 108}, {ERROR, 108}, {ERROR, 108}, {SHIFT, 117}, {ERROR, 108}, {ERROR, 108}, {ERROR, 108}, {ERROR, 108}, {ERROR, 108}, {ERROR, 108}, {ERROR, 108}, {ERROR, 108}, {ERROR, 108}, {ERROR, 108}, {ERROR, 108}, {ERROR, 108}, {ERROR, 108}, {ERROR, 108}, {ERROR, 108}, {ERROR, 108}, },
+ {{ERROR, 109}, {ERROR, 109}, {ERROR, 109}, {ERROR, 109}, {ERROR, 109}, {ERROR, 109}, {ERROR, 109}, {ERROR, 109}, {ERROR, 109}, {ERROR, 109}, {ERROR, 109}, {ERROR, 109}, {ERROR, 109}, {ERROR, 109}, {ERROR, 109}, {ERROR, 109}, {ERROR, 109}, {REDUCE, 43}, {ERROR, 109}, {ERROR, 109}, {ERROR, 109}, {ERROR, 109}, {ERROR, 109}, {SHIFT, 107}, {ERROR, 109}, {ERROR, 109}, {ERROR, 109}, {ERROR, 109}, {ERROR, 109}, {ERROR, 109}, {ERROR, 109}, {ERROR, 109}, {ERROR, 109}, {ERROR, 109}, },
+ {{ERROR, 110}, {ERROR, 110}, {ERROR, 110}, {ERROR, 110}, {ERROR, 110}, {ERROR, 110}, {ERROR, 110}, {ERROR, 110}, {ERROR, 110}, {ERROR, 110}, {REDUCE, 52}, {ERROR, 110}, {ERROR, 110}, {ERROR, 110}, {ERROR, 110}, {ERROR, 110}, {ERROR, 110}, {ERROR, 110}, {ERROR, 110}, {ERROR, 110}, {ERROR, 110}, {ERROR, 110}, {ERROR, 110}, {ERROR, 110}, {SHIFT, 119}, {ERROR, 110}, {ERROR, 110}, {ERROR, 110}, {ERROR, 110}, {ERROR, 110}, {ERROR, 110}, {ERROR, 110}, {ERROR, 110}, {ERROR, 110}, },
+ {{ERROR, 111}, {ERROR, 111}, {ERROR, 111}, {ERROR, 111}, {ERROR, 111}, {REDUCE, 50}, {ERROR, 111}, {ERROR, 111}, {ERROR, 111}, {ERROR, 111}, {ERROR, 111}, {ERROR, 111}, {ERROR, 111}, {ERROR, 111}, {ERROR, 111}, {ERROR, 111}, {ERROR, 111}, {ERROR, 111}, {ERROR, 111}, {ERROR, 111}, {ERROR, 111}, {ERROR, 111}, {ERROR, 111}, {ERROR, 111}, {ERROR, 111}, {ERROR, 111}, {ERROR, 111}, {ERROR, 111}, {ERROR, 111}, {ERROR, 111}, {ERROR, 111}, {ERROR, 111}, {ERROR, 111}, {REDUCE, 50}, },
+ {{ERROR, 112}, {ERROR, 112}, {ERROR, 112}, {ERROR, 112}, {ERROR, 112}, {ERROR, 112}, {REDUCE, 92}, {REDUCE, 92}, {ERROR, 112}, {ERROR, 112}, {REDUCE, 92}, {ERROR, 112}, {REDUCE, 92}, {ERROR, 112}, {SHIFT, 122}, {ERROR, 112}, {SHIFT, 123}, {ERROR, 112}, {ERROR, 112}, {ERROR, 112}, {ERROR, 112}, {ERROR, 112}, {REDUCE, 92}, {ERROR, 112}, {ERROR, 112}, {ERROR, 112}, {ERROR, 112}, {REDUCE, 92}, {ERROR, 112}, {ERROR, 112}, {ERROR, 112}, {ERROR, 112}, {ERROR, 112}, {ERROR, 112}, },
+ {{ERROR, 113}, {ERROR, 113}, {ERROR, 113}, {ERROR, 113}, {ERROR, 113}, {ERROR, 113}, {ERROR, 113}, {ERROR, 113}, {ERROR, 113}, {ERROR, 113}, {ERROR, 113}, {ERROR, 113}, {ERROR, 113}, {ERROR, 113}, {ERROR, 113}, {ERROR, 113}, {ERROR, 113}, {ERROR, 113}, {ERROR, 113}, {ERROR, 113}, {ERROR, 113}, {ERROR, 113}, {ERROR, 113}, {ERROR, 113}, {ERROR, 113}, {ERROR, 113}, {ERROR, 113}, {ERROR, 113}, {ERROR, 113}, {ERROR, 113}, {ERROR, 113}, {ERROR, 113}, {ERROR, 113}, {REDUCE, 82}, },
+ {{ERROR, 114}, {ERROR, 114}, {ERROR, 114}, {ERROR, 114}, {ERROR, 114}, {ERROR, 114}, {ERROR, 114}, {ERROR, 114}, {ERROR, 114}, {ERROR, 114}, {REDUCE, 70}, {ERROR, 114}, {REDUCE, 70}, {REDUCE, 70}, {REDUCE, 70}, {REDUCE, 70}, {ERROR, 114}, {ERROR, 114}, {REDUCE, 70}, {REDUCE, 70}, {REDUCE, 70}, {REDUCE, 70}, {REDUCE, 70}, {ERROR, 114}, {REDUCE, 70}, {ERROR, 114}, {ERROR, 114}, {REDUCE, 70}, {REDUCE, 70}, {REDUCE, 70}, {REDUCE, 70}, {REDUCE, 70}, {ERROR, 114}, {ERROR, 114}, },
+ {{ERROR, 115}, {ERROR, 115}, {ERROR, 115}, {ERROR, 115}, {ERROR, 115}, {ERROR, 115}, {ERROR, 115}, {ERROR, 115}, {ERROR, 115}, {ERROR, 115}, {REDUCE, 71}, {ERROR, 115}, {REDUCE, 71}, {REDUCE, 71}, {REDUCE, 71}, {REDUCE, 71}, {ERROR, 115}, {ERROR, 115}, {REDUCE, 71}, {REDUCE, 71}, {REDUCE, 71}, {REDUCE, 71}, {REDUCE, 71}, {ERROR, 115}, {REDUCE, 71}, {ERROR, 115}, {ERROR, 115}, {REDUCE, 71}, {REDUCE, 71}, {REDUCE, 71}, {REDUCE, 71}, {REDUCE, 71}, {ERROR, 115}, {ERROR, 115}, },
+ {{ERROR, 116}, {ERROR, 116}, {ERROR, 116}, {ERROR, 116}, {ERROR, 116}, {ERROR, 116}, {ERROR, 116}, {ERROR, 116}, {ERROR, 116}, {ERROR, 116}, {ERROR, 116}, {ERROR, 116}, {ERROR, 116}, {ERROR, 116}, {ERROR, 116}, {ERROR, 116}, {ERROR, 116}, {REDUCE, 46}, {ERROR, 116}, {ERROR, 116}, {ERROR, 116}, {ERROR, 116}, {ERROR, 116}, {REDUCE, 46}, {ERROR, 116}, {SHIFT, 96}, {ERROR, 116}, {ERROR, 116}, {ERROR, 116}, {ERROR, 116}, {ERROR, 116}, {ERROR, 116}, {ERROR, 116}, {ERROR, 116}, },
+ {{ERROR, 117}, {ERROR, 117}, {ERROR, 117}, {ERROR, 117}, {ERROR, 117}, {ERROR, 117}, {ERROR, 117}, {ERROR, 117}, {ERROR, 117}, {ERROR, 117}, {ERROR, 117}, {ERROR, 117}, {ERROR, 117}, {ERROR, 117}, {ERROR, 117}, {ERROR, 117}, {ERROR, 117}, {ERROR, 117}, {ERROR, 117}, {ERROR, 117}, {ERROR, 117}, {ERROR, 117}, {ERROR, 117}, {ERROR, 117}, {ERROR, 117}, {ERROR, 117}, {ERROR, 117}, {REDUCE, 41}, {ERROR, 117}, {ERROR, 117}, {ERROR, 117}, {ERROR, 117}, {ERROR, 117}, {ERROR, 117}, },
+ {{ERROR, 118}, {ERROR, 118}, {ERROR, 118}, {ERROR, 118}, {ERROR, 118}, {ERROR, 118}, {ERROR, 118}, {ERROR, 118}, {ERROR, 118}, {ERROR, 118}, {ERROR, 118}, {ERROR, 118}, {ERROR, 118}, {ERROR, 118}, {ERROR, 118}, {ERROR, 118}, {ERROR, 118}, {REDUCE, 42}, {ERROR, 118}, {ERROR, 118}, {ERROR, 118}, {ERROR, 118}, {ERROR, 118}, {ERROR, 118}, {ERROR, 118}, {ERROR, 118}, {ERROR, 118}, {ERROR, 118}, {ERROR, 118}, {ERROR, 118}, {ERROR, 118}, {ERROR, 118}, {ERROR, 118}, {ERROR, 118}, },
+ {{ERROR, 119}, {ERROR, 119}, {ERROR, 119}, {ERROR, 119}, {ERROR, 119}, {ERROR, 119}, {ERROR, 119}, {ERROR, 119}, {ERROR, 119}, {ERROR, 119}, {REDUCE, 60}, {ERROR, 119}, {SHIFT, 41}, {ERROR, 119}, {SHIFT, 42}, {ERROR, 119}, {ERROR, 119}, {ERROR, 119}, {ERROR, 119}, {ERROR, 119}, {ERROR, 119}, {ERROR, 119}, {REDUCE, 60}, {ERROR, 119}, {ERROR, 119}, {ERROR, 119}, {ERROR, 119}, {SHIFT, 43}, {SHIFT, 44}, {SHIFT, 45}, {SHIFT, 46}, {SHIFT, 47}, {ERROR, 119}, {ERROR, 119}, },
+ {{ERROR, 120}, {ERROR, 120}, {ERROR, 120}, {ERROR, 120}, {ERROR, 120}, {ERROR, 120}, {ERROR, 120}, {ERROR, 120}, {ERROR, 120}, {ERROR, 120}, {SHIFT, 130}, {ERROR, 120}, {ERROR, 120}, {ERROR, 120}, {ERROR, 120}, {ERROR, 120}, {ERROR, 120}, {ERROR, 120}, {ERROR, 120}, {ERROR, 120}, {ERROR, 120}, {ERROR, 120}, {ERROR, 120}, {ERROR, 120}, {ERROR, 120}, {ERROR, 120}, {ERROR, 120}, {ERROR, 120}, {ERROR, 120}, {ERROR, 120}, {ERROR, 120}, {ERROR, 120}, {ERROR, 120}, {ERROR, 120}, },
+ {{ERROR, 121}, {ERROR, 121}, {ERROR, 121}, {ERROR, 121}, {ERROR, 121}, {ERROR, 121}, {ERROR, 121}, {ERROR, 121}, {ERROR, 121}, {ERROR, 121}, {REDUCE, 51}, {ERROR, 121}, {ERROR, 121}, {ERROR, 121}, {ERROR, 121}, {ERROR, 121}, {ERROR, 121}, {ERROR, 121}, {ERROR, 121}, {ERROR, 121}, {ERROR, 121}, {ERROR, 121}, {ERROR, 121}, {ERROR, 121}, {ERROR, 121}, {ERROR, 121}, {ERROR, 121}, {ERROR, 121}, {ERROR, 121}, {ERROR, 121}, {ERROR, 121}, {ERROR, 121}, {ERROR, 121}, {ERROR, 121}, },
+ {{ERROR, 122}, {ERROR, 122}, {ERROR, 122}, {ERROR, 122}, {ERROR, 122}, {ERROR, 122}, {REDUCE, 92}, {REDUCE, 92}, {ERROR, 122}, {ERROR, 122}, {ERROR, 122}, {ERROR, 122}, {REDUCE, 92}, {ERROR, 122}, {ERROR, 122}, {REDUCE, 92}, {SHIFT, 123}, {ERROR, 122}, {ERROR, 122}, {ERROR, 122}, {ERROR, 122}, {ERROR, 122}, {ERROR, 122}, {ERROR, 122}, {ERROR, 122}, {ERROR, 122}, {ERROR, 122}, {REDUCE, 92}, {ERROR, 122}, {ERROR, 122}, {ERROR, 122}, {ERROR, 122}, {ERROR, 122}, {ERROR, 122}, },
+ {{ERROR, 123}, {ERROR, 123}, {ERROR, 123}, {ERROR, 123}, {ERROR, 123}, {ERROR, 123}, {ERROR, 123}, {ERROR, 123}, {ERROR, 123}, {ERROR, 123}, {ERROR, 123}, {ERROR, 123}, {ERROR, 123}, {ERROR, 123}, {ERROR, 123}, {ERROR, 123}, {ERROR, 123}, {ERROR, 123}, {ERROR, 123}, {ERROR, 123}, {ERROR, 123}, {ERROR, 123}, {ERROR, 123}, {ERROR, 123}, {ERROR, 123}, {ERROR, 123}, {ERROR, 123}, {SHIFT, 132}, {ERROR, 123}, {ERROR, 123}, {ERROR, 123}, {ERROR, 123}, {ERROR, 123}, {ERROR, 123}, },
+ {{ERROR, 124}, {ERROR, 124}, {ERROR, 124}, {ERROR, 124}, {ERROR, 124}, {ERROR, 124}, {ERROR, 124}, {ERROR, 124}, {ERROR, 124}, {ERROR, 124}, {SHIFT, 133}, {ERROR, 124}, {ERROR, 124}, {ERROR, 124}, {ERROR, 124}, {ERROR, 124}, {ERROR, 124}, {ERROR, 124}, {ERROR, 124}, {ERROR, 124}, {ERROR, 124}, {ERROR, 124}, {ERROR, 124}, {ERROR, 124}, {ERROR, 124}, {ERROR, 124}, {ERROR, 124}, {ERROR, 124}, {ERROR, 124}, {ERROR, 124}, {ERROR, 124}, {ERROR, 124}, {ERROR, 124}, {ERROR, 124}, },
+ {{ERROR, 125}, {ERROR, 125}, {ERROR, 125}, {ERROR, 125}, {ERROR, 125}, {ERROR, 125}, {ERROR, 125}, {ERROR, 125}, {ERROR, 125}, {ERROR, 125}, {REDUCE, 87}, {ERROR, 125}, {ERROR, 125}, {ERROR, 125}, {ERROR, 125}, {ERROR, 125}, {ERROR, 125}, {ERROR, 125}, {ERROR, 125}, {ERROR, 125}, {ERROR, 125}, {ERROR, 125}, {SHIFT, 134}, {ERROR, 125}, {ERROR, 125}, {ERROR, 125}, {ERROR, 125}, {ERROR, 125}, {ERROR, 125}, {ERROR, 125}, {ERROR, 125}, {ERROR, 125}, {ERROR, 125}, {ERROR, 125}, },
+ {{ERROR, 126}, {ERROR, 126}, {ERROR, 126}, {ERROR, 126}, {ERROR, 126}, {ERROR, 126}, {REDUCE, 98}, {REDUCE, 98}, {ERROR, 126}, {ERROR, 126}, {REDUCE, 95}, {ERROR, 126}, {SHIFT, 137}, {ERROR, 126}, {ERROR, 126}, {ERROR, 126}, {ERROR, 126}, {ERROR, 126}, {ERROR, 126}, {ERROR, 126}, {ERROR, 126}, {ERROR, 126}, {REDUCE, 95}, {ERROR, 126}, {ERROR, 126}, {ERROR, 126}, {ERROR, 126}, {REDUCE, 98}, {ERROR, 126}, {ERROR, 126}, {ERROR, 126}, {ERROR, 126}, {ERROR, 126}, {ERROR, 126}, },
+ {{ERROR, 127}, {ERROR, 127}, {ERROR, 127}, {ERROR, 127}, {ERROR, 127}, {ERROR, 127}, {REDUCE, 91}, {REDUCE, 91}, {ERROR, 127}, {ERROR, 127}, {REDUCE, 91}, {ERROR, 127}, {REDUCE, 91}, {ERROR, 127}, {ERROR, 127}, {REDUCE, 91}, {ERROR, 127}, {ERROR, 127}, {ERROR, 127}, {ERROR, 127}, {ERROR, 127}, {ERROR, 127}, {REDUCE, 91}, {ERROR, 127}, {ERROR, 127}, {ERROR, 127}, {ERROR, 127}, {REDUCE, 91}, {ERROR, 127}, {ERROR, 127}, {ERROR, 127}, {ERROR, 127}, {ERROR, 127}, {ERROR, 127}, },
+ {{ERROR, 128}, {ERROR, 128}, {ERROR, 128}, {ERROR, 128}, {ERROR, 128}, {ERROR, 128}, {ERROR, 128}, {ERROR, 128}, {ERROR, 128}, {ERROR, 128}, {ERROR, 128}, {ERROR, 128}, {ERROR, 128}, {ERROR, 128}, {ERROR, 128}, {ERROR, 128}, {ERROR, 128}, {REDUCE, 44}, {ERROR, 128}, {ERROR, 128}, {ERROR, 128}, {ERROR, 128}, {ERROR, 128}, {REDUCE, 44}, {ERROR, 128}, {ERROR, 128}, {ERROR, 128}, {ERROR, 128}, {ERROR, 128}, {ERROR, 128}, {ERROR, 128}, {ERROR, 128}, {ERROR, 128}, {ERROR, 128}, },
+ {{ERROR, 129}, {ERROR, 129}, {ERROR, 129}, {ERROR, 129}, {ERROR, 129}, {ERROR, 129}, {ERROR, 129}, {ERROR, 129}, {ERROR, 129}, {ERROR, 129}, {REDUCE, 53}, {ERROR, 129}, {ERROR, 129}, {ERROR, 129}, {ERROR, 129}, {ERROR, 129}, {ERROR, 129}, {ERROR, 129}, {ERROR, 129}, {ERROR, 129}, {ERROR, 129}, {ERROR, 129}, {ERROR, 129}, {ERROR, 129}, {ERROR, 129}, {ERROR, 129}, {ERROR, 129}, {ERROR, 129}, {ERROR, 129}, {ERROR, 129}, {ERROR, 129}, {ERROR, 129}, {ERROR, 129}, {ERROR, 129}, },
+ {{ERROR, 130}, {ERROR, 130}, {ERROR, 130}, {ERROR, 130}, {REDUCE, 38}, {REDUCE, 38}, {ERROR, 130}, {ERROR, 130}, {ERROR, 130}, {ERROR, 130}, {ERROR, 130}, {ERROR, 130}, {ERROR, 130}, {ERROR, 130}, {ERROR, 130}, {ERROR, 130}, {REDUCE, 38}, {ERROR, 130}, {ERROR, 130}, {ERROR, 130}, {ERROR, 130}, {ERROR, 130}, {ERROR, 130}, {ERROR, 130}, {ERROR, 130}, {ERROR, 130}, {ERROR, 130}, {REDUCE, 38}, {ERROR, 130}, {ERROR, 130}, {ERROR, 130}, {ERROR, 130}, {ERROR, 130}, {REDUCE, 38}, },
+ {{ERROR, 131}, {ERROR, 131}, {ERROR, 131}, {ERROR, 131}, {ERROR, 131}, {ERROR, 131}, {REDUCE, 98}, {REDUCE, 98}, {ERROR, 131}, {ERROR, 131}, {ERROR, 131}, {ERROR, 131}, {SHIFT, 137}, {ERROR, 131}, {ERROR, 131}, {REDUCE, 95}, {ERROR, 131}, {ERROR, 131}, {ERROR, 131}, {ERROR, 131}, {ERROR, 131}, {ERROR, 131}, {ERROR, 131}, {ERROR, 131}, {ERROR, 131}, {ERROR, 131}, {ERROR, 131}, {REDUCE, 98}, {ERROR, 131}, {ERROR, 131}, {ERROR, 131}, {ERROR, 131}, {ERROR, 131}, {ERROR, 131}, },
+ {{ERROR, 132}, {ERROR, 132}, {ERROR, 132}, {ERROR, 132}, {ERROR, 132}, {ERROR, 132}, {ERROR, 132}, {ERROR, 132}, {ERROR, 132}, {ERROR, 132}, {ERROR, 132}, {ERROR, 132}, {ERROR, 132}, {ERROR, 132}, {ERROR, 132}, {ERROR, 132}, {ERROR, 132}, {SHIFT, 143}, {ERROR, 132}, {ERROR, 132}, {ERROR, 132}, {ERROR, 132}, {ERROR, 132}, {ERROR, 132}, {ERROR, 132}, {ERROR, 132}, {ERROR, 132}, {ERROR, 132}, {ERROR, 132}, {ERROR, 132}, {ERROR, 132}, {ERROR, 132}, {ERROR, 132}, {ERROR, 132}, },
+ {{ERROR, 133}, {ERROR, 133}, {ERROR, 133}, {ERROR, 133}, {ERROR, 133}, {ERROR, 133}, {ERROR, 133}, {ERROR, 133}, {ERROR, 133}, {ERROR, 133}, {ERROR, 133}, {ERROR, 133}, {ERROR, 133}, {ERROR, 133}, {ERROR, 133}, {ERROR, 133}, {ERROR, 133}, {ERROR, 133}, {ERROR, 133}, {ERROR, 133}, {ERROR, 133}, {ERROR, 133}, {ERROR, 133}, {ERROR, 133}, {ERROR, 133}, {ERROR, 133}, {ERROR, 133}, {REDUCE, 84}, {ERROR, 133}, {ERROR, 133}, {ERROR, 133}, {ERROR, 133}, {ERROR, 133}, {REDUCE, 84}, },
+ {{ERROR, 134}, {ERROR, 134}, {ERROR, 134}, {ERROR, 134}, {ERROR, 134}, {ERROR, 134}, {REDUCE, 92}, {REDUCE, 92}, {ERROR, 134}, {ERROR, 134}, {REDUCE, 92}, {ERROR, 134}, {REDUCE, 92}, {ERROR, 134}, {SHIFT, 122}, {ERROR, 134}, {SHIFT, 123}, {ERROR, 134}, {ERROR, 134}, {ERROR, 134}, {ERROR, 134}, {ERROR, 134}, {REDUCE, 92}, {ERROR, 134}, {ERROR, 134}, {ERROR, 134}, {ERROR, 134}, {REDUCE, 92}, {ERROR, 134}, {ERROR, 134}, {ERROR, 134}, {ERROR, 134}, {ERROR, 134}, {ERROR, 134}, },
+ {{ERROR, 135}, {ERROR, 135}, {ERROR, 135}, {ERROR, 135}, {ERROR, 135}, {ERROR, 135}, {ERROR, 135}, {ERROR, 135}, {ERROR, 135}, {ERROR, 135}, {REDUCE, 85}, {ERROR, 135}, {ERROR, 135}, {ERROR, 135}, {ERROR, 135}, {ERROR, 135}, {ERROR, 135}, {ERROR, 135}, {ERROR, 135}, {ERROR, 135}, {ERROR, 135}, {ERROR, 135}, {ERROR, 135}, {ERROR, 135}, {ERROR, 135}, {ERROR, 135}, {ERROR, 135}, {ERROR, 135}, {ERROR, 135}, {ERROR, 135}, {ERROR, 135}, {ERROR, 135}, {ERROR, 135}, {ERROR, 135}, },
+ {{ERROR, 136}, {ERROR, 136}, {ERROR, 136}, {ERROR, 136}, {ERROR, 136}, {ERROR, 136}, {ERROR, 136}, {ERROR, 136}, {ERROR, 136}, {ERROR, 136}, {REDUCE, 87}, {ERROR, 136}, {ERROR, 136}, {ERROR, 136}, {ERROR, 136}, {ERROR, 136}, {ERROR, 136}, {ERROR, 136}, {ERROR, 136}, {ERROR, 136}, {ERROR, 136}, {ERROR, 136}, {SHIFT, 134}, {ERROR, 136}, {ERROR, 136}, {ERROR, 136}, {ERROR, 136}, {ERROR, 136}, {ERROR, 136}, {ERROR, 136}, {ERROR, 136}, {ERROR, 136}, {ERROR, 136}, {ERROR, 136}, },
+ {{ERROR, 137}, {ERROR, 137}, {ERROR, 137}, {ERROR, 137}, {ERROR, 137}, {ERROR, 137}, {ERROR, 137}, {ERROR, 137}, {ERROR, 137}, {ERROR, 137}, {ERROR, 137}, {ERROR, 137}, {ERROR, 137}, {ERROR, 137}, {ERROR, 137}, {ERROR, 137}, {ERROR, 137}, {ERROR, 137}, {ERROR, 137}, {ERROR, 137}, {ERROR, 137}, {ERROR, 137}, {ERROR, 137}, {ERROR, 137}, {ERROR, 137}, {ERROR, 137}, {ERROR, 137}, {SHIFT, 146}, {ERROR, 137}, {ERROR, 137}, {ERROR, 137}, {ERROR, 137}, {ERROR, 137}, {ERROR, 137}, },
+ {{ERROR, 138}, {ERROR, 138}, {ERROR, 138}, {ERROR, 138}, {ERROR, 138}, {ERROR, 138}, {ERROR, 138}, {ERROR, 138}, {ERROR, 138}, {ERROR, 138}, {REDUCE, 89}, {ERROR, 138}, {ERROR, 138}, {ERROR, 138}, {ERROR, 138}, {ERROR, 138}, {ERROR, 138}, {ERROR, 138}, {ERROR, 138}, {ERROR, 138}, {ERROR, 138}, {ERROR, 138}, {REDUCE, 89}, {ERROR, 138}, {ERROR, 138}, {ERROR, 138}, {ERROR, 138}, {ERROR, 138}, {ERROR, 138}, {ERROR, 138}, {ERROR, 138}, {ERROR, 138}, {ERROR, 138}, {ERROR, 138}, },
+ {{ERROR, 139}, {ERROR, 139}, {ERROR, 139}, {ERROR, 139}, {ERROR, 139}, {ERROR, 139}, {REDUCE, 98}, {REDUCE, 98}, {ERROR, 139}, {ERROR, 139}, {REDUCE, 95}, {ERROR, 139}, {SHIFT, 137}, {ERROR, 139}, {ERROR, 139}, {REDUCE, 95}, {ERROR, 139}, {ERROR, 139}, {ERROR, 139}, {ERROR, 139}, {ERROR, 139}, {ERROR, 139}, {REDUCE, 95}, {ERROR, 139}, {ERROR, 139}, {ERROR, 139}, {ERROR, 139}, {REDUCE, 98}, {ERROR, 139}, {ERROR, 139}, {ERROR, 139}, {ERROR, 139}, {ERROR, 139}, {ERROR, 139}, },
+ {{ERROR, 140}, {ERROR, 140}, {ERROR, 140}, {ERROR, 140}, {ERROR, 140}, {ERROR, 140}, {SHIFT, 148}, {SHIFT, 149}, {ERROR, 140}, {ERROR, 140}, {ERROR, 140}, {ERROR, 140}, {ERROR, 140}, {ERROR, 140}, {ERROR, 140}, {ERROR, 140}, {ERROR, 140}, {ERROR, 140}, {ERROR, 140}, {ERROR, 140}, {ERROR, 140}, {ERROR, 140}, {ERROR, 140}, {ERROR, 140}, {ERROR, 140}, {ERROR, 140}, {ERROR, 140}, {REDUCE, 101}, {ERROR, 140}, {ERROR, 140}, {ERROR, 140}, {ERROR, 140}, {ERROR, 140}, {ERROR, 140}, },
+ {{ERROR, 141}, {ERROR, 141}, {ERROR, 141}, {ERROR, 141}, {ERROR, 141}, {ERROR, 141}, {REDUCE, 97}, {REDUCE, 97}, {ERROR, 141}, {ERROR, 141}, {ERROR, 141}, {ERROR, 141}, {ERROR, 141}, {ERROR, 141}, {ERROR, 141}, {ERROR, 141}, {ERROR, 141}, {ERROR, 141}, {ERROR, 141}, {ERROR, 141}, {ERROR, 141}, {ERROR, 141}, {ERROR, 141}, {ERROR, 141}, {ERROR, 141}, {ERROR, 141}, {ERROR, 141}, {REDUCE, 97}, {ERROR, 141}, {ERROR, 141}, {ERROR, 141}, {ERROR, 141}, {ERROR, 141}, {ERROR, 141}, },
+ {{ERROR, 142}, {ERROR, 142}, {ERROR, 142}, {ERROR, 142}, {ERROR, 142}, {ERROR, 142}, {ERROR, 142}, {ERROR, 142}, {ERROR, 142}, {ERROR, 142}, {ERROR, 142}, {ERROR, 142}, {ERROR, 142}, {ERROR, 142}, {ERROR, 142}, {SHIFT, 152}, {ERROR, 142}, {ERROR, 142}, {ERROR, 142}, {ERROR, 142}, {ERROR, 142}, {ERROR, 142}, {ERROR, 142}, {ERROR, 142}, {ERROR, 142}, {ERROR, 142}, {ERROR, 142}, {ERROR, 142}, {ERROR, 142}, {ERROR, 142}, {ERROR, 142}, {ERROR, 142}, {ERROR, 142}, {ERROR, 142}, },
+ {{ERROR, 143}, {ERROR, 143}, {ERROR, 143}, {ERROR, 143}, {ERROR, 143}, {ERROR, 143}, {REDUCE, 93}, {REDUCE, 93}, {ERROR, 143}, {ERROR, 143}, {REDUCE, 93}, {ERROR, 143}, {REDUCE, 93}, {ERROR, 143}, {ERROR, 143}, {REDUCE, 93}, {ERROR, 143}, {ERROR, 143}, {ERROR, 143}, {ERROR, 143}, {ERROR, 143}, {ERROR, 143}, {REDUCE, 93}, {ERROR, 143}, {ERROR, 143}, {ERROR, 143}, {ERROR, 143}, {REDUCE, 93}, {ERROR, 143}, {ERROR, 143}, {ERROR, 143}, {ERROR, 143}, {ERROR, 143}, {ERROR, 143}, },
+ {{ERROR, 144}, {ERROR, 144}, {ERROR, 144}, {ERROR, 144}, {ERROR, 144}, {ERROR, 144}, {ERROR, 144}, {ERROR, 144}, {ERROR, 144}, {ERROR, 144}, {REDUCE, 88}, {ERROR, 144}, {ERROR, 144}, {ERROR, 144}, {ERROR, 144}, {ERROR, 144}, {ERROR, 144}, {ERROR, 144}, {ERROR, 144}, {ERROR, 144}, {ERROR, 144}, {ERROR, 144}, {REDUCE, 88}, {ERROR, 144}, {ERROR, 144}, {ERROR, 144}, {ERROR, 144}, {ERROR, 144}, {ERROR, 144}, {ERROR, 144}, {ERROR, 144}, {ERROR, 144}, {ERROR, 144}, {ERROR, 144}, },
+ {{ERROR, 145}, {ERROR, 145}, {ERROR, 145}, {ERROR, 145}, {ERROR, 145}, {ERROR, 145}, {ERROR, 145}, {ERROR, 145}, {ERROR, 145}, {ERROR, 145}, {REDUCE, 86}, {ERROR, 145}, {ERROR, 145}, {ERROR, 145}, {ERROR, 145}, {ERROR, 145}, {ERROR, 145}, {ERROR, 145}, {ERROR, 145}, {ERROR, 145}, {ERROR, 145}, {ERROR, 145}, {ERROR, 145}, {ERROR, 145}, {ERROR, 145}, {ERROR, 145}, {ERROR, 145}, {ERROR, 145}, {ERROR, 145}, {ERROR, 145}, {ERROR, 145}, {ERROR, 145}, {ERROR, 145}, {ERROR, 145}, },
+ {{ERROR, 146}, {ERROR, 146}, {ERROR, 146}, {ERROR, 146}, {ERROR, 146}, {ERROR, 146}, {ERROR, 146}, {ERROR, 146}, {ERROR, 146}, {ERROR, 146}, {ERROR, 146}, {ERROR, 146}, {ERROR, 146}, {SHIFT, 153}, {ERROR, 146}, {ERROR, 146}, {ERROR, 146}, {ERROR, 146}, {ERROR, 146}, {ERROR, 146}, {ERROR, 146}, {ERROR, 146}, {ERROR, 146}, {ERROR, 146}, {ERROR, 146}, {ERROR, 146}, {ERROR, 146}, {ERROR, 146}, {ERROR, 146}, {ERROR, 146}, {ERROR, 146}, {ERROR, 146}, {ERROR, 146}, {ERROR, 146}, },
+ {{ERROR, 147}, {ERROR, 147}, {ERROR, 147}, {ERROR, 147}, {ERROR, 147}, {ERROR, 147}, {ERROR, 147}, {ERROR, 147}, {ERROR, 147}, {ERROR, 147}, {REDUCE, 94}, {ERROR, 147}, {ERROR, 147}, {ERROR, 147}, {ERROR, 147}, {REDUCE, 94}, {ERROR, 147}, {ERROR, 147}, {ERROR, 147}, {ERROR, 147}, {ERROR, 147}, {ERROR, 147}, {REDUCE, 94}, {ERROR, 147}, {ERROR, 147}, {ERROR, 147}, {ERROR, 147}, {ERROR, 147}, {ERROR, 147}, {ERROR, 147}, {ERROR, 147}, {ERROR, 147}, {ERROR, 147}, {ERROR, 147}, },
+ {{ERROR, 148}, {ERROR, 148}, {ERROR, 148}, {ERROR, 148}, {ERROR, 148}, {ERROR, 148}, {ERROR, 148}, {ERROR, 148}, {SHIFT, 154}, {ERROR, 148}, {ERROR, 148}, {ERROR, 148}, {ERROR, 148}, {ERROR, 148}, {ERROR, 148}, {ERROR, 148}, {ERROR, 148}, {ERROR, 148}, {ERROR, 148}, {ERROR, 148}, {ERROR, 148}, {ERROR, 148}, {ERROR, 148}, {ERROR, 148}, {ERROR, 148}, {ERROR, 148}, {ERROR, 148}, {ERROR, 148}, {ERROR, 148}, {ERROR, 148}, {ERROR, 148}, {ERROR, 148}, {ERROR, 148}, {ERROR, 148}, },
+ {{ERROR, 149}, {ERROR, 149}, {ERROR, 149}, {ERROR, 149}, {ERROR, 149}, {ERROR, 149}, {ERROR, 149}, {ERROR, 149}, {SHIFT, 155}, {ERROR, 149}, {ERROR, 149}, {ERROR, 149}, {ERROR, 149}, {ERROR, 149}, {ERROR, 149}, {ERROR, 149}, {ERROR, 149}, {ERROR, 149}, {ERROR, 149}, {ERROR, 149}, {ERROR, 149}, {ERROR, 149}, {ERROR, 149}, {ERROR, 149}, {ERROR, 149}, {ERROR, 149}, {ERROR, 149}, {ERROR, 149}, {ERROR, 149}, {ERROR, 149}, {ERROR, 149}, {ERROR, 149}, {ERROR, 149}, {ERROR, 149}, },
+ {{ERROR, 150}, {ERROR, 150}, {ERROR, 150}, {ERROR, 150}, {ERROR, 150}, {ERROR, 150}, {ERROR, 150}, {ERROR, 150}, {ERROR, 150}, {ERROR, 150}, {ERROR, 150}, {ERROR, 150}, {ERROR, 150}, {ERROR, 150}, {ERROR, 150}, {ERROR, 150}, {ERROR, 150}, {ERROR, 150}, {ERROR, 150}, {ERROR, 150}, {ERROR, 150}, {ERROR, 150}, {ERROR, 150}, {ERROR, 150}, {ERROR, 150}, {ERROR, 150}, {ERROR, 150}, {SHIFT, 156}, {ERROR, 150}, {ERROR, 150}, {ERROR, 150}, {ERROR, 150}, {ERROR, 150}, {ERROR, 150}, },
+ {{ERROR, 151}, {ERROR, 151}, {ERROR, 151}, {ERROR, 151}, {ERROR, 151}, {ERROR, 151}, {ERROR, 151}, {ERROR, 151}, {ERROR, 151}, {ERROR, 151}, {ERROR, 151}, {ERROR, 151}, {ERROR, 151}, {ERROR, 151}, {ERROR, 151}, {ERROR, 151}, {ERROR, 151}, {ERROR, 151}, {ERROR, 151}, {ERROR, 151}, {ERROR, 151}, {ERROR, 151}, {ERROR, 151}, {ERROR, 151}, {ERROR, 151}, {ERROR, 151}, {ERROR, 151}, {REDUCE, 100}, {ERROR, 151}, {ERROR, 151}, {ERROR, 151}, {ERROR, 151}, {ERROR, 151}, {ERROR, 151}, },
+ {{ERROR, 152}, {ERROR, 152}, {ERROR, 152}, {ERROR, 152}, {ERROR, 152}, {ERROR, 152}, {ERROR, 152}, {ERROR, 152}, {ERROR, 152}, {ERROR, 152}, {REDUCE, 90}, {ERROR, 152}, {ERROR, 152}, {ERROR, 152}, {ERROR, 152}, {ERROR, 152}, {ERROR, 152}, {ERROR, 152}, {ERROR, 152}, {ERROR, 152}, {ERROR, 152}, {ERROR, 152}, {REDUCE, 90}, {ERROR, 152}, {ERROR, 152}, {ERROR, 152}, {ERROR, 152}, {ERROR, 152}, {ERROR, 152}, {ERROR, 152}, {ERROR, 152}, {ERROR, 152}, {ERROR, 152}, {ERROR, 152}, },
+ {{ERROR, 153}, {ERROR, 153}, {ERROR, 153}, {ERROR, 153}, {ERROR, 153}, {ERROR, 153}, {ERROR, 153}, {ERROR, 153}, {ERROR, 153}, {ERROR, 153}, {ERROR, 153}, {ERROR, 153}, {ERROR, 153}, {ERROR, 153}, {ERROR, 153}, {ERROR, 153}, {ERROR, 153}, {ERROR, 153}, {ERROR, 153}, {ERROR, 153}, {ERROR, 153}, {ERROR, 153}, {ERROR, 153}, {ERROR, 153}, {ERROR, 153}, {ERROR, 153}, {SHIFT, 157}, {ERROR, 153}, {ERROR, 153}, {ERROR, 153}, {ERROR, 153}, {ERROR, 153}, {ERROR, 153}, {ERROR, 153}, },
+ {{ERROR, 154}, {ERROR, 154}, {ERROR, 154}, {ERROR, 154}, {ERROR, 154}, {ERROR, 154}, {ERROR, 154}, {ERROR, 154}, {ERROR, 154}, {ERROR, 154}, {ERROR, 154}, {ERROR, 154}, {ERROR, 154}, {ERROR, 154}, {ERROR, 154}, {ERROR, 154}, {ERROR, 154}, {ERROR, 154}, {ERROR, 154}, {ERROR, 154}, {ERROR, 154}, {ERROR, 154}, {ERROR, 154}, {ERROR, 154}, {ERROR, 154}, {ERROR, 154}, {ERROR, 154}, {REDUCE, 102}, {ERROR, 154}, {ERROR, 154}, {ERROR, 154}, {ERROR, 154}, {ERROR, 154}, {ERROR, 154}, },
+ {{ERROR, 155}, {ERROR, 155}, {ERROR, 155}, {ERROR, 155}, {ERROR, 155}, {ERROR, 155}, {ERROR, 155}, {ERROR, 155}, {ERROR, 155}, {ERROR, 155}, {ERROR, 155}, {ERROR, 155}, {ERROR, 155}, {ERROR, 155}, {ERROR, 155}, {ERROR, 155}, {ERROR, 155}, {ERROR, 155}, {ERROR, 155}, {ERROR, 155}, {ERROR, 155}, {ERROR, 155}, {ERROR, 155}, {ERROR, 155}, {ERROR, 155}, {ERROR, 155}, {ERROR, 155}, {REDUCE, 103}, {ERROR, 155}, {ERROR, 155}, {ERROR, 155}, {ERROR, 155}, {ERROR, 155}, {ERROR, 155}, },
+ {{ERROR, 156}, {ERROR, 156}, {ERROR, 156}, {ERROR, 156}, {ERROR, 156}, {ERROR, 156}, {REDUCE, 73}, {REDUCE, 73}, {ERROR, 156}, {ERROR, 156}, {REDUCE, 73}, {ERROR, 156}, {REDUCE, 73}, {ERROR, 156}, {ERROR, 156}, {REDUCE, 73}, {ERROR, 156}, {ERROR, 156}, {SHIFT, 75}, {ERROR, 156}, {SHIFT, 76}, {SHIFT, 77}, {REDUCE, 73}, {ERROR, 156}, {ERROR, 156}, {ERROR, 156}, {ERROR, 156}, {REDUCE, 73}, {ERROR, 156}, {ERROR, 156}, {ERROR, 156}, {ERROR, 156}, {ERROR, 156}, {ERROR, 156}, },
+ {{ERROR, 157}, {ERROR, 157}, {ERROR, 157}, {ERROR, 157}, {ERROR, 157}, {ERROR, 157}, {REDUCE, 99}, {REDUCE, 99}, {ERROR, 157}, {ERROR, 157}, {ERROR, 157}, {ERROR, 157}, {ERROR, 157}, {ERROR, 157}, {ERROR, 157}, {ERROR, 157}, {ERROR, 157}, {ERROR, 157}, {ERROR, 157}, {ERROR, 157}, {ERROR, 157}, {ERROR, 157}, {ERROR, 157}, {ERROR, 157}, {ERROR, 157}, {ERROR, 157}, {ERROR, 157}, {REDUCE, 99}, {ERROR, 157}, {ERROR, 157}, {ERROR, 157}, {ERROR, 157}, {ERROR, 157}, {ERROR, 157}, },
+ {{ERROR, 158}, {ERROR, 158}, {ERROR, 158}, {ERROR, 158}, {ERROR, 158}, {ERROR, 158}, {REDUCE, 96}, {REDUCE, 96}, {ERROR, 158}, {ERROR, 158}, {REDUCE, 96}, {ERROR, 158}, {REDUCE, 96}, {ERROR, 158}, {ERROR, 158}, {REDUCE, 96}, {ERROR, 158}, {ERROR, 158}, {ERROR, 158}, {ERROR, 158}, {ERROR, 158}, {ERROR, 158}, {REDUCE, 96}, {ERROR, 158}, {ERROR, 158}, {ERROR, 158}, {ERROR, 158}, {REDUCE, 96}, {ERROR, 158}, {ERROR, 158}, {ERROR, 158}, {ERROR, 158}, {ERROR, 158}, {ERROR, 158}, },
+ }; */
+ private /*final*/ static int[][] gotoTable; /* =
+ {
+ {2, 3, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, },
+ {0, 0, 0, 15, 16, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, },
+ {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, },
+ {0, 0, 0, 0, 0, 0, 0, 0, 19, 20, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, },
+ {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, },
+ {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, },
+ {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, },
+ {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, },
+ {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, },
+ {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, },
+ {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, },
+ {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, },
+ {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, },
+ {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, },
+ {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, },
+ {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, },
+ {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, },
+ {0, 0, 0, 0, 0, 22, 23, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, },
+ {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 25, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, },
+ {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 28, 29, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, },
+ {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, },
+ {0, 0, 0, 0, 0, 0, 0, 30, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, },
+ {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, },
+ {0, 0, 0, 0, 0, 32, 23, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, },
+ {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, },
+ {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, },
+ {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 34, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, },
+ {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 36, 37, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, },
+ {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 39, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, },
+ {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, },
+ {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, },
+ {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, },
+ {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, },
+ {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 48, 0, 0, 49, 50, 51, 52, 53, 54, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, },
+ {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, },
+ {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 56, 57, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, },
+ {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, },
+ {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, },
+ {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 60, 61, 62, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, },
+ {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 65, 66, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, },
+ {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, },
+ {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 67, 68, 54, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, },
+ {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 69, 0, 0, 49, 50, 51, 52, 53, 54, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, },
+ {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, },
+ {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, },
+ {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, },
+ {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, },
+ {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, },
+ {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, },
+ {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 72, 73, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, },
+ {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, },
+ {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 74, 51, 52, 53, 54, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, },
+ {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 78, 79, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, },
+ {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, },
+ {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, },
+ {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, },
+ {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, },
+ {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 81, 57, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, },
+ {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, },
+ {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, },
+ {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, },
+ {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 83, 61, 62, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, },
+ {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, },
+ {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, },
+ {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, },
+ {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 87, 88, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, },
+ {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, },
+ {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 91, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, },
+ {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, },
+ {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, },
+ {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, },
+ {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 94, 50, 51, 52, 53, 54, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, },
+ {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, },
+ {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 95, 73, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, },
+ {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, },
+ {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, },
+ {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, },
+ {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, },
+ {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, },
+ {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, },
+ {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, },
+ {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, },
+ {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 97, 98, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, },
+ {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, },
+ {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, },
+ {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 100, 37, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, },
+ {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 102, 103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, },
+ {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, },
+ {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, },
+ {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, },
+ {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, },
+ {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 104, 53, 54, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, },
+ {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 105, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, },
+ {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, },
+ {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, },
+ {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, },
+ {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, },
+ {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 108, 109, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, },
+ {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, },
+ {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 110, 0, 0, 49, 50, 51, 52, 53, 54, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, },
+ {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, },
+ {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, },
+ {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, },
+ {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 113, 103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, },
+ {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, },
+ {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, },
+ {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, },
+ {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, },
+ {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, },
+ {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 118, 109, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, },
+ {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 120, 121, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, },
+ {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, },
+ {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 124, 0, 0, 125, 126, 127, 0, 0, 0, 0, 0, 0, },
+ {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, },
+ {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, },
+ {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, },
+ {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 98, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, },
+ {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, },
+ {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, },
+ {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 129, 0, 0, 49, 50, 51, 52, 53, 54, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, },
+ {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, },
+ {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, },
+ {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 131, 127, 0, 0, 0, 0, 0, 0, },
+ {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, },
+ {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, },
+ {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 135, 136, 0, 0, 0, 0, 0, 0, 0, 0, 0, },
+ {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 138, 139, 140, 141, 0, 0, },
+ {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, },
+ {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, },
+ {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, },
+ {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, },
+ {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 142, 139, 140, 141, 0, 0, },
+ {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, },
+ {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, },
+ {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 144, 126, 127, 0, 0, 0, 0, 0, 0, },
+ {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, },
+ {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 145, 136, 0, 0, 0, 0, 0, 0, 0, 0, 0, },
+ {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, },
+ {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, },
+ {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 147, 139, 140, 141, 0, 0, },
+ {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 150, 151, },
+ {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, },
+ {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, },
+ {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, },
+ {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, },
+ {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, },
+ {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, },
+ {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, },
+ {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, },
+ {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, },
+ {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, },
+ {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, },
+ {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, },
+ {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, },
+ {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, },
+ {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, },
+ {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 158, 79, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, },
+ {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, },
+ {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, },
+ }; */
+ private /*final*/ static String[] errors; /* =
+ {
+ "TPackage TStates THelpers TTokens TIgnored TProductions *EOF* expected.",
+ "TPackage TStates THelpers TTokens TIgnored TProductions TTokenSpecifier TProductionSpecifier TId TPkgId expected.",
+ "*EOF* expected.",
+ "TStates THelpers TTokens TIgnored TProductions *EOF* expected.",
+ "TStates THelpers TTokens TIgnored TProductions *EOF* expected.",
+ "TDot TSemicolon expected.",
+ "TDot TSemicolon expected.",
+ "TDot TSemicolon expected.",
+ "TDot TSemicolon expected.",
+ "TDot TSemicolon expected.",
+ "TDot TSemicolon expected.",
+ "TDot TSemicolon expected.",
+ "TDot TSemicolon expected.",
+ "TDot TSemicolon expected.",
+ "TDot TSemicolon expected.",
+ "TStates THelpers TTokens TIgnored TProductions *EOF* expected.",
+ "TStates THelpers TTokens TIgnored TProductions *EOF* expected.",
+ "TDot TSemicolon expected.",
+ "TStates TTokens TIgnored TProductions TId *EOF* expected.",
+ "TStates TTokens TIgnored TProductions *EOF* expected.",
+ "TStates TTokens TIgnored TProductions *EOF* expected.",
+ "TPackage TStates THelpers TTokens TIgnored TProductions TTokenSpecifier TProductionSpecifier TId TPkgId expected.",
+ "TSemicolon expected.",
+ "TDot TSemicolon expected.",
+ "TEqual expected.",
+ "TStates TTokens TIgnored TProductions *EOF* expected.",
+ "TStates TTokens TIgnored TProductions TId *EOF* expected.",
+ "TId expected.",
+ "TTokens TIgnored TProductions *EOF* expected.",
+ "TTokens TIgnored TProductions *EOF* expected.",
+ "TDot TSemicolon expected.",
+ "TStates THelpers TTokens TIgnored TProductions *EOF* expected.",
+ "TSemicolon expected.",
+ "TSemicolon TLBkt TLPar TBar TId TChar TDecChar THexChar TString expected.",
+ "TStates TTokens TIgnored TProductions *EOF* expected.",
+ "TSemicolon TComma expected.",
+ "TSemicolon expected.",
+ "TSemicolon expected.",
+ "TIgnored TProductions TLBrace TId *EOF* expected.",
+ "TIgnored TProductions *EOF* expected.",
+ "TIgnored TProductions *EOF* expected.",
+ "TLBkt TLPar TId TChar TDecChar THexChar TString expected.",
+ "TLBkt TLPar TRPar TBar TId TChar TDecChar THexChar TString expected.",
+ "TSemicolon TLBkt TRBkt TLPar TRPar TPlus TMinus TQMark TStar TBar TSlash TId TChar TDecChar THexChar TString expected.",
+ "TDDot TSemicolon TLBkt TRBkt TLPar TRPar TPlus TMinus TQMark TStar TBar TSlash TId TChar TDecChar THexChar TString expected.",
+ "TDDot TSemicolon TLBkt TRBkt TLPar TRPar TPlus TMinus TQMark TStar TBar TSlash TId TChar TDecChar THexChar TString expected.",
+ "TDDot TSemicolon TLBkt TRBkt TLPar TRPar TPlus TMinus TQMark TStar TBar TSlash TId TChar TDecChar THexChar TString expected.",
+ "TSemicolon TLBkt TRBkt TLPar TRPar TPlus TMinus TQMark TStar TBar TSlash TId TChar TDecChar THexChar TString expected.",
+ "TSemicolon expected.",
+ "TSemicolon TRPar TBar TSlash expected.",
+ "TSemicolon TRPar TBar TSlash expected.",
+ "TSemicolon TLBkt TLPar TRPar TBar TSlash TId TChar TDecChar THexChar TString expected.",
+ "TSemicolon TLBkt TLPar TRPar TPlus TQMark TStar TBar TSlash TId TChar TDecChar THexChar TString expected.",
+ "TSemicolon TLBkt TRBkt TLPar TRPar TPlus TQMark TStar TBar TSlash TId TChar TDecChar THexChar TString expected.",
+ "TSemicolon TLBkt TRBkt TLPar TRPar TPlus TMinus TQMark TStar TBar TSlash TId TChar TDecChar THexChar TString expected.",
+ "TId expected.",
+ "TSemicolon expected.",
+ "TSemicolon TComma expected.",
+ "TTokens TIgnored TProductions *EOF* expected.",
+ "TId expected.",
+ "TIgnored TProductions *EOF* expected.",
+ "TIgnored TProductions TLBrace TId *EOF* expected.",
+ "TId expected.",
+ "TId expected.",
+ "TTokens expected.",
+ "TProductions *EOF* expected.",
+ "TProductions *EOF* expected.",
+ "TPlus TMinus expected.",
+ "TDDot TPlus TMinus expected.",
+ "TRPar expected.",
+ "TStates TTokens TIgnored TProductions TId *EOF* expected.",
+ "TSemicolon TLBkt TLPar TRPar TBar TSlash TId TChar TDecChar THexChar TString expected.",
+ "TSemicolon TRPar TSlash expected.",
+ "TSemicolon TRPar TBar TSlash expected.",
+ "TSemicolon TRPar TBar TSlash expected.",
+ "TTokenSpecifier TProductionSpecifier TSemicolon TLBkt TLPar TRPar TBar TSlash TId TChar TDecChar THexChar TString expected.",
+ "TTokenSpecifier TProductionSpecifier TSemicolon TLBkt TLPar TRPar TBar TSlash TId TChar TDecChar THexChar TString expected.",
+ "TTokenSpecifier TProductionSpecifier TSemicolon TLBkt TLPar TRPar TBar TSlash TId TChar TDecChar THexChar TString expected.",
+ "TSemicolon TLBkt TLPar TRPar TBar TSlash TId TChar TDecChar THexChar TString expected.",
+ "TTokenSpecifier TProductionSpecifier TSemicolon TLBkt TLPar TRPar TBar TSlash TId TChar TDecChar THexChar TString expected.",
+ "TSemicolon TComma expected.",
+ "TSemicolon expected.",
+ "TRBrace TComma TArrow expected.",
+ "TIgnored TProductions *EOF* expected.",
+ "TEqual expected.",
+ "TId expected.",
+ "TId *EOF* expected.",
+ "*EOF* expected.",
+ "*EOF* expected.",
+ "TLBkt TLPar TId TChar TDecChar THexChar TString expected.",
+ "TLBkt TLPar TId TChar TDecChar THexChar TString expected.",
+ "TLBkt TLPar TId TChar TDecChar THexChar TString expected.",
+ "TChar TDecChar THexChar expected.",
+ "TSemicolon TLBkt TRBkt TLPar TRPar TPlus TMinus TQMark TStar TBar TSlash TId TChar TDecChar THexChar TString expected.",
+ "TSemicolon TRPar TBar TSlash expected.",
+ "TSemicolon TRPar TSlash expected.",
+ "TId expected.",
+ "TRBrace TComma expected.",
+ "TRBrace TComma expected.",
+ "TSemicolon TLBkt TLPar TBar TSlash TId TChar TDecChar THexChar TString expected.",
+ "TSemicolon expected.",
+ "TEqual expected.",
+ "*EOF* expected.",
+ "TId *EOF* expected.",
+ "TRBkt expected.",
+ "TRBkt expected.",
+ "TRBrace TComma expected.",
+ "TId expected.",
+ "TRBrace expected.",
+ "TRBrace TComma expected.",
+ "TSemicolon TSlash expected.",
+ "TProductions *EOF* expected.",
+ "TTokenSpecifier TProductionSpecifier TSemicolon TLBkt TLPar TLBrace TBar TId expected.",
+ "*EOF* expected.",
+ "TSemicolon TLBkt TRBkt TLPar TRPar TPlus TMinus TQMark TStar TBar TSlash TId TChar TDecChar THexChar TString expected.",
+ "TSemicolon TLBkt TRBkt TLPar TRPar TPlus TMinus TQMark TStar TBar TSlash TId TChar TDecChar THexChar TString expected.",
+ "TRBrace TComma TArrow expected.",
+ "TId expected.",
+ "TRBrace expected.",
+ "TSemicolon TLBkt TLPar TBar TId TChar TDecChar THexChar TString expected.",
+ "TSemicolon expected.",
+ "TSemicolon expected.",
+ "TTokenSpecifier TProductionSpecifier TLBkt TRPar TLBrace TId expected.",
+ "TId expected.",
+ "TSemicolon expected.",
+ "TSemicolon TBar expected.",
+ "TTokenSpecifier TProductionSpecifier TSemicolon TLBkt TBar TId expected.",
+ "TTokenSpecifier TProductionSpecifier TSemicolon TLBkt TRPar TBar TId expected.",
+ "TRBrace TComma expected.",
+ "TSemicolon expected.",
+ "TIgnored TProductions TLBrace TId *EOF* expected.",
+ "TTokenSpecifier TProductionSpecifier TLBkt TRPar TId expected.",
+ "TRBrace expected.",
+ "TId *EOF* expected.",
+ "TTokenSpecifier TProductionSpecifier TSemicolon TLBkt TLPar TLBrace TBar TId expected.",
+ "TSemicolon expected.",
+ "TSemicolon TBar expected.",
+ "TId expected.",
+ "TSemicolon TBar expected.",
+ "TTokenSpecifier TProductionSpecifier TSemicolon TLBkt TRPar TBar TId expected.",
+ "TTokenSpecifier TProductionSpecifier TId expected.",
+ "TTokenSpecifier TProductionSpecifier TId expected.",
+ "TRPar expected.",
+ "TTokenSpecifier TProductionSpecifier TSemicolon TLBkt TRPar TBar TId expected.",
+ "TSemicolon TBar expected.",
+ "TSemicolon expected.",
+ "TRBkt expected.",
+ "TSemicolon TRPar TBar expected.",
+ "TDot expected.",
+ "TDot expected.",
+ "TId expected.",
+ "TId expected.",
+ "TSemicolon TBar expected.",
+ "TColon expected.",
+ "TId expected.",
+ "TId expected.",
+ "TTokenSpecifier TProductionSpecifier TSemicolon TLBkt TRPar TPlus TQMark TStar TBar TId expected.",
+ "TTokenSpecifier TProductionSpecifier TId expected.",
+ "TTokenSpecifier TProductionSpecifier TSemicolon TLBkt TRPar TBar TId expected.",
+ }; */
+}
Added: sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/parser/ParserException.java
===================================================================
--- sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/parser/ParserException.java (rev 0)
+++ sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/parser/ParserException.java 2012-07-12 16:49:25 UTC (rev 248)
@@ -0,0 +1,16 @@
+/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+ * This file is part of SableCC. *
+ * See the file "LICENSE" for copyright information and the *
+ * terms and conditions for copying, distribution and *
+ * modification of SableCC. *
+ * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
+
+package org.sablecc.sablecc.parser;
+
+public class ParserException extends Exception
+{
+ ParserException(String message)
+ {
+ super(message);
+ }
+}
Added: sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/parser/State.java
===================================================================
--- sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/parser/State.java (rev 0)
+++ sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/parser/State.java 2012-07-12 16:49:25 UTC (rev 248)
@@ -0,0 +1,20 @@
+/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+ * This file is part of SableCC. *
+ * See the file "LICENSE" for copyright information and the *
+ * terms and conditions for copying, distribution and *
+ * modification of SableCC. *
+ * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
+
+package org.sablecc.sablecc.parser;
+
+final class State
+{
+ final int state;
+ final Object node;
+
+ State(int state, Object node)
+ {
+ this.state = state;
+ this.node = node;
+ }
+}
Added: sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/parser/TokenIndex.java
===================================================================
--- sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/parser/TokenIndex.java (rev 0)
+++ sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/parser/TokenIndex.java 2012-07-12 16:49:25 UTC (rev 248)
@@ -0,0 +1,186 @@
+/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+ * This file is part of SableCC. *
+ * See the file "LICENSE" for copyright information and the *
+ * terms and conditions for copying, distribution and *
+ * modification of SableCC. *
+ * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
+
+package org.sablecc.sablecc.parser;
+
+import org.sablecc.sablecc.analysis.AnalysisAdapter;
+import org.sablecc.sablecc.node.*;
+
+class TokenIndex extends AnalysisAdapter
+{
+ int index;
+
+ public void caseTPackage(TPackage node)
+ {
+ index = 0;
+ }
+
+ public void caseTStates(TStates node)
+ {
+ index = 1;
+ }
+
+ public void caseTHelpers(THelpers node)
+ {
+ index = 2;
+ }
+
+ public void caseTTokens(TTokens node)
+ {
+ index = 3;
+ }
+
+ public void caseTIgnored(TIgnored node)
+ {
+ index = 4;
+ }
+
+ public void caseTProductions(TProductions node)
+ {
+ index = 5;
+ }
+
+ public void caseTTokenSpecifier(TTokenSpecifier node)
+ {
+ index = 6;
+ }
+
+ public void caseTProductionSpecifier(TProductionSpecifier node)
+ {
+ index = 7;
+ }
+
+ public void caseTDot(TDot node)
+ {
+ index = 8;
+ }
+
+ public void caseTDDot(TDDot node)
+ {
+ index = 9;
+ }
+
+ public void caseTSemicolon(TSemicolon node)
+ {
+ index = 10;
+ }
+
+ public void caseTEqual(TEqual node)
+ {
+ index = 11;
+ }
+
+ public void caseTLBkt(TLBkt node)
+ {
+ index = 12;
+ }
+
+ public void caseTRBkt(TRBkt node)
+ {
+ index = 13;
+ }
+
+ public void caseTLPar(TLPar node)
+ {
+ index = 14;
+ }
+
+ public void caseTRPar(TRPar node)
+ {
+ index = 15;
+ }
+
+ public void caseTLBrace(TLBrace node)
+ {
+ index = 16;
+ }
+
+ public void caseTRBrace(TRBrace node)
+ {
+ index = 17;
+ }
+
+ public void caseTPlus(TPlus node)
+ {
+ index = 18;
+ }
+
+ public void caseTMinus(TMinus node)
+ {
+ index = 19;
+ }
+
+ public void caseTQMark(TQMark node)
+ {
+ index = 20;
+ }
+
+ public void caseTStar(TStar node)
+ {
+ index = 21;
+ }
+
+ public void caseTBar(TBar node)
+ {
+ index = 22;
+ }
+
+ public void caseTComma(TComma node)
+ {
+ index = 23;
+ }
+
+ public void caseTSlash(TSlash node)
+ {
+ index = 24;
+ }
+
+ public void caseTArrow(TArrow node)
+ {
+ index = 25;
+ }
+
+ public void caseTColon(TColon node)
+ {
+ index = 26;
+ }
+
+ public void caseTId(TId node)
+ {
+ index = 27;
+ }
+
+ public void caseTChar(TChar node)
+ {
+ index = 28;
+ }
+
+ public void caseTDecChar(TDecChar node)
+ {
+ index = 29;
+ }
+
+ public void caseTHexChar(THexChar node)
+ {
+ index = 30;
+ }
+
+ public void caseTString(TString node)
+ {
+ index = 31;
+ }
+
+ public void caseTPkgId(TPkgId node)
+ {
+ index = 32;
+ }
+
+ public void caseEOF(EOF node)
+ {
+ index = 33;
+ }
+}
Added: sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/parser/parser.dat
===================================================================
(Binary files differ)
Property changes on: sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/parser/parser.dat
___________________________________________________________________
Added: svn:mime-type
+ application/octet-stream
Added: sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/parser.txt
===================================================================
--- sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/parser.txt (rev 0)
+++ sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/parser.txt 2012-07-12 16:49:25 UTC (rev 248)
@@ -0,0 +1,445 @@
+/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+ * This file is part of SableCC. *
+ * See the file "LICENSE" for copyright information and the *
+ * terms and conditions for copying, distribution and *
+ * modification of SableCC. *
+ * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
+
+Macro:ParserHeader
+/* This file was generated by SableCC (http://www.sablecc.org/). */
+
+package $0$;
+
+import $1$.*;
+import $2$.*;
+import $3$.*;
+import java.util.*;
+
+import java.io.DataInputStream;
+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])
+ {
+
+$
+
+Macro:ParserReduceFilter
+ case $0$: { Node node = new$0$(); push(goTo($1$), node, true); } break;
+
+$
+
+Macro:ParserReduceNoFilter
+ case $0$: { Node node = new$0$(); push(goTo($1$), node, false); } break;
+
+$
+
+Macro:ParserParseTail
+ }
+ break;
+ case ACCEPT:
+ {
+ EOF node2 = (EOF) lexer.next();
+ $0$ node1 = ($0$) pop();
+ Start node = new Start(node1, node2);
+ return node;
+ }
+ case ERROR:
+ throw new ParserException(last_token,
+ "[" + last_line + "," + last_pos + "] " +
+ errorMessages[errors[action[1]]]);
+ }
+ }
+ }
+
+
+$
+
+Macro:ParserNewHeader
+ Node new$0$()
+ {
+
+$
+
+Macro:ParserNewBodyDecl
+ $0$ node$1$ = ($0$) pop();
+
+$
+
+Macro:ParserNewBodyDeclNull
+ $0$ node$1$ = null;
+
+$
+
+Macro:ParserNewBodyNew
+ $0$ node = new $0$(
+$
+
+Macro:ParserNewBodyParams
+$0$node$1$
+$
+
+Macro:ParserNewTail
+);
+ return node;
+ }
+
+
+$
+
+Macro:ParserActionHeader
+ private static int[][][] actionTable;
+/* {
+
+$
+
+Macro:ParserActionTail
+ };*/
+
+$
+
+Macro:ParserGotoHeader
+ private static int[][][] gotoTable;
+/* {
+
+$
+
+Macro:ParserGotoTail
+ };*/
+
+$
+
+Macro:ParserErrorsHeader
+ private static String[] errorMessages;
+/* {
+
+$
+
+Macro:ParserErrorsTail
+ };*/
+
+$
+
+Macro:ParserErrorIndexHeader
+ private static int[] errors;
+/* {
+
+$
+
+Macro:ParserErrorIndexTail
+
+ };*/
+
+$
+
+Macro:ParserTail
+}
+
+$
+
+Macro:TokenIndexHeader
+/* This file was generated by SableCC (http://www.sablecc.org/). */
+
+package $0$;
+
+import $1$.*;
+import $2$.*;
+
+class TokenIndex extends AnalysisAdapter
+{
+ int index;
+
+$
+
+Macro:TokenIndexBody
+
+ public void case$0$($0$ node)
+ {
+ index = $1$;
+ }
+
+$
+
+Macro:TokenIndexTail
+
+ public void caseEOF(EOF node)
+ {
+ index = $0$;
+ }
+}
+
+$
+
+Macro:ParserException
+/* This file was generated by SableCC (http://www.sablecc.org/). */
+
+package $0$;
+
+import $1$.*;
+
+public class ParserException extends Exception
+{
+ Token token;
+
+ public ParserException(Token token, String message)
+ {
+ super(message);
+ this.token = token;
+ }
+
+ public Token getToken()
+ {
+ return token;
+ }
+}
+
+$
+
+Macro:State
+/* This file was generated by SableCC (http://www.sablecc.org/). */
+
+package $0$;
+
+final class State
+{
+ int state;
+ Object node;
+
+ State(int state, Object node)
+ {
+ this.state = state;
+ this.node = node;
+ }
+}
+
+$
+
Added: sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/productions.txt
===================================================================
--- sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/productions.txt (rev 0)
+++ sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/productions.txt 2012-07-12 16:49:25 UTC (rev 248)
@@ -0,0 +1,245 @@
+/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+ * This file is part of SableCC. *
+ * See the file "LICENSE" for copyright information and the *
+ * terms and conditions for copying, distribution and *
+ * modification of SableCC. *
+ * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
+
+Macro:Production
+/* This file was generated by SableCC (http://www.sablecc.org/). */
+
+package $0$;
+
+public abstract class $1$ extends Node
+{
+}
+
+$
+
+Macro:HiddenAlternative0
+/* This file was generated by SableCC (http://www.sablecc.org/). */
+
+package $0$;
+
+import $1$.*;
+
+public final class $2$ extends $3$
+{
+ public $2$()
+ {
+ }
+
+ public Object clone()
+ {
+ throw new RuntimeException("Unsupported Operation");
+ }
+
+ public void apply(Switch sw)
+ {
+ throw new RuntimeException("Switch not supported.");
+ }
+
+ void removeChild(Node child)
+ {
+ }
+
+ void replaceChild(Node oldChild, Node newChild)
+ {
+ }
+
+ public String toString()
+ {
+ return "";
+ }
+}
+
+$
+
+Macro:HiddenAlternative1
+/* This file was generated by SableCC (http://www.sablecc.org/). */
+
+package $0$;
+
+import $1$.*;
+
+public final class $2$ extends $3$
+{
+ private $4$ _$5$_;
+
+ public $2$()
+ {
+ }
+
+ public $2$(
+ $4$ _$5$_)
+ {
+ set$4$(_$5$_);
+ }
+
+ public Object clone()
+ {
+ throw new RuntimeException("Unsupported Operation");
+ }
+
+ public void apply(Switch sw)
+ {
+ throw new RuntimeException("Switch not supported.");
+ }
+
+ public $4$ get$4$()
+ {
+ return _$5$_;
+ }
+
+ public void set$4$($4$ node)
+ {
+ if(_$5$_ != null)
+ {
+ _$5$_.parent(null);
+ }
+
+ if(node != null)
+ {
+ if(node.parent() != null)
+ {
+ node.parent().removeChild(node);
+ }
+
+ node.parent(this);
+ }
+
+ _$5$_ = node;
+ }
+
+ void removeChild(Node child)
+ {
+ if(_$5$_ == child)
+ {
+ _$5$_ = null;
+ }
+ }
+
+ void replaceChild(Node oldChild, Node newChild)
+ {
+ }
+
+ public String toString()
+ {
+ return "" +
+ toString(_$5$_);
+ }
+}
+
+$
+
+Macro:HiddenAlternative2
+/* This file was generated by SableCC (http://www.sablecc.org/). */
+
+package $0$;
+
+import $1$.*;
+
+public final class $2$ extends $3$
+{
+ private $3$ _$6$_;
+ private $4$ _$5$_;
+
+ public $2$()
+ {
+ }
+
+ public $2$(
+ $3$ _$6$_,
+ $4$ _$5$_)
+ {
+ set$3$(_$6$_);
+ set$4$(_$5$_);
+ }
+
+ public Object clone()
+ {
+ throw new RuntimeException("Unsupported Operation");
+ }
+
+ public void apply(Switch sw)
+ {
+ throw new RuntimeException("Switch not supported.");
+ }
+
+ public $3$ get$3$()
+ {
+ return _$6$_;
+ }
+
+ public void set$3$($3$ node)
+ {
+ if(_$6$_ != null)
+ {
+ _$6$_.parent(null);
+ }
+
+ if(node != null)
+ {
+ if(node.parent() != null)
+ {
+ node.parent().removeChild(node);
+ }
+
+ node.parent(this);
+ }
+
+ _$6$_ = node;
+ }
+
+ public $4$ get$4$()
+ {
+ return _$5$_;
+ }
+
+ public void set$4$($4$ node)
+ {
+ if(_$5$_ != null)
+ {
+ _$5$_.parent(null);
+ }
+
+ if(node != null)
+ {
+ if(node.parent() != null)
+ {
+ node.parent().removeChild(node);
+ }
+
+ node.parent(this);
+ }
+
+ _$5$_ = node;
+ }
+
+ void removeChild(Node child)
+ {
+ if(_$6$_ == child)
+ {
+ _$6$_ = null;
+ }
+
+ if(_$5$_ == child)
+ {
+ _$5$_ = null;
+ }
+ }
+
+ void replaceChild(Node oldChild, Node newChild)
+ {
+ }
+
+ public String toString()
+ {
+ return "" +
+ toString(_$6$_) +
+ toString(_$5$_);
+ }
+}
+
+$
+
Added: sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/tokens.txt
===================================================================
--- sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/tokens.txt (rev 0)
+++ sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/tokens.txt 2012-07-12 16:49:25 UTC (rev 248)
@@ -0,0 +1,87 @@
+/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+ * This file is part of SableCC. *
+ * See the file "LICENSE" for copyright information and the *
+ * terms and conditions for copying, distribution and *
+ * modification of SableCC. *
+ * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
+
+// 0 : xxx.node
+// 1 : xxx.analysis
+// 2 : Txxx
+Macro:VariableTextToken
+/* This file was generated by SableCC (http://www.sablecc.org/). */
+
+package $0$;
+
+import $1$.*;
+
+public final class $2$ extends Token
+{
+ public $2$(String text)
+ {
+ setText(text);
+ }
+
+ public $2$(String text, int line, int pos)
+ {
+ setText(text);
+ setLine(line);
+ setPos(pos);
+ }
+
+ public Object clone()
+ {
+ return new $2$(getText(), getLine(), getPos());
+ }
+
+ public void apply(Switch sw)
+ {
+ ((Analysis) sw).case$2$(this);
+ }
+}
+
+$
+
+// 0 : xxx.node
+// 1 : xxx.analysis
+// 2 : Txxx
+// 3 : xxx
+Macro:FixedTextToken
+/* This file was generated by SableCC (http://www.sablecc.org/). */
+
+package $0$;
+
+import $1$.*;
+
+public final class $2$ extends Token
+{
+ public $2$()
+ {
+ super.setText("$3$");
+ }
+
+ public $2$(int line, int pos)
+ {
+ super.setText("$3$");
+ setLine(line);
+ setPos(pos);
+ }
+
+ public Object clone()
+ {
+ return new $2$(getLine(), getPos());
+ }
+
+ public void apply(Switch sw)
+ {
+ ((Analysis) sw).case$2$(this);
+ }
+
+ public void setText(String text)
+ {
+ throw new RuntimeException("Cannot change $2$ text.");
+ }
+}
+
+$
+
Added: sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/utils.txt
===================================================================
--- sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/utils.txt (rev 0)
+++ sablecc/sablecc/branches/upstream/current/src/org/sablecc/sablecc/utils.txt 2012-07-12 16:49:25 UTC (rev 248)
@@ -0,0 +1,529 @@
+/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+ * This file is part of SableCC. *
+ * See the file "LICENSE" for copyright information and the *
+ * terms and conditions for copying, distribution and *
+ * modification of SableCC. *
+ * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
+
+Macro:Start
+/* This file was generated by SableCC (http://www.sablecc.org/). */
+
+package $0$;
+
+import $1$.*;
+
+public final class Start extends Node
+{
+ private $2$ _$3$_;
+ private EOF _eof_;
+
+ public Start()
+ {
+ }
+
+ public Start(
+ $2$ _$3$_,
+ EOF _eof_)
+ {
+ set$2$(_$3$_);
+ setEOF(_eof_);
+ }
+
+ public Object clone()
+ {
+ return new Start(
+ ($2$) cloneNode(_$3$_),
+ (EOF) cloneNode(_eof_));
+ }
+
+ public void apply(Switch sw)
+ {
+ ((Analysis) sw).caseStart(this);
+ }
+
+ public $2$ get$2$()
+ {
+ return _$3$_;
+ }
+
+ public void set$2$($2$ node)
+ {
+ if(_$3$_ != null)
+ {
+ _$3$_.parent(null);
+ }
+
+ if(node != null)
+ {
+ if(node.parent() != null)
+ {
+ node.parent().removeChild(node);
+ }
+
+ node.parent(this);
+ }
+
+ _$3$_ = node;
+ }
+
+ public EOF getEOF()
+ {
+ return _eof_;
+ }
+
+ public void setEOF(EOF node)
+ {
+ if(_eof_ != null)
+ {
+ _eof_.parent(null);
+ }
+
+ if(node != null)
+ {
+ if(node.parent() != null)
+ {
+ node.parent().removeChild(node);
+ }
+
+ node.parent(this);
+ }
+
+ _eof_ = node;
+ }
+
+ void removeChild(Node child)
+ {
+ if(_$3$_ == child)
+ {
+ _$3$_ = null;
+ return;
+ }
+
+ if(_eof_ == child)
+ {
+ _eof_ = null;
+ return;
+ }
+ }
+
+ void replaceChild(Node oldChild, Node newChild)
+ {
+ if(_$3$_ == oldChild)
+ {
+ set$2$(($2$) newChild);
+ return;
+ }
+
+ if(_eof_ == oldChild)
+ {
+ setEOF((EOF) newChild);
+ return;
+ }
+ }
+
+ public String toString()
+ {
+ return "" +
+ toString(_$3$_) +
+ toString(_eof_);
+ }
+}
+
+$
+
+Macro:EOF
+/* This file was generated by SableCC (http://www.sablecc.org/). */
+
+package $0$;
+
+import $1$.*;
+
+public final class EOF extends Token
+{
+ public EOF()
+ {
+ setText("");
+ }
+
+ public EOF(int line, int pos)
+ {
+ setText("");
+ setLine(line);
+ setPos(pos);
+ }
+
+ public Object clone()
+ {
+ return new EOF(getLine(), getPos());
+ }
+
+ public void apply(Switch sw)
+ {
+ ((Analysis) sw).caseEOF(this);
+ }
+}
+
+$
+
+Macro:Token
+/* This file was generated by SableCC (http://www.sablecc.org/). */
+
+package $0$;
+
+public abstract class Token extends Node
+{
+ private String text;
+ private int line;
+ private int pos;
+
+ public String getText()
+ {
+ return text;
+ }
+
+ public void setText(String text)
+ {
+ this.text = text;
+ }
+
+ public int getLine()
+ {
+ return line;
+ }
+
+ public void setLine(int line)
+ {
+ this.line = line;
+ }
+
+ public int getPos()
+ {
+ return pos;
+ }
+
+ public void setPos(int pos)
+ {
+ this.pos = pos;
+ }
+
+ public String toString()
+ {
+ return text + " ";
+ }
+
+ void removeChild(Node child)
+ {
+ }
+
+ void replaceChild(Node oldChild, Node newChild)
+ {
+ }
+}
+
+$
+
+Macro:Node
+/* This file was generated by SableCC (http://www.sablecc.org/). */
+
+package $0$;
+
+import java.util.*;
+import $1$.*;
+
+public abstract class Node implements Switchable, Cloneable
+{
+ private Node parent;
+
+ public abstract Object clone();
+
+ public Node parent()
+ {
+ return parent;
+ }
+
+ void parent(Node parent)
+ {
+ this.parent = parent;
+ }
+
+ abstract void removeChild(Node child);
+ abstract void replaceChild(Node oldChild, Node newChild);
+
+ public void replaceBy(Node node)
+ {
+ if(parent != null)
+ {
+ parent.replaceChild(this, node);
+ }
+ }
+
+ protected String toString(Node node)
+ {
+ if(node != null)
+ {
+ return node.toString();
+ }
+
+ return "";
+ }
+
+ protected String toString(List list)
+ {
+ StringBuffer s = new StringBuffer();
+
+ for(Iterator i = list.iterator(); i.hasNext();)
+ {
+ s.append(i.next());
+ }
+
+ return s.toString();
+ }
+
+ protected Node cloneNode(Node node)
+ {
+ if(node != null)
+ {
+ return (Node) node.clone();
+ }
+
+ return null;
+ }
+
+ protected List cloneList(List list)
+ {
+ List clone = new LinkedList();
+
+ for(Iterator i = list.iterator(); i.hasNext();)
+ {
+ clone.add(((Node) i.next()).clone());
+ }
+
+ return clone;
+ }
+}
+
+$
+
+Macro:NodeCast
+/* This file was generated by SableCC (http://www.sablecc.org/). */
+
+package $0$;
+
+
+public class NodeCast implements Cast
+{
+ public final static NodeCast instance = new NodeCast();
+
+ private NodeCast()
+ {
+ }
+
+ public Object cast(Object o)
+ {
+ return (Node) o;
+ }
+}
+
+$
+
+Macro:Switch
+/* This file was generated by SableCC (http://www.sablecc.org/). */
+
+package $0$;
+
+public interface Switch
+{
+}
+
+$
+
+Macro:Switchable
+/* This file was generated by SableCC (http://www.sablecc.org/). */
+
+package $0$;
+
+public interface Switchable
+{
+ void apply(Switch sw);
+}
+
+$
+
+Macro:TypedLinkedList
+/* This file was generated by SableCC (http://www.sablecc.org/). */
+
+package $0$;
+
+import java.util.*;
+
+public class TypedLinkedList extends LinkedList
+{
+ Cast cast;
+
+ public TypedLinkedList()
+ {
+ super();
+
+ cast = NoCast.instance;
+ }
+
+ public TypedLinkedList(Collection c)
+ {
+ super(c);
+
+ cast = NoCast.instance;
+ }
+
+ public TypedLinkedList(Cast cast)
+ {
+ super();
+
+ this.cast = cast;
+ }
+
+ public TypedLinkedList(Collection c, Cast cast)
+ {
+ super(c);
+
+ this.cast = cast;
+ }
+
+ public Cast getCast()
+ {
+ return cast;
+ }
+
+ public void add(int index, Object element)
+ {
+ super.add(index, cast.cast(element));
+ }
+
+ public boolean add(Object o)
+ {
+ return super.add(cast.cast(o));
+ }
+
+ public boolean addAll(Collection c)
+ {
+ for(Iterator i = c.iterator(); i.hasNext(); )
+ {
+ super.add(cast.cast(i.next()));
+ }
+ return true;
+ }
+
+ public boolean addAll(int index, Collection c)
+ {
+ int pos = index;
+ for(Iterator i = c.iterator(); i.hasNext(); )
+ {
+ super.add(pos++, cast.cast(i.next()));
+ }
+ return true;
+ }
+
+ public void addFirst(Object o)
+ {
+ super.addFirst(cast.cast(o));
+ }
+
+ public void addLast(Object o)
+ {
+ super.addLast(cast.cast(o));
+ }
+
+ public ListIterator listIterator(int index)
+ {
+ return new TypedLinkedListIterator(super.listIterator(index));
+ }
+
+ private class TypedLinkedListIterator implements ListIterator
+ {
+ ListIterator iterator;
+
+ TypedLinkedListIterator(ListIterator iterator)
+ {
+ this.iterator = iterator;
+ }
+
+ public boolean hasNext()
+ {
+ return iterator.hasNext();
+ }
+
+ public Object next()
+ {
+ return iterator.next();
+ }
+
+ public boolean hasPrevious()
+ {
+ return iterator.hasPrevious();
+ }
+
+ public Object previous()
+ {
+ return iterator.previous();
+ }
+
+ public int nextIndex()
+ {
+ return iterator.nextIndex();
+ }
+
+ public int previousIndex()
+ {
+ return iterator.previousIndex();
+ }
+
+ public void remove()
+ {
+ iterator.remove();
+ }
+
+ public void set(Object o)
+ {
+ iterator.set(cast.cast(o));
+ }
+
+ public void add(Object o)
+ {
+ iterator.add(cast.cast(o));
+ }
+ }
+}
+
+$
+
+Macro:Cast
+/* This file was generated by SableCC (http://www.sablecc.org/). */
+
+package $0$;
+
+public interface Cast
+{
+ Object cast(Object o);
+}
+
+$
+
+Macro:NoCast
+/* This file was generated by SableCC (http://www.sablecc.org/). */
+
+package $0$;
+
+public class NoCast implements Cast
+{
+ public final static NoCast instance = new NoCast();
+
+ private NoCast()
+ {
+ }
+
+ public Object cast(Object o)
+ {
+ return o;
+ }
+}
+
+$
More information about the pkg-eucalyptus-commits
mailing list