-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathparser.js
More file actions
14 lines (14 loc) · 6.65 KB
/
parser.js
File metadata and controls
14 lines (14 loc) · 6.65 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
module.exports=function(){function r(f,m,n,w){this.message=f;this.expected=m;this.found=n;this.location=w;this.name="SyntaxError";"function"===typeof Error.captureStackTrace&&Error.captureStackTrace(this,r)}(function(f,m){function n(){this.constructor=f}n.prototype=m.prototype;f.prototype=new n})(r,Error);r.buildMessage=function(f,m){function n(g){return g.charCodeAt(0).toString(16).toUpperCase()}function w(g){return g.replace(/\\/g,"\\\\").replace(/"/g,'\\"').replace(/\0/g,"\\0").replace(/\t/g,"\\t").replace(/\n/g,
"\\n").replace(/\r/g,"\\r").replace(/[\x00-\x0F]/g,function(g){return"\\x0"+n(g)}).replace(/[\x10-\x1F\x7F-\x9F]/g,function(g){return"\\x"+n(g)})}function r(g){return g.replace(/\\/g,"\\\\").replace(/\]/g,"\\]").replace(/\^/g,"\\^").replace(/-/g,"\\-").replace(/\0/g,"\\0").replace(/\t/g,"\\t").replace(/\n/g,"\\n").replace(/\r/g,"\\r").replace(/[\x00-\x0F]/g,function(g){return"\\x0"+n(g)}).replace(/[\x10-\x1F\x7F-\x9F]/g,function(g){return"\\x"+n(g)})}var D={literal:function(g){return'"'+w(g.text)+
'"'},"class":function(g){var f="",p;for(p=0;p<g.parts.length;p++)f+=g.parts[p]instanceof Array?r(g.parts[p][0])+"-"+r(g.parts[p][1]):r(g.parts[p]);return"["+(g.inverted?"^":"")+f+"]"},any:function(g){return"any character"},end:function(g){return"end of input"},other:function(g){return g.description}};return"Expected "+function(g){var f=Array(g.length),p;for(p=0;p<g.length;p++){var n=p,m;m=g[p];m=D[m.type](m);f[n]=m}f.sort();if(0<f.length){for(g=p=1;p<f.length;p++)f[p-1]!==f[p]&&(f[g]=f[p],g++);f.length=
g}switch(f.length){case 1:return f[0];case 2:return f[0]+" or "+f[1];default:return f.slice(0,-1).join(", ")+", or "+f[f.length-1]}}(f)+" but "+(m?'"'+w(m)+'"':"end of input")+" found."};return{SyntaxError:r,parse:function(f,m){function n(a,b){return{type:"literal",text:a,ignoreCase:b}}function w(a,b,c){return{type:"class",parts:a,inverted:b,ignoreCase:c}}function M(a){var b=E[a],c;if(!b){for(c=a-1;!E[c];)c--;b=E[c];for(b={line:b.line,column:b.column};c<a;)10===f.charCodeAt(c)?(b.line++,b.column=
1):b.column++,c++;E[a]=b}return b}function D(a,b){var c=M(a),d=M(b);return{start:{offset:a,line:c.line,column:c.column},end:{offset:b,line:d.line,column:d.column}}}function g(a){b<v||(b>v&&(v=b,G=[]),G.push(a))}function L(){var d,e,c,h,k;d=b;36===f.charCodeAt(b)?(e=A,b++):(e=a,0===l&&g(B));e===a&&(c=e=b,h=p(),h!==a?(32===f.charCodeAt(b)?(k=t,b++):(k=a,0===l&&g(u)),k!==a?c=h=[h,k]:(b=c,c=a)):(b=c,c=a),c!==a&&(q=e,c=C()),e=c);if(e!==a)if(c=z(),c!==a)if(32===f.charCodeAt(b)?(h=t,b++):(h=a,0===l&&g(u)),
h!==a){var m,n,r;h=k=b;35===f.charCodeAt(b)?(m=S,b++):(m=a,0===l&&g(T));if(m!==a){n=[];r=x();if(r!==a)for(;r!==a;)n.push(r),r=x();else n=a;n!==a?h=m=[m,n]:(b=h,h=a)}else b=h,h=a;k=h!==a?f.substring(k,b):h;k!==a?(32===f.charCodeAt(b)?(h=t,b++):(h=a,0===l&&g(u)),h!==a?(h=H(),h!==a?(q=d,d=e={name:e,"function":c,channel:k,args:h}):(b=d,d=a)):(b=d,d=a)):(b=d,d=a)}else b=d,d=a;else b=d,d=a;else b=d,d=a;d===a&&(d=b,36===f.charCodeAt(b)?(e=A,b++):(e=a,0===l&&g(B)),e===a&&(c=e=b,h=p(),h!==a?(32===f.charCodeAt(b)?
(k=t,b++):(k=a,0===l&&g(u)),k!==a?c=h=[h,k]:(b=c,c=a)):(b=c,c=a),c!==a&&(q=e,c=C()),e=c,e===a&&(c=e=b,h=p(),h!==a?(f.substr(b,2)===F?(k=F,b+=2):(k=a,0===l&&g(N)),k!==a?c=h=[h,k]:(b=c,c=a)):(b=c,c=a),c!==a&&(q=e,c=f.substring(q,b).slice(0,-2)),e=c)),e!==a?(c=z(),c!==a?(32===f.charCodeAt(b)?(h=t,b++):(h=a,0===l&&g(u)),h!==a?(k=H(),k!==a?(q=d,d=e={name:e,"function":c,args:k}):(b=d,d=a)):(b=d,d=a)):(b=d,d=a)):(b=d,d=a),d===a&&(d=b,36===f.charCodeAt(b)?(e=A,b++):(e=a,0===l&&g(B)),e===a&&(c=e=b,h=p(),h!==
a?(32===f.charCodeAt(b)?(k=t,b++):(k=a,0===l&&g(u)),k!==a?c=h=[h,k]:(b=c,c=a)):(b=c,c=a),c!==a&&(q=e,c=C()),e=c),e!==a?(c=z(),c!==a?(q=d,d=e={name:e,"function":c,args:[]}):(b=d,d=a)):(b=d,d=a),d===a&&(d=b,36===f.charCodeAt(b)?(e=A,b++):(e=a,0===l&&g(B)),e===a&&(c=e=b,h=p(),h!==a?(32===f.charCodeAt(b)?(k=t,b++):(k=a,0===l&&g(u)),k!==a?c=h=[h,k]:(b=c,c=a)):(b=c,c=a),c!==a&&(q=e,c=C()),e=c),e!==a?(c=z(),c!==a?(32===f.charCodeAt(b)?(h=t,b++):(h=a,0===l&&g(u)),h!==a?(k=H(),k!==a?(q=d,d=e={name:e,"function":c,
args:k}):(b=d,d=a)):(b=d,d=a)):(b=d,d=a)):(b=d,d=a),d===a&&(d=b,36===f.charCodeAt(b)?(e=A,b++):(e=a,0===l&&g(B)),e===a&&(c=e=b,h=p(),h!==a?(32===f.charCodeAt(b)?(k=t,b++):(k=a,0===l&&g(u)),k===a&&(f.substr(b,2)===F?(k=F,b+=2):(k=a,0===l&&g(N))),k!==a?c=h=[h,k]:(b=c,c=a)):(b=c,c=a),c!==a&&(q=e,c=C()),e=c),e!==a?(c=z(),c!==a?(q=d,d=e={name:e,"function":c}):(b=d,d=a)):(b=d,d=a)))));return d}function p(){var d,e,c;d=b;e=[];c=x();if(c!==a)for(;c!==a;)e.push(c),c=x();else e=a;return d=e!==a?f.substring(d,
b):e}function z(){var d,e,c;d=b;e=[];c=x();if(c!==a)for(;c!==a;)e.push(c),c=x();else e=a;return d=e!==a?f.substring(d,b):e}function x(){var d;U.test(f.charAt(b))?(d=f.charAt(b),b++):(d=a,0===l&&g(V));d===a&&(W.test(f.charAt(b))?(d=f.charAt(b),b++):(d=a,0===l&&g(X)),d===a&&(95===f.charCodeAt(b)?(d=Y,b++):(d=a,0===l&&g(Z))));return d}function O(){var d,e,c;d=b;34===f.charCodeAt(b)?(e=I,b++):(e=a,0===l&&g(J));if(e!==a){e=[];for(c=P();c!==a;)e.push(c),c=P();e!==a?(34===f.charCodeAt(b)?(c=I,b++):(c=a,
0===l&&g(J)),c!==a?(q=d,d=e=e.join("")):(b=d,d=a)):(b=d,d=a)}else b=d,d=a;if(d===a){var h;d=b;32===f.charCodeAt(b)?(e=t,b++):(e=a,0===l&&g(u));e===a&&(e=null);if(e!==a){e=b;c=[];h=Q();if(h!==a)for(;h!==a;)c.push(h),h=Q();else c=a;e=c!==a?f.substring(e,b):c;e!==a?(32===f.charCodeAt(b)?(c=t,b++):(c=a,0===l&&g(u)),c===a&&(c=null),c===a&&(c=b,l++,f.length>b?(h=f.charAt(b),b++):(h=a,0===l&&g(K)),h===a&&(h=null),l--,h===a?c=void 0:(b=c,c=a)),c!==a?(q=d,d=e):(b=d,d=a)):(b=d,d=a)}else b=d,d=a}return d}function P(){var d,
e,c;e=d=b;l++;34===f.charCodeAt(b)?(c=I,b++):(c=a,0===l&&g(J));l--;c===a?e=void 0:(b=e,e=a);e!==a?(f.length>b?(c=f.charAt(b),b++):(c=a,0===l&&g(K)),c!==a?(q=d,d=c):(b=d,d=a)):(b=d,d=a);return d}function Q(){var d,e,c;e=d=b;l++;32===f.charCodeAt(b)?(c=t,b++):(c=a,0===l&&g(u));l--;c===a?e=void 0:(b=e,e=a);e!==a?(f.length>b?(c=f.charAt(b),b++):(c=a,0===l&&g(K)),c!==a?(q=d,d=c):(b=d,d=a)):(b=d,d=a);return d}function H(){var d,e,c;d=b;e=[];c=O();if(c!==a)for(;c!==a;)e.push(c),c=O();else e=a;e!==a&&(q=
d);return e}m=void 0!==m?m:{};var a={},y={start:L},R=L,A="$",B=n("$",!1),t=" ",u=n(" ",!1),C=function(){return f.substring(q,b).slice(0,-1)},F=": ",N=n(": ",!1),S="#",T=n("#",!1);w([["0","9"]],!1,!1);var U=/^[a-z]/,V=w([["a","z"]],!1,!1),W=/^[A-Z]/,X=w([["A","Z"]],!1,!1),Y="_",Z=n("_",!1);n("\r",!1);n("\n",!1);var I='"',J=n('"',!1),K={type:"any"},b=0,q=0,E=[{line:1,column:1}],v=0,G=[],l=0;if("startRule"in m){if(!(m.startRule in y))throw Error("Can't start parsing from rule \""+m.startRule+'".');R=
y[m.startRule]}y=R();if(y!==a&&b===f.length)return y;y!==a&&b<f.length&&g({type:"end"});throw function(a,b,c){return new r(r.buildMessage(a,b),a,b,c)}(G,v<f.length?f.charAt(v):null,v<f.length?D(v,v+1):D(v,v));}}}();