/** * @class Ext.parse.Parser * @extend Ext.util.Fly * This class parses simple expressions. The parser can be enhanced by providing any of * the following configs: * * * `constants` * * `infix` * * `infixRight` * * `postfix` * * `symbols` * * The parser requires a `{@link Ext.parse.Tokenizer tokenizer}` which can be configured * using the `tokenizer` config. The parser keeps the tokenizer instance and recycles it * as it is itself reused. * * See http://javascript.crockford.com/tdop/tdop.html for background on the techniques * used in this parser. * @private */ /** * @cfg {Object} constants * A map of identifiers that should be converted to literal value tokens. The * key in this object is the name of the constant and the value is the constant * value. * * If the value of a key is an object, it is a config object for the * `{@link Ext.parse.symbol.Constant constant}`. * @accessor */ /** * @cfg {Object} infix * A map of binary operators and their associated precedence (or binding priority). * These binary operators are left-associative. * * If the value of a key is an object, it is a config object for the * `{@link Ext.parse.symbol.Infix operator}`. * @accessor */ /** * @cfg {Object} infixRight * A map of binary operators and their associated precedence (or binding priority). * These binary operators are right-associative. * * If the value of a key is an object, it is a config object for the * `{@link Ext.parse.symbol.InfixRight operator}`. * @accessor */ /** * @cfg {Object} prefix * A map of unary operators. Typically no value is needed, so `0` is used. * * If the value of a key is an object, it is a config object for the * `{@link Ext.parse.symbol.Prefix operator}`. * @accessor */ /** * @cfg {Object} symbols * General language symbols. The values in this object are used as config objects * to configure the associated `{@link Ext.parse.Symbol symbol}`. If there is no * configuration, use `0` for the value. * @accessor */ /** * @cfg {Object/Ext.parse.Tokenizer} tokenizer * The tokenizer or a config object used to create one. * @accessor */ /** * @cfg {Ext.parse.Symbol} token * The current token. These tokens extend this base class and contain additional * properties such as: * * * `at` - The index of the token in the text. * * `value` - The value of the token (e.g., the name of an identifier). * * @readonly */ /** * @method advance * Advances the token stream and returns the next `token`. * @param {String} [expected] The type of symbol that is expected to follow. * @return {Ext.parse.Symbol} */ /** * @method parseExpression * @param {Number} [rightPriority=0] The precedence of the current operator. * @return {Ext.parse.Symbol} The parsed expression tree. */ /** * @method reset * Resets this parser given the text to parse or a `Tokenizer`. * @param {String} text * @param {Number} [pos=0] The character position at which to start. * @param {Number} [end] The index of the first character beyond the token range. * @return {Ext.parse.Parser} */ /** * @method syntaxError * This method is called when a syntax error is encountered. It updates `error` * and returns the error token. * @param {Number} at The index of the syntax error (optional). * @param {String} message The error message. * @return {Object} The error token. */ /** * This property is set to an `Error` instance if the parser encounters a syntax * error. * @property {Object} error * @readonly */