TokenReader
export interface TokenReader {
assert<Matchers extends TokenMatcher<Token>[]>(matchers: [...Matchers[]]): TokenReader
end(): void
endMatch(throwFail?: string | boolean): TokenReader
errors: ErrorCollector
findLast<Matchers extends TokenMatcher<Token>[]>(matchers: [...Matchers[]]): undefined | [TokenReader, ...MapMatchersToTokens<Matchers>[]]
findLastMatch<Matchers extends TokenMatcher<Token>[]>(matchers: [...Matchers[]]): undefined | [TokenReader, ...MapMatchersToTokens<Matchers>[]]
findNext<Matchers extends TokenMatcher<Token>[]>(matchers: [...Matchers[]]): undefined | [TokenReader, ...MapMatchersToTokens<Matchers>[]]
findNextMatch<Matchers extends TokenMatcher<Token>[]>(matchers: [...Matchers[]]): undefined | [TokenReader, ...MapMatchersToTokens<Matchers>[]]
insertSemicolons(multilineOperators: string[]): TokenReader
isEof(): boolean
matches<Matchers extends TokenMatcher<Token>[]>(matchers: [...Matchers[]]): undefined | UnwrapSingleton<MapMatchersToTokens<Matchers>>
originalTokens: Token[]
pos: number
readUntil<Matchers extends TokenMatcher<Token>[]>(matchers: [...Matchers[]]): TokenReader
rest: Token[]
tokens: Token[]
unreadToken(): void
}
Instantiate a TokenReader
with makeTokenReader.
Properties
assert
assert<Matchers extends TokenMatcher<Token>[]>(matchers: [...Matchers[]]): TokenReader
end
end(): void
endMatch
endMatch(throwFail?: string | boolean): TokenReader
errors
errors: ErrorCollector
findLast
findLast<Matchers extends TokenMatcher<Token>[]>(matchers: [...Matchers[]]): undefined | [TokenReader, ...MapMatchersToTokens<Matchers>[]]
findLastMatch
findLastMatch<Matchers extends TokenMatcher<Token>[]>(matchers: [...Matchers[]]): undefined | [TokenReader, ...MapMatchersToTokens<Matchers>[]]
findNext
findNext<Matchers extends TokenMatcher<Token>[]>(matchers: [...Matchers[]]): undefined | [TokenReader, ...MapMatchersToTokens<Matchers>[]]
findNextMatch
findNextMatch<Matchers extends TokenMatcher<Token>[]>(matchers: [...Matchers[]]): undefined | [TokenReader, ...MapMatchersToTokens<Matchers>[]]
insertSemicolons
insertSemicolons(multilineOperators: string[]): TokenReader
Creates a new TokenReader with semicolons inserted right before newlines if:
- not first/last in the token list
- not surrounded by multiline operators
isEof
isEof(): boolean
matches
matches<Matchers extends TokenMatcher<Token>[]>(matchers: [...Matchers[]]): undefined | UnwrapSingleton<MapMatchersToTokens<Matchers>>
originalTokens
originalTokens: Token[]
Tokens including newlines (can be used for automatic semicolon injection)
pos
pos: number
TokenReader
in tokens
.
readUntil
readUntil<Matchers extends TokenMatcher<Token>[]>(matchers: [...Matchers[]]): TokenReader
rest
rest: Token[]
Unread tokens optionally excluding newlines
tokens
tokens: Token[]
Tokens optionally excluding newlines
unreadToken
unreadToken(): void