js-slang
Version:
Javascript-based implementations of Source, written in Typescript
31 lines (30 loc) • 1.31 kB
TypeScript
/**
* Visitor interface for the AST.
* Allows us to traverse the AST and perform operations on it.
*/
import { Atomic, Extended } from "../types/nodes/scheme-node-types";
export interface Visitor {
visitSequence(node: Atomic.Sequence): any;
visitNumericLiteral(node: Atomic.NumericLiteral): any;
visitBooleanLiteral(node: Atomic.BooleanLiteral): any;
visitStringLiteral(node: Atomic.StringLiteral): any;
visitLambda(node: Atomic.Lambda): any;
visitIdentifier(node: Atomic.Identifier): any;
visitDefinition(node: Atomic.Definition): any;
visitApplication(node: Atomic.Application): any;
visitConditional(node: Atomic.Conditional): any;
visitPair(node: Atomic.Pair): any;
visitNil(node: Atomic.Nil): any;
visitSymbol(node: Atomic.Symbol): any;
visitSpliceMarker(node: Atomic.SpliceMarker): any;
visitReassignment(node: Atomic.Reassignment): any;
visitImport(node: Atomic.Import): any;
visitExport(node: Atomic.Export): any;
visitVector(node: Atomic.Vector): any;
visitFunctionDefinition(node: Extended.FunctionDefinition): any;
visitLet(node: Extended.Let): any;
visitCond(node: Extended.Cond): any;
visitList(node: Extended.List): any;
visitBegin(node: Extended.Begin): any;
visitDelay(node: Extended.Delay): any;
}