UNPKG

js-slang

Version:

Javascript-based implementations of Source, written in Typescript

196 lines 5.52 kB
"use strict"; /* Library for building ESTree nodes. */ Object.defineProperty(exports, "__esModule", { value: true }); exports.makeExportNamedDeclaration = exports.makeImportDeclaration = exports.makeImportSpecifier = exports.makeArrayExpression = exports.makeRestElement = exports.makeReturnStatement = exports.makeExpressionStatement = exports.makeAssignmentExpression = exports.makeConditionalExpression = exports.makeCallExpression = exports.makeBlockStatement = exports.makeArrowFunctionExpression = exports.makeLiteral = exports.makeIdentifier = exports.makeDeclaration = exports.makeProgram = void 0; function makeProgram(body = []) { // generate a good location based on the start of the first element of the body // and its last, as long as the body is not empty const loc = body.length > 0 ? { start: body[0].loc.start, end: body[body.length - 1].loc.end, } : { start: { line: 1, column: 0 }, end: { line: 1, column: 0 }, }; return { type: "Program", body, sourceType: "module", loc: loc, }; } exports.makeProgram = makeProgram; function makeDeclaration(kind, id, init, loc) { return { type: "VariableDeclaration", kind, declarations: [ { type: "VariableDeclarator", id, init, }, ], loc: loc ? loc : id.loc, }; } exports.makeDeclaration = makeDeclaration; function makeIdentifier(name, loc) { return { type: "Identifier", name, loc, }; } exports.makeIdentifier = makeIdentifier; function makeLiteral(value, loc) { return { type: "Literal", value, raw: `"${value}"`, loc, }; } exports.makeLiteral = makeLiteral; function makeArrowFunctionExpression(params, body, loc) { return { type: "ArrowFunctionExpression", params, body, async: false, expression: body.type !== "BlockStatement", loc: loc ? loc : body.loc, }; } exports.makeArrowFunctionExpression = makeArrowFunctionExpression; function makeBlockStatement(body, loc) { return { type: "BlockStatement", body, loc: loc ? loc : { start: body[0].loc.start, end: body[body.length - 1].loc.end, }, }; } exports.makeBlockStatement = makeBlockStatement; function makeCallExpression(callee, args, loc) { return { type: "CallExpression", optional: false, callee, arguments: args, loc: loc ? loc : { start: callee.loc.start, end: args[args.length - 1].loc.end, }, }; } exports.makeCallExpression = makeCallExpression; function makeConditionalExpression(test, consequent, alternate, loc) { return { type: "ConditionalExpression", test, consequent, alternate, loc: loc ? loc : { start: test.loc.start, end: alternate.loc.end, }, }; } exports.makeConditionalExpression = makeConditionalExpression; function makeAssignmentExpression(left, right, loc) { return { type: "AssignmentExpression", operator: "=", left, right, loc: loc ? loc : { start: left.loc.start, end: right.loc.end, }, }; } exports.makeAssignmentExpression = makeAssignmentExpression; function makeExpressionStatement(expression, loc) { return { type: "ExpressionStatement", expression, loc: loc ? loc : expression.loc, }; } exports.makeExpressionStatement = makeExpressionStatement; function makeReturnStatement(argument, loc) { return { type: "ReturnStatement", argument, loc: loc ? loc : argument.loc, }; } exports.makeReturnStatement = makeReturnStatement; function makeRestElement(argument, loc) { return { type: "RestElement", argument, loc: loc ? loc : argument.loc, }; } exports.makeRestElement = makeRestElement; function makeArrayExpression(elements, loc) { return { type: "ArrayExpression", elements, loc: loc ? loc : { start: elements[0].loc.start, end: elements[elements.length - 1].loc.end, }, }; } exports.makeArrayExpression = makeArrayExpression; function makeImportSpecifier(imported, local, loc) { return { type: "ImportSpecifier", imported, local, loc: loc ? loc : imported.loc, }; } exports.makeImportSpecifier = makeImportSpecifier; function makeImportDeclaration(specifiers, source, loc) { return { type: "ImportDeclaration", specifiers, source, loc: loc ? loc : { start: specifiers[0].loc.start, end: source.loc.end, }, }; } exports.makeImportDeclaration = makeImportDeclaration; function makeExportNamedDeclaration(declaration, loc) { return { type: "ExportNamedDeclaration", specifiers: [], source: null, declaration, loc: loc ? loc : declaration.loc, }; } exports.makeExportNamedDeclaration = makeExportNamedDeclaration; //# sourceMappingURL=estree-nodes.js.map