Full Code of javacc/javacc for AI

master 6374549940fd cached
478 files
3.5 MB
944.7k tokens
2375 symbols
1 requests
Download .txt
Showing preview only (3,769K chars total). Download the full file or copy to clipboard to get everything.
Repository: javacc/javacc
Branch: master
Commit: 6374549940fd
Files: 478
Total size: 3.5 MB

Directory structure:
gitextract_prxrwsqf/

├── .classpath
├── .editorconfig
├── .gitattributes
├── .github/
│   └── workflows/
│       └── master.yml
├── .gitignore
├── .project
├── .travis.yml
├── LICENSE
├── README.md
├── bootstrap/
│   └── javacc.jar
├── build.cmd
├── build.xml
├── docs/
│   ├── .gitignore
│   ├── Gemfile
│   ├── LICENSE
│   ├── _config.yml
│   ├── _layouts/
│   │   └── default.html
│   ├── assets/
│   │   └── css/
│   │       └── style.scss
│   ├── documentation/
│   │   ├── api.md
│   │   ├── bnf.md
│   │   ├── cli.md
│   │   ├── grammar.md
│   │   ├── index.md
│   │   ├── javacc.html
│   │   ├── javacc.txt
│   │   ├── jjdoc.md
│   │   └── jjtree.md
│   ├── downloads.md
│   ├── faq.md
│   ├── index.md
│   ├── release-notes.md
│   └── tutorials/
│       ├── charstream.md
│       ├── error-handling.md
│       ├── examples.md
│       ├── index.md
│       ├── lexer-tips.md
│       ├── lookahead.md
│       └── token-manager.md
├── examples/
│   ├── CORBA-IDL/
│   │   ├── Hello.idl
│   │   ├── IDL.jj
│   │   └── README
│   ├── GUIParsing/
│   │   ├── ParserVersion/
│   │   │   ├── CalcGUI.java
│   │   │   ├── CalcInput.jj
│   │   │   ├── Main.java
│   │   │   ├── ProducerConsumer.java
│   │   │   ├── README
│   │   │   └── TokenCollector.java
│   │   ├── README
│   │   └── TokenMgrVersion/
│   │       ├── CalcGUI.java
│   │       ├── CalcInput.jj
│   │       ├── CharCollector.java
│   │       ├── Main.java
│   │       ├── MyLexer.java
│   │       └── README
│   ├── Interpreter/
│   │   ├── ASTAddNode.java
│   │   ├── ASTAndNode.java
│   │   ├── ASTAssignment.java
│   │   ├── ASTBitwiseAndNode.java
│   │   ├── ASTBitwiseComplNode.java
│   │   ├── ASTBitwiseOrNode.java
│   │   ├── ASTBitwiseXorNode.java
│   │   ├── ASTBlock.java
│   │   ├── ASTCompilationUnit.java
│   │   ├── ASTDivNode.java
│   │   ├── ASTEQNode.java
│   │   ├── ASTFalseNode.java
│   │   ├── ASTGENode.java
│   │   ├── ASTGTNode.java
│   │   ├── ASTId.java
│   │   ├── ASTIfStatement.java
│   │   ├── ASTIntConstNode.java
│   │   ├── ASTLENode.java
│   │   ├── ASTLTNode.java
│   │   ├── ASTModNode.java
│   │   ├── ASTMulNode.java
│   │   ├── ASTNENode.java
│   │   ├── ASTNotNode.java
│   │   ├── ASTOrNode.java
│   │   ├── ASTReadStatement.java
│   │   ├── ASTStatementExpression.java
│   │   ├── ASTSubtractNode.java
│   │   ├── ASTTrueNode.java
│   │   ├── ASTVarDeclaration.java
│   │   ├── ASTWhileStatement.java
│   │   ├── ASTWriteStatement.java
│   │   ├── MyNode.java
│   │   ├── Node.java
│   │   ├── README
│   │   ├── SPL.java
│   │   ├── SPL.jjt
│   │   ├── fact.spl
│   │   ├── odd.spl
│   │   └── sqrt.spl
│   ├── JJTreeExamples/
│   │   ├── cpp/
│   │   │   ├── ASTMyID.cc
│   │   │   ├── ASTMyID.h
│   │   │   ├── ASTMyOtherID.cc
│   │   │   ├── ASTMyOtherID.h
│   │   │   ├── EG4DumpVisitor.cc
│   │   │   ├── EG4DumpVisitor.h
│   │   │   ├── MyErrorHandler.cc
│   │   │   ├── MyErrorHandler.h
│   │   │   ├── README
│   │   │   ├── build.xml
│   │   │   ├── eg1.cc
│   │   │   ├── eg1.jjt
│   │   │   ├── eg2.cc
│   │   │   ├── eg2.jjt
│   │   │   ├── eg3.cc
│   │   │   ├── eg3.jjt
│   │   │   ├── eg4.cc
│   │   │   └── eg4.jjt
│   │   └── java/
│   │       ├── ASTMyID.java
│   │       ├── ASTMyOtherID.java
│   │       ├── Eg4DumpVisitor.java
│   │       ├── README
│   │       ├── build.xml
│   │       ├── eg1.jjt
│   │       ├── eg2.jjt
│   │       ├── eg3.jjt
│   │       └── eg4.jjt
│   ├── JavaCCGrammar/
│   │   └── JavaCC.jj
│   ├── JavaGrammars/
│   │   ├── 1.5/
│   │   │   ├── Java1.5.jj
│   │   │   ├── JavaGenerics.java
│   │   │   ├── Main.java
│   │   │   ├── MyToken.java
│   │   │   ├── README
│   │   │   ├── Test.java
│   │   │   └── build.xml
│   │   ├── Java1.0.2.jj
│   │   ├── Java1.0.2LS.jj
│   │   ├── Java1.1-cpp.jj
│   │   ├── Java1.1.jj
│   │   ├── Java1.1noLA.jj
│   │   ├── OPTIMIZING
│   │   ├── README
│   │   ├── Test.java
│   │   └── cpp/
│   │       ├── .gitignore
│   │       ├── HelloWorld.java
│   │       ├── Java1.1.jjt
│   │       ├── Makefile
│   │       ├── allmain.cc
│   │       ├── main.cc
│   │       ├── myparser.h
│   │       ├── mytm.h
│   │       └── token_base.h
│   ├── Lookahead/
│   │   ├── Example1.jj
│   │   ├── Example10.jj
│   │   ├── Example2.jj
│   │   ├── Example3.jj
│   │   ├── Example4.jj
│   │   ├── Example5.jj
│   │   ├── Example6.jj
│   │   ├── Example7.jj
│   │   ├── Example8.jj
│   │   ├── Example9.jj
│   │   └── README
│   ├── MailProcessing/
│   │   ├── Digest.jj
│   │   ├── Faq.jj
│   │   ├── README
│   │   └── sampleMailFile
│   ├── Obfuscator/
│   │   ├── Globals.java
│   │   ├── IdsFile.jj
│   │   ├── Java1.1.jj
│   │   ├── Main.java
│   │   ├── MapFile.jj
│   │   ├── Obfuscator.java
│   │   ├── README
│   │   ├── input/
│   │   │   ├── package1/
│   │   │   │   └── Main.java
│   │   │   └── package2/
│   │   │       └── Incr.java
│   │   ├── maps
│   │   ├── nochangeids
│   │   └── useids
│   ├── README
│   ├── SimpleExamples/
│   │   ├── IdList.jj
│   │   ├── NL_Xlator.jj
│   │   ├── README
│   │   ├── Simple1.jj
│   │   ├── Simple2.jj
│   │   └── Simple3.jj
│   ├── Transformer/
│   │   ├── ASTCompilationUnit.java
│   │   ├── ASTSpecialBlock.java
│   │   ├── README
│   │   ├── SimpleNode.java
│   │   ├── ToyJava.jjt
│   │   └── divide.toy
│   └── VTransformer/
│       ├── AddAcceptVisitor.java
│       ├── Java1.1.jjt
│       ├── Main.java
│       ├── README
│       ├── SimpleNode.java
│       └── UnparseVisitor.java
├── grammars/
│   ├── AsnParser.jj
│   ├── BackupCharStream.java
│   ├── CPPParser.jj
│   ├── CParser.jj
│   ├── ChemNumber.jj
│   ├── Cobol.jj
│   ├── DTDParser.jj
│   ├── EcmaScript.jjt
│   ├── ExpressParser.jj
│   ├── FormsPlSql.jj
│   ├── GdmoTranslator.jj
│   ├── IDLParser.jj
│   ├── JSONParser.jjt
│   ├── OberonParser.jj
│   ├── PHP.jj
│   ├── PetalParser.jj
│   ├── PlSql.jj
│   ├── RTFParser.jj
│   ├── SQLParser.jj
│   └── infosapient.jj
├── lib/
│   ├── ant-contrib-1.0b3.jar
│   ├── cpptasks.jar
│   ├── jacocoagent-0.8.10.jar
│   ├── jacocoant-0.8.10.jar
│   ├── junit.jar
│   ├── junit3.8.1/
│   │   └── junit.jar
│   └── maven-ant-tasks-2.1.3.jar
├── make_bundle.cmd
├── make_bundle.sh
├── makedist
├── old_but_saved/
│   ├── NfaStateTest.java
│   ├── genkey.bat
│   ├── jarsigner_pom.txt
│   ├── keystore
│   └── maven-pmd-plugin-default.xml
├── pom.xml
├── scripts/
│   ├── javacc
│   ├── javacc.bat
│   ├── jjdoc
│   ├── jjdoc.bat
│   ├── jjrun
│   ├── jjtree
│   └── jjtree.bat
├── src/
│   ├── main/
│   │   ├── java/
│   │   │   ├── JavaCCInterpreter.java
│   │   │   ├── javacc.java
│   │   │   ├── jjdoc.java
│   │   │   ├── jjtree.java
│   │   │   ├── org/
│   │   │   │   └── javacc/
│   │   │   │       ├── Version.java
│   │   │   │       ├── jjdoc/
│   │   │   │       │   ├── BNFGenerator.java
│   │   │   │       │   ├── Generator.java
│   │   │   │       │   ├── HTMLGenerator.java
│   │   │   │       │   ├── JJDoc.java
│   │   │   │       │   ├── JJDocGlobals.java
│   │   │   │       │   ├── JJDocMain.java
│   │   │   │       │   ├── JJDocOptions.java
│   │   │   │       │   ├── TextGenerator.java
│   │   │   │       │   ├── XTextGenerator.java
│   │   │   │       │   └── package.html
│   │   │   │       ├── jjtree/
│   │   │   │       │   ├── ASTBNF.java
│   │   │   │       │   ├── ASTBNFAction.java
│   │   │   │       │   ├── ASTBNFDeclaration.java
│   │   │   │       │   ├── ASTBNFNodeScope.java
│   │   │   │       │   ├── ASTCompilationUnit.java
│   │   │   │       │   ├── ASTExpansionNodeScope.java
│   │   │   │       │   ├── ASTGrammar.java
│   │   │   │       │   ├── ASTJavacode.java
│   │   │   │       │   ├── ASTJavacodeBody.java
│   │   │   │       │   ├── ASTLHS.java
│   │   │   │       │   ├── ASTNodeDescriptor.java
│   │   │   │       │   ├── ASTNodeDescriptorExpression.java
│   │   │   │       │   ├── ASTOptionBinding.java
│   │   │   │       │   ├── ASTOptions.java
│   │   │   │       │   ├── ASTProduction.java
│   │   │   │       │   ├── CPPCodeGenerator.java
│   │   │   │       │   ├── CPPJJTreeState.java
│   │   │   │       │   ├── CPPNodeFiles.java
│   │   │   │       │   ├── DefaultJJTreeVisitor.java
│   │   │   │       │   ├── IO.java
│   │   │   │       │   ├── JJTree.java
│   │   │   │       │   ├── JJTreeGlobals.java
│   │   │   │       │   ├── JJTreeIOException.java
│   │   │   │       │   ├── JJTreeNode.java
│   │   │   │       │   ├── JJTreeOptions.java
│   │   │   │       │   ├── JJTreeParserVisitor.java
│   │   │   │       │   ├── JJTreeState.java
│   │   │   │       │   ├── JavaCodeGenerator.java
│   │   │   │       │   ├── Main.java
│   │   │   │       │   ├── NodeFiles.java
│   │   │   │       │   ├── NodeScope.java
│   │   │   │       │   ├── Token.java
│   │   │   │       │   ├── TokenMgrException.java
│   │   │   │       │   ├── TokenUtils.java
│   │   │   │       │   └── package.html
│   │   │   │       ├── package.html
│   │   │   │       ├── parser/
│   │   │   │       │   ├── Action.java
│   │   │   │       │   ├── BNFProduction.java
│   │   │   │       │   ├── CPPFiles.java
│   │   │   │       │   ├── CharacterRange.java
│   │   │   │       │   ├── Choice.java
│   │   │   │       │   ├── CodeGenerator.java
│   │   │   │       │   ├── CodeProduction.java
│   │   │   │       │   ├── Container.java
│   │   │   │       │   ├── CppCodeProduction.java
│   │   │   │       │   ├── Expansion.java
│   │   │   │       │   ├── ExpansionTreeWalker.java
│   │   │   │       │   ├── JavaCCErrors.java
│   │   │   │       │   ├── JavaCCGlobals.java
│   │   │   │       │   ├── JavaCCParserInternals.java
│   │   │   │       │   ├── JavaCodeProduction.java
│   │   │   │       │   ├── JavaFiles.java
│   │   │   │       │   ├── LexGen.java
│   │   │   │       │   ├── LexGenCPP.java
│   │   │   │       │   ├── Lookahead.java
│   │   │   │       │   ├── LookaheadCalc.java
│   │   │   │       │   ├── LookaheadWalk.java
│   │   │   │       │   ├── Main.java
│   │   │   │       │   ├── MatchInfo.java
│   │   │   │       │   ├── MetaParseException.java
│   │   │   │       │   ├── Nfa.java
│   │   │   │       │   ├── NfaState.java
│   │   │   │       │   ├── NonTerminal.java
│   │   │   │       │   ├── NormalProduction.java
│   │   │   │       │   ├── OneOrMore.java
│   │   │   │       │   ├── Options.java
│   │   │   │       │   ├── OtherFilesGen.java
│   │   │   │       │   ├── OtherFilesGenCPP.java
│   │   │   │       │   ├── OutputFile.java
│   │   │   │       │   ├── ParseEngine.java
│   │   │   │       │   ├── ParseGen.java
│   │   │   │       │   ├── ParseGenCPP.java
│   │   │   │       │   ├── ParserCodeGenerator.java
│   │   │   │       │   ├── ParserData.java
│   │   │   │       │   ├── RCharacterList.java
│   │   │   │       │   ├── RChoice.java
│   │   │   │       │   ├── REndOfFile.java
│   │   │   │       │   ├── RJustName.java
│   │   │   │       │   ├── ROneOrMore.java
│   │   │   │       │   ├── RRepetitionRange.java
│   │   │   │       │   ├── RSequence.java
│   │   │   │       │   ├── RStringLiteral.java
│   │   │   │       │   ├── RZeroOrMore.java
│   │   │   │       │   ├── RZeroOrOne.java
│   │   │   │       │   ├── RegExprSpec.java
│   │   │   │       │   ├── RegularExpression.java
│   │   │   │       │   ├── Semanticize.java
│   │   │   │       │   ├── Sequence.java
│   │   │   │       │   ├── SingleCharacter.java
│   │   │   │       │   ├── TableDrivenJavaCodeGenerator.java
│   │   │   │       │   ├── Token.java
│   │   │   │       │   ├── TokenManagerCodeGenerator.java
│   │   │   │       │   ├── TokenProduction.java
│   │   │   │       │   ├── TokenizerData.java
│   │   │   │       │   ├── TreeWalkerOp.java
│   │   │   │       │   ├── TryBlock.java
│   │   │   │       │   ├── ZeroOrMore.java
│   │   │   │       │   ├── ZeroOrOne.java
│   │   │   │       │   └── package.html
│   │   │   │       └── utils/
│   │   │   │           ├── OptionInfo.java
│   │   │   │           ├── OptionType.java
│   │   │   │           └── OutputFileGenerator.java
│   │   │   └── package.html
│   │   ├── javacc/
│   │   │   ├── ConditionParser.jj
│   │   │   └── JavaCC.jj
│   │   ├── jjtree/
│   │   │   └── JJTree.jjt
│   │   └── resources/
│   │       ├── templates/
│   │       │   ├── CharStream.template
│   │       │   ├── DumpDebugMethods.template
│   │       │   ├── DumpStaticVarDeclarations.template
│   │       │   ├── JavaCharStream.template
│   │       │   ├── MultiNode.template
│   │       │   ├── Node.template
│   │       │   ├── ParseException.template
│   │       │   ├── SimpleCharStream.template
│   │       │   ├── SimpleNode.template
│   │       │   ├── TableDrivenTokenManager.template
│   │       │   ├── Token.template
│   │       │   ├── TokenManager.template
│   │       │   ├── TokenManagerBoilerPlateMethods.template
│   │       │   ├── TokenMgrError.template
│   │       │   ├── TokenizerAlgorithm.template
│   │       │   ├── cpp/
│   │       │   │   ├── CharStream.cc.template
│   │       │   │   ├── CharStream.h.template
│   │       │   │   ├── DumpDebugMethods.template
│   │       │   │   ├── DumpVarDeclarations.template
│   │       │   │   ├── ErrorHandler.h.template
│   │       │   │   ├── JJTTreeState.cc.template
│   │       │   │   ├── JJTTreeState.h.template
│   │       │   │   ├── JavaCC.h.template
│   │       │   │   ├── MultiNode.cc.template
│   │       │   │   ├── MultiNode.h.template
│   │       │   │   ├── MultiNode.template
│   │       │   │   ├── MultiNodeImpl.template
│   │       │   │   ├── MultiNodeInterface.template
│   │       │   │   ├── Node.h.template
│   │       │   │   ├── ParseException.cc.template
│   │       │   │   ├── ParseException.h.template
│   │       │   │   ├── SimpleNode.cc.template
│   │       │   │   ├── SimpleNode.h.template
│   │       │   │   ├── SimpleNodeImpl.template
│   │       │   │   ├── SimpleNodeInterface.template
│   │       │   │   ├── Token.cc.template
│   │       │   │   ├── Token.h.template
│   │       │   │   ├── TokenManager.h.template
│   │       │   │   ├── TokenManagerBoilerPlateMethods.template
│   │       │   │   ├── TokenMgrError.cc.template
│   │       │   │   ├── TokenMgrError.h.template
│   │       │   │   ├── TreeImplHeader.template
│   │       │   │   └── TreeIncludeHeader.template
│   │       │   └── gwt/
│   │       │       ├── JavaCharStream.template
│   │       │       ├── ParseException.template
│   │       │       ├── Provider.template
│   │       │       ├── SimpleCharStream.template
│   │       │       ├── StreamProvider.template
│   │       │       └── StringProvider.template
│   │       └── version.properties
│   └── test/
│       └── java/
│           └── org/
│               └── javacc/
│                   ├── JavaCCTestCase.java
│                   ├── jjdoc/
│                   │   └── test/
│                   │       └── JJDocMainTest.java
│                   ├── jjtree/
│                   │   └── JJTreeOptionsTest.java
│                   ├── parser/
│                   │   ├── ExpansionTest.java
│                   │   └── OptionsTest.java
│                   └── utils/
│                       └── OutputFileGeneratorTest.java
└── test/
    ├── TestTokenManagerUsesParser/
    │   └── TestTokenManagerUsesParser.jj
    ├── TestTokenManagerUsesParser2/
    │   └── TestTokenManagerUsesParser2.jj
    ├── build.xml
    ├── exceptions/
    │   ├── Parser.jj
    │   └── build.xml
    ├── gwtTemplate/
    │   └── Parser.jj
    ├── gwtUnicodeTemplate/
    │   └── Parser.jj
    ├── imports/
    │   ├── Parser.jj
    │   └── build.xml
    ├── java7features/
    │   └── Parser.jj
    ├── javaFileGeneration/
    │   ├── Parser.jj
    │   ├── README.txt
    │   ├── build.xml
    │   ├── expected/
    │   │   ├── generated.txt
    │   │   ├── no-keep-line/
    │   │   │   ├── ParseException.java
    │   │   │   ├── Parser.java
    │   │   │   ├── ParserConstants.java
    │   │   │   ├── ParserTokenManager.java
    │   │   │   ├── SimpleCharStream.java
    │   │   │   ├── Token.java
    │   │   │   └── TokenMgrError.java
    │   │   ├── non-static/
    │   │   │   ├── ParseException.java
    │   │   │   ├── Parser.java
    │   │   │   ├── ParserConstants.java
    │   │   │   ├── ParserTokenManager.java
    │   │   │   ├── SimpleCharStream.java
    │   │   │   ├── Token.java
    │   │   │   └── TokenMgrError.java
    │   │   ├── not-public/
    │   │   │   ├── ParseException.java
    │   │   │   ├── Parser.java
    │   │   │   ├── ParserConstants.java
    │   │   │   ├── ParserTokenManager.java
    │   │   │   ├── SimpleCharStream.java
    │   │   │   ├── Token.java
    │   │   │   └── TokenMgrError.java
    │   │   └── static/
    │   │       ├── ParseException.java
    │   │       ├── Parser.java
    │   │       ├── ParserConstants.java
    │   │       ├── ParserTokenManager.java
    │   │       ├── SimpleCharStream.java
    │   │       ├── Token.java
    │   │       └── TokenMgrError.java
    │   └── template.txt
    ├── javaFiles/
    │   ├── BaseSimpleCharStream.java
    │   ├── BaseSimpleNode.java
    │   ├── ChangedOptionsSimpleCharStream.java
    │   ├── IncompatSimpleNode.java
    │   ├── ModifiedOldSimpleCharStream.java
    │   ├── ModifiedSimpleCharStream.java
    │   ├── ModifiedSimpleNode.java
    │   ├── Multi.jjt
    │   ├── OldSimpleCharStream.java
    │   ├── Parser.jj
    │   ├── README.txt
    │   ├── StaticParser.jj
    │   ├── Tree.jjt
    │   └── build.xml
    ├── javacodeLA/
    │   ├── build.xml
    │   └── javacode.jj
    ├── lineNumbers/
    │   ├── JJTree.jjt
    │   └── build.xml
    ├── lom/
    │   ├── Parser.jj
    │   └── build.xml
    └── newToken/
        ├── OldToken.java
        ├── Parser.jj
        ├── ParserTokenFactory.jj
        └── build.xml

================================================
FILE CONTENTS
================================================

================================================
FILE: .classpath
================================================
<?xml version="1.0" encoding="UTF-8"?>
<classpath>
	<classpathentry kind="src" path="src/main/jjtree"/>
	<classpathentry kind="src" path="target/generated-sources/jjtree"/>
	<classpathentry kind="src" path="src/main/javacc"/>
	<classpathentry kind="src" path="target/generated-sources/utils"/>
	<classpathentry kind="src" path="target/generated-sources/javacc"/>
	<classpathentry kind="src" output="target/classes" path="src/main/java">
		<attributes>
			<attribute name="optional" value="true"/>
			<attribute name="maven.pomderived" value="true"/>
		</attributes>
	</classpathentry>
	<classpathentry excluding="**" kind="src" output="target/classes" path="src/main/resources">
		<attributes>
			<attribute name="maven.pomderived" value="true"/>
			<attribute name="optional" value="true"/>
		</attributes>
	</classpathentry>
	<classpathentry kind="src" output="target/test-classes" path="src/test/java">
		<attributes>
			<attribute name="test" value="true"/>
			<attribute name="optional" value="true"/>
			<attribute name="maven.pomderived" value="true"/>
		</attributes>
	</classpathentry>
	<classpathentry kind="src" path="examples"/>
	<classpathentry kind="lib" path="lib/jacocoant-0.8.10.jar"/>
	<classpathentry kind="con" path="org.eclipse.m2e.MAVEN2_CLASSPATH_CONTAINER">
		<attributes>
			<attribute name="maven.pomderived" value="true"/>
		</attributes>
	</classpathentry>
	<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.7">
		<attributes>
			<attribute name="maven.pomderived" value="true"/>
		</attributes>
	</classpathentry>
	<classpathentry kind="output" path="target/classes"/>
</classpath>


================================================
FILE: .editorconfig
================================================
root = true

[*]
trim_trailing_whitespace = true
insert_final_newline = true
charset = utf-8
indent_style = space

[*.md]
indent_size = 2
trim_trailing_whitespace = false

[{*.sh,gradlew}]
end_of_line = lf

[{*.bat,*.cmd}]
end_of_line = crlf

[{*.kts,*.kt}]
ij_kotlin_code_style_defaults = KOTLIN_OFFICIAL
ij_kotlin_name_count_to_use_star_import = 999
ij_kotlin_name_count_to_use_star_import_for_members = 999

[*.java]
# Doc: https://youtrack.jetbrains.com/issue/IDEA-170643#focus=streamItem-27-3708697.0-0
#"static ", "java.", "org.javacc.", ""
ij_java_imports_layout = $*,|,java.**,|,org.javacc.**,|,*
#ij_java_use_single_class_imports = true
indent_size = 2


================================================
FILE: .gitattributes
================================================
# Auto detect text files and perform LF normalization
*        text=auto

*.java   text
*.jj     text
*.jjt    text
*.html   text
*.css    text
*.js     text
*.sql    text
*.q      text

# Note: executable is a non-standard attribute, and it is used by the release plugin
*.sh     text eol=lf executable
*.cgi    text eol=lf executable

*.bat    text eol=crlf
*.cmd    text eol=crlf

/contributors merge=union


================================================
FILE: .github/workflows/master.yml
================================================
# This workflow will build a Java project with Maven
# For more information see: https://help.github.com/actions/language-and-framework-guides/building-and-testing-java-with-maven
#
# Copyright (c) 2020-2024, Sreeni Viswanadha <sreeni@viswanadha.net>.
# Copyright (c) 2024, Marc Mazas <mazas.marc@gmail.com>.
# All rights reserved.
# 
# Redistribution and use in source and binary forms, with or without
# modification, are permitted provided that the following conditions are met:
# 
#     * Redistributions of source code must retain the above copyright notice,
#       this list of conditions and the following disclaimer.
#     * Redistributions in binary form must reproduce the above copyright
#       notice, this list of conditions and the following disclaimer in the
#       documentation and/or other materials provided with the distribution.
#     * Neither the names of of the copyright holders nor the names of its
#       contributors may be used to endorse or promote products derived from
#       this software without specific prior written permission.
# 
# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
# AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
# ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
# LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
# CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
# SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
# INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
# CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
# ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
# THE POSSIBILITY OF SUCH DAMAGE.
# 
name: Java CI with Maven on javacc

on: [push]

jobs:
  build:

    runs-on: ${{ matrix.os }}
    strategy:
      matrix:
        os: [ubuntu-latest, windows-latest]
#        os: [ubuntu-latest, windows-latest, macos-latest]

    steps:

    - name: clone javacc
      uses: actions/checkout@v4

    - name: Set up JDK 1.8
      uses: actions/setup-java@v4
      with:
        distribution: 'temurin'
        java-version: 8
        cache: 'maven'

    # -B: batch mode; -e: produce execution error messages;

    - name: Build package
      run: mvn package -B --file pom.xml


================================================
FILE: .gitignore
================================================
**/gen/
**/out-dir/
*.*~
*.asc
*.iml
.checkstyle
.gradle
.gradle/
.groovy
.idea
.settings
.settings/
.svn/
/.externalToolBuilders/
/bin/
/build/
/buildSrc/bin/
/buildSrc/build/
/buildSrc/out/
/buildSrc/subprojects/*/bin/
/buildSrc/subprojects/*/build/
/buildSrc/subprojects/*/out/
/classes/
/examples/*/bin/
/examples/*/build/
/examples/*/out/
/examples/bin/
/examples/build/
/examples/out/
/out/
/pom.xml.releaseBackup
/release-perform.log
/release-prepare.log
/target-side/
/target/
/test/bin/
/test/build/
/test/out/
TEST-*
ant.log
build-eclipse
cobertura.ser
dist/
examples/JJTreeExamples/cpp/eg*/
javacc-*.tar.gz
javacc-*.zip
mvn.log
test.tmp/
tmp/

================================================
FILE: .project
================================================
<?xml version="1.0" encoding="UTF-8"?>
<projectDescription>
	<name>javacc~javacc</name>
	<comment>Nature JavaCC</comment>
	<projects>
	</projects>
	<buildSpec>
		<buildCommand>
			<name>org.eclipse.jdt.core.javabuilder</name>
			<arguments>
			</arguments>
		</buildCommand>
		<buildCommand>
			<name>org.eclipse.ui.externaltools.ExternalToolBuilder</name>
			<triggers>auto,full,incremental,</triggers>
			<arguments>
				<dictionary>
					<key>LaunchConfigHandle</key>
					<value>&lt;project&gt;/.externalToolBuilders/Del_Builder.launch</value>
				</dictionary>
				<dictionary>
					<key>incclean</key>
					<value>true</value>
				</dictionary>
			</arguments>
		</buildCommand>
		<buildCommand>
			<name>org.eclipse.m2e.core.maven2Builder</name>
			<arguments>
			</arguments>
		</buildCommand>
	</buildSpec>
	<natures>
		<nature>org.eclipse.jdt.core.javanature</nature>
		<nature>org.eclipse.m2e.core.maven2Nature</nature>
	</natures>
</projectDescription>


================================================
FILE: .travis.yml
================================================
language: java
jdk: openjdk8
install:
  - skip
script:
  - mvn test -B -Dgpg.skip=true

================================================
FILE: LICENSE
================================================
Copyright (c) 2006, Sun Microsystems, Inc.
All rights reserved.

Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions are met:

    * Redistributions of source code must retain the above copyright notice,
      this list of conditions and the following disclaimer.
    * Redistributions in binary form must reproduce the above copyright
      notice, this list of conditions and the following disclaimer in the
      documentation and/or other materials provided with the distribution.
    * Neither the name of the Sun Microsystems, Inc. nor the names of its
      contributors may be used to endorse or promote products derived from
      this software without specific prior written permission.

THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
THE POSSIBILITY OF SUCH DAMAGE.



================================================
FILE: README.md
================================================
# JavaCC

[![Maven Central](https://maven-badges.herokuapp.com/maven-central/net.java.dev.javacc/javacc/badge.svg)](https://maven-badges.herokuapp.com/maven-central/net.java.dev.javacc/javacc)
[![Javadocs](https://www.javadoc.io/badge/net.java.dev.javacc/javacc.svg)](https://www.javadoc.io/doc/net.java.dev.javacc/javacc)

Java Compiler Compiler (JavaCC) is the most popular parser generator for use with Java applications.

A parser generator is a tool that reads a grammar specification and converts it to a Java program that can recognize matches to the grammar.

In addition to the parser generator itself, JavaCC provides other standard capabilities related to parser generation such as tree building (via a tool called JJTree included with JavaCC), actions and debugging.

All you need to run a JavaCC parser, once generated, is a Java Runtime Environment (JRE).

This README is meant as a brief overview of the core features and how to set things up to get yourself started with JavaCC. For a fully detailed documentation, please see [https://javacc.github.io/javacc/](https://javacc.github.io/javacc/).

## Contents

- [Introduction](#introduction)
    * [Features](#features)
    * [An example](#an-example)
    * [Tutorials](docs/tutorials/index.md)
    * [FAQ](docs/faq.md)
- [Getting Started](#getting-started)
    * [From the command line](#use-javacc-from-the-command-line)
    * [Within an IDE](#use-javacc-within-an-ide)
    * [Rebuilding JavaCC](#rebuilding-javacc)
- [Community](#community)
    * [Support](#support)
    * [Documentation](#documentation)
    * [Resources](#resources)
    * [Powered by JavaCC](#powered-by-javacc)
- [License](#license)

## Introduction

### Features

* JavaCC generates top-down ([recursive descent](https://en.wikipedia.org/wiki/Recursive_descent_parser)) parsers as opposed to bottom-up parsers generated by [YACC](https://en.wikipedia.org/wiki/Yacc)-like tools. This allows the use of more general grammars, although [left-recursion](https://en.wikipedia.org/wiki/Left_recursion) is disallowed. Top-down parsers have a number of other advantages (besides more general grammars) such as being easier to debug, having the ability to parse to any [non-terminal](https://en.wikipedia.org/wiki/Terminal_and_nonterminal_symbols) in the grammar, and also having the ability to pass values (attributes) both up and down the parse tree during parsing.

* By default, JavaCC generates an `LL(1)` parser. However, there may be portions of grammar that are not `LL(1)`. JavaCC offers the capabilities of syntactic and semantic lookahead to resolve shift-shift ambiguities locally at these points. For example, the parser is `LL(k)` only at such points, but remains `LL(1)` everywhere else for better performance. Shift-reduce and reduce-reduce conflicts are not an issue for top-down parsers.

* JavaCC generates parsers that are 100% pure Java, so there is no runtime dependency on JavaCC and no special porting effort required to run on different machine platforms.

* JavaCC allows [extended BNF](https://en.wikipedia.org/wiki/Extended_Backus%E2%80%93Naur_form) specifications - such as `(A)*`, `(A)+` etc - within the lexical and the grammar specifications. Extended BNF relieves the need for left-recursion to some extent. In fact, extended BNF is often easier to read as in `A ::= y(x)*` versus `A ::= Ax|y`.

* The lexical specifications (such as regular expressions, strings) and the grammar specifications (the BNF) are both written together in the same file. It makes grammars easier to read since it is possible to use regular expressions inline in the grammar specification, and also easier to maintain.

* The [lexical analyzer](https://en.wikipedia.org/wiki/Lexical_analysis) of JavaCC can handle full Unicode input, and lexical specifications may also include any Unicode character. This facilitates descriptions of language elements such as Java identifiers that allow certain Unicode characters (that are not ASCII), but not others.

* JavaCC offers [Lex](https://en.wikipedia.org/wiki/Lex_(software))-like lexical state and lexical action capabilities. Specific aspects in JavaCC that are superior to other tools are the first class status it offers concepts such as `TOKEN`, `MORE`, `SKIP` and state changes. This allows cleaner specifications as well as better error and warning messages from JavaCC.

* Tokens that are defined as *special tokens* in the lexical specification are ignored during parsing, but these tokens are available for processing by the tools. A useful application of this is in the processing of comments.

* Lexical specifications can define tokens not to be case-sensitive either at the global level for the entire lexical specification, or on an individual lexical specification basis.

* JavaCC comes with JJTree, an extremely powerful tree building pre-processor.

* JavaCC also includes JJDoc, a tool that converts grammar files to documentation files, optionally in HTML.

* JavaCC offers many options to customize its behavior and the behavior of the generated parsers. Examples of such options are the kinds of Unicode processing to perform on the input stream, the number of tokens of ambiguity checking to perform etc.

* JavaCC error reporting is among the best in parser generators. JavaCC generated parsers are able to clearly point out the location of parse errors with complete diagnostic information.

* Using options `DEBUG_PARSER`, `DEBUG_LOOKAHEAD`, and `DEBUG_TOKEN_MANAGER`, users can get in-depth analysis of the parsing and the token processing steps.

* The JavaCC release includes a wide range of examples including Java and HTML grammars. The examples, along with their documentation, are a great way to get acquainted with JavaCC.


### An example

The following JavaCC grammar example recognizes matching braces followed by zero or more line terminators and then an end of file.

Examples of legal strings in this grammar are:

`{}`, `{% raw %}{{{{{}}}}}{% endraw %}` // ... etc

Examples of illegal strings are:

`&#123;&#125;&#123;&#125;`, `&#125;&#123;&#125;&#125;`, `&#123; &#125;`, `&#123;x&#125;` // ... etc

##### Its grammar

```java
PARSER_BEGIN(Example)

/** Simple brace matcher. */
public class Example {

  /** Main entry point. */
  public static void main(String args[]) throws ParseException {
    Example parser = new Example(System.in);
    parser.Input();
  }

}

PARSER_END(Example)

/** Root production. */
void Input() :
{}
{
  MatchedBraces() ("\n"|"\r")* <EOF>
}

/** Brace matching production. */
void MatchedBraces() :
{}
{
  "{" [ MatchedBraces() ] "}"
}
```

##### Some executions and outputs

###### {{}} gives no error

```java
$ java Example
{{}}<return>
```

###### {x gives a Lexical error

```java
$ java Example
{x<return>
Lexical error at line 1, column 2.  Encountered: "x"
TokenMgrError: Lexical error at line 1, column 2.  Encountered: "x" (120), after : ""
        at ExampleTokenManager.getNextToken(ExampleTokenManager.java:146)
        at Example.getToken(Example.java:140)
        at Example.MatchedBraces(Example.java:51)
        at Example.Input(Example.java:10)
        at Example.main(Example.java:6)
```

###### {}} gives a ParseException

```java
$ java Example
{}}<return>
ParseException: Encountered "}" at line 1, column 3.
Was expecting one of:
    <EOF>
    "\n" ...
    "\r" ...
        at Example.generateParseException(Example.java:184)
        at Example.jj_consume_token(Example.java:126)
        at Example.Input(Example.java:32)
        at Example.main(Example.java:6)
```

## Versions

The RECOMMENDED version is version **8**: it separates the parser (the core) from the generators (for the different languages); development and maintenance effort will be mainly on this version.  
This version lies on different Git repositories / java & maven projects / jars:
- the umbrella [javacc-8](https://github.com/javacc/javacc-8)
- the [core](https://github.com/javacc/javacc-8-core)
- the generators:
    - [java](https://github.com/javacc/javacc-8-java)
    - [C++](https://github.com/javacc/javacc-8-cpp)
    - [C#](https://github.com/javacc/javacc-8-csharp)

The previous versions (4, 5, 6, 7) are widely spread; effort to migrate to version 8 should be minimum.  
Their last version lies on a single Git repository / java & maven project / jar:
- [javacc](https://github.com/javacc/javacc)

Differences between v8 versus v7: very small at the grammar level, more important at the generated sources level:
- the javacc/jjtree grammar part is the same
- most of javacc/jjtree options should be the same, but some may be removed and others appear in v8
- the java grammar part should be nearly the same (may be some java 7 & java 8 features will appear in v8 and not in v7); in the future java 11..17..21.. features would appear only in v8)
- the C++ / C# grammar parts may be somewhat different
- some generated files are not much different, others are

If you read this README.md, you should be under the v7 code.

## Getting Started

You can use JavaCC either from the command line or through an IDE.

### Use JavaCC from the command line

#### Download

Download the latest stable release (at least the binaries and the sources) in a so called download directory:

##### Version 8

Download the core and the generator(s) you are going to use:

* JavaCC Core 8.0.1 - [Binaries](https://repo1.maven.org/maven2/org/javacc/core/8.0.1/core-8.0.1.jar), [Source (zip)](https://github.com/javacc/javacc-8-core/archive/core-8.0.1.zip), [Source (tar.gz)](https://github.com/javacc/javacc-8-core/archive/core-8.0.1.tar.gz), [Javadocs](https://repo1.maven.org/maven2/org/javacc/core/8.0.1/core-8.0.1-javadoc.jar)

* JavaCC C++ 8.0.1 - [Binaries](https://repo1.maven.org/maven2/org/javacc/generator/cpp/8.0.1/cpp-8.0.1.jar), [Source (zip)](https://github.com/javacc/javacc-8-cpp/archive/cpp-8.0.1.zip), [Source (tar.gz)](https://github.com/javacc/javacc-8-cpp/archive/cpp-8.0.1.tar.gz), [Javadocs](https://repo1.maven.org/maven2/org/javacc/generator/cpp/8.0.1/cpp-8.0.1-javadoc.jar)

* JavaCC C# 8.0.1 - [Binaries](https://repo1.maven.org/maven2/org/javacc/generator/csharp/8.0.1/csharp-8.0.1.jar), [Source (zip)](https://github.com/javacc/javacc-8-csharp/archive/csharp-8.0.1.zip), [Source (tar.gz)](https://github.com/javacc/javacc-8-csharp/archive/csharp-8.0.1.tar.gz), [Javadocs](https://repo1.maven.org/maven2/org/javacc/generator/csharp/8.0.1/csharp-8.0.1-javadoc.jar)

* JavaCC Java 8.0.1 - [Binaries](https://repo1.maven.org/maven2/org/javacc/generator/java/8.0.1/java-8.0.1.jar), [Source (zip)](https://github.com/javacc/javacc-8-java/archive/java-8.0.1.zip), [Source (tar.gz)](https://github.com/javacc/javacc-8-java/archive/java-8.0.1.tar.gz), [Javadocs](https://repo1.maven.org/maven2/org/javacc/generator/java/8.0.1/java-8.0.1-javadoc.jar)

All JavaCC v8 *releases* are available via [GitHub](https://github.com/javacc/javacc-8/releases) and [Maven](https://mvnrepository.com/artifact/org/javacc) including checksums and cryptographic signatures.

##### Version 7

* JavaCC 7.0.13 - [Binaries](https://repo1.maven.org/maven2/net/java/dev/javacc/javacc/7.0.13/javacc-7.0.13.jar), [Source (zip)](https://github.com/javacc/javacc/archive/javacc-7.0.13.zip), [Source (tar.gz)](https://github.com/javacc/javacc/archive/javacc-7.0.13.tar.gz), [Javadocs](https://repo1.maven.org/maven2/net/java/dev/javacc/javacc/7.0.13/javacc-7.0.13-javadoc.jar), [Release Notes](docs/release-notes.md)

All JavaCC v7 releases are available via [GitHub](https://github.com/javacc/javacc/releases) and [Maven](https://mvnrepository.com/artifact/net.java.dev.javacc/javacc) including checksums and cryptographic signatures.

For all previous releases, please see [stable releases](docs/downloads.md).

#### Install

##### Version 8

*To be written*. Help welcomed!

##### Version 7

Once you have downloaded the files, navigate to the download directory and unzip the sources file(s), this creating a so called JavaCC installation directory:

`$ unzip javacc-7.0.13.zip`  
or  
`$ tar xvf javacc-7.0.13.tar.gz`

Then create a new `target` directory under the installation directory, and copy or move the binary file `javacc-7.0.13.jar` under this `target` directory, and copy or rename it to `javacc.jar`.

Then add the `scripts/` directory under the JavaCC installation directory to your `PATH`. The JavaCC, JJTree, and JJDoc invocation scripts/executables reside in this directory.

On UNIX based systems, the scripts may not be executable immediately. This can be solved by using the command from the `javacc-7.0.13/` directory:
`chmod +x scripts/javacc`

#### Write your grammar and generate your parser

You can then create and edit a grammar file with your favorite text editor.

Then use the appropriate script for generating your parser from your grammar.

### Use JavaCC within an IDE

Minimal requirements for an IDE are:
* Support for Java, C++ or C#
* Support for Maven or Gradle

#### IntelliJ IDEA

The IntelliJ IDE supports Maven out of the box and offers a plugin for JavaCC development.

* IntelliJ download: [https://www.jetbrains.com/idea/](https://www.jetbrains.com/idea/)
* IntelliJ JavaCC Plugin: [https://plugins.jetbrains.com/plugin/11431-javacc/](https://plugins.jetbrains.com/plugin/11431-javacc/)

<!---
Check out our [Setting up IntelliJ](https://ci.apache.org/projects/flink/flink-docs-master/flinkDev/ide_setup.html#intellij-idea) guide for details.
-->

#### Eclipse IDE

* Eclipse download: [https://www.eclipse.org/ide/](https://www.eclipse.org/ide/)
* Eclipse JavaCC Plugin: [https://marketplace.eclipse.org/content/javacc-eclipse-plug](https://marketplace.eclipse.org/content/javacc-eclipse-plug)

#### Maven

Add the following plugin to your `pom.xml` file, under the build plugins, or under one or more profiles.

##### Version 8

(You must use the javacc-maven-plugin from the JavaCC organization.)  
Adapt the versions, the execution(s) (goals `javacc` and/or `jjtree-javacc`) and the `codeGenerator` setting for the generator (`java`, `cpp`, `csharp`). Also add the configuration settings you want to override.

```
          <plugin>
              <groupId>org.javacc.plugin</groupId>
              <artifactId>javacc-maven-plugin</artifactId>
              <version>3.0.3</version>
              <executions>
                  <execution>
                      <id>javacc</id>
                      <phase>generate-sources</phase>
                      <goals>
                          <goal>jjtree-javacc</goal>
                      </goals>
                      <configuration>
                          <codeGenerator>java</codeGenerator>
                      </configuration>
                  </execution>
              </executions>
              <dependencies>
                  <dependency>
                      <groupId>org.javacc.generator</groupId>
                        <artifactId>java</artifactId>
                        <version>8.0.1</version>
                    </dependency>
                    <dependency>
                        <groupId>org.javacc</groupId>
                        <artifactId>core</artifactId>
                        <version>8.0.1</version>
                    </dependency>
                </dependencies>
            </plugin>
```

##### Version 7

(You can use the [javacc-maven-plugin](https://www.mojohaus.org/javacc-maven-plugin/) from MojoHaus or te [javacc-maven-plugin](https://github.com/javacc/javacc-maven-plugin) from the JavaCC organization.)  

Same as above, with a single different dependency, and without the `codeGenerator` setting.

```
<dependency>
    <groupId>net.java.dev.javacc</groupId>
    <artifactId>javacc</artifactId>
    <version>7.0.13</version>
</dependency>
```

#### Gradle

##### Version 8

*To be tested / written*. Help welcomed!

##### Version 7

Add the following to your `build.gradle` file.

```
repositories {
    mavenLocal()
    maven {
        url = 'https://mvnrepository.com/artifact/net.java.dev.javacc/javacc'
    }
}

dependencies {
    compile group: 'net.java.dev.javacc', name: 'javacc', version: '7.0.13'
}
```

### Rebuilding JavaCC 

*To be verified / completed*. Help welcomed!

#### From the source installation directory

The source installation directory contains the JavaCC, JJTree and JJDoc sources, launcher scripts, example grammars and documentation, and also a bootstrap version of JavaCC needed to build JavaCC.

Prerequisites for building JavaCC with this method:

* Ant (we require version 1.5.3 or above - you can get ant from [http://ant.apache.org](http://ant.apache.org))
* Maven
* Java 8 (Java 9 and 10 are not yet supported)

Use the ant build script:

```
$ cd javacc
$ ant
```

This will build the `javacc.jar` file in the `target/` directory

#### After cloning the JavaCC GitHub repository

This is the preferred method for contributing to JavaCC.

Prerequisites for building JavaCC with this method:

* Git
* Ant (we require version 1.5.3 or above - you can get ant from [http://ant.apache.org](http://ant.apache.org))
* Maven
* Java 8 (Java 9 and 10 are not yet supported)

Just clone the repository and then use the ant build script:

```
$ git clone https://github.com/javacc/javacc.git
$ cd javacc
$ ant
```

This will build the `javacc.jar` file in the `target/` directory

## Community

JavaCC is by far the most popular parser generator used with Java applications with an estimated user base of over 1,000 users and more than 100,000 downloads to date.

It is maintained by the [developer community](https://github.com/javacc/javacc/graphs/contributors) which includes the original authors and [Chris Ainsley](https://github.com/ainslec), [Tim Pizney](https://github.com/timp) and [Francis Andre](https://github.com/zosrothko).

### Support

Open an issue if you found a bug in JavaCC.

If you use version 7, open it [here](https://github.com/javacc/javacc/issues);  
if you use version 8 and you do not know to which part it is related (the core or a generator), open it [here](https://github.com/javacc/javacc-8/issues); if you are sure of the project it is related to, open it in the issues section of the project.

Don’t hesitate to ask!

Contact the developers and community on the [Google user group](https://groups.google.com/forum/#!forum/javacc-users) or email us at [JavaCC Support](mailto:support@javacc.org) if you need any help.

For questions relating to development please join our [Slack channel](https://javacc.slack.com/).

### Documentation

The documentation of JavaCC is located on the website [https://javacc.github.io/javacc/](https://javacc.github.io/javacc/) and in the `docs/` directory of the source code on [GitHub javacc](https://github.com/javacc/javacc) or [GitHub javacc-8](https://github.com/javacc/javacc-8).

It includes [detailed documentation](docs/documentation/index.md) for JavaCC, JJTree, and JJDoc.

### Resources

##### Books

* Dos Reis, Anthony J., Compiler Construction Using Java, JavaCC, and Yacc., Wiley-Blackwell 2012. ISBN 0-4709495-9-7 ([book](https://www.amazon.co.uk/Compiler-Construction-Using-Java-JavaCC/dp/0470949597), [pdf](https://spada.uns.ac.id/pluginfile.php/265072/mod_resource/content/1/Compiler%20Construction%20using%20Java%2C%20JavaCC%2C%20and%20YACC%20%5BReis%202011-12-20%5D.pdf)).
* Copeland, Tom, Generating Parsers with JavaCC., Centennial Books, 2007. ISBN 0-9762214-3-8 ([book](https://www.amazon.com/Generating-Parsers-JavaCC-Easy-Use/dp/0976221438)).

##### Tutorials

* JavaCC [tutorials](docs/tutorials/index.md).
* [Introduction to JavaCC](https://www.engr.mun.ca/~theo/JavaCC-Tutorial/javacc-tutorial.pdf) by Theodore S. Norvell.
* [Incorporating language processing into Java applications: a JavaCC tutorial](https://ieeexplore.ieee.org/document/1309649) by Viswanathan Kodaganallur.

##### Articles

* [Looking for lex and yacc for Java? You don't know Jack](https://www.infoworld.com/article/2170636/looking-for-lex-and-yacc-for-java-you-don-t-know-jack.html) by Chuck Mcmanis.
* [Build your own languages with JavaCC](https://www.infoworld.com/article/2162779/build-your-own-languages-with-javacc.html) by Oliver Enseling.
* [Writing an Interpreter Using JavaCC](https://anandsekar.github.io/writing-an-interpretter-using-javacc/) by Anand Rajasekar.
* [Building a lexical analyzer with JavaCC](http://kiwwito.com/build-a-lexical-analyzer-with-javacc/) by Keyvan Akbary.

##### Parsing theory

* Alfred V. Aho, Monica S. Lam, Ravi Sethi and Jeffrey D. Ullman, Compilers: Principles, Techniques, and Tools, 2nd Edition, Addison-Wesley, 2006, ISBN 0-3211314-3-6 ([book](https://www.amazon.co.uk/Compilers-Principles-Techniques-Tools-2nd/dp/0321131436), [pdf](https://github.com/germanoa/compiladores/blob/master/doc/ebook/Compilers%20Principles%2C%20Techniques%2C%20and%20Tools%20-%202nd%20Edition%20-%20Alfred%20V.%20Aho.pdf)).
* Charles N. Fischer and Richard J. Leblanc, Jr., Crafting a Compiler with C., Pearson, 1991. ISBN 0-8053216-6-7 ([book](https://www.amazon.co.uk/Crafting-Compiler-Charles-N-Fischer/dp/0805321667)).

### Powered by JavaCC

JavaCC is used in many commercial applications and open source projects.

The following list highlights a few notable JavaCC projects that run interesting use cases in production, with links to the relevant grammar specifications.

User                                                 | Use Case                                                       | Grammar File(s)
:--------------------------------------------------- |:-------------------------------------------------------------- | :-------------------------------------------------------------------------------------------------------------------------------------------------------:
[Apache ActiveMQ](https://activemq.apache.org/)      | Parsing JMS selector statements                                | [SelectorParser.jj](https://github.com/apache/activemq/blob/master/activemq-client/src/main/grammar/SelectorParser.jj), [HyphenatedParser.jj](https://github.com/apache/activemq-artemis/blob/master/artemis-selector/src/main/javacc/HyphenatedParser.jj)
[Apache Avro](https://avro.apache.org/)              | Parsing higher-level languages into Avro Schema                | [idl.jj](https://github.com/apache/avro/blob/master/lang/java/compiler/src/main/javacc/org/apache/avro/compiler/idl/idl.jj)
[Apache Calcite](https://calcite.apache.org/)        | Parsing SQL statements                                         | [Parser.jj](https://github.com/apache/calcite/blob/master/core/src/main/codegen/templates/Parser.jj)
[Apache Camel](https://camel.apache.org/)            | Parsing stored SQL templates                                   | [sspt.jj](https://github.com/apache/camel/blob/master/components/camel-sql/src/main/java/org/apache/camel/component/sql/stored/template/grammar/sspt.jj)
[Apache Jena](https://jena.apache.org/)              | Parsing queries written in SPARQL, ARQ, SSE, Turtle and JSON   | [sparql_10](https://github.com/apache/jena/blob/master/jena-arq/Grammar/Final/sparql_10-final.jj), [sparql_11](https://github.com/apache/jena/blob/master/jena-arq/Grammar/Final/sparql_11-final.jj), [arq.jj](https://github.com/apache/jena/blob/master/jena-arq/Grammar/arq.jj), [sse.jj](https://github.com/apache/jena/blob/master/jena-arq/Grammar/sse/sse.jj), [turtle.jj](https://github.com/apache/jena/blob/main/jena-arq/Grammar/Turtle/turtle.jj), [json.jj](https://github.com/apache/jena/blob/master/jena-arq/Grammar/JSON/json.jj)
[Apache Lucene](https://lucene.apache.org/)          | Parsing search queries                                         | [QueryParser.jj](https://github.com/apache/lucene/blob/main/lucene/queryparser/src/java/org/apache/lucene/queryparser/classic/QueryParser.jj)
[Apache Tomcat](https://tomcat.apache.org/)          | Parsing Expression Language (EL) and JSON                      | [ELParser.jjt](https://github.com/apache/tomcat/blob/master/java/org/apache/el/parser/ELParser.jjt), [JSONParser.jj](https://github.com/apache/tomcat/blob/main/java/org/apache/tomcat/util/json/JSONParser.jjt)
[Apache Zookeeper](https://zookeeper.apache.org/)    | Optimising serialisation/deserialisation of Hadoop I/O records | [rcc.jj](https://github.com/apache/zookeeper/blob/master/zookeeper-jute/src/main/java/org/apache/jute/compiler/generated/rcc.jj)
[Java Parser](https://javaparser.org/)               | Parsing Java language files                                    | [java.jj](https://github.com/javaparser/javaparser/blob/master/javaparser-core/src/main/javacc/java.jj)

<!---
## Contributing

This is an active open-source project. We are always open to people who want to use the system or contribute to it.
Contact us if you are looking for implementation tasks that fit your skills.
This article describes [how to contribute to Apache Flink](https://flink.apache.org/contributing/how-to-contribute.html).

https://blog.scottlowe.org/2015/01/27/using-fork-branch-git-workflow/

-->

## License

JavaCC is an open source project released under the [BSD License 2.0](LICENSE). The JavaCC project was originally developed at Sun Microsystems Inc. by [Sreeni Viswanadha](https://github.com/kaikalur) and [Sriram Sankar](https://twitter.com/sankarsearch).

<br>

---

[Top](#javacc)

<br>


================================================
FILE: build.cmd
================================================
ant binary-distribution


================================================
FILE: build.xml
================================================
<?xml version='1.0' encoding='UTF-8' ?>

<!--
Copyright (c) 2006-2025, Sreeni Viswanadha <sreeni@viswanadha.net>.
Copyright (c) 2024-2025, Marc Mazas <mazas.marc@gmail.com>.
Copyright (c) 2006, Sun Microsystems, Inc.
All rights reserved.

Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions are met:

    * Redistributions of source code must retain the above copyright notice,
      this list of conditions and the following disclaimer.
    * Redistributions in binary form must reproduce the above copyright
      notice, this list of conditions and the following disclaimer in the
      documentation and/or other materials provided with the distribution.
    * Neither the name of the Sun Microsystems, Inc. nor the names of its
      contributors may be used to endorse or promote products derived from
      this software without specific prior written permission.

THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
THE POSSIBILITY OF SUCH DAMAGE.
-->

<project name="javacc"
         default="jar"
         basedir="."
         xmlns:jacoco="antlib:org.jacoco.ant"
         xmlns:artifact="antlib:org.apache.maven.artifact.ant"
>

  <!-- Ant tasks definition for JaCoCo tasks (m2e does not accept a property in path) -->
  <taskdef resource="org/jacoco/ant/antlib.xml" uri="antlib:org.jacoco.ant">
    <classpath path="lib/jacocoant-0.8.10.jar" />
  </taskdef>
  <!-- Note: to enable/disable the code coverage, we found shorter to use the agent, versus the coverage tasks
       Note: looks we cannot use properties here in the values -->
  <!--
  <jacoco:agent property="jacocoagentvmparam"
                enabled="true"
                destfile="target/jacoco/jacoco.exec"
                classdumpdir="target/jacoco/dump"
                append="true"
  />
  -->
  <!-- to disable code coverage comment the previous definition and uncomment the next two lines -->
  <property name="jacocoagentvmparam" value="-Ddumkey=dumval" />
  <property name="no_code_coverage" value="true" />
  <!-- Note: setting the jacoco agent property to false leads to the error 
       "Exception in thread "main" java.lang.NoClassDefFoundError", with no class name,
       so we use the workaround of passing a no impact jvm argument
  <jacoco:agent property="jacocoagentvmparam" enabled="false" />
  -->

  <!-- Ant type definition for Maven tasks (m2e does not accept a property in path) -->
  <path id="maven-ant-tasks.classpath" path="lib/maven-ant-tasks-2.1.3.jar" />
  <typedef resource="org/apache/maven/artifact/ant/antlib.xml"
           uri="antlib:org.apache.maven.artifact.ant"
           classpathref="maven-ant-tasks.classpath"
  />

  <!-- Avoids repeating this javac setting -->
  <presetdef name="javac">
    <javac includeantruntime="false" />
  </presetdef>

  <!-- ========== -->
  <!-- Properties -->
  <!-- ========== -->

  <property name="java-src" value="src/main/java" />
  <property name="test-src" value="src/test/java" />
  <property name="resources-src" value="src/main/resources" />
  <property name="generated-src" value="target/generated-sources" />
  <property name="jjtree-generated-src" value="${generated-src}/jjtree/org/javacc/jjtree" />
  <property name="parser-generated-src" value="${generated-src}/javacc/org/javacc/parser" />
  <property name="utils-generated-src" value="${generated-src}/utils/org/javacc/utils" />
  <property name="test-tmp" value="test.tmp" />

  <property name="bootstrap-jar" value="bootstrap/javacc.jar" />
  <property name="jjtree-class-name" value="org.javacc.jjtree.Main" />
  <property name="javacc-class-name" value="org.javacc.parser.Main" />

  <property name="target" value="target" />
  <property name="classes" value="${target}/classes" />

  <property file="${resources-src}/version.properties" />
  <!-- property name="version" value="${version.major}.${version.minor}.${version.patch}-SNAPSHOT" / -->
  <property name="version" value="${version.major}.${version.minor}.${version.patch}" />

  <property name="javacc-jar" value="${target}/javacc.jar" />
  <property name="javacc-last-jar" value="${target}/javacc-last.jar" />

  <property name="javacc-with-version" value="javacc-${version}.jar" />
  <property name="javacc-last-with-version" value="javacc-last-${version}.jar" />
  <property name="javacc-sources-jar" value="javacc-${version}-sources.jar" />
  <property name="javacc-javadoc-jar" value="javacc-${version}-javadoc.jar" />

  <property name="javacc-path" value="${target}/${javacc-with-version}" />
  <property name="javacc-last-path" value="${target}/${javacc-last-with-version}" />
  <property name="javacc-sources-path" value="${target}/${javacc-sources-jar}" />
  <property name="javacc-javadoc-path" value="${target}/${javacc-javadoc-jar}" />

  <property name="javac.source" value="1.8" />
  <property name="javac.target" value="1.8" />

  <!-- Cleans all the generated sources, temporary files, dist files and compiled classes -->
  <target name="clean">
    <delete dir="test.tmp" />
    <delete dir="dist" />
    <delete dir="${target}" />
    <mkdir dir="${target}" />
    <mkdir dir="${classes}" />
    <mkdir dir="${jjtree-generated-src}" />
    <mkdir dir="${parser-generated-src}" />
    <mkdir dir="${utils-generated-src}" />
  </target>


  <!-- ======================== -->
  <!-- BUILD with OLD BOOTSTRAP -->
  <!-- ======================== -->

  <!-- Build the new version with the old jar (current bootstrap jar) and create the new version jar
       (named javacc.jar with a copy named javacc-x.y.z.jar)  -->
  <!-- Here the new version jar does not benefit from enhancements of JavaCC itself (e.g. performance) -->
  <!-- The tests will benefit from these enhancements -->
  <target name="jar">
    <antcall target="compile_create-jars" />
  </target>

  <!-- Be careful not to include the test files in the distribution. -->
  <target name="jar-classes-check">
    <condition property="jar-classes.uptodate">
      <!-- An IDE clean should normally have deleted the classes but not the jars, so
           specifying the directories will check their timestamps (modified by deletes) -->
      <and>
        <uptodate targetfile="${javacc-path}">
          <srcresources>
            <fileset dir="${java-src}" />
            <dirset dir="${java-src}" />
            <fileset dir="${resources-src}" />
            <dirset dir="${resources-src}" />
            <dirset dir="${classes}" />
          </srcresources>
        </uptodate>
        <uptodate targetfile="${classes}">
          <srcresources>
            <fileset dir="${java-src}" />
            <dirset dir="${java-src}" />
            <fileset dir="${resources-src}" />
            <dirset dir="${resources-src}" />
          </srcresources>
        </uptodate>
      </and>
    </condition>
    <echo message="jar-classes.uptodate: ${jar-classes.uptodate}" />
  </target>

  <!-- Compiles with old bootstrap jar and create new jars -->
  <target name="compile_create-jars" depends="jar-classes-check" unless="${jar-classes.uptodate}">
    <antcall target="compile" />
    <jar jarfile="${javacc-jar}" basedir="${classes}" compress="true" />
    <copy file="${javacc-jar}" tofile="${javacc-path}" />
  </target>

  <!-- Compiles jj, jjt & java source & generated files with bootstrap jar -->
  <target name="compile" depends="clean">
    <antcall target="compile-sub">
      <param name="param-jar" value="${bootstrap-jar}" />
    </antcall>
  </target>


  <!-- ==================== -->
  <!-- BUILD a DISTRIBUTION -->
  <!-- ==================== -->

  <!-- Build a distribution -->
  <target name="dist" depends="jar, javadoc" description="build a distribution">
    <property name="install-name" value="${target}/javacc-${version}" />

    <delete file="${install-name}-distribution.tar.gz" />
    <tar destfile="${install-name}-distribution.tar.gz" compression="gzip">
      <tarfileset username="root"
                  uid="1"
                  group="root"
                  prefix="javacc-${version}/docs"
                  filemode="444"
                  dir="docs/"
      />
      <tarfileset username="root"
                  uid="1"
                  group="root"
                  prefix="javacc-${version}/examples"
                  filemode="444"
                  dir="examples/"
      />
      <tarfileset username="root"
                  uid="1"
                  group="root"
                  prefix="javacc-${version}"
                  filemode="444"
                  file="LICENSE"
      />
      <tarfileset username="root"
                  uid="1"
                  group="root"
                  prefix="javacc-${version}/${target}"
                  filemode="444"
                  file="${javacc-jar}"
      />
    </tar>

    <delete file="${install-name}-distribution.zip" />
    <zip destfile="${install-name}-distribution.zip">
      <zipfileset prefix="javacc-${version}/${target}" filemode="444" file="${javacc-jar}" />
      <zipfileset prefix="javacc-${version}/docs" filemode="444" dir="docs/" />
      <zipfileset prefix="javacc-${version}/examples" filemode="444" dir="examples/" />
      <zipfileset prefix="javacc-${version}" filemode="444" file="LICENSE" />
    </zip>

    <delete dir="." includes="**/*.class" />
    <delete file="${install-name}-sources.tar.gz" />

    <tar destfile="${install-name}-sources.tar.gz" compression="gzip">
      <tarfileset username="root"
                  uid="1"
                  group="root"
                  prefix="javacc-${version}"
                  filemode="444"
                  file="./**"
                  excludes="deployment_pom/**, target/**, temp/**, .svn,CVS,**/*.zip,**/*.tar.gz"
      />
    </tar>

    <delete file="${install-name}-sources.jar" />
    <zip destfile="${install-name}-sources.jar">
      <zipfileset prefix="javacc-${version}"
                  filemode="444"
                  file="./**"
                  excludes=".svn,CVS,**/*.zip,**/*.tar.gz, deployment_pom/**, target/**, dist/**, temp/**"
      />
    </zip>

  </target>

  <!-- Build javadoc -->
  <target name="javadoc">

    <property name="install-name" value="${target}/javacc-${version}" />

    <delete dir="${target}/javadoc" />
    <mkdir dir="${target}/javadoc" />
    <javadoc destdir="${target}/javadoc">
      <fileset dir="${generated-src}" />
      <fileset dir="${java-src}" />
    </javadoc>

    <zip destfile="${install-name}-javadoc.jar" basedir="${target}/javadoc">
    </zip>

  </target>


  <!-- ================================== -->
  <!-- BUILD with the LAST GENERATED JAR -->
  <!-- ================================= -->

  <!-- Build the new version with the new jar and create another new jar
       (named javacc-last.jar with a copy named javacc-last-x.y.z.jar)  -->
  <!-- Here the new version jar benefits from enhancements of JavaCC itself (e.g. performance) -->
  <!-- The bootstrap jar should be regularly manually updated with a stable last jar -->
  <target name="jar-last" description="build javacc.jar with last jar">
    <antcall target="compile-last" />
    <jar jarfile="${javacc-last-jar}" basedir="${classes}" compress="true" />
    <copy file="${javacc-last-jar}" tofile="${javacc-last-path}" />
  </target>

  <!-- Compiles jj, jjt & java source & generated files with the last generated jar -->
  <target name="compile-last" depends="">
    <antcall target="compile-sub">
      <param name="param-jar" value="${javacc-jar}" />
    </antcall>
  </target>


  <!-- ============ -->
  <!-- BUILD COMMON -->
  <!-- ============ -->

  <!-- Compiles jj, jjt & java source & generated files with a given jar passed as a parameter-->
  <target name="compile-sub">

    <!-- ReGenerate the Java CC Main Parser with the new jar -->
    <java classname="${javacc-class-name}"
          classpath="${param-jar}"
          dir="${basedir}/src/main/javacc"
          fork="true"
    >
      <arg value="-OUTPUT_DIRECTORY=${basedir}/${parser-generated-src}" />
      <arg value="JavaCC.jj" />
    </java>

    <!-- This class is overwritten -->
    <delete file="${parser-generated-src}/Token.java" />

    <!-- ReGenerate the JJTree Parser Definition (from the tree definition) -->
    <java classname="${jjtree-class-name}"
          classpath="${param-jar}"
          dir="${basedir}/src/main/jjtree"
          fork="true"
    >
      <arg value="-OUTPUT_DIRECTORY=${basedir}/${jjtree-generated-src}" />
      <arg value="JJTree.jjt" />
    </java>

    <!-- Generate the JJTree Parser with the new jar  -->
    <java classname="${javacc-class-name}"
          classpath="${param-jar}"
          dir="${basedir}/${jjtree-generated-src}"
          fork="true"
    >
      <arg value="-OUTPUT_DIRECTORY=${basedir}/${jjtree-generated-src}" />
      <arg value="JJTree.jj" />
    </java>

    <!-- Delete the .jj file created by the jjtree program and the classes that were overwritten and already added into the main source path -->
    <delete file="${jjtree-generated-src}/JJTree.jj" />
    <delete file="${jjtree-generated-src}/ASTBNF.java" />
    <delete file="${jjtree-generated-src}/ASTBNFAction.java" />
    <delete file="${jjtree-generated-src}/ASTBNFDeclaration.java" />
    <delete file="${jjtree-generated-src}/ASTBNFNodeScope.java" />
    <delete file="${jjtree-generated-src}/ASTCompilationUnit.java" />
    <delete file="${jjtree-generated-src}/ASTExpansionNodeScope.java" />
    <delete file="${jjtree-generated-src}/ASTGrammar.java" />
    <delete file="${jjtree-generated-src}/ASTJavacode.java" />
    <delete file="${jjtree-generated-src}/ASTJavacodeBody.java" />
    <delete file="${jjtree-generated-src}/ASTNodeDescriptor.java" />
    <delete file="${jjtree-generated-src}/ASTNodeDescriptorExpression.java" />
    <delete file="${jjtree-generated-src}/ASTOptionBinding.java" />
    <delete file="${jjtree-generated-src}/ASTOptions.java" />
    <delete file="${jjtree-generated-src}/JJTreeParserVisitor.java" />
    <delete file="${jjtree-generated-src}/JJTreeParserDefaultVisitor.java" />
    <delete file="${jjtree-generated-src}/Token.java" />

    <!-- ReGenerate the Condition Parser with the new jar -->
    <java classname="${javacc-class-name}"
          classpath="${param-jar}"
          dir="${basedir}/src/main/javacc"
          fork="true"
    >
      <arg value="-OUTPUT_DIRECTORY=${basedir}/${utils-generated-src}" />
      <arg value="ConditionParser.jj" />
    </java>

    <copy todir="${classes}/templates">
      <fileset dir="${resources-src}/templates" />
    </copy>

    <copy file="${resources-src}/version.properties" todir="${classes}" />

    <javac srcdir="${java-src}" destdir="${classes}" debug="true" classpath="">
      <src path="${java-src}" />
      <src path="${generated-src}" />
      <src path="${resources-src}" />
    </javac>

  </target>


  <!-- ===== -->
  <!-- TESTS -->
  <!-- ===== -->

  <!-- Run "unit" tests under /src/test/java -->
  <target name="unittest" depends="jar" description="run JUnit unit test cases" unless="true">
    <delete dir="test.tmp" />
    <mkdir dir="test.tmp" />

    <path id="compile-test-classpath">
      <pathelement location="lib/junit.jar" />
      <pathelement location="target/javacc.jar" />
    </path>

    <delete dir="junit" />
    <mkdir dir="junit" />
    <javac srcdir="${test-src}" destdir="junit" classpathref="compile-test-classpath">
      <src path="${test-src}" />
    </javac>

    <junit printsummary="yes" haltonfailure="no">
      <classpath>
        <pathelement location="junit" />
        <pathelement location="target/javacc.jar" />
        <pathelement location="lib/junit.jar" />
      </classpath>

      <batchtest fork="no" todir=".">
        <fileset dir="junit">
          <include name="**/*Test.*" />
        </fileset>
        <formatter type="failure" />
        <!-- I want to see something ... -->
        <formatter type="plain" usefile="false" />
      </batchtest>
    </junit>

    <!-- Should sort this out properly, in the test. But for now... -->
    <delete file="JavaCCParserTokenManager.java" />
  </target>

  <target name="test" depends="jar, unittest" description="run functional test cases">

    <delete dir="test.tmp" />
    <mkdir dir="test.tmp" />

    <!-- Run "functional-tests" tests under /test -->
    <echo message="tests under test" />

    <ant antfile="build.xml" target="test" dir="test" />

    <!-- Run "functional" tests under /examples -->
    <echo message="tests under /examples" />

    <echo message="GUIParsing/ParserVersion" />

    <java failonerror="true" fork="true" classname="javacc" classpath="${javacc-jar}">
      <arg line="-OUTPUT_DIRECTORY=${test-tmp}/CORBA-IDL examples/CORBA-IDL/IDL.jj" />
    </java>

    <javac srcdir="${test-tmp}/CORBA-IDL" />

    <copy todir="${test-tmp}/CORBA-IDL/">
      <fileset dir="examples/CORBA-IDL">
        <include name="*.idl" />
      </fileset>
    </copy>

    <java failonerror="true"
          fork="true"
          classname="IDLParser"
          classpath="${test-tmp}/CORBA-IDL/"
          outputproperty="test.corba.out"
    >
      <arg line="${test-tmp}/CORBA-IDL/Hello.idl" />
    </java>

    <echo>${test.corba.out}</echo>

    <fail message="CORBA failed">
      <condition>
        <not>
          <contains string="${test.corba.out}" substring="IDL file parsed successfully" />
        </not>
      </condition>
    </fail>

    <echo message="GUIParsing/ParserVersion" />

    <copy todir="${test-tmp}/GUIParsing/ParserVersion">
      <fileset dir="examples/GUIParsing/ParserVersion">
        <include name="*.java" />
      </fileset>
    </copy>

    <java failonerror="true" fork="true" classname="javacc" classpath="${javacc-jar}">
      <arg line="-OUTPUT_DIRECTORY=${test-tmp}/GUIParsing/ParserVersion examples/GUIParsing/ParserVersion/CalcInput.jj"
      />
    </java>

    <javac srcdir="${test-tmp}/GUIParsing/ParserVersion" />

    <!--
		<echo />

	    <copy todir="${test-tmp}/GUIParsing/TokenMgrVersion">
	      <fileset dir="examples/GUIParsing/TokenMgrVersion">
	        <include name="*.java" />
	      </fileset>
	    </copy>
	
	    <java failonerror="true" fork="true" classname="javacc" classpath="${javacc-jar}">
	      <arg line="-OUTPUT_DIRECTORY=${test-tmp}/GUIParsing/TokenMgrVersion examples/GUIParsing/TokenMgrVersion/CalcInput.jj" />
	    </java>
	    
	    <javac srcdir="${test-tmp}/GUIParsing/TokenMgrVersion"/>
	
    -->

    <echo message="Interpreter" />

    <copy todir="${test-tmp}/Interpreter">
      <fileset dir="examples/Interpreter">
        <include name="*.java" />
      </fileset>
    </copy>

    <java failonerror="true" fork="true" classname="jjtree" classpath="${javacc-jar}">
      <arg line="-OUTPUT_DIRECTORY=${test-tmp}/Interpreter examples/Interpreter/SPL.jjt" />
    </java>

    <java failonerror="true" fork="true" classname="javacc" classpath="${javacc-jar}">
      <arg line="-OUTPUT_DIRECTORY=${test-tmp}/Interpreter ${test-tmp}/Interpreter/SPL.jj" />
    </java>

    <javac srcdir="${test-tmp}/Interpreter" />

    <copy todir="${test-tmp}/Interpreter/">
      <fileset dir="examples/Interpreter/">
        <include name="*.spl" />
      </fileset>
    </copy>

    <java failonerror="true"
          fork="true"
          classname="SPL"
          classpath="${test-tmp}/Interpreter/"
          inputstring="3"
          outputproperty="spl.out1"
    >
      <arg line="${test-tmp}/Interpreter/fact.spl" />
    </java>
    <echo>${spl.out1}</echo>
    <fail message="SPL fact parse failed">
      <condition>
        <not>
          <contains string="${spl.out1}" substring="Value of fact : 6" />
        </not>
      </condition>
    </fail>
    <java failonerror="true"
          fork="true"
          classname="SPL"
          classpath="${test-tmp}/Interpreter/"
          inputstring="3"
          outputproperty="spl.out2"
    >
      <arg line="${test-tmp}/Interpreter/odd.spl" />
    </java>
    <echo>${spl.out2}</echo>
    <fail message="SPL odd parse failed">
      <condition>
        <not>
          <contains string="${spl.out2}" substring="Value of odd : true" />
        </not>
      </condition>
    </fail>
    <java failonerror="true"
          fork="true"
          classname="SPL"
          classpath="${test-tmp}/Interpreter/"
          inputstring="9"
          outputproperty="spl.out3"
    >
      <arg line="${test-tmp}/Interpreter/sqrt.spl" />
    </java>
    <echo>${spl.out3}</echo>
    <fail message="SPL sqrt parse failed">
      <condition>
        <not>
          <contains string="${spl.out3}" substring="Value of sqrt : 3" />
        </not>
      </condition>
    </fail>

    <echo message="java/JJTreeExamples.eg1" />

    <java failonerror="true" fork="true" classname="jjtree" classpath="${javacc-jar}">
      <arg line="-OUTPUT_DIRECTORY=${test-tmp}/java/JJTreeExamples.eg1 examples/JJTreeExamples/java/eg1.jjt"
      />
    </java>

    <java failonerror="true" fork="true" classname="javacc" classpath="${javacc-jar}">
      <arg line="-OUTPUT_DIRECTORY=${test-tmp}/java/JJTreeExamples.eg1 ${test-tmp}/java/JJTreeExamples.eg1/eg1.jj"
      />
    </java>

    <javac srcdir="${test-tmp}/java/JJTreeExamples.eg1" />

    <java failonerror="true"
          fork="true"
          classname="Eg1"
          classpath="${test-tmp}/java/JJTreeExamples.eg1/"
          inputstring="(a + b) * (c + 1);"
          outputproperty="jjtree.eg1.out"
    >
    </java>
    <echo>${jjtree.eg1.out}</echo>
    <fail message="JJTree eg1 parse failed">
      <condition>
        <not>
          <contains string="${jjtree.eg1.out}" substring="Thank you." />
        </not>
      </condition>
    </fail>

    <echo message="java/JJTreeExamples.eg2" />

    <copy todir="${test-tmp}/java/JJTreeExamples.eg2">
      <fileset dir="examples/JJTreeExamples/java">
        <include name="*.java" />
        <exclude name="Eg4DumpVisitor.java" />
        <exclude name="ASTMyOtherID.java" />
      </fileset>
    </copy>

    <java failonerror="true" fork="true" classname="jjtree" classpath="${javacc-jar}">
      <arg line="-OUTPUT_DIRECTORY=${test-tmp}/java/JJTreeExamples.eg2 examples/JJTreeExamples/java/eg2.jjt"
      />
    </java>

    <java failonerror="true" fork="true" classname="javacc" classpath="${javacc-jar}">
      <arg line="-OUTPUT_DIRECTORY=${test-tmp}/java/JJTreeExamples.eg2 ${test-tmp}/java/JJTreeExamples.eg2/eg2.jj"
      />
    </java>

    <javac srcdir="${test-tmp}/java/JJTreeExamples.eg2" />

    <java failonerror="true"
          fork="true"
          classname="Eg2"
          classpath="${test-tmp}/java/JJTreeExamples.eg2/"
          inputstring="(a + b) * (c + 1);"
          outputproperty="jjtree.eg2.out"
    >
    </java>
    <echo>${jjtree.eg2.out}</echo>
    <fail message="JJTree eg2 parse failed">
      <condition>
        <not>
          <contains string="${jjtree.eg2.out}" substring="Thank you." />
        </not>
      </condition>
    </fail>

    <echo message="java/JJTreeExamples.eg3" />

    <copy todir="${test-tmp}/java/JJTreeExamples.eg3">
      <fileset dir="examples/JJTreeExamples/java">
        <include name="*.java" />
        <exclude name="Eg4DumpVisitor.java" />
        <exclude name="ASTMyOtherID.java" />
      </fileset>
    </copy>

    <java failonerror="true" fork="true" classname="jjtree" classpath="${javacc-jar}">
      <arg line="-OUTPUT_DIRECTORY=${test-tmp}/java/JJTreeExamples.eg3 examples/JJTreeExamples/java/eg3.jjt"
      />
    </java>

    <java failonerror="true" fork="true" classname="javacc" classpath="${javacc-jar}">
      <arg line="-OUTPUT_DIRECTORY=${test-tmp}/java/JJTreeExamples.eg3 ${test-tmp}/java/JJTreeExamples.eg3/eg3.jj"
      />
    </java>

    <javac srcdir="${test-tmp}/java/JJTreeExamples.eg3" />

    <java failonerror="true"
          fork="true"
          classname="Eg3"
          classpath="${test-tmp}/java/JJTreeExamples.eg3/"
          inputstring="(a + b) * (c + 1);"
          outputproperty="jjtree.eg3.out"
    >
    </java>
    <echo>${jjtree.eg3.out}</echo>
    <fail message="JJTree eg3 parse failed">
      <condition>
        <not>
          <contains string="${jjtree.eg3.out}" substring="Thank you." />
        </not>
      </condition>
    </fail>

    <echo message="java/JJTreeExamples.eg4" />

    <copy todir="${test-tmp}/java/JJTreeExamples.eg4">
      <fileset dir="examples/JJTreeExamples/java">
        <include name="*.java" />
      </fileset>
    </copy>

    <java failonerror="true" fork="true" classname="jjtree" classpath="${javacc-jar}">
      <arg line="-OUTPUT_DIRECTORY=${test-tmp}/java/JJTreeExamples.eg4 examples/JJTreeExamples/java/eg4.jjt"
      />
    </java>

    <java failonerror="true" fork="true" classname="javacc" classpath="${javacc-jar}">
      <arg line="-OUTPUT_DIRECTORY=${test-tmp}/java/JJTreeExamples.eg4 ${test-tmp}/java/JJTreeExamples.eg4/eg4.jj"
      />
    </java>

    <javac srcdir="${test-tmp}/java/JJTreeExamples.eg4" debug="true" />

    <java failonerror="true"
          fork="true"
          classname="Eg4"
          classpath="${test-tmp}/java/JJTreeExamples.eg4/"
          inputstring="(a + b) * (c + 1);"
          outputproperty="jjtree.eg4.out"
    >
    </java>
    <echo>${jjtree.eg4.out}</echo>
    <fail message="JJTree eg4 parse failed">
      <condition>
        <not>
          <contains string="${jjtree.eg4.out}" substring="Thank you." />
        </not>
      </condition>
    </fail>

    <echo message="JavaCCGrammar" />

    <java failonerror="true" fork="true" classname="javacc" classpath="${javacc-jar}">
      <arg line="-OUTPUT_DIRECTORY=${test-tmp}/JavaCCGrammar examples/JavaCCGrammar/JavaCC.jj" />
    </java>

    <javac srcdir="${test-tmp}/JavaCCGrammar" />

    <echo message="examples/JavaGrammars/1.5" />

    <ant antfile="build.xml" target="compile-and-test" dir="examples/JavaGrammars/1.5" />
    <ant antfile="build.xml" target="clean" dir="examples/JavaGrammars/1.5" />

    <echo message="Lookahead.eg1 to eg10" />

    <java failonerror="true" fork="true" classname="javacc" classpath="${javacc-jar}">
      <arg line="-OUTPUT_DIRECTORY=${test-tmp}/Lookahead.eg1 examples/Lookahead/Example1.jj" />
    </java>

    <java failonerror="true" fork="true" classname="javacc" classpath="${javacc-jar}">
      <arg line="-OUTPUT_DIRECTORY=${test-tmp}/Lookahead.eg2 examples/Lookahead/Example2.jj" />
    </java>

    <java failonerror="true" fork="true" classname="javacc" classpath="${javacc-jar}">
      <arg line="-OUTPUT_DIRECTORY=${test-tmp}/Lookahead.eg3 examples/Lookahead/Example3.jj" />
    </java>

    <java failonerror="true" fork="true" classname="javacc" classpath="${javacc-jar}">
      <arg line="-OUTPUT_DIRECTORY=${test-tmp}/Lookahead.eg4 examples/Lookahead/Example4.jj" />
    </java>

    <java failonerror="true" fork="true" classname="javacc" classpath="${javacc-jar}">
      <arg line="-OUTPUT_DIRECTORY=${test-tmp}/Lookahead.eg5 examples/Lookahead/Example5.jj" />
    </java>

    <java failonerror="true" fork="true" classname="javacc" classpath="${javacc-jar}">
      <arg line="-OUTPUT_DIRECTORY=${test-tmp}/Lookahead.eg6 examples/Lookahead/Example6.jj" />
    </java>

    <java failonerror="true" fork="true" classname="javacc" classpath="${javacc-jar}">
      <arg line="-OUTPUT_DIRECTORY=${test-tmp}/Lookahead.eg7 examples/Lookahead/Example7.jj" />
    </java>

    <java failonerror="true" fork="true" classname="javacc" classpath="${javacc-jar}">
      <arg line="-OUTPUT_DIRECTORY=${test-tmp}/Lookahead.eg8 examples/Lookahead/Example8.jj" />
    </java>

    <java failonerror="true" fork="true" classname="javacc" classpath="${javacc-jar}">
      <arg line="-OUTPUT_DIRECTORY=${test-tmp}/Lookahead.eg9 examples/Lookahead/Example9.jj" />
    </java>

    <java failonerror="true" fork="true" classname="javacc" classpath="${javacc-jar}">
      <arg line="-OUTPUT_DIRECTORY=${test-tmp}/Lookahead.eg10 examples/Lookahead/Example10.jj" />
    </java>

    <echo message="MailProcessing" />

    <java failonerror="true" fork="true" classname="javacc" classpath="${javacc-jar}">
      <arg line="-OUTPUT_DIRECTORY=${test-tmp}/MailProcessing examples/MailProcessing/Digest.jj" />
    </java>

    <java failonerror="true" fork="true" classname="javacc" classpath="${javacc-jar}">
      <arg line="-OUTPUT_DIRECTORY=${test-tmp}/MailProcessing examples/MailProcessing/Faq.jj" />
    </java>

    <javac srcdir="${test-tmp}/MailProcessing" />

    <echo message="Obfuscator" />

    <copy todir="${test-tmp}/Obfuscator">
      <fileset dir="examples/Obfuscator">
        <include name="*.java" />
      </fileset>
    </copy>

    <java failonerror="true" fork="true" classname="javacc" classpath="${javacc-jar}">
      <arg line="-OUTPUT_DIRECTORY=${test-tmp}/Obfuscator examples/Obfuscator/Java1.1.jj" />
    </java>

    <java failonerror="true" fork="true" classname="javacc" classpath="${javacc-jar}">
      <arg line="-OUTPUT_DIRECTORY=${test-tmp}/Obfuscator examples/Obfuscator/IdsFile.jj" />
    </java>

    <java failonerror="true" fork="true" classname="javacc" classpath="${javacc-jar}">
      <arg line="-OUTPUT_DIRECTORY=${test-tmp}/Obfuscator examples/Obfuscator/MapFile.jj" />
    </java>

    <javac srcdir="${test-tmp}/Obfuscator" />

    <!-- Test cases for SimpleExamples -->
    <echo message="SimpleExamples" />

    <mkdir dir="${test-tmp}/SimpleExamples" />

    <java failonerror="true" fork="true" classname="javacc" classpath="${javacc-jar}">
      <arg line="-OUTPUT_DIRECTORY=${test-tmp}/SimpleExamples examples/SimpleExamples/Simple1.jj" />
    </java>

    <java failonerror="true" fork="true" classname="javacc" classpath="${javacc-jar}">
      <arg line="-OUTPUT_DIRECTORY=${test-tmp}/SimpleExamples examples/SimpleExamples/Simple2.jj" />
    </java>

    <java failonerror="true" fork="true" classname="javacc" classpath="${javacc-jar}">
      <arg line="-OUTPUT_DIRECTORY=${test-tmp}/SimpleExamples examples/SimpleExamples/Simple3.jj" />
    </java>

    <java failonerror="true" fork="true" classname="javacc" classpath="${javacc-jar}">
      <arg line="-OUTPUT_DIRECTORY=${test-tmp}/SimpleExamples examples/SimpleExamples/NL_Xlator.jj"
      />
    </java>

    <java failonerror="true" fork="true" classname="javacc" classpath="${javacc-jar}">
      <arg line="-OUTPUT_DIRECTORY=${test-tmp}/SimpleExamples examples/SimpleExamples/IdList.jj" />
    </java>

    <!-- Test cases for Java 7 syntax features -->
    <echo message="java7features" />

    <mkdir dir="${test-tmp}/java7features" />

    <java failonerror="true" fork="true" classname="javacc" classpath="${javacc-jar}">
      <arg line="-OUTPUT_DIRECTORY=${test-tmp}/java7features test/java7features/Parser.jj" />
    </java>

    <echo message="Transformer" />
    <copy todir="${test-tmp}/Transformer">
      <fileset dir="examples/Transformer">
        <include name="*.java" />
      </fileset>
    </copy>

    <java failonerror="true" fork="true" classname="jjtree" classpath="${javacc-jar}">
      <arg line="-OUTPUT_DIRECTORY=${test-tmp}/Transformer examples/Transformer/ToyJava.jjt" />
    </java>

    <java failonerror="true" fork="true" classname="javacc" classpath="${javacc-jar}">
      <arg line="-OUTPUT_DIRECTORY=${test-tmp}/Transformer ${test-tmp}/Transformer/ToyJava.jj" />
    </java>

    <javac srcdir="${test-tmp}/Transformer" />

    <echo message="VTransformer" />

    <copy todir="${test-tmp}/VTransformer">
      <fileset dir="examples/VTransformer">
        <include name="*.java" />
      </fileset>
    </copy>

    <java failonerror="true" fork="true" classname="jjtree" classpath="${javacc-jar}">
      <arg line="-OUTPUT_DIRECTORY=${test-tmp}/VTransformer examples/VTransformer/Java1.1.jjt" />
    </java>

    <java failonerror="true" fork="true" classname="javacc" classpath="${javacc-jar}">
      <arg line="-OUTPUT_DIRECTORY=${test-tmp}/VTransformer ${test-tmp}/VTransformer/Java1.1.jj" />
    </java>
    <javac srcdir="${test-tmp}/VTransformer" />

    <!-- 2014/05/09 - New tests to test that TOKEN_MANAGER_USES_PARSER has no effect if static is true -->
    <java failonerror="true" fork="true" classname="javacc" classpath="${javacc-jar}">
      <arg line="-OUTPUT_DIRECTORY=${test-tmp}/TestTokenManagerUsesParser test/TestTokenManagerUsesParser/TestTokenManagerUsesParser.jj"
      />
    </java>

    <echo message="TestTokenManagerUsesParser" />

    <javac srcdir="${test-tmp}/TestTokenManagerUsesParser" />

    <!-- 2014/05/09 - New tests to test that TOKEN_MANAGER_USES_PARSER works as expected if static is false -->
    <java failonerror="true" fork="true" classname="javacc" classpath="${javacc-jar}">
      <arg line="-OUTPUT_DIRECTORY=${test-tmp}/TestTokenManagerUsesParser2 test/TestTokenManagerUsesParser2/TestTokenManagerUsesParser2.jj"
      />
    </java>

    <javac srcdir="${test-tmp}/TestTokenManagerUsesParser2" />

  </target>


  <!-- ===== -->
  <!-- MAVEN -->
  <!-- ===== -->

  <!-- defined maven snapshots and staging repository id and url -->
  <property name="ossrh-snapshots-repository-url"
            value="https://oss.sonatype.org/content/repositories/snapshots/"
  />
  <property name="ossrh-staging-repository-url"
            value="https://oss.sonatype.org/service/local/staging/deploy/maven2/"
  />
  <!-- there server id in the Maven settings.xml -->
  <property name="ossrh-server-id" value="ossrh" />

  <target name="echo">
    <!-- replace file="foo.xml" token="$${version}" value="${version}"/ -->
    <echo message="$${version} = ${version}" />
  </target>

  <target name="deploy"
          depends="dist"
          description="deploy snapshot version to Maven snapshot repository"
  >
    <artifact:mvn>
      <arg value="org.apache.maven.plugins:maven-deploy-plugin:2.8:deploy-file" />
      <arg value="-Durl=${ossrh-snapshots-repository-url}" />
      <arg value="-DrepositoryId=${ossrh-server-id}" />
      <arg value="-DpomFile=pom.xml" />
      <arg value="-Dfile=${javacc-path}" />
    </artifact:mvn>
  </target>

  <target name="install" depends="jar" description="install version to Maven local repository">
    <artifact:pom id="mypom" file="pom.xml" />
    <artifact:install file="${javacc-path}">
      <pom refid="mypom" />
    </artifact:install>
  </target>

  <!-- before this, update project version (both build.xml and pom.xml) from SNAPSHOT to RELEASE -->
  <target name="stage"
          depends="dist"
          description="deploy release version to Maven staging repository"
  >
    <!-- sign and deploy the main artifact -->
    <artifact:mvn>
      <arg value="org.apache.maven.plugins:maven-gpg-plugin:1.5:sign-and-deploy-file" />
      <arg value="-Durl=${ossrh-staging-repository-url}" />
      <arg value="-DrepositoryId=${ossrh-server-id}" />
      <arg value="-DpomFile=pom.xml" />
      <arg value="-Dfile=${javacc-path}" />
      <arg value="-Pgpg" />
    </artifact:mvn>

    <!-- sign and deploy the sources artifact -->
    <artifact:mvn>
      <arg value="org.apache.maven.plugins:maven-gpg-plugin:1.5:sign-and-deploy-file" />
      <arg value="-Durl=${ossrh-staging-repository-url}" />
      <arg value="-DrepositoryId=${ossrh-server-id}" />
      <arg value="-DpomFile=pom.xml" />
      <arg value="-Dfile=${javacc-sources-path}" />
      <arg value="-Dclassifier=sources" />
      <arg value="-Pgpg" />
    </artifact:mvn>

    <!-- sign and deploy the javadoc artifact -->
    <artifact:mvn>
      <arg value="org.apache.maven.plugins:maven-gpg-plugin:1.5:sign-and-deploy-file" />
      <arg value="-Durl=${ossrh-staging-repository-url}" />
      <arg value="-DrepositoryId=${ossrh-server-id}" />
      <arg value="-DpomFile=pom.xml" />
      <arg value="-Dfile=${javacc-javadoc-path}" />
      <arg value="-Dclassifier=javadoc" />
      <arg value="-Pgpg" />
    </artifact:mvn>
  </target>

</project>


================================================
FILE: docs/.gitignore
================================================
_site
.sass-cache
.jekyll-cache
.jekyll-metadata
vendor
/_setaside/


================================================
FILE: docs/Gemfile
================================================
source "https://rubygems.org"
# Hello! This is where you manage which Jekyll version is used to run.
# When you want to use a different version, change it below, save the
# file and run `bundle install`. Run Jekyll with `bundle exec`, like so:
#
#     bundle exec jekyll serve
#
# This will help ensure the proper Jekyll version is running.
# Happy Jekylling!
#gem "jekyll", "~> 4.3.3"
# This is the default theme for new Jekyll sites. You may change this to anything you like.
gem "minima", "~> 2.5"
# If you want to use GitHub Pages, remove the "gem "jekyll"" above and
# uncomment the line below. To upgrade, run `bundle update github-pages`.
# gem "github-pages", group: :jekyll_plugins
gem "github-pages", "~> 228", group: :jekyll_plugins
# If you have any plugins, put them here!
group :jekyll_plugins do
  gem "jekyll-feed", "~> 0.12"
end

# Windows and JRuby does not include zoneinfo files, so bundle the tzinfo-data gem
# and associated library.
platforms :mingw, :x64_mingw, :mswin, :jruby do
  gem "tzinfo", ">= 1", "< 3"
  gem "tzinfo-data"
end

# Performance-booster for watching directories on Windows
gem "wdm", "~> 0.1.1", :platforms => [:mingw, :x64_mingw, :mswin]

# Lock `http_parser.rb` gem to `v0.6.x` on JRuby builds since newer versions of the gem
# do not have a Java counterpart.
gem "http_parser.rb", "~> 0.6.0", :platforms => [:jruby]

# versions for getting rid of vulnerabilities
gem "webrick", "~> 1.8.2"
gem "rexml", ">= 3.3.9"
gem "nokogiri", ">= 1.16.5"



================================================
FILE: docs/LICENSE
================================================
Copyright (c) 2006, Sun Microsystems, Inc.
All rights reserved.

Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions are met:

    * Redistributions of source code must retain the above copyright notice,
      this list of conditions and the following disclaimer.
    * Redistributions in binary form must reproduce the above copyright
      notice, this list of conditions and the following disclaimer in the
      documentation and/or other materials provided with the distribution.
    * Neither the name of the Sun Microsystems, Inc. nor the names of its
      contributors may be used to endorse or promote products derived from
      this software without specific prior written permission.

THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
THE POSSIBILITY OF SUCH DAMAGE.



================================================
FILE: docs/_config.yml
================================================
# --- General options --- #
theme: jekyll-theme-cayman
show_downloads: true

# Name of website
title: JavaCC

# Short description of the site
description: The most popular parser generator for use with Java applications.

# Latest release
version: 7.0.13

# Site URLs
github:
  contributors_url: https://github.com/javacc/javacc/graphs/contributors
  zip_url: https://github.com/javacc/javacc/archive/javacc-7.0.13.zip
  tar_url: https://github.com/javacc/javacc/archive/javacc-7.0.13.tar.gz


================================================
FILE: docs/_layouts/default.html
================================================
<!DOCTYPE html>
<!--
Copyright (c) 2006, Sun Microsystems, Inc.
All rights reserved.

Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions are met:

    * Redistributions of source code must retain the above copyright notice,
      this list of conditions and the following disclaimer.
    * Redistributions in binary form must reproduce the above copyright
      notice, this list of conditions and the following disclaimer in the
      documentation and/or other materials provided with the distribution.
    * Neither the name of the Sun Microsystems, Inc. nor the names of its
      contributors may be used to endorse or promote products derived from
      this software without specific prior written permission.

THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
THE POSSIBILITY OF SUCH DAMAGE.
-->
<html lang="{{ site.lang | default: "en-US" }}">
  <head>

    {% if site.google_analytics %}
      <script async src="https://www.googletagmanager.com/gtag/js?id={{ site.google_analytics }}"></script>
      <script>
        window.dataLayer = window.dataLayer || [];
        function gtag(){dataLayer.push(arguments);}
        gtag('js', new Date());
        gtag('config', '{{ site.google_analytics }}');
      </script>
    {% endif %}
    <meta charset="UTF-8">

{% seo %}
    <meta name="viewport" content="width=device-width, initial-scale=1">
    <meta name="theme-color" content="#157878">
    <meta name="apple-mobile-web-app-status-bar-style" content="black-translucent">
    <link rel="stylesheet" href="{{ '/assets/css/style.css?v=' | append: site.github.build_revision | relative_url }}">
  </head>
  <body>
    <!--a id="skip-to-content" href="#content">Skip to the content.</a-->

    <header class="page-header" role="banner">
      <h1 class="project-name">{{ page.title | default: site.title | default: site.github.repository_name }}</h1>
      <h2 class="project-tagline">{{ page.description | default: site.description | default: site.github.project_tagline }}</h2>
      {% if site.github.is_project_page %}
        <a href="{{ site.github.repository_url }}" class="btn">View on GitHub</a>
      {% endif %}
      {% if site.show_downloads %}
        <a href="{{ site.github.zip_url }}" class="btn">Download {{ site.version }}.zip</a>
        <a href="{{ site.github.tar_url }}" class="btn">Download {{ site.version }}.tar.gz</a>
      {% endif %}
    </header>

    <main id="content" class="main-content" role="main">

      {{ content }}

      <footer class="site-footer">
        {% if site.github.is_project_page %}
          <!--span class="site-footer-owner"><a href="{{ site.github.repository_url }}">{{ site.github.repository_name }}</a> is maintained by <a href="{{ site.github.owner_url }}">{{ site.github.owner_name }}</a>.</span-->
          <span class="site-footer-owner">This site is maintained by the <a href="{{ site.github.contributors_url }}">{{ site.title }} Community</a>.</span>
        {% endif %}
        <!--span class="site-footer-credits">This page was generated by <a href="https://pages.github.com">GitHub Pages</a>.</span-->
      </footer>
    </main>
  </body>
</html>


================================================
FILE: docs/assets/css/style.scss
================================================
---
---

@import "{{ site.theme }}";

.main-content {
  max-width: 100%;
}


================================================
FILE: docs/documentation/api.md
================================================
[Home](../index.md) > [Documentation](index.md) > JavaCC API

---

This page is a comprehensive list of all classes, methods, and variables available for use.

### <a name="toc"></a>Contents

- [**JavaCC API**](#javacc-api)
  * [Non-terminals in the input grammar](#non-terminals)
  * [API for parser actions](#parser-actions)
  * [TokenManager interface](#token-manager)
  * [Constructors and other initialization routines](#constructors)
  * [Token class](#token-class)
  * [Reading tokens from the input stream](#returning-tokens)
  * [Working with debugger tracing](#debugger-tracing)
  * [Customizing error messages](#error-messages)
  * [ErrorHandler interface (C++ only)](#errorhandler)
- [**JJTree API**](#jjtree-api)
  * [Parser methods](#parser-methods)
  * [Node interface](#node)

## <a name="javacc-api"></a>JavaCC API

These classes, methods, and variables are typically used from the actions that are embedded in a JavaCC grammar. In the sample code used below, it is assumed that the name of the generated parser is `TheParser`.

### <a name="non-terminals"></a>Non-terminals in the input grammar

---

For each non-terminal `NT` in the input grammar file, the following method is generated into the parser class:

```java
/*
 * When this method is called, the input stream is parsed to match this non-terminal.
 * On a successful parse, this method returns normally. On detection of a parse error,
 * an error message is displayed and the method returns by throwing an exception of
 * the type ParseException.
 */
returntype NT(parameters) throws ParseException;
```

Here, *returntype* and *parameters* are what were specified in the JavaCC input file in the definition of `NT` (where `NT` occurred on the left-hand side).

*Note that all non-terminals in a JavaCC input grammar have equal status - it is possible to parse to any non-terminal by calling the non-terminal's method*.

<br>

### <a name="parser-actions"></a>API for parser actions

---

```java
/*
 * This variable holds the last token consumed by the parser and can be used
 * in parser actions. This is exactly the same as the token returned by getToken(0).
 */
Token token;
```

In addition, the two methods - `getToken(int i)` and `getNextToken()` can also be used in actions to traverse the token list.

<br>

### <a name="token-manager"></a>TokenManager interface

---

Typically, the token manager interface is not to be used. Instead all access must be made through the parser interface. However, in certain situations - such as if you are not building a parser and building only the token manager - the token manager interface is useful.

The token manager provides the following routine:

```java
/*
 * Each call to this method returns the next token in the input stream.
 * This method throws a `ParseError` exception when there is a lexical error,
 * i.e. it could not find a match for any of the specified tokens from the
 * input stream.
 */
Token getNextToken() throws ParseError;
```

<br>

### <a name="constructors"></a>Constructors and other initialization routines

---

```java
/*
 * This creates a new parser object, which in turn creates a new token manager
 * object that reads its tokens from "stream". This constructor is available
 * only when both the options USER_TOKEN_MANAGER and USER_CHAR_STREAM are false.
 *
 * If the option STATIC is true, this constructor (along with other constructors)
 * can be called exactly once to create a single parser object.
 */
TheParser.TheParser(java.io.InputStream stream)
```

```java
/*
 * Similar to the previous constructor, except that this one is available only
 * when the option USER_TOKEN_MANAGER is false and USER_CHAR_STREAM is true.
 */
TheParser.TheParser(CharStream stream)
```

```java
/*
 * This reinitializes an existing parser object. In addition, it also reinitializes
 * the existing token manager object that corresponds to this parser object.
 *
 * The result is a parser object with the exact same functionality as one that was
 * created with the constructor above. The only difference is that new objects are
 * not created.
 *
 * This method is available only when both the options USER_TOKEN_MANAGER and
 * USER_CHAR_STREAM are false. If the option STATIC is true, this (along with the
 * other ReInit methods) is the only way to restart a parse operation for there
 * is only one parser and all one can do is reinitialize it.
 */
void TheParser.ReInit(java.io.InputStream stream)
```

```java
/*
 * Similar to the previous method, except that this one is available only when the
 * option USER_TOKEN_MANAGER is false and USER_CHAR_STREAM is true.
 */
void TheParser.ReInit(CharStream stream)
```

```java
/*
 * This creates a new parser object which uses an already created token manager
 * object "tm" as its token manager.
 *
 * This constructor is only available if option USER_TOKEN_MANAGER is false.
 *
 * If the option STATIC is true, this constructor (along with other constructors)
 * can be called exactly once to create a single parser object.
 */
TheParser(TheParserTokenManager tm)
```

```java
/*
 * Similar to the previous constructor, except that this one is available only when
 * the option USER_TOKEN_MANAGER is true.
 */
TheParser(TokenManager tm)
```

```java
/*
 * This reinitializes an existing parser object with the token manager
 * object "tm" as its new token manager.
 *
 * This method is only available if option USER_TOKEN_MANAGER is false.
 *
 * If the option STATIC is true, this (along with the other ReInit methods)
 * is the only way to restart a parse operation for there is only one parser
 * and all one can do is reinitialize it.
 */
void TheParser.ReInit(TheParserTokenManager tm)
```

```java
/*
 * Similar to the previous method, except that this one is available only when
 * the option USER_TOKEN_MANAGER is true.
 */
void TheParser.ReInit(TokenManager tm)
```

```java
/*
 * Creates a new token manager object initialized to read input from "stream".
 *
 * When the option STATIC is true, this constructor may be called only once. This
 * is available only when USER_TOKEN_MANAGER is false and USER_CHAR_STREAM is true.
 *
 * When USER_TOKEN_MANAGER is false and USER_CHAR_STREAM is false (the default situation),
 * a constructor similar to the one above is available with the type CharStream
 * replaced as follows:
 * - When JAVA_UNICODE_ESCAPE is false and UNICODE_INPUT is false,
 *   CharStream is replaced by ASCII_CharStream.
 * - When JAVA_UNICODE_ESCAPE is false and UNICODE_INPUT is true,
 *   CharStream is replaced by UCode_CharStream.
 * - When JAVA_UNICODE_ESCAPE is true and UNICODE_INPUT is false,
 *   CharStream is replaced by ASCII_UCodeESC_CharStream.
 * - When JAVA_UNICODE_ESCAPE is true and UNICODE_INPUT is true,
 *   CharStream is replaced by UCode_UCodeESC_CharStream.
 */
TheParserTokenManager.TheParserTokenManager(CharStream stream)
```

```java
/*
 * Reinitializes the current token manager object to read input from "stream".
 *
 * When the option STATIC is true, this is the only way to restart a token manager operation.
 * This is available only when USER_TOKEN_MANAGER is false and USER_CHAR_STREAM is true.
 *
 * When USER_TOKEN_MANAGER is false and USER_CHAR_STREAM is false (the default situation),
 * a constructor similar to the one above is available with the type CharStream
 * replaced as follows:
 * - When JAVA_UNICODE_ESCAPE is false and UNICODE_INPUT is false,
 *   CharStream is replaced by ASCII_CharStream.
 * - When JAVA_UNICODE_ESCAPE is false and UNICODE_INPUT is true,
 *   CharStream is replaced by UCode_CharStream.
 * - When JAVA_UNICODE_ESCAPE is true and UNICODE_INPUT is false,
 *   CharStream is replaced by ASCII_UCodeESC_CharStream.
 * - When JAVA_UNICODE_ESCAPE is true and UNICODE_INPUT is true,
 *   CharStream is replaced by UCode_UCodeESC_CharStream.
 */
void TheParserTokenManager.ReInit(CharStream stream)
```

<br>

### <a name="token-class"></a>Token class

---

The Token class is the type of token objects that are created by the token manager after a successful scanning of the token stream. These token objects are then passed to the parser and are accessible to the actions in a JavaCC grammar usually by grabbing the return value of a token.

The methods `getToken()` and `getNextToken()` described below also give access to objects of this type.

Each `Token` object has the following fields and methods:

```java
/*
 * This is the index for this kind of token in the internal representation scheme of JavaCC.
 *
 * When tokens in the JavaCC input file are given labels, these labels are used to generate
 * int constants that can be used in actions. T
 *
 * The value 0 is always used to represent the predefined token <EOF>. A constant "EOF"
 * is generated for convenience in the ...Constants file.
 */
int kind;
```

```java
/*
 * These indicate the beginning and ending positions of the token as it appeared
 * in the input stream.
 */
int beginLine, beginColumn, endLine, endColumn;
```

```java
/*
 * This represents the image of the token as it appeared in the input stream.
 */
String image;
```

```java
/*
 * A reference to the next regular (non-special) token from the input stream.
 *
 * If this is the last token from the input stream, or if the token manager has
 * not read tokens beyond this one, this field is set to null.
 */
Token next;
```
The description in the above paragraph holds only if this token is also a regular token

Note there are two kinds of tokens:
* Regular tokens are the normal tokens that are fed to the parser.
* Special tokens are other useful tokens (like comments) that are not discarded (like white space).

For more information on the different kinds of tokens please see the token manager [tutorial](../tutorials/token-manager.md).

```java
/*
 * This field is used to access special tokens that occur prior to this token,
 * but after the immediately preceding regular (non-special) token.
 *
 * If there are no such special tokens, this field is set to null. When there are more
 * than one such special token, this field refers to the last of these special tokens,
 * which in turn refers to the next previous special token through its specialToken field,
 * and so on until the first special token (whose specialToken field is null).
 *
 * The next fields of special tokens refer to other special tokens that immediately
 * follow it (without an intervening regular token). If there is no such token,
 * this field is null.
 */
Token specialToken;
```

```java
/*
 * An optional attribute value of the Token.
 *
 * Tokens which are not used as syntactic sugar will often contain meaningful values
 * that will be used later on by the compiler or interpreter. This attribute value is
 * often different from the image. Any subclass of Token that actually wants to return
 * a non-null value can override this method as appropriate.
 */
public Object getValue();
```

```java
/*
 * Returns a new token object as its default behavior. If you wish to perform
 * special actions when a token is constructed or create subclasses of class Token
 * and instantiate them instead, you can redefine this method appropriately.
 *
 * The only constraint is that this method returns a new object of type Token
 * (or a subclass of Token).
 */
static final Token newToken(int ofKind);
```

```java
/*
 * Returns a new token object as its default behavior. If you wish to perform
 * special actions when a token is constructed or create subclasses of class Token
 * and instantiate them instead, you can redefine this method appropriately.
 *
 * The only constraint is that this method returns a new object of type Token
 * (or a subclass of Token).
 */
static final Token newToken(int ofKind, String image);
```

<br>

### <a name="returning-tokens"></a>Reading tokens from the input stream

---

There are two methods available for this purpose:

```java
/*
 * This method returns the next available token in the input stream and moves
 * the token pointer one step in the input stream (i.e., this changes the state
 ( of the input stream).
 *
 * If there are no more tokens available in the input stream, the exception
 * ParseError is thrown.
 *
 * Care must be taken when calling this method since it can interfere with the
 * parser's knowledge of the state of the input stream, current token, etc.
 */
Token TheParser.getNextToken() throws ParseError
```

```java
/*
 * This method returns the index-th token from the current token ahead in the
 * token stream.
 * - If index is 0, it returns the current token (the last token returned by
 *   getNextToken or consumed by the parser);
 * - if index is 1, it returns the next token (the next token that will be
 *   returned by getNextToken of consumed by the parser) and so on.
 *
 * The index parameter cannot be negative.
 *
 * This method does not change the input stream pointer (i.e., it does not change
 * the state of the input stream). If an attempt is made to access a token beyond
 * the last available token, the exception ParseError is thrown.
 *
 * If this method is called from a semantic lookahead specification, which in turn
 * is called during a lookahead determination process, the current token is temporarily
 * adjusted to be the token currently being inspected by the lookahead process.
 */
Token TheParser.getToken(int index) throws ParseError
```

<br>

### <a name="debugger-tracing"></a>Working with debugger tracing

---

When you generate parsers with the options `DEBUG_PARSER` or `DEBUG_LOOKAHEAD`, these parsers produce a trace of their activity which is printed to the user console. You can insert calls to the following methods to control this tracing activity:

```java
void TheParser.enable_tracing()
void TheParser.disable_tracing()
```

For convenience, these methods are available even when you build parsers without the debug options. In this case, these methods are no-ops. Hence you can permanently leave these methods in your code and they automatically kick in when you use the debug options.

<br>

### <a name="error-messages"></a>Customizing error messages

---

To help the user in customizing error messages generated by the parser and lexer, the user is offered the facilities described in this section. In the case of the parser, these facilities are only available if the option `ERROR_REPORTING` is `true`, while in the case of the lexer, these facilities are always available.

The parser contains the following method definition:

```java
/*
 * To customize error reporting by the parser, the parser class must be subclassed
 * and this method redefined in the subclass.
 */
protected void token_error() { ... }
```

To help with creating your error reporting scheme, the following variables are available:

```java
/*
 * The line and column where the error was detected.
 */
protected int error_line, error_column;
```

```java
/*
 * The image of the offending token or set of tokens. When a lookahead of more than
 * 1 is used, more than one token may be present here.
 */
protected String error_string;
```

```java
/*
 * An array of images of legitimate token sequences. Here again, each legitimate token
 * sequence may be more than just one token when a lookahead of more than 1 is used.
 */
protected String[] expected_tokens;
```

The lexer contains the following method definition:

```java
/*
 * To customize error reporting by the lexer, the lexer class must be subclassed
 * and this method redefined in the subclass.
 */
protected void LexicalError() { ... }
```

To help with creating your error reporting scheme, the following variables are available:

```java
/*
 * The line and column where the error was detected.
 */
protected int error_line, error_column;
```


```java
/*
 * The partial string that has been read since the last successful token match was performed.
 */
protected String error_after;
```

```java
/*
 * The offending character.
 */
protected char curChar;
```

<br>

### <a name="errorhandler"></a>ErrorHandler interface (C++ only)

---

Since the parser doesn't use exceptions in C++, we provide an interface - `ErrorHandler` that handles the various different errors encountered during the parse.

```java
/*
 * This protected field indicates the number of errors. If you are subclassing this class,
 * it's your responsibility to update this field.
 */
int error_count;
```

```java
/*
 * This public function is called when the parser encounters a different token when
 * expecting to consume a specific kind of token.
 *
 * Parameters:
 * - int expectedKind - token kind that the parser was trying to consume.
 * - string expectedToken - the image of the token - tokenImages[expectedKind].
 * - Token* actual - the actual token that the parser got instead.
 */
void handleUnexpectedToken()
```

```java
/*
 * This public function is called when the parser cannot continue parsing any further.
 *
 * Parameters:
 * - Token* last - the last token successfully parsed.
 * - Token* unexpected - the token at which the error occurs.
 * - string production - the name of the production in which this error occurs.
 */
void handleParseError()
```

```java
/*
 * This public function returns the number of errors.
 */
int getErrorCount()
```

<br>

## <a name="jjtree-api"></a>JJTree API

JJTree has two APIs - it adds some parser methods, and it requires all node objects to implement the `Node` interface.

### <a name="parser-methods"></a>Parser methods

JJTree maintains some state in the parser object itself. It encapsulates all this state with an object that can be referred to via the `jjtree` field.

The parser state implements an open stack where nodes are held until they can be added to their parent node. The `jjtree` state object provides methods for you to manipulate the contents of the stack in your actions if the basic JJTree mechanisms are not sufficient.

```java
/*
 * Call this to reinitialize the node stack.
 *
 * All nodes currently on the stack are thrown away. Don't call this from within
 * a node scope, or terrible things will surely happen.
 */
void reset()
```

```java
/*
 * Returns the root node of the AST.
 *
 * Since JJTree operates bottom-up, the root node is only defined after
 * the parse has finished.
 */
Node rootNode();
```

```java
/*
 * Determines whether the current node was actually closed and pushed.
 *
 * Call this in the final action within a conditional node scope.
 */
boolean nodeCreated();
```

```java
/*
 * Returns the number of nodes currently pushed on the
 * node stack in the current node scope.
 */
int arity();
```

```java
/*
 * Pushes a node on to the stack.
 */
void pushNode(Node n);
```

```java
/*
 * Returns the node on the top of the stack, and removes it from the stack.
 */
Node popNode();
```

```java
/*
 * Returns the node currently on the top of the stack.
 */
Node peekNode();
```

<br>

### <a name="node"></a>Node interface

All AST nodes must implement this interface. It provides basic machinery for constructing the parent and child relationships between nodes.

```java
/*
 * This method is called after the node has been made the current node.
 * It indicates that child nodes can now be added to it.
 */
public void jjtOpen();
```

```java
/*
 * This method is called after all the child nodes have been added.
 */
public void jjtClose();
```

```java
/*
* Used to inform the node of its parent.
 */
public void jjtSetParent(Node n);
```

```java
/*
 * Used to inform the node of its parent.
 */
public Node jjtGetParent();
```

```java
/*
 * This method tells the node to add its argument to the node's list of children.
 */
public void jjtAddChild(Node n, int i);
```

```java
/*
 * This method returns a child node. The children are numbered from zero, left to right.

 */
public Node jjtGetChild(int i);
```

```java
/*
 * Return the number of children the node has.
 */
int jjtGetNumChildren();
```

<br>

---

[NEXT >>](jjtree.md)

<br>


================================================
FILE: docs/documentation/bnf.md
================================================
[Home](../index.md) > [Documentation](index.md) > JavaCC BNF

---

This page contains the complete syntax of the JavaCC grammar files with detailed explanations of each construct.

### <a name="toc"></a>Contents

- [**Tokens**](#tokens)
  * [Reserved words](#reserved-words)
  * [Whitespace](#whitespace)
  * [Comments](#comments)
  * [Reserved words and literals](#reserved-and-literals)
  * [Separators](#separators)
  * [Operators](#operators)
  * [Identifiers](#identifiers)
- [**Non-Terminals**](#non-terminals)
  * [JavaCC grammar](#javacc-grammar)
  * [Java grammar](#java-grammar)
    * [Java identifiers](#java-identifiers)
    * [Program structure](#program-structure)
    * [Modifiers](#modifiers)
    * [Declarations](#declarations)
    * [Types](#types)
    * [Expressions](#expressions)
    * [Statements](#statements)
    * [Annotations](#annotations)
    * [Annotation types](#annotation-types)

## <a name="tokens"></a>Tokens

The following is the JavaCC token specification.

### <a name="reserved-words"></a>Reserved words

---

```java
/*
 * These are the only tokens in JavaCC but not in Java.
 */
<DEFAULT> TOKEN : { <_LOOKAHEAD: "LOOKAHEAD">
                  | <_IGNORE_CASE: "IGNORE_CASE">
                  | <_PARSER_BEGIN: "PARSER_BEGIN">
                  | <_PARSER_END: "PARSER_END">
                  | <_JAVACODE: "JAVACODE">
                  | <_CPPCODE: "CPPCODE">
                  | <_TOKEN: "TOKEN">
                  | <_SPECIAL_TOKEN: "SPECIAL_TOKEN">
                  | <_MORE: "MORE">
                  | <_SKIP: "SKIP">
                  | <_TOKEN_MGR_DECLS: "TOKEN_MGR_DECLS">
                  | <_EOF: "EOF">
                  | <_DCL_PARSER_BEGIN: "DCL_PARSER_BEGIN">
                  | <_DCL_PARSER_END: "DCL_PARSER_END">
                  | <_INC_PARSER_BEGIN: "INC_PARSER_BEGIN">
                  | <_INC_PARSER_END: "INC_PARSER_END">
                  | <_DEF_PARSER_BEGIN: "DEF_PARSER_BEGIN">
                  | <_DEF_PARSER_END: "DEF_PARSER_END">
}
```

<br>

### <a name="whitespace"></a>Whitespace

---

```java
/*
 * Whitespace
 */
<DEFAULT> SKIP : { " "
                 | "\t"
                 | "\n"
                 | "\r"
                 | "\f"
                 | "/*@egen*/" : AFTER_EGEN
}

<AFTER_EGEN> SKIP : {
  <~[]> : DEFAULT
}
```

<br>

### <a name="comments"></a>Comments

---

```java
/*
 * Comments
 */
<DEFAULT> MORE : { "//" : IN_SINGLE_LINE_COMMENT
                 | <"/**" ~["/"]> : IN_FORMAL_COMMENT
                 | "/*" : IN_MULTI_LINE_COMMENT
                 | "/*@bgen(jjtree" : IN_MULTI_LINE_COMMENT
}

<IN_SINGLE_LINE_COMMENT> SPECIAL : {
  <SINGLE_LINE_COMMENT: "\n" | "\r" | "\r\n"> : DEFAULT
}

<IN_FORMAL_COMMENT> SPECIAL : {
  <FORMAL_COMMENT: "*/"> : DEFAULT
}

<IN_MULTI_LINE_COMMENT> SPECIAL : {
  <MULTI_LINE_COMMENT: "*/"> : DEFAULT
}

<IN_SINGLE_LINE_COMMENT,IN_FORMAL_COMMENT,IN_MULTI_LINE_COMMENT> MORE : {
  <~[]>
}
```

<br>

### <a name="reserved-and-literals"></a>Reserved words and literals

---

```java
/*
 * Java reserved words and literals
 */
<DEFAULT> TOKEN : { <ABSTRACT: "abstract">
                  | <ASSERT: "assert">
                  | <BOOLEAN: "boolean">
                  | <BREAK: "break">
                  | <BYTE: "byte">
                  | <CASE: "case">
                  | <CATCH: "catch">
                  | <CHAR: "char">
                  | <CLASS: "class">
                  | <CONST: "const">
                  | <CONTINUE: "continue">
                  | <_DEFAULT: "default">
                  | <DO: "do">
                  | <DOUBLE: "double">
                  | <ELSE: "else">
                  | <ENUM: "enum">
                  | <EXTENDS: "extends">
                  | <FALSE: "false">
                  | <FINAL: "final">
                  | <FINALLY: "finally">
                  | <FLOAT: "float">
                  | <FOR: "for">
                  | <GOTO: "goto">
                  | <IF: "if">
                  | <IMPLEMENTS: "implements">
                  | <IMPORT: "import">
                  | <INSTANCEOF: "instanceof">
                  | <INT: "int">
                  | <INTERFACE: "interface">
                  | <LONG: "long">
                  | <NATIVE: "native">
                  | <NEW: "new">
                  | <NULL: "null">
                  | <PACKAGE: "package">
                  | <PRIVATE: "private">
                  | <PROTECTED: "protected">
                  | <PUBLIC: "public">
                  | <RETURN: "return">
                  | <SHORT: "short">
                  | <STATIC: "static">
                  | <STRICTFP: "strictfp">
                  | <SUPER: "super">
                  | <SWITCH: "switch">
                  | <SYNCHRONIZED: "synchronized">
                  | <THIS: "this">
                  | <THROW: "throw">
                  | <THROWS: "throws">
                  | <TRANSIENT: "transient">
                  | <TRUE: "true">
                  | <TRY: "try">
                  | <VOID: "void">
                  | <VOLATILE: "volatile">
                  | <WHILE: "while">
}
```

```java
/*
 * C++ reserved words and literals
 */
<DEFAULT> TOKEN : { <TEMPLATE: "template">
                  | <TYPENAME: "typename">
}
```

```java
/*
 * Java literals
 */
<DEFAULT> TOKEN : {
    <INTEGER_LITERAL: <DECIMAL_LITERAL> (["l","L"])?
  | <HEX_LITERAL> (["l","L"])?
  | <OCTAL_LITERAL> (["l","L"])?
  | <BINARY_LITERAL> (["l","L"])?>
  | <#DECIMAL_LITERAL: ["1"-"9"] (("_")* ["0"-"9"])*>
  | <#HEX_LITERAL: "0" ["x","X"] ["0"-"9","a"-"f","A"-"F"] (("_")* ["0"-"9","a"-"f","A"-"F"])*>
  | <#OCTAL_LITERAL: "0" (("_")* ["0"-"7"])*>
  | <#BINARY_LITERAL: "0" ["b","B"] ["0","1"] (("_")* ["0","1"])*>
  | <FLOATING_POINT_LITERAL: <DECIMAL_FLOATING_POINT_LITERAL>
  | <HEXADECIMAL_FLOATING_POINT_LITERAL>>
  | <#DECIMAL_FLOATING_POINT_LITERAL:
    ["0"-"9"] (("_")* ["0"-"9"])* "." (["0"-"9"] (("_")* ["0"-"9"])*)?
    (<DECIMAL_EXPONENT>)? (["f","F","d","D"])?
  | "." ["0"-"9"] (("_")* ["0"-"9"])* (<DECIMAL_EXPONENT>)? (["f","F","d","D"])?
  | ["0"-"9"] (("_")* ["0"-"9"])* <DECIMAL_EXPONENT> (["f","F","d","D"])?
  | ["0"-"9"] (("_")* ["0"-"9"])* (<DECIMAL_EXPONENT>)? ["f","F","d","D"]>
  | <#DECIMAL_EXPONENT: ["e","E"] (["+","-"])? ["0"-"9"] (("_")* ["0"-"9"])*>
  | <#HEXADECIMAL_FLOATING_POINT_LITERAL:
    "0" ["x","X"] ["0"-"9","a"-"f","A"-"F"] (("_")* ["0"-"9","a"-"f","A"-"F"])* (".")?
    <HEXADECIMAL_EXPONENT> (["f","F","d","D"])?
  | "0" ["x","X"] (["0"-"9","a"-"f","A"-"F"] (("_")* ["0"-"9","a"-"f","A"-"F"])*)?
    "." ["0"-"9","a"-"f","A"-"F"] (("_")* ["0"-"9","a"-"f","A"-"F"])*
    <HEXADECIMAL_EXPONENT> (["f","F","d","D"])?>
  | <#HEXADECIMAL_EXPONENT: ["p","P"] (["+","-"])? ["0"-"9"] (("_")* ["0"-"9"])*>
  | <CHARACTER_LITERAL: "\'" (~["\'","\\","\n","\r"]
  | "\\" (["n","t","b","r","f","\\","\'","\""]
  | ["0"-"7"] (["0"-"7"])?
  | ["0"-"3"] ["0"-"7"] ["0"-"7"])) "\'">
  | <STRING_LITERAL: "\"" (~["\"","\\","\n","\r"]
  | "\\" (["n","t","b","r","f","\\","\'","\""]
  | ["0"-"7"] (["0"-"7"])?
  | ["0"-"3"] ["0"-"7"] ["0"-"7"]))* "\"">
}
```

<br>

### <a name="separators"></a>Separators

---

```java
/*
 * Separators
 */
<DEFAULT> TOKEN : { <LPAREN: "(">
                  | <RPAREN: ")">
                  | <LBRACE: "{">
                  | <RBRACE: "}">
                  | <LBRACKET: "[">
                  | <RBRACKET: "]">
                  | <SEMICOLON: ";">
                  | <COMMA: ",">
                  | <DOT: ".">
}
```

<br>

### <a name="operators"></a>Operators

---

```java
/*
 * Operators
 */
<DEFAULT> TOKEN : { <ASSIGN: "=">
                  | <LT: "<">
                  | <BANG: "!">
                  | <TILDE: "~">
                  | <HOOK: "?">
                  | <COLON: ":">
                  | <DOUBLECOLON: "::">
                  | <EQ: "==">
                  | <LE: "<=">
                  | <GE: ">=">
                  | <NE: "!=">
                  | <SC_OR: "||">
                  | <SC_AND: "&&">
                  | <INCR: "++">
                  | <DECR: "--">
                  | <PLUS: "+">
                  | <MINUS: "-">
                  | <STAR: "*">
                  | <SLASH: "/">
                  | <BIT_AND: "&">
                  | <BIT_OR: "|">
                  | <XOR: "^">
                  | <REM: "%">
                  | <PLUSASSIGN: "+=">
                  | <MINUSASSIGN: "-=">
                  | <STARASSIGN: "*=">
                  | <SLASHASSIGN: "/=">
                  | <ANDASSIGN: "&=">
                  | <ORASSIGN: "|=">
                  | <XORASSIGN: "^=">
                  | <REMASSIGN: "%=">
}

/*
 * >'s need special attention due to generics syntax.
 */

<DEFAULT> TOKEN : { <RUNSIGNEDSHIFT: ">>>"> : {
                  | <RSIGNEDSHIFT: ">>"> : {
                  | <GT: ">">
}
```

### <a name="identifiers"></a>Identifiers

---

```java
/*
 * Identifiers
 */
<DEFAULT> TOKEN : {
  <IDENTIFIER: <LETTER> (<PART_LETTER>)*>
| <#LETTER: ["$","A"-"Z","_","a"-"z","\u00a2"-"\u00a5","\u00aa","\u00b5","\u00ba",
  "\u00c0"-"\u00d6","\u00d8"-"\u00f6","\u00f8"-"\u021f","\u0222"-"\u0233","\u0250"-"\u02ad",
  "\u02b0"-"\u02b8","\u02bb"-"\u02c1","\u02d0"-"\u02d1","\u02e0"-"\u02e4","\u02ee","\u037a",
  "\u0386","\u0388"-"\u038a","\u038c","\u038e"-"\u03a1","\u03a3"-"\u03ce","\u03d0"-"\u03d7",
  "\u03da"-"\u03f3","\u0400"-"\u0481","\u048c"-"\u04c4","\u04c7"-"\u04c8","\u04cb"-"\u04cc",
  "\u04d0"-"\u04f5","\u04f8"-"\u04f9","\u0531"-"\u0556","\u0559","\u0561"-"\u0587",
  "\u05d0"-"\u05ea","\u05f0"-"\u05f2","\u0621"-"\u063a","\u0640"-"\u064a","\u0671"-"\u06d3",
  "\u06d5","\u06e5"-"\u06e6","\u06fa"-"\u06fc","\u0710","\u0712"-"\u072c","\u0780"-"\u07a5",
  "\u0905"-"\u0939","\u093d","\u0950","\u0958"-"\u0961","\u0985"-"\u098c","\u098f"-"\u0990",
  "\u0993"-"\u09a8","\u09aa"-"\u09b0","\u09b2","\u09b6"-"\u09b9","\u09dc"-"\u09dd",
  "\u09df"-"\u09e1","\u09f0"-"\u09f3","\u0a05"-"\u0a0a","\u0a0f"-"\u0a10","\u0a13"-"\u0a28",
  "\u0a2a"-"\u0a30","\u0a32"-"\u0a33","\u0a35"-"\u0a36","\u0a38"-"\u0a39","\u0a59"-"\u0a5c",
  "\u0a5e","\u0a72"-"\u0a74","\u0a85"-"\u0a8b","\u0a8d","\u0a8f"-"\u0a91","\u0a93"-"\u0aa8",
  "\u0aaa"-"\u0ab0","\u0ab2"-"\u0ab3","\u0ab5"-"\u0ab9","\u0abd","\u0ad0","\u0ae0",
  "\u0b05"-"\u0b0c","\u0b0f"-"\u0b10","\u0b13"-"\u0b28","\u0b2a"-"\u0b30","\u0b32"-"\u0b33",
  "\u0b36"-"\u0b39","\u0b3d","\u0b5c"-"\u0b5d","\u0b5f"-"\u0b61","\u0b85"-"\u0b8a",
  "\u0b8e"-"\u0b90","\u0b92"-"\u0b95","\u0b99"-"\u0b9a","\u0b9c","\u0b9e"-"\u0b9f",
  "\u0ba3"-"\u0ba4","\u0ba8"-"\u0baa","\u0bae"-"\u0bb5","\u0bb7"-"\u0bb9","\u0c05"-"\u0c0c",
  "\u0c0e"-"\u0c10","\u0c12"-"\u0c28","\u0c2a"-"\u0c33","\u0c35"-"\u0c39","\u0c60"-"\u0c61",
  "\u0c85"-"\u0c8c","\u0c8e"-"\u0c90","\u0c92"-"\u0ca8","\u0caa"-"\u0cb3","\u0cb5"-"\u0cb9",
  "\u0cde","\u0ce0"-"\u0ce1","\u0d05"-"\u0d0c","\u0d0e"-"\u0d10","\u0d12"-"\u0d28",
  "\u0d2a"-"\u0d39","\u0d60"-"\u0d61","\u0d85"-"\u0d96","\u0d9a"-"\u0db1","\u0db3"-"\u0dbb",
  "\u0dbd","\u0dc0"-"\u0dc6","\u0e01"-"\u0e30","\u0e32"-"\u0e33","\u0e3f"-"\u0e46",
  "\u0e81"-"\u0e82","\u0e84","\u0e87"-"\u0e88","\u0e8a","\u0e8d","\u0e94"-"\u0e97",
  "\u0e99"-"\u0e9f","\u0ea1"-"\u0ea3","\u0ea5","\u0ea7","\u0eaa"-"\u0eab","\u0ead"-"\u0eb0",
  "\u0eb2"-"\u0eb3","\u0ebd","\u0ec0"-"\u0ec4","\u0ec6","\u0edc"-"\u0edd","\u0f00",
  "\u0f40"-"\u0f47","\u0f49"-"\u0f6a","\u0f88"-"\u0f8b","\u1000"-"\u1021","\u1023"-"\u1027",
  "\u1029"-"\u102a","\u1050"-"\u1055","\u10a0"-"\u10c5","\u10d0"-"\u10f6","\u1100"-"\u1159",
  "\u115f"-"\u11a2","\u11a8"-"\u11f9","\u1200"-"\u1206","\u1208"-"\u1246","\u1248",
  "\u124a"-"\u124d","\u1250"-"\u1256","\u1258","\u125a"-"\u125d","\u1260"-"\u1286","\u1288",
  "\u128a"-"\u128d","\u1290"-"\u12ae","\u12b0","\u12b2"-"\u12b5","\u12b8"-"\u12be","\u12c0",
  "\u12c2"-"\u12c5","\u12c8"-"\u12ce","\u12d0"-"\u12d6","\u12d8"-"\u12ee","\u12f0"-"\u130e",
  "\u1310","\u1312"-"\u1315","\u1318"-"\u131e","\u1320"-"\u1346","\u1348"-"\u135a",
  "\u13a0"-"\u13f4","\u1401"-"\u166c","\u166f"-"\u1676","\u1681"-"\u169a","\u16a0"-"\u16ea",
  "\u1780"-"\u17b3","\u17db","\u1820"-"\u1877","\u1880"-"\u18a8","\u1e00"-"\u1e9b",
  "\u1ea0"-"\u1ef9","\u1f00"-"\u1f15","\u1f18"-"\u1f1d","\u1f20"-"\u1f45","\u1f48"-"\u1f4d",
  "\u1f50"-"\u1f57","\u1f59","\u1f5b","\u1f5d","\u1f5f"-"\u1f7d","\u1f80"-"\u1fb4",
  "\u1fb6"-"\u1fbc","\u1fbe","\u1fc2"-"\u1fc4","\u1fc6"-"\u1fcc","\u1fd0"-"\u1fd3",
  "\u1fd6"-"\u1fdb","\u1fe0"-"\u1fec","\u1ff2"-"\u1ff4","\u1ff6"-"\u1ffc","\u203f"-"\u2040",
  "\u207f","\u20a0"-"\u20af","\u2102","\u2107","\u210a"-"\u2113","\u2115","\u2119"-"\u211d",
  "\u2124","\u2126","\u2128","\u212a"-"\u212d","\u212f"-"\u2131","\u2133"-"\u2139",
  "\u2160"-"\u2183","\u3005"-"\u3007","\u3021"-"\u3029","\u3031"-"\u3035","\u3038"-"\u303a",
  "\u3041"-"\u3094","\u309d"-"\u309e","\u30a1"-"\u30fe","\u3105"-"\u312c","\u3131"-"\u318e",
  "\u31a0"-"\u31b7","\u3400"-"\u4db5","\u4e00"-"\u9fa5","\ua000"-"\ua48c","\uac00"-"\ud7a3",
  "\uf900"-"\ufa2d","\ufb00"-"\ufb06","\ufb13"-"\ufb17","\ufb1d","\ufb1f"-"\ufb28",
  "\ufb2a"-"\ufb36","\ufb38"-"\ufb3c","\ufb3e","\ufb40"-"\ufb41","\ufb43"-"\ufb44",
  "\ufb46"-"\ufbb1","\ufbd3"-"\ufd3d","\ufd50"-"\ufd8f","\ufd92"-"\ufdc7","\ufdf0"-"\ufdfb",
  "\ufe33"-"\ufe34","\ufe4d"-"\ufe4f","\ufe69","\ufe70"-"\ufe72","\ufe74","\ufe76"-"\ufefc",
  "\uff04","\uff21"-"\uff3a","\uff3f","\uff41"-"\uff5a","\uff65"-"\uffbe","\uffc2"-"\uffc7",
  "\uffca"-"\uffcf","\uffd2"-"\uffd7","\uffda"-"\uffdc","\uffe0"-"\uffe1","\uffe5"-"\uffe6"]>
| <#PART_LETTER: ["\u0000"-"\b","\u000e"-"\u001b","$","0"-"9","A"-"Z","_","a"-"z",
  "\u007f"-"\u009f","\u00a2"-"\u00a5","\u00aa","\u00b5","\u00ba","\u00c0"-"\u00d6",
  "\u00d8"-"\u00f6","\u00f8"-"\u021f","\u0222"-"\u0233","\u0250"-"\u02ad","\u02b0"-"\u02b8",
  "\u02bb"-"\u02c1","\u02d0"-"\u02d1","\u02e0"-"\u02e4","\u02ee","\u0300"-"\u034e",
  "\u0360"-"\u0362","\u037a","\u0386","\u0388"-"\u038a","\u038c","\u038e"-"\u03a1",
  "\u03a3"-"\u03ce","\u03d0"-"\u03d7","\u03da"-"\u03f3","\u0400"-"\u0481","\u0483"-"\u0486",
  "\u048c"-"\u04c4","\u04c7"-"\u04c8","\u04cb"-"\u04cc","\u04d0"-"\u04f5","\u04f8"-"\u04f9",
  "\u0531"-"\u0556","\u0559","\u0561"-"\u0587","\u0591"-"\u05a1","\u05a3"-"\u05b9",
  "\u05bb"-"\u05bd","\u05bf","\u05c1"-"\u05c2","\u05c4","\u05d0"-"\u05ea","\u05f0"-"\u05f2",
  "\u0621"-"\u063a","\u0640"-"\u0655","\u0660"-"\u0669","\u0670"-"\u06d3","\u06d5"-"\u06dc",
  "\u06df"-"\u06e8","\u06ea"-"\u06ed","\u06f0"-"\u06fc","\u070f"-"\u072c","\u0730"-"\u074a",
  "\u0780"-"\u07b0","\u0901"-"\u0903","\u0905"-"\u0939","\u093c"-"\u094d","\u0950"-"\u0954",
  "\u0958"-"\u0963","\u0966"-"\u096f","\u0981"-"\u0983","\u0985"-"\u098c","\u098f"-"\u0990",
  "\u0993"-"\u09a8","\u09aa"-"\u09b0","\u09b2","\u09b6"-"\u09b9","\u09bc","\u09be"-"\u09c4",
  "\u09c7"-"\u09c8","\u09cb"-"\u09cd","\u09d7","\u09dc"-"\u09dd","\u09df"-"\u09e3",
  "\u09e6"-"\u09f3","\u0a02","\u0a05"-"\u0a0a","\u0a0f"-"\u0a10","\u0a13"-"\u0a28",
  "\u0a2a"-"\u0a30","\u0a32"-"\u0a33","\u0a35"-"\u0a36","\u0a38"-"\u0a39","\u0a3c",
  "\u0a3e"-"\u0a42","\u0a47"-"\u0a48","\u0a4b"-"\u0a4d","\u0a59"-"\u0a5c","\u0a5e",
  "\u0a66"-"\u0a74","\u0a81"-"\u0a83","\u0a85"-"\u0a8b","\u0a8d","\u0a8f"-"\u0a91",
  "\u0a93"-"\u0aa8","\u0aaa"-"\u0ab0","\u0ab2"-"\u0ab3","\u0ab5"-"\u0ab9","\u0abc"-"\u0ac5",
  "\u0ac7"-"\u0ac9","\u0acb"-"\u0acd","\u0ad0","\u0ae0","\u0ae6"-"\u0aef","\u0b01"-"\u0b03",
  "\u0b05"-"\u0b0c","\u0b0f"-"\u0b10","\u0b13"-"\u0b28","\u0b2a"-"\u0b30","\u0b32"-"\u0b33",
  "\u0b36"-"\u0b39","\u0b3c"-"\u0b43","\u0b47"-"\u0b48","\u0b4b"-"\u0b4d","\u0b56"-"\u0b57",
  "\u0b5c"-"\u0b5d","\u0b5f"-"\u0b61","\u0b66"-"\u0b6f","\u0b82"-"\u0b83","\u0b85"-"\u0b8a",
  "\u0b8e"-"\u0b90","\u0b92"-"\u0b95","\u0b99"-"\u0b9a","\u0b9c","\u0b9e"-"\u0b9f",
  "\u0ba3"-"\u0ba4","\u0ba8"-"\u0baa","\u0bae"-"\u0bb5","\u0bb7"-"\u0bb9","\u0bbe"-"\u0bc2",
  "\u0bc6"-"\u0bc8","\u0bca"-"\u0bcd","\u0bd7","\u0be7"-"\u0bef","\u0c01"-"\u0c03",
  "\u0c05"-"\u0c0c","\u0c0e"-"\u0c10","\u0c12"-"\u0c28","\u0c2a"-"\u0c33","\u0c35"-"\u0c39",
  "\u0c3e"-"\u0c44","\u0c46"-"\u0c48","\u0c4a"-"\u0c4d","\u0c55"-"\u0c56","\u0c60"-"\u0c61",
  "\u0c66"-"\u0c6f","\u0c82"-"\u0c83","\u0c85"-"\u0c8c","\u0c8e"-"\u0c90","\u0c92"-"\u0ca8",
  "\u0caa"-"\u0cb3","\u0cb5"-"\u0cb9","\u0cbe"-"\u0cc4","\u0cc6"-"\u0cc8","\u0cca"-"\u0ccd",
  "\u0cd5"-"\u0cd6","\u0cde","\u0ce0"-"\u0ce1","\u0ce6"-"\u0cef","\u0d02"-"\u0d03",
  "\u0d05"-"\u0d0c","\u0d0e"-"\u0d10","\u0d12"-"\u0d28","\u0d2a"-"\u0d39","\u0d3e"-"\u0d43",
  "\u0d46"-"\u0d48","\u0d4a"-"\u0d4d","\u0d57","\u0d60"-"\u0d61","\u0d66"-"\u0d6f",
  "\u0d82"-"\u0d83","\u0d85"-"\u0d96","\u0d9a"-"\u0db1","\u0db3"-"\u0dbb","\u0dbd",
  "\u0dc0"-"\u0dc6","\u0dca","\u0dcf"-"\u0dd4","\u0dd6","\u0dd8"-"\u0ddf","\u0df2"-"\u0df3",
  "\u0e01"-"\u0e3a","\u0e3f"-"\u0e4e","\u0e50"-"\u0e59","\u0e81"-"\u0e82","\u0e84",
  "\u0e87"-"\u0e88","\u0e8a","\u0e8d","\u0e94"-"\u0e97","\u0e99"-"\u0e9f","\u0ea1"-"\u0ea3",
  "\u0ea5","\u0ea7","\u0eaa"-"\u0eab","\u0ead"-"\u0eb9","\u0ebb"-"\u0ebd","\u0ec0"-"\u0ec4",
  "\u0ec6","\u0ec8"-"\u0ecd","\u0ed0"-"\u0ed9","\u0edc"-"\u0edd","\u0f00","\u0f18"-"\u0f19",
  "\u0f20"-"\u0f29","\u0f35","\u0f37","\u0f39","\u0f3e"-"\u0f47","\u0f49"-"\u0f6a",
  "\u0f71"-"\u0f84","\u0f86"-"\u0f8b","\u0f90"-"\u0f97","\u0f99"-"\u0fbc","\u0fc6",
  "\u1000"-"\u1021","\u1023"-"\u1027","\u1029"-"\u102a","\u102c"-"\u1032","\u1036"-"\u1039",
  "\u1040"-"\u1049","\u1050"-"\u1059","\u10a0"-"\u10c5","\u10d0"-"\u10f6","\u1100"-"\u1159",
  "\u115f"-"\u11a2","\u11a8"-"\u11f9","\u1200"-"\u1206","\u1208"-"\u1246","\u1248",
  "\u124a"-"\u124d","\u1250"-"\u1256","\u1258","\u125a"-"\u125d","\u1260"-"\u1286",
  "\u1288","\u128a"-"\u128d","\u1290"-"\u12ae","\u12b0","\u12b2"-"\u12b5","\u12b8"-"\u12be",
  "\u12c0","\u12c2"-"\u12c5","\u12c8"-"\u12ce","\u12d0"-"\u12d6","\u12d8"-"\u12ee",
  "\u12f0"-"\u130e","\u1310","\u1312"-"\u1315","\u1318"-"\u131e","\u1320"-"\u1346",
  "\u1348"-"\u135a","\u1369"-"\u1371","\u13a0"-"\u13f4","\u1401"-"\u166c","\u166f"-"\u1676",
  "\u1681"-"\u169a","\u16a0"-"\u16ea","\u1780"-"\u17d3","\u17db","\u17e0"-"\u17e9",
  "\u180b"-"\u180e","\u1810"-"\u1819","\u1820"-"\u1877","\u1880"-"\u18a9","\u1e00"-"\u1e9b",
  "\u1ea0"-"\u1ef9","\u1f00"-"\u1f15","\u1f18"-"\u1f1d","\u1f20"-"\u1f45","\u1f48"-"\u1f4d",
  "\u1f50"-"\u1f57","\u1f59","\u1f5b","\u1f5d","\u1f5f"-"\u1f7d","\u1f80"-"\u1fb4",
  "\u1fb6"-"\u1fbc","\u1fbe","\u1fc2"-"\u1fc4","\u1fc6"-"\u1fcc","\u1fd0"-"\u1fd3",
  "\u1fd6"-"\u1fdb","\u1fe0"-"\u1fec","\u1ff2"-"\u1ff4","\u1ff6"-"\u1ffc","\u200c"-"\u200f",
  "\u202a"-"\u202e","\u203f"-"\u2040","\u206a"-"\u206f","\u207f","\u20a0"-"\u20af",
  "\u20d0"-"\u20dc","\u20e1","\u2102","\u2107","\u210a"-"\u2113","\u2115","\u2119"-"\u211d",
  "\u2124","\u2126","\u2128","\u212a"-"\u212d","\u212f"-"\u2131","\u2133"-"\u2139",
  "\u2160"-"\u2183","\u3005"-"\u3007","\u3021"-"\u302f","\u3031"-"\u3035","\u3038"-"\u303a",
  "\u3041"-"\u3094","\u3099"-"\u309a","\u309d"-"\u309e","\u30a1"-"\u30fe","\u3105"-"\u312c",
  "\u3131"-"\u318e","\u31a0"-"\u31b7","\u3400"-"\u4db5","\u4e00"-"\u9fa5","\ua000"-"\ua48c",
  "\uac00"-"\ud7a3","\uf900"-"\ufa2d","\ufb00"-"\ufb06","\ufb13"-"\ufb17","\ufb1d"-"\ufb28",
  "\ufb2a"-"\ufb36","\ufb38"-"\ufb3c","\ufb3e","\ufb40"-"\ufb41","\ufb43"-"\ufb44",
  "\ufb46"-"\ufbb1","\ufbd3"-"\ufd3d","\ufd50"-"\ufd8f","\ufd92"-"\ufdc7","\ufdf0"-"\ufdfb",
  "\ufe20"-"\ufe23","\ufe33"-"\ufe34","\ufe4d"-"\ufe4f","\ufe69","\ufe70"-"\ufe72","\ufe74",
  "\ufe76"-"\ufefc","\ufeff","\uff04","\uff10"-"\uff19","\uff21"-"\uff3a","\uff3f",
  "\uff41"-"\uff5a","\uff65"-"\uffbe","\uffc2"-"\uffc7","\uffca"-"\uffcf","\uffd2"-"\uffd7",
  "\uffda"-"\uffdc","\uffe0"-"\uffe1","\uffe5"-"\uffe6","\ufff9"-"\ufffb"]>
}

<DEFAULT> TOKEN : {
  <ACT_TOK: ~[]>
}
```

<br>

## <a name="non-terminals"></a>Non-Terminals

### <a name="javacc-grammar"></a>JavaCC grammar

---

```java
javacc_input ::= javacc_options
                 "PARSER_BEGIN" "(" identifier ")"
                 CompilationUnit
                 "PARSER_END" "(" identifier ")"
                 ( production )+
                 <EOF>
```

```java
javacc_options ::= ( <IDENTIFIER> "{" ( option_binding )* "}" )?
```

```java
option_binding ::= ( <IDENTIFIER> | "LOOKAHEAD" | "IGNORE_CASE" | "static" | "PARSER_BEGIN" )
                   "="
                   ( IntegerLiteral | BooleanLiteral | StringLiteral | StringList )
                   ";"
```

```java
StringList ::= "(" StringLiteral ( "," StringLiteral )* ")"
```

```java
production ::= javacode_production
             | cppcode_production
             | regular_expr_production
             | token_manager_decls
             | bnf_production
```

```java
javacode_production ::= "JAVACODE"
                        AccessModifier
                        ResultType
                        identifier
                        FormalParameters ( "throws" Name ( "," Name )* )?
                        Block
```

```java
cppcode_production ::= "CPPCODE"
                       AccessModifier
                       ResultType
                       identifier
                       FormalParameters ( "throws" Name ( "," Name )* )?
                       Block
```

```java
bnf_production ::= AccessModifier
                   ResultType
                   identifier
                   FormalParameters ( "throws" Name ( "," Name )* )?
                   ":"
                   Block
                   "{" expansion_choices "}"
```

```java
AccessModifier ::= ( "public" | "protected" | "private" )?
```

```java
regular_expr_production ::= ( "<" "*" ">"
                            | "<" <IDENTIFIER> ( "," <IDENTIFIER> )* ">"
                            )?                     
                            regexpr_kind ( "[" "IGNORE_CASE" "]" )? ":" "{"
                            regexpr_spec ( "|" regexpr_spec )* "}"
```

```java
token_manager_decls ::= "TOKEN_MGR_DECLS" ":" ( ClassOrInterfaceBody )?
```

```java
regexpr_kind ::= "TOKEN"
               | "SPECIAL_TOKEN"
               | "SKIP"
               | "MORE"
```

```java
regexpr_spec ::= regular_expression
                 ( Block )?
                 ( ":" <IDENTIFIER> )?
```

```java
expansion_choices ::= expansion ( "|" expansion )*
```

```java
expansion ::= ( "LOOKAHEAD" "(" local_lookahead ")" )?
              ( expansion_unit )+
```

```java
local_lookahead ::= ( IntegerLiteral )?
                    ( "," )?
                    ( expansion_choices )?
                    ( "," )?
                    ( "{" ( Expression )? "}" )?
```

```java
expansion_unit ::= "LOOKAHEAD" "(" local_lookahead ")"
                 | Block
                 | "[" expansion_choices "]"
                 | "try" "{" expansion_choices "}"
                 ( "catch" "(" ( Name <IDENTIFIER> )? ")" Block )*
                 ( "finally" Block )?
                 | ( PrimaryExpression "=" )?
                 (
                   identifier ( TypeArguments )? Arguments
                 | regular_expression ( "." <IDENTIFIER> )?
                 )
                 | "(" expansion_choices ")"
                 ( "+" | "*" | "?" )?
```

```java
regular_expression ::= StringLiteral
                     | <LANGLE: "<">
                       ( ( "#" )? identifier ":" )?
                       complex_regular_expression_choices <RANGLE: ">">
                     | "<" identifier ">"
                     | "<" "EOF" ">"
```

```java
complex_regular_expression_choices ::= complex_regular_expression
                                       ( "|" complex_regular_expression )*
```

```java
complex_regular_expression ::= ( complex_regular_expression_unit )+
```

```java
complex_regular_expression_unit ::= StringLiteral
                                  | "<" identifier ">"
                                  | character_list
                                  | "(" complex_regular_expression_choices ")"
                                  (
                                    "+" | "*" | "?" | "{"
                                    IntegerLiteral
                                    ( "," ( IntegerLiteral )? )?
                                    "}"
                                  )?
```

```java
character_list ::= ( "~" )? "[" ( character_descriptor ( "," character_descriptor )* )? "]"
```

```java
character_descriptor ::= StringLiteral ( "-" StringLiteral )?
```

```java
identifier ::= <IDENTIFIER>
```

<br>

## <a name="java-grammar"></a>Java Grammar

The Java grammar is modified to use sequences of tokens for the missing tokens - those that include "<<" and ">>".

### <a name="java-identifiers"></a>Java identifiers

---

```java
/*
 * The following production defines Java identifiers - it includes the reserved words of JavaCC also.
 */
JavaIdentifier ::= ( <IDENTIFIER>
                   | "LOOKAHEAD"
                   | "IGNORE_CASE"
                   | "PARSER_BEGIN"
                   | "PARSER_END"
                   | "JAVACODE"
                   | "TOKEN"
                   | "SPECIAL_TOKEN"
                   | "MORE"
                   | "SKIP"
                   | "TOKEN_MGR_DECLS"
                   | "EOF"
                   | "template"
                   | "DCL_PARSER_BEGIN"
                   | "DCL_PARSER_END"
                   | "INC_PARSER_BEGIN"
                   | "INC_PARSER_END"
                   | "DEF_PARSER_BEGIN"
                   | "DEF_PARSER_END"
)
```

<br>

### <a name="program-structure"></a>Program structure

---

```java
CompilationUnit ::= ( PackageDeclaration )?
                    ( ImportDeclaration )*
                    ( TypeDeclaration )*
```

```java
PackageDeclaration ::= Modifiers "package" Name ";"
```

```java
ImportDeclaration ::= "import"
                      ( "static" )?
                      Name
                      ( "." "*" )?
                      ";"
```

<br>

### <a name="modifiers"></a>Modifiers

---

```java
/*
 * Modifiers - we match all modifiers in a single rule to reduce the chances of
 * syntax errors for simple modifier mistakes. It will also enable us to give
 * better error messages.
 */
Modifiers ::= (
  (
      "public"
    | "static"
    | "protected"
    | "private"
    | "final"
    | "abstract"
    | "synchronized"
    | "native"
    | "transient"
    | "volatile"
    | "strictfp"
    | Annotation
  )
)*
```

<br>

### <a name="declarations"></a>Declarations

---

```java
TypeDeclaration ::= ";"
                  | Modifiers
                  ( ClassOrInterfaceDeclaration | EnumDeclaration | AnnotationTypeDeclaration )
```

```java
ClassOrInterfaceDeclaration ::= ( "class" | "interface" )
                                JavaIdentifier ( TypeParameters )?
                                ( ExtendsList )?
                                ( ImplementsList )?
                                ClassOrInterfaceBody
```

```java
ExtendsList ::= "extends"
                ClassOrInterfaceType
                ( "," ClassOrInterfaceType )*
```

```java
ImplementsList ::= "implements"
                   ClassOrInterfaceType
                   ( "," ClassOrInterfaceType )*
```

```java
EnumDeclaration ::= "enum"
                    JavaIdentifier
                    ( ImplementsList )?
                    EnumBody
```

```java
EnumBody ::= "{"
             ( EnumConstant ( "," EnumConstant )* )?
             ( "," )?
             ( ";" ( ClassOrInterfaceBodyDeclaration )* )?
             "}"
```

```java
EnumConstant ::= Modifiers
                 JavaIdentifier
                 ( Arguments )?
                 ( ClassOrInterfaceBody )?
```

```java
TypeParameters ::= "<" TypeParameter ( "," TypeParameter )* ">"
```

```java
TypeParameter ::= JavaIdentifier ( TypeBound )?
```

```java
TypeBound ::= "extends"
              ClassOrInterfaceType
              ( "&" ClassOrInterfaceType )*
```

```java
ClassOrInterfaceBody ::= "{" ( ClassOrInterfaceBodyDeclaration )* "}"
```

```java
ClassOrInterfaceBodyDeclaration ::= Initializer
                                  | Modifiers
                                  (
                                    ClassOrInterfaceDeclaration
                                  | EnumDeclaration
                                  | ConstructorDeclaration
                                  | FieldDeclaration
                                  | MethodDeclaration
                                  )
                                  | ";"
```

```java
FieldDeclaration ::= Type VariableDeclarator ( "," VariableDeclarator )* ";"
```

```java
VariableDeclarator ::= VariableDeclaratorId ( "=" VariableInitializer )?
```

```java
VariableDeclaratorId ::= JavaIdentifier ( "[" "]" )*
```

```java
VariableInitializer ::= ArrayInitializer
                      | Expression
```

```java
ArrayInitializer ::= "{"
                     ( VariableInitializer ( "," VariableInitializer )* )?
                     ( "," )?
                     "}"
```

```java
MethodDeclaration ::= ( TypeParameters )?
                      ResultType
                      MethodDeclarator
                      ( "throws" NameList )?
                      ( Block | ";" )
```

```java
MethodDeclarator ::= JavaIdentifier FormalParameters ( "[" "]" )*
```

```java
FormalParameters ::= "(" ( FormalParameter ( "," FormalParameter )* )? ")"
```

```java
FormalParameter ::= Modifiers
                    Type
                    ( ( "&" | "*" ) | "..." )?
                    VariableDeclaratorId
```

```java
ConstructorDeclaration ::= ( TypeParameters )?
                           JavaIdentifier
                           FormalParameters
                           ( "throws" NameList )?
                           "{"
                           ( ExplicitConstructorInvocation )?
                           ( BlockStatement )*
                           "}"
```

```java
ExplicitConstructorInvocation ::= "this" Arguments ";"
                                | ( PrimaryExpression "." )? "super" Arguments ";"
```

```java
Initializer ::= ( "static" )? Block
```

### <a name="types"></a>Types

```java
Type ::= ReferenceType | PrimitiveType
```

```java
ReferenceType ::= PrimitiveType ( "[" "]" )+
                | ( ( Template )? ClassOrInterfaceType ) ( "[" "]" )*
```

```java
Template ::= "template"
             "<"
             TemplateBase
             ( "," TemplateBase )*
             ">"
```

```java
TemplateBase ::= TemplatePack ( "..." )? <IDENTIFIER>
```

```java
TemplatePack ::= ( "class" | "typename" )
```

```java
ClassOrInterfaceType ::= ( "::" )?
                         <IDENTIFIER>
                         ( TypeArguments )?
                         (
                           ( "." | "::" )
                           <IDENTIFIER>
                           ( TypeArguments )?
                         )*
```

```java
TypeArguments ::= "<"
                  ( TypeArgument
                    ( "," TypeArgument
                      ( "..." )?
                    )*
                  )?
                  ">"
```

```java
TypeArgument ::= ReferenceType | "?" ( WildcardBounds )?
```

```java
WildcardBounds ::= "extends" ReferenceType | "super" ReferenceType
```

```java
PrimitiveType ::= "boolean"
                | "char"
                | "byte"
                | "short"
                | "int"
                | "long"
                | "float"
                | "double"
```

```java
ResultType ::= ( "void" ( "*" )?
               | ( "const" )? Type ( "*" | "&" )? )
```

```java
Name ::= JavaIdentifier ( "." JavaIdentifier )*
```

```java
NameList ::= Name ( "," Name )*
```

<br>

---

### <a name="expressions"></a>Expressions

```java
Expression ::= ConditionalExpression ( AssignmentOperator Expression )?
```

```java
AssignmentOperator ::= "="
                     | "*="
                     | "/="
                     | "%="
                     | "+="
                     | "-="
                     | "<<="
                     | ">>="
                     | ">>>="
                     | "&="
                     | "^="
                     | "|="
```

```java
ConditionalExpression ::= ConditionalOrExpression ( "?" Expression ":" Expression )?
```

```java
ConditionalOrExpression ::= ConditionalAndExpression ( "||" ConditionalAndExpression )*
```

```java
ConditionalAndExpression ::= InclusiveOrExpression ( "&&" InclusiveOrExpression )*
```

```java
InclusiveOrExpression ::= ExclusiveOrExpression ( "|" ExclusiveOrExpression )*
```

```java
ExclusiveOrExpression ::= AndExpression ( "^" AndExpression )*
```

```java
AndExpression ::= EqualityExpression ( "&" EqualityExpression )*
```

```java
EqualityExpression ::= InstanceOfExpression ( ( "==" | "!=" ) InstanceOfExpression )*
```

```java
InstanceOfExpression ::= RelationalExpression ( "instanceof" Type )?
```

```java
RelationalExpression ::= ShiftExpression ( ( "<" | ">" | "<=" | ">=" ) ShiftExpression )*
```

```java
ShiftExpression ::= AdditiveExpression
                    (
                      ( "<<" | RSIGNEDSHIFT | RUNSIGNEDSHIFT )
                      AdditiveExpression
                    )*
```

```java
AdditiveExpression ::= MultiplicativeExpression
                       (
                         ( "+" | "-" )
                         MultiplicativeExpression
                       )*
```

```java
MultiplicativeExpression ::= UnaryExpression ( ( "*" | "/" | "%" ) UnaryExpression )*
```

```java
UnaryExpression ::= ( "+" | "-" )
                    UnaryExpression
                  | PreIncrementExpression
                  | PreDecrementExpression
                  | UnaryExpressionNotPlusMinus
```

```java
PreIncrementExpression ::= "++" PrimaryExpression
```

```java
PreDecrementExpression ::= "--" PrimaryExpression
```

```java
UnaryExpressionNotPlusMinus ::= ( "~" | "!" )
                                UnaryExpression
                              | CastExpression
                              | PostfixExpression
```

```java
/*
 * This production is to determine lookahead only. The LOOKAHEAD specifications
 * below are not used, but they are there just to indicate that we know about this.
 */
CastLookahead ::= "(" PrimitiveType
                | "(" Type "[" "]"
                | "(" Type ")"
                ( "~" | "!" | "(" | JavaIdentifier | "this" | "super" | "new" | Literal )
```

```java
PostfixExpression ::= PrimaryExpression ( "++" | "--" )?
```

```java
CastExpression ::= "(" Type ")" UnaryExpression
                 | "(" Type ")" UnaryExpressionNotPlusMinus
```

```java
PrimaryExpression ::= PrimaryPrefix ( PrimarySuffix )*
```

```java
MemberSelector ::= "." TypeArguments JavaIdentifier
```

```java
PrimaryPrefix ::= Literal
                | "this"
                | "super" "." JavaIdentifier
                | "(" Expression ")"
                | AllocationExpression
                | ResultType "." "class"
                | Name
```

```java
PrimarySuffix ::= "." "this"
                | "." AllocationExpression
                | MemberSelector
                | "[" Expression "]"
                | "." JavaIdentifier
                | Arguments
```

```java
Literal ::= <INTEGER_LITERAL>
          | <FLOATING_POINT_LITERAL>
          | <CHARACTER_LITERAL>
          | <STRING_LITERAL>
          | BooleanLiteral
          | NullLiteral
```

```java
IntegerLiteral ::= <INTEGER_LITERAL>
```

```java
BooleanLiteral ::= "true" | "false"
```

```java
StringLiteral ::= <STRING_LITERAL>
```

```java
NullLiteral ::= "null"
```

```java
Arguments ::= "(" ( ArgumentList )? ")"
```

```java
ArgumentList ::= Expression ( "," Expression )*
```

```java
AllocationExpression ::= "new" PrimitiveType ArrayDimsAndInits
                       | "new" ClassOrInterfaceType ( TypeArguments )?
                       ( ArrayDimsAndInits | Arguments ( ClassOrInterfaceBody )? )
```

```java
/*
 * This LOOKAHEAD specification is to parse to PrimarySuffix
 * if there is an expression between the "[...]".
 */
ArrayDimsAndInits ::= ( "[" Expression "]" )+ ( "[" "]" )*
                    | ( "[" "]" )+ ArrayInitializer
```

<br>

### <a name="statements"></a>Statements

---

```java
Statement ::= LabeledStatement
            | AssertStatement
            | Block
            | EmptyStatement
            | StatementExpression ";"
            | SwitchStatement
            | IfStatement
            | WhileStatement
            | DoStatement
            | ForStatement
            | BreakStatement
            | ContinueStatement
            | ReturnStatement
            | ThrowStatement
            | SynchronizedStatement
            | TryStatement
```

```java
AssertStatement ::= "assert" Expression ( ":" Expression )? ";"
```

```java
LabeledStatement ::= JavaIdentifier ":" Statement
```

```java
Block ::= "{" ( BlockStatement )* "}"
```

```java
BlockStatement ::= LocalVariableDeclaration ";"
                 | Statement
                 | ClassOrInterfaceDeclaration
```

```java
LocalVariableDeclaration ::= Modifiers Type VariableDeclarator ( "," VariableDeclarator )*
```

```java
EmptyStatement ::= ";"
```

```java
StatementExpression ::= PreIncrementExpression
                      | PreDecrementExpression
                      | PrimaryExpression
                      ( "++" | "--" | AssignmentOperator Expression )?
```

```java
SwitchStatement ::= "switch" "(" Expression ")" "{" ( SwitchLabel ( BlockStatement )* )* "}"
```

```java
SwitchLabel ::= "case" Expression ":"
              | "default" ":"
```

```java
IfStatement ::= "if" "(" Expression ")" Statement ( "else" Statement )?
```

```java
WhileStatement ::= "while" "(" Expression ")" Statement
```

```java
DoStatement ::= "do" Statement "while" "(" Expression ")" ";"
```

```java
ForStatement ::= "for" "("
                 ( Modifiers Type JavaIdentifier ":" Expression
                   | ( ForInit )? ";" ( Expression )? ";" ( ForUpdate )?
                 )
                 ")"
                 Statement
```

```java
ForInit ::= LocalVariableDeclaration | StatementExpressionList
```

```java
StatementExpressionList ::= StatementExpression ( "," StatementExpression )*
```

```java
ForUpdate ::= StatementExpressionList
```

```java
BreakStatement ::= "break" ( JavaIdentifier )? ";"
```

```java
ContinueStatement ::= "continue" ( JavaIdentifier )? ";"
```

```java
ReturnStatement ::= "return" ( Expression )? ";"
```

```java
ThrowStatement ::= "throw" Expression ";"
```

```java
SynchronizedStatement ::= "synchronized" "(" Expression ")" Block
```

```java
ResourceDeclaration ::= Type VariableDeclaratorId "=" Expression
```

```java
CatchParameter ::= Modifiers
                   Type
                   ( ( "&" | "*" ) | "..." )? ( "|" Type )*
                   VariableDeclaratorId
```

```java
TryStatement ::= "try" ( "(" ResourceDeclaration
                   ( ";" ResourceDeclaration )* ( ";" )? ")" )?
                   Block
                   ( "catch" "(" CatchParameter ")" Block )*
                   ( "finally" Block )?
```

```java
/*
 * We use productions to match >>>, >> and > so that we can
 * keep the type declaration syntax with generics clean.
 */

RUNSIGNEDSHIFT ::= ( ">" ">" ">" )

RSIGNEDSHIFT ::= ( ">" ">" )
```

<br>

### <a name="annotations"></a>Annotations

---

```java
Annotation ::= NormalAnnotation | SingleMemberAnnotation | MarkerAnnotation
```

```java
NormalAnnotation ::= "@" Name "(" ( MemberValuePairs )? ")"
```

```java
MarkerAnnotation ::= "@" Name
```

```java
SingleMemberAnnotation ::= "@" Name "(" MemberValue ")"
```

```java
MemberValuePairs ::= MemberValuePair ( "," MemberValuePair )*
```

```java
MemberValuePair ::= JavaIdentifier "=" MemberValue
```

```java
MemberValue ::= Annotation | MemberValueArrayInitializer | ConditionalExpression
```

```java
MemberValueArrayInitializer ::= "{" MemberValue ( "," MemberValue )* ( "," )? "}"
```

<br>

### <a name="annotation-types"></a>Annotation types

---

```java
AnnotationTypeDeclaration ::= "@" "interface" JavaIdentifier AnnotationTypeBody
```

```java
AnnotationTypeBody ::= "{" ( AnnotationTypeMemberDeclaration )* "}"
```

```java
AnnotationTypeMemberDeclaration ::= Modifiers
                                    ( Type JavaIdentifier "(" ")" ( DefaultValue )? ";"
                                    | ClassOrInterfaceDeclaration
                                    | EnumDeclaration
                                    | AnnotationTypeDeclaration
                                    | FieldDeclaration
                                    )
                                    | ( ";" )
```

```java
DefaultValue ::= "default" MemberValue
```

<br>

---

[NEXT >>](api.md)

<br>


================================================
FILE: docs/documentation/cli.md
================================================
[Home](../index.md) > [Documentation](index.md) > Command Line Interface

---

You can obtain a synopsis of the command line syntax by simply typing:

```java
$ javacc
```

Output:

```
Java Compiler Compiler Version 7.0.nn (Parser Generator)

Usage:
    javacc option-settings inputfile

"option-settings" is a sequence of settings separated by spaces.
Each option setting must be of one of the following forms:

    -optionname=value (e.g., -STATIC=false)
    -optionname:value (e.g., -STATIC:false)
    -optionname       (equivalent to -optionname=true.  e.g., -STATIC)
    -NOoptionname     (equivalent to -optionname=false. e.g., -NOSTATIC)

Option settings are not case-sensitive, so one can say "-nOsTaTiC" instead
of "-NOSTATIC".  Option values must be appropriate for the corresponding
option, and must be either an integer, a boolean, or a string value.

The integer valued options are:

    CHOICE_AMBIGUITY_CHECK (default : 2)
    DEPTH_LIMIT            (default : 0)
    LOOKAHEAD              (default : 1)
    OTHER_AMBIGUITY_CHECK  (default : 1)

The boolean valued options are:

    BUILD_PARSER                    (default : true)
    BUILD_TOKEN_MANAGER             (default : true)
    CACHE_TOKENS                    (default : false)
    COMMON_TOKEN_ACTION             (default : false)
    DEBUG_LOOKAHEAD                 (default : false)
    DEBUG_PARSER                    (default : false)
    DEBUG_TOKEN_MANAGER             (default : false)
    ERROR_REPORTING                 (default : true)
    FORCE_LA_CHECK                  (default : false)
    GENERATE_ANNOTATIONS            (default : false)
    GENERATE_BOILERPLATE            (default : true)
    GENERATE_CHAINED_EXCEPTION      (default : false)
    GENERATE_GENERICS               (default : false)
    GENERATE_STRING_BUILDER         (default : false)
    IGNORE_CASE                     (default : false)
    JAVA_UNICODE_ESCAPE             (default : false)
    KEEP_LINE_COLUMN                (default : true)
    NO_DFA                          (default : false)
    SANITY_CHECK                    (default : true)
    STATIC                          (default : true)
    SUPPORT_CLASS_VISIBILITY_PUBLIC (default : true)
    TOKEN_MANAGER_USES_PARSER       (default : false)
    UNICODE_INPUT                   (default : false)
    USER_CHAR_STREAM                (default : false)
    USER_TOKEN_MANAGER              (default : false)

The string valued options are:

    GRAMMAR_ENCODING             (default : <<empty>>)
    JAVA_TEMPLATE_TYPE           (default : classic)
    JDK_VERSION                  (default : 1.5)
    OUTPUT_DIRECTORY             (default : .)
    PARSER_CODE_GENERATOR        (default : <<empty>>)
    PARSER_SUPER_CLASS
    TOKEN_EXTENDS                (default : <<empty>>)
    TOKEN_FACTORY                (default : <<empty>>)
    TOKEN_INCLUDE                (default : <<empty>>)
    TOKEN_MANAGER_CODE_GENERATOR (default : <<empty>>)
    TOKEN_MANAGER_INCLUDE        (default : <<empty>>)
    TOKEN_MANAGER_SUPER_CLASS
    TOKEN_SUPER_CLASS
    
EXAMPLE:
    javacc -STATIC=false -LOOKAHEAD:2 -debug_parser mygrammar.jj

ABOUT JavaCC:

    JavaCC is a parser generator for the Java programming language.
```

Any option may be set either on the command line as shown above, or in the grammar file as described in the [JavaCC grammar](grammar.md). The effect is exactly the same.

If the same option is set in both the command line and the grammar file, then the option setting in the command line takes precedence.

<br>

---

[NEXT >>](grammar.md)

<br>


================================================
FILE: docs/documentation/grammar.md
================================================
[Home](../index.md) > [Documentation](index.md) > JavaCC Grammar

---

This page contains the complete syntax of the JavaCC grammar files with detailed explanations of each construct.

### <a name="toc"></a>Contents

- [**Conventions**](#conventions)
  * [File structure](#file-structure)
- [**Options**](#options)
  * [javacc_options](#javacc-options)
  * [option_binding](#option-binding)
- [**Grammar**](#grammar)
  * [production](#production)
  * [javacode_production](#javacode-production)
  * [bnf_production](#bnf-production)
  * [regular_expr_production](#regular-expr-production)
  * [token_manager_decls](#token-manager-decls)
  * [lexical_state_list](#lexical-state-list)
  * [regexpr_kind](#regexpr-kind)
  * [regexpr_spec](#regexpr-spec)
  * [expansion_choices](#expansion_choices)
  * [expansion](#expansion)
  * [expansion_unit](#expansion-unit)
  * [local_lookahead](#local-lookahead)
  * [regular_expression](#regular-expression)
  * [complex_regular_expression_choices](#complex-regular-expression-choices)
  * [complex_regular_expression](#complex-regular-expression)
  * [complex_regular_expression_unit](#complex-regular-expression-unit)
  * [character_list](#character-list)
  * [character_descriptor](#character-descriptor)

## <a name="conventions"></a>Conventions

1. Tokens in the grammar files follow the same conventions as for the Java programming language. Hence identifiers, strings, characters, etc. used in the grammars are the same as Java identifiers, Java strings, Java characters, etc.

2. Whitespace in the grammar files also follows the same conventions as for the Java programming language. This includes the syntax for comments. Most comments present in the grammar files are generated into the generated parser/lexical analyzer.

3. Grammar files are preprocessed for Unicode escapes just as Java files are (i.e., occurrences of strings such as `\uxxxx` - where `xxxx` is a hex value - are converted to the corresponding Unicode character before lexical analysis).

4. Exceptions to the above rules - the Java operators `<<`, `>>`, `>>>`, `<<=`, `>>=`, and `>>>=` are left out of JavaCC's input token list in order to allow convenient nested use of token specifications.

5. The following are the additional reserved words in the JavaCC grammar files:

```java
EOF
IGNORE_CASE
JAVACODE
LOOKAHEAD
MORE
PARSER_BEGIN
PARSER_END
SKIP
SPECIAL_TOKEN
TOKEN
TOKEN_MGR_DECLS
```

## <a name="file-structure"></a>File structure

The structure of JavaCC grammar files is defined as follows:

```java
javacc_input ::= javacc_options
                 "PARSER_BEGIN" "(" <IDENTIFIER> ")"
                 java_compilation_unit
                 "PARSER_END" "(" <IDENTIFIER> ")"
                 ( production )+
                 <EOF>
```

<!--- Render BNF with HTML table to preserve links and italics for Java entities
<table id="bnf">
  <tr id="bnf">
    <td id="bnf">javacc_input ::=</td>
    <td id="bnf"><a href="#javacc-options">javacc_options</a></td>
  </tr>
  <tr id="bnf">
    <td id="bnf"></td>
    <td id="bnf">"PARSER_BEGIN" "(" &lt;IDENTIFIER&gt; ")" </td>
  </tr>
  <tr>
    <td id="bnf"></td>
    <td id="bnf"><i>java_compilation_unit</i></td>
  </tr>
  <tr id="bnf">
    <td id="bnf"></td>
    <td id="bnf">"PARSER_END" "(" &lt;IDENTIFIER&gt; ")" </td>
  </tr>
  <tr id="bnf">
    <td id="bnf"></td>
    <td id="bnf">( production )&#42;</td>
  </tr>
  <tr id="bnf">
    <td id="bnf"></td>
    <td id="bnf">&lt;EOF&gt;</td>
  </tr>
</table>
-->

<!---
*N.B. Any Java entities used in the grammar rules that follow appear italicized with the prefix `java_` (e.g. `java_compilation_unit`)*.
-->

The grammar file starts with a list of options (which is optional). This is then followed by a Java compilation unit enclosed between `PARSER_BEGIN(name)` and `PARSER_END(name)`. After this is a list of grammar productions (both [options](#javacc-options) and [productions](#production) are described below).

The name that follows `PARSER_BEGIN` and `PARSER_END` must be the same and this identifies the name of the generated parser. For example, if name is `MyParser`, then the following files are generated:

* `MyParser.java` - The generated parser.
* `MyParserTokenManager.java` - The generated token manager (or scanner/lexical analyzer).
* `MyParserConstants.java` - A bunch of useful constants.

Other files such as `Token.java`, `ParseException.java` etc are also generated. However, these files contain boilerplate code and are the same for any grammar and may be reused across grammars (provided the grammars use compatible options).

Between the `PARSER_BEGIN` and `PARSER_END` constructs is a regular Java compilation unit (a compilation unit in Java terminology is the entire contents of a Java file). This may be any arbitrary Java compilation unit so long as it contains a class declaration whose name is the same as the name of the generated parser (`MyParser` in the above example).

Hence, in general, this part of the grammar file looks like:

```java
PARSER_BEGIN(parser_name)

class parser_name ... {
  // ...
}

PARSER_END(parser_name)
```

JavaCC does not perform detailed checks on the compilation unit, so it is possible for a grammar file to pass through JavaCC and generate Java files that produce errors when they are compiled.

If the compilation unit includes a package declaration, this is included in all the generated files. If the compilation unit includes imports declarations, this is included in the generated parser and token manager files.

The generated parser file contains everything in the compilation unit and, in addition, contains the generated parser code that is included at the end of the parser class. For the above example, the generated parser will look like:

```java
// ...
class parser_name ... {
  // generated parser is inserted here.
}
// ...
```

The generated parser includes a public method declaration corresponding to each non-terminal (see [javacode_production](#javacode-production) and [bnf_production](#bnf-production) in the grammar file. Parsing with respect to a non-terminal is achieved by calling the method corresponding to that non-terminal. Unlike Yacc, there is no single start symbol in JavaCC - one can parse with respect to any non-terminal in the grammar.

The generated token manager provides one public method:

```java
Token getNextToken() throws ParseError;
```

For more details on how this method may be used, please refer to the [JavaCC API](#javacc-api) documentation.

## <a name="options"></a>Options

Options may be specified either in the grammar file or from the [command line](cli.md). If the option is set from the command line, that takes precedence.

<br>

### <a name="javacc-options"></a>javacc_options

---

```java
javacc_options ::= [ "options" "{" ( option-binding )*; "}" ]
```

If present, the options start with the reserved word `options` followed by a list of one or more option bindings within braces. Each option binding specifies the setting of one option. The same option may not be set multiple times.

Option names are not case-sensitive.

<br>

### <a name="option-binding"></a>option_binding

---

```java
option_binding ::= "BUILD_PARSER" "=" java_boolean_literal ";"
                 | "BUILD_TOKEN_MANAGER" "=" java_boolean_literal ";"
                 | "CACHE_TOKENS" "=" java_boolean_literal ";"
                 | "CHOICE_AMBIGUITY_CHECK" "=" java_integer_literal ";"
                 | "COMMON_TOKEN_ACTION" "=" java_boolean_literal ";"
                 | "DEBUG_LOOKAHEAD" "=" java_boolean_literal ";"
                 | "DEBUG_PARSER" "=" java_boolean_literal ";"
                 | "DEBUG_TOKEN_MANAGER" "=" java_boolean_literal ";"
                 | "ERROR_REPORTING" "=" java_boolean_literal ";"
                 | "FORCE_LA_CHECK" "=" java_boolean_literal ";"
                 | "GENERATE_ANNOTATIONS" "=" java_boolean_literal ";"
                 | "GENERATE_BOILERPLATE" "=" java_boolean_literal ";"
                 | "GENERATE_CHAINED_EXCEPTION" "=" java_boolean_literal ";"
                 | "GENERATE_GENERICS" "=" java_boolean_literal ";"
                 | "GENERATE_STRING_BUILDER" "=" java_boolean_literal ";"
                 | "GRAMMAR_ENCODING" "=" java_string_literal ";"
                 | "IGNORE_CASE" "=" java_boolean_literal ";"
                 | "JAVA_TEMPLATE_TYPE" "=" java_string_literal ";"
                 | "JAVA_UNICODE_ESCAPE" "=" java_boolean_literal ";"
                 | "JDK_VERSION" "=" java_string_literal ";"
                 | "KEEP_LINE_COLUMN" "=" java_boolean_literal ";"
                 | "LOOKAHEAD" "=" java_integer_literal ";"
                 | "NO_DFA" "=" java_boolean_literal ";"
                 | "OTHER_AMBIGUITY_CHECK" "=" java_integer_literal ";"
                 | "OUTPUT_DIRECTORY" "=" java_string_literal ";"
                 | "PARSER_SUPER_CLASS" "=" java_string_literal ";"
                 | "SANITY_CHECK" "=" java_boolean_literal ";"
                 | "STATIC" "=" java_boolean_literal ";"
                 | "SUPPORT_CLASS_VISIBILITY_PUBLIC" "=" java_boolean_literal ";"
                 | "TOKEN_EXTENDS" "=" java_string_literal ";"
                 | "TOKEN_FACTORY" "=" java_string_literal ";"
                 | "TOKEN_MANAGER_USES_PARSER" "=" java_boolean_literal ";"
                 | "UNICODE_INPUT" "=" java_boolean_literal ";"
                 | "USER_CHAR_STREAM" "=" java_boolean_literal ";"
                 | "USER_TOKEN_MANAGER" "=" java_boolean_literal ";"
```

The following table describes the purpose of each option, along with the input type, and default values.

| Option | Type | Default Value | Description |
| :--- | :---: |:---: | :--- |
| BUILD_PARSER | `boolean` | `true` | The default action is to generate the parser file (`MyParser.java` in the above example). When set to `false`, the parser file is not generated. Typically, this option is set to `false` when you wish to generate only the token manager and use it without the associated parser. |

| BUILD_TOKEN_MANAGER | `boolean` | `true` | The default action is to generate the token manager file (`MyParserTokenManager.java` in the above example). When set to `false` the token manager file is not generated. The only reason to set this option to `false` is to save some time during parser generation when you fix problems in the parser part of the grammar file and leave the lexical specifications untouched. |

| CACHE_TOKENS | `boolean` | `false` | Setting this option to true causes the generated parser to lookahead for extra tokens ahead of time. This facilitates some performance improvements. However, in this case (when the option is `true`), interactive applications may not work since the parser needs to work synchronously with the availability of tokens from the input stream. In such cases, it's best to leave this option at its default value. |

| CHOICE_AMBIGUITY_CHECK | `integer` | `2` | This is the number of tokens considered in checking choices of the form `A | B | ...` for ambiguity. For example, if there is a common two token prefix for both `A` and `B`, but no common three token prefix, (assume this option is set to `3`) then JavaCC can tell you to use a lookahead of `3` for disambiguation purposes. And if `A` and `B` have a common three token prefix, then JavaCC only tell you that you need to have a lookahead of `3` or more. Increasing this can give you more comprehensive ambiguity information at the cost of more processing time. For large grammars such as the Java grammar, increasing this number any further causes the checking to take too much time. |

| COMMON_TOKEN_ACTION | `boolean` | `false` | When set to `true`, every call to the token manager's method `getNextToken()` (see the description of the JavaCC API) will cause a call to a used defined method `CommonTokenAction` after the token has been scanned in by the token manager. The user must define this method within the `TOKEN_MGR_DECLS` section. The signature of this method is `void CommonTokenAction(Token t)`. |

| DEBUG_LOOKAHEAD | `boolean` | `false` | Setting this option to `true` causes the parser to generate all the tracing information it does when the option `DEBUG_PARSER` is `true`, and in addition, also causes it to generated a trace of actions performed during lookahead operation. |

| DEBUG_PARSER | `boolean` | `false` | This option is used to obtain debugging information from the generated parser. Setting this option to `true` causes the parser to generate a trace of its actions. Tracing may be disabled by calling the method `disable_tracing()` in the generated parser class. Tracing may be subsequently enabled by calling the method `enable_tracing()` in the generated parser class. |

| DEBUG_TOKEN_MANAGER | `boolean` | `false` | This option is used to obtain debugging information from the generated token manager. Setting this option to `true` causes the token manager to generate a trace of its actions. This trace is rather large and should only be used when you have a lexical error that has been reported to you and you cannot understand why. Typically, in this situation, you can determine the problem by looking at the last few lines of this trace. |

| ERROR_REPORTING | `boolean` | `true` | Setting it to `false` causes errors due to parse errors to be reported in somewhat less detail. The only reason to set this option to `false` is to improve performance. |

| FORCE_LA_CHECK | `boolean` | `false` | This option setting controls lookahead ambiguity checking performed by JavaCC. By default (when this option is `false`), lookahead ambiguity checking is performed for all choice points where the default lookahead of `1` is used. Lookahead ambiguity checking is not performed at choice points where there is an explicit lookahead specification, or if the option `LOOKAHEAD` is set to something other than `1`. Setting this option to `true` performs lookahead ambiguity checking at all choice points regardless of the lookahead specifications in the grammar file. |

| GENERATE_ANNOTATIONS | `boolean` | `false` | When set to `true`, support classes (such as `Token.java`, `ParseException.java` etc) will be generated with a `@SuppressWarnings("all")` annotation. |

| GENERATE_BOILERPLATE | `boolean` | `true` | When set to `false`, support classes will not be generated (so they must be provided by the user). |

| GENERATE_CHAINED_EXCEPTION | `boolean` | `false` | When set to `true`, some parser's methods will rethrow a `RuntimeException` with the caught `UnsupportedEncodingException` itself instead of the caught `UnsupportedEncodingException`'s message. |

| GENERATE_GENERICS | `boolean` | `false` | When set to `true`, support classes will be generated with generics types. |

| GENERATE_STRING_BUILDER | `boolean` | `false` | When set to `true`, support classes will be generated `StringBuilder` instead of `StringBuffer`. |

| GRAMMAR_ENCODING | `String` | `""` | Setting this option enables overriding default file encoding . |

| IGNORE_CASE | `boolean` | `false` | Setting this option to `true` causes the generated token manager to ignore case in the token specifications and the input files. This is useful for writing grammars for languages such as HTML. It is also possible to localize the effect of `IGNORE_CASE` by using an alternate mechanism described later. |

| JAVA_TEMPLATE_TYPE | `String` | `"classic"` | Using `modern` will generate differently (to be explained). |

| JAVA_UNICODE_ESCAPE | `boolean` | `false` | When set to `true`, the generated parser uses an input stream object that processes Java Unicode escapes `(\u...)` before sending characters to the token manager. By default, Java Unicode escapes are not processed. This option is ignored if either of options `USER_TOKEN_MANAGER`, `USER_CHAR_STREAM` is set to `true`. |

| JDK_VERSION | `String` | `"1.5"` | Old and un-usefull setting. |

| KEEP_LINE_COLUMN | `boolean` | `true` | When set to `true`, the generated parser does not record tokens lines and columns. |

| LOOKAHEAD | `integer` | `1` | The number of tokens to look ahead before making a decision at a choice point during parsing. The smaller this number, the faster the parser. This number may be overridden for specific productions within the grammar as described later. See the description of the lookahead algorithm for complete details on how lookahead works. |

| NO_DFA | `boolean` | `false` | When set to `true`, the generated parser does not use the DFA. |

| OTHER_AMBIGUITY_CHECK | `integer` | `1` | This is the number of tokens considered in checking all other kinds of choices (i.e. of the forms `(A)*`", `(A)+`, and `(A)?`) for ambiguity. This takes more time to do than the choice checking, and hence the default value is set to `1` rather than `2`. |

| OUTPUT_DIRECTORY | `String` | Current directory | This controls where output files are generated. |

| PARSER_SUPER_CLASS | `String` | none | Set this option to specify the class that the generated parser must extend. |

| SANITY_CHECK | `boolean` | `true` | JavaCC performs many syntactic and semantic checks on the grammar file during parser generation. Some checks such as detection of left recursion, detection of ambiguity, and bad usage of empty expansions may be suppressed for faster parser generation by setting this option to `false`. Note that the presence of these errors (even if they are not detected and reported by setting this option to `false`) can cause unexpected behavior from the generated parser. |

| STATIC | `boolean` | `true` | If true, all methods and class variables are specified as static in the generated parser and token manager. This allows only one parser object to be present, but it improves the performance of the parser. To perform multiple parses during one run of your Java program, you will have to call the `ReInit()` method to reinitialize your parser if it is static. If the parser is non-static, you may use the `new` operator to construct as many parsers as you wish. These can all be used simultaneously from different threads. |

| SUPPORT_CLASS_VISIBILITY_PUBLIC | `boolean` | `true` | The default action is to generate support classes with `public` visibility. If set to `false`, the classes will be generated with `package-private` visibility (default no modifier). |

| TOKEN_EXTENDS | `String` | `""` | The default option means that the generated `Token` class will extend `java.lang.Object`. This option may be set to the name of a class that will be used as the base class for the generated `Token` class. |

| TOKEN_FACTORY | `String` | `""` | The default option means that `Tokens` will be created by calling `Token.newToken()`. If set the option names a `Token` factory class containing a public static `Token newToken(int ofKind, String image)` method. |

| TOKEN_MANAGER_USES_PARSER | `boolean` | `false` | When set to `true`, the generated token manager will include a field called parser that references the instantiating parser instance (of type `MyParser` in the above example). The main reason for having a parser in a token manager is using some of its logic in lexical actions. This option has no effect if the `STATIC` option is set to `true`. |

| UNICODE_INPUT | `boolean` | `false` | When set to `true`, the generated parser uses uses an input stream object that reads Unicode files. By default, ASCII files are assumed. This option is ignored if either of options `USER_TOKEN_MANAGER`, `USER_CHAR_STREAM` is set to `true`. |

| USER_CHAR_STREAM | `boolean` | `false` | The default action is to generate a character stream reader as specified by the options `JAVA_UNICODE_ESCAPE` and `UNICODE_INPUT`. The generated token manager receives characters from this stream reader. If this option is set to `true`, then the token manager is generated to read characters from any character stream reader of type `CharStream.java`. This file is generated into the generated parser directory. This option is ignored if `USER_TOKEN_MANAGER` is set to `true`. |

| USER_TOKEN_MANAGER | `boolean` | `false` | The default action is to generate a token manager that works on the specified grammar tokens. If this option is set to `true`, then the parser is generated to accept tokens from any token manager of type `TokenManager` - this interface is generated into the generated parser directory. |

## <a name="grammar"></a>Grammar

<br>

### <a name="production"></a>production

---

```java
production ::= javacode_production
             | regular_expr_production
             | bnf_production
             | token_manager_decls
```

There are four kinds of productions in JavaCC.
* [javacode_production](#javacode-production) and [bnf_production](#bnf-production) are used to define the grammar from which the parser is generated.
* [regular_expr_production](#regular-expr-production) is used to define the grammar tokens - the token manager is generated from this information (as well as from inline token specifications in the parser grammar).
* [token_manager_decls](#token-manager-decls) is used to introduce declarations that get inserted into the generated token manager.

<br>

### <a name="javacode-production"></a>javacode_production

---

```java
javacode_production ::= "JAVACODE"
                        java_access_modifier java_return_type java_identifier "(" java_parameter_list ")"
                        java_block
```

The `JAVACODE` production is a way to write Java code for some productions instead of the usual EBNF expansion. This is useful when there is the need to recognize something that is not context-free or for whatever reason is very difficult to write a grammar for.

An example of the use of `JAVACODE` is shown below. In this example, the non-terminal `skip_to_matching_brace` consumes tokens in the input stream all the way up to a matching closing brace (the opening brace is assumed to have been just scanned):

```java
JAVACODE
void skip_to_matching_brace() {
  Token tok;
  int nesting = 1;
  while (true) {
    tok = getToken(1);
    if (tok.kind == LBRACE) nesting++;
    if (tok.kind == RBRACE) {
      nesting--;
      if (nesting == 0) break;
    }
    tok = getNextToken();
  }
}
```

Care must be taken when using `JAVACODE` productions. While you can say pretty much what you want with these productions, JavaCC simply considers it a black box (that somehow performs its parsing task). This becomes a problem when `JAVACODE` productions appear at [choice points](../tutorials/lookahead.md). For example, if the above `JAVACODE` production was referred to from the following production:

```java
void NT() : {
}
{
  skip_to_matching_brace()
  |
  some_other_production()
}
```

Then JavaCC would not know how to choose between the two choices. On the other hand, if the `JAVACODE` production is used at a non-choice point as in the following example, there is no problem:

```java
void NT() : {
}
{
  "{" skip_to_matching_brace()
  |
  "(" parameter_list() ")"
}
```

`JAVACODE` productions at choice points may also be preceded by syntactic or semantic `LOOKAHEAD`, as in this example:

```java
void NT() : {
}
{
  LOOKAHEAD ( {errorOccurred} ) skip_to_matching_brace()
  |
  "(" parameter_list() ")"
}
```

The default access modifier for `JAVACODE` productions is package `private`.

<br>

### <a name="bnf-production"></a>bnf_production

---

```java
bnf_production ::= java_access_modifier java_return_type java_identifier "(" java_parameter_list ")" ":"
                   java_block
                   "{" expansion_choices "}"
```

The `BNF` production is the standard production used in specifying JavaCC grammars. Each `BNF` production has a left hand side which is a non-terminal specification. The `BNF` production then defines this non-terminal in terms of `BNF` expansions on the right hand side. The non-terminal is written exactly like a declared Java method. Since each non-terminal is translated into a method in the generated parser, this style of writing the non-terminal makes this association obvious. The name of the non-terminal is the name of the method, and the parameters and return value declared are the means to pass values up and down the parse tree. As will be seen later, non-terminals on the right hand sides of productions are written as method calls, so the passing of values up and down the tree are done using exactly the same paradigm as method call and return. The default access modifier for `BNF` productions is `public`.

There are two parts on the right hand side of an `BNF` production. The first part is a set of arbitrary Java declarations and code (the Java block). This code is generated at the beginning of the method generated for the Java non-terminal. Hence, every time this non-terminal is used in the parsing process, these declarations and code are executed. The declarations in this part are visible to all Java code in actions in the `BNF` expansions. JavaCC does not do any processing of these declarations and code, except to skip to the matching ending brace, collecting all text encountered on the way. Hence, a Java compiler can detect errors in this code that has been processed by JavaCC.

The second part of the right hand side are the `BNF` expansions. This is described in [expansion_choices](#expansion-choices).

<br>

### <a name="regular-expr-production"></a>regular_expr_production

---

```java
regular_expr_production ::= [ lexical_state_list ]
                            regexpr_kind [ "[" "IGNORE_CASE" "]" ] ":"
                            "{" regexpr_spec ( "|" regexpr_spec )* "}"
```

A regular expression production is used to define lexical entities that get processed by the generated token manager. A detailed description of how the token manager works is provided in the [tutorial](../tutorials/token-manager.md). This page describes the syntactic aspects of specifying lexical entities, while the tutorial describes how these syntactic constructs tie in with how the token manager actually works.

A regular expression production starts with a specification of the lexical states for which it applies (the [lexical state list](#lexical-state-list)). There is a standard lexical state called `DEFAULT`. If the lexical state list is omitted, the regular expression production applies to the lexical state `DEFAULT`.

Following this is a description of what kind of regular expression production this is (see [regexpr_kind](#regexpr-kind)).

After this is an optional `[IGNORE_CASE]`. If this is present, the regular expression production is case insensitive - it has the same effect as the `IGNORE_CASE` option, except that in this case it applies locally to this regular expression production.

This is then followed by a list of regular expression specifications that describe in more detail the lexical entities of this regular expression production.

<br>

### <a name="token-manager-decls"></a>token_manager_decls

---

```java
token_manager_decls ::= "TOKEN_MGR_DECLS" ":" ClassOrInterfaceBody
```

The token manager declarations starts with the reserved word `TOKEN_MGR_DECLS` followed by a `:` and then a set of Java declarations and statements (those that are possible in the body of a class or an interface).  
These declarations and statements are written into the generated token manager and are accessible from within [lexical actions](#regexpr-spec).

There can only be one token manager declaration in a JavaCC grammar file.

<br>

### <a name="lexical-state-list"></a>lexical_state_list

---

```java
lexical_state_list ::= "<" "*" ">"
                     | "<" java_identifier ( "," java_identifier )* ">"
```

The lexical state list describes the set of lexical states for which the corresponding [regular expression production](#regular-expr-production) applies. If this is written as `<*>`, the regular expression production applies to all lexical states. Otherwise, it applies to all the lexical states in the identifier list within the angular brackets.

<br>

### <a name="regexpr-kind"></a>regexpr_kind

---

```java
regexpr_kind ::= "TOKEN"
               | "SPECIAL_TOKEN"
               | "SKIP"
               | "MORE"
```

This specifies the type of [regular expression production](#regular-expr-production). There are four types:

| Type | Description |
| :--- | :--- |
| `TOKEN` | The regular expressions in this regular expression production describe tokens in the grammar. The token manager creates a `Token` object for each match of such a regular expression and returns it to the parser. |
| `SPECIAL_TOKEN` | The regular expressions in this regular expression production describe special tokens. Special tokens are like tokens, except that they do not have significance during parsing - that is the `BNF` productions ignore them. Special tokens are, however, still passed on to the parser so that parser actions can access them. Special tokens are passed to the parser by linking them to neighbouring real tokens using the field `specialToken` in the `Token` class. Special tokens are useful in the processing of lexical entities such as comments which have no significance to parsing, but still are an important part of the input file. |
| `SKIP` | Matches to regular expressions in this regular expression production are simply skipped (ignored) by the token manager. |
| `MORE` | Sometimes it is useful to gradually build up a token to be passed on to the parser. Matches to this kind of regular expression are stored in a buffer until the next `TOKEN` or `SPECIAL_TOKEN` match. Then all the matches in the buffer and the final `TOKEN/SPECIAL_TOKEN` match are concatenated together to form one `TOKEN/SPECIAL_TOKEN` that is passed on to the parser. If a match to a `SKIP` regular expression follows a sequence of `MORE` matches, the contents of the buffer is discarded. |

<br>

### <a name="regexpr-spec"></a>regexpr_spec

---

```java
regexpr_spec ::= regular_expression [ java_block ] [ ":" java_identifier ]
```

The regular expression specification begins the actual description of the lexical entities that are part of this [regular expression production](#regular-expr-production). Each regular expression production may contain any number of regular expression specifications.

Each regular expression specification contains a regular expression followed by a Java block (the lexical action) which is optional. This is then followed by an identifier of a lexical state (which is also optional). Whenever this regular expression is matched, the lexical action (if any) gets executed, followed by any common token actions. Then the action depending on the [regular expression production kind](#regexpr-kind) is taken. Finally, if a lexical state is specified, the token manager moves to that lexical state for further processing (the token manager starts initially in the state `DEFAULT`).

<br>

### <a name="expansion-choices"></a>expansion_choices

---

```java
expansion_choices ::= expansion ( "|" expansion )*
```

Expansion choices are written as a list of one or more expansions separated by `|`'s. The set of legal parses allowed by an expansion choice is a legal parse of any one of the contained expansions.

<br>

### <a name="expansion"></a>expansion

---

```java
expansion	::=	( expansion_unit )*
```

An expansion is written as a sequence of expansion units. A concatenation of legal parses of the expansion units is a legal parse of the expansion.

For example, the expansion `{` `decls()` `}` consists of three expansion units - `{`, `decls()`, and `}`. A match for the expansion is a concatenation of the matches for the individual expansion units - in this case, that would be any string that begins with a `{`, ends with a `}`, and contains a match for `decls()` in between.

<br>

### <a name="expansion-unit"></a>expansion_unit

---

```java
expansion_unit ::= local_lookahead
                 | java_block
                 | "(" expansion_choices ")" [ "+" | "*" | "?" ]
                 | "[" expansion_choices "]"
                 | [ java_assignment_lhs "=" ] regular_expression
                 | [ java_assignment_lhs "=" ] java_identifier "(" java_expression_list ")"
```

An expansion unit can be a [local lookahead](#local-lookahead) specification. This instructs the generated parser on how to make choices at choice points. For details on how `LOOKAHEAD` specifications work and how to write `LOOKAHEAD` specifications see the `LOOKAHEAD` [tutorial](../tutorials/lookahead.md).

An expansion unit can be a set of Java declarations and code enclosed within braces (the Java block). These are also called parser actions. This is generated into the method parsing the non-terminal at the appropriate location. This block is executed whenever the parsing process crosses this point successfully. When JavaCC processes the Java block, it does not perform any detailed syntax or semantic checking. Hence it is possible that the Java compiler will find errors in your actions that have been processed by JavaCC. *Actions are not executed during lookahead evaluation*.

An expansion unit can be a parenthesized set of one or more [expansion choices](#expansion-choices). In which case, a legal parse of the expansion unit is any legal parse of the nested expansion choices. The parenthesized set of expansion choices can be suffixed (optionally) by:

| Suffix | Description |
| :--- | :--- |
| `+` | Then any legal parse of the expansion unit is one or more repetitions of a legal parse of the parenthesized set of expansion choices.|
| `*` | Then any legal parse of the expansion unit is zero or more repetitions of a legal parse of the parenthesized set of expansion choices.|
| `?` | Then a legal parse of the expansion unit is either the empty token sequence or any legal parse of the nested expansion choices. An alternate syntax for this construct is to enclose the expansion choices within brackets `[...]`.|

An expansion unit can be a [regular expression](#regular-expression). Then a legal parse of the expansion unit is any token that matches this regular expression. When a regular expression is matched, it creates an object of type `Token`. This object can be accessed by assigning it to a variable by prefixing the regular expression with `variable =`. In general, you may have any valid Java assignment left-hand side to the left of the `=`. *This assignment is not performed during lookahead evaluation*.

An expansion unit can be a non-terminal (the last choice in the syntax above). In which case, it takes the form of a method call with the non-terminal name used as the name of the method. A successful parse of the non-terminal causes the parameters placed in the method call to be operated on and a value returned (in case the non-terminal was not declared to be of type `void`). The return value can be assigned (optionally) to a variable by prefixing the regular expression with `variable =`. In general, you may have any valid Java assignment left-hand side to the left of the `=`. *This assignment is not performed during lookahead evaluation*. Non-terminals may not be used in an expansion in a manner that introduces left-recursion. JavaCC checks this for you.

<br>

### <a name="local-lookahead"></a>local_lookahead

---

```java
local_lookahead ::= "LOOKAHEAD" "(" [ java_integer_literal ] [ "," ] [ expansion_choices ] [ "," ] [ "{"    java_expression "}" ] ")"
```

A local lookahead specification is used to influence the way the generated parser makes choices at the various choice points in the grammar. A local lookahead specification starts with the reserved word `LOOKAHEAD` followed by a set of lookahead constraints within parentheses. There are three different kinds of lookahead constraints - a lookahead limit (the integer literal), a syntactic lookahead (the expansion choices), and a semantic lookahead (the expression within braces). At least one lookahead constraint must be present. If more than one lookahead constraint is present, they must be separated by commas.

For a detailed description of how lookahead works, please click here to visit the `LOOKAHEAD` [tutorial](../tutorials/lookahead.md). A brief description of each kind of lookahead constraint is given below:

| Constraint | Description |
| :--- | :--- |
| Lookahead Limit | This is the maximum number of tokens of lookahead that may be used for choice determination purposes. This overrides the default value which is specified by the LOOKAHEAD option. This lookahead limit applies only to the choice point at the location of the local lookahead specification. If the local lookahead specification is not at a choice point, the lookahead limit (if any) is ignored.|
| Syntactic Lookahead | This is an expansion (or expansion choices) that is used for the purpose of determining whether or not the particular choice that this local lookahead specification applies to is to be taken. If this was not provided, the parser uses the expansion to be selected during lookahead determination. If the local lookahead specification is not at a choice point, the syntactic lookahead (if any) is ignored.|
| Semantic Lookahead | This is a boolean expression that is evaluated whenever the parser crosses this point during parsing. If the expression evaluates to true, the parsing continues normally. If the expression evaluates to false and the local lookahead specification is at a choice point, the current choice is not taken and the next choice is considered. If the expression evaluates to false and the local lookahead specification is not at a choice point, then parsing aborts with a parse error. Unlike the other two lookahead constraints that are ignored at non-choice points, semantic lookahead is always evaluated. In fact, semantic lookahead is even evaluated if it is encountered during the evaluation of some other syntactic lookahead check.|

#### Default values for lookahead constraints

If a local lookahead specification has been provided, but not all lookahead constraints have been included, then the missing ones are assigned default values as follows:

* If the lookahead limit is not provided and if the syntactic lookahead is provided, then the lookahead limit defaults to the largest integer value (`2147483647`). This essentially implements `infinite lookahead` - namely, look ahead as many tokens as necessary to match the syntactic lookahead that has been provided.

* If neither the lookahead limit nor the syntactic lookahead has been provided (which means the semantic lookahead is provided), the lookahead limit defaults to `0`. This means that syntactic lookahead is not performed (it passes trivially), and only semantic lookahead is performed.

* If the syntactic lookahead is not provided, it defaults to the choice to which the local lookahead specification applies. If the local lookahead specification is not at a choice point, then the syntactic lookahead is ignored - hence a default value is not relevant.

* If the semantic lookahead is not provided, it defaults to the boolean expression `true`. That is, it trivially passes.

<br>

### <a name="regular-expression"></a>regular_expression

---

```java
regular_expression ::= java_string_literal
                     | "<" [ [ "#" ] java_identifier ":" ] complex_regular_expression_choices ">"
                     | "<" java_identifier ">"
                     | "<" "EOF" ">"
```

There are two places in a grammar files where regular expressions may be written:

1. Within a [regular expression specification](#regexpr_spec) (part of a [regular expression production](#regular-expr-production)),

2. As an [expansion unit](#expansion-unit) within an [expansion](#expansion). When a regular expression is used in this manner, it is as if the regular expression were defined in the following manner at this location and then referred to by its label from the expansion unit:

```java
<DEFAULT> TOKEN :
{
  regular expression
}
```

That is, this usage of regular expression can be rewritten using the other kind of usage. The complete details of regular expression matching by the token manager is available in the token manager [tutorial](../tutorials/token-manager.md). The description of the syntactic constructs follows.

1. The first kind of regular expression is a string literal. The input being parsed matches this regular expression if the token manager is in a [lexical state](#regular-expr-production) for which this regular expression applies and the next set of characters in the input stream is the same (possibly with case ignored) as this string literal.

2. A regular expression may also be a more [complex regular expression](#complex-regular-expression) using which more involved regular expression (than string literals can be defined). Such a regular expression is placed within angular brackets `<...>`, and may be labeled optionally with an identifier. This label may be used to refer to this regular expression from [expansion units](#expansion-unit) or from within other regular expressions. If the label is preceded by a `#`, then this regular expression may not be referred to from expansion units, but only from within other regular expressions. When the `#` is present, the regular expression is referred to as a *private regular expression*.

3. A regular expression may be a reference to some other labeled regular expression in which case it is written as the label enclosed in angular brackets `<...>`.

4. Finally, a regular expression may be a reference to the predefined regular expression `<EOF>` which is matched by the end of file.

Private regular expressions are not matched as tokens by the token manager. Their purpose is solely to facilitate the definition of other more complex regular expressions.

Consider the following example defining Java floating point literals:

```java
TOKEN : {
  < FLOATING_POINT_LITERAL:
      (["0"-"9"])+ "." (["0"-"9"])* (<EXPONENT>)? (["f","F","d","D"])?
    | "." (["0"-"9"])+ (<EXPONENT>)? (["f","F","d","D"])?
    | (["0"-"9"])+ <EXPONENT> (["f","F","d","D"])?
    | (["0"-"9"])+ (<EXPONENT>)? ["f","F","d","D"]
  >
  |
  < #EXPONENT: ["e","E"] (["+","-"])? (["0"-"9"])+ >
}
```

In this example, the token `FLOATING_POINT_LITERAL` is defined using the definition of another token, namely, `EXPONENT`. The `#` before the label `EXPONENT` indicates that this exists solely for the purpose of defining other tokens (`FLOATING_POINT_LITERAL` in this case). The definition of `FLOATING_POINT_LITERAL` is not affected by the presence or absence of the `#`. However, the token manager's behavior is. If the `#` is omitted, the token manager will erroneously recognize a string like E123 as a legal token of kind `EXPONENT` (instead of `IDENTIFIER` in the Java grammar).

<br>

### <a name="complex-regular-expression-choices"></a>complex_regular_expression_choices

---

```java
complex_regular_expression_choices ::= complex_regular_expression ( "|" complex_regular_expression )*
```

Complex regular expression choices is made up of a list of one or more [complex regular expressions](#complex-regular-expression) separated by `|`s. A match for a complex regular expression choice is a match of any of its constituent complex regular expressions.

<br>

### <a name="complex-regular-expression"></a>complex_regular_expression

---

```java
complex_regular_expression ::= ( complex_regular_expression_unit )*
```

A complex regular expression is a sequence of complex regular expression units. A match for a complex regular expression is a concatenation of matches to the complex regular expression units.

<br>

### <a name="complex-regular-expression-unit"></a>complex_regular_expression_unit

---

```java
complex_regular_expression_unit ::= java_string_literal
                                  | "<" java_identifier ">"
                                  | character_list
                                  | "(" complex_regular_expression_choices ")" [ "+" | "*" | "?" ]
```

A complex regular expression unit can be a string literal, in which case there is exactly one match for this unit, namely, the string literal itself.

A complex regular expression unit can be a reference to another regular expression. The other regular expression has to be labeled so that it can be referenced. The matches of this unit are all the matches of this other regular expression. Such references in regular expressions cannot introduce loops in the dependency between tokens.

A complex regular expression unit can be a [character list](#character_list). A character list is a way of defining a set of characters. A match for this kind of complex regular expression unit is any character that is allowed by the character list.

A complex regular expression unit can be a parenthesized set of complex regular expression choices. In this case, a legal match of the unit is any legal match of the nested choices. The parenthesized set of choices can be suffixed (optionally) by:

| Suffix | Description |
| :--- | :--- |
| `+` | Then any legal match of the unit is one or more repetitions of a legal match of the parenthesized set of choices.|
| `*` | Then any legal match of the unit is zero or more repetitions of a legal match of the parenthesized set of choices.|
| `?` | Then a legal match of the unit is either the empty string or any legal match of the nested choices.|

*N.B. Unlike the `BNF` expansions, the regular expression `[...]` is not equivalent to the regular expression `(...)?`. This is because the `[...]` construct is used to describe character lists in regular expressions*.

<br>

### <a name="character-list"></a>character_list

---

```java
character_list ::= [ "~" ] "[" [ character_descriptor ( "," character_descriptor )* ] "]"
```

A character list describes a set of characters. A legal match for a character list is any character in this set. A character list is a list of character descriptors separated by commas within square brackets. Each character descriptor describes a single character or a range of characters (see [character descriptor](#character-descriptor) below), and this is added to the set of characters of the character list. If the character list is prefixed by the `~` symbol, the set of characters it represents is any `UNICODE` character not in the specified set.

<br>

### <a name="character-descriptor"></a>character_descriptor

---

```java
character_descriptor ::= java_string_literal [ "-" java_string_literal ]
```

A character descriptor can be a single character string literal, in which case it describes a singleton set containing that character - or it is two single character string literals separated by a `-`, in which case, it describes the set of all characters in the range between and including these two characters.

<br>

---

[NEXT >>](bnf.md)

<br>


================================================
FILE: docs/documentation/index.md
================================================
[Home](../index.md) > [Documentation](index.md) > Index

---

<br>

1. [JavaCC Command Line](cli.md)

2. [JavaCC Grammar](grammar.md)

3. [JavaCC BNF](bnf.md)

4. [JavaCC API](api.md)

5. [JJTree](jjtree.md)

6. [JJDoc](jjdoc.md)

<br>

---

[BEGIN >>](cli.md)

<br>


================================================
FILE: docs/documentation/javacc.html
================================================
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2//EN">
<HTML>
<HEAD>
<TITLE>BNF for JavaCC.jj</TITLE>
</HEAD>
<BODY>
<H1 ALIGN=CENTER>BNF for JavaCC.jj</H1>
<H2 ALIGN=CENTER>TOKENS</H2>
<TABLE>
 <!-- Special token -->
 <TR>
  <TD>
<PRE>
/**********************************************
 * THE JAVACC TOKEN SPECIFICATION STARTS HERE *
 **********************************************/

/* JAVACC RESERVED WORDS: These are the only tokens in JavaCC but not in Java */</PRE>
  </TD>
 </TR>
 <!-- Token -->
 <TR>
  <TD>
   <PRE>
&lt;DEFAULT&gt; TOKEN : {
&lt;_LOOKAHEAD: "LOOKAHEAD"&gt;
| &lt;_IGNORE_CASE: "IGNORE_CASE"&gt;
| &lt;_PARSER_BEGIN: "PARSER_BEGIN"&gt;
| &lt;_PARSER_END: "PARSER_END"&gt;
| &lt;_JAVACODE: "JAVACODE"&gt;
| &lt;_CPPCODE: "CPPCODE"&gt;
| &lt;_TOKEN: "TOKEN"&gt;
| &lt;_SPECIAL_TOKEN: "SPECIAL_TOKEN"&gt;
| &lt;_MORE: "MORE"&gt;
| &lt;_SKIP: "SKIP"&gt;
| &lt;_TOKEN_MGR_DECLS: "TOKEN_MGR_DECLS"&gt;
| &lt;_EOF: "EOF"&gt;
| &lt;_DCL_PARSER_BEGIN: "DCL_PARSER_BEGIN"&gt;
| &lt;_DCL_PARSER_END: "DCL_PARSER_END"&gt;
| &lt;_INC_PARSER_BEGIN: "INC_PARSER_BEGIN"&gt;
| &lt;_INC_PARSER_END: "INC_PARSER_END"&gt;
| &lt;_DEF_PARSER_BEGIN: "DEF_PARSER_BEGIN"&gt;
| &lt;_DEF_PARSER_END: "DEF_PARSER_END"&gt;
}

   </PRE>
  </TD>
 </TR>
 <!-- Special token -->
 <TR>
  <TD>
<PRE>
/*
 * The remainder of the tokens are exactly (except for the removal of tokens
 * containing ">>" and "<<") as in the Java grammar and must be diff equivalent
 * (again with the exceptions above) to it.
 */

/* WHITE SPACE */</PRE>
  </TD>
 </TR>
 <!-- Token -->
 <TR>
  <TD>
   <PRE>
&lt;DEFAULT&gt; SKIP : {
" "
| "\t"
| "\n"
| "\r"
| "\f"
| "/*@egen*/" : AFTER_EGEN
}

   </PRE>
  </TD>
 </TR>
 <!-- Token -->
 <TR>
  <TD>
   <PRE>
&lt;AFTER_EGEN&gt; SKIP : {
&lt;~[]&gt; : DEFAULT
}

   </PRE>
  </TD>
 </TR>
 <!-- Special token -->
 <TR>
  <TD>
<PRE>
/* COMMENTS */</PRE>
  </TD>
 </TR>
 <!-- Token -->
 <TR>
  <TD>
   <PRE>
&lt;DEFAULT&gt; MORE : {
"//" : IN_SINGLE_LINE_COMMENT
| &lt;"/**" ~["/"]&gt; : IN_FORMAL_COMMENT
| "/*" : IN_MULTI_LINE_COMMENT
| "/*@bgen(jjtree" : IN_MULTI_LINE_COMMENT
}

   </PRE>
  </TD>
 </TR>
 <!-- Token -->
 <TR>
  <TD>
   <PRE>
&lt;IN_SINGLE_LINE_COMMENT&gt; SPECIAL : {
&lt;SINGLE_LINE_COMMENT: "\n" | "\r" | "\r\n"&gt; : DEFAULT
}

   </PRE>
  </TD>
 </TR>
 <!-- Token -->
 <TR>
  <TD>
   <PRE>
&lt;IN_FORMAL_COMMENT&gt; SPECIAL : {
&lt;FORMAL_COMMENT: "*/"&gt; : DEFAULT
}

   </PRE>
  </TD>
 </TR>
 <!-- Token -->
 <TR>
  <TD>
   <PRE>
&lt;IN_MULTI_LINE_COMMENT&gt; SPECIAL : {
&lt;MULTI_LINE_COMMENT: "*/"&gt; : DEFAULT
}

   </PRE>
  </TD>
 </TR>
 <!-- Token -->
 <TR>
  <TD>
   <PRE>
&lt;IN_SINGLE_LINE_COMMENT,IN_FORMAL_COMMENT,IN_MULTI_LINE_COMMENT&gt; MORE : {
&lt;~[]&gt;
}

   </PRE>
  </TD>
 </TR>
 <!-- Special token -->
 <TR>
  <TD>
<PRE>
/* JAVA RESERVED WORDS AND LITERALS */</PRE>
  </TD>
 </TR>
 <!-- Token -->
 <TR>
  <TD>
   <PRE>
&lt;DEFAULT&gt; TOKEN : {
&lt;ABSTRACT: "abstract"&gt;
| &lt;ASSERT: "assert"&gt;
| &lt;BOOLEAN: "boolean"&gt;
| &lt;BREAK: "break"&gt;
| &lt;BYTE: "byte"&gt;
| &lt;CASE: "case"&gt;
| &lt;CATCH: "catch"&gt;
| &lt;CHAR: "char"&gt;
| &lt;CLASS: "class"&gt;
| &lt;CONST: "const"&gt;
| &lt;CONTINUE: "continue"&gt;
| &lt;_DEFAULT: "default"&gt;
| &lt;DO: "do"&gt;
| &lt;DOUBLE: "double"&gt;
| &lt;ELSE: "else"&gt;
| &lt;ENUM: "enum"&gt;
| &lt;EXTENDS: "extends"&gt;
| &lt;FALSE: "false"&gt;
| &lt;FINAL: "final"&gt;
| &lt;FINALLY: "finally"&gt;
| &lt;FLOAT: "float"&gt;
| &lt;FOR: "for"&gt;
| &lt;GOTO: "goto"&gt;
| &lt;IF: "if"&gt;
| &lt;IMPLEMENTS: "implements"&gt;
| &lt;IMPORT: "import"&gt;
| &lt;INSTANCEOF: "instanceof"&gt;
| &lt;INT: "int"&gt;
| &lt;INTERFACE: "interface"&gt;
| &lt;LONG: "long"&gt;
| &lt;NATIVE: "native"&gt;
| &lt;NEW: "new"&gt;
| &lt;NULL: "null"&gt;
| &lt;PACKAGE: "package"&gt;
| &lt;PRIVATE: "private"&gt;
| &lt;PROTECTED: "protected"&gt;
| &lt;PUBLIC: "public"&gt;
| &lt;RETURN: "return"&gt;
| &lt;SHORT: "short"&gt;
| &lt;STATIC: "static"&gt;
| &lt;STRICTFP: "strictfp"&gt;
| &lt;SUPER: "super"&gt;
| &lt;SWITCH: "switch"&gt;
| &lt;SYNCHRONIZED: "synchronized"&gt;
| &lt;THIS: "this"&gt;
| &lt;THROW: "throw"&gt;
| &lt;THROWS: "throws"&gt;
| &lt;TRANSIENT: "transient"&gt;
| &lt;TRUE: "true"&gt;
| &lt;TRY: "try"&gt;
| &lt;VOID: "void"&gt;
| &lt;VOLATILE: "volatile"&gt;
| &lt;WHILE: "while"&gt;
}

   </PRE>
  </TD>
 </TR>
 <!-- Special token -->
 <TR>
  <TD>
<PRE>
/* C++ RESERVED WORDS AND LITERALS */</PRE>
  </TD>
 </TR>
 <!-- Token -->
 <TR>
  <TD>
   <PRE>
&lt;DEFAULT&gt; TOKEN : {
&lt;TEMPLATE: "template"&gt;
| &lt;TYPENAME: "typename"&gt;
}

   </PRE>
  </TD>
 </TR>
 <!-- Special token -->
 <TR>
  <TD>
<PRE>
/* JAVA LITERALS */</PRE>
  </TD>
 </TR>
 <!-- Token -->
 <TR>
  <TD>
   <PRE>
&lt;DEFAULT&gt; TOKEN : {
&lt;INTEGER_LITERAL: &lt;DECIMAL_LITERAL&gt; (["l","L"])? | &lt;HEX_LITERAL&gt; (["l","L"])? | &lt;OCTAL_LITERAL&gt; (["l","L"])? | &lt;BINARY_LITERAL&gt; (["l","L"])?&gt;
| &lt;#DECIMAL_LITERAL: ["1"-"9"] (("_")* ["0"-"9"])*&gt;
| &lt;#HEX_LITERAL: "0" ["x","X"] ["0"-"9","a"-"f","A"-"F"] (("_")* ["0"-"9","a"-"f","A"-"F"])*&gt;
| &lt;#OCTAL_LITERAL: "0" (("_")* ["0"-"7"])*&gt;
| &lt;#BINARY_LITERAL: "0" ["b","B"] ["0","1"] (("_")* ["0","1"])*&gt;
| &lt;FLOATING_POINT_LITERAL: &lt;DECIMAL_FLOATING_POINT_LITERAL&gt; | &lt;HEXADECIMAL_FLOATING_POINT_LITERAL&gt;&gt;
| &lt;#DECIMAL_FLOATING_POINT_LITERAL: ["0"-"9"] (("_")* ["0"-"9"])* "." (["0"-"9"] (("_")* ["0"-"9"])*)? (&lt;DECIMAL_EXPONENT&gt;)? (["f","F","d","D"])? | "." ["0"-"9"] (("_")* ["0"-"9"])* (&lt;DECIMAL_EXPONENT&gt;)? (["f","F","d","D"])? | ["0"-"9"] (("_")* ["0"-"9"])* &lt;DECIMAL_EXPONENT&gt; (["f","F","d","D"])? | ["0"-"9"] (("_")* ["0"-"9"])* (&lt;DECIMAL_EXPONENT&gt;)? ["f","F","d","D"]&gt;
| &lt;#DECIMAL_EXPONENT: ["e","E"] (["+","-"])? ["0"-"9"] (("_")* ["0"-"9"])*&gt;
| &lt;#HEXADECIMAL_FLOATING_POINT_LITERAL: "0" ["x","X"] ["0"-"9","a"-"f","A"-"F"] (("_")* ["0"-"9","a"-"f","A"-"F"])* (".")? &lt;HEXADECIMAL_EXPONENT&gt; (["f","F","d","D"])? | "0" ["x","X"] (["0"-"9","a"-"f","A"-"F"] (("_")* ["0"-"9","a"-"f","A"-"F"])*)? "." ["0"-"9","a"-"f","A"-"F"] (("_")* ["0"-"9","a"-"f","A"-"F"])* &lt;HEXADECIMAL_EXPONENT&gt; (["f","F","d","D"])?&gt;
| &lt;#HEXADECIMAL_EXPONENT: ["p","P"] (["+","-"])? ["0"-"9"] (("_")* ["0"-"9"])*&gt;
| &lt;CHARACTER_LITERAL: "\'" (~["\'","\\","\n","\r"] | "\\" (["n","t","b","r","f","\\","\'","\""] | ["0"-"7"] (["0"-"7"])? | ["0"-"3"] ["0"-"7"] ["0"-"7"])) "\'"&gt;
| &lt;STRING_LITERAL: "\"" (~["\"","\\","\n","\r"] | "\\" (["n","t","b","r","f","\\","\'","\""] | ["0"-"7"] (["0"-"7"])? | ["0"-"3"] ["0"-"7"] ["0"-"7"]))* "\""&gt;
}

   </PRE>
  </TD>
 </TR>
 <!-- Special token -->
 <TR>
  <TD>
<PRE>
/* SEPARATORS */</PRE>
  </TD>
 </TR>
 <!-- Token -->
 <TR>
  <TD>
   <PRE>
&lt;DEFAULT&gt; TOKEN : {
&lt;LPAREN: "("&gt;
| &lt;RPAREN: ")"&gt;
| &lt;LBRACE: "{"&gt;
| &lt;RBRACE: "}"&gt;
| &lt;LBRACKET: "["&gt;
| &lt;RBRACKET: "]"&gt;
| &lt;SEMICOLON: ";"&gt;
| &lt;COMMA: ","&gt;
| &lt;DOT: "."&gt;
}

   </PRE>
  </TD>
 </TR>
 <!-- Special token -->
 <TR>
  <TD>
<PRE>
/* OPERATORS */</PRE>
  </TD>
 </TR>
 <!-- Token -->
 <TR>
  <TD>
   <PRE>
&lt;DEFAULT&gt; TOKEN : {
&lt;ASSIGN: "="&gt;
| &lt;LT: "&lt;"&gt;
| &lt;BANG: "!"&gt;
| &lt;TILDE: "~"&gt;
| &lt;HOOK: "?"&gt;
| &lt;COLON: ":"&gt;
| &lt;DOUBLECOLON: "::"&gt;
| &lt;EQ: "=="&gt;
| &lt;LE: "&lt;="&gt;
| &lt;GE: "&gt;="&gt;
| &lt;NE: "!="&gt;
| &lt;SC_OR: "||"&gt;
| &lt;SC_AND: "&amp;&amp;"&gt;
| &lt;INCR: "++"&gt;
| &lt;DECR: "--"&gt;
| &lt;PLUS: "+"&gt;
| &lt;MINUS: "-"&gt;
| &lt;STAR: "*"&gt;
| &lt;SLASH: "/"&gt;
| &lt;BIT_AND: "&amp;"&gt;
| &lt;BIT_OR: "|"&gt;
| &lt;XOR: "^"&gt;
| &lt;REM: "%"&gt;
| &lt;PLUSASSIGN: "+="&gt;
| &lt;MINUSASSIGN: "-="&gt;
| &lt;STARASSIGN: "*="&gt;
| &lt;SLASHASSIGN: "/="&gt;
| &lt;ANDASSIGN: "&amp;="&gt;
| &lt;ORASSIGN: "|="&gt;
| &lt;XORASSIGN: "^="&gt;
| &lt;REMASSIGN: "%="&gt;
}

   </PRE>
  </TD>
 </TR>
 <!-- Special token -->
 <TR>
  <TD>
<PRE>
/* >'s need special attention due to generics syntax. */</PRE>
  </TD>
 </TR>
 <!-- Token -->
 <TR>
  <TD>
   <PRE>
&lt;DEFAULT&gt; TOKEN : {
&lt;RUNSIGNEDSHIFT: "&gt;&gt;&gt;"&gt; : {
| &lt;RSIGNEDSHIFT: "&gt;&gt;"&gt; : {
| &lt;GT: "&gt;"&gt;
}

   </PRE>
  </TD>
 </TR>
 <!-- Token -->
 <TR>
  <TD>
   <PRE>
   </PRE>
  </TD>
 </TR>
 <!-- Token -->
 <TR>
  <TD>
   <PRE>
   </PRE>
  </TD>
 </TR>
 
Download .txt
gitextract_prxrwsqf/

├── .classpath
├── .editorconfig
├── .gitattributes
├── .github/
│   └── workflows/
│       └── master.yml
├── .gitignore
├── .project
├── .travis.yml
├── LICENSE
├── README.md
├── bootstrap/
│   └── javacc.jar
├── build.cmd
├── build.xml
├── docs/
│   ├── .gitignore
│   ├── Gemfile
│   ├── LICENSE
│   ├── _config.yml
│   ├── _layouts/
│   │   └── default.html
│   ├── assets/
│   │   └── css/
│   │       └── style.scss
│   ├── documentation/
│   │   ├── api.md
│   │   ├── bnf.md
│   │   ├── cli.md
│   │   ├── grammar.md
│   │   ├── index.md
│   │   ├── javacc.html
│   │   ├── javacc.txt
│   │   ├── jjdoc.md
│   │   └── jjtree.md
│   ├── downloads.md
│   ├── faq.md
│   ├── index.md
│   ├── release-notes.md
│   └── tutorials/
│       ├── charstream.md
│       ├── error-handling.md
│       ├── examples.md
│       ├── index.md
│       ├── lexer-tips.md
│       ├── lookahead.md
│       └── token-manager.md
├── examples/
│   ├── CORBA-IDL/
│   │   ├── Hello.idl
│   │   ├── IDL.jj
│   │   └── README
│   ├── GUIParsing/
│   │   ├── ParserVersion/
│   │   │   ├── CalcGUI.java
│   │   │   ├── CalcInput.jj
│   │   │   ├── Main.java
│   │   │   ├── ProducerConsumer.java
│   │   │   ├── README
│   │   │   └── TokenCollector.java
│   │   ├── README
│   │   └── TokenMgrVersion/
│   │       ├── CalcGUI.java
│   │       ├── CalcInput.jj
│   │       ├── CharCollector.java
│   │       ├── Main.java
│   │       ├── MyLexer.java
│   │       └── README
│   ├── Interpreter/
│   │   ├── ASTAddNode.java
│   │   ├── ASTAndNode.java
│   │   ├── ASTAssignment.java
│   │   ├── ASTBitwiseAndNode.java
│   │   ├── ASTBitwiseComplNode.java
│   │   ├── ASTBitwiseOrNode.java
│   │   ├── ASTBitwiseXorNode.java
│   │   ├── ASTBlock.java
│   │   ├── ASTCompilationUnit.java
│   │   ├── ASTDivNode.java
│   │   ├── ASTEQNode.java
│   │   ├── ASTFalseNode.java
│   │   ├── ASTGENode.java
│   │   ├── ASTGTNode.java
│   │   ├── ASTId.java
│   │   ├── ASTIfStatement.java
│   │   ├── ASTIntConstNode.java
│   │   ├── ASTLENode.java
│   │   ├── ASTLTNode.java
│   │   ├── ASTModNode.java
│   │   ├── ASTMulNode.java
│   │   ├── ASTNENode.java
│   │   ├── ASTNotNode.java
│   │   ├── ASTOrNode.java
│   │   ├── ASTReadStatement.java
│   │   ├── ASTStatementExpression.java
│   │   ├── ASTSubtractNode.java
│   │   ├── ASTTrueNode.java
│   │   ├── ASTVarDeclaration.java
│   │   ├── ASTWhileStatement.java
│   │   ├── ASTWriteStatement.java
│   │   ├── MyNode.java
│   │   ├── Node.java
│   │   ├── README
│   │   ├── SPL.java
│   │   ├── SPL.jjt
│   │   ├── fact.spl
│   │   ├── odd.spl
│   │   └── sqrt.spl
│   ├── JJTreeExamples/
│   │   ├── cpp/
│   │   │   ├── ASTMyID.cc
│   │   │   ├── ASTMyID.h
│   │   │   ├── ASTMyOtherID.cc
│   │   │   ├── ASTMyOtherID.h
│   │   │   ├── EG4DumpVisitor.cc
│   │   │   ├── EG4DumpVisitor.h
│   │   │   ├── MyErrorHandler.cc
│   │   │   ├── MyErrorHandler.h
│   │   │   ├── README
│   │   │   ├── build.xml
│   │   │   ├── eg1.cc
│   │   │   ├── eg1.jjt
│   │   │   ├── eg2.cc
│   │   │   ├── eg2.jjt
│   │   │   ├── eg3.cc
│   │   │   ├── eg3.jjt
│   │   │   ├── eg4.cc
│   │   │   └── eg4.jjt
│   │   └── java/
│   │       ├── ASTMyID.java
│   │       ├── ASTMyOtherID.java
│   │       ├── Eg4DumpVisitor.java
│   │       ├── README
│   │       ├── build.xml
│   │       ├── eg1.jjt
│   │       ├── eg2.jjt
│   │       ├── eg3.jjt
│   │       └── eg4.jjt
│   ├── JavaCCGrammar/
│   │   └── JavaCC.jj
│   ├── JavaGrammars/
│   │   ├── 1.5/
│   │   │   ├── Java1.5.jj
│   │   │   ├── JavaGenerics.java
│   │   │   ├── Main.java
│   │   │   ├── MyToken.java
│   │   │   ├── README
│   │   │   ├── Test.java
│   │   │   └── build.xml
│   │   ├── Java1.0.2.jj
│   │   ├── Java1.0.2LS.jj
│   │   ├── Java1.1-cpp.jj
│   │   ├── Java1.1.jj
│   │   ├── Java1.1noLA.jj
│   │   ├── OPTIMIZING
│   │   ├── README
│   │   ├── Test.java
│   │   └── cpp/
│   │       ├── .gitignore
│   │       ├── HelloWorld.java
│   │       ├── Java1.1.jjt
│   │       ├── Makefile
│   │       ├── allmain.cc
│   │       ├── main.cc
│   │       ├── myparser.h
│   │       ├── mytm.h
│   │       └── token_base.h
│   ├── Lookahead/
│   │   ├── Example1.jj
│   │   ├── Example10.jj
│   │   ├── Example2.jj
│   │   ├── Example3.jj
│   │   ├── Example4.jj
│   │   ├── Example5.jj
│   │   ├── Example6.jj
│   │   ├── Example7.jj
│   │   ├── Example8.jj
│   │   ├── Example9.jj
│   │   └── README
│   ├── MailProcessing/
│   │   ├── Digest.jj
│   │   ├── Faq.jj
│   │   ├── README
│   │   └── sampleMailFile
│   ├── Obfuscator/
│   │   ├── Globals.java
│   │   ├── IdsFile.jj
│   │   ├── Java1.1.jj
│   │   ├── Main.java
│   │   ├── MapFile.jj
│   │   ├── Obfuscator.java
│   │   ├── README
│   │   ├── input/
│   │   │   ├── package1/
│   │   │   │   └── Main.java
│   │   │   └── package2/
│   │   │       └── Incr.java
│   │   ├── maps
│   │   ├── nochangeids
│   │   └── useids
│   ├── README
│   ├── SimpleExamples/
│   │   ├── IdList.jj
│   │   ├── NL_Xlator.jj
│   │   ├── README
│   │   ├── Simple1.jj
│   │   ├── Simple2.jj
│   │   └── Simple3.jj
│   ├── Transformer/
│   │   ├── ASTCompilationUnit.java
│   │   ├── ASTSpecialBlock.java
│   │   ├── README
│   │   ├── SimpleNode.java
│   │   ├── ToyJava.jjt
│   │   └── divide.toy
│   └── VTransformer/
│       ├── AddAcceptVisitor.java
│       ├── Java1.1.jjt
│       ├── Main.java
│       ├── README
│       ├── SimpleNode.java
│       └── UnparseVisitor.java
├── grammars/
│   ├── AsnParser.jj
│   ├── BackupCharStream.java
│   ├── CPPParser.jj
│   ├── CParser.jj
│   ├── ChemNumber.jj
│   ├── Cobol.jj
│   ├── DTDParser.jj
│   ├── EcmaScript.jjt
│   ├── ExpressParser.jj
│   ├── FormsPlSql.jj
│   ├── GdmoTranslator.jj
│   ├── IDLParser.jj
│   ├── JSONParser.jjt
│   ├── OberonParser.jj
│   ├── PHP.jj
│   ├── PetalParser.jj
│   ├── PlSql.jj
│   ├── RTFParser.jj
│   ├── SQLParser.jj
│   └── infosapient.jj
├── lib/
│   ├── ant-contrib-1.0b3.jar
│   ├── cpptasks.jar
│   ├── jacocoagent-0.8.10.jar
│   ├── jacocoant-0.8.10.jar
│   ├── junit.jar
│   ├── junit3.8.1/
│   │   └── junit.jar
│   └── maven-ant-tasks-2.1.3.jar
├── make_bundle.cmd
├── make_bundle.sh
├── makedist
├── old_but_saved/
│   ├── NfaStateTest.java
│   ├── genkey.bat
│   ├── jarsigner_pom.txt
│   ├── keystore
│   └── maven-pmd-plugin-default.xml
├── pom.xml
├── scripts/
│   ├── javacc
│   ├── javacc.bat
│   ├── jjdoc
│   ├── jjdoc.bat
│   ├── jjrun
│   ├── jjtree
│   └── jjtree.bat
├── src/
│   ├── main/
│   │   ├── java/
│   │   │   ├── JavaCCInterpreter.java
│   │   │   ├── javacc.java
│   │   │   ├── jjdoc.java
│   │   │   ├── jjtree.java
│   │   │   ├── org/
│   │   │   │   └── javacc/
│   │   │   │       ├── Version.java
│   │   │   │       ├── jjdoc/
│   │   │   │       │   ├── BNFGenerator.java
│   │   │   │       │   ├── Generator.java
│   │   │   │       │   ├── HTMLGenerator.java
│   │   │   │       │   ├── JJDoc.java
│   │   │   │       │   ├── JJDocGlobals.java
│   │   │   │       │   ├── JJDocMain.java
│   │   │   │       │   ├── JJDocOptions.java
│   │   │   │       │   ├── TextGenerator.java
│   │   │   │       │   ├── XTextGenerator.java
│   │   │   │       │   └── package.html
│   │   │   │       ├── jjtree/
│   │   │   │       │   ├── ASTBNF.java
│   │   │   │       │   ├── ASTBNFAction.java
│   │   │   │       │   ├── ASTBNFDeclaration.java
│   │   │   │       │   ├── ASTBNFNodeScope.java
│   │   │   │       │   ├── ASTCompilationUnit.java
│   │   │   │       │   ├── ASTExpansionNodeScope.java
│   │   │   │       │   ├── ASTGrammar.java
│   │   │   │       │   ├── ASTJavacode.java
│   │   │   │       │   ├── ASTJavacodeBody.java
│   │   │   │       │   ├── ASTLHS.java
│   │   │   │       │   ├── ASTNodeDescriptor.java
│   │   │   │       │   ├── ASTNodeDescriptorExpression.java
│   │   │   │       │   ├── ASTOptionBinding.java
│   │   │   │       │   ├── ASTOptions.java
│   │   │   │       │   ├── ASTProduction.java
│   │   │   │       │   ├── CPPCodeGenerator.java
│   │   │   │       │   ├── CPPJJTreeState.java
│   │   │   │       │   ├── CPPNodeFiles.java
│   │   │   │       │   ├── DefaultJJTreeVisitor.java
│   │   │   │       │   ├── IO.java
│   │   │   │       │   ├── JJTree.java
│   │   │   │       │   ├── JJTreeGlobals.java
│   │   │   │       │   ├── JJTreeIOException.java
│   │   │   │       │   ├── JJTreeNode.java
│   │   │   │       │   ├── JJTreeOptions.java
│   │   │   │       │   ├── JJTreeParserVisitor.java
│   │   │   │       │   ├── JJTreeState.java
│   │   │   │       │   ├── JavaCodeGenerator.java
│   │   │   │       │   ├── Main.java
│   │   │   │       │   ├── NodeFiles.java
│   │   │   │       │   ├── NodeScope.java
│   │   │   │       │   ├── Token.java
│   │   │   │       │   ├── TokenMgrException.java
│   │   │   │       │   ├── TokenUtils.java
│   │   │   │       │   └── package.html
│   │   │   │       ├── package.html
│   │   │   │       ├── parser/
│   │   │   │       │   ├── Action.java
│   │   │   │       │   ├── BNFProduction.java
│   │   │   │       │   ├── CPPFiles.java
│   │   │   │       │   ├── CharacterRange.java
│   │   │   │       │   ├── Choice.java
│   │   │   │       │   ├── CodeGenerator.java
│   │   │   │       │   ├── CodeProduction.java
│   │   │   │       │   ├── Container.java
│   │   │   │       │   ├── CppCodeProduction.java
│   │   │   │       │   ├── Expansion.java
│   │   │   │       │   ├── ExpansionTreeWalker.java
│   │   │   │       │   ├── JavaCCErrors.java
│   │   │   │       │   ├── JavaCCGlobals.java
│   │   │   │       │   ├── JavaCCParserInternals.java
│   │   │   │       │   ├── JavaCodeProduction.java
│   │   │   │       │   ├── JavaFiles.java
│   │   │   │       │   ├── LexGen.java
│   │   │   │       │   ├── LexGenCPP.java
│   │   │   │       │   ├── Lookahead.java
│   │   │   │       │   ├── LookaheadCalc.java
│   │   │   │       │   ├── LookaheadWalk.java
│   │   │   │       │   ├── Main.java
│   │   │   │       │   ├── MatchInfo.java
│   │   │   │       │   ├── MetaParseException.java
│   │   │   │       │   ├── Nfa.java
│   │   │   │       │   ├── NfaState.java
│   │   │   │       │   ├── NonTerminal.java
│   │   │   │       │   ├── NormalProduction.java
│   │   │   │       │   ├── OneOrMore.java
│   │   │   │       │   ├── Options.java
│   │   │   │       │   ├── OtherFilesGen.java
│   │   │   │       │   ├── OtherFilesGenCPP.java
│   │   │   │       │   ├── OutputFile.java
│   │   │   │       │   ├── ParseEngine.java
│   │   │   │       │   ├── ParseGen.java
│   │   │   │       │   ├── ParseGenCPP.java
│   │   │   │       │   ├── ParserCodeGenerator.java
│   │   │   │       │   ├── ParserData.java
│   │   │   │       │   ├── RCharacterList.java
│   │   │   │       │   ├── RChoice.java
│   │   │   │       │   ├── REndOfFile.java
│   │   │   │       │   ├── RJustName.java
│   │   │   │       │   ├── ROneOrMore.java
│   │   │   │       │   ├── RRepetitionRange.java
│   │   │   │       │   ├── RSequence.java
│   │   │   │       │   ├── RStringLiteral.java
│   │   │   │       │   ├── RZeroOrMore.java
│   │   │   │       │   ├── RZeroOrOne.java
│   │   │   │       │   ├── RegExprSpec.java
│   │   │   │       │   ├── RegularExpression.java
│   │   │   │       │   ├── Semanticize.java
│   │   │   │       │   ├── Sequence.java
│   │   │   │       │   ├── SingleCharacter.java
│   │   │   │       │   ├── TableDrivenJavaCodeGenerator.java
│   │   │   │       │   ├── Token.java
│   │   │   │       │   ├── TokenManagerCodeGenerator.java
│   │   │   │       │   ├── TokenProduction.java
│   │   │   │       │   ├── TokenizerData.java
│   │   │   │       │   ├── TreeWalkerOp.java
│   │   │   │       │   ├── TryBlock.java
│   │   │   │       │   ├── ZeroOrMore.java
│   │   │   │       │   ├── ZeroOrOne.java
│   │   │   │       │   └── package.html
│   │   │   │       └── utils/
│   │   │   │           ├── OptionInfo.java
│   │   │   │           ├── OptionType.java
│   │   │   │           └── OutputFileGenerator.java
│   │   │   └── package.html
│   │   ├── javacc/
│   │   │   ├── ConditionParser.jj
│   │   │   └── JavaCC.jj
│   │   ├── jjtree/
│   │   │   └── JJTree.jjt
│   │   └── resources/
│   │       ├── templates/
│   │       │   ├── CharStream.template
│   │       │   ├── DumpDebugMethods.template
│   │       │   ├── DumpStaticVarDeclarations.template
│   │       │   ├── JavaCharStream.template
│   │       │   ├── MultiNode.template
│   │       │   ├── Node.template
│   │       │   ├── ParseException.template
│   │       │   ├── SimpleCharStream.template
│   │       │   ├── SimpleNode.template
│   │       │   ├── TableDrivenTokenManager.template
│   │       │   ├── Token.template
│   │       │   ├── TokenManager.template
│   │       │   ├── TokenManagerBoilerPlateMethods.template
│   │       │   ├── TokenMgrError.template
│   │       │   ├── TokenizerAlgorithm.template
│   │       │   ├── cpp/
│   │       │   │   ├── CharStream.cc.template
│   │       │   │   ├── CharStream.h.template
│   │       │   │   ├── DumpDebugMethods.template
│   │       │   │   ├── DumpVarDeclarations.template
│   │       │   │   ├── ErrorHandler.h.template
│   │       │   │   ├── JJTTreeState.cc.template
│   │       │   │   ├── JJTTreeState.h.template
│   │       │   │   ├── JavaCC.h.template
│   │       │   │   ├── MultiNode.cc.template
│   │       │   │   ├── MultiNode.h.template
│   │       │   │   ├── MultiNode.template
│   │       │   │   ├── MultiNodeImpl.template
│   │       │   │   ├── MultiNodeInterface.template
│   │       │   │   ├── Node.h.template
│   │       │   │   ├── ParseException.cc.template
│   │       │   │   ├── ParseException.h.template
│   │       │   │   ├── SimpleNode.cc.template
│   │       │   │   ├── SimpleNode.h.template
│   │       │   │   ├── SimpleNodeImpl.template
│   │       │   │   ├── SimpleNodeInterface.template
│   │       │   │   ├── Token.cc.template
│   │       │   │   ├── Token.h.template
│   │       │   │   ├── TokenManager.h.template
│   │       │   │   ├── TokenManagerBoilerPlateMethods.template
│   │       │   │   ├── TokenMgrError.cc.template
│   │       │   │   ├── TokenMgrError.h.template
│   │       │   │   ├── TreeImplHeader.template
│   │       │   │   └── TreeIncludeHeader.template
│   │       │   └── gwt/
│   │       │       ├── JavaCharStream.template
│   │       │       ├── ParseException.template
│   │       │       ├── Provider.template
│   │       │       ├── SimpleCharStream.template
│   │       │       ├── StreamProvider.template
│   │       │       └── StringProvider.template
│   │       └── version.properties
│   └── test/
│       └── java/
│           └── org/
│               └── javacc/
│                   ├── JavaCCTestCase.java
│                   ├── jjdoc/
│                   │   └── test/
│                   │       └── JJDocMainTest.java
│                   ├── jjtree/
│                   │   └── JJTreeOptionsTest.java
│                   ├── parser/
│                   │   ├── ExpansionTest.java
│                   │   └── OptionsTest.java
│                   └── utils/
│                       └── OutputFileGeneratorTest.java
└── test/
    ├── TestTokenManagerUsesParser/
    │   └── TestTokenManagerUsesParser.jj
    ├── TestTokenManagerUsesParser2/
    │   └── TestTokenManagerUsesParser2.jj
    ├── build.xml
    ├── exceptions/
    │   ├── Parser.jj
    │   └── build.xml
    ├── gwtTemplate/
    │   └── Parser.jj
    ├── gwtUnicodeTemplate/
    │   └── Parser.jj
    ├── imports/
    │   ├── Parser.jj
    │   └── build.xml
    ├── java7features/
    │   └── Parser.jj
    ├── javaFileGeneration/
    │   ├── Parser.jj
    │   ├── README.txt
    │   ├── build.xml
    │   ├── expected/
    │   │   ├── generated.txt
    │   │   ├── no-keep-line/
    │   │   │   ├── ParseException.java
    │   │   │   ├── Parser.java
    │   │   │   ├── ParserConstants.java
    │   │   │   ├── ParserTokenManager.java
    │   │   │   ├── SimpleCharStream.java
    │   │   │   ├── Token.java
    │   │   │   └── TokenMgrError.java
    │   │   ├── non-static/
    │   │   │   ├── ParseException.java
    │   │   │   ├── Parser.java
    │   │   │   ├── ParserConstants.java
    │   │   │   ├── ParserTokenManager.java
    │   │   │   ├── SimpleCharStream.java
    │   │   │   ├── Token.java
    │   │   │   └── TokenMgrError.java
    │   │   ├── not-public/
    │   │   │   ├── ParseException.java
    │   │   │   ├── Parser.java
    │   │   │   ├── ParserConstants.java
    │   │   │   ├── ParserTokenManager.java
    │   │   │   ├── SimpleCharStream.java
    │   │   │   ├── Token.java
    │   │   │   └── TokenMgrError.java
    │   │   └── static/
    │   │       ├── ParseException.java
    │   │       ├── Parser.java
    │   │       ├── ParserConstants.java
    │   │       ├── ParserTokenManager.java
    │   │       ├── SimpleCharStream.java
    │   │       ├── Token.java
    │   │       └── TokenMgrError.java
    │   └── template.txt
    ├── javaFiles/
    │   ├── BaseSimpleCharStream.java
    │   ├── BaseSimpleNode.java
    │   ├── ChangedOptionsSimpleCharStream.java
    │   ├── IncompatSimpleNode.java
    │   ├── ModifiedOldSimpleCharStream.java
    │   ├── ModifiedSimpleCharStream.java
    │   ├── ModifiedSimpleNode.java
    │   ├── Multi.jjt
    │   ├── OldSimpleCharStream.java
    │   ├── Parser.jj
    │   ├── README.txt
    │   ├── StaticParser.jj
    │   ├── Tree.jjt
    │   └── build.xml
    ├── javacodeLA/
    │   ├── build.xml
    │   └── javacode.jj
    ├── lineNumbers/
    │   ├── JJTree.jjt
    │   └── build.xml
    ├── lom/
    │   ├── Parser.jj
    │   └── build.xml
    └── newToken/
        ├── OldToken.java
        ├── Parser.jj
        ├── ParserTokenFactory.jj
        └── build.xml
Download .txt
Showing preview only (206K chars total). Download the full file or copy to clipboard to get everything.
SYMBOL INDEX (2375 symbols across 238 files)

FILE: examples/GUIParsing/ParserVersion/CalcGUI.java
  class CalcGUI (line 32) | public class CalcGUI extends Frame implements CalcInputParserConstants {
    method CalcGUI (line 66) | public CalcGUI() {
    method handleEvent (line 106) | public boolean handleEvent(Event evt) {
    method print (line 229) | public static void print(double value) {
    method print (line 233) | public static void print(String image) {

FILE: examples/GUIParsing/ParserVersion/Main.java
  class Main (line 30) | public class Main {
    method main (line 32) | public static void main(String[] args) {

FILE: examples/GUIParsing/ParserVersion/ProducerConsumer.java
  class ProducerConsumer (line 30) | public class ProducerConsumer {
    method addToken (line 46) | synchronized public void addToken(Token token) {
    method getToken (line 56) | synchronized public Token getToken() {

FILE: examples/GUIParsing/ParserVersion/TokenCollector.java
  class TokenCollector (line 30) | public class TokenCollector implements TokenManager {
    method getNextToken (line 32) | public Token getNextToken() {

FILE: examples/GUIParsing/TokenMgrVersion/CalcGUI.java
  class CalcGUI (line 32) | public class CalcGUI extends Frame implements CalcInputParserConstants {
    method getCollector (line 67) | static final CharStream getCollector()
    method CalcGUI (line 91) | public CalcGUI() {
    method handleEvent (line 131) | public boolean handleEvent(Event evt) {
    method print (line 238) | public static void print(double value) {
    method print (line 242) | public static void print(String image) {
    method Error (line 246) | public static void Error(String image) {

FILE: examples/GUIParsing/TokenMgrVersion/CharCollector.java
  class CharCollector (line 30) | public class CharCollector implements CharStream {
    method ExpandBuff (line 39) | private final void ExpandBuff(boolean wrapAround)
    method FillBuff (line 70) | private final void FillBuff()
    method put (line 104) | synchronized public final void put(char c)
    method BeginToken (line 110) | public char BeginToken() throws java.io.IOException
    method readChar (line 120) | synchronized public final char readChar() throws java.io.IOException
    method getColumn (line 139) | public final int getColumn() {
    method getLine (line 148) | public final int getLine() {
    method getEndColumn (line 152) | public final int getEndColumn() {
    method getEndLine (line 156) | public final int getEndLine() {
    method getBeginColumn (line 160) | public final int getBeginColumn() {
    method getBeginLine (line 164) | public final int getBeginLine() {
    method backup (line 168) | public final void backup(int amount) {
    method CharCollector (line 175) | public CharCollector(int buffersize)
    method CharCollector (line 181) | public CharCollector()
    method Clear (line 187) | public void Clear()
    method GetImage (line 194) | public final String GetImage()
    method GetSuffix (line 203) | public final char[] GetSuffix(int len)
    method Done (line 219) | public void Done()
    method setTabSize (line 224) | public void setTabSize(int t) {}
    method getTabSize (line 225) | public int getTabSize() {
    method getTrackLineColumn (line 228) | public boolean getTrackLineColumn() {
    method setTrackLineColumn (line 232) | public void setTrackLineColumn(boolean tlc) {

FILE: examples/GUIParsing/TokenMgrVersion/Main.java
  class Main (line 30) | public class Main {
    method main (line 32) | public static void main(String[] args) {

FILE: examples/GUIParsing/TokenMgrVersion/MyLexer.java
  class MyLexer (line 35) | class MyLexer extends CalcInputParserTokenManager {
    method LexicalError (line 41) | protected void LexicalError() {
    method MyLexer (line 47) | public MyLexer(CalcGUI guiObj)

FILE: examples/Interpreter/ASTAddNode.java
  class ASTAddNode (line 31) | public class ASTAddNode extends SimpleNode {
    method ASTAddNode (line 32) | public ASTAddNode(int id) {
    method ASTAddNode (line 36) | public ASTAddNode(SPLParser p, int id) {
    method interpret (line 40) | public void interpret()

FILE: examples/Interpreter/ASTAndNode.java
  class ASTAndNode (line 31) | public class ASTAndNode extends SimpleNode {
    method ASTAndNode (line 32) | public ASTAndNode(int id) {
    method ASTAndNode (line 36) | public ASTAndNode(SPLParser p, int id) {
    method interpret (line 40) | public void interpret()

FILE: examples/Interpreter/ASTAssignment.java
  class ASTAssignment (line 31) | public class ASTAssignment extends SimpleNode {
    method ASTAssignment (line 32) | public ASTAssignment(int id) {
    method ASTAssignment (line 36) | public ASTAssignment(SPLParser p, int id) {
    method interpret (line 40) | public void interpret()

FILE: examples/Interpreter/ASTBitwiseAndNode.java
  class ASTBitwiseAndNode (line 31) | public class ASTBitwiseAndNode extends SimpleNode {
    method ASTBitwiseAndNode (line 32) | public ASTBitwiseAndNode(int id) {
    method ASTBitwiseAndNode (line 36) | public ASTBitwiseAndNode(SPLParser p, int id) {
    method interpret (line 40) | public void interpret()

FILE: examples/Interpreter/ASTBitwiseComplNode.java
  class ASTBitwiseComplNode (line 31) | public class ASTBitwiseComplNode extends SimpleNode {
    method ASTBitwiseComplNode (line 32) | public ASTBitwiseComplNode(int id) {
    method ASTBitwiseComplNode (line 36) | public ASTBitwiseComplNode(SPLParser p, int id) {
    method interpret (line 40) | public void interpret()

FILE: examples/Interpreter/ASTBitwiseOrNode.java
  class ASTBitwiseOrNode (line 31) | public class ASTBitwiseOrNode extends SimpleNode {
    method ASTBitwiseOrNode (line 32) | public ASTBitwiseOrNode(int id) {
    method ASTBitwiseOrNode (line 36) | public ASTBitwiseOrNode(SPLParser p, int id) {
    method interpret (line 40) | public void interpret()

FILE: examples/Interpreter/ASTBitwiseXorNode.java
  class ASTBitwiseXorNode (line 31) | public class ASTBitwiseXorNode extends SimpleNode {
    method ASTBitwiseXorNode (line 32) | public ASTBitwiseXorNode(int id) {
    method ASTBitwiseXorNode (line 36) | public ASTBitwiseXorNode(SPLParser p, int id) {
    method interpret (line 40) | public void interpret()

FILE: examples/Interpreter/ASTBlock.java
  class ASTBlock (line 31) | public class ASTBlock extends SimpleNode {
    method ASTBlock (line 32) | public ASTBlock(int id) {
    method ASTBlock (line 36) | public ASTBlock(SPLParser p, int id) {
    method interpret (line 40) | public void interpret()

FILE: examples/Interpreter/ASTCompilationUnit.java
  class ASTCompilationUnit (line 31) | public class ASTCompilationUnit extends SimpleNode {
    method ASTCompilationUnit (line 32) | public ASTCompilationUnit(int id) {
    method ASTCompilationUnit (line 36) | public ASTCompilationUnit(SPLParser p, int id) {
    method interpret (line 40) | public void interpret()

FILE: examples/Interpreter/ASTDivNode.java
  class ASTDivNode (line 31) | public class ASTDivNode extends SimpleNode {
    method ASTDivNode (line 32) | public ASTDivNode(int id) {
    method ASTDivNode (line 36) | public ASTDivNode(SPLParser p, int id) {
    method interpret (line 40) | public void interpret()

FILE: examples/Interpreter/ASTEQNode.java
  class ASTEQNode (line 31) | public class ASTEQNode extends SimpleNode {
    method ASTEQNode (line 32) | public ASTEQNode(int id) {
    method ASTEQNode (line 36) | public ASTEQNode(SPLParser p, int id) {
    method interpret (line 40) | public void interpret()

FILE: examples/Interpreter/ASTFalseNode.java
  class ASTFalseNode (line 31) | public class ASTFalseNode extends SimpleNode {
    method ASTFalseNode (line 32) | public ASTFalseNode(int id) {
    method ASTFalseNode (line 36) | public ASTFalseNode(SPLParser p, int id) {
    method interpret (line 40) | public void interpret()

FILE: examples/Interpreter/ASTGENode.java
  class ASTGENode (line 31) | public class ASTGENode extends SimpleNode {
    method ASTGENode (line 32) | public ASTGENode(int id) {
    method ASTGENode (line 36) | public ASTGENode(SPLParser p, int id) {
    method interpret (line 40) | public void interpret()

FILE: examples/Interpreter/ASTGTNode.java
  class ASTGTNode (line 34) | public class ASTGTNode extends SimpleNode {
    method ASTGTNode (line 35) | public ASTGTNode(int id) {
    method ASTGTNode (line 39) | public ASTGTNode(SPLParser p, int id) {
    method interpret (line 43) | public void interpret()

FILE: examples/Interpreter/ASTId.java
  class ASTId (line 31) | public class ASTId extends SimpleNode {
    method ASTId (line 35) | public ASTId(int id) {
    method ASTId (line 39) | public ASTId(SPLParser p, int id) {
    method interpret (line 43) | public void interpret()

FILE: examples/Interpreter/ASTIfStatement.java
  class ASTIfStatement (line 31) | public class ASTIfStatement extends SimpleNode {
    method ASTIfStatement (line 32) | public ASTIfStatement(int id) {
    method ASTIfStatement (line 36) | public ASTIfStatement(SPLParser p, int id) {
    method interpret (line 40) | public void interpret()

FILE: examples/Interpreter/ASTIntConstNode.java
  class ASTIntConstNode (line 31) | public class ASTIntConstNode extends SimpleNode {
    method ASTIntConstNode (line 35) | public ASTIntConstNode(int id) {
    method ASTIntConstNode (line 39) | public ASTIntConstNode(SPLParser p, int id) {
    method interpret (line 43) | public void interpret()

FILE: examples/Interpreter/ASTLENode.java
  class ASTLENode (line 31) | public class ASTLENode extends SimpleNode {
    method ASTLENode (line 32) | public ASTLENode(int id) {
    method ASTLENode (line 36) | public ASTLENode(SPLParser p, int id) {
    method interpret (line 40) | public void interpret()

FILE: examples/Interpreter/ASTLTNode.java
  class ASTLTNode (line 31) | public class ASTLTNode extends SimpleNode {
    method ASTLTNode (line 32) | public ASTLTNode(int id) {
    method ASTLTNode (line 36) | public ASTLTNode(SPLParser p, int id) {
    method interpret (line 40) | public void interpret()

FILE: examples/Interpreter/ASTModNode.java
  class ASTModNode (line 31) | public class ASTModNode extends SimpleNode {
    method ASTModNode (line 32) | public ASTModNode(int id) {
    method ASTModNode (line 36) | public ASTModNode(SPLParser p, int id) {
    method interpret (line 40) | public void interpret()

FILE: examples/Interpreter/ASTMulNode.java
  class ASTMulNode (line 31) | public class ASTMulNode extends SimpleNode {
    method ASTMulNode (line 32) | public ASTMulNode(int id) {
    method ASTMulNode (line 36) | public ASTMulNode(SPLParser p, int id) {
    method interpret (line 40) | public void interpret()

FILE: examples/Interpreter/ASTNENode.java
  class ASTNENode (line 32) | public class ASTNENode extends SimpleNode {
    method ASTNENode (line 33) | public ASTNENode(int id) {
    method ASTNENode (line 37) | public ASTNENode(SPLParser p, int id) {
    method interpret (line 41) | public void interpret()

FILE: examples/Interpreter/ASTNotNode.java
  class ASTNotNode (line 32) | public class ASTNotNode extends SimpleNode {
    method ASTNotNode (line 33) | public ASTNotNode(int id) {
    method ASTNotNode (line 37) | public ASTNotNode(SPLParser p, int id) {
    method interpret (line 41) | public void interpret()

FILE: examples/Interpreter/ASTOrNode.java
  class ASTOrNode (line 31) | public class ASTOrNode extends SimpleNode {
    method ASTOrNode (line 32) | public ASTOrNode(int id) {
    method ASTOrNode (line 36) | public ASTOrNode(SPLParser p, int id) {
    method interpret (line 40) | public void interpret()

FILE: examples/Interpreter/ASTReadStatement.java
  class ASTReadStatement (line 33) | public class ASTReadStatement extends SimpleNode {
    method ASTReadStatement (line 36) | public ASTReadStatement(int id) {
    method ASTReadStatement (line 40) | public ASTReadStatement(SPLParser p, int id) {
    method interpret (line 44) | public void interpret() {

FILE: examples/Interpreter/ASTStatementExpression.java
  class ASTStatementExpression (line 31) | public class ASTStatementExpression extends SimpleNode {
    method ASTStatementExpression (line 32) | public ASTStatementExpression(int id) {
    method ASTStatementExpression (line 36) | public ASTStatementExpression(SPLParser p, int id) {
    method interpret (line 40) | public void interpret()

FILE: examples/Interpreter/ASTSubtractNode.java
  class ASTSubtractNode (line 34) | public class ASTSubtractNode extends SimpleNode {
    method ASTSubtractNode (line 35) | public ASTSubtractNode(int id) {
    method ASTSubtractNode (line 39) | public ASTSubtractNode(SPLParser p, int id) {
    method interpret (line 43) | public void interpret()

FILE: examples/Interpreter/ASTTrueNode.java
  class ASTTrueNode (line 34) | public class ASTTrueNode extends SimpleNode {
    method ASTTrueNode (line 35) | public ASTTrueNode(int id) {
    method ASTTrueNode (line 39) | public ASTTrueNode(SPLParser p, int id) {
    method interpret (line 43) | public void interpret()

FILE: examples/Interpreter/ASTVarDeclaration.java
  class ASTVarDeclaration (line 34) | public class ASTVarDeclaration extends SimpleNode
    method ASTVarDeclaration (line 40) | public ASTVarDeclaration(int id) {
    method ASTVarDeclaration (line 44) | public ASTVarDeclaration(SPLParser p, int id) {
    method interpret (line 48) | public void interpret()

FILE: examples/Interpreter/ASTWhileStatement.java
  class ASTWhileStatement (line 34) | public class ASTWhileStatement extends SimpleNode {
    method ASTWhileStatement (line 35) | public ASTWhileStatement(int id) {
    method ASTWhileStatement (line 39) | public ASTWhileStatement(SPLParser p, int id) {
    method interpret (line 43) | public void interpret()

FILE: examples/Interpreter/ASTWriteStatement.java
  class ASTWriteStatement (line 34) | public class ASTWriteStatement extends SimpleNode {
    method ASTWriteStatement (line 37) | public ASTWriteStatement(int id) {
    method ASTWriteStatement (line 41) | public ASTWriteStatement(SPLParser p, int id) {
    method interpret (line 45) | public void interpret()

FILE: examples/Interpreter/MyNode.java
  class MyNode (line 37) | public class MyNode
    method interpret (line 47) | public void interpret()
    method setIn (line 58) | public static void setIn(Reader in) {
    method setOut (line 65) | public static void setOut(Writer out) {

FILE: examples/Interpreter/Node.java
  type Node (line 35) | public interface Node {
    method jjtOpen (line 39) | public void jjtOpen();
    method jjtClose (line 43) | public void jjtClose();
    method jjtSetParent (line 47) | public void jjtSetParent(Node n);
    method jjtGetParent (line 49) | public Node jjtGetParent();
    method jjtAddChild (line 53) | public void jjtAddChild(Node n, int i);
    method jjtGetChild (line 57) | public Node jjtGetChild(int i);
    method jjtGetNumChildren (line 60) | int jjtGetNumChildren();
    method interpret (line 65) | public void interpret();

FILE: examples/Interpreter/SPL.java
  class SPL (line 32) | public class SPL {
    method main (line 35) | public static void main(String args[]) {

FILE: examples/JJTreeExamples/cpp/ASTMyID.cc
  type NAMESPACE (line 10) | namespace @NAMESPACE@ {
    function JAVACC_STRING_TYPE (line 25) | JAVACC_STRING_TYPE ASTMyID::toString() const {

FILE: examples/JJTreeExamples/cpp/ASTMyID.h
  function namespace (line 12) | namespace @NAMESPACE@ {

FILE: examples/JJTreeExamples/cpp/ASTMyOtherID.cc
  type NAMESPACE (line 11) | namespace @NAMESPACE@ {
    function JAVACC_STRING_TYPE (line 26) | JAVACC_STRING_TYPE

FILE: examples/JJTreeExamples/cpp/ASTMyOtherID.h
  function namespace (line 13) | namespace @NAMESPACE@ {

FILE: examples/JJTreeExamples/cpp/EG4DumpVisitor.cc
  type NAMESPACE (line 16) | namespace @NAMESPACE@ {
    function JAVACC_SIMPLE_STRING (line 23) | JAVACC_SIMPLE_STRING EG4DumpVisitor::indentString() const {

FILE: examples/JJTreeExamples/cpp/EG4DumpVisitor.h
  function namespace (line 13) | namespace @NAMESPACE@ {

FILE: examples/JJTreeExamples/cpp/MyErrorHandler.cc
  type NAMESPACE (line 10) | namespace @NAMESPACE@ {

FILE: examples/JJTreeExamples/cpp/MyErrorHandler.h
  function namespace (line 12) | namespace @NAMESPACE@ {

FILE: examples/JJTreeExamples/cpp/eg1.cc
  function JAVACC_STRING_TYPE (line 14) | JAVACC_STRING_TYPE ReadFileFully(char *file_name) {
  function main (line 18) | int main(int argc, char** argv) {

FILE: examples/JJTreeExamples/cpp/eg2.cc
  function JAVACC_STRING_TYPE (line 14) | JAVACC_STRING_TYPE ReadFileFully(char *file_name) {
  function main (line 29) | int main(int argc, char** argv) {

FILE: examples/JJTreeExamples/cpp/eg3.cc
  function JAVACC_STRING_TYPE (line 14) | JAVACC_STRING_TYPE ReadFileFully(char *file_name) {
  function main (line 29) | int main(int argc, char** argv) {

FILE: examples/JJTreeExamples/cpp/eg4.cc
  function JAVACC_STRING_TYPE (line 15) | JAVACC_STRING_TYPE ReadFileFully(char *file_name) {
  function main (line 31) | int main(int argc, char** argv) {

FILE: examples/JJTreeExamples/java/ASTMyID.java
  class ASTMyID (line 33) | public class ASTMyID extends SimpleNode {
    method ASTMyID (line 40) | public ASTMyID(int id) {
    method setName (line 49) | public void setName(String n) {
    method toString (line 57) | public String toString() {

FILE: examples/JJTreeExamples/java/ASTMyOtherID.java
  class ASTMyOtherID (line 1) | public
    method ASTMyOtherID (line 4) | public ASTMyOtherID(int id) {
    method ASTMyOtherID (line 8) | public ASTMyOtherID(Eg4 p, int id) {
    method setName (line 16) | public void setName(String n) {
    method toString (line 24) | public String toString() {
    method jjtAccept (line 29) | public Object jjtAccept(Eg4Visitor visitor, Object data) {

FILE: examples/JJTreeExamples/java/Eg4DumpVisitor.java
  class Eg4DumpVisitor (line 48) | public class Eg4DumpVisitor implements Eg4Visitor
    method indentString (line 52) | private String indentString() {
    method visit (line 60) | public Object visit(SimpleNode node, Object data) {
    method visit (line 69) | public Object visit(ASTStart node, Object data) {
    method visit (line 77) | public Object visit(ASTAdd node, Object data) {
    method visit (line 85) | public Object visit(ASTMult node, Object data) {
    method visit (line 93) | public Object visit(ASTMyOtherID node, Object data) {
    method visit (line 101) | public Object visit(ASTInteger node, Object data) {

FILE: examples/JavaGrammars/1.5/JavaGenerics.java
  class JavaGenerics (line 3) | public class JavaGenerics
    method jriat (line 7) | public void jriat()

FILE: examples/JavaGrammars/1.5/Main.java
  class Main (line 3) | class Main
    method parseFilesFromFileList (line 5) | private static int parseFilesFromFileList(String fileName)
    method main (line 33) | public static void main(String[] args) throws Throwable

FILE: examples/JavaGrammars/1.5/MyToken.java
  class MyToken (line 1) | public class MyToken extends Token
    method MyToken (line 6) | public MyToken(int kind, String image)
    method newToken (line 18) | public static final Token newToken(int ofKind, String tokenImage)

FILE: examples/JavaGrammars/1.5/Test.java
  class Test (line 3) | class Test
    method main (line 5) | public static void main(String[] args) throws Exception

FILE: examples/JavaGrammars/Test.java
  class Test (line 3) | class Test
    method main (line 5) | public static void main(String[] args) throws Exception

FILE: examples/JavaGrammars/cpp/HelloWorld.java
  class HelloWorld (line 2) | public class HelloWorld {
    method main (line 3) | public static void main(String[] args) {

FILE: examples/JavaGrammars/cpp/allmain.cc
  function JAVACC_STRING_TYPE (line 14) | JAVACC_STRING_TYPE ReadFileFully(char *file_name) {
  function main (line 29) | int main(int argc, char **argv) {

FILE: examples/JavaGrammars/cpp/main.cc
  function JAVACC_STRING_TYPE (line 15) | JAVACC_STRING_TYPE ReadFileFully(char *file_name) {
  function main (line 30) | int main(int argc, char **argv) {

FILE: examples/JavaGrammars/cpp/myparser.h
  function namespace (line 5) | namespace java { namespace parser {

FILE: examples/JavaGrammars/cpp/mytm.h
  function class (line 1) | class MyTm {

FILE: examples/JavaGrammars/cpp/token_base.h
  function class (line 1) | class TokenBase { }

FILE: examples/Obfuscator/Globals.java
  class Globals (line 33) | public class Globals {
    method map (line 55) | static String map(String str) {

FILE: examples/Obfuscator/Main.java
  class Main (line 33) | public class Main extends Globals {
    method main (line 41) | public static void main(String[] args) throws FileNotFoundException {

FILE: examples/Obfuscator/Obfuscator.java
  class Obfuscator (line 33) | public class Obfuscator extends Globals {
    method javaFile (line 51) | static boolean javaFile(String name) {
    method nextJavaFile (line 64) | static void nextJavaFile() {
    method start (line 98) | static public void start() {
    method createOutputFile (line 135) | static void createOutputFile() {
    method printOutputFile (line 163) | static void printOutputFile(Token first) {
    method addUnicodeEscapes (line 194) | static String addUnicodeEscapes(String str) {
    method createMainClass (line 213) | static void createMainClass() {

FILE: examples/Obfuscator/input/package1/Main.java
  class Main (line 31) | public class Main {
    method main (line 33) | public static void main(String[] args) {

FILE: examples/Obfuscator/input/package2/Incr.java
  class Incr (line 31) | public class Incr {
    method incr (line 39) | static public int incr() {

FILE: examples/Transformer/ASTCompilationUnit.java
  class ASTCompilationUnit (line 34) | public class ASTCompilationUnit extends SimpleNode {
    method ASTCompilationUnit (line 35) | ASTCompilationUnit(int id) {
    method process (line 42) | public void process (PrintWriter ostr) {

FILE: examples/Transformer/ASTSpecialBlock.java
  class ASTSpecialBlock (line 34) | public class ASTSpecialBlock extends SimpleNode {
    method ASTSpecialBlock (line 35) | ASTSpecialBlock(int id) {
    method process (line 42) | public void process (PrintWriter ostr) {

FILE: examples/Transformer/SimpleNode.java
  class SimpleNode (line 35) | public class SimpleNode implements Node {
    method SimpleNode (line 40) | public SimpleNode(int i) {
    method getId (line 44) | public int getId() {
    method jjtOpen (line 48) | public void jjtOpen() {
    method jjtClose (line 51) | public void jjtClose() {
    method jjtSetParent (line 54) | public void jjtSetParent(Node n) { parent = n; }
    method jjtGetParent (line 55) | public Node jjtGetParent() { return parent; }
    method jjtAddChild (line 57) | public void jjtAddChild(Node n, int i) {
    method jjtGetChild (line 68) | public Node jjtGetChild(int i) {
    method jjtGetNumChildren (line 72) | public int jjtGetNumChildren() {
    method toString (line 82) | public String toString() { return ToyParserTreeConstants.jjtNodeName[i...
    method toString (line 83) | public String toString(String prefix) { return prefix + toString(); }
    method dump (line 88) | public void dump(String prefix) {
    method setFirstToken (line 103) | public void setFirstToken(Token t) { begin = t; }
    method setLastToken (line 104) | public void setLastToken(Token t) { end = t; }
    method process (line 106) | public void process (PrintWriter ostr) {
    method print (line 114) | protected void print(Token t, PrintWriter ostr) {
    method addUnicodeEscapes (line 126) | private String addUnicodeEscapes(String str) {

FILE: examples/VTransformer/AddAcceptVisitor.java
  class AddAcceptVisitor (line 34) | public class AddAcceptVisitor extends UnparseVisitor
    method AddAcceptVisitor (line 37) | public AddAcceptVisitor(PrintStream o)
    method visit (line 43) | public Object visit(ASTClassBodyDeclaration node, Object data)

FILE: examples/VTransformer/Main.java
  class Main (line 34) | public class Main
    method main (line 36) | public static void main(String args[]) {

FILE: examples/VTransformer/SimpleNode.java
  class SimpleNode (line 32) | public class SimpleNode implements Node {
    method SimpleNode (line 40) | public SimpleNode(int i) {
    method SimpleNode (line 44) | public SimpleNode(JavaParser p, int i) {
    method jjtCreate (line 49) | public static Node jjtCreate(JavaParser p, int id) {
    method getId (line 53) | public int getId() {
    method jjtOpen (line 57) | public void jjtOpen() {
    method jjtClose (line 61) | public void jjtClose() {
    method getFirstToken (line 65) | public Token getFirstToken() { return first; }
    method getLastToken (line 66) | public Token getLastToken() { return last; }
    method jjtSetParent (line 68) | public void jjtSetParent(Node n) { parent = n; }
    method jjtGetParent (line 69) | public Node jjtGetParent() { return parent; }
    method jjtAddChild (line 71) | public void jjtAddChild(Node n, int i) {
    method jjtGetChild (line 82) | public Node jjtGetChild(int i) {
    method jjtGetNumChildren (line 86) | public int jjtGetNumChildren() {
    method jjtAccept (line 91) | public Object jjtAccept(JavaParserVisitor visitor, Object data) {
    method childrenAccept (line 96) | public Object childrenAccept(JavaParserVisitor visitor, Object data) {
    method toString (line 111) | public String toString() { return JavaParserTreeConstants.jjtNodeName[...
    method toString (line 112) | public String toString(String prefix) { return prefix + toString(); }
    method dump (line 117) | public void dump(String prefix) {

FILE: examples/VTransformer/UnparseVisitor.java
  class UnparseVisitor (line 34) | public class UnparseVisitor implements JavaParserVisitor
    method UnparseVisitor (line 40) | public UnparseVisitor(PrintStream o)
    method print (line 46) | public Object print(SimpleNode node, Object data) {
    method print (line 71) | protected void print(Token t) {
    method addUnicodeEscapes (line 84) | private String addUnicodeEscapes(String str) {
    method visit (line 101) | public Object visit(SimpleNode node, Object data)
    method visit (line 106) | public Object visit(ASTCompilationUnit node, Object data)
    method visit (line 111) | public Object visit(ASTPackageDeclaration node, Object data)
    method visit (line 116) | public Object visit(ASTImportDeclaration node, Object data)
    method visit (line 121) | public Object visit(ASTTypeDeclaration node, Object data)
    method visit (line 126) | public Object visit(ASTClassDeclaration node, Object data)
    method visit (line 131) | public Object visit(ASTUnmodifiedClassDeclaration node, Object data)
    method visit (line 136) | public Object visit(ASTClassBody node, Object data)
    method visit (line 141) | public Object visit(ASTNestedClassDeclaration node, Object data)
    method visit (line 146) | public Object visit(ASTClassBodyDeclaration node, Object data)
    method visit (line 151) | public Object visit(ASTMethodDeclarationLookahead node, Object data)
    method visit (line 156) | public Object visit(ASTInterfaceDeclaration node, Object data)
    method visit (line 161) | public Object visit(ASTNestedInterfaceDeclaration node, Object data)
    method visit (line 166) | public Object visit(ASTUnmodifiedInterfaceDeclaration node, Object data)
    method visit (line 171) | public Object visit(ASTInterfaceMemberDeclaration node, Object data)
    method visit (line 176) | public Object visit(ASTFieldDeclaration node, Object data)
    method visit (line 181) | public Object visit(ASTVariableDeclarator node, Object data)
    method visit (line 186) | public Object visit(ASTVariableDeclaratorId node, Object data)
    method visit (line 191) | public Object visit(ASTVariableInitializer node, Object data)
    method visit (line 196) | public Object visit(ASTArrayInitializer node, Object data)
    method visit (line 201) | public Object visit(ASTMethodDeclaration node, Object data)
    method visit (line 206) | public Object visit(ASTMethodDeclarator node, Object data)
    method visit (line 211) | public Object visit(ASTFormalParameters node, Object data)
    method visit (line 216) | public Object visit(ASTFormalParameter node, Object data)
    method visit (line 221) | public Object visit(ASTConstructorDeclaration node, Object data)
    method visit (line 226) | public Object visit(ASTExplicitConstructorInvocation node, Object data)
    method visit (line 231) | public Object visit(ASTInitializer node, Object data)
    method visit (line 236) | public Object visit(ASTType node, Object data)
    method visit (line 241) | public Object visit(ASTPrimitiveType node, Object data)
    method visit (line 246) | public Object visit(ASTResultType node, Object data)
    method visit (line 251) | public Object visit(ASTName node, Object data)
    method visit (line 256) | public Object visit(ASTNameList node, Object data)
    method visit (line 261) | public Object visit(ASTExpression node, Object data)
    method visit (line 266) | public Object visit(ASTAssignmentOperator node, Object data)
    method visit (line 271) | public Object visit(ASTConditionalExpression node, Object data)
    method visit (line 276) | public Object visit(ASTConditionalOrExpression node, Object data)
    method visit (line 281) | public Object visit(ASTConditionalAndExpression node, Object data)
    method visit (line 286) | public Object visit(ASTInclusiveOrExpression node, Object data)
    method visit (line 291) | public Object visit(ASTExclusiveOrExpression node, Object data)
    method visit (line 296) | public Object visit(ASTAndExpression node, Object data)
    method visit (line 301) | public Object visit(ASTEqualityExpression node, Object data)
    method visit (line 306) | public Object visit(ASTInstanceOfExpression node, Object data)
    method visit (line 311) | public Object visit(ASTRelationalExpression node, Object data)
    method visit (line 316) | public Object visit(ASTShiftExpression node, Object data)
    method visit (line 321) | public Object visit(ASTAdditiveExpression node, Object data)
    method visit (line 326) | public Object visit(ASTMultiplicativeExpression node, Object data)
    method visit (line 331) | public Object visit(ASTUnaryExpression node, Object data)
    method visit (line 336) | public Object visit(ASTPreIncrementExpression node, Object data)
    method visit (line 341) | public Object visit(ASTPreDecrementExpression node, Object data)
    method visit (line 346) | public Object visit(ASTUnaryExpressionNotPlusMinus node, Object data)
    method visit (line 351) | public Object visit(ASTCastLookahead node, Object data)
    method visit (line 356) | public Object visit(ASTPostfixExpression node, Object data)
    method visit (line 361) | public Object visit(ASTCastExpression node, Object data)
    method visit (line 366) | public Object visit(ASTPrimaryExpression node, Object data)
    method visit (line 371) | public Object visit(ASTPrimaryPrefix node, Object data)
    method visit (line 376) | public Object visit(ASTPrimarySuffix node, Object data)
    method visit (line 381) | public Object visit(ASTLiteral node, Object data)
    method visit (line 386) | public Object visit(ASTBooleanLiteral node, Object data)
    method visit (line 391) | public Object visit(ASTNullLiteral node, Object data)
    method visit (line 396) | public Object visit(ASTArguments node, Object data)
    method visit (line 401) | public Object visit(ASTArgumentList node, Object data)
    method visit (line 406) | public Object visit(ASTAllocationExpression node, Object data)
    method visit (line 411) | public Object visit(ASTArrayDimsAndInits node, Object data)
    method visit (line 416) | public Object visit(ASTStatement node, Object data)
    method visit (line 421) | public Object visit(ASTLabeledStatement node, Object data)
    method visit (line 426) | public Object visit(ASTBlock node, Object data)
    method visit (line 431) | public Object visit(ASTBlockStatement node, Object data)
    method visit (line 436) | public Object visit(ASTLocalVariableDeclaration node, Object data)
    method visit (line 441) | public Object visit(ASTEmptyStatement node, Object data)
    method visit (line 446) | public Object visit(ASTStatementExpression node, Object data)
    method visit (line 451) | public Object visit(ASTSwitchStatement node, Object data)
    method visit (line 456) | public Object visit(ASTSwitchLabel node, Object data)
    method visit (line 461) | public Object visit(ASTIfStatement node, Object data)
    method visit (line 466) | public Object visit(ASTWhileStatement node, Object data)
    method visit (line 471) | public Object visit(ASTDoStatement node, Object data)
    method visit (line 476) | public Object visit(ASTForStatement node, Object data)
    method visit (line 481) | public Object visit(ASTForInit node, Object data)
    method visit (line 486) | public Object visit(ASTStatementExpressionList node, Object data)
    method visit (line 491) | public Object visit(ASTForUpdate node, Object data)
    method visit (line 496) | public Object visit(ASTBreakStatement node, Object data)
    method visit (line 501) | public Object visit(ASTContinueStatement node, Object data)
    method visit (line 506) | public Object visit(ASTReturnStatement node, Object data)
    method visit (line 511) | public Object visit(ASTThrowStatement node, Object data)
    method visit (line 516) | public Object visit(ASTSynchronizedStatement node, Object data)
    method visit (line 521) | public Object visit(ASTTryStatement node, Object data)

FILE: grammars/BackupCharStream.java
  class BackupCharStream (line 13) | public final class BackupCharStream implements CharStream
    class Buffer (line 16) | private static final class Buffer
      method Buffer (line 24) | public Buffer (int n)
      method expand (line 34) | public void expand (int n)
    method swapBuf (line 72) | private final void swapBuf ()
    method FillBuff (line 79) | private final void FillBuff () throws java.io.IOException
    method BeginToken (line 139) | public final char BeginToken () throws java.io.IOException
    method UpdateLineColumn (line 149) | private final void UpdateLineColumn (char c)
    method readChar (line 189) | public final char readChar () throws java.io.IOException
    method getColumn (line 222) | public final int getColumn ()
    method getLine (line 232) | public final int getLine ()
    method getEndColumn (line 237) | public final int getEndColumn ()
    method getEndLine (line 242) | public final int getEndLine ()
    method getBeginColumn (line 247) | public final int getBeginColumn ()
    method getBeginLine (line 252) | public final int getBeginLine ()
    method backup (line 257) | public final void backup (int amount)
    method BackupCharStream (line 273) | public BackupCharStream (java.io.Reader dstream)
    method BackupCharStream (line 278) | public BackupCharStream (java.io.Reader dstream, int startline,
    method BackupCharStream (line 284) | public BackupCharStream (java.io.Reader dstream, int startline,
    method ReInit (line 290) | public void ReInit (java.io.Reader dstream, int startline,
    method ReInit (line 313) | public void ReInit (java.io.Reader dstream, int startline,
    method ReInit (line 319) | public void ReInit (java.io.Reader dstream)
    method BackupCharStream (line 324) | public BackupCharStream (java.io.InputStream dstream, int startline,
    method BackupCharStream (line 330) | public BackupCharStream (java.io.InputStream dstream, int startline,
    method ReInit (line 336) | public void ReInit (java.io.InputStream dstream, int startline,
    method ReInit (line 343) | public void ReInit (java.io.InputStream dstream, int startline,
    method GetImage (line 349) | public final String GetImage ()
    method GetSuffix (line 369) | public final char[] GetSuffix (int len)
    method Done (line 388) | public void Done ()

FILE: old_but_saved/NfaStateTest.java
  class NfaStateTest (line 24) | public class NfaStateTest extends JavaCCTestCase {
    method NfaStateTest (line 30) | public NfaStateTest(String name) {
    method setUp (line 38) | protected void setUp() throws Exception {
    method tearDown (line 48) | protected void tearDown() throws Exception {
    method setupState (line 52) | protected void setupState() throws Exception {
    method testReInit (line 64) | public void testReInit() {
    method testHasTransitions (line 70) | public void testHasTransitions() {
    method testComputeClosures (line 76) | public void testComputeClosures() {
    method testCanStartNfaUsingAscii (line 82) | public void testCanStartNfaUsingAscii() {
    method testGetFirstValidPos (line 88) | public void testGetFirstValidPos() {
    method testMoveFrom (line 94) | public void testMoveFrom() {
    method testMoveFromSet (line 100) | public void testMoveFromSet() {
    method testMoveFromSetForRegEx (line 108) | public void testMoveFromSetForRegEx() {
    method testGenerateInitMoves (line 115) | public void testGenerateInitMoves() {
    method testDumpStateSets (line 122) | public void testDumpStateSets() {
    method testDumpStateSetsInitialised (line 133) | public void testDumpStateSetsInitialised() throws Exception {
    method testDumpCharAndRangeMoves (line 150) | public void testDumpCharAndRangeMoves() throws Exception {
    method testDumpCharAndRangeMovesInitialised (line 171) | public void testDumpCharAndRangeMovesInitialised() throws Exception {
    method testDumpNonAsciiMoveMethods (line 195) | public void testDumpNonAsciiMoveMethods() {
    method testDumpNonAsciiMoveMethodsInitialised (line 206) | public void testDumpNonAsciiMoveMethodsInitialised() throws Exception {
    method testDumpMoveNfa (line 395) | public void testDumpMoveNfa() {
    method testDumpMoveNfaInitialised (line 443) | public void testDumpMoveNfaInitialised() throws Exception {
    method testDumpStatesForState (line 457) | public void testDumpStatesForState() throws Exception {
    method testDumpStatesForStateInitialised (line 468) | public void testDumpStatesForStateInitialised() throws Exception {
    method testDumpStatesForKind (line 557) | public void testDumpStatesForKind() {
    method testDumpStatesForKindInitialised (line 568) | public void testDumpStatesForKindInitialised() throws Exception {
    method testReInit1 (line 673) | public void testReInit1() {

FILE: src/main/java/JavaCCInterpreter.java
  class JavaCCInterpreter (line 6) | public class JavaCCInterpreter {
    method main (line 7) | public static void main(String[] args) throws Exception {
    method runTokenizer (line 45) | public void runTokenizer(String grammar, String input) {
    method tokenize (line 71) | public static void tokenize(TokenizerData td, String input) {

FILE: src/main/java/javacc.java
  class javacc (line 33) | public final class javacc {
    method javacc (line 34) | private javacc() {}
    method main (line 35) | public static void main(String[] args) throws Exception {

FILE: src/main/java/jjdoc.java
  class jjdoc (line 33) | public final class jjdoc {
    method jjdoc (line 35) | private jjdoc() {}
    method main (line 37) | public static void main(String[] args) throws Exception {

FILE: src/main/java/jjtree.java
  class jjtree (line 33) | public final class jjtree {
    method jjtree (line 35) | private jjtree() {}
    method main (line 37) | public static void main(String[] args) {

FILE: src/main/java/org/javacc/Version.java
  class Version (line 41) | public class Version {
    method Version (line 42) | private Version() {}

FILE: src/main/java/org/javacc/jjdoc/BNFGenerator.java
  class BNFGenerator (line 35) | public class BNFGenerator implements Generator {
    method get_id (line 41) | protected String get_id(String nt) {
    method create_output_stream (line 50) | protected PrintWriter create_output_stream() {
    method println (line 88) | private void println(String s) {
    method text (line 92) | public void text(String s) {
    method print (line 97) | public void print(String s) {
    method documentStart (line 101) | public void documentStart() {
    method documentEnd (line 104) | public void documentEnd() {
    method specialTokens (line 107) | public void specialTokens(String s) {
    method nonterminalsStart (line 115) | public void nonterminalsStart() { }
    method nonterminalsEnd (line 116) | public void nonterminalsEnd() { }
    method tokensStart (line 117) | @Override public void tokensStart() {}
    method tokensEnd (line 118) | @Override public void tokensEnd() {}
    method javacode (line 119) | public void javacode(JavaCodeProduction jp) { }
    method cppcode (line 120) | public void cppcode(CppCodeProduction cp) { }
    method expansionEnd (line 121) | public void expansionEnd(Expansion e, boolean first) { }
    method nonTerminalStart (line 122) | public void nonTerminalStart(NonTerminal nt) { }
    method nonTerminalEnd (line 123) | public void nonTerminalEnd(NonTerminal nt) { }
    method productionStart (line 124) | public void productionStart(NormalProduction np) {
    method productionEnd (line 128) | public void productionEnd(NormalProduction np) {
    method expansionStart (line 131) | public void expansionStart(Expansion e, boolean first) {
    method reStart (line 136) | public void reStart(RegularExpression r) {
    method reEnd (line 141) | public void reEnd(RegularExpression r) {
    method debug (line 145) | public void debug(String message) { System.err.println(message); }
    method info (line 146) | public void info(String message) { System.err.println(message); }
    method warn (line 147) | public void warn(String message) { System.err.println(message); }
    method error (line 148) | public void error(String message) { System.err.println(message); }
    method handleTokenProduction (line 150) | @Override

FILE: src/main/java/org/javacc/jjdoc/Generator.java
  type Generator (line 46) | public interface Generator {
    method text (line 52) | void text(String s);
    method print (line 58) | void print(String s);
    method documentStart (line 63) | void documentStart();
    method documentEnd (line 68) | void documentEnd();
    method specialTokens (line 74) | void specialTokens(String s);
    method handleTokenProduction (line 78) | void handleTokenProduction(TokenProduction tp);
    method nonterminalsStart (line 95) | void nonterminalsStart();
    method nonterminalsEnd (line 100) | void nonterminalsEnd();
    method tokensStart (line 105) | void tokensStart();
    method tokensEnd (line 110) | void tokensEnd();
    method javacode (line 116) | void javacode(JavaCodeProduction jp);
    method cppcode (line 122) | void cppcode(CppCodeProduction cp);
    method productionStart (line 128) | void productionStart(NormalProduction np);
    method productionEnd (line 134) | void productionEnd(NormalProduction np);
    method expansionStart (line 141) | void expansionStart(Expansion e, boolean first);
    method expansionEnd (line 148) | void expansionEnd(Expansion e, boolean first);
    method nonTerminalStart (line 154) | void nonTerminalStart(NonTerminal nt);
    method nonTerminalEnd (line 160) | void nonTerminalEnd(NonTerminal nt);
    method reStart (line 166) | void reStart(RegularExpression re);
    method reEnd (line 172) | void reEnd(RegularExpression re);
    method debug (line 178) | void debug(String message);
    method info (line 184) | void info(String message);
    method warn (line 190) | void warn(String message);
    method error (line 196) | void error(String message);

FILE: src/main/java/org/javacc/jjdoc/HTMLGenerator.java
  class HTMLGenerator (line 44) | public class HTMLGenerator extends TextGenerator {
    method HTMLGenerator (line 48) | public HTMLGenerator() {
    method get_id (line 52) | protected String get_id(String nt) {
    method println (line 61) | private void println(String s) {
    method text (line 65) | public void text(String s) {
    method print (line 81) | public void print(String s) {
    method documentStart (line 85) | public void documentStart() {
    method documentEnd (line 103) | public void documentEnd() {
    method specialTokens (line 114) | public void specialTokens(String s) {
    method handleTokenProduction (line 126) | @Override
    method nonterminalsStart (line 140) | public void nonterminalsStart() {
    method nonterminalsEnd (line 146) | public void nonterminalsEnd() {
    method tokensStart (line 152) | public void tokensStart() {
    method tokensEnd (line 156) | public void tokensEnd() {
    method javacode (line 160) | public void javacode(JavaCodeProduction jp) {
    method cppcode (line 166) | public void cppcode(CppCodeProduction cp) {
    method productionStart (line 172) | public void productionStart(NormalProduction np) {
    method productionEnd (line 183) | public void productionEnd(NormalProduction np) {
    method expansionStart (line 190) | public void expansionStart(Expansion e, boolean first) {
    method expansionEnd (line 198) | public void expansionEnd(Expansion e, boolean first) {
    method nonTerminalStart (line 203) | public void nonTerminalStart(NonTerminal nt) {
    method nonTerminalEnd (line 206) | public void nonTerminalEnd(NonTerminal nt) {
    method reStart (line 210) | public void reStart(RegularExpression r) {
    method reEnd (line 212) | public void reEnd(RegularExpression r) {

FILE: src/main/java/org/javacc/jjdoc/JJDoc.java
  class JJDoc (line 68) | public class JJDoc extends JJDocGlobals {
    method start (line 70) | static void start() {
    method getPrecedingSpecialToken (line 77) | private static Token getPrecedingSpecialToken(Token tok) {
    method emitTopLevelSpecialTokens (line 84) | private static void emitTopLevelSpecialTokens(Token tok, Generator gen) {
    method emitTokenProductions (line 113) | private static void emitTokenProductions(Generator gen, List prods) {
    method getStandardTokenProductionText (line 133) | public static String getStandardTokenProductionText(TokenProduction tp) {
    method emitNormalProductions (line 172) | private static void emitNormalProductions(Generator gen, List prods) {
    method emitExpansionTree (line 203) | private static void emitExpansionTree(Expansion exp, Generator gen) {
    method emitExpansionAction (line 230) | private static void emitExpansionAction(Action a, Generator gen) {
    method emitExpansionChoice (line 232) | private static void emitExpansionChoice(Choice c, Generator gen) {
    method emitExpansionLookahead (line 241) | private static void emitExpansionLookahead(Lookahead l, Generator gen) {
    method emitExpansionNonTerminal (line 243) | private static void emitExpansionNonTerminal(NonTerminal nt, Generator...
    method emitExpansionOneOrMore (line 248) | private static void emitExpansionOneOrMore(OneOrMore o, Generator gen) {
    method emitExpansionRegularExpression (line 253) | private static void emitExpansionRegularExpression(RegularExpression r,
    method emitExpansionSequence (line 262) | private static void emitExpansionSequence(Sequence s, Generator gen) {
    method emitExpansionTryBlock (line 283) | private static void emitExpansionTryBlock(TryBlock t, Generator gen) {
    method emitExpansionZeroOrMore (line 293) | private static void emitExpansionZeroOrMore(ZeroOrMore z, Generator ge...
    method emitExpansionZeroOrOne (line 298) | private static void emitExpansionZeroOrOne(ZeroOrOne z, Generator gen) {
    method emitRE (line 303) | public static String emitRE(RegularExpression re) {

FILE: src/main/java/org/javacc/jjdoc/JJDocGlobals.java
  class JJDocGlobals (line 37) | public class JJDocGlobals extends JavaCCGlobals {
    method setGenerator (line 56) | public static void setGenerator(Generator generator) {
    method getGenerator (line 66) | public static Generator getGenerator() {
    method debug (line 99) | public static void debug(String message) {
    method info (line 107) | public static void info(String message) {
    method error (line 115) | public static void error(String message) {

FILE: src/main/java/org/javacc/jjdoc/JJDocMain.java
  class JJDocMain (line 40) | public final class JJDocMain extends JJDocGlobals {
    method JJDocMain (line 42) | private JJDocMain() {}
    method help_message (line 44) | static void help_message() {
    method main (line 92) | public static void main(String args[]) throws Exception {
    method mainProgram (line 102) | public static int mainProgram(String args[]) throws Exception {

FILE: src/main/java/org/javacc/jjdoc/JJDocOptions.java
  class JJDocOptions (line 38) | public class JJDocOptions extends Options {
    method JJDocOptions (line 43) | protected JJDocOptions() {
    method init (line 50) | public static void init() {
    method getOneTable (line 67) | public static boolean getOneTable() {
    method getCSS (line 76) | public static String getCSS() {
    method getText (line 85) | public static boolean getText() {
    method getXText (line 89) | public static boolean getXText() {
    method getBNF (line 98) | public static boolean getBNF() {
    method getOutputFile (line 107) | public static String getOutputFile() {

FILE: src/main/java/org/javacc/jjdoc/TextGenerator.java
  class TextGenerator (line 45) | public class TextGenerator implements Generator {
    method TextGenerator (line 48) | public TextGenerator() {
    method text (line 55) | public void text(String s) {
    method print (line 63) | public void print(String s) {
    method documentStart (line 71) | public void documentStart() {
    method documentEnd (line 79) | public void documentEnd() {
    method specialTokens (line 88) | public void specialTokens(String s) {
    method nonterminalsStart (line 97) | public void nonterminalsStart() {
    method nonterminalsEnd (line 104) | public void nonterminalsEnd() {
    method tokensStart (line 111) | public void tokensStart() {
    method handleTokenProduction (line 115) | @Override
    method tokensEnd (line 126) | public void tokensEnd() {
    method javacode (line 133) | public void javacode(JavaCodeProduction jp) {
    method cppcode (line 143) | public void cppcode(CppCodeProduction cp) {
    method productionStart (line 153) | public void productionStart(NormalProduction np) {
    method productionEnd (line 160) | public void productionEnd(NormalProduction np) {
    method expansionStart (line 168) | public void expansionStart(Expansion e, boolean first) {
    method expansionEnd (line 177) | public void expansionEnd(Expansion e, boolean first) {
    method nonTerminalStart (line 184) | public void nonTerminalStart(NonTerminal nt) {
    method nonTerminalEnd (line 190) | public void nonTerminalEnd(NonTerminal nt) {
    method reStart (line 197) | public void reStart(RegularExpression r) {
    method reEnd (line 203) | public void reEnd(RegularExpression r) {
    method create_output_stream (line 211) | protected PrintWriter create_output_stream() {
    method debug (line 261) | public void debug(String message) {
    method info (line 269) | public void info(String message) {
    method warn (line 277) | public void warn(String message) {
    method error (line 285) | public void error(String message) {

FILE: src/main/java/org/javacc/jjdoc/XTextGenerator.java
  class XTextGenerator (line 46) | public class XTextGenerator extends TextGenerator {
    method XTextGenerator (line 52) | public XTextGenerator() {
    method handleTokenProduction (line 56) | @Override
    method get_id (line 80) | protected String get_id(String nt) {
    method println (line 89) | private void println(String s) {
    method text (line 93) | public void text(String s) {
    method print (line 109) | public void print(String s) {
    method documentStart (line 114) | public void documentStart() {
    method documentEnd (line 136) | public void documentEnd() {
    method specialTokens (line 147) | public void specialTokens(String s) {
    method nonterminalsStart (line 159) | public void nonterminalsStart() {
    method nonterminalsEnd (line 165) | public void nonterminalsEnd() {
    method tokensStart (line 171) | public void tokensStart() {
    method tokensEnd (line 175) | public void tokensEnd() {
    method javacode (line 179) | public void javacode(JavaCodeProduction jp) {
    method cppcode (line 185) | public void cppcode(CppCodeProduction cp) {
    method productionStart (line 191) | public void productionStart(NormalProduction np) {
    method productionEnd (line 202) | public void productionEnd(NormalProduction np) {
    method expansionStart (line 209) | public void expansionStart(Expansion e, boolean first) {
    method expansionEnd (line 220) | public void expansionEnd(Expansion e, boolean first) {
    method nonTerminalStart (line 224) | public void nonTerminalStart(NonTerminal nt) {
    method nonTerminalEnd (line 227) | public void nonTerminalEnd(NonTerminal nt) {
    method reStart (line 231) | public void reStart(RegularExpression r) {
    method reEnd (line 233) | public void reEnd(RegularExpression r) {

FILE: src/main/java/org/javacc/jjtree/ASTBNF.java
  class ASTBNF (line 32) | public class ASTBNF extends ASTProduction
    method ASTBNF (line 34) | ASTBNF(int id) {
    method toString (line 42) | public String toString()
    method jjtAccept (line 48) | public Object jjtAccept(JJTreeParserVisitor visitor, Object data) {

FILE: src/main/java/org/javacc/jjtree/ASTBNFAction.java
  class ASTBNFAction (line 31) | public class ASTBNFAction extends JJTreeNode {
    method ASTBNFAction (line 33) | ASTBNFAction(int id) {
    method getScopingParent (line 37) | protected Node getScopingParent(NodeScope ns)
    method jjtAccept (line 55) | public Object jjtAccept(JJTreeParserVisitor visitor, Object data) {

FILE: src/main/java/org/javacc/jjtree/ASTBNFDeclaration.java
  class ASTBNFDeclaration (line 31) | public class ASTBNFDeclaration extends JJTreeNode {
    method ASTBNFDeclaration (line 32) | ASTBNFDeclaration(int id) {
    method jjtAccept (line 39) | public Object jjtAccept(JJTreeParserVisitor visitor, Object data) {

FILE: src/main/java/org/javacc/jjtree/ASTBNFNodeScope.java
  class ASTBNFNodeScope (line 31) | public class ASTBNFNodeScope extends JJTreeNode
    method ASTBNFNodeScope (line 33) | ASTBNFNodeScope(int id) {
    method jjtAccept (line 42) | public Object jjtAccept(JJTreeParserVisitor visitor, Object data) {

FILE: src/main/java/org/javacc/jjtree/ASTCompilationUnit.java
  class ASTCompilationUnit (line 31) | public class ASTCompilationUnit extends JJTreeNode {
    method ASTCompilationUnit (line 32) | ASTCompilationUnit(int id) {
    method jjtAccept (line 37) | public Object jjtAccept(JJTreeParserVisitor visitor, Object data) {

FILE: src/main/java/org/javacc/jjtree/ASTExpansionNodeScope.java
  class ASTExpansionNodeScope (line 31) | public class ASTExpansionNodeScope extends JJTreeNode
    method ASTExpansionNodeScope (line 33) | ASTExpansionNodeScope(int id) {
    method jjtAccept (line 41) | public Object jjtAccept(JJTreeParserVisitor visitor, Object data) {

FILE: src/main/java/org/javacc/jjtree/ASTGrammar.java
  class ASTGrammar (line 38) | public class ASTGrammar extends JJTreeNode {
    method ASTGrammar (line 39) | ASTGrammar(int id) {
    method generate (line 43) | void generate(IO io) {
    method jjtAccept (line 58) | public Object jjtAccept(JJTreeParserVisitor visitor, Object data) {

FILE: src/main/java/org/javacc/jjtree/ASTJavacode.java
  class ASTJavacode (line 31) | public class ASTJavacode extends ASTProduction {
    method ASTJavacode (line 32) | ASTJavacode(int id) {
    method jjtAccept (line 39) | public Object jjtAccept(JJTreeParserVisitor visitor, Object data) {

FILE: src/main/java/org/javacc/jjtree/ASTJavacodeBody.java
  class ASTJavacodeBody (line 31) | public class ASTJavacodeBody extends JJTreeNode {
    method ASTJavacodeBody (line 32) | ASTJavacodeBody(int id) {
    method jjtAccept (line 39) | public Object jjtAccept(JJTreeParserVisitor visitor, Object data) {

FILE: src/main/java/org/javacc/jjtree/ASTLHS.java
  class ASTLHS (line 31) | public class ASTLHS extends JJTreeNode {
    method ASTLHS (line 32) | ASTLHS(int id) {
    method jjtAccept (line 37) | public Object jjtAccept(JJTreeParserVisitor visitor, Object data) {

FILE: src/main/java/org/javacc/jjtree/ASTNodeDescriptor.java
  class ASTNodeDescriptor (line 37) | public class ASTNodeDescriptor extends JJTreeNode {
    method ASTNodeDescriptor (line 38) | ASTNodeDescriptor(int id) {
    method indefinite (line 44) | static ASTNodeDescriptor indefinite(String s)
    method getNodeIds (line 58) | static List<String> getNodeIds()
    method getNodeNames (line 63) | static List<String> getNodeNames()
    method setNodeIdValue (line 68) | void setNodeIdValue()
    method getNodeId (line 78) | String getNodeId()
    method isVoid (line 89) | boolean isVoid()
    method toString (line 94) | public String toString()
    method getDescriptor (line 104) | String getDescriptor()
    method getNodeType (line 113) | String getNodeType()
    method getNodeName (line 123) | String getNodeName()
    method openNode (line 129) | String openNode(String nodeVar)
    method expression_text (line 135) | String expression_text()
    method closeNode (line 155) | String closeNode(String nodeVar)
    method translateImage (line 169) | String translateImage(Token t)
    method jjtAccept (line 175) | public Object jjtAccept(JJTreeParserVisitor visitor, Object data) {

FILE: src/main/java/org/javacc/jjtree/ASTNodeDescriptorExpression.java
  class ASTNodeDescriptorExpression (line 31) | public class ASTNodeDescriptorExpression extends JJTreeNode {
    method ASTNodeDescriptorExpression (line 32) | ASTNodeDescriptorExpression(int id) {
    method translateImage (line 36) | String translateImage(Token t)
    method jjtAccept (line 42) | public Object jjtAccept(JJTreeParserVisitor visitor, Object data) {

FILE: src/main/java/org/javacc/jjtree/ASTOptionBinding.java
  class ASTOptionBinding (line 31) | public class ASTOptionBinding extends JJTreeNode {
    method ASTOptionBinding (line 32) | ASTOptionBinding(int id) {
    method initialize (line 39) | void initialize(String n, String v)
    method isSuppressed (line 52) | boolean isSuppressed()
    method suppressOption (line 57) | void suppressOption(boolean s)
    method translateImage (line 63) | String translateImage(Token t)
    method jjtAccept (line 73) | public Object jjtAccept(JJTreeParserVisitor visitor, Object data) {

FILE: src/main/java/org/javacc/jjtree/ASTOptions.java
  class ASTOptions (line 5) | public class ASTOptions extends JJTreeNode{
    method ASTOptions (line 6) | public ASTOptions(int id) {
    method ASTOptions (line 10) | public ASTOptions(JJTreeParser p, int id) {
    method jjtAccept (line 16) | public Object jjtAccept(JJTreeParserVisitor visitor, Object data) {

FILE: src/main/java/org/javacc/jjtree/ASTProduction.java
  class ASTProduction (line 34) | public class ASTProduction extends JJTreeNode
    method ASTProduction (line 36) | ASTProduction(int id) {
    method getNodeScopeNumber (line 47) | int getNodeScopeNumber(NodeScope s)
    method jjtAccept (line 58) | public Object jjtAccept(JJTreeParserVisitor visitor, Object data) {

FILE: src/main/java/org/javacc/jjtree/CPPCodeGenerator.java
  class CPPCodeGenerator (line 13) | public class CPPCodeGenerator extends DefaultJJTreeVisitor {
    method defaultVisit (line 14) | public Object defaultVisit(SimpleNode node, Object data) {
    method visit (line 19) | public Object visit(ASTGrammar node, Object data) {
    method visit (line 30) | public Object visit(ASTBNFAction node, Object data) {
    method visit (line 76) | public Object visit(ASTBNFDeclaration node, Object data) {
    method visit (line 97) | public Object visit(ASTBNFNodeScope node, Object data) {
    method visit (line 111) | public Object visit(ASTCompilationUnit node, Object data) {
    method visit (line 129) | public Object visit(ASTExpansionNodeScope node, Object data) {
    method visit (line 143) | public Object visit(ASTJavacodeBody node, Object data) {
    method visit (line 163) | public Object visit(ASTLHS node, Object data) {
    method visit (line 183) | public Object visit(JJTreeNode node, Object data) {
    method openJJTreeComment (line 214) | static void openJJTreeComment(IO io, String arg)
    method closeJJTreeComment (line 224) | static void closeJJTreeComment(IO io)
    method getIndentation (line 230) | String getIndentation(JJTreeNode n)
    method getIndentation (line 236) | String getIndentation(JJTreeNode n, int offset)
    method insertOpenNodeDeclaration (line 245) | void insertOpenNodeDeclaration(NodeScope ns, IO io, String indent)
    method insertOpenNodeCode (line 250) | void insertOpenNodeCode(NodeScope ns, IO io, String indent)
    method insertCloseNodeCode (line 290) | void insertCloseNodeCode(NodeScope ns, IO io, String indent, boolean i...
    method insertOpenNodeAction (line 308) | void insertOpenNodeAction(NodeScope ns, IO io, String indent)
    method insertCloseNodeAction (line 316) | void insertCloseNodeAction(NodeScope ns, IO io, String indent)
    method insertCatchBlocks (line 324) | private void insertCatchBlocks(NodeScope ns, IO io, Enumeration thrown...
    method tryTokenSequence (line 343) | void tryTokenSequence(NodeScope ns, IO io, String indent, Token first,...
    method findThrown (line 371) | private static void findThrown(NodeScope ns, Hashtable thrown_set,
    method tryExpansionUnit (line 394) | void tryExpansionUnit(NodeScope ns, IO io, String indent, JJTreeNode e...

FILE: src/main/java/org/javacc/jjtree/CPPJJTreeState.java
  class CPPJJTreeState (line 19) | final class CPPJJTreeState
    method CPPJJTreeState (line 24) | private CPPJJTreeState() {}
    method generateTreeState (line 26) | static void generateTreeState() throws IOException

FILE: src/main/java/org/javacc/jjtree/CPPNodeFiles.java
  class CPPNodeFiles (line 51) | final class CPPNodeFiles {
    method CPPNodeFiles (line 52) | private CPPNodeFiles() {}
    method addType (line 63) | static void addType(String type) {
    method nodeIncludeFile (line 69) | public static String nodeIncludeFile() {
    method simpleNodeIncludeFile (line 73) | public static String simpleNodeIncludeFile() {
    method simpleNodeCodeFile (line 77) | public static String simpleNodeCodeFile() {
    method jjtreeIncludeFile (line 81) | public static String jjtreeIncludeFile() {
    method jjtreeImplFile (line 85) | public static String jjtreeImplFile() {
    method jjtreeIncludeFile (line 89) | public static String jjtreeIncludeFile(String s) {
    method jjtreeImplFile (line 93) | public static String jjtreeImplFile(String s) {
    method jjtreeASTIncludeFile (line 97) | public static String jjtreeASTIncludeFile(String ASTNode) {
    method jjtreeASTCodeFile (line 101) | public static String jjtreeASTCodeFile(String ASTNode) {
    method visitorIncludeFile (line 105) | private static String visitorIncludeFile() {
    method generateTreeClasses (line 110) | static void generateTreeClasses() {
    method generateNodeHeader (line 120) | private static void generateNodeHeader()
    method generateSimpleNodeHeader (line 147) | private static void generateSimpleNodeHeader()
    method generateSimpleNodeCode (line 174) | private static void generateSimpleNodeCode()
    method generateMultiTreeInterface (line 202) | private static void generateMultiTreeInterface()
    method generateMultiTreeImpl (line 237) | private static void generateMultiTreeImpl()
    method generateOneTreeInterface (line 273) | private static void generateOneTreeInterface()
    method generateOneTreeImpl (line 311) | private static void generateOneTreeImpl()
    method generatePrologue (line 354) | static void generatePrologue(PrintWriter ostr)
    method nodeConstants (line 360) | static String nodeConstants()
    method generateTreeConstants (line 365) | static void generateTreeConstants()
    method visitorClass (line 423) | static String visitorClass()
    method getVisitMethodName (line 428) | private static String getVisitMethodName(String className) {
    method getVisitorArgumentType (line 440) | private static String getVisitorArgumentType() {
    method getVisitorReturnType (line 445) | private static String getVisitorReturnType() {
    method generateVisitors (line 450) | static void generateVisitors() {
    method generateVisitorInterface (line 486) | private static void generateVisitorInterface(PrintWriter ostr) {
    method defaultVisitorClass (line 517) | static String defaultVisitorClass() {
    method generateDefaultVisitor (line 521) | private static void generateDefaultVisitor(PrintWriter ostr) {
    method generateFile (line 557) | public static void generateFile(OutputFile outputFile, String template...
    method generateFile (line 562) | public static void generateFile(OutputFile outputFile, String template...

FILE: src/main/java/org/javacc/jjtree/DefaultJJTreeVisitor.java
  class DefaultJJTreeVisitor (line 4) | public class DefaultJJTreeVisitor implements JJTreeParserVisitor
    method defaultVisit (line 6) | public Object defaultVisit(SimpleNode node, Object data){
    method visit (line 9) | public Object visit(SimpleNode node, Object data){
    method visit (line 12) | public Object visit(ASTGrammar node, Object data){
    method visit (line 15) | public Object visit(ASTCompilationUnit node, Object data){
    method visit (line 18) | public Object visit(ASTProductions node, Object data){
    method visit (line 21) | public Object visit(ASTOptions node, Object data){
    method visit (line 24) | public Object visit(ASTOptionBinding node, Object data){
    method visit (line 27) | public Object visit(ASTJavacode node, Object data){
    method visit (line 30) | public Object visit(ASTJavacodeBody node, Object data){
    method visit (line 33) | public Object visit(ASTBNF node, Object data){
    method visit (line 36) | public Object visit(ASTBNFDeclaration node, Object data){
    method visit (line 39) | public Object visit(ASTBNFNodeScope node, Object data){
    method visit (line 42) | public Object visit(ASTRE node, Object data){
    method visit (line 45) | public Object visit(ASTTokenDecls node, Object data){
    method visit (line 48) | public Object visit(ASTRESpec node, Object data){
    method visit (line 51) | public Object visit(ASTBNFChoice node, Object data){
    method visit (line 54) | public Object visit(ASTBNFSequence node, Object data){
    method visit (line 57) | public Object visit(ASTBNFLookahead node, Object data){
    method visit (line 60) | public Object visit(ASTExpansionNodeScope node, Object data){
    method visit (line 63) | public Object visit(ASTBNFAction node, Object data){
    method visit (line 66) | public Object visit(ASTBNFZeroOrOne node, Object data){
    method visit (line 69) | public Object visit(ASTBNFTryBlock node, Object data){
    method visit (line 72) | public Object visit(ASTBNFNonTerminal node, Object data){
    method visit (line 75) | public Object visit(ASTBNFAssignment node, Object data){
    method visit (line 78) | public Object visit(ASTBNFOneOrMore node, Object data){
    method visit (line 81) | public Object visit(ASTBNFZeroOrMore node, Object data){
    method visit (line 84) | public Object visit(ASTBNFParenthesized node, Object data){
    method visit (line 87) | public Object visit(ASTREStringLiteral node, Object data){
    method visit (line 90) | public Object visit(ASTRENamed node, Object data){
    method visit (line 93) | public Object visit(ASTREReference node, Object data){
    method visit (line 96) | public Object visit(ASTREEOF node, Object data){
    method visit (line 99) | public Object visit(ASTREChoice node, Object data){
    method visit (line 102) | public Object visit(ASTRESequence node, Object data){
    method visit (line 105) | public Object visit(ASTREOneOrMore node, Object data){
    method visit (line 108) | public Object visit(ASTREZeroOrMore node, Object data){
    method visit (line 111) | public Object visit(ASTREZeroOrOne node, Object data){
    method visit (line 114) | public Object visit(ASTRRepetitionRange node, Object data){
    method visit (line 117) | public Object visit(ASTREParenthesized node, Object data){
    method visit (line 120) | public Object visit(ASTRECharList node, Object data){
    method visit (line 123) | public Object visit(ASTCharDescriptor node, Object data){
    method visit (line 126) | public Object visit(ASTNodeDescriptor node, Object data){
    method visit (line 129) | public Object visit(ASTNodeDescriptorExpression node, Object data){
    method visit (line 132) | public Object visit(ASTPrimaryExpression node, Object data){

FILE: src/main/java/org/javacc/jjtree/IO.java
  class IO (line 42) | final class IO
    method IO (line 51) | IO()
    method getInputFileName (line 58) | String getInputFileName()
    method getIn (line 63) | Reader getIn()
    method getOutputFileName (line 68) | String getOutputFileName()
    method getOut (line 73) | PrintWriter getOut()
    method getMsg (line 78) | PrintStream getMsg()
    method getErr (line 83) | PrintStream getErr()
    method print (line 89) | void print(String s)
    method println (line 94) | void println(String s)
    method println (line 100) | void println()
    method closeAll (line 106) | void closeAll()
    method create_output_file_name (line 116) | private String create_output_file_name(String i) {
    method setInput (line 142) | void setInput(String fn) throws JJTreeIOException
    method setOutput (line 170) | void setOutput() throws JJTreeIOException {

FILE: src/main/java/org/javacc/jjtree/JJTree.java
  class JJTree (line 41) | public class JJTree {
    method p (line 45) | private void p(String s)
    method help_message (line 50) | private void help_message()
    method main (line 112) | public int main(String args[]) {
    method initializeOptions (line 222) | private void initializeOptions() {

FILE: src/main/java/org/javacc/jjtree/JJTreeGlobals.java
  class JJTreeGlobals (line 38) | class JJTreeGlobals
    method initialize (line 40) | static void initialize() {
    method isOptionJJTreeOnly (line 83) | public static boolean isOptionJJTreeOnly(String optionName)

FILE: src/main/java/org/javacc/jjtree/JJTreeIOException.java
  class JJTreeIOException (line 33) | class JJTreeIOException extends java.io.IOException {
    method JJTreeIOException (line 35) | JJTreeIOException(String detail)

FILE: src/main/java/org/javacc/jjtree/JJTreeNode.java
  class JJTreeNode (line 30) | public class JJTreeNode extends SimpleNode {
    method JJTreeNode (line 34) | public JJTreeNode(int id) {
    method JJTreeNode (line 38) | public JJTreeNode(JJTreeParser p, int i) {
    method jjtCreate (line 42) | public static Node jjtCreate(int id) {
    method jjtAddChild (line 46) | public void jjtAddChild(Node n, int i) {
    method getOrdinal (line 51) | public int getOrdinal()
    method setOrdinal (line 56) | public void setOrdinal(int o)
    method getFirstToken (line 73) | public Token getFirstToken() { return first; }
    method setFirstToken (line 74) | public void setFirstToken(Token t) { first = t; }
    method getLastToken (line 75) | public Token getLastToken() { return last;  }
    method setLastToken (line 76) | public void setLastToken(Token t) { last = t; }
    method translateImage (line 78) | String translateImage(Token t)
    method whiteOut (line 83) | String whiteOut(Token t)
    method print (line 103) | protected void print(Token t, IO io) {

FILE: src/main/java/org/javacc/jjtree/JJTreeOptions.java
  class JJTreeOptions (line 44) | class JJTreeOptions extends Options {
    method JJTreeOptions (line 49) | protected JJTreeOptions() {
    method init (line 56) | public static void init() {
    method validate (line 97) | public static void validate() {
    method getMulti (line 117) | public static boolean getMulti() {
    method getNodeDefaultVoid (line 126) | public static boolean getNodeDefaultVoid() {
    method getNodeScopeHook (line 135) | public static boolean getNodeScopeHook() {
    method getNodeFactory (line 144) | public static String getNodeFactory() {
    method getNodeUsesParser (line 153) | public static boolean getNodeUsesParser() {
    method getBuildNodeFiles (line 162) | public static boolean getBuildNodeFiles() {
    method getVisitor (line 171) | public static boolean getVisitor() {
    method getTrackTokens (line 180) | public static boolean getTrackTokens() {
    method getNodePrefix (line 189) | public static String getNodePrefix() {
    method getNodeExtends (line 198) | public static String getNodeExtends() {
    method getNodeClass (line 207) | public static String getNodeClass() {
    method getNodePackage (line 216) | public static String getNodePackage() {
    method getOutputFile (line 225) | public static String getOutputFile() {
    method getVisitorException (line 234) | public static String getVisitorException() {
    method getVisitorDataType (line 243) | public static String getVisitorDataType() {
    method getVisitorReturnType (line 252) | public static String getVisitorReturnType() {
    method getJJTreeOutputDirectory (line 263) | public static File getJJTreeOutputDirectory() {

FILE: src/main/java/org/javacc/jjtree/JJTreeParserVisitor.java
  type JJTreeParserVisitor (line 4) | public interface JJTreeParserVisitor
    method visit (line 6) | public Object visit(SimpleNode node, Object data);
    method visit (line 7) | public Object visit(ASTGrammar node, Object data);
    method visit (line 8) | public Object visit(ASTCompilationUnit node, Object data);
    method visit (line 9) | public Object visit(ASTProductions node, Object data);
    method visit (line 10) | public Object visit(ASTOptions node, Object data);
    method visit (line 11) | public Object visit(ASTOptionBinding node, Object data);
    method visit (line 12) | public Object visit(ASTJavacode node, Object data);
    method visit (line 13) | public Object visit(ASTJavacodeBody node, Object data);
    method visit (line 14) | public Object visit(ASTBNF node, Object data);
    method visit (line 15) | public Object visit(ASTBNFDeclaration node, Object data);
    method visit (line 16) | public Object visit(ASTBNFNodeScope node, Object data);
    method visit (line 17) | public Object visit(ASTRE node, Object data);
    method visit (line 18) | public Object visit(ASTTokenDecls node, Object data);
    method visit (line 19) | public Object visit(ASTRESpec node, Object data);
    method visit (line 20) | public Object visit(ASTBNFChoice node, Object data);
    method visit (line 21) | public Object visit(ASTBNFSequence node, Object data);
    method visit (line 22) | public Object visit(ASTBNFLookahead node, Object data);
    method visit (line 23) | public Object visit(ASTExpansionNodeScope node, Object data);
    method visit (line 24) | public Object visit(ASTBNFAction node, Object data);
    method visit (line 25) | public Object visit(ASTBNFZeroOrOne node, Object data);
    method visit (line 26) | public Object visit(ASTBNFTryBlock node, Object data);
    method visit (line 27) | public Object visit(ASTBNFNonTerminal node, Object data);
    method visit (line 28) | public Object visit(ASTBNFAssignment node, Object data);
    method visit (line 29) | public Object visit(ASTBNFOneOrMore node, Object data);
    method visit (line 30) | public Object visit(ASTBNFZeroOrMore node, Object data);
    method visit (line 31) | public Object visit(ASTBNFParenthesized node, Object data);
    method visit (line 32) | public Object visit(ASTREStringLiteral node, Object data);
    method visit (line 33) | public Object visit(ASTRENamed node, Object data);
    method visit (line 34) | public Object visit(ASTREReference node, Object data);
    method visit (line 35) | public Object visit(ASTREEOF node, Object data);
    method visit (line 36) | public Object visit(ASTREChoice node, Object data);
    method visit (line 37) | public Object visit(ASTRESequence node, Object data);
    method visit (line 38) | public Object visit(ASTREOneOrMore node, Object data);
    method visit (line 39) | public Object visit(ASTREZeroOrMore node, Object data);
    method visit (line 40) | public Object visit(ASTREZeroOrOne node, Object data);
    method visit (line 41) | public Object visit(ASTRRepetitionRange node, Object data);
    method visit (line 42) | public Object visit(ASTREParenthesized node, Object data);
    method visit (line 43) | public Object visit(ASTRECharList node, Object data);
    method visit (line 44) | public Object visit(ASTCharDescriptor node, Object data);
    method visit (line 45) | public Object visit(ASTNodeDescriptor node, Object data);
    method visit (line 46) | public Object visit(ASTNodeDescriptorExpression node, Object data);
    method visit (line 47) | public Object visit(ASTPrimaryExpression node, Object data);

FILE: src/main/java/org/javacc/jjtree/JJTreeState.java
  class JJTreeState (line 41) | final class JJTreeState
    method JJTreeState (line 44) | private JJTreeState() {}
    method insertParserMembers (line 46) | static void insertParserMembers(IO io) {
    method nameState (line 62) | private static String nameState() {
    method generateTreeState_java (line 67) | static void generateTreeState_java()
    method insertState (line 83) | private static void insertState(PrintWriter ostr) {

FILE: src/main/java/org/javacc/jjtree/JavaCodeGenerator.java
  class JavaCodeGenerator (line 11) | public class JavaCodeGenerator extends DefaultJJTreeVisitor {
    method defaultVisit (line 12) | public Object defaultVisit(SimpleNode node, Object data) {
    method visit (line 17) | public Object visit(ASTGrammar node, Object data) {
    method visit (line 28) | public Object visit(ASTBNFAction node, Object data) {
    method visit (line 74) | public Object visit(ASTBNFDeclaration node, Object data) {
    method visit (line 95) | public Object visit(ASTBNFNodeScope node, Object data) {
    method visit (line 109) | public Object visit(ASTCompilationUnit node, Object data) {
    method visit (line 155) | public Object visit(ASTExpansionNodeScope node, Object data) {
    method visit (line 169) | public Object visit(ASTJavacodeBody node, Object data) {
    method visit (line 189) | public Object visit(ASTLHS node, Object data) {
    method visit (line 209) | public Object visit(JJTreeNode node, Object data) {
    method openJJTreeComment (line 240) | static void openJJTreeComment(IO io, String arg)
    method closeJJTreeComment (line 250) | static void closeJJTreeComment(IO io)
    method getIndentation (line 256) | String getIndentation(JJTreeNode n)
    method getIndentation (line 262) | String getIndentation(JJTreeNode n, int offset)
    method insertOpenNodeDeclaration (line 271) | void insertOpenNodeDeclaration(NodeScope ns, IO io, String indent)
    method insertOpenNodeCode (line 276) | void insertOpenNodeCode(NodeScope ns, IO io, String indent)
    method insertCloseNodeCode (line 319) | void insertCloseNodeCode(NodeScope ns, IO io, String indent, boolean i...
    method insertOpenNodeAction (line 339) | void insertOpenNodeAction(NodeScope ns, IO io, String indent)
    method insertCloseNodeAction (line 347) | void insertCloseNodeAction(NodeScope ns, IO io, String indent)
    method insertCatchBlocks (line 355) | private void insertCatchBlocks(NodeScope ns, IO io, Enumeration thrown...
    method tryTokenSequence (line 387) | void tryTokenSequence(NodeScope ns, IO io, String indent, Token first,...
    method findThrown (line 415) | private static void findThrown(NodeScope ns, Hashtable thrown_set,
    method tryExpansionUnit (line 438) | void tryExpansionUnit(NodeScope ns, IO io, String indent, JJTreeNode e...

FILE: src/main/java/org/javacc/jjtree/Main.java
  class Main (line 33) | public final class Main {
    method Main (line 35) | private Main() {}
    method main (line 37) | public static void main(String args[])

FILE: src/main/java/org/javacc/jjtree/NodeFiles.java
  class NodeFiles (line 48) | final class NodeFiles {
    method NodeFiles (line 49) | private NodeFiles() {}
    method ensure (line 59) | static void ensure(IO io, String nodeType)
    method generatePrologue (line 107) | static void generatePrologue(PrintWriter ostr)
    method nodeConstants (line 126) | static String nodeConstants()
    method generateTreeConstants_java (line 131) | static void generateTreeConstants_java()
    method visitorClass (line 171) | static String visitorClass()
    method generateVisitor_java (line 176) | static void generateVisitor_java()
    method defaultVisitorClass (line 224) | static String defaultVisitorClass()
    method getVisitMethodName (line 229) | private static String getVisitMethodName(String className) {
    method generateDefaultVisitor_java (line 241) | static void generateDefaultVisitor_java()
    method mergeVisitorException (line 326) | private static String mergeVisitorException() {
    method generateNode_java (line 335) | private static void generateNode_java(OutputFile outputFile) throws IO...
    method generateSimpleNode_java (line 353) | private static void generateSimpleNode_java(OutputFile outputFile) thr...
    method generateMULTINode_java (line 372) | private static void generateMULTINode_java(OutputFile outputFile, Stri...

FILE: src/main/java/org/javacc/jjtree/NodeScope.java
  class NodeScope (line 33) | public class NodeScope
    method NodeScope (line 43) | NodeScope(ASTProduction p, ASTNodeDescriptor n)
    method isVoid (line 64) | boolean isVoid()
    method getNodeDescriptor (line 70) | ASTNodeDescriptor getNodeDescriptor()
    method getNodeDescriptorText (line 76) | String getNodeDescriptorText()
    method getNodeVariable (line 82) | String getNodeVariable()
    method constructVariable (line 88) | private String constructVariable(String id)
    method usesCloseNodeVar (line 95) | boolean usesCloseNodeVar()
    method getEnclosingNodeScope (line 100) | static NodeScope getEnclosingNodeScope(Node node)

FILE: src/main/java/org/javacc/jjtree/Token.java
  class Token (line 13) | public class Token {
    method getValue (line 68) | public Object getValue() {
    method Token (line 75) | public Token() {}
    method Token (line 80) | public Token(int kind)
    method Token (line 88) | public Token(int kind, String image)
    method toString (line 97) | public String toString()
    method newToken (line 114) | public static final Token newToken(int ofKind, String image)
    method newToken (line 126) | public static final Token newToken(int ofKind)
    class GTToken (line 134) | public static class GTToken extends Token
      method GTToken (line 136) | public GTToken(int kind, String image)

FILE: src/main/java/org/javacc/jjtree/TokenMgrException.java
  class TokenMgrException (line 6) | public class TokenMgrException extends RuntimeException
    method addEscapes (line 50) | protected static final String addEscapes(String str) {
    method LexicalError (line 107) | protected static String LexicalError(boolean EOFSeen, int lexState, in...
    method getMessage (line 124) | public String getMessage() {
    method TokenMgrException (line 133) | public TokenMgrException() {
    method TokenMgrException (line 137) | public TokenMgrException(String message, int reason) {
    method TokenMgrException (line 143) | public TokenMgrException(boolean EOFSeen, int lexState, int errorLine,...

FILE: src/main/java/org/javacc/jjtree/TokenUtils.java
  class TokenUtils (line 35) | public final class TokenUtils
    method TokenUtils (line 37) | private TokenUtils() {}
    method print (line 39) | static void print(Token t, IO io, String in, String out) {
    method print (line 55) | static void print(Token t, IO io) {
    method addUnicodeEscapes (line 59) | static String addUnicodeEscapes(String str) {
    method hasTokens (line 75) | static boolean hasTokens(JJTreeNode n)
    method remove_escapes_and_quotes (line 84) | static String remove_escapes_and_quotes(Token t, String str) {
    method hexchar (line 170) | private static boolean hexchar(char ch) {
    method hexval (line 177) | private static int hexval(char ch) {

FILE: src/main/java/org/javacc/parser/Action.java
  class Action (line 39) | public class Action extends Expansion {
    method dump (line 47) | public StringBuffer dump(int indent, Set alreadyDumped) {
    method getActionTokens (line 60) | public List<Token> getActionTokens() {

FILE: src/main/java/org/javacc/parser/BNFProduction.java
  class BNFProduction (line 37) | public class BNFProduction extends NormalProduction {
    method getDeclarationTokens (line 54) | public List<Token> getDeclarationTokens() {
    method setJumpPatched (line 61) | public void setJumpPatched(boolean jumpPatched) {
    method isJumpPatched (line 68) | public boolean isJumpPatched() {

FILE: src/main/java/org/javacc/parser/CPPFiles.java
  class CPPFiles (line 19) | public class CPPFiles extends JavaCCGlobals implements JavaCCParserConst...
    method replaceBackslash (line 52) | static String replaceBackslash(String str)
    method getVersion (line 82) | static double getVersion(String fileName)
    method genFile (line 137) | private static void genFile(String name, String version, String[] para...
    method gen_CharStream (line 158) | public static void gen_CharStream() {
    method gen_ParseException (line 164) | public static void gen_ParseException() {
    method gen_TokenMgrError (line 170) | public static void gen_TokenMgrError() {
    method gen_Token (line 176) | public static void gen_Token() {
    method gen_TokenManager (line 182) | public static void gen_TokenManager() {
    method gen_JavaCCDefs (line 187) | public static void gen_JavaCCDefs() {
    method gen_ErrorHandler (line 192) | public static void gen_ErrorHandler() {
    method reInit (line 197) | public static void reInit()

FILE: src/main/java/org/javacc/parser/CharacterRange.java
  class CharacterRange (line 34) | public class CharacterRange {
    method CharacterRange (line 51) | CharacterRange() { }
    method CharacterRange (line 53) | CharacterRange(char l, char r)
    method setLine (line 66) | void setLine(int line) {
    method getLine (line 73) | int getLine() {
    method setColumn (line 80) | void setColumn(int column) {
    method getColumn (line 87) | int getColumn() {
    method setLeft (line 94) | public void setLeft(char left) {
    method getLeft (line 101) | public char getLeft() {
    method setRight (line 108) | public void setRight(char right) {
    method getRight (line 115) | public char getRight() {

FILE: src/main/java/org/javacc/parser/Choice.java
  class Choice (line 41) | public class Choice extends Expansion {
    method Choice (line 49) | public Choice() {}
    method Choice (line 51) | public Choice(Token token) {
    method Choice (line 56) | public Choice(Expansion expansion) {
    method setChoices (line 65) | public void setChoices(List<? super Object> choices) {
    method getChoices (line 72) | public List<? super Object> getChoices() {
    method dump (line 76) | public StringBuffer dump(int indent, Set<? super Expansion> alreadyDum...

FILE: src/main/java/org/javacc/parser/CodeGenerator.java
  class CodeGenerator (line 13) | public class CodeGenerator {
    method genStringLiteralArrayCPP (line 19) | public void genStringLiteralArrayCPP(String varName, String[] arr) {
    method genStringLiteralInCPP (line 33) | public void genStringLiteralInCPP(String s) {
    method genCodeLine (line 41) | public void genCodeLine(Object... code) {
    method genCode (line 46) | public void genCode(Object... code) {
    method saveOutput (line 52) | public void saveOutput(String fileName) {
    method isHexDigit (line 84) | private static boolean isHexDigit(char c) {
    method fixupLongLiterals (line 91) | private void fixupLongLiterals(StringBuffer sb) {
    method saveOutput (line 107) | public void saveOutput(String fileName, StringBuffer sb) {
    method printTokenSetup (line 133) | protected void printTokenSetup(Token t) {
    method printTokenList (line 144) | protected void printTokenList(List<Token> list) {
    method printTokenOnly (line 155) | protected void printTokenOnly(Token t) {
    method getStringForTokenOnly (line 159) | protected String getStringForTokenOnly(Token t) {
    method printToken (line 184) | protected void printToken(Token t) {
    method getStringToPrint (line 188) | protected String getStringToPrint(Token t) {
    method printLeadingComments (line 202) | protected void printLeadingComments(Token t) {
    method getLeadingComments (line 206) | protected String getLeadingComments(Token t) {
    method printTrailingComments (line 223) | protected void printTrailingComments(Token t) {
    method getTrailingComments (line 227) | protected String getTrailingComments(Token t) {
    method getGeneratedCode (line 235) | public String getGeneratedCode() {
    method genAnnotation (line 242) | public void genAnnotation(String ann) {
    method genModifier (line 255) | public void genModifier(String mod) {
    method genClassStart (line 271) | public void genClassStart(String mod, String name, String[] superClass...
    method genCommaSeperatedString (line 299) | private void genCommaSeperatedString(String[] strings) {
    method isJavaLanguage (line 309) | protected boolean isJavaLanguage() {
    method switchToMainFile (line 314) | public void switchToMainFile() {
    method switchToStaticsFile (line 318) | public void switchToStaticsFile() {
    method switchToIncludeFile (line 324) | public void switchToIncludeFile() {
    method generateMethodDefHeader (line 330) | public void generateMethodDefHeader(String modsAndRetType, String clas...
    method generateMethodDefHeader (line 334) | public void generateMethodDefHeader(String qualifiedModsAndRetType, St...
    method getClassQualifier (line 369) | protected String getClassQualifier(String className) {
    method getCharStreamName (line 373) | public static String getCharStreamName() {
    method writeTemplate (line 381) | @SuppressWarnings("unchecked")

FILE: src/main/java/org/javacc/parser/CodeProduction.java
  class CodeProduction (line 37) | public abstract class CodeProduction extends NormalProduction {
    method getCodeTokens (line 47) | public List<Token> getCodeTokens() {

FILE: src/main/java/org/javacc/parser/Container.java
  class Container (line 34) | public class Container {

FILE: src/main/java/org/javacc/parser/CppCodeProduction.java
  class CppCodeProduction (line 35) | public class CppCodeProduction extends CodeProduction {

FILE: src/main/java/org/javacc/parser/Expansion.java
  class Expansion (line 38) | public class Expansion {
    method hashCode (line 54) | public int hashCode() {
    method reInit (line 103) | public static void reInit()
    method getSimpleName (line 108) | private String getSimpleName() {
    method toString (line 113) | public String toString() {
    method dumpPrefix (line 118) | protected StringBuffer dumpPrefix(int indent) {
    method dump (line 125) | public StringBuffer dump(int indent, Set<? super Expansion> alreadyDum...
    method getProductionName (line 130) | public String getProductionName() {
    method setColumn (line 148) | void setColumn(int column) {
    method getColumn (line 155) | int getColumn() {
    method setLine (line 162) | void setLine(int line) {
    method getLine (line 169) | int getLine() {

FILE: src/main/java/org/javacc/parser/ExpansionTreeWalker.java
  class ExpansionTreeWalker (line 36) | public final class ExpansionTreeWalker {
    method ExpansionTreeWalker (line 37) | private ExpansionTreeWalker() {}
    method preOrderWalk (line 44) | static void preOrderWalk(Expansion node, TreeWalkerOp opObj) {
    method postOrderWalk (line 93) | static void postOrderWalk(Expansion node, TreeWalkerOp opObj) {

FILE: src/main/java/org/javacc/parser/JavaCCErrors.java
  class JavaCCErrors (line 33) | public final class JavaCCErrors {
    method JavaCCErrors (line 36) | private JavaCCErrors() {}
    method printLocationInfo (line 38) | private static void printLocationInfo(Object node) {
    method parse_error (line 60) | public static void parse_error(Object node, String mess) {
    method parse_error (line 67) | public static void parse_error(String mess) {
    method get_parse_error_count (line 73) | public static int get_parse_error_count() {
    method semantic_error (line 77) | public static void semantic_error(Object node, String mess) {
    method semantic_error (line 84) | public static void semantic_error(String mess) {
    method get_semantic_error_count (line 90) | public static int get_semantic_error_count() {
    method warning (line 94) | public static void warning(Object node, String mess) {
    method warning (line 101) | public static void warning(String mess) {
    method get_warning_count (line 107) | public static int get_warning_count() {
    method get_error_count (line 111) | public static int get_error_count() {
    method reInit (line 115) | public static void reInit()
    method fatal (line 122) | public static void fatal(String message) {

FILE: src/main/java/org/javacc/parser/JavaCCGlobals.java
  class JavaCCGlobals (line 46) | public class JavaCCGlobals {
    method bannerLine (line 79) | static public void bannerLine(String fullName, String ver) {
    method getIdString (line 215) | public static String getIdString(String toolName, String fileName) {
    method getIdString (line 225) | public static String getIdString(List<String> toolNames, String fileNa...
    method isGeneratedBy (line 246) | public static boolean isGeneratedBy(String toolName, String fileName) {
    method makeToolNameList (line 256) | private static List<String> makeToolNameList(String str) {
    method getToolNames (line 300) | public static List<String> getToolNames(String fileName) {
    method createOutputDir (line 332) | public static void createOutputDir(File outputDir) {
    method staticOpt (line 353) | static public String staticOpt() {
    method add_escapes (line 361) | static public String add_escapes(String str) {
    method addUnicodeEscapes (line 392) | static public String addUnicodeEscapes(String str) {
    method printTokenSetup (line 417) | static protected void printTokenSetup(Token t) {
    method printTokenOnly (line 424) | static protected void printTokenOnly(Token t, java.io.PrintWriter ostr) {
    method printToken (line 444) | static protected void printToken(Token t, java.io.PrintWriter ostr) {
    method printTokenList (line 456) | static protected void printTokenList(List<Token> list, java.io.PrintWr...
    method printLeadingComments (line 467) | static protected void printLeadingComments(Token t, java.io.PrintWrite...
    method printTrailingComments (line 481) | static protected void printTrailingComments(Token t, java.io.PrintWrit...
    method printTokenOnly (line 486) | static protected String printTokenOnly(Token t) {
    method printToken (line 508) | static protected String printToken(Token t) {
    method printLeadingComments (line 522) | static protected String printLeadingComments(Token t) {
    method printTrailingComments (line 538) | static protected String printTrailingComments(Token t) {
    method reInit (line 543) | public static void reInit()
    method getFileExtension (line 575) | static String getFileExtension(String language) {

FILE: src/main/java/org/javacc/parser/JavaCCParserInternals.java
  class JavaCCParserInternals (line 37) | public abstract class JavaCCParserInternals extends JavaCCGlobals {
    method initialize (line 39) | static protected void initialize() {
    method addcuname (line 46) | static protected void addcuname(String id) {
    method compare (line 50) | static protected void compare(Token t, String id1, String id2) {
    method setinsertionpoint (line 61) | static protected void setinsertionpoint(Token t, int no) {
    method insertionpointerrors (line 80) | static protected void insertionpointerrors(Token t) {
    method set_initial_cu_token (line 90) | static protected void set_initial_cu_token(Token t) {
    method addproduction (line 94) | static protected void addproduction(NormalProduction p) {
    method production_addexpansion (line 98) | static protected void production_addexpansion(BNFProduction p, Expansi...
    method addregexpr (line 105) | static protected void addregexpr(TokenProduction p) {
    method add_token_manager_decls (line 132) | static protected void add_token_manager_decls(Token t, List decls) {
    method add_inline_regexpr (line 144) | static protected void add_inline_regexpr(RegularExpression r) {
    method hexchar (line 161) | static protected boolean hexchar(char ch) {
    method hexval (line 168) | static protected int hexval(char ch) {
    method remove_escapes_and_quotes (line 174) | static protected String remove_escapes_and_quotes(Token t, String str) {
    method character_descriptor_assign (line 262) | static protected char character_descriptor_assign(Token t, String s) {
    method character_descriptor_assign (line 271) | static protected char character_descriptor_assign(Token t, String s, S...
    method makeTryBlock (line 284) | static protected void makeTryBlock(
    method reInit (line 311) | public static void reInit()

FILE: src/main/java/org/javacc/parser/JavaCodeProduction.java
  class JavaCodeProduction (line 34) | public class JavaCodeProduction extends CodeProduction {

FILE: src/main/java/org/javacc/parser/JavaFiles.java
  class JavaFiles (line 45) | public class JavaFiles extends JavaCCGlobals implements JavaCCParserCons...
    type JavaResourceTemplateLocations (line 76) | public interface JavaResourceTemplateLocations {
      method getTokenManagerTemplateResourceUrl (line 77) | public String getTokenManagerTemplateResourceUrl();
      method getTokenTemplateResourceUrl (line 78) | public String getTokenTemplateResourceUrl();
      method getTokenMgrErrorTemplateResourceUrl (line 79) | public String getTokenMgrErrorTemplateResourceUrl();
      method getJavaCharStreamTemplateResourceUrl (line 80) | public String getJavaCharStreamTemplateResourceUrl();
      method getCharStreamTemplateResourceUrl (line 81) | public String getCharStreamTemplateResourceUrl();
      method getSimpleCharStreamTemplateResourceUrl (line 82) | public String getSimpleCharStreamTemplateResourceUrl();
      method getParseExceptionTemplateResourceUrl (line 83) | public String getParseExceptionTemplateResourceUrl();
    class JavaModernResourceTemplateLocationImpl (line 87) | public static class JavaModernResourceTemplateLocationImpl implements ...
      method getTokenMgrErrorTemplateResourceUrl (line 88) | public String getTokenMgrErrorTemplateResourceUrl() {
      method getCharStreamTemplateResourceUrl (line 92) | public String getCharStreamTemplateResourceUrl() {
      method getTokenManagerTemplateResourceUrl (line 97) | public String getTokenManagerTemplateResourceUrl() {
      method getTokenTemplateResourceUrl (line 102) | public String getTokenTemplateResourceUrl() {
      method getSimpleCharStreamTemplateResourceUrl (line 107) | public String getSimpleCharStreamTemplateResourceUrl() {
      method getJavaCharStreamTemplateResourceUrl (line 112) | public String getJavaCharStreamTemplateResourceUrl() {
      method getParseExceptionTemplateResourceUrl (line 117) | public String getParseExceptionTemplateResourceUrl() {
    class JavaResourceTemplateLocationImpl (line 123) | public static class JavaResourceTemplateLocationImpl implements JavaRe...
      method getTokenTemplateResourceUrl (line 125) | public String getTokenTemplateResourceUrl() {
      method getTokenManagerTemplateResourceUrl (line 128) | public String getTokenManagerTemplateResourceUrl() {
      method getTokenMgrErrorTemplateResourceUrl (line 131) | public String getTokenMgrErrorTemplateResourceUrl() {
      method getJavaCharStreamTemplateResourceUrl (line 134) | public String getJavaCharStreamTemplateResourceUrl() {
      method getCharStreamTemplateResourceUrl (line 138) | public String getCharStreamTemplateResourceUrl() {
      method getSimpleCharStreamTemplateResourceUrl (line 141) | public String getSimpleCharStreamTemplateResourceUrl() {
      method getParseExceptionTemplateResourceUrl (line 145) | public String getParseExceptionTemplateResourceUrl() {
    method replaceBackslash (line 158) | static String replaceBackslash(String str)
    method getVersion (line 188) | static double getVersion(String fileName)
    method gen_JavaCharStream (line 252) | public static void gen_JavaCharStream(JavaResourceTemplateLocations lo...
    method gen_SimpleCharStream (line 299) | public static void gen_SimpleCharStream(JavaResourceTemplateLocations ...
    method gen_CharStream (line 346) | public static void gen_CharStream(JavaResourceTemplateLocations locati...
    method gen_JavaModernFiles (line 390) | public static void gen_JavaModernFiles() {
    method genMiscFile (line 398) | private static void genMiscFile(String fileName, String templatePath) ...
    method gen_ParseException (line 440) | public static void gen_ParseException(JavaResourceTemplateLocations lo...
    method gen_TokenMgrError (line 484) | public static void gen_TokenMgrError(JavaResourceTemplateLocations loc...
    method gen_Token (line 536) | public static void gen_Token(JavaResourceTemplateLocations locations) {
    method gen_TokenManager (line 580) | public static void gen_TokenManager(JavaResourceTemplateLocations loca...
    method reInit (line 623) | public static void reInit()

FILE: src/main/java/org/javacc/parser/LexGen.java
  class LexGen (line 49) | public class LexGen extends CodeGenerator implements JavaCCParserConstants
    method PrintClassHead (line 104) | void PrintClassHead()
    method writeTemplate (line 215) | @SuppressWarnings("unchecked")
    method DumpDebugMethods (line 265) | void DumpDebugMethods() throws IOException
    method BuildLexStatesTable (line 270) | static void BuildLexStatesTable()
    method GetIndex (line 337) | static int GetIndex(String name)
    method AddCharToSkip (line 346) | public static void AddCharToSkip(char c, int kind)
    method start (line 352) | public void start() throws IOException
    method CheckEmptyStringMatch (line 668) | static void CheckEmptyStringMatch()
    method DumpStaticVarDeclarations (line 741) | private void DumpStaticVarDeclarations(String charStreamName) throws I...
    method MaxChar (line 827) | static char MaxChar(long l)
    method DumpFillToken (line 836) | void DumpFillToken()
    method DumpGetNextToken (line 923) | void DumpGetNextToken()
    method DumpSkipActions (line 1293) | public void DumpSkipActions()
    method DumpMoreActions (line 1365) | public void DumpMoreActions()
    method DumpTokenActions (line 1441) | public void DumpTokenActions()
    method reInit (line 1522) | public static void reInit()

FILE: src/main/java/org/javacc/parser/LexGenCPP.java
  class LexGenCPP (line 50) | public class LexGenCPP extends LexGen //CodeGenerator implements JavaCCP...
    method PrintClassHead (line 52) | @Override
    method DumpDebugMethods (line 184) | void DumpDebugMethods() throws IOException
    method BuildLexStatesTable (line 191) | static void BuildLexStatesTable()
    method GetIndex (line 258) | static int GetIndex(String name)
    method AddCharToSkip (line 267) | public static void AddCharToSkip(char c, int kind)
    method start (line 273) | public void start() throws IOException
    method dumpBoilerPlateInHeader (line 535) | private void dumpBoilerPlateInHeader() {
    method DumpStaticVarDeclarations (line 556) | private void DumpStaticVarDeclarations() throws IOException
    method DumpFillToken (line 637) | void DumpFillToken()
    method DumpGetNextToken (line 731) | void DumpGetNextToken()
    method DumpSkipActions (line 1090) | public void DumpSkipActions()
    method DumpMoreActions (line 1160) | public void DumpMoreActions()
    method DumpTokenActions (line 1234) | public void DumpTokenActions()

FILE: src/main/java/org/javacc/parser/Lookahead.java
  class Lookahead (line 42) | public class Lookahead extends Expansion {
    method dump (line 74) | public StringBuffer dump(int indent, Set alreadyDumped) {
    method getActionTokens (line 86) | public List<Token> getActionTokens() {
    method setAmount (line 93) | public void setAmount(int amount) {
    method getAmount (line 100) | public int getAmount() {
    method setLaExpansion (line 107) | public void setLaExpansion(Expansion la_expansion) {
    method getLaExpansion (line 114) | public Expansion getLaExpansion() {
    method setExplicit (line 121) | public void setExplicit(boolean isExplicit) {
    method isExplicit (line 128) | public boolean isExplicit() {

FILE: src/main/java/org/javacc/parser/LookaheadCalc.java
  class LookaheadCalc (line 33) | public class LookaheadCalc extends JavaCCGlobals {
    method overlap (line 35) | static MatchInfo overlap(List v1, List v2) {
    method javaCodeCheck (line 62) | static boolean javaCodeCheck(List v) {
    method image (line 71) | static String image(MatchInfo m) {
    method choiceCalc (line 94) | public static void choiceCalc(Choice ch) {
    method explicitLA (line 185) | static boolean explicitLA(Expansion exp) {
    method firstChoice (line 198) | static int firstChoice(Choice ch) {
    method image (line 210) | private static String image(Expansion exp) {
    method ebnfCalc (line 220) | public static void ebnfCalc(Expansion exp, Expansion nested) {

FILE: src/main/java/org/javacc/parser/LookaheadWalk.java
  class LookaheadWalk (line 33) | public final class LookaheadWalk {
    method LookaheadWalk (line 39) | private LookaheadWalk() {}
    method listAppend (line 41) | private static void listAppend(List<MatchInfo> vToAppendTo, List<Match...
    method genFirstSet (line 47) | public static List<MatchInfo> genFirstSet(List<MatchInfo> partialMatch...
    method listSplit (line 128) | private static void listSplit(List toSplit, List mask, List partInMask...
    method genFollowSet (line 141) | public static List<MatchInfo> genFollowSet(List<MatchInfo> partialMatc...
    method reInit (line 214) | public static void reInit()

FILE: src/main/java/org/javacc/parser/Main.java
  class Main (line 43) | public class Main {
    method Main (line 44) | protected Main() {}
    method help_message (line 47) | static void help_message() {
    method printOptions (line 74) | private static void printOptions() {
    method printOptionInfo (line 127) | private static void printOptionInfo(OptionType filter, OptionInfo opti...
    method padRight (line 134) | private static String padRight(String name, int maxLengthInt) {
    method main (line 154) | public static void main(String args[]) throws Exception {
    method mainProgram (line 164) | public static int mainProgram(String args[]) throws Exception {
    method unhandledLanguageExit (line 312) | private static int unhandledLanguageExit(String outputLanguage) {
    method reInitAll (line 317) | public static void reInitAll()

FILE: src/main/java/org/javacc/parser/MatchInfo.java
  class MatchInfo (line 33) | public class MatchInfo {
    method reInit (line 37) | public static void reInit()

FILE: src/main/java/org/javacc/parser/MetaParseException.java
  class MetaParseException (line 34) | public class MetaParseException extends ParseException {

FILE: src/main/java/org/javacc/parser/Nfa.java
  class Nfa (line 33) | public class Nfa
    method Nfa (line 38) | public Nfa()
    method Nfa (line 44) | public Nfa(NfaState startGiven, NfaState finalGiven)

FILE: src/main/java/org/javacc/parser/NfaState.java
  class NfaState (line 49) | public class NfaState
    method ReInit (line 75) | public static void ReInit()
    method NfaState (line 122) | NfaState()
    method CreateClone (line 130) | NfaState CreateClone()
    method InsertInOrder (line 145) | static void InsertInOrder(List v, NfaState s)
    method ExpandCharArr (line 158) | private static char[] ExpandCharArr(char[] oldArr, int incr)
    method AddMove (line 165) | void AddMove(NfaState newState)
    method AddASCIIMove (line 171) | private final void AddASCIIMove(char c)
    method AddChar (line 176) | void AddChar(char c)
    method AddRange (line 229) | void AddRange(char left, char right)
    method EqualCharArr (line 297) | private static boolean EqualCharArr(char[] arr1, char[] arr2)
    method EpsilonClosure (line 324) | private void EpsilonClosure()
    method UsefulState (line 361) | private boolean UsefulState()
    method HasTransitions (line 366) | public boolean HasTransitions()
    method MergeMoves (line 373) | void MergeMoves(NfaState other)
    method CreateEquivState (line 427) | NfaState CreateEquivState(List<NfaState> states)
    method GetEquivalentRunTimeState (line 451) | private NfaState GetEquivalentRunTimeState()
    method GenerateCode (line 486) | void GenerateCode()
    method ComputeClosures (line 518) | public static void ComputeClosures()
    method OptimizeEpsilonMoves (line 544) | void OptimizeEpsilonMoves(boolean optReqd)
    method GenerateNextStatesCode (line 672) | void GenerateNextStatesCode()
    method GetEpsilonMovesString (line 678) | String GetEpsilonMovesString()
    method CanStartNfaUsingAscii (line 722) | public static boolean CanStartNfaUsingAscii(char c)
    method CanMoveUsingChar (line 745) | final boolean CanMoveUsingChar(char c)
    method getFirstValidPos (line 781) | public int getFirstValidPos(String s, int i, int len)
    method MoveFrom (line 799) | public int MoveFrom(char c, List newStates)
    method MoveFromSet (line 812) | public static int MoveFromSet(char c, List states, List newStates)
    method moveFromSetForRegEx (line 825) | public static int moveFromSetForRegEx(char c, NfaState[] states, NfaSt...
    method GenerateNonAsciiMoves (line 871) | void GenerateNonAsciiMoves(CodeGenerator codeGenerator)
    method UpdateDuplicateNonAsciiMoves (line 1070) | private void UpdateDuplicateNonAsciiMoves()
    method EqualLoByteVectors (line 1087) | private static boolean EqualLoByteVectors(List vec1, List vec2)
    method EqualNonAsciiMoveIndices (line 1108) | private static boolean EqualNonAsciiMoveIndices(int[] moves1, int[] mo...
    method AllBitsSet (line 1133) | static boolean AllBitsSet(String bitVec)
    method AddStartStateSet (line 1138) | static int AddStartStateSet(String stateSetString)
    method AddCompositeStateSet (line 1143) | private static int AddCompositeStateSet(String stateSetString, boolean...
    method StateNameForComposite (line 1223) | private static int StateNameForComposite(String stateSetString)
    method InitStateName (line 1228) | static int InitStateName()
    method GenerateInitMoves (line 1237) | public int GenerateInitMoves(CodeGenerator codeGenerator)
    method GetStateSetIndicesForUse (line 1251) | private static int[] GetStateSetIndicesForUse(String arrayString)
    method DumpStateSets (line 1269) | public static void DumpStateSets(CodeGenerator codeGenerator)
    method GetStateSetString (line 1301) | static String GetStateSetString(int[] states)
    method GetStateSetString (line 1317) | static String GetStateSetString(List states)
    method NumberOfBitsSet (line 1339) | static int NumberOfBitsSet(long l)
    method OnlyOneBitSet (line 1349) | static int OnlyOneBitSet(long l)
    method ElemOccurs (line 1363) | private static int ElemOccurs(int elem, int[] arr)
    method FindCommonBlocks (line 1372) | private boolean FindCommonBlocks()
    method CheckNextOccursTogether (line 1512) | private boolean CheckNextOccursTogether()
    method FixStateSets (line 1589) | private static void FixStateSets()
    method FixNextStates (line 1632) | private final void FixNextStates(int[] newSet)
    method Intersect (line 1638) | private static boolean Intersect(String set1, String set2)
    method DumpHeadForCase (line 1660) | private static void DumpHeadForCase(CodeGenerator codeGenerator, int b...
    method PartitionStatesSetForAscii (line 1692) | private static Vector PartitionStatesSetForAscii(int[] states, int byt...
    method PrintNoBreak (line 1753) | private String PrintNoBreak(CodeGenerator codeGenerator, int byteNum, ...
    method DumpCompositeStatesAsciiMoves (line 1779) | private static void DumpCompositeStatesAsciiMoves(CodeGenerator codeGe...
    method selfLoop (line 1878) | private boolean selfLoop()
    method DumpAsciiMoveForCompositeState (line 1887) | private void DumpAsciiMoveForCompositeState(CodeGenerator codeGenerato...
    method DumpAsciiMove (line 1975) | private void DumpAsciiMove(CodeGenerator codeGenerator, int byteNum, b...
    method DumpAsciiMoves (line 2126) | private static void DumpAsciiMoves(CodeGenerator codeGenerator, int by...
    method DumpCompositeStatesNonAsciiMoves (line 2187) | private static void DumpCompositeStatesNonAsciiMoves(CodeGenerator cod...
    method DumpNonAsciiMoveForCompositeState (line 2278) | private final void DumpNonAsciiMoveForCompositeState(CodeGenerator cod...
    method DumpNonAsciiMove (line 2357) | private final void DumpNonAsciiMove(CodeGenerator codeGenerator, boole...
    method DumpCharAndRangeMoves (line 2483) | public static void DumpCharAndRangeMoves(CodeGenerator codeGenerator)
    method DumpNonAsciiMoveMethods (line 2545) | public static void DumpNonAsciiMoveMethods(CodeGenerator codeGenerator)
    method DumpNonAsciiMoveMethod (line 2560) | void DumpNonAsciiMoveMethod(CodeGenerator codeGenerator)
    method ReArrange (line 2621) | private static void ReArrange()
    method PrintBoilerPlate (line 2637) | static void PrintBoilerPlate(CodeGenerator codeGenerator)
    method PrintBoilerPlateCPP (line 2688) | static void PrintBoilerPlateCPP(CodeGenerator codeGenerator)
    method FindStatesWithNoBreak (line 2735) | private static void FindStatesWithNoBreak()
    method DumpMoveNfa (line 2833) | public static void DumpMoveNfa(CodeGenerator codeGenerator)
    method DumpStatesForStateCPP (line 3092) | public static void DumpStatesForStateCPP(CodeGenerator codeGenerator)
    method DumpStatesForState (line 3158) | public static void DumpStatesForState(CodeGenerator codeGenerator)
    method DumpStatesForKind (line 3204) | public static void DumpStatesForKind(CodeGenerator codeGenerator)
    method reInit (line 3260) | public static void reInit()
    method UpdateNfaData (line 3304) | static void UpdateNfaData(
    method BuildTokenizerData (line 3332) | public static void BuildTokenizerData(TokenizerData tokenizerData) {
    method getNfaState (line 3380) | static NfaState getNfaState(int index) {

FILE: src/main/java/org/javacc/parser/NonTerminal.java
  class NonTerminal (line 38) | public class NonTerminal extends Expansion {
    method dump (line 63) | public StringBuffer dump(int indent, Set alreadyDumped) {
    method setLhsTokens (line 71) | public void setLhsTokens(List<Token> lhsTokens) {
    method getLhsTokens (line 78) | public List<Token> getLhsTokens() {
    method setName (line 85) | public void setName(String name) {
    method getName (line 92) | public String getName() {
    method setParametrizedTypeTokens (line 99) | public void setParametrizedTypeTokens(List<Token> argument_tokens) {
    method getParametrizedTypeTokens (line 106) | public List<Token> getParametrizedTypeTokens() {
    method setArgumentTokens (line 113) | public void setArgumentTokens(List<Token> parametrized_type__tokens) {
    method getArgumentTokens (line 120) | public List<Token> getArgumentTokens() {
    method setProd (line 127) | public NormalProduction setProd(NormalProduction prod) {
    method getProd (line 134) | public NormalProduction getProd() {

FILE: src/main/java/org/javacc/parser/NormalProduction.java
  class NormalProduction (line 38) | public class NormalProduction {
    method dumpPrefix (line 117) | protected StringBuffer dumpPrefix(int indent) {
    method getSimpleName (line 124) | protected String getSimpleName() {
    method dump (line 129) | public StringBuffer dump(int indent, Set alreadyDumped) {
    method setLine (line 146) | public void setLine(int line) {
    method getLine (line 153) | public int getLine() {
    method setColumn (line 160) | public void setColumn(int column) {
    method getColumn (line 167) | public int getColumn() {
    method setParents (line 174) | void setParents(List parents) {
    method getParents (line 181) | List getParents() {
    method setAccessMod (line 188) | public void setAccessMod(String accessMod) {
    method getAccessMod (line 195) | public String getAccessMod() {
    method setLhs (line 202) | public void setLhs(String lhs) {
    method getLhs (line 209) | public String getLhs() {
    method getReturnTypeTokens (line 216) | public List<Token> getReturnTypeTokens() {
    method getParameterListTokens (line 223) | public List<Token> getParameterListTokens() {
    method setThrowsList (line 230) | public void setThrowsList(List throws_list) {
    method getThrowsList (line 237) | public List getThrowsList() {
    method setExpansion (line 244) | public void setExpansion(Expansion expansion) {
    method getExpansion (line 251) | public Expansion getExpansion() {
    method setEmptyPossible (line 258) | boolean setEmptyPossible(boolean emptyPossible) {
    method isEmptyPossible (line 266) | boolean isEmptyPossible() {
    method setLeftExpansions (line 273) | void setLeftExpansions(NormalProduction[] leftExpansions) {
    method getLeftExpansions (line 280) | NormalProduction[] getLeftExpansions() {
    method setWalkStatus (line 287) | void setWalkStatus(int walkStatus) {
    method getWalkStatus (line 294) | int getWalkStatus() {
    method setFirstToken (line 301) | public Token setFirstToken(Token firstToken) {
    method getFirstToken (line 309) | public Token getFirstToken() {
    method setLastToken (line 316) | public void setLastToken(Token lastToken) {
    method getLastToken (line 323) | public Token getLastToken() {

FILE: src/main/java/org/javacc/parser/OneOrMore.java
  class OneOrMore (line 37) | public class OneOrMore extends Expansion {
    method OneOrMore (line 44) | public OneOrMore() {}
    method OneOrMore (line 46) | public OneOrMore(Token t, Expansion e) {
    method dump (line 53) | public StringBuffer dump(int indent, Set<? super Expansion> alreadyDum...

FILE: src/main/java/org/javacc/parser/Options.java
  class Options (line 51) | public class Options {
    method Options (line 56) | protected Options() {
    type Language (line 132) | public static enum Language {
    method init (line 236) | public static void init() {
    method intValue (line 256) | public static int intValue(final String option) {
    method booleanValue (line 263) | public static boolean booleanValue(final String option) {
    method stringValue (line 270) | public static String stringValue(final String option) {
    method objectValue (line 275) | public static Object objectValue(final String option) {
    method getOptions (line 280) | public static Map<String,Object> getOptions() {
    method getOptionsString (line 310) | public static String getOptionsString(String[] interestingOptions) {
    method getTokenMgrErrorClass (line 326) | public static String getTokenMgrErrorClass() {
    method isOption (line 340) | public static boolean isOption(final String opt) {
    method upgradeValue (line 355) | public static Object upgradeValue(final String name, Object value) {
    method setInputFileOption (line 368) | public static void setInputFileOption(Object nameloc, Object valueloc,
    method getAllValidJavaTemplateTypes (line 451) | private static String getAllValidJavaTemplateTypes() {
    method getAllValidLanguages (line 455) | private static String getAllValidLanguages() {
    method setCmdLineOption (line 466) | public static void setCmdLineOption(String arg) {
    method normalize (line 561) | public static void normalize() {
    method getLookahead (line 586) | public static int getLookahead() {
    method getChoiceAmbiguityCheck (line 595) | public static int getChoiceAmbiguityCheck() {
    method getOtherAmbiguityCheck (line 604) | public static int getOtherAmbiguityCheck() {
    method getStatic (line 613) | public static boolean getStatic() {
    method getParserCodeGenerator (line 616) | public static String getParserCodeGenerator() {
    method getTokenManagerCodeGenerator (line 620) | public static String getTokenManagerCodeGenerator() {
    method getNoDfa (line 624) | public static boolean getNoDfa() {
    method getDebugParser (line 633) | public static boolean getDebugParser() {
    method getDebugLookahead (line 642) | public static boolean getDebugLookahead() {
    method getDebugTokenManager (line 651) | public static boolean getDebugTokenManager() {
    method getErrorReporting (line 660) | public static boolean getErrorReporting() {
    method getJavaUnicodeEscape (line 669) | public static boolean getJavaUnicodeEscape() {
    method getUnicodeInput (line 678) | public static boolean getUnicodeInput() {
    method getIgnoreCase (line 687) | public static boolean getIgnoreCase() {
    method getUserTokenManager (line 696) | public static boolean getUserTokenManager() {
    method getUserCharStream (line 705) | public static boolean getUserCharStream() {
    method getBuildParser (line 714) | public static boolean getBuildParser() {
    method getBuildTokenManager (line 723) | public static boolean getBuildTokenManager() {
    method getTokenManagerUsesParser (line 732) | public static boolean getTokenManagerUsesParser() {
    method getSanityCheck (line 741) | public static boolean getSanityCheck() {
    method getForceLaCheck (line 750) | public static boolean getForceLaCheck() {
    method getCommonTokenAction (line 760) | public static boolean getCommonTokenAction() {
    method getCacheTokens (line 769) | public static boolean getCacheTokens() {
    method getKeepLineColumn (line 778) | public static boolean getKeepLineColumn() {
    method getJdkVersion (line 787) | public static String getJdkVersion() {
    method getGenerateChainedException (line 797) | public static boolean getGenerateChainedException() {
    method isGenerateBoilerplateCode (line 801) | public static boolean isGenerateBoilerplateCode() {
    method isLegacyExceptionHandling (line 816) | public static boolean isLegacyExceptionHandling() {
    method getGenerateGenerics (line 826) | public static boolean getGenerateGenerics() {
    method getGenerateStringBuilder (line 835) | public static boolean getGenerateStringBuilder() {
    method getGenerateAnnotations (line 844) | public static boolean getGenerateAnnotations() {
    method getSupportClassVisibilityPublic (line 853) | public static boolean getSupportClassVisibilityPublic() {
    method jdkVersionAtLeast (line 864) | public static boolean jdkVersionAtLeast(double version) {
    method getTokenExtends (line 876) | public static String getTokenExtends() {
    method getTokenFactory (line 890) | public static String getTokenFactory() {
    method getGrammarEncoding (line 900) | public static String getGrammarEncoding() {
    method getOutputDirectory (line 913) | public static File getOutputDirectory() {
    method stringBufOrBuild (line 917) | public static String stringBufOrBuild() {
    method isValidOutputLanguage (line 944) | public static boolean isValidOutputLanguage(String language) {
    method isValidJavaTemplateType (line 949) | public static boolean isValidJavaTemplateType(String type) {
    method getOutputLanguage (line 956) | public static String getOutputLanguage() {
    method getJavaTemplateType (line 960) | public static String getJavaTemplateType() {
    method setStringOption (line 964) | public static void setStringOption(String optionName, String optionVal...
    method processCPPNamespaceOption (line 971) | public static void processCPPNamespaceOption(String optionValue) {
    method getLongType (line 989) | public static String getLongType() {
    method getBooleanType (line 1002) | public static String getBooleanType() {
    method isOutputLanguageJava (line 1015) | public static boolean isOutputLanguageJava() {
    method isOutputLanguageCpp (line 1019) | public static boolean isOutputLanguageCpp() {
    method isTokenManagerRequiresParserAccess (line 1023) | public static boolean isTokenManagerRequiresParserAccess() {
    method getDepthLimit (line 1032) | public static int getDepthLimit() {
    method getStackLimit (line 1041) | public static String getStackLimit() {
    method getUserOptions (line 1054) | public static Set<OptionInfo> getUserOptions() {

FILE: src/main/java/org/javacc/parser/OtherFilesGen.java
  class OtherFilesGen (line 41) | public class OtherFilesGen extends JavaCCGlobals implements JavaCCParser...
    method start (line 45) | static public void start(boolean isJavaModern) throws MetaParseExcepti...
    method reInit (line 183) | public static void reInit()

FILE: src/main/java/org/javacc/parser/OtherFilesGenCPP.java
  class OtherFilesGenCPP (line 39) | public class OtherFilesGenCPP extends JavaCCGlobals implements JavaCCPar...
    method start (line 41) | static public void start() throws MetaParseException {
    method printCharArray (line 164) | public static void printCharArray(java.io.PrintWriter ostr, String s) {
    method reInit (line 174) | public static void reInit()

FILE: src/main/java/org/javacc/parser/OutputFile.java
  class OutputFile (line 64) | public class OutputFile {
    method OutputFile (line 94) | public OutputFile(File file, String compatibleVersion, String[] options)
    method OutputFile (line 157) | public OutputFile(File file) throws IOException {
    method checkVersion (line 169) | private void checkVersion(File file, String versionId) {
    method checkOptions (line 206) | private void checkOptions(File file, String[] options) {
    method getPrintWriter (line 241) | public PrintWriter getPrintWriter() throws IOException {
    method close (line 272) | public void close() throws IOException {
    method getMD5sum (line 283) | private String getMD5sum() {
    method toHexString (line 292) | private static final String toHexString(byte[] bytes) {
    class NullOutputStream (line 301) | private static class NullOutputStream extends OutputStream {
      method write (line 303) | public void write(byte[] arg0, int arg1, int arg2) throws IOException {
      method write (line 306) | public void write(byte[] arg0) throws IOException {
      method write (line 309) | public void write(int arg0) throws IOException {
    class TrapClosePrintWriter (line 313) | private class TrapClosePrintWriter extends PrintWriter {
      method TrapClosePrintWriter (line 315) | public TrapClosePrintWriter(OutputStream os) {
      method closePrintWriter (line 319) | public void closePrintWriter() {
      method close (line 323) | public void close() {
    method getToolName (line 335) | public String getToolName() {
    method setToolName (line 343) | public void setToolName(String toolName) {
    method getPath (line 347) | public String getPath() {

FILE: src/main/java/org/javacc/parser/ParseEngine.java
  class ParseEngine (line 42) | public class ParseEngine {
    method javaCodeCheck (line 88) | private boolean javaCodeCheck(Expansion exp) {
    method genFirstSet (line 150) | private void genFirstSet(Expansion exp) {
    method dumpLookaheads (line 208) | private void dumpLookaheads(Lookahead[] conds, String[] actions) {
    method buildLookaheadChecker (line 233) | String buildLookaheadChecker(Lookahead[] conds, String[] actions) {
    method dumpFormattedString (line 455) | void dumpFormattedString(String str) {
    method generateCPPMethodheader (line 486) | private String generateCPPMethodheader(CppCodeProduction p) {
    method generateCPPMethodheader (line 537) | private String generateCPPMethodheader(BNFProduction p, Token t) {
    method genStackCheck (line 596) | void genStackCheck(boolean voidReturn) {
    method genStackCheckEnd (line 625) | void genStackCheckEnd() {
    method buildPhase1Routine (line 635) | void buildPhase1Routine(BNFProduction p) {
    method phase1NewLine (line 748) | void phase1NewLine() {
    method phase1ExpansionGen (line 755) | String phase1ExpansionGen(Expansion e) {
    method buildPhase2Routine (line 1009) | void buildPhase2Routine(Lookahead la) {
    method genReturn (line 1045) | String genReturn(boolean value) {
    method generate3R (line 1059) | private void generate3R(Expansion e, Phase3Data inf)
    method setupPhase3Builds (line 1110) | void setupPhase3Builds(Phase3Data inf) {
    method getTypeForToken (line 1157) | private String getTypeForToken() {
    method genjj_3Call (line 1161) | private String genjj_3Call(Expansion e)
    method buildPhase3Routine (line 1170) | void buildPhase3Routine(Phase3Data inf, boolean recursive_call) {
    method minimumSize (line 1346) | int minimumSize(Expansion e) {
    method minimumSize (line 1353) | int minimumSize(Expansion e, int oldMin) {
    method build (line 1419) | void build(CodeGenerator codeGenerator) {
    method reInit (line 1570) | public void reInit()
    method buildPhase3Table (line 1584) | void buildPhase3Table(Phase3Data inf) {
  class Phase3Data (line 1665) | class Phase3Data {
    method Phase3Data (line 1678) | Phase3Data(Expansion e, int c) {

FILE: src/main/java/org/javacc/parser/ParseGen.java
  class ParseGen (line 58) | public class ParseGen extends CodeGenerator implements JavaCCParserConst...
    method start (line 60) | public void start(boolean isJavaModernMode) throws MetaParseException {
    method reInit (line 984) | public static void reInit() {

FILE: src/main/java/org/javacc/parser/ParseGenCPP.java
  class ParseGenCPP (line 27) | public class ParseGenCPP extends ParseGen {
    method start (line 29) | public void start() throws MetaParseException {
    method reInit (line 722) | public static void reInit()

FILE: src/main/java/org/javacc/parser/ParserCodeGenerator.java
  type ParserCodeGenerator (line 3) | public interface ParserCodeGenerator {
    method generateCode (line 8) | void generateCode(CodeGenerator codeGenerator, ParserData tokenizerData);
    method finish (line 13) | void finish(CodeGenerator codeGenerator, ParserData tokenizerData);

FILE: src/main/java/org/javacc/parser/ParserData.java
  class ParserData (line 6) | public class ParserData {
    type LookaheadType (line 7) | public enum LookaheadType {
    class LookaheadInfo (line 15) | public static class LookaheadInfo {

FILE: src/main/java/org/javacc/parser/RCharacterList.java
  class RCharacterList (line 37) | public class RCharacterList extends RegularExpression {
    method ToCaseNeutral (line 175) | void ToCaseNeutral()
    method GenerateNfa (line 305) | public Nfa GenerateNfa(boolean ignoreCase)
    method Overlaps (line 398) | static boolean Overlaps(CharacterRange r1, CharacterRange r2)
    method SubRange (line 403) | static boolean SubRange(CharacterRange r1, CharacterRange r2)
    method InRange (line 408) | static boolean InRange(char c, CharacterRange range)
    method SortDescriptors (line 413) | void SortDescriptors()
    method RemoveNegation (line 504) | void RemoveNegation()
    method RCharacterList (line 605) | RCharacterList()
    method RCharacterList (line 609) | RCharacterList(char c)
    method CanMatchAnyChar (line 617) | public boolean CanMatchAnyChar()

FILE: src/main/java/org/javacc/parser/RChoice.java
  class RChoice (line 37) | public class RChoice extends RegularExpression {
    method setChoices (line 48) | public void setChoices(List choices) {
    method getChoices (line 55) | public List getChoices() {
    method GenerateNfa (line 59) | public Nfa GenerateNfa(boolean ignoreCase)
    method CompressCharLists (line 84) | void CompressCharLists()
    method CompressChoices (line 121) | void CompressChoices()
    method CheckUnmatchability (line 141) | public void CheckUnmatchability()

FILE: src/main/java/org/javacc/parser/REndOfFile.java
  class REndOfFile (line 34) | public class REndOfFile extends RegularExpression {
    method GenerateNfa (line 36) | public Nfa GenerateNfa(boolean ignoreCase)

FILE: src/main/java/org/javacc/parser/RJustName.java
  class RJustName (line 37) | public class RJustName extends RegularExpression {
    method GenerateNfa (line 44) | public Nfa GenerateNfa(boolean ignoreCase)
    method RJustName (line 49) | public RJustName() {}
    method RJustName (line 51) | public RJustName(Token token, String image) {

FILE: src/main/java/org/javacc/parser/ROneOrMore.java
  class ROneOrMore (line 35) | public class ROneOrMore extends RegularExpression {
    method GenerateNfa (line 42) | public Nfa GenerateNfa(boolean ignoreCase)
    method ROneOrMore (line 57) | public ROneOrMore() {}
    method ROneOrMore (line 59) | public ROneOrMore(Token t, RegularExpression re) {

FILE: src/main/java/org/javacc/parser/RRepetitionRange.java
  class RRepetitionRange (line 37) | public class RRepetitionRange extends RegularExpression {
    method GenerateNfa (line 47) | public Nfa GenerateNfa(boolean ignoreCase)

FILE: src/main/java/org/javacc/parser/RSequence.java
  class RSequence (line 38) | public class RSequence extends RegularExpression {
    method GenerateNfa (line 46) | public Nfa GenerateNfa(boolean ignoreCase)
    method RSequence (line 77) | RSequence()
    method RSequence (line 81) | RSequence(List<? super Object> seq)

FILE: src/main/java/org/javacc/parser/RStringLiteral.java
  class KindInfo (line 44) | final class KindInfo
    method KindInfo (line 53) | KindInfo(int maxKind)
    method InsertValidKind (line 59) | public void InsertValidKind(int kind)
    method InsertFinalKind (line 66) | public void InsertFinalKind(int kind)
  class RStringLiteral (line 78) | public class RStringLiteral extends RegularExpression {
    method RStringLiteral (line 85) | public RStringLiteral() {
    method RStringLiteral (line 88) | public RStringLiteral(Token t, String image) {
    method ReInit (line 115) | public static void ReInit()
    method DumpStrLiteralImages (line 129) | public static void DumpStrLiteralImages(CodeGenerator codeGenerator)
    method DumpStrLiteralImagesForJava (line 223) | public static void DumpStrLiteralImagesForJava(CodeGenerator codeGener...
    method GenerateDfa (line 306) | public void GenerateDfa(CodeGenerator codeGenerator, int kind)
    method GenerateNfa (line 394) | public Nfa GenerateNfa(boolean ignoreCase)
    method DumpNullStrLiterals (line 430) | static void DumpNullStrLiterals(CodeGenerator codeGenerator)
    method GetStateSetForKind (line 442) | private static int GetStateSetForKind(int pos, int kind)
    method GetLabel (line 475) | static String GetLabel(int kind)
    method GetLine (line 487) | static int GetLine(int kind)
    method GetColumn (line 492) | static int GetColumn(int kind)
    method StartsWithIgnoreCase (line 500) | static private boolean StartsWithIgnoreCase(String s1, String s2)
    method FillSubString (line 517) | static void FillSubString()
    method DumpStartWithStates (line 562) | static void DumpStartWithStates(CodeGenerator codeGenerator)
    method DumpBoilerPlate (line 620) | static void DumpBoilerPlate(CodeGenerator codeGenerator)
    method ReArrange (line 653) | static String[] ReArrange(Hashtable tab)
    method DumpDfaCode (line 678) | static void DumpDfaCode(CodeGenerator codeGenerator)
    method GetStrKind (line 1255) | static final int GetStrKind(String str)
    method GenerateNfaStartStates (line 1270) | static void GenerateNfaStartStates(CodeGenerator codeGenerator,
    method DumpNfaStartStatesCode (line 1402) | static void DumpNfaStartStatesCode(Hashtable[] statesForPos,
    method reInit (line 1588) | public static void reInit()
    method dump (line 1597) | public StringBuffer dump(int indent, Set alreadyDumped) {
    method toString (line 1602) | public String toString() {
    method UpdateStringLiteralData (line 1677) | public static void UpdateStringLiteralData(
    method BuildTokenizerData (line 1725) | public static void BuildTokenizerData(TokenizerData tokenizerData) {

FILE: src/main/java/org/javacc/parser/RZeroOrMore.java
  class RZeroOrMore (line 35) | public class RZeroOrMore extends RegularExpression {
    method GenerateNfa (line 42) | public Nfa GenerateNfa(boolean ignoreCase)
    method RZeroOrMore (line 58) | public RZeroOrMore() {}
    method RZeroOrMore (line 60) | public RZeroOrMore(Token t, RegularExpression r) {

FILE: src/main/java/org/javacc/parser/RZeroOrOne.java
  class RZeroOrOne (line 34) | public class RZeroOrOne extends RegularExpression {
    method GenerateNfa (line 41) | public Nfa GenerateNfa(boolean ignoreCase)

FILE: src/main/java/org/javacc/parser/RegExprSpec.java
  class RegExprSpec (line 35) | public class RegExprSpec {

FILE: src/main/java/org/javacc/parser/RegularExpression.java
  class RegularExpression (line 38) | public abstract class RegularExpression extends Expansion {
    method GenerateNfa (line 79) | public abstract Nfa GenerateNfa(boolean ignoreCase);
    method CanMatchAnyChar (line 81) | public boolean CanMatchAnyChar()
    method dump (line 96) | public StringBuffer dump(int indent, Set<? super Expansion> alreadyDum...

FILE: src/main/java/org/javacc/parser/Semanticize.java
  class Semanticize (line 36) | public class Semanticize extends JavaCCGlobals {
    method prepareToRemove (line 41) | static void prepareToRemove(List vec, Object item) {
    method removePreparedItems (line 46) | static void removePreparedItems() {
    method start (line 55) | static public void start() throws MetaParseException {
    method hasIgnoreCase (line 471) | public static boolean hasIgnoreCase(Hashtable<String, RegularExpressio...
    method emptyExpansionExists (line 488) | public static boolean emptyExpansionExists(Expansion exp) {
    method addLeftMost (line 523) | static private void addLeftMost(NormalProduction prod, Expansion exp) {
    method prodWalk (line 564) | static private boolean prodWalk(NormalProduction prod) {
    method rexpWalk (line 598) | static private boolean rexpWalk(RegularExpression rexp) {
    class FixRJustNames (line 655) | static class FixRJustNames extends JavaCCGlobals implements TreeWalker...
      method goDeeper (line 659) | public boolean goDeeper(Expansion e) {
      method action (line 663) | public void action(Expansion e) {
    class LookaheadFixer (line 684) | static class LookaheadFixer extends JavaCCGlobals implements TreeWalke...
      method goDeeper (line 686) | public boolean goDeeper(Expansion e) {
      method action (line 694) | public void action(Expansion e) {
    class ProductionDefinedChecker (line 743) | static class ProductionDefinedChecker extends JavaCCGlobals implements...
      method goDeeper (line 745) | public boolean goDeeper(Expansion e) {
      method action (line 753) | public void action(Expansion e) {
    class EmptyChecker (line 766) | static class EmptyChecker extends JavaCCGlobals implements TreeWalkerOp {
      method goDeeper (line 768) | public boolean goDeeper(Expansion e) {
      method action (line 776) | public void action(Expansion e) {
    class LookaheadChecker (line 794) | static class LookaheadChecker extends JavaCCGlobals implements TreeWal...
      method goDeeper (line 796) | public boolean goDeeper(Expansion e) {
      method action (line 806) | public void action(Expansion e) {
      method implicitLA (line 829) | static boolean implicitLA(Expansion exp) {
    method reInit (line 844) | public static void reInit()

FILE: src/main/java/org/javacc/parser/Sequence.java
  class Sequence (line 41) | public class Sequence extends Expansion {
    method Sequence (line 49) | public Sequence() {}
    method Sequence (line 51) | public Sequence(Token token, Lookahead lookahead) {
    method dump (line 58) | public StringBuffer dump(int indent, Set<? super Expansion> alreadyDum...

FILE: src/main/java/org/javacc/parser/SingleCharacter.java
  class SingleCharacter (line 34) | public class SingleCharacter {
    method SingleCharacter (line 49) | SingleCharacter()
    method SingleCharacter (line 53) | SingleCharacter(char c)
    method setLine (line 61) | void setLine(int line) {
    method getLine (line 68) | int getLine() {
    method setColumn (line 75) | void setColumn(int column) {
    method getColumn (line 82) | int getColumn() {

FILE: src/main/java/org/javacc/parser/TableDrivenJavaCodeGenerator.java
  class TableDrivenJavaCodeGenerator (line 14) | public class TableDrivenJavaCodeGenerator implements TokenManagerCodeGen...
    method generateCode (line 19) | @Override
    method finish (line 47) | @Override
    method dumpDfaTables (line 57) | private void dumpDfaTables(
    method dumpNfaTables (line 105) | private void dumpNfaTables(
    method dumpMatchInfo (line 233) | private void dumpMatchInfo(
    method dumpLexicalActions (line 336) | private void dumpLexicalActions(
    method generateBitVector (line 356) | private static void generateBitVector(

FILE: src/main/java/org/javacc/parser/Token.java
  class Token (line 13) | public class Token {
    method getValue (line 68) | public Object getValue() {
    method Token (line 75) | public Token() {}
    method Token (line 88) | public Token(int kind, String image)
    method equals (line 97) | public boolean equals(Object object) {
    method hashCode (line 110) | public int hashCode() {
    method toString (line 117) | public String toString()
    method newToken (line 134) | public static final Token newToken(int ofKind, String image)
    method newToken (line 146) | public static final Token newToken(int ofKind)
    class GTToken (line 154) | public static class GTToken extends Token
      method GTToken (line 156) | public GTToken(int kind, String image)

FILE: src/main/java/org/javacc/parser/TokenManagerCodeGenerator.java
  type TokenManagerCodeGenerator (line 3) | public interface TokenManagerCodeGenerator {
    method generateCode (line 8) | void generateCode(TokenizerData tokenizerData);
    method finish (line 13) | void finish(TokenizerData tokenizerData);

FILE: src/main/java/org/javacc/parser/TokenProduction.java
  class TokenProduction (line 37) | public class TokenProduction {
    method setLine (line 105) | public void setLine(int line) {
    method getLine (line 112) | public int getLine() {
    method setColumn (line 119) | public void setColumn(int column) {
    method getColumn (line 126) | public int getColumn() {

FILE: src/main/java/org/javacc/parser/TokenizerData.java
  class TokenizerData (line 10) | public class TokenizerData {
    class NfaState (line 36) | public static class NfaState {
      method NfaState (line 50) | NfaState(int index, Set<Character> characters,
    type MatchType (line 63) | public static enum MatchType {
    class MatchInfo (line 71) | public static class MatchInfo {
      method MatchInfo (line 83) | public MatchInfo(String image, int kind, MatchType matchType,
    method setParserName (line 108) | public void setParserName(String parserName) {
    method setDecls (line 112) | public void setDecls(String decls) {
    method setLiteralSequence (line 116) | public void setLiteralSequence(Map<Integer, List<String>> literalSeque...
    method setLiteralKinds (line 120) | public void setLiteralKinds(Map<Integer, List<Integer>> literalKinds) {
    method setKindToNfaStartState (line 124) | public void setKindToNfaStartState(
    method addNfaState (line 129) | public void addNfaState(int index, Set<Character> characters,
    method setInitialStates (line 137) | public void setInitialStates(Map<Integer, Integer> initialStates) {
    method setWildcardKind (line 141) | public void setWildcardKind(Map<Integer, Integer> wildcardKind) {
    method setLexStateNames (line 145) | public void setLexStateNames(String[] lexStateNames) {
    method setDefaultLexState (line 149) | public void setDefaultLexState(int defaultLexState) {
    method updateMatchInfo (line 153) | public void updateMatchInfo(Map<Integer, String> actions,

FILE: src/main/java/org/javacc/parser/TreeWalkerOp.java
  type TreeWalkerOp (line 34) | public interface TreeWalkerOp {
    method goDeeper (line 40) | boolean goDeeper(Expansion e);
    method action (line 46) | void action(Expansion e);

FILE: src/main/java/org/javacc/parser/TryBlock.java
  class TryBlock (line 37) | public class TryBlock extends Expansion {
    method dump (line 68) | public StringBuffer dump(int indent, Set alreadyDumped) {

FILE: src/main/java/org/javacc/parser/ZeroOrMore.java
  class ZeroOrMore (line 37) | public class ZeroOrMore extends Expansion {
    method ZeroOrMore (line 44) | public ZeroOrMore() {}
    method ZeroOrMore (line 46) | public ZeroOrMore(Token token, Expansion expansion) {
    method dump (line 53) | public StringBuffer dump(int indent, Set<? super Expansion> alreadyDum...

FILE: src/main/java/org/javacc/parser/ZeroOrOne.java
  class ZeroOrOne (line 37) | public class ZeroOrOne extends Expansion {
    method ZeroOrOne (line 44) | public ZeroOrOne() {}
    method ZeroOrOne (line 46) | public ZeroOrOne(Token t, Expansion e) {
    method dump (line 53) | public StringBuffer dump(int indent, Set<? super Expansion> alreadyDum...

FILE: src/main/java/org/javacc/utils/OptionInfo.java
  class OptionInfo (line 11) | public class OptionInfo implements Comparable<OptionInfo>{
    method OptionInfo (line 16) | public OptionInfo(String name, OptionType type, Object default1) {
    method getName (line 22) | public String getName() {
    method getType (line 26) | public OptionType getType() {
    method getDefault (line 30) | public Object getDefault() {
    method hashCode (line 34) | @Override
    method equals (line 45) | @Override
    method compareTo (line 69) | @Override

FILE: src/main/java/org/javacc/utils/OptionType.java
  type OptionType (line 10) | public enum OptionType {

FILE: src/main/java/org/javacc/utils/OutputFileGenerator.java
  class OutputFileGenerator (line 42) | public class OutputFileGenerator {
    method OutputFileGenerator (line 50) | public OutputFileGenerator(String templateName, Map options) {
    method generate (line 65) | public void generate(PrintWriter out) throws IOException
    method peekLine (line 74) | private String peekLine(BufferedReader in) throws IOException
    method getLine (line 82) | private String getLine(BufferedReader in) throws IOException
    method evaluate (line 93) | private boolean evaluate(String condition)
    method substitute (line 107) | private String substitute(String text) throws IOException
    method substituteWithConditional (line 172) | private String substituteWithConditional(String variableName, String v...
    method substituteWithDefault (line 191) | private String substituteWithDefault(String variableName, String defau...
    method write (line 200) | private void write(PrintWriter out, String text) throws IOException
    method process (line 218) | private void process(BufferedReader in, PrintWriter out, boolean ignor...
    method processIf (line 241) | private void processIf(BufferedReader in, PrintWriter out, boolean ign...
    method main (line 275) | public static void main(String[] args) throws Exception
    method generateFromTemplate (line 285) | public static void generateFromTemplate(

FILE: src/test/java/org/javacc/JavaCCTestCase.java
  class JavaCCTestCase (line 15) | public abstract class JavaCCTestCase extends TestCase {
    method JavaCCTestCase (line 20) | public JavaCCTestCase() {
    method JavaCCTestCase (line 27) | public JavaCCTestCase(String name) {
    method getJJDocOutputDirectory (line 34) | public String getJJDocOutputDirectory() {
    method getJJInputDirectory (line 43) | public String getJJInputDirectory() {

FILE: src/test/java/org/javacc/jjdoc/test/JJDocMainTest.java
  class JJDocMainTest (line 40) | public class JJDocMainTest extends JavaCCTestCase {
    method JJDocMainTest (line 45) | public JJDocMainTest(String name) {
    method setUp (line 53) | protected void setUp() throws Exception {
    method tearDown (line 61) | protected void tearDown() throws Exception {
    method testMain (line 68) | public void testMain() {
    method testMainProgramHTML (line 74) | public void testMainProgramHTML() throws Exception {
    method testMainProgramText (line 82) | public void testMainProgramText() throws Exception {

FILE: src/test/java/org/javacc/jjtree/JJTreeOptionsTest.java
  class JJTreeOptionsTest (line 15) | public final class JJTreeOptionsTest extends TestCase {
    method testOutputDirectory (line 16) | public void testOutputDirectory() {
    method testNodeFactory (line 39) | public void testNodeFactory() {
    method testNodeClass (line 63) | public void testNodeClass() {
    method testValidate (line 74) | public void testValidate() {
    method testValidateReturnType (line 98) | public void testValidateReturnType() {

FILE: src/test/java/org/javacc/parser/ExpansionTest.java
  class ExpansionTest (line 33) | public final class ExpansionTest extends TestCase {
    method setUp (line 38) | public void setUp() {
    method testZeroOrOneConstructor (line 46) | public void testZeroOrOneConstructor() {
    method testZeroOrMoreConstructor (line 54) | public void testZeroOrMoreConstructor() {
    method testRZeroOrMoreConstructor (line 62) | public void testRZeroOrMoreConstructor() {
    method testROneOrMoreConstructor (line 70) | public void testROneOrMoreConstructor() {
    method testOneOrMoreConstructor (line 78) | public void testOneOrMoreConstructor() {
    method testRStringLiteralConstructor (line 88) | public void testRStringLiteralConstructor() {
    method testChoiceConstructor (line 95) | public void testChoiceConstructor() {
    method testRJustNameConstructor (line 105) | public void testRJustNameConstructor() {
    method testSequenceConstructor (line 112) | public void testSequenceConstructor() {

FILE: src/test/java/org/javacc/parser/OptionsTest.java
  class OptionsTest (line 12) | public final class OptionsTest extends TestCase {
    method testDefaults (line 13) | public void testDefaults() {
    method testSetBooleanOption (line 54) | public void testSetBooleanOption() {
    method testIntBooleanOption (line 77) | public void testIntBooleanOption() {
    method testSetStringOption (line 97) | public void testSetStringOption() {
    method testSetNonexistentOption (line 117) | public void testSetNonexistentOption() {
    method testSetWrongTypeForOption (line 130) | public void testSetWrongTypeForOption() {
    method testNormalize (line 144) | public void testNormalize() {
    method testOptionsString (line 163) | public void testOptionsString() throws ParseException {

FILE: src/test/java/org/javacc/utils/OutputFileGeneratorTest.java
  class OutputFileGeneratorTest (line 13) | public class OutputFileGeneratorTest extends TestCase {
    method testStringBuffer (line 15) | public void testStringBuffer() throws IOException {
    method testStringBuilder (line 30) | public void testStringBuilder() throws IOException {

FILE: test/javaFileGeneration/expected/no-keep-line/ParseException.java
  class ParseException (line 12) | public class ParseException extends Exception {
    method ParseException (line 32) | public ParseException(Token currentTokenVal,
    method ParseException (line 53) | public ParseException() {
    method ParseException (line 58) | public ParseException(String message) {
    method initialise (line 91) | private static String initialise(Token currentToken,
    method add_escapes (line 146) | static String add_escapes(String str) {

FILE: test/javaFileGeneration/expected/no-keep-line/Parser.java
  class Parser (line 3) | public class Parser implements ParserConstants {
    method main (line 5) | public static void main(String args[]) throws Exception {
    method CompilationUnit (line 11) | static final public void CompilationUnit() throws ParseException {
    method jj_la1_init_0 (line 57) | private static void jj_la1_init_0() {
    method Parser (line 62) | public Parser(java.io.InputStream stream) {
    method Parser (line 66) | public Parser(java.io.InputStream stream, String encoding) {
    method ReInit (line 83) | static public void ReInit(java.io.InputStream stream) {
    method ReInit (line 87) | static public void ReInit(java.io.InputStream stream, String encoding) {
    method Parser (line 97) | public Parser(java.io.Reader stream) {
    method ReInit (line 114) | static public void ReInit(java.io.Reader stream) {
    method Parser (line 132) | public Parser(ParserTokenManager tm) {
    method ReInit (line 148) | public void ReInit(ParserTokenManager tm) {
    method jj_consume_token (line 156) | static private Token jj_consume_token(int kind) throws ParseException {
    method getNextToken (line 172) | static final public Token getNextToken() {
    method getToken (line 181) | static final public Token getToken(int index) {
    method jj_ntk_f (line 190) | static private int jj_ntk_f() {
    method generateParseException (line 202) | static public ParseException generateParseException() {
    method trace_enabled (line 235) | static final public boolean trace_enabled() {
    method enable_tracing (line 240) | static final public void enable_tracing() {
    method disable_tracing (line 244) | static final public void disable_tracing() {

FILE: test/javaFileGeneration/expected/no-keep-line/ParserConstants.java
  type ParserConstants (line 7) | public interface ParserConstants {

FILE: test/javaFileGeneration/expected/no-keep-line/ParserTokenManager.java
  class ParserTokenManager (line 5) | public class ParserTokenManager implements ParserConstants {
    method setDebugStream (line 10) | public static  void setDebugStream(java.io.PrintStream ds) { debugStre...
    method jjStopAtPos (line 11) | static private int jjStopAtPos(int pos, int kind)
    method jjMoveStringLiteralDfa0_0 (line 17) | static private int jjMoveStringLiteralDfa0_0(){
    method jjFillToken (line 36) | static protected Token jjFillToken()
    method getNextToken (line 57) | public static Token getNextToken()
    method SkipLexicalActions (line 110) | static void SkipLexicalActions(Token matchedToken)
    method MoreLexicalActions (line 118) | static void MoreLexicalActions()
    method TokenLexicalActions (line 127) | static void TokenLexicalActions(Token matchedToken)
    method jjCheckNAdd (line 135) | static private void jjCheckNAdd(int state)
    method jjAddStates (line 143) | static private void jjAddStates(int start, int end)
    method jjCheckNAddTwoStates (line 149) | static private void jjCheckNAddTwoStates(int state1, int state2)
    method ParserTokenManager (line 156) | public ParserTokenManager(SimpleCharStream stream){
    method ParserTokenManager (line 165) | public ParserTokenManager (SimpleCharStream stream, int lexState){
    method ReInit (line 172) | static public void ReInit(SimpleCharStream stream)
    method ReInitRounds (line 184) | static private void ReInitRounds()
    method ReInit (line 193) | static public void ReInit(SimpleCharStream stream, int lexState)
    method SwitchTo (line 201) | public static void SwitchTo(int lexState)

FILE: test/javaFileGeneration/expected/no-keep-line/SimpleCharStream.java
  class SimpleCharStream (line 8) | public class SimpleCharStream
    method setTabSize (line 26) | static public void setTabSize(int i) { tabSize = i; }
    method getTabSize (line 27) | static public int getTabSize() { return tabSize; }
    method ExpandBuff (line 31) | static protected void ExpandBuff(boolean wrapAround)
    method FillBuff (line 64) | static protected void FillBuff() throws java.io.IOException
    method BeginToken (line 109) | static public char BeginToken() throws java.io.IOException
    method readChar (line 119) | static public char readChar() throws java.io.IOException
    method getColumn (line 139) | @Deprecated
    method getLine (line 149) | @Deprecated
    method getEndColumn (line 160) | static public int getEndColumn() {
    method getEndLine (line 165) | static public int getEndLine() {
    method getBeginColumn (line 170) | static public int getBeginColumn() {
    method getBeginLine (line 175) | static public int getBeginLine() {
    method backup (line 180) | static public void backup(int amount) {
    method SimpleCharStream (line 188) | public SimpleCharStream(java.io.Reader dstream, int startline,
    method SimpleCharStream (line 202) | public SimpleCharStream(java.io.Reader dstream, int startline,
    method SimpleCharStream (line 209) | public SimpleCharStream(java.io.Reader dstream)
    method ReInit (line 215) | public void ReInit(java.io.Reader dstream, int startline,
    method ReInit (line 230) | public void ReInit(java.io.Reader dstream, int startline,
    method ReInit (line 237) | public void ReInit(java.io.Reader dstream)
    method SimpleCharStream (line 242) | public SimpleCharStream(java.io.InputStream dstream, String encoding, ...
    method SimpleCharStream (line 249) | public SimpleCharStream(java.io.InputStream dstream, int startline,
    method SimpleCharStream (line 256) | public SimpleCharStream(java.io.InputStream dstream, String encoding, ...
    method SimpleCharStream (line 263) | public SimpleCharStream(java.io.InputStream dstream, int startline,
    method SimpleCharStream (line 270) | public SimpleCharStream(java.io.InputStream dstream, String encoding) ...
    method SimpleCharStream (line 276) | public SimpleCharStream(java.io.InputStream dstream)
    method ReInit (line 282) | public void ReInit(java.io.InputStream dstream, String encoding, int s...
    method ReInit (line 289) | public void ReInit(java.io.InputStream dstream, int startline,
    method ReInit (line 296) | public void ReInit(java.io.InputStream dstream, String encoding) throw...
    method ReInit (line 302) | public void ReInit(java.io.InputStream dstream)
    method ReInit (line 307) | public void ReInit(java.io.InputStream dstream, String encoding, int s...
    method ReInit (line 313) | public void ReInit(java.io.InputStream dstream, int startline,
    method GetImage (line 319) | static public String GetImage()
    method GetSuffix (line 329) | static public char[] GetSuffix(int len)
    method Done (line 346) | static public void Done()

FILE: test/javaFileGeneration/expected/no-keep-line/Token.java
  class Token (line 7) | public class Token implements java.io.Serializable {
    method getValue (line 60) | public Object getValue() {
    method Token (line 67) | public Token() {}
    method Token (line 72) | public Token(int kind)
    method Token (line 80) | public Token(int kind, String image)
    method toString (line 89) | @Override
    method newToken (line 107) | public static Token newToken(int ofKind, String image)
    method newToken (line 115) | public static Token newToken(int ofKind)

FILE: test/javaFileGeneration/expected/no-keep-line/TokenMgrError.java
  class TokenMgrError (line 4) | public class TokenMgrError extends Error
    method addEscapes (line 48) | protected static final String addEscapes(String str) {
    method LexicalErr (line 103) | protected static String LexicalErr(boolean EOFSeen, int lexState, int ...
    method getMessage (line 120) | @Override
    method TokenMgrError (line 130) | public TokenMgrError() {
    method TokenMgrError (line 134) | public TokenMgrError(String message, int reason) {
    method TokenMgrError (line 140) | public TokenMgrError(boolean EOFSeen, int lexState, int errorLine, int...

FILE: test/javaFileGeneration/expected/non-static/ParseException.java
  class ParseException (line 12) | public class ParseException extends Exception {
    method ParseException (line 32) | public ParseException(Token currentTokenVal,
    method ParseException (line 53) | public ParseException() {
    method ParseException (line 58) | public ParseException(String message) {
    method initialise (line 91) | private static String initialise(Token currentToken,
    method add_escapes (line 147) | static String add_escapes(String str) {

FILE: test/javaFileGeneration/expected/non-static/Parser.java
  class Parser (line 3) | public class Parser implements ParserConstants {
    method main (line 5) | public static void main(String args[]) throws Exception {
    method CompilationUnit (line 11) | final public void CompilationUnit() throws ParseException {
    method jj_la1_init_0 (line 56) | private static void jj_la1_init_0() {
    method Parser (line 61) | public Parser(java.io.InputStream stream) {
    method Parser (line 65) | public Parser(java.io.InputStream stream, String encoding) {
    method ReInit (line 75) | public void ReInit(java.io.InputStream stream) {
    method ReInit (line 79) | public void ReInit(java.io.InputStream stream, String encoding) {
    method Parser (line 89) | public Parser(java.io.Reader stream) {
    method ReInit (line 99) | public void ReInit(java.io.Reader stream) {
    method Parser (line 117) | public Parser(ParserTokenManager tm) {
    method ReInit (line 126) | public void ReInit(ParserTokenManager tm) {
    method jj_consume_token (line 134) | private Token jj_consume_token(int kind) throws ParseException {
    method getNextToken (line 150) | final public Token getNextToken() {
    method getToken (line 159) | final public Token getToken(int index) {
    method jj_ntk_f (line 168) | private int jj_ntk_f() {
    method generateParseException (line 180) | public ParseException generateParseException() {
    method trace_enabled (line 213) | final public boolean trace_enabled() {
    method enable_tracing (line 218) | final public void enable_tracing() {
    method disable_tracing (line 222) | final public void disable_tracing() {

FILE: test/javaFileGeneration/expected/non-static/ParserConstants.java
  type ParserConstants (line 7) | public interface ParserConstants {

FILE: test/javaFileGeneration/expected/non-static/ParserTokenManager.java
  class ParserTokenManager (line 5) | public class ParserTokenManager implements ParserConstants {
    method setDebugStream (line 10) | public  void setDebugStream(java.io.PrintStream ds) { debugStream = ds; }
    method jjStopAtPos (line 11) | private int jjStopAtPos(int pos, int kind)
    method jjMoveStringLiteralDfa0_0 (line 17) | private int jjMoveStringLiteralDfa0_0(){
    method jjFillToken (line 36) | protected Token jjFillToken()
    method getNextToken (line 70) | public Token getNextToken()
    method SkipLexicalActions (line 123) | void SkipLexicalActions(Token matchedToken)
    method MoreLexicalActions (line 131) | void MoreLexicalActions()
    method TokenLexicalActions (line 140) | void TokenLexicalActions(Token matchedToken)
    method jjCheckNAdd (line 148) | private void jjCheckNAdd(int state)
    method jjAddStates (line 156) | private void jjAddStates(int start, int end)
    method jjCheckNAddTwoStates (line 162) | private void jjCheckNAddTwoStates(int state1, int state2)
    method ParserTokenManager (line 169) | public ParserTokenManager(SimpleCharStream stream){
    method ParserTokenManager (line 178) | public ParserTokenManager (SimpleCharStream stream, int lexState){
    method ReInit (line 185) | public void ReInit(SimpleCharStream stream)
    method ReInitRounds (line 197) | private void ReInitRounds()
    method ReInit (line 206) | public void ReInit(SimpleCharStream stream, int lexState)
    method SwitchTo (line 214) | public void SwitchTo(int lexState)

FILE: test/javaFileGeneration/expected/non-static/SimpleCharStream.java
  class SimpleCharStream (line 8) | public class SimpleCharStream
    method setTabSize (line 34) | public void setTabSize(int i) { tabSize = i; }
    method getTabSize (line 35) | public int getTabSize() { return tabSize; }
    method ExpandBuff (line 39) | protected void ExpandBuff(boolean wrapAround)
    method FillBuff (line 88) | protected void FillBuff() throws java.io.IOException
    method BeginToken (line 133) | public char BeginToken() throws java.io.IOException
    method UpdateLineColumn (line 142) | protected void UpdateLineColumn(char c)
    method readChar (line 183) | public char readChar() throws java.io.IOException
    method getColumn (line 204) | @Deprecated
    method getLine (line 214) | @Deprecated
    method getEndColumn (line 225) | public int getEndColumn() {
    method getEndLine (line 230) | public int getEndLine() {
    method getBeginColumn (line 235) | public int getBeginColumn() {
    method getBeginLine (line 240) | public int getBeginLine() {
    method backup (line 245) | public void backup(int amount) {
    method SimpleCharStream (line 253) | public SimpleCharStream(java.io.Reader dstream, int startline,
    method SimpleCharStream (line 267) | public SimpleCharStream(java.io.Reader dstream, int startline,
    method SimpleCharStream (line 274) | public SimpleCharStream(java.io.Reader dstream)
    method ReInit (line 280) | public void ReInit(java.io.Reader dstream, int startline,
    method ReInit (line 300) | public void ReInit(java.io.Reader dstream, int startline,
    method ReInit (line 307) | public void ReInit(java.io.Reader dstream)
    method SimpleCharStream (line 312) | public SimpleCharStream(java.io.InputStream dstream, String encoding, ...
    method SimpleCharStream (line 319) | public SimpleCharStream(java.io.InputStream dstream, int startline,
    method SimpleCharStream (line 326) | public SimpleCharStream(java.io.InputStream dstream, String encoding, ...
    method SimpleCharStream (line 333) | public SimpleCharStream(java.io.InputStream dstream, int startline,
    method SimpleCharStream (line 340) | public SimpleCharStream(java.io.InputStream dstream, String encoding) ...
    method SimpleCharStream (line 346) | public SimpleCharStream(java.io.InputStream dstream)
    method ReInit (line 352) | public void ReInit(java.io.InputStream dstream, String encoding, int s...
    method ReInit (line 359) | public void ReInit(java.io.InputStream dstream, int startline,
    method ReInit (line 366) | public void ReInit(java.io.InputStream dstream, String encoding) throw...
    method ReInit (line 372) | public void ReInit(java.io.InputStream dstream)
    method ReInit (line 377) | public void ReInit(java.io.InputStream dstream, String encoding, int s...
    method ReInit (line 383) | public void ReInit(java.io.InputStream dstream, int startline,
    method GetImage (line 389) | public String GetImage()
    method GetSuffix (line 399) | public char[] GetSuffix(int len)
    method Done (line 416) | public void Done()
    method adjustBeginLineColumn (line 426) | public void adjustBeginLineColumn(int newLine, int newCol)
    method getTrackLineColumn (line 469) | boolean getTrackLineColumn() { return trackLineColumn; }
    method setTrackLineColumn (line 470) | void setTrackLineColumn(boolean tlc) { trackLineColumn = tlc; }

FILE: test/javaFileGeneration/expected/non-static/Token.java
  class Token (line 7) | public class Token implements java.io.Serializable {
    method getValue (line 69) | public Object getValue() {
    method Token (line 76) | public Token() {}
    method Token (line 81) | public Token(int kind)
    method Token (line 89) | public Token(int kind, String image)
    method toString (line 98) | @Override
    method newToken (line 116) | public static Token newToken(int ofKind, String image)
    method newToken (line 124) | public static Token newToken(int ofKind)

FILE: test/javaFileGeneration/expected/non-static/TokenMgrError.java
  class TokenMgrError (line 4) | public class TokenMgrError extends Error
    method addEscapes (line 48) | protected static final String addEscapes(String str) {
    method LexicalErr (line 103) | protected static String LexicalErr(boolean EOFSeen, int lexState, int ...
    method getMessage (line 120) | @Override
    method TokenMgrError (line 130) | public TokenMgrError() {
    method TokenMgrError (line 134) | public TokenMgrError(String message, int reason) {
    method TokenMgrError (line 140) | public TokenMgrError(boolean EOFSeen, int lexState, int errorLine, int...

FILE: test/javaFileGeneration/expected/not-public/ParseException.java
  class ParseException (line 12) | public class ParseException extends Exception {
    method ParseException (line 32) | public ParseException(Token currentTokenVal,
    method ParseException (line 53) | public ParseException() {
    method ParseException (line 58) | public ParseException(String message) {
    method initialise (line 91) | private static String initialise(Token currentToken,
    method add_escapes (line 147) | static String add_escapes(String str) {

FILE: test/javaFileGeneration/expected/not-public/Parser.java
  class Parser (line 3) | public class Parser implements ParserConstants {
    method main (line 5) | public static void main(String args[]) throws Exception {
    method CompilationUnit (line 11) | static final public void CompilationUnit() throws ParseException {
    method jj_la1_init_0 (line 57) | private static void jj_la1_init_0() {
    method Parser (line 62) | public Parser(java.io.InputStream stream) {
    method Parser (line 66) | public Parser(java.io.InputStream stream, String encoding) {
    method ReInit (line 83) | static public void ReInit(java.io.InputStream stream) {
    method ReInit (line 87) | static public void ReInit(java.io.InputStream stream, String encoding) {
    method Parser (line 97) | public Parser(java.io.Reader stream) {
    method ReInit (line 114) | static public void ReInit(java.io.Reader stream) {
    method Parser (line 132) | public Parser(ParserTokenManager tm) {
    method ReInit (line 148) | public void ReInit(ParserTokenManager tm) {
    method jj_consume_token (line 156) | static private Token jj_consume_token(int kind) throws ParseException {
    method getNextToken (line 172) | static final public Token getNextToken() {
    method getToken (line 181) | static final public Token getToken(int index) {
    method jj_ntk_f (line 190) | static private int jj_ntk_f() {
    method generateParseException (line 202) | static public ParseException generateParseException() {
    method trace_enabled (line 235) | static final public boolean trace_enabled() {
    method enable_tracing (line 240) | static final public void enable_tracing() {
    method disable_tracing (line 244) | static final public void disable_tracing() {

FILE: test/javaFileGeneration/expected/not-public/ParserConstants.java
  type ParserConstants (line 7) | interface ParserConstants {

FILE: test/javaFileGeneration/expected/not-public/ParserTokenManager.java
  class ParserTokenManager (line 5) | class ParserTokenManager implements ParserConstants {
    method setDebugStream (line 10) | public static  void setDebugStream(java.io.PrintStream ds) { debugStre...
    method jjStopAtPos (line 11) | static private int jjStopAtPos(int pos, int kind)
    method jjMoveStringLiteralDfa0_0 (line 17) | static private int jjMoveStringLiteralDfa0_0(){
    method jjFillToken (line 36) | static protected Token jjFillToken()
    method getNextToken (line 70) | public static Token getNextToken()
    method SkipLexicalActions (line 123) | static void SkipLexicalActions(Token matchedToken)
    method MoreLexicalActions (line 131) | static void MoreLexicalActions()
    method TokenLexicalActions (line 140) | static void TokenLexicalActions(Token matchedToken)
    method jjCheckNAdd (line 148) | static private void jjCheckNAdd(int state)
    method jjAddStates (line 156) | static private void jjAddStates(int start, int end)
    method jjCheckNAddTwoStates (line 162) | static private void jjCheckNAddTwoStates(int state1, int state2)
    method ParserTokenManager (line 169) | public ParserTokenManager(SimpleCharStream stream){
    method ParserTokenManager (line 178) | public ParserTokenManager (SimpleCharStream stream, int lexState){
    method ReInit (line 185) | static public void ReInit(SimpleCharStream stream)
    method ReInitRounds (line 197) | static private void ReInitRounds()
    method ReInit (line 206) | static public void ReInit(SimpleCharStream stream, int lexState)
    method SwitchTo (line 214) | public static void SwitchTo(int lexState)

FILE: test/javaFileGeneration/expected/not-public/SimpleCharStream.java
  class SimpleCharStream (line 8) | class SimpleCharStream
    method setTabSize (line 34) | static public void setTabSize(int i) { tabSize = i; }
    method getTabSize (line 35) | static public int getTabSize() { return tabSize; }
    method ExpandBuff (line 39) | static protected void ExpandBuff(boolean wrapAround)
    method FillBuff (line 88) | static protected void FillBuff() throws java.io.IOException
    method BeginToken (line 133) | static public char BeginToken() throws java.io.IOException
    method UpdateLineColumn (line 142) | static protected void UpdateLineColumn(char c)
    method readChar (line 183) | static public char readChar() throws java.io.IOException
    method getColumn (line 204) | @Deprecated
    method getLine (line 214) | @Deprecated
    method getEndColumn (line 225) | static public int getEndColumn() {
    method getEndLine (line 230) | static public int getEndLine() {
    method getBeginColumn (line 235) | static public int getBeginColumn() {
    method getBeginLine (line 240) | static public int getBeginLine() {
    method backup (line 245) | static public void backup(int amount) {
    method SimpleCharStream (line 253) | public SimpleCharStream(java.io.Reader dstream, int startline,
    method SimpleCharStream (line 271) | public SimpleCharStream(java.io.Reader dstream, int startline,
    method SimpleCharStream (line 278) | public SimpleCharStream(java.io.Reader dstream)
    method ReInit (line 284) | public void ReInit(java.io.Reader dstream, int startline,
    method ReInit (line 304) | public void ReInit(java.io.Reader dstream, int startline,
    method ReInit (line 311) | public void ReInit(java.io.Reader dstream)
    method SimpleCharStream (line 316) | public SimpleCharStream(java.io.InputStream dstream, String encoding, ...
    method SimpleCharStream (line 323) | public SimpleCharStream(java.io.InputStream dstream, int startline,
    method SimpleCharStream (line 330) | public SimpleCharStream(java.io.InputStream dstream, String encoding, ...
    method SimpleCharStream (line 337) | public SimpleCharStream(java.io.InputStream dstream, int startline,
    method SimpleCharStream (line 344) | public SimpleCharStream(java.io.InputStream dstream, String encoding) ...
    method SimpleCharStream (line 350) | public SimpleCharStream(java.io.InputStream dstream)
    method ReInit (line 356) | public void ReInit(java.io.InputStream dstream, String encoding, int s...
    method ReInit (line 363) | public void ReInit(java.io.InputStream dstream, int startline,
    method ReInit (line 370) | public void ReInit(java.io.InputStream dstream, String encoding) throw...
    method ReInit (line 376) | public void ReInit(java.io.InputStream dstream)
    method ReInit (line 381) | public void ReInit(java.io.InputStream dstream, String encoding, int s...
    method ReInit (line 387) | public void ReInit(java.io.InputStream dstream, int startline,
    method GetImage (line 393) | static public String GetImage()
    method GetSuffix (line 403) | static public char[] GetSuffix(int len)
    method Done (line 420) | static public void Done()
    method adjustBeginLineColumn (line 430) | static public void adjustBeginLineColumn(int newLine, int newCol)
    method getTrackLineColumn (line 473) | static boolean getTrackLineColumn() { return trackLineColumn; }
    method setTrackLineColumn (line 474) | static void setTrackLineColumn(boolean tlc) { trackLineColumn = tlc; }

FILE: test/javaFileGeneration/expected/not-public/Token.java
  class Token (line 7) | class Token implements java.io.Serializable {
    method getValue (line 69) | public Object getValue() {
    method Token (line 76) | public Token() {}
    method Token (line 81) | public Token(int kind)
    method Token (line 89) | public Token(int kind, String image)
    method toString (line 98) | @Override
    method newToken (line 116) | public static Token newToken(int ofKind, String image)
    method newToken (line 124) | public static Token newToken(int ofKind)

FILE: test/javaFileGeneration/expected/not-public/TokenMgrError.java
  class TokenMgrError (line 4) | class TokenMgrError extends Error
    method addEscapes (line 48) | protected static final String addEscapes(String str) {
    method LexicalErr (line 103) | protected static String LexicalErr(boolean EOFSeen, int lexState, int ...
    method getMessage (line 120) | @Override
    method TokenMgrError (line 130) | public TokenMgrError() {
    method TokenMgrError (line 134) | public TokenMgrError(String message, int reason) {
    method TokenMgrError (line 140) | public TokenMgrError(boolean EOFSeen, int lexState, int errorLine, int...

FILE: test/javaFileGeneration/expected/static/ParseException.java
  class ParseException (line 12) | public class ParseException extends Exception {
    method ParseException (line 32) | public ParseException(Token currentTokenVal,
    method ParseException (line 53) | public ParseException() {
    method ParseException (line 58) | public ParseException(String message) {
    method initialise (line 91) | private static String initialise(Token currentToken,
    method add_escapes (line 147) | static String add_escapes(String str) {

FILE: test/javaFileGeneration/expected/static/Parser.java
  class Parser (line 3) | public class Parser implements ParserConstants {
    method main (line 5) | public static void main(String args[]) throws Exception {
    method CompilationUnit (line 11) | static final public void CompilationUnit() throws ParseException {
    method jj_la1_init_0 (line 57) | private static void jj_la1_init_0() {
    method Parser (line 62) | public Parser(java.io.InputStream stream) {
    method Parser (line 66) | public Parser(java.io.InputStream stream, String encoding) {
    method ReInit (line 83) | static public void ReInit(java.io.InputStream stream) {
    method ReInit (line 87) | static public void ReInit(java.io.InputStream stream, String encoding) {
    method Parser (line 97) | public Parser(java.io.Reader stream) {
    method ReInit (line 114) | static public void ReInit(java.io.Reader stream) {
    method Parser (line 132) | public Parser(ParserTokenManager tm) {
    method ReInit (line 148) | public void ReInit(ParserTokenManager tm) {
    method jj_consume_token (line 156) | static private Token jj_consume_token(int kind) throws ParseException {
    method getNextToken (line 172) | static final public Token getNextToken() {
    method getToken (line 181) | static final public Token getToken(int index) {
    method jj_ntk_f (line 190) | static private int jj_ntk_f() {
    method generateParseException (line 202) | static public ParseException generateParseException() {
    method trace_enabled (line 235) | static final public boolean trace_enabled() {
    method enable_tracing (line 240) | static final public void enable_tracing() {
    method disable_tracing (line 244) | static final public void disable_tracing() {

FILE: test/javaFileGeneration/expected/static/ParserConstants.java
  type ParserConstants (line 7) | public interface ParserConstants {

FILE: test/javaFileGeneration/expected/static/ParserTokenManager.java
  class ParserTokenManager (line 5) | public class ParserTokenManager implements ParserConstants {
    method setDebugStream (line 10) | public static  void setDebugStream(java.io.PrintStream ds) { debugStre...
    method jjStopAtPos (line 11) | static private int jjStopAtPos(int pos, int kind)
    method jjMoveStringLiteralDfa0_0 (line 17) | static private int jjMoveStringLiteralDfa0_0(){
    method jjFillToken (line 36) | static protected Token jjFillToken()
    method getNextToken (line 70) | public static Token getNextToken()
    method SkipLexicalActions (line 123) | static void SkipLexicalActions(Token matchedToken)
    method MoreLexicalActions (line 131) | static void MoreLexicalActions()
    method TokenLexicalActions (line 140) | static void TokenLexicalActions(Token matchedToken)
    method jjCheckNAdd (line 148) | static private void jjCheckNAdd(int state)
    method jjAddStates (line 156) | static private void jjAddStates(int start, int end)
    method jjCheckNAddTwoStates (line 162) | static private void jjCheckNAddTwoStates(int state1, int state2)
    method ParserTokenManager (line 169) | public ParserTokenManager(SimpleCharStream stream){
    method ParserTokenManager (line 178) | public ParserTokenManager (SimpleCharStream stream, int lexState){
    method ReInit (line 185) | static public void ReInit(SimpleCharStream stream)
    method ReInitRounds (line 197) | static private void ReInitRounds()
    method ReInit (line 206) | static public void ReInit(SimpleCharStream stream, int lexState)
    method SwitchTo (line 214) | public static void SwitchTo(int lexState)

FILE: test/javaFileGeneration/expected/static/SimpleCharStream.java
  class SimpleCharStream (line 8) | public class SimpleCharStream
    method setTabSize (line 34) | static public void setTabSize(int i) { tabSize = i; }
    method getTabSize (line 35) | static public int getTabSize() { return tabSize; }
    method ExpandBuff (line 39) | static protected void ExpandBuff(boolean wrapAround)
    method FillBuff (line 88) | static protected void FillBuff() throws java.io.IOException
    method BeginToken (line 133) | static public char BeginToken() throws java.io.IOException
    method UpdateLineColumn (line 142) | static protected void UpdateLineColumn(char c)
    method readChar (line 183) | static public char readChar() throws java.io.IOException
    method getColumn (line 204) | @Deprecated
    method getLine (line 214) | @Deprecated
    method getEndColumn (line 225) | static public int getEndColumn() {
    method getEndLine (line 230) | static public int getEndLine() {
    method getBeginColumn (line 235) | static public int getBeginColumn() {
    method getBeginLine (line 240) | static public int getBeginLine() {
    method backup (line 245) | static public void backup(int amount) {
    method SimpleCharStream (line 253) | public SimpleCharStream(java.io.Reader dstream, int startline,
    method SimpleCharStream (line 271) | public SimpleCharStream(java.io.Reader dstream, int startline,
    method SimpleCharStream (line 278) | public SimpleCharStream(java.io.Reader dstream)
    method ReInit (line 284) | public void ReInit(java.io.Reader dstream, int startline,
    method ReInit (line 304) | public void ReInit(java.io.Reader dstream, int startline,
    method ReInit (line 311) | public void ReInit(java.io.Reader dstream)
    method SimpleCharStream (line 316) | public SimpleCharStream(java.io.InputStream dstream, String encoding, ...
    method SimpleCharStream (line 323) | public SimpleCharStream(java.io.InputStream dstream, int startline,
    method SimpleCharStream (line 330) | public SimpleCharStream(java.io.InputStream dstream, String encoding, ...
    method SimpleCharStream (line 337) | public SimpleCharStream(java.io.InputStream dstream, int startline,
    method SimpleCharStream (line 344) | public SimpleCharStream(java.io.InputStream dstream, String encoding) ...
    method SimpleCharStream (line 350) | public SimpleCharStream(java.io.InputStream dstream)
    method ReInit (line 356) | public void ReInit(java.io.InputStream dstream, String encoding, int s...
    method ReInit (line 363) | public void ReInit(java.io.InputStream dstream, int startline,
    method ReInit (line 370) | public void ReInit(java.io.InputStream dstream, String encoding) throw...
    method ReInit (line 376) | public void ReInit(java.io.InputStream dstream)
    method ReInit (line 381) | public void ReInit(java.io.InputStream dstream, String encoding, int s...
    method ReInit (line 387) | public void ReInit(java.io.InputStream dstream, int startline,
    method GetImage (line 393) | static public String GetImage()
    method GetSuffix (line 403) | static public char[] GetSuffix(int len)
    method Done (line 420) | static public void Done()
    method adjustBeginLineColumn (line 430) | static public void adjustBeginLineColumn(int newLine, int newCol)
    method getTrackLineColumn (line 473) | static boolean getTrackLineColumn() { return trackLineColumn; }
    method setTrackLineColumn (line 474) | static void setTrackLineColumn(boolean tlc) { trackLineColumn = tlc; }

FILE: test/javaFileGeneration/expected/static/Token.java
  class Token (line 7) | public class Token implements java.io.Serializable {
    method getValue (line 69) | public Object getValue() {
    method Token (line 76) | public Token() {}
    method Token (line 81) | public Token(int kind)
    method Token (line 89) | public Token(int kind, String image)
    method toString (line 98) | @Override
    method newToken (line 116) | public static Token newToken(int ofKind, String image)
    method newToken (line 124) | public static Token newToken(int ofKind)

FILE: test/javaFileGeneration/expected/static/TokenMgrError.java
  class TokenMgrError (line 4) | public class TokenMgrError extends Error
    method addEscapes (line 48) | protected static final String addEscapes(String str) {
    method LexicalErr (line 103) | protected static String LexicalErr(boolean EOFSeen, int lexState, int ...
    method getMessage (line 120) | @Override
    method TokenMgrError (line 130) | public TokenMgrError() {
    method TokenMgrError (line 134) | public TokenMgrError(String message, int reason) {
    method TokenMgrError (line 140) | public TokenMgrError(boolean EOFSeen, int lexState, int errorLine, int...

FILE: test/javaFiles/BaseSimpleCharStream.java
  class SimpleCharStream (line 8) | public class SimpleCharStream
    method setTabSize (line 33) | protected void setTabSize(int i) { tabSize = i; }
    method getTabSize (line 34) | protected int getTabSize(int i) { return tabSize; }
    method ExpandBuff (line 37) | protected void ExpandBuff(boolean wrapAround)
    method FillBuff (line 87) | protected void FillBuff() throws java.io.IOException
    method BeginToken (line 133) | public char BeginToken() throws java.io.IOException
    method UpdateLineColumn (line 142) | protected void UpdateLineColumn(char c)
    method readChar (line 183) | public char readChar() throws java.io.IOException
    method getColumn (line 209) | public int getColumn() {
    method getLine (line 218) | public int getLine() {
    method getEndColumn (line 223) | public int getEndColumn() {
    method getEndLine (line 228) | public int getEndLine() {
    method getBeginColumn (line 233) | public int getBeginColumn() {
    method getBeginLine (line 238) | public int getBeginLine() {
    method backup (line 243) | public void backup(int amount) {
    method SimpleCharStream (line 251) | public SimpleCharStream(java.io.Reader dstream, int startline,
    method SimpleCharStream (line 265) | public SimpleCharStream(java.io.Reader dstream, int startline,
    method SimpleCharStream (line 272) | public SimpleCharStream(java.io.Reader dstream)
    method ReInit (line 278) | public void ReInit(java.io.Reader dstream, int startline,
    method ReInit (line 298) | public void ReInit(java.io.Reader dstream, int startline,
    method ReInit (line 305) | public void ReInit(java.io.Reader dstream)
    method SimpleCharStream (line 310) | public SimpleCharStream(java.io.InputStream dstream, String encoding, ...
    method SimpleCharStream (line 317) | public SimpleCharStream(java.io.InputStream dstream, int startline,
    method SimpleCharStream (line 324) | public SimpleCharStream(java.io.InputStream dstream, String encoding, ...
    method SimpleCharStream (line 331) | public SimpleCharStream(java.io.InputStream dstream, int startline,
    method SimpleCharStream (line 338) | public SimpleCharStream(java.io.InputStream dstream, String encoding) ...
    method SimpleCharStream (line 344) | public SimpleCharStream(java.io.InputStream dstream)
    method ReInit (line 350) | public void ReInit(java.io.InputStream dstream, String encoding, int s...
    method ReInit (line 357) | public void ReInit(java.io.InputStream dstream, int startline,
    method ReInit (line 364) | public void ReInit(java.io.InputStream dstream, String encoding) throw...
    method ReInit (line 370) | public void ReInit(java.io.InputStream dstream)
    method ReInit (line 375) | public void ReInit(java.io.InputStream dstream, String encoding, int s...
    method ReInit (line 381) | public void ReInit(java.io.InputStream dstream, int startline,
    method GetImage (line 387) | public String GetImage()
    method GetSuffix (line 397) | public char[] GetSuffix(int len)
    method Done (line 414) | public void Done()
    method adjustBeginLineColumn (line 424) | public void adjustBeginLineColumn(int newLine, int newCol)

FILE: test/javaFiles/BaseSimpleNode.java
  class SimpleNode (line 3) | public class SimpleNode implements Node {
    method SimpleNode (line 10) | public SimpleNode(int i) {
    method SimpleNode (line 14) | public SimpleNode(Tree p, int i) {
    method jjtOpen (line 19) | public void jjtOpen() {
    method jjtClose (line 22) | public void jjtClose() {
    method jjtSetParent (line 25) | public void jjtSetParent(Node n) { parent = n; }
    method jjtGetParent (line 26) | public Node jjtGetParent() { return parent; }
    method jjtAddChild (line 28) | public void jjtAddChild(Node n, int i) {
    method jjtGetChild (line 39) | public Node jjtGetChild(int i) {
    method jjtGetNumChildren (line 43) | public int jjtGetNumChildren() {
    method jjtSetValue (line 47) | public void jjtSetValue(Object value) { this.value = value; }
    method jjtGetValue (line 48) | public Object jjtGetValue() { return value; }
    method toString (line 56) | public String toString() { return TreeTreeConstants.jjtNodeName[id]; }
    method toString (line 57) | public String toString(String prefix) { return prefix + toString(); }
    method dump (line 62) | public void dump(String prefix) {

FILE: test/javaFiles/ChangedOptionsSimpleCharStream.java
  class SimpleCharStream (line 8) | public class SimpleCharStream
    method setTabSize (line 33) | protected void setTabSize(int i) { tabSize = i; }
    method getTabSize (line 34) | protected int getTabSize(int i) { return tabSize; }
    method ExpandBuff (line 37) | protected void ExpandBuff(boolean wrapAround)
    method FillBuff (line 87) | protected void FillBuff() throws java.io.IOException
    method BeginToken (line 133) | public char BeginToken() throws java.io.IOException
    method UpdateLineColumn (line 142) | protected void UpdateLineColumn(char c)
    method readChar (line 183) | public char readChar() throws java.io.IOException
    method getColumn (line 209) | public int getColumn() {
    method getLine (line 218) | public int getLine() {
    method getEndColumn (line 223) | public int getEndColumn() {
    method getEndLine (line 228) | public int getEndLine() {
    method getBeginColumn (line 233) | public int getBeginColumn() {
    method getBeginLine (line 238) | public int getBeginLine() {
    method backup (line 243) | public void backup(int amount) {
    method SimpleCharStream (line 251) | public SimpleCharStream(java.io.Reader dstream, int startline,
    method SimpleCharStream (line 265) | public SimpleCharStream(java.io.Reader dstream, int startline,
    method SimpleCharStream (line 272) | public SimpleCharStream(java.io.Reader dstream)
    method ReInit (line 278) | public void ReInit(java.io.Reader dstream, int startline,
    method ReInit (line 298) | public void ReInit(java.io.Reader dstream, int startline,
    method ReInit (line 305) | public void ReInit(java.io.Reader dstream)
    method SimpleCharStream (line 310) | public SimpleCharStream(java.io.InputStream dstream, String encoding, ...
    method SimpleCharStream (line 317) | public SimpleCharStream(java.io.InputStream dstream, int startline,
    method SimpleCharStream (line 324) | public SimpleCharStream(java.io.InputStream dstream, String encoding, ...
    method SimpleCharStream (line 331) | public SimpleCharStream(java.io.InputStream dstream, int startline,
    method SimpleCharStream (line 338) | public SimpleCharStream(java.io.InputStream dstream, String encoding) ...
    method SimpleCharStream (line 344) | public SimpleCharStream(java.io.InputStream dstream)
    method ReInit (line 350) | public void ReInit(java.io.InputStream dstream, String encoding, int s...
    method ReInit (line 357) | public void ReInit(java.io.InputStream dstream, int startline,
    method ReInit (line 364) | public void ReInit(java.io.InputStream dstream, String encoding) throw...
    method ReInit (line 370) | public void ReInit(java.io.InputStream dstream)
    method ReInit (line 375) | public void ReInit(java.io.InputStream dstream, String encoding, int s...
    method ReInit (line 381) | public void ReInit(java.io.InputStream dstream, int startline,
    method GetImage (line 387) | public String GetImage()
    method GetSuffix (line 397) | public char[] GetSuffix(int len)
    method Done (line 414) | public void Done()
    method adjustBeginLineColumn (line 424) | public void adjustBeginLineColumn(int newLine, int newCol)

FILE: test/javaFiles/IncompatSimpleNode.java
  class SimpleNode (line 5) | public class SimpleNode implements Node {
    method SimpleNode (line 12) | public SimpleNode(int i) {
    method SimpleNode (line 16) | public SimpleNode(Tree p, int i) {
    method jjtOpen (line 21) | public void jjtOpen() {
    method jjtClose (line 24) | public void jjtClose() {
    method jjtSetParent (line 27) | public void jjtSetParent(Node n) { parent = n; }
    method jjtGetParent (line 28) | public Node jjtGetParent() { return parent; }
    method jjtAddChild (line 30) | public void jjtAddChild(Node n, int i) {
    method jjtGetChild (line 41) | public Node jjtGetChild(int i) {
    method jjtGetNumChildren (line 45) | public int jjtGetNumChildren() {
    method jjtSetValue (line 49) | public void jjtSetValue(Object value) { this.value = value; }
    method jjtGetValue (line 50) | public Object jjtGetValue() { return value; }
    method toString (line 58) | public String toString() { return TreeTreeConstants.jjtNodeName[id]; }
    method toString (line 59) | public String toString(String prefix) { return prefix + toString(); }
    method dump (line 64) | public void dump(String prefix) {

FILE: test/javaFiles/ModifiedOldSimpleCharStream.java
  class SimpleCharStream (line 8) | public class SimpleCharStream
    method setTabSize (line 33) | protected void setTabSize(int i) { tabSize = i; }
    method getTabSize (line 34) | protected int getTabSize(int i) { return tabSize; }
    method ExpandBuff (line 37) | protected void ExpandBuff(boolean wrapAround)
    method FillBuff (line 87) | protected void FillBuff() throws java.io.IOException
    method BeginToken (line 133) | public char BeginToken() throws java.io.IOException
    method UpdateLineColumn (line 142) | protected void UpdateLineColumn(char c)
    method readChar (line 183) | public char readChar() throws java.io.IOException
    method getColumn (line 209) | public int getColumn() {
    method getLine (line 218) | public int getLine() {
    method getEndColumn (line 223) | public int getEndColumn() {
    method getEndLine (line 228) | public int getEndLine() {
    method getBeginColumn (line 233) | public int getBeginColumn() {
    method getBeginLine (line 238) | public int getBeginLine() {
    method backup (line 243) | public void backup(int amount) {
    method SimpleCharStream (line 251) | public SimpleCharStream(java.io.Reader dstream, int startline,
    method SimpleCharStream (line 265) | public SimpleCharStream(java.io.Reader dstream, int startline,
    method SimpleCharStream (line 272) | public SimpleCharStream(java.io.Reader dstream)
    method ReInit (line 278) | public void ReInit(java.io.Reader dstream, int startline,
    method ReInit (line 298) | public void ReInit(java.io.Reader dstream, int startline,
    method ReInit (line 305) | public void ReInit(java.io.Reader dstream)
    method SimpleCharStream (line 310) | public SimpleCharStream(java.io.InputStream dstream, String encoding, ...
    method SimpleCharStream (line 317) | public SimpleCharStream(java.io.InputStream dstream, int startline,
    method SimpleCharStream (line 324) | public SimpleCharStream(java.io.InputStream dstream, String encoding, ...
    method SimpleCharStream (line 331) | public SimpleCharStream(java.io.InputStream dstream, int startline,
    method SimpleCharStream (line 338) | public SimpleCharStream(java.io.InputStream dstream, String encoding) ...
    method SimpleCharStream (line 344) | public SimpleCharStream(java.io.InputStream dstream)
    method ReInit (line 350) | public void ReInit(java.io.InputStream dstream, String encoding, int s...
    method ReInit (line 357) | public void ReInit(java.io.InputStream dstream, int startline,
    method ReInit (line 364) | public void ReInit(java.io.InputStream dstream, String encoding) throw...
    method ReInit (line 370) | public void ReInit(java.io.InputStream dstream)
    method ReInit (line 375) | public void ReInit(java.io.InputStream dstream, String encoding, int s...
    method ReInit (line 381) | public void ReInit(java.io.InputStream dstream, int startline,
    method GetImage (line 387) | public String GetImage()
    method GetSuffix (line 397) | public char[] GetSuffix(int len)
    method Done (line 414) | public void Done()
    method adjustBeginLineColumn (line 424) | public void adjustBeginLineColumn(int newLine, int newCol)

FILE: test/javaFiles/ModifiedSimpleCharStream.java
  class SimpleCharStream (line 11) | public class SimpleCharStream
    method setTabSize (line 36) | protected void setTabSize(int i) { tabSize = i; }
    method getTabSize (line 37) | protected int getTabSize(int i) { return tabSize; }
    method ExpandBuff (line 40) | protected void ExpandBuff(boolean wrapAround)
    method FillBuff (line 90) | protected void FillBuff() throws java.io.IOException
    method BeginToken (line 136) | public char BeginToken() throws java.io.IOException
    method UpdateLineColumn (line 145) | protected void UpdateLineColumn(char c)
    method readChar (line 186) | public char readChar() throws java.io.IOException
    method getColumn (line 212) | public int getColumn() {
    method getLine (line 221) | public int getLine() {
    method getEndColumn (line 226) | public int getEndColumn() {
    method getEndLine (line 231) | public int getEndLine() {
    method getBeginColumn (line 236) | public int getBeginColumn() {
    method getBeginLine (line 241) | public int getBeginLine() {
    method backup (line 246) | public void backup(int amount) {
    method SimpleCharStream (line 254) | public SimpleCharStream(java.io.Reader dstream, int startline,
    method SimpleCharStream (line 268) | public SimpleCharStream(java.io.Reader dstream, int startline,
    method SimpleCharStream (line 275) | public SimpleCharStream(java.io.Reader dstream)
    method ReInit (line 281) | public void ReInit(java.io.Reader dstream, int startline,
    method ReInit (line 301) | public void ReInit(java.io.Reader dstream, int startline,
    method ReInit (line 308) | public void ReInit(java.io.Reader dstream)
    method SimpleCharStream (line 313) | public SimpleCharStream(java.io.InputStream dstream, String encoding, ...
    method SimpleCharStream (line 320) | public SimpleCharStream(java.io.InputStream dstream, int startline,
    method SimpleCharStream (line 327) | public SimpleCharStream(java.io.InputStream dstream, String encoding, ...
    method SimpleCharStream (line 334) | public SimpleCharStream(java.io.InputStream dstream, int startline,
    method SimpleCharStream (line 341) | public SimpleC
Condensed preview — 478 files, each showing path, character count, and a content snippet. Download the .json file or copy for the full structured content (3,969K chars).
[
  {
    "path": ".classpath",
    "chars": 1701,
    "preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<classpath>\n\t<classpathentry kind=\"src\" path=\"src/main/jjtree\"/>\n\t<classpathentry"
  },
  {
    "path": ".editorconfig",
    "chars": 662,
    "preview": "root = true\n\n[*]\ntrim_trailing_whitespace = true\ninsert_final_newline = true\ncharset = utf-8\nindent_style = space\n\n[*.md"
  },
  {
    "path": ".gitattributes",
    "chars": 410,
    "preview": "# Auto detect text files and perform LF normalization\n*        text=auto\n\n*.java   text\n*.jj     text\n*.jjt    text\n*.ht"
  },
  {
    "path": ".github/workflows/master.yml",
    "chars": 2430,
    "preview": "# This workflow will build a Java project with Maven\n# For more information see: https://help.github.com/actions/languag"
  },
  {
    "path": ".gitignore",
    "chars": 653,
    "preview": "**/gen/\n**/out-dir/\n*.*~\n*.asc\n*.iml\n.checkstyle\n.gradle\n.gradle/\n.groovy\n.idea\n.settings\n.settings/\n.svn/\n/.externalToo"
  },
  {
    "path": ".project",
    "chars": 965,
    "preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<projectDescription>\n\t<name>javacc~javacc</name>\n\t<comment>Nature JavaCC</comment"
  },
  {
    "path": ".travis.yml",
    "chars": 86,
    "preview": "language: java\njdk: openjdk8\ninstall:\n  - skip\nscript:\n  - mvn test -B -Dgpg.skip=true"
  },
  {
    "path": "LICENSE",
    "chars": 1536,
    "preview": "Copyright (c) 2006, Sun Microsystems, Inc.\nAll rights reserved.\n\nRedistribution and use in source and binary forms, with"
  },
  {
    "path": "README.md",
    "chars": 25255,
    "preview": "# JavaCC\n\n[![Maven Central](https://maven-badges.herokuapp.com/maven-central/net.java.dev.javacc/javacc/badge.svg)](http"
  },
  {
    "path": "build.cmd",
    "chars": 25,
    "preview": "ant binary-distribution\r\n"
  },
  {
    "path": "build.xml",
    "chars": 36542,
    "preview": "<?xml version='1.0' encoding='UTF-8' ?>\n\n<!--\nCopyright (c) 2006-2025, Sreeni Viswanadha <sreeni@viswanadha.net>.\nCopyri"
  },
  {
    "path": "docs/.gitignore",
    "chars": 68,
    "preview": "_site\n.sass-cache\n.jekyll-cache\n.jekyll-metadata\nvendor\n/_setaside/\n"
  },
  {
    "path": "docs/Gemfile",
    "chars": 1489,
    "preview": "source \"https://rubygems.org\"\n# Hello! This is where you manage which Jekyll version is used to run.\n# When you want to "
  },
  {
    "path": "docs/LICENSE",
    "chars": 1536,
    "preview": "Copyright (c) 2006, Sun Microsystems, Inc.\nAll rights reserved.\n\nRedistribution and use in source and binary forms, with"
  },
  {
    "path": "docs/_config.yml",
    "chars": 492,
    "preview": "# --- General options --- #\ntheme: jekyll-theme-cayman\nshow_downloads: true\n\n# Name of website\ntitle: JavaCC\n\n# Short de"
  },
  {
    "path": "docs/_layouts/default.html",
    "chars": 3884,
    "preview": "<!DOCTYPE html>\n<!--\nCopyright (c) 2006, Sun Microsystems, Inc.\nAll rights reserved.\n\nRedistribution and use in source a"
  },
  {
    "path": "docs/assets/css/style.scss",
    "chars": 75,
    "preview": "---\n---\n\n@import \"{{ site.theme }}\";\n\n.main-content {\n  max-width: 100%;\n}\n"
  },
  {
    "path": "docs/documentation/api.md",
    "chars": 19917,
    "preview": "[Home](../index.md) > [Documentation](index.md) > JavaCC API\n\n---\n\nThis page is a comprehensive list of all classes, met"
  },
  {
    "path": "docs/documentation/bnf.md",
    "chars": 40506,
    "preview": "[Home](../index.md) > [Documentation](index.md) > JavaCC BNF\n\n---\n\nThis page contains the complete syntax of the JavaCC "
  },
  {
    "path": "docs/documentation/cli.md",
    "chars": 3594,
    "preview": "[Home](../index.md) > [Documentation](index.md) > Command Line Interface\n\n---\n\nYou can obtain a synopsis of the command "
  },
  {
    "path": "docs/documentation/grammar.md",
    "chars": 46747,
    "preview": "[Home](../index.md) > [Documentation](index.md) > JavaCC Grammar\n\n---\n\nThis page contains the complete syntax of the Jav"
  },
  {
    "path": "docs/documentation/index.md",
    "chars": 267,
    "preview": "[Home](../index.md) > [Documentation](index.md) > Index\n\n---\n\n<br>\n\n1. [JavaCC Command Line](cli.md)\n\n2. [JavaCC Grammar"
  },
  {
    "path": "docs/documentation/javacc.html",
    "chars": 101483,
    "preview": "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 3.2//EN\">\n<HTML>\n<HEAD>\n<TITLE>BNF for JavaCC.jj</TITLE>\n</HEAD>\n<BODY>\n<H1 ALIG"
  },
  {
    "path": "docs/documentation/javacc.txt",
    "chars": 29713,
    "preview": "\nDOCUMENT START\nTOKENS\n/**********************************************\n * THE JAVACC TOKEN SPECIFICATION STARTS HERE *\n "
  },
  {
    "path": "docs/documentation/jjdoc.md",
    "chars": 1704,
    "preview": "[Home](../index.md) > [Documentation](index.md) > JJDoc\n\n---\n\nJJDoc takes a JavaCC parser specification and produces doc"
  },
  {
    "path": "docs/documentation/jjtree.md",
    "chars": 18781,
    "preview": "[Home](../index.md) > [Documentation](index.md) > JJTree\n\n---\n\nThis page is the reference documentation for JJTree.\n\n###"
  },
  {
    "path": "docs/downloads.md",
    "chars": 8501,
    "preview": "[Home](index.md) > Downloads\n\n---\n\n### <a name=\"stable\"></a>All stable releases\n\nJavaCC 7.0.13 is our latest stable rele"
  },
  {
    "path": "docs/faq.md",
    "chars": 94439,
    "preview": "[Home](index.md) > FAQ\n\n---\n\n### Contents\n\n- [**General Information**](#general-information)\n  * [What is JavaCC?](#what"
  },
  {
    "path": "docs/index.md",
    "chars": 19205,
    "preview": "<!---\nCreated from:\n* the original README file at https://github.com/javacc/javacc\n* the documentation https://github.co"
  },
  {
    "path": "docs/release-notes.md",
    "chars": 44300,
    "preview": "<!---\nInstructions to update documentation for a new release:\n- Add release notes docs/release-notes.md.\n- Add download "
  },
  {
    "path": "docs/tutorials/charstream.md",
    "chars": 7312,
    "preview": "[Home](../index.md) > [Tutorials](index.md) > CharStream\n\n---\n\nThis tutorial describes the `CharStream` classes includin"
  },
  {
    "path": "docs/tutorials/error-handling.md",
    "chars": 6540,
    "preview": "[Home](../index.md) > [Tutorials](index.md) > Error Handling\n\n---\n\nThis tutorial describes the error recovery features i"
  },
  {
    "path": "docs/tutorials/examples.md",
    "chars": 33590,
    "preview": "[Home](../index.md) > [Tutorials](index.md) > Examples\n\n---\n\nThis section contains some examples to get you started usin"
  },
  {
    "path": "docs/tutorials/index.md",
    "chars": 310,
    "preview": "[Home](../index.md) > [Tutorials](index.md) > Index\n\n---\n\n<br>\n\n1. [Token Manager](token-manager.md)\n\n2. [Lookahead](loo"
  },
  {
    "path": "docs/tutorials/lexer-tips.md",
    "chars": 4589,
    "preview": "[Home](../index.md) > [Tutorials](index.md) > Lexer Tips\n\n--------------------------------------------------------------"
  },
  {
    "path": "docs/tutorials/lookahead.md",
    "chars": 25760,
    "preview": "[Home](../index.md) > [Tutorials](index.md) > Lookahead\n\n---\n\nThis tutorial refers to examples that are available in the"
  },
  {
    "path": "docs/tutorials/token-manager.md",
    "chars": 11537,
    "preview": "[Home](../index.md) > [Tutorials](index.md) > Token Manager\n\n---\n\nThis tutorial describes the JavaCC token manager. It c"
  },
  {
    "path": "examples/CORBA-IDL/Hello.idl",
    "chars": 71,
    "preview": "module HelloApp\n{\n  interface Hello\n  {\n    string sayHello();\n  };\n};\n"
  },
  {
    "path": "examples/CORBA-IDL/IDL.jj",
    "chars": 11707,
    "preview": "/* Copyright (c) 2006, Sun Microsystems, Inc.\n * All rights reserved.\n * \n * Redistribution and use in source and binary"
  },
  {
    "path": "examples/CORBA-IDL/README",
    "chars": 1774,
    "preview": "/* Copyright (c) 2006, Sun Microsystems, Inc.\n * All rights reserved.\n * \n * Redistribution and use in source and binary"
  },
  {
    "path": "examples/GUIParsing/ParserVersion/CalcGUI.java",
    "chars": 7115,
    "preview": "/* Copyright (c) 2006, Sun Microsystems, Inc.\n * All rights reserved.\n *\n * Redistribution and use in source and binary "
  },
  {
    "path": "examples/GUIParsing/ParserVersion/CalcInput.jj",
    "chars": 3049,
    "preview": "/* Copyright (c) 2006, Sun Microsystems, Inc.\n * All rights reserved.\n * \n * Redistribution and use in source and binary"
  },
  {
    "path": "examples/GUIParsing/ParserVersion/Main.java",
    "chars": 1942,
    "preview": "/* Copyright (c) 2006, Sun Microsystems, Inc.\n * All rights reserved.\n *\n * Redistribution and use in source and binary "
  },
  {
    "path": "examples/GUIParsing/ParserVersion/ProducerConsumer.java",
    "chars": 2575,
    "preview": "/* Copyright (c) 2006, Sun Microsystems, Inc.\n * All rights reserved.\n *\n * Redistribution and use in source and binary "
  },
  {
    "path": "examples/GUIParsing/ParserVersion/README",
    "chars": 2703,
    "preview": "/* Copyright (c) 2006, Sun Microsystems, Inc.\n * All rights reserved.\n * \n * Redistribution and use in source and binary"
  },
  {
    "path": "examples/GUIParsing/ParserVersion/TokenCollector.java",
    "chars": 1753,
    "preview": "/* Copyright (c) 2006, Sun Microsystems, Inc.\n * All rights reserved.\n *\n * Redistribution and use in source and binary "
  },
  {
    "path": "examples/GUIParsing/README",
    "chars": 2211,
    "preview": "/* Copyright (c) 2006, Sun Microsystems, Inc.\n * All rights reserved.\n * \n * Redistribution and use in source and binary"
  },
  {
    "path": "examples/GUIParsing/TokenMgrVersion/CalcGUI.java",
    "chars": 6920,
    "preview": "/* Copyright (c) 2006, Sun Microsystems, Inc.\n * All rights reserved.\n *\n * Redistribution and use in source and binary "
  },
  {
    "path": "examples/GUIParsing/TokenMgrVersion/CalcInput.jj",
    "chars": 5135,
    "preview": "/* Copyright (c) 2006, Sun Microsystems, Inc.\n * All rights reserved.\n * \n * Redistribution and use in source and binary"
  },
  {
    "path": "examples/GUIParsing/TokenMgrVersion/CharCollector.java",
    "chars": 5865,
    "preview": "/* Copyright (c) 2006, Sun Microsystems, Inc.\n * All rights reserved.\n *\n * Redistribution and use in source and binary "
  },
  {
    "path": "examples/GUIParsing/TokenMgrVersion/Main.java",
    "chars": 1867,
    "preview": "/* Copyright (c) 2006, Sun Microsystems, Inc.\n * All rights reserved.\n *\n * Redistribution and use in source and binary "
  },
  {
    "path": "examples/GUIParsing/TokenMgrVersion/MyLexer.java",
    "chars": 2166,
    "preview": "/* Copyright (c) 2006, Sun Microsystems, Inc.\n * All rights reserved.\n *\n * Redistribution and use in source and binary "
  },
  {
    "path": "examples/GUIParsing/TokenMgrVersion/README",
    "chars": 2866,
    "preview": "/* Copyright (c) 2006, Sun Microsystems, Inc.\n * All rights reserved.\n * \n * Redistribution and use in source and binary"
  },
  {
    "path": "examples/Interpreter/ASTAddNode.java",
    "chars": 2039,
    "preview": "/* Copyright (c) 2006, Sun Microsystems, Inc.\n * All rights reserved.\n *\n * Redistribution and use in source and binary "
  },
  {
    "path": "examples/Interpreter/ASTAndNode.java",
    "chars": 2173,
    "preview": "/* Copyright (c) 2006, Sun Microsystems, Inc.\n * All rights reserved.\n *\n * Redistribution and use in source and binary "
  },
  {
    "path": "examples/Interpreter/ASTAssignment.java",
    "chars": 1957,
    "preview": "/* Copyright (c) 2006, Sun Microsystems, Inc.\n * All rights reserved.\n *\n * Redistribution and use in source and binary "
  },
  {
    "path": "examples/Interpreter/ASTBitwiseAndNode.java",
    "chars": 2302,
    "preview": "/* Copyright (c) 2006, Sun Microsystems, Inc.\n * All rights reserved.\n *\n * Redistribution and use in source and binary "
  },
  {
    "path": "examples/Interpreter/ASTBitwiseComplNode.java",
    "chars": 1961,
    "preview": "/* Copyright (c) 2006, Sun Microsystems, Inc.\n * All rights reserved.\n *\n * Redistribution and use in source and binary "
  },
  {
    "path": "examples/Interpreter/ASTBitwiseOrNode.java",
    "chars": 2298,
    "preview": "/* Copyright (c) 2006, Sun Microsystems, Inc.\n * All rights reserved.\n *\n * Redistribution and use in source and binary "
  },
  {
    "path": "examples/Interpreter/ASTBitwiseXorNode.java",
    "chars": 2301,
    "preview": "/* Copyright (c) 2006, Sun Microsystems, Inc.\n * All rights reserved.\n *\n * Redistribution and use in source and binary "
  },
  {
    "path": "examples/Interpreter/ASTBlock.java",
    "chars": 1929,
    "preview": "/* Copyright (c) 2006, Sun Microsystems, Inc.\n * All rights reserved.\n *\n * Redistribution and use in source and binary "
  },
  {
    "path": "examples/Interpreter/ASTCompilationUnit.java",
    "chars": 2276,
    "preview": "/* Copyright (c) 2006, Sun Microsystems, Inc.\n * All rights reserved.\n *\n * Redistribution and use in source and binary "
  },
  {
    "path": "examples/Interpreter/ASTDivNode.java",
    "chars": 2040,
    "preview": "/* Copyright (c) 2006, Sun Microsystems, Inc.\n * All rights reserved.\n *\n * Redistribution and use in source and binary "
  },
  {
    "path": "examples/Interpreter/ASTEQNode.java",
    "chars": 2245,
    "preview": "/* Copyright (c) 2006, Sun Microsystems, Inc.\n * All rights reserved.\n *\n * Redistribution and use in source and binary "
  },
  {
    "path": "examples/Interpreter/ASTFalseNode.java",
    "chars": 1881,
    "preview": "/* Copyright (c) 2006, Sun Microsystems, Inc.\n * All rights reserved.\n *\n * Redistribution and use in source and binary "
  },
  {
    "path": "examples/Interpreter/ASTGENode.java",
    "chars": 2038,
    "preview": "/* Copyright (c) 2006, Sun Microsystems, Inc.\n * All rights reserved.\n *\n * Redistribution and use in source and binary "
  },
  {
    "path": "examples/Interpreter/ASTGTNode.java",
    "chars": 2040,
    "preview": "/* Copyright (c) 2006, Sun Microsystems, Inc.\n * All rights reserved.\n *\n * Redistribution and use in source and binary "
  },
  {
    "path": "examples/Interpreter/ASTId.java",
    "chars": 1871,
    "preview": "/* Copyright (c) 2006, Sun Microsystems, Inc.\n * All rights reserved.\n *\n * Redistribution and use in source and binary "
  },
  {
    "path": "examples/Interpreter/ASTIfStatement.java",
    "chars": 2038,
    "preview": "/* Copyright (c) 2006, Sun Microsystems, Inc.\n * All rights reserved.\n *\n * Redistribution and use in source and binary "
  },
  {
    "path": "examples/Interpreter/ASTIntConstNode.java",
    "chars": 1901,
    "preview": "/* Copyright (c) 2006, Sun Microsystems, Inc.\n * All rights reserved.\n *\n * Redistribution and use in source and binary "
  },
  {
    "path": "examples/Interpreter/ASTLENode.java",
    "chars": 2038,
    "preview": "/* Copyright (c) 2006, Sun Microsystems, Inc.\n * All rights reserved.\n *\n * Redistribution and use in source and binary "
  },
  {
    "path": "examples/Interpreter/ASTLTNode.java",
    "chars": 2037,
    "preview": "/* Copyright (c) 2006, Sun Microsystems, Inc.\n * All rights reserved.\n *\n * Redistribution and use in source and binary "
  },
  {
    "path": "examples/Interpreter/ASTModNode.java",
    "chars": 2040,
    "preview": "/* Copyright (c) 2006, Sun Microsystems, Inc.\n * All rights reserved.\n *\n * Redistribution and use in source and binary "
  },
  {
    "path": "examples/Interpreter/ASTMulNode.java",
    "chars": 2040,
    "preview": "/* Copyright (c) 2006, Sun Microsystems, Inc.\n * All rights reserved.\n *\n * Redistribution and use in source and binary "
  },
  {
    "path": "examples/Interpreter/ASTNENode.java",
    "chars": 2246,
    "preview": "/* Copyright (c) 2006, Sun Microsystems, Inc.\n * All rights reserved.\n *\n * Redistribution and use in source and binary "
  },
  {
    "path": "examples/Interpreter/ASTNotNode.java",
    "chars": 1939,
    "preview": "/* Copyright (c) 2006, Sun Microsystems, Inc.\n * All rights reserved.\n *\n * Redistribution and use in source and binary "
  },
  {
    "path": "examples/Interpreter/ASTOrNode.java",
    "chars": 2168,
    "preview": "/* Copyright (c) 2006, Sun Microsystems, Inc.\n * All rights reserved.\n *\n * Redistribution and use in source and binary "
  },
  {
    "path": "examples/Interpreter/ASTReadStatement.java",
    "chars": 2564,
    "preview": "/* Copyright (c) 2006, Sun Microsystems, Inc.\n * All rights reserved.\n *\n * Redistribution and use in source and binary "
  },
  {
    "path": "examples/Interpreter/ASTStatementExpression.java",
    "chars": 1941,
    "preview": "/* Copyright (c) 2006, Sun Microsystems, Inc.\n * All rights reserved.\n *\n * Redistribution and use in source and binary "
  },
  {
    "path": "examples/Interpreter/ASTSubtractNode.java",
    "chars": 2058,
    "preview": "/* Copyright (c) 2006, Sun Microsystems, Inc.\n * All rights reserved.\n *\n * Redistribution and use in source and binary "
  },
  {
    "path": "examples/Interpreter/ASTTrueNode.java",
    "chars": 1880,
    "preview": "/* Copyright (c) 2006, Sun Microsystems, Inc.\n * All rights reserved.\n *\n * Redistribution and use in source and binary "
  },
  {
    "path": "examples/Interpreter/ASTVarDeclaration.java",
    "chars": 2073,
    "preview": "/* Copyright (c) 2006, Sun Microsystems, Inc.\n * All rights reserved.\n *\n * Redistribution and use in source and binary "
  },
  {
    "path": "examples/Interpreter/ASTWhileStatement.java",
    "chars": 2039,
    "preview": "/* Copyright (c) 2006, Sun Microsystems, Inc.\n * All rights reserved.\n *\n * Redistribution and use in source and binary "
  },
  {
    "path": "examples/Interpreter/ASTWriteStatement.java",
    "chars": 2194,
    "preview": "/* Copyright (c) 2006, Sun Microsystems, Inc.\n * All rights reserved.\n *\n * Redistribution and use in source and binary "
  },
  {
    "path": "examples/Interpreter/MyNode.java",
    "chars": 2538,
    "preview": "/* Copyright (c) 2006, Sreenivasa Viswanadha <sreeni@viswanadha.net>\n * All rights reserved.\n *\n * Redistribution and us"
  },
  {
    "path": "examples/Interpreter/Node.java",
    "chars": 2722,
    "preview": "/* Copyright (c) 2006, Sun Microsystems, Inc.\n * All rights reserved.\n *\n * Redistribution and use in source and binary "
  },
  {
    "path": "examples/Interpreter/README",
    "chars": 2140,
    "preview": "/* Copyright (c) 2006, Sun Microsystems, Inc.\n * All rights reserved.\n * \n * Redistribution and use in source and binary"
  },
  {
    "path": "examples/Interpreter/SPL.java",
    "chars": 2849,
    "preview": "/* Copyright (c) 2006, Sun Microsystems, Inc.\n * All rights reserved.\n *\n * Redistribution and use in source and binary "
  },
  {
    "path": "examples/Interpreter/SPL.jjt",
    "chars": 6538,
    "preview": "/* Copyright (c) 2006, Sun Microsystems, Inc.\n * All rights reserved.\n *\n * Redistribution and use in source and binary "
  },
  {
    "path": "examples/Interpreter/fact.spl",
    "chars": 103,
    "preview": "int n;\nint fact;\n\nread n;\n\nfact = 1;\n\nwhile (n > 1)\n{\n   fact = fact * n;\n   n = n - 1;\n}\n\nwrite fact;\n"
  },
  {
    "path": "examples/Interpreter/odd.spl",
    "chars": 111,
    "preview": "int num;\nboolean odd;\n\nnum = 10;\n\nread num;\n\nif (num % 2 != 0)\n   odd = true;\nelse\n   odd = false;\n\nwrite odd;\n"
  },
  {
    "path": "examples/Interpreter/sqrt.spl",
    "chars": 137,
    "preview": "\nint val;\n\nread val;\nint sqrt;\n\nsqrt = 1;\n\nwhile (sqrt * sqrt <= val && ((sqrt + 1) * (sqrt + 1)) <= val)\n  sqrt = sqrt "
  },
  {
    "path": "examples/JJTreeExamples/cpp/ASTMyID.cc",
    "chars": 441,
    "preview": "/*\n * ASTMyID.cpp\n *\n *  Created on: 28 mars 2014\n *      Author: FrancisANDRE\n */\n\n#include \"ASTMyID.h\"\n\nnamespace @NAM"
  },
  {
    "path": "examples/JJTreeExamples/cpp/ASTMyID.h",
    "chars": 455,
    "preview": "/*\n * ASTMyID.h\n *\n *  Created on: 28 mars 2014\n *      Author: FrancisANDRE\n */\n\n#ifndef ASTMYID_H_\n#define ASTMYID_H_\n"
  },
  {
    "path": "examples/JJTreeExamples/cpp/ASTMyOtherID.cc",
    "chars": 663,
    "preview": "/*\n * ASTMyOtherID.cpp\n *\n *  Created on: 27 mars 2014\n *      Author: FrancisANDRE\n */\n\n#include \"ASTMyOtherID.h\"\n#incl"
  },
  {
    "path": "examples/JJTreeExamples/cpp/ASTMyOtherID.h",
    "chars": 626,
    "preview": "/*\n * ASTMyOtherID.h\n *\n *  Created on: 27 mars 2014\n *      Author: FrancisANDRE\n */\n\n#ifndef ASTMYOTHERID_H_\n#define A"
  },
  {
    "path": "examples/JJTreeExamples/cpp/EG4DumpVisitor.cc",
    "chars": 1977,
    "preview": "/*\n * EG4DumpVisitor.cpp\n *\n *  Created on: 28 mars 2014\n *      Author: FrancisANDRE\n */\n\n#include <iostream>\n#include "
  },
  {
    "path": "examples/JJTreeExamples/cpp/EG4DumpVisitor.h",
    "chars": 1493,
    "preview": "/*\n * EG4DumpVisitor.h\n *\n *  Created on: 28 mars 2014\n *      Author: FrancisANDRE\n */\n\n#ifndef EG4DUMPVISITOR_H_\n#defi"
  },
  {
    "path": "examples/JJTreeExamples/cpp/MyErrorHandler.cc",
    "chars": 252,
    "preview": "/*\n * MyErrorHandler.cpp\n *\n *  Created on: 12 avr. 2014\n *      Author: FrancisANDRE\n */\n\n#include \"MyErrorHandler.h\"\n\n"
  },
  {
    "path": "examples/JJTreeExamples/cpp/MyErrorHandler.h",
    "chars": 359,
    "preview": "/*\n * MyErrorHandler.h\n *\n *  Created on: 12 avr. 2014\n *      Author: FrancisANDRE\n */\n\n#ifndef MYERRORHANDLER_H_\n#defi"
  },
  {
    "path": "examples/JJTreeExamples/cpp/README",
    "chars": 14334,
    "preview": "/* Copyright (c) 2006, Sun Microsystems, Inc.\n * All rights reserved.\n * \n * Redistribution and use in source and binary"
  },
  {
    "path": "examples/JJTreeExamples/cpp/build.xml",
    "chars": 6266,
    "preview": "<project name=\"examples\" default=\"eg1\" basedir=\".\" xmlns:cpptasks=\"antlib:net.sf.antcontrib.cpptasks\">\n\n\t<property name="
  },
  {
    "path": "examples/JJTreeExamples/cpp/eg1.cc",
    "chars": 763,
    "preview": "#include <fstream>\n#include <iomanip>\n#include <iostream>\n#include <string>\n#include <stdlib.h>\n#include \"JavaCC.h\"\n#inc"
  },
  {
    "path": "examples/JJTreeExamples/cpp/eg1.jjt",
    "chars": 3000,
    "preview": "/* Copyright (c) 2006, Sun Microsystems, Inc.\n * All rights reserved.\n *\n * Redistribution and use in source and binary "
  },
  {
    "path": "examples/JJTreeExamples/cpp/eg2.cc",
    "chars": 955,
    "preview": "#include <fstream>\n#include <iomanip>\n#include <iostream>\n#include <string>\n#include <stdlib.h>\n#include \"Parser.h\"\n#inc"
  },
  {
    "path": "examples/JJTreeExamples/cpp/eg2.jjt",
    "chars": 3144,
    "preview": "/* Copyright (c) 2006, Sun Microsystems, Inc.\n * All rights reserved.\n *\n * Redistribution and use in source and binary "
  },
  {
    "path": "examples/JJTreeExamples/cpp/eg3.cc",
    "chars": 955,
    "preview": "#include <fstream>\n#include <iomanip>\n#include <iostream>\n#include <string>\n#include <stdlib.h>\n#include \"Parser.h\"\n#inc"
  },
  {
    "path": "examples/JJTreeExamples/cpp/eg3.jjt",
    "chars": 3658,
    "preview": "/* Copyright (c) 2006, Sun Microsystems, Inc.\n * All rights reserved.\n *\n * Redistribution and use in source and binary "
  },
  {
    "path": "examples/JJTreeExamples/cpp/eg4.cc",
    "chars": 1085,
    "preview": "#include <fstream>\n#include <iomanip>\n#include <iostream>\n#include <string>\n#include <stdlib.h>\n#include \"Parser.h\"\n#inc"
  },
  {
    "path": "examples/JJTreeExamples/cpp/eg4.jjt",
    "chars": 3276,
    "preview": "/* Copyright (c) 2006, Sun Microsystems, Inc.\n * All rights reserved.\n * \n * Redistribution and use in source and binary"
  },
  {
    "path": "examples/JJTreeExamples/java/ASTMyID.java",
    "chars": 2071,
    "preview": "/* Copyright (c) 2006, Sun Microsystems, Inc.\n * All rights reserved.\n *\n * Redistribution and use in source and binary "
  },
  {
    "path": "examples/JJTreeExamples/java/ASTMyOtherID.java",
    "chars": 588,
    "preview": "public\nclass ASTMyOtherID extends SimpleNode {\n  private String name;\n  public ASTMyOtherID(int id) {\n    super(id);\n  }"
  },
  {
    "path": "examples/JJTreeExamples/java/Eg4DumpVisitor.java",
    "chars": 3744,
    "preview": "/* Copyright (c) 2006, Sun Microsystems, Inc.\n * All rights reserved.\n *\n * Redistribution and use in source and binary "
  },
  {
    "path": "examples/JJTreeExamples/java/README",
    "chars": 8171,
    "preview": "/* Copyright (c) 2006, Sun Microsystems, Inc.\n * All rights reserved.\n * \n * Redistribution and use in source and binary"
  },
  {
    "path": "examples/JJTreeExamples/java/build.xml",
    "chars": 2969,
    "preview": "<project name=\"examples\" default=\"eg1\" basedir=\".\">\n\n  <property name=\"javacc.home\" value=\"../../../target/\"/>\n\n  <targe"
  },
  {
    "path": "examples/JJTreeExamples/java/eg1.jjt",
    "chars": 3392,
    "preview": "/* Copyright (c) 2006, Sun Microsystems, Inc.\n * All rights reserved.\n *\n * Redistribution and use in source and binary "
  },
  {
    "path": "examples/JJTreeExamples/java/eg2.jjt",
    "chars": 3546,
    "preview": "/* Copyright (c) 2006, Sun Microsystems, Inc.\n * All rights reserved.\n *\n * Redistribution and use in source and binary "
  },
  {
    "path": "examples/JJTreeExamples/java/eg3.jjt",
    "chars": 3553,
    "preview": "/* Copyright (c) 2006, Sun Microsystems, Inc.\n * All rights reserved.\n *\n * Redistribution and use in source and binary "
  },
  {
    "path": "examples/JJTreeExamples/java/eg4.jjt",
    "chars": 3632,
    "preview": "/* Copyright (c) 2006, Sun Microsystems, Inc.\n * All rights reserved.\n * \n * Redistribution and use in source and binary"
  },
  {
    "path": "examples/JavaCCGrammar/JavaCC.jj",
    "chars": 27472,
    "preview": "/* Copyright (c) 2006, Sun Microsystems, Inc.\n * All rights reserved.\n * \n * Redistribution and use in source and binary"
  },
  {
    "path": "examples/JavaGrammars/1.5/Java1.5.jj",
    "chars": 43585,
    "preview": "/* Copyright (c) 2006, Sun Microsystems, Inc.\n * All rights reserved.\n *\n * Redistribution and use in source and binary "
  },
  {
    "path": "examples/JavaGrammars/1.5/JavaGenerics.java",
    "chars": 191,
    "preview": "import java.util.*;\n\npublic class JavaGenerics\n{\n    private Map<String,List> map;\n\n    public void jriat()\n    {\n      "
  },
  {
    "path": "examples/JavaGrammars/1.5/Main.java",
    "chars": 1214,
    "preview": "import java.io.*;\n\nclass Main\n{\n   private static int parseFilesFromFileList(String fileName)\n   {\n      LineNumberReade"
  },
  {
    "path": "examples/JavaGrammars/1.5/MyToken.java",
    "chars": 418,
    "preview": "public class MyToken extends Token\n{\n  /**\n   * Constructs a new token for the specified Image and Kind.\n   */\n  public "
  },
  {
    "path": "examples/JavaGrammars/1.5/README",
    "chars": 754,
    "preview": "\nThis directory contains the JavaCC grammar for parsing (the proposed)\nJDK 1.5 Java language syntax. It handles generics"
  },
  {
    "path": "examples/JavaGrammars/1.5/Test.java",
    "chars": 399,
    "preview": "import java.io.*;\n\nclass Test\n{\n   public static void main(String[] args) throws Exception\n   {\n      Reader fr = null;\n"
  },
  {
    "path": "examples/JavaGrammars/1.5/build.xml",
    "chars": 2084,
    "preview": "<?xml version='1.0' encoding='ISO-8859-1' ?>\n\n<project name=\"Java 1.5 Parser\" default=\"compile-and-test\" basedir=\".\">\n  "
  },
  {
    "path": "examples/JavaGrammars/Java1.0.2.jj",
    "chars": 17214,
    "preview": "/* Copyright (c) 2006, Sun Microsystems, Inc.\n * All rights reserved.\n * \n * Redistribution and use in source and binary"
  },
  {
    "path": "examples/JavaGrammars/Java1.0.2LS.jj",
    "chars": 17490,
    "preview": "/* Copyright (c) 2006, Sun Microsystems, Inc.\n * All rights reserved.\n * \n * Redistribution and use in source and binary"
  },
  {
    "path": "examples/JavaGrammars/Java1.1-cpp.jj",
    "chars": 34199,
    "preview": "/* Copyright (c) 2006, Sun Microsystems, Inc.\n * All rights reserved.\n * \n * Redistribution and use in source and binary"
  },
  {
    "path": "examples/JavaGrammars/Java1.1.jj",
    "chars": 35351,
    "preview": "/* Copyright (c) 2006, Sun Microsystems, Inc.\n * All rights reserved.\n * \n * Redistribution and use in source and binary"
  },
  {
    "path": "examples/JavaGrammars/Java1.1noLA.jj",
    "chars": 35246,
    "preview": "/* Copyright (c) 2006, Sun Microsystems, Inc.\n * All rights reserved.\n * \n * Redistribution and use in source and binary"
  },
  {
    "path": "examples/JavaGrammars/OPTIMIZING",
    "chars": 9401,
    "preview": "/* Copyright (c) 2006, Sun Microsystems, Inc.\n * All rights reserved.\n * \n * Redistribution and use in source and binary"
  },
  {
    "path": "examples/JavaGrammars/README",
    "chars": 3143,
    "preview": "/* Copyright (c) 2006, Sun Microsystems, Inc.\n * All rights reserved.\n * \n * Redistribution and use in source and binary"
  },
  {
    "path": "examples/JavaGrammars/Test.java",
    "chars": 399,
    "preview": "import java.io.*;\n\nclass Test\n{\n   public static void main(String[] args) throws Exception\n   {\n      Reader fr = null;\n"
  },
  {
    "path": "examples/JavaGrammars/cpp/.gitignore",
    "chars": 44,
    "preview": "/debug.log\n/javaparser.exe\n/wjavaparser.exe\n"
  },
  {
    "path": "examples/JavaGrammars/cpp/HelloWorld.java",
    "chars": 119,
    "preview": "package test;\npublic class HelloWorld {\n\t  public static void main(String[] args) {\n\t    System.out.println(); \n\t  }\n}\n"
  },
  {
    "path": "examples/JavaGrammars/cpp/Java1.1.jjt",
    "chars": 34708,
    "preview": "// Copyright 2011 Google Inc. All Rights Reserved.\n// Author: sreeni@google.com (Sreeni Viswanadha)\n\n/* Copyright (c) 20"
  },
  {
    "path": "examples/JavaGrammars/cpp/Makefile",
    "chars": 586,
    "preview": "all: javaparser wjavaparser\n\njavaparser: main.cc gen/*.cc\n\t$(CXX) $(CXXFLAGS) -std=c++11 -Wall -fpermissive -o javaparse"
  },
  {
    "path": "examples/JavaGrammars/cpp/allmain.cc",
    "chars": 1252,
    "preview": "#include <fstream>\n#include <iomanip>\n#include <iostream>\n#include <string>\n#include <stdlib.h>\n\n#include \"gen/CharStrea"
  },
  {
    "path": "examples/JavaGrammars/cpp/main.cc",
    "chars": 1289,
    "preview": "#include <fstream>\n#include <iomanip>\n#include <iostream>\n#include <string>\n#include <stdlib.h>\n\n#include \"gen/JavaParse"
  },
  {
    "path": "examples/JavaGrammars/cpp/myparser.h",
    "chars": 450,
    "preview": "#include \"gen/ErrorHandler.h\"\n#include \"gen/Token.h\"\n#include \"gen/JavaParser.h\"\n\nnamespace java { namespace parser {\n\nc"
  },
  {
    "path": "examples/JavaGrammars/cpp/mytm.h",
    "chars": 16,
    "preview": "class MyTm {\n};\n"
  },
  {
    "path": "examples/JavaGrammars/cpp/token_base.h",
    "chars": 21,
    "preview": "class TokenBase { };\n"
  },
  {
    "path": "examples/Lookahead/Example1.jj",
    "chars": 1935,
    "preview": "/* Copyright (c) 2006, Sun Microsystems, Inc.\n * All rights reserved.\n * \n * Redistribution and use in source and binary"
  },
  {
    "path": "examples/Lookahead/Example10.jj",
    "chars": 1981,
    "preview": "/* Copyright (c) 2006, Sun Microsystems, Inc.\n * All rights reserved.\n * \n * Redistribution and use in source and binary"
  },
  {
    "path": "examples/Lookahead/Example2.jj",
    "chars": 2030,
    "preview": "/* Copyright (c) 2006, Sun Microsystems, Inc.\n * All rights reserved.\n * \n * Redistribution and use in source and binary"
  },
  {
    "path": "examples/Lookahead/Example3.jj",
    "chars": 2048,
    "preview": "/* Copyright (c) 2006, Sun Microsystems, Inc.\n * All rights reserved.\n * \n * Redistribution and use in source and binary"
  },
  {
    "path": "examples/Lookahead/Example4.jj",
    "chars": 1975,
    "preview": "/* Copyright (c) 2006, Sun Microsystems, Inc.\n * All rights reserved.\n * \n * Redistribution and use in source and binary"
  },
  {
    "path": "examples/Lookahead/Example5.jj",
    "chars": 2052,
    "preview": "/* Copyright (c) 2006, Sun Microsystems, Inc.\n * All rights reserved.\n * \n * Redistribution and use in source and binary"
  },
  {
    "path": "examples/Lookahead/Example6.jj",
    "chars": 2045,
    "preview": "/* Copyright (c) 2006, Sun Microsystems, Inc.\n * All rights reserved.\n * \n * Redistribution and use in source and binary"
  },
  {
    "path": "examples/Lookahead/Example7.jj",
    "chars": 1999,
    "preview": "/* Copyright (c) 2006, Sun Microsystems, Inc.\n * All rights reserved.\n * \n * Redistribution and use in source and binary"
  },
  {
    "path": "examples/Lookahead/Example8.jj",
    "chars": 2063,
    "preview": "/* Copyright (c) 2006, Sun Microsystems, Inc.\n * All rights reserved.\n * \n * Redistribution and use in source and binary"
  },
  {
    "path": "examples/Lookahead/Example9.jj",
    "chars": 2065,
    "preview": "/* Copyright (c) 2006, Sun Microsystems, Inc.\n * All rights reserved.\n * \n * Redistribution and use in source and binary"
  },
  {
    "path": "examples/Lookahead/README",
    "chars": 27475,
    "preview": "/* Copyright (c) 2006, Sun Microsystems, Inc.\n * All rights reserved.\n * \n * Redistribution and use in source and binary"
  },
  {
    "path": "examples/MailProcessing/Digest.jj",
    "chars": 4381,
    "preview": "/* Copyright (c) 2006, Sun Microsystems, Inc.\n * All rights reserved.\n * \n * Redistribution and use in source and binary"
  },
  {
    "path": "examples/MailProcessing/Faq.jj",
    "chars": 4899,
    "preview": "/* Copyright (c) 2006, Sun Microsystems, Inc.\n * All rights reserved.\n * \n * Redistribution and use in source and binary"
  },
  {
    "path": "examples/MailProcessing/README",
    "chars": 5117,
    "preview": "/* Copyright (c) 2006, Sun Microsystems, Inc.\n * All rights reserved.\n * \n * Redistribution and use in source and binary"
  },
  {
    "path": "examples/MailProcessing/sampleMailFile",
    "chars": 10742,
    "preview": "/* Copyright (c) 2006, Sun Microsystems, Inc.\n * All rights reserved.\n * \n * Redistribution and use in source and binary"
  },
  {
    "path": "examples/Obfuscator/Globals.java",
    "chars": 2812,
    "preview": "/* Copyright (c) 2006, Sun Microsystems, Inc.\n * All rights reserved.\n *\n * Redistribution and use in source and binary "
  },
  {
    "path": "examples/Obfuscator/IdsFile.jj",
    "chars": 5304,
    "preview": "/* Copyright (c) 2006, Sun Microsystems, Inc.\n * All rights reserved.\n * \n * Redistribution and use in source and binary"
  },
  {
    "path": "examples/Obfuscator/Java1.1.jj",
    "chars": 19300,
    "preview": "/* Copyright (c) 2006, Sun Microsystems, Inc.\n * All rights reserved.\n * \n * Redistribution and use in source and binary"
  },
  {
    "path": "examples/Obfuscator/Main.java",
    "chars": 4525,
    "preview": "/* Copyright (c) 2006, Sun Microsystems, Inc.\n * All rights reserved.\n *\n * Redistribution and use in source and binary "
  },
  {
    "path": "examples/Obfuscator/MapFile.jj",
    "chars": 5227,
    "preview": "/* Copyright (c) 2006, Sun Microsystems, Inc.\n * All rights reserved.\n * \n * Redistribution and use in source and binary"
  },
  {
    "path": "examples/Obfuscator/Obfuscator.java",
    "chars": 9865,
    "preview": "/* Copyright (c) 2006, Sun Microsystems, Inc.\n * All rights reserved.\n *\n * Redistribution and use in source and binary "
  },
  {
    "path": "examples/Obfuscator/README",
    "chars": 4487,
    "preview": "/* Copyright (c) 2006, Sun Microsystems, Inc.\n * All rights reserved.\n * \n * Redistribution and use in source and binary"
  },
  {
    "path": "examples/Obfuscator/input/package1/Main.java",
    "chars": 1846,
    "preview": "/* Copyright (c) 2006, Sun Microsystems, Inc.\n * All rights reserved.\n *\n * Redistribution and use in source and binary "
  },
  {
    "path": "examples/Obfuscator/input/package2/Incr.java",
    "chars": 1877,
    "preview": "/* Copyright (c) 2006, Sun Microsystems, Inc.\n * All rights reserved.\n *\n * Redistribution and use in source and binary "
  },
  {
    "path": "examples/Obfuscator/maps",
    "chars": 90,
    "preview": "// Mappings from original names to obfuscated names\n\nincr -> square_root;\nIncr -> MyMath;\n"
  },
  {
    "path": "examples/Obfuscator/nochangeids",
    "chars": 71,
    "preview": "// Identifiers that must not be obfuscated.\n\nSystem\nout\nprintln\nString\n"
  },
  {
    "path": "examples/Obfuscator/useids",
    "chars": 75,
    "preview": "// Obfuscated identifiers to use (preferably).\n\nfileName\nrandomNumber\nhtml\n"
  },
  {
    "path": "examples/README",
    "chars": 3970,
    "preview": "/* Copyright (c) 2006, Sun Microsystems, Inc.\n * All rights reserved.\n * \n * Redistribution and use in source and binary"
  },
  {
    "path": "examples/SimpleExamples/IdList.jj",
    "chars": 2045,
    "preview": "/* Copyright (c) 2006, Sun Microsystems, Inc.\n * All rights reserved.\n * \n * Redistribution and use in source and binary"
  },
  {
    "path": "examples/SimpleExamples/NL_Xlator.jj",
    "chars": 3964,
    "preview": "/* Copyright (c) 2006, Sun Microsystems, Inc.\n * All rights reserved.\n * \n * Redistribution and use in source and binary"
  },
  {
    "path": "examples/SimpleExamples/README",
    "chars": 16278,
    "preview": "/* Copyright (c) 2006, Sun Microsystems, Inc.\n * All rights reserved.\n * \n * Redistribution and use in source and binary"
  },
  {
    "path": "examples/SimpleExamples/Simple1.jj",
    "chars": 2512,
    "preview": "/* Copyright (c) 2006, Sun Microsystems, Inc.\n * All rights reserved.\n * \n * Redistribution and use in source and binary"
  },
  {
    "path": "examples/SimpleExamples/Simple2.jj",
    "chars": 2085,
    "preview": "/* Copyright (c) 2006, Sun Microsystems, Inc.\n * All rights reserved.\n * \n * Redistribution and use in source and binary"
  },
  {
    "path": "examples/SimpleExamples/Simple3.jj",
    "chars": 2283,
    "preview": "/* Copyright (c) 2006, Sun Microsystems, Inc.\n * All rights reserved.\n * \n * Redistribution and use in source and binary"
  },
  {
    "path": "examples/Transformer/ASTCompilationUnit.java",
    "chars": 2212,
    "preview": "/* Copyright (c) 2006, Sun Microsystems, Inc.\n * All rights reserved.\n *\n * Redistribution and use in source and binary "
  },
  {
    "path": "examples/Transformer/ASTSpecialBlock.java",
    "chars": 2110,
    "preview": "/* Copyright (c) 2006, Sun Microsystems, Inc.\n * All rights reserved.\n *\n * Redistribution and use in source and binary "
  },
  {
    "path": "examples/Transformer/README",
    "chars": 2636,
    "preview": "/* Copyright (c) 2006, Sun Microsystems, Inc.\n * All rights reserved.\n * \n * Redistribution and use in source and binary"
  },
  {
    "path": "examples/Transformer/SimpleNode.java",
    "chars": 4552,
    "preview": "/* Copyright (c) 2006, Sun Microsystems, Inc.\n * All rights reserved.\n *\n * Redistribution and use in source and binary "
  },
  {
    "path": "examples/Transformer/ToyJava.jjt",
    "chars": 19152,
    "preview": "/* Copyright (c) 2006, Sun Microsystems, Inc.\n * All rights reserved.\n * \n * Redistribution and use in source and binary"
  },
  {
    "path": "examples/Transformer/divide.toy",
    "chars": 1750,
    "preview": "/* Copyright (c) 2006, Sun Microsystems, Inc.\n * All rights reserved.\n * \n * Redistribution and use in source and binary"
  },
  {
    "path": "examples/VTransformer/AddAcceptVisitor.java",
    "chars": 2513,
    "preview": "/* Copyright (c) 2006, Sun Microsystems, Inc.\n * All rights reserved.\n *\n * Redistribution and use in source and binary "
  },
  {
    "path": "examples/VTransformer/Java1.1.jjt",
    "chars": 18365,
    "preview": "/* Copyright (c) 2006, Sun Microsystems, Inc.\n * All rights reserved.\n * \n * Redistribution and use in source and binary"
  },
  {
    "path": "examples/VTransformer/Main.java",
    "chars": 2175,
    "preview": "/* Copyright (c) 2006, Sun Microsystems, Inc.\n * All rights reserved.\n *\n * Redistribution and use in source and binary "
  },
  {
    "path": "examples/VTransformer/README",
    "chars": 5746,
    "preview": "/* Copyright (c) 2006, Sun Microsystems, Inc.\n * All rights reserved.\n * \n * Redistribution and use in source and binary"
  },
  {
    "path": "examples/VTransformer/SimpleNode.java",
    "chars": 4095,
    "preview": "/* Copyright (c) 2006, Sun Microsystems, Inc.\n * All rights reserved.\n *\n * Redistribution and use in source and binary "
  },
  {
    "path": "examples/VTransformer/UnparseVisitor.java",
    "chars": 11615,
    "preview": "/* Copyright (c) 2006, Sun Microsystems, Inc.\n * All rights reserved.\n *\n * Redistribution and use in source and binary "
  },
  {
    "path": "grammars/AsnParser.jj",
    "chars": 12737,
    "preview": "/*\n *\n *  ASN.1 grammar  for JavaCC\n *\n *  Contributed by Helena Sarin (hsarin@lucent.com)\n *\n *  Derived in part from t"
  },
  {
    "path": "grammars/BackupCharStream.java",
    "chars": 10669,
    "preview": "/* Generated By:JavaCC: Do not edit this line. ASCII_CharStream.java Version 0.7pre6 */\n\npackage org.webmacro.parser;\n\n/"
  },
  {
    "path": "grammars/CPPParser.jj",
    "chars": 28208,
    "preview": "/**\n *\n * Copyright (C) 1996, 1997 Sun Microsystems Inc.\n *\n * Use of this file and the system it is part of is constrai"
  },
  {
    "path": "grammars/CParser.jj",
    "chars": 14417,
    "preview": "/*\n\n  C grammar definition for use with JavaCC\n  Contributed by Doug South (dsouth@squirrel.com.au) 21/3/97\n\n  This pars"
  },
  {
    "path": "grammars/ChemNumber.jj",
    "chars": 3740,
    "preview": "options {\n    STATIC=false;\n    OPTIMIZE_TOKEN_MANAGER=true;\n    FORCE_LA_CHECK=true;\n}\n\nPARSER_BEGIN(ChemNumber)\n\nimpor"
  },
  {
    "path": "grammars/Cobol.jj",
    "chars": 63287,
    "preview": "/**\n * This is an experimental COBOL-85 grammar for JavaCC.\n * <p>References used for this grammar :<ol>\n * <li> Ralf Lä"
  },
  {
    "path": "grammars/DTDParser.jj",
    "chars": 2831,
    "preview": "/**\n * name:            DTDParser.jj\n * modified:        Apr 2, 2001\n * author:          John Gebbie\n * email:          "
  },
  {
    "path": "grammars/EcmaScript.jjt",
    "chars": 44115,
    "preview": "/*\n      Copyright (c) 2004-2005, The Dojo Foundation\n      All Rights Reserved.\n\n      Licensed under the Academic Free"
  },
  {
    "path": "grammars/ExpressParser.jj",
    "chars": 30737,
    "preview": "/***********************************************************************************************************************"
  },
  {
    "path": "grammars/FormsPlSql.jj",
    "chars": 20530,
    "preview": "/* ................................................................... *\n * FILE: FormsPlSql.jj                         "
  }
]

// ... and 278 more files (download for full content)

About this extraction

This page contains the full source code of the javacc/javacc GitHub repository, extracted and formatted as plain text for AI agents and large language models (LLMs). The extraction includes 478 files (3.5 MB), approximately 944.7k tokens, and a symbol index with 2375 extracted functions, classes, methods, constants, and types. Use this with OpenClaw, Claude, ChatGPT, Cursor, Windsurf, or any other AI tool that accepts text input. You can copy the full output to your clipboard or download it as a .txt file.

Extracted by GitExtract — free GitHub repo to text converter for AI. Built by Nikandr Surkov.

Copied to clipboard!