import { Tokenizer, IToken } from "../tokenizer"; import { Expression, ExpressionStatement, ParenthesizedExpression, VariableDeclaration, VariableDeclarator, CallExpression, MemberExpression, BinaryExpression, ForStatement, IfStatement, FunctionDeclaration, Program, Statement, SwitchStatement, WhileStatement } from "@babel/types"; import { CodeGenerator } from "@babel/generator"; /** * Main class Parser */ declare class Parser { _string: string; _tokenizer: Tokenizer; ast: Program; localScopeVariable: Array; _lookahead: IToken | null; _jsGenerator: CodeGenerator | null; constructor(); /** * Parses a string into an AST * @param {*} string */ parser(string: string): Program | null; generateJS(): import("@babel/generator").GeneratorResult | null; ParsMainBody(): void; /** * ParseStatement * start parsing base on a keyword. * */ ParseBodyStatements(endTokens?: Array | null): { localStatement: any[]; endToken: string; }; KeywordParsing(): Statement; parseWhileStatement(): WhileStatement; parseCaseOfStatement(): SwitchStatement; createNode(token: any): any; ParseArrayStatement(): VariableDeclaration | ExpressionStatement; /** * * @returns */ ParseForStatement(): ForStatement; ParseIfStatement(): IfStatement; VariableDeclarator(): VariableDeclarator[]; VariablesDeclarations(): VariableDeclaration; ParseExpressionTokens(tokens: any[]): ParenthesizedExpression | Expression | BinaryExpression; ParseExpressionStatement(endTokens: any): any; ParseFunctionArguments(): any; /** * Parse all New Class() assignement. */ ParseClassAssignement(literalToken?: any | undefined): VariableDeclaration | ExpressionStatement; /** * which function we should use based on the first token. * @param {} endTokens * @returns */ ParseRightAssignement(endTokens: any): any; parseMemberExpression(previewToken: any, computed: boolean): MemberExpression; ParseLiteral(lastToken?: any): any; _ParseFunctionCall(lastToken: any): CallExpression; ParseFunctionDeclaration(): FunctionDeclaration; _ParseArrayMemberExpression(lastToken: any): MemberExpression; VariableAssignement(literalNode: any): VariableDeclaration | ExpressionStatement; _eat(tokenType: string | null): IToken | null; findNode(currentNode: any, target: any): boolean; } export default Parser;