subscript 10.1.1 → 10.1.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/feature/loop.js +31 -3
- package/feature/statement.js +13 -0
- package/jessie.js +1 -0
- package/jessie.min.js +7 -7
- package/package.json +1 -1
package/feature/loop.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
// Loops: while, do-while, for, for await, break, continue, return
|
|
2
|
-
import { expr, skip, space, parse, word, parens, cur, idx, operator, compile } from '../parse.js';
|
|
2
|
+
import { expr, skip, space, parse, word, parens, cur, idx, operator, compile, next, seek } from '../parse.js';
|
|
3
3
|
import { body, keyword } from './block.js';
|
|
4
4
|
import { destructure } from './destruct.js';
|
|
5
5
|
import { BREAK, CONTINUE, RETURN } from './control.js';
|
|
@@ -34,8 +34,36 @@ keyword('for', STATEMENT + 1, () => {
|
|
|
34
34
|
return ['for', parens(), body()];
|
|
35
35
|
});
|
|
36
36
|
|
|
37
|
-
keyword('break', STATEMENT + 1, () =>
|
|
38
|
-
|
|
37
|
+
keyword('break', STATEMENT + 1, () => {
|
|
38
|
+
parse.asi && (parse.newline = false);
|
|
39
|
+
const from = idx;
|
|
40
|
+
space();
|
|
41
|
+
const c = cur.charCodeAt(idx);
|
|
42
|
+
if (!c || c === CBRACE || c === SEMI || parse.newline) return ['break'];
|
|
43
|
+
const label = next(parse.id);
|
|
44
|
+
if (!label) return ['break'];
|
|
45
|
+
// Label must be followed by end/semicolon/newline, not another token
|
|
46
|
+
space();
|
|
47
|
+
const cc = cur.charCodeAt(idx);
|
|
48
|
+
if (!cc || cc === CBRACE || cc === SEMI || parse.newline) return ['break', label];
|
|
49
|
+
// Not a valid label - backtrack
|
|
50
|
+
seek(from);
|
|
51
|
+
return ['break'];
|
|
52
|
+
});
|
|
53
|
+
keyword('continue', STATEMENT + 1, () => {
|
|
54
|
+
parse.asi && (parse.newline = false);
|
|
55
|
+
const from = idx;
|
|
56
|
+
space();
|
|
57
|
+
const c = cur.charCodeAt(idx);
|
|
58
|
+
if (!c || c === CBRACE || c === SEMI || parse.newline) return ['continue'];
|
|
59
|
+
const label = next(parse.id);
|
|
60
|
+
if (!label) return ['continue'];
|
|
61
|
+
space();
|
|
62
|
+
const cc = cur.charCodeAt(idx);
|
|
63
|
+
if (!cc || cc === CBRACE || cc === SEMI || parse.newline) return ['continue', label];
|
|
64
|
+
seek(from);
|
|
65
|
+
return ['continue'];
|
|
66
|
+
});
|
|
39
67
|
keyword('return', STATEMENT + 1, () => {
|
|
40
68
|
parse.asi && (parse.newline = false);
|
|
41
69
|
space();
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
// Additional JS statements: debugger, with (parse-only)
|
|
2
|
+
// debugger → ['debugger']
|
|
3
|
+
// with (obj) body → ['with', obj, body]
|
|
4
|
+
import { space, parens } from '../parse.js';
|
|
5
|
+
import { keyword, body } from './block.js';
|
|
6
|
+
|
|
7
|
+
const STATEMENT = 5;
|
|
8
|
+
|
|
9
|
+
// debugger statement
|
|
10
|
+
keyword('debugger', STATEMENT + 1, () => ['debugger']);
|
|
11
|
+
|
|
12
|
+
// with statement
|
|
13
|
+
keyword('with', STATEMENT + 1, () => (space(), ['with', parens(), body()]));
|
package/jessie.js
CHANGED
package/jessie.min.js
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
var u,c,m=r=>(u=0,c=r,m.newline=!1,r=
|
|
2
|
-
`),
|
|
1
|
+
var u,c,m=r=>(u=0,c=r,m.newline=!1,r=a(),c[u]?v():r||""),v=(r="Unexpected token",e=u,t=c.slice(0,e).split(`
|
|
2
|
+
`),n=t.pop(),o=c.slice(Math.max(0,e-40),e),s="\u032D",l=(c[e]||" ")+s,f=c.slice(e+1,e+20))=>{throw SyntaxError(`${r} at ${t.length+1}:${n.length+1}
|
|
3
3
|
${c[e-41]!==`
|
|
4
|
-
`,""+
|
|
5
|
-
`,r:"\r",t:" ",b:"\b",f:"\f",v:"\v"},
|
|
6
|
-
`,"/*":"*/"};var
|
|
7
|
-
`)for(;c.charCodeAt(
|
|
8
|
-
`,r:"\r",t:" ",b:"\b",f:"\f",v:"\v"},
|
|
4
|
+
`,""+o}${l}${f}`)},q=(r,e=u)=>(Array.isArray(r)&&(r.loc=e),r),k=(r,e=u,t)=>{for(;t=r(c.charCodeAt(u));)u+=t;return c.slice(e,u)},h=(r=1)=>c[u+=r],O=r=>u=r,a=(r=0,e)=>{let t,n,o,s,l=m.reserved,f;for(e&&m.asi&&(m.newline=!1),m.reserved=0;(t=m.space())&&(f=m.newline,1)&&t!==e&&(o=((s=C[t])&&s(n,r))??(m.asi&&n&&f&&(o=m.asi(n,r,a)))??(!n&&!m.reserved&&k(m.id)));)n=o,m.reserved=0;return m.reserved=l,e&&(t==e?u++:v("Unclosed "+String.fromCharCode(e-(e>42?2:1)))),n},d=m.space=(r,e=u)=>{for(;(r=c.charCodeAt(u))<=32;)m.asi&&r===10&&(m.newline=!0),u++;return r},Ct=m.id=r=>r>=48&&r<=57||r>=65&&r<=90||r>=97&&r<=122||r==36||r==95||r>=192&&r!=215&&r!=247,I=(r,e=r.length)=>c.substr(u,e)===r&&!m.id(c.charCodeAt(u+e)),N=()=>(h(),a(0,41)),C=[],E=(r,e=32,t,n=r.charCodeAt(0),o=r.length,s=C[n],l=r.toUpperCase()!==r,f,y)=>C[n]=(g,S,P,T=u)=>(f=P,(P?r==P:(o<2||r.charCodeAt(1)===c.charCodeAt(u+1)&&(o<3||c.substr(u,o)==r))&&(!l||!m.id(c.charCodeAt(u+o)))&&(f=P=r))&&S<e&&(u+=o,(y=t(g))?q(y,T):(u=T,f=0,l&&y!==!1&&(m.reserved=1),!l&&!s&&v()),y)||s?.(g,S,f)),A=(r,e,t=!1)=>E(r,e,(n,o)=>n&&(o=a(e-(t?.5:0)))&&[r,n,o]),R=(r,e,t)=>E(r,e,n=>t?n&&[r,n]:!n&&(n=a(e-.5))&&[r,n]),X=(r,e)=>E(r,200,t=>!t&&[,e]),fr=(r,e,t)=>{E(r,e,(n,o)=>(o=a(e-(t?.5:0)),n?.[0]!==r&&(n=[r,n||null]),o?.[0]===r?n.push(...o.slice(1)):n.push(o||null),n))},H=(r,e)=>E(r[0],e,t=>!t&&[r,a(0,r.charCodeAt(1))||null]),ur=(r,e)=>E(r[0],e,t=>t&&[r,t,a(0,r.charCodeAt(1))||null]),lr={},p=(r,e,t=lr[r])=>lr[r]=(...n)=>e(...n)||t?.(...n),i=r=>Array.isArray(r)?r[0]==null?(e=>()=>e)(r[1]):lr[r[0]]?.(...r.slice(1))??v(`Unknown operator: ${r[0]}`,r?.loc):r===void 0?()=>{}:e=>e?.[r];var b=46,j=48,rr=57,ue=69,me=101,ce=43,de=45,x=95,ae=110,Ae=97,he=102,ye=65,ge=70,Rr=r=>r.indexOf("_")<0?r:r.replaceAll("_",""),mr=r=>{let e=Rr(k(t=>t===b&&c.charCodeAt(u+1)!==b||t>=j&&t<=rr||t===x||((t===ue||t===me)&&((t=c.charCodeAt(u+1))>=j&&t<=rr||t===ce||t===de)?2:0)));return c.charCodeAt(u)===ae?(h(),[,BigInt(e)]):(r=+e)!=r?v():[,r]},Ee={2:r=>r===48||r===49||r===x,8:r=>r>=48&&r<=55||r===x,16:r=>r>=j&&r<=rr||r>=Ae&&r<=he||r>=ye&&r<=ge||r===x};m.number=null;C[b]=r=>!r&&c.charCodeAt(u+1)!==b&&mr();for(let r=j;r<=rr;r++)C[r]=e=>e?void 0:mr();C[j]=r=>{if(r)return;let e=m.number;if(e){for(let[t,n]of Object.entries(e))if(t[0]==="0"&&c[u+1]?.toLowerCase()===t[1])return h(2),[,parseInt(Rr(k(Ee[n])),n)]}return mr()};var we=92,Nr=34,_r=39,Ce={n:`
|
|
5
|
+
`,r:"\r",t:" ",b:"\b",f:"\f",v:"\v"},Or=r=>(e,t,n="")=>{if(!(e||!m.string?.[String.fromCharCode(r)]))return h(),k(o=>o-r&&(o===we?(n+=Ce[c[u+1]]||c[u+1],2):(n+=c[u],1))),c[u]===String.fromCharCode(r)?h():v("Bad string"),[,n]};C[Nr]=Or(Nr);C[_r]=Or(_r);m.string={'"':!0};var Se=20;"= += -= *= /= %= |= &= ^= >>= <<=".split(" ").map(r=>A(r,Se,!0));var Mr=(r,e,t,n)=>typeof r=="string"?o=>e(o,r,o):r[0]==="."?(t=i(r[1]),n=r[2],o=>e(t(o),n,o)):r[0]==="[]"&&r.length===3?(t=i(r[1]),n=i(r[2]),o=>e(t(o),n(o),o)):r[0]==="()"&&r.length===2?Mr(r[1],e):(()=>{throw Error("Invalid assignment target")})(),Pr={"=":(r,e,t)=>r[e]=t,"+=":(r,e,t)=>r[e]+=t,"-=":(r,e,t)=>r[e]-=t,"*=":(r,e,t)=>r[e]*=t,"/=":(r,e,t)=>r[e]/=t,"%=":(r,e,t)=>r[e]%=t,"|=":(r,e,t)=>r[e]|=t,"&=":(r,e,t)=>r[e]&=t,"^=":(r,e,t)=>r[e]^=t,">>=":(r,e,t)=>r[e]>>=t,"<<=":(r,e,t)=>r[e]<<=t};for(let r in Pr)p(r,(e,t)=>(t=i(t),Mr(e,(n,o,s)=>Pr[r](n,o,t(s)))));var ke=30,ve=40,Ur=140;A("!",Ur);R("!",Ur);A("||",ke);A("&&",ve);p("!",r=>(r=i(r),e=>!r(e)));p("||",(r,e)=>(r=i(r),e=i(e),t=>r(t)||e(t)));p("&&",(r,e)=>(r=i(r),e=i(e),t=>r(t)&&e(t)));var Te=50,Ie=60,Re=70,Lr=100,Ne=140;A("|",Te);A("&",Re);A("^",Ie);A(">>",Lr);A("<<",Lr);R("~",Ne);p("~",r=>(r=i(r),e=>~r(e)));p("|",(r,e)=>(r=i(r),e=i(e),t=>r(t)|e(t)));p("&",(r,e)=>(r=i(r),e=i(e),t=>r(t)&e(t)));p("^",(r,e)=>(r=i(r),e=i(e),t=>r(t)^e(t)));p(">>",(r,e)=>(r=i(r),e=i(e),t=>r(t)>>e(t)));p("<<",(r,e)=>(r=i(r),e=i(e),t=>r(t)<<e(t)));var er=90;A("<",er);A(">",er);A("<=",er);A(">=",er);p(">",(r,e)=>(r=i(r),e=i(e),t=>r(t)>e(t)));p("<",(r,e)=>(r=i(r),e=i(e),t=>r(t)<e(t)));p(">=",(r,e)=>(r=i(r),e=i(e),t=>r(t)>=e(t)));p("<=",(r,e)=>(r=i(r),e=i(e),t=>r(t)<=e(t)));var Fr=80;A("==",Fr);A("!=",Fr);p("==",(r,e)=>(r=i(r),e=i(e),t=>r(t)==e(t)));p("!=",(r,e)=>(r=i(r),e=i(e),t=>r(t)!=e(t)));var Gr=110,cr=120,Br=140;A("+",Gr);A("-",Gr);A("*",cr);A("/",cr);A("%",cr);R("+",Br);R("-",Br);p("+",(r,e)=>e!==void 0?(r=i(r),e=i(e),t=>r(t)+e(t)):(r=i(r),t=>+r(t)));p("-",(r,e)=>e!==void 0?(r=i(r),e=i(e),t=>r(t)-e(t)):(r=i(r),t=>-r(t)));p("*",(r,e)=>(r=i(r),e=i(e),t=>r(t)*e(t)));p("/",(r,e)=>(r=i(r),e=i(e),t=>r(t)/e(t)));p("%",(r,e)=>(r=i(r),e=i(e),t=>r(t)%e(t)));var tr=150;E("++",tr,r=>r?["++",r,null]:["++",a(tr-1)]);E("--",tr,r=>r?["--",r,null]:["--",a(tr-1)]);var dr=(r,e,t,n)=>typeof r=="string"?o=>e(o,r):r[0]==="."?(t=i(r[1]),n=r[2],o=>e(t(o),n)):r[0]==="[]"&&r.length===3?(t=i(r[1]),n=i(r[2]),o=>e(t(o),n(o))):r[0]==="()"&&r.length===2?dr(r[1],e):(()=>{throw Error("Invalid increment target")})();p("++",(r,e)=>dr(r,e===null?(t,n)=>t[n]++:(t,n)=>++t[n]));p("--",(r,e)=>dr(r,e===null?(t,n)=>t[n]--:(t,n)=>--t[n]));var _e=5,Oe=10,Pe=170;H("()",Pe);fr(",",Oe);fr(";",_e,!0);var Xr=(...r)=>(r=r.map(i),e=>{let t;for(let n of r)t=n(e);return t});p(",",Xr);p(";",Xr);var F=r=>r?.[0]==="_"&&r[1]==="_"||r==="constructor"||r==="prototype",ar=170;ur("[]",ar);A(".",ar);ur("()",ar);var nr=r=>{throw Error(r)};p("[]",(r,e)=>e===void 0?(r=r?r[0]===","?r.slice(1):[r]:[],r=r.map(t=>t==null?(()=>{}):t[0]==="..."?(t=i(t[1]),n=>t(n)):(t=i(t),n=>[t(n)])),t=>r.flatMap(n=>n(t))):(e==null&&nr("Missing index"),r=i(r),e=i(e),t=>{let n=e(t);return F(n)?void 0:r(t)[n]}));p(".",(r,e)=>(r=i(r),e=e[0]?e:e[1],F(e)?()=>{}:t=>r(t)[e]));p("()",(r,e)=>{if(e===void 0)return r==null?nr("Empty ()"):i(r);let t=o=>o?.[0]===","&&o.slice(1).some(s=>s==null||t(s));t(e)&&nr("Empty argument");let n=e?e[0]===","?(e=e.slice(1).map(i),o=>e.map(s=>s(o))):(e=i(e),o=>[e(o)]):()=>[];return Ar(r,(o,s,l)=>o[s](...n(l)))});var M=r=>typeof r=="string"||Array.isArray(r)&&(r[0]==="."||r[0]==="?."||r[0]==="[]"&&r.length===3||r[0]==="?.[]"||r[0]==="()"&&r.length===2&&M(r[1])||r[0]==="{}"),Ar=(r,e,t,n)=>r==null?nr("Empty ()"):r[0]==="()"&&r.length==2?Ar(r[1],e):typeof r=="string"?o=>e(o,r,o):r[0]==="."?(t=i(r[1]),n=r[2],o=>e(t(o),n,o)):r[0]==="?."?(t=i(r[1]),n=r[2],o=>{let s=t(o);return s==null?void 0:e(s,n,o)}):r[0]==="[]"&&r.length===3?(t=i(r[1]),n=i(r[2]),o=>e(t(o),n(o),o)):r[0]==="?.[]"?(t=i(r[1]),n=i(r[2]),o=>{let s=t(o);return s==null?void 0:e(s,n(o),o)}):(r=i(r),o=>e([r(o)],0,o)),G=Ar;var Dr=new WeakMap,Me=(r,...e)=>typeof r=="string"?i(m(r)):Dr.get(r)||Dr.set(r,Ue(r,e)).get(r),Kr=57344,Ue=(r,e)=>{let t=r.reduce((s,l,f)=>s+(f?String.fromCharCode(Kr+f-1):"")+l,""),n=m(t),o=s=>{if(typeof s=="string"&&s.length===1){let l=s.charCodeAt(0)-Kr,f;if(l>=0&&l<e.length)return f=e[l],Le(f)?f:[,f]}return Array.isArray(s)?s.map(o):s};return i(o(n))},Le=r=>typeof r=="string"||Array.isArray(r)&&(typeof r[0]=="string"||r[0]===void 0),Qr=Me;var Fe=32,Ge=m.space;m.comment??={"//":`
|
|
6
|
+
`,"/*":"*/"};var hr;m.space=()=>{hr||(hr=Object.entries(m.comment).map(([o,s])=>[o,s,o.charCodeAt(0)]));for(var r;r=Ge();){for(var e=0,t;t=hr[e++];)if(r===t[2]&&c.substr(u,t[0].length)===t[0]){var n=u+t[0].length;if(t[1]===`
|
|
7
|
+
`)for(;c.charCodeAt(n)>=Fe;)n++;else{for(;c[n]&&c.substr(n,t[1].length)!==t[1];)n++;c[n]&&(n+=t[1].length)}O(n),r=0;break}if(r)return r}return r};var $r=80;A("===",$r);A("!==",$r);p("===",(r,e)=>(r=i(r),e=i(e),t=>r(t)===e(t)));p("!==",(r,e)=>(r=i(r),e=i(e),t=>r(t)!==e(t)));var Be=30;A("??",Be);p("??",(r,e)=>(r=i(r),e=i(e),t=>r(t)??e(t)));var Xe=130,De=20;A("**",Xe,!0);A("**=",De,!0);p("**",(r,e)=>(r=i(r),e=i(e),t=>r(t)**e(t)));var Ke=r=>{throw Error(r)};p("**=",(r,e)=>(M(r)||Ke("Invalid assignment target"),e=i(e),G(r,(t,n,o)=>t[n]**=e(o))));var Hr=90;A("in",Hr);A("of",Hr);p("in",(r,e)=>(r=i(r),e=i(e),t=>r(t)in e(t)));var Qe=20,$e=100,He=r=>{throw Error(r)};A(">>>",$e);A(">>>=",Qe,!0);p(">>>",(r,e)=>(r=i(r),e=i(e),t=>r(t)>>>e(t)));p(">>>=",(r,e)=>(M(r)||He("Invalid assignment target"),e=i(e),G(r,(t,n,o)=>t[n]>>>=e(o))));var je=r=>r[0]?.[0]===","?r[0].slice(1):r,B=(r,e,t)=>{if(typeof r=="string"){t[r]=e;return}let[n,...o]=r,s=je(o);if(n==="{}"){let l=[];for(let f of s){if(Array.isArray(f)&&f[0]==="..."){let T={};for(let _ in e)l.includes(_)||(T[_]=e[_]);t[f[1]]=T;break}let y,g,S;typeof f=="string"?y=g=f:f[0]==="="?(typeof f[1]=="string"?y=g=f[1]:[,y,g]=f[1],S=f[2]):[,y,g]=f,l.push(y);let P=e[y];P===void 0&&S&&(P=i(S)(t)),B(g,P,t)}}else if(n==="[]"){let l=0;for(let f of s){if(f===null){l++;continue}if(Array.isArray(f)&&f[0]==="..."){t[f[1]]=e.slice(l);break}let y=f,g;Array.isArray(f)&&f[0]==="="&&([,y,g]=f);let S=e[l++];S===void 0&&g&&(S=i(g)(t)),B(y,S,t)}}};var yr=20,or=r=>{throw Error(r)};A("||=",yr,!0);A("&&=",yr,!0);A("??=",yr,!0);p("=",(r,e)=>{if(Array.isArray(r)&&(r[0]==="let"||r[0]==="const"||r[0]==="var")){let t=r[1];return e=i(e),typeof t=="string"?n=>{n[t]=e(n)}:n=>B(t,e(n),n)}return M(r)||or("Invalid assignment target"),e=i(e),G(r,(t,n,o)=>t[n]=e(o))});p("||=",(r,e)=>(M(r)||or("Invalid assignment target"),e=i(e),G(r,(t,n,o)=>t[n]||=e(o))));p("&&=",(r,e)=>(M(r)||or("Invalid assignment target"),e=i(e),G(r,(t,n,o)=>t[n]&&=e(o))));p("??=",(r,e)=>(M(r)||or("Invalid assignment target"),e=i(e),G(r,(t,n,o)=>t[n]??=e(o))));X("true",!0);X("false",!1);X("null",null);E("undefined",200,r=>!r&&[]);X("NaN",NaN);X("Infinity",1/0);var gr=20;E("?",gr,(r,e,t)=>r&&(e=a(gr-1))&&k(n=>n===58)&&(t=a(gr-1),["?",r,e,t]));p("?",(r,e,t)=>(r=i(r),e=i(e),t=i(t),n=>r(n)?e(n):t(n)));var We=20;A("=>",We,!0);p("=>",(r,e)=>{r=r[0]==="()"?r[1]:r,r=r?r[0]===","?r.slice(1):[r]:[];let t=-1,n=null;return r.length&&Array.isArray(r[r.length-1])&&r[r.length-1][0]==="..."&&(t=r.length-1,n=r[t][1],r=r.slice(0,-1)),e=i(e[0]==="{}"?e[1]:e),(o=null)=>(o=Object.create(o),(...s)=>(r.forEach((l,f)=>o[l]=s[f]),n&&(o[n]=s.slice(t)),e(o)))});var ze=140;R("...",ze);p("...",r=>(r=i(r),e=>Object.entries(r(e))));var jr=170;E("?.",jr,(r,e)=>{if(!r)return;let t=d();return t===40?(h(),["?.()",r,a(0,41)||null]):t===91?(h(),["?.[]",r,a(0,93)]):(e=a(jr),e?["?.",r,e]:void 0)});p("?.",(r,e)=>(r=i(r),F(e)?()=>{}:t=>r(t)?.[e]));p("?.[]",(r,e)=>(r=i(r),e=i(e),t=>{let n=e(t);return F(n)?void 0:r(t)?.[n]}));p("?.()",(r,e)=>{let t=e?e[0]===","?(e=e.slice(1).map(i),o=>e.map(s=>s(o))):(e=i(e),o=>[e(o)]):()=>[];if(r[0]==="?."){let o=i(r[1]),s=r[2];return F(s)?()=>{}:l=>o(l)?.[s]?.(...t(l))}if(r[0]==="?.[]"){let o=i(r[1]),s=i(r[2]);return l=>{let f=o(l),y=s(l);return F(y)?void 0:f?.[y]?.(...t(l))}}if(r[0]==="."){let o=i(r[1]),s=r[2];return F(s)?()=>{}:l=>o(l)?.[s]?.(...t(l))}if(r[0]==="[]"&&r.length===3){let o=i(r[1]),s=i(r[2]);return l=>{let f=o(l),y=s(l);return F(y)?void 0:f?.[y]?.(...t(l))}}let n=i(r);return o=>n(o)?.(...t(o))});var W=140;R("typeof",W);R("void",W);R("delete",W);E("new",W,r=>!r&&(I(".target")?(h(7),["new.target"]):["new",a(W)]));p("typeof",r=>(r=i(r),e=>typeof r(e)));p("void",r=>(r=i(r),e=>(r(e),void 0)));p("delete",r=>{if(r[0]==="."){let e=i(r[1]),t=r[2];return n=>delete e(n)[t]}if(r[0]==="[]"){let e=i(r[1]),t=i(r[2]);return n=>delete e(n)[t(n)]}return()=>!0});p("new",r=>{let e=i(r?.[0]==="()"?r[1]:r),t=r?.[0]==="()"?r[2]:null,n=t?t[0]===","?(o=>s=>o.map(l=>l(s)))(t.slice(1).map(i)):(o=>s=>[o(s)])(i(t)):()=>[];return o=>new(e(o))(...n(o))});var ir=Symbol("accessor"),Er=20,Je=40,Wr=41,zr=123,Jr=125,Vr=r=>e=>{if(e)return;d();let t=k(m.id);if(!t||(d(),c.charCodeAt(u)!==Je))return!1;h();let n=a(0,Wr);return d(),c.charCodeAt(u)!==zr?!1:(h(),[r,t,n,a(0,Jr)])};E("get",Er-1,Vr("get"));E("set",Er-1,Vr("set"));E("(",Er-1,r=>{if(!r||typeof r!="string")return;let e=a(0,Wr)||null;if(d(),c.charCodeAt(u)===zr)return h(),[":",r,["=>",["()",e],a(0,Jr)||null]]});p("get",(r,e)=>(e=e?i(e):()=>{},t=>[[ir,r,{get:function(){let n=Object.create(t||{});return n.this=this,e(n)}}]]));p("set",(r,e,t)=>(t=t?i(t):()=>{},n=>[[ir,r,{set:function(o){let s=Object.create(n||{});s.this=this,s[e]=o,t(s)}}]]));var Ve=20,Yr=200;H("[]",Yr);H("{}",Yr);A(":",Ve-1,!0);p("{}",(r,e)=>{if(e!==void 0)return;r=r?r[0]!==","?[r]:r.slice(1):[];let t=r.map(n=>i(typeof n=="string"?[":",n,n]:n));return n=>{let o={},s={};for(let l of t.flatMap(f=>f(n)))if(l[0]===ir){let[,f,y]=l;s[f]={...s[f],...y,configurable:!0,enumerable:!0}}else o[l[0]]=l[1];for(let l in s)Object.defineProperty(o,l,s[l]);return o}});p(":",(r,e)=>(e=i(e),Array.isArray(r)?(r=i(r),t=>[[r(t),e(t)]]):t=>[[r,e(t)]]));var Ye=170,sr=96,Ze=36,qe=123,xe=92,be={n:`
|
|
8
|
+
`,r:"\r",t:" ",b:"\b",f:"\f",v:"\v"},Zr=()=>{let r=[];for(let e="",t;(t=c.charCodeAt(u))!==sr;)t?t===xe?(h(),e+=be[c[u]]||c[u],h()):t===Ze&&c.charCodeAt(u+1)===qe?(e&&r.push([,e]),e="",h(2),r.push(a(0,125))):(e+=c[u],h(),t=c.charCodeAt(u),t===sr&&e&&r.push([,e])):v("Unterminated template");return h(),r},rt=C[sr];C[sr]=(r,e)=>r&&e<Ye?m.asi&&m.newline?void 0:(h(),["``",r,...Zr()]):r?rt?.(r,e):(h(),(t=>t.length<2&&t[0]?.[0]===void 0?t[0]||[,""]:["`",...t])(Zr()));p("`",(...r)=>(r=r.map(i),e=>r.map(t=>t(e)).join("")));p("``",(r,...e)=>{r=i(r);let t=[],n=[];for(let s of e)Array.isArray(s)&&s[0]===void 0?t.push(s[1]):n.push(i(s));let o=Object.assign([...t],{raw:t});return s=>r(s)(o,...n.map(l=>l(s)))});m.string["'"]=!0;m.number={"0x":16,"0b":2,"0o":8};var wr=5,qr=123,xr=125,w=(r,e,t,n=r.charCodeAt(0),o=r.length,s=C[n],l)=>C[n]=(f,y,g,S=u)=>!f&&(g?r==g:(o<2||c.substr(u,o)==r)&&(g=r))&&y<e&&!m.id(c.charCodeAt(u+o))&&(O(u+o),(l=t())?q(l,S):(O(S),!s&&v()),l)||s?.(f,y,g),Cr=(r,e,t,n=r.charCodeAt(0),o=r.length,s=C[n],l)=>C[n]=(f,y,g,S=u)=>f&&(g?r==g:(o<2||c.substr(u,o)==r)&&(g=r))&&y<e&&!m.id(c.charCodeAt(u+o))&&(O(u+o),q(l=t(f),S),l)||s?.(f,y,g),U=()=>(d()===qr||v("Expected {"),h(),a(wr-.5,xr)||null),L=()=>d()!==qr?a(wr+.5):(h(),a(wr-.5,xr)||null);var Sr=5,et=10,tt=20,br=r=>{let e=a(et-1);return e?.[0]==="in"||e?.[0]==="of"?[e[0],[r,e[1]],e[2]]:e?.[0]===","?[r,...e.slice(1)]:[r,e]};E("let",Sr+1,r=>!r&&br("let"));E("const",Sr+1,r=>!r&&br("const"));w("var",Sr,()=>(d(),["var",a(tt)]));var re=(...r)=>(r=r.map(e=>{if(typeof e=="string")return t=>{t[e]=void 0};if(e[0]==="="){let[,t,n]=e,o=i(n);return typeof t=="string"?s=>{s[t]=o(s)}:s=>B(t,o(s),s)}return i(e)}),e=>{for(let t of r)t(e)});p("let",re);p("const",re);p("var",r=>typeof r=="string"?e=>{e[r]=void 0}:()=>{});var D=Symbol("break"),z=Symbol("continue"),K=Symbol("return");var nt=200;w("function",nt,()=>{d();let r=!1;c[u]==="*"&&(r=!0,h(),d());let e=k(m.id);return e&&d(),r?["function*",e,N()||null,U()]:["function",e,N()||null,U()]});p("function",(r,e,t)=>{t=t?i(t):()=>{};let n=e?e[0]===","?e.slice(1):[e]:[],o=null,s=-1,l=n[n.length-1];return Array.isArray(l)&&l[0]==="..."&&(s=n.length-1,o=l[1],n.length--),f=>{let y=(...g)=>{let S={};n.forEach((T,_)=>S[T]=g[_]),o&&(S[o]=g.slice(s));let P=new Proxy(S,{get:(T,_)=>_ in T?T[_]:f[_],set:(T,_,fe)=>((_ in T?T:f)[_]=fe,!0),has:(T,_)=>_ in T||_ in f});try{return t(P)}catch(T){if(T?.type===K)return T.value;throw T}};return r&&(f[r]=y),y}});p("function*",(r,e,t)=>{throw Error("Generator functions are not supported in evaluation")});var pr=140,kr=20;R("await",pr);w("yield",pr,()=>(d(),c[u]==="*"?(h(),d(),["yield*",a(kr)]):["yield",a(kr)]));w("async",pr,()=>{if(d(),I("function"))return["async",a(pr)];let r=a(kr-.5);return r&&["async",r]});p("async",r=>{let e=i(r);return t=>{let n=e(t);return async function(...o){return n(...o)}}});p("await",r=>(r=i(r),async e=>await r(e)));p("yield",r=>(r=r?i(r):null,e=>{throw{__yield__:r?r(e):void 0}}));p("yield*",r=>(r=i(r),e=>{throw{__yield_all__:r(e)}}));var vr=200,ot=140,it=90,st=Symbol("static");X("super",Symbol.for("super"));R("static",ot);A("instanceof",it);E("#",vr,r=>{if(r)return;let e=k(m.id);return e?"#"+e:void 0});w("class",vr,()=>{d();let r=k(m.id)||null;if(r==="extends")r=null,d();else{if(d(),!I("extends"))return["class",r,null,U()];h(7),d()}return["class",r,a(vr),U()]});var pt=r=>{throw Error(r)};p("instanceof",(r,e)=>(r=i(r),e=i(e),t=>r(t)instanceof e(t)));p("class",(r,e,t)=>(e=e?i(e):null,t=t?i(t):null,n=>{let o=e?e(n):Object,s=function(...l){if(!(this instanceof s))return pt("Class constructor must be called with new");let f=e?Reflect.construct(o,l,s):this;return s.prototype.__constructor__&&s.prototype.__constructor__.apply(f,l),f};if(Object.setPrototypeOf(s.prototype,o.prototype),Object.setPrototypeOf(s,o),t){let l=Object.create(n);l.super=o;let f=t(l),y=Array.isArray(f)&&typeof f[0]?.[0]=="string"?f:[];for(let[g,S]of y)g==="constructor"?s.prototype.__constructor__=S:s.prototype[g]=S}return r&&(n[r]=s),s}));p("static",r=>(r=i(r),e=>[[st,r(e)]]));var lt=140,Tr=47,ft=92,ut=r=>r===ft?2:r&&r!==Tr,mt=r=>r===103||r===105||r===109||r===115||r===117||r===121;E("/",lt,r=>{if(r)return;let e=c.charCodeAt(u);if(e===Tr||e===42||e===43||e===63||e===61)return;let t=k(ut);c.charCodeAt(u)===Tr||v("Unterminated regex"),h();let n=k(mt);try{new RegExp(t,n)}catch(o){v("Invalid regex: "+o.message)}return n?["//",t,n]:["//",t]});p("//",(r,e)=>{let t=new RegExp(r,e||"");return()=>t});var ct=5,dt=59,at=()=>{let r=u;return d()===dt&&h(),d(),I("else")?(h(4),!0):(O(r),!1)};w("if",ct+1,()=>{d();let r=["if",N(),L()];return at()&&r.push(L()),r});p("if",(r,e,t)=>(r=i(r),e=i(e),t=t!==void 0?i(t):null,n=>r(n)?e(n):t?.(n)));var Y=(r,e)=>{try{return{v:r(e)}}catch(t){if(t?.type===D)return{b:1};if(t?.type===z)return{c:1};if(t?.type===K)return{r:1,v:t.value};throw t}},Q=5,J=125,V=59;w("while",Q+1,()=>(d(),["while",N(),L()]));w("do",Q+1,()=>(r=>(d(),h(5),d(),["do",r,N()]))(L()));w("for",Q+1,()=>(d(),I("await")?(h(5),d(),["for await",N(),L()]):["for",N(),L()]));w("break",Q+1,()=>{m.asi&&(m.newline=!1);let r=u;d();let e=c.charCodeAt(u);if(!e||e===J||e===V||m.newline)return["break"];let t=k(m.id);if(!t)return["break"];d();let n=c.charCodeAt(u);return!n||n===J||n===V||m.newline?["break",t]:(O(r),["break"])});w("continue",Q+1,()=>{m.asi&&(m.newline=!1);let r=u;d();let e=c.charCodeAt(u);if(!e||e===J||e===V||m.newline)return["continue"];let t=k(m.id);if(!t)return["continue"];d();let n=c.charCodeAt(u);return!n||n===J||n===V||m.newline?["continue",t]:(O(r),["continue"])});w("return",Q+1,()=>{m.asi&&(m.newline=!1),d();let r=c.charCodeAt(u);return!r||r===J||r===V||m.newline?["return"]:["return",a(Q)]});p("while",(r,e)=>(r=i(r),e=i(e),t=>{let n,o;for(;r(t)&&!(n=Y(e,t)).b;){if(n.r)return n.v;n.c||(o=n.v)}return o}));p("do",(r,e)=>(r=i(r),e=i(e),t=>{let n,o;do{if((n=Y(r,t)).b)break;if(n.r)return n.v;n.c||(o=n.v)}while(e(t));return o}));p("for",(r,e)=>{if(Array.isArray(r)&&r[0]===";"){let[,t,n,o]=r;return t=t?i(t):null,n=n?i(n):()=>!0,o=o?i(o):null,e=i(e),s=>{let l,f;for(t?.(s);n(s)&&!(l=Y(e,s)).b;o?.(s)){if(l.r)return l.v;l.c||(f=l.v)}return f}}if(Array.isArray(r)&&(r[0]==="in"||r[0]==="of")){let[t,n,o]=r;if(Array.isArray(n)&&(n[0]==="let"||n[0]==="const"||n[0]==="var")&&(n=n[1]),t==="in")return ht(n,o,e);if(t==="of")return At(n,o,e)}});var At=(r,e,t)=>{e=i(e),t=i(t);let n=Array.isArray(r);return o=>{let s,l,f=n?null:o[r];for(let y of e(o)){if(n?B(r,y,o):o[r]=y,(s=Y(t,o)).b)break;if(s.r)return s.v;s.c||(l=s.v)}return n||(o[r]=f),l}},ht=(r,e,t)=>{e=i(e),t=i(t);let n=Array.isArray(r);return o=>{let s,l,f=n?null:o[r];for(let y in e(o)){if(n?B(r,y,o):o[r]=y,(s=Y(t,o)).b)break;if(s.r)return s.v;s.c||(l=s.v)}return n||(o[r]=f),l}};p("break",()=>()=>{throw{type:D}});p("continue",()=>()=>{throw{type:z}});p("return",r=>(r=r!==void 0?i(r):null,e=>{throw{type:K,value:r?.(e)}}));var Z=5;w("try",Z+1,()=>["try",U()]);Cr("catch",Z+1,r=>(d(),["catch",r,N(),U()]));Cr("finally",Z+1,r=>["finally",r,U()]);w("throw",Z+1,()=>{if(m.asi&&(m.newline=!1),d(),m.newline)throw SyntaxError("Unexpected newline after throw");return["throw",a(Z)]});p("try",r=>(r=r?i(r):null,e=>r?.(e)));p("catch",(r,e,t)=>{let n=r?.[1]?i(r[1]):null;return t=t?i(t):null,o=>{let s;try{s=n?.(o)}catch(l){if(l?.type===D||l?.type===z||l?.type===K)throw l;if(e!==null&&t){let f=e in o,y=o[e];o[e]=l;try{s=t(o)}finally{f?o[e]=y:delete o[e]}}else if(e===null)throw l}return s}});p("finally",(r,e)=>(r=r?i(r):null,e=e?i(e):null,t=>{let n;try{n=r?.(t)}finally{e?.(t)}return n}));p("throw",r=>(r=i(r),e=>{throw r(e)}));var ne=5,yt=20,ee=58,gt=59,oe=125,ie=(r,e=r.charCodeAt(0),t=C[e])=>C[e]=(n,o,s)=>I(r)&&!n&&(m.reserved=1)||t?.(n,o,s);ie("case");ie("default");var te=r=>{let e=[];for(;(r=d())!==oe&&!I("case")&&!I("default");){if(r===gt){h();continue}e.push(a(ne-.5))||v()}return e.length>1?[";",...e]:e[0]||null},Et=()=>{d()===123||v("Expected {"),h();let r=[];for(;d()!==oe;)if(I("case")){O(u+4),d();let e=a(yt-.5);d()===ee&&h(),r.push(["case",e,te()])}else I("default")?(O(u+7),d()===ee&&h(),r.push(["default",te()])):v("Expected case or default");return h(),r};w("switch",ne+1,()=>(d(),["switch",N(),...Et()]));p("switch",(r,...e)=>(r=i(r),e.length?(e=e.map(t=>[t[0]==="case"?i(t[1]):null,(t[0]==="case"?t[2]:t[1])?.[0]===";"?(t[0]==="case"?t[2]:t[1]).slice(1).map(i):(t[0]==="case"?t[2]:t[1])?[i(t[0]==="case"?t[2]:t[1])]:[]]),t=>{let n=r(t),o=!1,s;for(let[f,y]of e)if(o||f===null||f(t)===n)for(o=!0,l=0;l<y.length;l++)try{s=y[l](t)}catch(g){if(g?.type===D)return g.value??s;throw g}var l;return s}):t=>r(t)));var se=5;w("debugger",se+1,()=>["debugger"]);w("with",se+1,()=>(d(),["with",N(),L()]));var Ir=5,$=10,pe=42,wt=C[pe];C[pe]=(r,e)=>r?wt?.(r,e):(h(),"*");E("from",$+1,r=>r?r[0]!=="="&&r[0]!==","&&(d(),["from",r,a($+1)]):!1);E("as",$+2,r=>r?(d(),["as",r,a($+2)]):!1);w("import",Ir,()=>I(".meta")?(h(5),["import.meta"]):["import",a($)]);w("export",Ir,()=>(d(),["export",a(Ir)]));w("default",$+1,()=>d()!==58&&(d(),["default",a($)]));p("import",()=>()=>{});p("export",()=>()=>{});p("from",(r,e)=>()=>{});p("as",(r,e)=>()=>{});p("default",r=>i(r));var le=5;m.asi=(r,e,t)=>{if(e>=le)return;let n=t(le-.5);if(n)return r?.[0]!==";"?[";",r,n]:(r.push(n),r)};export{ur as access,A as binary,i as compile,c as cur,Qr as default,v as err,a as expr,H as group,Ct as id,u as idx,X as literal,q as loc,C as lookup,fr as nary,k as next,p as operator,lr as operators,N as parens,m as parse,O as seek,h as skip,d as space,E as token,R as unary,I as word};
|