Package gnu.text

Class Lexer

    • Field Detail

      • port

        protected gnu.kawa.io.InPort port
      • tentative

        protected boolean tentative
      • nesting

        protected int nesting
      • tokenBuffer

        public char[] tokenBuffer
        For building tokens of various kinds.
      • tokenBufferLength

        public int tokenBufferLength
        The number of chars of tokenBuffer that are used.
    • Constructor Detail

      • Lexer

        public Lexer​(gnu.kawa.io.InPort port)
      • Lexer

        public Lexer​(gnu.kawa.io.InPort port,
                     SourceMessages messages)
    • Method Detail

      • pushNesting

        public char pushNesting​(char promptChar)
        Enter a nested expression. This is used in interactive mode to control whether to continue past end of line, depending on whether the expression is incomplete.
        Parameters:
        promptChar - Used in prompt string to indicate type of nesting.
        Returns:
        The previous value of promptChar, to be passed to popNesting.
      • popNesting

        public void popNesting​(char save)
        Exit a nested expression, reversing pushNesting
        Parameters:
        save - Saved values return by prior pushNesting
      • getPort

        public final gnu.kawa.io.InPort getPort()
      • readCodePoint

        public int readCodePoint()
                          throws IOException
        Read a Unicode character (codepoint) by checking for surrogates.
        Throws:
        IOException
      • checkNext

        public boolean checkNext​(char ch)
                          throws IOException
        Check if the next character matches a given character.
        Parameters:
        ch - The character to match against.
        Returns:
        if the character read matches On a match, the position is advanced following that character.
        Throws:
        IOException
      • checkErrors

        public boolean checkErrors​(PrintWriter out,
                                   int max)
        Returns true if any error were seen. Prints and clears the errors.
        Parameters:
        out - where to write the error message to
        max - maximum number of messages to print (can be 0)
      • seenErrors

        public boolean seenErrors()
      • clearErrors

        public void clearErrors()
      • error

        public void error​(char severity,
                          String filename,
                          int line,
                          int column,
                          String message)
      • error

        public void error​(char severity,
                          String message)
      • error

        public void error​(String message)
      • readOptionalExponent

        public int readOptionalExponent()
                                 throws IOException
        Read an optional signed integer. If there is no integer in the input stream, return 1. For excessively large exponents, return Integer.MIN_VALUE or Integer.MAX_VALUE.
        Throws:
        IOException
      • readDelimited

        public boolean readDelimited​(String delimiter)
                              throws IOException,
                                     SyntaxException
        Scan until a given delimiter. On success, text upto the delimiter is in then tokenBuffer (with tokenBufferLength marking its length); the delimiter is not included.
        Throws:
        IOException
        SyntaxException
      • readDigitsInBuffer

        public static long readDigitsInBuffer​(gnu.kawa.io.InPort port,
                                              long ival,
                                              int radix)
        Read digits, up to the first non-digit or the buffer limit
        Parameters:
        ival - previously-seen digits or -2 if no digits seen
        Returns:
        the digits seen as a non-negative long, or -1 on overflow, or -2 if no digits seen
      • readDigits

        public static long readDigits​(gnu.kawa.io.InPort port,
                                      int radix)
                               throws IOException
        Throws:
        IOException
      • getName

        public String getName()
      • getLineNumber

        public int getLineNumber()
        Get the current line number. The "first" line is number number 0.
      • getColumnNumber

        public int getColumnNumber()
        Return the current (zero-based) column number.
      • isInteractive

        public boolean isInteractive()
      • setInteractive

        public void setInteractive​(boolean v)
      • isTentative

        public boolean isTentative()
        True if input may be incomplete or actively edited. Used for command-completion and on-the-fly error checking.
      • setTentative

        public void setTentative​(boolean v)
      • tokenBufferAppend

        public void tokenBufferAppend​(int ch)
        Append one character to tokenBuffer, resizing it if need be.
      • tokenBufferString

        public String tokenBufferString()
      • mark

        public void mark()
                  throws IOException
        Start tentative parsing. Must be followed by a reset.
        Throws:
        IOException
      • reset

        public void reset()
                   throws IOException
        Stop tentative parsing. Return to position where we called mark.
        Overrides:
        reset in class Reader
        Throws:
        IOException