Skip to main content

TokenReader

export interface TokenReader {
  assert(matchers: [unknown]): TokenReader
  end(): void
  endMatch(throwFail: string | boolean): TokenReader
  errors: ErrorCollector
  findLast(matchers: [unknown]): undefined | [TokenReader, unknown]
  findLastMatch(matchers: [unknown]): undefined | [TokenReader, unknown]
  findNext(matchers: [unknown]): undefined | [TokenReader, unknown]
  findNextMatch(matchers: [unknown]): undefined | [TokenReader, unknown]
  insertSemicolons(multilineOperators: string[]): TokenReader
  isEof(): boolean
  matches(matchers: [unknown]): undefined | UnwrapSingleton<MapMatchersToTokens<Matchers>>
  originalTokens: Token[]
  readUntil(matchers: [unknown]): TokenReader
  rest: Token[]
  tokens: Token[]
  unreadToken(): void
}

Properties

assert

tokenReader.assert satisfies (matchers: [unknown]) => TokenReader

end

tokenReader.end satisfies () => void

endMatch

tokenReader.endMatch satisfies (throwFail: string | boolean) => TokenReader

errors

tokenReader.errors satisfies ErrorCollector

findLast

tokenReader.findLast satisfies (matchers: [unknown]) => undefined | [TokenReader, unknown]

findLastMatch

tokenReader.findLastMatch satisfies (matchers: [unknown]) => undefined | [TokenReader, unknown]

findNext

tokenReader.findNext satisfies (matchers: [unknown]) => undefined | [TokenReader, unknown]

findNextMatch

tokenReader.findNextMatch satisfies (matchers: [unknown]) => undefined | [TokenReader, unknown]

insertSemicolons

Creates a new TokenReader with semicolons inserted right before newlines if:

  • not first/last in the token list
  • not surrounded by multiline operators
tokenReader.insertSemicolons satisfies (multilineOperators: string[]) => TokenReader

isEof

tokenReader.isEof satisfies () => boolean

matches

tokenReader.matches satisfies (matchers: [unknown]) => undefined | UnwrapSingleton<MapMatchersToTokens<Matchers>>

originalTokens

Tokens including newlines (can be used for automatic semicolon injection)

tokenReader.originalTokens satisfies Token[]

readUntil

tokenReader.readUntil satisfies (matchers: [unknown]) => TokenReader

rest

Unread tokens optionally excluding newlines

tokenReader.rest satisfies Token[]

tokens

Tokens optionally excluding newlines

tokenReader.tokens satisfies Token[]

unreadToken

tokenReader.unreadToken satisfies () => void