Package antlr

Class TokenStreamSelector

  • All Implemented Interfaces:
    IASDebugStream, TokenStream

    public class TokenStreamSelector
    extends java.lang.Object
    implements TokenStream, IASDebugStream
    A token stream MUX (multiplexor) knows about n token streams and can multiplex them onto the same channel for use by token stream consumer like a parser. This is a way to have multiple lexers break up the same input stream for a single parser. Or, you can have multiple instances of the same lexer handle multiple input streams; this works great for includes.
    • Field Detail

      • inputStreamNames

        protected java.util.Hashtable inputStreamNames
        The set of inputs to the MUX
      • input

        protected TokenStream input
        The currently-selected token stream input
      • streamStack

        protected Stack streamStack
        Used to track stack of input streams
    • Constructor Detail

      • TokenStreamSelector

        public TokenStreamSelector()
    • Method Detail

      • addInputStream

        public void addInputStream​(TokenStream stream,
                                   java.lang.String key)
      • getCurrentStream

        public TokenStream getCurrentStream()
        Return the stream from tokens are being pulled at the moment.
      • getStream

        public TokenStream getStream​(java.lang.String sname)
      • push

        public void push​(java.lang.String sname)
      • retry

        public void retry()
                   throws TokenStreamRetryException
        Abort recognition of current Token and try again. A stream can push a new stream (for include files for example, and then retry(), which will cause the current stream to abort back to this.nextToken(). this.nextToken() then asks for a token from the current stream, which is the new "substream."
        Throws:
        TokenStreamRetryException
      • select

        public void select​(TokenStream stream)
        Set the stream without pushing old stream
      • select

        public void select​(java.lang.String sname)
                    throws java.lang.IllegalArgumentException
        Throws:
        java.lang.IllegalArgumentException
      • getEntireText

        public java.lang.String getEntireText()
        Description copied from interface: IASDebugStream
        Returns the entire text input to the lexer.
        Specified by:
        getEntireText in interface IASDebugStream
        Returns:
        The entire text or null, if error occured or System.in was used.
      • getOffsetInfo

        public TokenOffsetInfo getOffsetInfo​(Token token)
        Description copied from interface: IASDebugStream
        Returns the offset information for the token
        Specified by:
        getOffsetInfo in interface IASDebugStream
        Parameters:
        token - the token whose information need to be retrieved
        Returns:
        offset info, or null