Class Interpreter

  • All Implemented Interfaces:
    TokenSource

    public class Interpreter
    extends java.lang.Object
    implements TokenSource
    The recognition interpreter/engine for grammars. Separated out of Grammar as it's related, but technically not a Grammar function. You create an interpreter for a grammar and an input stream. This object can act as a TokenSource so that you can hook up two grammars (via a CommonTokenStream) to lex/parse. Being a token source only makes sense for a lexer grammar of course.
    • Nested Class Summary

      Nested Classes 
      Modifier and Type Class Description
      (package private) class  Interpreter.LexerActionGetTokenType
      A lexer listener that just creates token objects as they are matched.
    • Method Summary

      All Methods Instance Methods Concrete Methods 
      Modifier and Type Method Description
      java.lang.String getSourceName()
      Where are you getting tokens from? normally the implication will simply ask lexers input stream.
      Token nextToken()
      Return a Token object from your input stream (usually a CharStream).
      ParseTree parse​(java.lang.String startRule)  
      ParseTree parse​(java.lang.String startRule, java.util.List visitedStates)  
      void parse​(java.lang.String startRule, DebugEventListener actions, java.util.List visitedStates)  
      protected void parseEngine​(java.lang.String startRule, NFAState start, NFAState stop, IntStream input, java.util.Stack ruleInvocationStack, DebugEventListener actions, java.util.List visitedStates)
      Fill a list of all NFA states visited during the parse
      int predict​(DFA dfa)
      Given an input stream, return the unique alternative predicted by matching the input.
      void reportScanError​(RecognitionException re)  
      CommonToken scan​(java.lang.String startRule)  
      CommonToken scan​(java.lang.String startRule, java.util.List visitedStates)  
      void scan​(java.lang.String startRule, DebugEventListener actions, java.util.List visitedStates)
      For a given input char stream, try to match against the NFA starting at startRule.
      • Methods inherited from class java.lang.Object

        clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
    • Constructor Detail

    • Method Detail

      • nextToken

        public Token nextToken()
        Description copied from interface: TokenSource
        Return a Token object from your input stream (usually a CharStream). Do not fail/return upon lexing error; keep chewing on the characters until you get a good one; errors are not passed through to the parser.
        Specified by:
        nextToken in interface TokenSource
      • scan

        public void scan​(java.lang.String startRule,
                         DebugEventListener actions,
                         java.util.List visitedStates)
                  throws RecognitionException
        For a given input char stream, try to match against the NFA starting at startRule. This is a deterministic parse even though it is using an NFA because it uses DFAs at each decision point to predict which alternative will succeed. This is exactly what the generated parser will do. This only does lexer grammars. Return the token type associated with the final rule end state.
        Throws:
        RecognitionException
      • predict

        public int predict​(DFA dfa)
        Given an input stream, return the unique alternative predicted by matching the input. Upon error, return NFA.INVALID_ALT_NUMBER The first symbol of lookahead is presumed to be primed; that is, input.lookahead(1) must point at the input symbol you want to start predicting with.
      • getSourceName

        public java.lang.String getSourceName()
        Description copied from interface: TokenSource
        Where are you getting tokens from? normally the implication will simply ask lexers input stream.
        Specified by:
        getSourceName in interface TokenSource