UNPKG

numenor

Version:

Customizable, safe evaluator of JavaScript-like expressions.

51 lines (40 loc) 2.04 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.UndefinedLiteral = exports.NullLiteral = exports.BooleanLiteral = exports.StringLiteral = exports.NumberLiteral = exports.Identifier = void 0; var ExpressionType = _interopRequireWildcard(require("../ExpressionType")); var _Lexer = require("../../Lexer"); var _Error = require("../Error"); function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = Object.defineProperty && Object.getOwnPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : {}; if (desc.get || desc.set) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } } newObj.default = obj; return newObj; } } var Identifier = function Identifier(parser, token) { if (token.type !== _Lexer.TokenType.Identifier) { throw new SyntaxError((0, _Error.UnknownToken)(token)); } return { type: ExpressionType.Identifier, name: token.name }; }; exports.Identifier = Identifier; function parse(literal, expression) { return function (parser, token) { if (token.type !== literal) { throw new SyntaxError((0, _Error.UnknownToken)(token)); } return { type: expression, value: token.value }; }; } var NumberLiteral = parse(_Lexer.TokenType.NumberLiteral, ExpressionType.NumberLiteral); exports.NumberLiteral = NumberLiteral; var StringLiteral = parse(_Lexer.TokenType.StringLiteral, ExpressionType.StringLiteral); exports.StringLiteral = StringLiteral; var BooleanLiteral = parse(_Lexer.TokenType.BooleanLiteral, ExpressionType.BooleanLiteral); exports.BooleanLiteral = BooleanLiteral; var NullLiteral = parse(_Lexer.TokenType.NullLiteral, ExpressionType.NullLiteral); exports.NullLiteral = NullLiteral; var UndefinedLiteral = parse(_Lexer.TokenType.UndefinedLiteral, ExpressionType.UndefinedLiteral); exports.UndefinedLiteral = UndefinedLiteral;