Comparing version 7.0.7 to 7.0.8
{ | ||
"name": "mermaid", | ||
"version": "7.0.7", | ||
"version": "7.0.8", | ||
"description": "Markdownish syntax for generating flowcharts, sequence diagrams, class diagrams, gantt charts and git graphs.", | ||
@@ -23,9 +23,7 @@ "main": "src/mermaid.js", | ||
"upgrade": "yarn-upgrade-all && yarn remove d3 && yarn add d3@3.5.17", | ||
"lint": "node_modules/.bin/standard", | ||
"karma": "node node_modules/karma/bin/karma start karma.conf.js --single-run", | ||
"tape": "node node_modules/tape/bin/tape test/cli_test-*.js", | ||
"lint": "standard", | ||
"karma": "node -r babel-register node_modules/.bin/karma start karma.conf.js --single-run", | ||
"tape": "node -r babel-register node_modules/.bin/tape test/cli_test-*.js", | ||
"test": "yarn lint && yarn tape && yarn karma", | ||
"live": "live-server ./test/examples", | ||
"jison": "gulp jison_legacy", | ||
"live_server": "gulp live-server", | ||
"jison": "gulp jison", | ||
"prepublishOnly": "yarn build && yarn release && yarn test" | ||
@@ -62,3 +60,2 @@ }, | ||
"babel-loader": "^7.1.2", | ||
"babel-plugin-transform-remove-strict-mode": "^0.0.2", | ||
"babel-preset-env": "^1.6.0", | ||
@@ -73,3 +70,2 @@ "babel-preset-es2015": "^6.24.1", | ||
"gulp-jison": "^1.2.0", | ||
"gulp-shell": "^0.6.3", | ||
"inject-loader": "^3.0.1", | ||
@@ -85,5 +81,3 @@ "jasmine": "^2.8.0", | ||
"less-loader": "^4.0.5", | ||
"live-server": "^1.2.0", | ||
"phantomjs-prebuilt": "^2.1.15", | ||
"require-dir": "^0.3.2", | ||
"rimraf": "^2.6.1", | ||
@@ -90,0 +84,0 @@ "standard": "^10.0.3", |
@@ -53,2 +53,3 @@ /* parser generated by jison 0.4.17 */ | ||
token location info (@$, _$, etc.): { | ||
@@ -62,2 +63,3 @@ first_line: n, | ||
the parseError function receives a 'hash' object with these members for lexer and parser errors: { | ||
@@ -74,666 +76,672 @@ text: (matched text) | ||
*/ | ||
var parser = (function () { | ||
var o = function (k, v, o, l) { for (o = o || {}, l = k.length; l--; o[k[l]] = v);return o }, $V0 = [1, 11], $V1 = [1, 12], $V2 = [1, 13], $V3 = [1, 15], $V4 = [1, 16], $V5 = [1, 17], $V6 = [6, 8], $V7 = [1, 26], $V8 = [1, 27], $V9 = [1, 28], $Va = [1, 29], $Vb = [1, 30], $Vc = [1, 31], $Vd = [6, 8, 13, 17, 23, 26, 27, 28, 29, 30, 31], $Ve = [6, 8, 13, 17, 23, 26, 27, 28, 29, 30, 31, 45, 46, 47], $Vf = [23, 45, 46, 47], $Vg = [23, 30, 31, 45, 46, 47], $Vh = [23, 26, 27, 28, 29, 45, 46, 47], $Vi = [6, 8, 13], $Vj = [1, 46] | ||
var parser = {trace: function trace () { }, | ||
yy: {}, | ||
symbols_: {'error': 2, 'mermaidDoc': 3, 'graphConfig': 4, 'CLASS_DIAGRAM': 5, 'NEWLINE': 6, 'statements': 7, 'EOF': 8, 'statement': 9, 'className': 10, 'alphaNumToken': 11, 'relationStatement': 12, 'LABEL': 13, 'classStatement': 14, 'methodStatement': 15, 'CLASS': 16, 'STRUCT_START': 17, 'members': 18, 'STRUCT_STOP': 19, 'MEMBER': 20, 'SEPARATOR': 21, 'relation': 22, 'STR': 23, 'relationType': 24, 'lineType': 25, 'AGGREGATION': 26, 'EXTENSION': 27, 'COMPOSITION': 28, 'DEPENDENCY': 29, 'LINE': 30, 'DOTTED_LINE': 31, 'commentToken': 32, 'textToken': 33, 'graphCodeTokens': 34, 'textNoTagsToken': 35, 'TAGSTART': 36, 'TAGEND': 37, '==': 38, '--': 39, 'PCT': 40, 'DEFAULT': 41, 'SPACE': 42, 'MINUS': 43, 'keywords': 44, 'UNICODE_TEXT': 45, 'NUM': 46, 'ALPHA': 47, '$accept': 0, '$end': 1}, | ||
terminals_: {2: 'error', 5: 'CLASS_DIAGRAM', 6: 'NEWLINE', 8: 'EOF', 13: 'LABEL', 16: 'CLASS', 17: 'STRUCT_START', 19: 'STRUCT_STOP', 20: 'MEMBER', 21: 'SEPARATOR', 23: 'STR', 26: 'AGGREGATION', 27: 'EXTENSION', 28: 'COMPOSITION', 29: 'DEPENDENCY', 30: 'LINE', 31: 'DOTTED_LINE', 34: 'graphCodeTokens', 36: 'TAGSTART', 37: 'TAGEND', 38: '==', 39: '--', 40: 'PCT', 41: 'DEFAULT', 42: 'SPACE', 43: 'MINUS', 44: 'keywords', 45: 'UNICODE_TEXT', 46: 'NUM', 47: 'ALPHA'}, | ||
productions_: [0, [3, 1], [4, 4], [7, 1], [7, 3], [10, 2], [10, 1], [9, 1], [9, 2], [9, 1], [9, 1], [14, 2], [14, 5], [18, 1], [18, 2], [15, 1], [15, 2], [15, 1], [15, 1], [12, 3], [12, 4], [12, 4], [12, 5], [22, 3], [22, 2], [22, 2], [22, 1], [24, 1], [24, 1], [24, 1], [24, 1], [25, 1], [25, 1], [32, 1], [32, 1], [33, 1], [33, 1], [33, 1], [33, 1], [33, 1], [33, 1], [33, 1], [35, 1], [35, 1], [35, 1], [35, 1], [11, 1], [11, 1], [11, 1]], | ||
performAction: function anonymous (yytext, yyleng, yylineno, yy, yystate /* action[1] */, $$ /* vstack */, _$ /* lstack */) { | ||
var parser = (function(){ | ||
var o=function(k,v,o,l){for(o=o||{},l=k.length;l--;o[k[l]]=v);return o},$V0=[1,11],$V1=[1,12],$V2=[1,13],$V3=[1,15],$V4=[1,16],$V5=[1,17],$V6=[6,8],$V7=[1,26],$V8=[1,27],$V9=[1,28],$Va=[1,29],$Vb=[1,30],$Vc=[1,31],$Vd=[6,8,13,17,23,26,27,28,29,30,31],$Ve=[6,8,13,17,23,26,27,28,29,30,31,45,46,47],$Vf=[23,45,46,47],$Vg=[23,30,31,45,46,47],$Vh=[23,26,27,28,29,45,46,47],$Vi=[6,8,13],$Vj=[1,46]; | ||
var parser = {trace: function trace() { }, | ||
yy: {}, | ||
symbols_: {"error":2,"mermaidDoc":3,"graphConfig":4,"CLASS_DIAGRAM":5,"NEWLINE":6,"statements":7,"EOF":8,"statement":9,"className":10,"alphaNumToken":11,"relationStatement":12,"LABEL":13,"classStatement":14,"methodStatement":15,"CLASS":16,"STRUCT_START":17,"members":18,"STRUCT_STOP":19,"MEMBER":20,"SEPARATOR":21,"relation":22,"STR":23,"relationType":24,"lineType":25,"AGGREGATION":26,"EXTENSION":27,"COMPOSITION":28,"DEPENDENCY":29,"LINE":30,"DOTTED_LINE":31,"commentToken":32,"textToken":33,"graphCodeTokens":34,"textNoTagsToken":35,"TAGSTART":36,"TAGEND":37,"==":38,"--":39,"PCT":40,"DEFAULT":41,"SPACE":42,"MINUS":43,"keywords":44,"UNICODE_TEXT":45,"NUM":46,"ALPHA":47,"$accept":0,"$end":1}, | ||
terminals_: {2:"error",5:"CLASS_DIAGRAM",6:"NEWLINE",8:"EOF",13:"LABEL",16:"CLASS",17:"STRUCT_START",19:"STRUCT_STOP",20:"MEMBER",21:"SEPARATOR",23:"STR",26:"AGGREGATION",27:"EXTENSION",28:"COMPOSITION",29:"DEPENDENCY",30:"LINE",31:"DOTTED_LINE",34:"graphCodeTokens",36:"TAGSTART",37:"TAGEND",38:"==",39:"--",40:"PCT",41:"DEFAULT",42:"SPACE",43:"MINUS",44:"keywords",45:"UNICODE_TEXT",46:"NUM",47:"ALPHA"}, | ||
productions_: [0,[3,1],[4,4],[7,1],[7,3],[10,2],[10,1],[9,1],[9,2],[9,1],[9,1],[14,2],[14,5],[18,1],[18,2],[15,1],[15,2],[15,1],[15,1],[12,3],[12,4],[12,4],[12,5],[22,3],[22,2],[22,2],[22,1],[24,1],[24,1],[24,1],[24,1],[25,1],[25,1],[32,1],[32,1],[33,1],[33,1],[33,1],[33,1],[33,1],[33,1],[33,1],[35,1],[35,1],[35,1],[35,1],[11,1],[11,1],[11,1]], | ||
performAction: function anonymous(yytext, yyleng, yylineno, yy, yystate /* action[1] */, $$ /* vstack */, _$ /* lstack */) { | ||
/* this == yyval */ | ||
var $0 = $$.length - 1 | ||
switch (yystate) { | ||
case 5: | ||
this.$ = $$[$0 - 1] + $$[$0] | ||
break | ||
case 6: | ||
this.$ = $$[$0] | ||
break | ||
case 7: | ||
yy.addRelation($$[$0]) | ||
break | ||
case 8: | ||
$$[$0 - 1].title = yy.cleanupLabel($$[$0]); yy.addRelation($$[$0 - 1]) | ||
break | ||
case 12: | ||
/* console.log($$[$0-3],JSON.stringify($$[$0-1])); */yy.addMembers($$[$0 - 3], $$[$0 - 1]) | ||
break | ||
case 13: | ||
this.$ = [$$[$0]] | ||
break | ||
case 14: | ||
$$[$0].push($$[$0 - 1]); this.$ = $$[$0] | ||
break | ||
case 15: | ||
/* console.log('Rel found',$$[$0]); */ | ||
break | ||
case 16: | ||
yy.addMembers($$[$0 - 1], yy.cleanupLabel($$[$0])) | ||
break | ||
case 17: | ||
console.warn('Member', $$[$0]) | ||
break | ||
case 18: | ||
/* console.log('sep found',$$[$0]); */ | ||
break | ||
case 19: | ||
this.$ = {'id1': $$[$0 - 2], 'id2': $$[$0], relation: $$[$0 - 1], relationTitle1: 'none', relationTitle2: 'none'} | ||
break | ||
case 20: | ||
this.$ = {id1: $$[$0 - 3], id2: $$[$0], relation: $$[$0 - 1], relationTitle1: $$[$0 - 2], relationTitle2: 'none'} | ||
break | ||
case 21: | ||
this.$ = {id1: $$[$0 - 3], id2: $$[$0], relation: $$[$0 - 2], relationTitle1: 'none', relationTitle2: $$[$0 - 1]} | ||
break | ||
case 22: | ||
this.$ = {id1: $$[$0 - 4], id2: $$[$0], relation: $$[$0 - 2], relationTitle1: $$[$0 - 3], relationTitle2: $$[$0 - 1]} | ||
break | ||
case 23: | ||
this.$ = {type1: $$[$0 - 2], type2: $$[$0], lineType: $$[$0 - 1]} | ||
break | ||
case 24: | ||
this.$ = {type1: 'none', type2: $$[$0], lineType: $$[$0 - 1]} | ||
break | ||
case 25: | ||
this.$ = {type1: $$[$0 - 1], type2: 'none', lineType: $$[$0]} | ||
break | ||
case 26: | ||
this.$ = {type1: 'none', type2: 'none', lineType: $$[$0]} | ||
break | ||
case 27: | ||
this.$ = yy.relationType.AGGREGATION | ||
break | ||
case 28: | ||
this.$ = yy.relationType.EXTENSION | ||
break | ||
case 29: | ||
this.$ = yy.relationType.COMPOSITION | ||
break | ||
case 30: | ||
this.$ = yy.relationType.DEPENDENCY | ||
break | ||
case 31: | ||
this.$ = yy.lineType.LINE | ||
break | ||
case 32: | ||
this.$ = yy.lineType.DOTTED_LINE | ||
break | ||
} | ||
}, | ||
table: [{3: 1, 4: 2, 5: [1, 3]}, {1: [3]}, {1: [2, 1]}, {6: [1, 4]}, {7: 5, 9: 6, 10: 10, 11: 14, 12: 7, 14: 8, 15: 9, 16: $V0, 20: $V1, 21: $V2, 45: $V3, 46: $V4, 47: $V5}, {8: [1, 18]}, {6: [1, 19], 8: [2, 3]}, o($V6, [2, 7], {13: [1, 20]}), o($V6, [2, 9]), o($V6, [2, 10]), o($V6, [2, 15], {22: 21, 24: 24, 25: 25, 13: [1, 23], 23: [1, 22], 26: $V7, 27: $V8, 28: $V9, 29: $Va, 30: $Vb, 31: $Vc}), {10: 32, 11: 14, 45: $V3, 46: $V4, 47: $V5}, o($V6, [2, 17]), o($V6, [2, 18]), o($Vd, [2, 6], {11: 14, 10: 33, 45: $V3, 46: $V4, 47: $V5}), o($Ve, [2, 46]), o($Ve, [2, 47]), o($Ve, [2, 48]), {1: [2, 2]}, {7: 34, 9: 6, 10: 10, 11: 14, 12: 7, 14: 8, 15: 9, 16: $V0, 20: $V1, 21: $V2, 45: $V3, 46: $V4, 47: $V5}, o($V6, [2, 8]), {10: 35, 11: 14, 23: [1, 36], 45: $V3, 46: $V4, 47: $V5}, {22: 37, 24: 24, 25: 25, 26: $V7, 27: $V8, 28: $V9, 29: $Va, 30: $Vb, 31: $Vc}, o($V6, [2, 16]), {25: 38, 30: $Vb, 31: $Vc}, o($Vf, [2, 26], {24: 39, 26: $V7, 27: $V8, 28: $V9, 29: $Va}), o($Vg, [2, 27]), o($Vg, [2, 28]), o($Vg, [2, 29]), o($Vg, [2, 30]), o($Vh, [2, 31]), o($Vh, [2, 32]), o($V6, [2, 11], {17: [1, 40]}), o($Vd, [2, 5]), {8: [2, 4]}, o($Vi, [2, 19]), {10: 41, 11: 14, 45: $V3, 46: $V4, 47: $V5}, {10: 42, 11: 14, 23: [1, 43], 45: $V3, 46: $V4, 47: $V5}, o($Vf, [2, 25], {24: 44, 26: $V7, 27: $V8, 28: $V9, 29: $Va}), o($Vf, [2, 24]), {18: 45, 20: $Vj}, o($Vi, [2, 21]), o($Vi, [2, 20]), {10: 47, 11: 14, 45: $V3, 46: $V4, 47: $V5}, o($Vf, [2, 23]), {19: [1, 48]}, {18: 49, 19: [2, 13], 20: $Vj}, o($Vi, [2, 22]), o($V6, [2, 12]), {19: [2, 14]}], | ||
defaultActions: {2: [2, 1], 18: [2, 2], 34: [2, 4], 49: [2, 14]}, | ||
parseError: function parseError (str, hash) { | ||
if (hash.recoverable) { | ||
this.trace(str) | ||
} else { | ||
var $0 = $$.length - 1; | ||
switch (yystate) { | ||
case 5: | ||
this.$=$$[$0-1]+$$[$0]; | ||
break; | ||
case 6: | ||
this.$=$$[$0]; | ||
break; | ||
case 7: | ||
yy.addRelation($$[$0]); | ||
break; | ||
case 8: | ||
$$[$0-1].title = yy.cleanupLabel($$[$0]); yy.addRelation($$[$0-1]); | ||
break; | ||
case 12: | ||
/*console.log($$[$0-3],JSON.stringify($$[$0-1]));*/yy.addMembers($$[$0-3],$$[$0-1]); | ||
break; | ||
case 13: | ||
this.$ = [$$[$0]]; | ||
break; | ||
case 14: | ||
$$[$0].push($$[$0-1]);this.$=$$[$0]; | ||
break; | ||
case 15: | ||
/*console.log('Rel found',$$[$0]);*/ | ||
break; | ||
case 16: | ||
yy.addMembers($$[$0-1],yy.cleanupLabel($$[$0])); | ||
break; | ||
case 17: | ||
console.warn('Member',$$[$0]); | ||
break; | ||
case 18: | ||
/*console.log('sep found',$$[$0]);*/ | ||
break; | ||
case 19: | ||
this.$ = {'id1':$$[$0-2],'id2':$$[$0], relation:$$[$0-1], relationTitle1:'none', relationTitle2:'none'}; | ||
break; | ||
case 20: | ||
this.$ = {id1:$$[$0-3], id2:$$[$0], relation:$$[$0-1], relationTitle1:$$[$0-2], relationTitle2:'none'} | ||
break; | ||
case 21: | ||
this.$ = {id1:$$[$0-3], id2:$$[$0], relation:$$[$0-2], relationTitle1:'none', relationTitle2:$$[$0-1]}; | ||
break; | ||
case 22: | ||
this.$ = {id1:$$[$0-4], id2:$$[$0], relation:$$[$0-2], relationTitle1:$$[$0-3], relationTitle2:$$[$0-1]} | ||
break; | ||
case 23: | ||
this.$={type1:$$[$0-2],type2:$$[$0],lineType:$$[$0-1]}; | ||
break; | ||
case 24: | ||
this.$={type1:'none',type2:$$[$0],lineType:$$[$0-1]}; | ||
break; | ||
case 25: | ||
this.$={type1:$$[$0-1],type2:'none',lineType:$$[$0]}; | ||
break; | ||
case 26: | ||
this.$={type1:'none',type2:'none',lineType:$$[$0]}; | ||
break; | ||
case 27: | ||
this.$=yy.relationType.AGGREGATION; | ||
break; | ||
case 28: | ||
this.$=yy.relationType.EXTENSION; | ||
break; | ||
case 29: | ||
this.$=yy.relationType.COMPOSITION; | ||
break; | ||
case 30: | ||
this.$=yy.relationType.DEPENDENCY; | ||
break; | ||
case 31: | ||
this.$=yy.lineType.LINE; | ||
break; | ||
case 32: | ||
this.$=yy.lineType.DOTTED_LINE; | ||
break; | ||
} | ||
}, | ||
table: [{3:1,4:2,5:[1,3]},{1:[3]},{1:[2,1]},{6:[1,4]},{7:5,9:6,10:10,11:14,12:7,14:8,15:9,16:$V0,20:$V1,21:$V2,45:$V3,46:$V4,47:$V5},{8:[1,18]},{6:[1,19],8:[2,3]},o($V6,[2,7],{13:[1,20]}),o($V6,[2,9]),o($V6,[2,10]),o($V6,[2,15],{22:21,24:24,25:25,13:[1,23],23:[1,22],26:$V7,27:$V8,28:$V9,29:$Va,30:$Vb,31:$Vc}),{10:32,11:14,45:$V3,46:$V4,47:$V5},o($V6,[2,17]),o($V6,[2,18]),o($Vd,[2,6],{11:14,10:33,45:$V3,46:$V4,47:$V5}),o($Ve,[2,46]),o($Ve,[2,47]),o($Ve,[2,48]),{1:[2,2]},{7:34,9:6,10:10,11:14,12:7,14:8,15:9,16:$V0,20:$V1,21:$V2,45:$V3,46:$V4,47:$V5},o($V6,[2,8]),{10:35,11:14,23:[1,36],45:$V3,46:$V4,47:$V5},{22:37,24:24,25:25,26:$V7,27:$V8,28:$V9,29:$Va,30:$Vb,31:$Vc},o($V6,[2,16]),{25:38,30:$Vb,31:$Vc},o($Vf,[2,26],{24:39,26:$V7,27:$V8,28:$V9,29:$Va}),o($Vg,[2,27]),o($Vg,[2,28]),o($Vg,[2,29]),o($Vg,[2,30]),o($Vh,[2,31]),o($Vh,[2,32]),o($V6,[2,11],{17:[1,40]}),o($Vd,[2,5]),{8:[2,4]},o($Vi,[2,19]),{10:41,11:14,45:$V3,46:$V4,47:$V5},{10:42,11:14,23:[1,43],45:$V3,46:$V4,47:$V5},o($Vf,[2,25],{24:44,26:$V7,27:$V8,28:$V9,29:$Va}),o($Vf,[2,24]),{18:45,20:$Vj},o($Vi,[2,21]),o($Vi,[2,20]),{10:47,11:14,45:$V3,46:$V4,47:$V5},o($Vf,[2,23]),{19:[1,48]},{18:49,19:[2,13],20:$Vj},o($Vi,[2,22]),o($V6,[2,12]),{19:[2,14]}], | ||
defaultActions: {2:[2,1],18:[2,2],34:[2,4],49:[2,14]}, | ||
parseError: function parseError(str, hash) { | ||
if (hash.recoverable) { | ||
this.trace(str); | ||
} else { | ||
function _parseError (msg, hash) { | ||
this.message = msg | ||
this.hash = hash | ||
this.message = msg; | ||
this.hash = hash; | ||
} | ||
_parseError.prototype = Error | ||
_parseError.prototype = Error; | ||
throw new _parseError(str, hash) | ||
} | ||
}, | ||
parse: function parse (input) { | ||
var self = this, stack = [0], tstack = [], vstack = [null], lstack = [], table = this.table, yytext = '', yylineno = 0, yyleng = 0, recovering = 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) { | ||
throw new _parseError(str, hash); | ||
} | ||
}, | ||
parse: function parse(input) { | ||
var self = this, stack = [0], tstack = [], vstack = [null], lstack = [], table = this.table, yytext = '', yylineno = 0, yyleng = 0, recovering = 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] | ||
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 | ||
} | ||
function popStack (n) { | ||
stack.length = stack.length - 2 * n | ||
vstack.length = vstack.length - n | ||
lstack.length = lstack.length - n | ||
} | ||
var lex = function () { | ||
var token | ||
token = lexer.lex() || EOF | ||
if (typeof token !== 'number') { | ||
token = self.symbols_[token] || token | ||
} | ||
return token | ||
} | ||
var symbol, preErrorSymbol, state, action, a, r, yyval = {}, p, len, newState, expected | ||
while (true) { | ||
state = stack[stack.length - 1] | ||
} | ||
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; | ||
} | ||
function popStack(n) { | ||
stack.length = stack.length - 2 * n; | ||
vstack.length = vstack.length - n; | ||
lstack.length = lstack.length - n; | ||
} | ||
function lex() { | ||
var token; | ||
token = tstack.pop() || lexer.lex() || EOF; | ||
if (typeof token !== 'number') { | ||
if (token instanceof Array) { | ||
tstack = token; | ||
token = tstack.pop(); | ||
} | ||
token = self.symbols_[token] || token; | ||
} | ||
return token; | ||
} | ||
var symbol, preErrorSymbol, state, action, a, r, yyval = {}, p, len, newState, expected; | ||
while (true) { | ||
state = stack[stack.length - 1]; | ||
if (this.defaultActions[state]) { | ||
action = this.defaultActions[state] | ||
action = this.defaultActions[state]; | ||
} else { | ||
if (symbol === null || typeof symbol === 'undefined') { | ||
symbol = lex() | ||
} | ||
action = table[state] && table[state][symbol] | ||
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] + '\'') | ||
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 (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) { | ||
throw new Error('Parse Error: multiple actions possible at state: ' + state + ', token: ' + symbol) | ||
throw new Error('Parse Error: multiple actions possible at state: ' + state + ', token: ' + symbol); | ||
} | ||
switch (action[0]) { | ||
case 1: | ||
stack.push(symbol) | ||
vstack.push(lexer.yytext) | ||
lstack.push(lexer.yylloc) | ||
stack.push(action[1]) | ||
symbol = null | ||
case 1: | ||
stack.push(symbol); | ||
vstack.push(lexer.yytext); | ||
lstack.push(lexer.yylloc); | ||
stack.push(action[1]); | ||
symbol = null; | ||
if (!preErrorSymbol) { | ||
yyleng = lexer.yyleng | ||
yytext = lexer.yytext | ||
yylineno = lexer.yylineno | ||
yyloc = lexer.yylloc | ||
if (recovering > 0) { | ||
recovering-- | ||
} | ||
yyleng = lexer.yyleng; | ||
yytext = lexer.yytext; | ||
yylineno = lexer.yylineno; | ||
yyloc = lexer.yylloc; | ||
if (recovering > 0) { | ||
recovering--; | ||
} | ||
} else { | ||
symbol = preErrorSymbol | ||
preErrorSymbol = null | ||
symbol = preErrorSymbol; | ||
preErrorSymbol = null; | ||
} | ||
break | ||
case 2: | ||
len = this.productions_[action[1]][1] | ||
yyval.$ = vstack[vstack.length - len] | ||
break; | ||
case 2: | ||
len = this.productions_[action[1]][1]; | ||
yyval.$ = vstack[vstack.length - len]; | ||
yyval._$ = { | ||
first_line: lstack[lstack.length - (len || 1)].first_line, | ||
last_line: lstack[lstack.length - 1].last_line, | ||
first_column: lstack[lstack.length - (len || 1)].first_column, | ||
last_column: lstack[lstack.length - 1].last_column | ||
} | ||
first_line: lstack[lstack.length - (len || 1)].first_line, | ||
last_line: lstack[lstack.length - 1].last_line, | ||
first_column: lstack[lstack.length - (len || 1)].first_column, | ||
last_column: lstack[lstack.length - 1].last_column | ||
}; | ||
if (ranges) { | ||
yyval._$.range = [ | ||
lstack[lstack.length - (len || 1)].range[0], | ||
lstack[lstack.length - 1].range[1] | ||
] | ||
yyval._$.range = [ | ||
lstack[lstack.length - (len || 1)].range[0], | ||
lstack[lstack.length - 1].range[1] | ||
]; | ||
} | ||
r = this.performAction.apply(yyval, [ | ||
yytext, | ||
yyleng, | ||
yylineno, | ||
sharedState.yy, | ||
action[1], | ||
vstack, | ||
lstack | ||
].concat(args)) | ||
yytext, | ||
yyleng, | ||
yylineno, | ||
sharedState.yy, | ||
action[1], | ||
vstack, | ||
lstack | ||
].concat(args)); | ||
if (typeof r !== 'undefined') { | ||
return r | ||
return r; | ||
} | ||
if (len) { | ||
stack = stack.slice(0, -1 * len * 2) | ||
vstack = vstack.slice(0, -1 * len) | ||
lstack = lstack.slice(0, -1 * len) | ||
stack = stack.slice(0, -1 * len * 2); | ||
vstack = vstack.slice(0, -1 * len); | ||
lstack = lstack.slice(0, -1 * len); | ||
} | ||
stack.push(this.productions_[action[1]][0]) | ||
vstack.push(yyval.$) | ||
lstack.push(yyval._$) | ||
newState = table[stack[stack.length - 2]][stack[stack.length - 1]] | ||
stack.push(newState) | ||
break | ||
case 3: | ||
return true | ||
stack.push(this.productions_[action[1]][0]); | ||
vstack.push(yyval.$); | ||
lstack.push(yyval._$); | ||
newState = table[stack[stack.length - 2]][stack[stack.length - 1]]; | ||
stack.push(newState); | ||
break; | ||
case 3: | ||
return true; | ||
} | ||
} | ||
return true | ||
}} | ||
} | ||
return true; | ||
}}; | ||
/* generated by jison-lex 0.3.4 */ | ||
var lexer = (function () { | ||
var lexer = ({ | ||
var lexer = (function(){ | ||
var lexer = ({ | ||
EOF: 1, | ||
EOF:1, | ||
parseError: function parseError (str, hash) { | ||
parseError:function parseError(str, hash) { | ||
if (this.yy.parser) { | ||
this.yy.parser.parseError(str, hash) | ||
this.yy.parser.parseError(str, hash); | ||
} else { | ||
throw new Error(str) | ||
throw new Error(str); | ||
} | ||
}, | ||
}, | ||
// resets the lexer, sets new input | ||
setInput: function (input, yy) { | ||
this.yy = yy || this.yy || {} | ||
this._input = input | ||
this._more = this._backtrack = this.done = false | ||
this.yylineno = this.yyleng = 0 | ||
this.yytext = this.matched = this.match = '' | ||
this.conditionStack = ['INITIAL'] | ||
setInput:function (input, yy) { | ||
this.yy = yy || this.yy || {}; | ||
this._input = input; | ||
this._more = this._backtrack = this.done = false; | ||
this.yylineno = this.yyleng = 0; | ||
this.yytext = this.matched = this.match = ''; | ||
this.conditionStack = ['INITIAL']; | ||
this.yylloc = { | ||
first_line: 1, | ||
first_column: 0, | ||
last_line: 1, | ||
last_column: 0 | ||
} | ||
first_line: 1, | ||
first_column: 0, | ||
last_line: 1, | ||
last_column: 0 | ||
}; | ||
if (this.options.ranges) { | ||
this.yylloc.range = [0, 0] | ||
this.yylloc.range = [0,0]; | ||
} | ||
this.offset = 0 | ||
return this | ||
}, | ||
this.offset = 0; | ||
return this; | ||
}, | ||
// consumes and returns one char from the input | ||
input: function () { | ||
var ch = this._input[0] | ||
this.yytext += ch | ||
this.yyleng++ | ||
this.offset++ | ||
this.match += ch | ||
this.matched += ch | ||
var lines = ch.match(/(?:\r\n?|\n).*/g) | ||
input:function () { | ||
var ch = this._input[0]; | ||
this.yytext += ch; | ||
this.yyleng++; | ||
this.offset++; | ||
this.match += ch; | ||
this.matched += ch; | ||
var lines = ch.match(/(?:\r\n?|\n).*/g); | ||
if (lines) { | ||
this.yylineno++ | ||
this.yylloc.last_line++ | ||
this.yylineno++; | ||
this.yylloc.last_line++; | ||
} else { | ||
this.yylloc.last_column++ | ||
this.yylloc.last_column++; | ||
} | ||
if (this.options.ranges) { | ||
this.yylloc.range[1]++ | ||
this.yylloc.range[1]++; | ||
} | ||
this._input = this._input.slice(1) | ||
return ch | ||
}, | ||
this._input = this._input.slice(1); | ||
return ch; | ||
}, | ||
// unshifts one char (or a string) into the input | ||
unput: function (ch) { | ||
var len = ch.length | ||
var lines = ch.split(/(?:\r\n?|\n)/g) | ||
unput:function (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 -= len; | ||
this.offset -= len | ||
var oldLines = this.match.split(/(?:\r\n?|\n)/g) | ||
this.match = this.match.substr(0, this.match.length - 1) | ||
this.matched = this.matched.substr(0, this.matched.length - 1) | ||
this._input = ch + this._input; | ||
this.yytext = this.yytext.substr(0, this.yytext.length - len); | ||
//this.yyleng -= len; | ||
this.offset -= len; | ||
var oldLines = this.match.split(/(?:\r\n?|\n)/g); | ||
this.match = this.match.substr(0, this.match.length - 1); | ||
this.matched = this.matched.substr(0, this.matched.length - 1); | ||
if (lines.length - 1) { | ||
this.yylineno -= lines.length - 1 | ||
this.yylineno -= lines.length - 1; | ||
} | ||
var r = this.yylloc.range | ||
var r = this.yylloc.range; | ||
this.yylloc = { | ||
first_line: this.yylloc.first_line, | ||
last_line: this.yylineno + 1, | ||
first_column: this.yylloc.first_column, | ||
last_column: lines | ||
? (lines.length === oldLines.length ? this.yylloc.first_column : 0) + | ||
oldLines[oldLines.length - lines.length].length - lines[0].length | ||
: this.yylloc.first_column - len | ||
} | ||
first_line: this.yylloc.first_line, | ||
last_line: this.yylineno + 1, | ||
first_column: this.yylloc.first_column, | ||
last_column: lines ? | ||
(lines.length === oldLines.length ? this.yylloc.first_column : 0) | ||
+ oldLines[oldLines.length - lines.length].length - lines[0].length : | ||
this.yylloc.first_column - len | ||
}; | ||
if (this.options.ranges) { | ||
this.yylloc.range = [r[0], r[0] + this.yyleng - len] | ||
this.yylloc.range = [r[0], r[0] + this.yyleng - len]; | ||
} | ||
this.yyleng = this.yytext.length | ||
return this | ||
}, | ||
this.yyleng = this.yytext.length; | ||
return this; | ||
}, | ||
// When called from action, caches matched text and appends it on next action | ||
more: function () { | ||
this._more = true | ||
return this | ||
}, | ||
more:function () { | ||
this._more = true; | ||
return this; | ||
}, | ||
// When called from action, signals the lexer that this rule fails to match the input, so the next matching rule (regex) should be tested instead. | ||
reject: function () { | ||
reject:function () { | ||
if (this.options.backtrack_lexer) { | ||
this._backtrack = true | ||
this._backtrack = true; | ||
} else { | ||
return this.parseError('Lexical error on line ' + (this.yylineno + 1) + '. You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true).\n' + this.showPosition(), { | ||
text: '', | ||
token: null, | ||
line: this.yylineno | ||
}) | ||
return this.parseError('Lexical error on line ' + (this.yylineno + 1) + '. You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true).\n' + this.showPosition(), { | ||
text: "", | ||
token: null, | ||
line: this.yylineno | ||
}); | ||
} | ||
return this | ||
}, | ||
return this; | ||
}, | ||
// retain first n characters of the match | ||
less: function (n) { | ||
this.unput(this.match.slice(n)) | ||
}, | ||
less:function (n) { | ||
this.unput(this.match.slice(n)); | ||
}, | ||
// displays already matched input, i.e. for error messages | ||
pastInput: function () { | ||
var past = this.matched.substr(0, this.matched.length - this.match.length) | ||
return (past.length > 20 ? '...' : '') + past.substr(-20).replace(/\n/g, '') | ||
}, | ||
pastInput:function () { | ||
var past = this.matched.substr(0, this.matched.length - this.match.length); | ||
return (past.length > 20 ? '...':'') + past.substr(-20).replace(/\n/g, ""); | ||
}, | ||
// displays upcoming input, i.e. for error messages | ||
upcomingInput: function () { | ||
var next = this.match | ||
upcomingInput:function () { | ||
var next = this.match; | ||
if (next.length < 20) { | ||
next += this._input.substr(0, 20 - next.length) | ||
next += this._input.substr(0, 20-next.length); | ||
} | ||
return (next.substr(0, 20) + (next.length > 20 ? '...' : '')).replace(/\n/g, '') | ||
}, | ||
return (next.substr(0,20) + (next.length > 20 ? '...' : '')).replace(/\n/g, ""); | ||
}, | ||
// displays the character position where the lexing error occurred, i.e. for error messages | ||
showPosition: function () { | ||
var pre = this.pastInput() | ||
var c = new Array(pre.length + 1).join('-') | ||
return pre + this.upcomingInput() + '\n' + c + '^' | ||
}, | ||
showPosition:function () { | ||
var pre = this.pastInput(); | ||
var c = new Array(pre.length + 1).join("-"); | ||
return pre + this.upcomingInput() + "\n" + c + "^"; | ||
}, | ||
// test the lexed token: return FALSE when not a match, otherwise return token | ||
test_match: function (match, indexed_rule) { | ||
test_match:function (match, indexed_rule) { | ||
var token, | ||
lines, | ||
backup | ||
lines, | ||
backup; | ||
if (this.options.backtrack_lexer) { | ||
// save context | ||
backup = { | ||
yylineno: this.yylineno, | ||
yylloc: { | ||
first_line: this.yylloc.first_line, | ||
last_line: this.last_line, | ||
first_column: this.yylloc.first_column, | ||
last_column: this.yylloc.last_column | ||
}, | ||
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 | ||
} | ||
if (this.options.ranges) { | ||
backup.yylloc.range = this.yylloc.range.slice(0) | ||
} | ||
backup = { | ||
yylineno: this.yylineno, | ||
yylloc: { | ||
first_line: this.yylloc.first_line, | ||
last_line: this.last_line, | ||
first_column: this.yylloc.first_column, | ||
last_column: this.yylloc.last_column | ||
}, | ||
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 | ||
}; | ||
if (this.options.ranges) { | ||
backup.yylloc.range = this.yylloc.range.slice(0); | ||
} | ||
} | ||
lines = match[0].match(/(?:\r\n?|\n).*/g) | ||
lines = match[0].match(/(?:\r\n?|\n).*/g); | ||
if (lines) { | ||
this.yylineno += lines.length | ||
this.yylineno += lines.length; | ||
} | ||
this.yylloc = { | ||
first_line: this.yylloc.last_line, | ||
last_line: this.yylineno + 1, | ||
first_column: this.yylloc.last_column, | ||
last_column: lines | ||
? lines[lines.length - 1].length - lines[lines.length - 1].match(/\r?\n?/)[0].length | ||
: this.yylloc.last_column + match[0].length | ||
} | ||
this.yytext += match[0] | ||
this.match += match[0] | ||
this.matches = match | ||
this.yyleng = this.yytext.length | ||
first_line: this.yylloc.last_line, | ||
last_line: this.yylineno + 1, | ||
first_column: this.yylloc.last_column, | ||
last_column: lines ? | ||
lines[lines.length - 1].length - lines[lines.length - 1].match(/\r?\n?/)[0].length : | ||
this.yylloc.last_column + match[0].length | ||
}; | ||
this.yytext += match[0]; | ||
this.match += match[0]; | ||
this.matches = match; | ||
this.yyleng = this.yytext.length; | ||
if (this.options.ranges) { | ||
this.yylloc.range = [this.offset, this.offset += this.yyleng] | ||
this.yylloc.range = [this.offset, this.offset += this.yyleng]; | ||
} | ||
this._more = false | ||
this._backtrack = false | ||
this._input = this._input.slice(match[0].length) | ||
this.matched += match[0] | ||
token = this.performAction.call(this, this.yy, this, indexed_rule, this.conditionStack[this.conditionStack.length - 1]) | ||
this._more = false; | ||
this._backtrack = false; | ||
this._input = this._input.slice(match[0].length); | ||
this.matched += match[0]; | ||
token = this.performAction.call(this, this.yy, this, indexed_rule, this.conditionStack[this.conditionStack.length - 1]); | ||
if (this.done && this._input) { | ||
this.done = false | ||
this.done = false; | ||
} | ||
if (token) { | ||
return token | ||
return token; | ||
} else if (this._backtrack) { | ||
// recover context | ||
for (var k in backup) { | ||
this[k] = backup[k] | ||
} | ||
return false // rule action called reject() implying the next rule should be tested instead. | ||
for (var k in backup) { | ||
this[k] = backup[k]; | ||
} | ||
return false; // rule action called reject() implying the next rule should be tested instead. | ||
} | ||
return false | ||
}, | ||
return false; | ||
}, | ||
// return next match in input | ||
next: function () { | ||
next:function () { | ||
if (this.done) { | ||
return this.EOF | ||
return this.EOF; | ||
} | ||
if (!this._input) { | ||
this.done = true | ||
this.done = true; | ||
} | ||
var token, | ||
match, | ||
tempMatch, | ||
index | ||
match, | ||
tempMatch, | ||
index; | ||
if (!this._more) { | ||
this.yytext = '' | ||
this.match = '' | ||
this.yytext = ''; | ||
this.match = ''; | ||
} | ||
var rules = this._currentRules() | ||
var rules = this._currentRules(); | ||
for (var i = 0; i < rules.length; i++) { | ||
tempMatch = this._input.match(this.rules[rules[i]]) | ||
if (tempMatch && (!match || tempMatch[0].length > match[0].length)) { | ||
match = tempMatch | ||
index = i | ||
if (this.options.backtrack_lexer) { | ||
token = this.test_match(tempMatch, rules[i]) | ||
if (token !== false) { | ||
return token | ||
} else if (this._backtrack) { | ||
match = false | ||
continue // rule action called reject() implying a rule MISmatch. | ||
} else { | ||
tempMatch = this._input.match(this.rules[rules[i]]); | ||
if (tempMatch && (!match || tempMatch[0].length > match[0].length)) { | ||
match = tempMatch; | ||
index = i; | ||
if (this.options.backtrack_lexer) { | ||
token = this.test_match(tempMatch, rules[i]); | ||
if (token !== false) { | ||
return token; | ||
} else if (this._backtrack) { | ||
match = false; | ||
continue; // rule action called reject() implying a rule MISmatch. | ||
} else { | ||
// else: this is a lexer rule which consumes input without producing a token (e.g. whitespace) | ||
return false | ||
} | ||
} else if (!this.options.flex) { | ||
break | ||
return false; | ||
} | ||
} else if (!this.options.flex) { | ||
break; | ||
} | ||
} | ||
} | ||
} | ||
if (match) { | ||
token = this.test_match(match, rules[index]) | ||
if (token !== false) { | ||
return token | ||
} | ||
token = this.test_match(match, rules[index]); | ||
if (token !== false) { | ||
return token; | ||
} | ||
// else: this is a lexer rule which consumes input without producing a token (e.g. whitespace) | ||
return false | ||
return false; | ||
} | ||
if (this._input === '') { | ||
return this.EOF | ||
if (this._input === "") { | ||
return this.EOF; | ||
} else { | ||
return this.parseError('Lexical error on line ' + (this.yylineno + 1) + '. Unrecognized text.\n' + this.showPosition(), { | ||
text: '', | ||
token: null, | ||
line: this.yylineno | ||
}) | ||
return this.parseError('Lexical error on line ' + (this.yylineno + 1) + '. Unrecognized text.\n' + this.showPosition(), { | ||
text: "", | ||
token: null, | ||
line: this.yylineno | ||
}); | ||
} | ||
}, | ||
}, | ||
// return next match that has a token | ||
lex: function lex () { | ||
var r = this.next() | ||
lex:function lex() { | ||
var r = this.next(); | ||
if (r) { | ||
return r | ||
return r; | ||
} else { | ||
return this.lex() | ||
return this.lex(); | ||
} | ||
}, | ||
}, | ||
// activates a new lexer condition state (pushes the new lexer condition state onto the condition stack) | ||
begin: function begin (condition) { | ||
this.conditionStack.push(condition) | ||
}, | ||
begin:function begin(condition) { | ||
this.conditionStack.push(condition); | ||
}, | ||
// pop the previously active lexer condition state off the condition stack | ||
popState: function popState () { | ||
var n = this.conditionStack.length - 1 | ||
popState:function popState() { | ||
var n = this.conditionStack.length - 1; | ||
if (n > 0) { | ||
return this.conditionStack.pop() | ||
return this.conditionStack.pop(); | ||
} else { | ||
return this.conditionStack[0] | ||
return this.conditionStack[0]; | ||
} | ||
}, | ||
}, | ||
// produce the lexer rule set which is active for the currently active lexer condition state | ||
_currentRules: function _currentRules () { | ||
_currentRules:function _currentRules() { | ||
if (this.conditionStack.length && this.conditionStack[this.conditionStack.length - 1]) { | ||
return this.conditions[this.conditionStack[this.conditionStack.length - 1]].rules | ||
return this.conditions[this.conditionStack[this.conditionStack.length - 1]].rules; | ||
} else { | ||
return this.conditions['INITIAL'].rules | ||
return this.conditions["INITIAL"].rules; | ||
} | ||
}, | ||
}, | ||
// return the currently active lexer condition state; when an index argument is provided it produces the N-th previous condition state, if available | ||
topState: function topState (n) { | ||
n = this.conditionStack.length - 1 - Math.abs(n || 0) | ||
topState:function topState(n) { | ||
n = this.conditionStack.length - 1 - Math.abs(n || 0); | ||
if (n >= 0) { | ||
return this.conditionStack[n] | ||
return this.conditionStack[n]; | ||
} else { | ||
return 'INITIAL' | ||
return "INITIAL"; | ||
} | ||
}, | ||
}, | ||
// alias for begin(condition) | ||
pushState: function pushState (condition) { | ||
this.begin(condition) | ||
}, | ||
pushState:function pushState(condition) { | ||
this.begin(condition); | ||
}, | ||
// return the number of states currently on the stack | ||
stateStackSize: function stateStackSize () { | ||
return this.conditionStack.length | ||
}, | ||
options: {}, | ||
performAction: function anonymous (yy, yy_, $avoiding_name_collisions, YY_START) { | ||
var YYSTATE = YY_START | ||
switch ($avoiding_name_collisions) { | ||
case 0:/* do nothing */ | ||
break | ||
case 1:return 6 | ||
break | ||
case 2:/* skip whitespace */ | ||
break | ||
case 3:return 5 | ||
break | ||
case 4: this.begin('struct'); /* console.log('Starting struct'); */return 17 | ||
break | ||
case 5: /* console.log('Ending struct'); */this.popState(); return 19 | ||
break | ||
case 6:/* nothing */ | ||
break | ||
case 7: return 'MEMBER' | ||
break | ||
case 8:return 16 | ||
break | ||
case 9:this.begin('string') | ||
break | ||
case 10:this.popState() | ||
break | ||
case 11:return 'STR' | ||
break | ||
case 12:return 27 | ||
break | ||
case 13:return 27 | ||
break | ||
case 14:return 29 | ||
break | ||
case 15:return 29 | ||
break | ||
case 16:return 28 | ||
break | ||
case 17:return 26 | ||
break | ||
case 18:return 30 | ||
break | ||
case 19:return 31 | ||
break | ||
case 20:return 13 | ||
break | ||
case 21:return 43 | ||
break | ||
case 22:return 'DOT' | ||
break | ||
case 23:return 'PLUS' | ||
break | ||
case 24:return 40 | ||
break | ||
case 25:return 'EQUALS' | ||
break | ||
case 26:return 'EQUALS' | ||
break | ||
case 27:return 47 | ||
break | ||
case 28:return 'PUNCTUATION' | ||
break | ||
case 29:return 46 | ||
break | ||
case 30:return 45 | ||
break | ||
case 31:return 42 | ||
break | ||
case 32:return 8 | ||
break | ||
} | ||
}, | ||
rules: [/^(?:%%[^\n]*)/, /^(?:\n+)/, /^(?:\s+)/, /^(?:classDiagram\b)/, /^(?:[\{])/, /^(?:\})/, /^(?:[\n])/, /^(?:[^\{\}\n]*)/, /^(?:class\b)/, /^(?:["])/, /^(?:["])/, /^(?:[^"]*)/, /^(?:\s*<\|)/, /^(?:\s*\|>)/, /^(?:\s*>)/, /^(?:\s*<)/, /^(?:\s*\*)/, /^(?:\s*o\b)/, /^(?:--)/, /^(?:\.\.)/, /^(?::[^#\n;]+)/, /^(?:-)/, /^(?:\.)/, /^(?:\+)/, /^(?:%)/, /^(?:=)/, /^(?:=)/, /^(?:[A-Za-z]+)/, /^(?:[!"#$%&'*+,-.`?\\_\/])/, /^(?:[0-9]+)/, /^(?:[\u00AA\u00B5\u00BA\u00C0-\u00D6\u00D8-\u00F6]|[\u00F8-\u02C1\u02C6-\u02D1\u02E0-\u02E4\u02EC\u02EE\u0370-\u0374\u0376\u0377]|[\u037A-\u037D\u0386\u0388-\u038A\u038C\u038E-\u03A1\u03A3-\u03F5]|[\u03F7-\u0481\u048A-\u0527\u0531-\u0556\u0559\u0561-\u0587\u05D0-\u05EA]|[\u05F0-\u05F2\u0620-\u064A\u066E\u066F\u0671-\u06D3\u06D5\u06E5\u06E6\u06EE]|[\u06EF\u06FA-\u06FC\u06FF\u0710\u0712-\u072F\u074D-\u07A5\u07B1\u07CA-\u07EA]|[\u07F4\u07F5\u07FA\u0800-\u0815\u081A\u0824\u0828\u0840-\u0858\u08A0]|[\u08A2-\u08AC\u0904-\u0939\u093D\u0950\u0958-\u0961\u0971-\u0977]|[\u0979-\u097F\u0985-\u098C\u098F\u0990\u0993-\u09A8\u09AA-\u09B0\u09B2]|[\u09B6-\u09B9\u09BD\u09CE\u09DC\u09DD\u09DF-\u09E1\u09F0\u09F1\u0A05-\u0A0A]|[\u0A0F\u0A10\u0A13-\u0A28\u0A2A-\u0A30\u0A32\u0A33\u0A35\u0A36\u0A38\u0A39]|[\u0A59-\u0A5C\u0A5E\u0A72-\u0A74\u0A85-\u0A8D\u0A8F-\u0A91\u0A93-\u0AA8]|[\u0AAA-\u0AB0\u0AB2\u0AB3\u0AB5-\u0AB9\u0ABD\u0AD0\u0AE0\u0AE1\u0B05-\u0B0C]|[\u0B0F\u0B10\u0B13-\u0B28\u0B2A-\u0B30\u0B32\u0B33\u0B35-\u0B39\u0B3D\u0B5C]|[\u0B5D\u0B5F-\u0B61\u0B71\u0B83\u0B85-\u0B8A\u0B8E-\u0B90\u0B92-\u0B95\u0B99]|[\u0B9A\u0B9C\u0B9E\u0B9F\u0BA3\u0BA4\u0BA8-\u0BAA\u0BAE-\u0BB9\u0BD0]|[\u0C05-\u0C0C\u0C0E-\u0C10\u0C12-\u0C28\u0C2A-\u0C33\u0C35-\u0C39\u0C3D]|[\u0C58\u0C59\u0C60\u0C61\u0C85-\u0C8C\u0C8E-\u0C90\u0C92-\u0CA8\u0CAA-\u0CB3]|[\u0CB5-\u0CB9\u0CBD\u0CDE\u0CE0\u0CE1\u0CF1\u0CF2\u0D05-\u0D0C\u0D0E-\u0D10]|[\u0D12-\u0D3A\u0D3D\u0D4E\u0D60\u0D61\u0D7A-\u0D7F\u0D85-\u0D96\u0D9A-\u0DB1]|[\u0DB3-\u0DBB\u0DBD\u0DC0-\u0DC6\u0E01-\u0E30\u0E32\u0E33\u0E40-\u0E46\u0E81]|[\u0E82\u0E84\u0E87\u0E88\u0E8A\u0E8D\u0E94-\u0E97\u0E99-\u0E9F\u0EA1-\u0EA3]|[\u0EA5\u0EA7\u0EAA\u0EAB\u0EAD-\u0EB0\u0EB2\u0EB3\u0EBD\u0EC0-\u0EC4\u0EC6]|[\u0EDC-\u0EDF\u0F00\u0F40-\u0F47\u0F49-\u0F6C\u0F88-\u0F8C\u1000-\u102A]|[\u103F\u1050-\u1055\u105A-\u105D\u1061\u1065\u1066\u106E-\u1070\u1075-\u1081]|[\u108E\u10A0-\u10C5\u10C7\u10CD\u10D0-\u10FA\u10FC-\u1248\u124A-\u124D]|[\u1250-\u1256\u1258\u125A-\u125D\u1260-\u1288\u128A-\u128D\u1290-\u12B0]|[\u12B2-\u12B5\u12B8-\u12BE\u12C0\u12C2-\u12C5\u12C8-\u12D6\u12D8-\u1310]|[\u1312-\u1315\u1318-\u135A\u1380-\u138F\u13A0-\u13F4\u1401-\u166C]|[\u166F-\u167F\u1681-\u169A\u16A0-\u16EA\u1700-\u170C\u170E-\u1711]|[\u1720-\u1731\u1740-\u1751\u1760-\u176C\u176E-\u1770\u1780-\u17B3\u17D7]|[\u17DC\u1820-\u1877\u1880-\u18A8\u18AA\u18B0-\u18F5\u1900-\u191C]|[\u1950-\u196D\u1970-\u1974\u1980-\u19AB\u19C1-\u19C7\u1A00-\u1A16]|[\u1A20-\u1A54\u1AA7\u1B05-\u1B33\u1B45-\u1B4B\u1B83-\u1BA0\u1BAE\u1BAF]|[\u1BBA-\u1BE5\u1C00-\u1C23\u1C4D-\u1C4F\u1C5A-\u1C7D\u1CE9-\u1CEC]|[\u1CEE-\u1CF1\u1CF5\u1CF6\u1D00-\u1DBF\u1E00-\u1F15\u1F18-\u1F1D]|[\u1F20-\u1F45\u1F48-\u1F4D\u1F50-\u1F57\u1F59\u1F5B\u1F5D\u1F5F-\u1F7D]|[\u1F80-\u1FB4\u1FB6-\u1FBC\u1FBE\u1FC2-\u1FC4\u1FC6-\u1FCC\u1FD0-\u1FD3]|[\u1FD6-\u1FDB\u1FE0-\u1FEC\u1FF2-\u1FF4\u1FF6-\u1FFC\u2071\u207F]|[\u2090-\u209C\u2102\u2107\u210A-\u2113\u2115\u2119-\u211D\u2124\u2126\u2128]|[\u212A-\u212D\u212F-\u2139\u213C-\u213F\u2145-\u2149\u214E\u2183\u2184]|[\u2C00-\u2C2E\u2C30-\u2C5E\u2C60-\u2CE4\u2CEB-\u2CEE\u2CF2\u2CF3]|[\u2D00-\u2D25\u2D27\u2D2D\u2D30-\u2D67\u2D6F\u2D80-\u2D96\u2DA0-\u2DA6]|[\u2DA8-\u2DAE\u2DB0-\u2DB6\u2DB8-\u2DBE\u2DC0-\u2DC6\u2DC8-\u2DCE]|[\u2DD0-\u2DD6\u2DD8-\u2DDE\u2E2F\u3005\u3006\u3031-\u3035\u303B\u303C]|[\u3041-\u3096\u309D-\u309F\u30A1-\u30FA\u30FC-\u30FF\u3105-\u312D]|[\u3131-\u318E\u31A0-\u31BA\u31F0-\u31FF\u3400-\u4DB5\u4E00-\u9FCC]|[\uA000-\uA48C\uA4D0-\uA4FD\uA500-\uA60C\uA610-\uA61F\uA62A\uA62B]|[\uA640-\uA66E\uA67F-\uA697\uA6A0-\uA6E5\uA717-\uA71F\uA722-\uA788]|[\uA78B-\uA78E\uA790-\uA793\uA7A0-\uA7AA\uA7F8-\uA801\uA803-\uA805]|[\uA807-\uA80A\uA80C-\uA822\uA840-\uA873\uA882-\uA8B3\uA8F2-\uA8F7\uA8FB]|[\uA90A-\uA925\uA930-\uA946\uA960-\uA97C\uA984-\uA9B2\uA9CF\uAA00-\uAA28]|[\uAA40-\uAA42\uAA44-\uAA4B\uAA60-\uAA76\uAA7A\uAA80-\uAAAF\uAAB1\uAAB5]|[\uAAB6\uAAB9-\uAABD\uAAC0\uAAC2\uAADB-\uAADD\uAAE0-\uAAEA\uAAF2-\uAAF4]|[\uAB01-\uAB06\uAB09-\uAB0E\uAB11-\uAB16\uAB20-\uAB26\uAB28-\uAB2E]|[\uABC0-\uABE2\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\uF900-\uFA6D]|[\uFA70-\uFAD9\uFB00-\uFB06\uFB13-\uFB17\uFB1D\uFB1F-\uFB28\uFB2A-\uFB36]|[\uFB38-\uFB3C\uFB3E\uFB40\uFB41\uFB43\uFB44\uFB46-\uFBB1\uFBD3-\uFD3D]|[\uFD50-\uFD8F\uFD92-\uFDC7\uFDF0-\uFDFB\uFE70-\uFE74\uFE76-\uFEFC]|[\uFF21-\uFF3A\uFF41-\uFF5A\uFF66-\uFFBE\uFFC2-\uFFC7\uFFCA-\uFFCF]|[\uFFD2-\uFFD7\uFFDA-\uFFDC])/, /^(?:\s)/, /^(?:$)/], | ||
conditions: {'string': {'rules': [10, 11], 'inclusive': false}, 'struct': {'rules': [5, 6, 7], 'inclusive': false}, 'INITIAL': {'rules': [0, 1, 2, 3, 4, 8, 9, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32], 'inclusive': true}} | ||
}) | ||
return lexer | ||
})() | ||
parser.lexer = lexer | ||
function Parser () { | ||
this.yy = {} | ||
} | ||
Parser.prototype = parser; parser.Parser = Parser | ||
return new Parser() | ||
})() | ||
stateStackSize:function stateStackSize() { | ||
return this.conditionStack.length; | ||
}, | ||
options: {}, | ||
performAction: function anonymous(yy,yy_,$avoiding_name_collisions,YY_START) { | ||
var YYSTATE=YY_START; | ||
switch($avoiding_name_collisions) { | ||
case 0:/* do nothing */ | ||
break; | ||
case 1:return 6; | ||
break; | ||
case 2:/* skip whitespace */ | ||
break; | ||
case 3:return 5; | ||
break; | ||
case 4: this.begin("struct"); /*console.log('Starting struct');*/return 17; | ||
break; | ||
case 5: /*console.log('Ending struct');*/this.popState(); return 19; | ||
break; | ||
case 6:/* nothing */ | ||
break; | ||
case 7: /*console.log('lex-member: ' + yy_.yytext);*/ return "MEMBER"; | ||
break; | ||
case 8:return 16; | ||
break; | ||
case 9:this.begin("string"); | ||
break; | ||
case 10:this.popState(); | ||
break; | ||
case 11:return "STR"; | ||
break; | ||
case 12:return 27; | ||
break; | ||
case 13:return 27; | ||
break; | ||
case 14:return 29; | ||
break; | ||
case 15:return 29; | ||
break; | ||
case 16:return 28; | ||
break; | ||
case 17:return 26; | ||
break; | ||
case 18:return 30; | ||
break; | ||
case 19:return 31; | ||
break; | ||
case 20:return 13; | ||
break; | ||
case 21:return 43; | ||
break; | ||
case 22:return 'DOT'; | ||
break; | ||
case 23:return 'PLUS'; | ||
break; | ||
case 24:return 40; | ||
break; | ||
case 25:return 'EQUALS'; | ||
break; | ||
case 26:return 'EQUALS'; | ||
break; | ||
case 27:return 47; | ||
break; | ||
case 28:return 'PUNCTUATION'; | ||
break; | ||
case 29:return 46; | ||
break; | ||
case 30:return 45; | ||
break; | ||
case 31:return 42; | ||
break; | ||
case 32:return 8; | ||
break; | ||
} | ||
}, | ||
rules: [/^(?:%%[^\n]*)/,/^(?:\n+)/,/^(?:\s+)/,/^(?:classDiagram\b)/,/^(?:[\{])/,/^(?:\})/,/^(?:[\n])/,/^(?:[^\{\}\n]*)/,/^(?:class\b)/,/^(?:["])/,/^(?:["])/,/^(?:[^"]*)/,/^(?:\s*<\|)/,/^(?:\s*\|>)/,/^(?:\s*>)/,/^(?:\s*<)/,/^(?:\s*\*)/,/^(?:\s*o\b)/,/^(?:--)/,/^(?:\.\.)/,/^(?::[^#\n;]+)/,/^(?:-)/,/^(?:\.)/,/^(?:\+)/,/^(?:%)/,/^(?:=)/,/^(?:=)/,/^(?:[A-Za-z]+)/,/^(?:[!"#$%&'*+,-.`?\\_\/])/,/^(?:[0-9]+)/,/^(?:[\u00AA\u00B5\u00BA\u00C0-\u00D6\u00D8-\u00F6]|[\u00F8-\u02C1\u02C6-\u02D1\u02E0-\u02E4\u02EC\u02EE\u0370-\u0374\u0376\u0377]|[\u037A-\u037D\u0386\u0388-\u038A\u038C\u038E-\u03A1\u03A3-\u03F5]|[\u03F7-\u0481\u048A-\u0527\u0531-\u0556\u0559\u0561-\u0587\u05D0-\u05EA]|[\u05F0-\u05F2\u0620-\u064A\u066E\u066F\u0671-\u06D3\u06D5\u06E5\u06E6\u06EE]|[\u06EF\u06FA-\u06FC\u06FF\u0710\u0712-\u072F\u074D-\u07A5\u07B1\u07CA-\u07EA]|[\u07F4\u07F5\u07FA\u0800-\u0815\u081A\u0824\u0828\u0840-\u0858\u08A0]|[\u08A2-\u08AC\u0904-\u0939\u093D\u0950\u0958-\u0961\u0971-\u0977]|[\u0979-\u097F\u0985-\u098C\u098F\u0990\u0993-\u09A8\u09AA-\u09B0\u09B2]|[\u09B6-\u09B9\u09BD\u09CE\u09DC\u09DD\u09DF-\u09E1\u09F0\u09F1\u0A05-\u0A0A]|[\u0A0F\u0A10\u0A13-\u0A28\u0A2A-\u0A30\u0A32\u0A33\u0A35\u0A36\u0A38\u0A39]|[\u0A59-\u0A5C\u0A5E\u0A72-\u0A74\u0A85-\u0A8D\u0A8F-\u0A91\u0A93-\u0AA8]|[\u0AAA-\u0AB0\u0AB2\u0AB3\u0AB5-\u0AB9\u0ABD\u0AD0\u0AE0\u0AE1\u0B05-\u0B0C]|[\u0B0F\u0B10\u0B13-\u0B28\u0B2A-\u0B30\u0B32\u0B33\u0B35-\u0B39\u0B3D\u0B5C]|[\u0B5D\u0B5F-\u0B61\u0B71\u0B83\u0B85-\u0B8A\u0B8E-\u0B90\u0B92-\u0B95\u0B99]|[\u0B9A\u0B9C\u0B9E\u0B9F\u0BA3\u0BA4\u0BA8-\u0BAA\u0BAE-\u0BB9\u0BD0]|[\u0C05-\u0C0C\u0C0E-\u0C10\u0C12-\u0C28\u0C2A-\u0C33\u0C35-\u0C39\u0C3D]|[\u0C58\u0C59\u0C60\u0C61\u0C85-\u0C8C\u0C8E-\u0C90\u0C92-\u0CA8\u0CAA-\u0CB3]|[\u0CB5-\u0CB9\u0CBD\u0CDE\u0CE0\u0CE1\u0CF1\u0CF2\u0D05-\u0D0C\u0D0E-\u0D10]|[\u0D12-\u0D3A\u0D3D\u0D4E\u0D60\u0D61\u0D7A-\u0D7F\u0D85-\u0D96\u0D9A-\u0DB1]|[\u0DB3-\u0DBB\u0DBD\u0DC0-\u0DC6\u0E01-\u0E30\u0E32\u0E33\u0E40-\u0E46\u0E81]|[\u0E82\u0E84\u0E87\u0E88\u0E8A\u0E8D\u0E94-\u0E97\u0E99-\u0E9F\u0EA1-\u0EA3]|[\u0EA5\u0EA7\u0EAA\u0EAB\u0EAD-\u0EB0\u0EB2\u0EB3\u0EBD\u0EC0-\u0EC4\u0EC6]|[\u0EDC-\u0EDF\u0F00\u0F40-\u0F47\u0F49-\u0F6C\u0F88-\u0F8C\u1000-\u102A]|[\u103F\u1050-\u1055\u105A-\u105D\u1061\u1065\u1066\u106E-\u1070\u1075-\u1081]|[\u108E\u10A0-\u10C5\u10C7\u10CD\u10D0-\u10FA\u10FC-\u1248\u124A-\u124D]|[\u1250-\u1256\u1258\u125A-\u125D\u1260-\u1288\u128A-\u128D\u1290-\u12B0]|[\u12B2-\u12B5\u12B8-\u12BE\u12C0\u12C2-\u12C5\u12C8-\u12D6\u12D8-\u1310]|[\u1312-\u1315\u1318-\u135A\u1380-\u138F\u13A0-\u13F4\u1401-\u166C]|[\u166F-\u167F\u1681-\u169A\u16A0-\u16EA\u1700-\u170C\u170E-\u1711]|[\u1720-\u1731\u1740-\u1751\u1760-\u176C\u176E-\u1770\u1780-\u17B3\u17D7]|[\u17DC\u1820-\u1877\u1880-\u18A8\u18AA\u18B0-\u18F5\u1900-\u191C]|[\u1950-\u196D\u1970-\u1974\u1980-\u19AB\u19C1-\u19C7\u1A00-\u1A16]|[\u1A20-\u1A54\u1AA7\u1B05-\u1B33\u1B45-\u1B4B\u1B83-\u1BA0\u1BAE\u1BAF]|[\u1BBA-\u1BE5\u1C00-\u1C23\u1C4D-\u1C4F\u1C5A-\u1C7D\u1CE9-\u1CEC]|[\u1CEE-\u1CF1\u1CF5\u1CF6\u1D00-\u1DBF\u1E00-\u1F15\u1F18-\u1F1D]|[\u1F20-\u1F45\u1F48-\u1F4D\u1F50-\u1F57\u1F59\u1F5B\u1F5D\u1F5F-\u1F7D]|[\u1F80-\u1FB4\u1FB6-\u1FBC\u1FBE\u1FC2-\u1FC4\u1FC6-\u1FCC\u1FD0-\u1FD3]|[\u1FD6-\u1FDB\u1FE0-\u1FEC\u1FF2-\u1FF4\u1FF6-\u1FFC\u2071\u207F]|[\u2090-\u209C\u2102\u2107\u210A-\u2113\u2115\u2119-\u211D\u2124\u2126\u2128]|[\u212A-\u212D\u212F-\u2139\u213C-\u213F\u2145-\u2149\u214E\u2183\u2184]|[\u2C00-\u2C2E\u2C30-\u2C5E\u2C60-\u2CE4\u2CEB-\u2CEE\u2CF2\u2CF3]|[\u2D00-\u2D25\u2D27\u2D2D\u2D30-\u2D67\u2D6F\u2D80-\u2D96\u2DA0-\u2DA6]|[\u2DA8-\u2DAE\u2DB0-\u2DB6\u2DB8-\u2DBE\u2DC0-\u2DC6\u2DC8-\u2DCE]|[\u2DD0-\u2DD6\u2DD8-\u2DDE\u2E2F\u3005\u3006\u3031-\u3035\u303B\u303C]|[\u3041-\u3096\u309D-\u309F\u30A1-\u30FA\u30FC-\u30FF\u3105-\u312D]|[\u3131-\u318E\u31A0-\u31BA\u31F0-\u31FF\u3400-\u4DB5\u4E00-\u9FCC]|[\uA000-\uA48C\uA4D0-\uA4FD\uA500-\uA60C\uA610-\uA61F\uA62A\uA62B]|[\uA640-\uA66E\uA67F-\uA697\uA6A0-\uA6E5\uA717-\uA71F\uA722-\uA788]|[\uA78B-\uA78E\uA790-\uA793\uA7A0-\uA7AA\uA7F8-\uA801\uA803-\uA805]|[\uA807-\uA80A\uA80C-\uA822\uA840-\uA873\uA882-\uA8B3\uA8F2-\uA8F7\uA8FB]|[\uA90A-\uA925\uA930-\uA946\uA960-\uA97C\uA984-\uA9B2\uA9CF\uAA00-\uAA28]|[\uAA40-\uAA42\uAA44-\uAA4B\uAA60-\uAA76\uAA7A\uAA80-\uAAAF\uAAB1\uAAB5]|[\uAAB6\uAAB9-\uAABD\uAAC0\uAAC2\uAADB-\uAADD\uAAE0-\uAAEA\uAAF2-\uAAF4]|[\uAB01-\uAB06\uAB09-\uAB0E\uAB11-\uAB16\uAB20-\uAB26\uAB28-\uAB2E]|[\uABC0-\uABE2\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\uF900-\uFA6D]|[\uFA70-\uFAD9\uFB00-\uFB06\uFB13-\uFB17\uFB1D\uFB1F-\uFB28\uFB2A-\uFB36]|[\uFB38-\uFB3C\uFB3E\uFB40\uFB41\uFB43\uFB44\uFB46-\uFBB1\uFBD3-\uFD3D]|[\uFD50-\uFD8F\uFD92-\uFDC7\uFDF0-\uFDFB\uFE70-\uFE74\uFE76-\uFEFC]|[\uFF21-\uFF3A\uFF41-\uFF5A\uFF66-\uFFBE\uFFC2-\uFFC7\uFFCA-\uFFCF]|[\uFFD2-\uFFD7\uFFDA-\uFFDC])/,/^(?:\s)/,/^(?:$)/], | ||
conditions: {"string":{"rules":[10,11],"inclusive":false},"struct":{"rules":[5,6,7],"inclusive":false},"INITIAL":{"rules":[0,1,2,3,4,8,9,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32],"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) } | ||
exports.main = function commonjsMain (args) { | ||
exports.parser = parser; | ||
exports.Parser = parser.Parser; | ||
exports.parse = function () { return parser.parse.apply(parser, arguments); }; | ||
exports.main = function commonjsMain(args) { | ||
if (!args[1]) { | ||
console.log('Usage: ' + args[0] + ' FILE') | ||
process.exit(1) | ||
console.log('Usage: '+args[0]+' FILE'); | ||
process.exit(1); | ||
} | ||
var source = require('fs').readFileSync(require('path').normalize(args[1]), 'utf8') | ||
return exports.parser.parse(source) | ||
} | ||
if (typeof module !== 'undefined' && require.main === module) { | ||
exports.main(process.argv.slice(1)) | ||
} | ||
var source = require('fs').readFileSync(require('path').normalize(args[1]), "utf8"); | ||
return exports.parser.parse(source); | ||
}; | ||
if (typeof module !== 'undefined' && require.main === module) { | ||
exports.main(process.argv.slice(1)); | ||
} | ||
} |
@@ -53,2 +53,3 @@ /* parser generated by jison 0.4.17 */ | ||
token location info (@$, _$, etc.): { | ||
@@ -62,2 +63,3 @@ first_line: n, | ||
the parseError function receives a 'hash' object with these members for lexer and parser errors: { | ||
@@ -74,555 +76,562 @@ text: (matched text) | ||
*/ | ||
var parser = (function () { | ||
var o = function (k, v, o, l) { for (o = o || {}, l = k.length; l--; o[k[l]] = v);return o }, $V0 = [6, 9, 10, 12] | ||
var parser = {trace: function trace () { }, | ||
yy: {}, | ||
symbols_: {'error': 2, 'start': 3, 'info': 4, 'document': 5, 'EOF': 6, 'line': 7, 'statement': 8, 'NL': 9, 'showInfo': 10, 'message': 11, 'say': 12, 'TXT': 13, '$accept': 0, '$end': 1}, | ||
terminals_: {2: 'error', 4: 'info', 6: 'EOF', 9: 'NL', 10: 'showInfo', 12: 'say', 13: 'TXT'}, | ||
productions_: [0, [3, 3], [5, 0], [5, 2], [7, 1], [7, 1], [8, 1], [8, 1], [11, 2]], | ||
performAction: function anonymous (yytext, yyleng, yylineno, yy, yystate /* action[1] */, $$ /* vstack */, _$ /* lstack */) { | ||
var parser = (function(){ | ||
var o=function(k,v,o,l){for(o=o||{},l=k.length;l--;o[k[l]]=v);return o},$V0=[6,9,10,12]; | ||
var parser = {trace: function trace() { }, | ||
yy: {}, | ||
symbols_: {"error":2,"start":3,"info":4,"document":5,"EOF":6,"line":7,"statement":8,"NL":9,"showInfo":10,"message":11,"say":12,"TXT":13,"$accept":0,"$end":1}, | ||
terminals_: {2:"error",4:"info",6:"EOF",9:"NL",10:"showInfo",12:"say",13:"TXT"}, | ||
productions_: [0,[3,3],[5,0],[5,2],[7,1],[7,1],[8,1],[8,1],[11,2]], | ||
performAction: function anonymous(yytext, yyleng, yylineno, yy, yystate /* action[1] */, $$ /* vstack */, _$ /* lstack */) { | ||
/* this == yyval */ | ||
var $0 = $$.length - 1 | ||
switch (yystate) { | ||
case 1: | ||
return yy | ||
break | ||
case 4: | ||
break | ||
case 6: | ||
yy.setInfo(true) | ||
break | ||
case 7: | ||
yy.setMessage($$[$0]) | ||
break | ||
case 8: | ||
this.$ = $$[$0 - 1].substring(1).trim().replace(/\\n/gm, '\n') | ||
break | ||
} | ||
}, | ||
table: [{3: 1, 4: [1, 2]}, {1: [3]}, o($V0, [2, 2], {5: 3}), {6: [1, 4], 7: 5, 8: 6, 9: [1, 7], 10: [1, 8], 11: 9, 12: [1, 10]}, {1: [2, 1]}, o($V0, [2, 3]), o($V0, [2, 4]), o($V0, [2, 5]), o($V0, [2, 6]), o($V0, [2, 7]), {13: [1, 11]}, o($V0, [2, 8])], | ||
defaultActions: {4: [2, 1]}, | ||
parseError: function parseError (str, hash) { | ||
if (hash.recoverable) { | ||
this.trace(str) | ||
} else { | ||
var $0 = $$.length - 1; | ||
switch (yystate) { | ||
case 1: | ||
return yy; | ||
break; | ||
case 4: | ||
break; | ||
case 6: | ||
yy.setInfo(true); | ||
break; | ||
case 7: | ||
yy.setMessage($$[$0]); | ||
break; | ||
case 8: | ||
this.$ = $$[$0-1].substring(1).trim().replace(/\\n/gm, "\n"); | ||
break; | ||
} | ||
}, | ||
table: [{3:1,4:[1,2]},{1:[3]},o($V0,[2,2],{5:3}),{6:[1,4],7:5,8:6,9:[1,7],10:[1,8],11:9,12:[1,10]},{1:[2,1]},o($V0,[2,3]),o($V0,[2,4]),o($V0,[2,5]),o($V0,[2,6]),o($V0,[2,7]),{13:[1,11]},o($V0,[2,8])], | ||
defaultActions: {4:[2,1]}, | ||
parseError: function parseError(str, hash) { | ||
if (hash.recoverable) { | ||
this.trace(str); | ||
} else { | ||
function _parseError (msg, hash) { | ||
this.message = msg | ||
this.hash = hash | ||
this.message = msg; | ||
this.hash = hash; | ||
} | ||
_parseError.prototype = Error | ||
_parseError.prototype = Error; | ||
throw new _parseError(str, hash) | ||
} | ||
}, | ||
parse: function parse (input) { | ||
var self = this, stack = [0], tstack = [], vstack = [null], lstack = [], table = this.table, yytext = '', yylineno = 0, yyleng = 0, recovering = 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) { | ||
throw new _parseError(str, hash); | ||
} | ||
}, | ||
parse: function parse(input) { | ||
var self = this, stack = [0], tstack = [], vstack = [null], lstack = [], table = this.table, yytext = '', yylineno = 0, yyleng = 0, recovering = 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] | ||
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 | ||
} | ||
function popStack (n) { | ||
stack.length = stack.length - 2 * n | ||
vstack.length = vstack.length - n | ||
lstack.length = lstack.length - n | ||
} | ||
var lex = function () { | ||
var token | ||
token = lexer.lex() || EOF | ||
if (typeof token !== 'number') { | ||
token = self.symbols_[token] || token | ||
} | ||
return token | ||
} | ||
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; | ||
} | ||
function popStack(n) { | ||
stack.length = stack.length - 2 * n; | ||
vstack.length = vstack.length - n; | ||
lstack.length = lstack.length - n; | ||
} | ||
function lex() { | ||
var token; | ||
token = tstack.pop() || lexer.lex() || EOF; | ||
if (typeof token !== 'number') { | ||
if (token instanceof Array) { | ||
tstack = token; | ||
token = tstack.pop(); | ||
} | ||
token = self.symbols_[token] || token; | ||
} | ||
return token; | ||
} | ||
var symbol, preErrorSymbol, state, action, a, r, yyval = {}, p, len, newState, expected | ||
while (true) { | ||
state = stack[stack.length - 1] | ||
var symbol, preErrorSymbol, state, action, a, r, yyval = {}, p, len, newState, expected; | ||
while (true) { | ||
state = stack[stack.length - 1]; | ||
if (this.defaultActions[state]) { | ||
action = this.defaultActions[state] | ||
action = this.defaultActions[state]; | ||
} else { | ||
if (symbol === null || typeof symbol === 'undefined') { | ||
symbol = lex() | ||
} | ||
action = table[state] && table[state][symbol] | ||
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] + '\'') | ||
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 (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) { | ||
throw new Error('Parse Error: multiple actions possible at state: ' + state + ', token: ' + symbol) | ||
throw new Error('Parse Error: multiple actions possible at state: ' + state + ', token: ' + symbol); | ||
} | ||
switch (action[0]) { | ||
case 1: | ||
stack.push(symbol) | ||
vstack.push(lexer.yytext) | ||
lstack.push(lexer.yylloc) | ||
stack.push(action[1]) | ||
symbol = null | ||
case 1: | ||
stack.push(symbol); | ||
vstack.push(lexer.yytext); | ||
lstack.push(lexer.yylloc); | ||
stack.push(action[1]); | ||
symbol = null; | ||
if (!preErrorSymbol) { | ||
yyleng = lexer.yyleng | ||
yytext = lexer.yytext | ||
yylineno = lexer.yylineno | ||
yyloc = lexer.yylloc | ||
if (recovering > 0) { | ||
recovering-- | ||
} | ||
yyleng = lexer.yyleng; | ||
yytext = lexer.yytext; | ||
yylineno = lexer.yylineno; | ||
yyloc = lexer.yylloc; | ||
if (recovering > 0) { | ||
recovering--; | ||
} | ||
} else { | ||
symbol = preErrorSymbol | ||
preErrorSymbol = null | ||
symbol = preErrorSymbol; | ||
preErrorSymbol = null; | ||
} | ||
break | ||
case 2: | ||
len = this.productions_[action[1]][1] | ||
yyval.$ = vstack[vstack.length - len] | ||
break; | ||
case 2: | ||
len = this.productions_[action[1]][1]; | ||
yyval.$ = vstack[vstack.length - len]; | ||
yyval._$ = { | ||
first_line: lstack[lstack.length - (len || 1)].first_line, | ||
last_line: lstack[lstack.length - 1].last_line, | ||
first_column: lstack[lstack.length - (len || 1)].first_column, | ||
last_column: lstack[lstack.length - 1].last_column | ||
} | ||
first_line: lstack[lstack.length - (len || 1)].first_line, | ||
last_line: lstack[lstack.length - 1].last_line, | ||
first_column: lstack[lstack.length - (len || 1)].first_column, | ||
last_column: lstack[lstack.length - 1].last_column | ||
}; | ||
if (ranges) { | ||
yyval._$.range = [ | ||
lstack[lstack.length - (len || 1)].range[0], | ||
lstack[lstack.length - 1].range[1] | ||
] | ||
yyval._$.range = [ | ||
lstack[lstack.length - (len || 1)].range[0], | ||
lstack[lstack.length - 1].range[1] | ||
]; | ||
} | ||
r = this.performAction.apply(yyval, [ | ||
yytext, | ||
yyleng, | ||
yylineno, | ||
sharedState.yy, | ||
action[1], | ||
vstack, | ||
lstack | ||
].concat(args)) | ||
yytext, | ||
yyleng, | ||
yylineno, | ||
sharedState.yy, | ||
action[1], | ||
vstack, | ||
lstack | ||
].concat(args)); | ||
if (typeof r !== 'undefined') { | ||
return r | ||
return r; | ||
} | ||
if (len) { | ||
stack = stack.slice(0, -1 * len * 2) | ||
vstack = vstack.slice(0, -1 * len) | ||
lstack = lstack.slice(0, -1 * len) | ||
stack = stack.slice(0, -1 * len * 2); | ||
vstack = vstack.slice(0, -1 * len); | ||
lstack = lstack.slice(0, -1 * len); | ||
} | ||
stack.push(this.productions_[action[1]][0]) | ||
vstack.push(yyval.$) | ||
lstack.push(yyval._$) | ||
newState = table[stack[stack.length - 2]][stack[stack.length - 1]] | ||
stack.push(newState) | ||
break | ||
case 3: | ||
return true | ||
stack.push(this.productions_[action[1]][0]); | ||
vstack.push(yyval.$); | ||
lstack.push(yyval._$); | ||
newState = table[stack[stack.length - 2]][stack[stack.length - 1]]; | ||
stack.push(newState); | ||
break; | ||
case 3: | ||
return true; | ||
} | ||
} | ||
return true | ||
}} | ||
} | ||
return true; | ||
}}; | ||
/* generated by jison-lex 0.3.4 */ | ||
var lexer = (function () { | ||
var lexer = ({ | ||
var lexer = (function(){ | ||
var lexer = ({ | ||
EOF: 1, | ||
EOF:1, | ||
parseError: function parseError (str, hash) { | ||
parseError:function parseError(str, hash) { | ||
if (this.yy.parser) { | ||
this.yy.parser.parseError(str, hash) | ||
this.yy.parser.parseError(str, hash); | ||
} else { | ||
throw new Error(str) | ||
throw new Error(str); | ||
} | ||
}, | ||
}, | ||
// resets the lexer, sets new input | ||
setInput: function (input, yy) { | ||
this.yy = yy || this.yy || {} | ||
this._input = input | ||
this._more = this._backtrack = this.done = false | ||
this.yylineno = this.yyleng = 0 | ||
this.yytext = this.matched = this.match = '' | ||
this.conditionStack = ['INITIAL'] | ||
setInput:function (input, yy) { | ||
this.yy = yy || this.yy || {}; | ||
this._input = input; | ||
this._more = this._backtrack = this.done = false; | ||
this.yylineno = this.yyleng = 0; | ||
this.yytext = this.matched = this.match = ''; | ||
this.conditionStack = ['INITIAL']; | ||
this.yylloc = { | ||
first_line: 1, | ||
first_column: 0, | ||
last_line: 1, | ||
last_column: 0 | ||
} | ||
first_line: 1, | ||
first_column: 0, | ||
last_line: 1, | ||
last_column: 0 | ||
}; | ||
if (this.options.ranges) { | ||
this.yylloc.range = [0, 0] | ||
this.yylloc.range = [0,0]; | ||
} | ||
this.offset = 0 | ||
return this | ||
}, | ||
this.offset = 0; | ||
return this; | ||
}, | ||
// consumes and returns one char from the input | ||
input: function () { | ||
var ch = this._input[0] | ||
this.yytext += ch | ||
this.yyleng++ | ||
this.offset++ | ||
this.match += ch | ||
this.matched += ch | ||
var lines = ch.match(/(?:\r\n?|\n).*/g) | ||
input:function () { | ||
var ch = this._input[0]; | ||
this.yytext += ch; | ||
this.yyleng++; | ||
this.offset++; | ||
this.match += ch; | ||
this.matched += ch; | ||
var lines = ch.match(/(?:\r\n?|\n).*/g); | ||
if (lines) { | ||
this.yylineno++ | ||
this.yylloc.last_line++ | ||
this.yylineno++; | ||
this.yylloc.last_line++; | ||
} else { | ||
this.yylloc.last_column++ | ||
this.yylloc.last_column++; | ||
} | ||
if (this.options.ranges) { | ||
this.yylloc.range[1]++ | ||
this.yylloc.range[1]++; | ||
} | ||
this._input = this._input.slice(1) | ||
return ch | ||
}, | ||
this._input = this._input.slice(1); | ||
return ch; | ||
}, | ||
// unshifts one char (or a string) into the input | ||
unput: function (ch) { | ||
var len = ch.length | ||
var lines = ch.split(/(?:\r\n?|\n)/g) | ||
unput:function (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 -= len; | ||
this.offset -= len | ||
var oldLines = this.match.split(/(?:\r\n?|\n)/g) | ||
this.match = this.match.substr(0, this.match.length - 1) | ||
this.matched = this.matched.substr(0, this.matched.length - 1) | ||
this._input = ch + this._input; | ||
this.yytext = this.yytext.substr(0, this.yytext.length - len); | ||
//this.yyleng -= len; | ||
this.offset -= len; | ||
var oldLines = this.match.split(/(?:\r\n?|\n)/g); | ||
this.match = this.match.substr(0, this.match.length - 1); | ||
this.matched = this.matched.substr(0, this.matched.length - 1); | ||
if (lines.length - 1) { | ||
this.yylineno -= lines.length - 1 | ||
this.yylineno -= lines.length - 1; | ||
} | ||
var r = this.yylloc.range | ||
var r = this.yylloc.range; | ||
this.yylloc = { | ||
first_line: this.yylloc.first_line, | ||
last_line: this.yylineno + 1, | ||
first_column: this.yylloc.first_column, | ||
last_column: lines | ||
? (lines.length === oldLines.length ? this.yylloc.first_column : 0) + | ||
oldLines[oldLines.length - lines.length].length - lines[0].length | ||
: this.yylloc.first_column - len | ||
} | ||
first_line: this.yylloc.first_line, | ||
last_line: this.yylineno + 1, | ||
first_column: this.yylloc.first_column, | ||
last_column: lines ? | ||
(lines.length === oldLines.length ? this.yylloc.first_column : 0) | ||
+ oldLines[oldLines.length - lines.length].length - lines[0].length : | ||
this.yylloc.first_column - len | ||
}; | ||
if (this.options.ranges) { | ||
this.yylloc.range = [r[0], r[0] + this.yyleng - len] | ||
this.yylloc.range = [r[0], r[0] + this.yyleng - len]; | ||
} | ||
this.yyleng = this.yytext.length | ||
return this | ||
}, | ||
this.yyleng = this.yytext.length; | ||
return this; | ||
}, | ||
// When called from action, caches matched text and appends it on next action | ||
more: function () { | ||
this._more = true | ||
return this | ||
}, | ||
more:function () { | ||
this._more = true; | ||
return this; | ||
}, | ||
// When called from action, signals the lexer that this rule fails to match the input, so the next matching rule (regex) should be tested instead. | ||
reject: function () { | ||
reject:function () { | ||
if (this.options.backtrack_lexer) { | ||
this._backtrack = true | ||
this._backtrack = true; | ||
} else { | ||
return this.parseError('Lexical error on line ' + (this.yylineno + 1) + '. You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true).\n' + this.showPosition(), { | ||
text: '', | ||
token: null, | ||
line: this.yylineno | ||
}) | ||
return this.parseError('Lexical error on line ' + (this.yylineno + 1) + '. You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true).\n' + this.showPosition(), { | ||
text: "", | ||
token: null, | ||
line: this.yylineno | ||
}); | ||
} | ||
return this | ||
}, | ||
return this; | ||
}, | ||
// retain first n characters of the match | ||
less: function (n) { | ||
this.unput(this.match.slice(n)) | ||
}, | ||
less:function (n) { | ||
this.unput(this.match.slice(n)); | ||
}, | ||
// displays already matched input, i.e. for error messages | ||
pastInput: function () { | ||
var past = this.matched.substr(0, this.matched.length - this.match.length) | ||
return (past.length > 20 ? '...' : '') + past.substr(-20).replace(/\n/g, '') | ||
}, | ||
pastInput:function () { | ||
var past = this.matched.substr(0, this.matched.length - this.match.length); | ||
return (past.length > 20 ? '...':'') + past.substr(-20).replace(/\n/g, ""); | ||
}, | ||
// displays upcoming input, i.e. for error messages | ||
upcomingInput: function () { | ||
var next = this.match | ||
upcomingInput:function () { | ||
var next = this.match; | ||
if (next.length < 20) { | ||
next += this._input.substr(0, 20 - next.length) | ||
next += this._input.substr(0, 20-next.length); | ||
} | ||
return (next.substr(0, 20) + (next.length > 20 ? '...' : '')).replace(/\n/g, '') | ||
}, | ||
return (next.substr(0,20) + (next.length > 20 ? '...' : '')).replace(/\n/g, ""); | ||
}, | ||
// displays the character position where the lexing error occurred, i.e. for error messages | ||
showPosition: function () { | ||
var pre = this.pastInput() | ||
var c = new Array(pre.length + 1).join('-') | ||
return pre + this.upcomingInput() + '\n' + c + '^' | ||
}, | ||
showPosition:function () { | ||
var pre = this.pastInput(); | ||
var c = new Array(pre.length + 1).join("-"); | ||
return pre + this.upcomingInput() + "\n" + c + "^"; | ||
}, | ||
// test the lexed token: return FALSE when not a match, otherwise return token | ||
test_match: function (match, indexed_rule) { | ||
test_match:function (match, indexed_rule) { | ||
var token, | ||
lines, | ||
backup | ||
lines, | ||
backup; | ||
if (this.options.backtrack_lexer) { | ||
// save context | ||
backup = { | ||
yylineno: this.yylineno, | ||
yylloc: { | ||
first_line: this.yylloc.first_line, | ||
last_line: this.last_line, | ||
first_column: this.yylloc.first_column, | ||
last_column: this.yylloc.last_column | ||
}, | ||
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 | ||
} | ||
if (this.options.ranges) { | ||
backup.yylloc.range = this.yylloc.range.slice(0) | ||
} | ||
backup = { | ||
yylineno: this.yylineno, | ||
yylloc: { | ||
first_line: this.yylloc.first_line, | ||
last_line: this.last_line, | ||
first_column: this.yylloc.first_column, | ||
last_column: this.yylloc.last_column | ||
}, | ||
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 | ||
}; | ||
if (this.options.ranges) { | ||
backup.yylloc.range = this.yylloc.range.slice(0); | ||
} | ||
} | ||
lines = match[0].match(/(?:\r\n?|\n).*/g) | ||
lines = match[0].match(/(?:\r\n?|\n).*/g); | ||
if (lines) { | ||
this.yylineno += lines.length | ||
this.yylineno += lines.length; | ||
} | ||
this.yylloc = { | ||
first_line: this.yylloc.last_line, | ||
last_line: this.yylineno + 1, | ||
first_column: this.yylloc.last_column, | ||
last_column: lines | ||
? lines[lines.length - 1].length - lines[lines.length - 1].match(/\r?\n?/)[0].length | ||
: this.yylloc.last_column + match[0].length | ||
} | ||
this.yytext += match[0] | ||
this.match += match[0] | ||
this.matches = match | ||
this.yyleng = this.yytext.length | ||
first_line: this.yylloc.last_line, | ||
last_line: this.yylineno + 1, | ||
first_column: this.yylloc.last_column, | ||
last_column: lines ? | ||
lines[lines.length - 1].length - lines[lines.length - 1].match(/\r?\n?/)[0].length : | ||
this.yylloc.last_column + match[0].length | ||
}; | ||
this.yytext += match[0]; | ||
this.match += match[0]; | ||
this.matches = match; | ||
this.yyleng = this.yytext.length; | ||
if (this.options.ranges) { | ||
this.yylloc.range = [this.offset, this.offset += this.yyleng] | ||
this.yylloc.range = [this.offset, this.offset += this.yyleng]; | ||
} | ||
this._more = false | ||
this._backtrack = false | ||
this._input = this._input.slice(match[0].length) | ||
this.matched += match[0] | ||
token = this.performAction.call(this, this.yy, this, indexed_rule, this.conditionStack[this.conditionStack.length - 1]) | ||
this._more = false; | ||
this._backtrack = false; | ||
this._input = this._input.slice(match[0].length); | ||
this.matched += match[0]; | ||
token = this.performAction.call(this, this.yy, this, indexed_rule, this.conditionStack[this.conditionStack.length - 1]); | ||
if (this.done && this._input) { | ||
this.done = false | ||
this.done = false; | ||
} | ||
if (token) { | ||
return token | ||
return token; | ||
} else if (this._backtrack) { | ||
// recover context | ||
for (var k in backup) { | ||
this[k] = backup[k] | ||
} | ||
return false // rule action called reject() implying the next rule should be tested instead. | ||
for (var k in backup) { | ||
this[k] = backup[k]; | ||
} | ||
return false; // rule action called reject() implying the next rule should be tested instead. | ||
} | ||
return false | ||
}, | ||
return false; | ||
}, | ||
// return next match in input | ||
next: function () { | ||
next:function () { | ||
if (this.done) { | ||
return this.EOF | ||
return this.EOF; | ||
} | ||
if (!this._input) { | ||
this.done = true | ||
this.done = true; | ||
} | ||
var token, | ||
match, | ||
tempMatch, | ||
index | ||
match, | ||
tempMatch, | ||
index; | ||
if (!this._more) { | ||
this.yytext = '' | ||
this.match = '' | ||
this.yytext = ''; | ||
this.match = ''; | ||
} | ||
var rules = this._currentRules() | ||
var rules = this._currentRules(); | ||
for (var i = 0; i < rules.length; i++) { | ||
tempMatch = this._input.match(this.rules[rules[i]]) | ||
if (tempMatch && (!match || tempMatch[0].length > match[0].length)) { | ||
match = tempMatch | ||
index = i | ||
if (this.options.backtrack_lexer) { | ||
token = this.test_match(tempMatch, rules[i]) | ||
if (token !== false) { | ||
return token | ||
} else if (this._backtrack) { | ||
match = false | ||
continue // rule action called reject() implying a rule MISmatch. | ||
} else { | ||
tempMatch = this._input.match(this.rules[rules[i]]); | ||
if (tempMatch && (!match || tempMatch[0].length > match[0].length)) { | ||
match = tempMatch; | ||
index = i; | ||
if (this.options.backtrack_lexer) { | ||
token = this.test_match(tempMatch, rules[i]); | ||
if (token !== false) { | ||
return token; | ||
} else if (this._backtrack) { | ||
match = false; | ||
continue; // rule action called reject() implying a rule MISmatch. | ||
} else { | ||
// else: this is a lexer rule which consumes input without producing a token (e.g. whitespace) | ||
return false | ||
} | ||
} else if (!this.options.flex) { | ||
break | ||
return false; | ||
} | ||
} else if (!this.options.flex) { | ||
break; | ||
} | ||
} | ||
} | ||
} | ||
if (match) { | ||
token = this.test_match(match, rules[index]) | ||
if (token !== false) { | ||
return token | ||
} | ||
token = this.test_match(match, rules[index]); | ||
if (token !== false) { | ||
return token; | ||
} | ||
// else: this is a lexer rule which consumes input without producing a token (e.g. whitespace) | ||
return false | ||
return false; | ||
} | ||
if (this._input === '') { | ||
return this.EOF | ||
if (this._input === "") { | ||
return this.EOF; | ||
} else { | ||
return this.parseError('Lexical error on line ' + (this.yylineno + 1) + '. Unrecognized text.\n' + this.showPosition(), { | ||
text: '', | ||
token: null, | ||
line: this.yylineno | ||
}) | ||
return this.parseError('Lexical error on line ' + (this.yylineno + 1) + '. Unrecognized text.\n' + this.showPosition(), { | ||
text: "", | ||
token: null, | ||
line: this.yylineno | ||
}); | ||
} | ||
}, | ||
}, | ||
// return next match that has a token | ||
lex: function lex () { | ||
var r = this.next() | ||
lex:function lex() { | ||
var r = this.next(); | ||
if (r) { | ||
return r | ||
return r; | ||
} else { | ||
return this.lex() | ||
return this.lex(); | ||
} | ||
}, | ||
}, | ||
// activates a new lexer condition state (pushes the new lexer condition state onto the condition stack) | ||
begin: function begin (condition) { | ||
this.conditionStack.push(condition) | ||
}, | ||
begin:function begin(condition) { | ||
this.conditionStack.push(condition); | ||
}, | ||
// pop the previously active lexer condition state off the condition stack | ||
popState: function popState () { | ||
var n = this.conditionStack.length - 1 | ||
popState:function popState() { | ||
var n = this.conditionStack.length - 1; | ||
if (n > 0) { | ||
return this.conditionStack.pop() | ||
return this.conditionStack.pop(); | ||
} else { | ||
return this.conditionStack[0] | ||
return this.conditionStack[0]; | ||
} | ||
}, | ||
}, | ||
// produce the lexer rule set which is active for the currently active lexer condition state | ||
_currentRules: function _currentRules () { | ||
_currentRules:function _currentRules() { | ||
if (this.conditionStack.length && this.conditionStack[this.conditionStack.length - 1]) { | ||
return this.conditions[this.conditionStack[this.conditionStack.length - 1]].rules | ||
return this.conditions[this.conditionStack[this.conditionStack.length - 1]].rules; | ||
} else { | ||
return this.conditions['INITIAL'].rules | ||
return this.conditions["INITIAL"].rules; | ||
} | ||
}, | ||
}, | ||
// return the currently active lexer condition state; when an index argument is provided it produces the N-th previous condition state, if available | ||
topState: function topState (n) { | ||
n = this.conditionStack.length - 1 - Math.abs(n || 0) | ||
topState:function topState(n) { | ||
n = this.conditionStack.length - 1 - Math.abs(n || 0); | ||
if (n >= 0) { | ||
return this.conditionStack[n] | ||
return this.conditionStack[n]; | ||
} else { | ||
return 'INITIAL' | ||
return "INITIAL"; | ||
} | ||
}, | ||
}, | ||
// alias for begin(condition) | ||
pushState: function pushState (condition) { | ||
this.begin(condition) | ||
}, | ||
pushState:function pushState(condition) { | ||
this.begin(condition); | ||
}, | ||
// return the number of states currently on the stack | ||
stateStackSize: function stateStackSize () { | ||
return this.conditionStack.length | ||
}, | ||
options: {'case-insensitive': true}, | ||
performAction: function anonymous (yy, yy_, $avoiding_name_collisions, YY_START) { | ||
stateStackSize:function stateStackSize() { | ||
return this.conditionStack.length; | ||
}, | ||
options: {"case-insensitive":true}, | ||
performAction: function anonymous(yy,yy_,$avoiding_name_collisions,YY_START) { | ||
// Pre-lexer code can go here | ||
var YYSTATE = YY_START | ||
switch ($avoiding_name_collisions) { | ||
case 0:return 9 | ||
break | ||
case 1:return 10 | ||
break | ||
case 2:return 4 | ||
break | ||
case 3:return 12 | ||
break | ||
case 4:return 13 | ||
break | ||
case 5:return 6 | ||
break | ||
case 6:return 'INVALID' | ||
break | ||
} | ||
}, | ||
rules: [/^(?:[\n]+)/i, /^(?:showInfo\b)/i, /^(?:info\b)/i, /^(?:say\b)/i, /^(?::[^#\n;]+)/i, /^(?:$)/i, /^(?:.)/i], | ||
conditions: {'INITIAL': {'rules': [0, 1, 2, 3, 4, 5, 6], 'inclusive': true}} | ||
}) | ||
return lexer | ||
})() | ||
parser.lexer = lexer | ||
function Parser () { | ||
this.yy = {} | ||
} | ||
Parser.prototype = parser; parser.Parser = Parser | ||
return new Parser() | ||
})() | ||
var YYSTATE=YY_START; | ||
switch($avoiding_name_collisions) { | ||
case 0:return 9; | ||
break; | ||
case 1:return 10; | ||
break; | ||
case 2:return 4; | ||
break; | ||
case 3:return 12; | ||
break; | ||
case 4:return 13; | ||
break; | ||
case 5:return 6; | ||
break; | ||
case 6:return 'INVALID'; | ||
break; | ||
} | ||
}, | ||
rules: [/^(?:[\n]+)/i,/^(?:showInfo\b)/i,/^(?:info\b)/i,/^(?:say\b)/i,/^(?::[^#\n;]+)/i,/^(?:$)/i,/^(?:.)/i], | ||
conditions: {"INITIAL":{"rules":[0,1,2,3,4,5,6],"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) } | ||
exports.main = function commonjsMain (args) { | ||
exports.parser = parser; | ||
exports.Parser = parser.Parser; | ||
exports.parse = function () { return parser.parse.apply(parser, arguments); }; | ||
exports.main = function commonjsMain(args) { | ||
if (!args[1]) { | ||
console.log('Usage: ' + args[0] + ' FILE') | ||
process.exit(1) | ||
console.log('Usage: '+args[0]+' FILE'); | ||
process.exit(1); | ||
} | ||
var source = require('fs').readFileSync(require('path').normalize(args[1]), 'utf8') | ||
return exports.parser.parse(source) | ||
} | ||
if (typeof module !== 'undefined' && require.main === module) { | ||
exports.main(process.argv.slice(1)) | ||
} | ||
var source = require('fs').readFileSync(require('path').normalize(args[1]), "utf8"); | ||
return exports.parser.parse(source); | ||
}; | ||
if (typeof module !== 'undefined' && require.main === module) { | ||
exports.main(process.argv.slice(1)); | ||
} | ||
} |
@@ -53,2 +53,3 @@ /* parser generated by jison 0.4.17 */ | ||
token location info (@$, _$, etc.): { | ||
@@ -62,2 +63,3 @@ first_line: n, | ||
the parseError function receives a 'hash' object with these members for lexer and parser errors: { | ||
@@ -74,666 +76,672 @@ text: (matched text) | ||
*/ | ||
var parser = (function () { | ||
var o = function (k, v, o, l) { for (o = o || {}, l = k.length; l--; o[k[l]] = v);return o }, $V0 = [1, 5], $V1 = [1, 6], $V2 = [1, 12], $V3 = [1, 13], $V4 = [1, 14], $V5 = [1, 15], $V6 = [1, 16], $V7 = [1, 17], $V8 = [1, 18], $V9 = [1, 19], $Va = [1, 20], $Vb = [1, 21], $Vc = [1, 22], $Vd = [8, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26], $Ve = [1, 37], $Vf = [1, 33], $Vg = [1, 34], $Vh = [1, 35], $Vi = [1, 36], $Vj = [8, 10, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 28, 32, 37, 39, 40, 45, 57, 58], $Vk = [10, 28], $Vl = [10, 28, 37, 57, 58], $Vm = [2, 49], $Vn = [1, 45], $Vo = [1, 48], $Vp = [1, 49], $Vq = [1, 52], $Vr = [2, 65], $Vs = [1, 65], $Vt = [1, 66], $Vu = [1, 67], $Vv = [1, 68], $Vw = [1, 69], $Vx = [1, 70], $Vy = [1, 71], $Vz = [1, 72], $VA = [1, 73], $VB = [8, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 47], $VC = [10, 28, 37] | ||
var parser = {trace: function trace () { }, | ||
yy: {}, | ||
symbols_: {'error': 2, 'expressions': 3, 'graph': 4, 'EOF': 5, 'graphStatement': 6, 'idStatement': 7, '{': 8, 'stmt_list': 9, '}': 10, 'strict': 11, 'GRAPH': 12, 'DIGRAPH': 13, 'textNoTags': 14, 'textNoTagsToken': 15, 'ALPHA': 16, 'NUM': 17, 'COLON': 18, 'PLUS': 19, 'EQUALS': 20, 'MULT': 21, 'DOT': 22, 'BRKT': 23, 'SPACE': 24, 'MINUS': 25, 'keywords': 26, 'stmt': 27, ';': 28, 'node_stmt': 29, 'edge_stmt': 30, 'attr_stmt': 31, '=': 32, 'subgraph': 33, 'attr_list': 34, 'NODE': 35, 'EDGE': 36, '[': 37, 'a_list': 38, ']': 39, ',': 40, 'edgeRHS': 41, 'node_id': 42, 'edgeop': 43, 'port': 44, ':': 45, 'compass_pt': 46, 'SUBGRAPH': 47, 'n': 48, 'ne': 49, 'e': 50, 'se': 51, 's': 52, 'sw': 53, 'w': 54, 'nw': 55, 'c': 56, 'ARROW_POINT': 57, 'ARROW_OPEN': 58, '$accept': 0, '$end': 1}, | ||
terminals_: {2: 'error', 5: 'EOF', 8: '{', 10: '}', 11: 'strict', 12: 'GRAPH', 13: 'DIGRAPH', 16: 'ALPHA', 17: 'NUM', 18: 'COLON', 19: 'PLUS', 20: 'EQUALS', 21: 'MULT', 22: 'DOT', 23: 'BRKT', 24: 'SPACE', 25: 'MINUS', 26: 'keywords', 28: ';', 32: '=', 35: 'NODE', 36: 'EDGE', 37: '[', 39: ']', 40: ',', 45: ':', 47: 'SUBGRAPH', 48: 'n', 49: 'ne', 50: 'e', 51: 'se', 52: 's', 53: 'sw', 54: 'w', 55: 'nw', 56: 'c', 57: 'ARROW_POINT', 58: 'ARROW_OPEN'}, | ||
productions_: [0, [3, 2], [4, 5], [4, 6], [4, 4], [6, 1], [6, 1], [7, 1], [14, 1], [14, 2], [15, 1], [15, 1], [15, 1], [15, 1], [15, 1], [15, 1], [15, 1], [15, 1], [15, 1], [15, 1], [15, 1], [9, 1], [9, 3], [27, 1], [27, 1], [27, 1], [27, 3], [27, 1], [31, 2], [31, 2], [31, 2], [34, 4], [34, 3], [34, 3], [34, 2], [38, 5], [38, 5], [38, 3], [30, 3], [30, 3], [30, 2], [30, 2], [41, 3], [41, 3], [41, 2], [41, 2], [29, 2], [29, 1], [42, 2], [42, 1], [44, 4], [44, 2], [44, 2], [33, 5], [33, 4], [33, 3], [46, 1], [46, 1], [46, 1], [46, 1], [46, 1], [46, 1], [46, 1], [46, 1], [46, 1], [46, 0], [43, 1], [43, 1]], | ||
performAction: function anonymous (yytext, yyleng, yylineno, yy, yystate /* action[1] */, $$ /* vstack */, _$ /* lstack */) { | ||
var parser = (function(){ | ||
var o=function(k,v,o,l){for(o=o||{},l=k.length;l--;o[k[l]]=v);return o},$V0=[1,5],$V1=[1,6],$V2=[1,12],$V3=[1,13],$V4=[1,14],$V5=[1,15],$V6=[1,16],$V7=[1,17],$V8=[1,18],$V9=[1,19],$Va=[1,20],$Vb=[1,21],$Vc=[1,22],$Vd=[8,16,17,18,19,20,21,22,23,24,25,26],$Ve=[1,37],$Vf=[1,33],$Vg=[1,34],$Vh=[1,35],$Vi=[1,36],$Vj=[8,10,16,17,18,19,20,21,22,23,24,25,26,28,32,37,39,40,45,57,58],$Vk=[10,28],$Vl=[10,28,37,57,58],$Vm=[2,49],$Vn=[1,45],$Vo=[1,48],$Vp=[1,49],$Vq=[1,52],$Vr=[2,65],$Vs=[1,65],$Vt=[1,66],$Vu=[1,67],$Vv=[1,68],$Vw=[1,69],$Vx=[1,70],$Vy=[1,71],$Vz=[1,72],$VA=[1,73],$VB=[8,16,17,18,19,20,21,22,23,24,25,26,47],$VC=[10,28,37]; | ||
var parser = {trace: function trace() { }, | ||
yy: {}, | ||
symbols_: {"error":2,"expressions":3,"graph":4,"EOF":5,"graphStatement":6,"idStatement":7,"{":8,"stmt_list":9,"}":10,"strict":11,"GRAPH":12,"DIGRAPH":13,"textNoTags":14,"textNoTagsToken":15,"ALPHA":16,"NUM":17,"COLON":18,"PLUS":19,"EQUALS":20,"MULT":21,"DOT":22,"BRKT":23,"SPACE":24,"MINUS":25,"keywords":26,"stmt":27,";":28,"node_stmt":29,"edge_stmt":30,"attr_stmt":31,"=":32,"subgraph":33,"attr_list":34,"NODE":35,"EDGE":36,"[":37,"a_list":38,"]":39,",":40,"edgeRHS":41,"node_id":42,"edgeop":43,"port":44,":":45,"compass_pt":46,"SUBGRAPH":47,"n":48,"ne":49,"e":50,"se":51,"s":52,"sw":53,"w":54,"nw":55,"c":56,"ARROW_POINT":57,"ARROW_OPEN":58,"$accept":0,"$end":1}, | ||
terminals_: {2:"error",5:"EOF",8:"{",10:"}",11:"strict",12:"GRAPH",13:"DIGRAPH",16:"ALPHA",17:"NUM",18:"COLON",19:"PLUS",20:"EQUALS",21:"MULT",22:"DOT",23:"BRKT",24:"SPACE",25:"MINUS",26:"keywords",28:";",32:"=",35:"NODE",36:"EDGE",37:"[",39:"]",40:",",45:":",47:"SUBGRAPH",48:"n",49:"ne",50:"e",51:"se",52:"s",53:"sw",54:"w",55:"nw",56:"c",57:"ARROW_POINT",58:"ARROW_OPEN"}, | ||
productions_: [0,[3,2],[4,5],[4,6],[4,4],[6,1],[6,1],[7,1],[14,1],[14,2],[15,1],[15,1],[15,1],[15,1],[15,1],[15,1],[15,1],[15,1],[15,1],[15,1],[15,1],[9,1],[9,3],[27,1],[27,1],[27,1],[27,3],[27,1],[31,2],[31,2],[31,2],[34,4],[34,3],[34,3],[34,2],[38,5],[38,5],[38,3],[30,3],[30,3],[30,2],[30,2],[41,3],[41,3],[41,2],[41,2],[29,2],[29,1],[42,2],[42,1],[44,4],[44,2],[44,2],[33,5],[33,4],[33,3],[46,1],[46,1],[46,1],[46,1],[46,1],[46,1],[46,1],[46,1],[46,1],[46,0],[43,1],[43,1]], | ||
performAction: function anonymous(yytext, yyleng, yylineno, yy, yystate /* action[1] */, $$ /* vstack */, _$ /* lstack */) { | ||
/* this == yyval */ | ||
var $0 = $$.length - 1 | ||
switch (yystate) { | ||
case 1: | ||
this.$ = $$[$0 - 1] | ||
break | ||
case 2: | ||
this.$ = $$[$0 - 4] | ||
break | ||
case 3: | ||
this.$ = $$[$0 - 5] | ||
break | ||
case 4: | ||
this.$ = $$[$0 - 3] | ||
break | ||
case 8: case 10: case 11: | ||
this.$ = $$[$0] | ||
break | ||
case 9: | ||
this.$ = $$[$0 - 1] + '' + $$[$0] | ||
break | ||
case 12: case 13: case 14: case 15: case 16: case 18: case 19: case 20: | ||
this.$ = $$[$0] | ||
break | ||
case 17: | ||
this.$ = '<br>' | ||
break | ||
case 39: | ||
this.$ = 'oy' | ||
break | ||
case 40: | ||
var $0 = $$.length - 1; | ||
switch (yystate) { | ||
case 1: | ||
this.$=$$[$0-1]; | ||
break; | ||
case 2: | ||
this.$=$$[$0-4]; | ||
break; | ||
case 3: | ||
this.$=$$[$0-5]; | ||
break; | ||
case 4: | ||
this.$=$$[$0-3]; | ||
break; | ||
case 8: case 10: case 11: | ||
this.$=$$[$0]; | ||
break; | ||
case 9: | ||
this.$=$$[$0-1]+''+$$[$0]; | ||
break; | ||
case 12: case 13: case 14: case 15: case 16: case 18: case 19: case 20: | ||
this.$ = $$[$0]; | ||
break; | ||
case 17: | ||
this.$ = '<br>'; | ||
break; | ||
case 39: | ||
this.$='oy'; | ||
break; | ||
case 40: | ||
yy.addLink($$[$0 - 1], $$[$0].id, $$[$0].op) | ||
this.$ = 'oy' | ||
break | ||
case 42: | ||
yy.addLink($$[$0-1],$$[$0].id,$$[$0].op); | ||
this.$='oy'; | ||
break; | ||
case 42: | ||
yy.addLink($$[$0 - 1], $$[$0].id, $$[$0].op) | ||
this.$ = {op: $$[$0 - 2], id: $$[$0 - 1]} | ||
yy.addLink($$[$0-1],$$[$0].id,$$[$0].op); | ||
this.$={op:$$[$0-2],id:$$[$0-1]}; | ||
break; | ||
case 44: | ||
break | ||
case 44: | ||
this.$ = {op: $$[$0 - 1], id: $$[$0]} | ||
break | ||
case 48: | ||
yy.addVertex($$[$0 - 1]); this.$ = $$[$0 - 1] | ||
break | ||
case 49: | ||
yy.addVertex($$[$0]); this.$ = $$[$0] | ||
break | ||
case 66: | ||
this.$ = 'arrow' | ||
break | ||
case 67: | ||
this.$ = 'arrow_open' | ||
break | ||
} | ||
}, | ||
table: [{3: 1, 4: 2, 6: 3, 11: [1, 4], 12: $V0, 13: $V1}, {1: [3]}, {5: [1, 7]}, {7: 8, 8: [1, 9], 14: 10, 15: 11, 16: $V2, 17: $V3, 18: $V4, 19: $V5, 20: $V6, 21: $V7, 22: $V8, 23: $V9, 24: $Va, 25: $Vb, 26: $Vc}, {6: 23, 12: $V0, 13: $V1}, o($Vd, [2, 5]), o($Vd, [2, 6]), {1: [2, 1]}, {8: [1, 24]}, {7: 30, 8: $Ve, 9: 25, 12: $Vf, 14: 10, 15: 11, 16: $V2, 17: $V3, 18: $V4, 19: $V5, 20: $V6, 21: $V7, 22: $V8, 23: $V9, 24: $Va, 25: $Vb, 26: $Vc, 27: 26, 29: 27, 30: 28, 31: 29, 33: 31, 35: $Vg, 36: $Vh, 42: 32, 47: $Vi}, o([8, 10, 28, 32, 37, 39, 40, 45, 57, 58], [2, 7], {15: 38, 16: $V2, 17: $V3, 18: $V4, 19: $V5, 20: $V6, 21: $V7, 22: $V8, 23: $V9, 24: $Va, 25: $Vb, 26: $Vc}), o($Vj, [2, 8]), o($Vj, [2, 10]), o($Vj, [2, 11]), o($Vj, [2, 12]), o($Vj, [2, 13]), o($Vj, [2, 14]), o($Vj, [2, 15]), o($Vj, [2, 16]), o($Vj, [2, 17]), o($Vj, [2, 18]), o($Vj, [2, 19]), o($Vj, [2, 20]), {7: 39, 14: 10, 15: 11, 16: $V2, 17: $V3, 18: $V4, 19: $V5, 20: $V6, 21: $V7, 22: $V8, 23: $V9, 24: $Va, 25: $Vb, 26: $Vc}, {7: 30, 8: $Ve, 9: 40, 12: $Vf, 14: 10, 15: 11, 16: $V2, 17: $V3, 18: $V4, 19: $V5, 20: $V6, 21: $V7, 22: $V8, 23: $V9, 24: $Va, 25: $Vb, 26: $Vc, 27: 26, 29: 27, 30: 28, 31: 29, 33: 31, 35: $Vg, 36: $Vh, 42: 32, 47: $Vi}, {10: [1, 41]}, {10: [2, 21], 28: [1, 42]}, o($Vk, [2, 23]), o($Vk, [2, 24]), o($Vk, [2, 25]), o($Vl, $Vm, {44: 44, 32: [1, 43], 45: $Vn}), o($Vk, [2, 27], {41: 46, 43: 47, 57: $Vo, 58: $Vp}), o($Vk, [2, 47], {43: 47, 34: 50, 41: 51, 37: $Vq, 57: $Vo, 58: $Vp}), {34: 53, 37: $Vq}, {34: 54, 37: $Vq}, {34: 55, 37: $Vq}, {7: 56, 8: [1, 57], 14: 10, 15: 11, 16: $V2, 17: $V3, 18: $V4, 19: $V5, 20: $V6, 21: $V7, 22: $V8, 23: $V9, 24: $Va, 25: $Vb, 26: $Vc}, {7: 30, 8: $Ve, 9: 58, 12: $Vf, 14: 10, 15: 11, 16: $V2, 17: $V3, 18: $V4, 19: $V5, 20: $V6, 21: $V7, 22: $V8, 23: $V9, 24: $Va, 25: $Vb, 26: $Vc, 27: 26, 29: 27, 30: 28, 31: 29, 33: 31, 35: $Vg, 36: $Vh, 42: 32, 47: $Vi}, o($Vj, [2, 9]), {8: [1, 59]}, {10: [1, 60]}, {5: [2, 4]}, {7: 30, 8: $Ve, 9: 61, 12: $Vf, 14: 10, 15: 11, 16: $V2, 17: $V3, 18: $V4, 19: $V5, 20: $V6, 21: $V7, 22: $V8, 23: $V9, 24: $Va, 25: $Vb, 26: $Vc, 27: 26, 29: 27, 30: 28, 31: 29, 33: 31, 35: $Vg, 36: $Vh, 42: 32, 47: $Vi}, {7: 62, 14: 10, 15: 11, 16: $V2, 17: $V3, 18: $V4, 19: $V5, 20: $V6, 21: $V7, 22: $V8, 23: $V9, 24: $Va, 25: $Vb, 26: $Vc}, o($Vl, [2, 48]), o($Vl, $Vr, {14: 10, 15: 11, 7: 63, 46: 64, 16: $V2, 17: $V3, 18: $V4, 19: $V5, 20: $V6, 21: $V7, 22: $V8, 23: $V9, 24: $Va, 25: $Vb, 26: $Vc, 48: $Vs, 49: $Vt, 50: $Vu, 51: $Vv, 52: $Vw, 53: $Vx, 54: $Vy, 55: $Vz, 56: $VA}), o($Vk, [2, 41], {34: 74, 37: $Vq}), {7: 77, 8: $Ve, 14: 10, 15: 11, 16: $V2, 17: $V3, 18: $V4, 19: $V5, 20: $V6, 21: $V7, 22: $V8, 23: $V9, 24: $Va, 25: $Vb, 26: $Vc, 33: 76, 42: 75, 47: $Vi}, o($VB, [2, 66]), o($VB, [2, 67]), o($Vk, [2, 46]), o($Vk, [2, 40], {34: 78, 37: $Vq}), {7: 81, 14: 10, 15: 11, 16: $V2, 17: $V3, 18: $V4, 19: $V5, 20: $V6, 21: $V7, 22: $V8, 23: $V9, 24: $Va, 25: $Vb, 26: $Vc, 38: 79, 39: [1, 80]}, o($Vk, [2, 28]), o($Vk, [2, 29]), o($Vk, [2, 30]), {8: [1, 82]}, {7: 30, 8: $Ve, 9: 83, 12: $Vf, 14: 10, 15: 11, 16: $V2, 17: $V3, 18: $V4, 19: $V5, 20: $V6, 21: $V7, 22: $V8, 23: $V9, 24: $Va, 25: $Vb, 26: $Vc, 27: 26, 29: 27, 30: 28, 31: 29, 33: 31, 35: $Vg, 36: $Vh, 42: 32, 47: $Vi}, {10: [1, 84]}, {7: 30, 8: $Ve, 9: 85, 12: $Vf, 14: 10, 15: 11, 16: $V2, 17: $V3, 18: $V4, 19: $V5, 20: $V6, 21: $V7, 22: $V8, 23: $V9, 24: $Va, 25: $Vb, 26: $Vc, 27: 26, 29: 27, 30: 28, 31: 29, 33: 31, 35: $Vg, 36: $Vh, 42: 32, 47: $Vi}, {5: [2, 2]}, {10: [2, 22]}, o($Vk, [2, 26]), o($Vl, [2, 51], {45: [1, 86]}), o($Vl, [2, 52]), o($Vl, [2, 56]), o($Vl, [2, 57]), o($Vl, [2, 58]), o($Vl, [2, 59]), o($Vl, [2, 60]), o($Vl, [2, 61]), o($Vl, [2, 62]), o($Vl, [2, 63]), o($Vl, [2, 64]), o($Vk, [2, 38]), o($VC, [2, 44], {43: 47, 41: 87, 57: $Vo, 58: $Vp}), o($VC, [2, 45], {43: 47, 41: 88, 57: $Vo, 58: $Vp}), o($Vl, $Vm, {44: 44, 45: $Vn}), o($Vk, [2, 39]), {39: [1, 89]}, o($Vk, [2, 34], {34: 90, 37: $Vq}), {32: [1, 91]}, {7: 30, 8: $Ve, 9: 92, 12: $Vf, 14: 10, 15: 11, 16: $V2, 17: $V3, 18: $V4, 19: $V5, 20: $V6, 21: $V7, 22: $V8, 23: $V9, 24: $Va, 25: $Vb, 26: $Vc, 27: 26, 29: 27, 30: 28, 31: 29, 33: 31, 35: $Vg, 36: $Vh, 42: 32, 47: $Vi}, {10: [1, 93]}, o($Vl, [2, 55]), {10: [1, 94]}, o($Vl, $Vr, {46: 95, 48: $Vs, 49: $Vt, 50: $Vu, 51: $Vv, 52: $Vw, 53: $Vx, 54: $Vy, 55: $Vz, 56: $VA}), o($VC, [2, 42]), o($VC, [2, 43]), o($Vk, [2, 33], {34: 96, 37: $Vq}), o($Vk, [2, 32]), {7: 97, 14: 10, 15: 11, 16: $V2, 17: $V3, 18: $V4, 19: $V5, 20: $V6, 21: $V7, 22: $V8, 23: $V9, 24: $Va, 25: $Vb, 26: $Vc}, {10: [1, 98]}, o($Vl, [2, 54]), {5: [2, 3]}, o($Vl, [2, 50]), o($Vk, [2, 31]), {28: [1, 99], 39: [2, 37], 40: [1, 100]}, o($Vl, [2, 53]), {7: 81, 14: 10, 15: 11, 16: $V2, 17: $V3, 18: $V4, 19: $V5, 20: $V6, 21: $V7, 22: $V8, 23: $V9, 24: $Va, 25: $Vb, 26: $Vc, 38: 101}, {7: 81, 14: 10, 15: 11, 16: $V2, 17: $V3, 18: $V4, 19: $V5, 20: $V6, 21: $V7, 22: $V8, 23: $V9, 24: $Va, 25: $Vb, 26: $Vc, 38: 102}, {39: [2, 35]}, {39: [2, 36]}], | ||
defaultActions: {7: [2, 1], 41: [2, 4], 60: [2, 2], 61: [2, 22], 94: [2, 3], 101: [2, 35], 102: [2, 36]}, | ||
parseError: function parseError (str, hash) { | ||
if (hash.recoverable) { | ||
this.trace(str) | ||
} else { | ||
this.$={op:$$[$0-1],id:$$[$0]}; | ||
break; | ||
case 48: | ||
yy.addVertex($$[$0-1]);this.$=$$[$0-1]; | ||
break; | ||
case 49: | ||
yy.addVertex($$[$0]);this.$=$$[$0]; | ||
break; | ||
case 66: | ||
this.$='arrow'; | ||
break; | ||
case 67: | ||
this.$='arrow_open'; | ||
break; | ||
} | ||
}, | ||
table: [{3:1,4:2,6:3,11:[1,4],12:$V0,13:$V1},{1:[3]},{5:[1,7]},{7:8,8:[1,9],14:10,15:11,16:$V2,17:$V3,18:$V4,19:$V5,20:$V6,21:$V7,22:$V8,23:$V9,24:$Va,25:$Vb,26:$Vc},{6:23,12:$V0,13:$V1},o($Vd,[2,5]),o($Vd,[2,6]),{1:[2,1]},{8:[1,24]},{7:30,8:$Ve,9:25,12:$Vf,14:10,15:11,16:$V2,17:$V3,18:$V4,19:$V5,20:$V6,21:$V7,22:$V8,23:$V9,24:$Va,25:$Vb,26:$Vc,27:26,29:27,30:28,31:29,33:31,35:$Vg,36:$Vh,42:32,47:$Vi},o([8,10,28,32,37,39,40,45,57,58],[2,7],{15:38,16:$V2,17:$V3,18:$V4,19:$V5,20:$V6,21:$V7,22:$V8,23:$V9,24:$Va,25:$Vb,26:$Vc}),o($Vj,[2,8]),o($Vj,[2,10]),o($Vj,[2,11]),o($Vj,[2,12]),o($Vj,[2,13]),o($Vj,[2,14]),o($Vj,[2,15]),o($Vj,[2,16]),o($Vj,[2,17]),o($Vj,[2,18]),o($Vj,[2,19]),o($Vj,[2,20]),{7:39,14:10,15:11,16:$V2,17:$V3,18:$V4,19:$V5,20:$V6,21:$V7,22:$V8,23:$V9,24:$Va,25:$Vb,26:$Vc},{7:30,8:$Ve,9:40,12:$Vf,14:10,15:11,16:$V2,17:$V3,18:$V4,19:$V5,20:$V6,21:$V7,22:$V8,23:$V9,24:$Va,25:$Vb,26:$Vc,27:26,29:27,30:28,31:29,33:31,35:$Vg,36:$Vh,42:32,47:$Vi},{10:[1,41]},{10:[2,21],28:[1,42]},o($Vk,[2,23]),o($Vk,[2,24]),o($Vk,[2,25]),o($Vl,$Vm,{44:44,32:[1,43],45:$Vn}),o($Vk,[2,27],{41:46,43:47,57:$Vo,58:$Vp}),o($Vk,[2,47],{43:47,34:50,41:51,37:$Vq,57:$Vo,58:$Vp}),{34:53,37:$Vq},{34:54,37:$Vq},{34:55,37:$Vq},{7:56,8:[1,57],14:10,15:11,16:$V2,17:$V3,18:$V4,19:$V5,20:$V6,21:$V7,22:$V8,23:$V9,24:$Va,25:$Vb,26:$Vc},{7:30,8:$Ve,9:58,12:$Vf,14:10,15:11,16:$V2,17:$V3,18:$V4,19:$V5,20:$V6,21:$V7,22:$V8,23:$V9,24:$Va,25:$Vb,26:$Vc,27:26,29:27,30:28,31:29,33:31,35:$Vg,36:$Vh,42:32,47:$Vi},o($Vj,[2,9]),{8:[1,59]},{10:[1,60]},{5:[2,4]},{7:30,8:$Ve,9:61,12:$Vf,14:10,15:11,16:$V2,17:$V3,18:$V4,19:$V5,20:$V6,21:$V7,22:$V8,23:$V9,24:$Va,25:$Vb,26:$Vc,27:26,29:27,30:28,31:29,33:31,35:$Vg,36:$Vh,42:32,47:$Vi},{7:62,14:10,15:11,16:$V2,17:$V3,18:$V4,19:$V5,20:$V6,21:$V7,22:$V8,23:$V9,24:$Va,25:$Vb,26:$Vc},o($Vl,[2,48]),o($Vl,$Vr,{14:10,15:11,7:63,46:64,16:$V2,17:$V3,18:$V4,19:$V5,20:$V6,21:$V7,22:$V8,23:$V9,24:$Va,25:$Vb,26:$Vc,48:$Vs,49:$Vt,50:$Vu,51:$Vv,52:$Vw,53:$Vx,54:$Vy,55:$Vz,56:$VA}),o($Vk,[2,41],{34:74,37:$Vq}),{7:77,8:$Ve,14:10,15:11,16:$V2,17:$V3,18:$V4,19:$V5,20:$V6,21:$V7,22:$V8,23:$V9,24:$Va,25:$Vb,26:$Vc,33:76,42:75,47:$Vi},o($VB,[2,66]),o($VB,[2,67]),o($Vk,[2,46]),o($Vk,[2,40],{34:78,37:$Vq}),{7:81,14:10,15:11,16:$V2,17:$V3,18:$V4,19:$V5,20:$V6,21:$V7,22:$V8,23:$V9,24:$Va,25:$Vb,26:$Vc,38:79,39:[1,80]},o($Vk,[2,28]),o($Vk,[2,29]),o($Vk,[2,30]),{8:[1,82]},{7:30,8:$Ve,9:83,12:$Vf,14:10,15:11,16:$V2,17:$V3,18:$V4,19:$V5,20:$V6,21:$V7,22:$V8,23:$V9,24:$Va,25:$Vb,26:$Vc,27:26,29:27,30:28,31:29,33:31,35:$Vg,36:$Vh,42:32,47:$Vi},{10:[1,84]},{7:30,8:$Ve,9:85,12:$Vf,14:10,15:11,16:$V2,17:$V3,18:$V4,19:$V5,20:$V6,21:$V7,22:$V8,23:$V9,24:$Va,25:$Vb,26:$Vc,27:26,29:27,30:28,31:29,33:31,35:$Vg,36:$Vh,42:32,47:$Vi},{5:[2,2]},{10:[2,22]},o($Vk,[2,26]),o($Vl,[2,51],{45:[1,86]}),o($Vl,[2,52]),o($Vl,[2,56]),o($Vl,[2,57]),o($Vl,[2,58]),o($Vl,[2,59]),o($Vl,[2,60]),o($Vl,[2,61]),o($Vl,[2,62]),o($Vl,[2,63]),o($Vl,[2,64]),o($Vk,[2,38]),o($VC,[2,44],{43:47,41:87,57:$Vo,58:$Vp}),o($VC,[2,45],{43:47,41:88,57:$Vo,58:$Vp}),o($Vl,$Vm,{44:44,45:$Vn}),o($Vk,[2,39]),{39:[1,89]},o($Vk,[2,34],{34:90,37:$Vq}),{32:[1,91]},{7:30,8:$Ve,9:92,12:$Vf,14:10,15:11,16:$V2,17:$V3,18:$V4,19:$V5,20:$V6,21:$V7,22:$V8,23:$V9,24:$Va,25:$Vb,26:$Vc,27:26,29:27,30:28,31:29,33:31,35:$Vg,36:$Vh,42:32,47:$Vi},{10:[1,93]},o($Vl,[2,55]),{10:[1,94]},o($Vl,$Vr,{46:95,48:$Vs,49:$Vt,50:$Vu,51:$Vv,52:$Vw,53:$Vx,54:$Vy,55:$Vz,56:$VA}),o($VC,[2,42]),o($VC,[2,43]),o($Vk,[2,33],{34:96,37:$Vq}),o($Vk,[2,32]),{7:97,14:10,15:11,16:$V2,17:$V3,18:$V4,19:$V5,20:$V6,21:$V7,22:$V8,23:$V9,24:$Va,25:$Vb,26:$Vc},{10:[1,98]},o($Vl,[2,54]),{5:[2,3]},o($Vl,[2,50]),o($Vk,[2,31]),{28:[1,99],39:[2,37],40:[1,100]},o($Vl,[2,53]),{7:81,14:10,15:11,16:$V2,17:$V3,18:$V4,19:$V5,20:$V6,21:$V7,22:$V8,23:$V9,24:$Va,25:$Vb,26:$Vc,38:101},{7:81,14:10,15:11,16:$V2,17:$V3,18:$V4,19:$V5,20:$V6,21:$V7,22:$V8,23:$V9,24:$Va,25:$Vb,26:$Vc,38:102},{39:[2,35]},{39:[2,36]}], | ||
defaultActions: {7:[2,1],41:[2,4],60:[2,2],61:[2,22],94:[2,3],101:[2,35],102:[2,36]}, | ||
parseError: function parseError(str, hash) { | ||
if (hash.recoverable) { | ||
this.trace(str); | ||
} else { | ||
function _parseError (msg, hash) { | ||
this.message = msg | ||
this.hash = hash | ||
this.message = msg; | ||
this.hash = hash; | ||
} | ||
_parseError.prototype = Error | ||
_parseError.prototype = Error; | ||
throw new _parseError(str, hash) | ||
} | ||
}, | ||
parse: function parse (input) { | ||
var self = this, stack = [0], tstack = [], vstack = [null], lstack = [], table = this.table, yytext = '', yylineno = 0, yyleng = 0, recovering = 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) { | ||
throw new _parseError(str, hash); | ||
} | ||
}, | ||
parse: function parse(input) { | ||
var self = this, stack = [0], tstack = [], vstack = [null], lstack = [], table = this.table, yytext = '', yylineno = 0, yyleng = 0, recovering = 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] | ||
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 | ||
} | ||
function popStack (n) { | ||
stack.length = stack.length - 2 * n | ||
vstack.length = vstack.length - n | ||
lstack.length = lstack.length - n | ||
} | ||
var lex = function () { | ||
var token | ||
token = lexer.lex() || EOF | ||
if (typeof token !== 'number') { | ||
token = self.symbols_[token] || token | ||
} | ||
return token | ||
} | ||
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; | ||
} | ||
function popStack(n) { | ||
stack.length = stack.length - 2 * n; | ||
vstack.length = vstack.length - n; | ||
lstack.length = lstack.length - n; | ||
} | ||
function lex() { | ||
var token; | ||
token = tstack.pop() || lexer.lex() || EOF; | ||
if (typeof token !== 'number') { | ||
if (token instanceof Array) { | ||
tstack = token; | ||
token = tstack.pop(); | ||
} | ||
token = self.symbols_[token] || token; | ||
} | ||
return token; | ||
} | ||
var symbol, preErrorSymbol, state, action, a, r, yyval = {}, p, len, newState, expected | ||
while (true) { | ||
state = stack[stack.length - 1] | ||
var symbol, preErrorSymbol, state, action, a, r, yyval = {}, p, len, newState, expected; | ||
while (true) { | ||
state = stack[stack.length - 1]; | ||
if (this.defaultActions[state]) { | ||
action = this.defaultActions[state] | ||
action = this.defaultActions[state]; | ||
} else { | ||
if (symbol === null || typeof symbol === 'undefined') { | ||
symbol = lex() | ||
} | ||
action = table[state] && table[state][symbol] | ||
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] + '\'') | ||
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 (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) { | ||
throw new Error('Parse Error: multiple actions possible at state: ' + state + ', token: ' + symbol) | ||
throw new Error('Parse Error: multiple actions possible at state: ' + state + ', token: ' + symbol); | ||
} | ||
switch (action[0]) { | ||
case 1: | ||
stack.push(symbol) | ||
vstack.push(lexer.yytext) | ||
lstack.push(lexer.yylloc) | ||
stack.push(action[1]) | ||
symbol = null | ||
case 1: | ||
stack.push(symbol); | ||
vstack.push(lexer.yytext); | ||
lstack.push(lexer.yylloc); | ||
stack.push(action[1]); | ||
symbol = null; | ||
if (!preErrorSymbol) { | ||
yyleng = lexer.yyleng | ||
yytext = lexer.yytext | ||
yylineno = lexer.yylineno | ||
yyloc = lexer.yylloc | ||
if (recovering > 0) { | ||
recovering-- | ||
} | ||
yyleng = lexer.yyleng; | ||
yytext = lexer.yytext; | ||
yylineno = lexer.yylineno; | ||
yyloc = lexer.yylloc; | ||
if (recovering > 0) { | ||
recovering--; | ||
} | ||
} else { | ||
symbol = preErrorSymbol | ||
preErrorSymbol = null | ||
symbol = preErrorSymbol; | ||
preErrorSymbol = null; | ||
} | ||
break | ||
case 2: | ||
len = this.productions_[action[1]][1] | ||
yyval.$ = vstack[vstack.length - len] | ||
break; | ||
case 2: | ||
len = this.productions_[action[1]][1]; | ||
yyval.$ = vstack[vstack.length - len]; | ||
yyval._$ = { | ||
first_line: lstack[lstack.length - (len || 1)].first_line, | ||
last_line: lstack[lstack.length - 1].last_line, | ||
first_column: lstack[lstack.length - (len || 1)].first_column, | ||
last_column: lstack[lstack.length - 1].last_column | ||
} | ||
first_line: lstack[lstack.length - (len || 1)].first_line, | ||
last_line: lstack[lstack.length - 1].last_line, | ||
first_column: lstack[lstack.length - (len || 1)].first_column, | ||
last_column: lstack[lstack.length - 1].last_column | ||
}; | ||
if (ranges) { | ||
yyval._$.range = [ | ||
lstack[lstack.length - (len || 1)].range[0], | ||
lstack[lstack.length - 1].range[1] | ||
] | ||
yyval._$.range = [ | ||
lstack[lstack.length - (len || 1)].range[0], | ||
lstack[lstack.length - 1].range[1] | ||
]; | ||
} | ||
r = this.performAction.apply(yyval, [ | ||
yytext, | ||
yyleng, | ||
yylineno, | ||
sharedState.yy, | ||
action[1], | ||
vstack, | ||
lstack | ||
].concat(args)) | ||
yytext, | ||
yyleng, | ||
yylineno, | ||
sharedState.yy, | ||
action[1], | ||
vstack, | ||
lstack | ||
].concat(args)); | ||
if (typeof r !== 'undefined') { | ||
return r | ||
return r; | ||
} | ||
if (len) { | ||
stack = stack.slice(0, -1 * len * 2) | ||
vstack = vstack.slice(0, -1 * len) | ||
lstack = lstack.slice(0, -1 * len) | ||
stack = stack.slice(0, -1 * len * 2); | ||
vstack = vstack.slice(0, -1 * len); | ||
lstack = lstack.slice(0, -1 * len); | ||
} | ||
stack.push(this.productions_[action[1]][0]) | ||
vstack.push(yyval.$) | ||
lstack.push(yyval._$) | ||
newState = table[stack[stack.length - 2]][stack[stack.length - 1]] | ||
stack.push(newState) | ||
break | ||
case 3: | ||
return true | ||
stack.push(this.productions_[action[1]][0]); | ||
vstack.push(yyval.$); | ||
lstack.push(yyval._$); | ||
newState = table[stack[stack.length - 2]][stack[stack.length - 1]]; | ||
stack.push(newState); | ||
break; | ||
case 3: | ||
return true; | ||
} | ||
} | ||
return true | ||
}} | ||
} | ||
return true; | ||
}}; | ||
/* generated by jison-lex 0.3.4 */ | ||
var lexer = (function () { | ||
var lexer = ({ | ||
var lexer = (function(){ | ||
var lexer = ({ | ||
EOF: 1, | ||
EOF:1, | ||
parseError: function parseError (str, hash) { | ||
parseError:function parseError(str, hash) { | ||
if (this.yy.parser) { | ||
this.yy.parser.parseError(str, hash) | ||
this.yy.parser.parseError(str, hash); | ||
} else { | ||
throw new Error(str) | ||
throw new Error(str); | ||
} | ||
}, | ||
}, | ||
// resets the lexer, sets new input | ||
setInput: function (input, yy) { | ||
this.yy = yy || this.yy || {} | ||
this._input = input | ||
this._more = this._backtrack = this.done = false | ||
this.yylineno = this.yyleng = 0 | ||
this.yytext = this.matched = this.match = '' | ||
this.conditionStack = ['INITIAL'] | ||
setInput:function (input, yy) { | ||
this.yy = yy || this.yy || {}; | ||
this._input = input; | ||
this._more = this._backtrack = this.done = false; | ||
this.yylineno = this.yyleng = 0; | ||
this.yytext = this.matched = this.match = ''; | ||
this.conditionStack = ['INITIAL']; | ||
this.yylloc = { | ||
first_line: 1, | ||
first_column: 0, | ||
last_line: 1, | ||
last_column: 0 | ||
} | ||
first_line: 1, | ||
first_column: 0, | ||
last_line: 1, | ||
last_column: 0 | ||
}; | ||
if (this.options.ranges) { | ||
this.yylloc.range = [0, 0] | ||
this.yylloc.range = [0,0]; | ||
} | ||
this.offset = 0 | ||
return this | ||
}, | ||
this.offset = 0; | ||
return this; | ||
}, | ||
// consumes and returns one char from the input | ||
input: function () { | ||
var ch = this._input[0] | ||
this.yytext += ch | ||
this.yyleng++ | ||
this.offset++ | ||
this.match += ch | ||
this.matched += ch | ||
var lines = ch.match(/(?:\r\n?|\n).*/g) | ||
input:function () { | ||
var ch = this._input[0]; | ||
this.yytext += ch; | ||
this.yyleng++; | ||
this.offset++; | ||
this.match += ch; | ||
this.matched += ch; | ||
var lines = ch.match(/(?:\r\n?|\n).*/g); | ||
if (lines) { | ||
this.yylineno++ | ||
this.yylloc.last_line++ | ||
this.yylineno++; | ||
this.yylloc.last_line++; | ||
} else { | ||
this.yylloc.last_column++ | ||
this.yylloc.last_column++; | ||
} | ||
if (this.options.ranges) { | ||
this.yylloc.range[1]++ | ||
this.yylloc.range[1]++; | ||
} | ||
this._input = this._input.slice(1) | ||
return ch | ||
}, | ||
this._input = this._input.slice(1); | ||
return ch; | ||
}, | ||
// unshifts one char (or a string) into the input | ||
unput: function (ch) { | ||
var len = ch.length | ||
var lines = ch.split(/(?:\r\n?|\n)/g) | ||
unput:function (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 -= len; | ||
this.offset -= len | ||
var oldLines = this.match.split(/(?:\r\n?|\n)/g) | ||
this.match = this.match.substr(0, this.match.length - 1) | ||
this.matched = this.matched.substr(0, this.matched.length - 1) | ||
this._input = ch + this._input; | ||
this.yytext = this.yytext.substr(0, this.yytext.length - len); | ||
//this.yyleng -= len; | ||
this.offset -= len; | ||
var oldLines = this.match.split(/(?:\r\n?|\n)/g); | ||
this.match = this.match.substr(0, this.match.length - 1); | ||
this.matched = this.matched.substr(0, this.matched.length - 1); | ||
if (lines.length - 1) { | ||
this.yylineno -= lines.length - 1 | ||
this.yylineno -= lines.length - 1; | ||
} | ||
var r = this.yylloc.range | ||
var r = this.yylloc.range; | ||
this.yylloc = { | ||
first_line: this.yylloc.first_line, | ||
last_line: this.yylineno + 1, | ||
first_column: this.yylloc.first_column, | ||
last_column: lines | ||
? (lines.length === oldLines.length ? this.yylloc.first_column : 0) + | ||
oldLines[oldLines.length - lines.length].length - lines[0].length | ||
: this.yylloc.first_column - len | ||
} | ||
first_line: this.yylloc.first_line, | ||
last_line: this.yylineno + 1, | ||
first_column: this.yylloc.first_column, | ||
last_column: lines ? | ||
(lines.length === oldLines.length ? this.yylloc.first_column : 0) | ||
+ oldLines[oldLines.length - lines.length].length - lines[0].length : | ||
this.yylloc.first_column - len | ||
}; | ||
if (this.options.ranges) { | ||
this.yylloc.range = [r[0], r[0] + this.yyleng - len] | ||
this.yylloc.range = [r[0], r[0] + this.yyleng - len]; | ||
} | ||
this.yyleng = this.yytext.length | ||
return this | ||
}, | ||
this.yyleng = this.yytext.length; | ||
return this; | ||
}, | ||
// When called from action, caches matched text and appends it on next action | ||
more: function () { | ||
this._more = true | ||
return this | ||
}, | ||
more:function () { | ||
this._more = true; | ||
return this; | ||
}, | ||
// When called from action, signals the lexer that this rule fails to match the input, so the next matching rule (regex) should be tested instead. | ||
reject: function () { | ||
reject:function () { | ||
if (this.options.backtrack_lexer) { | ||
this._backtrack = true | ||
this._backtrack = true; | ||
} else { | ||
return this.parseError('Lexical error on line ' + (this.yylineno + 1) + '. You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true).\n' + this.showPosition(), { | ||
text: '', | ||
token: null, | ||
line: this.yylineno | ||
}) | ||
return this.parseError('Lexical error on line ' + (this.yylineno + 1) + '. You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true).\n' + this.showPosition(), { | ||
text: "", | ||
token: null, | ||
line: this.yylineno | ||
}); | ||
} | ||
return this | ||
}, | ||
return this; | ||
}, | ||
// retain first n characters of the match | ||
less: function (n) { | ||
this.unput(this.match.slice(n)) | ||
}, | ||
less:function (n) { | ||
this.unput(this.match.slice(n)); | ||
}, | ||
// displays already matched input, i.e. for error messages | ||
pastInput: function () { | ||
var past = this.matched.substr(0, this.matched.length - this.match.length) | ||
return (past.length > 20 ? '...' : '') + past.substr(-20).replace(/\n/g, '') | ||
}, | ||
pastInput:function () { | ||
var past = this.matched.substr(0, this.matched.length - this.match.length); | ||
return (past.length > 20 ? '...':'') + past.substr(-20).replace(/\n/g, ""); | ||
}, | ||
// displays upcoming input, i.e. for error messages | ||
upcomingInput: function () { | ||
var next = this.match | ||
upcomingInput:function () { | ||
var next = this.match; | ||
if (next.length < 20) { | ||
next += this._input.substr(0, 20 - next.length) | ||
next += this._input.substr(0, 20-next.length); | ||
} | ||
return (next.substr(0, 20) + (next.length > 20 ? '...' : '')).replace(/\n/g, '') | ||
}, | ||
return (next.substr(0,20) + (next.length > 20 ? '...' : '')).replace(/\n/g, ""); | ||
}, | ||
// displays the character position where the lexing error occurred, i.e. for error messages | ||
showPosition: function () { | ||
var pre = this.pastInput() | ||
var c = new Array(pre.length + 1).join('-') | ||
return pre + this.upcomingInput() + '\n' + c + '^' | ||
}, | ||
showPosition:function () { | ||
var pre = this.pastInput(); | ||
var c = new Array(pre.length + 1).join("-"); | ||
return pre + this.upcomingInput() + "\n" + c + "^"; | ||
}, | ||
// test the lexed token: return FALSE when not a match, otherwise return token | ||
test_match: function (match, indexed_rule) { | ||
test_match:function (match, indexed_rule) { | ||
var token, | ||
lines, | ||
backup | ||
lines, | ||
backup; | ||
if (this.options.backtrack_lexer) { | ||
// save context | ||
backup = { | ||
yylineno: this.yylineno, | ||
yylloc: { | ||
first_line: this.yylloc.first_line, | ||
last_line: this.last_line, | ||
first_column: this.yylloc.first_column, | ||
last_column: this.yylloc.last_column | ||
}, | ||
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 | ||
} | ||
if (this.options.ranges) { | ||
backup.yylloc.range = this.yylloc.range.slice(0) | ||
} | ||
backup = { | ||
yylineno: this.yylineno, | ||
yylloc: { | ||
first_line: this.yylloc.first_line, | ||
last_line: this.last_line, | ||
first_column: this.yylloc.first_column, | ||
last_column: this.yylloc.last_column | ||
}, | ||
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 | ||
}; | ||
if (this.options.ranges) { | ||
backup.yylloc.range = this.yylloc.range.slice(0); | ||
} | ||
} | ||
lines = match[0].match(/(?:\r\n?|\n).*/g) | ||
lines = match[0].match(/(?:\r\n?|\n).*/g); | ||
if (lines) { | ||
this.yylineno += lines.length | ||
this.yylineno += lines.length; | ||
} | ||
this.yylloc = { | ||
first_line: this.yylloc.last_line, | ||
last_line: this.yylineno + 1, | ||
first_column: this.yylloc.last_column, | ||
last_column: lines | ||
? lines[lines.length - 1].length - lines[lines.length - 1].match(/\r?\n?/)[0].length | ||
: this.yylloc.last_column + match[0].length | ||
} | ||
this.yytext += match[0] | ||
this.match += match[0] | ||
this.matches = match | ||
this.yyleng = this.yytext.length | ||
first_line: this.yylloc.last_line, | ||
last_line: this.yylineno + 1, | ||
first_column: this.yylloc.last_column, | ||
last_column: lines ? | ||
lines[lines.length - 1].length - lines[lines.length - 1].match(/\r?\n?/)[0].length : | ||
this.yylloc.last_column + match[0].length | ||
}; | ||
this.yytext += match[0]; | ||
this.match += match[0]; | ||
this.matches = match; | ||
this.yyleng = this.yytext.length; | ||
if (this.options.ranges) { | ||
this.yylloc.range = [this.offset, this.offset += this.yyleng] | ||
this.yylloc.range = [this.offset, this.offset += this.yyleng]; | ||
} | ||
this._more = false | ||
this._backtrack = false | ||
this._input = this._input.slice(match[0].length) | ||
this.matched += match[0] | ||
token = this.performAction.call(this, this.yy, this, indexed_rule, this.conditionStack[this.conditionStack.length - 1]) | ||
this._more = false; | ||
this._backtrack = false; | ||
this._input = this._input.slice(match[0].length); | ||
this.matched += match[0]; | ||
token = this.performAction.call(this, this.yy, this, indexed_rule, this.conditionStack[this.conditionStack.length - 1]); | ||
if (this.done && this._input) { | ||
this.done = false | ||
this.done = false; | ||
} | ||
if (token) { | ||
return token | ||
return token; | ||
} else if (this._backtrack) { | ||
// recover context | ||
for (var k in backup) { | ||
this[k] = backup[k] | ||
} | ||
return false // rule action called reject() implying the next rule should be tested instead. | ||
for (var k in backup) { | ||
this[k] = backup[k]; | ||
} | ||
return false; // rule action called reject() implying the next rule should be tested instead. | ||
} | ||
return false | ||
}, | ||
return false; | ||
}, | ||
// return next match in input | ||
next: function () { | ||
next:function () { | ||
if (this.done) { | ||
return this.EOF | ||
return this.EOF; | ||
} | ||
if (!this._input) { | ||
this.done = true | ||
this.done = true; | ||
} | ||
var token, | ||
match, | ||
tempMatch, | ||
index | ||
match, | ||
tempMatch, | ||
index; | ||
if (!this._more) { | ||
this.yytext = '' | ||
this.match = '' | ||
this.yytext = ''; | ||
this.match = ''; | ||
} | ||
var rules = this._currentRules() | ||
var rules = this._currentRules(); | ||
for (var i = 0; i < rules.length; i++) { | ||
tempMatch = this._input.match(this.rules[rules[i]]) | ||
if (tempMatch && (!match || tempMatch[0].length > match[0].length)) { | ||
match = tempMatch | ||
index = i | ||
if (this.options.backtrack_lexer) { | ||
token = this.test_match(tempMatch, rules[i]) | ||
if (token !== false) { | ||
return token | ||
} else if (this._backtrack) { | ||
match = false | ||
continue // rule action called reject() implying a rule MISmatch. | ||
} else { | ||
tempMatch = this._input.match(this.rules[rules[i]]); | ||
if (tempMatch && (!match || tempMatch[0].length > match[0].length)) { | ||
match = tempMatch; | ||
index = i; | ||
if (this.options.backtrack_lexer) { | ||
token = this.test_match(tempMatch, rules[i]); | ||
if (token !== false) { | ||
return token; | ||
} else if (this._backtrack) { | ||
match = false; | ||
continue; // rule action called reject() implying a rule MISmatch. | ||
} else { | ||
// else: this is a lexer rule which consumes input without producing a token (e.g. whitespace) | ||
return false | ||
} | ||
} else if (!this.options.flex) { | ||
break | ||
return false; | ||
} | ||
} else if (!this.options.flex) { | ||
break; | ||
} | ||
} | ||
} | ||
} | ||
if (match) { | ||
token = this.test_match(match, rules[index]) | ||
if (token !== false) { | ||
return token | ||
} | ||
token = this.test_match(match, rules[index]); | ||
if (token !== false) { | ||
return token; | ||
} | ||
// else: this is a lexer rule which consumes input without producing a token (e.g. whitespace) | ||
return false | ||
return false; | ||
} | ||
if (this._input === '') { | ||
return this.EOF | ||
if (this._input === "") { | ||
return this.EOF; | ||
} else { | ||
return this.parseError('Lexical error on line ' + (this.yylineno + 1) + '. Unrecognized text.\n' + this.showPosition(), { | ||
text: '', | ||
token: null, | ||
line: this.yylineno | ||
}) | ||
return this.parseError('Lexical error on line ' + (this.yylineno + 1) + '. Unrecognized text.\n' + this.showPosition(), { | ||
text: "", | ||
token: null, | ||
line: this.yylineno | ||
}); | ||
} | ||
}, | ||
}, | ||
// return next match that has a token | ||
lex: function lex () { | ||
var r = this.next() | ||
lex:function lex() { | ||
var r = this.next(); | ||
if (r) { | ||
return r | ||
return r; | ||
} else { | ||
return this.lex() | ||
return this.lex(); | ||
} | ||
}, | ||
}, | ||
// activates a new lexer condition state (pushes the new lexer condition state onto the condition stack) | ||
begin: function begin (condition) { | ||
this.conditionStack.push(condition) | ||
}, | ||
begin:function begin(condition) { | ||
this.conditionStack.push(condition); | ||
}, | ||
// pop the previously active lexer condition state off the condition stack | ||
popState: function popState () { | ||
var n = this.conditionStack.length - 1 | ||
popState:function popState() { | ||
var n = this.conditionStack.length - 1; | ||
if (n > 0) { | ||
return this.conditionStack.pop() | ||
return this.conditionStack.pop(); | ||
} else { | ||
return this.conditionStack[0] | ||
return this.conditionStack[0]; | ||
} | ||
}, | ||
}, | ||
// produce the lexer rule set which is active for the currently active lexer condition state | ||
_currentRules: function _currentRules () { | ||
_currentRules:function _currentRules() { | ||
if (this.conditionStack.length && this.conditionStack[this.conditionStack.length - 1]) { | ||
return this.conditions[this.conditionStack[this.conditionStack.length - 1]].rules | ||
return this.conditions[this.conditionStack[this.conditionStack.length - 1]].rules; | ||
} else { | ||
return this.conditions['INITIAL'].rules | ||
return this.conditions["INITIAL"].rules; | ||
} | ||
}, | ||
}, | ||
// return the currently active lexer condition state; when an index argument is provided it produces the N-th previous condition state, if available | ||
topState: function topState (n) { | ||
n = this.conditionStack.length - 1 - Math.abs(n || 0) | ||
topState:function topState(n) { | ||
n = this.conditionStack.length - 1 - Math.abs(n || 0); | ||
if (n >= 0) { | ||
return this.conditionStack[n] | ||
return this.conditionStack[n]; | ||
} else { | ||
return 'INITIAL' | ||
return "INITIAL"; | ||
} | ||
}, | ||
}, | ||
// alias for begin(condition) | ||
pushState: function pushState (condition) { | ||
this.begin(condition) | ||
}, | ||
pushState:function pushState(condition) { | ||
this.begin(condition); | ||
}, | ||
// return the number of states currently on the stack | ||
stateStackSize: function stateStackSize () { | ||
return this.conditionStack.length | ||
}, | ||
options: {}, | ||
performAction: function anonymous (yy, yy_, $avoiding_name_collisions, YY_START) { | ||
var YYSTATE = YY_START | ||
switch ($avoiding_name_collisions) { | ||
case 0:return 'STYLE' | ||
break | ||
case 1:return 'LINKSTYLE' | ||
break | ||
case 2:return 'CLASSDEF' | ||
break | ||
case 3:return 'CLASS' | ||
break | ||
case 4:return 'CLICK' | ||
break | ||
case 5:return 12 | ||
break | ||
case 6:return 13 | ||
break | ||
case 7:return 47 | ||
break | ||
case 8:return 35 | ||
break | ||
case 9:return 36 | ||
break | ||
case 10:return 'DIR' | ||
break | ||
case 11:return 'DIR' | ||
break | ||
case 12:return 'DIR' | ||
break | ||
case 13:return 'DIR' | ||
break | ||
case 14:return 'DIR' | ||
break | ||
case 15:return 'DIR' | ||
break | ||
case 16:return 17 | ||
break | ||
case 17:return 23 | ||
break | ||
case 18:return 18 | ||
break | ||
case 19:return 28 | ||
break | ||
case 20:return 40 | ||
break | ||
case 21:return 32 | ||
break | ||
case 22:return 21 | ||
break | ||
case 23:return 22 | ||
break | ||
case 24:return 'ARROW_CROSS' | ||
break | ||
case 25:return 57 | ||
break | ||
case 26:return 'ARROW_CIRCLE' | ||
break | ||
case 27:return 58 | ||
break | ||
case 28:return 25 | ||
break | ||
case 29:return 19 | ||
break | ||
case 30:return 20 | ||
break | ||
case 31:return 16 | ||
break | ||
case 32:return 'PIPE' | ||
break | ||
case 33:return 'PS' | ||
break | ||
case 34:return 'PE' | ||
break | ||
case 35:return 37 | ||
break | ||
case 36:return 39 | ||
break | ||
case 37:return 8 | ||
break | ||
case 38:return 10 | ||
break | ||
case 39:return 'QUOTE' | ||
break | ||
case 40:return 24 | ||
break | ||
case 41:return 'NEWLINE' | ||
break | ||
case 42:return 5 | ||
break | ||
} | ||
}, | ||
rules: [/^(?:style\b)/, /^(?:linkStyle\b)/, /^(?:classDef\b)/, /^(?:class\b)/, /^(?:click\b)/, /^(?:graph\b)/, /^(?:digraph\b)/, /^(?:subgraph\b)/, /^(?:node\b)/, /^(?:edge\b)/, /^(?:LR\b)/, /^(?:RL\b)/, /^(?:TB\b)/, /^(?:BT\b)/, /^(?:TD\b)/, /^(?:BR\b)/, /^(?:[0-9])/, /^(?:#)/, /^(?::)/, /^(?:;)/, /^(?:,)/, /^(?:=)/, /^(?:\*)/, /^(?:\.)/, /^(?:--[x])/, /^(?:->)/, /^(?:--[o])/, /^(?:--)/, /^(?:-)/, /^(?:\+)/, /^(?:=)/, /^(?:[\u0021-\u0027\u002A-\u002E\u003F\u0041-\u005A\u0061-\u007A\u00AA\u00B5\u00BA\u00C0-\u00D6\u00D8-\u00F6]|[\u00F8-\u02C1\u02C6-\u02D1\u02E0-\u02E4\u02EC\u02EE\u0370-\u0374\u0376\u0377]|[\u037A-\u037D\u0386\u0388-\u038A\u038C\u038E-\u03A1\u03A3-\u03F5]|[\u03F7-\u0481\u048A-\u0527\u0531-\u0556\u0559\u0561-\u0587\u05D0-\u05EA]|[\u05F0-\u05F2\u0620-\u064A\u066E\u066F\u0671-\u06D3\u06D5\u06E5\u06E6\u06EE]|[\u06EF\u06FA-\u06FC\u06FF\u0710\u0712-\u072F\u074D-\u07A5\u07B1\u07CA-\u07EA]|[\u07F4\u07F5\u07FA\u0800-\u0815\u081A\u0824\u0828\u0840-\u0858\u08A0]|[\u08A2-\u08AC\u0904-\u0939\u093D\u0950\u0958-\u0961\u0971-\u0977]|[\u0979-\u097F\u0985-\u098C\u098F\u0990\u0993-\u09A8\u09AA-\u09B0\u09B2]|[\u09B6-\u09B9\u09BD\u09CE\u09DC\u09DD\u09DF-\u09E1\u09F0\u09F1\u0A05-\u0A0A]|[\u0A0F\u0A10\u0A13-\u0A28\u0A2A-\u0A30\u0A32\u0A33\u0A35\u0A36\u0A38\u0A39]|[\u0A59-\u0A5C\u0A5E\u0A72-\u0A74\u0A85-\u0A8D\u0A8F-\u0A91\u0A93-\u0AA8]|[\u0AAA-\u0AB0\u0AB2\u0AB3\u0AB5-\u0AB9\u0ABD\u0AD0\u0AE0\u0AE1\u0B05-\u0B0C]|[\u0B0F\u0B10\u0B13-\u0B28\u0B2A-\u0B30\u0B32\u0B33\u0B35-\u0B39\u0B3D\u0B5C]|[\u0B5D\u0B5F-\u0B61\u0B71\u0B83\u0B85-\u0B8A\u0B8E-\u0B90\u0B92-\u0B95\u0B99]|[\u0B9A\u0B9C\u0B9E\u0B9F\u0BA3\u0BA4\u0BA8-\u0BAA\u0BAE-\u0BB9\u0BD0]|[\u0C05-\u0C0C\u0C0E-\u0C10\u0C12-\u0C28\u0C2A-\u0C33\u0C35-\u0C39\u0C3D]|[\u0C58\u0C59\u0C60\u0C61\u0C85-\u0C8C\u0C8E-\u0C90\u0C92-\u0CA8\u0CAA-\u0CB3]|[\u0CB5-\u0CB9\u0CBD\u0CDE\u0CE0\u0CE1\u0CF1\u0CF2\u0D05-\u0D0C\u0D0E-\u0D10]|[\u0D12-\u0D3A\u0D3D\u0D4E\u0D60\u0D61\u0D7A-\u0D7F\u0D85-\u0D96\u0D9A-\u0DB1]|[\u0DB3-\u0DBB\u0DBD\u0DC0-\u0DC6\u0E01-\u0E30\u0E32\u0E33\u0E40-\u0E46\u0E81]|[\u0E82\u0E84\u0E87\u0E88\u0E8A\u0E8D\u0E94-\u0E97\u0E99-\u0E9F\u0EA1-\u0EA3]|[\u0EA5\u0EA7\u0EAA\u0EAB\u0EAD-\u0EB0\u0EB2\u0EB3\u0EBD\u0EC0-\u0EC4\u0EC6]|[\u0EDC-\u0EDF\u0F00\u0F40-\u0F47\u0F49-\u0F6C\u0F88-\u0F8C\u1000-\u102A]|[\u103F\u1050-\u1055\u105A-\u105D\u1061\u1065\u1066\u106E-\u1070\u1075-\u1081]|[\u108E\u10A0-\u10C5\u10C7\u10CD\u10D0-\u10FA\u10FC-\u1248\u124A-\u124D]|[\u1250-\u1256\u1258\u125A-\u125D\u1260-\u1288\u128A-\u128D\u1290-\u12B0]|[\u12B2-\u12B5\u12B8-\u12BE\u12C0\u12C2-\u12C5\u12C8-\u12D6\u12D8-\u1310]|[\u1312-\u1315\u1318-\u135A\u1380-\u138F\u13A0-\u13F4\u1401-\u166C]|[\u166F-\u167F\u1681-\u169A\u16A0-\u16EA\u1700-\u170C\u170E-\u1711]|[\u1720-\u1731\u1740-\u1751\u1760-\u176C\u176E-\u1770\u1780-\u17B3\u17D7]|[\u17DC\u1820-\u1877\u1880-\u18A8\u18AA\u18B0-\u18F5\u1900-\u191C]|[\u1950-\u196D\u1970-\u1974\u1980-\u19AB\u19C1-\u19C7\u1A00-\u1A16]|[\u1A20-\u1A54\u1AA7\u1B05-\u1B33\u1B45-\u1B4B\u1B83-\u1BA0\u1BAE\u1BAF]|[\u1BBA-\u1BE5\u1C00-\u1C23\u1C4D-\u1C4F\u1C5A-\u1C7D\u1CE9-\u1CEC]|[\u1CEE-\u1CF1\u1CF5\u1CF6\u1D00-\u1DBF\u1E00-\u1F15\u1F18-\u1F1D]|[\u1F20-\u1F45\u1F48-\u1F4D\u1F50-\u1F57\u1F59\u1F5B\u1F5D\u1F5F-\u1F7D]|[\u1F80-\u1FB4\u1FB6-\u1FBC\u1FBE\u1FC2-\u1FC4\u1FC6-\u1FCC\u1FD0-\u1FD3]|[\u1FD6-\u1FDB\u1FE0-\u1FEC\u1FF2-\u1FF4\u1FF6-\u1FFC\u2071\u207F]|[\u2090-\u209C\u2102\u2107\u210A-\u2113\u2115\u2119-\u211D\u2124\u2126\u2128]|[\u212A-\u212D\u212F-\u2139\u213C-\u213F\u2145-\u2149\u214E\u2183\u2184]|[\u2C00-\u2C2E\u2C30-\u2C5E\u2C60-\u2CE4\u2CEB-\u2CEE\u2CF2\u2CF3]|[\u2D00-\u2D25\u2D27\u2D2D\u2D30-\u2D67\u2D6F\u2D80-\u2D96\u2DA0-\u2DA6]|[\u2DA8-\u2DAE\u2DB0-\u2DB6\u2DB8-\u2DBE\u2DC0-\u2DC6\u2DC8-\u2DCE]|[\u2DD0-\u2DD6\u2DD8-\u2DDE\u2E2F\u3005\u3006\u3031-\u3035\u303B\u303C]|[\u3041-\u3096\u309D-\u309F\u30A1-\u30FA\u30FC-\u30FF\u3105-\u312D]|[\u3131-\u318E\u31A0-\u31BA\u31F0-\u31FF\u3400-\u4DB5\u4E00-\u9FCC]|[\uA000-\uA48C\uA4D0-\uA4FD\uA500-\uA60C\uA610-\uA61F\uA62A\uA62B]|[\uA640-\uA66E\uA67F-\uA697\uA6A0-\uA6E5\uA717-\uA71F\uA722-\uA788]|[\uA78B-\uA78E\uA790-\uA793\uA7A0-\uA7AA\uA7F8-\uA801\uA803-\uA805]|[\uA807-\uA80A\uA80C-\uA822\uA840-\uA873\uA882-\uA8B3\uA8F2-\uA8F7\uA8FB]|[\uA90A-\uA925\uA930-\uA946\uA960-\uA97C\uA984-\uA9B2\uA9CF\uAA00-\uAA28]|[\uAA40-\uAA42\uAA44-\uAA4B\uAA60-\uAA76\uAA7A\uAA80-\uAAAF\uAAB1\uAAB5]|[\uAAB6\uAAB9-\uAABD\uAAC0\uAAC2\uAADB-\uAADD\uAAE0-\uAAEA\uAAF2-\uAAF4]|[\uAB01-\uAB06\uAB09-\uAB0E\uAB11-\uAB16\uAB20-\uAB26\uAB28-\uAB2E]|[\uABC0-\uABE2\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\uF900-\uFA6D]|[\uFA70-\uFAD9\uFB00-\uFB06\uFB13-\uFB17\uFB1D\uFB1F-\uFB28\uFB2A-\uFB36]|[\uFB38-\uFB3C\uFB3E\uFB40\uFB41\uFB43\uFB44\uFB46-\uFBB1\uFBD3-\uFD3D]|[\uFD50-\uFD8F\uFD92-\uFDC7\uFDF0-\uFDFB\uFE70-\uFE74\uFE76-\uFEFC]|[\uFF21-\uFF3A\uFF41-\uFF5A\uFF66-\uFFBE\uFFC2-\uFFC7\uFFCA-\uFFCF]|[\uFFD2-\uFFD7\uFFDA-\uFFDC_])/, /^(?:\|)/, /^(?:\()/, /^(?:\))/, /^(?:\[)/, /^(?:\])/, /^(?:\{)/, /^(?:\})/, /^(?:")/, /^(?:\s)/, /^(?:\n)/, /^(?:$)/], | ||
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, 39, 40, 41, 42], 'inclusive': true}} | ||
}) | ||
return lexer | ||
})() | ||
parser.lexer = lexer | ||
function Parser () { | ||
this.yy = {} | ||
} | ||
Parser.prototype = parser; parser.Parser = Parser | ||
return new Parser() | ||
})() | ||
stateStackSize:function stateStackSize() { | ||
return this.conditionStack.length; | ||
}, | ||
options: {}, | ||
performAction: function anonymous(yy,yy_,$avoiding_name_collisions,YY_START) { | ||
var YYSTATE=YY_START; | ||
switch($avoiding_name_collisions) { | ||
case 0:return 'STYLE'; | ||
break; | ||
case 1:return 'LINKSTYLE'; | ||
break; | ||
case 2:return 'CLASSDEF'; | ||
break; | ||
case 3:return 'CLASS'; | ||
break; | ||
case 4:return 'CLICK'; | ||
break; | ||
case 5:return 12; | ||
break; | ||
case 6:return 13; | ||
break; | ||
case 7:return 47; | ||
break; | ||
case 8:return 35; | ||
break; | ||
case 9:return 36; | ||
break; | ||
case 10:return 'DIR'; | ||
break; | ||
case 11:return 'DIR'; | ||
break; | ||
case 12:return 'DIR'; | ||
break; | ||
case 13:return 'DIR'; | ||
break; | ||
case 14:return 'DIR'; | ||
break; | ||
case 15:return 'DIR'; | ||
break; | ||
case 16:return 17; | ||
break; | ||
case 17:return 23; | ||
break; | ||
case 18:return 18; | ||
break; | ||
case 19:return 28; | ||
break; | ||
case 20:return 40; | ||
break; | ||
case 21:return 32; | ||
break; | ||
case 22:return 21; | ||
break; | ||
case 23:return 22; | ||
break; | ||
case 24:return 'ARROW_CROSS'; | ||
break; | ||
case 25:return 57; | ||
break; | ||
case 26:return 'ARROW_CIRCLE'; | ||
break; | ||
case 27:return 58; | ||
break; | ||
case 28:return 25; | ||
break; | ||
case 29:return 19; | ||
break; | ||
case 30:return 20; | ||
break; | ||
case 31:return 16; | ||
break; | ||
case 32:return 'PIPE'; | ||
break; | ||
case 33:return 'PS'; | ||
break; | ||
case 34:return 'PE'; | ||
break; | ||
case 35:return 37; | ||
break; | ||
case 36:return 39; | ||
break; | ||
case 37:return 8 | ||
break; | ||
case 38:return 10 | ||
break; | ||
case 39:return 'QUOTE'; | ||
break; | ||
case 40:return 24; | ||
break; | ||
case 41:return 'NEWLINE'; | ||
break; | ||
case 42:return 5; | ||
break; | ||
} | ||
}, | ||
rules: [/^(?:style\b)/,/^(?:linkStyle\b)/,/^(?:classDef\b)/,/^(?:class\b)/,/^(?:click\b)/,/^(?:graph\b)/,/^(?:digraph\b)/,/^(?:subgraph\b)/,/^(?:node\b)/,/^(?:edge\b)/,/^(?:LR\b)/,/^(?:RL\b)/,/^(?:TB\b)/,/^(?:BT\b)/,/^(?:TD\b)/,/^(?:BR\b)/,/^(?:[0-9])/,/^(?:#)/,/^(?::)/,/^(?:;)/,/^(?:,)/,/^(?:=)/,/^(?:\*)/,/^(?:\.)/,/^(?:--[x])/,/^(?:->)/,/^(?:--[o])/,/^(?:--)/,/^(?:-)/,/^(?:\+)/,/^(?:=)/,/^(?:[\u0021-\u0027\u002A-\u002E\u003F\u0041-\u005A\u0061-\u007A\u00AA\u00B5\u00BA\u00C0-\u00D6\u00D8-\u00F6]|[\u00F8-\u02C1\u02C6-\u02D1\u02E0-\u02E4\u02EC\u02EE\u0370-\u0374\u0376\u0377]|[\u037A-\u037D\u0386\u0388-\u038A\u038C\u038E-\u03A1\u03A3-\u03F5]|[\u03F7-\u0481\u048A-\u0527\u0531-\u0556\u0559\u0561-\u0587\u05D0-\u05EA]|[\u05F0-\u05F2\u0620-\u064A\u066E\u066F\u0671-\u06D3\u06D5\u06E5\u06E6\u06EE]|[\u06EF\u06FA-\u06FC\u06FF\u0710\u0712-\u072F\u074D-\u07A5\u07B1\u07CA-\u07EA]|[\u07F4\u07F5\u07FA\u0800-\u0815\u081A\u0824\u0828\u0840-\u0858\u08A0]|[\u08A2-\u08AC\u0904-\u0939\u093D\u0950\u0958-\u0961\u0971-\u0977]|[\u0979-\u097F\u0985-\u098C\u098F\u0990\u0993-\u09A8\u09AA-\u09B0\u09B2]|[\u09B6-\u09B9\u09BD\u09CE\u09DC\u09DD\u09DF-\u09E1\u09F0\u09F1\u0A05-\u0A0A]|[\u0A0F\u0A10\u0A13-\u0A28\u0A2A-\u0A30\u0A32\u0A33\u0A35\u0A36\u0A38\u0A39]|[\u0A59-\u0A5C\u0A5E\u0A72-\u0A74\u0A85-\u0A8D\u0A8F-\u0A91\u0A93-\u0AA8]|[\u0AAA-\u0AB0\u0AB2\u0AB3\u0AB5-\u0AB9\u0ABD\u0AD0\u0AE0\u0AE1\u0B05-\u0B0C]|[\u0B0F\u0B10\u0B13-\u0B28\u0B2A-\u0B30\u0B32\u0B33\u0B35-\u0B39\u0B3D\u0B5C]|[\u0B5D\u0B5F-\u0B61\u0B71\u0B83\u0B85-\u0B8A\u0B8E-\u0B90\u0B92-\u0B95\u0B99]|[\u0B9A\u0B9C\u0B9E\u0B9F\u0BA3\u0BA4\u0BA8-\u0BAA\u0BAE-\u0BB9\u0BD0]|[\u0C05-\u0C0C\u0C0E-\u0C10\u0C12-\u0C28\u0C2A-\u0C33\u0C35-\u0C39\u0C3D]|[\u0C58\u0C59\u0C60\u0C61\u0C85-\u0C8C\u0C8E-\u0C90\u0C92-\u0CA8\u0CAA-\u0CB3]|[\u0CB5-\u0CB9\u0CBD\u0CDE\u0CE0\u0CE1\u0CF1\u0CF2\u0D05-\u0D0C\u0D0E-\u0D10]|[\u0D12-\u0D3A\u0D3D\u0D4E\u0D60\u0D61\u0D7A-\u0D7F\u0D85-\u0D96\u0D9A-\u0DB1]|[\u0DB3-\u0DBB\u0DBD\u0DC0-\u0DC6\u0E01-\u0E30\u0E32\u0E33\u0E40-\u0E46\u0E81]|[\u0E82\u0E84\u0E87\u0E88\u0E8A\u0E8D\u0E94-\u0E97\u0E99-\u0E9F\u0EA1-\u0EA3]|[\u0EA5\u0EA7\u0EAA\u0EAB\u0EAD-\u0EB0\u0EB2\u0EB3\u0EBD\u0EC0-\u0EC4\u0EC6]|[\u0EDC-\u0EDF\u0F00\u0F40-\u0F47\u0F49-\u0F6C\u0F88-\u0F8C\u1000-\u102A]|[\u103F\u1050-\u1055\u105A-\u105D\u1061\u1065\u1066\u106E-\u1070\u1075-\u1081]|[\u108E\u10A0-\u10C5\u10C7\u10CD\u10D0-\u10FA\u10FC-\u1248\u124A-\u124D]|[\u1250-\u1256\u1258\u125A-\u125D\u1260-\u1288\u128A-\u128D\u1290-\u12B0]|[\u12B2-\u12B5\u12B8-\u12BE\u12C0\u12C2-\u12C5\u12C8-\u12D6\u12D8-\u1310]|[\u1312-\u1315\u1318-\u135A\u1380-\u138F\u13A0-\u13F4\u1401-\u166C]|[\u166F-\u167F\u1681-\u169A\u16A0-\u16EA\u1700-\u170C\u170E-\u1711]|[\u1720-\u1731\u1740-\u1751\u1760-\u176C\u176E-\u1770\u1780-\u17B3\u17D7]|[\u17DC\u1820-\u1877\u1880-\u18A8\u18AA\u18B0-\u18F5\u1900-\u191C]|[\u1950-\u196D\u1970-\u1974\u1980-\u19AB\u19C1-\u19C7\u1A00-\u1A16]|[\u1A20-\u1A54\u1AA7\u1B05-\u1B33\u1B45-\u1B4B\u1B83-\u1BA0\u1BAE\u1BAF]|[\u1BBA-\u1BE5\u1C00-\u1C23\u1C4D-\u1C4F\u1C5A-\u1C7D\u1CE9-\u1CEC]|[\u1CEE-\u1CF1\u1CF5\u1CF6\u1D00-\u1DBF\u1E00-\u1F15\u1F18-\u1F1D]|[\u1F20-\u1F45\u1F48-\u1F4D\u1F50-\u1F57\u1F59\u1F5B\u1F5D\u1F5F-\u1F7D]|[\u1F80-\u1FB4\u1FB6-\u1FBC\u1FBE\u1FC2-\u1FC4\u1FC6-\u1FCC\u1FD0-\u1FD3]|[\u1FD6-\u1FDB\u1FE0-\u1FEC\u1FF2-\u1FF4\u1FF6-\u1FFC\u2071\u207F]|[\u2090-\u209C\u2102\u2107\u210A-\u2113\u2115\u2119-\u211D\u2124\u2126\u2128]|[\u212A-\u212D\u212F-\u2139\u213C-\u213F\u2145-\u2149\u214E\u2183\u2184]|[\u2C00-\u2C2E\u2C30-\u2C5E\u2C60-\u2CE4\u2CEB-\u2CEE\u2CF2\u2CF3]|[\u2D00-\u2D25\u2D27\u2D2D\u2D30-\u2D67\u2D6F\u2D80-\u2D96\u2DA0-\u2DA6]|[\u2DA8-\u2DAE\u2DB0-\u2DB6\u2DB8-\u2DBE\u2DC0-\u2DC6\u2DC8-\u2DCE]|[\u2DD0-\u2DD6\u2DD8-\u2DDE\u2E2F\u3005\u3006\u3031-\u3035\u303B\u303C]|[\u3041-\u3096\u309D-\u309F\u30A1-\u30FA\u30FC-\u30FF\u3105-\u312D]|[\u3131-\u318E\u31A0-\u31BA\u31F0-\u31FF\u3400-\u4DB5\u4E00-\u9FCC]|[\uA000-\uA48C\uA4D0-\uA4FD\uA500-\uA60C\uA610-\uA61F\uA62A\uA62B]|[\uA640-\uA66E\uA67F-\uA697\uA6A0-\uA6E5\uA717-\uA71F\uA722-\uA788]|[\uA78B-\uA78E\uA790-\uA793\uA7A0-\uA7AA\uA7F8-\uA801\uA803-\uA805]|[\uA807-\uA80A\uA80C-\uA822\uA840-\uA873\uA882-\uA8B3\uA8F2-\uA8F7\uA8FB]|[\uA90A-\uA925\uA930-\uA946\uA960-\uA97C\uA984-\uA9B2\uA9CF\uAA00-\uAA28]|[\uAA40-\uAA42\uAA44-\uAA4B\uAA60-\uAA76\uAA7A\uAA80-\uAAAF\uAAB1\uAAB5]|[\uAAB6\uAAB9-\uAABD\uAAC0\uAAC2\uAADB-\uAADD\uAAE0-\uAAEA\uAAF2-\uAAF4]|[\uAB01-\uAB06\uAB09-\uAB0E\uAB11-\uAB16\uAB20-\uAB26\uAB28-\uAB2E]|[\uABC0-\uABE2\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\uF900-\uFA6D]|[\uFA70-\uFAD9\uFB00-\uFB06\uFB13-\uFB17\uFB1D\uFB1F-\uFB28\uFB2A-\uFB36]|[\uFB38-\uFB3C\uFB3E\uFB40\uFB41\uFB43\uFB44\uFB46-\uFBB1\uFBD3-\uFD3D]|[\uFD50-\uFD8F\uFD92-\uFDC7\uFDF0-\uFDFB\uFE70-\uFE74\uFE76-\uFEFC]|[\uFF21-\uFF3A\uFF41-\uFF5A\uFF66-\uFFBE\uFFC2-\uFFC7\uFFCA-\uFFCF]|[\uFFD2-\uFFD7\uFFDA-\uFFDC_])/,/^(?:\|)/,/^(?:\()/,/^(?:\))/,/^(?:\[)/,/^(?:\])/,/^(?:\{)/,/^(?:\})/,/^(?:")/,/^(?:\s)/,/^(?:\n)/,/^(?:$)/], | ||
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,39,40,41,42],"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) } | ||
exports.main = function commonjsMain (args) { | ||
exports.parser = parser; | ||
exports.Parser = parser.Parser; | ||
exports.parse = function () { return parser.parse.apply(parser, arguments); }; | ||
exports.main = function commonjsMain(args) { | ||
if (!args[1]) { | ||
console.log('Usage: ' + args[0] + ' FILE') | ||
process.exit(1) | ||
console.log('Usage: '+args[0]+' FILE'); | ||
process.exit(1); | ||
} | ||
var source = require('fs').readFileSync(require('path').normalize(args[1]), 'utf8') | ||
return exports.parser.parse(source) | ||
} | ||
if (typeof module !== 'undefined' && require.main === module) { | ||
exports.main(process.argv.slice(1)) | ||
} | ||
var source = require('fs').readFileSync(require('path').normalize(args[1]), "utf8"); | ||
return exports.parser.parse(source); | ||
}; | ||
if (typeof module !== 'undefined' && require.main === module) { | ||
exports.main(process.argv.slice(1)); | ||
} | ||
} |
@@ -53,2 +53,3 @@ /* parser generated by jison 0.4.17 */ | ||
token location info (@$, _$, etc.): { | ||
@@ -62,2 +63,3 @@ first_line: n, | ||
the parseError function receives a 'hash' object with these members for lexer and parser errors: { | ||
@@ -74,887 +76,893 @@ text: (matched text) | ||
*/ | ||
var parser = (function () { | ||
var o = function (k, v, o, l) { for (o = o || {}, l = k.length; l--; o[k[l]] = v);return o }, $V0 = [1, 4], $V1 = [1, 3], $V2 = [1, 5], $V3 = [1, 8, 9, 10, 11, 13, 18, 30, 46, 71, 72, 73, 74, 75, 81, 86, 88, 89, 91, 92, 94, 95, 96, 97, 98], $V4 = [2, 2], $V5 = [1, 12], $V6 = [1, 13], $V7 = [1, 14], $V8 = [1, 15], $V9 = [1, 31], $Va = [1, 33], $Vb = [1, 22], $Vc = [1, 34], $Vd = [1, 24], $Ve = [1, 25], $Vf = [1, 26], $Vg = [1, 27], $Vh = [1, 28], $Vi = [1, 38], $Vj = [1, 40], $Vk = [1, 35], $Vl = [1, 39], $Vm = [1, 45], $Vn = [1, 44], $Vo = [1, 36], $Vp = [1, 37], $Vq = [1, 41], $Vr = [1, 42], $Vs = [1, 43], $Vt = [1, 8, 9, 10, 11, 13, 18, 30, 32, 46, 71, 72, 73, 74, 75, 81, 86, 88, 89, 91, 92, 94, 95, 96, 97, 98], $Vu = [1, 53], $Vv = [1, 52], $Vw = [1, 54], $Vx = [1, 72], $Vy = [1, 80], $Vz = [1, 81], $VA = [1, 66], $VB = [1, 65], $VC = [1, 85], $VD = [1, 84], $VE = [1, 82], $VF = [1, 83], $VG = [1, 73], $VH = [1, 68], $VI = [1, 67], $VJ = [1, 63], $VK = [1, 75], $VL = [1, 76], $VM = [1, 77], $VN = [1, 78], $VO = [1, 79], $VP = [1, 70], $VQ = [1, 69], $VR = [8, 9, 11], $VS = [8, 9, 11, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64], $VT = [1, 115], $VU = [8, 9, 10, 11, 13, 15, 18, 36, 38, 40, 42, 46, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 81, 86, 88, 89, 91, 92, 94, 95, 96, 97, 98], $VV = [8, 9, 10, 11, 12, 13, 15, 16, 17, 18, 30, 32, 36, 37, 38, 39, 40, 41, 42, 43, 46, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 71, 72, 73, 74, 75, 78, 81, 84, 86, 88, 89, 91, 92, 94, 95, 96, 97, 98], $VW = [1, 117], $VX = [1, 118], $VY = [8, 9, 10, 11, 13, 18, 30, 32, 46, 71, 72, 73, 74, 75, 81, 86, 88, 89, 91, 92, 94, 95, 96, 97, 98], $VZ = [8, 9, 10, 11, 12, 13, 15, 16, 17, 18, 30, 32, 37, 39, 41, 43, 46, 50, 51, 52, 53, 54, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 71, 72, 73, 74, 75, 78, 81, 84, 86, 88, 89, 91, 92, 94, 95, 96, 97, 98], $V_ = [13, 18, 46, 81, 86, 88, 89, 91, 92, 94, 95, 96, 97, 98], $V$ = [13, 18, 46, 49, 65, 81, 86, 88, 89, 91, 92, 94, 95, 96, 97, 98], $V01 = [1, 191], $V11 = [1, 188], $V21 = [1, 195], $V31 = [1, 192], $V41 = [1, 189], $V51 = [1, 196], $V61 = [1, 186], $V71 = [1, 187], $V81 = [1, 190], $V91 = [1, 193], $Va1 = [1, 194], $Vb1 = [1, 213], $Vc1 = [8, 9, 11, 86], $Vd1 = [8, 9, 10, 11, 46, 71, 80, 81, 84, 86, 88, 89, 90, 91, 92] | ||
var parser = {trace: function trace () { }, | ||
yy: {}, | ||
symbols_: {'error': 2, 'mermaidDoc': 3, 'graphConfig': 4, 'document': 5, 'line': 6, 'statement': 7, 'SEMI': 8, 'NEWLINE': 9, 'SPACE': 10, 'EOF': 11, 'GRAPH': 12, 'DIR': 13, 'FirstStmtSeperator': 14, 'TAGEND': 15, 'TAGSTART': 16, 'UP': 17, 'DOWN': 18, 'ending': 19, 'endToken': 20, 'spaceList': 21, 'spaceListNewline': 22, 'verticeStatement': 23, 'separator': 24, 'styleStatement': 25, 'linkStyleStatement': 26, 'classDefStatement': 27, 'classStatement': 28, 'clickStatement': 29, 'subgraph': 30, 'text': 31, 'end': 32, 'vertex': 33, 'link': 34, 'alphaNum': 35, 'SQS': 36, 'SQE': 37, 'PS': 38, 'PE': 39, '(-': 40, '-)': 41, 'DIAMOND_START': 42, 'DIAMOND_STOP': 43, 'alphaNumStatement': 44, 'alphaNumToken': 45, 'MINUS': 46, 'linkStatement': 47, 'arrowText': 48, 'TESTSTR': 49, '--': 50, 'ARROW_POINT': 51, 'ARROW_CIRCLE': 52, 'ARROW_CROSS': 53, 'ARROW_OPEN': 54, '-.': 55, 'DOTTED_ARROW_POINT': 56, 'DOTTED_ARROW_CIRCLE': 57, 'DOTTED_ARROW_CROSS': 58, 'DOTTED_ARROW_OPEN': 59, '==': 60, 'THICK_ARROW_POINT': 61, 'THICK_ARROW_CIRCLE': 62, 'THICK_ARROW_CROSS': 63, 'THICK_ARROW_OPEN': 64, 'PIPE': 65, 'textToken': 66, 'STR': 67, 'commentText': 68, 'commentToken': 69, 'keywords': 70, 'STYLE': 71, 'LINKSTYLE': 72, 'CLASSDEF': 73, 'CLASS': 74, 'CLICK': 75, 'textNoTags': 76, 'textNoTagsToken': 77, 'DEFAULT': 78, 'stylesOpt': 79, 'HEX': 80, 'NUM': 81, 'INTERPOLATE': 82, 'commentStatement': 83, 'PCT': 84, 'style': 85, 'COMMA': 86, 'styleComponent': 87, 'ALPHA': 88, 'COLON': 89, 'UNIT': 90, 'BRKT': 91, 'DOT': 92, 'graphCodeTokens': 93, 'PUNCTUATION': 94, 'UNICODE_TEXT': 95, 'PLUS': 96, 'EQUALS': 97, 'MULT': 98, 'TAG_START': 99, 'TAG_END': 100, 'QUOTE': 101, '$accept': 0, '$end': 1}, | ||
terminals_: {2: 'error', 8: 'SEMI', 9: 'NEWLINE', 10: 'SPACE', 11: 'EOF', 12: 'GRAPH', 13: 'DIR', 15: 'TAGEND', 16: 'TAGSTART', 17: 'UP', 18: 'DOWN', 30: 'subgraph', 32: 'end', 36: 'SQS', 37: 'SQE', 38: 'PS', 39: 'PE', 40: '(-', 41: '-)', 42: 'DIAMOND_START', 43: 'DIAMOND_STOP', 46: 'MINUS', 49: 'TESTSTR', 50: '--', 51: 'ARROW_POINT', 52: 'ARROW_CIRCLE', 53: 'ARROW_CROSS', 54: 'ARROW_OPEN', 55: '-.', 56: 'DOTTED_ARROW_POINT', 57: 'DOTTED_ARROW_CIRCLE', 58: 'DOTTED_ARROW_CROSS', 59: 'DOTTED_ARROW_OPEN', 60: '==', 61: 'THICK_ARROW_POINT', 62: 'THICK_ARROW_CIRCLE', 63: 'THICK_ARROW_CROSS', 64: 'THICK_ARROW_OPEN', 65: 'PIPE', 67: 'STR', 71: 'STYLE', 72: 'LINKSTYLE', 73: 'CLASSDEF', 74: 'CLASS', 75: 'CLICK', 78: 'DEFAULT', 80: 'HEX', 81: 'NUM', 82: 'INTERPOLATE', 84: 'PCT', 86: 'COMMA', 88: 'ALPHA', 89: 'COLON', 90: 'UNIT', 91: 'BRKT', 92: 'DOT', 94: 'PUNCTUATION', 95: 'UNICODE_TEXT', 96: 'PLUS', 97: 'EQUALS', 98: 'MULT', 99: 'TAG_START', 100: 'TAG_END', 101: 'QUOTE'}, | ||
productions_: [0, [3, 2], [5, 0], [5, 2], [6, 1], [6, 1], [6, 1], [6, 1], [6, 1], [4, 2], [4, 2], [4, 4], [4, 4], [4, 4], [4, 4], [4, 4], [19, 2], [19, 1], [20, 1], [20, 1], [20, 1], [14, 1], [14, 1], [14, 2], [22, 2], [22, 2], [22, 1], [22, 1], [21, 2], [21, 1], [7, 2], [7, 2], [7, 2], [7, 2], [7, 2], [7, 2], [7, 5], [7, 4], [24, 1], [24, 1], [24, 1], [23, 3], [23, 1], [33, 4], [33, 5], [33, 6], [33, 7], [33, 4], [33, 5], [33, 4], [33, 5], [33, 4], [33, 5], [33, 4], [33, 5], [33, 1], [33, 2], [35, 1], [35, 2], [44, 1], [44, 1], [44, 1], [44, 1], [34, 2], [34, 3], [34, 3], [34, 1], [34, 3], [34, 3], [34, 3], [34, 3], [34, 3], [34, 3], [34, 3], [34, 3], [34, 3], [34, 3], [34, 3], [34, 3], [47, 1], [47, 1], [47, 1], [47, 1], [47, 1], [47, 1], [47, 1], [47, 1], [47, 1], [47, 1], [47, 1], [47, 1], [48, 3], [31, 1], [31, 2], [31, 1], [68, 1], [68, 2], [70, 1], [70, 1], [70, 1], [70, 1], [70, 1], [70, 1], [70, 1], [70, 1], [70, 1], [70, 1], [70, 1], [76, 1], [76, 2], [27, 5], [27, 5], [28, 5], [29, 5], [29, 7], [29, 5], [29, 7], [25, 5], [25, 5], [26, 5], [26, 5], [26, 9], [26, 9], [26, 7], [26, 7], [83, 3], [79, 1], [79, 3], [85, 1], [85, 2], [87, 1], [87, 1], [87, 1], [87, 1], [87, 1], [87, 1], [87, 1], [87, 1], [87, 1], [87, 1], [87, 1], [69, 1], [69, 1], [66, 1], [66, 1], [66, 1], [66, 1], [66, 1], [66, 1], [66, 1], [77, 1], [77, 1], [77, 1], [77, 1], [45, 1], [45, 1], [45, 1], [45, 1], [45, 1], [45, 1], [45, 1], [45, 1], [45, 1], [45, 1], [45, 1], [93, 1], [93, 1], [93, 1], [93, 1], [93, 1], [93, 1], [93, 1], [93, 1], [93, 1], [93, 1], [93, 1], [93, 1], [93, 1], [93, 1], [93, 1]], | ||
performAction: function anonymous (yytext, yyleng, yylineno, yy, yystate /* action[1] */, $$ /* vstack */, _$ /* lstack */) { | ||
var parser = (function(){ | ||
var o=function(k,v,o,l){for(o=o||{},l=k.length;l--;o[k[l]]=v);return o},$V0=[1,4],$V1=[1,3],$V2=[1,5],$V3=[1,8,9,10,11,13,18,30,46,71,72,73,74,75,81,86,88,89,91,92,94,95,96,97,98],$V4=[2,2],$V5=[1,12],$V6=[1,13],$V7=[1,14],$V8=[1,15],$V9=[1,31],$Va=[1,33],$Vb=[1,22],$Vc=[1,34],$Vd=[1,24],$Ve=[1,25],$Vf=[1,26],$Vg=[1,27],$Vh=[1,28],$Vi=[1,38],$Vj=[1,40],$Vk=[1,35],$Vl=[1,39],$Vm=[1,45],$Vn=[1,44],$Vo=[1,36],$Vp=[1,37],$Vq=[1,41],$Vr=[1,42],$Vs=[1,43],$Vt=[1,8,9,10,11,13,18,30,32,46,71,72,73,74,75,81,86,88,89,91,92,94,95,96,97,98],$Vu=[1,53],$Vv=[1,52],$Vw=[1,54],$Vx=[1,72],$Vy=[1,80],$Vz=[1,81],$VA=[1,66],$VB=[1,65],$VC=[1,85],$VD=[1,84],$VE=[1,82],$VF=[1,83],$VG=[1,73],$VH=[1,68],$VI=[1,67],$VJ=[1,63],$VK=[1,75],$VL=[1,76],$VM=[1,77],$VN=[1,78],$VO=[1,79],$VP=[1,70],$VQ=[1,69],$VR=[8,9,11],$VS=[8,9,11,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64],$VT=[1,115],$VU=[8,9,10,11,13,15,18,36,38,40,42,46,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,81,86,88,89,91,92,94,95,96,97,98],$VV=[8,9,10,11,12,13,15,16,17,18,30,32,36,37,38,39,40,41,42,43,46,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,71,72,73,74,75,78,81,84,86,88,89,91,92,94,95,96,97,98],$VW=[1,117],$VX=[1,118],$VY=[8,9,10,11,13,18,30,32,46,71,72,73,74,75,81,86,88,89,91,92,94,95,96,97,98],$VZ=[8,9,10,11,12,13,15,16,17,18,30,32,37,39,41,43,46,50,51,52,53,54,56,57,58,59,60,61,62,63,64,65,71,72,73,74,75,78,81,84,86,88,89,91,92,94,95,96,97,98],$V_=[13,18,46,81,86,88,89,91,92,94,95,96,97,98],$V$=[13,18,46,49,65,81,86,88,89,91,92,94,95,96,97,98],$V01=[1,191],$V11=[1,188],$V21=[1,195],$V31=[1,192],$V41=[1,189],$V51=[1,196],$V61=[1,186],$V71=[1,187],$V81=[1,190],$V91=[1,193],$Va1=[1,194],$Vb1=[1,213],$Vc1=[8,9,11,86],$Vd1=[8,9,10,11,46,71,80,81,84,86,88,89,90,91,92]; | ||
var parser = {trace: function trace() { }, | ||
yy: {}, | ||
symbols_: {"error":2,"mermaidDoc":3,"graphConfig":4,"document":5,"line":6,"statement":7,"SEMI":8,"NEWLINE":9,"SPACE":10,"EOF":11,"GRAPH":12,"DIR":13,"FirstStmtSeperator":14,"TAGEND":15,"TAGSTART":16,"UP":17,"DOWN":18,"ending":19,"endToken":20,"spaceList":21,"spaceListNewline":22,"verticeStatement":23,"separator":24,"styleStatement":25,"linkStyleStatement":26,"classDefStatement":27,"classStatement":28,"clickStatement":29,"subgraph":30,"text":31,"end":32,"vertex":33,"link":34,"alphaNum":35,"SQS":36,"SQE":37,"PS":38,"PE":39,"(-":40,"-)":41,"DIAMOND_START":42,"DIAMOND_STOP":43,"alphaNumStatement":44,"alphaNumToken":45,"MINUS":46,"linkStatement":47,"arrowText":48,"TESTSTR":49,"--":50,"ARROW_POINT":51,"ARROW_CIRCLE":52,"ARROW_CROSS":53,"ARROW_OPEN":54,"-.":55,"DOTTED_ARROW_POINT":56,"DOTTED_ARROW_CIRCLE":57,"DOTTED_ARROW_CROSS":58,"DOTTED_ARROW_OPEN":59,"==":60,"THICK_ARROW_POINT":61,"THICK_ARROW_CIRCLE":62,"THICK_ARROW_CROSS":63,"THICK_ARROW_OPEN":64,"PIPE":65,"textToken":66,"STR":67,"commentText":68,"commentToken":69,"keywords":70,"STYLE":71,"LINKSTYLE":72,"CLASSDEF":73,"CLASS":74,"CLICK":75,"textNoTags":76,"textNoTagsToken":77,"DEFAULT":78,"stylesOpt":79,"HEX":80,"NUM":81,"INTERPOLATE":82,"commentStatement":83,"PCT":84,"style":85,"COMMA":86,"styleComponent":87,"ALPHA":88,"COLON":89,"UNIT":90,"BRKT":91,"DOT":92,"graphCodeTokens":93,"PUNCTUATION":94,"UNICODE_TEXT":95,"PLUS":96,"EQUALS":97,"MULT":98,"TAG_START":99,"TAG_END":100,"QUOTE":101,"$accept":0,"$end":1}, | ||
terminals_: {2:"error",8:"SEMI",9:"NEWLINE",10:"SPACE",11:"EOF",12:"GRAPH",13:"DIR",15:"TAGEND",16:"TAGSTART",17:"UP",18:"DOWN",30:"subgraph",32:"end",36:"SQS",37:"SQE",38:"PS",39:"PE",40:"(-",41:"-)",42:"DIAMOND_START",43:"DIAMOND_STOP",46:"MINUS",49:"TESTSTR",50:"--",51:"ARROW_POINT",52:"ARROW_CIRCLE",53:"ARROW_CROSS",54:"ARROW_OPEN",55:"-.",56:"DOTTED_ARROW_POINT",57:"DOTTED_ARROW_CIRCLE",58:"DOTTED_ARROW_CROSS",59:"DOTTED_ARROW_OPEN",60:"==",61:"THICK_ARROW_POINT",62:"THICK_ARROW_CIRCLE",63:"THICK_ARROW_CROSS",64:"THICK_ARROW_OPEN",65:"PIPE",67:"STR",71:"STYLE",72:"LINKSTYLE",73:"CLASSDEF",74:"CLASS",75:"CLICK",78:"DEFAULT",80:"HEX",81:"NUM",82:"INTERPOLATE",84:"PCT",86:"COMMA",88:"ALPHA",89:"COLON",90:"UNIT",91:"BRKT",92:"DOT",94:"PUNCTUATION",95:"UNICODE_TEXT",96:"PLUS",97:"EQUALS",98:"MULT",99:"TAG_START",100:"TAG_END",101:"QUOTE"}, | ||
productions_: [0,[3,2],[5,0],[5,2],[6,1],[6,1],[6,1],[6,1],[6,1],[4,2],[4,2],[4,4],[4,4],[4,4],[4,4],[4,4],[19,2],[19,1],[20,1],[20,1],[20,1],[14,1],[14,1],[14,2],[22,2],[22,2],[22,1],[22,1],[21,2],[21,1],[7,2],[7,2],[7,2],[7,2],[7,2],[7,2],[7,5],[7,4],[24,1],[24,1],[24,1],[23,3],[23,1],[33,4],[33,5],[33,6],[33,7],[33,4],[33,5],[33,4],[33,5],[33,4],[33,5],[33,4],[33,5],[33,1],[33,2],[35,1],[35,2],[44,1],[44,1],[44,1],[44,1],[34,2],[34,3],[34,3],[34,1],[34,3],[34,3],[34,3],[34,3],[34,3],[34,3],[34,3],[34,3],[34,3],[34,3],[34,3],[34,3],[47,1],[47,1],[47,1],[47,1],[47,1],[47,1],[47,1],[47,1],[47,1],[47,1],[47,1],[47,1],[48,3],[31,1],[31,2],[31,1],[68,1],[68,2],[70,1],[70,1],[70,1],[70,1],[70,1],[70,1],[70,1],[70,1],[70,1],[70,1],[70,1],[76,1],[76,2],[27,5],[27,5],[28,5],[29,5],[29,7],[29,5],[29,7],[25,5],[25,5],[26,5],[26,5],[26,9],[26,9],[26,7],[26,7],[83,3],[79,1],[79,3],[85,1],[85,2],[87,1],[87,1],[87,1],[87,1],[87,1],[87,1],[87,1],[87,1],[87,1],[87,1],[87,1],[69,1],[69,1],[66,1],[66,1],[66,1],[66,1],[66,1],[66,1],[66,1],[77,1],[77,1],[77,1],[77,1],[45,1],[45,1],[45,1],[45,1],[45,1],[45,1],[45,1],[45,1],[45,1],[45,1],[45,1],[93,1],[93,1],[93,1],[93,1],[93,1],[93,1],[93,1],[93,1],[93,1],[93,1],[93,1],[93,1],[93,1],[93,1],[93,1]], | ||
performAction: function anonymous(yytext, yyleng, yylineno, yy, yystate /* action[1] */, $$ /* vstack */, _$ /* lstack */) { | ||
/* this == yyval */ | ||
var $0 = $$.length - 1 | ||
switch (yystate) { | ||
case 2: | ||
this.$ = [] | ||
break | ||
case 3: | ||
var $0 = $$.length - 1; | ||
switch (yystate) { | ||
case 2: | ||
this.$ = []; | ||
break; | ||
case 3: | ||
if ($$[$0] !== []) { | ||
$$[$0 - 1].push($$[$0]) | ||
if($$[$0] !== []){ | ||
$$[$0-1].push($$[$0]); | ||
} | ||
this.$ = $$[$0 - 1] | ||
break | ||
case 4: case 57: case 59: case 60: case 92: case 94: case 95: case 108: | ||
this.$ = $$[$0] | ||
break | ||
case 11: | ||
yy.setDirection($$[$0 - 1]); this.$ = $$[$0 - 1] | ||
break | ||
case 12: | ||
yy.setDirection('LR'); this.$ = $$[$0 - 1] | ||
break | ||
case 13: | ||
yy.setDirection('RL'); this.$ = $$[$0 - 1] | ||
break | ||
case 14: | ||
yy.setDirection('BT'); this.$ = $$[$0 - 1] | ||
break | ||
case 15: | ||
yy.setDirection('TB'); this.$ = $$[$0 - 1] | ||
break | ||
case 30: | ||
this.$ = $$[$0 - 1] | ||
break | ||
case 31: case 32: case 33: case 34: case 35: | ||
this.$ = [] | ||
break | ||
case 36: | ||
this.$ = yy.addSubGraph($$[$0 - 1], $$[$0 - 3]) | ||
break | ||
case 37: | ||
this.$ = yy.addSubGraph($$[$0 - 1], undefined) | ||
break | ||
case 41: | ||
yy.addLink($$[$0 - 2], $$[$0], $$[$0 - 1]); this.$ = [$$[$0 - 2], $$[$0]] | ||
break | ||
case 42: | ||
this.$ = [$$[$0]] | ||
break | ||
case 43: | ||
this.$ = $$[$0 - 3]; yy.addVertex($$[$0 - 3], $$[$0 - 1], 'square') | ||
break | ||
case 44: | ||
this.$ = $$[$0 - 4]; yy.addVertex($$[$0 - 4], $$[$0 - 2], 'square') | ||
break | ||
case 45: | ||
this.$ = $$[$0 - 5]; yy.addVertex($$[$0 - 5], $$[$0 - 2], 'circle') | ||
break | ||
case 46: | ||
this.$ = $$[$0 - 6]; yy.addVertex($$[$0 - 6], $$[$0 - 3], 'circle') | ||
break | ||
case 47: | ||
this.$ = $$[$0 - 3]; yy.addVertex($$[$0 - 3], $$[$0 - 1], 'ellipse') | ||
break | ||
case 48: | ||
this.$ = $$[$0 - 4]; yy.addVertex($$[$0 - 4], $$[$0 - 2], 'ellipse') | ||
break | ||
case 49: | ||
this.$ = $$[$0 - 3]; yy.addVertex($$[$0 - 3], $$[$0 - 1], 'round') | ||
break | ||
case 50: | ||
this.$ = $$[$0 - 4]; yy.addVertex($$[$0 - 4], $$[$0 - 2], 'round') | ||
break | ||
case 51: | ||
this.$ = $$[$0 - 3]; yy.addVertex($$[$0 - 3], $$[$0 - 1], 'diamond') | ||
break | ||
case 52: | ||
this.$ = $$[$0 - 4]; yy.addVertex($$[$0 - 4], $$[$0 - 2], 'diamond') | ||
break | ||
case 53: | ||
this.$ = $$[$0 - 3]; yy.addVertex($$[$0 - 3], $$[$0 - 1], 'odd') | ||
break | ||
case 54: | ||
this.$ = $$[$0 - 4]; yy.addVertex($$[$0 - 4], $$[$0 - 2], 'odd') | ||
break | ||
case 55: | ||
this.$ = $$[$0]; yy.addVertex($$[$0]) | ||
break | ||
case 56: | ||
this.$ = $$[$0 - 1]; yy.addVertex($$[$0 - 1]) | ||
break | ||
case 58: case 93: case 96: case 109: | ||
this.$ = $$[$0 - 1] + '' + $$[$0] | ||
break | ||
case 61: | ||
this.$ = 'v' | ||
break | ||
case 62: | ||
this.$ = '-' | ||
break | ||
case 63: | ||
$$[$0 - 1].text = $$[$0]; this.$ = $$[$0 - 1] | ||
break | ||
case 64: case 65: | ||
$$[$0 - 2].text = $$[$0 - 1]; this.$ = $$[$0 - 2] | ||
break | ||
case 66: | ||
this.$ = $$[$0] | ||
break | ||
case 67: | ||
this.$ = {'type': 'arrow', 'stroke': 'normal', 'text': $$[$0 - 1]} | ||
break | ||
case 68: | ||
this.$ = {'type': 'arrow_circle', 'stroke': 'normal', 'text': $$[$0 - 1]} | ||
break | ||
case 69: | ||
this.$ = {'type': 'arrow_cross', 'stroke': 'normal', 'text': $$[$0 - 1]} | ||
break | ||
case 70: | ||
this.$ = {'type': 'arrow_open', 'stroke': 'normal', 'text': $$[$0 - 1]} | ||
break | ||
case 71: | ||
this.$ = {'type': 'arrow', 'stroke': 'dotted', 'text': $$[$0 - 1]} | ||
break | ||
case 72: | ||
this.$ = {'type': 'arrow_circle', 'stroke': 'dotted', 'text': $$[$0 - 1]} | ||
break | ||
case 73: | ||
this.$ = {'type': 'arrow_cross', 'stroke': 'dotted', 'text': $$[$0 - 1]} | ||
break | ||
case 74: | ||
this.$ = {'type': 'arrow_open', 'stroke': 'dotted', 'text': $$[$0 - 1]} | ||
break | ||
case 75: | ||
this.$ = {'type': 'arrow', 'stroke': 'thick', 'text': $$[$0 - 1]} | ||
break | ||
case 76: | ||
this.$ = {'type': 'arrow_circle', 'stroke': 'thick', 'text': $$[$0 - 1]} | ||
break | ||
case 77: | ||
this.$ = {'type': 'arrow_cross', 'stroke': 'thick', 'text': $$[$0 - 1]} | ||
break | ||
case 78: | ||
this.$ = {'type': 'arrow_open', 'stroke': 'thick', 'text': $$[$0 - 1]} | ||
break | ||
case 79: | ||
this.$ = {'type': 'arrow', 'stroke': 'normal'} | ||
break | ||
case 80: | ||
this.$ = {'type': 'arrow_circle', 'stroke': 'normal'} | ||
break | ||
case 81: | ||
this.$ = {'type': 'arrow_cross', 'stroke': 'normal'} | ||
break | ||
case 82: | ||
this.$ = {'type': 'arrow_open', 'stroke': 'normal'} | ||
break | ||
case 83: | ||
this.$ = {'type': 'arrow', 'stroke': 'dotted'} | ||
break | ||
case 84: | ||
this.$ = {'type': 'arrow_circle', 'stroke': 'dotted'} | ||
break | ||
case 85: | ||
this.$ = {'type': 'arrow_cross', 'stroke': 'dotted'} | ||
break | ||
case 86: | ||
this.$ = {'type': 'arrow_open', 'stroke': 'dotted'} | ||
break | ||
case 87: | ||
this.$ = {'type': 'arrow', 'stroke': 'thick'} | ||
break | ||
case 88: | ||
this.$ = {'type': 'arrow_circle', 'stroke': 'thick'} | ||
break | ||
case 89: | ||
this.$ = {'type': 'arrow_cross', 'stroke': 'thick'} | ||
break | ||
case 90: | ||
this.$ = {'type': 'arrow_open', 'stroke': 'thick'} | ||
break | ||
case 91: | ||
this.$ = $$[$0 - 1] | ||
break | ||
case 110: case 111: | ||
this.$ = $$[$0 - 4]; yy.addClass($$[$0 - 2], $$[$0]) | ||
break | ||
case 112: | ||
this.$ = $$[$0 - 4]; yy.setClass($$[$0 - 2], $$[$0]) | ||
break | ||
case 113: | ||
this.$ = $$[$0 - 4]; yy.setClickEvent($$[$0 - 2], $$[$0], undefined, undefined) | ||
break | ||
case 114: | ||
this.$ = $$[$0 - 6]; yy.setClickEvent($$[$0 - 4], $$[$0 - 2], undefined, $$[$0]) | ||
break | ||
case 115: | ||
this.$ = $$[$0 - 4]; yy.setClickEvent($$[$0 - 2], undefined, $$[$0], undefined) | ||
break | ||
case 116: | ||
this.$ = $$[$0 - 6]; yy.setClickEvent($$[$0 - 4], undefined, $$[$0 - 2], $$[$0]) | ||
break | ||
case 117: | ||
this.$ = $$[$0 - 4]; yy.addVertex($$[$0 - 2], undefined, undefined, $$[$0]) | ||
break | ||
case 118: case 119: case 120: | ||
this.$ = $$[$0 - 4]; yy.updateLink($$[$0 - 2], $$[$0]) | ||
break | ||
case 121: case 122: | ||
this.$ = $$[$0 - 8]; yy.updateLinkInterpolate($$[$0 - 6], $$[$0 - 2]); yy.updateLink($$[$0 - 6], $$[$0]) | ||
break | ||
case 123: case 124: | ||
this.$ = $$[$0 - 6]; yy.updateLinkInterpolate($$[$0 - 4], $$[$0]) | ||
break | ||
case 126: | ||
this.$ = [$$[$0]] | ||
break | ||
case 127: | ||
$$[$0 - 2].push($$[$0]); this.$ = $$[$0 - 2] | ||
break | ||
case 129: | ||
this.$ = $$[$0 - 1] + $$[$0] | ||
break | ||
} | ||
}, | ||
table: [{3: 1, 4: 2, 9: $V0, 10: $V1, 12: $V2}, {1: [3]}, o($V3, $V4, {5: 6}), {4: 7, 9: $V0, 10: $V1, 12: $V2}, {4: 8, 9: $V0, 10: $V1, 12: $V2}, {10: [1, 9]}, {1: [2, 1], 6: 10, 7: 11, 8: $V5, 9: $V6, 10: $V7, 11: $V8, 13: $V9, 18: $Va, 23: 16, 25: 17, 26: 18, 27: 19, 28: 20, 29: 21, 30: $Vb, 33: 23, 35: 29, 44: 30, 45: 32, 46: $Vc, 71: $Vd, 72: $Ve, 73: $Vf, 74: $Vg, 75: $Vh, 81: $Vi, 86: $Vj, 88: $Vk, 89: $Vl, 91: $Vm, 92: $Vn, 94: $Vo, 95: $Vp, 96: $Vq, 97: $Vr, 98: $Vs}, o($V3, [2, 9]), o($V3, [2, 10]), {13: [1, 46], 15: [1, 47], 16: [1, 48], 17: [1, 49], 18: [1, 50]}, o($Vt, [2, 3]), o($Vt, [2, 4]), o($Vt, [2, 5]), o($Vt, [2, 6]), o($Vt, [2, 7]), o($Vt, [2, 8]), {8: $Vu, 9: $Vv, 11: $Vw, 24: 51}, {8: $Vu, 9: $Vv, 11: $Vw, 24: 55}, {8: $Vu, 9: $Vv, 11: $Vw, 24: 56}, {8: $Vu, 9: $Vv, 11: $Vw, 24: 57}, {8: $Vu, 9: $Vv, 11: $Vw, 24: 58}, {8: $Vu, 9: $Vv, 11: $Vw, 24: 59}, {8: $Vu, 9: $Vv, 10: $Vx, 11: $Vw, 12: $Vy, 13: $Vz, 15: $VA, 16: $VB, 17: $VC, 18: $VD, 24: 61, 30: $VE, 31: 60, 32: $VF, 45: 71, 46: $VG, 50: $VH, 60: $VI, 66: 62, 67: $VJ, 70: 74, 71: $VK, 72: $VL, 73: $VM, 74: $VN, 75: $VO, 77: 64, 78: $VP, 81: $Vi, 84: $VQ, 86: $Vj, 88: $Vk, 89: $Vl, 91: $Vm, 92: $Vn, 94: $Vo, 95: $Vp, 96: $Vq, 97: $Vr, 98: $Vs}, o($VR, [2, 42], {34: 86, 47: 87, 50: [1, 88], 51: [1, 91], 52: [1, 92], 53: [1, 93], 54: [1, 94], 55: [1, 89], 56: [1, 95], 57: [1, 96], 58: [1, 97], 59: [1, 98], 60: [1, 90], 61: [1, 99], 62: [1, 100], 63: [1, 101], 64: [1, 102]}), {10: [1, 103]}, {10: [1, 104]}, {10: [1, 105]}, {10: [1, 106]}, {10: [1, 107]}, o($VS, [2, 55], {45: 32, 21: 113, 44: 114, 10: $VT, 13: $V9, 15: [1, 112], 18: $Va, 36: [1, 108], 38: [1, 109], 40: [1, 110], 42: [1, 111], 46: $Vc, 81: $Vi, 86: $Vj, 88: $Vk, 89: $Vl, 91: $Vm, 92: $Vn, 94: $Vo, 95: $Vp, 96: $Vq, 97: $Vr, 98: $Vs}), o($VU, [2, 57]), o($VU, [2, 59]), o($VU, [2, 60]), o($VU, [2, 61]), o($VU, [2, 62]), o($VV, [2, 154]), o($VV, [2, 155]), o($VV, [2, 156]), o($VV, [2, 157]), o($VV, [2, 158]), o($VV, [2, 159]), o($VV, [2, 160]), o($VV, [2, 161]), o($VV, [2, 162]), o($VV, [2, 163]), o($VV, [2, 164]), {8: $VW, 9: $VX, 10: $VT, 14: 116, 21: 119}, {8: $VW, 9: $VX, 10: $VT, 14: 120, 21: 119}, {8: $VW, 9: $VX, 10: $VT, 14: 121, 21: 119}, {8: $VW, 9: $VX, 10: $VT, 14: 122, 21: 119}, {8: $VW, 9: $VX, 10: $VT, 14: 123, 21: 119}, o($Vt, [2, 30]), o($Vt, [2, 38]), o($Vt, [2, 39]), o($Vt, [2, 40]), o($Vt, [2, 31]), o($Vt, [2, 32]), o($Vt, [2, 33]), o($Vt, [2, 34]), o($Vt, [2, 35]), {8: $Vu, 9: $Vv, 10: $Vx, 11: $Vw, 12: $Vy, 13: $Vz, 15: $VA, 16: $VB, 17: $VC, 18: $VD, 24: 124, 30: $VE, 32: $VF, 45: 71, 46: $VG, 50: $VH, 60: $VI, 66: 125, 70: 74, 71: $VK, 72: $VL, 73: $VM, 74: $VN, 75: $VO, 77: 64, 78: $VP, 81: $Vi, 84: $VQ, 86: $Vj, 88: $Vk, 89: $Vl, 91: $Vm, 92: $Vn, 94: $Vo, 95: $Vp, 96: $Vq, 97: $Vr, 98: $Vs}, o($VY, $V4, {5: 126}), o($VZ, [2, 92]), o($VZ, [2, 94]), o($VZ, [2, 143]), o($VZ, [2, 144]), o($VZ, [2, 145]), o($VZ, [2, 146]), o($VZ, [2, 147]), o($VZ, [2, 148]), o($VZ, [2, 149]), o($VZ, [2, 150]), o($VZ, [2, 151]), o($VZ, [2, 152]), o($VZ, [2, 153]), o($VZ, [2, 97]), o($VZ, [2, 98]), o($VZ, [2, 99]), o($VZ, [2, 100]), o($VZ, [2, 101]), o($VZ, [2, 102]), o($VZ, [2, 103]), o($VZ, [2, 104]), o($VZ, [2, 105]), o($VZ, [2, 106]), o($VZ, [2, 107]), {13: $V9, 18: $Va, 33: 127, 35: 29, 44: 30, 45: 32, 46: $Vc, 81: $Vi, 86: $Vj, 88: $Vk, 89: $Vl, 91: $Vm, 92: $Vn, 94: $Vo, 95: $Vp, 96: $Vq, 97: $Vr, 98: $Vs}, o($V_, [2, 66], {48: 128, 49: [1, 129], 65: [1, 130]}), {10: $Vx, 12: $Vy, 13: $Vz, 15: $VA, 16: $VB, 17: $VC, 18: $VD, 30: $VE, 31: 131, 32: $VF, 45: 71, 46: $VG, 50: $VH, 60: $VI, 66: 62, 67: $VJ, 70: 74, 71: $VK, 72: $VL, 73: $VM, 74: $VN, 75: $VO, 77: 64, 78: $VP, 81: $Vi, 84: $VQ, 86: $Vj, 88: $Vk, 89: $Vl, 91: $Vm, 92: $Vn, 94: $Vo, 95: $Vp, 96: $Vq, 97: $Vr, 98: $Vs}, {10: $Vx, 12: $Vy, 13: $Vz, 15: $VA, 16: $VB, 17: $VC, 18: $VD, 30: $VE, 31: 132, 32: $VF, 45: 71, 46: $VG, 50: $VH, 60: $VI, 66: 62, 67: $VJ, 70: 74, 71: $VK, 72: $VL, 73: $VM, 74: $VN, 75: $VO, 77: 64, 78: $VP, 81: $Vi, 84: $VQ, 86: $Vj, 88: $Vk, 89: $Vl, 91: $Vm, 92: $Vn, 94: $Vo, 95: $Vp, 96: $Vq, 97: $Vr, 98: $Vs}, {10: $Vx, 12: $Vy, 13: $Vz, 15: $VA, 16: $VB, 17: $VC, 18: $VD, 30: $VE, 31: 133, 32: $VF, 45: 71, 46: $VG, 50: $VH, 60: $VI, 66: 62, 67: $VJ, 70: 74, 71: $VK, 72: $VL, 73: $VM, 74: $VN, 75: $VO, 77: 64, 78: $VP, 81: $Vi, 84: $VQ, 86: $Vj, 88: $Vk, 89: $Vl, 91: $Vm, 92: $Vn, 94: $Vo, 95: $Vp, 96: $Vq, 97: $Vr, 98: $Vs}, o($V$, [2, 79]), o($V$, [2, 80]), o($V$, [2, 81]), o($V$, [2, 82]), o($V$, [2, 83]), o($V$, [2, 84]), o($V$, [2, 85]), o($V$, [2, 86]), o($V$, [2, 87]), o($V$, [2, 88]), o($V$, [2, 89]), o($V$, [2, 90]), {13: $V9, 18: $Va, 35: 134, 44: 30, 45: 32, 46: $Vc, 80: [1, 135], 81: $Vi, 86: $Vj, 88: $Vk, 89: $Vl, 91: $Vm, 92: $Vn, 94: $Vo, 95: $Vp, 96: $Vq, 97: $Vr, 98: $Vs}, {78: [1, 136], 81: [1, 137]}, {13: $V9, 18: $Va, 35: 139, 44: 30, 45: 32, 46: $Vc, 78: [1, 138], 81: $Vi, 86: $Vj, 88: $Vk, 89: $Vl, 91: $Vm, 92: $Vn, 94: $Vo, 95: $Vp, 96: $Vq, 97: $Vr, 98: $Vs}, {13: $V9, 18: $Va, 35: 140, 44: 30, 45: 32, 46: $Vc, 81: $Vi, 86: $Vj, 88: $Vk, 89: $Vl, 91: $Vm, 92: $Vn, 94: $Vo, 95: $Vp, 96: $Vq, 97: $Vr, 98: $Vs}, {13: $V9, 18: $Va, 35: 141, 44: 30, 45: 32, 46: $Vc, 81: $Vi, 86: $Vj, 88: $Vk, 89: $Vl, 91: $Vm, 92: $Vn, 94: $Vo, 95: $Vp, 96: $Vq, 97: $Vr, 98: $Vs}, {10: $Vx, 12: $Vy, 13: $Vz, 15: $VA, 16: $VB, 17: $VC, 18: $VD, 30: $VE, 31: 142, 32: $VF, 45: 71, 46: $VG, 50: $VH, 60: $VI, 66: 62, 67: $VJ, 70: 74, 71: $VK, 72: $VL, 73: $VM, 74: $VN, 75: $VO, 77: 64, 78: $VP, 81: $Vi, 84: $VQ, 86: $Vj, 88: $Vk, 89: $Vl, 91: $Vm, 92: $Vn, 94: $Vo, 95: $Vp, 96: $Vq, 97: $Vr, 98: $Vs}, {10: $Vx, 12: $Vy, 13: $Vz, 15: $VA, 16: $VB, 17: $VC, 18: $VD, 30: $VE, 31: 144, 32: $VF, 38: [1, 143], 45: 71, 46: $VG, 50: $VH, 60: $VI, 66: 62, 67: $VJ, 70: 74, 71: $VK, 72: $VL, 73: $VM, 74: $VN, 75: $VO, 77: 64, 78: $VP, 81: $Vi, 84: $VQ, 86: $Vj, 88: $Vk, 89: $Vl, 91: $Vm, 92: $Vn, 94: $Vo, 95: $Vp, 96: $Vq, 97: $Vr, 98: $Vs}, {10: $Vx, 12: $Vy, 13: $Vz, 15: $VA, 16: $VB, 17: $VC, 18: $VD, 30: $VE, 31: 145, 32: $VF, 45: 71, 46: $VG, 50: $VH, 60: $VI, 66: 62, 67: $VJ, 70: 74, 71: $VK, 72: $VL, 73: $VM, 74: $VN, 75: $VO, 77: 64, 78: $VP, 81: $Vi, 84: $VQ, 86: $Vj, 88: $Vk, 89: $Vl, 91: $Vm, 92: $Vn, 94: $Vo, 95: $Vp, 96: $Vq, 97: $Vr, 98: $Vs}, {10: $Vx, 12: $Vy, 13: $Vz, 15: $VA, 16: $VB, 17: $VC, 18: $VD, 30: $VE, 31: 146, 32: $VF, 45: 71, 46: $VG, 50: $VH, 60: $VI, 66: 62, 67: $VJ, 70: 74, 71: $VK, 72: $VL, 73: $VM, 74: $VN, 75: $VO, 77: 64, 78: $VP, 81: $Vi, 84: $VQ, 86: $Vj, 88: $Vk, 89: $Vl, 91: $Vm, 92: $Vn, 94: $Vo, 95: $Vp, 96: $Vq, 97: $Vr, 98: $Vs}, {10: $Vx, 12: $Vy, 13: $Vz, 15: $VA, 16: $VB, 17: $VC, 18: $VD, 30: $VE, 31: 147, 32: $VF, 45: 71, 46: $VG, 50: $VH, 60: $VI, 66: 62, 67: $VJ, 70: 74, 71: $VK, 72: $VL, 73: $VM, 74: $VN, 75: $VO, 77: 64, 78: $VP, 81: $Vi, 84: $VQ, 86: $Vj, 88: $Vk, 89: $Vl, 91: $Vm, 92: $Vn, 94: $Vo, 95: $Vp, 96: $Vq, 97: $Vr, 98: $Vs}, o($VS, [2, 56]), o($VU, [2, 58]), o($VS, [2, 29], {21: 148, 10: $VT}), o($V3, [2, 11]), o($V3, [2, 21]), o($V3, [2, 22]), {9: [1, 149]}, o($V3, [2, 12]), o($V3, [2, 13]), o($V3, [2, 14]), o($V3, [2, 15]), o($VY, $V4, {5: 150}), o($VZ, [2, 93]), {6: 10, 7: 11, 8: $V5, 9: $V6, 10: $V7, 11: $V8, 13: $V9, 18: $Va, 23: 16, 25: 17, 26: 18, 27: 19, 28: 20, 29: 21, 30: $Vb, 32: [1, 151], 33: 23, 35: 29, 44: 30, 45: 32, 46: $Vc, 71: $Vd, 72: $Ve, 73: $Vf, 74: $Vg, 75: $Vh, 81: $Vi, 86: $Vj, 88: $Vk, 89: $Vl, 91: $Vm, 92: $Vn, 94: $Vo, 95: $Vp, 96: $Vq, 97: $Vr, 98: $Vs}, o($VR, [2, 41]), o($V_, [2, 63], {10: [1, 152]}), {10: [1, 153]}, {10: $Vx, 12: $Vy, 13: $Vz, 15: $VA, 16: $VB, 17: $VC, 18: $VD, 30: $VE, 31: 154, 32: $VF, 45: 71, 46: $VG, 50: $VH, 60: $VI, 66: 62, 67: $VJ, 70: 74, 71: $VK, 72: $VL, 73: $VM, 74: $VN, 75: $VO, 77: 64, 78: $VP, 81: $Vi, 84: $VQ, 86: $Vj, 88: $Vk, 89: $Vl, 91: $Vm, 92: $Vn, 94: $Vo, 95: $Vp, 96: $Vq, 97: $Vr, 98: $Vs}, {10: $Vx, 12: $Vy, 13: $Vz, 15: $VA, 16: $VB, 17: $VC, 18: $VD, 30: $VE, 32: $VF, 45: 71, 46: $VG, 50: $VH, 51: [1, 155], 52: [1, 156], 53: [1, 157], 54: [1, 158], 60: $VI, 66: 125, 70: 74, 71: $VK, 72: $VL, 73: $VM, 74: $VN, 75: $VO, 77: 64, 78: $VP, 81: $Vi, 84: $VQ, 86: $Vj, 88: $Vk, 89: $Vl, 91: $Vm, 92: $Vn, 94: $Vo, 95: $Vp, 96: $Vq, 97: $Vr, 98: $Vs}, {10: $Vx, 12: $Vy, 13: $Vz, 15: $VA, 16: $VB, 17: $VC, 18: $VD, 30: $VE, 32: $VF, 45: 71, 46: $VG, 50: $VH, 56: [1, 159], 57: [1, 160], 58: [1, 161], 59: [1, 162], 60: $VI, 66: 125, 70: 74, 71: $VK, 72: $VL, 73: $VM, 74: $VN, 75: $VO, 77: 64, 78: $VP, 81: $Vi, 84: $VQ, 86: $Vj, 88: $Vk, 89: $Vl, 91: $Vm, 92: $Vn, 94: $Vo, 95: $Vp, 96: $Vq, 97: $Vr, 98: $Vs}, {10: $Vx, 12: $Vy, 13: $Vz, 15: $VA, 16: $VB, 17: $VC, 18: $VD, 30: $VE, 32: $VF, 45: 71, 46: $VG, 50: $VH, 60: $VI, 61: [1, 163], 62: [1, 164], 63: [1, 165], 64: [1, 166], 66: 125, 70: 74, 71: $VK, 72: $VL, 73: $VM, 74: $VN, 75: $VO, 77: 64, 78: $VP, 81: $Vi, 84: $VQ, 86: $Vj, 88: $Vk, 89: $Vl, 91: $Vm, 92: $Vn, 94: $Vo, 95: $Vp, 96: $Vq, 97: $Vr, 98: $Vs}, {10: [1, 167], 13: $V9, 18: $Va, 44: 114, 45: 32, 46: $Vc, 81: $Vi, 86: $Vj, 88: $Vk, 89: $Vl, 91: $Vm, 92: $Vn, 94: $Vo, 95: $Vp, 96: $Vq, 97: $Vr, 98: $Vs}, {10: [1, 168]}, {10: [1, 169]}, {10: [1, 170]}, {10: [1, 171]}, {10: [1, 172], 13: $V9, 18: $Va, 44: 114, 45: 32, 46: $Vc, 81: $Vi, 86: $Vj, 88: $Vk, 89: $Vl, 91: $Vm, 92: $Vn, 94: $Vo, 95: $Vp, 96: $Vq, 97: $Vr, 98: $Vs}, {10: [1, 173], 13: $V9, 18: $Va, 44: 114, 45: 32, 46: $Vc, 81: $Vi, 86: $Vj, 88: $Vk, 89: $Vl, 91: $Vm, 92: $Vn, 94: $Vo, 95: $Vp, 96: $Vq, 97: $Vr, 98: $Vs}, {10: [1, 174], 13: $V9, 18: $Va, 44: 114, 45: 32, 46: $Vc, 81: $Vi, 86: $Vj, 88: $Vk, 89: $Vl, 91: $Vm, 92: $Vn, 94: $Vo, 95: $Vp, 96: $Vq, 97: $Vr, 98: $Vs}, {10: $Vx, 12: $Vy, 13: $Vz, 15: $VA, 16: $VB, 17: $VC, 18: $VD, 30: $VE, 32: $VF, 37: [1, 175], 45: 71, 46: $VG, 50: $VH, 60: $VI, 66: 125, 70: 74, 71: $VK, 72: $VL, 73: $VM, 74: $VN, 75: $VO, 77: 64, 78: $VP, 81: $Vi, 84: $VQ, 86: $Vj, 88: $Vk, 89: $Vl, 91: $Vm, 92: $Vn, 94: $Vo, 95: $Vp, 96: $Vq, 97: $Vr, 98: $Vs}, {10: $Vx, 12: $Vy, 13: $Vz, 15: $VA, 16: $VB, 17: $VC, 18: $VD, 30: $VE, 31: 176, 32: $VF, 45: 71, 46: $VG, 50: $VH, 60: $VI, 66: 62, 67: $VJ, 70: 74, 71: $VK, 72: $VL, 73: $VM, 74: $VN, 75: $VO, 77: 64, 78: $VP, 81: $Vi, 84: $VQ, 86: $Vj, 88: $Vk, 89: $Vl, 91: $Vm, 92: $Vn, 94: $Vo, 95: $Vp, 96: $Vq, 97: $Vr, 98: $Vs}, {10: $Vx, 12: $Vy, 13: $Vz, 15: $VA, 16: $VB, 17: $VC, 18: $VD, 30: $VE, 32: $VF, 39: [1, 177], 45: 71, 46: $VG, 50: $VH, 60: $VI, 66: 125, 70: 74, 71: $VK, 72: $VL, 73: $VM, 74: $VN, 75: $VO, 77: 64, 78: $VP, 81: $Vi, 84: $VQ, 86: $Vj, 88: $Vk, 89: $Vl, 91: $Vm, 92: $Vn, 94: $Vo, 95: $Vp, 96: $Vq, 97: $Vr, 98: $Vs}, {10: $Vx, 12: $Vy, 13: $Vz, 15: $VA, 16: $VB, 17: $VC, 18: $VD, 30: $VE, 32: $VF, 41: [1, 178], 45: 71, 46: $VG, 50: $VH, 60: $VI, 66: 125, 70: 74, 71: $VK, 72: $VL, 73: $VM, 74: $VN, 75: $VO, 77: 64, 78: $VP, 81: $Vi, 84: $VQ, 86: $Vj, 88: $Vk, 89: $Vl, 91: $Vm, 92: $Vn, 94: $Vo, 95: $Vp, 96: $Vq, 97: $Vr, 98: $Vs}, {10: $Vx, 12: $Vy, 13: $Vz, 15: $VA, 16: $VB, 17: $VC, 18: $VD, 30: $VE, 32: $VF, 43: [1, 179], 45: 71, 46: $VG, 50: $VH, 60: $VI, 66: 125, 70: 74, 71: $VK, 72: $VL, 73: $VM, 74: $VN, 75: $VO, 77: 64, 78: $VP, 81: $Vi, 84: $VQ, 86: $Vj, 88: $Vk, 89: $Vl, 91: $Vm, 92: $Vn, 94: $Vo, 95: $Vp, 96: $Vq, 97: $Vr, 98: $Vs}, {10: $Vx, 12: $Vy, 13: $Vz, 15: $VA, 16: $VB, 17: $VC, 18: $VD, 30: $VE, 32: $VF, 37: [1, 180], 45: 71, 46: $VG, 50: $VH, 60: $VI, 66: 125, 70: 74, 71: $VK, 72: $VL, 73: $VM, 74: $VN, 75: $VO, 77: 64, 78: $VP, 81: $Vi, 84: $VQ, 86: $Vj, 88: $Vk, 89: $Vl, 91: $Vm, 92: $Vn, 94: $Vo, 95: $Vp, 96: $Vq, 97: $Vr, 98: $Vs}, o($VS, [2, 28]), o($V3, [2, 23]), {6: 10, 7: 11, 8: $V5, 9: $V6, 10: $V7, 11: $V8, 13: $V9, 18: $Va, 23: 16, 25: 17, 26: 18, 27: 19, 28: 20, 29: 21, 30: $Vb, 32: [1, 181], 33: 23, 35: 29, 44: 30, 45: 32, 46: $Vc, 71: $Vd, 72: $Ve, 73: $Vf, 74: $Vg, 75: $Vh, 81: $Vi, 86: $Vj, 88: $Vk, 89: $Vl, 91: $Vm, 92: $Vn, 94: $Vo, 95: $Vp, 96: $Vq, 97: $Vr, 98: $Vs}, o($Vt, [2, 37]), o($V_, [2, 65]), o($V_, [2, 64]), {10: $Vx, 12: $Vy, 13: $Vz, 15: $VA, 16: $VB, 17: $VC, 18: $VD, 30: $VE, 32: $VF, 45: 71, 46: $VG, 50: $VH, 60: $VI, 65: [1, 182], 66: 125, 70: 74, 71: $VK, 72: $VL, 73: $VM, 74: $VN, 75: $VO, 77: 64, 78: $VP, 81: $Vi, 84: $VQ, 86: $Vj, 88: $Vk, 89: $Vl, 91: $Vm, 92: $Vn, 94: $Vo, 95: $Vp, 96: $Vq, 97: $Vr, 98: $Vs}, o($V_, [2, 67]), o($V_, [2, 68]), o($V_, [2, 69]), o($V_, [2, 70]), o($V_, [2, 71]), o($V_, [2, 72]), o($V_, [2, 73]), o($V_, [2, 74]), o($V_, [2, 75]), o($V_, [2, 76]), o($V_, [2, 77]), o($V_, [2, 78]), {10: $V01, 46: $V11, 71: $V21, 79: 183, 80: $V31, 81: $V41, 84: $V51, 85: 184, 87: 185, 88: $V61, 89: $V71, 90: $V81, 91: $V91, 92: $Va1}, {10: $V01, 46: $V11, 71: $V21, 79: 197, 80: $V31, 81: $V41, 84: $V51, 85: 184, 87: 185, 88: $V61, 89: $V71, 90: $V81, 91: $V91, 92: $Va1}, {10: $V01, 46: $V11, 71: $V21, 79: 198, 80: $V31, 81: $V41, 82: [1, 199], 84: $V51, 85: 184, 87: 185, 88: $V61, 89: $V71, 90: $V81, 91: $V91, 92: $Va1}, {10: $V01, 46: $V11, 71: $V21, 79: 200, 80: $V31, 81: $V41, 82: [1, 201], 84: $V51, 85: 184, 87: 185, 88: $V61, 89: $V71, 90: $V81, 91: $V91, 92: $Va1}, {10: $V01, 46: $V11, 71: $V21, 79: 202, 80: $V31, 81: $V41, 84: $V51, 85: 184, 87: 185, 88: $V61, 89: $V71, 90: $V81, 91: $V91, 92: $Va1}, {10: $V01, 46: $V11, 71: $V21, 79: 203, 80: $V31, 81: $V41, 84: $V51, 85: 184, 87: 185, 88: $V61, 89: $V71, 90: $V81, 91: $V91, 92: $Va1}, {13: $V9, 18: $Va, 35: 204, 44: 30, 45: 32, 46: $Vc, 81: $Vi, 86: $Vj, 88: $Vk, 89: $Vl, 91: $Vm, 92: $Vn, 94: $Vo, 95: $Vp, 96: $Vq, 97: $Vr, 98: $Vs}, {13: $V9, 18: $Va, 35: 205, 44: 30, 45: 32, 46: $Vc, 67: [1, 206], 81: $Vi, 86: $Vj, 88: $Vk, 89: $Vl, 91: $Vm, 92: $Vn, 94: $Vo, 95: $Vp, 96: $Vq, 97: $Vr, 98: $Vs}, o($VS, [2, 43], {21: 207, 10: $VT}), {10: $Vx, 12: $Vy, 13: $Vz, 15: $VA, 16: $VB, 17: $VC, 18: $VD, 30: $VE, 32: $VF, 39: [1, 208], 45: 71, 46: $VG, 50: $VH, 60: $VI, 66: 125, 70: 74, 71: $VK, 72: $VL, 73: $VM, 74: $VN, 75: $VO, 77: 64, 78: $VP, 81: $Vi, 84: $VQ, 86: $Vj, 88: $Vk, 89: $Vl, 91: $Vm, 92: $Vn, 94: $Vo, 95: $Vp, 96: $Vq, 97: $Vr, 98: $Vs}, o($VS, [2, 49], {21: 209, 10: $VT}), o($VS, [2, 47], {21: 210, 10: $VT}), o($VS, [2, 51], {21: 211, 10: $VT}), o($VS, [2, 53], {21: 212, 10: $VT}), o($Vt, [2, 36]), o([10, 13, 18, 46, 81, 86, 88, 89, 91, 92, 94, 95, 96, 97, 98], [2, 91]), o($VR, [2, 117], {86: $Vb1}), o($Vc1, [2, 126], {87: 214, 10: $V01, 46: $V11, 71: $V21, 80: $V31, 81: $V41, 84: $V51, 88: $V61, 89: $V71, 90: $V81, 91: $V91, 92: $Va1}), o($Vd1, [2, 128]), o($Vd1, [2, 130]), o($Vd1, [2, 131]), o($Vd1, [2, 132]), o($Vd1, [2, 133]), o($Vd1, [2, 134]), o($Vd1, [2, 135]), o($Vd1, [2, 136]), o($Vd1, [2, 137]), o($Vd1, [2, 138]), o($Vd1, [2, 139]), o($Vd1, [2, 140]), o($VR, [2, 118], {86: $Vb1}), o($VR, [2, 119], {86: $Vb1}), {10: [1, 215]}, o($VR, [2, 120], {86: $Vb1}), {10: [1, 216]}, o($VR, [2, 110], {86: $Vb1}), o($VR, [2, 111], {86: $Vb1}), o($VR, [2, 112], {45: 32, 44: 114, 13: $V9, 18: $Va, 46: $Vc, 81: $Vi, 86: $Vj, 88: $Vk, 89: $Vl, 91: $Vm, 92: $Vn, 94: $Vo, 95: $Vp, 96: $Vq, 97: $Vr, 98: $Vs}), o($VR, [2, 113], {45: 32, 44: 114, 10: [1, 217], 13: $V9, 18: $Va, 46: $Vc, 81: $Vi, 86: $Vj, 88: $Vk, 89: $Vl, 91: $Vm, 92: $Vn, 94: $Vo, 95: $Vp, 96: $Vq, 97: $Vr, 98: $Vs}), o($VR, [2, 115], {10: [1, 218]}), o($VS, [2, 44]), {39: [1, 219]}, o($VS, [2, 50]), o($VS, [2, 48]), o($VS, [2, 52]), o($VS, [2, 54]), {10: $V01, 46: $V11, 71: $V21, 80: $V31, 81: $V41, 84: $V51, 85: 220, 87: 185, 88: $V61, 89: $V71, 90: $V81, 91: $V91, 92: $Va1}, o($Vd1, [2, 129]), {13: $V9, 18: $Va, 35: 221, 44: 30, 45: 32, 46: $Vc, 81: $Vi, 86: $Vj, 88: $Vk, 89: $Vl, 91: $Vm, 92: $Vn, 94: $Vo, 95: $Vp, 96: $Vq, 97: $Vr, 98: $Vs}, {13: $V9, 18: $Va, 35: 222, 44: 30, 45: 32, 46: $Vc, 81: $Vi, 86: $Vj, 88: $Vk, 89: $Vl, 91: $Vm, 92: $Vn, 94: $Vo, 95: $Vp, 96: $Vq, 97: $Vr, 98: $Vs}, {67: [1, 223]}, {67: [1, 224]}, o($VS, [2, 45], {21: 225, 10: $VT}), o($Vc1, [2, 127], {87: 214, 10: $V01, 46: $V11, 71: $V21, 80: $V31, 81: $V41, 84: $V51, 88: $V61, 89: $V71, 90: $V81, 91: $V91, 92: $Va1}), o($VR, [2, 123], {45: 32, 44: 114, 10: [1, 226], 13: $V9, 18: $Va, 46: $Vc, 81: $Vi, 86: $Vj, 88: $Vk, 89: $Vl, 91: $Vm, 92: $Vn, 94: $Vo, 95: $Vp, 96: $Vq, 97: $Vr, 98: $Vs}), o($VR, [2, 124], {45: 32, 44: 114, 10: [1, 227], 13: $V9, 18: $Va, 46: $Vc, 81: $Vi, 86: $Vj, 88: $Vk, 89: $Vl, 91: $Vm, 92: $Vn, 94: $Vo, 95: $Vp, 96: $Vq, 97: $Vr, 98: $Vs}), o($VR, [2, 114]), o($VR, [2, 116]), o($VS, [2, 46]), {10: $V01, 46: $V11, 71: $V21, 79: 228, 80: $V31, 81: $V41, 84: $V51, 85: 184, 87: 185, 88: $V61, 89: $V71, 90: $V81, 91: $V91, 92: $Va1}, {10: $V01, 46: $V11, 71: $V21, 79: 229, 80: $V31, 81: $V41, 84: $V51, 85: 184, 87: 185, 88: $V61, 89: $V71, 90: $V81, 91: $V91, 92: $Va1}, o($VR, [2, 121], {86: $Vb1}), o($VR, [2, 122], {86: $Vb1})], | ||
defaultActions: {}, | ||
parseError: function parseError (str, hash) { | ||
if (hash.recoverable) { | ||
this.trace(str) | ||
} else { | ||
this.$=$$[$0-1]; | ||
break; | ||
case 4: case 57: case 59: case 60: case 92: case 94: case 95: case 108: | ||
this.$=$$[$0]; | ||
break; | ||
case 11: | ||
yy.setDirection($$[$0-1]);this.$ = $$[$0-1]; | ||
break; | ||
case 12: | ||
yy.setDirection("LR");this.$ = $$[$0-1]; | ||
break; | ||
case 13: | ||
yy.setDirection("RL");this.$ = $$[$0-1]; | ||
break; | ||
case 14: | ||
yy.setDirection("BT");this.$ = $$[$0-1]; | ||
break; | ||
case 15: | ||
yy.setDirection("TB");this.$ = $$[$0-1]; | ||
break; | ||
case 30: | ||
this.$=$$[$0-1] | ||
break; | ||
case 31: case 32: case 33: case 34: case 35: | ||
this.$=[]; | ||
break; | ||
case 36: | ||
this.$=yy.addSubGraph($$[$0-1],$$[$0-3]); | ||
break; | ||
case 37: | ||
this.$=yy.addSubGraph($$[$0-1],undefined); | ||
break; | ||
case 41: | ||
yy.addLink($$[$0-2],$$[$0],$$[$0-1]);this.$ = [$$[$0-2],$$[$0]]; | ||
break; | ||
case 42: | ||
this.$ = [$$[$0]]; | ||
break; | ||
case 43: | ||
this.$ = $$[$0-3];yy.addVertex($$[$0-3],$$[$0-1],'square'); | ||
break; | ||
case 44: | ||
this.$ = $$[$0-4];yy.addVertex($$[$0-4],$$[$0-2],'square'); | ||
break; | ||
case 45: | ||
this.$ = $$[$0-5];yy.addVertex($$[$0-5],$$[$0-2],'circle'); | ||
break; | ||
case 46: | ||
this.$ = $$[$0-6];yy.addVertex($$[$0-6],$$[$0-3],'circle'); | ||
break; | ||
case 47: | ||
this.$ = $$[$0-3];yy.addVertex($$[$0-3],$$[$0-1],'ellipse'); | ||
break; | ||
case 48: | ||
this.$ = $$[$0-4];yy.addVertex($$[$0-4],$$[$0-2],'ellipse'); | ||
break; | ||
case 49: | ||
this.$ = $$[$0-3];yy.addVertex($$[$0-3],$$[$0-1],'round'); | ||
break; | ||
case 50: | ||
this.$ = $$[$0-4];yy.addVertex($$[$0-4],$$[$0-2],'round'); | ||
break; | ||
case 51: | ||
this.$ = $$[$0-3];yy.addVertex($$[$0-3],$$[$0-1],'diamond'); | ||
break; | ||
case 52: | ||
this.$ = $$[$0-4];yy.addVertex($$[$0-4],$$[$0-2],'diamond'); | ||
break; | ||
case 53: | ||
this.$ = $$[$0-3];yy.addVertex($$[$0-3],$$[$0-1],'odd'); | ||
break; | ||
case 54: | ||
this.$ = $$[$0-4];yy.addVertex($$[$0-4],$$[$0-2],'odd'); | ||
break; | ||
case 55: | ||
this.$ = $$[$0];yy.addVertex($$[$0]); | ||
break; | ||
case 56: | ||
this.$ = $$[$0-1];yy.addVertex($$[$0-1]); | ||
break; | ||
case 58: case 93: case 96: case 109: | ||
this.$=$$[$0-1]+''+$$[$0]; | ||
break; | ||
case 61: | ||
this.$='v'; | ||
break; | ||
case 62: | ||
this.$='-'; | ||
break; | ||
case 63: | ||
$$[$0-1].text = $$[$0];this.$ = $$[$0-1]; | ||
break; | ||
case 64: case 65: | ||
$$[$0-2].text = $$[$0-1];this.$ = $$[$0-2]; | ||
break; | ||
case 66: | ||
this.$ = $$[$0]; | ||
break; | ||
case 67: | ||
this.$ = {"type":"arrow","stroke":"normal","text":$$[$0-1]}; | ||
break; | ||
case 68: | ||
this.$ = {"type":"arrow_circle","stroke":"normal","text":$$[$0-1]}; | ||
break; | ||
case 69: | ||
this.$ = {"type":"arrow_cross","stroke":"normal","text":$$[$0-1]}; | ||
break; | ||
case 70: | ||
this.$ = {"type":"arrow_open","stroke":"normal","text":$$[$0-1]}; | ||
break; | ||
case 71: | ||
this.$ = {"type":"arrow","stroke":"dotted","text":$$[$0-1]}; | ||
break; | ||
case 72: | ||
this.$ = {"type":"arrow_circle","stroke":"dotted","text":$$[$0-1]}; | ||
break; | ||
case 73: | ||
this.$ = {"type":"arrow_cross","stroke":"dotted","text":$$[$0-1]}; | ||
break; | ||
case 74: | ||
this.$ = {"type":"arrow_open","stroke":"dotted","text":$$[$0-1]}; | ||
break; | ||
case 75: | ||
this.$ = {"type":"arrow","stroke":"thick","text":$$[$0-1]}; | ||
break; | ||
case 76: | ||
this.$ = {"type":"arrow_circle","stroke":"thick","text":$$[$0-1]}; | ||
break; | ||
case 77: | ||
this.$ = {"type":"arrow_cross","stroke":"thick","text":$$[$0-1]}; | ||
break; | ||
case 78: | ||
this.$ = {"type":"arrow_open","stroke":"thick","text":$$[$0-1]}; | ||
break; | ||
case 79: | ||
this.$ = {"type":"arrow","stroke":"normal"}; | ||
break; | ||
case 80: | ||
this.$ = {"type":"arrow_circle","stroke":"normal"}; | ||
break; | ||
case 81: | ||
this.$ = {"type":"arrow_cross","stroke":"normal"}; | ||
break; | ||
case 82: | ||
this.$ = {"type":"arrow_open","stroke":"normal"}; | ||
break; | ||
case 83: | ||
this.$ = {"type":"arrow","stroke":"dotted"}; | ||
break; | ||
case 84: | ||
this.$ = {"type":"arrow_circle","stroke":"dotted"}; | ||
break; | ||
case 85: | ||
this.$ = {"type":"arrow_cross","stroke":"dotted"}; | ||
break; | ||
case 86: | ||
this.$ = {"type":"arrow_open","stroke":"dotted"}; | ||
break; | ||
case 87: | ||
this.$ = {"type":"arrow","stroke":"thick"}; | ||
break; | ||
case 88: | ||
this.$ = {"type":"arrow_circle","stroke":"thick"}; | ||
break; | ||
case 89: | ||
this.$ = {"type":"arrow_cross","stroke":"thick"}; | ||
break; | ||
case 90: | ||
this.$ = {"type":"arrow_open","stroke":"thick"}; | ||
break; | ||
case 91: | ||
this.$ = $$[$0-1]; | ||
break; | ||
case 110: case 111: | ||
this.$ = $$[$0-4];yy.addClass($$[$0-2],$$[$0]); | ||
break; | ||
case 112: | ||
this.$ = $$[$0-4];yy.setClass($$[$0-2], $$[$0]); | ||
break; | ||
case 113: | ||
this.$ = $$[$0-4];yy.setClickEvent($$[$0-2], $$[$0], undefined, undefined); | ||
break; | ||
case 114: | ||
this.$ = $$[$0-6];yy.setClickEvent($$[$0-4], $$[$0-2], undefined, $$[$0]) ; | ||
break; | ||
case 115: | ||
this.$ = $$[$0-4];yy.setClickEvent($$[$0-2], undefined, $$[$0], undefined); | ||
break; | ||
case 116: | ||
this.$ = $$[$0-6];yy.setClickEvent($$[$0-4], undefined, $$[$0-2], $$[$0] ); | ||
break; | ||
case 117: | ||
this.$ = $$[$0-4];yy.addVertex($$[$0-2],undefined,undefined,$$[$0]); | ||
break; | ||
case 118: case 119: case 120: | ||
this.$ = $$[$0-4];yy.updateLink($$[$0-2],$$[$0]); | ||
break; | ||
case 121: case 122: | ||
this.$ = $$[$0-8];yy.updateLinkInterpolate($$[$0-6],$$[$0-2]);yy.updateLink($$[$0-6],$$[$0]); | ||
break; | ||
case 123: case 124: | ||
this.$ = $$[$0-6];yy.updateLinkInterpolate($$[$0-4],$$[$0]); | ||
break; | ||
case 126: | ||
this.$ = [$$[$0]] | ||
break; | ||
case 127: | ||
$$[$0-2].push($$[$0]);this.$ = $$[$0-2]; | ||
break; | ||
case 129: | ||
this.$ = $$[$0-1] + $$[$0]; | ||
break; | ||
} | ||
}, | ||
table: [{3:1,4:2,9:$V0,10:$V1,12:$V2},{1:[3]},o($V3,$V4,{5:6}),{4:7,9:$V0,10:$V1,12:$V2},{4:8,9:$V0,10:$V1,12:$V2},{10:[1,9]},{1:[2,1],6:10,7:11,8:$V5,9:$V6,10:$V7,11:$V8,13:$V9,18:$Va,23:16,25:17,26:18,27:19,28:20,29:21,30:$Vb,33:23,35:29,44:30,45:32,46:$Vc,71:$Vd,72:$Ve,73:$Vf,74:$Vg,75:$Vh,81:$Vi,86:$Vj,88:$Vk,89:$Vl,91:$Vm,92:$Vn,94:$Vo,95:$Vp,96:$Vq,97:$Vr,98:$Vs},o($V3,[2,9]),o($V3,[2,10]),{13:[1,46],15:[1,47],16:[1,48],17:[1,49],18:[1,50]},o($Vt,[2,3]),o($Vt,[2,4]),o($Vt,[2,5]),o($Vt,[2,6]),o($Vt,[2,7]),o($Vt,[2,8]),{8:$Vu,9:$Vv,11:$Vw,24:51},{8:$Vu,9:$Vv,11:$Vw,24:55},{8:$Vu,9:$Vv,11:$Vw,24:56},{8:$Vu,9:$Vv,11:$Vw,24:57},{8:$Vu,9:$Vv,11:$Vw,24:58},{8:$Vu,9:$Vv,11:$Vw,24:59},{8:$Vu,9:$Vv,10:$Vx,11:$Vw,12:$Vy,13:$Vz,15:$VA,16:$VB,17:$VC,18:$VD,24:61,30:$VE,31:60,32:$VF,45:71,46:$VG,50:$VH,60:$VI,66:62,67:$VJ,70:74,71:$VK,72:$VL,73:$VM,74:$VN,75:$VO,77:64,78:$VP,81:$Vi,84:$VQ,86:$Vj,88:$Vk,89:$Vl,91:$Vm,92:$Vn,94:$Vo,95:$Vp,96:$Vq,97:$Vr,98:$Vs},o($VR,[2,42],{34:86,47:87,50:[1,88],51:[1,91],52:[1,92],53:[1,93],54:[1,94],55:[1,89],56:[1,95],57:[1,96],58:[1,97],59:[1,98],60:[1,90],61:[1,99],62:[1,100],63:[1,101],64:[1,102]}),{10:[1,103]},{10:[1,104]},{10:[1,105]},{10:[1,106]},{10:[1,107]},o($VS,[2,55],{45:32,21:113,44:114,10:$VT,13:$V9,15:[1,112],18:$Va,36:[1,108],38:[1,109],40:[1,110],42:[1,111],46:$Vc,81:$Vi,86:$Vj,88:$Vk,89:$Vl,91:$Vm,92:$Vn,94:$Vo,95:$Vp,96:$Vq,97:$Vr,98:$Vs}),o($VU,[2,57]),o($VU,[2,59]),o($VU,[2,60]),o($VU,[2,61]),o($VU,[2,62]),o($VV,[2,154]),o($VV,[2,155]),o($VV,[2,156]),o($VV,[2,157]),o($VV,[2,158]),o($VV,[2,159]),o($VV,[2,160]),o($VV,[2,161]),o($VV,[2,162]),o($VV,[2,163]),o($VV,[2,164]),{8:$VW,9:$VX,10:$VT,14:116,21:119},{8:$VW,9:$VX,10:$VT,14:120,21:119},{8:$VW,9:$VX,10:$VT,14:121,21:119},{8:$VW,9:$VX,10:$VT,14:122,21:119},{8:$VW,9:$VX,10:$VT,14:123,21:119},o($Vt,[2,30]),o($Vt,[2,38]),o($Vt,[2,39]),o($Vt,[2,40]),o($Vt,[2,31]),o($Vt,[2,32]),o($Vt,[2,33]),o($Vt,[2,34]),o($Vt,[2,35]),{8:$Vu,9:$Vv,10:$Vx,11:$Vw,12:$Vy,13:$Vz,15:$VA,16:$VB,17:$VC,18:$VD,24:124,30:$VE,32:$VF,45:71,46:$VG,50:$VH,60:$VI,66:125,70:74,71:$VK,72:$VL,73:$VM,74:$VN,75:$VO,77:64,78:$VP,81:$Vi,84:$VQ,86:$Vj,88:$Vk,89:$Vl,91:$Vm,92:$Vn,94:$Vo,95:$Vp,96:$Vq,97:$Vr,98:$Vs},o($VY,$V4,{5:126}),o($VZ,[2,92]),o($VZ,[2,94]),o($VZ,[2,143]),o($VZ,[2,144]),o($VZ,[2,145]),o($VZ,[2,146]),o($VZ,[2,147]),o($VZ,[2,148]),o($VZ,[2,149]),o($VZ,[2,150]),o($VZ,[2,151]),o($VZ,[2,152]),o($VZ,[2,153]),o($VZ,[2,97]),o($VZ,[2,98]),o($VZ,[2,99]),o($VZ,[2,100]),o($VZ,[2,101]),o($VZ,[2,102]),o($VZ,[2,103]),o($VZ,[2,104]),o($VZ,[2,105]),o($VZ,[2,106]),o($VZ,[2,107]),{13:$V9,18:$Va,33:127,35:29,44:30,45:32,46:$Vc,81:$Vi,86:$Vj,88:$Vk,89:$Vl,91:$Vm,92:$Vn,94:$Vo,95:$Vp,96:$Vq,97:$Vr,98:$Vs},o($V_,[2,66],{48:128,49:[1,129],65:[1,130]}),{10:$Vx,12:$Vy,13:$Vz,15:$VA,16:$VB,17:$VC,18:$VD,30:$VE,31:131,32:$VF,45:71,46:$VG,50:$VH,60:$VI,66:62,67:$VJ,70:74,71:$VK,72:$VL,73:$VM,74:$VN,75:$VO,77:64,78:$VP,81:$Vi,84:$VQ,86:$Vj,88:$Vk,89:$Vl,91:$Vm,92:$Vn,94:$Vo,95:$Vp,96:$Vq,97:$Vr,98:$Vs},{10:$Vx,12:$Vy,13:$Vz,15:$VA,16:$VB,17:$VC,18:$VD,30:$VE,31:132,32:$VF,45:71,46:$VG,50:$VH,60:$VI,66:62,67:$VJ,70:74,71:$VK,72:$VL,73:$VM,74:$VN,75:$VO,77:64,78:$VP,81:$Vi,84:$VQ,86:$Vj,88:$Vk,89:$Vl,91:$Vm,92:$Vn,94:$Vo,95:$Vp,96:$Vq,97:$Vr,98:$Vs},{10:$Vx,12:$Vy,13:$Vz,15:$VA,16:$VB,17:$VC,18:$VD,30:$VE,31:133,32:$VF,45:71,46:$VG,50:$VH,60:$VI,66:62,67:$VJ,70:74,71:$VK,72:$VL,73:$VM,74:$VN,75:$VO,77:64,78:$VP,81:$Vi,84:$VQ,86:$Vj,88:$Vk,89:$Vl,91:$Vm,92:$Vn,94:$Vo,95:$Vp,96:$Vq,97:$Vr,98:$Vs},o($V$,[2,79]),o($V$,[2,80]),o($V$,[2,81]),o($V$,[2,82]),o($V$,[2,83]),o($V$,[2,84]),o($V$,[2,85]),o($V$,[2,86]),o($V$,[2,87]),o($V$,[2,88]),o($V$,[2,89]),o($V$,[2,90]),{13:$V9,18:$Va,35:134,44:30,45:32,46:$Vc,80:[1,135],81:$Vi,86:$Vj,88:$Vk,89:$Vl,91:$Vm,92:$Vn,94:$Vo,95:$Vp,96:$Vq,97:$Vr,98:$Vs},{78:[1,136],81:[1,137]},{13:$V9,18:$Va,35:139,44:30,45:32,46:$Vc,78:[1,138],81:$Vi,86:$Vj,88:$Vk,89:$Vl,91:$Vm,92:$Vn,94:$Vo,95:$Vp,96:$Vq,97:$Vr,98:$Vs},{13:$V9,18:$Va,35:140,44:30,45:32,46:$Vc,81:$Vi,86:$Vj,88:$Vk,89:$Vl,91:$Vm,92:$Vn,94:$Vo,95:$Vp,96:$Vq,97:$Vr,98:$Vs},{13:$V9,18:$Va,35:141,44:30,45:32,46:$Vc,81:$Vi,86:$Vj,88:$Vk,89:$Vl,91:$Vm,92:$Vn,94:$Vo,95:$Vp,96:$Vq,97:$Vr,98:$Vs},{10:$Vx,12:$Vy,13:$Vz,15:$VA,16:$VB,17:$VC,18:$VD,30:$VE,31:142,32:$VF,45:71,46:$VG,50:$VH,60:$VI,66:62,67:$VJ,70:74,71:$VK,72:$VL,73:$VM,74:$VN,75:$VO,77:64,78:$VP,81:$Vi,84:$VQ,86:$Vj,88:$Vk,89:$Vl,91:$Vm,92:$Vn,94:$Vo,95:$Vp,96:$Vq,97:$Vr,98:$Vs},{10:$Vx,12:$Vy,13:$Vz,15:$VA,16:$VB,17:$VC,18:$VD,30:$VE,31:144,32:$VF,38:[1,143],45:71,46:$VG,50:$VH,60:$VI,66:62,67:$VJ,70:74,71:$VK,72:$VL,73:$VM,74:$VN,75:$VO,77:64,78:$VP,81:$Vi,84:$VQ,86:$Vj,88:$Vk,89:$Vl,91:$Vm,92:$Vn,94:$Vo,95:$Vp,96:$Vq,97:$Vr,98:$Vs},{10:$Vx,12:$Vy,13:$Vz,15:$VA,16:$VB,17:$VC,18:$VD,30:$VE,31:145,32:$VF,45:71,46:$VG,50:$VH,60:$VI,66:62,67:$VJ,70:74,71:$VK,72:$VL,73:$VM,74:$VN,75:$VO,77:64,78:$VP,81:$Vi,84:$VQ,86:$Vj,88:$Vk,89:$Vl,91:$Vm,92:$Vn,94:$Vo,95:$Vp,96:$Vq,97:$Vr,98:$Vs},{10:$Vx,12:$Vy,13:$Vz,15:$VA,16:$VB,17:$VC,18:$VD,30:$VE,31:146,32:$VF,45:71,46:$VG,50:$VH,60:$VI,66:62,67:$VJ,70:74,71:$VK,72:$VL,73:$VM,74:$VN,75:$VO,77:64,78:$VP,81:$Vi,84:$VQ,86:$Vj,88:$Vk,89:$Vl,91:$Vm,92:$Vn,94:$Vo,95:$Vp,96:$Vq,97:$Vr,98:$Vs},{10:$Vx,12:$Vy,13:$Vz,15:$VA,16:$VB,17:$VC,18:$VD,30:$VE,31:147,32:$VF,45:71,46:$VG,50:$VH,60:$VI,66:62,67:$VJ,70:74,71:$VK,72:$VL,73:$VM,74:$VN,75:$VO,77:64,78:$VP,81:$Vi,84:$VQ,86:$Vj,88:$Vk,89:$Vl,91:$Vm,92:$Vn,94:$Vo,95:$Vp,96:$Vq,97:$Vr,98:$Vs},o($VS,[2,56]),o($VU,[2,58]),o($VS,[2,29],{21:148,10:$VT}),o($V3,[2,11]),o($V3,[2,21]),o($V3,[2,22]),{9:[1,149]},o($V3,[2,12]),o($V3,[2,13]),o($V3,[2,14]),o($V3,[2,15]),o($VY,$V4,{5:150}),o($VZ,[2,93]),{6:10,7:11,8:$V5,9:$V6,10:$V7,11:$V8,13:$V9,18:$Va,23:16,25:17,26:18,27:19,28:20,29:21,30:$Vb,32:[1,151],33:23,35:29,44:30,45:32,46:$Vc,71:$Vd,72:$Ve,73:$Vf,74:$Vg,75:$Vh,81:$Vi,86:$Vj,88:$Vk,89:$Vl,91:$Vm,92:$Vn,94:$Vo,95:$Vp,96:$Vq,97:$Vr,98:$Vs},o($VR,[2,41]),o($V_,[2,63],{10:[1,152]}),{10:[1,153]},{10:$Vx,12:$Vy,13:$Vz,15:$VA,16:$VB,17:$VC,18:$VD,30:$VE,31:154,32:$VF,45:71,46:$VG,50:$VH,60:$VI,66:62,67:$VJ,70:74,71:$VK,72:$VL,73:$VM,74:$VN,75:$VO,77:64,78:$VP,81:$Vi,84:$VQ,86:$Vj,88:$Vk,89:$Vl,91:$Vm,92:$Vn,94:$Vo,95:$Vp,96:$Vq,97:$Vr,98:$Vs},{10:$Vx,12:$Vy,13:$Vz,15:$VA,16:$VB,17:$VC,18:$VD,30:$VE,32:$VF,45:71,46:$VG,50:$VH,51:[1,155],52:[1,156],53:[1,157],54:[1,158],60:$VI,66:125,70:74,71:$VK,72:$VL,73:$VM,74:$VN,75:$VO,77:64,78:$VP,81:$Vi,84:$VQ,86:$Vj,88:$Vk,89:$Vl,91:$Vm,92:$Vn,94:$Vo,95:$Vp,96:$Vq,97:$Vr,98:$Vs},{10:$Vx,12:$Vy,13:$Vz,15:$VA,16:$VB,17:$VC,18:$VD,30:$VE,32:$VF,45:71,46:$VG,50:$VH,56:[1,159],57:[1,160],58:[1,161],59:[1,162],60:$VI,66:125,70:74,71:$VK,72:$VL,73:$VM,74:$VN,75:$VO,77:64,78:$VP,81:$Vi,84:$VQ,86:$Vj,88:$Vk,89:$Vl,91:$Vm,92:$Vn,94:$Vo,95:$Vp,96:$Vq,97:$Vr,98:$Vs},{10:$Vx,12:$Vy,13:$Vz,15:$VA,16:$VB,17:$VC,18:$VD,30:$VE,32:$VF,45:71,46:$VG,50:$VH,60:$VI,61:[1,163],62:[1,164],63:[1,165],64:[1,166],66:125,70:74,71:$VK,72:$VL,73:$VM,74:$VN,75:$VO,77:64,78:$VP,81:$Vi,84:$VQ,86:$Vj,88:$Vk,89:$Vl,91:$Vm,92:$Vn,94:$Vo,95:$Vp,96:$Vq,97:$Vr,98:$Vs},{10:[1,167],13:$V9,18:$Va,44:114,45:32,46:$Vc,81:$Vi,86:$Vj,88:$Vk,89:$Vl,91:$Vm,92:$Vn,94:$Vo,95:$Vp,96:$Vq,97:$Vr,98:$Vs},{10:[1,168]},{10:[1,169]},{10:[1,170]},{10:[1,171]},{10:[1,172],13:$V9,18:$Va,44:114,45:32,46:$Vc,81:$Vi,86:$Vj,88:$Vk,89:$Vl,91:$Vm,92:$Vn,94:$Vo,95:$Vp,96:$Vq,97:$Vr,98:$Vs},{10:[1,173],13:$V9,18:$Va,44:114,45:32,46:$Vc,81:$Vi,86:$Vj,88:$Vk,89:$Vl,91:$Vm,92:$Vn,94:$Vo,95:$Vp,96:$Vq,97:$Vr,98:$Vs},{10:[1,174],13:$V9,18:$Va,44:114,45:32,46:$Vc,81:$Vi,86:$Vj,88:$Vk,89:$Vl,91:$Vm,92:$Vn,94:$Vo,95:$Vp,96:$Vq,97:$Vr,98:$Vs},{10:$Vx,12:$Vy,13:$Vz,15:$VA,16:$VB,17:$VC,18:$VD,30:$VE,32:$VF,37:[1,175],45:71,46:$VG,50:$VH,60:$VI,66:125,70:74,71:$VK,72:$VL,73:$VM,74:$VN,75:$VO,77:64,78:$VP,81:$Vi,84:$VQ,86:$Vj,88:$Vk,89:$Vl,91:$Vm,92:$Vn,94:$Vo,95:$Vp,96:$Vq,97:$Vr,98:$Vs},{10:$Vx,12:$Vy,13:$Vz,15:$VA,16:$VB,17:$VC,18:$VD,30:$VE,31:176,32:$VF,45:71,46:$VG,50:$VH,60:$VI,66:62,67:$VJ,70:74,71:$VK,72:$VL,73:$VM,74:$VN,75:$VO,77:64,78:$VP,81:$Vi,84:$VQ,86:$Vj,88:$Vk,89:$Vl,91:$Vm,92:$Vn,94:$Vo,95:$Vp,96:$Vq,97:$Vr,98:$Vs},{10:$Vx,12:$Vy,13:$Vz,15:$VA,16:$VB,17:$VC,18:$VD,30:$VE,32:$VF,39:[1,177],45:71,46:$VG,50:$VH,60:$VI,66:125,70:74,71:$VK,72:$VL,73:$VM,74:$VN,75:$VO,77:64,78:$VP,81:$Vi,84:$VQ,86:$Vj,88:$Vk,89:$Vl,91:$Vm,92:$Vn,94:$Vo,95:$Vp,96:$Vq,97:$Vr,98:$Vs},{10:$Vx,12:$Vy,13:$Vz,15:$VA,16:$VB,17:$VC,18:$VD,30:$VE,32:$VF,41:[1,178],45:71,46:$VG,50:$VH,60:$VI,66:125,70:74,71:$VK,72:$VL,73:$VM,74:$VN,75:$VO,77:64,78:$VP,81:$Vi,84:$VQ,86:$Vj,88:$Vk,89:$Vl,91:$Vm,92:$Vn,94:$Vo,95:$Vp,96:$Vq,97:$Vr,98:$Vs},{10:$Vx,12:$Vy,13:$Vz,15:$VA,16:$VB,17:$VC,18:$VD,30:$VE,32:$VF,43:[1,179],45:71,46:$VG,50:$VH,60:$VI,66:125,70:74,71:$VK,72:$VL,73:$VM,74:$VN,75:$VO,77:64,78:$VP,81:$Vi,84:$VQ,86:$Vj,88:$Vk,89:$Vl,91:$Vm,92:$Vn,94:$Vo,95:$Vp,96:$Vq,97:$Vr,98:$Vs},{10:$Vx,12:$Vy,13:$Vz,15:$VA,16:$VB,17:$VC,18:$VD,30:$VE,32:$VF,37:[1,180],45:71,46:$VG,50:$VH,60:$VI,66:125,70:74,71:$VK,72:$VL,73:$VM,74:$VN,75:$VO,77:64,78:$VP,81:$Vi,84:$VQ,86:$Vj,88:$Vk,89:$Vl,91:$Vm,92:$Vn,94:$Vo,95:$Vp,96:$Vq,97:$Vr,98:$Vs},o($VS,[2,28]),o($V3,[2,23]),{6:10,7:11,8:$V5,9:$V6,10:$V7,11:$V8,13:$V9,18:$Va,23:16,25:17,26:18,27:19,28:20,29:21,30:$Vb,32:[1,181],33:23,35:29,44:30,45:32,46:$Vc,71:$Vd,72:$Ve,73:$Vf,74:$Vg,75:$Vh,81:$Vi,86:$Vj,88:$Vk,89:$Vl,91:$Vm,92:$Vn,94:$Vo,95:$Vp,96:$Vq,97:$Vr,98:$Vs},o($Vt,[2,37]),o($V_,[2,65]),o($V_,[2,64]),{10:$Vx,12:$Vy,13:$Vz,15:$VA,16:$VB,17:$VC,18:$VD,30:$VE,32:$VF,45:71,46:$VG,50:$VH,60:$VI,65:[1,182],66:125,70:74,71:$VK,72:$VL,73:$VM,74:$VN,75:$VO,77:64,78:$VP,81:$Vi,84:$VQ,86:$Vj,88:$Vk,89:$Vl,91:$Vm,92:$Vn,94:$Vo,95:$Vp,96:$Vq,97:$Vr,98:$Vs},o($V_,[2,67]),o($V_,[2,68]),o($V_,[2,69]),o($V_,[2,70]),o($V_,[2,71]),o($V_,[2,72]),o($V_,[2,73]),o($V_,[2,74]),o($V_,[2,75]),o($V_,[2,76]),o($V_,[2,77]),o($V_,[2,78]),{10:$V01,46:$V11,71:$V21,79:183,80:$V31,81:$V41,84:$V51,85:184,87:185,88:$V61,89:$V71,90:$V81,91:$V91,92:$Va1},{10:$V01,46:$V11,71:$V21,79:197,80:$V31,81:$V41,84:$V51,85:184,87:185,88:$V61,89:$V71,90:$V81,91:$V91,92:$Va1},{10:$V01,46:$V11,71:$V21,79:198,80:$V31,81:$V41,82:[1,199],84:$V51,85:184,87:185,88:$V61,89:$V71,90:$V81,91:$V91,92:$Va1},{10:$V01,46:$V11,71:$V21,79:200,80:$V31,81:$V41,82:[1,201],84:$V51,85:184,87:185,88:$V61,89:$V71,90:$V81,91:$V91,92:$Va1},{10:$V01,46:$V11,71:$V21,79:202,80:$V31,81:$V41,84:$V51,85:184,87:185,88:$V61,89:$V71,90:$V81,91:$V91,92:$Va1},{10:$V01,46:$V11,71:$V21,79:203,80:$V31,81:$V41,84:$V51,85:184,87:185,88:$V61,89:$V71,90:$V81,91:$V91,92:$Va1},{13:$V9,18:$Va,35:204,44:30,45:32,46:$Vc,81:$Vi,86:$Vj,88:$Vk,89:$Vl,91:$Vm,92:$Vn,94:$Vo,95:$Vp,96:$Vq,97:$Vr,98:$Vs},{13:$V9,18:$Va,35:205,44:30,45:32,46:$Vc,67:[1,206],81:$Vi,86:$Vj,88:$Vk,89:$Vl,91:$Vm,92:$Vn,94:$Vo,95:$Vp,96:$Vq,97:$Vr,98:$Vs},o($VS,[2,43],{21:207,10:$VT}),{10:$Vx,12:$Vy,13:$Vz,15:$VA,16:$VB,17:$VC,18:$VD,30:$VE,32:$VF,39:[1,208],45:71,46:$VG,50:$VH,60:$VI,66:125,70:74,71:$VK,72:$VL,73:$VM,74:$VN,75:$VO,77:64,78:$VP,81:$Vi,84:$VQ,86:$Vj,88:$Vk,89:$Vl,91:$Vm,92:$Vn,94:$Vo,95:$Vp,96:$Vq,97:$Vr,98:$Vs},o($VS,[2,49],{21:209,10:$VT}),o($VS,[2,47],{21:210,10:$VT}),o($VS,[2,51],{21:211,10:$VT}),o($VS,[2,53],{21:212,10:$VT}),o($Vt,[2,36]),o([10,13,18,46,81,86,88,89,91,92,94,95,96,97,98],[2,91]),o($VR,[2,117],{86:$Vb1}),o($Vc1,[2,126],{87:214,10:$V01,46:$V11,71:$V21,80:$V31,81:$V41,84:$V51,88:$V61,89:$V71,90:$V81,91:$V91,92:$Va1}),o($Vd1,[2,128]),o($Vd1,[2,130]),o($Vd1,[2,131]),o($Vd1,[2,132]),o($Vd1,[2,133]),o($Vd1,[2,134]),o($Vd1,[2,135]),o($Vd1,[2,136]),o($Vd1,[2,137]),o($Vd1,[2,138]),o($Vd1,[2,139]),o($Vd1,[2,140]),o($VR,[2,118],{86:$Vb1}),o($VR,[2,119],{86:$Vb1}),{10:[1,215]},o($VR,[2,120],{86:$Vb1}),{10:[1,216]},o($VR,[2,110],{86:$Vb1}),o($VR,[2,111],{86:$Vb1}),o($VR,[2,112],{45:32,44:114,13:$V9,18:$Va,46:$Vc,81:$Vi,86:$Vj,88:$Vk,89:$Vl,91:$Vm,92:$Vn,94:$Vo,95:$Vp,96:$Vq,97:$Vr,98:$Vs}),o($VR,[2,113],{45:32,44:114,10:[1,217],13:$V9,18:$Va,46:$Vc,81:$Vi,86:$Vj,88:$Vk,89:$Vl,91:$Vm,92:$Vn,94:$Vo,95:$Vp,96:$Vq,97:$Vr,98:$Vs}),o($VR,[2,115],{10:[1,218]}),o($VS,[2,44]),{39:[1,219]},o($VS,[2,50]),o($VS,[2,48]),o($VS,[2,52]),o($VS,[2,54]),{10:$V01,46:$V11,71:$V21,80:$V31,81:$V41,84:$V51,85:220,87:185,88:$V61,89:$V71,90:$V81,91:$V91,92:$Va1},o($Vd1,[2,129]),{13:$V9,18:$Va,35:221,44:30,45:32,46:$Vc,81:$Vi,86:$Vj,88:$Vk,89:$Vl,91:$Vm,92:$Vn,94:$Vo,95:$Vp,96:$Vq,97:$Vr,98:$Vs},{13:$V9,18:$Va,35:222,44:30,45:32,46:$Vc,81:$Vi,86:$Vj,88:$Vk,89:$Vl,91:$Vm,92:$Vn,94:$Vo,95:$Vp,96:$Vq,97:$Vr,98:$Vs},{67:[1,223]},{67:[1,224]},o($VS,[2,45],{21:225,10:$VT}),o($Vc1,[2,127],{87:214,10:$V01,46:$V11,71:$V21,80:$V31,81:$V41,84:$V51,88:$V61,89:$V71,90:$V81,91:$V91,92:$Va1}),o($VR,[2,123],{45:32,44:114,10:[1,226],13:$V9,18:$Va,46:$Vc,81:$Vi,86:$Vj,88:$Vk,89:$Vl,91:$Vm,92:$Vn,94:$Vo,95:$Vp,96:$Vq,97:$Vr,98:$Vs}),o($VR,[2,124],{45:32,44:114,10:[1,227],13:$V9,18:$Va,46:$Vc,81:$Vi,86:$Vj,88:$Vk,89:$Vl,91:$Vm,92:$Vn,94:$Vo,95:$Vp,96:$Vq,97:$Vr,98:$Vs}),o($VR,[2,114]),o($VR,[2,116]),o($VS,[2,46]),{10:$V01,46:$V11,71:$V21,79:228,80:$V31,81:$V41,84:$V51,85:184,87:185,88:$V61,89:$V71,90:$V81,91:$V91,92:$Va1},{10:$V01,46:$V11,71:$V21,79:229,80:$V31,81:$V41,84:$V51,85:184,87:185,88:$V61,89:$V71,90:$V81,91:$V91,92:$Va1},o($VR,[2,121],{86:$Vb1}),o($VR,[2,122],{86:$Vb1})], | ||
defaultActions: {}, | ||
parseError: function parseError(str, hash) { | ||
if (hash.recoverable) { | ||
this.trace(str); | ||
} else { | ||
function _parseError (msg, hash) { | ||
this.message = msg | ||
this.hash = hash | ||
this.message = msg; | ||
this.hash = hash; | ||
} | ||
_parseError.prototype = Error | ||
_parseError.prototype = Error; | ||
throw new _parseError(str, hash) | ||
} | ||
}, | ||
parse: function parse (input) { | ||
var self = this, stack = [0], tstack = [], vstack = [null], lstack = [], table = this.table, yytext = '', yylineno = 0, yyleng = 0, recovering = 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) { | ||
throw new _parseError(str, hash); | ||
} | ||
}, | ||
parse: function parse(input) { | ||
var self = this, stack = [0], tstack = [], vstack = [null], lstack = [], table = this.table, yytext = '', yylineno = 0, yyleng = 0, recovering = 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] | ||
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 | ||
} | ||
function popStack (n) { | ||
stack.length = stack.length - 2 * n | ||
vstack.length = vstack.length - n | ||
lstack.length = lstack.length - n | ||
} | ||
var lex = function () { | ||
var token | ||
token = lexer.lex() || EOF | ||
if (typeof token !== 'number') { | ||
token = self.symbols_[token] || token | ||
} | ||
return token | ||
} | ||
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; | ||
} | ||
function popStack(n) { | ||
stack.length = stack.length - 2 * n; | ||
vstack.length = vstack.length - n; | ||
lstack.length = lstack.length - n; | ||
} | ||
function lex() { | ||
var token; | ||
token = tstack.pop() || lexer.lex() || EOF; | ||
if (typeof token !== 'number') { | ||
if (token instanceof Array) { | ||
tstack = token; | ||
token = tstack.pop(); | ||
} | ||
token = self.symbols_[token] || token; | ||
} | ||
return token; | ||
} | ||
var symbol, preErrorSymbol, state, action, a, r, yyval = {}, p, len, newState, expected | ||
while (true) { | ||
state = stack[stack.length - 1] | ||
var symbol, preErrorSymbol, state, action, a, r, yyval = {}, p, len, newState, expected; | ||
while (true) { | ||
state = stack[stack.length - 1]; | ||
if (this.defaultActions[state]) { | ||
action = this.defaultActions[state] | ||
action = this.defaultActions[state]; | ||
} else { | ||
if (symbol === null || typeof symbol === 'undefined') { | ||
symbol = lex() | ||
} | ||
action = table[state] && table[state][symbol] | ||
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] + '\'') | ||
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 (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) { | ||
throw new Error('Parse Error: multiple actions possible at state: ' + state + ', token: ' + symbol) | ||
throw new Error('Parse Error: multiple actions possible at state: ' + state + ', token: ' + symbol); | ||
} | ||
switch (action[0]) { | ||
case 1: | ||
stack.push(symbol) | ||
vstack.push(lexer.yytext) | ||
lstack.push(lexer.yylloc) | ||
stack.push(action[1]) | ||
symbol = null | ||
case 1: | ||
stack.push(symbol); | ||
vstack.push(lexer.yytext); | ||
lstack.push(lexer.yylloc); | ||
stack.push(action[1]); | ||
symbol = null; | ||
if (!preErrorSymbol) { | ||
yyleng = lexer.yyleng | ||
yytext = lexer.yytext | ||
yylineno = lexer.yylineno | ||
yyloc = lexer.yylloc | ||
if (recovering > 0) { | ||
recovering-- | ||
} | ||
yyleng = lexer.yyleng; | ||
yytext = lexer.yytext; | ||
yylineno = lexer.yylineno; | ||
yyloc = lexer.yylloc; | ||
if (recovering > 0) { | ||
recovering--; | ||
} | ||
} else { | ||
symbol = preErrorSymbol | ||
preErrorSymbol = null | ||
symbol = preErrorSymbol; | ||
preErrorSymbol = null; | ||
} | ||
break | ||
case 2: | ||
len = this.productions_[action[1]][1] | ||
yyval.$ = vstack[vstack.length - len] | ||
break; | ||
case 2: | ||
len = this.productions_[action[1]][1]; | ||
yyval.$ = vstack[vstack.length - len]; | ||
yyval._$ = { | ||
first_line: lstack[lstack.length - (len || 1)].first_line, | ||
last_line: lstack[lstack.length - 1].last_line, | ||
first_column: lstack[lstack.length - (len || 1)].first_column, | ||
last_column: lstack[lstack.length - 1].last_column | ||
} | ||
first_line: lstack[lstack.length - (len || 1)].first_line, | ||
last_line: lstack[lstack.length - 1].last_line, | ||
first_column: lstack[lstack.length - (len || 1)].first_column, | ||
last_column: lstack[lstack.length - 1].last_column | ||
}; | ||
if (ranges) { | ||
yyval._$.range = [ | ||
lstack[lstack.length - (len || 1)].range[0], | ||
lstack[lstack.length - 1].range[1] | ||
] | ||
yyval._$.range = [ | ||
lstack[lstack.length - (len || 1)].range[0], | ||
lstack[lstack.length - 1].range[1] | ||
]; | ||
} | ||
r = this.performAction.apply(yyval, [ | ||
yytext, | ||
yyleng, | ||
yylineno, | ||
sharedState.yy, | ||
action[1], | ||
vstack, | ||
lstack | ||
].concat(args)) | ||
yytext, | ||
yyleng, | ||
yylineno, | ||
sharedState.yy, | ||
action[1], | ||
vstack, | ||
lstack | ||
].concat(args)); | ||
if (typeof r !== 'undefined') { | ||
return r | ||
return r; | ||
} | ||
if (len) { | ||
stack = stack.slice(0, -1 * len * 2) | ||
vstack = vstack.slice(0, -1 * len) | ||
lstack = lstack.slice(0, -1 * len) | ||
stack = stack.slice(0, -1 * len * 2); | ||
vstack = vstack.slice(0, -1 * len); | ||
lstack = lstack.slice(0, -1 * len); | ||
} | ||
stack.push(this.productions_[action[1]][0]) | ||
vstack.push(yyval.$) | ||
lstack.push(yyval._$) | ||
newState = table[stack[stack.length - 2]][stack[stack.length - 1]] | ||
stack.push(newState) | ||
break | ||
case 3: | ||
return true | ||
stack.push(this.productions_[action[1]][0]); | ||
vstack.push(yyval.$); | ||
lstack.push(yyval._$); | ||
newState = table[stack[stack.length - 2]][stack[stack.length - 1]]; | ||
stack.push(newState); | ||
break; | ||
case 3: | ||
return true; | ||
} | ||
} | ||
return true | ||
}} | ||
} | ||
return true; | ||
}}; | ||
/* generated by jison-lex 0.3.4 */ | ||
var lexer = (function () { | ||
var lexer = ({ | ||
var lexer = (function(){ | ||
var lexer = ({ | ||
EOF: 1, | ||
EOF:1, | ||
parseError: function parseError (str, hash) { | ||
parseError:function parseError(str, hash) { | ||
if (this.yy.parser) { | ||
this.yy.parser.parseError(str, hash) | ||
this.yy.parser.parseError(str, hash); | ||
} else { | ||
throw new Error(str) | ||
throw new Error(str); | ||
} | ||
}, | ||
}, | ||
// resets the lexer, sets new input | ||
setInput: function (input, yy) { | ||
this.yy = yy || this.yy || {} | ||
this._input = input | ||
this._more = this._backtrack = this.done = false | ||
this.yylineno = this.yyleng = 0 | ||
this.yytext = this.matched = this.match = '' | ||
this.conditionStack = ['INITIAL'] | ||
setInput:function (input, yy) { | ||
this.yy = yy || this.yy || {}; | ||
this._input = input; | ||
this._more = this._backtrack = this.done = false; | ||
this.yylineno = this.yyleng = 0; | ||
this.yytext = this.matched = this.match = ''; | ||
this.conditionStack = ['INITIAL']; | ||
this.yylloc = { | ||
first_line: 1, | ||
first_column: 0, | ||
last_line: 1, | ||
last_column: 0 | ||
} | ||
first_line: 1, | ||
first_column: 0, | ||
last_line: 1, | ||
last_column: 0 | ||
}; | ||
if (this.options.ranges) { | ||
this.yylloc.range = [0, 0] | ||
this.yylloc.range = [0,0]; | ||
} | ||
this.offset = 0 | ||
return this | ||
}, | ||
this.offset = 0; | ||
return this; | ||
}, | ||
// consumes and returns one char from the input | ||
input: function () { | ||
var ch = this._input[0] | ||
this.yytext += ch | ||
this.yyleng++ | ||
this.offset++ | ||
this.match += ch | ||
this.matched += ch | ||
var lines = ch.match(/(?:\r\n?|\n).*/g) | ||
input:function () { | ||
var ch = this._input[0]; | ||
this.yytext += ch; | ||
this.yyleng++; | ||
this.offset++; | ||
this.match += ch; | ||
this.matched += ch; | ||
var lines = ch.match(/(?:\r\n?|\n).*/g); | ||
if (lines) { | ||
this.yylineno++ | ||
this.yylloc.last_line++ | ||
this.yylineno++; | ||
this.yylloc.last_line++; | ||
} else { | ||
this.yylloc.last_column++ | ||
this.yylloc.last_column++; | ||
} | ||
if (this.options.ranges) { | ||
this.yylloc.range[1]++ | ||
this.yylloc.range[1]++; | ||
} | ||
this._input = this._input.slice(1) | ||
return ch | ||
}, | ||
this._input = this._input.slice(1); | ||
return ch; | ||
}, | ||
// unshifts one char (or a string) into the input | ||
unput: function (ch) { | ||
var len = ch.length | ||
var lines = ch.split(/(?:\r\n?|\n)/g) | ||
unput:function (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 -= len; | ||
this.offset -= len | ||
var oldLines = this.match.split(/(?:\r\n?|\n)/g) | ||
this.match = this.match.substr(0, this.match.length - 1) | ||
this.matched = this.matched.substr(0, this.matched.length - 1) | ||
this._input = ch + this._input; | ||
this.yytext = this.yytext.substr(0, this.yytext.length - len); | ||
//this.yyleng -= len; | ||
this.offset -= len; | ||
var oldLines = this.match.split(/(?:\r\n?|\n)/g); | ||
this.match = this.match.substr(0, this.match.length - 1); | ||
this.matched = this.matched.substr(0, this.matched.length - 1); | ||
if (lines.length - 1) { | ||
this.yylineno -= lines.length - 1 | ||
this.yylineno -= lines.length - 1; | ||
} | ||
var r = this.yylloc.range | ||
var r = this.yylloc.range; | ||
this.yylloc = { | ||
first_line: this.yylloc.first_line, | ||
last_line: this.yylineno + 1, | ||
first_column: this.yylloc.first_column, | ||
last_column: lines | ||
? (lines.length === oldLines.length ? this.yylloc.first_column : 0) + | ||
oldLines[oldLines.length - lines.length].length - lines[0].length | ||
: this.yylloc.first_column - len | ||
} | ||
first_line: this.yylloc.first_line, | ||
last_line: this.yylineno + 1, | ||
first_column: this.yylloc.first_column, | ||
last_column: lines ? | ||
(lines.length === oldLines.length ? this.yylloc.first_column : 0) | ||
+ oldLines[oldLines.length - lines.length].length - lines[0].length : | ||
this.yylloc.first_column - len | ||
}; | ||
if (this.options.ranges) { | ||
this.yylloc.range = [r[0], r[0] + this.yyleng - len] | ||
this.yylloc.range = [r[0], r[0] + this.yyleng - len]; | ||
} | ||
this.yyleng = this.yytext.length | ||
return this | ||
}, | ||
this.yyleng = this.yytext.length; | ||
return this; | ||
}, | ||
// When called from action, caches matched text and appends it on next action | ||
more: function () { | ||
this._more = true | ||
return this | ||
}, | ||
more:function () { | ||
this._more = true; | ||
return this; | ||
}, | ||
// When called from action, signals the lexer that this rule fails to match the input, so the next matching rule (regex) should be tested instead. | ||
reject: function () { | ||
reject:function () { | ||
if (this.options.backtrack_lexer) { | ||
this._backtrack = true | ||
this._backtrack = true; | ||
} else { | ||
return this.parseError('Lexical error on line ' + (this.yylineno + 1) + '. You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true).\n' + this.showPosition(), { | ||
text: '', | ||
token: null, | ||
line: this.yylineno | ||
}) | ||
return this.parseError('Lexical error on line ' + (this.yylineno + 1) + '. You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true).\n' + this.showPosition(), { | ||
text: "", | ||
token: null, | ||
line: this.yylineno | ||
}); | ||
} | ||
return this | ||
}, | ||
return this; | ||
}, | ||
// retain first n characters of the match | ||
less: function (n) { | ||
this.unput(this.match.slice(n)) | ||
}, | ||
less:function (n) { | ||
this.unput(this.match.slice(n)); | ||
}, | ||
// displays already matched input, i.e. for error messages | ||
pastInput: function () { | ||
var past = this.matched.substr(0, this.matched.length - this.match.length) | ||
return (past.length > 20 ? '...' : '') + past.substr(-20).replace(/\n/g, '') | ||
}, | ||
pastInput:function () { | ||
var past = this.matched.substr(0, this.matched.length - this.match.length); | ||
return (past.length > 20 ? '...':'') + past.substr(-20).replace(/\n/g, ""); | ||
}, | ||
// displays upcoming input, i.e. for error messages | ||
upcomingInput: function () { | ||
var next = this.match | ||
upcomingInput:function () { | ||
var next = this.match; | ||
if (next.length < 20) { | ||
next += this._input.substr(0, 20 - next.length) | ||
next += this._input.substr(0, 20-next.length); | ||
} | ||
return (next.substr(0, 20) + (next.length > 20 ? '...' : '')).replace(/\n/g, '') | ||
}, | ||
return (next.substr(0,20) + (next.length > 20 ? '...' : '')).replace(/\n/g, ""); | ||
}, | ||
// displays the character position where the lexing error occurred, i.e. for error messages | ||
showPosition: function () { | ||
var pre = this.pastInput() | ||
var c = new Array(pre.length + 1).join('-') | ||
return pre + this.upcomingInput() + '\n' + c + '^' | ||
}, | ||
showPosition:function () { | ||
var pre = this.pastInput(); | ||
var c = new Array(pre.length + 1).join("-"); | ||
return pre + this.upcomingInput() + "\n" + c + "^"; | ||
}, | ||
// test the lexed token: return FALSE when not a match, otherwise return token | ||
test_match: function (match, indexed_rule) { | ||
test_match:function (match, indexed_rule) { | ||
var token, | ||
lines, | ||
backup | ||
lines, | ||
backup; | ||
if (this.options.backtrack_lexer) { | ||
// save context | ||
backup = { | ||
yylineno: this.yylineno, | ||
yylloc: { | ||
first_line: this.yylloc.first_line, | ||
last_line: this.last_line, | ||
first_column: this.yylloc.first_column, | ||
last_column: this.yylloc.last_column | ||
}, | ||
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 | ||
} | ||
if (this.options.ranges) { | ||
backup.yylloc.range = this.yylloc.range.slice(0) | ||
} | ||
backup = { | ||
yylineno: this.yylineno, | ||
yylloc: { | ||
first_line: this.yylloc.first_line, | ||
last_line: this.last_line, | ||
first_column: this.yylloc.first_column, | ||
last_column: this.yylloc.last_column | ||
}, | ||
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 | ||
}; | ||
if (this.options.ranges) { | ||
backup.yylloc.range = this.yylloc.range.slice(0); | ||
} | ||
} | ||
lines = match[0].match(/(?:\r\n?|\n).*/g) | ||
lines = match[0].match(/(?:\r\n?|\n).*/g); | ||
if (lines) { | ||
this.yylineno += lines.length | ||
this.yylineno += lines.length; | ||
} | ||
this.yylloc = { | ||
first_line: this.yylloc.last_line, | ||
last_line: this.yylineno + 1, | ||
first_column: this.yylloc.last_column, | ||
last_column: lines | ||
? lines[lines.length - 1].length - lines[lines.length - 1].match(/\r?\n?/)[0].length | ||
: this.yylloc.last_column + match[0].length | ||
} | ||
this.yytext += match[0] | ||
this.match += match[0] | ||
this.matches = match | ||
this.yyleng = this.yytext.length | ||
first_line: this.yylloc.last_line, | ||
last_line: this.yylineno + 1, | ||
first_column: this.yylloc.last_column, | ||
last_column: lines ? | ||
lines[lines.length - 1].length - lines[lines.length - 1].match(/\r?\n?/)[0].length : | ||
this.yylloc.last_column + match[0].length | ||
}; | ||
this.yytext += match[0]; | ||
this.match += match[0]; | ||
this.matches = match; | ||
this.yyleng = this.yytext.length; | ||
if (this.options.ranges) { | ||
this.yylloc.range = [this.offset, this.offset += this.yyleng] | ||
this.yylloc.range = [this.offset, this.offset += this.yyleng]; | ||
} | ||
this._more = false | ||
this._backtrack = false | ||
this._input = this._input.slice(match[0].length) | ||
this.matched += match[0] | ||
token = this.performAction.call(this, this.yy, this, indexed_rule, this.conditionStack[this.conditionStack.length - 1]) | ||
this._more = false; | ||
this._backtrack = false; | ||
this._input = this._input.slice(match[0].length); | ||
this.matched += match[0]; | ||
token = this.performAction.call(this, this.yy, this, indexed_rule, this.conditionStack[this.conditionStack.length - 1]); | ||
if (this.done && this._input) { | ||
this.done = false | ||
this.done = false; | ||
} | ||
if (token) { | ||
return token | ||
return token; | ||
} else if (this._backtrack) { | ||
// recover context | ||
for (var k in backup) { | ||
this[k] = backup[k] | ||
} | ||
return false // rule action called reject() implying the next rule should be tested instead. | ||
for (var k in backup) { | ||
this[k] = backup[k]; | ||
} | ||
return false; // rule action called reject() implying the next rule should be tested instead. | ||
} | ||
return false | ||
}, | ||
return false; | ||
}, | ||
// return next match in input | ||
next: function () { | ||
next:function () { | ||
if (this.done) { | ||
return this.EOF | ||
return this.EOF; | ||
} | ||
if (!this._input) { | ||
this.done = true | ||
this.done = true; | ||
} | ||
var token, | ||
match, | ||
tempMatch, | ||
index | ||
match, | ||
tempMatch, | ||
index; | ||
if (!this._more) { | ||
this.yytext = '' | ||
this.match = '' | ||
this.yytext = ''; | ||
this.match = ''; | ||
} | ||
var rules = this._currentRules() | ||
var rules = this._currentRules(); | ||
for (var i = 0; i < rules.length; i++) { | ||
tempMatch = this._input.match(this.rules[rules[i]]) | ||
if (tempMatch && (!match || tempMatch[0].length > match[0].length)) { | ||
match = tempMatch | ||
index = i | ||
if (this.options.backtrack_lexer) { | ||
token = this.test_match(tempMatch, rules[i]) | ||
if (token !== false) { | ||
return token | ||
} else if (this._backtrack) { | ||
match = false | ||
continue // rule action called reject() implying a rule MISmatch. | ||
} else { | ||
tempMatch = this._input.match(this.rules[rules[i]]); | ||
if (tempMatch && (!match || tempMatch[0].length > match[0].length)) { | ||
match = tempMatch; | ||
index = i; | ||
if (this.options.backtrack_lexer) { | ||
token = this.test_match(tempMatch, rules[i]); | ||
if (token !== false) { | ||
return token; | ||
} else if (this._backtrack) { | ||
match = false; | ||
continue; // rule action called reject() implying a rule MISmatch. | ||
} else { | ||
// else: this is a lexer rule which consumes input without producing a token (e.g. whitespace) | ||
return false | ||
} | ||
} else if (!this.options.flex) { | ||
break | ||
return false; | ||
} | ||
} else if (!this.options.flex) { | ||
break; | ||
} | ||
} | ||
} | ||
} | ||
if (match) { | ||
token = this.test_match(match, rules[index]) | ||
if (token !== false) { | ||
return token | ||
} | ||
token = this.test_match(match, rules[index]); | ||
if (token !== false) { | ||
return token; | ||
} | ||
// else: this is a lexer rule which consumes input without producing a token (e.g. whitespace) | ||
return false | ||
return false; | ||
} | ||
if (this._input === '') { | ||
return this.EOF | ||
if (this._input === "") { | ||
return this.EOF; | ||
} else { | ||
return this.parseError('Lexical error on line ' + (this.yylineno + 1) + '. Unrecognized text.\n' + this.showPosition(), { | ||
text: '', | ||
token: null, | ||
line: this.yylineno | ||
}) | ||
return this.parseError('Lexical error on line ' + (this.yylineno + 1) + '. Unrecognized text.\n' + this.showPosition(), { | ||
text: "", | ||
token: null, | ||
line: this.yylineno | ||
}); | ||
} | ||
}, | ||
}, | ||
// return next match that has a token | ||
lex: function lex () { | ||
var r = this.next() | ||
lex:function lex() { | ||
var r = this.next(); | ||
if (r) { | ||
return r | ||
return r; | ||
} else { | ||
return this.lex() | ||
return this.lex(); | ||
} | ||
}, | ||
}, | ||
// activates a new lexer condition state (pushes the new lexer condition state onto the condition stack) | ||
begin: function begin (condition) { | ||
this.conditionStack.push(condition) | ||
}, | ||
begin:function begin(condition) { | ||
this.conditionStack.push(condition); | ||
}, | ||
// pop the previously active lexer condition state off the condition stack | ||
popState: function popState () { | ||
var n = this.conditionStack.length - 1 | ||
popState:function popState() { | ||
var n = this.conditionStack.length - 1; | ||
if (n > 0) { | ||
return this.conditionStack.pop() | ||
return this.conditionStack.pop(); | ||
} else { | ||
return this.conditionStack[0] | ||
return this.conditionStack[0]; | ||
} | ||
}, | ||
}, | ||
// produce the lexer rule set which is active for the currently active lexer condition state | ||
_currentRules: function _currentRules () { | ||
_currentRules:function _currentRules() { | ||
if (this.conditionStack.length && this.conditionStack[this.conditionStack.length - 1]) { | ||
return this.conditions[this.conditionStack[this.conditionStack.length - 1]].rules | ||
return this.conditions[this.conditionStack[this.conditionStack.length - 1]].rules; | ||
} else { | ||
return this.conditions['INITIAL'].rules | ||
return this.conditions["INITIAL"].rules; | ||
} | ||
}, | ||
}, | ||
// return the currently active lexer condition state; when an index argument is provided it produces the N-th previous condition state, if available | ||
topState: function topState (n) { | ||
n = this.conditionStack.length - 1 - Math.abs(n || 0) | ||
topState:function topState(n) { | ||
n = this.conditionStack.length - 1 - Math.abs(n || 0); | ||
if (n >= 0) { | ||
return this.conditionStack[n] | ||
return this.conditionStack[n]; | ||
} else { | ||
return 'INITIAL' | ||
return "INITIAL"; | ||
} | ||
}, | ||
}, | ||
// alias for begin(condition) | ||
pushState: function pushState (condition) { | ||
this.begin(condition) | ||
}, | ||
pushState:function pushState(condition) { | ||
this.begin(condition); | ||
}, | ||
// return the number of states currently on the stack | ||
stateStackSize: function stateStackSize () { | ||
return this.conditionStack.length | ||
}, | ||
options: {}, | ||
performAction: function anonymous (yy, yy_, $avoiding_name_collisions, YY_START) { | ||
var YYSTATE = YY_START | ||
switch ($avoiding_name_collisions) { | ||
case 0:/* do nothing */ | ||
break | ||
case 1:this.begin('string') | ||
break | ||
case 2:this.popState() | ||
break | ||
case 3:return 'STR' | ||
break | ||
case 4:return 71 | ||
break | ||
case 5:return 78 | ||
break | ||
case 6:return 72 | ||
break | ||
case 7:return 82 | ||
break | ||
case 8:return 73 | ||
break | ||
case 9:return 74 | ||
break | ||
case 10:return 75 | ||
break | ||
case 11:return 12 | ||
break | ||
case 12:return 30 | ||
break | ||
case 13:return 32 | ||
break | ||
case 14:return 13 | ||
break | ||
case 15:return 13 | ||
break | ||
case 16:return 13 | ||
break | ||
case 17:return 13 | ||
break | ||
case 18:return 13 | ||
break | ||
case 19:return 13 | ||
break | ||
case 20:return 81 | ||
break | ||
case 21:return 91 | ||
break | ||
case 22:return 89 | ||
break | ||
case 23:return 8 | ||
break | ||
case 24:return 86 | ||
break | ||
case 25:return 98 | ||
break | ||
case 26:return 16 | ||
break | ||
case 27:return 15 | ||
break | ||
case 28:return 17 | ||
break | ||
case 29:return 18 | ||
break | ||
case 30:return 53 | ||
break | ||
case 31:return 51 | ||
break | ||
case 32:return 52 | ||
break | ||
case 33:return 54 | ||
break | ||
case 34:return 58 | ||
break | ||
case 35:return 56 | ||
break | ||
case 36:return 57 | ||
break | ||
case 37:return 59 | ||
break | ||
case 38:return 58 | ||
break | ||
case 39:return 56 | ||
break | ||
case 40:return 57 | ||
break | ||
case 41:return 59 | ||
break | ||
case 42:return 63 | ||
break | ||
case 43:return 61 | ||
break | ||
case 44:return 62 | ||
break | ||
case 45:return 64 | ||
break | ||
case 46:return 50 | ||
break | ||
case 47:return 55 | ||
break | ||
case 48:return 60 | ||
break | ||
case 49:return 40 | ||
break | ||
case 50:return 41 | ||
break | ||
case 51:return 46 | ||
break | ||
case 52:return 92 | ||
break | ||
case 53:return 96 | ||
break | ||
case 54:return 84 | ||
break | ||
case 55:return 97 | ||
break | ||
case 56:return 97 | ||
break | ||
case 57:return 88 | ||
break | ||
case 58:return 94 | ||
break | ||
case 59:return 95 | ||
break | ||
case 60:return 65 | ||
break | ||
case 61:return 38 | ||
break | ||
case 62:return 39 | ||
break | ||
case 63:return 36 | ||
break | ||
case 64:return 37 | ||
break | ||
case 65:return 42 | ||
break | ||
case 66:return 43 | ||
break | ||
case 67:return 101 | ||
break | ||
case 68:return 9 | ||
break | ||
case 69:return 10 | ||
break | ||
case 70:return 11 | ||
break | ||
} | ||
}, | ||
rules: [/^(?:%%[^\n]*)/, /^(?:["])/, /^(?:["])/, /^(?:[^"]*)/, /^(?:style\b)/, /^(?:default\b)/, /^(?:linkStyle\b)/, /^(?:interpolate\b)/, /^(?:classDef\b)/, /^(?:class\b)/, /^(?:click\b)/, /^(?:graph\b)/, /^(?:subgraph\b)/, /^(?:end\b\s*)/, /^(?:LR\b)/, /^(?:RL\b)/, /^(?:TB\b)/, /^(?:BT\b)/, /^(?:TD\b)/, /^(?:BR\b)/, /^(?:[0-9]+)/, /^(?:#)/, /^(?::)/, /^(?:;)/, /^(?:,)/, /^(?:\*)/, /^(?:<)/, /^(?:>)/, /^(?:\^)/, /^(?:v\b)/, /^(?:\s*--[x]\s*)/, /^(?:\s*-->\s*)/, /^(?:\s*--[o]\s*)/, /^(?:\s*---\s*)/, /^(?:\s*-\.-[x]\s*)/, /^(?:\s*-\.->\s*)/, /^(?:\s*-\.-[o]\s*)/, /^(?:\s*-\.-\s*)/, /^(?:\s*.-[x]\s*)/, /^(?:\s*\.->\s*)/, /^(?:\s*\.-[o]\s*)/, /^(?:\s*\.-\s*)/, /^(?:\s*==[x]\s*)/, /^(?:\s*==>\s*)/, /^(?:\s*==[o]\s*)/, /^(?:\s*==[\=]\s*)/, /^(?:\s*--\s*)/, /^(?:\s*-\.\s*)/, /^(?:\s*==\s*)/, /^(?:\(-)/, /^(?:-\))/, /^(?:-)/, /^(?:\.)/, /^(?:\+)/, /^(?:%)/, /^(?:=)/, /^(?:=)/, /^(?:[A-Za-z]+)/, /^(?:[!"#$%&'*+,-.`?\\_\/])/, /^(?:[\u00AA\u00B5\u00BA\u00C0-\u00D6\u00D8-\u00F6]|[\u00F8-\u02C1\u02C6-\u02D1\u02E0-\u02E4\u02EC\u02EE\u0370-\u0374\u0376\u0377]|[\u037A-\u037D\u0386\u0388-\u038A\u038C\u038E-\u03A1\u03A3-\u03F5]|[\u03F7-\u0481\u048A-\u0527\u0531-\u0556\u0559\u0561-\u0587\u05D0-\u05EA]|[\u05F0-\u05F2\u0620-\u064A\u066E\u066F\u0671-\u06D3\u06D5\u06E5\u06E6\u06EE]|[\u06EF\u06FA-\u06FC\u06FF\u0710\u0712-\u072F\u074D-\u07A5\u07B1\u07CA-\u07EA]|[\u07F4\u07F5\u07FA\u0800-\u0815\u081A\u0824\u0828\u0840-\u0858\u08A0]|[\u08A2-\u08AC\u0904-\u0939\u093D\u0950\u0958-\u0961\u0971-\u0977]|[\u0979-\u097F\u0985-\u098C\u098F\u0990\u0993-\u09A8\u09AA-\u09B0\u09B2]|[\u09B6-\u09B9\u09BD\u09CE\u09DC\u09DD\u09DF-\u09E1\u09F0\u09F1\u0A05-\u0A0A]|[\u0A0F\u0A10\u0A13-\u0A28\u0A2A-\u0A30\u0A32\u0A33\u0A35\u0A36\u0A38\u0A39]|[\u0A59-\u0A5C\u0A5E\u0A72-\u0A74\u0A85-\u0A8D\u0A8F-\u0A91\u0A93-\u0AA8]|[\u0AAA-\u0AB0\u0AB2\u0AB3\u0AB5-\u0AB9\u0ABD\u0AD0\u0AE0\u0AE1\u0B05-\u0B0C]|[\u0B0F\u0B10\u0B13-\u0B28\u0B2A-\u0B30\u0B32\u0B33\u0B35-\u0B39\u0B3D\u0B5C]|[\u0B5D\u0B5F-\u0B61\u0B71\u0B83\u0B85-\u0B8A\u0B8E-\u0B90\u0B92-\u0B95\u0B99]|[\u0B9A\u0B9C\u0B9E\u0B9F\u0BA3\u0BA4\u0BA8-\u0BAA\u0BAE-\u0BB9\u0BD0]|[\u0C05-\u0C0C\u0C0E-\u0C10\u0C12-\u0C28\u0C2A-\u0C33\u0C35-\u0C39\u0C3D]|[\u0C58\u0C59\u0C60\u0C61\u0C85-\u0C8C\u0C8E-\u0C90\u0C92-\u0CA8\u0CAA-\u0CB3]|[\u0CB5-\u0CB9\u0CBD\u0CDE\u0CE0\u0CE1\u0CF1\u0CF2\u0D05-\u0D0C\u0D0E-\u0D10]|[\u0D12-\u0D3A\u0D3D\u0D4E\u0D60\u0D61\u0D7A-\u0D7F\u0D85-\u0D96\u0D9A-\u0DB1]|[\u0DB3-\u0DBB\u0DBD\u0DC0-\u0DC6\u0E01-\u0E30\u0E32\u0E33\u0E40-\u0E46\u0E81]|[\u0E82\u0E84\u0E87\u0E88\u0E8A\u0E8D\u0E94-\u0E97\u0E99-\u0E9F\u0EA1-\u0EA3]|[\u0EA5\u0EA7\u0EAA\u0EAB\u0EAD-\u0EB0\u0EB2\u0EB3\u0EBD\u0EC0-\u0EC4\u0EC6]|[\u0EDC-\u0EDF\u0F00\u0F40-\u0F47\u0F49-\u0F6C\u0F88-\u0F8C\u1000-\u102A]|[\u103F\u1050-\u1055\u105A-\u105D\u1061\u1065\u1066\u106E-\u1070\u1075-\u1081]|[\u108E\u10A0-\u10C5\u10C7\u10CD\u10D0-\u10FA\u10FC-\u1248\u124A-\u124D]|[\u1250-\u1256\u1258\u125A-\u125D\u1260-\u1288\u128A-\u128D\u1290-\u12B0]|[\u12B2-\u12B5\u12B8-\u12BE\u12C0\u12C2-\u12C5\u12C8-\u12D6\u12D8-\u1310]|[\u1312-\u1315\u1318-\u135A\u1380-\u138F\u13A0-\u13F4\u1401-\u166C]|[\u166F-\u167F\u1681-\u169A\u16A0-\u16EA\u1700-\u170C\u170E-\u1711]|[\u1720-\u1731\u1740-\u1751\u1760-\u176C\u176E-\u1770\u1780-\u17B3\u17D7]|[\u17DC\u1820-\u1877\u1880-\u18A8\u18AA\u18B0-\u18F5\u1900-\u191C]|[\u1950-\u196D\u1970-\u1974\u1980-\u19AB\u19C1-\u19C7\u1A00-\u1A16]|[\u1A20-\u1A54\u1AA7\u1B05-\u1B33\u1B45-\u1B4B\u1B83-\u1BA0\u1BAE\u1BAF]|[\u1BBA-\u1BE5\u1C00-\u1C23\u1C4D-\u1C4F\u1C5A-\u1C7D\u1CE9-\u1CEC]|[\u1CEE-\u1CF1\u1CF5\u1CF6\u1D00-\u1DBF\u1E00-\u1F15\u1F18-\u1F1D]|[\u1F20-\u1F45\u1F48-\u1F4D\u1F50-\u1F57\u1F59\u1F5B\u1F5D\u1F5F-\u1F7D]|[\u1F80-\u1FB4\u1FB6-\u1FBC\u1FBE\u1FC2-\u1FC4\u1FC6-\u1FCC\u1FD0-\u1FD3]|[\u1FD6-\u1FDB\u1FE0-\u1FEC\u1FF2-\u1FF4\u1FF6-\u1FFC\u2071\u207F]|[\u2090-\u209C\u2102\u2107\u210A-\u2113\u2115\u2119-\u211D\u2124\u2126\u2128]|[\u212A-\u212D\u212F-\u2139\u213C-\u213F\u2145-\u2149\u214E\u2183\u2184]|[\u2C00-\u2C2E\u2C30-\u2C5E\u2C60-\u2CE4\u2CEB-\u2CEE\u2CF2\u2CF3]|[\u2D00-\u2D25\u2D27\u2D2D\u2D30-\u2D67\u2D6F\u2D80-\u2D96\u2DA0-\u2DA6]|[\u2DA8-\u2DAE\u2DB0-\u2DB6\u2DB8-\u2DBE\u2DC0-\u2DC6\u2DC8-\u2DCE]|[\u2DD0-\u2DD6\u2DD8-\u2DDE\u2E2F\u3005\u3006\u3031-\u3035\u303B\u303C]|[\u3041-\u3096\u309D-\u309F\u30A1-\u30FA\u30FC-\u30FF\u3105-\u312D]|[\u3131-\u318E\u31A0-\u31BA\u31F0-\u31FF\u3400-\u4DB5\u4E00-\u9FCC]|[\uA000-\uA48C\uA4D0-\uA4FD\uA500-\uA60C\uA610-\uA61F\uA62A\uA62B]|[\uA640-\uA66E\uA67F-\uA697\uA6A0-\uA6E5\uA717-\uA71F\uA722-\uA788]|[\uA78B-\uA78E\uA790-\uA793\uA7A0-\uA7AA\uA7F8-\uA801\uA803-\uA805]|[\uA807-\uA80A\uA80C-\uA822\uA840-\uA873\uA882-\uA8B3\uA8F2-\uA8F7\uA8FB]|[\uA90A-\uA925\uA930-\uA946\uA960-\uA97C\uA984-\uA9B2\uA9CF\uAA00-\uAA28]|[\uAA40-\uAA42\uAA44-\uAA4B\uAA60-\uAA76\uAA7A\uAA80-\uAAAF\uAAB1\uAAB5]|[\uAAB6\uAAB9-\uAABD\uAAC0\uAAC2\uAADB-\uAADD\uAAE0-\uAAEA\uAAF2-\uAAF4]|[\uAB01-\uAB06\uAB09-\uAB0E\uAB11-\uAB16\uAB20-\uAB26\uAB28-\uAB2E]|[\uABC0-\uABE2\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\uF900-\uFA6D]|[\uFA70-\uFAD9\uFB00-\uFB06\uFB13-\uFB17\uFB1D\uFB1F-\uFB28\uFB2A-\uFB36]|[\uFB38-\uFB3C\uFB3E\uFB40\uFB41\uFB43\uFB44\uFB46-\uFBB1\uFBD3-\uFD3D]|[\uFD50-\uFD8F\uFD92-\uFDC7\uFDF0-\uFDFB\uFE70-\uFE74\uFE76-\uFEFC]|[\uFF21-\uFF3A\uFF41-\uFF5A\uFF66-\uFFBE\uFFC2-\uFFC7\uFFCA-\uFFCF]|[\uFFD2-\uFFD7\uFFDA-\uFFDC])/, /^(?:\|)/, /^(?:\()/, /^(?:\))/, /^(?:\[)/, /^(?:\])/, /^(?:\{)/, /^(?:\})/, /^(?:")/, /^(?:\n+)/, /^(?:\s)/, /^(?:$)/], | ||
conditions: {'string': {'rules': [2, 3], 'inclusive': false}, 'INITIAL': {'rules': [0, 1, 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, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70], 'inclusive': true}} | ||
}) | ||
return lexer | ||
})() | ||
parser.lexer = lexer | ||
function Parser () { | ||
this.yy = {} | ||
} | ||
Parser.prototype = parser; parser.Parser = Parser | ||
return new Parser() | ||
})() | ||
stateStackSize:function stateStackSize() { | ||
return this.conditionStack.length; | ||
}, | ||
options: {}, | ||
performAction: function anonymous(yy,yy_,$avoiding_name_collisions,YY_START) { | ||
var YYSTATE=YY_START; | ||
switch($avoiding_name_collisions) { | ||
case 0:/* do nothing */ | ||
break; | ||
case 1:this.begin("string"); | ||
break; | ||
case 2:this.popState(); | ||
break; | ||
case 3:return "STR"; | ||
break; | ||
case 4:return 71; | ||
break; | ||
case 5:return 78; | ||
break; | ||
case 6:return 72; | ||
break; | ||
case 7:return 82; | ||
break; | ||
case 8:return 73; | ||
break; | ||
case 9:return 74; | ||
break; | ||
case 10:return 75; | ||
break; | ||
case 11:return 12; | ||
break; | ||
case 12:return 30; | ||
break; | ||
case 13:return 32; | ||
break; | ||
case 14:return 13; | ||
break; | ||
case 15:return 13; | ||
break; | ||
case 16:return 13; | ||
break; | ||
case 17:return 13; | ||
break; | ||
case 18:return 13; | ||
break; | ||
case 19:return 13; | ||
break; | ||
case 20:return 81; | ||
break; | ||
case 21:return 91; | ||
break; | ||
case 22:return 89; | ||
break; | ||
case 23:return 8; | ||
break; | ||
case 24:return 86; | ||
break; | ||
case 25:return 98; | ||
break; | ||
case 26:return 16; | ||
break; | ||
case 27:return 15; | ||
break; | ||
case 28:return 17; | ||
break; | ||
case 29:return 18; | ||
break; | ||
case 30:return 53; | ||
break; | ||
case 31:return 51; | ||
break; | ||
case 32:return 52; | ||
break; | ||
case 33:return 54; | ||
break; | ||
case 34:return 58; | ||
break; | ||
case 35:return 56; | ||
break; | ||
case 36:return 57; | ||
break; | ||
case 37:return 59; | ||
break; | ||
case 38:return 58; | ||
break; | ||
case 39:return 56; | ||
break; | ||
case 40:return 57; | ||
break; | ||
case 41:return 59; | ||
break; | ||
case 42:return 63; | ||
break; | ||
case 43:return 61; | ||
break; | ||
case 44:return 62; | ||
break; | ||
case 45:return 64; | ||
break; | ||
case 46:return 50; | ||
break; | ||
case 47:return 55; | ||
break; | ||
case 48:return 60; | ||
break; | ||
case 49:return 40; | ||
break; | ||
case 50:return 41; | ||
break; | ||
case 51:return 46; | ||
break; | ||
case 52:return 92; | ||
break; | ||
case 53:return 96; | ||
break; | ||
case 54:return 84; | ||
break; | ||
case 55:return 97; | ||
break; | ||
case 56:return 97; | ||
break; | ||
case 57:return 88; | ||
break; | ||
case 58:return 94; | ||
break; | ||
case 59:return 95; | ||
break; | ||
case 60:return 65; | ||
break; | ||
case 61:return 38; | ||
break; | ||
case 62:return 39; | ||
break; | ||
case 63:return 36; | ||
break; | ||
case 64:return 37; | ||
break; | ||
case 65:return 42 | ||
break; | ||
case 66:return 43 | ||
break; | ||
case 67:return 101; | ||
break; | ||
case 68:return 9; | ||
break; | ||
case 69:return 10; | ||
break; | ||
case 70:return 11; | ||
break; | ||
} | ||
}, | ||
rules: [/^(?:%%[^\n]*)/,/^(?:["])/,/^(?:["])/,/^(?:[^"]*)/,/^(?:style\b)/,/^(?:default\b)/,/^(?:linkStyle\b)/,/^(?:interpolate\b)/,/^(?:classDef\b)/,/^(?:class\b)/,/^(?:click\b)/,/^(?:graph\b)/,/^(?:subgraph\b)/,/^(?:end\b\s*)/,/^(?:LR\b)/,/^(?:RL\b)/,/^(?:TB\b)/,/^(?:BT\b)/,/^(?:TD\b)/,/^(?:BR\b)/,/^(?:[0-9]+)/,/^(?:#)/,/^(?::)/,/^(?:;)/,/^(?:,)/,/^(?:\*)/,/^(?:<)/,/^(?:>)/,/^(?:\^)/,/^(?:v\b)/,/^(?:\s*--[x]\s*)/,/^(?:\s*-->\s*)/,/^(?:\s*--[o]\s*)/,/^(?:\s*---\s*)/,/^(?:\s*-\.-[x]\s*)/,/^(?:\s*-\.->\s*)/,/^(?:\s*-\.-[o]\s*)/,/^(?:\s*-\.-\s*)/,/^(?:\s*.-[x]\s*)/,/^(?:\s*\.->\s*)/,/^(?:\s*\.-[o]\s*)/,/^(?:\s*\.-\s*)/,/^(?:\s*==[x]\s*)/,/^(?:\s*==>\s*)/,/^(?:\s*==[o]\s*)/,/^(?:\s*==[\=]\s*)/,/^(?:\s*--\s*)/,/^(?:\s*-\.\s*)/,/^(?:\s*==\s*)/,/^(?:\(-)/,/^(?:-\))/,/^(?:-)/,/^(?:\.)/,/^(?:\+)/,/^(?:%)/,/^(?:=)/,/^(?:=)/,/^(?:[A-Za-z]+)/,/^(?:[!"#$%&'*+,-.`?\\_\/])/,/^(?:[\u00AA\u00B5\u00BA\u00C0-\u00D6\u00D8-\u00F6]|[\u00F8-\u02C1\u02C6-\u02D1\u02E0-\u02E4\u02EC\u02EE\u0370-\u0374\u0376\u0377]|[\u037A-\u037D\u0386\u0388-\u038A\u038C\u038E-\u03A1\u03A3-\u03F5]|[\u03F7-\u0481\u048A-\u0527\u0531-\u0556\u0559\u0561-\u0587\u05D0-\u05EA]|[\u05F0-\u05F2\u0620-\u064A\u066E\u066F\u0671-\u06D3\u06D5\u06E5\u06E6\u06EE]|[\u06EF\u06FA-\u06FC\u06FF\u0710\u0712-\u072F\u074D-\u07A5\u07B1\u07CA-\u07EA]|[\u07F4\u07F5\u07FA\u0800-\u0815\u081A\u0824\u0828\u0840-\u0858\u08A0]|[\u08A2-\u08AC\u0904-\u0939\u093D\u0950\u0958-\u0961\u0971-\u0977]|[\u0979-\u097F\u0985-\u098C\u098F\u0990\u0993-\u09A8\u09AA-\u09B0\u09B2]|[\u09B6-\u09B9\u09BD\u09CE\u09DC\u09DD\u09DF-\u09E1\u09F0\u09F1\u0A05-\u0A0A]|[\u0A0F\u0A10\u0A13-\u0A28\u0A2A-\u0A30\u0A32\u0A33\u0A35\u0A36\u0A38\u0A39]|[\u0A59-\u0A5C\u0A5E\u0A72-\u0A74\u0A85-\u0A8D\u0A8F-\u0A91\u0A93-\u0AA8]|[\u0AAA-\u0AB0\u0AB2\u0AB3\u0AB5-\u0AB9\u0ABD\u0AD0\u0AE0\u0AE1\u0B05-\u0B0C]|[\u0B0F\u0B10\u0B13-\u0B28\u0B2A-\u0B30\u0B32\u0B33\u0B35-\u0B39\u0B3D\u0B5C]|[\u0B5D\u0B5F-\u0B61\u0B71\u0B83\u0B85-\u0B8A\u0B8E-\u0B90\u0B92-\u0B95\u0B99]|[\u0B9A\u0B9C\u0B9E\u0B9F\u0BA3\u0BA4\u0BA8-\u0BAA\u0BAE-\u0BB9\u0BD0]|[\u0C05-\u0C0C\u0C0E-\u0C10\u0C12-\u0C28\u0C2A-\u0C33\u0C35-\u0C39\u0C3D]|[\u0C58\u0C59\u0C60\u0C61\u0C85-\u0C8C\u0C8E-\u0C90\u0C92-\u0CA8\u0CAA-\u0CB3]|[\u0CB5-\u0CB9\u0CBD\u0CDE\u0CE0\u0CE1\u0CF1\u0CF2\u0D05-\u0D0C\u0D0E-\u0D10]|[\u0D12-\u0D3A\u0D3D\u0D4E\u0D60\u0D61\u0D7A-\u0D7F\u0D85-\u0D96\u0D9A-\u0DB1]|[\u0DB3-\u0DBB\u0DBD\u0DC0-\u0DC6\u0E01-\u0E30\u0E32\u0E33\u0E40-\u0E46\u0E81]|[\u0E82\u0E84\u0E87\u0E88\u0E8A\u0E8D\u0E94-\u0E97\u0E99-\u0E9F\u0EA1-\u0EA3]|[\u0EA5\u0EA7\u0EAA\u0EAB\u0EAD-\u0EB0\u0EB2\u0EB3\u0EBD\u0EC0-\u0EC4\u0EC6]|[\u0EDC-\u0EDF\u0F00\u0F40-\u0F47\u0F49-\u0F6C\u0F88-\u0F8C\u1000-\u102A]|[\u103F\u1050-\u1055\u105A-\u105D\u1061\u1065\u1066\u106E-\u1070\u1075-\u1081]|[\u108E\u10A0-\u10C5\u10C7\u10CD\u10D0-\u10FA\u10FC-\u1248\u124A-\u124D]|[\u1250-\u1256\u1258\u125A-\u125D\u1260-\u1288\u128A-\u128D\u1290-\u12B0]|[\u12B2-\u12B5\u12B8-\u12BE\u12C0\u12C2-\u12C5\u12C8-\u12D6\u12D8-\u1310]|[\u1312-\u1315\u1318-\u135A\u1380-\u138F\u13A0-\u13F4\u1401-\u166C]|[\u166F-\u167F\u1681-\u169A\u16A0-\u16EA\u1700-\u170C\u170E-\u1711]|[\u1720-\u1731\u1740-\u1751\u1760-\u176C\u176E-\u1770\u1780-\u17B3\u17D7]|[\u17DC\u1820-\u1877\u1880-\u18A8\u18AA\u18B0-\u18F5\u1900-\u191C]|[\u1950-\u196D\u1970-\u1974\u1980-\u19AB\u19C1-\u19C7\u1A00-\u1A16]|[\u1A20-\u1A54\u1AA7\u1B05-\u1B33\u1B45-\u1B4B\u1B83-\u1BA0\u1BAE\u1BAF]|[\u1BBA-\u1BE5\u1C00-\u1C23\u1C4D-\u1C4F\u1C5A-\u1C7D\u1CE9-\u1CEC]|[\u1CEE-\u1CF1\u1CF5\u1CF6\u1D00-\u1DBF\u1E00-\u1F15\u1F18-\u1F1D]|[\u1F20-\u1F45\u1F48-\u1F4D\u1F50-\u1F57\u1F59\u1F5B\u1F5D\u1F5F-\u1F7D]|[\u1F80-\u1FB4\u1FB6-\u1FBC\u1FBE\u1FC2-\u1FC4\u1FC6-\u1FCC\u1FD0-\u1FD3]|[\u1FD6-\u1FDB\u1FE0-\u1FEC\u1FF2-\u1FF4\u1FF6-\u1FFC\u2071\u207F]|[\u2090-\u209C\u2102\u2107\u210A-\u2113\u2115\u2119-\u211D\u2124\u2126\u2128]|[\u212A-\u212D\u212F-\u2139\u213C-\u213F\u2145-\u2149\u214E\u2183\u2184]|[\u2C00-\u2C2E\u2C30-\u2C5E\u2C60-\u2CE4\u2CEB-\u2CEE\u2CF2\u2CF3]|[\u2D00-\u2D25\u2D27\u2D2D\u2D30-\u2D67\u2D6F\u2D80-\u2D96\u2DA0-\u2DA6]|[\u2DA8-\u2DAE\u2DB0-\u2DB6\u2DB8-\u2DBE\u2DC0-\u2DC6\u2DC8-\u2DCE]|[\u2DD0-\u2DD6\u2DD8-\u2DDE\u2E2F\u3005\u3006\u3031-\u3035\u303B\u303C]|[\u3041-\u3096\u309D-\u309F\u30A1-\u30FA\u30FC-\u30FF\u3105-\u312D]|[\u3131-\u318E\u31A0-\u31BA\u31F0-\u31FF\u3400-\u4DB5\u4E00-\u9FCC]|[\uA000-\uA48C\uA4D0-\uA4FD\uA500-\uA60C\uA610-\uA61F\uA62A\uA62B]|[\uA640-\uA66E\uA67F-\uA697\uA6A0-\uA6E5\uA717-\uA71F\uA722-\uA788]|[\uA78B-\uA78E\uA790-\uA793\uA7A0-\uA7AA\uA7F8-\uA801\uA803-\uA805]|[\uA807-\uA80A\uA80C-\uA822\uA840-\uA873\uA882-\uA8B3\uA8F2-\uA8F7\uA8FB]|[\uA90A-\uA925\uA930-\uA946\uA960-\uA97C\uA984-\uA9B2\uA9CF\uAA00-\uAA28]|[\uAA40-\uAA42\uAA44-\uAA4B\uAA60-\uAA76\uAA7A\uAA80-\uAAAF\uAAB1\uAAB5]|[\uAAB6\uAAB9-\uAABD\uAAC0\uAAC2\uAADB-\uAADD\uAAE0-\uAAEA\uAAF2-\uAAF4]|[\uAB01-\uAB06\uAB09-\uAB0E\uAB11-\uAB16\uAB20-\uAB26\uAB28-\uAB2E]|[\uABC0-\uABE2\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\uF900-\uFA6D]|[\uFA70-\uFAD9\uFB00-\uFB06\uFB13-\uFB17\uFB1D\uFB1F-\uFB28\uFB2A-\uFB36]|[\uFB38-\uFB3C\uFB3E\uFB40\uFB41\uFB43\uFB44\uFB46-\uFBB1\uFBD3-\uFD3D]|[\uFD50-\uFD8F\uFD92-\uFDC7\uFDF0-\uFDFB\uFE70-\uFE74\uFE76-\uFEFC]|[\uFF21-\uFF3A\uFF41-\uFF5A\uFF66-\uFFBE\uFFC2-\uFFC7\uFFCA-\uFFCF]|[\uFFD2-\uFFD7\uFFDA-\uFFDC])/,/^(?:\|)/,/^(?:\()/,/^(?:\))/,/^(?:\[)/,/^(?:\])/,/^(?:\{)/,/^(?:\})/,/^(?:")/,/^(?:\n+)/,/^(?:\s)/,/^(?:$)/], | ||
conditions: {"string":{"rules":[2,3],"inclusive":false},"INITIAL":{"rules":[0,1,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,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70],"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) } | ||
exports.main = function commonjsMain (args) { | ||
exports.parser = parser; | ||
exports.Parser = parser.Parser; | ||
exports.parse = function () { return parser.parse.apply(parser, arguments); }; | ||
exports.main = function commonjsMain(args) { | ||
if (!args[1]) { | ||
console.log('Usage: ' + args[0] + ' FILE') | ||
process.exit(1) | ||
console.log('Usage: '+args[0]+' FILE'); | ||
process.exit(1); | ||
} | ||
var source = require('fs').readFileSync(require('path').normalize(args[1]), 'utf8') | ||
return exports.parser.parse(source) | ||
} | ||
if (typeof module !== 'undefined' && require.main === module) { | ||
exports.main(process.argv.slice(1)) | ||
} | ||
var source = require('fs').readFileSync(require('path').normalize(args[1]), "utf8"); | ||
return exports.parser.parse(source); | ||
}; | ||
if (typeof module !== 'undefined' && require.main === module) { | ||
exports.main(process.argv.slice(1)); | ||
} | ||
} |
@@ -53,2 +53,3 @@ /* parser generated by jison 0.4.17 */ | ||
token location info (@$, _$, etc.): { | ||
@@ -62,2 +63,3 @@ first_line: n, | ||
the parseError function receives a 'hash' object with these members for lexer and parser errors: { | ||
@@ -74,583 +76,588 @@ text: (matched text) | ||
*/ | ||
var parser = (function () { | ||
var o = function (k, v, o, l) { for (o = o || {}, l = k.length; l--; o[k[l]] = v); return o }, $V0 = [6, 8, 10, 11, 12, 13, 14], $V1 = [1, 9], $V2 = [1, 10], $V3 = [1, 11], $V4 = [1, 12] | ||
var parser = { | ||
trace: function trace () { }, | ||
yy: {}, | ||
symbols_: { 'error': 2, 'start': 3, 'gantt': 4, 'document': 5, 'EOF': 6, 'line': 7, 'SPACE': 8, 'statement': 9, 'NL': 10, 'dateFormat': 11, 'title': 12, 'section': 13, 'taskTxt': 14, 'taskData': 15, '$accept': 0, '$end': 1 }, | ||
terminals_: { 2: 'error', 4: 'gantt', 6: 'EOF', 8: 'SPACE', 10: 'NL', 11: 'dateFormat', 12: 'title', 13: 'section', 14: 'taskTxt', 15: 'taskData' }, | ||
productions_: [0, [3, 3], [5, 0], [5, 2], [7, 2], [7, 1], [7, 1], [7, 1], [9, 1], [9, 1], [9, 1], [9, 2]], | ||
performAction: function anonymous (yytext, yyleng, yylineno, yy, yystate /* action[1] */, $$ /* vstack */, _$ /* lstack */) { | ||
/* this == yyval */ | ||
var parser = (function(){ | ||
var o=function(k,v,o,l){for(o=o||{},l=k.length;l--;o[k[l]]=v);return o},$V0=[6,8,10,11,12,13,14],$V1=[1,9],$V2=[1,10],$V3=[1,11],$V4=[1,12]; | ||
var parser = {trace: function trace() { }, | ||
yy: {}, | ||
symbols_: {"error":2,"start":3,"gantt":4,"document":5,"EOF":6,"line":7,"SPACE":8,"statement":9,"NL":10,"dateFormat":11,"title":12,"section":13,"taskTxt":14,"taskData":15,"$accept":0,"$end":1}, | ||
terminals_: {2:"error",4:"gantt",6:"EOF",8:"SPACE",10:"NL",11:"dateFormat",12:"title",13:"section",14:"taskTxt",15:"taskData"}, | ||
productions_: [0,[3,3],[5,0],[5,2],[7,2],[7,1],[7,1],[7,1],[9,1],[9,1],[9,1],[9,2]], | ||
performAction: function anonymous(yytext, yyleng, yylineno, yy, yystate /* action[1] */, $$ /* vstack */, _$ /* lstack */) { | ||
/* this == yyval */ | ||
var $0 = $$.length - 1 | ||
switch (yystate) { | ||
case 1: | ||
return $$[$0 - 1] | ||
break | ||
case 2: | ||
this.$ = [] | ||
break | ||
case 3: | ||
$$[$0 - 1].push($$[$0]); this.$ = $$[$0 - 1] | ||
break | ||
case 4: case 5: | ||
this.$ = $$[$0] | ||
break | ||
case 6: case 7: | ||
this.$ = [] | ||
break | ||
case 8: | ||
yy.setDateFormat($$[$0].substr(11)); this.$ = $$[$0].substr(11) | ||
break | ||
case 9: | ||
yy.setTitle($$[$0].substr(6)); this.$ = $$[$0].substr(6) | ||
break | ||
case 10: | ||
yy.addSection($$[$0].substr(8)); this.$ = $$[$0].substr(8) | ||
break | ||
case 11: | ||
yy.addTask($$[$0 - 1], $$[$0]); this.$ = 'task' | ||
break | ||
} | ||
}, | ||
table: [{ 3: 1, 4: [1, 2] }, { 1: [3] }, o($V0, [2, 2], { 5: 3 }), { 6: [1, 4], 7: 5, 8: [1, 6], 9: 7, 10: [1, 8], 11: $V1, 12: $V2, 13: $V3, 14: $V4 }, o($V0, [2, 7], { 1: [2, 1] }), o($V0, [2, 3]), { 9: 13, 11: $V1, 12: $V2, 13: $V3, 14: $V4 }, o($V0, [2, 5]), o($V0, [2, 6]), o($V0, [2, 8]), o($V0, [2, 9]), o($V0, [2, 10]), { 15: [1, 14] }, o($V0, [2, 4]), o($V0, [2, 11])], | ||
defaultActions: {}, | ||
parseError: function parseError (str, hash) { | ||
if (hash.recoverable) { | ||
this.trace(str) | ||
} else { | ||
var $0 = $$.length - 1; | ||
switch (yystate) { | ||
case 1: | ||
return $$[$0-1]; | ||
break; | ||
case 2: | ||
this.$ = [] | ||
break; | ||
case 3: | ||
$$[$0-1].push($$[$0]);this.$ = $$[$0-1] | ||
break; | ||
case 4: case 5: | ||
this.$ = $$[$0] | ||
break; | ||
case 6: case 7: | ||
this.$=[]; | ||
break; | ||
case 8: | ||
yy.setDateFormat($$[$0].substr(11));this.$=$$[$0].substr(11); | ||
break; | ||
case 9: | ||
yy.setTitle($$[$0].substr(6));this.$=$$[$0].substr(6); | ||
break; | ||
case 10: | ||
yy.addSection($$[$0].substr(8));this.$=$$[$0].substr(8); | ||
break; | ||
case 11: | ||
yy.addTask($$[$0-1],$$[$0]);this.$='task'; | ||
break; | ||
} | ||
}, | ||
table: [{3:1,4:[1,2]},{1:[3]},o($V0,[2,2],{5:3}),{6:[1,4],7:5,8:[1,6],9:7,10:[1,8],11:$V1,12:$V2,13:$V3,14:$V4},o($V0,[2,7],{1:[2,1]}),o($V0,[2,3]),{9:13,11:$V1,12:$V2,13:$V3,14:$V4},o($V0,[2,5]),o($V0,[2,6]),o($V0,[2,8]),o($V0,[2,9]),o($V0,[2,10]),{15:[1,14]},o($V0,[2,4]),o($V0,[2,11])], | ||
defaultActions: {}, | ||
parseError: function parseError(str, hash) { | ||
if (hash.recoverable) { | ||
this.trace(str); | ||
} else { | ||
function _parseError (msg, hash) { | ||
this.message = msg | ||
this.hash = hash | ||
this.message = msg; | ||
this.hash = hash; | ||
} | ||
_parseError.prototype = Error | ||
_parseError.prototype = Error; | ||
throw new _parseError(str, hash) | ||
} | ||
}, | ||
parse: function parse (input) { | ||
var self = this, stack = [0], tstack = [], vstack = [null], lstack = [], table = this.table, yytext = '', yylineno = 0, yyleng = 0, recovering = 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) { | ||
throw new _parseError(str, hash); | ||
} | ||
}, | ||
parse: function parse(input) { | ||
var self = this, stack = [0], tstack = [], vstack = [null], lstack = [], table = this.table, yytext = '', yylineno = 0, yyleng = 0, recovering = 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] | ||
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 | ||
} | ||
function popStack (n) { | ||
stack.length = stack.length - 2 * n | ||
vstack.length = vstack.length - n | ||
lstack.length = lstack.length - n | ||
} | ||
var lex = function () { | ||
var token | ||
token = lexer.lex() || EOF | ||
if (typeof token !== 'number') { | ||
token = self.symbols_[token] || token | ||
} | ||
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; | ||
} | ||
function popStack(n) { | ||
stack.length = stack.length - 2 * n; | ||
vstack.length = vstack.length - n; | ||
lstack.length = lstack.length - n; | ||
} | ||
function lex() { | ||
var token; | ||
token = tstack.pop() || lexer.lex() || EOF; | ||
if (typeof token !== 'number') { | ||
if (token instanceof Array) { | ||
tstack = token; | ||
token = tstack.pop(); | ||
} | ||
token = self.symbols_[token] || token; | ||
} | ||
return token; | ||
} | ||
return token | ||
} | ||
var symbol, preErrorSymbol, state, action, a, r, yyval = {}, p, len, newState, expected | ||
while (true) { | ||
state = stack[stack.length - 1] | ||
var symbol, preErrorSymbol, state, action, a, r, yyval = {}, p, len, newState, expected; | ||
while (true) { | ||
state = stack[stack.length - 1]; | ||
if (this.defaultActions[state]) { | ||
action = this.defaultActions[state] | ||
action = this.defaultActions[state]; | ||
} else { | ||
if (symbol === null || typeof symbol === 'undefined') { | ||
symbol = lex() | ||
} | ||
action = table[state] && table[state][symbol] | ||
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] + '\'') | ||
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 (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) { | ||
throw new Error('Parse Error: multiple actions possible at state: ' + state + ', token: ' + symbol) | ||
throw new Error('Parse Error: multiple actions possible at state: ' + state + ', token: ' + symbol); | ||
} | ||
switch (action[0]) { | ||
case 1: | ||
stack.push(symbol) | ||
vstack.push(lexer.yytext) | ||
lstack.push(lexer.yylloc) | ||
stack.push(action[1]) | ||
symbol = null | ||
case 1: | ||
stack.push(symbol); | ||
vstack.push(lexer.yytext); | ||
lstack.push(lexer.yylloc); | ||
stack.push(action[1]); | ||
symbol = null; | ||
if (!preErrorSymbol) { | ||
yyleng = lexer.yyleng | ||
yytext = lexer.yytext | ||
yylineno = lexer.yylineno | ||
yyloc = lexer.yylloc | ||
if (recovering > 0) { | ||
recovering-- | ||
} | ||
yyleng = lexer.yyleng; | ||
yytext = lexer.yytext; | ||
yylineno = lexer.yylineno; | ||
yyloc = lexer.yylloc; | ||
if (recovering > 0) { | ||
recovering--; | ||
} | ||
} else { | ||
symbol = preErrorSymbol | ||
preErrorSymbol = null | ||
symbol = preErrorSymbol; | ||
preErrorSymbol = null; | ||
} | ||
break | ||
case 2: | ||
len = this.productions_[action[1]][1] | ||
yyval.$ = vstack[vstack.length - len] | ||
break; | ||
case 2: | ||
len = this.productions_[action[1]][1]; | ||
yyval.$ = vstack[vstack.length - len]; | ||
yyval._$ = { | ||
first_line: lstack[lstack.length - (len || 1)].first_line, | ||
last_line: lstack[lstack.length - 1].last_line, | ||
first_column: lstack[lstack.length - (len || 1)].first_column, | ||
last_column: lstack[lstack.length - 1].last_column | ||
} | ||
first_line: lstack[lstack.length - (len || 1)].first_line, | ||
last_line: lstack[lstack.length - 1].last_line, | ||
first_column: lstack[lstack.length - (len || 1)].first_column, | ||
last_column: lstack[lstack.length - 1].last_column | ||
}; | ||
if (ranges) { | ||
yyval._$.range = [ | ||
lstack[lstack.length - (len || 1)].range[0], | ||
lstack[lstack.length - 1].range[1] | ||
] | ||
yyval._$.range = [ | ||
lstack[lstack.length - (len || 1)].range[0], | ||
lstack[lstack.length - 1].range[1] | ||
]; | ||
} | ||
r = this.performAction.apply(yyval, [ | ||
yytext, | ||
yyleng, | ||
yylineno, | ||
sharedState.yy, | ||
action[1], | ||
vstack, | ||
lstack | ||
].concat(args)) | ||
yytext, | ||
yyleng, | ||
yylineno, | ||
sharedState.yy, | ||
action[1], | ||
vstack, | ||
lstack | ||
].concat(args)); | ||
if (typeof r !== 'undefined') { | ||
return r | ||
return r; | ||
} | ||
if (len) { | ||
stack = stack.slice(0, -1 * len * 2) | ||
vstack = vstack.slice(0, -1 * len) | ||
lstack = lstack.slice(0, -1 * len) | ||
stack = stack.slice(0, -1 * len * 2); | ||
vstack = vstack.slice(0, -1 * len); | ||
lstack = lstack.slice(0, -1 * len); | ||
} | ||
stack.push(this.productions_[action[1]][0]) | ||
vstack.push(yyval.$) | ||
lstack.push(yyval._$) | ||
newState = table[stack[stack.length - 2]][stack[stack.length - 1]] | ||
stack.push(newState) | ||
break | ||
case 3: | ||
return true | ||
stack.push(this.productions_[action[1]][0]); | ||
vstack.push(yyval.$); | ||
lstack.push(yyval._$); | ||
newState = table[stack[stack.length - 2]][stack[stack.length - 1]]; | ||
stack.push(newState); | ||
break; | ||
case 3: | ||
return true; | ||
} | ||
} | ||
return true | ||
} | ||
} | ||
/* generated by jison-lex 0.3.4 */ | ||
var lexer = (function () { | ||
var lexer = ({ | ||
return true; | ||
}}; | ||
EOF: 1, | ||
/* generated by jison-lex 0.3.4 */ | ||
var lexer = (function(){ | ||
var lexer = ({ | ||
parseError: function parseError (str, hash) { | ||
EOF:1, | ||
parseError:function parseError(str, hash) { | ||
if (this.yy.parser) { | ||
this.yy.parser.parseError(str, hash) | ||
this.yy.parser.parseError(str, hash); | ||
} else { | ||
throw new Error(str) | ||
throw new Error(str); | ||
} | ||
}, | ||
}, | ||
// resets the lexer, sets new input | ||
setInput: function (input, yy) { | ||
this.yy = yy || this.yy || {} | ||
this._input = input | ||
this._more = this._backtrack = this.done = false | ||
this.yylineno = this.yyleng = 0 | ||
this.yytext = this.matched = this.match = '' | ||
this.conditionStack = ['INITIAL'] | ||
// resets the lexer, sets new input | ||
setInput:function (input, yy) { | ||
this.yy = yy || this.yy || {}; | ||
this._input = input; | ||
this._more = this._backtrack = this.done = false; | ||
this.yylineno = this.yyleng = 0; | ||
this.yytext = this.matched = this.match = ''; | ||
this.conditionStack = ['INITIAL']; | ||
this.yylloc = { | ||
first_line: 1, | ||
first_column: 0, | ||
last_line: 1, | ||
last_column: 0 | ||
} | ||
first_line: 1, | ||
first_column: 0, | ||
last_line: 1, | ||
last_column: 0 | ||
}; | ||
if (this.options.ranges) { | ||
this.yylloc.range = [0, 0] | ||
this.yylloc.range = [0,0]; | ||
} | ||
this.offset = 0 | ||
return this | ||
}, | ||
this.offset = 0; | ||
return this; | ||
}, | ||
// consumes and returns one char from the input | ||
input: function () { | ||
var ch = this._input[0] | ||
this.yytext += ch | ||
this.yyleng++ | ||
this.offset++ | ||
this.match += ch | ||
this.matched += ch | ||
var lines = ch.match(/(?:\r\n?|\n).*/g) | ||
// consumes and returns one char from the input | ||
input:function () { | ||
var ch = this._input[0]; | ||
this.yytext += ch; | ||
this.yyleng++; | ||
this.offset++; | ||
this.match += ch; | ||
this.matched += ch; | ||
var lines = ch.match(/(?:\r\n?|\n).*/g); | ||
if (lines) { | ||
this.yylineno++ | ||
this.yylloc.last_line++ | ||
this.yylineno++; | ||
this.yylloc.last_line++; | ||
} else { | ||
this.yylloc.last_column++ | ||
this.yylloc.last_column++; | ||
} | ||
if (this.options.ranges) { | ||
this.yylloc.range[1]++ | ||
this.yylloc.range[1]++; | ||
} | ||
this._input = this._input.slice(1) | ||
return ch | ||
}, | ||
this._input = this._input.slice(1); | ||
return ch; | ||
}, | ||
// unshifts one char (or a string) into the input | ||
unput: function (ch) { | ||
var len = ch.length | ||
var lines = ch.split(/(?:\r\n?|\n)/g) | ||
// unshifts one char (or a string) into the input | ||
unput:function (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 -= len; | ||
this.offset -= len | ||
var oldLines = this.match.split(/(?:\r\n?|\n)/g) | ||
this.match = this.match.substr(0, this.match.length - 1) | ||
this.matched = this.matched.substr(0, this.matched.length - 1) | ||
this._input = ch + this._input; | ||
this.yytext = this.yytext.substr(0, this.yytext.length - len); | ||
//this.yyleng -= len; | ||
this.offset -= len; | ||
var oldLines = this.match.split(/(?:\r\n?|\n)/g); | ||
this.match = this.match.substr(0, this.match.length - 1); | ||
this.matched = this.matched.substr(0, this.matched.length - 1); | ||
if (lines.length - 1) { | ||
this.yylineno -= lines.length - 1 | ||
this.yylineno -= lines.length - 1; | ||
} | ||
var r = this.yylloc.range | ||
var r = this.yylloc.range; | ||
this.yylloc = { | ||
first_line: this.yylloc.first_line, | ||
last_line: this.yylineno + 1, | ||
first_column: this.yylloc.first_column, | ||
last_column: lines | ||
? (lines.length === oldLines.length ? this.yylloc.first_column : 0) + | ||
oldLines[oldLines.length - lines.length].length - lines[0].length | ||
: this.yylloc.first_column - len | ||
} | ||
first_line: this.yylloc.first_line, | ||
last_line: this.yylineno + 1, | ||
first_column: this.yylloc.first_column, | ||
last_column: lines ? | ||
(lines.length === oldLines.length ? this.yylloc.first_column : 0) | ||
+ oldLines[oldLines.length - lines.length].length - lines[0].length : | ||
this.yylloc.first_column - len | ||
}; | ||
if (this.options.ranges) { | ||
this.yylloc.range = [r[0], r[0] + this.yyleng - len] | ||
this.yylloc.range = [r[0], r[0] + this.yyleng - len]; | ||
} | ||
this.yyleng = this.yytext.length | ||
return this | ||
}, | ||
this.yyleng = this.yytext.length; | ||
return this; | ||
}, | ||
// When called from action, caches matched text and appends it on next action | ||
more: function () { | ||
this._more = true | ||
return this | ||
}, | ||
// When called from action, caches matched text and appends it on next action | ||
more:function () { | ||
this._more = true; | ||
return this; | ||
}, | ||
// When called from action, signals the lexer that this rule fails to match the input, so the next matching rule (regex) should be tested instead. | ||
reject: function () { | ||
// When called from action, signals the lexer that this rule fails to match the input, so the next matching rule (regex) should be tested instead. | ||
reject:function () { | ||
if (this.options.backtrack_lexer) { | ||
this._backtrack = true | ||
this._backtrack = true; | ||
} else { | ||
return this.parseError('Lexical error on line ' + (this.yylineno + 1) + '. You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true).\n' + this.showPosition(), { | ||
text: '', | ||
token: null, | ||
line: this.yylineno | ||
}) | ||
return this.parseError('Lexical error on line ' + (this.yylineno + 1) + '. You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true).\n' + this.showPosition(), { | ||
text: "", | ||
token: null, | ||
line: this.yylineno | ||
}); | ||
} | ||
return this | ||
}, | ||
return this; | ||
}, | ||
// retain first n characters of the match | ||
less: function (n) { | ||
this.unput(this.match.slice(n)) | ||
}, | ||
// retain first n characters of the match | ||
less:function (n) { | ||
this.unput(this.match.slice(n)); | ||
}, | ||
// displays already matched input, i.e. for error messages | ||
pastInput: function () { | ||
var past = this.matched.substr(0, this.matched.length - this.match.length) | ||
return (past.length > 20 ? '...' : '') + past.substr(-20).replace(/\n/g, '') | ||
}, | ||
// displays already matched input, i.e. for error messages | ||
pastInput:function () { | ||
var past = this.matched.substr(0, this.matched.length - this.match.length); | ||
return (past.length > 20 ? '...':'') + past.substr(-20).replace(/\n/g, ""); | ||
}, | ||
// displays upcoming input, i.e. for error messages | ||
upcomingInput: function () { | ||
var next = this.match | ||
// displays upcoming input, i.e. for error messages | ||
upcomingInput:function () { | ||
var next = this.match; | ||
if (next.length < 20) { | ||
next += this._input.substr(0, 20 - next.length) | ||
next += this._input.substr(0, 20-next.length); | ||
} | ||
return (next.substr(0, 20) + (next.length > 20 ? '...' : '')).replace(/\n/g, '') | ||
}, | ||
return (next.substr(0,20) + (next.length > 20 ? '...' : '')).replace(/\n/g, ""); | ||
}, | ||
// displays the character position where the lexing error occurred, i.e. for error messages | ||
showPosition: function () { | ||
var pre = this.pastInput() | ||
var c = new Array(pre.length + 1).join('-') | ||
return pre + this.upcomingInput() + '\n' + c + '^' | ||
}, | ||
// displays the character position where the lexing error occurred, i.e. for error messages | ||
showPosition:function () { | ||
var pre = this.pastInput(); | ||
var c = new Array(pre.length + 1).join("-"); | ||
return pre + this.upcomingInput() + "\n" + c + "^"; | ||
}, | ||
// test the lexed token: return FALSE when not a match, otherwise return token | ||
test_match: function (match, indexed_rule) { | ||
// test the lexed token: return FALSE when not a match, otherwise return token | ||
test_match:function (match, indexed_rule) { | ||
var token, | ||
lines, | ||
backup | ||
lines, | ||
backup; | ||
if (this.options.backtrack_lexer) { | ||
// save context | ||
backup = { | ||
yylineno: this.yylineno, | ||
yylloc: { | ||
first_line: this.yylloc.first_line, | ||
last_line: this.last_line, | ||
first_column: this.yylloc.first_column, | ||
last_column: this.yylloc.last_column | ||
}, | ||
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 | ||
} | ||
if (this.options.ranges) { | ||
backup.yylloc.range = this.yylloc.range.slice(0) | ||
} | ||
// save context | ||
backup = { | ||
yylineno: this.yylineno, | ||
yylloc: { | ||
first_line: this.yylloc.first_line, | ||
last_line: this.last_line, | ||
first_column: this.yylloc.first_column, | ||
last_column: this.yylloc.last_column | ||
}, | ||
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 | ||
}; | ||
if (this.options.ranges) { | ||
backup.yylloc.range = this.yylloc.range.slice(0); | ||
} | ||
} | ||
lines = match[0].match(/(?:\r\n?|\n).*/g) | ||
lines = match[0].match(/(?:\r\n?|\n).*/g); | ||
if (lines) { | ||
this.yylineno += lines.length | ||
this.yylineno += lines.length; | ||
} | ||
this.yylloc = { | ||
first_line: this.yylloc.last_line, | ||
last_line: this.yylineno + 1, | ||
first_column: this.yylloc.last_column, | ||
last_column: lines | ||
? lines[lines.length - 1].length - lines[lines.length - 1].match(/\r?\n?/)[0].length | ||
: this.yylloc.last_column + match[0].length | ||
} | ||
this.yytext += match[0] | ||
this.match += match[0] | ||
this.matches = match | ||
this.yyleng = this.yytext.length | ||
first_line: this.yylloc.last_line, | ||
last_line: this.yylineno + 1, | ||
first_column: this.yylloc.last_column, | ||
last_column: lines ? | ||
lines[lines.length - 1].length - lines[lines.length - 1].match(/\r?\n?/)[0].length : | ||
this.yylloc.last_column + match[0].length | ||
}; | ||
this.yytext += match[0]; | ||
this.match += match[0]; | ||
this.matches = match; | ||
this.yyleng = this.yytext.length; | ||
if (this.options.ranges) { | ||
this.yylloc.range = [this.offset, this.offset += this.yyleng] | ||
this.yylloc.range = [this.offset, this.offset += this.yyleng]; | ||
} | ||
this._more = false | ||
this._backtrack = false | ||
this._input = this._input.slice(match[0].length) | ||
this.matched += match[0] | ||
token = this.performAction.call(this, this.yy, this, indexed_rule, this.conditionStack[this.conditionStack.length - 1]) | ||
this._more = false; | ||
this._backtrack = false; | ||
this._input = this._input.slice(match[0].length); | ||
this.matched += match[0]; | ||
token = this.performAction.call(this, this.yy, this, indexed_rule, this.conditionStack[this.conditionStack.length - 1]); | ||
if (this.done && this._input) { | ||
this.done = false | ||
this.done = false; | ||
} | ||
if (token) { | ||
return token | ||
return token; | ||
} else if (this._backtrack) { | ||
// recover context | ||
for (var k in backup) { | ||
this[k] = backup[k] | ||
} | ||
return false // rule action called reject() implying the next rule should be tested instead. | ||
// recover context | ||
for (var k in backup) { | ||
this[k] = backup[k]; | ||
} | ||
return false; // rule action called reject() implying the next rule should be tested instead. | ||
} | ||
return false | ||
}, | ||
return false; | ||
}, | ||
// return next match in input | ||
next: function () { | ||
// return next match in input | ||
next:function () { | ||
if (this.done) { | ||
return this.EOF | ||
return this.EOF; | ||
} | ||
if (!this._input) { | ||
this.done = true | ||
this.done = true; | ||
} | ||
var token, | ||
match, | ||
tempMatch, | ||
index | ||
match, | ||
tempMatch, | ||
index; | ||
if (!this._more) { | ||
this.yytext = '' | ||
this.match = '' | ||
this.yytext = ''; | ||
this.match = ''; | ||
} | ||
var rules = this._currentRules() | ||
var rules = this._currentRules(); | ||
for (var i = 0; i < rules.length; i++) { | ||
tempMatch = this._input.match(this.rules[rules[i]]) | ||
if (tempMatch && (!match || tempMatch[0].length > match[0].length)) { | ||
match = tempMatch | ||
index = i | ||
if (this.options.backtrack_lexer) { | ||
token = this.test_match(tempMatch, rules[i]) | ||
if (token !== false) { | ||
return token | ||
} else if (this._backtrack) { | ||
match = false | ||
continue // rule action called reject() implying a rule MISmatch. | ||
} else { | ||
// else: this is a lexer rule which consumes input without producing a token (e.g. whitespace) | ||
return false | ||
} | ||
} else if (!this.options.flex) { | ||
break | ||
tempMatch = this._input.match(this.rules[rules[i]]); | ||
if (tempMatch && (!match || tempMatch[0].length > match[0].length)) { | ||
match = tempMatch; | ||
index = i; | ||
if (this.options.backtrack_lexer) { | ||
token = this.test_match(tempMatch, rules[i]); | ||
if (token !== false) { | ||
return token; | ||
} else if (this._backtrack) { | ||
match = false; | ||
continue; // rule action called reject() implying a rule MISmatch. | ||
} else { | ||
// else: this is a lexer rule which consumes input without producing a token (e.g. whitespace) | ||
return false; | ||
} | ||
} else if (!this.options.flex) { | ||
break; | ||
} | ||
} | ||
} | ||
} | ||
if (match) { | ||
token = this.test_match(match, rules[index]) | ||
if (token !== false) { | ||
return token | ||
} | ||
// else: this is a lexer rule which consumes input without producing a token (e.g. whitespace) | ||
return false | ||
token = this.test_match(match, rules[index]); | ||
if (token !== false) { | ||
return token; | ||
} | ||
// else: this is a lexer rule which consumes input without producing a token (e.g. whitespace) | ||
return false; | ||
} | ||
if (this._input === '') { | ||
return this.EOF | ||
if (this._input === "") { | ||
return this.EOF; | ||
} else { | ||
return this.parseError('Lexical error on line ' + (this.yylineno + 1) + '. Unrecognized text.\n' + this.showPosition(), { | ||
text: '', | ||
token: null, | ||
line: this.yylineno | ||
}) | ||
return this.parseError('Lexical error on line ' + (this.yylineno + 1) + '. Unrecognized text.\n' + this.showPosition(), { | ||
text: "", | ||
token: null, | ||
line: this.yylineno | ||
}); | ||
} | ||
}, | ||
}, | ||
// return next match that has a token | ||
lex: function lex () { | ||
var r = this.next() | ||
// return next match that has a token | ||
lex:function lex() { | ||
var r = this.next(); | ||
if (r) { | ||
return r | ||
return r; | ||
} else { | ||
return this.lex() | ||
return this.lex(); | ||
} | ||
}, | ||
}, | ||
// activates a new lexer condition state (pushes the new lexer condition state onto the condition stack) | ||
begin: function begin (condition) { | ||
this.conditionStack.push(condition) | ||
}, | ||
// activates a new lexer condition state (pushes the new lexer condition state onto the condition stack) | ||
begin:function begin(condition) { | ||
this.conditionStack.push(condition); | ||
}, | ||
// pop the previously active lexer condition state off the condition stack | ||
popState: function popState () { | ||
var n = this.conditionStack.length - 1 | ||
// pop the previously active lexer condition state off the condition stack | ||
popState:function popState() { | ||
var n = this.conditionStack.length - 1; | ||
if (n > 0) { | ||
return this.conditionStack.pop() | ||
return this.conditionStack.pop(); | ||
} else { | ||
return this.conditionStack[0] | ||
return this.conditionStack[0]; | ||
} | ||
}, | ||
}, | ||
// produce the lexer rule set which is active for the currently active lexer condition state | ||
_currentRules: function _currentRules () { | ||
// produce the lexer rule set which is active for the currently active lexer condition state | ||
_currentRules:function _currentRules() { | ||
if (this.conditionStack.length && this.conditionStack[this.conditionStack.length - 1]) { | ||
return this.conditions[this.conditionStack[this.conditionStack.length - 1]].rules | ||
return this.conditions[this.conditionStack[this.conditionStack.length - 1]].rules; | ||
} else { | ||
return this.conditions['INITIAL'].rules | ||
return this.conditions["INITIAL"].rules; | ||
} | ||
}, | ||
}, | ||
// return the currently active lexer condition state; when an index argument is provided it produces the N-th previous condition state, if available | ||
topState: function topState (n) { | ||
n = this.conditionStack.length - 1 - Math.abs(n || 0) | ||
// return the currently active lexer condition state; when an index argument is provided it produces the N-th previous condition state, if available | ||
topState:function topState(n) { | ||
n = this.conditionStack.length - 1 - Math.abs(n || 0); | ||
if (n >= 0) { | ||
return this.conditionStack[n] | ||
return this.conditionStack[n]; | ||
} else { | ||
return 'INITIAL' | ||
return "INITIAL"; | ||
} | ||
}, | ||
}, | ||
// alias for begin(condition) | ||
pushState: function pushState (condition) { | ||
this.begin(condition) | ||
}, | ||
// alias for begin(condition) | ||
pushState:function pushState(condition) { | ||
this.begin(condition); | ||
}, | ||
// return the number of states currently on the stack | ||
stateStackSize: function stateStackSize () { | ||
return this.conditionStack.length | ||
}, | ||
options: { 'case-insensitive': true }, | ||
performAction: function anonymous (yy, yy_, $avoiding_name_collisions, YY_START) { | ||
// Pre-lexer code can go here | ||
// return the number of states currently on the stack | ||
stateStackSize:function stateStackSize() { | ||
return this.conditionStack.length; | ||
}, | ||
options: {"case-insensitive":true}, | ||
performAction: function anonymous(yy,yy_,$avoiding_name_collisions,YY_START) { | ||
// Pre-lexer code can go here | ||
var YYSTATE = YY_START | ||
switch ($avoiding_name_collisions) { | ||
case 0: return 10 | ||
break | ||
case 1:/* skip whitespace */ | ||
break | ||
case 2:/* skip comments */ | ||
break | ||
case 3:/* skip comments */ | ||
break | ||
case 4: return 4 | ||
break | ||
case 5: return 11 | ||
break | ||
case 6: return 'date' | ||
break | ||
case 7: return 12 | ||
break | ||
case 8: return 13 | ||
break | ||
case 9: return 14 | ||
break | ||
case 10: return 15 | ||
break | ||
case 11: return ':' | ||
break | ||
case 12: return 6 | ||
break | ||
case 13: return 'INVALID' | ||
break | ||
} | ||
}, | ||
rules: [/^(?:[\n]+)/i, /^(?:\s+)/i, /^(?:#[^\n]*)/i, /^(?:%[^\n]*)/i, /^(?:gantt\b)/i, /^(?:dateFormat\s[^#\n;]+)/i, /^(?:\d\d\d\d-\d\d-\d\d\b)/i, /^(?:title\s[^#\n;]+)/i, /^(?:section\s[^#:\n;]+)/i, /^(?:[^#:\n;]+)/i, /^(?::[^#\n;]+)/i, /^(?::)/i, /^(?:$)/i, /^(?:.)/i], | ||
conditions: { 'INITIAL': { 'rules': [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13], 'inclusive': true } } | ||
}) | ||
return lexer | ||
})() | ||
parser.lexer = lexer | ||
function Parser () { | ||
this.yy = {} | ||
} | ||
Parser.prototype = parser; parser.Parser = Parser | ||
return new Parser() | ||
})() | ||
var YYSTATE=YY_START; | ||
switch($avoiding_name_collisions) { | ||
case 0:return 10; | ||
break; | ||
case 1:/* skip whitespace */ | ||
break; | ||
case 2:/* skip comments */ | ||
break; | ||
case 3:/* skip comments */ | ||
break; | ||
case 4:return 4; | ||
break; | ||
case 5:return 11; | ||
break; | ||
case 6:return 'date'; | ||
break; | ||
case 7:return 12; | ||
break; | ||
case 8:return 13; | ||
break; | ||
case 9:return 14; | ||
break; | ||
case 10:return 15; | ||
break; | ||
case 11:return ':'; | ||
break; | ||
case 12:return 6; | ||
break; | ||
case 13:return 'INVALID'; | ||
break; | ||
} | ||
}, | ||
rules: [/^(?:[\n]+)/i,/^(?:\s+)/i,/^(?:#[^\n]*)/i,/^(?:%[^\n]*)/i,/^(?:gantt\b)/i,/^(?:dateFormat\s[^#\n;]+)/i,/^(?:\d\d\d\d-\d\d-\d\d\b)/i,/^(?:title\s[^#\n;]+)/i,/^(?:section\s[^#:\n;]+)/i,/^(?:[^#:\n;]+)/i,/^(?::[^#\n;]+)/i,/^(?::)/i,/^(?:$)/i,/^(?:.)/i], | ||
conditions: {"INITIAL":{"rules":[0,1,2,3,4,5,6,7,8,9,10,11,12,13],"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) } | ||
exports.main = function commonjsMain (args) { | ||
exports.parser = parser; | ||
exports.Parser = parser.Parser; | ||
exports.parse = function () { return parser.parse.apply(parser, arguments); }; | ||
exports.main = function commonjsMain(args) { | ||
if (!args[1]) { | ||
console.log('Usage: ' + args[0] + ' FILE') | ||
process.exit(1) | ||
console.log('Usage: '+args[0]+' FILE'); | ||
process.exit(1); | ||
} | ||
var source = require('fs').readFileSync(require('path').normalize(args[1]), 'utf8') | ||
return exports.parser.parse(source) | ||
} | ||
if (typeof module !== 'undefined' && require.main === module) { | ||
exports.main(process.argv.slice(1)) | ||
} | ||
var source = require('fs').readFileSync(require('path').normalize(args[1]), "utf8"); | ||
return exports.parser.parse(source); | ||
}; | ||
if (typeof module !== 'undefined' && require.main === module) { | ||
exports.main(process.argv.slice(1)); | ||
} | ||
} |
@@ -5,3 +5,2 @@ /* eslint-env jasmine */ | ||
describe('when parsing a gitGraph', function () { | ||
'use strict' | ||
beforeEach(function () { | ||
@@ -8,0 +7,0 @@ console.log('ast', ast) |
@@ -53,2 +53,3 @@ /* parser generated by jison 0.4.17 */ | ||
token location info (@$, _$, etc.): { | ||
@@ -62,2 +63,3 @@ first_line: n, | ||
the parseError function receives a 'hash' object with these members for lexer and parser errors: { | ||
@@ -74,622 +76,628 @@ text: (matched text) | ||
*/ | ||
var parser = (function () { | ||
var o = function (k, v, o, l) { for (o = o || {}, l = k.length; l--; o[k[l]] = v);return o }, $V0 = [2, 3], $V1 = [1, 7], $V2 = [7, 12, 15, 17, 19, 20, 21], $V3 = [7, 11, 12, 15, 17, 19, 20, 21], $V4 = [2, 20], $V5 = [1, 32] | ||
var parser = {trace: function trace () { }, | ||
yy: {}, | ||
symbols_: {'error': 2, 'start': 3, 'GG': 4, ':': 5, 'document': 6, 'EOF': 7, 'DIR': 8, 'options': 9, 'body': 10, 'OPT': 11, 'NL': 12, 'line': 13, 'statement': 14, 'COMMIT': 15, 'commit_arg': 16, 'BRANCH': 17, 'ID': 18, 'CHECKOUT': 19, 'MERGE': 20, 'RESET': 21, 'reset_arg': 22, 'STR': 23, 'HEAD': 24, 'reset_parents': 25, 'CARET': 26, '$accept': 0, '$end': 1}, | ||
terminals_: {2: 'error', 4: 'GG', 5: ':', 7: 'EOF', 8: 'DIR', 11: 'OPT', 12: 'NL', 15: 'COMMIT', 17: 'BRANCH', 18: 'ID', 19: 'CHECKOUT', 20: 'MERGE', 21: 'RESET', 23: 'STR', 24: 'HEAD', 26: 'CARET'}, | ||
productions_: [0, [3, 4], [3, 5], [6, 0], [6, 2], [9, 2], [9, 1], [10, 0], [10, 2], [13, 2], [13, 1], [14, 2], [14, 2], [14, 2], [14, 2], [14, 2], [16, 0], [16, 1], [22, 2], [22, 2], [25, 0], [25, 2]], | ||
performAction: function anonymous (yytext, yyleng, yylineno, yy, yystate /* action[1] */, $$ /* vstack */, _$ /* lstack */) { | ||
var parser = (function(){ | ||
var o=function(k,v,o,l){for(o=o||{},l=k.length;l--;o[k[l]]=v);return o},$V0=[2,3],$V1=[1,7],$V2=[7,12,15,17,19,20,21],$V3=[7,11,12,15,17,19,20,21],$V4=[2,20],$V5=[1,32]; | ||
var parser = {trace: function trace() { }, | ||
yy: {}, | ||
symbols_: {"error":2,"start":3,"GG":4,":":5,"document":6,"EOF":7,"DIR":8,"options":9,"body":10,"OPT":11,"NL":12,"line":13,"statement":14,"COMMIT":15,"commit_arg":16,"BRANCH":17,"ID":18,"CHECKOUT":19,"MERGE":20,"RESET":21,"reset_arg":22,"STR":23,"HEAD":24,"reset_parents":25,"CARET":26,"$accept":0,"$end":1}, | ||
terminals_: {2:"error",4:"GG",5:":",7:"EOF",8:"DIR",11:"OPT",12:"NL",15:"COMMIT",17:"BRANCH",18:"ID",19:"CHECKOUT",20:"MERGE",21:"RESET",23:"STR",24:"HEAD",26:"CARET"}, | ||
productions_: [0,[3,4],[3,5],[6,0],[6,2],[9,2],[9,1],[10,0],[10,2],[13,2],[13,1],[14,2],[14,2],[14,2],[14,2],[14,2],[16,0],[16,1],[22,2],[22,2],[25,0],[25,2]], | ||
performAction: function anonymous(yytext, yyleng, yylineno, yy, yystate /* action[1] */, $$ /* vstack */, _$ /* lstack */) { | ||
/* this == yyval */ | ||
var $0 = $$.length - 1 | ||
switch (yystate) { | ||
case 1: | ||
return $$[$0 - 1] | ||
break | ||
case 2: | ||
yy.setDirection($$[$0 - 3]); return $$[$0 - 1] | ||
break | ||
case 4: | ||
yy.setOptions($$[$0 - 1]); this.$ = $$[$0] | ||
break | ||
case 5: | ||
$$[$0 - 1] += $$[$0]; this.$ = $$[$0 - 1] | ||
break | ||
case 7: | ||
this.$ = [] | ||
break | ||
case 8: | ||
$$[$0 - 1].push($$[$0]); this.$ = $$[$0 - 1] | ||
break | ||
case 9: | ||
this.$ = $$[$0 - 1] | ||
break | ||
case 11: | ||
yy.commit($$[$0]) | ||
break | ||
case 12: | ||
yy.branch($$[$0]) | ||
break | ||
case 13: | ||
yy.checkout($$[$0]) | ||
break | ||
case 14: | ||
yy.merge($$[$0]) | ||
break | ||
case 15: | ||
yy.reset($$[$0]) | ||
break | ||
case 16: | ||
this.$ = '' | ||
break | ||
case 17: | ||
this.$ = $$[$0] | ||
break | ||
case 18: | ||
this.$ = $$[$0 - 1] + ':' + $$[$0] | ||
break | ||
case 19: | ||
this.$ = $$[$0 - 1] + ':' + yy.count; yy.count = 0 | ||
break | ||
case 20: | ||
yy.count = 0 | ||
break | ||
case 21: | ||
yy.count += 1 | ||
break | ||
} | ||
}, | ||
table: [{3: 1, 4: [1, 2]}, {1: [3]}, {5: [1, 3], 8: [1, 4]}, {6: 5, 7: $V0, 9: 6, 12: $V1}, {5: [1, 8]}, {7: [1, 9]}, o($V2, [2, 7], {10: 10, 11: [1, 11]}), o($V3, [2, 6]), {6: 12, 7: $V0, 9: 6, 12: $V1}, {1: [2, 1]}, {7: [2, 4], 12: [1, 15], 13: 13, 14: 14, 15: [1, 16], 17: [1, 17], 19: [1, 18], 20: [1, 19], 21: [1, 20]}, o($V3, [2, 5]), {7: [1, 21]}, o($V2, [2, 8]), {12: [1, 22]}, o($V2, [2, 10]), {12: [2, 16], 16: 23, 23: [1, 24]}, {18: [1, 25]}, {18: [1, 26]}, {18: [1, 27]}, {18: [1, 30], 22: 28, 24: [1, 29]}, {1: [2, 2]}, o($V2, [2, 9]), {12: [2, 11]}, {12: [2, 17]}, {12: [2, 12]}, {12: [2, 13]}, {12: [2, 14]}, {12: [2, 15]}, {12: $V4, 25: 31, 26: $V5}, {12: $V4, 25: 33, 26: $V5}, {12: [2, 18]}, {12: $V4, 25: 34, 26: $V5}, {12: [2, 19]}, {12: [2, 21]}], | ||
defaultActions: {9: [2, 1], 21: [2, 2], 23: [2, 11], 24: [2, 17], 25: [2, 12], 26: [2, 13], 27: [2, 14], 28: [2, 15], 31: [2, 18], 33: [2, 19], 34: [2, 21]}, | ||
parseError: function parseError (str, hash) { | ||
if (hash.recoverable) { | ||
this.trace(str) | ||
} else { | ||
var $0 = $$.length - 1; | ||
switch (yystate) { | ||
case 1: | ||
return $$[$0-1]; | ||
break; | ||
case 2: | ||
yy.setDirection($$[$0-3]); return $$[$0-1]; | ||
break; | ||
case 4: | ||
yy.setOptions($$[$0-1]); this.$ = $$[$0] | ||
break; | ||
case 5: | ||
$$[$0-1] +=$$[$0]; this.$=$$[$0-1] | ||
break; | ||
case 7: | ||
this.$ = [] | ||
break; | ||
case 8: | ||
$$[$0-1].push($$[$0]); this.$=$$[$0-1]; | ||
break; | ||
case 9: | ||
this.$ =$$[$0-1] | ||
break; | ||
case 11: | ||
yy.commit($$[$0]) | ||
break; | ||
case 12: | ||
yy.branch($$[$0]) | ||
break; | ||
case 13: | ||
yy.checkout($$[$0]) | ||
break; | ||
case 14: | ||
yy.merge($$[$0]) | ||
break; | ||
case 15: | ||
yy.reset($$[$0]) | ||
break; | ||
case 16: | ||
this.$ = "" | ||
break; | ||
case 17: | ||
this.$=$$[$0] | ||
break; | ||
case 18: | ||
this.$ = $$[$0-1]+ ":" + $$[$0] | ||
break; | ||
case 19: | ||
this.$ = $$[$0-1]+ ":" + yy.count; yy.count = 0 | ||
break; | ||
case 20: | ||
yy.count = 0 | ||
break; | ||
case 21: | ||
yy.count += 1 | ||
break; | ||
} | ||
}, | ||
table: [{3:1,4:[1,2]},{1:[3]},{5:[1,3],8:[1,4]},{6:5,7:$V0,9:6,12:$V1},{5:[1,8]},{7:[1,9]},o($V2,[2,7],{10:10,11:[1,11]}),o($V3,[2,6]),{6:12,7:$V0,9:6,12:$V1},{1:[2,1]},{7:[2,4],12:[1,15],13:13,14:14,15:[1,16],17:[1,17],19:[1,18],20:[1,19],21:[1,20]},o($V3,[2,5]),{7:[1,21]},o($V2,[2,8]),{12:[1,22]},o($V2,[2,10]),{12:[2,16],16:23,23:[1,24]},{18:[1,25]},{18:[1,26]},{18:[1,27]},{18:[1,30],22:28,24:[1,29]},{1:[2,2]},o($V2,[2,9]),{12:[2,11]},{12:[2,17]},{12:[2,12]},{12:[2,13]},{12:[2,14]},{12:[2,15]},{12:$V4,25:31,26:$V5},{12:$V4,25:33,26:$V5},{12:[2,18]},{12:$V4,25:34,26:$V5},{12:[2,19]},{12:[2,21]}], | ||
defaultActions: {9:[2,1],21:[2,2],23:[2,11],24:[2,17],25:[2,12],26:[2,13],27:[2,14],28:[2,15],31:[2,18],33:[2,19],34:[2,21]}, | ||
parseError: function parseError(str, hash) { | ||
if (hash.recoverable) { | ||
this.trace(str); | ||
} else { | ||
function _parseError (msg, hash) { | ||
this.message = msg | ||
this.hash = hash | ||
this.message = msg; | ||
this.hash = hash; | ||
} | ||
_parseError.prototype = Error | ||
_parseError.prototype = Error; | ||
throw new _parseError(str, hash) | ||
} | ||
}, | ||
parse: function parse (input) { | ||
var self = this, stack = [0], tstack = [], vstack = [null], lstack = [], table = this.table, yytext = '', yylineno = 0, yyleng = 0, recovering = 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) { | ||
throw new _parseError(str, hash); | ||
} | ||
}, | ||
parse: function parse(input) { | ||
var self = this, stack = [0], tstack = [], vstack = [null], lstack = [], table = this.table, yytext = '', yylineno = 0, yyleng = 0, recovering = 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] | ||
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 | ||
} | ||
function popStack (n) { | ||
stack.length = stack.length - 2 * n | ||
vstack.length = vstack.length - n | ||
lstack.length = lstack.length - n | ||
} | ||
var lex = function () { | ||
var token | ||
token = lexer.lex() || EOF | ||
if (typeof token !== 'number') { | ||
token = self.symbols_[token] || token | ||
} | ||
return token | ||
} | ||
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; | ||
} | ||
function popStack(n) { | ||
stack.length = stack.length - 2 * n; | ||
vstack.length = vstack.length - n; | ||
lstack.length = lstack.length - n; | ||
} | ||
function lex() { | ||
var token; | ||
token = tstack.pop() || lexer.lex() || EOF; | ||
if (typeof token !== 'number') { | ||
if (token instanceof Array) { | ||
tstack = token; | ||
token = tstack.pop(); | ||
} | ||
token = self.symbols_[token] || token; | ||
} | ||
return token; | ||
} | ||
var symbol, preErrorSymbol, state, action, a, r, yyval = {}, p, len, newState, expected | ||
while (true) { | ||
state = stack[stack.length - 1] | ||
var symbol, preErrorSymbol, state, action, a, r, yyval = {}, p, len, newState, expected; | ||
while (true) { | ||
state = stack[stack.length - 1]; | ||
if (this.defaultActions[state]) { | ||
action = this.defaultActions[state] | ||
action = this.defaultActions[state]; | ||
} else { | ||
if (symbol === null || typeof symbol === 'undefined') { | ||
symbol = lex() | ||
} | ||
action = table[state] && table[state][symbol] | ||
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] + '\'') | ||
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 (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) { | ||
throw new Error('Parse Error: multiple actions possible at state: ' + state + ', token: ' + symbol) | ||
throw new Error('Parse Error: multiple actions possible at state: ' + state + ', token: ' + symbol); | ||
} | ||
switch (action[0]) { | ||
case 1: | ||
stack.push(symbol) | ||
vstack.push(lexer.yytext) | ||
lstack.push(lexer.yylloc) | ||
stack.push(action[1]) | ||
symbol = null | ||
case 1: | ||
stack.push(symbol); | ||
vstack.push(lexer.yytext); | ||
lstack.push(lexer.yylloc); | ||
stack.push(action[1]); | ||
symbol = null; | ||
if (!preErrorSymbol) { | ||
yyleng = lexer.yyleng | ||
yytext = lexer.yytext | ||
yylineno = lexer.yylineno | ||
yyloc = lexer.yylloc | ||
if (recovering > 0) { | ||
recovering-- | ||
} | ||
yyleng = lexer.yyleng; | ||
yytext = lexer.yytext; | ||
yylineno = lexer.yylineno; | ||
yyloc = lexer.yylloc; | ||
if (recovering > 0) { | ||
recovering--; | ||
} | ||
} else { | ||
symbol = preErrorSymbol | ||
preErrorSymbol = null | ||
symbol = preErrorSymbol; | ||
preErrorSymbol = null; | ||
} | ||
break | ||
case 2: | ||
len = this.productions_[action[1]][1] | ||
yyval.$ = vstack[vstack.length - len] | ||
break; | ||
case 2: | ||
len = this.productions_[action[1]][1]; | ||
yyval.$ = vstack[vstack.length - len]; | ||
yyval._$ = { | ||
first_line: lstack[lstack.length - (len || 1)].first_line, | ||
last_line: lstack[lstack.length - 1].last_line, | ||
first_column: lstack[lstack.length - (len || 1)].first_column, | ||
last_column: lstack[lstack.length - 1].last_column | ||
} | ||
first_line: lstack[lstack.length - (len || 1)].first_line, | ||
last_line: lstack[lstack.length - 1].last_line, | ||
first_column: lstack[lstack.length - (len || 1)].first_column, | ||
last_column: lstack[lstack.length - 1].last_column | ||
}; | ||
if (ranges) { | ||
yyval._$.range = [ | ||
lstack[lstack.length - (len || 1)].range[0], | ||
lstack[lstack.length - 1].range[1] | ||
] | ||
yyval._$.range = [ | ||
lstack[lstack.length - (len || 1)].range[0], | ||
lstack[lstack.length - 1].range[1] | ||
]; | ||
} | ||
r = this.performAction.apply(yyval, [ | ||
yytext, | ||
yyleng, | ||
yylineno, | ||
sharedState.yy, | ||
action[1], | ||
vstack, | ||
lstack | ||
].concat(args)) | ||
yytext, | ||
yyleng, | ||
yylineno, | ||
sharedState.yy, | ||
action[1], | ||
vstack, | ||
lstack | ||
].concat(args)); | ||
if (typeof r !== 'undefined') { | ||
return r | ||
return r; | ||
} | ||
if (len) { | ||
stack = stack.slice(0, -1 * len * 2) | ||
vstack = vstack.slice(0, -1 * len) | ||
lstack = lstack.slice(0, -1 * len) | ||
stack = stack.slice(0, -1 * len * 2); | ||
vstack = vstack.slice(0, -1 * len); | ||
lstack = lstack.slice(0, -1 * len); | ||
} | ||
stack.push(this.productions_[action[1]][0]) | ||
vstack.push(yyval.$) | ||
lstack.push(yyval._$) | ||
newState = table[stack[stack.length - 2]][stack[stack.length - 1]] | ||
stack.push(newState) | ||
break | ||
case 3: | ||
return true | ||
stack.push(this.productions_[action[1]][0]); | ||
vstack.push(yyval.$); | ||
lstack.push(yyval._$); | ||
newState = table[stack[stack.length - 2]][stack[stack.length - 1]]; | ||
stack.push(newState); | ||
break; | ||
case 3: | ||
return true; | ||
} | ||
} | ||
return true | ||
}} | ||
} | ||
return true; | ||
}}; | ||
/* generated by jison-lex 0.3.4 */ | ||
var lexer = (function () { | ||
var lexer = ({ | ||
var lexer = (function(){ | ||
var lexer = ({ | ||
EOF: 1, | ||
EOF:1, | ||
parseError: function parseError (str, hash) { | ||
parseError:function parseError(str, hash) { | ||
if (this.yy.parser) { | ||
this.yy.parser.parseError(str, hash) | ||
this.yy.parser.parseError(str, hash); | ||
} else { | ||
throw new Error(str) | ||
throw new Error(str); | ||
} | ||
}, | ||
}, | ||
// resets the lexer, sets new input | ||
setInput: function (input, yy) { | ||
this.yy = yy || this.yy || {} | ||
this._input = input | ||
this._more = this._backtrack = this.done = false | ||
this.yylineno = this.yyleng = 0 | ||
this.yytext = this.matched = this.match = '' | ||
this.conditionStack = ['INITIAL'] | ||
setInput:function (input, yy) { | ||
this.yy = yy || this.yy || {}; | ||
this._input = input; | ||
this._more = this._backtrack = this.done = false; | ||
this.yylineno = this.yyleng = 0; | ||
this.yytext = this.matched = this.match = ''; | ||
this.conditionStack = ['INITIAL']; | ||
this.yylloc = { | ||
first_line: 1, | ||
first_column: 0, | ||
last_line: 1, | ||
last_column: 0 | ||
} | ||
first_line: 1, | ||
first_column: 0, | ||
last_line: 1, | ||
last_column: 0 | ||
}; | ||
if (this.options.ranges) { | ||
this.yylloc.range = [0, 0] | ||
this.yylloc.range = [0,0]; | ||
} | ||
this.offset = 0 | ||
return this | ||
}, | ||
this.offset = 0; | ||
return this; | ||
}, | ||
// consumes and returns one char from the input | ||
input: function () { | ||
var ch = this._input[0] | ||
this.yytext += ch | ||
this.yyleng++ | ||
this.offset++ | ||
this.match += ch | ||
this.matched += ch | ||
var lines = ch.match(/(?:\r\n?|\n).*/g) | ||
input:function () { | ||
var ch = this._input[0]; | ||
this.yytext += ch; | ||
this.yyleng++; | ||
this.offset++; | ||
this.match += ch; | ||
this.matched += ch; | ||
var lines = ch.match(/(?:\r\n?|\n).*/g); | ||
if (lines) { | ||
this.yylineno++ | ||
this.yylloc.last_line++ | ||
this.yylineno++; | ||
this.yylloc.last_line++; | ||
} else { | ||
this.yylloc.last_column++ | ||
this.yylloc.last_column++; | ||
} | ||
if (this.options.ranges) { | ||
this.yylloc.range[1]++ | ||
this.yylloc.range[1]++; | ||
} | ||
this._input = this._input.slice(1) | ||
return ch | ||
}, | ||
this._input = this._input.slice(1); | ||
return ch; | ||
}, | ||
// unshifts one char (or a string) into the input | ||
unput: function (ch) { | ||
var len = ch.length | ||
var lines = ch.split(/(?:\r\n?|\n)/g) | ||
unput:function (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 -= len; | ||
this.offset -= len | ||
var oldLines = this.match.split(/(?:\r\n?|\n)/g) | ||
this.match = this.match.substr(0, this.match.length - 1) | ||
this.matched = this.matched.substr(0, this.matched.length - 1) | ||
this._input = ch + this._input; | ||
this.yytext = this.yytext.substr(0, this.yytext.length - len); | ||
//this.yyleng -= len; | ||
this.offset -= len; | ||
var oldLines = this.match.split(/(?:\r\n?|\n)/g); | ||
this.match = this.match.substr(0, this.match.length - 1); | ||
this.matched = this.matched.substr(0, this.matched.length - 1); | ||
if (lines.length - 1) { | ||
this.yylineno -= lines.length - 1 | ||
this.yylineno -= lines.length - 1; | ||
} | ||
var r = this.yylloc.range | ||
var r = this.yylloc.range; | ||
this.yylloc = { | ||
first_line: this.yylloc.first_line, | ||
last_line: this.yylineno + 1, | ||
first_column: this.yylloc.first_column, | ||
last_column: lines | ||
? (lines.length === oldLines.length ? this.yylloc.first_column : 0) + | ||
oldLines[oldLines.length - lines.length].length - lines[0].length | ||
: this.yylloc.first_column - len | ||
} | ||
first_line: this.yylloc.first_line, | ||
last_line: this.yylineno + 1, | ||
first_column: this.yylloc.first_column, | ||
last_column: lines ? | ||
(lines.length === oldLines.length ? this.yylloc.first_column : 0) | ||
+ oldLines[oldLines.length - lines.length].length - lines[0].length : | ||
this.yylloc.first_column - len | ||
}; | ||
if (this.options.ranges) { | ||
this.yylloc.range = [r[0], r[0] + this.yyleng - len] | ||
this.yylloc.range = [r[0], r[0] + this.yyleng - len]; | ||
} | ||
this.yyleng = this.yytext.length | ||
return this | ||
}, | ||
this.yyleng = this.yytext.length; | ||
return this; | ||
}, | ||
// When called from action, caches matched text and appends it on next action | ||
more: function () { | ||
this._more = true | ||
return this | ||
}, | ||
more:function () { | ||
this._more = true; | ||
return this; | ||
}, | ||
// When called from action, signals the lexer that this rule fails to match the input, so the next matching rule (regex) should be tested instead. | ||
reject: function () { | ||
reject:function () { | ||
if (this.options.backtrack_lexer) { | ||
this._backtrack = true | ||
this._backtrack = true; | ||
} else { | ||
return this.parseError('Lexical error on line ' + (this.yylineno + 1) + '. You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true).\n' + this.showPosition(), { | ||
text: '', | ||
token: null, | ||
line: this.yylineno | ||
}) | ||
return this.parseError('Lexical error on line ' + (this.yylineno + 1) + '. You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true).\n' + this.showPosition(), { | ||
text: "", | ||
token: null, | ||
line: this.yylineno | ||
}); | ||
} | ||
return this | ||
}, | ||
return this; | ||
}, | ||
// retain first n characters of the match | ||
less: function (n) { | ||
this.unput(this.match.slice(n)) | ||
}, | ||
less:function (n) { | ||
this.unput(this.match.slice(n)); | ||
}, | ||
// displays already matched input, i.e. for error messages | ||
pastInput: function () { | ||
var past = this.matched.substr(0, this.matched.length - this.match.length) | ||
return (past.length > 20 ? '...' : '') + past.substr(-20).replace(/\n/g, '') | ||
}, | ||
pastInput:function () { | ||
var past = this.matched.substr(0, this.matched.length - this.match.length); | ||
return (past.length > 20 ? '...':'') + past.substr(-20).replace(/\n/g, ""); | ||
}, | ||
// displays upcoming input, i.e. for error messages | ||
upcomingInput: function () { | ||
var next = this.match | ||
upcomingInput:function () { | ||
var next = this.match; | ||
if (next.length < 20) { | ||
next += this._input.substr(0, 20 - next.length) | ||
next += this._input.substr(0, 20-next.length); | ||
} | ||
return (next.substr(0, 20) + (next.length > 20 ? '...' : '')).replace(/\n/g, '') | ||
}, | ||
return (next.substr(0,20) + (next.length > 20 ? '...' : '')).replace(/\n/g, ""); | ||
}, | ||
// displays the character position where the lexing error occurred, i.e. for error messages | ||
showPosition: function () { | ||
var pre = this.pastInput() | ||
var c = new Array(pre.length + 1).join('-') | ||
return pre + this.upcomingInput() + '\n' + c + '^' | ||
}, | ||
showPosition:function () { | ||
var pre = this.pastInput(); | ||
var c = new Array(pre.length + 1).join("-"); | ||
return pre + this.upcomingInput() + "\n" + c + "^"; | ||
}, | ||
// test the lexed token: return FALSE when not a match, otherwise return token | ||
test_match: function (match, indexed_rule) { | ||
test_match:function (match, indexed_rule) { | ||
var token, | ||
lines, | ||
backup | ||
lines, | ||
backup; | ||
if (this.options.backtrack_lexer) { | ||
// save context | ||
backup = { | ||
yylineno: this.yylineno, | ||
yylloc: { | ||
first_line: this.yylloc.first_line, | ||
last_line: this.last_line, | ||
first_column: this.yylloc.first_column, | ||
last_column: this.yylloc.last_column | ||
}, | ||
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 | ||
} | ||
if (this.options.ranges) { | ||
backup.yylloc.range = this.yylloc.range.slice(0) | ||
} | ||
backup = { | ||
yylineno: this.yylineno, | ||
yylloc: { | ||
first_line: this.yylloc.first_line, | ||
last_line: this.last_line, | ||
first_column: this.yylloc.first_column, | ||
last_column: this.yylloc.last_column | ||
}, | ||
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 | ||
}; | ||
if (this.options.ranges) { | ||
backup.yylloc.range = this.yylloc.range.slice(0); | ||
} | ||
} | ||
lines = match[0].match(/(?:\r\n?|\n).*/g) | ||
lines = match[0].match(/(?:\r\n?|\n).*/g); | ||
if (lines) { | ||
this.yylineno += lines.length | ||
this.yylineno += lines.length; | ||
} | ||
this.yylloc = { | ||
first_line: this.yylloc.last_line, | ||
last_line: this.yylineno + 1, | ||
first_column: this.yylloc.last_column, | ||
last_column: lines | ||
? lines[lines.length - 1].length - lines[lines.length - 1].match(/\r?\n?/)[0].length | ||
: this.yylloc.last_column + match[0].length | ||
} | ||
this.yytext += match[0] | ||
this.match += match[0] | ||
this.matches = match | ||
this.yyleng = this.yytext.length | ||
first_line: this.yylloc.last_line, | ||
last_line: this.yylineno + 1, | ||
first_column: this.yylloc.last_column, | ||
last_column: lines ? | ||
lines[lines.length - 1].length - lines[lines.length - 1].match(/\r?\n?/)[0].length : | ||
this.yylloc.last_column + match[0].length | ||
}; | ||
this.yytext += match[0]; | ||
this.match += match[0]; | ||
this.matches = match; | ||
this.yyleng = this.yytext.length; | ||
if (this.options.ranges) { | ||
this.yylloc.range = [this.offset, this.offset += this.yyleng] | ||
this.yylloc.range = [this.offset, this.offset += this.yyleng]; | ||
} | ||
this._more = false | ||
this._backtrack = false | ||
this._input = this._input.slice(match[0].length) | ||
this.matched += match[0] | ||
token = this.performAction.call(this, this.yy, this, indexed_rule, this.conditionStack[this.conditionStack.length - 1]) | ||
this._more = false; | ||
this._backtrack = false; | ||
this._input = this._input.slice(match[0].length); | ||
this.matched += match[0]; | ||
token = this.performAction.call(this, this.yy, this, indexed_rule, this.conditionStack[this.conditionStack.length - 1]); | ||
if (this.done && this._input) { | ||
this.done = false | ||
this.done = false; | ||
} | ||
if (token) { | ||
return token | ||
return token; | ||
} else if (this._backtrack) { | ||
// recover context | ||
for (var k in backup) { | ||
this[k] = backup[k] | ||
} | ||
return false // rule action called reject() implying the next rule should be tested instead. | ||
for (var k in backup) { | ||
this[k] = backup[k]; | ||
} | ||
return false; // rule action called reject() implying the next rule should be tested instead. | ||
} | ||
return false | ||
}, | ||
return false; | ||
}, | ||
// return next match in input | ||
next: function () { | ||
next:function () { | ||
if (this.done) { | ||
return this.EOF | ||
return this.EOF; | ||
} | ||
if (!this._input) { | ||
this.done = true | ||
this.done = true; | ||
} | ||
var token, | ||
match, | ||
tempMatch, | ||
index | ||
match, | ||
tempMatch, | ||
index; | ||
if (!this._more) { | ||
this.yytext = '' | ||
this.match = '' | ||
this.yytext = ''; | ||
this.match = ''; | ||
} | ||
var rules = this._currentRules() | ||
var rules = this._currentRules(); | ||
for (var i = 0; i < rules.length; i++) { | ||
tempMatch = this._input.match(this.rules[rules[i]]) | ||
if (tempMatch && (!match || tempMatch[0].length > match[0].length)) { | ||
match = tempMatch | ||
index = i | ||
if (this.options.backtrack_lexer) { | ||
token = this.test_match(tempMatch, rules[i]) | ||
if (token !== false) { | ||
return token | ||
} else if (this._backtrack) { | ||
match = false | ||
continue // rule action called reject() implying a rule MISmatch. | ||
} else { | ||
tempMatch = this._input.match(this.rules[rules[i]]); | ||
if (tempMatch && (!match || tempMatch[0].length > match[0].length)) { | ||
match = tempMatch; | ||
index = i; | ||
if (this.options.backtrack_lexer) { | ||
token = this.test_match(tempMatch, rules[i]); | ||
if (token !== false) { | ||
return token; | ||
} else if (this._backtrack) { | ||
match = false; | ||
continue; // rule action called reject() implying a rule MISmatch. | ||
} else { | ||
// else: this is a lexer rule which consumes input without producing a token (e.g. whitespace) | ||
return false | ||
} | ||
} else if (!this.options.flex) { | ||
break | ||
return false; | ||
} | ||
} else if (!this.options.flex) { | ||
break; | ||
} | ||
} | ||
} | ||
} | ||
if (match) { | ||
token = this.test_match(match, rules[index]) | ||
if (token !== false) { | ||
return token | ||
} | ||
token = this.test_match(match, rules[index]); | ||
if (token !== false) { | ||
return token; | ||
} | ||
// else: this is a lexer rule which consumes input without producing a token (e.g. whitespace) | ||
return false | ||
return false; | ||
} | ||
if (this._input === '') { | ||
return this.EOF | ||
if (this._input === "") { | ||
return this.EOF; | ||
} else { | ||
return this.parseError('Lexical error on line ' + (this.yylineno + 1) + '. Unrecognized text.\n' + this.showPosition(), { | ||
text: '', | ||
token: null, | ||
line: this.yylineno | ||
}) | ||
return this.parseError('Lexical error on line ' + (this.yylineno + 1) + '. Unrecognized text.\n' + this.showPosition(), { | ||
text: "", | ||
token: null, | ||
line: this.yylineno | ||
}); | ||
} | ||
}, | ||
}, | ||
// return next match that has a token | ||
lex: function lex () { | ||
var r = this.next() | ||
lex:function lex() { | ||
var r = this.next(); | ||
if (r) { | ||
return r | ||
return r; | ||
} else { | ||
return this.lex() | ||
return this.lex(); | ||
} | ||
}, | ||
}, | ||
// activates a new lexer condition state (pushes the new lexer condition state onto the condition stack) | ||
begin: function begin (condition) { | ||
this.conditionStack.push(condition) | ||
}, | ||
begin:function begin(condition) { | ||
this.conditionStack.push(condition); | ||
}, | ||
// pop the previously active lexer condition state off the condition stack | ||
popState: function popState () { | ||
var n = this.conditionStack.length - 1 | ||
popState:function popState() { | ||
var n = this.conditionStack.length - 1; | ||
if (n > 0) { | ||
return this.conditionStack.pop() | ||
return this.conditionStack.pop(); | ||
} else { | ||
return this.conditionStack[0] | ||
return this.conditionStack[0]; | ||
} | ||
}, | ||
}, | ||
// produce the lexer rule set which is active for the currently active lexer condition state | ||
_currentRules: function _currentRules () { | ||
_currentRules:function _currentRules() { | ||
if (this.conditionStack.length && this.conditionStack[this.conditionStack.length - 1]) { | ||
return this.conditions[this.conditionStack[this.conditionStack.length - 1]].rules | ||
return this.conditions[this.conditionStack[this.conditionStack.length - 1]].rules; | ||
} else { | ||
return this.conditions['INITIAL'].rules | ||
return this.conditions["INITIAL"].rules; | ||
} | ||
}, | ||
}, | ||
// return the currently active lexer condition state; when an index argument is provided it produces the N-th previous condition state, if available | ||
topState: function topState (n) { | ||
n = this.conditionStack.length - 1 - Math.abs(n || 0) | ||
topState:function topState(n) { | ||
n = this.conditionStack.length - 1 - Math.abs(n || 0); | ||
if (n >= 0) { | ||
return this.conditionStack[n] | ||
return this.conditionStack[n]; | ||
} else { | ||
return 'INITIAL' | ||
return "INITIAL"; | ||
} | ||
}, | ||
}, | ||
// alias for begin(condition) | ||
pushState: function pushState (condition) { | ||
this.begin(condition) | ||
}, | ||
pushState:function pushState(condition) { | ||
this.begin(condition); | ||
}, | ||
// return the number of states currently on the stack | ||
stateStackSize: function stateStackSize () { | ||
return this.conditionStack.length | ||
}, | ||
options: {'case-insensitive': true}, | ||
performAction: function anonymous (yy, yy_, $avoiding_name_collisions, YY_START) { | ||
var YYSTATE = YY_START | ||
switch ($avoiding_name_collisions) { | ||
case 0:return 12 | ||
break | ||
case 1:/* skip all whitespace */ | ||
break | ||
case 2:/* skip comments */ | ||
break | ||
case 3:/* skip comments */ | ||
break | ||
case 4:return 4 | ||
break | ||
case 5:return 15 | ||
break | ||
case 6:return 17 | ||
break | ||
case 7:return 20 | ||
break | ||
case 8:return 21 | ||
break | ||
case 9:return 19 | ||
break | ||
case 10:return 8 | ||
break | ||
case 11:return 8 | ||
break | ||
case 12:return 5 | ||
break | ||
case 13:return 26 | ||
break | ||
case 14:this.begin('options') | ||
break | ||
case 15:this.popState() | ||
break | ||
case 16:return 11 | ||
break | ||
case 17:this.begin('string') | ||
break | ||
case 18:this.popState() | ||
break | ||
case 19:return 23 | ||
break | ||
case 20:return 18 | ||
break | ||
case 21:return 7 | ||
break | ||
} | ||
}, | ||
rules: [/^(?:(\r?\n)+)/i, /^(?:\s+)/i, /^(?:#[^\n]*)/i, /^(?:%[^\n]*)/i, /^(?:gitGraph\b)/i, /^(?:commit\b)/i, /^(?:branch\b)/i, /^(?:merge\b)/i, /^(?:reset\b)/i, /^(?:checkout\b)/i, /^(?:LR\b)/i, /^(?:BT\b)/i, /^(?::)/i, /^(?:\^)/i, /^(?:options\r?\n)/i, /^(?:end\r?\n)/i, /^(?:[^\n]+\r?\n)/i, /^(?:["])/i, /^(?:["])/i, /^(?:[^"]*)/i, /^(?:[a-zA-Z][a-zA-Z0-9_]+)/i, /^(?:$)/i], | ||
conditions: {'options': {'rules': [15, 16], 'inclusive': false}, 'string': {'rules': [18, 19], 'inclusive': false}, 'INITIAL': {'rules': [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 17, 20, 21], 'inclusive': true}} | ||
}) | ||
return lexer | ||
})() | ||
parser.lexer = lexer | ||
function Parser () { | ||
this.yy = {} | ||
} | ||
Parser.prototype = parser; parser.Parser = Parser | ||
return new Parser() | ||
})() | ||
stateStackSize:function stateStackSize() { | ||
return this.conditionStack.length; | ||
}, | ||
options: {"case-insensitive":true}, | ||
performAction: function anonymous(yy,yy_,$avoiding_name_collisions,YY_START) { | ||
var YYSTATE=YY_START; | ||
switch($avoiding_name_collisions) { | ||
case 0:return 12; | ||
break; | ||
case 1:/* skip all whitespace */ | ||
break; | ||
case 2:/* skip comments */ | ||
break; | ||
case 3:/* skip comments */ | ||
break; | ||
case 4:return 4; | ||
break; | ||
case 5:return 15; | ||
break; | ||
case 6:return 17; | ||
break; | ||
case 7:return 20; | ||
break; | ||
case 8:return 21; | ||
break; | ||
case 9:return 19; | ||
break; | ||
case 10:return 8; | ||
break; | ||
case 11:return 8; | ||
break; | ||
case 12:return 5; | ||
break; | ||
case 13:return 26 | ||
break; | ||
case 14:this.begin("options"); | ||
break; | ||
case 15:this.popState(); | ||
break; | ||
case 16:return 11; | ||
break; | ||
case 17:this.begin("string"); | ||
break; | ||
case 18:this.popState(); | ||
break; | ||
case 19:return 23; | ||
break; | ||
case 20:return 18; | ||
break; | ||
case 21:return 7; | ||
break; | ||
} | ||
}, | ||
rules: [/^(?:(\r?\n)+)/i,/^(?:\s+)/i,/^(?:#[^\n]*)/i,/^(?:%[^\n]*)/i,/^(?:gitGraph\b)/i,/^(?:commit\b)/i,/^(?:branch\b)/i,/^(?:merge\b)/i,/^(?:reset\b)/i,/^(?:checkout\b)/i,/^(?:LR\b)/i,/^(?:BT\b)/i,/^(?::)/i,/^(?:\^)/i,/^(?:options\r?\n)/i,/^(?:end\r?\n)/i,/^(?:[^\n]+\r?\n)/i,/^(?:["])/i,/^(?:["])/i,/^(?:[^"]*)/i,/^(?:[a-zA-Z][a-zA-Z0-9_]+)/i,/^(?:$)/i], | ||
conditions: {"options":{"rules":[15,16],"inclusive":false},"string":{"rules":[18,19],"inclusive":false},"INITIAL":{"rules":[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,17,20,21],"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) } | ||
exports.main = function commonjsMain (args) { | ||
exports.parser = parser; | ||
exports.Parser = parser.Parser; | ||
exports.parse = function () { return parser.parse.apply(parser, arguments); }; | ||
exports.main = function commonjsMain(args) { | ||
if (!args[1]) { | ||
console.log('Usage: ' + args[0] + ' FILE') | ||
process.exit(1) | ||
console.log('Usage: '+args[0]+' FILE'); | ||
process.exit(1); | ||
} | ||
var source = require('fs').readFileSync(require('path').normalize(args[1]), 'utf8') | ||
return exports.parser.parse(source) | ||
} | ||
if (typeof module !== 'undefined' && require.main === module) { | ||
exports.main(process.argv.slice(1)) | ||
} | ||
var source = require('fs').readFileSync(require('path').normalize(args[1]), "utf8"); | ||
return exports.parser.parse(source); | ||
}; | ||
if (typeof module !== 'undefined' && require.main === module) { | ||
exports.main(process.argv.slice(1)); | ||
} | ||
} |
@@ -53,2 +53,3 @@ /* parser generated by jison 0.4.17 */ | ||
token location info (@$, _$, etc.): { | ||
@@ -62,2 +63,3 @@ first_line: n, | ||
the parseError function receives a 'hash' object with these members for lexer and parser errors: { | ||
@@ -74,728 +76,738 @@ text: (matched text) | ||
*/ | ||
var parser = (function () { | ||
var o = function (k, v, o, l) { for (o = o || {}, l = k.length; l--; o[k[l]] = v);return o }, $V0 = [1, 2], $V1 = [1, 3], $V2 = [1, 4], $V3 = [2, 4], $V4 = [1, 9], $V5 = [1, 11], $V6 = [1, 12], $V7 = [1, 14], $V8 = [1, 15], $V9 = [1, 17], $Va = [1, 18], $Vb = [1, 19], $Vc = [1, 20], $Vd = [1, 21], $Ve = [1, 23], $Vf = [1, 24], $Vg = [1, 4, 5, 10, 15, 16, 18, 20, 21, 22, 23, 24, 25, 27, 28, 39], $Vh = [1, 32], $Vi = [4, 5, 10, 15, 16, 18, 20, 21, 22, 23, 25, 28, 39], $Vj = [4, 5, 10, 15, 16, 18, 20, 21, 22, 23, 25, 27, 28, 39], $Vk = [37, 38, 39] | ||
var parser = {trace: function trace () { }, | ||
yy: {}, | ||
symbols_: {'error': 2, 'start': 3, 'SPACE': 4, 'NL': 5, 'SD': 6, 'document': 7, 'line': 8, 'statement': 9, 'participant': 10, 'actor': 11, 'AS': 12, 'restOfLine': 13, 'signal': 14, 'activate': 15, 'deactivate': 16, 'note_statement': 17, 'title': 18, 'text2': 19, 'loop': 20, 'end': 21, 'opt': 22, 'alt': 23, 'else': 24, 'par': 25, 'par_sections': 26, 'and': 27, 'note': 28, 'placement': 29, 'over': 30, 'actor_pair': 31, 'spaceList': 32, ',': 33, 'left_of': 34, 'right_of': 35, 'signaltype': 36, '+': 37, '-': 38, 'ACTOR': 39, 'SOLID_OPEN_ARROW': 40, 'DOTTED_OPEN_ARROW': 41, 'SOLID_ARROW': 42, 'DOTTED_ARROW': 43, 'SOLID_CROSS': 44, 'DOTTED_CROSS': 45, 'TXT': 46, '$accept': 0, '$end': 1}, | ||
terminals_: {2: 'error', 4: 'SPACE', 5: 'NL', 6: 'SD', 10: 'participant', 12: 'AS', 13: 'restOfLine', 15: 'activate', 16: 'deactivate', 18: 'title', 20: 'loop', 21: 'end', 22: 'opt', 23: 'alt', 24: 'else', 25: 'par', 27: 'and', 28: 'note', 30: 'over', 33: ',', 34: 'left_of', 35: 'right_of', 37: '+', 38: '-', 39: 'ACTOR', 40: 'SOLID_OPEN_ARROW', 41: 'DOTTED_OPEN_ARROW', 42: 'SOLID_ARROW', 43: 'DOTTED_ARROW', 44: 'SOLID_CROSS', 45: 'DOTTED_CROSS', 46: 'TXT'}, | ||
productions_: [0, [3, 2], [3, 2], [3, 2], [7, 0], [7, 2], [8, 2], [8, 1], [8, 1], [9, 5], [9, 3], [9, 2], [9, 3], [9, 3], [9, 2], [9, 3], [9, 4], [9, 4], [9, 7], [9, 4], [26, 1], [26, 4], [17, 4], [17, 4], [32, 2], [32, 1], [31, 3], [31, 1], [29, 1], [29, 1], [14, 5], [14, 5], [14, 4], [11, 1], [36, 1], [36, 1], [36, 1], [36, 1], [36, 1], [36, 1], [19, 1]], | ||
performAction: function anonymous (yytext, yyleng, yylineno, yy, yystate /* action[1] */, $$ /* vstack */, _$ /* lstack */) { | ||
var parser = (function(){ | ||
var o=function(k,v,o,l){for(o=o||{},l=k.length;l--;o[k[l]]=v);return o},$V0=[1,2],$V1=[1,3],$V2=[1,4],$V3=[2,4],$V4=[1,9],$V5=[1,11],$V6=[1,12],$V7=[1,14],$V8=[1,15],$V9=[1,17],$Va=[1,18],$Vb=[1,19],$Vc=[1,20],$Vd=[1,21],$Ve=[1,23],$Vf=[1,24],$Vg=[1,4,5,10,15,16,18,20,21,22,23,24,25,27,28,39],$Vh=[1,32],$Vi=[4,5,10,15,16,18,20,21,22,23,25,28,39],$Vj=[4,5,10,15,16,18,20,21,22,23,25,27,28,39],$Vk=[37,38,39]; | ||
var parser = {trace: function trace() { }, | ||
yy: {}, | ||
symbols_: {"error":2,"start":3,"SPACE":4,"NL":5,"SD":6,"document":7,"line":8,"statement":9,"participant":10,"actor":11,"AS":12,"restOfLine":13,"signal":14,"activate":15,"deactivate":16,"note_statement":17,"title":18,"text2":19,"loop":20,"end":21,"opt":22,"alt":23,"else":24,"par":25,"par_sections":26,"and":27,"note":28,"placement":29,"over":30,"actor_pair":31,"spaceList":32,",":33,"left_of":34,"right_of":35,"signaltype":36,"+":37,"-":38,"ACTOR":39,"SOLID_OPEN_ARROW":40,"DOTTED_OPEN_ARROW":41,"SOLID_ARROW":42,"DOTTED_ARROW":43,"SOLID_CROSS":44,"DOTTED_CROSS":45,"TXT":46,"$accept":0,"$end":1}, | ||
terminals_: {2:"error",4:"SPACE",5:"NL",6:"SD",10:"participant",12:"AS",13:"restOfLine",15:"activate",16:"deactivate",18:"title",20:"loop",21:"end",22:"opt",23:"alt",24:"else",25:"par",27:"and",28:"note",30:"over",33:",",34:"left_of",35:"right_of",37:"+",38:"-",39:"ACTOR",40:"SOLID_OPEN_ARROW",41:"DOTTED_OPEN_ARROW",42:"SOLID_ARROW",43:"DOTTED_ARROW",44:"SOLID_CROSS",45:"DOTTED_CROSS",46:"TXT"}, | ||
productions_: [0,[3,2],[3,2],[3,2],[7,0],[7,2],[8,2],[8,1],[8,1],[9,5],[9,3],[9,2],[9,3],[9,3],[9,2],[9,3],[9,4],[9,4],[9,7],[9,4],[26,1],[26,4],[17,4],[17,4],[32,2],[32,1],[31,3],[31,1],[29,1],[29,1],[14,5],[14,5],[14,4],[11,1],[36,1],[36,1],[36,1],[36,1],[36,1],[36,1],[19,1]], | ||
performAction: function anonymous(yytext, yyleng, yylineno, yy, yystate /* action[1] */, $$ /* vstack */, _$ /* lstack */) { | ||
/* this == yyval */ | ||
var $0 = $$.length - 1 | ||
switch (yystate) { | ||
case 3: | ||
yy.apply($$[$0]); return $$[$0] | ||
break | ||
case 4: | ||
this.$ = [] | ||
break | ||
case 5: | ||
$$[$0 - 1].push($$[$0]); this.$ = $$[$0 - 1] | ||
break | ||
case 6: case 7: | ||
this.$ = $$[$0] | ||
break | ||
case 8: | ||
this.$ = [] | ||
break | ||
case 9: | ||
$$[$0 - 3].description = $$[$0 - 1]; this.$ = $$[$0 - 3] | ||
break | ||
case 10: | ||
this.$ = $$[$0 - 1] | ||
break | ||
case 12: | ||
this.$ = {type: 'activeStart', signalType: yy.LINETYPE.ACTIVE_START, actor: $$[$0 - 1]} | ||
break | ||
case 13: | ||
this.$ = {type: 'activeEnd', signalType: yy.LINETYPE.ACTIVE_END, actor: $$[$0 - 1]} | ||
break | ||
case 15: | ||
this.$ = [{type: 'setTitle', text: $$[$0 - 1]}] | ||
break | ||
case 16: | ||
var $0 = $$.length - 1; | ||
switch (yystate) { | ||
case 3: | ||
yy.apply($$[$0]);return $$[$0]; | ||
break; | ||
case 4: | ||
this.$ = [] | ||
break; | ||
case 5: | ||
$$[$0-1].push($$[$0]);this.$ = $$[$0-1] | ||
break; | ||
case 6: case 7: | ||
this.$ = $$[$0] | ||
break; | ||
case 8: | ||
this.$=[]; | ||
break; | ||
case 9: | ||
$$[$0-3].description=$$[$0-1]; this.$=$$[$0-3]; | ||
break; | ||
case 10: | ||
this.$=$$[$0-1]; | ||
break; | ||
case 12: | ||
this.$={type: 'activeStart', signalType: yy.LINETYPE.ACTIVE_START, actor: $$[$0-1]}; | ||
break; | ||
case 13: | ||
this.$={type: 'activeEnd', signalType: yy.LINETYPE.ACTIVE_END, actor: $$[$0-1]}; | ||
break; | ||
case 15: | ||
this.$=[{type:'setTitle', text:$$[$0-1]}] | ||
break; | ||
case 16: | ||
$$[$0 - 1].unshift({type: 'loopStart', loopText: $$[$0 - 2], signalType: yy.LINETYPE.LOOP_START}) | ||
$$[$0 - 1].push({type: 'loopEnd', loopText: $$[$0 - 2], signalType: yy.LINETYPE.LOOP_END}) | ||
this.$ = $$[$0 - 1] | ||
break | ||
case 17: | ||
$$[$0-1].unshift({type: 'loopStart', loopText:$$[$0-2], signalType: yy.LINETYPE.LOOP_START}); | ||
$$[$0-1].push({type: 'loopEnd', loopText:$$[$0-2], signalType: yy.LINETYPE.LOOP_END}); | ||
this.$=$$[$0-1]; | ||
break; | ||
case 17: | ||
$$[$0 - 1].unshift({type: 'optStart', optText: $$[$0 - 2], signalType: yy.LINETYPE.OPT_START}) | ||
$$[$0 - 1].push({type: 'optEnd', optText: $$[$0 - 2], signalType: yy.LINETYPE.OPT_END}) | ||
this.$ = $$[$0 - 1] | ||
break | ||
case 18: | ||
$$[$0-1].unshift({type: 'optStart', optText:$$[$0-2], signalType: yy.LINETYPE.OPT_START}); | ||
$$[$0-1].push({type: 'optEnd', optText:$$[$0-2], signalType: yy.LINETYPE.OPT_END}); | ||
this.$=$$[$0-1]; | ||
break; | ||
case 18: | ||
// Alt start | ||
$$[$0 - 4].unshift({type: 'altStart', altText: $$[$0 - 5], signalType: yy.LINETYPE.ALT_START}) | ||
$$[$0-4].unshift({type: 'altStart', altText:$$[$0-5], signalType: yy.LINETYPE.ALT_START}); | ||
// Content in alt is already in $$[$0-4] | ||
// Else | ||
$$[$0 - 4].push({type: 'else', altText: $$[$0 - 2], signalType: yy.LINETYPE.ALT_ELSE}) | ||
$$[$0-4].push({type: 'else', altText:$$[$0-2], signalType: yy.LINETYPE.ALT_ELSE}); | ||
// Content in other alt | ||
$$[$0 - 4] = $$[$0 - 4].concat($$[$0 - 1]) | ||
$$[$0-4] = $$[$0-4].concat($$[$0-1]); | ||
// End | ||
$$[$0 - 4].push({type: 'altEnd', signalType: yy.LINETYPE.ALT_END}) | ||
$$[$0-4].push({type: 'altEnd', signalType: yy.LINETYPE.ALT_END}); | ||
this.$ = $$[$0 - 4] | ||
break | ||
case 19: | ||
this.$=$$[$0-4]; | ||
break; | ||
case 19: | ||
// Parallel start | ||
$$[$0 - 1].unshift({type: 'parStart', parText: $$[$0 - 2], signalType: yy.LINETYPE.PAR_START}) | ||
$$[$0-1].unshift({type: 'parStart', parText:$$[$0-2], signalType: yy.LINETYPE.PAR_START}); | ||
// Content in par is already in $$[$0-1] | ||
// End | ||
$$[$0 - 1].push({type: 'parEnd', signalType: yy.LINETYPE.PAR_END}) | ||
this.$ = $$[$0 - 1] | ||
break | ||
case 21: | ||
this.$ = $$[$0 - 3].concat([{type: 'and', parText: $$[$0 - 1], signalType: yy.LINETYPE.PAR_AND}, $$[$0]]) | ||
break | ||
case 22: | ||
$$[$0-1].push({type: 'parEnd', signalType: yy.LINETYPE.PAR_END}); | ||
this.$=$$[$0-1]; | ||
break; | ||
case 21: | ||
this.$ = $$[$0-3].concat([{type: 'and', parText:$$[$0-1], signalType: yy.LINETYPE.PAR_AND}, $$[$0]]); | ||
break; | ||
case 22: | ||
this.$ = [$$[$0 - 1], {type: 'addNote', placement: $$[$0 - 2], actor: $$[$0 - 1].actor, text: $$[$0]}] | ||
break | ||
case 23: | ||
this.$ = [$$[$0-1], {type:'addNote', placement:$$[$0-2], actor:$$[$0-1].actor, text:$$[$0]}]; | ||
break; | ||
case 23: | ||
// Coerce actor_pair into a [to, from, ...] array | ||
$$[$0 - 2] = [].concat($$[$0 - 1], $$[$0 - 1]).slice(0, 2) | ||
$$[$0 - 2][0] = $$[$0 - 2][0].actor | ||
$$[$0 - 2][1] = $$[$0 - 2][1].actor | ||
this.$ = [$$[$0 - 1], {type: 'addNote', placement: yy.PLACEMENT.OVER, actor: $$[$0 - 2].slice(0, 2), text: $$[$0]}] | ||
break | ||
case 26: | ||
this.$ = [$$[$0 - 2], $$[$0]] | ||
break | ||
case 27: | ||
this.$ = $$[$0] | ||
break | ||
case 28: | ||
this.$ = yy.PLACEMENT.LEFTOF | ||
break | ||
case 29: | ||
this.$ = yy.PLACEMENT.RIGHTOF | ||
break | ||
case 30: | ||
this.$ = [$$[$0 - 4], $$[$0 - 1], {type: 'addMessage', from: $$[$0 - 4].actor, to: $$[$0 - 1].actor, signalType: $$[$0 - 3], msg: $$[$0]}, | ||
{type: 'activeStart', signalType: yy.LINETYPE.ACTIVE_START, actor: $$[$0 - 1]} | ||
$$[$0-2] = [].concat($$[$0-1], $$[$0-1]).slice(0, 2); | ||
$$[$0-2][0] = $$[$0-2][0].actor; | ||
$$[$0-2][1] = $$[$0-2][1].actor; | ||
this.$ = [$$[$0-1], {type:'addNote', placement:yy.PLACEMENT.OVER, actor:$$[$0-2].slice(0, 2), text:$$[$0]}]; | ||
break; | ||
case 26: | ||
this.$ = [$$[$0-2], $$[$0]]; | ||
break; | ||
case 27: | ||
this.$ = $$[$0]; | ||
break; | ||
case 28: | ||
this.$ = yy.PLACEMENT.LEFTOF; | ||
break; | ||
case 29: | ||
this.$ = yy.PLACEMENT.RIGHTOF; | ||
break; | ||
case 30: | ||
this.$ = [$$[$0-4],$$[$0-1],{type: 'addMessage', from:$$[$0-4].actor, to:$$[$0-1].actor, signalType:$$[$0-3], msg:$$[$0]}, | ||
{type: 'activeStart', signalType: yy.LINETYPE.ACTIVE_START, actor: $$[$0-1]} | ||
] | ||
break | ||
case 31: | ||
this.$ = [$$[$0 - 4], $$[$0 - 1], {type: 'addMessage', from: $$[$0 - 4].actor, to: $$[$0 - 1].actor, signalType: $$[$0 - 3], msg: $$[$0]}, | ||
{type: 'activeEnd', signalType: yy.LINETYPE.ACTIVE_END, actor: $$[$0 - 4]} | ||
break; | ||
case 31: | ||
this.$ = [$$[$0-4],$$[$0-1],{type: 'addMessage', from:$$[$0-4].actor, to:$$[$0-1].actor, signalType:$$[$0-3], msg:$$[$0]}, | ||
{type: 'activeEnd', signalType: yy.LINETYPE.ACTIVE_END, actor: $$[$0-4]} | ||
] | ||
break | ||
case 32: | ||
this.$ = [$$[$0 - 3], $$[$0 - 1], {type: 'addMessage', from: $$[$0 - 3].actor, to: $$[$0 - 1].actor, signalType: $$[$0 - 2], msg: $$[$0]}] | ||
break | ||
case 33: | ||
this.$ = {type: 'addActor', actor: $$[$0]} | ||
break | ||
case 34: | ||
this.$ = yy.LINETYPE.SOLID_OPEN | ||
break | ||
case 35: | ||
this.$ = yy.LINETYPE.DOTTED_OPEN | ||
break | ||
case 36: | ||
this.$ = yy.LINETYPE.SOLID | ||
break | ||
case 37: | ||
this.$ = yy.LINETYPE.DOTTED | ||
break | ||
case 38: | ||
this.$ = yy.LINETYPE.SOLID_CROSS | ||
break | ||
case 39: | ||
this.$ = yy.LINETYPE.DOTTED_CROSS | ||
break | ||
case 40: | ||
this.$ = $$[$0].substring(1).trim().replace(/\\n/gm, '\n') | ||
break | ||
} | ||
}, | ||
table: [{3: 1, 4: $V0, 5: $V1, 6: $V2}, {1: [3]}, {3: 5, 4: $V0, 5: $V1, 6: $V2}, {3: 6, 4: $V0, 5: $V1, 6: $V2}, o([1, 4, 5, 10, 15, 16, 18, 20, 22, 23, 25, 28, 39], $V3, {7: 7}), {1: [2, 1]}, {1: [2, 2]}, {1: [2, 3], 4: $V4, 5: $V5, 8: 8, 9: 10, 10: $V6, 11: 22, 14: 13, 15: $V7, 16: $V8, 17: 16, 18: $V9, 20: $Va, 22: $Vb, 23: $Vc, 25: $Vd, 28: $Ve, 39: $Vf}, o($Vg, [2, 5]), {9: 25, 10: $V6, 11: 22, 14: 13, 15: $V7, 16: $V8, 17: 16, 18: $V9, 20: $Va, 22: $Vb, 23: $Vc, 25: $Vd, 28: $Ve, 39: $Vf}, o($Vg, [2, 7]), o($Vg, [2, 8]), {11: 26, 39: $Vf}, {5: [1, 27]}, {11: 28, 39: $Vf}, {11: 29, 39: $Vf}, {5: [1, 30]}, {19: 31, 46: $Vh}, {13: [1, 33]}, {13: [1, 34]}, {13: [1, 35]}, {13: [1, 36]}, {36: 37, 40: [1, 38], 41: [1, 39], 42: [1, 40], 43: [1, 41], 44: [1, 42], 45: [1, 43]}, {29: 44, 30: [1, 45], 34: [1, 46], 35: [1, 47]}, o([5, 12, 33, 40, 41, 42, 43, 44, 45, 46], [2, 33]), o($Vg, [2, 6]), {5: [1, 49], 12: [1, 48]}, o($Vg, [2, 11]), {5: [1, 50]}, {5: [1, 51]}, o($Vg, [2, 14]), {5: [1, 52]}, {5: [2, 40]}, o($Vi, $V3, {7: 53}), o($Vi, $V3, {7: 54}), o([4, 5, 10, 15, 16, 18, 20, 22, 23, 24, 25, 28, 39], $V3, {7: 55}), o($Vj, $V3, {26: 56, 7: 57}), {11: 60, 37: [1, 58], 38: [1, 59], 39: $Vf}, o($Vk, [2, 34]), o($Vk, [2, 35]), o($Vk, [2, 36]), o($Vk, [2, 37]), o($Vk, [2, 38]), o($Vk, [2, 39]), {11: 61, 39: $Vf}, {11: 63, 31: 62, 39: $Vf}, {39: [2, 28]}, {39: [2, 29]}, {13: [1, 64]}, o($Vg, [2, 10]), o($Vg, [2, 12]), o($Vg, [2, 13]), o($Vg, [2, 15]), {4: $V4, 5: $V5, 8: 8, 9: 10, 10: $V6, 11: 22, 14: 13, 15: $V7, 16: $V8, 17: 16, 18: $V9, 20: $Va, 21: [1, 65], 22: $Vb, 23: $Vc, 25: $Vd, 28: $Ve, 39: $Vf}, {4: $V4, 5: $V5, 8: 8, 9: 10, 10: $V6, 11: 22, 14: 13, 15: $V7, 16: $V8, 17: 16, 18: $V9, 20: $Va, 21: [1, 66], 22: $Vb, 23: $Vc, 25: $Vd, 28: $Ve, 39: $Vf}, {4: $V4, 5: $V5, 8: 8, 9: 10, 10: $V6, 11: 22, 14: 13, 15: $V7, 16: $V8, 17: 16, 18: $V9, 20: $Va, 22: $Vb, 23: $Vc, 24: [1, 67], 25: $Vd, 28: $Ve, 39: $Vf}, {21: [1, 68]}, {4: $V4, 5: $V5, 8: 8, 9: 10, 10: $V6, 11: 22, 14: 13, 15: $V7, 16: $V8, 17: 16, 18: $V9, 20: $Va, 21: [2, 20], 22: $Vb, 23: $Vc, 25: $Vd, 27: [1, 69], 28: $Ve, 39: $Vf}, {11: 70, 39: $Vf}, {11: 71, 39: $Vf}, {19: 72, 46: $Vh}, {19: 73, 46: $Vh}, {19: 74, 46: $Vh}, {33: [1, 75], 46: [2, 27]}, {5: [1, 76]}, o($Vg, [2, 16]), o($Vg, [2, 17]), {13: [1, 77]}, o($Vg, [2, 19]), {13: [1, 78]}, {19: 79, 46: $Vh}, {19: 80, 46: $Vh}, {5: [2, 32]}, {5: [2, 22]}, {5: [2, 23]}, {11: 81, 39: $Vf}, o($Vg, [2, 9]), o($Vi, $V3, {7: 82}), o($Vj, $V3, {7: 57, 26: 83}), {5: [2, 30]}, {5: [2, 31]}, {46: [2, 26]}, {4: $V4, 5: $V5, 8: 8, 9: 10, 10: $V6, 11: 22, 14: 13, 15: $V7, 16: $V8, 17: 16, 18: $V9, 20: $Va, 21: [1, 84], 22: $Vb, 23: $Vc, 25: $Vd, 28: $Ve, 39: $Vf}, {21: [2, 21]}, o($Vg, [2, 18])], | ||
defaultActions: {5: [2, 1], 6: [2, 2], 32: [2, 40], 46: [2, 28], 47: [2, 29], 72: [2, 32], 73: [2, 22], 74: [2, 23], 79: [2, 30], 80: [2, 31], 81: [2, 26], 83: [2, 21]}, | ||
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], tstack = [], vstack = [null], lstack = [], table = this.table, yytext = '', yylineno = 0, yyleng = 0, recovering = 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) { | ||
break; | ||
case 32: | ||
this.$ = [$$[$0-3],$$[$0-1],{type: 'addMessage', from:$$[$0-3].actor, to:$$[$0-1].actor, signalType:$$[$0-2], msg:$$[$0]}] | ||
break; | ||
case 33: | ||
this.$={type: 'addActor', actor:$$[$0]} | ||
break; | ||
case 34: | ||
this.$ = yy.LINETYPE.SOLID_OPEN; | ||
break; | ||
case 35: | ||
this.$ = yy.LINETYPE.DOTTED_OPEN; | ||
break; | ||
case 36: | ||
this.$ = yy.LINETYPE.SOLID; | ||
break; | ||
case 37: | ||
this.$ = yy.LINETYPE.DOTTED; | ||
break; | ||
case 38: | ||
this.$ = yy.LINETYPE.SOLID_CROSS; | ||
break; | ||
case 39: | ||
this.$ = yy.LINETYPE.DOTTED_CROSS; | ||
break; | ||
case 40: | ||
this.$ = $$[$0].substring(1).trim().replace(/\\n/gm, "\n"); | ||
break; | ||
} | ||
}, | ||
table: [{3:1,4:$V0,5:$V1,6:$V2},{1:[3]},{3:5,4:$V0,5:$V1,6:$V2},{3:6,4:$V0,5:$V1,6:$V2},o([1,4,5,10,15,16,18,20,22,23,25,28,39],$V3,{7:7}),{1:[2,1]},{1:[2,2]},{1:[2,3],4:$V4,5:$V5,8:8,9:10,10:$V6,11:22,14:13,15:$V7,16:$V8,17:16,18:$V9,20:$Va,22:$Vb,23:$Vc,25:$Vd,28:$Ve,39:$Vf},o($Vg,[2,5]),{9:25,10:$V6,11:22,14:13,15:$V7,16:$V8,17:16,18:$V9,20:$Va,22:$Vb,23:$Vc,25:$Vd,28:$Ve,39:$Vf},o($Vg,[2,7]),o($Vg,[2,8]),{11:26,39:$Vf},{5:[1,27]},{11:28,39:$Vf},{11:29,39:$Vf},{5:[1,30]},{19:31,46:$Vh},{13:[1,33]},{13:[1,34]},{13:[1,35]},{13:[1,36]},{36:37,40:[1,38],41:[1,39],42:[1,40],43:[1,41],44:[1,42],45:[1,43]},{29:44,30:[1,45],34:[1,46],35:[1,47]},o([5,12,33,40,41,42,43,44,45,46],[2,33]),o($Vg,[2,6]),{5:[1,49],12:[1,48]},o($Vg,[2,11]),{5:[1,50]},{5:[1,51]},o($Vg,[2,14]),{5:[1,52]},{5:[2,40]},o($Vi,$V3,{7:53}),o($Vi,$V3,{7:54}),o([4,5,10,15,16,18,20,22,23,24,25,28,39],$V3,{7:55}),o($Vj,$V3,{26:56,7:57}),{11:60,37:[1,58],38:[1,59],39:$Vf},o($Vk,[2,34]),o($Vk,[2,35]),o($Vk,[2,36]),o($Vk,[2,37]),o($Vk,[2,38]),o($Vk,[2,39]),{11:61,39:$Vf},{11:63,31:62,39:$Vf},{39:[2,28]},{39:[2,29]},{13:[1,64]},o($Vg,[2,10]),o($Vg,[2,12]),o($Vg,[2,13]),o($Vg,[2,15]),{4:$V4,5:$V5,8:8,9:10,10:$V6,11:22,14:13,15:$V7,16:$V8,17:16,18:$V9,20:$Va,21:[1,65],22:$Vb,23:$Vc,25:$Vd,28:$Ve,39:$Vf},{4:$V4,5:$V5,8:8,9:10,10:$V6,11:22,14:13,15:$V7,16:$V8,17:16,18:$V9,20:$Va,21:[1,66],22:$Vb,23:$Vc,25:$Vd,28:$Ve,39:$Vf},{4:$V4,5:$V5,8:8,9:10,10:$V6,11:22,14:13,15:$V7,16:$V8,17:16,18:$V9,20:$Va,22:$Vb,23:$Vc,24:[1,67],25:$Vd,28:$Ve,39:$Vf},{21:[1,68]},{4:$V4,5:$V5,8:8,9:10,10:$V6,11:22,14:13,15:$V7,16:$V8,17:16,18:$V9,20:$Va,21:[2,20],22:$Vb,23:$Vc,25:$Vd,27:[1,69],28:$Ve,39:$Vf},{11:70,39:$Vf},{11:71,39:$Vf},{19:72,46:$Vh},{19:73,46:$Vh},{19:74,46:$Vh},{33:[1,75],46:[2,27]},{5:[1,76]},o($Vg,[2,16]),o($Vg,[2,17]),{13:[1,77]},o($Vg,[2,19]),{13:[1,78]},{19:79,46:$Vh},{19:80,46:$Vh},{5:[2,32]},{5:[2,22]},{5:[2,23]},{11:81,39:$Vf},o($Vg,[2,9]),o($Vi,$V3,{7:82}),o($Vj,$V3,{7:57,26:83}),{5:[2,30]},{5:[2,31]},{46:[2,26]},{4:$V4,5:$V5,8:8,9:10,10:$V6,11:22,14:13,15:$V7,16:$V8,17:16,18:$V9,20:$Va,21:[1,84],22:$Vb,23:$Vc,25:$Vd,28:$Ve,39:$Vf},{21:[2,21]},o($Vg,[2,18])], | ||
defaultActions: {5:[2,1],6:[2,2],32:[2,40],46:[2,28],47:[2,29],72:[2,32],73:[2,22],74:[2,23],79:[2,30],80:[2,31],81:[2,26],83:[2,21]}, | ||
parseError: function parseError(str, hash) { | ||
if (hash.recoverable) { | ||
this.trace(str); | ||
} else { | ||
function _parseError (msg, hash) { | ||
this.message = msg; | ||
this.hash = hash; | ||
} | ||
_parseError.prototype = Error; | ||
throw new _parseError(str, hash); | ||
} | ||
}, | ||
parse: function parse(input) { | ||
var self = this, stack = [0], tstack = [], vstack = [null], lstack = [], table = this.table, yytext = '', yylineno = 0, yyleng = 0, recovering = 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] | ||
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 | ||
} | ||
function popStack (n) { | ||
stack.length = stack.length - 2 * n | ||
vstack.length = vstack.length - n | ||
lstack.length = lstack.length - n | ||
} | ||
var lex = function () { | ||
var token | ||
token = lexer.lex() || EOF | ||
if (typeof token !== 'number') { | ||
token = self.symbols_[token] || token | ||
} | ||
return token | ||
} | ||
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; | ||
} | ||
function popStack(n) { | ||
stack.length = stack.length - 2 * n; | ||
vstack.length = vstack.length - n; | ||
lstack.length = lstack.length - n; | ||
} | ||
function lex() { | ||
var token; | ||
token = tstack.pop() || lexer.lex() || EOF; | ||
if (typeof token !== 'number') { | ||
if (token instanceof Array) { | ||
tstack = token; | ||
token = tstack.pop(); | ||
} | ||
token = self.symbols_[token] || token; | ||
} | ||
return token; | ||
} | ||
var symbol, preErrorSymbol, state, action, a, r, yyval = {}, p, len, newState, expected | ||
while (true) { | ||
state = stack[stack.length - 1] | ||
var symbol, preErrorSymbol, state, action, a, r, yyval = {}, p, len, newState, expected; | ||
while (true) { | ||
state = stack[stack.length - 1]; | ||
if (this.defaultActions[state]) { | ||
action = this.defaultActions[state] | ||
action = this.defaultActions[state]; | ||
} else { | ||
if (symbol === null || typeof symbol === 'undefined') { | ||
symbol = lex() | ||
} | ||
action = table[state] && table[state][symbol] | ||
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] + '\'') | ||
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 (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) { | ||
throw new Error('Parse Error: multiple actions possible at state: ' + state + ', token: ' + symbol) | ||
throw new Error('Parse Error: multiple actions possible at state: ' + state + ', token: ' + symbol); | ||
} | ||
switch (action[0]) { | ||
case 1: | ||
stack.push(symbol) | ||
vstack.push(lexer.yytext) | ||
lstack.push(lexer.yylloc) | ||
stack.push(action[1]) | ||
symbol = null | ||
case 1: | ||
stack.push(symbol); | ||
vstack.push(lexer.yytext); | ||
lstack.push(lexer.yylloc); | ||
stack.push(action[1]); | ||
symbol = null; | ||
if (!preErrorSymbol) { | ||
yyleng = lexer.yyleng | ||
yytext = lexer.yytext | ||
yylineno = lexer.yylineno | ||
yyloc = lexer.yylloc | ||
if (recovering > 0) { | ||
recovering-- | ||
} | ||
yyleng = lexer.yyleng; | ||
yytext = lexer.yytext; | ||
yylineno = lexer.yylineno; | ||
yyloc = lexer.yylloc; | ||
if (recovering > 0) { | ||
recovering--; | ||
} | ||
} else { | ||
symbol = preErrorSymbol | ||
preErrorSymbol = null | ||
symbol = preErrorSymbol; | ||
preErrorSymbol = null; | ||
} | ||
break | ||
case 2: | ||
len = this.productions_[action[1]][1] | ||
yyval.$ = vstack[vstack.length - len] | ||
break; | ||
case 2: | ||
len = this.productions_[action[1]][1]; | ||
yyval.$ = vstack[vstack.length - len]; | ||
yyval._$ = { | ||
first_line: lstack[lstack.length - (len || 1)].first_line, | ||
last_line: lstack[lstack.length - 1].last_line, | ||
first_column: lstack[lstack.length - (len || 1)].first_column, | ||
last_column: lstack[lstack.length - 1].last_column | ||
} | ||
first_line: lstack[lstack.length - (len || 1)].first_line, | ||
last_line: lstack[lstack.length - 1].last_line, | ||
first_column: lstack[lstack.length - (len || 1)].first_column, | ||
last_column: lstack[lstack.length - 1].last_column | ||
}; | ||
if (ranges) { | ||
yyval._$.range = [ | ||
lstack[lstack.length - (len || 1)].range[0], | ||
lstack[lstack.length - 1].range[1] | ||
] | ||
yyval._$.range = [ | ||
lstack[lstack.length - (len || 1)].range[0], | ||
lstack[lstack.length - 1].range[1] | ||
]; | ||
} | ||
r = this.performAction.apply(yyval, [ | ||
yytext, | ||
yyleng, | ||
yylineno, | ||
sharedState.yy, | ||
action[1], | ||
vstack, | ||
lstack | ||
].concat(args)) | ||
yytext, | ||
yyleng, | ||
yylineno, | ||
sharedState.yy, | ||
action[1], | ||
vstack, | ||
lstack | ||
].concat(args)); | ||
if (typeof r !== 'undefined') { | ||
return r | ||
return r; | ||
} | ||
if (len) { | ||
stack = stack.slice(0, -1 * len * 2) | ||
vstack = vstack.slice(0, -1 * len) | ||
lstack = lstack.slice(0, -1 * len) | ||
stack = stack.slice(0, -1 * len * 2); | ||
vstack = vstack.slice(0, -1 * len); | ||
lstack = lstack.slice(0, -1 * len); | ||
} | ||
stack.push(this.productions_[action[1]][0]) | ||
vstack.push(yyval.$) | ||
lstack.push(yyval._$) | ||
newState = table[stack[stack.length - 2]][stack[stack.length - 1]] | ||
stack.push(newState) | ||
break | ||
case 3: | ||
return true | ||
stack.push(this.productions_[action[1]][0]); | ||
vstack.push(yyval.$); | ||
lstack.push(yyval._$); | ||
newState = table[stack[stack.length - 2]][stack[stack.length - 1]]; | ||
stack.push(newState); | ||
break; | ||
case 3: | ||
return true; | ||
} | ||
} | ||
return true | ||
}} | ||
} | ||
return true; | ||
}}; | ||
/* generated by jison-lex 0.3.4 */ | ||
var lexer = (function () { | ||
var lexer = ({ | ||
var lexer = (function(){ | ||
var lexer = ({ | ||
EOF: 1, | ||
EOF:1, | ||
parseError: function parseError (str, hash) { | ||
parseError:function parseError(str, hash) { | ||
if (this.yy.parser) { | ||
this.yy.parser.parseError(str, hash) | ||
this.yy.parser.parseError(str, hash); | ||
} else { | ||
throw new Error(str) | ||
throw new Error(str); | ||
} | ||
}, | ||
}, | ||
// resets the lexer, sets new input | ||
setInput: function (input, yy) { | ||
this.yy = yy || this.yy || {} | ||
this._input = input | ||
this._more = this._backtrack = this.done = false | ||
this.yylineno = this.yyleng = 0 | ||
this.yytext = this.matched = this.match = '' | ||
this.conditionStack = ['INITIAL'] | ||
setInput:function (input, yy) { | ||
this.yy = yy || this.yy || {}; | ||
this._input = input; | ||
this._more = this._backtrack = this.done = false; | ||
this.yylineno = this.yyleng = 0; | ||
this.yytext = this.matched = this.match = ''; | ||
this.conditionStack = ['INITIAL']; | ||
this.yylloc = { | ||
first_line: 1, | ||
first_column: 0, | ||
last_line: 1, | ||
last_column: 0 | ||
} | ||
first_line: 1, | ||
first_column: 0, | ||
last_line: 1, | ||
last_column: 0 | ||
}; | ||
if (this.options.ranges) { | ||
this.yylloc.range = [0, 0] | ||
this.yylloc.range = [0,0]; | ||
} | ||
this.offset = 0 | ||
return this | ||
}, | ||
this.offset = 0; | ||
return this; | ||
}, | ||
// consumes and returns one char from the input | ||
input: function () { | ||
var ch = this._input[0] | ||
this.yytext += ch | ||
this.yyleng++ | ||
this.offset++ | ||
this.match += ch | ||
this.matched += ch | ||
var lines = ch.match(/(?:\r\n?|\n).*/g) | ||
input:function () { | ||
var ch = this._input[0]; | ||
this.yytext += ch; | ||
this.yyleng++; | ||
this.offset++; | ||
this.match += ch; | ||
this.matched += ch; | ||
var lines = ch.match(/(?:\r\n?|\n).*/g); | ||
if (lines) { | ||
this.yylineno++ | ||
this.yylloc.last_line++ | ||
this.yylineno++; | ||
this.yylloc.last_line++; | ||
} else { | ||
this.yylloc.last_column++ | ||
this.yylloc.last_column++; | ||
} | ||
if (this.options.ranges) { | ||
this.yylloc.range[1]++ | ||
this.yylloc.range[1]++; | ||
} | ||
this._input = this._input.slice(1) | ||
return ch | ||
}, | ||
this._input = this._input.slice(1); | ||
return ch; | ||
}, | ||
// unshifts one char (or a string) into the input | ||
unput: function (ch) { | ||
var len = ch.length | ||
var lines = ch.split(/(?:\r\n?|\n)/g) | ||
unput:function (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 -= len; | ||
this.offset -= len | ||
var oldLines = this.match.split(/(?:\r\n?|\n)/g) | ||
this.match = this.match.substr(0, this.match.length - 1) | ||
this.matched = this.matched.substr(0, this.matched.length - 1) | ||
this._input = ch + this._input; | ||
this.yytext = this.yytext.substr(0, this.yytext.length - len); | ||
//this.yyleng -= len; | ||
this.offset -= len; | ||
var oldLines = this.match.split(/(?:\r\n?|\n)/g); | ||
this.match = this.match.substr(0, this.match.length - 1); | ||
this.matched = this.matched.substr(0, this.matched.length - 1); | ||
if (lines.length - 1) { | ||
this.yylineno -= lines.length - 1 | ||
this.yylineno -= lines.length - 1; | ||
} | ||
var r = this.yylloc.range | ||
var r = this.yylloc.range; | ||
this.yylloc = { | ||
first_line: this.yylloc.first_line, | ||
last_line: this.yylineno + 1, | ||
first_column: this.yylloc.first_column, | ||
last_column: lines | ||
? (lines.length === oldLines.length ? this.yylloc.first_column : 0) + | ||
oldLines[oldLines.length - lines.length].length - lines[0].length | ||
: this.yylloc.first_column - len | ||
} | ||
first_line: this.yylloc.first_line, | ||
last_line: this.yylineno + 1, | ||
first_column: this.yylloc.first_column, | ||
last_column: lines ? | ||
(lines.length === oldLines.length ? this.yylloc.first_column : 0) | ||
+ oldLines[oldLines.length - lines.length].length - lines[0].length : | ||
this.yylloc.first_column - len | ||
}; | ||
if (this.options.ranges) { | ||
this.yylloc.range = [r[0], r[0] + this.yyleng - len] | ||
this.yylloc.range = [r[0], r[0] + this.yyleng - len]; | ||
} | ||
this.yyleng = this.yytext.length | ||
return this | ||
}, | ||
this.yyleng = this.yytext.length; | ||
return this; | ||
}, | ||
// When called from action, caches matched text and appends it on next action | ||
more: function () { | ||
this._more = true | ||
return this | ||
}, | ||
more:function () { | ||
this._more = true; | ||
return this; | ||
}, | ||
// When called from action, signals the lexer that this rule fails to match the input, so the next matching rule (regex) should be tested instead. | ||
reject: function () { | ||
reject:function () { | ||
if (this.options.backtrack_lexer) { | ||
this._backtrack = true | ||
this._backtrack = true; | ||
} else { | ||
return this.parseError('Lexical error on line ' + (this.yylineno + 1) + '. You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true).\n' + this.showPosition(), { | ||
text: '', | ||
token: null, | ||
line: this.yylineno | ||
}) | ||
return this.parseError('Lexical error on line ' + (this.yylineno + 1) + '. You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true).\n' + this.showPosition(), { | ||
text: "", | ||
token: null, | ||
line: this.yylineno | ||
}); | ||
} | ||
return this | ||
}, | ||
return this; | ||
}, | ||
// retain first n characters of the match | ||
less: function (n) { | ||
this.unput(this.match.slice(n)) | ||
}, | ||
less:function (n) { | ||
this.unput(this.match.slice(n)); | ||
}, | ||
// displays already matched input, i.e. for error messages | ||
pastInput: function () { | ||
var past = this.matched.substr(0, this.matched.length - this.match.length) | ||
return (past.length > 20 ? '...' : '') + past.substr(-20).replace(/\n/g, '') | ||
}, | ||
pastInput:function () { | ||
var past = this.matched.substr(0, this.matched.length - this.match.length); | ||
return (past.length > 20 ? '...':'') + past.substr(-20).replace(/\n/g, ""); | ||
}, | ||
// displays upcoming input, i.e. for error messages | ||
upcomingInput: function () { | ||
var next = this.match | ||
upcomingInput:function () { | ||
var next = this.match; | ||
if (next.length < 20) { | ||
next += this._input.substr(0, 20 - next.length) | ||
next += this._input.substr(0, 20-next.length); | ||
} | ||
return (next.substr(0, 20) + (next.length > 20 ? '...' : '')).replace(/\n/g, '') | ||
}, | ||
return (next.substr(0,20) + (next.length > 20 ? '...' : '')).replace(/\n/g, ""); | ||
}, | ||
// displays the character position where the lexing error occurred, i.e. for error messages | ||
showPosition: function () { | ||
var pre = this.pastInput() | ||
var c = new Array(pre.length + 1).join('-') | ||
return pre + this.upcomingInput() + '\n' + c + '^' | ||
}, | ||
showPosition:function () { | ||
var pre = this.pastInput(); | ||
var c = new Array(pre.length + 1).join("-"); | ||
return pre + this.upcomingInput() + "\n" + c + "^"; | ||
}, | ||
// test the lexed token: return FALSE when not a match, otherwise return token | ||
test_match: function (match, indexed_rule) { | ||
test_match:function (match, indexed_rule) { | ||
var token, | ||
lines, | ||
backup | ||
lines, | ||
backup; | ||
if (this.options.backtrack_lexer) { | ||
// save context | ||
backup = { | ||
yylineno: this.yylineno, | ||
yylloc: { | ||
first_line: this.yylloc.first_line, | ||
last_line: this.last_line, | ||
first_column: this.yylloc.first_column, | ||
last_column: this.yylloc.last_column | ||
}, | ||
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 | ||
} | ||
if (this.options.ranges) { | ||
backup.yylloc.range = this.yylloc.range.slice(0) | ||
} | ||
backup = { | ||
yylineno: this.yylineno, | ||
yylloc: { | ||
first_line: this.yylloc.first_line, | ||
last_line: this.last_line, | ||
first_column: this.yylloc.first_column, | ||
last_column: this.yylloc.last_column | ||
}, | ||
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 | ||
}; | ||
if (this.options.ranges) { | ||
backup.yylloc.range = this.yylloc.range.slice(0); | ||
} | ||
} | ||
lines = match[0].match(/(?:\r\n?|\n).*/g) | ||
lines = match[0].match(/(?:\r\n?|\n).*/g); | ||
if (lines) { | ||
this.yylineno += lines.length | ||
this.yylineno += lines.length; | ||
} | ||
this.yylloc = { | ||
first_line: this.yylloc.last_line, | ||
last_line: this.yylineno + 1, | ||
first_column: this.yylloc.last_column, | ||
last_column: lines | ||
? lines[lines.length - 1].length - lines[lines.length - 1].match(/\r?\n?/)[0].length | ||
: this.yylloc.last_column + match[0].length | ||
} | ||
this.yytext += match[0] | ||
this.match += match[0] | ||
this.matches = match | ||
this.yyleng = this.yytext.length | ||
first_line: this.yylloc.last_line, | ||
last_line: this.yylineno + 1, | ||
first_column: this.yylloc.last_column, | ||
last_column: lines ? | ||
lines[lines.length - 1].length - lines[lines.length - 1].match(/\r?\n?/)[0].length : | ||
this.yylloc.last_column + match[0].length | ||
}; | ||
this.yytext += match[0]; | ||
this.match += match[0]; | ||
this.matches = match; | ||
this.yyleng = this.yytext.length; | ||
if (this.options.ranges) { | ||
this.yylloc.range = [this.offset, this.offset += this.yyleng] | ||
this.yylloc.range = [this.offset, this.offset += this.yyleng]; | ||
} | ||
this._more = false | ||
this._backtrack = false | ||
this._input = this._input.slice(match[0].length) | ||
this.matched += match[0] | ||
token = this.performAction.call(this, this.yy, this, indexed_rule, this.conditionStack[this.conditionStack.length - 1]) | ||
this._more = false; | ||
this._backtrack = false; | ||
this._input = this._input.slice(match[0].length); | ||
this.matched += match[0]; | ||
token = this.performAction.call(this, this.yy, this, indexed_rule, this.conditionStack[this.conditionStack.length - 1]); | ||
if (this.done && this._input) { | ||
this.done = false | ||
this.done = false; | ||
} | ||
if (token) { | ||
return token | ||
return token; | ||
} else if (this._backtrack) { | ||
// recover context | ||
for (var k in backup) { | ||
this[k] = backup[k] | ||
} | ||
return false // rule action called reject() implying the next rule should be tested instead. | ||
for (var k in backup) { | ||
this[k] = backup[k]; | ||
} | ||
return false; // rule action called reject() implying the next rule should be tested instead. | ||
} | ||
return false | ||
}, | ||
return false; | ||
}, | ||
// return next match in input | ||
next: function () { | ||
next:function () { | ||
if (this.done) { | ||
return this.EOF | ||
return this.EOF; | ||
} | ||
if (!this._input) { | ||
this.done = true | ||
this.done = true; | ||
} | ||
var token, | ||
match, | ||
tempMatch, | ||
index | ||
match, | ||
tempMatch, | ||
index; | ||
if (!this._more) { | ||
this.yytext = '' | ||
this.match = '' | ||
this.yytext = ''; | ||
this.match = ''; | ||
} | ||
var rules = this._currentRules() | ||
var rules = this._currentRules(); | ||
for (var i = 0; i < rules.length; i++) { | ||
tempMatch = this._input.match(this.rules[rules[i]]) | ||
if (tempMatch && (!match || tempMatch[0].length > match[0].length)) { | ||
match = tempMatch | ||
index = i | ||
if (this.options.backtrack_lexer) { | ||
token = this.test_match(tempMatch, rules[i]) | ||
if (token !== false) { | ||
return token | ||
} else if (this._backtrack) { | ||
match = false | ||
continue // rule action called reject() implying a rule MISmatch. | ||
} else { | ||
tempMatch = this._input.match(this.rules[rules[i]]); | ||
if (tempMatch && (!match || tempMatch[0].length > match[0].length)) { | ||
match = tempMatch; | ||
index = i; | ||
if (this.options.backtrack_lexer) { | ||
token = this.test_match(tempMatch, rules[i]); | ||
if (token !== false) { | ||
return token; | ||
} else if (this._backtrack) { | ||
match = false; | ||
continue; // rule action called reject() implying a rule MISmatch. | ||
} else { | ||
// else: this is a lexer rule which consumes input without producing a token (e.g. whitespace) | ||
return false | ||
} | ||
} else if (!this.options.flex) { | ||
break | ||
return false; | ||
} | ||
} else if (!this.options.flex) { | ||
break; | ||
} | ||
} | ||
} | ||
} | ||
if (match) { | ||
token = this.test_match(match, rules[index]) | ||
if (token !== false) { | ||
return token | ||
} | ||
token = this.test_match(match, rules[index]); | ||
if (token !== false) { | ||
return token; | ||
} | ||
// else: this is a lexer rule which consumes input without producing a token (e.g. whitespace) | ||
return false | ||
return false; | ||
} | ||
if (this._input === '') { | ||
return this.EOF | ||
if (this._input === "") { | ||
return this.EOF; | ||
} else { | ||
return this.parseError('Lexical error on line ' + (this.yylineno + 1) + '. Unrecognized text.\n' + this.showPosition(), { | ||
text: '', | ||
token: null, | ||
line: this.yylineno | ||
}) | ||
return this.parseError('Lexical error on line ' + (this.yylineno + 1) + '. Unrecognized text.\n' + this.showPosition(), { | ||
text: "", | ||
token: null, | ||
line: this.yylineno | ||
}); | ||
} | ||
}, | ||
}, | ||
// return next match that has a token | ||
lex: function lex () { | ||
var r = this.next() | ||
lex:function lex() { | ||
var r = this.next(); | ||
if (r) { | ||
return r | ||
return r; | ||
} else { | ||
return this.lex() | ||
return this.lex(); | ||
} | ||
}, | ||
}, | ||
// activates a new lexer condition state (pushes the new lexer condition state onto the condition stack) | ||
begin: function begin (condition) { | ||
this.conditionStack.push(condition) | ||
}, | ||
begin:function begin(condition) { | ||
this.conditionStack.push(condition); | ||
}, | ||
// pop the previously active lexer condition state off the condition stack | ||
popState: function popState () { | ||
var n = this.conditionStack.length - 1 | ||
popState:function popState() { | ||
var n = this.conditionStack.length - 1; | ||
if (n > 0) { | ||
return this.conditionStack.pop() | ||
return this.conditionStack.pop(); | ||
} else { | ||
return this.conditionStack[0] | ||
return this.conditionStack[0]; | ||
} | ||
}, | ||
}, | ||
// produce the lexer rule set which is active for the currently active lexer condition state | ||
_currentRules: function _currentRules () { | ||
_currentRules:function _currentRules() { | ||
if (this.conditionStack.length && this.conditionStack[this.conditionStack.length - 1]) { | ||
return this.conditions[this.conditionStack[this.conditionStack.length - 1]].rules | ||
return this.conditions[this.conditionStack[this.conditionStack.length - 1]].rules; | ||
} else { | ||
return this.conditions['INITIAL'].rules | ||
return this.conditions["INITIAL"].rules; | ||
} | ||
}, | ||
}, | ||
// return the currently active lexer condition state; when an index argument is provided it produces the N-th previous condition state, if available | ||
topState: function topState (n) { | ||
n = this.conditionStack.length - 1 - Math.abs(n || 0) | ||
topState:function topState(n) { | ||
n = this.conditionStack.length - 1 - Math.abs(n || 0); | ||
if (n >= 0) { | ||
return this.conditionStack[n] | ||
return this.conditionStack[n]; | ||
} else { | ||
return 'INITIAL' | ||
return "INITIAL"; | ||
} | ||
}, | ||
}, | ||
// alias for begin(condition) | ||
pushState: function pushState (condition) { | ||
this.begin(condition) | ||
}, | ||
pushState:function pushState(condition) { | ||
this.begin(condition); | ||
}, | ||
// return the number of states currently on the stack | ||
stateStackSize: function stateStackSize () { | ||
return this.conditionStack.length | ||
}, | ||
options: {'case-insensitive': true}, | ||
performAction: function anonymous (yy, yy_, $avoiding_name_collisions, YY_START) { | ||
var YYSTATE = YY_START | ||
switch ($avoiding_name_collisions) { | ||
case 0:return 5 | ||
break | ||
case 1:/* skip all whitespace */ | ||
break | ||
case 2:/* skip same-line whitespace */ | ||
break | ||
case 3:/* skip comments */ | ||
break | ||
case 4:/* skip comments */ | ||
break | ||
case 5: this.begin('ID'); return 10 | ||
break | ||
case 6: this.begin('ALIAS'); return 39 | ||
break | ||
case 7: this.popState(); this.popState(); this.begin('LINE'); return 12 | ||
break | ||
case 8: this.popState(); this.popState(); return 5 | ||
break | ||
case 9: this.begin('LINE'); return 20 | ||
break | ||
case 10: this.begin('LINE'); return 22 | ||
break | ||
case 11: this.begin('LINE'); return 23 | ||
break | ||
case 12: this.begin('LINE'); return 24 | ||
break | ||
case 13: this.begin('LINE'); return 25 | ||
break | ||
case 14: this.begin('LINE'); return 27 | ||
break | ||
case 15: this.popState(); return 13 | ||
break | ||
case 16:return 21 | ||
break | ||
case 17:return 34 | ||
break | ||
case 18:return 35 | ||
break | ||
case 19:return 30 | ||
break | ||
case 20:return 28 | ||
break | ||
case 21: this.begin('ID'); return 15 | ||
break | ||
case 22: this.begin('ID'); return 16 | ||
break | ||
case 23:return 18 | ||
break | ||
case 24:return 6 | ||
break | ||
case 25:return 33 | ||
break | ||
case 26:return 5 | ||
break | ||
case 27: yy_.yytext = yy_.yytext.trim(); return 39 | ||
break | ||
case 28:return 42 | ||
break | ||
case 29:return 43 | ||
break | ||
case 30:return 40 | ||
break | ||
case 31:return 41 | ||
break | ||
case 32:return 44 | ||
break | ||
case 33:return 45 | ||
break | ||
case 34:return 46 | ||
break | ||
case 35:return 37 | ||
break | ||
case 36:return 38 | ||
break | ||
case 37:return 5 | ||
break | ||
case 38:return 'INVALID' | ||
break | ||
} | ||
}, | ||
rules: [/^(?:[\n]+)/i, /^(?:\s+)/i, /^(?:((?!\n)\s)+)/i, /^(?:#[^\n]*)/i, /^(?:%[^\n]*)/i, /^(?:participant\b)/i, /^(?:[^\->:\n,;]+?(?=((?!\n)\s)+as(?!\n)\s|[#\n;]|$))/i, /^(?:as\b)/i, /^(?:(?:))/i, /^(?:loop\b)/i, /^(?:opt\b)/i, /^(?:alt\b)/i, /^(?:else\b)/i, /^(?:par\b)/i, /^(?:and\b)/i, /^(?:[^#\n;]*)/i, /^(?:end\b)/i, /^(?:left of\b)/i, /^(?:right of\b)/i, /^(?:over\b)/i, /^(?:note\b)/i, /^(?:activate\b)/i, /^(?:deactivate\b)/i, /^(?:title\b)/i, /^(?:sequenceDiagram\b)/i, /^(?:,)/i, /^(?:;)/i, /^(?:[^\+\->:\n,;]+)/i, /^(?:->>)/i, /^(?:-->>)/i, /^(?:->)/i, /^(?:-->)/i, /^(?:-[x])/i, /^(?:--[x])/i, /^(?::[^#\n;]+)/i, /^(?:\+)/i, /^(?:-)/i, /^(?:$)/i, /^(?:.)/i], | ||
conditions: {'LINE': {'rules': [2, 3, 15], 'inclusive': false}, 'ALIAS': {'rules': [2, 3, 7, 8], 'inclusive': false}, 'ID': {'rules': [2, 3, 6], 'inclusive': false}, 'INITIAL': {'rules': [0, 1, 3, 4, 5, 9, 10, 11, 12, 13, 14, 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() | ||
})() | ||
stateStackSize:function stateStackSize() { | ||
return this.conditionStack.length; | ||
}, | ||
options: {"case-insensitive":true}, | ||
performAction: function anonymous(yy,yy_,$avoiding_name_collisions,YY_START) { | ||
var YYSTATE=YY_START; | ||
switch($avoiding_name_collisions) { | ||
case 0:return 5; | ||
break; | ||
case 1:/* skip all whitespace */ | ||
break; | ||
case 2:/* skip same-line whitespace */ | ||
break; | ||
case 3:/* skip comments */ | ||
break; | ||
case 4:/* skip comments */ | ||
break; | ||
case 5: this.begin('ID'); return 10; | ||
break; | ||
case 6: this.begin('ALIAS'); return 39; | ||
break; | ||
case 7: this.popState(); this.popState(); this.begin('LINE'); return 12; | ||
break; | ||
case 8: this.popState(); this.popState(); return 5; | ||
break; | ||
case 9: this.begin('LINE'); return 20; | ||
break; | ||
case 10: this.begin('LINE'); return 22; | ||
break; | ||
case 11: this.begin('LINE'); return 23; | ||
break; | ||
case 12: this.begin('LINE'); return 24; | ||
break; | ||
case 13: this.begin('LINE'); return 25; | ||
break; | ||
case 14: this.begin('LINE'); return 27; | ||
break; | ||
case 15: this.popState(); return 13; | ||
break; | ||
case 16:return 21; | ||
break; | ||
case 17:return 34; | ||
break; | ||
case 18:return 35; | ||
break; | ||
case 19:return 30; | ||
break; | ||
case 20:return 28; | ||
break; | ||
case 21: this.begin('ID'); return 15; | ||
break; | ||
case 22: this.begin('ID'); return 16; | ||
break; | ||
case 23:return 18; | ||
break; | ||
case 24:return 6; | ||
break; | ||
case 25:return 33; | ||
break; | ||
case 26:return 5; | ||
break; | ||
case 27: yy_.yytext = yy_.yytext.trim(); return 39; | ||
break; | ||
case 28:return 42; | ||
break; | ||
case 29:return 43; | ||
break; | ||
case 30:return 40; | ||
break; | ||
case 31:return 41; | ||
break; | ||
case 32:return 44; | ||
break; | ||
case 33:return 45; | ||
break; | ||
case 34:return 46; | ||
break; | ||
case 35:return 37; | ||
break; | ||
case 36:return 38; | ||
break; | ||
case 37:return 5; | ||
break; | ||
case 38:return 'INVALID'; | ||
break; | ||
} | ||
}, | ||
rules: [/^(?:[\n]+)/i,/^(?:\s+)/i,/^(?:((?!\n)\s)+)/i,/^(?:#[^\n]*)/i,/^(?:%[^\n]*)/i,/^(?:participant\b)/i,/^(?:[^\->:\n,;]+?(?=((?!\n)\s)+as(?!\n)\s|[#\n;]|$))/i,/^(?:as\b)/i,/^(?:(?:))/i,/^(?:loop\b)/i,/^(?:opt\b)/i,/^(?:alt\b)/i,/^(?:else\b)/i,/^(?:par\b)/i,/^(?:and\b)/i,/^(?:[^#\n;]*)/i,/^(?:end\b)/i,/^(?:left of\b)/i,/^(?:right of\b)/i,/^(?:over\b)/i,/^(?:note\b)/i,/^(?:activate\b)/i,/^(?:deactivate\b)/i,/^(?:title\b)/i,/^(?:sequenceDiagram\b)/i,/^(?:,)/i,/^(?:;)/i,/^(?:[^\+\->:\n,;]+)/i,/^(?:->>)/i,/^(?:-->>)/i,/^(?:->)/i,/^(?:-->)/i,/^(?:-[x])/i,/^(?:--[x])/i,/^(?::[^#\n;]+)/i,/^(?:\+)/i,/^(?:-)/i,/^(?:$)/i,/^(?:.)/i], | ||
conditions: {"LINE":{"rules":[2,3,15],"inclusive":false},"ALIAS":{"rules":[2,3,7,8],"inclusive":false},"ID":{"rules":[2,3,6],"inclusive":false},"INITIAL":{"rules":[0,1,3,4,5,9,10,11,12,13,14,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) } | ||
exports.main = function commonjsMain (args) { | ||
exports.parser = parser; | ||
exports.Parser = parser.Parser; | ||
exports.parse = function () { return parser.parse.apply(parser, arguments); }; | ||
exports.main = function commonjsMain(args) { | ||
if (!args[1]) { | ||
console.log('Usage: ' + args[0] + ' FILE') | ||
process.exit(1) | ||
console.log('Usage: '+args[0]+' FILE'); | ||
process.exit(1); | ||
} | ||
var source = require('fs').readFileSync(require('path').normalize(args[1]), 'utf8') | ||
return exports.parser.parse(source) | ||
} | ||
if (typeof module !== 'undefined' && require.main === module) { | ||
exports.main(process.argv.slice(1)) | ||
} | ||
var source = require('fs').readFileSync(require('path').normalize(args[1]), "utf8"); | ||
return exports.parser.parse(source); | ||
}; | ||
if (typeof module !== 'undefined' && require.main === module) { | ||
exports.main(process.argv.slice(1)); | ||
} | ||
} |
@@ -90,3 +90,2 @@ /* eslint-env jasmine */ | ||
function addMermaidSVGwithStyleToDocument () { | ||
var styleSheetCount = document.styleSheets.length | ||
var svg = document.createElement('svg') | ||
@@ -98,5 +97,5 @@ svg.setAttribute('id', 'mermaid-03') | ||
s.innerHTML = '#mermaid-05 .node2 { stroke:#eee; }\n.node-square { stroke:#bfe; }\n' | ||
s.title = 'mermaid-svg-internal-css' | ||
svg.appendChild(s) | ||
document.body.appendChild(svg) | ||
document.styleSheets[styleSheetCount].title = 'mermaid-svg-internal-css' | ||
} | ||
@@ -109,3 +108,3 @@ | ||
// Firefox throws a SecurityError when trying to access cssRules | ||
document.styleSheets[document.styleSheets.length++] = { | ||
document.styleSheets[document.styleSheets.length] = { | ||
get cssRules () { throw new Error('SecurityError') } | ||
@@ -112,0 +111,0 @@ } |
Sorry, the diff of this file is too big to display
Sorry, the diff of this file is too big to display
Sorry, the diff of this file is too big to display
Sorry, the diff of this file is too big to display
Sorry, the diff of this file is too big to display
Sorry, the diff of this file is too big to display
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
10461434
30
233790