UNPKG

mutants-appfx

Version:

appfx module

137 lines (105 loc) 3.96 kB
'use strict'; Object.defineProperty(exports, "__esModule", { value: true }); exports.default = undefined; var _getPrototypeOf = require('babel-runtime/core-js/object/get-prototype-of'); var _getPrototypeOf2 = _interopRequireDefault(_getPrototypeOf); var _classCallCheck2 = require('babel-runtime/helpers/classCallCheck'); var _classCallCheck3 = _interopRequireDefault(_classCallCheck2); var _createClass2 = require('babel-runtime/helpers/createClass'); var _createClass3 = _interopRequireDefault(_createClass2); var _possibleConstructorReturn2 = require('babel-runtime/helpers/possibleConstructorReturn'); var _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2); var _inherits2 = require('babel-runtime/helpers/inherits'); var _inherits3 = _interopRequireDefault(_inherits2); var _map = require('babel-runtime/core-js/map'); var _map2 = _interopRequireDefault(_map); var _antlr = require('antlr4'); var _antlr2 = _interopRequireDefault(_antlr); var _ErrorListener2 = require('antlr4/error/ErrorListener'); var _ExprLexer = require('./ExprLexer'); var _ExprParser = require('./ExprParser'); var _ExprExecutor = require('./ExprExecutor'); var _ExprExecutor2 = _interopRequireDefault(_ExprExecutor); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } var log = console.log; var cache = new _map2.default(); var ExprErrorListener = function (_ErrorListener) { (0, _inherits3.default)(ExprErrorListener, _ErrorListener); function ExprErrorListener() { (0, _classCallCheck3.default)(this, ExprErrorListener); return (0, _possibleConstructorReturn3.default)(this, (ExprErrorListener.__proto__ || (0, _getPrototypeOf2.default)(ExprErrorListener)).apply(this, arguments)); } (0, _createClass3.default)(ExprErrorListener, [{ key: 'reset', value: function reset() { this.error = false; } }, { key: 'syntaxError', value: function syntaxError(recognizer, offendingSymbol, line, column, msg) { // if (typeof __DEV__ !== 'undefined' && __DEV__) { // log("line " + line + ":" + column + " " + msg); // } this.error = true; } }]); return ExprErrorListener; }(_ErrorListener2.ErrorListener); var errorHandler = new ExprErrorListener(); var Expression = function () { function Expression(str) { (0, _classCallCheck3.default)(this, Expression); this.str = str; if (typeof str === 'string' && !!str) { // constString 暂时词法冲突 var txt = str.trim(); if (txt.startsWith('=')) { this.str = txt.substr(1); return; } if (cache.has(str)) { this.tree = cache.get(str); } else { errorHandler.reset(); var chars = new _antlr2.default.InputStream(str); var lexer = new _ExprLexer.ExprLexer(chars); lexer.removeErrorListeners(); lexer.addErrorListener(errorHandler); var tokens = new _antlr2.default.CommonTokenStream(lexer); var parser = new _ExprParser.ExprParser(tokens); // parser._errHandler = new ExceptionErrorStrategy(); parser.removeErrorListeners(); parser.addErrorListener(errorHandler); parser.buildParseTrees = true; var tree = parser.exec(); if (errorHandler.error) { tree = null; } this.tree = tree; cache.set(str, tree); } } } (0, _createClass3.default)(Expression, [{ key: 'toString', value: function toString() { return this.str; } }, { key: 'exec', value: function exec(scope) { if (this.tree) { var executor = new _ExprExecutor2.default(scope); _antlr2.default.tree.ParseTreeWalker.DEFAULT.walk(executor, this.tree); return executor.result; } else { return this.str; } } }]); return Expression; }(); exports.default = Expression; //# sourceMappingURL=index.js.map