UNPKG

bds.js

Version:

A simple interpreter written to simulate and run BDScript Language in JavaScript

63 lines (62 loc) 1.67 kB
declare type TokenString = { type: "string"; value: string; }; declare type TokenNumber = { type: "number"; value: number; }; declare type TokenCall = { type: "call"; value: string; child: TokenArgument[]; }; declare type TokenOpen = { type: "open"; }; declare type TokenClose = { type: "close"; }; declare type TokenNewArg = { type: "newArg"; }; declare type TokenOperator = { type: "operator"; value: "==" | "!=" | ">=" | "<=" | ">" | "<" | "!"; }; declare type TokenArgument = { type: "argument"; child: Token[]; }; declare type TokenProgram = { type: "program"; child: Token[]; }; declare type Token = { pos: number; line: number; } & (TokenArgument | TokenProgram | TokenString | TokenNumber | TokenCall | TokenOpen | TokenClose | TokenNewArg | TokenOperator); declare class Lexer { input: string; pos: number; line: number; col: number; escape_c: boolean; constructor(input: string); main(): Token[]; peek(offset?: number): string; next(): string; eof(): boolean; isOperator(x: string): boolean; isSyntax(c: string): boolean; isNumber(x: string): boolean; parseOperator(x: string): Token; validateCall(c: string): boolean; parseCall(): Token; validateString(c: string): boolean; parseString(): Token; readInput(validator: (c: string) => boolean): string; advance(): Token; clean(tokens: Token[]): Token[]; } export { Lexer, Token, TokenString, TokenNumber, TokenArgument, TokenProgram, TokenCall, TokenOpen, TokenClose, TokenNewArg, TokenOperator };