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/LICENSE +6 -6
- package/README.md +337 -376
- package/compile.js +8 -8
- package/justin.js +94 -94
- package/justin.min.js +1 -1
- package/package.json +83 -83
- package/parse.js +85 -85
- package/subscript.js +128 -128
- package/subscript.min.js +1 -1
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),
|
|
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,
|
|
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],
|
|
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};
|