UNPKG

js-slang

Version:

Javascript-based implementations of Source, written in Typescript

62 lines (61 loc) 2.77 kB
import { StmtNS, ExprNS } from "./ast-types"; type Expr = ExprNS.Expr; type Stmt = StmtNS.Stmt; import { Token } from "./tokenizer"; declare class Environment { source: string; enclosing: Environment | null; names: Map<string, Token>; functions: Set<string>; moduleBindings: Set<string>; constructor(source: string, enclosing: Environment | null, names: Map<string, Token>); lookupName(identifier: Token): number; lookupNameCurrentEnv(identifier: Token): Token | undefined; lookupNameCurrentEnvWithError(identifier: Token): void; lookupNameParentEnvWithError(identifier: Token): void; declareName(identifier: Token): void; declarePlaceholderName(identifier: Token): void; suggestNameCurrentEnv(identifier: Token): string | null; suggestName(identifier: Token): string | null; } export declare class Resolver implements StmtNS.Visitor<void>, ExprNS.Visitor<void> { source: string; ast: Stmt; environment: Environment | null; functionScope: Environment | null; constructor(source: string, ast: Stmt); resolve(stmt: Stmt[] | Stmt | Expr[] | Expr | null): void; varDeclNames(names: Map<string, Token>): Token[] | null; functionVarConstraint(identifier: Token): void; visitFileInputStmt(stmt: StmtNS.FileInput): void; visitIndentCreation(stmt: StmtNS.Indent): void; visitDedentCreation(stmt: StmtNS.Dedent): void; visitFunctionDefStmt(stmt: StmtNS.FunctionDef): void; visitAnnAssignStmt(stmt: StmtNS.AnnAssign): void; visitAssignStmt(stmt: StmtNS.Assign): void; visitAssertStmt(stmt: StmtNS.Assert): void; visitForStmt(stmt: StmtNS.For): void; visitIfStmt(stmt: StmtNS.If): void; visitGlobalStmt(stmt: StmtNS.Global): void; visitNonLocalStmt(stmt: StmtNS.NonLocal): void; visitReturnStmt(stmt: StmtNS.Return): void; visitWhileStmt(stmt: StmtNS.While): void; visitSimpleExprStmt(stmt: StmtNS.SimpleExpr): void; visitFromImportStmt(stmt: StmtNS.FromImport): void; visitContinueStmt(stmt: StmtNS.Continue): void; visitBreakStmt(stmt: StmtNS.Break): void; visitPassStmt(stmt: StmtNS.Pass): void; visitVariableExpr(expr: ExprNS.Variable): void; visitLambdaExpr(expr: ExprNS.Lambda): void; visitMultiLambdaExpr(expr: ExprNS.MultiLambda): void; visitUnaryExpr(expr: ExprNS.Unary): void; visitGroupingExpr(expr: ExprNS.Grouping): void; visitBinaryExpr(expr: ExprNS.Binary): void; visitBoolOpExpr(expr: ExprNS.BoolOp): void; visitCompareExpr(expr: ExprNS.Compare): void; visitCallExpr(expr: ExprNS.Call): void; visitTernaryExpr(expr: ExprNS.Ternary): void; visitLiteralExpr(expr: ExprNS.Literal): void; visitBigIntLiteralExpr(expr: ExprNS.BigIntLiteral): void; } export {};