public class DiagnosticCodeGenerator extends CodeGenerator
| Modifier and Type | Field and Description |
|---|---|
protected boolean |
doingLexRules
true during lexer generation, false during parser generation
|
protected int |
syntacticPredLevel
non-zero if inside syntactic predicate generation
|
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 and Description |
|---|
DiagnosticCodeGenerator()
Create a Diagnostic code-generator using the given Grammar
The caller must still call setTool, setBehavior, and setAnalyzer
before generating code.
|
| Modifier and Type | Method and Description |
|---|---|
void |
gen()
Generate the parser, lexer, and token types documentation
|
void |
gen(ActionElement action)
Generate code for the given grammar element.
|
void |
gen(AlternativeBlock blk)
Generate code for the given grammar element.
|
void |
gen(BlockEndElement end)
Generate code for the given grammar element.
|
void |
gen(CharLiteralElement atom)
Generate code for the given grammar element.
|
void |
gen(CharRangeElement r)
Generate code for the given grammar element.
|
void |
gen(LexerGrammar g)
Generate the lexer TXT file
|
void |
gen(OneOrMoreBlock blk)
Generate code for the given grammar element.
|
void |
gen(ParserGrammar g)
Generate the parser TXT file
|
void |
gen(RuleRefElement rr)
Generate code for the given grammar element.
|
void |
gen(StringLiteralElement atom)
Generate code for the given grammar element.
|
void |
gen(TokenRangeElement r)
Generate code for the given grammar element.
|
void |
gen(TokenRefElement atom)
Generate code for the given grammar element.
|
void |
gen(TreeElement t)
Generate code for the given grammar element.
|
void |
gen(TreeWalkerGrammar g)
Generate the tree-walker TXT file
|
void |
gen(WildcardElement wc)
Generate a wildcard element
|
void |
gen(ZeroOrMoreBlock blk)
Generate code for the given grammar element.
|
protected void |
genAlt(Alternative alt) |
protected void |
genBlockPreamble(AlternativeBlock blk)
Generate the header for a block, which may be a RuleBlock or a
plain AlternativeBLock.
|
void |
genCommonBlock(AlternativeBlock blk)
Generate common code for a block of alternatives; return a postscript
that needs to be generated at the end of the block.
|
void |
genFollowSetForRuleBlock(RuleBlock blk)
Generate a textual representation of the follow set
for a block.
|
protected void |
genHeader()
Generate a header that is common to all TXT files
|
protected void |
genLookaheadSetForAlt(Alternative alt)
Generate the lookahead set for an alternate.
|
void |
genLookaheadSetForBlock(AlternativeBlock blk)
Generate a textual representation of the lookahead set
for a block.
|
void |
genNextToken()
Generate the nextToken rule.
|
void |
genRule(RuleSymbol s)
Generate code for a named rule block
|
protected void |
genSynPred(SynPredBlock blk)
Generate the syntactic predicate.
|
protected void |
genTokenTypes(TokenManager tm)
Generate the token types TXT file
|
String |
getASTCreateString(GrammarAtom atom,
String str)
Get a string for an expression to generate creating of an AST node
|
String |
getASTCreateString(Vector v)
Get a string for an expression to generate creation of an AST subtree.
|
String |
mapTreeId(String id,
ActionTransInfo tInfo)
Map an identifier to it's corresponding tree-node variable.
|
void |
printSet(int depth,
int k,
Lookahead lookahead)
Format a lookahead or follow set.
|
protected String |
processActionForSpecialSymbols(String actionStr,
int line,
RuleBlock currentRule,
ActionTransInfo tInfo)
Lexically process $ and # references within the action.
|
_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, setToolprotected int syntacticPredLevel
protected boolean doingLexRules
public DiagnosticCodeGenerator()
public void gen()
gen in class CodeGeneratorpublic void gen(ActionElement action)
gen in class CodeGeneratorblk - The {...} action to generatepublic void gen(AlternativeBlock blk)
gen in class CodeGeneratorblk - The "x|y|z|..." block to generatepublic void gen(BlockEndElement end)
gen in class CodeGeneratorblk - The block-end element to generate. Block-end
elements are synthesized by the grammar parser to represent
the end of a block.public void gen(CharLiteralElement atom)
gen in class CodeGeneratorblk - The character literal reference to generatepublic void gen(CharRangeElement r)
gen in class CodeGeneratorblk - The character-range reference to generatepublic void gen(LexerGrammar g) throws IOException
gen in class CodeGeneratorIOExceptionpublic void gen(OneOrMoreBlock blk)
gen in class CodeGeneratorblk - The (...)+ block to generatepublic void gen(ParserGrammar g) throws IOException
gen in class CodeGeneratorIOExceptionpublic void gen(RuleRefElement rr)
gen in class CodeGeneratorblk - The rule-reference to generatepublic void gen(StringLiteralElement atom)
gen in class CodeGeneratorblk - The string-literal reference to generatepublic void gen(TokenRangeElement r)
gen in class CodeGeneratorblk - The token-range reference to generatepublic void gen(TokenRefElement atom)
gen in class CodeGeneratorblk - The token-reference to generatepublic void gen(TreeElement t)
CodeGeneratorgen in class CodeGeneratorpublic void gen(TreeWalkerGrammar g) throws IOException
gen in class CodeGeneratorIOExceptionpublic void gen(WildcardElement wc)
gen in class CodeGeneratorwc - The wildcard element to generatepublic void gen(ZeroOrMoreBlock blk)
gen in class CodeGeneratorblk - The (...)* block to generateprotected void genAlt(Alternative alt)
protected void genBlockPreamble(AlternativeBlock blk)
public void genCommonBlock(AlternativeBlock blk)
public void genFollowSetForRuleBlock(RuleBlock blk)
blk - The rule block of interestprotected void genHeader()
protected void genLookaheadSetForAlt(Alternative alt)
public void genLookaheadSetForBlock(AlternativeBlock blk)
blk - The block of interestpublic void genNextToken()
public void genRule(RuleSymbol s)
s - The RuleSymbol describing the rule to generateprotected void genSynPred(SynPredBlock blk)
blk - The syntactic predicate blockprotected void genTokenTypes(TokenManager tm) throws IOException
IOExceptionpublic String getASTCreateString(Vector v)
getASTCreateString in class CodeGeneratorv - A Vector of String, where each element is an expression in the target language yielding an AST node.public String getASTCreateString(GrammarAtom atom, String str)
getASTCreateString in class CodeGeneratorstr - The arguments to the AST constructorprotected String processActionForSpecialSymbols(String actionStr, int line, RuleBlock currentRule, ActionTransInfo tInfo)
CodeGeneratorprocessActionForSpecialSymbols in class CodeGeneratorpublic String mapTreeId(String id, ActionTransInfo tInfo)
mapTreeId in class CodeGeneratorid - The identifier name to mapforInput - true if the input tree node variable is to be returned, otherwise the output variable is returned.public void printSet(int depth,
int k,
Lookahead lookahead)
depth - The depth of the entire lookahead/followk - The lookahead level to printlookahead - The lookahead/follow set to print