subscript 5.3.0 → 5.3.1
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/justin.min.js +1 -1
- package/package.json +4 -4
- package/parse.js +2 -2
- package/subscript.js +1 -1
- package/subscript.min.js +1 -1
package/justin.min.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
|
|
1
|
+
const e=r=>Array.isArray(r)&&("string"==typeof r[0]||e(r[0])),r=(n,o={},s,a)=>e(n)?("string"==typeof(s=n[0])&&(a=t[s]),"function"!=typeof(s=a||r(s,o))?s:s.call(...n.map((e=>r(e,o))))):n&&"string"==typeof n?'"'===n[0]?n.slice(1,-1):"@"===n[0]?n.slice(1):n in o?o[n]:n:n,t={};let n,o;r.operator=(e,r)=>t[e]=2==r.length?(...e)=>e.reduce(r):r;const s=(e,r)=>(o=e,n=0,r=p(),n<o.length?a():d(r)),a=(e="Bad syntax")=>{throw Error(e+" `"+o[n]+"` at "+n)},f=(e=1,r=n)=>{if("number"==typeof e)n+=e;else for(;e(i());)n++;return o.slice(r,n)},i=(e=0)=>o.charCodeAt(n+e),l=(e=1)=>o.substr(n,e),p=(e=0,r,t,o,f=0,i,l)=>{for(;(t=s.space())&&(l=y[t]?.(o,e)||!o&&u(t));)o=l;return r&&(t!=r?a("Unclosed paren"):n++),o};s.space=e=>{for(;(e=i())<=32;)n++;return e};const c=s.token=[],u=(e,r=0,t)=>{for(;r<c.length;)if(t=c[r++](e))return t},y=[];s.operator=(e,r=0,t=0,o,a=e.charCodeAt(0),c=e.length,u=y[a],h=t<=0&&e.toUpperCase()!==e)=>(o=t?t>0?e=>e&&[f(c),d(e)]:t<0?e=>!e&&[f(c),d(p(r-1))]:t:t=>{t=[e,d(t)];do{n+=c,t.push(d(p(r)))}while(s.space()==a&&(c<2||l(c)==e)&&(!h||i(c)<=32));return t},y[a]=(t,n)=>n<r&&(c<2||l(c)==e)&&(!h||i(c)<=32)&&o(t)||u&&u(t,n));const d=e=>Array.isArray(e)?e:(e||a()).valueOf();s.token.push((e=>(e=f((e=>e>47&&e<58||46==e)))&&((69==i()||101==i())&&(e+=f(2)+f((e=>e>=48&&e<=57))),isNaN(e=new Number(e))?a("Bad number"):e)),((e,r,t,n)=>{if(34===e||39===e){for(r=l(),f(),n="";(t=i())-e;)92===t?(f(),n+=h[l()]||l()):n+=l(),f();return f(),r+n+r}}),(e=>f((e=>e>=48&&e<=57||e>=65&&e<=90||e>=97&&e<=122||36==e||95==e||e>=192&&215!=e&&247!=e))));const h={n:"\n",r:"\r",t:"\t",b:"\b",f:"\f",v:"\v"};s.space=e=>{for(;(e=i())<=32||47===e;)if(e<=32)f();else if(47===e)if(42===i(1))f(2),f((e=>42!==e&&47!==i(1))),f(2);else{if(47!==i(1))break;f(2),f((e=>e>=32))}return e};const g=(e,r=2,t)=>{for(let n=0;n<t.length;n+=r)e(t[n],t[n+1],t[n+2])};g(s.operator,3,[",",1,,"|",6,,"||",4,,"&",8,,"&&",5,,"^",7,,"==",9,,"!=",9,,">",10,,">=",10,,">>",11,,">>>",11,,"<",10,,"<=",10,,"<<",11,,"+",12,,"+",15,-1,"++",15,-1,"++",15,1,"-",12,,"-",15,-1,"--",15,-1,"--",15,1,"!",15,-1,"*",13,,"/",13,,"%",13,,".",18,(e,r)=>e&&[f(),e,"string"==typeof(r=p(18))?'"'+r+'"':r.valueOf()],"[",18,e=>(f(),[".",e,d(p(0,93))]),"]",,,"(",18,(e,r)=>(f(),r=p(0,41),Array.isArray(r)&&","===r[0]?(r[0]=e,r):r?[e,d(r)]:[e]),"(",19,(e,r)=>!e&&(f(),p(0,41)||a()),")",,,";",1,,"===",9,,"!==",9,,"**",14,,"~",15,-1,"?",3,e=>{let r,t;return e||a("Expected expression"),f(),s.space(),r=p(),58!==i()&&a("Expected :"),f(),s.space(),t=p(),["?:",e,r,t]},"}",,,":",,,"in",10,e=>i(2)<=32&&[f(2),'"'+e+'"',p(10)],"[",20,(e,r)=>!e&&(f(),(r=p(0,93))?","==r[0]?(r[0]="[",r):["[",r]:["["]),"{",20,(e,r)=>!e&&(f(),(r=p(0,125))?":"==r[0]?["{",r]:","==r[0]?(r[0]="{",r):["{",r]:["{"]),"null",20,e=>!e&&(f(4),A(null)),"false",20,e=>!e&&(f(5),A(!1)),"true",20,e=>!e&&(f(4),A(!0)),"undefined",20,e=>!e&&(f(9),A(void 0))]);const A=e=>({valueOf:()=>e});g(r.operator,2,["!",e=>!e,"++",e=>++e,"--",e=>--e,".",(e,r)=>e?e[r]:e,"%",(e,r)=>e%r,"/",(e,r)=>e/r,"*",(e,r)=>e*r,"+",(e,r)=>e+r,"-",(...e)=>e.length<2?-e:e.reduce(((e,r)=>e-r)),">>>",(e,r)=>e>>>r,">>",(e,r)=>e>>r,"<<",(e,r)=>e<<r,">=",(e,r)=>e>=r,">",(e,r)=>e>r,"<=",(e,r)=>e<=r,"<",(e,r)=>e<r,"!=",(e,r)=>e!=r,"==",(e,r)=>e==r,"&",(e,r)=>e&r,"^",(e,r)=>e^r,"|",(e,r)=>e|r,"&&",(...e)=>e.every(Boolean),"||",(...e)=>e.some(Boolean),",",(e,r)=>r,"**",(...e)=>e.reduceRight(((e,r)=>Math.pow(r,e))),"~",e=>~e,"?:",(e,r,t)=>e?r:t,"in",(e,r)=>e in r,"[",(...e)=>Array(...e),"{",(...e)=>Object.fromEntries(e),":",(e,r)=>[e,r]]);var b=e=>(e="string"==typeof e?s(e):e,t=>r(e,t));export{b as default,r as evaluate,s as parse};
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "subscript",
|
|
3
|
-
"version": "5.3.
|
|
3
|
+
"version": "5.3.1",
|
|
4
4
|
"description": "Microlanguage with common syntax for JS/C++/Python/Rust",
|
|
5
5
|
"main": "subscript.js",
|
|
6
6
|
"type": "module",
|
|
@@ -18,9 +18,9 @@
|
|
|
18
18
|
"test": "test"
|
|
19
19
|
},
|
|
20
20
|
"scripts": {
|
|
21
|
-
"build": "
|
|
21
|
+
"build": "rollup subscript.js --file subscript.min.js --format esm --name \"Subscript\"",
|
|
22
22
|
"minify": "terser subscript.min.js -o subscript.min.js --module -c passes=3 -m",
|
|
23
|
-
"build-justin": "
|
|
23
|
+
"build-justin": "rollup justin.js --file justin.min.js --format esm --name \"Justin\"",
|
|
24
24
|
"minify-justin": "terser justin.min.js -o justin.min.js --module -c passes=3 -m",
|
|
25
25
|
"test": "node test"
|
|
26
26
|
},
|
|
@@ -54,7 +54,7 @@
|
|
|
54
54
|
},
|
|
55
55
|
"homepage": "https://github.com/spectjs/subscript#readme",
|
|
56
56
|
"devDependencies": {
|
|
57
|
-
"
|
|
57
|
+
"rollup": "^2.60.2",
|
|
58
58
|
"terser": "^5.10.0"
|
|
59
59
|
}
|
|
60
60
|
}
|
package/parse.js
CHANGED
|
@@ -25,7 +25,7 @@ expr = (prec=0, end, cc, node, i=0, map, newNode) => {
|
|
|
25
25
|
) node = newNode;
|
|
26
26
|
|
|
27
27
|
// skip end character, if expected
|
|
28
|
-
if (end) cc != end ? err('Unclosed paren') :
|
|
28
|
+
if (end) cc != end ? err('Unclosed paren') : idx++
|
|
29
29
|
|
|
30
30
|
return node
|
|
31
31
|
},
|
|
@@ -50,7 +50,7 @@ operator = parse.operator = (
|
|
|
50
50
|
spaced=type<=0&&op.toUpperCase()!==op // non-postfix word operator must have space after
|
|
51
51
|
) => (
|
|
52
52
|
map = !type ? node => { // binary, consume same-op group
|
|
53
|
-
node = [op, node
|
|
53
|
+
node = [op, val(node)]
|
|
54
54
|
do { idx+=l, node.push(val(expr(prec))) }
|
|
55
55
|
while (parse.space()==c && (l<2||char(l)==op) && (!spaced||code(l)<=SPACE))
|
|
56
56
|
return node
|
package/subscript.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import parse, {skip, expr, code, tokens, val, operator as parseOp} from './parse.js'
|
|
1
|
+
import parse, {skip, expr, code, tokens, val, operator as parseOp, err} from './parse.js'
|
|
2
2
|
import evaluate, {operator as evalOp} from './evaluate.js'
|
|
3
3
|
|
|
4
4
|
const PERIOD=46, OPAREN=40, CPAREN=41, CBRACK=93, SPACE=32,
|
package/subscript.min.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
|
|
1
|
+
let e,r;const t=(t,n)=>(r=t,e=0,n=l(),e<r.length?o():c(n)),o=(t="Bad syntax")=>{throw Error(t+" `"+r[e]+"` at "+e)},n=(t=1,o=e)=>{if("number"==typeof t)e+=t;else for(;t(a());)e++;return r.slice(o,e)},a=(t=0)=>r.charCodeAt(e+t),s=(t=1)=>r.substr(e,t),l=(r=0,n,a,s,l=0,p,u)=>{for(;(a=t.space())&&(u=i[a]?.(s,r)||!s&&f(a));)s=u;return n&&(a!=n?o("Unclosed paren"):e++),s};t.space=r=>{for(;(r=a())<=32;)e++;return r};const p=t.token=[],f=(e,r=0,t)=>{for(;r<p.length;)if(t=p[r++](e))return t},i=[],u=t.operator=(r,o=0,p=0,f,u=r.charCodeAt(0),y=r.length,h=i[u],g=p<=0&&r.toUpperCase()!==r)=>(f=p?p>0?e=>e&&[n(y),c(e)]:p<0?e=>!e&&[n(y),c(l(o-1))]:p:n=>{n=[r,c(n)];do{e+=y,n.push(c(l(o)))}while(t.space()==u&&(y<2||s(y)==r)&&(!g||a(y)<=32));return n},i[u]=(e,t)=>t<o&&(y<2||s(y)==r)&&(!g||a(y)<=32)&&f(e)||h&&h(e,t)),c=e=>Array.isArray(e)?e:(e||o()).valueOf(),y=e=>Array.isArray(e)&&("string"==typeof e[0]||y(e[0])),h=(e,r={},t,o)=>y(e)?("string"==typeof(t=e[0])&&(o=g[t]),"function"!=typeof(t=o||h(t,r))?t:t.call(...e.map((e=>h(e,r))))):e&&"string"==typeof e?'"'===e[0]?e.slice(1,-1):"@"===e[0]?e.slice(1):e in r?r[e]:e:e,g={},d=h.operator=(e,r)=>g[e]=2==r.length?(...e)=>e.reduce(r):r;p.push((e=>(e=n((e=>e>47&&e<58||46==e)))&&((69==a()||101==a())&&(e+=n(2)+n((e=>e>=48&&e<=57))),isNaN(e=new Number(e))?o("Bad number"):e)),((e,r)=>34==e&&n()+n((r=>r-e))+n()),(e=>n((e=>e>=48&&e<=57||e>=65&&e<=90||e>=97&&e<=122||36==e||95==e||e>=192))));const A=(e,r=2,t)=>{for(let o=0;o<t.length;o+=r)e(t[o],t[o+1],t[o+2])};A(u,3,[",",1,,"|",6,,"||",4,,"&",8,,"&&",5,,"^",7,,"==",9,,"!=",9,,">",10,,">=",10,,">>",11,,">>>",11,,"<",10,,"<=",10,,"<<",11,,"+",12,,"+",15,-1,"++",15,-1,"++",16,1,"-",12,,"-",15,-1,"--",15,-1,"--",16,1,"!",15,-1,"*",13,,"/",13,,"%",13,,".",18,(e,r)=>e&&[n(),e,"string"==typeof(r=l(18))?'"'+r+'"':r.valueOf()],"[",18,e=>(n(),[".",e,c(l(0,93))]),"]",,,"(",18,(e,r)=>(n(),r=l(0,41),Array.isArray(r)&&","===r[0]?(r[0]=e,r):r?[e,c(r)]:[e]),"(",19,(e,r)=>!e&&(n(),l(0,41)||o()),")",,,]),A(d,2,["!",e=>!e,"++",e=>++e,"--",e=>--e,".",(e,r)=>e?e[r]:e,"%",(e,r)=>e%r,"/",(e,r)=>e/r,"*",(e,r)=>e*r,"+",(e,r)=>e+r,"-",(...e)=>e.length<2?-e:e.reduce(((e,r)=>e-r)),">>>",(e,r)=>e>>>r,">>",(e,r)=>e>>r,"<<",(e,r)=>e<<r,">=",(e,r)=>e>=r,">",(e,r)=>e>r,"<=",(e,r)=>e<=r,"<",(e,r)=>e<r,"!=",(e,r)=>e!=r,"==",(e,r)=>e==r,"&",(e,r)=>e&r,"^",(e,r)=>e^r,"|",(e,r)=>e|r,"&&",(...e)=>e.every(Boolean),"||",(...e)=>e.some(Boolean),",",(e,r)=>r]);var m=e=>(e="string"==typeof e?t(e):e,r=>h(e,r));export{m as default,h as evaluate,t as parse};
|