antlr

Class HTMLCodeGenerator

public class HTMLCodeGenerator extends CodeGenerator

Generate P.html, a cross-linked representation of P with or without actions
Field Summary
protected booleandoingLexRules
true during lexer generation, false during parser generation
protected booleanfirstElementInAlt
protected AlternativeElementprevAltElem
protected intsyntacticPredLevel
non-zero if inside syntactic predicate generation
Constructor Summary
HTMLCodeGenerator()
Create a Diagnostic code-generator using the given Grammar The caller must still call setTool, setBehavior, and setAnalyzer before generating code.
Method Summary
voidgen()
voidgen(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.
voidgen(CharRangeElement r)
Generate code for the given grammar element.
voidgen(LexerGrammar g)
Generate the lexer HTML file
voidgen(OneOrMoreBlock blk)
Generate code for the given grammar element.
voidgen(ParserGrammar g)
Generate the parser HTML file
voidgen(RuleRefElement rr)
Generate code for the given grammar element.
voidgen(StringLiteralElement atom)
Generate code for the given grammar element.
voidgen(TokenRangeElement r)
Generate code for the given grammar element.
voidgen(TokenRefElement atom)
Generate code for the given grammar element.
voidgen(TreeElement t)
voidgen(TreeWalkerGrammar g)
Generate the tree-walker TXT file
voidgen(WildcardElement wc)
Generate a wildcard element
voidgen(ZeroOrMoreBlock blk)
Generate code for the given grammar element.
protected voidgenAlt(Alternative alt)
voidgenCommonBlock(AlternativeBlock blk)
Generate common code for a block of alternatives; return a postscript that needs to be generated at the end of the block.
voidgenFollowSetForRuleBlock(RuleBlock blk)
Generate a textual representation of the follow set for a block.
protected voidgenGenericBlock(AlternativeBlock blk, String blkOp)
protected voidgenHeader()
Generate a header that is common to all TXT files
protected voidgenLookaheadSetForAlt(Alternative alt)
Generate the lookahead set for an alternate.
voidgenLookaheadSetForBlock(AlternativeBlock blk)
Generate a textual representation of the lookahead set for a block.
voidgenNextToken()
Generate the nextToken rule. nextToken is a synthetic lexer rule that is the implicit OR of all user-defined lexer rules.
voidgenRule(RuleSymbol s)
Generate code for a named rule block
protected voidgenSynPred(SynPredBlock blk)
Generate the syntactic predicate.
voidgenTail()
protected voidgenTokenTypes(TokenManager tm)
Generate the token types TXT file
StringgetASTCreateString(Vector v)
Get a string for an expression to generate creation of an AST subtree.
StringgetASTCreateString(GrammarAtom atom, String str)
Get a string for an expression to generate creating of an AST node
static StringHTMLEncode(String s)
Encode a string for printing in a HTML document.. e.g. encode '<' '>' and similar stuff
StringmapTreeId(String id, ActionTransInfo tInfo)
Map an identifier to it's corresponding tree-node variable.
voidprintSet(int depth, int k, Lookahead lookahead)
Format a lookahead or follow set.
protected StringprocessActionForSpecialSymbols(String actionStr, int line, RuleBlock currentRule, ActionTransInfo tInfo)

Field Detail

doingLexRules

protected boolean doingLexRules
true during lexer generation, false during parser generation

firstElementInAlt

protected boolean firstElementInAlt

prevAltElem

protected AlternativeElement prevAltElem

syntacticPredLevel

protected int syntacticPredLevel
non-zero if inside syntactic predicate generation

Constructor Detail

HTMLCodeGenerator

public HTMLCodeGenerator()
Create a Diagnostic code-generator using the given Grammar The caller must still call setTool, setBehavior, and setAnalyzer before generating code.

Method Detail

gen

public void gen()

gen

public void gen(ActionElement action)
Generate code for the given grammar element.

Parameters: blk The {...} action to generate

gen

public void gen(AlternativeBlock blk)
Generate code for the given grammar element.

Parameters: blk The "x|y|z|..." block to generate

gen

public void gen(BlockEndElement end)
Generate code for the given grammar element.

Parameters: blk The block-end element to generate. Block-end elements are synthesized by the grammar parser to represent the end of a block.

gen

public void gen(CharLiteralElement atom)
Generate code for the given grammar element.

Parameters: blk The character literal reference to generate

gen

public void gen(CharRangeElement r)
Generate code for the given grammar element.

Parameters: blk The character-range reference to generate

gen

public void gen(LexerGrammar g)
Generate the lexer HTML file

gen

public void gen(OneOrMoreBlock blk)
Generate code for the given grammar element.

Parameters: blk The (...)+ block to generate

gen

public void gen(ParserGrammar g)
Generate the parser HTML file

gen

public void gen(RuleRefElement rr)
Generate code for the given grammar element.

Parameters: blk The rule-reference to generate

gen

public void gen(StringLiteralElement atom)
Generate code for the given grammar element.

Parameters: blk The string-literal reference to generate

gen

public void gen(TokenRangeElement r)
Generate code for the given grammar element.

Parameters: blk The token-range reference to generate

gen

public void gen(TokenRefElement atom)
Generate code for the given grammar element.

Parameters: blk The token-reference to generate

gen

public void gen(TreeElement t)

gen

public void gen(TreeWalkerGrammar g)
Generate the tree-walker TXT file

gen

public void gen(WildcardElement wc)
Generate a wildcard element

gen

public void gen(ZeroOrMoreBlock blk)
Generate code for the given grammar element.

Parameters: blk The (...)* block to generate

genAlt

protected void genAlt(Alternative alt)

genCommonBlock

public 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. Other routines may append else-clauses and such for error checking before the postfix is generated.

genFollowSetForRuleBlock

public void genFollowSetForRuleBlock(RuleBlock blk)
Generate a textual representation of the follow set for a block.

Parameters: blk The rule block of interest

genGenericBlock

protected void genGenericBlock(AlternativeBlock blk, String blkOp)

genHeader

protected void genHeader()
Generate a header that is common to all TXT files

genLookaheadSetForAlt

protected void genLookaheadSetForAlt(Alternative alt)
Generate the lookahead set for an alternate.

genLookaheadSetForBlock

public void genLookaheadSetForBlock(AlternativeBlock blk)
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

public void genRule(RuleSymbol s)
Generate code for a named rule block

Parameters: s The RuleSymbol describing the rule to generate

genSynPred

protected void genSynPred(SynPredBlock blk)
Generate the syntactic predicate. This basically generates the alternative block, buts tracks if we are inside a synPred

Parameters: blk The syntactic predicate block

genTail

public void genTail()

genTokenTypes

protected void genTokenTypes(TokenManager tm)
Generate the token types TXT file

getASTCreateString

public String getASTCreateString(Vector v)
Get a string for an expression to generate creation of an AST subtree.

Parameters: v A Vector of String, where each element is an expression in the target language yielding an AST node.

getASTCreateString

public String getASTCreateString(GrammarAtom atom, String str)
Get a string for an expression to generate creating of an AST node

Parameters: str The arguments to the AST constructor

HTMLEncode

static String HTMLEncode(String s)
Encode a string for printing in a HTML document.. e.g. encode '<' '>' and similar stuff

Parameters: s the string to encode

mapTreeId

public String mapTreeId(String id, ActionTransInfo tInfo)
Map an identifier to it's corresponding tree-node variable. This is context-sensitive, depending on the rule and alternative being generated

Parameters: id The identifier name to map forInput true if the input tree node variable is to be returned, otherwise the output variable is returned.

printSet

public void printSet(int depth, int k, Lookahead lookahead)
Format a lookahead or follow set.

Parameters: depth The depth of the entire lookahead/follow k The lookahead level to print lookahead The lookahead/follow set to print

processActionForSpecialSymbols

protected String processActionForSpecialSymbols(String actionStr, int line, RuleBlock currentRule, ActionTransInfo tInfo)