org.antlr.runtime.tree
Class TreeParser

java.lang.Object
  extended by org.antlr.runtime.BaseRecognizer
      extended by org.antlr.runtime.tree.TreeParser
Direct Known Subclasses:
ANTLRv3Tree, DebugTreeParser, TreeFilter, TreeRewriter

public class TreeParser
extends BaseRecognizer

A parser for a stream of tree nodes. "tree grammars" result in a subclass of this. All the error reporting and recovery is shared with Parser via the BaseRecognizer superclass.


Field Summary
static int DOWN
           
protected  TreeNodeStream input
           
static int UP
           
 
Fields inherited from class org.antlr.runtime.BaseRecognizer
DEFAULT_TOKEN_CHANNEL, HIDDEN, INITIAL_FOLLOW_STACK_SIZE, MEMO_RULE_FAILED, MEMO_RULE_UNKNOWN, NEXT_TOKEN_RULE_NAME, state
 
Constructor Summary
TreeParser(TreeNodeStream input)
           
TreeParser(TreeNodeStream input, RecognizerSharedState state)
           
 
Method Summary
protected  java.lang.Object getCurrentInputSymbol(IntStream input)
          Match needs to return the current input symbol, which gets put into the label for the associated token ref; e.g., x=ID.
 java.lang.String getErrorHeader(RecognitionException e)
          Prefix error message with the grammar name because message is always intended for the programmer because the parser built the input tree not the user.
 java.lang.String getErrorMessage(RecognitionException e, java.lang.String[] tokenNames)
          Tree parsers parse nodes they usually have a token object as payload.
protected  java.lang.Object getMissingSymbol(IntStream input, RecognitionException e, int expectedTokenType, BitSet follow)
          Conjure up a missing token during error recovery.
 java.lang.String getSourceName()
           
 TreeNodeStream getTreeNodeStream()
           
 void matchAny(IntStream ignore)
          Match '.' in tree parser has special meaning.
protected  java.lang.Object recoverFromMismatchedToken(IntStream input, int ttype, BitSet follow)
          We have DOWN/UP nodes in the stream that have no line info; override.
 void reset()
          reset the parser's state; subclasses must rewinds the input stream
 void setTreeNodeStream(TreeNodeStream input)
          Set the input stream
 void traceIn(java.lang.String ruleName, int ruleIndex)
           
 void traceOut(java.lang.String ruleName, int ruleIndex)
           
 
Methods inherited from class org.antlr.runtime.BaseRecognizer
alreadyParsedRule, beginResync, combineFollows, computeContextSensitiveRuleFOLLOW, computeErrorRecoverySet, consumeUntil, consumeUntil, displayRecognitionError, emitErrorMessage, endResync, failed, getBacktrackingLevel, getGrammarFileName, getNumberOfSyntaxErrors, getRuleInvocationStack, getRuleInvocationStack, getRuleMemoization, getRuleMemoizationCacheSize, getTokenErrorDisplay, getTokenNames, match, memoize, mismatchIsMissingToken, mismatchIsUnwantedToken, pushFollow, recover, recoverFromMismatchedSet, reportError, setBacktrackingLevel, toStrings, traceIn, traceOut
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

DOWN

public static final int DOWN
See Also:
Constant Field Values

UP

public static final int UP
See Also:
Constant Field Values

input

protected TreeNodeStream input
Constructor Detail

TreeParser

public TreeParser(TreeNodeStream input)

TreeParser

public TreeParser(TreeNodeStream input,
                  RecognizerSharedState state)
Method Detail

reset

public void reset()
Description copied from class: BaseRecognizer
reset the parser's state; subclasses must rewinds the input stream

Overrides:
reset in class BaseRecognizer

setTreeNodeStream

public void setTreeNodeStream(TreeNodeStream input)
Set the input stream


getTreeNodeStream

public TreeNodeStream getTreeNodeStream()

getSourceName

public java.lang.String getSourceName()
Specified by:
getSourceName in class BaseRecognizer

getCurrentInputSymbol

protected java.lang.Object getCurrentInputSymbol(IntStream input)
Description copied from class: BaseRecognizer
Match needs to return the current input symbol, which gets put into the label for the associated token ref; e.g., x=ID. Token and tree parsers need to return different objects. Rather than test for input stream type or change the IntStream interface, I use a simple method to ask the recognizer to tell me what the current input symbol is. This is ignored for lexers.

Overrides:
getCurrentInputSymbol in class BaseRecognizer

getMissingSymbol

protected java.lang.Object getMissingSymbol(IntStream input,
                                            RecognitionException e,
                                            int expectedTokenType,
                                            BitSet follow)
Description copied from class: BaseRecognizer
Conjure up a missing token during error recovery. The recognizer attempts to recover from single missing symbols. But, actions might refer to that missing symbol. For example, x=ID {f($x);}. The action clearly assumes that there has been an identifier matched previously and that $x points at that token. If that token is missing, but the next token in the stream is what we want we assume that this token is missing and we keep going. Because we have to return some token to replace the missing token, we have to conjure one up. This method gives the user control over the tokens returned for missing tokens. Mostly, you will want to create something special for identifier tokens. For literals such as '{' and ',', the default action in the parser or tree parser works. It simply creates a CommonToken of the appropriate type. The text will be the token. If you change what tokens must be created by the lexer, override this method to create the appropriate tokens.

Overrides:
getMissingSymbol in class BaseRecognizer

matchAny

public void matchAny(IntStream ignore)
Match '.' in tree parser has special meaning. Skip node or entire tree if node has children. If children, scan until corresponding UP node.

Overrides:
matchAny in class BaseRecognizer

recoverFromMismatchedToken

protected java.lang.Object recoverFromMismatchedToken(IntStream input,
                                                      int ttype,
                                                      BitSet follow)
                                               throws RecognitionException
We have DOWN/UP nodes in the stream that have no line info; override. plus we want to alter the exception type. Don't try to recover from tree parser errors inline...

Overrides:
recoverFromMismatchedToken in class BaseRecognizer
Throws:
RecognitionException

getErrorHeader

public java.lang.String getErrorHeader(RecognitionException e)
Prefix error message with the grammar name because message is always intended for the programmer because the parser built the input tree not the user.

Overrides:
getErrorHeader in class BaseRecognizer

getErrorMessage

public java.lang.String getErrorMessage(RecognitionException e,
                                        java.lang.String[] tokenNames)
Tree parsers parse nodes they usually have a token object as payload. Set the exception token and do the default behavior.

Overrides:
getErrorMessage in class BaseRecognizer

traceIn

public void traceIn(java.lang.String ruleName,
                    int ruleIndex)

traceOut

public void traceOut(java.lang.String ruleName,
                     int ruleIndex)


Copyright © 2013. All Rights Reserved.