-
Notifications
You must be signed in to change notification settings - Fork 4
/
subscript.min.js
1 lines (1 loc) · 4.22 KB
/
subscript.min.js
1
let t,r,e=e=>(t=0,r=e,e=n(),r[t]?s():e||""),s=(e="Bad syntax",s=r.slice(0,t).split("\n"),o=s.pop())=>{let a=r.slice(t-108,t).split("\n").pop(),n=r.slice(t,t+108).split("\n").shift();throw EvalError(`${e} at ${s.length}:${o.length} \`${t>=108?"…":""}${a}┃${n}\``,"font-weight: bold")},o=(e,s=t,o)=>{for(;o=e(r.charCodeAt(t));)t+=o;return r.slice(s,t)},a=(e=1,s=t)=>(t+=e,r.slice(s,t)),n=(r=0,a,n,l,p,i)=>{for(;(n=e.space())&&(p=((i=c[n])&&i(l,r))??(!l&&o(e.id)));)l=p;return a&&(n==a?t++:s()),l};e.id=t=>t>=48&&t<=57||t>=65&&t<=90||t>=97&&t<=122||36==t||95==t||t>=192&&215!=t&&247!=t,e.space=e=>{for(;(e=r.charCodeAt(t))<=32;)t++;return e};let c=[],l=(s,o=32,a,n=s.charCodeAt(0),l=s.length,p=c[n],i=s.toUpperCase()!==s)=>c[n]=(n,c,d=t)=>c<o&&(l<2||r.substr(t,l)==s)&&(!i||!e.id(r.charCodeAt(t+l)))&&(t+=l,a(n,c))||(t=d,p?.(n,c)),p=(t,r,e=!1)=>l(t,r,((s,o)=>s&&(o=n(r-(e?.5:0)))&&[t,s,o])),i=(t,r,e)=>l(t,r,(s=>e?s&&[t,s]:!s&&(s=n(r-.5))&&[t,s])),d=(t,r)=>{l(t,r,((e,s)=>(s=n(r),(!e||e[0]!==t)&&(e=[t,e]),e.push(s),e)))},h=(t,r)=>l(t[0],r,(r=>!r&&[t,n(0,t.charCodeAt(1))])),f=(t,r)=>l(t[0],r,(r=>r&&[t[0],r,n(0,t.charCodeAt(1))]));const A=(t,r)=>[,(t=+o((t=>46===t||t>=48&&t<=57||(69===t||101===t?2:0))))!=t?s():t];c[46]=t=>!t&&A();for(let t=48;t<=57;t++)c[t]=t=>t?s():A();const u={n:"\n",r:"\r",t:"\t",b:"\b",f:"\f",v:"\v"},C=e=>(o,n,c="")=>{for(o&&s("Unexpected string"),a();(n=r.charCodeAt(t))-e;)92===n?(a(),n=a(),c+=u[n]||n):c+=a();return a()||s("Bad string"),[,c]};c[34]=C(34),c[39]=C(39);const g=t=>Array.isArray(t)?t[0]?$[t[0]](...t.slice(1)):()=>t[1]:g.id(t);g.id=t=>r=>r?.[t];const $={},m=(t,r,e=$[t])=>$[t]=(...t)=>r(...t)||e&&e(...t),v=(t,r,e,o,a)=>"()"===t[0]?v(t[1],r,e):"string"==typeof t?e=>r(e,t,e):"."===t[0]?(o=g(t[1]),a=t[2],t=>r(o(t),a,t)):"["===t[0]?(o=g(t[1]),a=g(t[2]),t=>r(o(t),a(t),t)):e?(t=g(t),e=>r([t(e)],0,e)):()=>s("Bad left value");f("()",17),m("(",((t,r,e)=>(e=r?","===r[0]?(r=r.slice(1).map((t=>t?g(t):err())),t=>r.map((r=>r(t)))):(r=g(r),t=>[r(t)]):()=>[],v(t,((t,r,s)=>t[r](...e(s))),!0)))),f("[]",17),m("[",((t,r)=>r?(t=g(t),r=g(r),e=>t(e)[r(e)]):err())),p(".",17),m(".",((t,r)=>(t=g(t),r=r[0]?r:r[1],e=>t(e)[r]))),h("()",17),m("()",(t=>(!t&&s("Empty ()"),g(t))));const y=(...t)=>(t=t.map(g),r=>t.map((t=>t(r))).pop());d(",",1),m(",",y),d(";",1),m(";",y),p("*",12),m("*",((t,r)=>r&&(t=g(t),r=g(r),e=>t(e)*r(e)))),p("/",12),m("/",((t,r)=>r&&(t=g(t),r=g(r),e=>t(e)/r(e)))),p("%",12),m("%",((t,r)=>r&&(t=g(t),r=g(r),e=>t(e)%r(e)))),p("*=",2,!0),m("*=",((t,r)=>(r=g(r),v(t,((t,e,s)=>t[e]*=r(s)))))),p("/=",2,!0),m("/=",((t,r)=>(r=g(r),v(t,((t,e,s)=>t[e]/=r(s)))))),p("%=",2,!0),m("%=",((t,r)=>(r=g(r),v(t,((t,e,s)=>t[e]%=r(s)))))),i("+",14),m("+",((t,r)=>!r&&(t=g(t),r=>+t(r)))),i("-",14),m("-",((t,r)=>!r&&(t=g(t),r=>-t(r)))),p("+",11),m("+",((t,r)=>r&&(t=g(t),r=g(r),e=>t(e)+r(e)))),p("-",11),m("-",((t,r)=>r&&(t=g(t),r=g(r),e=>t(e)-r(e)))),p("+=",2,!0),m("+=",((t,r)=>(r=g(r),v(t,((t,e,s)=>t[e]+=r(s)))))),p("-=",2,!0),m("-=",((t,r)=>(r=g(r),v(t,((t,e,s)=>t[e]-=r(s)))))),l("++",15,(t=>t?["++-",t]:["++",n(14)])),m("++",(t=>v(t,((t,r,e)=>++t[r])))),m("++-",(t=>v(t,((t,r,e)=>t[r]++)))),l("--",15,(t=>t?["--+",t]:["--",n(14)])),m("--",(t=>v(t,((t,r,e)=>--t[r])))),m("--+",(t=>v(t,((t,r,e)=>t[r]--)))),i("~",14),m("~",((t,r)=>!r&&(t=g(t),r=>~t(r)))),p("|",5),m("|",((t,r)=>r&&(t=g(t),r=g(r),e=>t(e)|r(e)))),p("&",7),m("&",((t,r)=>r&&(t=g(t),r=g(r),e=>t(e)&r(e)))),p("^",6),m("^",((t,r)=>r&&(t=g(t),r=g(r),e=>t(e)^r(e)))),p(">>",10),m(">>",((t,r)=>r&&(t=g(t),r=g(r),e=>t(e)>>r(e)))),p("<<",10),m("<<",((t,r)=>r&&(t=g(t),r=g(r),e=>t(e)<<r(e)))),p("==",8),m("==",((t,r)=>r&&(t=g(t),r=g(r),e=>t(e)==r(e)))),p("!=",8),m("!=",((t,r)=>r&&(t=g(t),r=g(r),e=>t(e)!=r(e)))),p(">",9),m(">",((t,r)=>r&&(t=g(t),r=g(r),e=>t(e)>r(e)))),p("<",9),m("<",((t,r)=>r&&(t=g(t),r=g(r),e=>t(e)<r(e)))),p(">=",9),m(">=",((t,r)=>r&&(t=g(t),r=g(r),e=>t(e)>=r(e)))),p("<=",9),m("<=",((t,r)=>r&&(t=g(t),r=g(r),e=>t(e)<=r(e)))),i("!",14),m("!",((t,r)=>!r&&(t=g(t),r=>!t(r)))),p("||",3),m("||",((t,r)=>(t=g(t),r=g(r),e=>t(e)||r(e)))),p("&&",4),m("&&",((t,r)=>(t=g(t),r=g(r),e=>t(e)&&r(e)))),p("=",2,!0),m("=",((t,r)=>(r=g(r),v(t,((t,e,s)=>t[e]=r(s))))));var b=t=>g(e(t));export{f as access,p as binary,g as compile,b as default,h as group,c as lookup,d as nary,m as operator,e as parse,v as prop,l as token,i as unary};