js-slang
Version:
Javascript-based implementations of Source, written in Typescript
62 lines (61 loc) • 2.77 kB
TypeScript
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 {};