UNPKG

js-slang

Version:

Javascript-based implementations of Source, written in Typescript

35 lines (34 loc) 1.94 kB
/** * The final transpiler visitor. * Takes in expressions, yields es.Node[], so we can flatmap into a final program */ import * as es from "estree"; import { Atomic, Extended, Expression as scmExpression } from "../types/nodes/scheme-node-types"; import { Visitor } from "."; export declare class Transpiler implements Visitor { static create(): Transpiler; transpile(program: scmExpression[]): es.Program; visitSequence(node: Atomic.Sequence): [es.CallExpression]; visitNumericLiteral(node: Atomic.NumericLiteral): [es.CallExpression]; visitBooleanLiteral(node: Atomic.BooleanLiteral): [es.Literal]; visitStringLiteral(node: Atomic.StringLiteral): [es.Literal]; visitLambda(node: Atomic.Lambda): [es.ArrowFunctionExpression]; visitIdentifier(node: Atomic.Identifier): [es.Identifier]; visitDefinition(node: Atomic.Definition): [es.VariableDeclaration]; visitApplication(node: Atomic.Application): [es.CallExpression]; visitConditional(node: Atomic.Conditional): [es.ConditionalExpression]; visitPair(node: Atomic.Pair): [es.CallExpression]; visitNil(node: Atomic.Nil): [es.Literal]; visitSymbol(node: Atomic.Symbol): [es.CallExpression]; visitSpliceMarker(node: Atomic.SpliceMarker): [es.CallExpression]; visitReassignment(node: Atomic.Reassignment): [es.AssignmentExpression]; visitImport(node: Atomic.Import): (es.Statement | es.ModuleDeclaration)[]; visitExport(node: Atomic.Export): [es.ModuleDeclaration]; visitVector(node: Atomic.Vector): [es.ArrayExpression]; visitList(node: Extended.List): [es.CallExpression]; visitFunctionDefinition(node: Extended.FunctionDefinition): [es.VariableDeclaration]; visitLet(node: Extended.Let): [es.CallExpression]; visitCond(node: Extended.Cond): [es.ConditionalExpression]; visitBegin(node: Extended.Begin): [es.CallExpression]; visitDelay(node: Extended.Delay): [es.ArrowFunctionExpression]; }