subscript 7.3.0 → 7.4.0

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/subscript.js CHANGED
@@ -1,128 +1,128 @@
1
- import parse, { lookup, nary, binary, unary, token, skip, err, expr } from './parse.js'
2
- import compile, { operator } from './compile.js'
3
-
4
- const OPAREN=40, CPAREN=41, OBRACK=91, CBRACK=93, SPACE=32, DQUOTE=34, PERIOD=46, _0=48, _9=57,
5
- PREC_SEQ=1, PREC_SOME=4, PREC_EVERY=5, PREC_OR=6, PREC_XOR=7, PREC_AND=8,
6
- PREC_EQ=9, PREC_COMP=10, PREC_SHIFT=11, PREC_SUM=12, PREC_MULT=13, PREC_UNARY=15, PREC_POSTFIX=16, PREC_CALL=18
7
-
8
- const subscript = s => (s=parse(s), ctx => (s.call?s:(s=compile(s)))(ctx)),
9
-
10
- // set any operator
11
- // right assoc is indicated by negative precedence (meaning go from right to left)
12
- set = (op, prec, fn) =>
13
- (fn[0]||fn[1]) ? (prec ? token(op,prec,fn[0]) : (lookup[op.charCodeAt(0)||1]=fn[0]), operator(op, fn[1])) : (
14
- !fn.length ? (
15
- nary(op, prec),
16
- operator(op, (...args) => (args=args.map(compile), ctx => fn(...args.map(arg=>arg(ctx)))))
17
- ) :
18
- fn.length > 1 ? (
19
- binary(op, Math.abs(prec), prec<0),
20
- operator(op,
21
- (a,b) => b && (a=compile(a),b=compile(b), !a.length&&!b.length ? (a=fn(a(),b()),()=>a) : ctx => fn(a(ctx),b(ctx)))
22
- )
23
- ) :
24
- (
25
- unary(op, prec),
26
- operator(op, (a,b) => !b && (a=compile(a), !a.length ? (a=fn(a()),()=>a) : ctx => fn(a(ctx))))
27
- )
28
- ),
29
-
30
- num = a => a ? err() : ['', (a=+skip(c => c === PERIOD || (c>=_0 && c<=_9) || (c===69||c===101?2:0)))!=a?err():a],
31
- // create increment-assign pair from fn
32
- inc = (op, prec, fn, ev) => [op, prec, [
33
- a => a ? [op==='++'?'-':'+',[op,a],['',1]] : [op,expr(prec-1)], // ++a → [++, a], a++ → [-,[++,a],1]
34
- ev = (a,b) => (
35
- a[0] === '(' ? ev(a[1]) : // ++(((a)))
36
- a[0] === '.' ? (b=a[2], a=compile(a[1]), ctx => fn(a(ctx), b)) : // ++a.b
37
- a[0] === '[' ? ([,a,b]=a, a=compile(a),b=compile(b), ctx => fn(a(ctx),b(ctx))) : // ++a[b]
38
- (ctx => fn(ctx,a)) // ++a
39
- )
40
- ]],
41
-
42
- list = [
43
- // literals
44
- // null operator returns first value (needed for direct literals)
45
- '',, [,v => () => v],
46
-
47
- '"',, [
48
- (a) => a ? err() : ['', (skip() + skip(c => c - DQUOTE ? 1 : 0) + (skip()||err('Bad string'))).slice(1,-1)],
49
- ],
50
-
51
- // .1
52
- '.',, [a=>!a && num()],
53
-
54
- // 0-9
55
- ...Array(10).fill(0).flatMap((_,i)=>[''+i,0,[num]]),
56
-
57
- // sequences
58
- ',', PREC_SEQ, (...args) => args[args.length-1],
59
- '||', PREC_SOME, (...args) => { let i=0, v; for (; !v && i < args.length; ) v = args[i++]; return v },
60
- '&&', PREC_EVERY, (...args) => { let i=0, v=true; for (; v && i < args.length; ) v = args[i++]; return v },
61
-
62
- // binaries
63
- '+', PREC_SUM, (a,b)=>a+b,
64
- '-', PREC_SUM, (a,b)=>a-b,
65
- '*', PREC_MULT, (a,b)=>a*b,
66
- '/', PREC_MULT, (a,b)=>a/b,
67
- '%', PREC_MULT, (a,b)=>a%b,
68
- '|', PREC_OR, (a,b)=>a|b,
69
- '&', PREC_AND, (a,b)=>a&b,
70
- '^', PREC_XOR, (a,b)=>a^b,
71
- '==', PREC_EQ, (a,b)=>a==b,
72
- '!=', PREC_EQ, (a,b)=>a!=b,
73
- '>', PREC_COMP, (a,b)=>a>b,
74
- '>=', PREC_COMP, (a,b)=>a>=b,
75
- '<', PREC_COMP, (a,b)=>a<b,
76
- '<=', PREC_COMP, (a,b)=>a<=b,
77
- '>>', PREC_SHIFT, (a,b)=>a>>b,
78
- '>>>', PREC_SHIFT, (a,b)=>a>>>b,
79
- '<<', PREC_SHIFT, (a,b)=>a<<b,
80
-
81
- // unaries
82
- '+', PREC_UNARY, a => +a,
83
- '-', PREC_UNARY, a => -a,
84
- '!', PREC_UNARY, a => !a,
85
-
86
- // increments
87
- ...inc('++', PREC_UNARY, (a,b) => ++a[b]),
88
- ...inc('--', PREC_UNARY, (a,b) => --a[b]),
89
-
90
- // a[b]
91
- '[', PREC_CALL, [
92
- a => a && ['[', a, expr(0,CBRACK)||err()],
93
- (a,b) => b && (a=compile(a), b=compile(b), ctx => a(ctx)[b(ctx)])
94
- ],
95
-
96
- // a.b
97
- '.', PREC_CALL, [
98
- (a,b) => a && (b=expr(PREC_CALL)) && ['.',a,b],
99
- (a,b) => (a=compile(a),b=!b[0]?b[1]:b, ctx => a(ctx)[b]) // a.true, a.1 → needs to work fine
100
- ],
101
-
102
- // (a,b,c), (a)
103
- '(', PREC_CALL, [
104
- a => !a && ['(', expr(0,CPAREN)||err()],
105
- compile
106
- ],
107
-
108
- // a(b,c,d), a()
109
- '(', PREC_CALL, [
110
- a => a && ['(', a, expr(0,CPAREN)||''],
111
- (a,b,path,args) => b!=null && (
112
- args = b=='' ? () => [] : // a()
113
- b[0] === ',' ? (b=b.slice(1).map(compile), ctx => b.map(a=>a(ctx))) : // a(b,c)
114
- (b=compile(b), ctx => [b(ctx)]), // a(b)
115
-
116
- a[0] === '.' ? (path=a[2], a=compile(a[1]), ctx => a(ctx)[path](...args(ctx))) : // a.b(...args)
117
- a[0] === '[' ? (path=compile(a[2]), a=compile(a[1]), ctx => a(ctx)[path(ctx)](...args(ctx))) : // a[b](...args)
118
- (a=compile(a), ctx => a(ctx)(...args(ctx))) // a(...args)
119
- )
120
- ]
121
- ]
122
-
123
- for (;list[2];) set(...list.splice(0,3))
124
-
125
- export default subscript
126
- export {set}
127
- export * from './parse.js'
128
- export * from './compile.js'
1
+ import parse, { lookup, nary, binary, unary, token, skip, err, expr } from './parse.js'
2
+ import compile, { operator } from './compile.js'
3
+
4
+ const OPAREN=40, CPAREN=41, OBRACK=91, CBRACK=93, SPACE=32, DQUOTE=34, PERIOD=46, _0=48, _9=57,
5
+ PREC_SEQ=1, PREC_SOME=4, PREC_EVERY=5, PREC_OR=6, PREC_XOR=7, PREC_AND=8,
6
+ PREC_EQ=9, PREC_COMP=10, PREC_SHIFT=11, PREC_SUM=12, PREC_MULT=13, PREC_UNARY=15, PREC_POSTFIX=16, PREC_CALL=18
7
+
8
+ const subscript = s => (s=parse(s),ctx => (s.call?s:(s=compile(s)))(ctx)),
9
+
10
+ // set any operator
11
+ // right assoc is indicated by negative precedence (meaning go from right to left)
12
+ set = (op, prec, fn) =>
13
+ (fn[0]||fn[1]) ? (prec ? token(op,prec,fn[0]) : (lookup[op.charCodeAt(0)||1]=fn[0]), operator(op, fn[1])) : (
14
+ !fn.length ? (
15
+ nary(op, Math.abs(prec), prec<0),
16
+ operator(op, (...args) => (args=args.map(compile), ctx => fn(...args.map(arg=>arg(ctx)))))
17
+ ) :
18
+ fn.length > 1 ? (
19
+ binary(op, Math.abs(prec), prec<0),
20
+ operator(op,
21
+ (a,b) => b && (a=compile(a),b=compile(b), !a.length&&!b.length ? (a=fn(a(),b()),()=>a) : ctx => fn(a(ctx),b(ctx)))
22
+ )
23
+ ) :
24
+ (
25
+ unary(op, prec),
26
+ operator(op, (a,b) => !b && (a=compile(a), !a.length ? (a=fn(a()),()=>a) : ctx => fn(a(ctx))))
27
+ )
28
+ ),
29
+
30
+ num = a => a ? err() : ['', (a=+skip(c => c === PERIOD || (c>=_0 && c<=_9) || (c===69||c===101?2:0)))!=a?err():a],
31
+ // create increment-assign pair from fn
32
+ inc = (op, prec, fn, ev) => [op, prec, [
33
+ a => a ? [op==='++'?'-':'+',[op,a],['',1]] : [op,expr(prec-1)], // ++a → [++, a], a++ → [-,[++,a],1]
34
+ ev = (a,b) => (
35
+ a[0] === '(' ? ev(a[1]) : // ++(((a)))
36
+ a[0] === '.' ? (b=a[2], a=compile(a[1]), ctx => fn(a(ctx), b)) : // ++a.b
37
+ a[0] === '[' ? ([,a,b]=a, a=compile(a),b=compile(b), ctx => fn(a(ctx),b(ctx))) : // ++a[b]
38
+ (ctx => fn(ctx,a)) // ++a
39
+ )
40
+ ]],
41
+
42
+ list = [
43
+ // literals
44
+ // null operator returns first value (needed for direct literals)
45
+ '',, [,v => () => v],
46
+
47
+ '"',, [
48
+ (a) => a ? err() : ['', (skip() + skip(c => c - DQUOTE ? 1 : 0) + (skip()||err('Bad string'))).slice(1,-1)],
49
+ ],
50
+
51
+ // .1
52
+ '.',, [a=>!a && num()],
53
+
54
+ // 0-9
55
+ ...Array(10).fill(0).flatMap((_,i)=>[''+i,0,[num]]),
56
+
57
+ // sequences
58
+ ',', PREC_SEQ, (...args) => args[args.length-1],
59
+ '||', PREC_SOME, (...args) => { let i=0, v; for (; !v && i < args.length; ) v = args[i++]; return v },
60
+ '&&', PREC_EVERY, (...args) => { let i=0, v=true; for (; v && i < args.length; ) v = args[i++]; return v },
61
+
62
+ // binaries
63
+ '+', PREC_SUM, (a,b)=>a+b,
64
+ '-', PREC_SUM, (a,b)=>a-b,
65
+ '*', PREC_MULT, (a,b)=>a*b,
66
+ '/', PREC_MULT, (a,b)=>a/b,
67
+ '%', PREC_MULT, (a,b)=>a%b,
68
+ '|', PREC_OR, (a,b)=>a|b,
69
+ '&', PREC_AND, (a,b)=>a&b,
70
+ '^', PREC_XOR, (a,b)=>a^b,
71
+ '==', PREC_EQ, (a,b)=>a==b,
72
+ '!=', PREC_EQ, (a,b)=>a!=b,
73
+ '>', PREC_COMP, (a,b)=>a>b,
74
+ '>=', PREC_COMP, (a,b)=>a>=b,
75
+ '<', PREC_COMP, (a,b)=>a<b,
76
+ '<=', PREC_COMP, (a,b)=>a<=b,
77
+ '>>', PREC_SHIFT, (a,b)=>a>>b,
78
+ '>>>', PREC_SHIFT, (a,b)=>a>>>b,
79
+ '<<', PREC_SHIFT, (a,b)=>a<<b,
80
+
81
+ // unaries
82
+ '+', PREC_UNARY, a => +a,
83
+ '-', PREC_UNARY, a => -a,
84
+ '!', PREC_UNARY, a => !a,
85
+
86
+ // increments
87
+ ...inc('++', PREC_UNARY, (a,b) => ++a[b]),
88
+ ...inc('--', PREC_UNARY, (a,b) => --a[b]),
89
+
90
+ // a[b]
91
+ '[', PREC_CALL, [
92
+ a => a && ['[', a, expr(0,CBRACK)||err()],
93
+ (a,b) => b && (a=compile(a), b=compile(b), ctx => a(ctx)[b(ctx)])
94
+ ],
95
+
96
+ // a.b
97
+ '.', PREC_CALL, [
98
+ (a,b) => a && (b=expr(PREC_CALL)) && ['.',a,b],
99
+ (a,b) => (a=compile(a),b=!b[0]?b[1]:b, ctx => a(ctx)[b]) // a.true, a.1 → needs to work fine
100
+ ],
101
+
102
+ // (a,b,c), (a)
103
+ '(', PREC_CALL, [
104
+ a => !a && ['(', expr(0,CPAREN)||err()],
105
+ compile
106
+ ],
107
+
108
+ // a(b,c,d), a()
109
+ '(', PREC_CALL, [
110
+ (a,b) => a && (b = expr(0,CPAREN), b ? ['(', a, b] : ['(', a, '']),
111
+ (a,b,path,args) => b!=null && (
112
+ args = b=='' ? () => [] : // a()
113
+ b[0] === ',' ? (b=b.slice(1).map(compile), ctx => b.map(a=>a(ctx))) : // a(b,c)
114
+ (b=compile(b), ctx => [b(ctx)]), // a(b)
115
+
116
+ a[0] === '.' ? (path=a[2], a=compile(a[1]), ctx => a(ctx)[path](...args(ctx))) : // a.b(...args)
117
+ a[0] === '[' ? (path=compile(a[2]), a=compile(a[1]), ctx => a(ctx)[path(ctx)](...args(ctx))) : // a[b](...args)
118
+ (a=compile(a), ctx => a(ctx)(...args(ctx))) // a(...args)
119
+ )
120
+ ]
121
+ ]
122
+
123
+ for (;list[2];) set(...list.splice(0,3))
124
+
125
+ export default subscript
126
+ export {set}
127
+ export * from './parse.js'
128
+ export * from './compile.js'
package/subscript.min.js CHANGED
@@ -1 +1 @@
1
- let t,e,l=l=>(t=0,e=l,l=s(),e[t]?r():l||""),r=(l="Bad syntax",r=e[t],n=e.slice(0,t).split("\n"),a=n.pop())=>{throw SyntaxError(`${l} \`${r}\` at ${n.length}:${a.length}`)},n=(l="Bad syntax",r=e[t],n=e.slice(0,t).split("\n"),a=n.pop())=>{let s=e.slice(t-10,t).split("\n").pop(),h=e.slice(t+1,t+10).split("\n").shift(),p=n.length+":"+a.length;throw SyntaxError(`${l} at ${p} \`${s+r+h}\`\n${" ".repeat(18+l.length+p.length+s.length+1)}^`)},a=(l=1,r=t,n)=>{if("number"==typeof l)t+=l;else for(;n=l(e.charCodeAt(t));)t+=n;return e.slice(r,t)},s=(e=0,n,a,s,h,p)=>{for(;(a=l.space())&&(h=((p=i[a])&&p(s,e))??(!s&&l.id()));)s=h;return n&&(a==n?t++:r()),s},h=t=>t>=48&&t<=57||t>=65&&t<=90||t>=97&&t<=122||36==t||95==t||t>=192&&215!=t&&247!=t,p=l.space=l=>{for(;(l=e.charCodeAt(t))<=32;)t++;return l},o=l.id=t=>a(h),i=[],c=(l,r=32,n,a=l.charCodeAt(0),s=l.length,p=i[a],o=l.toUpperCase()!==l)=>i[a]=(a,i,c=t)=>i<r&&(s<2||e.substr(t,s)==l)&&(!o||!h(e.charCodeAt(t+s)))&&(t+=s,n(a,i))||(t=c,p?.(a,i)),g=(t,e,l)=>c(t,e,((r,n)=>r&&(n=s(e-!!l))&&[t,r,n])),f=(t,e,l)=>c(t,e,(r=>l?r&&[t,r]:!r&&(r=s(e-1))&&[t,r])),d=(t,e,l)=>c(t,e,((r,n)=>r&&((n=s(e))||l)&&(r[0]===t&&r[2]?(n&&r.push(n),r):[t,r,n])));const u=t=>Array.isArray(t)?y[t[0]](...t.slice(1)):e=>e?.[t],y={},A=(t,e,l=y[t])=>y[t]=(...t)=>e(...t)||l&&l(...t),$=t=>(t=l(t),e=>(t.call?t:t=u(t))(e)),C=(t,e,l)=>l[0]||l[1]?(e?c(t,e,l[0]):i[t.charCodeAt(0)||1]=l[0],A(t,l[1])):l.length?l.length>1?(g(t,Math.abs(e),e<0),A(t,((t,e)=>e&&(t=u(t),e=u(e),t.length||e.length?r=>l(t(r),e(r)):(t=l(t(),e()),()=>t))))):(f(t,e),A(t,((t,e)=>!e&&((t=u(t)).length?e=>l(t(e)):(t=l(t()),()=>t))))):(d(t,e),A(t,((...t)=>(t=t.map(u),e=>l(...t.map((t=>t(e)))))))),m=t=>t?r():["",(t=+a((t=>46===t||t>=48&&t<=57||(69===t||101===t?2:0))))!=t?r():t],x=(t,e,l,r)=>[t,e,[l=>l?["++"===t?"-":"+",[t,l],["",1]]:[t,s(e-1)],r=(t,e)=>"("===t[0]?r(t[1]):"."===t[0]?(e=t[2],t=u(t[1]),r=>l(t(r),e)):"["===t[0]?([,t,e]=t,t=u(t),e=u(e),r=>l(t(r),e(r))):e=>l(e,t)]],b=["",,[,t=>()=>t],'"',,[t=>t?r():["",(a()+a((t=>t-34?1:0))+(a()||r("Bad string"))).slice(1,-1)]],".",,[t=>!t&&m()],...Array(10).fill(0).flatMap(((t,e)=>[""+e,0,[m]])),",",1,(...t)=>t[t.length-1],"||",4,(...t)=>{let e,l=0;for(;!e&&l<t.length;)e=t[l++];return e},"&&",5,(...t)=>{let e=0,l=!0;for(;l&&e<t.length;)l=t[e++];return l},"+",12,(t,e)=>t+e,"-",12,(t,e)=>t-e,"*",13,(t,e)=>t*e,"/",13,(t,e)=>t/e,"%",13,(t,e)=>t%e,"|",6,(t,e)=>t|e,"&",8,(t,e)=>t&e,"^",7,(t,e)=>t^e,"==",9,(t,e)=>t==e,"!=",9,(t,e)=>t!=e,">",10,(t,e)=>t>e,">=",10,(t,e)=>t>=e,"<",10,(t,e)=>t<e,"<=",10,(t,e)=>t<=e,">>",11,(t,e)=>t>>e,">>>",11,(t,e)=>t>>>e,"<<",11,(t,e)=>t<<e,"+",15,t=>+t,"-",15,t=>-t,"!",15,t=>!t,...x("++",15,((t,e)=>++t[e])),...x("--",15,((t,e)=>--t[e])),"[",18,[t=>t&&["[",t,s(0,93)||r()],(t,e)=>e&&(t=u(t),e=u(e),l=>t(l)[e(l)])],".",18,[(t,e)=>t&&(e=s(18))&&[".",t,e],(t,e)=>(t=u(t),e=e[0]?e:e[1],l=>t(l)[e])],"(",18,[t=>!t&&["(",s(0,41)||r()],u],"(",18,[t=>t&&["(",t,s(0,41)||""],(t,e,l,r)=>null!=e&&(r=""==e?()=>[]:","===e[0]?(e=e.slice(1).map(u),t=>e.map((e=>e(t)))):(e=u(e),t=>[e(t)]),"."===t[0]?(l=t[2],t=u(t[1]),e=>t(e)[l](...r(e))):"["===t[0]?(l=u(t[2]),t=u(t[1]),e=>t(e)[l(e)](...r(e))):(t=u(t),e=>t(e)(...r(e))))]];for(;b[2];)C(...b.splice(0,3));export{g as binary,u as compile,e as cur,$ as default,r as err,s as expr,o as id,t as idx,h as isId,n as longErr,i as lookup,d as nary,A as operator,y as operators,l as parse,C as set,a as skip,p as space,c as token,f as unary};
1
+ let t,e,l=l=>(t=0,e=l,l=s(),e[t]?r():l||""),r=(l="Bad syntax",r=e[t],a=e.slice(0,t).split("\n"),n=a.pop())=>{throw SyntaxError(`${l} ${r?`\`${r}\` `:""}at ${a.length}:${n.length}`,a.length)},a=(l="Bad syntax",r=e[t],a=e.slice(0,t).split("\n"),n=a.pop())=>{let s=e.slice(t-10,t).split("\n").pop(),h=e.slice(t+1,t+10).split("\n").shift(),p=a.length+":"+n.length;throw EvalError(`${l} at ${p} \`${s+r+h}\`\n${" ".repeat(18+l.length+p.length+s.length+1)}^`)},n=(l=1,r=t,a)=>{if("number"==typeof l)t+=l;else for(;a=l(e.charCodeAt(t));)t+=a;return e.slice(r,t)},s=(e=0,a,n,s,h,p)=>{for(;(n=l.space())&&(h=((p=i[n])&&p(s,e))??(!s&&l.id()));)s=h;return a&&(n==a?t++:r()),s},h=t=>t>=48&&t<=57||t>=65&&t<=90||t>=97&&t<=122||36==t||95==t||t>=192&&215!=t&&247!=t,p=l.space=l=>{for(;(l=e.charCodeAt(t))<=32;)t++;return l},o=l.id=t=>n(h),i=[],c=(l,r=32,a,n=l.charCodeAt(0),s=l.length,p=i[n],o=l.toUpperCase()!==l)=>i[n]=(n,i,c=t)=>i<r&&(s<2||e.substr(t,s)==l)&&(!o||!h(e.charCodeAt(t+s)))&&(t+=s,a(n,i))||(t=c,p?.(n,i)),g=(t,e,l)=>c(t,e,((r,a)=>r&&(a=s(e-!!l))&&[t,r,a])),f=(t,e,l)=>c(t,e,(r=>l?r&&[t,r]:!r&&(r=s(e-1))&&[t,r])),d=(t,e,l)=>c(t,e,((r,a)=>(r||l&&(r=[t]))&&((a=s(e))||l)&&(r[0]===t&&r[2]?(a&&r.push(a),r):[t,r,a])));const u=t=>Array.isArray(t)?$[t[0]](...t.slice(1)):e=>e?.[t],$={},A=(t,e,l=$[t])=>$[t]=(...t)=>e(...t)||l&&l(...t),y=t=>(t=l(t),e=>(t.call?t:t=u(t))(e)),C=(t,e,l)=>l[0]||l[1]?(e?c(t,e,l[0]):i[t.charCodeAt(0)||1]=l[0],A(t,l[1])):l.length?l.length>1?(g(t,Math.abs(e),e<0),A(t,((t,e)=>e&&(t=u(t),e=u(e),t.length||e.length?r=>l(t(r),e(r)):(t=l(t(),e()),()=>t))))):(f(t,e),A(t,((t,e)=>!e&&((t=u(t)).length?e=>l(t(e)):(t=l(t()),()=>t))))):(d(t,Math.abs(e),e<0),A(t,((...t)=>(t=t.map(u),e=>l(...t.map((t=>t(e)))))))),m=t=>t?r():["",(t=+n((t=>46===t||t>=48&&t<=57||(69===t||101===t?2:0))))!=t?r():t],b=(t,e,l,r)=>[t,e,[l=>l?["++"===t?"-":"+",[t,l],["",1]]:[t,s(e-1)],r=(t,e)=>"("===t[0]?r(t[1]):"."===t[0]?(e=t[2],t=u(t[1]),r=>l(t(r),e)):"["===t[0]?([,t,e]=t,t=u(t),e=u(e),r=>l(t(r),e(r))):e=>l(e,t)]],x=["",,[,t=>()=>t],'"',,[t=>t?r():["",(n()+n((t=>t-34?1:0))+(n()||r("Bad string"))).slice(1,-1)]],".",,[t=>!t&&m()],...Array(10).fill(0).flatMap(((t,e)=>[""+e,0,[m]])),",",1,(...t)=>t[t.length-1],"||",4,(...t)=>{let e,l=0;for(;!e&&l<t.length;)e=t[l++];return e},"&&",5,(...t)=>{let e=0,l=!0;for(;l&&e<t.length;)l=t[e++];return l},"+",12,(t,e)=>t+e,"-",12,(t,e)=>t-e,"*",13,(t,e)=>t*e,"/",13,(t,e)=>t/e,"%",13,(t,e)=>t%e,"|",6,(t,e)=>t|e,"&",8,(t,e)=>t&e,"^",7,(t,e)=>t^e,"==",9,(t,e)=>t==e,"!=",9,(t,e)=>t!=e,">",10,(t,e)=>t>e,">=",10,(t,e)=>t>=e,"<",10,(t,e)=>t<e,"<=",10,(t,e)=>t<=e,">>",11,(t,e)=>t>>e,">>>",11,(t,e)=>t>>>e,"<<",11,(t,e)=>t<<e,"+",15,t=>+t,"-",15,t=>-t,"!",15,t=>!t,...b("++",15,((t,e)=>++t[e])),...b("--",15,((t,e)=>--t[e])),"[",18,[t=>t&&["[",t,s(0,93)||r()],(t,e)=>e&&(t=u(t),e=u(e),l=>t(l)[e(l)])],".",18,[(t,e)=>t&&(e=s(18))&&[".",t,e],(t,e)=>(t=u(t),e=e[0]?e:e[1],l=>t(l)[e])],"(",18,[t=>!t&&["(",s(0,41)||r()],u],"(",18,[(t,e)=>t&&((e=s(0,41))?["(",t,e]:["(",t,""]),(t,e,l,r)=>null!=e&&(r=""==e?()=>[]:","===e[0]?(e=e.slice(1).map(u),t=>e.map((e=>e(t)))):(e=u(e),t=>[e(t)]),"."===t[0]?(l=t[2],t=u(t[1]),e=>t(e)[l](...r(e))):"["===t[0]?(l=u(t[2]),t=u(t[1]),e=>t(e)[l(e)](...r(e))):(t=u(t),e=>t(e)(...r(e))))]];for(;x[2];)C(...x.splice(0,3));export{g as binary,u as compile,e as cur,y as default,r as err,s as expr,o as id,t as idx,h as isId,a as longErr,i as lookup,d as nary,A as operator,$ as operators,l as parse,C as set,n as skip,p as space,c as token,f as unary};