numenor
Version:
Customizable, safe evaluator of JavaScript-like expressions.
51 lines (40 loc) • 2.04 kB
JavaScript
;
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;