Package antlr
Class DiagnosticCodeGenerator
java.lang.Object
antlr.CodeGenerator
antlr.DiagnosticCodeGenerator
Generate MyParser.txt, MyLexer.txt and MyParserTokenTypes.txt
-
Field Summary
FieldsModifier and TypeFieldDescriptionprotected booleantrue during lexer generation, false during parser generationprotected intnon-zero if inside syntactic predicate generationFields inherited from class antlr.CodeGenerator
analyzer, antlrTool, behavior, BITSET_OPTIMIZE_INIT_THRESHOLD, bitsetsUsed, bitsetTestThreshold, charFormatter, currentOutput, DEBUG_CODE_GENERATOR, DEFAULT_BITSET_TEST_THRESHOLD, DEFAULT_MAKE_SWITCH_THRESHOLD, grammar, makeSwitchThreshold, tabs, TokenTypesFileExt, TokenTypesFileSuffix -
Constructor Summary
ConstructorsConstructorDescriptionCreate a Diagnostic code-generator using the given Grammar The caller must still call setTool, setBehavior, and setAnalyzer before generating code. -
Method Summary
Modifier and TypeMethodDescriptionvoidgen()Generate the parser, lexer, and token types documentationvoidgen(ActionElement action) Generate code for the given grammar element.voidgen(AlternativeBlock blk) Generate code for the given grammar element.voidgen(BlockEndElement end) Generate code for the given grammar element.voidgen(CharLiteralElement atom) Generate code for the given grammar element.voidGenerate code for the given grammar element.voidgen(LexerGrammar g) Generate the lexer TXT filevoidgen(OneOrMoreBlock blk) Generate code for the given grammar element.voidgen(ParserGrammar g) Generate the parser TXT filevoidgen(RuleRefElement rr) Generate code for the given grammar element.voidgen(StringLiteralElement atom) Generate code for the given grammar element.voidGenerate code for the given grammar element.voidgen(TokenRefElement atom) Generate code for the given grammar element.voidgen(TreeElement t) Generate code for the given grammar element.voidGenerate the tree-walker TXT filevoidgen(WildcardElement wc) Generate a wildcard elementvoidgen(ZeroOrMoreBlock blk) Generate code for the given grammar element.protected voidgenAlt(Alternative alt) protected voidGenerate the header for a block, which may be a RuleBlock or a plain AlternativeBLock.voidGenerate common code for a block of alternatives; return a postscript that needs to be generated at the end of the block.voidGenerate a textual representation of the follow set for a block.protected voidGenerate a header that is common to all TXT filesprotected voidGenerate the lookahead set for an alternate.voidGenerate a textual representation of the lookahead set for a block.voidGenerate the nextToken rule.voidGenerate code for a named rule blockprotected voidgenSynPred(SynPredBlock blk) Generate the syntactic predicate.protected voidGenerate the token types TXT fileGet a string for an expression to generate creation of an AST subtree.getASTCreateString(GrammarAtom atom, String str) Get a string for an expression to generate creating of an AST nodemapTreeId(String id, ActionTransInfo tInfo) Map an identifier to it's corresponding tree-node variable.voidFormat a lookahead or follow set.protected StringprocessActionForSpecialSymbols(String actionStr, int line, RuleBlock currentRule, ActionTransInfo tInfo) Lexically process $ and # references within the action.Methods inherited from class antlr.CodeGenerator
_print, _printAction, _println, decodeLexerRuleName, elementsAreRange, encodeLexerRuleName, extractIdOfAction, extractIdOfAction, extractTypeOfAction, extractTypeOfAction, genTokenInterchange, getBitsetName, getFIRSTBitSet, getFOLLOWBitSet, markBitsetForGen, print, printAction, println, printTabs, processStringForASTConstructor, removeAssignmentFromDeclaration, reverseLexerRuleName, setAnalyzer, setBehavior, setGrammar, setTool
-
Field Details
-
syntacticPredLevel
protected int syntacticPredLevelnon-zero if inside syntactic predicate generation -
doingLexRules
protected boolean doingLexRulestrue during lexer generation, false during parser generation
-
-
Constructor Details
-
DiagnosticCodeGenerator
public DiagnosticCodeGenerator()Create a Diagnostic code-generator using the given Grammar The caller must still call setTool, setBehavior, and setAnalyzer before generating code.
-
-
Method Details
-
gen
public void gen()Generate the parser, lexer, and token types documentation- Specified by:
genin classCodeGenerator
-
gen
Generate code for the given grammar element.- Specified by:
genin classCodeGenerator- Parameters:
action- The {...} action to generateblk- The {...} action to generate
-
gen
Generate code for the given grammar element.- Specified by:
genin classCodeGenerator- Parameters:
blk- The "x|y|z|..." block to generate
-
gen
Generate code for the given grammar element.- Specified by:
genin classCodeGenerator- Parameters:
end- The block-end element to generate. Block-end elements are synthesized by the grammar parser to represent the end of a block.blk- The block-end element to generate. Block-end elements are synthesized by the grammar parser to represent the end of a block.
-
gen
Generate code for the given grammar element.- Specified by:
genin classCodeGenerator- Parameters:
atom- The character literal reference to generateblk- The character literal reference to generate
-
gen
Generate code for the given grammar element.- Specified by:
genin classCodeGenerator- Parameters:
r- The character-range reference to generateblk- The character-range reference to generate
-
gen
Generate the lexer TXT file- Specified by:
genin classCodeGenerator- Throws:
IOException
-
gen
Generate code for the given grammar element.- Specified by:
genin classCodeGenerator- Parameters:
blk- The (...)+ block to generate
-
gen
Generate the parser TXT file- Specified by:
genin classCodeGenerator- Throws:
IOException
-
gen
Generate code for the given grammar element.- Specified by:
genin classCodeGenerator- Parameters:
rr- The rule-reference to generateblk- The rule-reference to generate
-
gen
Generate code for the given grammar element.- Specified by:
genin classCodeGenerator- Parameters:
atom- The string-literal reference to generateblk- The string-literal reference to generate
-
gen
Generate code for the given grammar element.- Specified by:
genin classCodeGenerator- Parameters:
r- The token-range reference to generateblk- The token-range reference to generate
-
gen
Generate code for the given grammar element.- Specified by:
genin classCodeGenerator- Parameters:
atom- The token-reference to generateblk- The token-reference to generate
-
gen
Description copied from class:CodeGeneratorGenerate code for the given grammar element.- Specified by:
genin classCodeGenerator
-
gen
Generate the tree-walker TXT file- Specified by:
genin classCodeGenerator- Throws:
IOException
-
gen
Generate a wildcard element- Specified by:
genin classCodeGenerator- Parameters:
wc- The wildcard element to generate
-
gen
Generate code for the given grammar element.- Specified by:
genin classCodeGenerator- Parameters:
blk- The (...)* block to generate
-
genAlt
-
genBlockPreamble
Generate the header for a block, which may be a RuleBlock or a plain AlternativeBLock. This generates any variable declarations, init-actions, and syntactic-predicate-testing variables. -
genCommonBlock
Generate common code for a block of alternatives; return a postscript that needs to be generated at the end of the block. Other routines may append else-clauses and such for error checking before the postfix is generated. -
genFollowSetForRuleBlock
Generate a textual representation of the follow set for a block.- Parameters:
blk- The rule block of interest
-
genHeader
protected void genHeader()Generate a header that is common to all TXT files -
genLookaheadSetForAlt
Generate the lookahead set for an alternate. -
genLookaheadSetForBlock
Generate a textual representation of the lookahead set for a block.- Parameters:
blk- The block of interest
-
genNextToken
public void genNextToken()Generate the nextToken rule. nextToken is a synthetic lexer rule that is the implicit OR of all user-defined lexer rules. -
genRule
Generate code for a named rule block- Parameters:
s- The RuleSymbol describing the rule to generate
-
genSynPred
Generate the syntactic predicate. This basically generates the alternative block, buts tracks if we are inside a synPred- Parameters:
blk- The syntactic predicate block
-
genTokenTypes
Generate the token types TXT file- Throws:
IOException
-
getASTCreateString
Get a string for an expression to generate creation of an AST subtree.- Specified by:
getASTCreateStringin classCodeGenerator- Parameters:
v- A Vector of String, where each element is an expression in the target language yielding an AST node.
-
getASTCreateString
Get a string for an expression to generate creating of an AST node- Specified by:
getASTCreateStringin classCodeGenerator- Parameters:
str- The arguments to the AST constructor
-
processActionForSpecialSymbols
protected String processActionForSpecialSymbols(String actionStr, int line, RuleBlock currentRule, ActionTransInfo tInfo) Description copied from class:CodeGeneratorLexically process $ and # references within the action. This will replace #id and #(...) with the appropriate function calls and/or variables etc...- Specified by:
processActionForSpecialSymbolsin classCodeGenerator
-
mapTreeId
Map an identifier to it's corresponding tree-node variable. This is context-sensitive, depending on the rule and alternative being generated- Specified by:
mapTreeIdin classCodeGenerator- Parameters:
id- The identifier name to mapforInput- true if the input tree node variable is to be returned, otherwise the output variable is returned.- Returns:
- The mapped id (which may be the same as the input), or null if the mapping is invalid due to duplicates
-
printSet
Format a lookahead or follow set.- Parameters:
depth- The depth of the entire lookahead/followk- The lookahead level to printlookahead- The lookahead/follow set to print
-