Package antlr.debug
Class ParseTreeDebugParser
- java.lang.Object
-
- antlr.Parser
-
- antlr.LLkParser
-
- antlr.debug.ParseTreeDebugParser
-
public class ParseTreeDebugParser extends LLkParser
Override the standard matching and rule entry/exit routines to build parse trees. This class is useful for 2.7.3 where you can specify a superclass like class TinyCParser extends Parser(ParseTreeDebugParser);
-
-
Field Summary
Fields Modifier and Type Field Description protected java.util.Stack
currentParseTreeRoot
Each new rule invocation must have it's own subtree.protected ParseTreeRule
mostRecentParseTreeRoot
Track most recently created parse subtree so that when parsing is finished, we can get to the root.protected int
numberOfDerivationSteps
For every rule replacement with a production, we bump up count.-
Fields inherited from class antlr.Parser
astFactory, inputState, returnAST, tokenNames, tokenTypeToASTClassMap, traceDepth
-
-
Constructor Summary
Constructors Constructor Description ParseTreeDebugParser(int k_)
ParseTreeDebugParser(ParserSharedInputState state, int k_)
ParseTreeDebugParser(TokenBuffer tokenBuf, int k_)
ParseTreeDebugParser(TokenStream lexer, int k_)
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description protected void
addCurrentTokenToParseTree()
This adds LT(1) to the current parse subtree.int
getNumberOfDerivationSteps()
ParseTree
getParseTree()
void
match(int i)
Make sure current lookahead symbol matches token type t.void
match(BitSet bitSet)
Make sure current lookahead symbol matches the given set Throw an exception upon mismatch, which is catch by either the error handler or by the syntactic predicate.void
matchNot(int i)
void
traceIn(java.lang.String s)
Create a rule node, add to current tree, and make it current rootvoid
traceOut(java.lang.String s)
Pop current root; back to adding to old root-
Methods inherited from class antlr.Parser
addMessageListener, addParserListener, addParserMatchListener, addParserTokenListener, addSemanticPredicateListener, addSyntacticPredicateListener, addTraceListener, consumeUntil, consumeUntil, defaultDebuggingSetup, getAST, getASTFactory, getFilename, getInputState, getTokenName, getTokenNames, getTokenTypeToASTClassMap, isDebugMode, mark, panic, recover, removeMessageListener, removeParserListener, removeParserMatchListener, removeParserTokenListener, removeSemanticPredicateListener, removeSyntacticPredicateListener, removeTraceListener, reportError, reportError, reportWarning, rewind, setASTFactory, setASTNodeClass, setASTNodeType, setDebugMode, setFilename, setIgnoreInvalidDebugCalls, setInputState, setTokenBuffer, traceIndent
-
-
-
-
Field Detail
-
currentParseTreeRoot
protected java.util.Stack currentParseTreeRoot
Each new rule invocation must have it's own subtree. Tokens are added to the current root so we must have a stack of subtree roots.
-
mostRecentParseTreeRoot
protected ParseTreeRule mostRecentParseTreeRoot
Track most recently created parse subtree so that when parsing is finished, we can get to the root.
-
numberOfDerivationSteps
protected int numberOfDerivationSteps
For every rule replacement with a production, we bump up count.
-
-
Constructor Detail
-
ParseTreeDebugParser
public ParseTreeDebugParser(int k_)
-
ParseTreeDebugParser
public ParseTreeDebugParser(ParserSharedInputState state, int k_)
-
ParseTreeDebugParser
public ParseTreeDebugParser(TokenBuffer tokenBuf, int k_)
-
ParseTreeDebugParser
public ParseTreeDebugParser(TokenStream lexer, int k_)
-
-
Method Detail
-
getParseTree
public ParseTree getParseTree()
-
getNumberOfDerivationSteps
public int getNumberOfDerivationSteps()
-
match
public void match(int i) throws MismatchedTokenException, TokenStreamException
Description copied from class:Parser
Make sure current lookahead symbol matches token type t. Throw an exception upon mismatch, which is catch by either the error handler or by the syntactic predicate.- Overrides:
match
in classParser
- Throws:
MismatchedTokenException
TokenStreamException
-
match
public void match(BitSet bitSet) throws MismatchedTokenException, TokenStreamException
Description copied from class:Parser
Make sure current lookahead symbol matches the given set Throw an exception upon mismatch, which is catch by either the error handler or by the syntactic predicate.- Overrides:
match
in classParser
- Throws:
MismatchedTokenException
TokenStreamException
-
matchNot
public void matchNot(int i) throws MismatchedTokenException, TokenStreamException
- Overrides:
matchNot
in classParser
- Throws:
MismatchedTokenException
TokenStreamException
-
addCurrentTokenToParseTree
protected void addCurrentTokenToParseTree() throws TokenStreamException
This adds LT(1) to the current parse subtree. Note that the match() routines add the node before checking for correct match. This means that, upon mismatched token, there will a token node in the tree corresponding to where that token was expected. For no viable alternative errors, no node will be in the tree as nothing was matched() (the lookahead failed to predict an alternative).- Throws:
TokenStreamException
-
traceIn
public void traceIn(java.lang.String s) throws TokenStreamException
Create a rule node, add to current tree, and make it current root- Overrides:
traceIn
in classLLkParser
- Throws:
TokenStreamException
-
traceOut
public void traceOut(java.lang.String s) throws TokenStreamException
Pop current root; back to adding to old root- Overrides:
traceOut
in classLLkParser
- Throws:
TokenStreamException
-
-