@kstory/core
Version:
Core parser and lexer for KStory interactive fiction language
88 lines • 2.46 kB
TypeScript
import { type Token } from './token';
export declare class Lexer {
private source;
private position;
private tokens;
private curChar;
private curLine;
private curColumn;
private prevIndent;
private isInComment;
private isInChoiceText;
private isExtendingStr;
private lastStringTokenIndex;
private stringStartLine;
private stringStartColumn;
constructor(source: string);
getTokens(): Token<unknown>[];
private step;
process(): void;
private push;
private pushAt;
private insertTokenAt;
private handleCurrentToken;
private handleNonCommentTokens;
private handleStructuralTokens;
private handleErrorIfNeeded;
private handleGoto;
private handleIdentifier;
private handleError;
private handleChoice;
private handleChoiceTextInline;
private handleSection;
private handleSectionName;
private handleChoiceTag;
private handleChoiceText;
private handleChoiceTextExtend;
private isChoiceTextEnding;
private processChoiceTextContent;
private handleChoiceTextNewline;
private handleChoiceTextComment;
private handleChoiceTextMultiComment;
private finalizeChoiceText;
private handleTag;
private handleCall;
private handleCallArguments;
private getTagName;
private getTagValue;
private handleString;
private handleInlineCall;
private isInlineCall;
private handleNewReplica;
private handleExtendReplica;
private shouldEndReplica;
private handleInlineCallInReplica;
private addStringTokenIfNotEmpty;
private processReplicaContent;
private isReplicaEnding;
private finalizeReplicaContent;
private handleEndReplica;
private handleIndent;
private handleComment;
private handleCommentContent;
private handleMultiCommentExtend;
private handleNewLine;
private getTokenType;
private isGoto;
private isSection;
private isChoice;
private isChoiceTextBound;
private isReplicaBegin;
private isTag;
private isChoiceTag;
private isComment;
private isMultiComment;
private isMultiCommentEnd;
private isNewLine;
private isEOF;
private isFirstOnLine;
private readLine;
private readLineUntilComment;
private isNotEscapingChar;
private isEndOfLine;
private isWhitespace;
private isEscapedChar;
private peek;
private isCall;
}
//# sourceMappingURL=lexer.d.ts.map