@lpc-lang/core
Version:
LPC Language Compiler Library
85 lines • 5.39 kB
TypeScript
import { CommentKind, CommentRange, DiagnosticMessage, JSDocParsingMode, JSDocSyntaxKind, LanguageVariant, LineAndCharacter, ScriptKind, ScriptTarget, SourceFileLike, SyntaxKind } from "./_namespaces/lpc.js";
export type ErrorCallback = (message: DiagnosticMessage, length: number, arg0?: any) => void;
type RestoreStateFn = () => boolean;
export interface Scanner {
/** @deprecated use {@link getTokenFullStart} */
getStartPos(): number;
getToken(): SyntaxKind;
getTokenFullStart(): number;
getTokenStart(): number;
getTokenEnd(): number;
/** @deprecated use {@link getTokenEnd} */
getTextPos(): number;
/** @deprecated use {@link getTokenStart} */
getTokenPos(): number;
getTokenText(): string;
getTokenValue(): string;
getStateId(): number;
getState(id: number): SavedStatePos | undefined;
getStateEndings(): SavedStatePos[];
releaseState(): void;
resetSavedStates(): void;
hasUnicodeEscape(): boolean;
hasExtendedUnicodeEscape(): boolean;
hasPrecedingLineBreak(): boolean;
isIdentifier(): boolean;
isReservedWord(): boolean;
isUnterminated(): boolean;
reScanGreaterToken(): SyntaxKind;
reScanAsteriskEqualsToken(): SyntaxKind;
reScanLessThanToken(): SyntaxKind;
reScanHashToken(): SyntaxKind;
reScanLessThanTokenAsStringLiteral(): SyntaxKind;
reScanQuestionToken(): SyntaxKind;
reScanInvalidIdentifier(): SyntaxKind;
reScanInclude(pos: number): SyntaxKind;
scanJsDocToken(): JSDocSyntaxKind;
scan(): SyntaxKind;
switchStream(newFileName: string, newText: string, start: number, length: number, revertOnEOF?: boolean, onRelease?: () => boolean): RestoreStateFn;
getText(): string;
setText(text: string | undefined, start?: number, length?: number): void;
setFileName(fileName: string): void;
setOnError(onError: ErrorCallback | undefined): void;
setScriptTarget(scriptTarget: ScriptTarget): void;
setLanguageVariant(variant: LanguageVariant): void;
setScriptKind(scriptKind: ScriptKind): void;
setReportLineBreak(flag: boolean): void;
setJSDocParsingMode(kind: JSDocParsingMode): void;
/** @deprecated use {@link resetTokenState} */
setTextPos(textPos: number): void;
setParseBracketAsStringLiteral(option: boolean): void;
resetTokenState(pos: number, resetEnding?: boolean): void;
lookAhead<T>(callback: () => T): T;
scanRange<T>(start: number, length: number, callback: () => T): T;
tryScan<T>(callback: () => T): T;
getEnd(): number;
getFileName(): string;
}
interface SavedStatePos {
fileName: string;
end: number;
isSpeculative?: boolean;
}
export declare function tokenToString(t: SyntaxKind): string | undefined;
export declare function getPositionOfLineAndCharacter(sourceFile: SourceFileLike, line: number, character: number): number;
export declare function getLineAndCharacterOfPosition(sourceFile: SourceFileLike, position: number): LineAndCharacter;
export declare function isWhiteSpaceLike(ch: number): boolean;
/** Does not include line breaks. For that, see isWhiteSpaceLike. */
export declare function isWhiteSpaceSingleLine(ch: number): boolean;
export declare function isLineBreak(ch: number): boolean;
export declare function couldStartTrivia(text: string, pos: number): boolean;
export declare function forEachLeadingCommentRange<U>(text: string, pos: number, cb: (pos: number, end: number, kind: CommentKind, hasTrailingNewLine: boolean) => U): U | undefined;
export declare function forEachLeadingCommentRange<T, U>(text: string, pos: number, cb: (pos: number, end: number, kind: CommentKind, hasTrailingNewLine: boolean, state: T) => U, state: T): U | undefined;
export declare function forEachTrailingCommentRange<U>(text: string, pos: number, cb: (pos: number, end: number, kind: CommentKind, hasTrailingNewLine: boolean) => U): U | undefined;
export declare function forEachTrailingCommentRange<T, U>(text: string, pos: number, cb: (pos: number, end: number, kind: CommentKind, hasTrailingNewLine: boolean, state: T) => U, state: T): U | undefined;
export declare function reduceEachLeadingCommentRange<T, U>(text: string, pos: number, cb: (pos: number, end: number, kind: CommentKind, hasTrailingNewLine: boolean, state: T) => U, state: T, initial: U): U;
export declare function reduceEachTrailingCommentRange<T, U>(text: string, pos: number, cb: (pos: number, end: number, kind: CommentKind, hasTrailingNewLine: boolean, state: T) => U, state: T, initial: U): U;
export declare function getLeadingCommentRanges(text: string, pos: number): CommentRange[] | undefined;
export declare function getTrailingCommentRanges(text: string, pos: number): CommentRange[] | undefined;
/** Optionally, get the shebang */
export declare function getShebang(text: string): string | undefined;
export declare function isIdentifierStart(ch: number, languageVersion: ScriptTarget | undefined): boolean;
export declare function isIdentifierPart(ch: number, languageVersion: ScriptTarget | undefined, identifierVariant?: LanguageVariant): boolean;
export declare function createScanner(languageVersion: ScriptTarget, shouldSkipTrivia: boolean, shouldSkipNonParsableDirectives: boolean, languageVariant?: LanguageVariant, textInitial?: string, onError?: ErrorCallback, start?: number, length?: number): Scanner;
export {};
//# sourceMappingURL=scanner.d.ts.map