UNPKG

js-slang

Version:

Javascript-based implementations of Source, written in Typescript

50 lines 2.25 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.auxiliaryBuiltinFunctions = void 0; const acorn_1 = require("acorn"); const ArrowFunctionExpression_1 = require("../nodes/Expression/ArrowFunctionExpression"); const FunctionApplication_1 = require("../nodes/Expression/FunctionApplication"); exports.auxiliaryBuiltinFunctions = { __access_export__: { definition: (args) => { const parsedProgram = (0, acorn_1.parse)(` (exports, lookup_name) => { if (lookup_name === "default") { return head(exports); } else { const named_exports = tail(exports); return __access_named_export__(named_exports, lookup_name); } } `, { ecmaVersion: 10 }); const parsedExpressionStatement = parsedProgram.body[0]; const parsedExpression = parsedExpressionStatement.expression; return new FunctionApplication_1.StepperFunctionApplication(ArrowFunctionExpression_1.StepperArrowFunctionExpression.create(parsedExpression), args); }, arity: 2 }, __access_named_export__: { definition: (args) => { const parsedProgram = (0, acorn_1.parse)(` (named_exports, lookup_name) => { if (is_null(named_exports)) { return undefined; } else { const name = head(head(named_exports)); const identifier = tail(head(named_exports)); if (name === lookup_name) { return identifier; } else { return __access_named_export__(tail(named_exports), lookup_name); } } } `, { ecmaVersion: 10 }); const parsedExpressionStatement = parsedProgram.body[0]; const parsedExpression = parsedExpressionStatement.expression; return new FunctionApplication_1.StepperFunctionApplication(ArrowFunctionExpression_1.StepperArrowFunctionExpression.create(parsedExpression), args); }, arity: 2 } }; //# sourceMappingURL=auxiliary.js.map