类 StringLiteralLexer


public class StringLiteralLexer extends LexerBase
  • 字段详细资料

    • NO_QUOTE_CHAR

      public static final char NO_QUOTE_CHAR
      另请参阅:
    • myBuffer

      protected CharSequence myBuffer
    • myStart

      protected int myStart
    • myEnd

      protected int myEnd
    • myBufferEnd

      protected int myBufferEnd
    • myQuoteChar

      protected final char myQuoteChar
    • myOriginalLiteralToken

      protected final IElementType myOriginalLiteralToken
  • 构造器详细资料

    • StringLiteralLexer

      public StringLiteralLexer(char quoteChar, IElementType originalLiteralToken)
    • StringLiteralLexer

      public StringLiteralLexer(char quoteChar, IElementType originalLiteralToken, boolean canEscapeEolOrFramingSpaces, String additionalValidEscapes)
    • StringLiteralLexer

      public StringLiteralLexer(char quoteChar, IElementType originalLiteralToken, boolean canEscapeEolOrFramingSpaces, String additionalValidEscapes, boolean allowOctal, boolean allowHex)
      参数:
      canEscapeEolOrFramingSpaces - true if following sequences are acceptable:
      * '\' at the end of the buffer (meaning escaped end of line)
      * '\ ' (escaped space) at the beginning and ath the end of the buffer (meaning escaped space, to avoid auto trimming on load)
  • 方法详细资料

    • start

      public void start(@NotNull @NotNull CharSequence buffer, int startOffset, int endOffset, int initialState)
      从类复制的说明: Lexer
      Prepare for lexing character data from buffer passed. Internal lexer state is supposed to be initialState. It is guaranteed that the value of initialState is the same as returned by Lexer.getState() method of this lexer at condition startOffset=getTokenStart(). This method is used to incrementally re-lex changed characters using lexing data acquired from this particular lexer sometime in the past.
      指定者:
      start 在类中 Lexer
      参数:
      buffer - character data for lexing.
      startOffset - offset to start lexing from
      endOffset - offset to stop lexing at
      initialState - the initial state of the lexer.
    • getState

      public int getState()
      从类复制的说明: Lexer
      Returns the current state of the lexer.
      指定者:
      getState 在类中 Lexer
      返回:
      the lexer state.
    • getTokenType

      public IElementType getTokenType()
      从类复制的说明: Lexer
      Returns the token at the current position of the lexer or null if lexing is finished.
      指定者:
      getTokenType 在类中 Lexer
      返回:
      the current token.
    • shouldAllowSlashZero

      protected boolean shouldAllowSlashZero()
    • handleSingleSlashEscapeSequence

      @NotNull protected @NotNull IElementType handleSingleSlashEscapeSequence()
    • getUnicodeEscapeSequenceType

      @NotNull protected @NotNull IElementType getUnicodeEscapeSequenceType()
    • getTokenStart

      public int getTokenStart()
      从类复制的说明: Lexer
      Returns the start offset of the current token.
      指定者:
      getTokenStart 在类中 Lexer
      返回:
      the current token start offset.
    • getTokenEnd

      public int getTokenEnd()
      从类复制的说明: Lexer
      Returns the end offset of the current token.
      指定者:
      getTokenEnd 在类中 Lexer
      返回:
      the current token end offset.
    • locateHexEscapeSequence

      protected int locateHexEscapeSequence(int start, int i)
    • locateUnicodeEscapeSequence

      protected int locateUnicodeEscapeSequence(int start, int i)
    • locateAdditionalEscapeSequence

      protected int locateAdditionalEscapeSequence(int start, int indexOfCharAfterSlash)

      Locates the end of an additional (non-standard) escape sequence. The sequence is considered to begin with a backslash symbol located at the start index of the lexer's buffer.

      Override this method if your language supports non-standard escape sequences. For example, in Go language Unicode escapes look like '\U12345678'. To locate this escape sequence, the implementation should check that indexOfCharAfterSlash points to the 'U' symbol in the buffer and return start + 8 (or the end index of the buffer if it is too short). Otherwise, the implementations should return -1 to indicate that the current buffer starting at the index start doesn't represent an additional escape sequence.

      When overriding this method, you most likely will need to also override getTokenType() to return proper type for the sequences located here.

    • advance

      public void advance()
      从类复制的说明: Lexer
      Advances the lexer to the next token.
      指定者:
      advance 在类中 Lexer
    • getBufferSequence

      @NotNull public @NotNull CharSequence getBufferSequence()
      从类复制的说明: Lexer
      Returns the buffer sequence over which the lexer is running. This method should return the same buffer instance which was passed to the start() method.
      指定者:
      getBufferSequence 在类中 Lexer
      返回:
      the lexer buffer.
    • getBufferEnd

      public int getBufferEnd()
      从类复制的说明: Lexer
      Returns the offset at which the lexer will stop lexing. This method should return the length of the buffer or the value passed in the endOffset parameter to the start() method.
      指定者:
      getBufferEnd 在类中 Lexer
      返回:
      the lexing end offset
    • toString

      public String toString()
      覆盖:
      toString 在类中 Object