UNPKG

phaser3-rex-plugins

Version:
1,678 lines (1,600 loc) 810 kB
(function (global, factory) { typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() : typeof define === 'function' && define.amd ? define(factory) : (global = typeof globalThis !== 'undefined' ? globalThis : global || self, global.rexmarkedeventsheetsplugin = factory()); })(this, (function () { 'use strict'; function _typeof(obj) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && "function" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }, _typeof(obj); } function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, _toPropertyKey(descriptor.key), descriptor); } } function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, "prototype", { writable: false }); return Constructor; } function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); Object.defineProperty(subClass, "prototype", { writable: false }); if (superClass) _setPrototypeOf(subClass, superClass); } function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); } function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); } function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } } function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; } function _possibleConstructorReturn(self, call) { if (call && (typeof call === "object" || typeof call === "function")) { return call; } else if (call !== void 0) { throw new TypeError("Derived constructors may only return object or undefined"); } return _assertThisInitialized(self); } function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; } function _superPropBase(object, property) { while (!Object.prototype.hasOwnProperty.call(object, property)) { object = _getPrototypeOf(object); if (object === null) break; } return object; } function _get() { if (typeof Reflect !== "undefined" && Reflect.get) { _get = Reflect.get.bind(); } else { _get = function _get(target, property, receiver) { var base = _superPropBase(target, property); if (!base) return; var desc = Object.getOwnPropertyDescriptor(base, property); if (desc.get) { return desc.get.call(arguments.length < 3 ? target : receiver); } return desc.value; }; } return _get.apply(this, arguments); } function _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); } function _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); } function _iterableToArray(iter) { if (typeof Symbol !== "undefined" && iter[Symbol.iterator] != null || iter["@@iterator"] != null) return Array.from(iter); } function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); } function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; } function _nonIterableSpread() { throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } function _toPrimitive(input, hint) { if (typeof input !== "object" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || "default"); if (typeof res !== "object") return res; throw new TypeError("@@toPrimitive must return a primitive value."); } return (hint === "string" ? String : Number)(input); } function _toPropertyKey(arg) { var key = _toPrimitive(arg, "string"); return typeof key === "symbol" ? key : String(key); } var commonjsGlobal = typeof globalThis !== 'undefined' ? globalThis : typeof window !== 'undefined' ? window : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {}; function getDefaultExportFromCjs (x) { return x && x.__esModule && Object.prototype.hasOwnProperty.call(x, 'default') ? x['default'] : x; } function getAugmentedNamespace(n) { if (n.__esModule) return n; var f = n.default; if (typeof f == "function") { var a = function a () { if (this instanceof a) { var args = [null]; args.push.apply(args, arguments); var Ctor = Function.bind.apply(f, args); return new Ctor(); } return f.apply(this, arguments); }; a.prototype = f.prototype; } else a = {}; Object.defineProperty(a, '__esModule', {value: true}); Object.keys(n).forEach(function (k) { var d = Object.getOwnPropertyDescriptor(n, k); Object.defineProperty(a, k, d.get ? d : { enumerable: true, get: function () { return n[k]; } }); }); return a; } var eventemitter3 = {exports: {}}; (function (module) { var has = Object.prototype.hasOwnProperty , prefix = '~'; /** * Constructor to create a storage for our `EE` objects. * An `Events` instance is a plain object whose properties are event names. * * @constructor * @private */ function Events() {} // // We try to not inherit from `Object.prototype`. In some engines creating an // instance in this way is faster than calling `Object.create(null)` directly. // If `Object.create(null)` is not supported we prefix the event names with a // character to make sure that the built-in object properties are not // overridden or used as an attack vector. // if (Object.create) { Events.prototype = Object.create(null); // // This hack is needed because the `__proto__` property is still inherited in // some old browsers like Android 4, iPhone 5.1, Opera 11 and Safari 5. // if (!new Events().__proto__) prefix = false; } /** * Representation of a single event listener. * * @param {Function} fn The listener function. * @param {*} context The context to invoke the listener with. * @param {Boolean} [once=false] Specify if the listener is a one-time listener. * @constructor * @private */ function EE(fn, context, once) { this.fn = fn; this.context = context; this.once = once || false; } /** * Add a listener for a given event. * * @param {EventEmitter} emitter Reference to the `EventEmitter` instance. * @param {(String|Symbol)} event The event name. * @param {Function} fn The listener function. * @param {*} context The context to invoke the listener with. * @param {Boolean} once Specify if the listener is a one-time listener. * @returns {EventEmitter} * @private */ function addListener(emitter, event, fn, context, once) { if (typeof fn !== 'function') { throw new TypeError('The listener must be a function'); } var listener = new EE(fn, context || emitter, once) , evt = prefix ? prefix + event : event; if (!emitter._events[evt]) emitter._events[evt] = listener, emitter._eventsCount++; else if (!emitter._events[evt].fn) emitter._events[evt].push(listener); else emitter._events[evt] = [emitter._events[evt], listener]; return emitter; } /** * Clear event by name. * * @param {EventEmitter} emitter Reference to the `EventEmitter` instance. * @param {(String|Symbol)} evt The Event name. * @private */ function clearEvent(emitter, evt) { if (--emitter._eventsCount === 0) emitter._events = new Events(); else delete emitter._events[evt]; } /** * Minimal `EventEmitter` interface that is molded against the Node.js * `EventEmitter` interface. * * @constructor * @public */ function EventEmitter() { this._events = new Events(); this._eventsCount = 0; } /** * Return an array listing the events for which the emitter has registered * listeners. * * @returns {Array} * @public */ EventEmitter.prototype.eventNames = function eventNames() { var names = [] , events , name; if (this._eventsCount === 0) return names; for (name in (events = this._events)) { if (has.call(events, name)) names.push(prefix ? name.slice(1) : name); } if (Object.getOwnPropertySymbols) { return names.concat(Object.getOwnPropertySymbols(events)); } return names; }; /** * Return the listeners registered for a given event. * * @param {(String|Symbol)} event The event name. * @returns {Array} The registered listeners. * @public */ EventEmitter.prototype.listeners = function listeners(event) { var evt = prefix ? prefix + event : event , handlers = this._events[evt]; if (!handlers) return []; if (handlers.fn) return [handlers.fn]; for (var i = 0, l = handlers.length, ee = new Array(l); i < l; i++) { ee[i] = handlers[i].fn; } return ee; }; /** * Return the number of listeners listening to a given event. * * @param {(String|Symbol)} event The event name. * @returns {Number} The number of listeners. * @public */ EventEmitter.prototype.listenerCount = function listenerCount(event) { var evt = prefix ? prefix + event : event , listeners = this._events[evt]; if (!listeners) return 0; if (listeners.fn) return 1; return listeners.length; }; /** * Calls each of the listeners registered for a given event. * * @param {(String|Symbol)} event The event name. * @returns {Boolean} `true` if the event had listeners, else `false`. * @public */ EventEmitter.prototype.emit = function emit(event, a1, a2, a3, a4, a5) { var evt = prefix ? prefix + event : event; if (!this._events[evt]) return false; var listeners = this._events[evt] , len = arguments.length , args , i; if (listeners.fn) { if (listeners.once) this.removeListener(event, listeners.fn, undefined, true); switch (len) { case 1: return listeners.fn.call(listeners.context), true; case 2: return listeners.fn.call(listeners.context, a1), true; case 3: return listeners.fn.call(listeners.context, a1, a2), true; case 4: return listeners.fn.call(listeners.context, a1, a2, a3), true; case 5: return listeners.fn.call(listeners.context, a1, a2, a3, a4), true; case 6: return listeners.fn.call(listeners.context, a1, a2, a3, a4, a5), true; } for (i = 1, args = new Array(len -1); i < len; i++) { args[i - 1] = arguments[i]; } listeners.fn.apply(listeners.context, args); } else { var length = listeners.length , j; for (i = 0; i < length; i++) { if (listeners[i].once) this.removeListener(event, listeners[i].fn, undefined, true); switch (len) { case 1: listeners[i].fn.call(listeners[i].context); break; case 2: listeners[i].fn.call(listeners[i].context, a1); break; case 3: listeners[i].fn.call(listeners[i].context, a1, a2); break; case 4: listeners[i].fn.call(listeners[i].context, a1, a2, a3); break; default: if (!args) for (j = 1, args = new Array(len -1); j < len; j++) { args[j - 1] = arguments[j]; } listeners[i].fn.apply(listeners[i].context, args); } } } return true; }; /** * Add a listener for a given event. * * @param {(String|Symbol)} event The event name. * @param {Function} fn The listener function. * @param {*} [context=this] The context to invoke the listener with. * @returns {EventEmitter} `this`. * @public */ EventEmitter.prototype.on = function on(event, fn, context) { return addListener(this, event, fn, context, false); }; /** * Add a one-time listener for a given event. * * @param {(String|Symbol)} event The event name. * @param {Function} fn The listener function. * @param {*} [context=this] The context to invoke the listener with. * @returns {EventEmitter} `this`. * @public */ EventEmitter.prototype.once = function once(event, fn, context) { return addListener(this, event, fn, context, true); }; /** * Remove the listeners of a given event. * * @param {(String|Symbol)} event The event name. * @param {Function} fn Only remove the listeners that match this function. * @param {*} context Only remove the listeners that have this context. * @param {Boolean} once Only remove one-time listeners. * @returns {EventEmitter} `this`. * @public */ EventEmitter.prototype.removeListener = function removeListener(event, fn, context, once) { var evt = prefix ? prefix + event : event; if (!this._events[evt]) return this; if (!fn) { clearEvent(this, evt); return this; } var listeners = this._events[evt]; if (listeners.fn) { if ( listeners.fn === fn && (!once || listeners.once) && (!context || listeners.context === context) ) { clearEvent(this, evt); } } else { for (var i = 0, events = [], length = listeners.length; i < length; i++) { if ( listeners[i].fn !== fn || (once && !listeners[i].once) || (context && listeners[i].context !== context) ) { events.push(listeners[i]); } } // // Reset the array, or remove it completely if we have no more listeners. // if (events.length) this._events[evt] = events.length === 1 ? events[0] : events; else clearEvent(this, evt); } return this; }; /** * Remove all listeners, or those of the specified event. * * @param {(String|Symbol)} [event] The event name. * @returns {EventEmitter} `this`. * @public */ EventEmitter.prototype.removeAllListeners = function removeAllListeners(event) { var evt; if (event) { evt = prefix ? prefix + event : event; if (this._events[evt]) clearEvent(this, evt); } else { this._events = new Events(); this._eventsCount = 0; } return this; }; // // Alias methods names because people roll like that. // EventEmitter.prototype.off = EventEmitter.prototype.removeListener; EventEmitter.prototype.addListener = EventEmitter.prototype.on; // // Expose the prefix. // EventEmitter.prefixed = prefix; // // Allow `EventEmitter` to be imported as module namespace. // EventEmitter.EventEmitter = EventEmitter; // // Expose the module. // { module.exports = EventEmitter; } } (eventemitter3)); var eventemitter3Exports = eventemitter3.exports; var EE = /*@__PURE__*/getDefaultExportFromCjs(eventemitter3Exports); var EventEmitter$2 = /*#__PURE__*/function (_EE) { _inherits(EventEmitter, _EE); var _super = _createSuper(EventEmitter); function EventEmitter() { _classCallCheck(this, EventEmitter); return _super.apply(this, arguments); } _createClass(EventEmitter, [{ key: "shutdown", value: function shutdown() { this.removeAllListeners(); } }, { key: "destroy", value: function destroy() { this.removeAllListeners(); } }]); return EventEmitter; }(EE); var IDLE$1 = 0; var SUCCESS$1 = 1; var FAILURE = 2; var RUNNING$1 = 3; var PENDING$1 = 4; var ABORT = 5; var ERROR$1 = 9; var TREE = 'tree'; var COMPOSITE = 'composite'; var DECORATOR = 'decorator'; var ACTION = 'action'; var SERVICE = 'service'; var TREE_STATE = '$state'; var CURRENT_TIME = '$currentTime'; /** * @author Richard Davey <rich@photonstorm.com> * @copyright 2020 Photon Storm Ltd. * @license {@link https://opensource.org/licenses/MIT|MIT License} */ /** * Creates and returns an RFC4122 version 4 compliant UUID. * * The string is in the form: `xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx` where each `x` is replaced with a random * hexadecimal digit from 0 to f, and `y` is replaced with a random hexadecimal digit from 8 to b. * * @function Phaser.Utils.String.UUID * @since 3.12.0 * * @return {string} The UUID string. */ var HasBuiltRandomUUID = window.crypto && window.crypto.randomUUID; var UUID = function UUID() { if (HasBuiltRandomUUID) { return window.crypto.randomUUID(); } return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function (c) { var r = Math.random() * 16 | 0; var v = c === 'x' ? r : r & 0x3 | 0x8; return v.toString(16); }); }; var sn = null; var snPrefix = '#'; var SetSerialNumber = function SetSerialNumber(value) { if (value === undefined) { value = null; } sn = value; }; var SetSerialNumberPrefix = function SetSerialNumberPrefix(prefix) { snPrefix = prefix; }; var GetSerialNumber = function GetSerialNumber() { return sn; }; var CreateID = function CreateID() { if (sn === null) { return UUID(); } sn += 1; return "".concat(snPrefix).concat(sn); }; var BreadthFirstSearch = function BreadthFirstSearch(root, callback, scope) { var queue = [root]; while (queue.length > 0) { var current = queue.shift(); var skip = callback.call(scope, current); if (skip) { continue; } switch (current.category) { case COMPOSITE: queue.push.apply(queue, _toConsumableArray(current.children)); var services = current.services; if (services) { queue.push.apply(queue, _toConsumableArray(services)); } break; case DECORATOR: queue.push(current.child); break; case ACTION: var services = current.services; if (services) { queue.push.apply(queue, _toConsumableArray(services)); } break; } } }; /** * @author Richard Davey <rich@photonstorm.com> * @copyright 2018 Photon Storm Ltd. * @license {@link https://github.com/photonstorm/phaser/blob/master/license.txt|MIT License} */ /** * This is a slightly modified version of jQuery.isPlainObject. * A plain object is an object whose internal class property is [object Object]. * * @function Phaser.Utils.Objects.IsPlainObject * @since 3.0.0 * * @param {object} obj - The object to inspect. * * @return {boolean} `true` if the object is plain, otherwise `false`. */ var IsPlainObject = function IsPlainObject(obj) { // Not plain objects: // - Any object or value whose internal [[Class]] property is not "[object Object]" // - DOM nodes // - window if (_typeof(obj) !== 'object' || obj.nodeType || obj === obj.window) { return false; } // Support: Firefox <20 // The try/catch suppresses exceptions thrown when attempting to access // the "constructor" property of certain host objects, ie. |window.location| // https://bugzilla.mozilla.org/show_bug.cgi?id=814622 try { if (obj.constructor && !{}.hasOwnProperty.call(obj.constructor.prototype, 'isPrototypeOf')) { return false; } } catch (e) { return false; } // If the function hasn't returned already, we're confident that // |obj| is a plain object, created by {} or constructed with new Object return true; }; var DeepClone = function DeepClone(inObject) { var outObject; var value; var key; if (inObject == null || _typeof(inObject) !== 'object') { // inObject is not an object return inObject; } // Create an array or object to hold the values outObject = Array.isArray(inObject) ? [] : {}; if (IsPlainObject(inObject)) { for (key in inObject) { value = inObject[key]; // Recursively (deep) copy for nested objects, including arrays outObject[key] = DeepClone(value); } } else { outObject = inObject; } return outObject; }; var Dump = function Dump() { var data = { sn: GetSerialNumber(), id: this.id, title: this.title, description: this.description, root: this.root ? this.root.id : null, properties: DeepClone(this.properties), nodes: [] }; if (!this.root) { return data; } var nodes = []; BreadthFirstSearch(this.root, function (child) { nodes.push(child); }); for (var i = 0, cnt = nodes.length; i < cnt; i++) { var node = nodes[i]; var spec = { id: node.id, name: node.name, title: node.title, description: node.description, properties: DeepClone(node.properties) }; switch (node.category) { case COMPOSITE: spec.children = node.children.map(function (child) { return child.id; }); if (node.services) { spec.services = node.services.map(function (child) { return child.id; }); } break; case DECORATOR: if (node.child) { spec.child = node.child.id; } break; case ACTION: if (node.services) { spec.services = node.services.map(function (child) { return child.id; }); } break; } data.nodes.push(spec); } return data; }; var BaseExpression = /*#__PURE__*/function () { function BaseExpression() { _classCallCheck(this, BaseExpression); } _createClass(BaseExpression, [{ key: "setExpressionHandler", value: function setExpressionHandler(callback) { this.expressionHandler = callback; return this; } }, { key: "eval", value: function _eval(context) { return this.expressionHandler(context); } }]); return BaseExpression; }(); function commonjsRequire(path) { throw new Error('Could not dynamically require "' + path + '". Please configure the dynamicRequireTargets or/and ignoreDynamicRequires option of @rollup/plugin-commonjs appropriately for this require call to work.'); } var parser$3 = {}; /* parser generated by jison 0.4.18 */ (function (exports) { /* Returns a Parser object of the following structure: Parser: { yy: {} } Parser.prototype: { yy: {}, trace: function(), symbols_: {associative list: name ==> number}, terminals_: {associative list: number ==> name}, productions_: [...], performAction: function anonymous(yytext, yyleng, yylineno, yy, yystate, $$, _$), table: [...], defaultActions: {...}, parseError: function(str, hash), parse: function(input), lexer: { EOF: 1, parseError: function(str, hash), setInput: function(input), input: function(), unput: function(str), more: function(), less: function(n), pastInput: function(), upcomingInput: function(), showPosition: function(), test_match: function(regex_match_array, rule_index), next: function(), lex: function(), begin: function(condition), popState: function(), _currentRules: function(), topState: function(), pushState: function(condition), options: { ranges: boolean (optional: true ==> token location info will include a .range[] member) flex: boolean (optional: true ==> flex-like lexing behaviour where the rules are tested exhaustively to find the longest match) backtrack_lexer: boolean (optional: true ==> lexer regexes are tested in order and for each matching regex the action code is invoked; the lexer terminates the scan when a token is returned by the action code) }, performAction: function(yy, yy_, $avoiding_name_collisions, YY_START), rules: [...], conditions: {associative list: name ==> set}, } } token location info (@$, _$, etc.): { first_line: n, last_line: n, first_column: n, last_column: n, range: [start_number, end_number] (where the numbers are indexes into the input string, regular zero-based) } the parseError function receives a 'hash' object with these members for lexer and parser errors: { text: (matched text) token: (the produced terminal token, if any) line: (yylineno) } while parser (grammar) errors will also provide these members, i.e. parser errors deliver a superset of attributes: { loc: (yylloc) expected: (string describing the set of expected tokens) recoverable: (boolean: TRUE when the parser has a error recovery rule available for this particular error) } */ var parser = function () { var o = function o(k, v, _o, l) { for (_o = _o || {}, l = k.length; l--; _o[k[l]] = v); return _o; }, $V0 = [1, 11], $V1 = [1, 3], $V2 = [1, 4], $V3 = [1, 5], $V4 = [1, 6], $V5 = [1, 8], $V6 = [1, 9], $V7 = [1, 10], $V8 = [1, 13], $V9 = [1, 14], $Va = [1, 15], $Vb = [1, 16], $Vc = [1, 17], $Vd = [1, 18], $Ve = [1, 19], $Vf = [1, 20], $Vg = [1, 21], $Vh = [1, 22], $Vi = [1, 23], $Vj = [1, 24], $Vk = [1, 25], $Vl = [1, 26], $Vm = [5, 7, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 28, 30], $Vn = [5, 7, 9, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 30], $Vo = [5, 7, 12, 13, 14, 19, 20, 21, 22, 23, 24, 25, 26, 28, 30], $Vp = [5, 7, 12, 13, 14, 15, 16, 17, 19, 20, 21, 22, 23, 24, 25, 26, 28, 30], $Vq = [5, 7, 12, 19, 20, 21, 22, 23, 24, 25, 26, 28, 30], $Vr = [5, 7, 12, 25, 26, 28, 30], $Vs = [7, 28]; var parser = { trace: function trace() {}, yy: {}, symbols_: { "error": 2, "expressions": 3, "e": 4, "EOF": 5, "expression_list": 6, ",": 7, "dot_name": 8, ".": 9, "NAME": 10, "[": 11, "]": 12, "+": 13, "-": 14, "*": 15, "/": 16, "%": 17, "^": 18, ">": 19, "<": 20, "==": 21, "!=": 22, ">=": 23, "<=": 24, "||": 25, "&&": 26, "(": 27, ")": 28, "?": 29, ":": 30, "true": 31, "false": 32, "QUOTED_STRING": 33, "NUMBER": 34, "HEXNUMBER": 35, "$accept": 0, "$end": 1 }, terminals_: { 2: "error", 5: "EOF", 7: ",", 9: ".", 10: "NAME", 11: "[", 12: "]", 13: "+", 14: "-", 15: "*", 16: "/", 17: "%", 18: "^", 19: ">", 20: "<", 21: "==", 22: "!=", 23: ">=", 24: "<=", 25: "||", 26: "&&", 27: "(", 28: ")", 29: "?", 30: ":", 31: "true", 32: "false", 33: "QUOTED_STRING", 34: "NUMBER", 35: "HEXNUMBER" }, productions_: [0, [3, 2], [6, 3], [6, 1], [8, 3], [8, 4], [8, 1], [4, 3], [4, 3], [4, 3], [4, 3], [4, 3], [4, 3], [4, 3], [4, 3], [4, 3], [4, 3], [4, 3], [4, 3], [4, 3], [4, 3], [4, 2], [4, 3], [4, 7], [4, 1], [4, 1], [4, 1], [4, 3], [4, 4], [4, 1], [4, 1], [4, 1]], performAction: function anonymous(yytext, yyleng, yylineno, yy, yystate /* action[1] */, $$ /* vstack */, _$ /* lstack */) { /* this == yyval */ var $0 = $$.length - 1; switch (yystate) { case 1: var result = $$[$0 - 1]; if (typeof result === 'function') { return result; } else { return function (ctx) { return result; }; } case 2: case 4: this.$ = $$[$0 - 2].concat([$$[$0]]); break; case 3: case 6: this.$ = [$$[$0]]; break; case 5: this.$ = $$[$0 - 3].concat([$$[$0 - 1]]); break; case 7: this.$ = function (ctx) { return runBuildInMethod(yy.parser, ctx, '_add', [$$[$0 - 2], $$[$0]]); }; break; case 8: this.$ = function (ctx) { return runBuildInMethod(yy.parser, ctx, '_subtract', [$$[$0 - 2], $$[$0]]); }; break; case 9: this.$ = function (ctx) { return runBuildInMethod(yy.parser, ctx, '_multiply', [$$[$0 - 2], $$[$0]]); }; break; case 10: this.$ = function (ctx) { return runBuildInMethod(yy.parser, ctx, '_divide', [$$[$0 - 2], $$[$0]]); }; break; case 11: this.$ = function (ctx) { return runBuildInMethod(yy.parser, ctx, '_mod', [$$[$0 - 2], $$[$0]]); }; break; case 12: this.$ = function (ctx) { return runBuildInMethod(yy.parser, ctx, '_pow', [$$[$0 - 2], $$[$0]]); }; break; case 13: this.$ = function (ctx) { return runBuildInMethod(yy.parser, ctx, '_greaterThen', [$$[$0 - 2], $$[$0]]) == true; }; break; case 14: this.$ = function (ctx) { return runBuildInMethod(yy.parser, ctx, '_lessThen', [$$[$0 - 2], $$[$0]]) == true; }; break; case 15: this.$ = function (ctx) { return runBuildInMethod(yy.parser, ctx, '_equalTo', [$$[$0 - 2], $$[$0]]) == true; }; break; case 16: this.$ = function (ctx) { return runBuildInMethod(yy.parser, ctx, '_equalTo', [$$[$0 - 2], $$[$0]]) == false; }; break; case 17: this.$ = function (ctx) { return runBuildInMethod(yy.parser, ctx, '_lessThen', [$$[$0 - 2], $$[$0]]) == false; }; break; case 18: this.$ = function (ctx) { return runBuildInMethod(yy.parser, ctx, '_greaterThen', [$$[$0 - 2], $$[$0]]) == false; }; break; case 19: this.$ = function (ctx) { return runBuildInMethod(yy.parser, ctx, '_or', [$$[$0 - 2], $$[$0]]) == true; }; break; case 20: this.$ = function (ctx) { return runBuildInMethod(yy.parser, ctx, '_and', [$$[$0 - 2], $$[$0]]) == true; }; break; case 21: this.$ = function (ctx) { return -runFn($$[$0], ctx); }; break; case 22: this.$ = function (ctx) { return runFn($$[$0 - 1], ctx); }; break; case 23: this.$ = function (ctx) { return runFn($$[$0 - 5], ctx) ? runFn($$[$0 - 2], ctx) : runFn($$[$0], ctx); }; break; case 24: this.$ = true; break; case 25: this.$ = false; break; case 26: this.$ = function (ctx) { return yy.parser.getDotProperty(ctx, mapArgs($$[$0], ctx), 0); }; break; case 27: this.$ = function (ctx) { return runMethod(yy.parser, ctx, mapArgs($$[$0 - 2], ctx), undefined, true); }; break; case 28: this.$ = function (ctx) { return runMethod(yy.parser, ctx, mapArgs($$[$0 - 3], ctx), $$[$0 - 1], true); }; break; case 29: this.$ = yytext.slice(1, -1); break; case 30: this.$ = Number(yytext); break; case 31: this.$ = parseInt(yytext, 16); break; } }, table: [{ 3: 1, 4: 2, 8: 7, 10: $V0, 14: $V1, 27: $V2, 31: $V3, 32: $V4, 33: $V5, 34: $V6, 35: $V7 }, { 1: [3] }, { 5: [1, 12], 13: $V8, 14: $V9, 15: $Va, 16: $Vb, 17: $Vc, 18: $Vd, 19: $Ve, 20: $Vf, 21: $Vg, 22: $Vh, 23: $Vi, 24: $Vj, 25: $Vk, 26: $Vl }, { 4: 27, 8: 7, 10: $V0, 14: $V1, 27: $V2, 31: $V3, 32: $V4, 33: $V5, 34: $V6, 35: $V7 }, { 4: 28, 8: 7, 10: $V0, 14: $V1, 27: $V2, 31: $V3, 32: $V4, 33: $V5, 34: $V6, 35: $V7 }, o($Vm, [2, 24]), o($Vm, [2, 25]), o($Vm, [2, 26], { 9: [1, 30], 11: [1, 31], 27: [1, 29] }), o($Vm, [2, 29]), o($Vm, [2, 30]), o($Vm, [2, 31]), o($Vn, [2, 6]), { 1: [2, 1] }, { 4: 32, 8: 7, 10: $V0, 14: $V1, 27: $V2, 31: $V3, 32: $V4, 33: $V5, 34: $V6, 35: $V7 }, { 4: 33, 8: 7, 10: $V0, 14: $V1, 27: $V2, 31: $V3, 32: $V4, 33: $V5, 34: $V6, 35: $V7 }, { 4: 34, 8: 7, 10: $V0, 14: $V1, 27: $V2, 31: $V3, 32: $V4, 33: $V5, 34: $V6, 35: $V7 }, { 4: 35, 8: 7, 10: $V0, 14: $V1, 27: $V2, 31: $V3, 32: $V4, 33: $V5, 34: $V6, 35: $V7 }, { 4: 36, 8: 7, 10: $V0, 14: $V1, 27: $V2, 31: $V3, 32: $V4, 33: $V5, 34: $V6, 35: $V7 }, { 4: 37, 8: 7, 10: $V0, 14: $V1, 27: $V2, 31: $V3, 32: $V4, 33: $V5, 34: $V6, 35: $V7 }, { 4: 38, 8: 7, 10: $V0, 14: $V1, 27: $V2, 31: $V3, 32: $V4, 33: $V5, 34: $V6, 35: $V7 }, { 4: 39, 8: 7, 10: $V0, 14: $V1, 27: $V2, 31: $V3, 32: $V4, 33: $V5, 34: $V6, 35: $V7 }, { 4: 40, 8: 7, 10: $V0, 14: $V1, 27: $V2, 31: $V3, 32: $V4, 33: $V5, 34: $V6, 35: $V7 }, { 4: 41, 8: 7, 10: $V0, 14: $V1, 27: $V2, 31: $V3, 32: $V4, 33: $V5, 34: $V6, 35: $V7 }, { 4: 42, 8: 7, 10: $V0, 14: $V1, 27: $V2, 31: $V3, 32: $V4, 33: $V5, 34: $V6, 35: $V7 }, { 4: 43, 8: 7, 10: $V0, 14: $V1, 27: $V2, 31: $V3, 32: $V4, 33: $V5, 34: $V6, 35: $V7 }, { 4: 44, 8: 7, 10: $V0, 14: $V1, 27: $V2, 31: $V3, 32: $V4, 33: $V5, 34: $V6, 35: $V7 }, { 4: 45, 8: 7, 10: $V0, 14: $V1, 27: $V2, 31: $V3, 32: $V4, 33: $V5, 34: $V6, 35: $V7 }, o($Vm, [2, 21]), { 13: $V8, 14: $V9, 15: $Va, 16: $Vb, 17: $Vc, 18: $Vd, 19: $Ve, 20: $Vf, 21: $Vg, 22: $Vh, 23: $Vi, 24: $Vj, 25: $Vk, 26: $Vl, 28: [1, 46] }, { 4: 49, 6: 48, 8: 7, 10: $V0, 14: $V1, 27: $V2, 28: [1, 47], 31: $V3, 32: $V4, 33: $V5, 34: $V6, 35: $V7 }, { 10: [1, 50] }, { 4: 51, 8: 7, 10: $V0, 14: $V1, 27: $V2, 31: $V3, 32: $V4, 33: $V5, 34: $V6, 35: $V7 }, o($Vo, [2, 7], { 15: $Va, 16: $Vb, 17: $Vc, 18: $Vd }), o($Vo, [2, 8], { 15: $Va, 16: $Vb, 17: $Vc, 18: $Vd }), o($Vp, [2, 9], { 18: $Vd }), o($Vp, [2, 10], { 18: $Vd }), o([5, 7, 12, 13, 14, 17, 19, 20, 21, 22, 23, 24, 25, 26, 28, 30], [2, 11], { 15: $Va, 16: $Vb, 18: $Vd }), o($Vm, [2, 12]), o($Vq, [2, 13], { 13: $V8, 14: $V9, 15: $Va, 16: $Vb, 17: $Vc, 18: $Vd }), o($Vq, [2, 14], { 13: $V8, 14: $V9, 15: $Va, 16: $Vb, 17: $Vc, 18: $Vd }), o($Vq, [2, 15], { 13: $V8, 14: $V9, 15: $Va, 16: $Vb, 17: $Vc, 18: $Vd }), o($Vq, [2, 16], { 13: $V8, 14: $V9, 15: $Va, 16: $Vb, 17: $Vc, 18: $Vd }), o($Vq, [2, 17], { 13: $V8, 14: $V9, 15: $Va, 16: $Vb, 17: $Vc, 18: $Vd }), o($Vq, [2, 18], { 13: $V8, 14: $V9, 15: $Va, 16: $Vb, 17: $Vc, 18: $Vd }), o($Vr, [2, 19], { 13: $V8, 14: $V9, 15: $Va, 16: $Vb, 17: $Vc, 18: $Vd, 19: $Ve, 20: $Vf, 21: $Vg, 22: $Vh, 23: $Vi, 24: $Vj }), o($Vr, [2, 20], { 13: $V8, 14: $V9, 15: $Va, 16: $Vb, 17: $Vc, 18: $Vd, 19: $Ve, 20: $Vf, 21: $Vg, 22: $Vh, 23: $Vi, 24: $Vj }), o($Vm, [2, 22], { 29: [1, 52] }), o($Vm, [2, 27]), { 7: [1, 54], 28: [1, 53] }, o($Vs, [2, 3], { 13: $V8, 14: $V9, 15: $Va, 16: $Vb, 17: $Vc, 18: $Vd, 19: $Ve, 20: $Vf, 21: $Vg, 22: $Vh, 23: $Vi, 24: $Vj, 25: $Vk, 26: $Vl }), o($Vn, [2, 4]), { 12: [1, 55], 13: $V8, 14: $V9, 15: $Va, 16: $Vb, 17: $Vc, 18: $Vd, 19: $Ve, 20: $Vf, 21: $Vg, 22: $Vh, 23: $Vi, 24: $Vj, 25: $Vk, 26: $Vl }, { 4: 56, 8: 7, 10: $V0, 14: $V1, 27: $V2, 31: $V3, 32: $V4, 33: $V5, 34: $V6, 35: $V7 }, o($Vm, [2, 28]), { 4: 57, 8: 7, 10: $V0, 14: $V1, 27: $V2, 31: $V3, 32: $V4, 33: $V5, 34: $V6, 35: $V7 }, o($Vn, [2, 5]), { 13: $V8, 14: $V9, 15: $Va, 16: $Vb, 17: $Vc, 18: $Vd, 19: $Ve, 20: $Vf, 21: $Vg, 22: $Vh, 23: $Vi, 24: $Vj, 25: $Vk, 26: $Vl, 30: [1, 58] }, o($Vs, [2, 2], { 13: $V8, 14: $V9, 15: $Va, 16: $Vb, 17: $Vc, 18: $Vd, 19: $Ve, 20: $Vf, 21: $Vg, 22: $Vh, 23: $Vi, 24: $Vj, 25: $Vk, 26: $Vl }), { 4: 59, 8: 7, 10: $V0, 14: $V1, 27: $V2, 31: $V3, 32: $V4, 33: $V5, 34: $V6, 35: $V7 }, o([5, 7, 12, 28, 30], [2, 23], { 13: $V8, 14: $V9, 15: $Va, 16: $Vb, 17: $Vc, 18: $Vd, 19: $Ve, 20: $Vf, 21: $Vg, 22: $Vh, 23: $Vi, 24: $Vj, 25: $Vk, 26: $Vl })], defaultActions: { 12: [2, 1] }, parseError: function parseError(str, hash) { if (hash.recoverable) { this.trace(str); } else { var error = new Error(str); error.hash = hash; throw error; } }, parse: function parse(input) { var self = this, stack = [0], vstack = [null], lstack = [], table = this.table, yytext = '', yylineno = 0, yyleng = 0, TERROR = 2, EOF = 1; var args = lstack.slice.call(arguments, 1); var lexer = Object.create(this.lexer); var sharedState = { yy: {} }; for (var k in this.yy) { if (Object.prototype.hasOwnProperty.call(this.yy, k)) { sharedState.yy[k] = this.yy[k]; } } lexer.setInput(input, sharedState.yy); sharedState.yy.lexer = lexer; sharedState.yy.parser = this; if (typeof lexer.yylloc == 'undefined') { lexer.yylloc = {}; } var yyloc = lexer.yylloc; lstack.push(yyloc); var ranges = lexer.options && lexer.options.ranges; if (typeof sharedState.yy.parseError === 'function') { this.parseError = sharedState.yy.parseError; } else { this.parseError = Object.getPrototypeOf(this).parseError; } var lex = function lex() { var token; token = lexer.lex() || EOF; if (typeof token !== 'number') { token = self.symbols_[token] || token; } return token; }; var symbol, state, action, r, yyval = {}, p, len, newState, expected; while (true) { state = stack[stack.length - 1]; if (this.defaultActions[state]) { action = this.defaultActions[state]; } else { if (symbol === null || typeof symbol == 'undefined') { symbol = lex(); } action = table[state] && table[state][symbol]; } if (typeof action === 'undefined' || !action.length || !action[0]) { var errStr = ''; expected = []; for (p in table[state]) { if (this.terminals_[p] && p > TERROR) { expected.push('\'' + this.terminals_[p] + '\''); } } if (lexer.showPosition) { errStr = 'Parse error on line ' + (yylineno + 1) + ':\n' + lexer.showPosition() + '\nExpecting ' + expected.join(', ') + ', got \'' + (this.terminals_[symbol] || symbol) + '\''; } else { errStr = 'Parse error on line ' + (yylineno + 1) + ': Unexpected ' + (symbol == EOF ? 'end of input' : '\'' + (this.terminals_[symbol] || symbol) + '\''); } this.parseError(errStr, { text: lexer.match, token: this.terminals_[symbol] || symbol, line: lexer.yylineno, loc: yyloc, expected: expected }); } if (action[0] instanceof Array && action.length > 1) {