Class Scanner

java.lang.Object
org.openjdk.asmtools.jasm.ParseBase
org.openjdk.asmtools.jasm.Scanner

public class Scanner extends ParseBase
A Scanner for Jasm tokens. Errors are reported to the environment object.

The scanner keeps track of the current token, the value of the current token (if any), and the start position of the current token.

The scan() method advances the scanner to the next token in the input.

The match() method is used to quickly match opening brackets (ie: '(', '{', or '[') with their closing counter part. This is useful during error recovery.

The compiler treats either "\n", "\r" or "\r\n" as the end of a line.

  • Field Details

    • ch

      protected int ch
    • token

      protected JasmTokens.Token token
    • pos

      protected int pos
    • intValue

      protected int intValue
    • longValue

      protected long longValue
    • floatValue

      protected float floatValue
    • doubleValue

      protected double doubleValue
    • stringValue

      protected String stringValue
    • idValue

      protected String idValue
    • radix

      protected int radix
    • docComment

      protected String docComment
    • prevPos

      protected int prevPos
      The position of the previous token
    • sign

      protected int sign
    • inBits

      protected boolean inBits
    • count

      private int count
    • buffer

      private char[] buffer
    • escapingAllowed

      private Predicate<Integer> escapingAllowed
    • noFunc

      private final Predicate<Integer> noFunc
    • yesAndProcessFunc

      private final Predicate<Integer> yesAndProcessFunc
  • Constructor Details

    • Scanner

      protected Scanner(JasmEnvironment environment)
      main constructor.

      Create a scanner to scan an input stream.

  • Method Details

    • scanModuleStatement

      protected void scanModuleStatement()
    • scan

      protected void scan()
      Scan the next token.
    • checkTokenIdent

      protected final boolean checkTokenIdent()
      Check the token may be identifier
    • expect

      protected final void expect(JasmTokens.Token t) throws SyntaxError
      Expects a token, scans the next token or throws an exception.
      Throws:
      SyntaxError
    • check

      protected final void check(JasmTokens.Token t) throws SyntaxError
      Checks a token, throws an exception if not the same
      Throws:
      SyntaxError
    • putCh

      private void putCh(int ch)
    • bufferString

      private String bufferString()
    • skipComment

      private void skipComment()
      Scan a comment. This method should be called once the initial /, * and the next character have been read.
    • scanDocComment

      private String scanDocComment()
      Scan a doc comment. This method should be called once the initial /, * and * have been read. It gathers the content of the comment (without leading spaces and '*'s) in the string buffer.
    • scanCPRef

      private void scanCPRef()
      Scan a decimal at this point
    • scanNumber

      private void scanNumber()
      Scan a number. The first digit of the number should be the current character. We may be scanning hex, decimal, or octal at this point
    • scanReal

      private void scanReal()
      Scan a float. We are either looking at the decimal, or we have already seen it and put it into the buffer. We haven't seen an exponent. Scan a float. Should be called with the current character is either the 'e', 'E' or '.'
    • scanEscapeChar

      private int scanEscapeChar()
      Scan an escape character.
      Returns:
      the character or '\\'
    • scanString

      private void scanString()
      Scan a string. The current character should be the opening " of the string.
    • scanIdentifier

      private void scanIdentifier(char[] prefix)
      Scan an Identifier. The current character should be the first character of the identifier.
    • xscan

      protected final void xscan()
    • debugScan

      protected void debugScan(String dbstr)