@mojir/lits
Version:
Lits is a Lisp dialect implemented in TypeScript
50 lines (49 loc) • 1.88 kB
TypeScript
import type { CondNode } from '../builtin/specialExpressions/cond';
import type { FnNode, FunctionNode } from '../builtin/specialExpressions/functions';
import type { IfNode } from '../builtin/specialExpressions/if';
import type { SwitchNode } from '../builtin/specialExpressions/switch';
import type { UnlessNode } from '../builtin/specialExpressions/unless';
import type { ReservedSymbolToken, SymbolToken } from '../tokenizer/token';
import type { TokenStream } from '../tokenizer/tokenize';
import { type BindingTarget, type Node, type ParseState } from './types';
export declare class Parser {
private readonly tokenStream;
private parseState;
constructor(tokenStream: TokenStream, parseState: ParseState);
private peek;
private peekAhead;
private advance;
parse(): Node[];
private parseExpression;
private parseOperand;
private parseOperandPart;
private parseObject;
private parseArray;
private parseFunctionCall;
parseLambdaFunction(): FnNode | null;
parseFunctionArguments(): BindingTarget[];
private parseShorthandLamdaFunction;
private parseOptionalDefaulValue;
private parseBindingTarget;
private parseLet;
private parseDo;
private parseLoop;
private parseTry;
private parseForOrDoseq;
private parseForLoopBinding;
private parseBinding;
parseIfOrUnless(token: SymbolToken): IfNode | UnlessNode;
parseCond(token: SymbolToken): CondNode;
parseSwitch(token: SymbolToken): SwitchNode;
parseFunction(token: ReservedSymbolToken<'function'>): FunctionNode;
private isAtEnd;
private isAtExpressionEnd;
private parseExport;
private stringToSymbolNode;
stringFromQuotedSymbol(value: string): string;
private parseSymbol;
private parseReservedSymbol;
private parseNumber;
private parseString;
private parseRegexpShorthand;
}