You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
45 lines
1.2 KiB
45 lines
1.2 KiB
import { Token } from './ast'; |
|
import type { Source } from './source'; |
|
import { TokenKind } from './tokenKind'; |
|
/** |
|
* Given a Source object, creates a Lexer for that source. |
|
* A Lexer is a stateful stream generator in that every time |
|
* it is advanced, it returns the next token in the Source. Assuming the |
|
* source lexes, the final Token emitted by the lexer will be of kind |
|
* EOF, after which the lexer will repeatedly return the same EOF token |
|
* whenever called. |
|
*/ |
|
export declare class Lexer { |
|
source: Source; |
|
/** |
|
* The previously focused non-ignored token. |
|
*/ |
|
lastToken: Token; |
|
/** |
|
* The currently focused non-ignored token. |
|
*/ |
|
token: Token; |
|
/** |
|
* The (1-indexed) line containing the current token. |
|
*/ |
|
line: number; |
|
/** |
|
* The character offset at which the current line begins. |
|
*/ |
|
lineStart: number; |
|
constructor(source: Source); |
|
get [Symbol.toStringTag](): string; |
|
/** |
|
* Advances the token stream to the next non-ignored token. |
|
*/ |
|
advance(): Token; |
|
/** |
|
* Looks ahead and returns the next non-ignored token, but does not change |
|
* the state of Lexer. |
|
*/ |
|
lookahead(): Token; |
|
} |
|
/** |
|
* @internal |
|
*/ |
|
export declare function isPunctuatorTokenKind(kind: TokenKind): boolean;
|
|
|