UNPKG

jscc-parser

Version:

A LALR(1) Parser Generator for JavaScript written in JavaScript.

91 lines 72.7 kB
/* almond 0.3.2 Copyright jQuery Foundation and other contributors. Released under MIT license, http://github.com/requirejs/almond/LICENSE */ var k=this.jscc={};k.enums={};k.classes={};k.Xa=k.enums;k.classes=k.classes;var p={NONE:0,za:1,Oa:2,Ba:3},z={ya:0,EPSILON:1,da:2},K={Yb:0,$b:1},L={TRACE:0,DEBUG:1,INFO:2,WARN:3,ERROR:4,FATAL:5};k.Xa.LOG_LEVEL=L;var M={Zb:0,Na:1,lb:2},N={NONE:0,xa:1,Pa:2,ERROR:3},O={I:0,A:1};(function(a){"function"!==typeof a.setTimeout&&(a.setTimeout=function(a){"function"===typeof a&&a();return 0})})(this);var P,Q,R; (function(a){function c(b,n){var a,e,c,r,h,t,d,g,f=n&&n.split("/"),G=v.map,m=G&&G["*"]||{};if(b){n=b.split("/");b=n.length-1;v.xc&&A.test(n[b])&&(n[b]=n[b].replace(A,""));"."===n[0].charAt(0)&&f&&(b=f.slice(0,f.length-1),n=b.concat(n));for(d=0;d<n.length;d++)b=n[d],"."===b?(n.splice(d,1),--d):".."===b&&(1!==d||".."!==n[2])&&".."!==n[d-1]&&0<d&&(n.splice(d-1,2),d-=2);b=n.join("/")}if((f||m)&&G){n=b.split("/");for(d=n.length;0<d;--d){a=n.slice(0,d).join("/");if(f)for(g=f.length;0<g;--g)if(e=G[f.slice(0, g).join("/")])if(e=e[a]){c=e;r=d;break}if(c)break;!h&&m&&m[a]&&(h=m[a],t=d)}!c&&h&&(c=h,r=t);c&&(n.splice(0,r,c),b=n.join("/"))}return b}function b(b,n){return function(){var e=B.call(arguments,0);"string"!==typeof e[0]&&1===e.length&&e.push(null);return m.apply(a,e.concat([b,n]))}}function f(b){return function(n){return c(n,b)}}function h(b){return function(a){n[b]=a}}function g(b){if(y.call(r,b)){var e=r[b];delete r[b];t[b]=!0;d.apply(a,e)}if(!y.call(n,b)&&!y.call(t,b))throw Error("No "+b);return n[b]} function l(b){var n,a=b?b.indexOf("!"):-1;-1<a&&(n=b.substring(0,a),b=b.substring(a+1,b.length));return[n,b]}function e(b){return function(){return v&&v.oa&&v.oa[b]||{}}}var d,m,w,q,n={},r={},v={},t={},y=Object.prototype.hasOwnProperty,B=[].slice,A=/\.js$/;w=function(b,n){var a;b=l(b);var e=b[0];b=b[1];e&&(e=c(e,n),a=g(e));e?b=a&&a.normalize?a.normalize(b,f(n)):c(b,n):(b=c(b,n),b=l(b),e=b[0],b=b[1],e&&(a=g(e)));return{Za:e?e+"!"+b:b,n:b,Ac:e,p:a}};q={Pb:function(n){return b(n)},exports:function(b){var a= n[b];return"undefined"!==typeof a?a:n[b]={}},module:function(b){return{id:b,uri:"",exports:n[b],oa:e(b)}}};d=function(e,c,d,v){var f,m,l,D,B=[];m=typeof d;var Z;v=v||e;if("undefined"===m||"function"===m){c=!c.length&&d.length?["require","exports","module"]:c;for(D=0;D<c.length;D+=1)if(l=w(c[D],v),m=l.Za,"require"===m)B[D]=q.Pb(e);else if("exports"===m)B[D]=q.exports(e),Z=!0;else if("module"===m)f=B[D]=q.module(e);else if(y.call(n,m)||y.call(r,m)||y.call(t,m))B[D]=g(m);else if(l.p)l.p.load(l.n,b(v, !0),h(m),{}),B[D]=n[m];else throw Error(e+" missing "+m);c=d?d.apply(n[e],B):void 0;e&&(f&&f.exports!==a&&f.exports!==n[e]?n[e]=f.exports:c===a&&Z||(n[e]=c))}else e&&(n[e]=d)};P=Q=m=function(b,n,e,c,r){if("string"===typeof b)return q[b]?q[b](n):g(w(b,n).Za);if(!b.splice){v=b;v.rb&&m(v.rb,v.Ta);if(!n)return;n.splice?(b=n,n=e,e=null):b=a}n=n||function(){};"function"===typeof e&&(e=c,c=r);c?d(a,b,n,e):setTimeout(function(){d(a,b,n,e)},4);return m};m.oa=function(b){return m(b)};P.ac=n;R=function(b,a, e){if("string"!==typeof b)throw Error("See almond README: incorrect module build, no module name");a.splice||(e=a,a=[]);y.call(n,b)||y.call(r,b)||(r[b]=[b,a,e])};R.m={ec:!0}})(void 0);R("bin/almond",function(){});R("text",{load:function(a){throw Error("Dynamic load not allowed: "+a);}});R("text!lib/jscc/template/parser-driver-js.txt",[],function(){return'/*\r\n\tThis is the general, platform-independent part of every parser driver;\r\n\tInput-/Output and Feature-Functions are done by the particular drivers\r\n\tcreated for the particular platform.\r\n*/\r\n##HEADER##\r\nvar __parse\x3d(function(/** number */ eof, /** number */ whitespace, /** number */ error_token){\r\n\t\r\n/// there was "continue" in code, we must to replace it\r\nvar Continue \x3d function(){throw Continue;};\r\n\r\n\t/**\r\n\t * @template T\r\n\t * @param {T} value\r\n\t * @constructor\r\n\t * @extends {Error}\r\n */\r\n\tvar ReturnValue \x3d function(value) {\r\n\t\tError.call(this);\r\n\t\tthis._value \x3d value;\r\n\t};\r\n\tReturnValue.prototype \x3d Object.create(Error.prototype);\r\n\tReturnValue.prototype.constructor \x3d ReturnValue;\r\n\t/**\r\n\t * @type {T}\r\n\t * @private\r\n */\r\n\tReturnValue.prototype._value \x3d null;\r\n\t/**\r\n\t * @returns {T}\r\n */\r\n\tReturnValue.prototype.valueOf \x3d function() {\r\n\t\treturn this._value;\r\n\t};\r\n\r\n\t///can return value from any place of callback\r\n\tfunction Return(value){\r\n\t\tthrow new ReturnValue(value);\r\n\t}\r\n\r\n\tvar TERMINAL_ACTIONS \x3d (function(){\r\n\t\tfunction emptyFn(PCB){return PCB.att;}\r\n\t\tvar actions \x3d ##TERMINAL_ACTIONS##\r\n\t\treturn function(/** @type {!PcbClass} */ PCB, match){\r\n\t\t\ttry{\r\n\t\t\t\treturn (actions[match] || emptyFn)(PCB);\r\n\t\t\t}catch(e){\r\n\t\t\t\tif(e instanceof ReturnValue)return e.valueOf();\r\n\t\t\t\tif(e \x3d\x3d Continue)return Continue;\r\n\t\t\t\tthrow e;\r\n\t\t\t}\r\n\t\t}\r\n\t})();\r\n\t/**\r\n\t * @constructor\r\n */\r\n\tvar DfaLex \x3d function() {\r\n\t\tthis._dfaData \x3d ##DFA##;\r\n\t};\r\n\t/**\r\n\t * @type {!Array\x3c!{line: !Array, accept: !number}\x3e}\r\n\t * @private\r\n */\r\n\tDfaLex.prototype._dfaData \x3d [];\r\n\t/**\r\n\t * @type {number}\r\n */\r\n\tDfaLex.prototype.match_pos \x3d 0;\r\n\t/**\r\n\t * @type {?number}\r\n */\r\n\tDfaLex.prototype.state \x3d 0;\r\n\t/**\r\n\t * @type {?number}\r\n */\r\n\tDfaLex.prototype.match \x3d null;\r\n\t/**\r\n\t * @param {number} chr\r\n\t * @param {number} pos\r\n */\r\n\tDfaLex.prototype.exec \x3d function(chr, pos) {\r\n\t\tif (this.state !\x3d\x3d null) {\r\n\t\t if ((typeof this.state !\x3d\x3d "number") || this.state \x3e\x3d this._dfaData.length) {\r\n\t\t this.state \x3d null;\r\n\t\t throw new Error("Invalid value for DfaLex.state at chr " + chr + " and pos " + pos);\r\n\t\t }\r\n\t\t\tvar line \x3d this._dfaData[this.state].line;\r\n\t\t\tif (typeof line \x3d\x3d\x3d "undefined" || line \x3d\x3d\x3d null) {\r\n\t\t\t var badState \x3d this.state;\r\n\t\t\t this.state \x3d null;\r\n\t\t\t throw new Error("At chr " + chr + " and pos " + pos +\r\n\t\t\t ", DfaLex._dfaData[" + badState +\r\n\t\t\t "] appears to exist, but its line property is " +\r\n\t\t\t (typeof line \x3d\x3d\x3d "undefined" ? "undefined." : "null."));\r\n\t\t\t}\r\n\t\t\tvar p, st;\r\n\t\t\tfor (p \x3d 1 \x3c\x3c 8, st \x3d line; p; p \x3e\x3e\x3d 1) {\r\n\t\t\t\tif ((chr \x26 p) !\x3d\x3d 0) {\r\n\t\t\t\t\tst \x3d st[1];\r\n\t\t\t\t} else {\r\n\t\t\t\t\tst \x3d st[0];\r\n\t\t\t\t}\r\n\t\t\t\tif (typeof st \x3d\x3d\x3d "undefined") {\r\n\t\t\t\t st \x3d null;\r\n\t\t\t\t}\r\n\t\t\t\tif (st \x3d\x3d\x3d null)break;\r\n\t\t\t\tif (Array.isArray(st))continue;\r\n\t\t\t\tbreak;\r\n\t\t\t}\r\n\t\t\tvar ac \x3d this._dfaData[this.state].accept;\r\n\t\t\tthis.state \x3d /** @type {?number} */ (st);\r\n\t\t\tif (ac !\x3d\x3d -1) {\r\n\t\t\t\tthis.match \x3d /** @type{number} */ (ac);\r\n\t\t\t\tthis.match_pos \x3d pos;\r\n\t\t\t}\r\n\t\t}\r\n\t};\r\n##TABLES##\r\n##LABELS##\r\n\tvar ACTIONS \x3d (function(){\r\n\t\tvar PCB \x3d {};\r\n\t\tvar actions \x3d ##ACTIONS##;\r\n\t\treturn function (/** number */ act, /** Array\x3c*\x3e */ vstack, /** !PcbClass */ pcb){\r\n\t\t\ttry{\r\n\t\t\t\tPCB \x3d pcb;\r\n\t\t\t\treturn actions[act].apply(null,vstack);\r\n\t\t\t}catch(e){\r\n\t\t\t\tif(e instanceof ReturnValue)return e.valueOf();\r\n\t\t\t\tthrow e;\r\n\t\t\t}\r\n\t\t}\r\n\t})();\r\n\r\n\t/**\r\n\t * @param {number} top\r\n\t * @param {?number} la\r\n\t * @returns {?number}\r\n */\r\n\tfunction get_act(top, la){\t\r\n\t\tfor(var i \x3d 0; i \x3c act_tab[top].length; i+\x3d2)\r\n\t\t\tif(act_tab[top][i] \x3d\x3d\x3d la)\r\n\t\t\t\treturn act_tab[top][i+1];\r\n\t\treturn null;\r\n\t}\r\n\tfunction get_goto(top, pop){\t\r\n\t\tfor(var i \x3d 0; i \x3c goto_tab[top].length; i+\x3d2)\r\n\t\t\tif(goto_tab[top][i] \x3d\x3d\x3d pop)\r\n\t\t\t\treturn goto_tab[top][i+1];\r\n\t\treturn null;\r\n\t}\r\n\r\n\t/**\r\n\t * @param {!string} src\r\n\t * @constructor\r\n */\r\n\tvar PcbClass \x3d function(src) {\r\n\t\tthis.src \x3d src;\r\n\t};\r\n\t/**\r\n\t * @type {number}\r\n */\r\n\tPcbClass.prototype.line \x3d 1;\r\n\t/**\r\n\t * @type {number}\r\n */\r\n\tPcbClass.prototype.column \x3d 1;\r\n\t/**\r\n\t * @type {number}\r\n */\r\n\tPcbClass.prototype.offset \x3d 0;\r\n\t/**\r\n\t * @type {number}\r\n */\r\n\tPcbClass.prototype.error_step \x3d 0;\r\n\t/**\r\n\t * @type {string}\r\n */\r\n\tPcbClass.prototype.src \x3d "";\r\n\t/**\r\n\t * @type {string}\r\n */\r\n\tPcbClass.prototype.att \x3d "";\r\n\t/**\r\n\t * @type {?number}\r\n */\r\n\tPcbClass.prototype.la \x3d null;\r\n\t/**\r\n\t * @type {?number}\r\n */\r\n\tPcbClass.prototype.act \x3d null;\r\n\t/**\r\n\t * @returns {?number}\r\n */\r\n\tPcbClass.prototype.lex \x3d function() {\r\n var /** number */ start, /** number */ pos, /** number */ chr, actionResult;\r\n\t\tvar dfa \x3d new DfaLex();\r\n\t\tvar loop \x3d true;\r\n\t\twhile(loop){\r\n\t\t\tdfa.match_pos \x3d 0;\r\n\t\t\tpos \x3d this.offset + 1;\r\n\t\t\tdo{\r\n\t\t\t\tpos--;\r\n\t\t\t\tdfa.state \x3d 0;\r\n\t\t\t\tdfa.match \x3d null;\r\n\t\t\t\tstart \x3d pos;\r\n\t\t\t\tif(this.src.length \x3c\x3d start) {\r\n\t\t\t\t\tthis.la \x3d eof;\r\n\t\t\t\t\treturn eof;\r\n\t\t\t\t}\r\n\t\t\t\tdo{\r\n\t\t\t\t\tchr \x3d this.src.charCodeAt(pos);\r\n\t\t\t\t\tdfa.exec(chr,pos);\r\n\t\t\t\t\tif(dfa.state !\x3d\x3d null)\r\n\t\t\t\t\t\tthis.accountChar(chr);\r\n\t\t\t\t\tpos++;\r\n\t\t\t\t}while(dfa.state !\x3d\x3d null);\r\n\t\t\t}while(whitespace \x3e -1 \x26\x26 dfa.match \x3d\x3d\x3d whitespace);\r\n\t\t\tif(dfa.match !\x3d\x3d null){\r\n\t\t\t\tthis.att \x3d this.src.slice(start, dfa.match_pos);\r\n\t\t\t\tthis.offset \x3d dfa.match_pos;\r\n\t\t\t\tactionResult \x3d TERMINAL_ACTIONS(this,dfa.match);\r\n\t\t\t\tif(dfa.state !\x3d\x3d null)\r\n\t\t\t\t\tthis.accountChar(chr);\r\n\t\t\t\tif(actionResult \x3d\x3d\x3d Continue)\r\n\t\t\t\t\tcontinue;\r\n\t\t\t\tthis.att \x3d actionResult;\r\n\t\t\t}else {\r\n\t\t\t\tthis.att \x3d "";\r\n\t\t\t}\r\n\t\t\tloop \x3d false;\r\n\t\t}\r\n\t\tthis.la \x3d dfa.match;\r\n\t\treturn this.la;\r\n\t};\r\n\t/**\r\n\t * @param {number} chr\r\n */\r\n PcbClass.prototype.accountChar \x3d function(chr) {\r\n\t\tif( chr \x3d\x3d\x3d 10 ){\r\n\t\t\tthis.line++;\r\n\t\t\tthis.column \x3d 0;\r\n\t\t}\r\n\t\tthis.column++;\r\n\t};\r\n\tfunction parse(/** string */ src, err_off, err_la){\r\n\t\t/**\r\n\t\t * @type {!Array\x3cnumber\x3e}\r\n */\r\n\t\tvar\t\tsstack\t\t\t\x3d [0];\r\n\t\t/**\r\n\t\t * @type {!Array\x3c*\x3e}\r\n */\r\n\t\tvar\t\tvstack\t\t\t\x3d [0];\r\n\t\t/**\r\n\t\t * @type {number}\r\n */\r\n\t\tvar \terr_cnt\t\t\t\x3d 0;\r\n\t\t/**\r\n\t\t * @type {*}\r\n\t\t */\r\n\t\tvar\t\trval;\r\n\t\t/**\r\n\t\t * @type {?number}\r\n\t\t */\r\n\t\tvar\t\tact;\r\n\t\t/**\r\n\t\t * @type {number}\r\n\t\t */\r\n\t\tvar i \x3d 0;\r\n\r\n\t\tvar PCB\t\x3d new PcbClass(src);\r\n\t\terr_off\t\x3d err_off || [];\r\n\t\terr_la \x3d err_la || [];\r\n\t\tPCB.lex();\r\n\t\twhile(true){\r\n\t\t\tPCB.act \x3d get_act(sstack[0],PCB.la);\r\n\t\t\tif(PCB.act \x3d\x3d\x3d null \x26\x26 defact_tab[sstack[0]] \x3e\x3d 0)\r\n\t\t\t\tPCB.act \x3d -defact_tab[sstack[0]];\r\n\t\t\tif(PCB.act \x3d\x3d\x3d null){//Parse error? Try to recover!\r\n\t\t\t\t//Report errors only when error_step is 0, and this is not a\r\n\t\t\t\t//subsequent error from a previous parse\r\n\t\t\t\tif(PCB.error_step \x3d\x3d\x3d 0){\r\n\t\t\t\t\terr_cnt++;\r\n\t\t\t\t\terr_off.unshift(PCB.offset - PCB.att.length);\r\n\t\t\t\t\terr_la.unshift([]);\r\n\t\t\t\t\tfor(i \x3d 0; i \x3c act_tab[sstack[0]].length; i+\x3d2)\r\n\t\t\t\t\t\terr_la[0].push(labels[act_tab[sstack[0]][i]]);\r\n\t\t\t\t}\r\n\t\t\t\t//Perform error recovery\t\t\t\r\n\t\t\t\twhile(sstack.length \x3e 1 \x26\x26 PCB.act \x3d\x3d\x3d null){\r\n\t\t\t\t\tsstack.shift();\r\n\t\t\t\t\tvstack.shift();\r\n\t\t\t\t\t//Try to shift on error token\r\n\t\t\t\t\tPCB.act \x3d get_act(sstack[0],PCB.la);\r\n\t\t\t\t\tif(PCB.act \x3d\x3d\x3d error_token){\r\n\t\t\t\t\t\tsstack.unshift(PCB.act);\r\n\t\t\t\t\t\tvstack.unshift("");\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t\t//Is it better to leave the parser now?\r\n\t\t\t\tif(sstack.length \x3e 1 \x26\x26 PCB.act !\x3d\x3d null){\r\n\t\t\t\t\t//Ok, now try to shift on the next tokens\r\n\t\t\t\t\twhile(PCB.la !\x3d\x3d eof){\r\n\t\t\t\t\t\tPCB.act \x3d act_tab[sstack[0]][i+1];\r\n\t\t\t\t\t\tif(PCB.act !\x3d null)break;\r\n\t\t\t\t\t\twhile(PCB.lex() !\x3d null)PCB.offset++;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t\tif(PCB.act \x3d\x3d\x3d null || PCB.la \x3d\x3d\x3d eof){\r\n\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\t\t\t\t//Try to parse the next three tokens successfully...\r\n\t\t\t\tPCB.error_step \x3d 3;\r\n\t\t\t}\r\n\t\t\tif(PCB.act \x3e 0){//Shift\r\n\t\t\t\t//Parse tree generation\r\n\t\t\t\tsstack.unshift(PCB.act);\r\n\t\t\t\tvstack.unshift(PCB.att);\r\n\t\t\t\tPCB.lex();\r\n\t\t\t\t//Successfull shift and right beyond error recovery?\r\n\t\t\t\tif(PCB.error_step \x3e 0)\r\n\t\t\t\t\tPCB.error_step--;\r\n\t\t\t}else{\t//Reduce\t\r\n\t\t\t\tact \x3d -PCB.act;\r\n\t\t\t\t//vstack.unshift(vstack);\r\n\t\t\t\trval \x3d ACTIONS(act,vstack,PCB);\r\n\t\t\t\t//vstack.shift();\r\n\t\t\t\tsstack.splice(0,pop_tab[act][1]);\r\n\t\t\t\tvstack.splice(0,pop_tab[act][1]);\r\n\t\t\t\t\r\n\t\t\t\tPCB.act \x3d get_goto(sstack[0],pop_tab[act][0]);\r\n\t\t\t\t//Do some parse tree construction if desired\r\n\t\t\t\t//Goal symbol match?\r\n\t\t\t\tif(act \x3d\x3d\x3d 0) break; //Don\'t use PCB.act here!\r\n\t\t\t\r\n\t\t\t\t//...and push it!\r\n\t\t\t\tsstack.unshift(PCB.act);\r\n\t\t\t\tvstack.unshift(rval);\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn err_cnt;\r\n\t}\r\n\treturn parse;\r\n})(##EOF##,##WHITESPACE##,##ERROR_TOKEN##);\r\n\r\n##FOOTER##\r\n'}); function S(){var a;a=Java.type("java.util.BitSet");k.la=function(){this.sa=new a};k.la.prototype.sa=null;k.la.prototype.set=function(a,b){b=b&&!0||!1;this.sa.set(a,b);return b};k.la.prototype.get=function(a){return this.sa.get(a)};k.la.prototype.count=function(){return this.sa.cardinality()};return k.la}"function"===typeof R&&R.m?R("lib/jscc/bitset/BitSetJava",S):"object"===typeof module&&module.exports?module.exports=S():S();function ba(){return z} "function"===typeof R&&R.m?R("lib/jscc/enums/EDGE",ba):"object"===typeof module&&module.exports&&(module.exports=z); (function(a,c){"function"===typeof R&&R.m?R("lib/jscc/classes/Nfa",["require","../enums/EDGE","../bitset"],c):"object"===typeof module&&module.exports?module.exports=c(Q):a.gc=c(function(b){return a["jscc"+b.split("/").pop()]})})(this,function(a){var c,b=a("../enums/EDGE");c=a("../bitset");k.classes.aa=function(a){a=a||{};if(a.J===b.da||a.J===b.ya)this.J=a.J;"object"===typeof a.C&&a.C.hasOwnProperty("get")&&a.C.hasOwnProperty("set")&&a.C.hasOwnProperty("count")?this.C=a.C:this.C=new c;"number"=== typeof a.s&&(this.s=a.s);"number"===typeof a.D&&(this.D=a.D);"number"===typeof a.accept&&(this.accept=a.accept);"number"===typeof a.weight&&(this.weight=a.weight)};k.classes.aa.prototype.J=b.EPSILON;k.classes.aa.prototype.C=new c;k.classes.aa.prototype.s=-1;k.classes.aa.prototype.D=-1;k.classes.aa.prototype.accept=-1;k.classes.aa.prototype.weight=-1;return k.classes.aa}); (function(a,c){"function"===typeof R&&R.m?R("lib/jscc/nfaStates",["require","./bitset","./enums/EDGE","./classes/Nfa"],c):"object"===typeof module&&module.exports?module.exports=c(Q):a.rc=c(function(b){return a["jscc"+b.split("/").pop()]})})(this,function(a){var c,b=a("./enums/EDGE"),f=a("./classes/Nfa");c=a("./bitset");k.Aa=function(){};k.Aa.prototype.value=[];k.Aa.prototype.create=function(){var a,g;for(g=0;g<this.value.length&&this.value[g].J!==b.ya;g++);g==this.value.length?(a=new f,this.value.push(a)): a=this.value[g];a.J=b.EPSILON;a.C=new c;a.accept=-1;a.s=-1;a.D=-1;a.weight=-1;return g};return k.Aa});function ca(){return O}"function"===typeof R&&R.m?R("lib/jscc/enums/SYM",ca):"object"===typeof module&&module.exports&&(module.exports=O);function da(){return p}"function"===typeof R&&R.m?R("lib/jscc/enums/ASSOC",da):"object"===typeof module&&module.exports&&(module.exports=p);function ea(){return N} "function"===typeof R&&R.m?R("lib/jscc/enums/SPECIAL",ea):"object"===typeof module&&module.exports&&(module.exports=N); (function(a,c){"function"===typeof R&&R.m?R("lib/jscc/classes/Symbol",["require","../enums/SYM","../enums/ASSOC","../enums/SPECIAL"],c):"object"===typeof module&&module.exports?module.exports=c(Q):a.hc=c(function(b){return a["jscc"+b.split("/").pop()]})})(this,function(a){var c=a("../enums/SYM"),b=a("../enums/ASSOC"),f=a("../enums/SPECIAL");k.classes.Symbol=function(a){a=a||{};"number"===typeof a.id&&(this.id=a.id);a.kind===c.A&&(this.kind=a.kind);"string"===typeof a.label&&(this.label=a.label);Array.isArray(a.w)&& (this.w=a.w);Array.isArray(a.first)&&(this.first=a.first);if(a.Y===b.za||a.Y===b.Oa||a.Y===b.Ba)this.Y=a.Y;"number"===typeof a.level&&(this.level=a.level);"string"===typeof a.code&&(this.code=a.code);if(a.M===f.xa||a.M===f.ERROR||a.M===f.Pa)this.M=a.M;"boolean"===typeof a.ca&&(this.ca=a.ca);"boolean"===typeof a.Z&&(this.Z=a.Z)};k.classes.Symbol.prototype.id=-1;k.classes.Symbol.prototype.kind=c.I;k.classes.Symbol.prototype.label="";k.classes.Symbol.prototype.w=[];k.classes.Symbol.prototype.first=[]; k.classes.Symbol.prototype.Y=b.NONE;k.classes.Symbol.prototype.level=0;k.classes.Symbol.prototype.code="";k.classes.Symbol.prototype.M=f.NONE;k.classes.Symbol.prototype.ca=!1;k.classes.Symbol.prototype.Z=!1;return k.classes.Symbol}); function T(){k.classes.ga=function(a){a=a||{};"number"===typeof a.id&&(this.id=a.id);"number"===typeof a.V&&(this.V=a.V);"undefined"!==typeof a.h&&Array.isArray(a.h)&&(this.h=a.h);"number"===typeof a.level&&(this.level=a.level);"string"===typeof a.code&&(this.code=a.code)};k.classes.ga.prototype.id=-1;k.classes.ga.prototype.V=-1;k.classes.ga.prototype.h=[];k.classes.ga.prototype.level=0;k.classes.ga.prototype.code="";return k.classes.ga} "function"===typeof R&&R.m?R("lib/jscc/classes/Production",T):"object"===typeof module&&module.exports?module.exports=T():T();function fa(){return K}"function"===typeof R&&R.m?R("lib/jscc/enums/EXEC",fa):"object"===typeof module&&module.exports&&(module.exports=K); (function(a,c){"function"===typeof R&&R.m?R("lib/jscc/global","require text!./template/parser-driver-js.txt ./nfaStates ./classes/Symbol ./classes/Production ./enums/SYM ./enums/SPECIAL ./enums/EXEC".split(" "),c):"object"===typeof module&&module.exports?module.exports=c(Q):a.kc=c(function(b){b=b.split("/");b=b[b.length-1];return/js\.txt$/.test(b)?a.fc:a["jscc"+b]})})(this,function(a){var c,b=a("./nfaStates"),f=a("./classes/Symbol"),h=a("./classes/Production"),g=a("./enums/SYM"),l=a("./enums/SPECIAL"); a("./enums/EXEC");c=a("text!./template/parser-driver-js.txt");k.global=function(){this.f=new b;var a=new f;a.kind=g.I;a.M=l.NONE;a.label="";a.id=0;a.Z=!0;var d=new f;d.kind=g.A;d.M=l.ERROR;d.label="ERROR_RESYNC";d.id=1;d.Z=!0;this.a=[a,d];a=new h;a.V=0;a.h=[];a.code="%% \x3d %1;";this.a[0].w.push(0);this.g=[a];this.qa=-1;this.file="";this.gb=this.Ja=this.Ka=this.La=this.wa=this.L=0;this.ta=this.ua="";this.Ma=c;this.jb="%% \x3d %1;";this.fa=0;this.$=255};k.global.prototype.a=[];k.global.prototype.g= [];k.global.prototype.c=[];k.global.prototype.f=null;k.global.prototype.pa=[];k.global.prototype.qa=-1;k.global.prototype.ua="";k.global.prototype.ta="";k.global.prototype.file="";k.global.prototype.L=0;k.global.prototype.wa=0;k.global.prototype.La=0;k.global.prototype.Ka=0;k.global.prototype.Ja=0;k.global.prototype.ia=1;k.global.prototype.gb=0;k.global.prototype.Xb=null;k.global.prototype.eb=null;k.global.prototype.fb=null;return new k.global});function ga(){return L} "function"===typeof R&&R.m?R("lib/jscc/enums/LOG_LEVEL",ga):"object"===typeof module&&module.exports&&(module.exports=L); (function(a,c){"function"===typeof R&&R.m?R("lib/jscc/log/logJava",["require","../global","../enums/LOG_LEVEL"],c):"object"===typeof module&&module.exports?module.exports=c(Q):a.pc=c(function(b){return a["jscc"+b.split("/").pop()]})})(this,function(a){function c(){b=b||a("../global")}var b=a("../global"),f=a("../enums/LOG_LEVEL"),h,g,l,e,d,m,w=Java.type("java.util.logging.Level");g=w.SEVERE;l=w.WARNING;e=w.INFO;d=w.FINE;m=w.FINER;h=Java.type("java.util.logging.ConsoleHandler");k.P=function(){this.S= Java.type("java.util.logging.Logger").getLogger("jscc");var b=new h;b.setLevel(m);this.S.addHandler(b)};k.P.prototype.S=null;k.P.prototype.ha=function(b,a){this.S["log(java.util.logging.Level, java.lang.String)"](b,a)};k.P.prototype.fatal=function(a){c();this.ha(g,a);b.L++};k.P.prototype.error=function(a){c();this.ha(g,a);b.L++};k.P.prototype.warn=function(a){c();this.ha(l,a);b.wa++};k.P.prototype.info=function(b){this.ha(e,b)};k.P.prototype.debug=function(b){this.ha(d,b)};k.P.prototype.trace=function(b){this.ha(m, b)};k.P.prototype.setLevel=function(b){switch(b){case f.kb:case f.ERROR:this.S.setLevel(g);break;case f.Ea:this.S.setLevel(l);break;case f.INFO:this.S.setLevel(e);break;case f.ib:this.S.setLevel(d);break;case f.mb:this.S.setLevel(m);break;default:this.S.setLevel(l)}};return new k.P}); (function(a,c){"function"===typeof R&&R.m?R("lib/jscc/io/ioNashorn",["require","../global","../log/log"],c):"object"===typeof module&&module.exports?module.exports=c(Q):a.mc=c(function(b){return a["jscc"+b.split("/").pop()]})})(this,function(a){var c=a("../global"),b=a("../log/log"),f=Java.type("java.lang.System"),h=Java.type("java.io.File"),g=Java.type("java.io.FileReader"),l=Java.type("java.io.InputStreamReader"),e=Java.type("java.io.BufferedReader"),d=Java.type("java.io.FileWriter"),m=Java.type("java.io.BufferedWriter"), w=Java.type("java.io.PrintWriter"),q=Java.type("java.lang.StringBuilder");k.U=function(){};k.U.prototype.Qa=function(b){"number"!==typeof b&&(b=0);exit(b)};k.U.prototype.Ra=function(a){var c=new q,d=new h(a);if(d.exists()&&d.isFile()&&d.canRead()){var d=new g(d),t=new e(d);try{for(var m=t.readLine();null!==m&&"undefined"!==typeof m;)c.append(m),c.append(f.lineSeparator()),m=t.readLine()}catch(l){b.fatal("unable to open file '"+a+"'"),b.fatal("exception message was: '"+l.message+"'"),this.Qa(1)}finally{t.close(), d.close()}}else b.fatal("unable to open file '"+a+"'"),this.Qa(2);return c.toString()};k.U.prototype.nb=function(a,e){var c=new d(a),t=new m(c),g=new w(t);try{g.write(e)}catch(f){b.error("unable to write '"+a+"'"),b.error("exception message was: '"+f.message+"'")}finally{g.close(),t.close(),c.close()}};k.U.prototype.Mb=function(b){function a(){}function c(){}var d="",m=!1;b&&("string"===typeof b?d=b:"function"===typeof b?(c=b,m=!0):"object"===typeof b&&("string"===typeof b.filename&&(d=b.filename), "function"===typeof b.Ga&&(c=b.Ga,m=!0),"function"===typeof b.Ha&&(a=b.Ha,m=!0)));if(""!=d&&!m)return this.Ra(d);if(""==d&&!m){b=new q;d=new e(new l(f.in));try{for(var h=d.readLine();h;)b.append(h),b.append(f.lineSeparator()),h=d.readLine()}finally{d.close()}return b.toString()}h=""==d?new l(f.in):new g(d);d=new e(h);try{d.lines().forEachOrdered(c),a()}finally{d.close()}};k.U.prototype.Nb=function(b){function a(){}function d(){}var m=c.Ma,f=!1;b&&("string"===typeof b?m=b:"function"===typeof b?d=b: "object"===typeof b&&("string"===typeof b.filename&&(m=b.filename),"function"===typeof b.Ga&&(d=b.Ga,f=!0),"function"===typeof b.Ha&&(a=b.Ha)));if(!f)return this.Ra(m);b=new g(m);b=new e(b);try{b.lines().forEachOrdered(d),a()}finally{b.close()}};k.U.prototype.hb=function(b){function a(){}var e="",d="",c=!1;b&&"string"===typeof b?e=b:b&&"object"===typeof b&&("string"===typeof b.text&&(e=b.text),"string"===typeof b.destination&&(d=b.destination),"function"===typeof b.Ta&&(a=b.Ta,c=!0));if(""==d||c)if(""!= d||c){b=""==d?new w(f.out):new w(d);try{b.print(e),a()}finally{b.close()}}else f.out.print(e);else this.nb(d,e)};k.U.prototype.Wb=function(b){f.out.print(b)};k.U.prototype.exit=function(b){"number"!==typeof b&&(b=0);f.exit(b)};return new k.U}); (function(a,c){"function"===typeof R&&R.m?R("lib/jscc/util",["require","./enums/LOG_LEVEL"],c):"object"===typeof module&&module.exports?module.exports=c(Q):a.wc=c(function(b){return a["jscc"+b.split("/").pop()]})})(this,function(a){var c=a("./enums/LOG_LEVEL");k.util=function(){};k.util.prototype={va:function(b,a){var c,g;for(c=0;c<a.length;c++){for(g=0;g<b.length&&a[c]!=b[g];g++);g==b.length&&b.push(a[c])}return b},Db:function(b){switch((b||"").trim().toUpperCase()){case "FATAL":return c.kb;case "ERROR":return c.ERROR; case "WARN":return c.Ea;case "INFO":return c.INFO;case "DEBUG":return c.ib;case "TRACE":return c.mb;default:return c.Ea}}};return new k.util}); (function(a,c){"function"===typeof R&&R.m?R("lib/jscc/first",["require","./global","./util","./enums/SYM"],c):"object"===typeof module&&module.exports?module.exports=c(Q):a.jc=c(function(b){return a["jscc"+b.split("/").pop()]})})(this,function(a){var c=a("./global"),b=a("./util"),f=a("./enums/SYM");k.first=function(){};k.first.prototype.first=function(){var a=0,g,l;do{g=a;for(var e=a=0;e<c.a.length;e++)if(c.a[e].kind==f.I)for(var d=0;d<c.a[e].w.length;d++){l=!1;for(var m=0;m<c.g[c.a[e].w[d]].h.length&& (c.a[e].first=b.va(c.a[e].first,c.a[c.g[c.a[e].w[d]].h[m]].first),l=c.a[c.g[c.a[e].w[d]].h[m]].ca,l);m++);a+=c.a[e].first.length;m==c.g[c.a[e].w[d]].h.length&&(l=!0);l&&(c.a[e].ca=!0)}}while(a!=g)};k.first.prototype.Qb=function(a,g,f){for(;f<g.h.length;f++)if(a.l=b.va(a.l,c.a[g.h[f]].first),!c.a[g.h[f]].ca)return!1;return!0};return new k.first}); function U(){k.classes.X=function(a){a=a||{};Array.isArray(a.v)&&(this.v=a.v);Array.isArray(a.N)&&(this.N=a.N);"number"===typeof a.K&&(this.K=a.K);"boolean"===typeof a.done&&(this.done=a.done);"boolean"===typeof a.closed&&(this.closed=a.closed);Array.isArray(a.u)&&(this.u=a.u);Array.isArray(a.O)&&(this.O=a.O)};k.classes.X.prototype.v=[];k.classes.X.prototype.N=[];k.classes.X.prototype.K=0;k.classes.X.prototype.done=!1;k.classes.X.prototype.closed=!1;k.classes.X.prototype.u=[];k.classes.X.prototype.O= [];return k.classes.X}"function"===typeof R&&R.m?R("lib/jscc/classes/State",U):"object"===typeof module&&module.exports?module.exports=U():U();function V(){k.classes.ra=function(a){a=a||{};"number"===typeof a.i&&(this.i=a.i);"number"===typeof a.o&&(this.o=a.o);"undefined"!==typeof a.l&&Array.isArray(a.l)&&(this.l=a.l)};k.classes.ra.prototype.i=-1;k.classes.ra.prototype.o=0;k.classes.ra.prototype.l=[];return k.classes.ra} "function"===typeof R&&R.m?R("lib/jscc/classes/Item",V):"object"===typeof module&&module.exports?module.exports=V():V();function W(){k.classes.Da=function(a,c){this.symbol=a;this.action=c};k.classes.Da.prototype.symbol=-1;k.classes.Da.prototype.action=-1;return k.classes.Da}"function"===typeof R&&R.m?R("lib/jscc/classes/TableEntry",W):"object"===typeof module&&module.exports?module.exports=W():W();function ha(){return M} "function"===typeof R&&R.m?R("lib/jscc/enums/MODE_GEN",ha):"object"===typeof module&&module.exports&&(module.exports=M); (function(a,c){"function"===typeof R&&R.m?R("lib/jscc/debug","require ./global ./io/io ./enums/MODE_GEN ./enums/SYM ./enums/ASSOC".split(" "),c):"object"===typeof module&&module.exports?module.exports=c(Q):a.ic=c(function(b){return a["jscc"+b.split("/").pop()]})})(this,function(a){a("./global");a("./enums/MODE_GEN");a("./enums/SYM");a("./enums/ASSOC");a("./io/io");k.debug=function(){};k.debug.prototype={};return new k.debug}); (function(a,c){"function"===typeof R&&R.m?R("lib/jscc/tabgen","require ./global ./first ./util ./log/log ./classes/State ./classes/Item ./classes/TableEntry ./classes/Symbol ./enums/SPECIAL ./enums/ASSOC ./enums/SYM ./enums/MODE_GEN ./enums/EXEC ./debug".split(" "),c):"object"===typeof module&&module.exports?module.exports=c(Q):a.vc=c(function(b){return a["jscc"+b.split("/").pop()]})})(this,function(a){var c,b=a("./global"),f=a("./first"),h=a("./util");c=a("./log/log");var g=a("./classes/State"), l=a("./classes/Item"),e=a("./classes/TableEntry"),d=a("./classes/Symbol"),m=a("./enums/SPECIAL"),w=a("./enums/ASSOC"),q=a("./enums/SYM");a("./enums/EXEC");a("./enums/MODE_GEN");a("./debug");k.F=function(){};k.F.prototype.Wa=function(){var a=new g({v:[],N:[],u:[],O:[],done:!1,closed:!1,K:0});b.c.push(a);return a};k.F.prototype.Va=function(b){return new l({i:b,o:0,l:[]})};k.F.prototype.Fa=function(b,a,d){for(var c=0;c<b.length;c++)if(b[c].symbol==a)return b;b.push(new e(a,d));return b};k.F.prototype.Vb= function(b,a,e){var d;for(d=0;d<b.length;d++)if(b[d].symbol==a){b[d].action=e;break}};k.F.prototype.Ob=function(b,a){for(var e=0;e<b.length;e++)if(b[e].symbol==a){b.splice(e,1);break}};k.F.prototype.Ia=function(b,a){for(var e=0;e<b.length;e++)if(b[e].symbol==a)return b[e].action};k.F.prototype.xb=function(){for(var a=0;a<b.c.length;a++)if(0==b.c[a].done)return a;return-1};k.F.prototype.Sb=function(b,a){return b.i-a.i};k.F.prototype.ka=function(a,e,d){d||(d=m.NONE);for(var c=0;c<b.a.length;c++)if(b.a[c].label.toString()== a.toString()&&b.a[c].kind==e&&b.a[c].M==d)return c;return-1};k.F.prototype.ja=function(a,e,c){var m;if(-1<(m=this.ka(a,e,c)))return b.a[m].id;a=new d({label:a,kind:e,w:[],ca:!1,id:b.a.length,code:"",Y:w.NONE,level:0,M:c,Z:!1,first:[]});e==q.A&&a.first.push(a.id);b.a.push(a);return a.id};k.F.prototype.zb=function(b,a){var e,d,c=0;if(b.length!=a.length)return!1;for(e=0;e<b.length;e++)for(d=0;d<a.length;d++)if(b[e].i==a[d].i&&b[e].o==a[d].o){c++;break}return c==b.length};k.F.prototype.pb=function(a, e){var d,c,m,g=0,l;for(d=0;d<a.length;d++)if(a[d].o<b.g[a[d].i].h.length&&b.a[b.g[a[d].i].h[a[d].o]].kind==q.I)for(c=0;c<b.a[b.g[a[d].i].h[a[d].o]].w.length;c++){for(m=0;m<e.length&&e[m].i!=b.a[b.g[a[d].i].h[a[d].o]].w[c];m++);m==e.length&&(l=this.Va(b.a[b.g[a[d].i].h[a[d].o]].w[c]),e.push(l),g++);l=e[m].l.length;f.Qb(e[m],b.g[a[d].i],a[d].o+1)&&(e[m].l=h.va(e[m].l,a[d].l));g+=e[m].l.length-l}return g};k.F.prototype.Bb=function(a){var e=[],d,c,m,g,f;m=0;do d=m,m=this.pb(0==d?b.c[a].v:e,e);while(m!= d);for(g=0;g<b.c[a].v.length;g++)if(b.c[a].v[g].o<b.g[b.c[a].v[g].i].h.length)for(e.unshift(new l({i:b.c[a].v[g].i,o:b.c[a].v[g].o,l:[]})),f=0;f<b.c[a].v[g].l.length;f++)e[0].l[f]=b.c[a].v[g].l[f];for(g=0;g<e.length;g++)if(0==b.g[e[g].i].h.length){for(f=0;f<b.c[a].N.length&&(b.c[a].N[f].i!=e[g].i||b.c[a].N[f].o!=e[g].o);f++);f==b.c[a].N.length&&b.c[a].N.push(e[g]);e.splice(g,1)}for(;0<e.length;){c=[];d=[];m=-1;for(g=0;g<e.length;g++)0==c.length&&(m=b.g[e[g].i].h[e[g].o]),e[g].o<b.g[e[g].i].h.length&& (b.g[e[g].i].h[e[g].o]==m?(e[g].o++,c.push(e[g])):d.push(e[g]));if(0<c.length){c.sort(this.Sb);for(g=0;g<b.c.length&&!this.zb(b.c[g].v,c);g++);g==b.c.length&&(e=this.Wa(),e.v=c);for(f=m=e=0;f<c.length;f++)e+=b.c[g].v[f].l.length,b.c[g].v[f].l=h.va(b.c[g].v[f].l,c[f].l),m+=b.c[g].v[f].l.length;e!=m&&(b.c[g].done=!1);if(!b.c[a].closed)for(f=0;f<c.length;f++)c[f].o-1<b.g[c[f].i].h.length&&(b.a[b.g[c[f].i].h[c[f].o-1]].kind==q.A?(b.c[a].u=this.Fa(b.c[a].u,b.g[c[f].i].h[c[f].o-1],g),b.La++):(b.c[a].O= this.Fa(b.c[a].O,b.g[c[f].i].h[c[f].o-1],g),b.Ja++))}e=d}b.c[a].closed=!0};k.F.prototype.sb=function(a){var e,d,g,m,f,l,h,q=[],F=0;for(e=0;2>e;e++)for(h=e?b.c[a].N:b.c[a].v,d=0;d<h.length;d++)if(h[d].o==b.g[h[d].i].h.length)for(g=0;g<h[d].l.length;g++)if(l=!0,m=this.Ia(b.c[a].u,h[d].l[g]),void 0==m)f=-1*h[d].i,b.c[a].u=this.Fa(b.c[a].u,h[d].l[g],f),b.Ka++;else{f=m;var u;if(0<m){if(0<b.a[h[d].l[g]].level||0<b.g[h[d].i].level)b.a[h[d].l[g]].level==b.g[h[d].i].level?b.a[h[d].l[g]].Y==w.za?f=-1*h[d].i: b.a[h[d].l[g]].Y==w.Ba&&(this.Ob(b.c[a].u,h[d].l[g]),c.warn("Removing nonassociative symbol '"+b.a[h[d].l[g]].label+"' in state "+a),l=!1):b.a[h[d].l[g]].level<b.g[h[d].i].level&&(f=-1*h[d].i);u="Shift"}else f=-1*f<h[d].i?f:-1*h[d].i,u="Reduce";u+="-reduce conflict on symbol '"+b.a[h[d].l[g]].label+"' in state "+a;u+="\n Conflict resolved by "+(0>=f?"reducing with production":"shifting to state")+" "+(0>=f?-1*f:f);l&&c.warn(u);f!=m&&this.Vb(b.c[a].u,h[d].l[g],f)}b.c[a].K=-1;for(d=0;d<q.length;d++){for(e= g=0;g<q.length;g++)q[g]==q[d]&&e++;F<e&&(F=e,b.c[a].K=q[d])}if(0<=b.c[a].K){do for(e=b.c[a].u.length,d=0;d<b.c[a].u.length;d++)b.c[a].u[d][1]==-1*b.c[a].K&&b.c[a].u.splice(d,1);while(e!=b.c[a].u.length)}};k.F.prototype.Cb=function(){var a,e;a=this.Va(0);e=this.ja("$",q.A,m.xa);a.l.push(e);e=this.Wa();for(e.v.push(a);0<=(a=this.xb());)b.c[a].done=!0,this.Bb(a);for(a=0;a<b.c.length;a++)this.sb(a)};return new k.F}); (function(a,c){"function"===typeof R&&R.m?R("lib/jscc/printtab","require ./global ./tabgen ./log/log ./enums/MODE_GEN ./enums/SYM ./enums/SPECIAL".split(" "),c):"object"===typeof module&&module.exports?module.exports=c(Q):a.tc=c(function(b){return a["jscc"+b.split("/").pop()]})})(this,function(a){var c,b=a("./global"),f=a("./tabgen"),h=a("./enums/MODE_GEN"),g=a("./enums/SYM"),l=a("./enums/SPECIAL");c=a("./log/log");k.cb=function(){};k.cb.prototype={Jb:function(a){var d="",c,l=0,q;switch(a){case h.lb:case "html":d+= '\x3ctable class\x3d"print" cellpadding\x3d"0" cellspacing\x3d"0"\x3e\x3ctr\x3e\x3ctd class\x3d"tabtitle" colspan\x3d"2"\x3ePop-Table\x3c/td\x3e\x3c/tr\x3e\x3ctd class\x3d"coltitle" width\x3d"1%" style\x3d"border-right: 1px solid lightgray;"\x3eLeft-hand side\x3c/td\x3e\x3ctd class\x3d"coltitle"\x3eNumber of symbols to pop\x3c/td\x3e\x3c/tr\x3e';for(a=0;a<b.g.length;a++)d+="\x3ctr\x3e",d+='\x3ctd style\x3d"border-right: 1px solid lightgray;"\x3e'+b.g[a].V+"\x3c/td\x3e",d+="\x3ctd\x3e"+b.g[a].h.length+ "\x3c/td\x3e",d+="\x3c/tr\x3e";for(a=0;a<b.a.length;a++)b.a[a].kind==g.A&&l++;d=d+'\x3c/table\x3e\x3ctable class\x3d"print" cellpadding\x3d"0" cellspacing\x3d"0"\x3e\x3ctr\x3e'+('\x3ctd class\x3d"tabtitle" colspan\x3d"'+(l+1)+'"\x3eAction-Table\x3c/td\x3e')+'\x3c/tr\x3e\x3ctd class\x3d"coltitle" width\x3d"1%" style\x3d"border-right: 1px solid lightgray;"\x3eState\x3c/td\x3e';for(a=0;a<b.a.length;a++)b.a[a].kind==g.A&&(d+="\x3ctd\x3e\x3cb\x3e"+b.a[a].label+"\x3c/b\x3e\x3c/td\x3e");d+="\x3c/tr\x3e"; for(a=0;a<b.c.length;a++){d+="\x3ctr\x3e";d+='\x3ctd class\x3d"coltitle" style\x3d"border-right: 1px solid lightgray;"\x3e'+a+"\x3c/td\x3e";for(c=0;c<b.a.length;c++)b.a[c].kind==g.A&&(d+="\x3ctd\x3e",void 0!=(q=f.Ia(b.c[a].u,c))&&(d=0>=q?d+("r"+-1*q):d+("s"+q)),d+="\x3c/td\x3e");d+="\x3c/tr\x3e"}d+="\x3c/table\x3e";for(a=0;a<b.a.length;a++)b.a[a].kind==g.I&&l++;d+='\x3ctable class\x3d"print" cellpadding\x3d"0" cellspacing\x3d"0"\x3e';d+="\x3ctr\x3e";d=d+('\x3ctd class\x3d"tabtitle" colspan\x3d"'+ (l+1)+'"\x3eGoto-Table\x3c/td\x3e')+'\x3c/tr\x3e\x3ctd class\x3d"coltitle" width\x3d"1%" style\x3d"border-right: 1px solid lightgray;"\x3eState\x3c/td\x3e';for(a=0;a<b.a.length;a++)b.a[a].kind==g.I&&(d+="\x3ctd\x3e"+b.a[a].label+"\x3c/td\x3e");d+="\x3c/tr\x3e";for(a=0;a<b.c.length;a++){d+="\x3ctr\x3e";d+='\x3ctd class\x3d"coltitle" style\x3d"border-right: 1px solid lightgray;"\x3e'+a+"\x3c/td\x3e";for(c=0;c<b.a.length;c++)b.a[c].kind==g.I&&(d+="\x3ctd\x3e",void 0!=(q=f.Ia(b.c[a].O,c))&&(d+=q),d+= "\x3c/td\x3e");d+="\x3c/tr\x3e"}d+="\x3c/table\x3e";d+='\x3ctable class\x3d"print" cellpadding\x3d"0" cellspacing\x3d"0"\x3e';d+="\x3ctr\x3e";d+='\x3ctd class\x3d"tabtitle" colspan\x3d"2"\x3eDefault Actions Table\x3c/td\x3e';d+="\x3c/tr\x3e";d+='\x3ctd class\x3d"coltitle" width\x3d"1%" style\x3d"border-right: 1px solid lightgray;"\x3eLeft-hand side\x3c/td\x3e';d+='\x3ctd class\x3d"coltitle"\x3eNumber of symbols to pop\x3c/td\x3e';d+="\x3c/tr\x3e";for(a=0;a<b.c.length;a++)d+="\x3ctr\x3e",d+='\x3ctd style\x3d"border-right: 1px solid lightgray;"\x3eState '+ a+"\x3c/td\x3e",d+="\x3ctd\x3e"+(0>b.c[a].K?"(none)":b.c[a].K)+"\x3c/td\x3e",d+="\x3c/tr\x3e";d+="\x3c/table\x3e";break;case h.Na:case "js":c=[];for(a=0;a<b.g.length;a++)c.push([b.g[a].V,b.g[a].h.length]);d+="\nvar pop_tab \x3d "+JSON.stringify(c)+";\n";l=[];for(a=0;a<b.c.length;a++){q=[];for(c=0;c<b.c[a].u.length;c++)q.push(b.c[a].u[c].symbol,b.c[a].u[c].action);l.push(q)}d+="\n/** @type {!Array\x3c!Array\x3cnumber\x3e\x3e} */\nvar act_tab \x3d"+JSON.stringify(l)+";\n";l=[];for(a=0;a<b.c.length;a++){q= [];for(c=0;c<b.c[a].O.length;c++)q.push(b.c[a].O[c].symbol,b.c[a].O[c].action);l.push(q)}d+="\nvar goto_tab \x3d"+JSON.stringify(l)+";\n";c=[];for(a=0;a<b.c.length;a++)c.push(b.c[a].K);d+="\nvar defect_tab \x3d"+JSON.stringify(c)+";\n"}return d},Fb:function(a){function b(a){for(var d=[];a.length;){var c=a.shift(),e=a.shift();c==e?d.push(c):d.push([c,e])}return d}for(var c=[],g=0;g<a.length;g++)(function(g){for(var f=[],l=0;l<a[g].b.length;l++)-1!=a[g].b[l]&&(f[l]=a[g].b[l]);f=b(b(b(b(b(b(b(b(f)))))))); c.push({b:f,accept:a[g].accept})})(g);return c},Ib:function(a){for(var b=[],c=0;c<a.length;c++){for(var g=c,f={},l=0;l<a[g].b.length;l++)-1!=a[g].b[l]&&(f[l]=a[g].b[l]);b.push({b:f,accept:a[g].accept})}return JSON.stringify(this.Fb(a)).replace(/"([A-Za-z_][A-Za-z0-9_]*)"\s*:/g,"$1:").replace(/,/g,",\n\t")},Kb:function(){for(var a=0,c=[];a<b.a.length;a++)c.push(b.a[a].label);return"var labels \x3d "+JSON.stringify(b.a)+";\n\n"},Lb:function(){var a="({\n",c=/%match|%offset|%source/,f,l,h,n,r;for(f= 0;f<b.a.length;f++)if(b.a[f].kind==g.A&&""!=b.a[f].code){a+=' "'+f+'":';a+=" /** @suppress {uselessCode} */ function(PCB){";n="";for(h=l=0;l<b.a[f].code.length;l++,h++)(r=c.exec(b.a[f].code.substr(l,b.a[f].code.length)))&&0==r.index?("%match"==r[0]?n+="PCB.att":"%offset"==r[0]?n+="( PCB.offset - PCB.att.length )":"%source"==r[0]&&(n+="PCB.src"),l+=r[0].length-1,h=n.length):n+=b.a[f].code.charAt(l);a+=" "+n+"\n";a+=" return PCB.att;},\n"}return a+"\n})"},Gb:function(){var a,d=/%[0-9]+|%%/, g,f,l,h,r,v;a="[";for(l=0;l<b.g.length;l++){v=b.g[l].code;g="function(){\n";g+="var rval;";for(r=h=0;h<v.length;h++,r++)(f=d.exec(v.substr(h,v.length)))&&0==f.index?("%%"==f[0]?g+="rval":(r=parseInt(f[0].substr(1,f[0].length),10),r=b.g[l].h.length-r,0>r?(r=b.a[b.g[l].V],0==b.g[l].h.length?c.error("Default code was used for an empty right-hand side of a production, or a wildcard "+f[0]+" was used explicitly. The faulty left-hand side symbol label is '"+r.label+"'."):c.error("The wildcard "+f[0]+" was used, but there are only "+ b.g[l].h.length+" symbols on the right-hand side of the production. The faulty left-hand side symbol label is '"+r.label+"'."),g+=' "" '):g+=" arguments["+r+"] "),h+=f[0].length-1,r=g.length):g+=v.charAt(h);a+=" "+g+"\nreturn rval;},\n"}return a+"]"},ub:function(){for(var a=-1,d=0;d<b.a.length;d++)if(b.a[d].M==l.xa){a=d;break}-1==a&&c.error("No EOF-symbol defined - This might not be possible (bug!)");return a},vb:function(){for(var a=-1,d=0;d<b.a.length;d++)if(b.a[d].M==l.ERROR){a=d;break}-1== a&&c.error("No ERROR-symbol defined - This might not be possible (bug!)");return a},yb:function(){return b.qa}};return new k.cb}); (function(a,c){"function"===typeof R&&R.m?R("lib/jscc/integrity",["require","./global","./log/log","./enums/SYM"],c):"object"===typeof module&&module.exports?module.exports=c(Q):a.lc=c(function(b){return a["jscc"+b.split("/").pop()]})})(this,function(a){var c,b=a("./global"),f=a("./enums/SYM");c=a("./log/log");k.$a=function(){};k.$a.prototype={Tb:function(){for(var a=0;a<b.a.length;a++)b.a[a].kind==f.I&&0==b.a[a].Z&&c.error('Call to undefined non-terminal "'+b.a[a].label+'"')},Ub:function(){var a= [],g=[],l,e,d,m;for(l=0;l<b.a.length&&b.a[l].kind!=f.I;l++);if(l!=b.a.length){a.push(l);for(g.push(l);0<a.length;)for(l=a.pop(),e=0;e<b.a[l].w.length;e++)for(d=0;d<b.g[b.a[l].w[e]].h.length;d++)if(b.a[b.g[b.a[l].w[e]].h[d]].kind==f.I){for(m=0;m<g.length&&g[m]!=b.g[b.a[l].w[e]].h[d];m++);m==g.length&&(a.push(b.g[b.a[l].w[e]].h[d]),g.push(b.g[b.a[l].w[e]].h[d]))}for(l=0;l<b.a.length;l++)if(b.a[l].kind==f.I){for(e=0;e<g.length&&g[e]!=l;e++);e==g.length&&c.warn('Unreachable non-terminal "'+b.a[l].label+ '"')}}},ob:function(){for(var a=0;a<b.c.length;a++)0==b.c[a].u.length&&-1==b.c[a].K&&c.error("No lookaheads in state "+a+", watch for endless list definitions")}};return new k.$a}); (function(a,c){"function"===typeof R&&R.m?R("lib/jscc/lexdbg",["require","./global","./io/io","./enums/EDGE"],c):"object"===typeof module&&module.exports?module.exports=c(Q):a.nc=c(function(b){return a["jscc"+b.split("/").pop()]})})(this,function(a){var c;a("./global");a("./enums/EDGE");c=a("./io/io");k.ab=function(){};k.ab.prototype={Hb:function(a){for(var f,h,g=0;g<a.length;g++){f=g+" \x3d\x3e (";for(var l=h=0;l<a[g].b.length;l++)-1<a[g].b[l]&&(f+=" \x3e"+String.fromCharCode(l)+"\x3c,"+a[g].b[l]+ " ",h++,0==h%5&&(f+="\n "));f+=") "+a[g].accept;c.Wb(f)}}};return new k.ab});function X(){k.classes.Ca=function(a,c){"number"===typeof a&&(this.start=a);"number"===typeof c&&(this.end=c)};k.classes.Ca.prototype.start=-1;k.classes.Ca.prototype.end=-1;return k.classes.Ca}"function"===typeof R&&R.m?R("lib/jscc/classes/Param",X):"object"===typeof module&&module.exports?module.exports=X():X(); (function(a,c){"function"===typeof R&&R.m?R("lib/jscc/regex","require ./global ./log/log ./classes/Param ./classes/Nfa ./enums/EDGE".split(" "),c):"object"===typeof module&&module.exports?module.exports=c(Q):a.uc=c(function(b){return a["jscc"+b.split("/").pop()]})})(this,function(a){var c,b,f,h=a("./global"),g=a("./classes/Param"),l=a("./classes/Nfa"),e=a("./enums/EDGE");f=a("./log/log");var d=function(a,d,f){function n(a){this.src=a}function r(){this.R=[{b:[[[[1,[[1,[[[2,3],[4,5]],[1,[6,1]]]],[1, [1,[1,[1,7]]]]]],[[1,[1,[[1,[1,8]],[[13,9],1]]]],[1,[1,[1,[[10,1],1]]]]]],[1,[1,[1,[1,[1,[1,[1,null]]]]]]]]],accept:-1},{b:[],accept:13},{b:[],accept:6},{b:[],accept:7},{b:[],accept:3},{b:[],accept:4},{b:[],accept:10},{b:[],accept:5},{b:[],accept:8},{b:[],accept:9},{b:[],accept:2},{b:[],accept:12},{b:[[[[null,[null,[12,[[12,null],null]]]],null],null]],accept:11},{b:[[[[11,[11,[12,[[12,11],11]]]],11],[11,[11,[11,[11,[11,[11,[11,null]]]]]]]]],accept:13}]}function v(a){this.ma=a}function t(){throw t; }function y(a,b){for(var c=0;c<C[a].length;c+=2)if(C[a][c]===b)return C[a][c+1];return null}v.prototype=Object.create(Error.prototype);v.prototype.constructor=v;v.prototype.ma=null;v.prototype.valueOf=function(){return this.ma};var B=function(){function a(b){return b.G}var b={};return function(c,d){try{return(b[d]||a)(c)}catch(g){if(g instanceof v)return g.valueOf();if(g==t)return t;throw g;}}}();r.prototype.R=[];r.prototype.W=0;r.prototype.state=0;r.prototype.match=null;r.prototype.exec=function(a, b){if(null!==this.state){if("number"!==typeof this.state||this.state>=this.R.length)throw this.state=null,Error("Invalid value for DfaLex.state at chr "+a+" and pos "+b);var c=this.R[this.state].b;if("undefined"===typeof c||null===c){var d=this.state;this.state=null;throw Error("At chr "+a+" and pos "+b+", DfaLex._dfaData["+d+"] appears to exist, but its line property is "+("undefined"===typeof c?"undefined.":"null."));}for(d=256;d;d>>=1){c=0!==(a&d)?c[1]:c[0];"undefined"===typeof c&&(c=null);if(null=== c)break;if(!Array.isArray(c))break}a=this.R[this.state].accept;this.state=c;-1!==a&&(this.match=a,this.W=b)}};var A=[[0,1],[15,1],[14,3],[14,1],[16,2],[16,1],[17,2],[17,2],[17,2],[17,1],[18,1],[18,1],[18,3],[20,3],[20,1],[21,2],[21,0],[19,1],[19,1],[19,1]],C=[[6,8,11,9,12,10,13,11,8,12,10,13],[],[2,14],[6,8,11,9,12,10,13,11,8,12,10,13],[],[5,16,4,17,3,18],[],[],[6,8,11,9,12,10,13,11,8,12,10,13],[],[],[],[],[],[6,8,11,9,12,10,13,11,8,12,10,13],[],[],[],[],[7,22,2,14],[9,24,11,9,12,10,13,11],[6,8,11, 9,12,10,13,11,8,12,10,13],[],[],[]],H=[[15,1,14,2,16,3,17,4,18,5,19,6,20,7],[],[],[17,15,18,5,19,6,20,7],[],[],[],[],[14,19,16,3,17,4,18,5,19,6,20,7],[],[],[],[21,20],[],[16,21,17,4,18,5,19,6,20,7],[],[],[],[],[],[19,23],[17,15,18,5,19,6,20,7],[],[],[]],F=[-1,0,1,3,5,9,10,11,-1,17,18,19,16,14,-1,4,8,7,6,-1,-1,2,12,15,13],u=[{label:"RegEx'",kind:{},prods:[0],nullable:0,id:0,code:"",level:0,special:{},defined:!0,first:[6,11,12,13,8,10]},{label:"ERROR_RESYNC",kind:{},prods:[],nullable:!1,id:1,code:"", level:0,special:{},defined:!0,first:[1]},{label:"|",kind:{},prods:[],nullable:!1,id:2,code:"",level:0,special:{},defined:!1,first:[2]},{label:"*",kind:{},prods:[],nullable:!1,id:3,code:"",level:0,special:{},defined:!1,first:[3]},{label:"+",kind:{},prods:[],nullable:!1,id:4,code:"",level:0,special:{},defined:!1,first:[4]},{label:"?",kind:{},prods:[],nullable:!1,id:5,code:"",level:0,special:{},defined:!1,first:[5]},{label:"(",kind:{},prods:[],nullable:!1,id:6,code:"",level:0,special:{},defined:!1,first:[6]}, {label:")",kind:{},prods:[],nullable:!1,id:7,code:"",level:0,special:{},defined:!1,first:[7]},{label:"[",kind:{},prods:[],nullable:!1,id:8,code:"",level:0,special:{},defined:!1,first:[8]},{label:"]",kind:{},prods:[],nullable:!1,id:9,code:"",level:0,special:{},defined:!1,first:[9]},{label:"ANY_CHAR",kind:{},prods:[],nullable:!1,id:10,code:"",level:0,special:{},defined:!1,first:[10]},{label:"ASCII_CODE",kind:{},prods:[],nullable:!1,id:11,code:"",level:0,special:{},defined:!1,first:[11]},{label:"ESCAPED_CHAR", kind:{},prods:[],nullable:!1,id:12,code:"",level:0,special:{},defined:!1,first:[12]},{label:"ANY",kind:{},prods:[],nullable:!1,id:13,code:"",level:0,special:{},defined:!1,first:[13]},{label:"Expression",kind:{},prods:[2,3],nullable:0,id:14,code:"",level:0,special:{},defined:!0,first:[6,11,12,13,8,10]},{label:"RegEx",kind:{},prods:[1],nullable:0,id:15,code:"",level:0,special:{},defined:!0,first:[6,11,12,13,8,10]},{label:"Catenation",kind:{},prods:[4,5],nullable:0,id:16,code:"",level:0,special:{},defined:!0, first:[6,11,12,13,8,10]},{label:"Factor",kind:{},prods:[6,7,8,9],nullable:0,id:17,code:"",level:0,special:{},defined:!0,first:[6,11,12,13,8,10]},{label:"Term",kind:{},prods:[10,11,12],nullable:0,id:18,code:"",level:0,special:{},defined:!0,first:[6,11,12,13,8,10]},{label:"Character",kind:{},prods:[17,18,19],nullable:0,id:19,code:"",level:0,special:{},defined:!0,first:[11,12,13]},{label:"CharacterSet",kind:{},prods:[13,14],nullable:0,id:20,code:"",level:0,special:{},defined:!0,first:[8,10]},{label:"CharClass", kind:{},prods:[15,16],nullable:1,id:21,code:"",level:0,special:{},defined:!0,first:[11,12,13]},{label:"$",kind:{},prods:[],nullable:!1,id:22,code:"",level:0,special:{},defined:!1,first:[22]}],E=function(){var a=[function(a){return a},function(a){var d;d=new g;h.f.value[c].s=a.start;b=a.end;return d},function(a,b,c){b=new g(h.f.create(),h.f.create());h.f.value[b.start].s=c.start;h.f.value[b.start].D=a.start;h.f.value[c.end].s=b.end;h.f.value[a.end].s=b.end;return b},function(a){return a},function(a, b){var c=h.f.value[b.end].weight;h.f.value[b.end]=new l(h.f.value[a.start]);h.f.value[b.end].weight=c;h.f.value[a.start].J=e.ya;b.end=a.end;return b},function(a){return a},function(a,b){a=new g(h.f.create(),h.f.create());h.f.value[a.start].s=b.start;h.f.value[b.end].s=a.end;h.f.value[a.start].D=a.end;h.f.value[b.end].D=b.start;return a},function(a,b){a=new g(h.f.create(),h.f.create());h.f.value[a.start].s=b.start;h.f.value[b.end].s=a.end;h.f.value[b.end].D=b.start;return a},function(a,b){a=new g(h.f.create(), h.f.create());h.f.value[a.start].s=b.start;h.f.value[a.start].D=a.end;h.f.value[b.end].s=a.end;return a},function(a){return a},function(a){var b;b=new g;b.start=h.f.create();b.end=h.f.value[b.start].s=h.f.create();h.f.value[b.start].J=e.da;h.f.value[b.start].C.set(a.charCodeAt(0),!0);return b},function(a){return a},function(a,b){return b},function(a,b){var c=!1,d=0,f;a=new g;a.start=h.f.create();a.end=h.f.value[a.start].s=h.f.create();h.f.value[a.start].J=e.da;if("^"==b.charAt(d)){c=!0;for(f=h.fa;f< h.$;f++)h.f.value[a.start].C.set(f,!0);d++}for(;d<b.length;d++)if("-"==b.charAt(d+1)&&d+2<b.length)for(d++,f=b.charCodeAt(d-1);f<b.charCodeAt(d+1);f++)h.f.value[a.start].C.set(f,!c);else h.f.value[a.start].C.set(b.charCodeAt(d),!c);return a},function(){var a;a=new g;a.start=h.f.create();a.end=h.f.value[a.start].s=h.f.create();h.f.value[a.start].J=e.da;for(var b=h.fa;b<h.$;b++)h.f.value[a.start].C.set(b,!0);return a},function(a,b){return b+a},function(){return""},function(a){return String.fromCharCode(a.substr(1))}, function(a){return{n:"\n",r:"\r",t:"\t",bc:"a"}[a.substr(1)]||a.substr(1)},function(a){return a}];return function(b,c){try{return a[b].apply(null,c)}catch(d){if(d instanceof v)return d.valueOf();throw d;}}}();n.prototype.b=1;n.prototype.offset=0;n.prototype.T=0;n.prototype.src="";n.prototype.G="";n.prototype.H=null;n.prototype.j=null;n.prototype.ba=function(){for(var b,c,g,f=new r,e=!0;e;){f.W=0;c=this.offset+1;do{c--;f.state=0;f.match=null;b=c;if(this.src.length<=b)return this.H=a;do g=this.src.charCodeAt(c), f.exec(g,c),null!==f.state&&this.na(g),c++;while(null!==f.state)}while(-1<d&&f.match===d);if(null!==f.match){this.G=this.src.slice(b,f.W);this.offset=f.W;b=B(this,f.match);null!==f.state&&this.na(g);if(b===t)continue;this.G=b}else this.G="";e=!1}return this.H=f.match};n.prototype.na=function(a){10===a&&this.b++};return function(b,c,d){var g=[0],e=[0],l=0,G,h=0,x=new n(b);c=c||[];d=d||[];for(x.ba();;){x.j=y(g[0],x.H);null===x.j&&0<=F[g[0]]&&(x.j=-F[g[0]]);if(null===x.j){if(0===x.T)for(l++,c.unshift(x.offset- x.G.length),d.unshift([]),h=0;h<C[g[0]].length;h+=2)d[0].push(u[C[g[0]][h]]);for(;1<g.length&&null===x.j;)g.shift(),e.shift(),x.j=y(g[0],x.H),x.j===f&&(g.unshift(x.j),e.unshift(""));if(1<g.length&&null!==x.j)for(;x.H!==a;){x.j=C[g[0]][h+1];if(null!=x.j)break;for(;null!=x.ba();)x.offset++}if(null===x.j||x.H===a)break;x.T=3}if(0<x.j)g.unshift(x.j),e.unshift(x.G),x.ba(),0<x.T&&x.T--;else{G=-x.j;b=E(G,e,x);g.splice(0,A[G][1]);e.splice(0,A[G][1]);var r;a:{r=g[0];for(var t=0;t<H[r].length;t+=2)if(H[r][t]=== A[G][0]){r=H[r][t+1];break a}r=null}x.j=r;if(0===G)break;g.unshift(x.j);e.unshift(b)}}return l}}(22,-1,1);return function(a,g,l,n){var r,v=[],t=[],y;if(""!=a)if(n=n||0,c=h.f.create(),0==(y=d(a,v,t))){if(l)for(l=0;l<h.f.value.length;l++)if(h.f.value[l].J==e.da)for(r=h.fa;r<h.$;r++)h.f.value[l].C.get(r)&&(h.f.value[l].C