var parser = (function () {
function JisonParserError(msg, hash) {
Object.defineProperty(this, 'name', {
enumerable: false,
writable: false,
value: 'JisonParserError'
});
if (msg == null) msg = '???';
Object.defineProperty(this, 'message', {
enumerable: false,
writable: true,
value: msg
});
this.hash = hash;
var stacktrace;
if (hash && hash.exception instanceof Error) {
var ex2 = hash.exception;
this.message = ex2.message || msg;
stacktrace = ex2.stack;
}
if (!stacktrace) {
if (Error.hasOwnProperty('captureStackTrace')) { Error.captureStackTrace(this, this.constructor);
} else {
stacktrace = (new Error(msg)).stack;
}
}
if (stacktrace) {
Object.defineProperty(this, 'stack', {
enumerable: false,
writable: false,
value: stacktrace
});
}
}
if (typeof Object.setPrototypeOf === 'function') {
Object.setPrototypeOf(JisonParserError.prototype, Error.prototype);
} else {
JisonParserError.prototype = Object.create(Error.prototype);
}
JisonParserError.prototype.constructor = JisonParserError;
JisonParserError.prototype.name = 'JisonParserError';
function bp(s) {
var rv = [];
var p = s.pop;
var r = s.rule;
for (var i = 0, l = p.length; i < l; i++) {
rv.push([
p[i],
r[i]
]);
}
return rv;
}
function bda(s) {
var rv = {};
var d = s.idx;
var g = s.goto;
for (var i = 0, l = d.length; i < l; i++) {
var j = d[i];
rv[j] = g[i];
}
return rv;
}
function bt(s) {
var rv = [];
var d = s.len;
var y = s.symbol;
var t = s.type;
var a = s.state;
var m = s.mode;
var g = s.goto;
for (var i = 0, l = d.length; i < l; i++) {
var n = d[i];
var q = {};
for (var j = 0; j < n; j++) {
var z = y.shift();
switch (t.shift()) {
case 2:
q[z] = [
m.shift(),
g.shift()
];
break;
case 0:
q[z] = a.shift();
break;
default:
q[z] = [
3
];
}
}
rv.push(q);
}
return rv;
}
function s(c, l, a) {
a = a || 0;
for (var i = 0; i < l; i++) {
this.push(c);
c += a;
}
}
function c(i, l) {
i = this.length - i;
for (l += i; i < l; i++) {
this.push(this[i]);
}
}
function u(a) {
var rv = [];
for (var i = 0, l = a.length; i < l; i++) {
var e = a[i];
if (typeof e === 'function') {
i++;
e.apply(rv, a[i]);
} else {
rv.push(e);
}
}
return rv;
}
var parser = {
trace: function no_op_trace() { },
JisonParserError: JisonParserError,
yy: {},
options: {
type: "lalr",
hasPartialLrUpgradeOnConflict: true,
errorRecoveryTokenDiscardCount: 3
},
symbols_: {
"$accept": 0,
"$end": 1,
"ADD": 6,
"ANGLE": 12,
"CALC": 3,
"CHS": 19,
"DIV": 9,
"EMS": 17,
"EOF": 1,
"EXS": 18,
"FREQ": 14,
"FUNCTION": 10,
"LENGTH": 11,
"LPAREN": 4,
"MUL": 8,
"NUMBER": 26,
"PERCENTAGE": 25,
"REMS": 20,
"RES": 15,
"RPAREN": 5,
"SUB": 7,
"TIME": 13,
"UNKNOWN_DIMENSION": 16,
"VHS": 21,
"VMAXS": 24,
"VMINS": 23,
"VWS": 22,
"dimension": 30,
"error": 2,
"expression": 27,
"function": 29,
"math_expression": 28,
"number": 31
},
terminals_: {
1: "EOF",
2: "error",
3: "CALC",
4: "LPAREN",
5: "RPAREN",
6: "ADD",
7: "SUB",
8: "MUL",
9: "DIV",
10: "FUNCTION",
11: "LENGTH",
12: "ANGLE",
13: "TIME",
14: "FREQ",
15: "RES",
16: "UNKNOWN_DIMENSION",
17: "EMS",
18: "EXS",
19: "CHS",
20: "REMS",
21: "VHS",
22: "VWS",
23: "VMINS",
24: "VMAXS",
25: "PERCENTAGE",
26: "NUMBER"
},
TERROR: 2,
EOF: 1,
originalQuoteName: null,
originalParseError: null,
cleanupAfterParse: null,
constructParseErrorInfo: null,
yyMergeLocationInfo: null,
__reentrant_call_depth: 0, __error_infos: [], __error_recovery_infos: [],
quoteName: function parser_quoteName(id_str) {
return '"' + id_str + '"';
},
getSymbolName: function parser_getSymbolName(symbol) {
if (this.terminals_[symbol]) {
return this.terminals_[symbol];
}
var s = this.symbols_;
for (var key in s) {
if (s[key] === symbol) {
return key;
}
}
return null;
},
describeSymbol: function parser_describeSymbol(symbol) {
if (symbol !== this.EOF && this.terminal_descriptions_ && this.terminal_descriptions_[symbol]) {
return this.terminal_descriptions_[symbol];
}
else if (symbol === this.EOF) {
return 'end of input';
}
var id = this.getSymbolName(symbol);
if (id) {
return this.quoteName(id);
}
return null;
},
collect_expected_token_set: function parser_collect_expected_token_set(state, do_not_describe) {
var TERROR = this.TERROR;
var tokenset = [];
var check = {};
if (!do_not_describe && this.state_descriptions_ && this.state_descriptions_[state]) {
return [
this.state_descriptions_[state]
];
}
for (var p in this.table[state]) {
p = +p;
if (p !== TERROR) {
var d = do_not_describe ? p : this.describeSymbol(p);
if (d && !check[d]) {
tokenset.push(d);
check[d] = true; }
}
}
return tokenset;
},
productions_: bp({
pop: u([
27,
s,
[28, 9],
29,
s,
[30, 17],
s,
[31, 3]
]),
rule: u([
2,
4,
s,
[3, 5],
s,
[1, 19],
2,
2,
c,
[3, 3]
])
}),
performAction: function parser__PerformAction(yystate , yysp, yyvstack) {
var yy = this.yy;
var yyparser = yy.parser;
var yylexer = yy.lexer;
switch (yystate) {
case 0:
this.$ = yyvstack[yysp - 1];
break;
case 1:
this.$ = yyvstack[yysp - 1];
return yyvstack[yysp - 1];
break;
case 2:
this.$ = yyvstack[yysp - 1];
break;
case 3:
case 4:
case 5:
case 6:
this.$ = { type: 'MathExpression', operator: yyvstack[yysp - 1], left: yyvstack[yysp - 2], right: yyvstack[yysp] };
break;
case 7:
this.$ = { type: 'ParenthesizedExpression', content: yyvstack[yysp - 1] };
break;
case 8:
case 9:
case 10:
this.$ = yyvstack[yysp];
break;
case 11:
this.$ = { type: 'Function', value: yyvstack[yysp] };
break;
case 12:
this.$ = { type: 'LengthValue', value: parseFloat(yyvstack[yysp]), unit: /[a-z]+$/i.exec(yyvstack[yysp])[0] };
break;
case 13:
this.$ = { type: 'AngleValue', value: parseFloat(yyvstack[yysp]), unit: /[a-z]+$/i.exec(yyvstack[yysp])[0] };
break;
case 14:
this.$ = { type: 'TimeValue', value: parseFloat(yyvstack[yysp]), unit: /[a-z]+$/i.exec(yyvstack[yysp])[0] };
break;
case 15:
this.$ = { type: 'FrequencyValue', value: parseFloat(yyvstack[yysp]), unit: /[a-z]+$/i.exec(yyvstack[yysp])[0] };
break;
case 16:
this.$ = { type: 'ResolutionValue', value: parseFloat(yyvstack[yysp]), unit: /[a-z]+$/i.exec(yyvstack[yysp])[0] };
break;
case 17:
this.$ = { type: 'UnknownDimension', value: parseFloat(yyvstack[yysp]), unit: /[a-z]+$/i.exec(yyvstack[yysp])[0] };
break;
case 18:
this.$ = { type: 'EmValue', value: parseFloat(yyvstack[yysp]), unit: 'em' };
break;
case 19:
this.$ = { type: 'ExValue', value: parseFloat(yyvstack[yysp]), unit: 'ex' };
break;
case 20:
this.$ = { type: 'ChValue', value: parseFloat(yyvstack[yysp]), unit: 'ch' };
break;
case 21:
this.$ = { type: 'RemValue', value: parseFloat(yyvstack[yysp]), unit: 'rem' };
break;
case 22:
this.$ = { type: 'VhValue', value: parseFloat(yyvstack[yysp]), unit: 'vh' };
break;
case 23:
this.$ = { type: 'VwValue', value: parseFloat(yyvstack[yysp]), unit: 'vw' };
break;
case 24:
this.$ = { type: 'VminValue', value: parseFloat(yyvstack[yysp]), unit: 'vmin' };
break;
case 25:
this.$ = { type: 'VmaxValue', value: parseFloat(yyvstack[yysp]), unit: 'vmax' };
break;
case 26:
this.$ = { type: 'PercentageValue', value: parseFloat(yyvstack[yysp]), unit: '%' };
break;
case 27:
var prev = yyvstack[yysp]; this.$ = prev;
break;
case 28:
var prev = yyvstack[yysp]; prev.value *= -1; this.$ = prev;
break;
case 29:
case 30:
this.$ = { type: 'Number', value: parseFloat(yyvstack[yysp]) };
break;
case 31:
this.$ = { type: 'Number', value: parseFloat(yyvstack[yysp]) * -1 };
break;
}
},
table: bt({
len: u([
26,
1,
5,
1,
25,
s,
[0, 19],
19,
19,
0,
0,
s,
[25, 5],
5,
0,
0,
18,
18,
0,
0,
6,
6,
0,
0,
c,
[11, 3]
]),
symbol: u([
3,
4,
6,
7,
s,
[10, 22, 1],
1,
1,
s,
[6, 4, 1],
4,
c,
[33, 21],
c,
[32, 4],
6,
7,
c,
[22, 16],
30,
c,
[19, 19],
c,
[63, 25],
c,
[25, 100],
s,
[5, 5, 1],
c,
[149, 17],
c,
[167, 18],
30,
1,
c,
[42, 5],
c,
[6, 6],
c,
[5, 5]
]),
type: u([
s,
[2, 21],
s,
[0, 5],
1,
s,
[2, 27],
s,
[0, 4],
c,
[22, 19],
c,
[19, 37],
c,
[63, 25],
c,
[25, 103],
c,
[148, 19],
c,
[18, 18]
]),
state: u([
1,
2,
5,
6,
7,
33,
c,
[4, 3],
34,
38,
40,
c,
[6, 3],
41,
c,
[4, 3],
42,
c,
[4, 3],
43,
c,
[4, 3],
44,
c,
[22, 5]
]),
mode: u([
s,
[1, 228],
s,
[2, 4],
c,
[6, 8],
s,
[1, 5]
]),
goto: u([
3,
4,
24,
25,
s,
[8, 16, 1],
s,
[26, 7, 1],
c,
[27, 21],
36,
37,
c,
[18, 15],
35,
c,
[18, 17],
39,
c,
[57, 21],
c,
[21, 84],
45,
c,
[168, 4],
c,
[128, 17],
c,
[17, 17],
s,
[3, 4],
30,
31,
s,
[4, 4],
30,
31,
46,
c,
[51, 4]
])
}),
defaultActions: bda({
idx: u([
s,
[5, 19, 1],
26,
27,
34,
35,
38,
39,
42,
43,
45,
46
]),
goto: u([
s,
[8, 19, 1],
29,
1,
27,
30,
28,
31,
5,
6,
7,
2
])
}),
parseError: function parseError(str, hash, ExceptionClass) {
if (hash.recoverable) {
if (typeof this.trace === 'function') {
this.trace(str);
}
hash.destroy(); } else {
if (typeof this.trace === 'function') {
this.trace(str);
}
if (!ExceptionClass) {
ExceptionClass = this.JisonParserError;
}
throw new ExceptionClass(str, hash);
}
},
parse: function parse(input) {
var self = this;
var stack = new Array(128); var sstack = new Array(128);
var vstack = new Array(128);
var table = this.table;
var sp = 0;
var symbol = 0;
var TERROR = this.TERROR;
var EOF = this.EOF;
var ERROR_RECOVERY_TOKEN_DISCARD_COUNT = (this.options.errorRecoveryTokenDiscardCount | 0) || 3;
var NO_ACTION = [0, 47 ];
var lexer;
if (this.__lexer__) {
lexer = this.__lexer__;
} else {
lexer = this.__lexer__ = Object.create(this.lexer);
}
var sharedState_yy = {
parseError: undefined,
quoteName: undefined,
lexer: undefined,
parser: undefined,
pre_parse: undefined,
post_parse: undefined,
pre_lex: undefined,
post_lex: undefined };
var ASSERT;
if (typeof assert !== 'function') {
ASSERT = function JisonAssert(cond, msg) {
if (!cond) {
throw new Error('assertion failed: ' + (msg || '***'));
}
};
} else {
ASSERT = assert;
}
this.yyGetSharedState = function yyGetSharedState() {
return sharedState_yy;
};
function shallow_copy_noclobber(dst, src) {
for (var k in src) {
if (typeof dst[k] === 'undefined' && Object.prototype.hasOwnProperty.call(src, k)) {
dst[k] = src[k];
}
}
}
shallow_copy_noclobber(sharedState_yy, this.yy);
sharedState_yy.lexer = lexer;
sharedState_yy.parser = this;
if (typeof sharedState_yy.parseError === 'function') {
this.parseError = function parseErrorAlt(str, hash, ExceptionClass) {
if (!ExceptionClass) {
ExceptionClass = this.JisonParserError;
}
return sharedState_yy.parseError.call(this, str, hash, ExceptionClass);
};
} else {
this.parseError = this.originalParseError;
}
if (typeof sharedState_yy.quoteName === 'function') {
this.quoteName = function quoteNameAlt(id_str) {
return sharedState_yy.quoteName.call(this, id_str);
};
} else {
this.quoteName = this.originalQuoteName;
}
this.cleanupAfterParse = function parser_cleanupAfterParse(resultValue, invoke_post_methods, do_not_nuke_errorinfos) {
var rv;
if (invoke_post_methods) {
var hash;
if (sharedState_yy.post_parse || this.post_parse) {
hash = this.constructParseErrorInfo(null , null , null, false);
}
if (sharedState_yy.post_parse) {
rv = sharedState_yy.post_parse.call(this, sharedState_yy, resultValue, hash);
if (typeof rv !== 'undefined') resultValue = rv;
}
if (this.post_parse) {
rv = this.post_parse.call(this, sharedState_yy, resultValue, hash);
if (typeof rv !== 'undefined') resultValue = rv;
}
if (hash && hash.destroy) {
hash.destroy();
}
}
if (this.__reentrant_call_depth > 1) return resultValue;
if (lexer.cleanupAfterLex) {
lexer.cleanupAfterLex(do_not_nuke_errorinfos);
}
if (sharedState_yy) {
sharedState_yy.lexer = undefined;
sharedState_yy.parser = undefined;
if (lexer.yy === sharedState_yy) {
lexer.yy = undefined;
}
}
sharedState_yy = undefined;
this.parseError = this.originalParseError;
this.quoteName = this.originalQuoteName;
stack.length = 0; sstack.length = 0;
vstack.length = 0;
sp = 0;
if (!do_not_nuke_errorinfos) {
for (var i = this.__error_infos.length - 1; i >= 0; i--) {
var el = this.__error_infos[i];
if (el && typeof el.destroy === 'function') {
el.destroy();
}
}
this.__error_infos.length = 0;
}
return resultValue;
};
this.constructParseErrorInfo = function parser_constructParseErrorInfo(msg, ex, expected, recoverable) {
var pei = {
errStr: msg,
exception: ex,
text: lexer.match,
value: lexer.yytext,
token: this.describeSymbol(symbol) || symbol,
token_id: symbol,
line: lexer.yylineno,
expected: expected,
recoverable: recoverable,
state: state,
action: action,
new_state: newState,
symbol_stack: stack,
state_stack: sstack,
value_stack: vstack,
stack_pointer: sp,
yy: sharedState_yy,
lexer: lexer,
parser: this,
destroy: function destructParseErrorInfo() {
var rec = !!this.recoverable;
for (var key in this) {
if (this.hasOwnProperty(key) && typeof key === 'object') {
this[key] = undefined;
}
}
this.recoverable = rec;
}
};
this.__error_infos.push(pei);
return pei;
};
function getNonTerminalFromCode(symbol) {
var tokenName = self.getSymbolName(symbol);
if (!tokenName) {
tokenName = symbol;
}
return tokenName;
}
function stdLex() {
var token = lexer.lex();
if (typeof token !== 'number') {
token = self.symbols_[token] || token;
}
return token || EOF;
}
function fastLex() {
var token = lexer.fastLex();
if (typeof token !== 'number') {
token = self.symbols_[token] || token;
}
return token || EOF;
}
var lex = stdLex;
var state, action, r, t;
var yyval = {
$: true,
_$: undefined,
yy: sharedState_yy
};
var p;
var yyrulelen;
var this_production;
var newState;
var retval = false;
try {
this.__reentrant_call_depth++;
lexer.setInput(input, sharedState_yy);
if (typeof lexer.canIUse === 'function') {
var lexerInfo = lexer.canIUse();
if (lexerInfo.fastLex && typeof fastLex === 'function') {
lex = fastLex;
}
}
vstack[sp] = null;
sstack[sp] = 0;
stack[sp] = 0;
++sp;
if (this.pre_parse) {
this.pre_parse.call(this, sharedState_yy);
}
if (sharedState_yy.pre_parse) {
sharedState_yy.pre_parse.call(this, sharedState_yy);
}
newState = sstack[sp - 1];
for (;;) {
state = newState;
if (this.defaultActions[state]) {
action = 2;
newState = this.defaultActions[state];
} else {
if (!symbol) {
symbol = lex();
}
t = (table[state] && table[state][symbol]) || NO_ACTION;
newState = t[1];
action = t[0];
if (!action) {
var errStr;
var errSymbolDescr = (this.describeSymbol(symbol) || symbol);
var expected = this.collect_expected_token_set(state);
if (typeof lexer.yylineno === 'number') {
errStr = 'Parse error on line ' + (lexer.yylineno + 1) + ': ';
} else {
errStr = 'Parse error: ';
}
if (typeof lexer.showPosition === 'function') {
errStr += '\n' + lexer.showPosition(79 - 10, 10) + '\n';
}
if (expected.length) {
errStr += 'Expecting ' + expected.join(', ') + ', got unexpected ' + errSymbolDescr;
} else {
errStr += 'Unexpected ' + errSymbolDescr;
}
p = this.constructParseErrorInfo(errStr, null, expected, false);
r = this.parseError(p.errStr, p, this.JisonParserError);
if (typeof r !== 'undefined') {
retval = r;
}
break;
}
}
switch (action) {
default:
if (action instanceof Array) {
p = this.constructParseErrorInfo('Parse Error: multiple actions possible at state: ' + state + ', token: ' + symbol, null, null, false);
r = this.parseError(p.errStr, p, this.JisonParserError);
if (typeof r !== 'undefined') {
retval = r;
}
break;
}
p = this.constructParseErrorInfo('Parsing halted. No viable error recovery approach available due to internal system failure.', null, null, false);
r = this.parseError(p.errStr, p, this.JisonParserError);
if (typeof r !== 'undefined') {
retval = r;
}
break;
case 1:
stack[sp] = symbol;
vstack[sp] = lexer.yytext;
sstack[sp] = newState;
++sp;
symbol = 0;
continue;
case 2:
this_production = this.productions_[newState - 1]; yyrulelen = this_production[1];
r = this.performAction.call(yyval, newState, sp - 1, vstack);
if (typeof r !== 'undefined') {
retval = r;
break;
}
sp -= yyrulelen;
var ntsymbol = this_production[0]; stack[sp] = ntsymbol;
vstack[sp] = yyval.$;
newState = table[sstack[sp - 1]][ntsymbol];
sstack[sp] = newState;
++sp;
continue;
case 3:
if (sp !== -2) {
retval = true;
sp--;
if (typeof vstack[sp] !== 'undefined') {
retval = vstack[sp];
}
}
break;
}
break;
}
} catch (ex) {
if (ex instanceof this.JisonParserError) {
throw ex;
}
else if (lexer && typeof lexer.JisonLexerError === 'function' && ex instanceof lexer.JisonLexerError) {
throw ex;
}
p = this.constructParseErrorInfo('Parsing aborted due to exception.', ex, null, false);
retval = false;
r = this.parseError(p.errStr, p, this.JisonParserError);
if (typeof r !== 'undefined') {
retval = r;
}
} finally {
retval = this.cleanupAfterParse(retval, true, true);
this.__reentrant_call_depth--;
}
return retval;
}
};
parser.originalParseError = parser.parseError;
parser.originalQuoteName = parser.quoteName;
var lexer = function() {
function JisonLexerError(msg, hash) {
Object.defineProperty(this, 'name', {
enumerable: false,
writable: false,
value: 'JisonLexerError'
});
if (msg == null)
msg = '???';
Object.defineProperty(this, 'message', {
enumerable: false,
writable: true,
value: msg
});
this.hash = hash;
var stacktrace;
if (hash && hash.exception instanceof Error) {
var ex2 = hash.exception;
this.message = ex2.message || msg;
stacktrace = ex2.stack;
}
if (!stacktrace) {
if (Error.hasOwnProperty('captureStackTrace')) {
Error.captureStackTrace(this, this.constructor);
} else {
stacktrace = new Error(msg).stack;
}
}
if (stacktrace) {
Object.defineProperty(this, 'stack', {
enumerable: false,
writable: false,
value: stacktrace
});
}
}
if (typeof Object.setPrototypeOf === 'function') {
Object.setPrototypeOf(JisonLexerError.prototype, Error.prototype);
} else {
JisonLexerError.prototype = Object.create(Error.prototype);
}
JisonLexerError.prototype.constructor = JisonLexerError;
JisonLexerError.prototype.name = 'JisonLexerError';
var lexer = {
EOF: 1,
ERROR: 2,
__currentRuleSet__: null,
__error_infos: [], __decompressed: false, done: false, _backtrack: false, _input: '', _more: false, _signaled_error_token: false, conditionStack: [], match: '', matched: '', matches: false, yytext: '', offset: 0, yyleng: 0, yylineno: 0, yylloc: null,
constructLexErrorInfo: function lexer_constructLexErrorInfo(msg, recoverable, show_input_position) {
msg = '' + msg;
if (show_input_position == undefined) {
show_input_position = !(msg.indexOf('\n') > 0 && msg.indexOf('^') > 0);
}
if (this.yylloc && show_input_position) {
if (typeof this.prettyPrintRange === 'function') {
var pretty_src = this.prettyPrintRange(this.yylloc);
if (!/\n\s*$/.test(msg)) {
msg += '\n';
}
msg += '\n Erroneous area:\n' + this.prettyPrintRange(this.yylloc);
} else if (typeof this.showPosition === 'function') {
var pos_str = this.showPosition();
if (pos_str) {
if (msg.length && msg[msg.length - 1] !== '\n' && pos_str[0] !== '\n') {
msg += '\n' + pos_str;
} else {
msg += pos_str;
}
}
}
}
var pei = {
errStr: msg,
recoverable: !!recoverable,
text: this.match, token: null,
line: this.yylineno,
loc: this.yylloc,
yy: this.yy,
lexer: this,
destroy: function destructLexErrorInfo() {
var rec = !!this.recoverable;
for (var key in this) {
if (this.hasOwnProperty(key) && typeof key === 'object') {
this[key] = undefined;
}
}
this.recoverable = rec;
}
};
this.__error_infos.push(pei);
return pei;
},
parseError: function lexer_parseError(str, hash, ExceptionClass) {
if (!ExceptionClass) {
ExceptionClass = this.JisonLexerError;
}
if (this.yy) {
if (this.yy.parser && typeof this.yy.parser.parseError === 'function') {
return this.yy.parser.parseError.call(this, str, hash, ExceptionClass) || this.ERROR;
} else if (typeof this.yy.parseError === 'function') {
return this.yy.parseError.call(this, str, hash, ExceptionClass) || this.ERROR;
}
}
throw new ExceptionClass(str, hash);
},
yyerror: function yyError(str ) {
var lineno_msg = '';
if (this.yylloc) {
lineno_msg = ' on line ' + (this.yylineno + 1);
}
var p = this.constructLexErrorInfo(
'Lexical error' + lineno_msg + ': ' + str,
this.options.lexerErrorsAreRecoverable
);
var args = Array.prototype.slice.call(arguments, 1);
if (args.length) {
p.extra_error_attributes = args;
}
return this.parseError(p.errStr, p, this.JisonLexerError) || this.ERROR;
},
cleanupAfterLex: function lexer_cleanupAfterLex(do_not_nuke_errorinfos) {
this.setInput('', {});
if (!do_not_nuke_errorinfos) {
for (var i = this.__error_infos.length - 1; i >= 0; i--) {
var el = this.__error_infos[i];
if (el && typeof el.destroy === 'function') {
el.destroy();
}
}
this.__error_infos.length = 0;
}
return this;
},
clear: function lexer_clear() {
this.yytext = '';
this.yyleng = 0;
this.match = '';
this.matches = false;
this._more = false;
this._backtrack = false;
var col = (this.yylloc ? this.yylloc.last_column : 0);
this.yylloc = {
first_line: this.yylineno + 1,
first_column: col,
last_line: this.yylineno + 1,
last_column: col,
range: [this.offset, this.offset]
};
},
setInput: function lexer_setInput(input, yy) {
this.yy = yy || this.yy || {};
if (!this.__decompressed) {
var rules = this.rules;
for (var i = 0, len = rules.length; i < len; i++) {
var rule_re = rules[i];
if (typeof rule_re === 'number') {
rules[i] = rules[rule_re];
}
}
var conditions = this.conditions;
for (var k in conditions) {
var spec = conditions[k];
var rule_ids = spec.rules;
var len = rule_ids.length;
var rule_regexes = new Array(len + 1); var rule_new_ids = new Array(len + 1);
for (var i = 0; i < len; i++) {
var idx = rule_ids[i];
var rule_re = rules[idx];
rule_regexes[i + 1] = rule_re;
rule_new_ids[i + 1] = idx;
}
spec.rules = rule_new_ids;
spec.__rule_regexes = rule_regexes;
spec.__rule_count = len;
}
this.__decompressed = true;
}
this._input = input || '';
this.clear();
this._signaled_error_token = false;
this.done = false;
this.yylineno = 0;
this.matched = '';
this.conditionStack = ['INITIAL'];
this.__currentRuleSet__ = null;
this.yylloc = {
first_line: 1,
first_column: 0,
last_line: 1,
last_column: 0,
range: [0, 0]
};
this.offset = 0;
return this;
},
editRemainingInput: function lexer_editRemainingInput(callback, cpsArg) {
var rv = callback.call(this, this._input, cpsArg);
if (typeof rv !== 'string') {
if (rv) {
this._input = '' + rv;
}
} else {
this._input = rv;
}
return this;
},
input: function lexer_input() {
if (!this._input) {
return null;
}
var ch = this._input[0];
this.yytext += ch;
this.yyleng++;
this.offset++;
this.match += ch;
this.matched += ch;
var slice_len = 1;
var lines = false;
if (ch === '\n') {
lines = true;
} else if (ch === '\r') {
lines = true;
var ch2 = this._input[1];
if (ch2 === '\n') {
slice_len++;
ch += ch2;
this.yytext += ch2;
this.yyleng++;
this.offset++;
this.match += ch2;
this.matched += ch2;
this.yylloc.range[1]++;
}
}
if (lines) {
this.yylineno++;
this.yylloc.last_line++;
this.yylloc.last_column = 0;
} else {
this.yylloc.last_column++;
}
this.yylloc.range[1]++;
this._input = this._input.slice(slice_len);
return ch;
},
unput: function lexer_unput(ch) {
var len = ch.length;
var lines = ch.split(/(?:\r\n?|\n)/g);
this._input = ch + this._input;
this.yytext = this.yytext.substr(0, this.yytext.length - len);
this.yyleng = this.yytext.length;
this.offset -= len;
this.match = this.match.substr(0, this.match.length - len);
this.matched = this.matched.substr(0, this.matched.length - len);
if (lines.length > 1) {
this.yylineno -= lines.length - 1;
this.yylloc.last_line = this.yylineno + 1;
var pre = this.match;
var pre_lines = pre.split(/(?:\r\n?|\n)/g);
if (pre_lines.length === 1) {
pre = this.matched;
pre_lines = pre.split(/(?:\r\n?|\n)/g);
}
this.yylloc.last_column = pre_lines[pre_lines.length - 1].length;
} else {
this.yylloc.last_column -= len;
}
this.yylloc.range[1] = this.yylloc.range[0] + this.yyleng;
this.done = false;
return this;
},
more: function lexer_more() {
this._more = true;
return this;
},
reject: function lexer_reject() {
if (this.options.backtrack_lexer) {
this._backtrack = true;
} else {
var lineno_msg = '';
if (this.yylloc) {
lineno_msg = ' on line ' + (this.yylineno + 1);
}
var p = this.constructLexErrorInfo(
'Lexical error' + lineno_msg + ': You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true).',
false
);
this._signaled_error_token = this.parseError(p.errStr, p, this.JisonLexerError) || this.ERROR;
}
return this;
},
less: function lexer_less(n) {
return this.unput(this.match.slice(n));
},
pastInput: function lexer_pastInput(maxSize, maxLines) {
var past = this.matched.substring(0, this.matched.length - this.match.length);
if (maxSize < 0)
maxSize = past.length;
else if (!maxSize)
maxSize = 20;
if (maxLines < 0)
maxLines = past.length; else if (!maxLines)
maxLines = 1;
past = past.substr(-maxSize * 2 - 2);
var a = past.replace(/\r\n|\r/g, '\n').split('\n');
a = a.slice(-maxLines);
past = a.join('\n');
if (past.length > maxSize) {
past = '...' + past.substr(-maxSize);
}
return past;
},
upcomingInput: function lexer_upcomingInput(maxSize, maxLines) {
var next = this.match;
if (maxSize < 0)
maxSize = next.length + this._input.length;
else if (!maxSize)
maxSize = 20;
if (maxLines < 0)
maxLines = maxSize; else if (!maxLines)
maxLines = 1;
if (next.length < maxSize * 2 + 2) {
next += this._input.substring(0, maxSize * 2 + 2); }
var a = next.replace(/\r\n|\r/g, '\n').split('\n');
a = a.slice(0, maxLines);
next = a.join('\n');
if (next.length > maxSize) {
next = next.substring(0, maxSize) + '...';
}
return next;
},
showPosition: function lexer_showPosition(maxPrefix, maxPostfix) {
var pre = this.pastInput(maxPrefix).replace(/\s/g, ' ');
var c = new Array(pre.length + 1).join('-');
return pre + this.upcomingInput(maxPostfix).replace(/\s/g, ' ') + '\n' + c + '^';
},
deriveLocationInfo: function lexer_deriveYYLLOC(actual, preceding, following, current) {
var loc = {
first_line: 1,
first_column: 0,
last_line: 1,
last_column: 0,
range: [0, 0]
};
if (actual) {
loc.first_line = actual.first_line | 0;
loc.last_line = actual.last_line | 0;
loc.first_column = actual.first_column | 0;
loc.last_column = actual.last_column | 0;
if (actual.range) {
loc.range[0] = actual.range[0] | 0;
loc.range[1] = actual.range[1] | 0;
}
}
if (loc.first_line <= 0 || loc.last_line < loc.first_line) {
if (loc.first_line <= 0 && preceding) {
loc.first_line = preceding.last_line | 0;
loc.first_column = preceding.last_column | 0;
if (preceding.range) {
loc.range[0] = actual.range[1] | 0;
}
}
if ((loc.last_line <= 0 || loc.last_line < loc.first_line) && following) {
loc.last_line = following.first_line | 0;
loc.last_column = following.first_column | 0;
if (following.range) {
loc.range[1] = actual.range[0] | 0;
}
}
if (loc.first_line <= 0 && current && (loc.last_line <= 0 || current.last_line <= loc.last_line)) {
loc.first_line = current.first_line | 0;
loc.first_column = current.first_column | 0;
if (current.range) {
loc.range[0] = current.range[0] | 0;
}
}
if (loc.last_line <= 0 && current && (loc.first_line <= 0 || current.first_line >= loc.first_line)) {
loc.last_line = current.last_line | 0;
loc.last_column = current.last_column | 0;
if (current.range) {
loc.range[1] = current.range[1] | 0;
}
}
}
if (loc.last_line <= 0) {
if (loc.first_line <= 0) {
loc.first_line = this.yylloc.first_line;
loc.last_line = this.yylloc.last_line;
loc.first_column = this.yylloc.first_column;
loc.last_column = this.yylloc.last_column;
loc.range[0] = this.yylloc.range[0];
loc.range[1] = this.yylloc.range[1];
} else {
loc.last_line = this.yylloc.last_line;
loc.last_column = this.yylloc.last_column;
loc.range[1] = this.yylloc.range[1];
}
}
if (loc.first_line <= 0) {
loc.first_line = loc.last_line;
loc.first_column = 0; loc.range[1] = loc.range[0];
}
if (loc.first_column < 0) {
loc.first_column = 0;
}
if (loc.last_column < 0) {
loc.last_column = (loc.first_column > 0 ? loc.first_column : 80);
}
return loc;
},
prettyPrintRange: function lexer_prettyPrintRange(loc, context_loc, context_loc2) {
loc = this.deriveLocationInfo(loc, context_loc, context_loc2);
const CONTEXT = 3;
const CONTEXT_TAIL = 1;
const MINIMUM_VISIBLE_NONEMPTY_LINE_COUNT = 2;
var input = this.matched + this._input;
var lines = input.split('\n');
var l0 = Math.max(1, (context_loc ? context_loc.first_line : loc.first_line - CONTEXT));
var l1 = Math.max(1, (context_loc2 ? context_loc2.last_line : loc.last_line + CONTEXT_TAIL));
var lineno_display_width = 1 + Math.log10(l1 | 1) | 0;
var ws_prefix = new Array(lineno_display_width).join(' ');
var nonempty_line_indexes = [];
var rv = lines.slice(l0 - 1, l1 + 1).map(function injectLineNumber(line, index) {
var lno = index + l0;
var lno_pfx = (ws_prefix + lno).substr(-lineno_display_width);
var rv = lno_pfx + ': ' + line;
var errpfx = new Array(lineno_display_width + 1).join('^');
var offset = 2 + 1;
var len = 0;
if (lno === loc.first_line) {
offset += loc.first_column;
len = Math.max(
2,
((lno === loc.last_line ? loc.last_column : line.length)) - loc.first_column + 1
);
} else if (lno === loc.last_line) {
len = Math.max(2, loc.last_column + 1);
} else if (lno > loc.first_line && lno < loc.last_line) {
len = Math.max(2, line.length + 1);
}
if (len) {
var lead = new Array(offset).join('.');
var mark = new Array(len).join('^');
rv += '\n' + errpfx + lead + mark;
if (line.trim().length > 0) {
nonempty_line_indexes.push(index);
}
}
rv = rv.replace(/\t/g, ' ');
return rv;
});
if (nonempty_line_indexes.length > 2 * MINIMUM_VISIBLE_NONEMPTY_LINE_COUNT) {
var clip_start = nonempty_line_indexes[MINIMUM_VISIBLE_NONEMPTY_LINE_COUNT - 1] + 1;
var clip_end = nonempty_line_indexes[nonempty_line_indexes.length - MINIMUM_VISIBLE_NONEMPTY_LINE_COUNT] - 1;
var intermediate_line = new Array(lineno_display_width + 1).join(' ') + ' (...continued...)';
intermediate_line += '\n' + new Array(lineno_display_width + 1).join('-') + ' (---------------)';
rv.splice(clip_start, clip_end - clip_start + 1, intermediate_line);
}
return rv.join('\n');
},
describeYYLLOC: function lexer_describe_yylloc(yylloc, display_range_too) {
var l1 = yylloc.first_line;
var l2 = yylloc.last_line;
var c1 = yylloc.first_column;
var c2 = yylloc.last_column;
var dl = l2 - l1;
var dc = c2 - c1;
var rv;
if (dl === 0) {
rv = 'line ' + l1 + ', ';
if (dc <= 1) {
rv += 'column ' + c1;
} else {
rv += 'columns ' + c1 + ' .. ' + c2;
}
} else {
rv = 'lines ' + l1 + '(column ' + c1 + ') .. ' + l2 + '(column ' + c2 + ')';
}
if (yylloc.range && display_range_too) {
var r1 = yylloc.range[0];
var r2 = yylloc.range[1] - 1;
if (r2 <= r1) {
rv += ' {String Offset: ' + r1 + '}';
} else {
rv += ' {String Offset range: ' + r1 + ' .. ' + r2 + '}';
}
}
return rv;
},
test_match: function lexer_test_match(match, indexed_rule) {
var token, lines, backup, match_str, match_str_len;
if (this.options.backtrack_lexer) {
backup = {
yylineno: this.yylineno,
yylloc: {
first_line: this.yylloc.first_line,
last_line: this.yylloc.last_line,
first_column: this.yylloc.first_column,
last_column: this.yylloc.last_column,
range: this.yylloc.range.slice(0)
},
yytext: this.yytext,
match: this.match,
matches: this.matches,
matched: this.matched,
yyleng: this.yyleng,
offset: this.offset,
_more: this._more,
_input: this._input,
yy: this.yy,
conditionStack: this.conditionStack.slice(0),
done: this.done
};
}
match_str = match[0];
match_str_len = match_str.length;
lines = match_str.split(/(?:\r\n?|\n)/g);
if (lines.length > 1) {
this.yylineno += lines.length - 1;
this.yylloc.last_line = this.yylineno + 1;
this.yylloc.last_column = lines[lines.length - 1].length;
} else {
this.yylloc.last_column += match_str_len;
}
this.yytext += match_str;
this.match += match_str;
this.matched += match_str;
this.matches = match;
this.yyleng = this.yytext.length;
this.yylloc.range[1] += match_str_len;
this.offset += match_str_len;
this._more = false;
this._backtrack = false;
this._input = this._input.slice(match_str_len);
token = this.performAction.call(
this,
this.yy,
indexed_rule,
this.conditionStack[this.conditionStack.length - 1]
);
if (this.done && this._input) {
this.done = false;
}
if (token) {
return token;
} else if (this._backtrack) {
for (var k in backup) {
this[k] = backup[k];
}
this.__currentRuleSet__ = null;
return false; } else if (this._signaled_error_token) {
token = this._signaled_error_token;
this._signaled_error_token = false;
return token;
}
return false;
},
next: function lexer_next() {
if (this.done) {
this.clear();
return this.EOF;
}
if (!this._input) {
this.done = true;
}
var token, match, tempMatch, index;
if (!this._more) {
this.clear();
}
var spec = this.__currentRuleSet__;
if (!spec) {
spec = this.__currentRuleSet__ = this._currentRules();
if (!spec || !spec.rules) {
var lineno_msg = '';
if (this.options.trackPosition) {
lineno_msg = ' on line ' + (this.yylineno + 1);
}
var p = this.constructLexErrorInfo(
'Internal lexer engine error' + lineno_msg + ': The lex grammar programmer pushed a non-existing condition name "' + this.topState() + '"; this is a fatal error and should be reported to the application programmer team!',
false
);
return this.parseError(p.errStr, p, this.JisonLexerError) || this.ERROR;
}
}
var rule_ids = spec.rules;
var regexes = spec.__rule_regexes;
var len = spec.__rule_count;
for (var i = 1; i <= len; i++) {
tempMatch = this._input.match(regexes[i]);
if (tempMatch && (!match || tempMatch[0].length > match[0].length)) {
match = tempMatch;
index = i;
if (this.options.backtrack_lexer) {
token = this.test_match(tempMatch, rule_ids[i]);
if (token !== false) {
return token;
} else if (this._backtrack) {
match = undefined;
continue; } else {
return false;
}
} else if (!this.options.flex) {
break;
}
}
}
if (match) {
token = this.test_match(match, rule_ids[index]);
if (token !== false) {
return token;
}
return false;
}
if (!this._input) {
this.done = true;
this.clear();
return this.EOF;
} else {
var lineno_msg = '';
if (this.options.trackPosition) {
lineno_msg = ' on line ' + (this.yylineno + 1);
}
var p = this.constructLexErrorInfo(
'Lexical error' + lineno_msg + ': Unrecognized text.',
this.options.lexerErrorsAreRecoverable
);
var pendingInput = this._input;
var activeCondition = this.topState();
var conditionStackDepth = this.conditionStack.length;
token = this.parseError(p.errStr, p, this.JisonLexerError) || this.ERROR;
if (token === this.ERROR) {
if (!this.matches && pendingInput === this._input && activeCondition === this.topState() && conditionStackDepth === this.conditionStack.length) {
this.input();
}
}
return token;
}
},
lex: function lexer_lex() {
var r;
if (typeof this.pre_lex === 'function') {
r = this.pre_lex.call(this, 0);
}
if (typeof this.options.pre_lex === 'function') {
r = this.options.pre_lex.call(this, r) || r;
}
if (this.yy && typeof this.yy.pre_lex === 'function') {
r = this.yy.pre_lex.call(this, r) || r;
}
while (!r) {
r = this.next();
}
if (this.yy && typeof this.yy.post_lex === 'function') {
r = this.yy.post_lex.call(this, r) || r;
}
if (typeof this.options.post_lex === 'function') {
r = this.options.post_lex.call(this, r) || r;
}
if (typeof this.post_lex === 'function') {
r = this.post_lex.call(this, r) || r;
}
return r;
},
fastLex: function lexer_fastLex() {
var r;
while (!r) {
r = this.next();
}
return r;
},
canIUse: function lexer_canIUse() {
var rv = {
fastLex: !(typeof this.pre_lex === 'function' || typeof this.options.pre_lex === 'function' || this.yy && typeof this.yy.pre_lex === 'function' || this.yy && typeof this.yy.post_lex === 'function' || typeof this.options.post_lex === 'function' || typeof this.post_lex === 'function') && typeof this.fastLex === 'function'
};
return rv;
},
begin: function lexer_begin(condition) {
return this.pushState(condition);
},
pushState: function lexer_pushState(condition) {
this.conditionStack.push(condition);
this.__currentRuleSet__ = null;
return this;
},
popState: function lexer_popState() {
var n = this.conditionStack.length - 1;
if (n > 0) {
this.__currentRuleSet__ = null;
return this.conditionStack.pop();
} else {
return this.conditionStack[0];
}
},
topState: function lexer_topState(n) {
n = this.conditionStack.length - 1 - Math.abs(n || 0);
if (n >= 0) {
return this.conditionStack[n];
} else {
return 'INITIAL';
}
},
_currentRules: function lexer__currentRules() {
if (this.conditionStack.length && this.conditionStack[this.conditionStack.length - 1]) {
return this.conditions[this.conditionStack[this.conditionStack.length - 1]];
} else {
return this.conditions['INITIAL'];
}
},
stateStackSize: function lexer_stateStackSize() {
return this.conditionStack.length;
},
options: {
trackPosition: true,
caseInsensitive: true
},
JisonLexerError: JisonLexerError,
performAction: function lexer__performAction(yy, yyrulenumber, YY_START) {
var yy_ = this;
var YYSTATE = YY_START;
switch (yyrulenumber) {
case 0:
break;
default:
return this.simpleCaseActionClusters[yyrulenumber];
}
},
simpleCaseActionClusters: {
1: 3,
2: 10,
3: 8,
4: 9,
5: 6,
6: 7,
7: 17,
8: 18,
9: 19,
10: 20,
11: 22,
12: 21,
13: 23,
14: 24,
15: 11,
16: 11,
17: 11,
18: 11,
19: 11,
20: 11,
21: 11,
22: 12,
23: 12,
24: 12,
25: 12,
26: 13,
27: 13,
28: 14,
29: 14,
30: 15,
31: 15,
32: 15,
33: 25,
34: 26,
35: 16,
36: 4,
37: 5,
38: 1
},
rules: [
/^(?:\s+)/i,
/^(?:(-(webkit|moz)-)?calc\b)/i,
/^(?:[a-z][\d\-a-z]*\s*\((?:(?:"(?:\\.|[^"\\])*"|'(?:\\.|[^'\\])*')|\([^)]*\)|[^()]*)*\))/i,
/^(?:\*)/i,
/^(?:\/)/i,
/^(?:\+)/i,
/^(?:-)/i,
/^(?:((\d+(\.\d+)?|\.\d+)(e(\+|-)\d+)?)em\b)/i,
/^(?:((\d+(\.\d+)?|\.\d+)(e(\+|-)\d+)?)ex\b)/i,
/^(?:((\d+(\.\d+)?|\.\d+)(e(\+|-)\d+)?)ch\b)/i,
/^(?:((\d+(\.\d+)?|\.\d+)(e(\+|-)\d+)?)rem\b)/i,
/^(?:((\d+(\.\d+)?|\.\d+)(e(\+|-)\d+)?)vw\b)/i,
/^(?:((\d+(\.\d+)?|\.\d+)(e(\+|-)\d+)?)vh\b)/i,
/^(?:((\d+(\.\d+)?|\.\d+)(e(\+|-)\d+)?)vmin\b)/i,
/^(?:((\d+(\.\d+)?|\.\d+)(e(\+|-)\d+)?)vmax\b)/i,
/^(?:((\d+(\.\d+)?|\.\d+)(e(\+|-)\d+)?)cm\b)/i,
/^(?:((\d+(\.\d+)?|\.\d+)(e(\+|-)\d+)?)mm\b)/i,
/^(?:((\d+(\.\d+)?|\.\d+)(e(\+|-)\d+)?)Q\b)/i,
/^(?:((\d+(\.\d+)?|\.\d+)(e(\+|-)\d+)?)in\b)/i,
/^(?:((\d+(\.\d+)?|\.\d+)(e(\+|-)\d+)?)pt\b)/i,
/^(?:((\d+(\.\d+)?|\.\d+)(e(\+|-)\d+)?)pc\b)/i,
/^(?:((\d+(\.\d+)?|\.\d+)(e(\+|-)\d+)?)px\b)/i,
/^(?:((\d+(\.\d+)?|\.\d+)(e(\+|-)\d+)?)deg\b)/i,
/^(?:((\d+(\.\d+)?|\.\d+)(e(\+|-)\d+)?)grad\b)/i,
/^(?:((\d+(\.\d+)?|\.\d+)(e(\+|-)\d+)?)rad\b)/i,
/^(?:((\d+(\.\d+)?|\.\d+)(e(\+|-)\d+)?)turn\b)/i,
/^(?:((\d+(\.\d+)?|\.\d+)(e(\+|-)\d+)?)s\b)/i,
/^(?:((\d+(\.\d+)?|\.\d+)(e(\+|-)\d+)?)ms\b)/i,
/^(?:((\d+(\.\d+)?|\.\d+)(e(\+|-)\d+)?)Hz\b)/i,
/^(?:((\d+(\.\d+)?|\.\d+)(e(\+|-)\d+)?)kHz\b)/i,
/^(?:((\d+(\.\d+)?|\.\d+)(e(\+|-)\d+)?)dpi\b)/i,
/^(?:((\d+(\.\d+)?|\.\d+)(e(\+|-)\d+)?)dpcm\b)/i,
/^(?:((\d+(\.\d+)?|\.\d+)(e(\+|-)\d+)?)dppx\b)/i,
/^(?:((\d+(\.\d+)?|\.\d+)(e(\+|-)\d+)?)%)/i,
/^(?:((\d+(\.\d+)?|\.\d+)(e(\+|-)\d+)?)\b)/i,
/^(?:((\d+(\.\d+)?|\.\d+)(e(\+|-)\d+)?)-?([^\W\d]|[ -ÿ]|(\\[\dA-Fa-f]{1,6}(\r\n|[\t\n\f\r ])?|\\[^\d\n\f\rA-Fa-f]))([\w\-]|[ -ÿ]|(\\[\dA-Fa-f]{1,6}(\r\n|[\t\n\f\r ])?|\\[^\d\n\f\rA-Fa-f]))*\b)/i,
/^(?:\()/i,
/^(?:\))/i,
/^(?:$)/i
],
conditions: {
'INITIAL': {
rules: [
0,
1,
2,
3,
4,
5,
6,
7,
8,
9,
10,
11,
12,
13,
14,
15,
16,
17,
18,
19,
20,
21,
22,
23,
24,
25,
26,
27,
28,
29,
30,
31,
32,
33,
34,
35,
36,
37,
38
],
inclusive: true
}
}
};
return lexer;
}();
parser.lexer = lexer;
function Parser() {
this.yy = {};
}
Parser.prototype = parser;
parser.Parser = Parser;
return new Parser();
})();
if (typeof require !== 'undefined' && typeof exports !== 'undefined') {
exports.parser = parser;
exports.Parser = parser.Parser;
exports.parse = function () {
return parser.parse.apply(parser, arguments);
};
}