type Pos = number; type rune = string; interface Item { typ: ItemType; pos: Pos; val: string; line: number; } declare enum ItemType { itemError = 0, itemBool = 1, itemChar = 2, itemCharConstant = 3, itemComment = 4, itemComplex = 5, itemAssign = 6, itemDeclare = 7, itemEOF = 8, itemField = 9, itemIdentifier = 10, itemLeftDelim = 11, itemLeftParen = 12, itemNumber = 13, itemPipe = 14, itemRawString = 15, itemRightDelim = 16, itemRightParen = 17, itemSpace = 18, itemString = 19, itemText = 20, itemVariable = 21, itemKeyword = 22, itemBlock = 23, itemBreak = 24, itemContinue = 25, itemDot = 26, itemDefine = 27, itemElse = 28, itemEnd = 29, itemIf = 30, itemNil = 31, itemRange = 32, itemTemplate = 33, itemWith = 34 } interface LexOptions { emitComment: boolean; breakOK: boolean; continueOK: boolean; } type StateFn = (l: Lexer) => StateFn | null; declare class Lexer { name: string; input: string; leftDelim: string; rightDelim: string; pos: Pos; start: Pos; atEOF: boolean; parenDepth: number; line: number; startLine: number; item: Item; insideAction: boolean; options: LexOptions; constructor(name: string, input: string, left: string, right: string); next(): rune; peek(): rune; backup(): void; emit(t: ItemType): StateFn | null; ignore(): void; accept(valid: string): boolean; acceptRun(valid: string): void; errorf(format: string, ...args: any[]): StateFn | null; nextItem(): Item; atRightDelim(): [boolean, boolean]; atTerminator(): boolean; scanNumber(): boolean; thisItem(t: ItemType): Item; emitItem(i: Item): StateFn | null; } export declare function lex(name: string, input: string, left?: string, right?: string): Lexer; export { ItemType, type Item, type LexOptions };