From fdd800afa864a4a9ef72d09d003f31910b380ab2 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Sat, 7 Mar 2026 05:57:56 +0000 Subject: [PATCH 1/2] Initial plan From 13661e801b4965b0be4feab8f544a6d6ded30e54 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Sat, 7 Mar 2026 06:04:58 +0000 Subject: [PATCH 2/2] Add GLSL code formatting after preprocessing in demo Co-authored-by: 06wj <800043+06wj@users.noreply.github.com> --- demo/app.bundle.js | 2 +- demo/app.ts | 3 +- demo/index.html | 1 + lib/glslFormatter.js | 197 +++++++++++++++++++++++++++++++++++++++++++ 4 files changed, 201 insertions(+), 2 deletions(-) create mode 100644 lib/glslFormatter.js diff --git a/demo/app.bundle.js b/demo/app.bundle.js index 830acb6..653cda1 100644 --- a/demo/app.bundle.js +++ b/demo/app.bundle.js @@ -1 +1 @@ -!function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t():"function"==typeof define&&define.amd?define([],t):"object"==typeof exports?exports.shaderCompiler=t():e.shaderCompiler=t()}("undefined"!=typeof self?self:this,(function(){return function(e){var t={};function r(n){if(t[n])return t[n].exports;var u=t[n]={i:n,l:!1,exports:{}};return e[n].call(u.exports,u,u.exports,r),u.l=!0,u.exports}return r.m=e,r.c=t,r.d=function(e,t,n){r.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:n})},r.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},r.t=function(e,t){if(1&t&&(e=r(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var n=Object.create(null);if(r.r(n),Object.defineProperty(n,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var u in e)r.d(n,u,function(t){return e[t]}.bind(null,u));return n},r.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return r.d(t,"a",t),t},r.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},r.p="",r(r.s=3)}([function(e,t,r){"use strict";var n=this&&this.__assign||function(){return(n=Object.assign||function(e){for(var t,r=1,n=arguments.length;rt?e:(t-=e.length,e+(r+=r.repeat(t)).slice(0,t))}function c(e,t){var r,n={},u=(t=void 0!==t?t:{}).grammarSource,o={program:bt,constant_expression:ar},i=bt,c="define",a="line",f="undef",l="error",d="pragma",p="defined",x="ifdef",h="ifndef",v="elif",P="else",g="endif",b="version",y="extension",m="*/",w=/^[A-Za-z_]/,E=/^[A-Za-z_0-9]/,_=/^[uU]/,O=/^[1-9]/,C=/^[0-7]/,j=/^[xX]/,k=/^[0-9a-fA-F]/,S=/^[0-9]/,R=/^[\n\r]/,F=/^[^\n\r]/,M=/^[ \t]/,z=pt("<<",!1),Z=pt(">>",!1),I=pt("<=",!1),T=pt(">=",!1),U=pt("==",!1),N=pt("!=",!1),W=pt("&&",!1),B=pt("||",!1),D=pt("(",!1),G=pt(")",!1),X=pt(",",!1),q=pt("!",!1),L=pt("-",!1),V=pt("~",!1),H=pt("+",!1),J=pt("*",!1),K=pt("/",!1),Q=pt("%",!1),Y=pt("<",!1),$=pt(">",!1),ee=pt("|",!1),te=pt("^",!1),re=pt("&",!1),ne=pt(":",!1),ue=pt("#",!1),oe=pt("define",!1),se=(pt("include",!1),pt("line",!1)),ie=pt("undef",!1),ce=pt("error",!1),ae=pt("pragma",!1),fe=pt("defined",!1),le=pt("if",!1),de=pt("ifdef",!1),pe=pt("ifndef",!1),xe=pt("elif",!1),he=pt("else",!1),ve=pt("endif",!1),Pe=pt("version",!1),ge=pt("extension",!1),be=xt([["A","Z"],["a","z"],"_"],!1,!1),ye=xt([["A","Z"],["a","z"],"_",["0","9"]],!1,!1),me=ht("number"),Ae=xt(["u","U"],!1,!1),we=xt([["1","9"]],!1,!1),Ee=pt("0",!1),_e=xt([["0","7"]],!1,!1),Oe=xt(["x","X"],!1,!1),Ce=xt([["0","9"],["a","f"],["A","F"]],!1,!1),je=xt([["0","9"]],!1,!1),ke=ht("control line"),Se=xt(["\n","\r"],!1,!1),Re=ht("token string"),Fe=xt(["\n","\r"],!0,!1),Me=ht("text"),ze=ht("if"),Ze=ht("primary expression"),Ie=ht("unary expression"),Te=ht("multiplicative expression"),Ue=ht("additive expression"),Ne=ht("shift expression"),We=ht("relational expression"),Be=ht("equality expression"),De=ht("and expression"),Ge=ht("exclusive or expression"),Xe=ht("inclusive or expression"),qe=ht("logical and expression"),Le=ht("logical or expression"),Ve=ht("constant expression"),He=ht("whitespace or comment"),Je=pt("//",!1),Ke=pt("/*",!1),Qe=pt("*/",!1),Ye={type:"any"},$e=ht("whitespace"),et=xt([" ","\t"],!1,!1),tt=function(e,t){return xr("literal",{literal:e,wsEnd:t})},rt=function(e,t,r){return xr("literal",{literal:t,wsStart:e,wsEnd:r})},nt=function(e){return xr("text",{text:e.join("")})},ut=function(e,t,r,n,u){return xr("elseif",{token:t,expression:r,wsEnd:n,body:u})},ot=function(e,t){return Pr(e,t)},st=function(e,t,r){return hr(t,r)},it=0,ct=[{line:1,column:1}],at=0,ft=[],lt=0,dt={};if("startRule"in t){if(!(t.startRule in o))throw new Error("Can't start parsing from rule \""+t.startRule+'".');i=o[t.startRule]}function pt(e,t){return{type:"literal",text:e,ignoreCase:t}}function xt(e,t,r){return{type:"class",parts:e,inverted:t,ignoreCase:r}}function ht(e){return{type:"other",description:e}}function vt(t){var r,n=ct[t];if(n)return n;for(r=t-1;!ct[r];)r--;for(n={line:(n=ct[r]).line,column:n.column};rat&&(at=it,ft=[]),ft.push(e))}function bt(){var e,t,r=75*it+0,u=dt[r];return u?(it=u.nextPos,u.result):(e=it,(t=Ht())!==n?e=function(e,t){return xr("program",{program:e.blocks,wsEnd:t})}(t,fr()):(it=e,e=n),dt[r]={nextPos:it,result:e},e)}function yt(){var t,r,u,o=75*it+2,s=dt[o];return s?(it=s.nextPos,s.result):(t=it,"<<"===e.substr(it,2)?(r="<<",it+=2):(r=n,0===lt&>(z)),r!==n?(u=fr(),t=tt(r,u)):(it=t,t=n),dt[o]={nextPos:it,result:t},t)}function mt(){var t,r,u,o=75*it+3,s=dt[o];return s?(it=s.nextPos,s.result):(t=it,">>"===e.substr(it,2)?(r=">>",it+=2):(r=n,0===lt&>(Z)),r!==n?(u=fr(),t=tt(r,u)):(it=t,t=n),dt[o]={nextPos:it,result:t},t)}function At(){var t,r,u,o=75*it+4,s=dt[o];return s?(it=s.nextPos,s.result):(t=it,"<="===e.substr(it,2)?(r="<=",it+=2):(r=n,0===lt&>(I)),r!==n?(u=fr(),t=tt(r,u)):(it=t,t=n),dt[o]={nextPos:it,result:t},t)}function wt(){var t,r,u,o=75*it+5,s=dt[o];return s?(it=s.nextPos,s.result):(t=it,">="===e.substr(it,2)?(r=">=",it+=2):(r=n,0===lt&>(T)),r!==n?(u=fr(),t=tt(r,u)):(it=t,t=n),dt[o]={nextPos:it,result:t},t)}function Et(){var t,r,u,o=75*it+6,s=dt[o];return s?(it=s.nextPos,s.result):(t=it,"=="===e.substr(it,2)?(r="==",it+=2):(r=n,0===lt&>(U)),r!==n?(u=fr(),t=tt(r,u)):(it=t,t=n),dt[o]={nextPos:it,result:t},t)}function _t(){var t,r,u,o=75*it+7,s=dt[o];return s?(it=s.nextPos,s.result):(t=it,"!="===e.substr(it,2)?(r="!=",it+=2):(r=n,0===lt&>(N)),r!==n?(u=fr(),t=tt(r,u)):(it=t,t=n),dt[o]={nextPos:it,result:t},t)}function Ot(){var t,r,u,o=75*it+8,s=dt[o];return s?(it=s.nextPos,s.result):(t=it,"&&"===e.substr(it,2)?(r="&&",it+=2):(r=n,0===lt&>(W)),r!==n?(u=fr(),t=tt(r,u)):(it=t,t=n),dt[o]={nextPos:it,result:t},t)}function Ct(){var t,r,u,o=75*it+9,s=dt[o];return s?(it=s.nextPos,s.result):(t=it,"||"===e.substr(it,2)?(r="||",it+=2):(r=n,0===lt&>(B)),r!==n?(u=fr(),t=tt(r,u)):(it=t,t=n),dt[o]={nextPos:it,result:t},t)}function jt(){var t,r,u,o=75*it+10,s=dt[o];return s?(it=s.nextPos,s.result):(t=it,40===e.charCodeAt(it)?(r="(",it++):(r=n,0===lt&>(D)),r!==n?(u=fr(),t=tt(r,u)):(it=t,t=n),dt[o]={nextPos:it,result:t},t)}function kt(){var t,r,u,o=75*it+11,s=dt[o];return s?(it=s.nextPos,s.result):(t=it,41===e.charCodeAt(it)?(r=")",it++):(r=n,0===lt&>(G)),r!==n?(u=fr(),t=tt(r,u)):(it=t,t=n),dt[o]={nextPos:it,result:t},t)}function St(){var t,r,u,o=75*it+12,s=dt[o];return s?(it=s.nextPos,s.result):(t=it,44===e.charCodeAt(it)?(r=",",it++):(r=n,0===lt&>(X)),r!==n?(u=fr(),t=tt(r,u)):(it=t,t=n),dt[o]={nextPos:it,result:t},t)}function Rt(){var t,r,u,o=75*it+14,s=dt[o];return s?(it=s.nextPos,s.result):(t=it,45===e.charCodeAt(it)?(r="-",it++):(r=n,0===lt&>(L)),r!==n?(u=fr(),t=tt(r,u)):(it=t,t=n),dt[o]={nextPos:it,result:t},t)}function Ft(){var t,r,u,o=75*it+16,s=dt[o];return s?(it=s.nextPos,s.result):(t=it,43===e.charCodeAt(it)?(r="+",it++):(r=n,0===lt&>(H)),r!==n?(u=fr(),t=tt(r,u)):(it=t,t=n),dt[o]={nextPos:it,result:t},t)}function Mt(){var t,r,u,o=75*it+17,s=dt[o];return s?(it=s.nextPos,s.result):(t=it,42===e.charCodeAt(it)?(r="*",it++):(r=n,0===lt&>(J)),r!==n?(u=fr(),t=tt(r,u)):(it=t,t=n),dt[o]={nextPos:it,result:t},t)}function zt(){var t,r,u,o=75*it+18,s=dt[o];return s?(it=s.nextPos,s.result):(t=it,47===e.charCodeAt(it)?(r="/",it++):(r=n,0===lt&>(K)),r!==n?(u=fr(),t=tt(r,u)):(it=t,t=n),dt[o]={nextPos:it,result:t},t)}function Zt(){var t,r,u,o=75*it+19,s=dt[o];return s?(it=s.nextPos,s.result):(t=it,37===e.charCodeAt(it)?(r="%",it++):(r=n,0===lt&>(Q)),r!==n?(u=fr(),t=tt(r,u)):(it=t,t=n),dt[o]={nextPos:it,result:t},t)}function It(){var t,r,u,o=75*it+20,s=dt[o];return s?(it=s.nextPos,s.result):(t=it,60===e.charCodeAt(it)?(r="<",it++):(r=n,0===lt&>(Y)),r!==n?(u=fr(),t=tt(r,u)):(it=t,t=n),dt[o]={nextPos:it,result:t},t)}function Tt(){var t,r,u,o=75*it+21,s=dt[o];return s?(it=s.nextPos,s.result):(t=it,62===e.charCodeAt(it)?(r=">",it++):(r=n,0===lt&>($)),r!==n?(u=fr(),t=tt(r,u)):(it=t,t=n),dt[o]={nextPos:it,result:t},t)}function Ut(){var t,r,u,o=75*it+22,s=dt[o];return s?(it=s.nextPos,s.result):(t=it,124===e.charCodeAt(it)?(r="|",it++):(r=n,0===lt&>(ee)),r!==n?(u=fr(),t=tt(r,u)):(it=t,t=n),dt[o]={nextPos:it,result:t},t)}function Nt(){var t,r,u,o=75*it+23,s=dt[o];return s?(it=s.nextPos,s.result):(t=it,94===e.charCodeAt(it)?(r="^",it++):(r=n,0===lt&>(te)),r!==n?(u=fr(),t=tt(r,u)):(it=t,t=n),dt[o]={nextPos:it,result:t},t)}function Wt(){var t,r,u,o=75*it+24,s=dt[o];return s?(it=s.nextPos,s.result):(t=it,38===e.charCodeAt(it)?(r="&",it++):(r=n,0===lt&>(re)),r!==n?(u=fr(),t=tt(r,u)):(it=t,t=n),dt[o]={nextPos:it,result:t},t)}function Bt(){var t,r,u,o=75*it+26,s=dt[o];return s?(it=s.nextPos,s.result):(t=it,r=it,35===e.charCodeAt(it)?(u="#",it++):(u=n,0===lt&>(ue)),(r=u!==n?e.substring(r,it):u)!==n?(u=fr(),t="#"):(it=t,t=n),dt[o]={nextPos:it,result:t},t)}function Dt(){var t,r,u,o,s,i,a=75*it+27,f=dt[a];return f?(it=f.nextPos,f.result):(t=it,r=fr(),u=it,o=it,(s=Bt())!==n?(e.substr(it,6)===c?(i=c,it+=6):(i=n,0===lt&>(oe)),i!==n?o=s=[s,i]:(it=o,o=n)):(it=o,o=n),(u=o!==n?e.substring(u,it):o)!==n&&(o=pr())!==n?t=rt(r,u,o):(it=t,t=n),dt[a]={nextPos:it,result:t},t)}function Gt(){var t,r,u,o,s,i,c=75*it+37,a=dt[c];return a?(it=a.nextPos,a.result):(t=it,r=fr(),u=it,o=it,(s=Bt())!==n?(e.substr(it,4)===v?(i=v,it+=4):(i=n,0===lt&>(xe)),i!==n?o=s=[s,i]:(it=o,o=n)):(it=o,o=n),(u=o!==n?e.substring(u,it):o)!==n&&(o=pr())!==n?t=rt(r,u,o):(it=t,t=n),dt[c]={nextPos:it,result:t},t)}function Xt(){var t,r,u,o,s,i,c=75*it+42,a=dt[c];if(a)return it=a.nextPos,a.result;if(t=it,r=it,u=it,w.test(e.charAt(it))?(o=e.charAt(it),it++):(o=n,0===lt&>(be)),o!==n){for(s=[],E.test(e.charAt(it))?(i=e.charAt(it),it++):(i=n,0===lt&>(ye));i!==n;)s.push(i),E.test(e.charAt(it))?(i=e.charAt(it),it++):(i=n,0===lt&>(ye));u=o=[o,s]}else it=u,u=n;return(r=u!==n?e.substring(r,it):u)!==n?t=function(e,t){return xr("identifier",{identifier:e,wsEnd:t})}(r,u=fr()):(it=t,t=n),dt[c]={nextPos:it,result:t},t}function qt(){var t,r,u,o,s=75*it+44,i=dt[s];return i?(it=i.nextPos,i.result):(lt++,t=it,r=it,(u=function(){var t,r,u,o,s,i=75*it+46,c=dt[i];if(c)return it=c.nextPos,c.result;if(t=it,r=it,O.test(e.charAt(it))?(u=e.charAt(it),it++):(u=n,0===lt&>(we)),u!==n){for(o=[],s=Vt();s!==n;)o.push(s),s=Vt();r=u=[u,o]}else it=r,r=n;return t=r!==n?e.substring(t,it):r,dt[i]={nextPos:it,result:t},t}())!==n?((o=Lt())===n&&(o=null),r=u=[u,o]):(it=r,r=n),(t=r!==n?e.substring(t,it):r)===n&&(t=it,r=it,(u=function(){var t,r,u,o,s=75*it+47,i=dt[s];if(i)return it=i.nextPos,i.result;if(t=it,48===e.charCodeAt(it)?(r="0",it++):(r=n,0===lt&>(Ee)),r!==n){for(u=[],C.test(e.charAt(it))?(o=e.charAt(it),it++):(o=n,0===lt&>(_e));o!==n;)u.push(o),C.test(e.charAt(it))?(o=e.charAt(it),it++):(o=n,0===lt&>(_e));t=r=[r,u]}else it=t,t=n;return dt[s]={nextPos:it,result:t},t}())!==n?((o=Lt())===n&&(o=null),r=u=[u,o]):(it=r,r=n),(t=r!==n?e.substring(t,it):r)===n&&(t=it,r=it,(u=function(){var t,r,u,o,s,i=75*it+48,c=dt[i];if(c)return it=c.nextPos,c.result;if(t=it,48===e.charCodeAt(it)?(r="0",it++):(r=n,0===lt&>(Ee)),r!==n)if(j.test(e.charAt(it))?(u=e.charAt(it),it++):(u=n,0===lt&>(Oe)),u!==n){for(o=[],k.test(e.charAt(it))?(s=e.charAt(it),it++):(s=n,0===lt&>(Ce));s!==n;)o.push(s),k.test(e.charAt(it))?(s=e.charAt(it),it++):(s=n,0===lt&>(Ce));t=r=[r,u,o]}else it=t,t=n;else it=t,t=n;return dt[i]={nextPos:it,result:t},t}())!==n?((o=Lt())===n&&(o=null),r=u=[u,o]):(it=r,r=n),t=r!==n?e.substring(t,it):r)),lt--,t===n&&(r=n,0===lt&>(me)),dt[s]={nextPos:it,result:t},t)}function Lt(){var t,r=75*it+45,u=dt[r];return u?(it=u.nextPos,u.result):(_.test(e.charAt(it))?(t=e.charAt(it),it++):(t=n,0===lt&>(Ae)),dt[r]={nextPos:it,result:t},t)}function Vt(){var t,r=75*it+49,u=dt[r];return u?(it=u.nextPos,u.result):(S.test(e.charAt(it))?(t=e.charAt(it),it++):(t=n,0===lt&>(je)),dt[r]={nextPos:it,result:t},t)}function Ht(){var e,t,r,u,o,s=75*it+50,i=dt[s];if(i)return it=i.nextPos,i.result;if(e=it,t=[],(r=Jt())===n){if(r=it,u=[],(o=Qt())!==n)for(;o!==n;)u.push(o),o=Qt();else u=n;u!==n&&(u=nt(u)),r=u}if(r!==n){for(;r!==n;)if(t.push(r),(r=Jt())===n){if(r=it,u=[],(o=Qt())!==n)for(;o!==n;)u.push(o),o=Qt();else u=n;u!==n&&(u=nt(u)),r=u}}else t=n;return t!==n&&(t=function(e){return xr("segment",{blocks:e})}(t)),e=t,dt[s]={nextPos:it,result:e},e}function Jt(){var t,r,u,o,s,i,c,p,v,m,A,_=75*it+51,O=dt[_];if(O)return it=O.nextPos,O.result;if(lt++,(t=function(){var t,r,u,o,s,i,c,a,f=75*it+54,l=dt[f];if(l)return it=l.nextPos,l.result;if(t=it,r=it,(u=function(){var t,r,u,o=75*it+55,s=dt[o];return s?(it=s.nextPos,s.result):(lt++,t=it,(r=function(){var t,r,u,o,s,i,c=75*it+35,a=dt[c];return a?(it=a.nextPos,a.result):(t=it,r=fr(),u=it,o=it,(s=Bt())!==n?(e.substr(it,5)===x?(i=x,it+=5):(i=n,0===lt&>(de)),i!==n?o=s=[s,i]:(it=o,o=n)):(it=o,o=n),(u=o!==n?e.substring(u,it):o)!==n&&(o=pr())!==n?t=rt(r,u,o):(it=t,t=n),dt[c]={nextPos:it,result:t},t)}())!==n&&(u=Xt())!==n?t=function(e,t){return xr("ifdef",{token:e,identifier:t})}(r,u):(it=t,t=n),t===n&&(t=it,(r=function(){var t,r,u,o,s,i,c=75*it+36,a=dt[c];return a?(it=a.nextPos,a.result):(t=it,r=fr(),u=it,o=it,(s=Bt())!==n?(e.substr(it,6)===h?(i=h,it+=6):(i=n,0===lt&>(pe)),i!==n?o=s=[s,i]:(it=o,o=n)):(it=o,o=n),(u=o!==n?e.substring(u,it):o)!==n&&(o=pr())!==n?t=rt(r,u,o):(it=t,t=n),dt[c]={nextPos:it,result:t},t)}())!==n&&(u=Xt())!==n?t=function(e,t){return xr("ifndef",{token:e,identifier:t})}(r,u):(it=t,t=n),t===n&&(t=it,(r=function(){var t,r,u,o,s,i,c=75*it+34,a=dt[c];return a?(it=a.nextPos,a.result):(t=it,r=fr(),u=it,o=it,(s=Bt())!==n?("if"===e.substr(it,2)?(i="if",it+=2):(i=n,0===lt&>(le)),i!==n?o=s=[s,i]:(it=o,o=n)):(it=o,o=n),(u=o!==n?e.substring(u,it):o)!==n&&(o=pr())!==n?t=rt(r,u,o):(it=t,t=n),dt[c]={nextPos:it,result:t},t)}())!==n?((u=Kt())===n&&(u=null),t=function(e,t){return xr("if",{token:e,expression:t})}(r,u)):(it=t,t=n))),lt--,t===n&&(r=n,0===lt&>(ze)),dt[o]={nextPos:it,result:t},t)}())!==n?(R.test(e.charAt(it))?(o=e.charAt(it),it++):(o=n,0===lt&>(Se)),o!==n?((s=Ht())===n&&(s=null),r=function(e,t,r){return{...e,body:r,wsEnd:t}}(u,o,s)):(it=r,r=n)):(it=r,r=n),r!==n){for(u=[],o=it,(s=Gt())!==n&&(i=Kt())!==n?(R.test(e.charAt(it))?(c=e.charAt(it),it++):(c=n,0===lt&>(Se)),c!==n?((a=Ht())===n&&(a=null),o=ut(0,s,i,c,a)):(it=o,o=n)):(it=o,o=n);o!==n;)u.push(o),o=it,(s=Gt())!==n&&(i=Kt())!==n?(R.test(e.charAt(it))?(c=e.charAt(it),it++):(c=n,0===lt&>(Se)),c!==n?((a=Ht())===n&&(a=null),o=ut(0,s,i,c,a)):(it=o,o=n)):(it=o,o=n);o=it,(s=function(){var t,r,u,o,s,i,c=75*it+38,a=dt[c];return a?(it=a.nextPos,a.result):(t=it,r=fr(),u=it,o=it,(s=Bt())!==n?(e.substr(it,4)===P?(i=P,it+=4):(i=n,0===lt&>(he)),i!==n?o=s=[s,i]:(it=o,o=n)):(it=o,o=n),(u=o!==n?e.substring(u,it):o)!==n&&(o=pr())!==n?t=rt(r,u,o):(it=t,t=n),dt[c]={nextPos:it,result:t},t)}())!==n?(R.test(e.charAt(it))?(i=e.charAt(it),it++):(i=n,0===lt&>(Se)),i!==n?((c=Ht())===n&&(c=null),o=function(e,t,r,n,u){return xr("else",{token:r,wsEnd:n,body:u})}(0,0,s,i,c)):(it=o,o=n)):(it=o,o=n),o===n&&(o=null),(s=function(){var t,r,u,o,s,i,c=75*it+39,a=dt[c];return a?(it=a.nextPos,a.result):(t=it,r=fr(),u=it,o=it,(s=Bt())!==n?(e.substr(it,5)===g?(i=g,it+=5):(i=n,0===lt&>(ve)),i!==n?o=s=[s,i]:(it=o,o=n)):(it=o,o=n),(u=o!==n?e.substring(u,it):o)!==n&&(o=pr())!==n?t=rt(r,u,o):(it=t,t=n),dt[c]={nextPos:it,result:t},t)}())!==n?(R.test(e.charAt(it))?(i=e.charAt(it),it++):(i=n,0===lt&>(Se)),i===n&&(i=null),t=function(e,t,r,n,u){return xr("conditional",{ifPart:e,elseIfParts:t,elsePart:r,endif:n,wsEnd:u})}(r,u,o,s,i)):(it=t,t=n)}else it=t,t=n;return dt[f]={nextPos:it,result:t},t}())===n){if(t=it,r=it,(u=Dt())!==n)if((o=function(){var t,r,u,o,s,i,c=75*it+43,a=dt[c];if(a)return it=a.nextPos,a.result;if(t=it,r=it,u=it,w.test(e.charAt(it))?(o=e.charAt(it),it++):(o=n,0===lt&>(be)),o!==n){for(s=[],E.test(e.charAt(it))?(i=e.charAt(it),it++):(i=n,0===lt&>(ye));i!==n;)s.push(i),E.test(e.charAt(it))?(i=e.charAt(it),it++):(i=n,0===lt&>(ye));u=o=[o,s]}else it=u,u=n;return(r=u!==n?e.substring(r,it):u)!==n&&(r=function(e){return xr("identifier",{identifier:e})}(r)),t=r,dt[c]={nextPos:it,result:t},t}())!==n)if((s=jt())!==n){if(i=it,(c=Xt())!==n){for(p=[],v=it,(m=St())!==n&&(A=Xt())!==n?v=m=[m,A]:(it=v,v=n);v!==n;)p.push(v),v=it,(m=St())!==n&&(A=Xt())!==n?v=m=[m,A]:(it=v,v=n);i=function(e,t,r,n,u){return[n,...u.flat()]}(0,0,0,c,p)}else it=i,i=n;i===n&&(i=null),(c=kt())!==n?((p=Kt())===n&&(p=null),r=function(e,t,r,n,u,o){return xr("define_arguments",{define:e,identifier:t,lp:r,args:n||[],rp:u,body:o})}(u,o,s,i,c,p)):(it=r,r=n)}else it=r,r=n;else it=r,r=n;else it=r,r=n;if(r===n&&(r=it,(u=Dt())!==n&&(o=Xt())!==n?((s=Kt())===n&&(s=null),r=function(e,t,r){return xr("define",{define:e,identifier:t,body:r})}(u,o,s)):(it=r,r=n),r===n)){if(r=it,(u=function(){var t,r,u,o,s,i,c=75*it+29,f=dt[c];return f?(it=f.nextPos,f.result):(t=it,r=fr(),u=it,o=it,(s=Bt())!==n?(e.substr(it,4)===a?(i=a,it+=4):(i=n,0===lt&>(se)),i!==n?o=s=[s,i]:(it=o,o=n)):(it=o,o=n),(u=o!==n?e.substring(u,it):o)!==n&&(o=pr())!==n?t=rt(r,u,o):(it=t,t=n),dt[c]={nextPos:it,result:t},t)}())!==n){if(o=it,s=[],(i=Vt())!==n)for(;i!==n;)s.push(i),i=Vt();else s=n;(o=s!==n?e.substring(o,it):s)!==n?r=function(e,t){return xr("line",{line:e,value:t})}(u,o):(it=r,r=n)}else it=r,r=n;r===n&&(r=it,(u=function(){var t,r,u,o,s,i,c=75*it+30,a=dt[c];return a?(it=a.nextPos,a.result):(t=it,r=fr(),u=it,o=it,(s=Bt())!==n?(e.substr(it,5)===f?(i=f,it+=5):(i=n,0===lt&>(ie)),i!==n?o=s=[s,i]:(it=o,o=n)):(it=o,o=n),(u=o!==n?e.substring(u,it):o)!==n&&(o=pr())!==n?t=rt(r,u,o):(it=t,t=n),dt[c]={nextPos:it,result:t},t)}())!==n&&(o=Xt())!==n?r=function(e,t){return xr("undef",{undef:e,identifier:t})}(u,o):(it=r,r=n),r===n&&(r=it,(u=function(){var t,r,u,o,s,i,c=75*it+31,a=dt[c];return a?(it=a.nextPos,a.result):(t=it,r=fr(),u=it,o=it,(s=Bt())!==n?(e.substr(it,5)===l?(i=l,it+=5):(i=n,0===lt&>(ce)),i!==n?o=s=[s,i]:(it=o,o=n)):(it=o,o=n),(u=o!==n?e.substring(u,it):o)!==n&&(o=pr())!==n?t=rt(r,u,o):(it=t,t=n),dt[c]={nextPos:it,result:t},t)}())!==n&&(o=Kt())!==n?r=function(e,t){return xr("error",{error:e,message:t})}(u,o):(it=r,r=n),r===n&&(r=it,(u=function(){var t,r,u,o,s,i,c=75*it+32,a=dt[c];return a?(it=a.nextPos,a.result):(t=it,r=fr(),u=it,o=it,(s=Bt())!==n?(e.substr(it,6)===d?(i=d,it+=6):(i=n,0===lt&>(ae)),i!==n?o=s=[s,i]:(it=o,o=n)):(it=o,o=n),(u=o!==n?e.substring(u,it):o)!==n&&(o=pr())!==n?t=rt(r,u,o):(it=t,t=n),dt[c]={nextPos:it,result:t},t)}())!==n&&(o=Kt())!==n?r=function(e,t){return xr("pragma",{pragma:e,body:t})}(u,o):(it=r,r=n),r===n&&(r=it,(u=function(){var t,r,u,o,s,i,c=75*it+40,a=dt[c];return a?(it=a.nextPos,a.result):(t=it,r=fr(),u=it,o=it,(s=Bt())!==n?(e.substr(it,7)===b?(i=b,it+=7):(i=n,0===lt&>(Pe)),i!==n?o=s=[s,i]:(it=o,o=n)):(it=o,o=n),(u=o!==n?e.substring(u,it):o)!==n&&(o=pr())!==n?t=rt(r,u,o):(it=t,t=n),dt[c]={nextPos:it,result:t},t)}())!==n&&(o=qt())!==n?((s=Kt())===n&&(s=null),r=function(e,t,r){return xr("version",{version:e,value:t,profile:r})}(u,o,s)):(it=r,r=n),r===n&&(r=it,(u=function(){var t,r,u,o,s,i,c=75*it+41,a=dt[c];return a?(it=a.nextPos,a.result):(t=it,r=fr(),u=it,o=it,(s=Bt())!==n?(e.substr(it,9)===y?(i=y,it+=9):(i=n,0===lt&>(ge)),i!==n?o=s=[s,i]:(it=o,o=n)):(it=o,o=n),(u=o!==n?e.substring(u,it):o)!==n&&(o=pr())!==n?t=rt(r,u,o):(it=t,t=n),dt[c]={nextPos:it,result:t},t)}())!==n&&(o=Xt())!==n&&(s=function(){var t,r,u,o=75*it+25,s=dt[o];return s?(it=s.nextPos,s.result):(t=it,58===e.charCodeAt(it)?(r=":",it++):(r=n,0===lt&>(ne)),r!==n?(u=fr(),t=tt(r,u)):(it=t,t=n),dt[o]={nextPos:it,result:t},t)}())!==n&&(i=Kt())!==n?r=function(e,t,r,n){return xr("extension",{extension:e,name:t,colon:r,behavior:n})}(u,o,s,i):(it=r,r=n))))))}r!==n?(R.test(e.charAt(it))?(u=e.charAt(it),it++):(u=n,0===lt&>(Se)),u===n&&(u=null),t=function(e,t){return{...e,wsEnd:t}}(r,u)):(it=t,t=n)}return lt--,t===n&&(r=n,0===lt&>(ke)),dt[_]={nextPos:it,result:t},t}function Kt(){var t,r,u,o=75*it+52,s=dt[o];if(s)return it=s.nextPos,s.result;if(lt++,t=it,r=[],F.test(e.charAt(it))?(u=e.charAt(it),it++):(u=n,0===lt&>(Fe)),u!==n)for(;u!==n;)r.push(u),F.test(e.charAt(it))?(u=e.charAt(it),it++):(u=n,0===lt&>(Fe));else r=n;return t=r!==n?e.substring(t,it):r,lt--,t===n&&(r=n,0===lt&>(Re)),dt[o]={nextPos:it,result:t},t}function Qt(){var t,r,u,o,s,i,c=75*it+53,a=dt[c];if(a)return it=a.nextPos,a.result;if(lt++,t=it,r=it,u=it,lt++,o=it,(s=dr())===n&&(s=null),35===e.charCodeAt(it)?(i="#",it++):(i=n,0===lt&>(ue)),i!==n?o=s=[s,i]:(it=o,o=n),lt--,o===n?u=void 0:(it=u,u=n),u!==n){if(o=[],F.test(e.charAt(it))?(s=e.charAt(it),it++):(s=n,0===lt&>(Fe)),s!==n)for(;s!==n;)o.push(s),F.test(e.charAt(it))?(s=e.charAt(it),it++):(s=n,0===lt&>(Fe));else o=n;o!==n?(R.test(e.charAt(it))?(s=e.charAt(it),it++):(s=n,0===lt&>(Se)),s===n&&(s=null),r=u=[u,o,s]):(it=r,r=n)}else it=r,r=n;return r===n&&(R.test(e.charAt(it))?(r=e.charAt(it),it++):(r=n,0===lt&>(Se))),t=r!==n?e.substring(t,it):r,lt--,t===n&&(r=n,0===lt&>(Me)),dt[c]={nextPos:it,result:t},t}function Yt(){var e,t,r,u,o=75*it+56,s=dt[o];return s?(it=s.nextPos,s.result):(lt++,(e=function(){var e,t,r=75*it+1,u=dt[r];return u?(it=u.nextPos,u.result):(e=it,(t=qt())!==n?e=function(e,t){return xr("int_constant",{token:e,wsEnd:t})}(t,fr()):(it=e,e=n),dt[r]={nextPos:it,result:e},e)}())===n&&(e=it,(t=jt())!==n&&(r=ar())!==n&&(u=kt())!==n?e=function(e,t,r){return xr("group",{lp:e,expression:t,rp:r})}(t,r,u):(it=e,e=n),e===n&&(e=Xt())),lt--,e===n&&(t=n,0===lt&>(Ze)),dt[o]={nextPos:it,result:e},e)}function $t(){var t,r,u,o,s,i=75*it+57,c=dt[i];return c?(it=c.nextPos,c.result):(lt++,t=it,(r=function(){var t,r,u,o,s=75*it+33,i=dt[s];return i?(it=i.nextPos,i.result):(t=it,r=fr(),e.substr(it,7)===p?(u=p,it+=7):(u=n,0===lt&>(fe)),u!==n&&(o=pr())!==n?t=rt(r,u,o):(it=t,t=n),dt[s]={nextPos:it,result:t},t)}())!==n?((u=jt())===n&&(u=null),(o=Xt())!==n?((s=kt())===n&&(s=null),t=function(e,t,r,n){return xr("unary_defined",{operator:e,lp:t,identifier:r,rp:n})}(r,u,o,s)):(it=t,t=n)):(it=t,t=n),t===n&&(t=it,(r=Ft())===n&&(r=Rt())===n&&(r=function(){var t,r,u,o=75*it+13,s=dt[o];return s?(it=s.nextPos,s.result):(t=it,33===e.charCodeAt(it)?(r="!",it++):(r=n,0===lt&>(q)),r!==n?(u=fr(),t=tt(r,u)):(it=t,t=n),dt[o]={nextPos:it,result:t},t)}())===n&&(r=function(){var t,r,u,o=75*it+15,s=dt[o];return s?(it=s.nextPos,s.result):(t=it,126===e.charCodeAt(it)?(r="~",it++):(r=n,0===lt&>(V)),r!==n?(u=fr(),t=tt(r,u)):(it=t,t=n),dt[o]={nextPos:it,result:t},t)}()),r!==n&&(u=$t())!==n?t=function(e,t){return xr("unary",{operator:e,expression:t})}(r,u):(it=t,t=n),t===n&&(t=Yt())),lt--,t===n&&(r=n,0===lt&>(Ie)),dt[i]={nextPos:it,result:t},t)}function er(){var e,t,r,u,o,s,i=75*it+58,c=dt[i];if(c)return it=c.nextPos,c.result;if(lt++,e=it,(t=$t())!==n){for(r=[],u=it,(o=Mt())===n&&(o=zt())===n&&(o=Zt()),o!==n&&(s=$t())!==n?u=o=[o,s]:(it=u,u=n);u!==n;)r.push(u),u=it,(o=Mt())===n&&(o=zt())===n&&(o=Zt()),o!==n&&(s=$t())!==n?u=o=[o,s]:(it=u,u=n);e=ot(t,r)}else it=e,e=n;return lt--,e===n&&(t=n,0===lt&>(Te)),dt[i]={nextPos:it,result:e},e}function tr(){var e,t,r,u,o,s,i=75*it+59,c=dt[i];if(c)return it=c.nextPos,c.result;if(lt++,e=it,(t=er())!==n){for(r=[],u=it,(o=Ft())===n&&(o=Rt()),o!==n&&(s=er())!==n?u=o=[o,s]:(it=u,u=n);u!==n;)r.push(u),u=it,(o=Ft())===n&&(o=Rt()),o!==n&&(s=er())!==n?u=o=[o,s]:(it=u,u=n);e=ot(t,r)}else it=e,e=n;return lt--,e===n&&(t=n,0===lt&>(Ue)),dt[i]={nextPos:it,result:e},e}function rr(){var e,t,r,u,o,s,i=75*it+60,c=dt[i];if(c)return it=c.nextPos,c.result;if(lt++,e=it,(t=tr())!==n){for(r=[],u=it,(o=mt())===n&&(o=yt()),o!==n&&(s=tr())!==n?u=o=[o,s]:(it=u,u=n);u!==n;)r.push(u),u=it,(o=mt())===n&&(o=yt()),o!==n&&(s=tr())!==n?u=o=[o,s]:(it=u,u=n);e=ot(t,r)}else it=e,e=n;return lt--,e===n&&(t=n,0===lt&>(Ne)),dt[i]={nextPos:it,result:e},e}function nr(){var e,t,r,u,o,s,i=75*it+61,c=dt[i];if(c)return it=c.nextPos,c.result;if(lt++,e=it,(t=rr())!==n){for(r=[],u=it,(o=At())===n&&(o=wt())===n&&(o=It())===n&&(o=Tt()),o!==n&&(s=rr())!==n?u=o=[o,s]:(it=u,u=n);u!==n;)r.push(u),u=it,(o=At())===n&&(o=wt())===n&&(o=It())===n&&(o=Tt()),o!==n&&(s=rr())!==n?u=o=[o,s]:(it=u,u=n);e=ot(t,r)}else it=e,e=n;return lt--,e===n&&(t=n,0===lt&>(We)),dt[i]={nextPos:it,result:e},e}function ur(){var e,t,r,u,o,s,i=75*it+62,c=dt[i];if(c)return it=c.nextPos,c.result;if(lt++,e=it,(t=nr())!==n){for(r=[],u=it,(o=Et())===n&&(o=_t()),o!==n&&(s=nr())!==n?u=o=[o,s]:(it=u,u=n);u!==n;)r.push(u),u=it,(o=Et())===n&&(o=_t()),o!==n&&(s=nr())!==n?u=o=[o,s]:(it=u,u=n);e=ot(t,r)}else it=e,e=n;return lt--,e===n&&(t=n,0===lt&>(Be)),dt[i]={nextPos:it,result:e},e}function or(){var e,t,r,u,o,s,i=75*it+63,c=dt[i];if(c)return it=c.nextPos,c.result;if(lt++,e=it,(t=ur())!==n){for(r=[],u=it,(o=Wt())!==n&&(s=ur())!==n?u=o=[o,s]:(it=u,u=n);u!==n;)r.push(u),u=it,(o=Wt())!==n&&(s=ur())!==n?u=o=[o,s]:(it=u,u=n);e=ot(t,r)}else it=e,e=n;return lt--,e===n&&(t=n,0===lt&>(De)),dt[i]={nextPos:it,result:e},e}function sr(){var e,t,r,u,o,s,i=75*it+64,c=dt[i];if(c)return it=c.nextPos,c.result;if(lt++,e=it,(t=or())!==n){for(r=[],u=it,(o=Nt())!==n&&(s=or())!==n?u=o=[o,s]:(it=u,u=n);u!==n;)r.push(u),u=it,(o=Nt())!==n&&(s=or())!==n?u=o=[o,s]:(it=u,u=n);e=ot(t,r)}else it=e,e=n;return lt--,e===n&&(t=n,0===lt&>(Ge)),dt[i]={nextPos:it,result:e},e}function ir(){var e,t,r,u,o,s,i=75*it+65,c=dt[i];if(c)return it=c.nextPos,c.result;if(lt++,e=it,(t=sr())!==n){for(r=[],u=it,(o=Ut())!==n&&(s=sr())!==n?u=o=[o,s]:(it=u,u=n);u!==n;)r.push(u),u=it,(o=Ut())!==n&&(s=sr())!==n?u=o=[o,s]:(it=u,u=n);e=ot(t,r)}else it=e,e=n;return lt--,e===n&&(t=n,0===lt&>(Xe)),dt[i]={nextPos:it,result:e},e}function cr(){var e,t,r,u,o,s,i=75*it+66,c=dt[i];if(c)return it=c.nextPos,c.result;if(lt++,e=it,(t=ir())!==n){for(r=[],u=it,(o=Ot())!==n&&(s=ir())!==n?u=o=[o,s]:(it=u,u=n);u!==n;)r.push(u),u=it,(o=Ot())!==n&&(s=ir())!==n?u=o=[o,s]:(it=u,u=n);e=ot(t,r)}else it=e,e=n;return lt--,e===n&&(t=n,0===lt&>(qe)),dt[i]={nextPos:it,result:e},e}function ar(){var e,t=75*it+68,r=dt[t];return r?(it=r.nextPos,r.result):(lt++,e=function(){var e,t,r,u,o,s,i=75*it+67,c=dt[i];if(c)return it=c.nextPos,c.result;if(lt++,e=it,(t=cr())!==n){for(r=[],u=it,(o=Ct())!==n&&(s=cr())!==n?u=o=[o,s]:(it=u,u=n);u!==n;)r.push(u),u=it,(o=Ct())!==n&&(s=cr())!==n?u=o=[o,s]:(it=u,u=n);e=ot(t,r)}else it=e,e=n;return lt--,e===n&&(t=n,0===lt&>(Le)),dt[i]={nextPos:it,result:e},e}(),lt--,e===n&&0===lt&>(Ve),dt[t]={nextPos:it,result:e},e)}function fr(){var e,t,r,u,o,s,i=75*it+69,c=dt[i];if(c)return it=c.nextPos,c.result;for(lt++,e=it,(t=dr())===n&&(t=null),r=[],u=it,(o=lr())!==n?((s=dr())===n&&(s=null),u=o=[o,s]):(it=u,u=n);u!==n;)r.push(u),u=it,(o=lr())!==n?((s=dr())===n&&(s=null),u=o=[o,s]):(it=u,u=n);return e=function(e,t){return vr(e,t)}(t,r),t=n,0==--lt&>(He),dt[i]={nextPos:it,result:e},e}function lr(){var t,r,u,o,s,i,c=75*it+70,a=dt[c];if(a)return it=a.nextPos,a.result;if((t=function(){var t,r,u,o,s,i=75*it+71,c=dt[i];if(c)return it=c.nextPos,c.result;if(t=it,r=it,"//"===e.substr(it,2)?(u="//",it+=2):(u=n,0===lt&>(Je)),u!==n){for(o=[],F.test(e.charAt(it))?(s=e.charAt(it),it++):(s=n,0===lt&>(Fe));s!==n;)o.push(s),F.test(e.charAt(it))?(s=e.charAt(it),it++):(s=n,0===lt&>(Fe));r=u=[u,o]}else it=r,r=n;return t=r!==n?e.substring(t,it):r,dt[i]={nextPos:it,result:t},t}())===n)if(t=it,(r=function(){var t,r,u,o,s,i,c,a=75*it+72,f=dt[a];if(f)return it=f.nextPos,f.result;if(t=it,r=it,"/*"===e.substr(it,2)?(u="/*",it+=2):(u=n,0===lt&>(Ke)),u!==n){for(o=[],s=it,i=it,lt++,e.substr(it,2)===m?(c=m,it+=2):(c=n,0===lt&>(Qe)),lt--,c===n?i=void 0:(it=i,i=n),i!==n?(e.length>it?(c=e.charAt(it),it++):(c=n,0===lt&>(Ye)),c!==n?s=c:(it=s,s=n)):(it=s,s=n);s!==n;)o.push(s),s=it,i=it,lt++,e.substr(it,2)===m?(c=m,it+=2):(c=n,0===lt&>(Qe)),lt--,c===n?i=void 0:(it=i,i=n),i!==n?(e.length>it?(c=e.charAt(it),it++):(c=n,0===lt&>(Ye)),c!==n?s=c:(it=s,s=n)):(it=s,s=n);e.substr(it,2)===m?(s=m,it+=2):(s=n,0===lt&>(Qe)),s!==n?r=u=[u,o,s]:(it=r,r=n)}else it=r,r=n;return t=r!==n?e.substring(t,it):r,dt[a]={nextPos:it,result:t},t}())!==n){for(u=[],o=it,(s=dr())!==n&&(i=lr())!==n?o=st(0,s,i):(it=o,o=n);o!==n;)u.push(o),o=it,(s=dr())!==n&&(i=lr())!==n?o=st(0,s,i):(it=o,o=n);t=function(e,t){return hr(e,t.flat())}(r,u)}else it=t,t=n;return dt[c]={nextPos:it,result:t},t}function dr(){var t,r,u,o=75*it+73,s=dt[o];if(s)return it=s.nextPos,s.result;if(lt++,t=it,r=[],M.test(e.charAt(it))?(u=e.charAt(it),it++):(u=n,0===lt&>(et)),u!==n)for(;u!==n;)r.push(u),M.test(e.charAt(it))?(u=e.charAt(it),it++):(u=n,0===lt&>(et));else r=n;return t=r!==n?e.substring(t,it):r,lt--,t===n&&(r=n,0===lt&>($e)),dt[o]={nextPos:it,result:t},t}function pr(){var t,r,u,o=75*it+74,s=dt[o];return s?(it=s.nextPos,s.result):(t=it,r=it,lt++,E.test(e.charAt(it))?(u=e.charAt(it),it++):(u=n,0===lt&>(ye)),lt--,u===n?r=void 0:(it=r,r=n),r!==n?t=u=fr():(it=t,t=n),dt[o]={nextPos:it,result:t},t)}e=A(e);const xr=(e,t)=>({type:e,...t}),hr=(...e)=>e.flat().filter(e=>null!=e&&""!==e&&0!==e.length),vr=(...e)=>(e=>e.length>1?e:e[0])(hr(e.flat())),Pr=(...e)=>e.flat().reduce((e,[t,r])=>({type:"binary",operator:t,left:e,right:r}));if((r=i())!==n&&it===e.length)return r;throw r!==n&&it0){for(t=1,r=1;to.length)throw new Error("'".concat(t,"': Too many arguments for macro"));if(a.length>":return t(r)>>t(n);case"<":return t(r)":return t(r)>t(n);case"<=":return t(r)<=t(n);case">=":return t(r)>=t(n);case"==":return t(r)==t(n);case"!=":return t(r)!=t(n);case"&":return t(r)&t(n);case"^":return t(r)^t(n);case"|":return t(r)|t(n);case"&&":return t(r)&&t(n);case"||":return t(r)||t(n);default:throw new Error("Preprocessing error: Unknown binary operator ".concat(u))}},unary:function(e,t){switch(e.operator.literal){case"+":return t(e.expression);case"-":return-1*t(e.expression);case"!":return!t(e.expression);case"~":return~t(e.expression);default:throw new Error("Preprocessing error: Unknown unary operator ".concat(e.operator.literal))}}},(n=function(e){var t=r[e.type];if(!t)throw new Error("No evaluate() evaluator for ".concat(e.type));return t(e,n)})(e);var r,n}((r=g(u,t).trim(),p(n)(r,{grammarSource:"expression",startRule:"constant_expression"})),t)},A=function(e,t){return void 0===t&&(t={}),e.replace(/\\[\n\r]/g,"")},w=function(e,t){void 0===t&&(t={});var r=Object.entries(t.defines||{}).reduce((function(e,t){var r,n=t[0],u=t[1];return x(x({},e),((r={})[n]={body:u},r))}),{}),n=function(e){return void 0===e&&(e={}),function(t){var r=null==e?void 0:e[t.node.type];return"function"==typeof r?r(t):r}}(t.preserve);return y(e,{conditional:{enter:function(e){var t=e,u=t.node;n(t)||(function(e,t){return"if"===t.type?!!t.expression&&b(m(t.expression,e)):"ifdef"===t.type?t.identifier.identifier in e:"ifndef"===t.type?!(t.identifier.identifier in e):void 0}(r,u.ifPart)?t.replaceWith(u.ifPart.body):u.elseIfParts.reduce((function(e,n){return e||b(m(n.expression,r))&&(t.replaceWith(n.body),!0)}),!1)||(u.elsePart?t.replaceWith(u.elsePart.body):t.remove()))}},text:{enter:function(e){var t=e;t.node.text=g(t.node.text,r)}},define_arguments:{enter:function(e){var t=e,u=t.node,o=u.identifier.identifier,s=u.body,i=u.args;r[o]={args:i,body:s},!n(t)&&t.remove()}},define:{enter:function(e){var t=e,u=t.node,o=u.identifier.identifier,s=u.body;r[o]={body:s},!n(t)&&t.remove()}},undef:{enter:function(e){var t=e;delete r[t.node.identifier.identifier],!n(t)&&t.remove()}},error:{enter:function(e){var r=e;if(t.stopOnError)throw new Error(r.node.message);!n(r)&&r.remove()}},pragma:{enter:function(e){var t=e;!n(t)&&t.remove()}},version:{enter:function(e){var t=e;!n(t)&&t.remove()}},extension:{enter:function(e){var t=e;!n(t)&&t.remove()}},line:{enter:function(e){var t=e;!n(t)&&t.remove()}}}),e},E=function(e,t){return p(n)((null==t?void 0:t.preserveComments)?e:v(e),t)},_=function(e,t){return o(w(E(e,t),t))};t.default=_},,function(e,t,r){"use strict";var n=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});var u=n(r(0));({codeElem:null,viewElem:null,show:function(){var e=this,t=this.codeElem.value;u.default.preprocess(t,(function(t,r){e.viewElem.textContent=t?"Error: ".concat(t):r||"",Prism.highlightElement(e.viewElem)}),{constants:{}})},init:function(){this.codeElem=document.getElementById("code"),this.viewElem=document.getElementById("codeView"),this.bindEvent(),this.show()},bindEvent:function(){var e=this;this.codeElem.oninput=function(){e.show()}}}).init()}])})); \ No newline at end of file +!function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t():"function"==typeof define&&define.amd?define([],t):"object"==typeof exports?exports.shaderCompiler=t():e.shaderCompiler=t()}("undefined"!=typeof self?self:this,(function(){return function(e){var t={};function r(n){if(t[n])return t[n].exports;var u=t[n]={i:n,l:!1,exports:{}};return e[n].call(u.exports,u,u.exports,r),u.l=!0,u.exports}return r.m=e,r.c=t,r.d=function(e,t,n){r.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:n})},r.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},r.t=function(e,t){if(1&t&&(e=r(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var n=Object.create(null);if(r.r(n),Object.defineProperty(n,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var u in e)r.d(n,u,function(t){return e[t]}.bind(null,u));return n},r.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return r.d(t,"a",t),t},r.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},r.p="",r(r.s=3)}([function(e,t,r){"use strict";var n=this&&this.__assign||function(){return(n=Object.assign||function(e){for(var t,r=1,n=arguments.length;rt?e:(t-=e.length,e+(r+=r.repeat(t)).slice(0,t))}function c(e,t){var r,n={},u=(t=void 0!==t?t:{}).grammarSource,o={program:bt,constant_expression:ar},i=bt,c="define",a="line",f="undef",l="error",d="pragma",p="defined",x="ifdef",h="ifndef",v="elif",P="else",g="endif",b="version",y="extension",m="*/",w=/^[A-Za-z_]/,E=/^[A-Za-z_0-9]/,_=/^[uU]/,O=/^[1-9]/,C=/^[0-7]/,j=/^[xX]/,k=/^[0-9a-fA-F]/,S=/^[0-9]/,R=/^[\n\r]/,F=/^[^\n\r]/,M=/^[ \t]/,z=pt("<<",!1),Z=pt(">>",!1),I=pt("<=",!1),T=pt(">=",!1),U=pt("==",!1),N=pt("!=",!1),W=pt("&&",!1),B=pt("||",!1),D=pt("(",!1),G=pt(")",!1),X=pt(",",!1),q=pt("!",!1),L=pt("-",!1),V=pt("~",!1),H=pt("+",!1),J=pt("*",!1),K=pt("/",!1),Q=pt("%",!1),Y=pt("<",!1),$=pt(">",!1),ee=pt("|",!1),te=pt("^",!1),re=pt("&",!1),ne=pt(":",!1),ue=pt("#",!1),oe=pt("define",!1),se=(pt("include",!1),pt("line",!1)),ie=pt("undef",!1),ce=pt("error",!1),ae=pt("pragma",!1),fe=pt("defined",!1),le=pt("if",!1),de=pt("ifdef",!1),pe=pt("ifndef",!1),xe=pt("elif",!1),he=pt("else",!1),ve=pt("endif",!1),Pe=pt("version",!1),ge=pt("extension",!1),be=xt([["A","Z"],["a","z"],"_"],!1,!1),ye=xt([["A","Z"],["a","z"],"_",["0","9"]],!1,!1),me=ht("number"),Ae=xt(["u","U"],!1,!1),we=xt([["1","9"]],!1,!1),Ee=pt("0",!1),_e=xt([["0","7"]],!1,!1),Oe=xt(["x","X"],!1,!1),Ce=xt([["0","9"],["a","f"],["A","F"]],!1,!1),je=xt([["0","9"]],!1,!1),ke=ht("control line"),Se=xt(["\n","\r"],!1,!1),Re=ht("token string"),Fe=xt(["\n","\r"],!0,!1),Me=ht("text"),ze=ht("if"),Ze=ht("primary expression"),Ie=ht("unary expression"),Te=ht("multiplicative expression"),Ue=ht("additive expression"),Ne=ht("shift expression"),We=ht("relational expression"),Be=ht("equality expression"),De=ht("and expression"),Ge=ht("exclusive or expression"),Xe=ht("inclusive or expression"),qe=ht("logical and expression"),Le=ht("logical or expression"),Ve=ht("constant expression"),He=ht("whitespace or comment"),Je=pt("//",!1),Ke=pt("/*",!1),Qe=pt("*/",!1),Ye={type:"any"},$e=ht("whitespace"),et=xt([" ","\t"],!1,!1),tt=function(e,t){return xr("literal",{literal:e,wsEnd:t})},rt=function(e,t,r){return xr("literal",{literal:t,wsStart:e,wsEnd:r})},nt=function(e){return xr("text",{text:e.join("")})},ut=function(e,t,r,n,u){return xr("elseif",{token:t,expression:r,wsEnd:n,body:u})},ot=function(e,t){return Pr(e,t)},st=function(e,t,r){return hr(t,r)},it=0,ct=[{line:1,column:1}],at=0,ft=[],lt=0,dt={};if("startRule"in t){if(!(t.startRule in o))throw new Error("Can't start parsing from rule \""+t.startRule+'".');i=o[t.startRule]}function pt(e,t){return{type:"literal",text:e,ignoreCase:t}}function xt(e,t,r){return{type:"class",parts:e,inverted:t,ignoreCase:r}}function ht(e){return{type:"other",description:e}}function vt(t){var r,n=ct[t];if(n)return n;for(r=t-1;!ct[r];)r--;for(n={line:(n=ct[r]).line,column:n.column};rat&&(at=it,ft=[]),ft.push(e))}function bt(){var e,t,r=75*it+0,u=dt[r];return u?(it=u.nextPos,u.result):(e=it,(t=Ht())!==n?e=function(e,t){return xr("program",{program:e.blocks,wsEnd:t})}(t,fr()):(it=e,e=n),dt[r]={nextPos:it,result:e},e)}function yt(){var t,r,u,o=75*it+2,s=dt[o];return s?(it=s.nextPos,s.result):(t=it,"<<"===e.substr(it,2)?(r="<<",it+=2):(r=n,0===lt&>(z)),r!==n?(u=fr(),t=tt(r,u)):(it=t,t=n),dt[o]={nextPos:it,result:t},t)}function mt(){var t,r,u,o=75*it+3,s=dt[o];return s?(it=s.nextPos,s.result):(t=it,">>"===e.substr(it,2)?(r=">>",it+=2):(r=n,0===lt&>(Z)),r!==n?(u=fr(),t=tt(r,u)):(it=t,t=n),dt[o]={nextPos:it,result:t},t)}function At(){var t,r,u,o=75*it+4,s=dt[o];return s?(it=s.nextPos,s.result):(t=it,"<="===e.substr(it,2)?(r="<=",it+=2):(r=n,0===lt&>(I)),r!==n?(u=fr(),t=tt(r,u)):(it=t,t=n),dt[o]={nextPos:it,result:t},t)}function wt(){var t,r,u,o=75*it+5,s=dt[o];return s?(it=s.nextPos,s.result):(t=it,">="===e.substr(it,2)?(r=">=",it+=2):(r=n,0===lt&>(T)),r!==n?(u=fr(),t=tt(r,u)):(it=t,t=n),dt[o]={nextPos:it,result:t},t)}function Et(){var t,r,u,o=75*it+6,s=dt[o];return s?(it=s.nextPos,s.result):(t=it,"=="===e.substr(it,2)?(r="==",it+=2):(r=n,0===lt&>(U)),r!==n?(u=fr(),t=tt(r,u)):(it=t,t=n),dt[o]={nextPos:it,result:t},t)}function _t(){var t,r,u,o=75*it+7,s=dt[o];return s?(it=s.nextPos,s.result):(t=it,"!="===e.substr(it,2)?(r="!=",it+=2):(r=n,0===lt&>(N)),r!==n?(u=fr(),t=tt(r,u)):(it=t,t=n),dt[o]={nextPos:it,result:t},t)}function Ot(){var t,r,u,o=75*it+8,s=dt[o];return s?(it=s.nextPos,s.result):(t=it,"&&"===e.substr(it,2)?(r="&&",it+=2):(r=n,0===lt&>(W)),r!==n?(u=fr(),t=tt(r,u)):(it=t,t=n),dt[o]={nextPos:it,result:t},t)}function Ct(){var t,r,u,o=75*it+9,s=dt[o];return s?(it=s.nextPos,s.result):(t=it,"||"===e.substr(it,2)?(r="||",it+=2):(r=n,0===lt&>(B)),r!==n?(u=fr(),t=tt(r,u)):(it=t,t=n),dt[o]={nextPos:it,result:t},t)}function jt(){var t,r,u,o=75*it+10,s=dt[o];return s?(it=s.nextPos,s.result):(t=it,40===e.charCodeAt(it)?(r="(",it++):(r=n,0===lt&>(D)),r!==n?(u=fr(),t=tt(r,u)):(it=t,t=n),dt[o]={nextPos:it,result:t},t)}function kt(){var t,r,u,o=75*it+11,s=dt[o];return s?(it=s.nextPos,s.result):(t=it,41===e.charCodeAt(it)?(r=")",it++):(r=n,0===lt&>(G)),r!==n?(u=fr(),t=tt(r,u)):(it=t,t=n),dt[o]={nextPos:it,result:t},t)}function St(){var t,r,u,o=75*it+12,s=dt[o];return s?(it=s.nextPos,s.result):(t=it,44===e.charCodeAt(it)?(r=",",it++):(r=n,0===lt&>(X)),r!==n?(u=fr(),t=tt(r,u)):(it=t,t=n),dt[o]={nextPos:it,result:t},t)}function Rt(){var t,r,u,o=75*it+14,s=dt[o];return s?(it=s.nextPos,s.result):(t=it,45===e.charCodeAt(it)?(r="-",it++):(r=n,0===lt&>(L)),r!==n?(u=fr(),t=tt(r,u)):(it=t,t=n),dt[o]={nextPos:it,result:t},t)}function Ft(){var t,r,u,o=75*it+16,s=dt[o];return s?(it=s.nextPos,s.result):(t=it,43===e.charCodeAt(it)?(r="+",it++):(r=n,0===lt&>(H)),r!==n?(u=fr(),t=tt(r,u)):(it=t,t=n),dt[o]={nextPos:it,result:t},t)}function Mt(){var t,r,u,o=75*it+17,s=dt[o];return s?(it=s.nextPos,s.result):(t=it,42===e.charCodeAt(it)?(r="*",it++):(r=n,0===lt&>(J)),r!==n?(u=fr(),t=tt(r,u)):(it=t,t=n),dt[o]={nextPos:it,result:t},t)}function zt(){var t,r,u,o=75*it+18,s=dt[o];return s?(it=s.nextPos,s.result):(t=it,47===e.charCodeAt(it)?(r="/",it++):(r=n,0===lt&>(K)),r!==n?(u=fr(),t=tt(r,u)):(it=t,t=n),dt[o]={nextPos:it,result:t},t)}function Zt(){var t,r,u,o=75*it+19,s=dt[o];return s?(it=s.nextPos,s.result):(t=it,37===e.charCodeAt(it)?(r="%",it++):(r=n,0===lt&>(Q)),r!==n?(u=fr(),t=tt(r,u)):(it=t,t=n),dt[o]={nextPos:it,result:t},t)}function It(){var t,r,u,o=75*it+20,s=dt[o];return s?(it=s.nextPos,s.result):(t=it,60===e.charCodeAt(it)?(r="<",it++):(r=n,0===lt&>(Y)),r!==n?(u=fr(),t=tt(r,u)):(it=t,t=n),dt[o]={nextPos:it,result:t},t)}function Tt(){var t,r,u,o=75*it+21,s=dt[o];return s?(it=s.nextPos,s.result):(t=it,62===e.charCodeAt(it)?(r=">",it++):(r=n,0===lt&>($)),r!==n?(u=fr(),t=tt(r,u)):(it=t,t=n),dt[o]={nextPos:it,result:t},t)}function Ut(){var t,r,u,o=75*it+22,s=dt[o];return s?(it=s.nextPos,s.result):(t=it,124===e.charCodeAt(it)?(r="|",it++):(r=n,0===lt&>(ee)),r!==n?(u=fr(),t=tt(r,u)):(it=t,t=n),dt[o]={nextPos:it,result:t},t)}function Nt(){var t,r,u,o=75*it+23,s=dt[o];return s?(it=s.nextPos,s.result):(t=it,94===e.charCodeAt(it)?(r="^",it++):(r=n,0===lt&>(te)),r!==n?(u=fr(),t=tt(r,u)):(it=t,t=n),dt[o]={nextPos:it,result:t},t)}function Wt(){var t,r,u,o=75*it+24,s=dt[o];return s?(it=s.nextPos,s.result):(t=it,38===e.charCodeAt(it)?(r="&",it++):(r=n,0===lt&>(re)),r!==n?(u=fr(),t=tt(r,u)):(it=t,t=n),dt[o]={nextPos:it,result:t},t)}function Bt(){var t,r,u,o=75*it+26,s=dt[o];return s?(it=s.nextPos,s.result):(t=it,r=it,35===e.charCodeAt(it)?(u="#",it++):(u=n,0===lt&>(ue)),(r=u!==n?e.substring(r,it):u)!==n?(u=fr(),t="#"):(it=t,t=n),dt[o]={nextPos:it,result:t},t)}function Dt(){var t,r,u,o,s,i,a=75*it+27,f=dt[a];return f?(it=f.nextPos,f.result):(t=it,r=fr(),u=it,o=it,(s=Bt())!==n?(e.substr(it,6)===c?(i=c,it+=6):(i=n,0===lt&>(oe)),i!==n?o=s=[s,i]:(it=o,o=n)):(it=o,o=n),(u=o!==n?e.substring(u,it):o)!==n&&(o=pr())!==n?t=rt(r,u,o):(it=t,t=n),dt[a]={nextPos:it,result:t},t)}function Gt(){var t,r,u,o,s,i,c=75*it+37,a=dt[c];return a?(it=a.nextPos,a.result):(t=it,r=fr(),u=it,o=it,(s=Bt())!==n?(e.substr(it,4)===v?(i=v,it+=4):(i=n,0===lt&>(xe)),i!==n?o=s=[s,i]:(it=o,o=n)):(it=o,o=n),(u=o!==n?e.substring(u,it):o)!==n&&(o=pr())!==n?t=rt(r,u,o):(it=t,t=n),dt[c]={nextPos:it,result:t},t)}function Xt(){var t,r,u,o,s,i,c=75*it+42,a=dt[c];if(a)return it=a.nextPos,a.result;if(t=it,r=it,u=it,w.test(e.charAt(it))?(o=e.charAt(it),it++):(o=n,0===lt&>(be)),o!==n){for(s=[],E.test(e.charAt(it))?(i=e.charAt(it),it++):(i=n,0===lt&>(ye));i!==n;)s.push(i),E.test(e.charAt(it))?(i=e.charAt(it),it++):(i=n,0===lt&>(ye));u=o=[o,s]}else it=u,u=n;return(r=u!==n?e.substring(r,it):u)!==n?t=function(e,t){return xr("identifier",{identifier:e,wsEnd:t})}(r,u=fr()):(it=t,t=n),dt[c]={nextPos:it,result:t},t}function qt(){var t,r,u,o,s=75*it+44,i=dt[s];return i?(it=i.nextPos,i.result):(lt++,t=it,r=it,(u=function(){var t,r,u,o,s,i=75*it+46,c=dt[i];if(c)return it=c.nextPos,c.result;if(t=it,r=it,O.test(e.charAt(it))?(u=e.charAt(it),it++):(u=n,0===lt&>(we)),u!==n){for(o=[],s=Vt();s!==n;)o.push(s),s=Vt();r=u=[u,o]}else it=r,r=n;return t=r!==n?e.substring(t,it):r,dt[i]={nextPos:it,result:t},t}())!==n?((o=Lt())===n&&(o=null),r=u=[u,o]):(it=r,r=n),(t=r!==n?e.substring(t,it):r)===n&&(t=it,r=it,(u=function(){var t,r,u,o,s=75*it+47,i=dt[s];if(i)return it=i.nextPos,i.result;if(t=it,48===e.charCodeAt(it)?(r="0",it++):(r=n,0===lt&>(Ee)),r!==n){for(u=[],C.test(e.charAt(it))?(o=e.charAt(it),it++):(o=n,0===lt&>(_e));o!==n;)u.push(o),C.test(e.charAt(it))?(o=e.charAt(it),it++):(o=n,0===lt&>(_e));t=r=[r,u]}else it=t,t=n;return dt[s]={nextPos:it,result:t},t}())!==n?((o=Lt())===n&&(o=null),r=u=[u,o]):(it=r,r=n),(t=r!==n?e.substring(t,it):r)===n&&(t=it,r=it,(u=function(){var t,r,u,o,s,i=75*it+48,c=dt[i];if(c)return it=c.nextPos,c.result;if(t=it,48===e.charCodeAt(it)?(r="0",it++):(r=n,0===lt&>(Ee)),r!==n)if(j.test(e.charAt(it))?(u=e.charAt(it),it++):(u=n,0===lt&>(Oe)),u!==n){for(o=[],k.test(e.charAt(it))?(s=e.charAt(it),it++):(s=n,0===lt&>(Ce));s!==n;)o.push(s),k.test(e.charAt(it))?(s=e.charAt(it),it++):(s=n,0===lt&>(Ce));t=r=[r,u,o]}else it=t,t=n;else it=t,t=n;return dt[i]={nextPos:it,result:t},t}())!==n?((o=Lt())===n&&(o=null),r=u=[u,o]):(it=r,r=n),t=r!==n?e.substring(t,it):r)),lt--,t===n&&(r=n,0===lt&>(me)),dt[s]={nextPos:it,result:t},t)}function Lt(){var t,r=75*it+45,u=dt[r];return u?(it=u.nextPos,u.result):(_.test(e.charAt(it))?(t=e.charAt(it),it++):(t=n,0===lt&>(Ae)),dt[r]={nextPos:it,result:t},t)}function Vt(){var t,r=75*it+49,u=dt[r];return u?(it=u.nextPos,u.result):(S.test(e.charAt(it))?(t=e.charAt(it),it++):(t=n,0===lt&>(je)),dt[r]={nextPos:it,result:t},t)}function Ht(){var e,t,r,u,o,s=75*it+50,i=dt[s];if(i)return it=i.nextPos,i.result;if(e=it,t=[],(r=Jt())===n){if(r=it,u=[],(o=Qt())!==n)for(;o!==n;)u.push(o),o=Qt();else u=n;u!==n&&(u=nt(u)),r=u}if(r!==n){for(;r!==n;)if(t.push(r),(r=Jt())===n){if(r=it,u=[],(o=Qt())!==n)for(;o!==n;)u.push(o),o=Qt();else u=n;u!==n&&(u=nt(u)),r=u}}else t=n;return t!==n&&(t=function(e){return xr("segment",{blocks:e})}(t)),e=t,dt[s]={nextPos:it,result:e},e}function Jt(){var t,r,u,o,s,i,c,p,v,m,A,_=75*it+51,O=dt[_];if(O)return it=O.nextPos,O.result;if(lt++,(t=function(){var t,r,u,o,s,i,c,a,f=75*it+54,l=dt[f];if(l)return it=l.nextPos,l.result;if(t=it,r=it,(u=function(){var t,r,u,o=75*it+55,s=dt[o];return s?(it=s.nextPos,s.result):(lt++,t=it,(r=function(){var t,r,u,o,s,i,c=75*it+35,a=dt[c];return a?(it=a.nextPos,a.result):(t=it,r=fr(),u=it,o=it,(s=Bt())!==n?(e.substr(it,5)===x?(i=x,it+=5):(i=n,0===lt&>(de)),i!==n?o=s=[s,i]:(it=o,o=n)):(it=o,o=n),(u=o!==n?e.substring(u,it):o)!==n&&(o=pr())!==n?t=rt(r,u,o):(it=t,t=n),dt[c]={nextPos:it,result:t},t)}())!==n&&(u=Xt())!==n?t=function(e,t){return xr("ifdef",{token:e,identifier:t})}(r,u):(it=t,t=n),t===n&&(t=it,(r=function(){var t,r,u,o,s,i,c=75*it+36,a=dt[c];return a?(it=a.nextPos,a.result):(t=it,r=fr(),u=it,o=it,(s=Bt())!==n?(e.substr(it,6)===h?(i=h,it+=6):(i=n,0===lt&>(pe)),i!==n?o=s=[s,i]:(it=o,o=n)):(it=o,o=n),(u=o!==n?e.substring(u,it):o)!==n&&(o=pr())!==n?t=rt(r,u,o):(it=t,t=n),dt[c]={nextPos:it,result:t},t)}())!==n&&(u=Xt())!==n?t=function(e,t){return xr("ifndef",{token:e,identifier:t})}(r,u):(it=t,t=n),t===n&&(t=it,(r=function(){var t,r,u,o,s,i,c=75*it+34,a=dt[c];return a?(it=a.nextPos,a.result):(t=it,r=fr(),u=it,o=it,(s=Bt())!==n?("if"===e.substr(it,2)?(i="if",it+=2):(i=n,0===lt&>(le)),i!==n?o=s=[s,i]:(it=o,o=n)):(it=o,o=n),(u=o!==n?e.substring(u,it):o)!==n&&(o=pr())!==n?t=rt(r,u,o):(it=t,t=n),dt[c]={nextPos:it,result:t},t)}())!==n?((u=Kt())===n&&(u=null),t=function(e,t){return xr("if",{token:e,expression:t})}(r,u)):(it=t,t=n))),lt--,t===n&&(r=n,0===lt&>(ze)),dt[o]={nextPos:it,result:t},t)}())!==n?(R.test(e.charAt(it))?(o=e.charAt(it),it++):(o=n,0===lt&>(Se)),o!==n?((s=Ht())===n&&(s=null),r=function(e,t,r){return{...e,body:r,wsEnd:t}}(u,o,s)):(it=r,r=n)):(it=r,r=n),r!==n){for(u=[],o=it,(s=Gt())!==n&&(i=Kt())!==n?(R.test(e.charAt(it))?(c=e.charAt(it),it++):(c=n,0===lt&>(Se)),c!==n?((a=Ht())===n&&(a=null),o=ut(0,s,i,c,a)):(it=o,o=n)):(it=o,o=n);o!==n;)u.push(o),o=it,(s=Gt())!==n&&(i=Kt())!==n?(R.test(e.charAt(it))?(c=e.charAt(it),it++):(c=n,0===lt&>(Se)),c!==n?((a=Ht())===n&&(a=null),o=ut(0,s,i,c,a)):(it=o,o=n)):(it=o,o=n);o=it,(s=function(){var t,r,u,o,s,i,c=75*it+38,a=dt[c];return a?(it=a.nextPos,a.result):(t=it,r=fr(),u=it,o=it,(s=Bt())!==n?(e.substr(it,4)===P?(i=P,it+=4):(i=n,0===lt&>(he)),i!==n?o=s=[s,i]:(it=o,o=n)):(it=o,o=n),(u=o!==n?e.substring(u,it):o)!==n&&(o=pr())!==n?t=rt(r,u,o):(it=t,t=n),dt[c]={nextPos:it,result:t},t)}())!==n?(R.test(e.charAt(it))?(i=e.charAt(it),it++):(i=n,0===lt&>(Se)),i!==n?((c=Ht())===n&&(c=null),o=function(e,t,r,n,u){return xr("else",{token:r,wsEnd:n,body:u})}(0,0,s,i,c)):(it=o,o=n)):(it=o,o=n),o===n&&(o=null),(s=function(){var t,r,u,o,s,i,c=75*it+39,a=dt[c];return a?(it=a.nextPos,a.result):(t=it,r=fr(),u=it,o=it,(s=Bt())!==n?(e.substr(it,5)===g?(i=g,it+=5):(i=n,0===lt&>(ve)),i!==n?o=s=[s,i]:(it=o,o=n)):(it=o,o=n),(u=o!==n?e.substring(u,it):o)!==n&&(o=pr())!==n?t=rt(r,u,o):(it=t,t=n),dt[c]={nextPos:it,result:t},t)}())!==n?(R.test(e.charAt(it))?(i=e.charAt(it),it++):(i=n,0===lt&>(Se)),i===n&&(i=null),t=function(e,t,r,n,u){return xr("conditional",{ifPart:e,elseIfParts:t,elsePart:r,endif:n,wsEnd:u})}(r,u,o,s,i)):(it=t,t=n)}else it=t,t=n;return dt[f]={nextPos:it,result:t},t}())===n){if(t=it,r=it,(u=Dt())!==n)if((o=function(){var t,r,u,o,s,i,c=75*it+43,a=dt[c];if(a)return it=a.nextPos,a.result;if(t=it,r=it,u=it,w.test(e.charAt(it))?(o=e.charAt(it),it++):(o=n,0===lt&>(be)),o!==n){for(s=[],E.test(e.charAt(it))?(i=e.charAt(it),it++):(i=n,0===lt&>(ye));i!==n;)s.push(i),E.test(e.charAt(it))?(i=e.charAt(it),it++):(i=n,0===lt&>(ye));u=o=[o,s]}else it=u,u=n;return(r=u!==n?e.substring(r,it):u)!==n&&(r=function(e){return xr("identifier",{identifier:e})}(r)),t=r,dt[c]={nextPos:it,result:t},t}())!==n)if((s=jt())!==n){if(i=it,(c=Xt())!==n){for(p=[],v=it,(m=St())!==n&&(A=Xt())!==n?v=m=[m,A]:(it=v,v=n);v!==n;)p.push(v),v=it,(m=St())!==n&&(A=Xt())!==n?v=m=[m,A]:(it=v,v=n);i=function(e,t,r,n,u){return[n,...u.flat()]}(0,0,0,c,p)}else it=i,i=n;i===n&&(i=null),(c=kt())!==n?((p=Kt())===n&&(p=null),r=function(e,t,r,n,u,o){return xr("define_arguments",{define:e,identifier:t,lp:r,args:n||[],rp:u,body:o})}(u,o,s,i,c,p)):(it=r,r=n)}else it=r,r=n;else it=r,r=n;else it=r,r=n;if(r===n&&(r=it,(u=Dt())!==n&&(o=Xt())!==n?((s=Kt())===n&&(s=null),r=function(e,t,r){return xr("define",{define:e,identifier:t,body:r})}(u,o,s)):(it=r,r=n),r===n)){if(r=it,(u=function(){var t,r,u,o,s,i,c=75*it+29,f=dt[c];return f?(it=f.nextPos,f.result):(t=it,r=fr(),u=it,o=it,(s=Bt())!==n?(e.substr(it,4)===a?(i=a,it+=4):(i=n,0===lt&>(se)),i!==n?o=s=[s,i]:(it=o,o=n)):(it=o,o=n),(u=o!==n?e.substring(u,it):o)!==n&&(o=pr())!==n?t=rt(r,u,o):(it=t,t=n),dt[c]={nextPos:it,result:t},t)}())!==n){if(o=it,s=[],(i=Vt())!==n)for(;i!==n;)s.push(i),i=Vt();else s=n;(o=s!==n?e.substring(o,it):s)!==n?r=function(e,t){return xr("line",{line:e,value:t})}(u,o):(it=r,r=n)}else it=r,r=n;r===n&&(r=it,(u=function(){var t,r,u,o,s,i,c=75*it+30,a=dt[c];return a?(it=a.nextPos,a.result):(t=it,r=fr(),u=it,o=it,(s=Bt())!==n?(e.substr(it,5)===f?(i=f,it+=5):(i=n,0===lt&>(ie)),i!==n?o=s=[s,i]:(it=o,o=n)):(it=o,o=n),(u=o!==n?e.substring(u,it):o)!==n&&(o=pr())!==n?t=rt(r,u,o):(it=t,t=n),dt[c]={nextPos:it,result:t},t)}())!==n&&(o=Xt())!==n?r=function(e,t){return xr("undef",{undef:e,identifier:t})}(u,o):(it=r,r=n),r===n&&(r=it,(u=function(){var t,r,u,o,s,i,c=75*it+31,a=dt[c];return a?(it=a.nextPos,a.result):(t=it,r=fr(),u=it,o=it,(s=Bt())!==n?(e.substr(it,5)===l?(i=l,it+=5):(i=n,0===lt&>(ce)),i!==n?o=s=[s,i]:(it=o,o=n)):(it=o,o=n),(u=o!==n?e.substring(u,it):o)!==n&&(o=pr())!==n?t=rt(r,u,o):(it=t,t=n),dt[c]={nextPos:it,result:t},t)}())!==n&&(o=Kt())!==n?r=function(e,t){return xr("error",{error:e,message:t})}(u,o):(it=r,r=n),r===n&&(r=it,(u=function(){var t,r,u,o,s,i,c=75*it+32,a=dt[c];return a?(it=a.nextPos,a.result):(t=it,r=fr(),u=it,o=it,(s=Bt())!==n?(e.substr(it,6)===d?(i=d,it+=6):(i=n,0===lt&>(ae)),i!==n?o=s=[s,i]:(it=o,o=n)):(it=o,o=n),(u=o!==n?e.substring(u,it):o)!==n&&(o=pr())!==n?t=rt(r,u,o):(it=t,t=n),dt[c]={nextPos:it,result:t},t)}())!==n&&(o=Kt())!==n?r=function(e,t){return xr("pragma",{pragma:e,body:t})}(u,o):(it=r,r=n),r===n&&(r=it,(u=function(){var t,r,u,o,s,i,c=75*it+40,a=dt[c];return a?(it=a.nextPos,a.result):(t=it,r=fr(),u=it,o=it,(s=Bt())!==n?(e.substr(it,7)===b?(i=b,it+=7):(i=n,0===lt&>(Pe)),i!==n?o=s=[s,i]:(it=o,o=n)):(it=o,o=n),(u=o!==n?e.substring(u,it):o)!==n&&(o=pr())!==n?t=rt(r,u,o):(it=t,t=n),dt[c]={nextPos:it,result:t},t)}())!==n&&(o=qt())!==n?((s=Kt())===n&&(s=null),r=function(e,t,r){return xr("version",{version:e,value:t,profile:r})}(u,o,s)):(it=r,r=n),r===n&&(r=it,(u=function(){var t,r,u,o,s,i,c=75*it+41,a=dt[c];return a?(it=a.nextPos,a.result):(t=it,r=fr(),u=it,o=it,(s=Bt())!==n?(e.substr(it,9)===y?(i=y,it+=9):(i=n,0===lt&>(ge)),i!==n?o=s=[s,i]:(it=o,o=n)):(it=o,o=n),(u=o!==n?e.substring(u,it):o)!==n&&(o=pr())!==n?t=rt(r,u,o):(it=t,t=n),dt[c]={nextPos:it,result:t},t)}())!==n&&(o=Xt())!==n&&(s=function(){var t,r,u,o=75*it+25,s=dt[o];return s?(it=s.nextPos,s.result):(t=it,58===e.charCodeAt(it)?(r=":",it++):(r=n,0===lt&>(ne)),r!==n?(u=fr(),t=tt(r,u)):(it=t,t=n),dt[o]={nextPos:it,result:t},t)}())!==n&&(i=Kt())!==n?r=function(e,t,r,n){return xr("extension",{extension:e,name:t,colon:r,behavior:n})}(u,o,s,i):(it=r,r=n))))))}r!==n?(R.test(e.charAt(it))?(u=e.charAt(it),it++):(u=n,0===lt&>(Se)),u===n&&(u=null),t=function(e,t){return{...e,wsEnd:t}}(r,u)):(it=t,t=n)}return lt--,t===n&&(r=n,0===lt&>(ke)),dt[_]={nextPos:it,result:t},t}function Kt(){var t,r,u,o=75*it+52,s=dt[o];if(s)return it=s.nextPos,s.result;if(lt++,t=it,r=[],F.test(e.charAt(it))?(u=e.charAt(it),it++):(u=n,0===lt&>(Fe)),u!==n)for(;u!==n;)r.push(u),F.test(e.charAt(it))?(u=e.charAt(it),it++):(u=n,0===lt&>(Fe));else r=n;return t=r!==n?e.substring(t,it):r,lt--,t===n&&(r=n,0===lt&>(Re)),dt[o]={nextPos:it,result:t},t}function Qt(){var t,r,u,o,s,i,c=75*it+53,a=dt[c];if(a)return it=a.nextPos,a.result;if(lt++,t=it,r=it,u=it,lt++,o=it,(s=dr())===n&&(s=null),35===e.charCodeAt(it)?(i="#",it++):(i=n,0===lt&>(ue)),i!==n?o=s=[s,i]:(it=o,o=n),lt--,o===n?u=void 0:(it=u,u=n),u!==n){if(o=[],F.test(e.charAt(it))?(s=e.charAt(it),it++):(s=n,0===lt&>(Fe)),s!==n)for(;s!==n;)o.push(s),F.test(e.charAt(it))?(s=e.charAt(it),it++):(s=n,0===lt&>(Fe));else o=n;o!==n?(R.test(e.charAt(it))?(s=e.charAt(it),it++):(s=n,0===lt&>(Se)),s===n&&(s=null),r=u=[u,o,s]):(it=r,r=n)}else it=r,r=n;return r===n&&(R.test(e.charAt(it))?(r=e.charAt(it),it++):(r=n,0===lt&>(Se))),t=r!==n?e.substring(t,it):r,lt--,t===n&&(r=n,0===lt&>(Me)),dt[c]={nextPos:it,result:t},t}function Yt(){var e,t,r,u,o=75*it+56,s=dt[o];return s?(it=s.nextPos,s.result):(lt++,(e=function(){var e,t,r=75*it+1,u=dt[r];return u?(it=u.nextPos,u.result):(e=it,(t=qt())!==n?e=function(e,t){return xr("int_constant",{token:e,wsEnd:t})}(t,fr()):(it=e,e=n),dt[r]={nextPos:it,result:e},e)}())===n&&(e=it,(t=jt())!==n&&(r=ar())!==n&&(u=kt())!==n?e=function(e,t,r){return xr("group",{lp:e,expression:t,rp:r})}(t,r,u):(it=e,e=n),e===n&&(e=Xt())),lt--,e===n&&(t=n,0===lt&>(Ze)),dt[o]={nextPos:it,result:e},e)}function $t(){var t,r,u,o,s,i=75*it+57,c=dt[i];return c?(it=c.nextPos,c.result):(lt++,t=it,(r=function(){var t,r,u,o,s=75*it+33,i=dt[s];return i?(it=i.nextPos,i.result):(t=it,r=fr(),e.substr(it,7)===p?(u=p,it+=7):(u=n,0===lt&>(fe)),u!==n&&(o=pr())!==n?t=rt(r,u,o):(it=t,t=n),dt[s]={nextPos:it,result:t},t)}())!==n?((u=jt())===n&&(u=null),(o=Xt())!==n?((s=kt())===n&&(s=null),t=function(e,t,r,n){return xr("unary_defined",{operator:e,lp:t,identifier:r,rp:n})}(r,u,o,s)):(it=t,t=n)):(it=t,t=n),t===n&&(t=it,(r=Ft())===n&&(r=Rt())===n&&(r=function(){var t,r,u,o=75*it+13,s=dt[o];return s?(it=s.nextPos,s.result):(t=it,33===e.charCodeAt(it)?(r="!",it++):(r=n,0===lt&>(q)),r!==n?(u=fr(),t=tt(r,u)):(it=t,t=n),dt[o]={nextPos:it,result:t},t)}())===n&&(r=function(){var t,r,u,o=75*it+15,s=dt[o];return s?(it=s.nextPos,s.result):(t=it,126===e.charCodeAt(it)?(r="~",it++):(r=n,0===lt&>(V)),r!==n?(u=fr(),t=tt(r,u)):(it=t,t=n),dt[o]={nextPos:it,result:t},t)}()),r!==n&&(u=$t())!==n?t=function(e,t){return xr("unary",{operator:e,expression:t})}(r,u):(it=t,t=n),t===n&&(t=Yt())),lt--,t===n&&(r=n,0===lt&>(Ie)),dt[i]={nextPos:it,result:t},t)}function er(){var e,t,r,u,o,s,i=75*it+58,c=dt[i];if(c)return it=c.nextPos,c.result;if(lt++,e=it,(t=$t())!==n){for(r=[],u=it,(o=Mt())===n&&(o=zt())===n&&(o=Zt()),o!==n&&(s=$t())!==n?u=o=[o,s]:(it=u,u=n);u!==n;)r.push(u),u=it,(o=Mt())===n&&(o=zt())===n&&(o=Zt()),o!==n&&(s=$t())!==n?u=o=[o,s]:(it=u,u=n);e=ot(t,r)}else it=e,e=n;return lt--,e===n&&(t=n,0===lt&>(Te)),dt[i]={nextPos:it,result:e},e}function tr(){var e,t,r,u,o,s,i=75*it+59,c=dt[i];if(c)return it=c.nextPos,c.result;if(lt++,e=it,(t=er())!==n){for(r=[],u=it,(o=Ft())===n&&(o=Rt()),o!==n&&(s=er())!==n?u=o=[o,s]:(it=u,u=n);u!==n;)r.push(u),u=it,(o=Ft())===n&&(o=Rt()),o!==n&&(s=er())!==n?u=o=[o,s]:(it=u,u=n);e=ot(t,r)}else it=e,e=n;return lt--,e===n&&(t=n,0===lt&>(Ue)),dt[i]={nextPos:it,result:e},e}function rr(){var e,t,r,u,o,s,i=75*it+60,c=dt[i];if(c)return it=c.nextPos,c.result;if(lt++,e=it,(t=tr())!==n){for(r=[],u=it,(o=mt())===n&&(o=yt()),o!==n&&(s=tr())!==n?u=o=[o,s]:(it=u,u=n);u!==n;)r.push(u),u=it,(o=mt())===n&&(o=yt()),o!==n&&(s=tr())!==n?u=o=[o,s]:(it=u,u=n);e=ot(t,r)}else it=e,e=n;return lt--,e===n&&(t=n,0===lt&>(Ne)),dt[i]={nextPos:it,result:e},e}function nr(){var e,t,r,u,o,s,i=75*it+61,c=dt[i];if(c)return it=c.nextPos,c.result;if(lt++,e=it,(t=rr())!==n){for(r=[],u=it,(o=At())===n&&(o=wt())===n&&(o=It())===n&&(o=Tt()),o!==n&&(s=rr())!==n?u=o=[o,s]:(it=u,u=n);u!==n;)r.push(u),u=it,(o=At())===n&&(o=wt())===n&&(o=It())===n&&(o=Tt()),o!==n&&(s=rr())!==n?u=o=[o,s]:(it=u,u=n);e=ot(t,r)}else it=e,e=n;return lt--,e===n&&(t=n,0===lt&>(We)),dt[i]={nextPos:it,result:e},e}function ur(){var e,t,r,u,o,s,i=75*it+62,c=dt[i];if(c)return it=c.nextPos,c.result;if(lt++,e=it,(t=nr())!==n){for(r=[],u=it,(o=Et())===n&&(o=_t()),o!==n&&(s=nr())!==n?u=o=[o,s]:(it=u,u=n);u!==n;)r.push(u),u=it,(o=Et())===n&&(o=_t()),o!==n&&(s=nr())!==n?u=o=[o,s]:(it=u,u=n);e=ot(t,r)}else it=e,e=n;return lt--,e===n&&(t=n,0===lt&>(Be)),dt[i]={nextPos:it,result:e},e}function or(){var e,t,r,u,o,s,i=75*it+63,c=dt[i];if(c)return it=c.nextPos,c.result;if(lt++,e=it,(t=ur())!==n){for(r=[],u=it,(o=Wt())!==n&&(s=ur())!==n?u=o=[o,s]:(it=u,u=n);u!==n;)r.push(u),u=it,(o=Wt())!==n&&(s=ur())!==n?u=o=[o,s]:(it=u,u=n);e=ot(t,r)}else it=e,e=n;return lt--,e===n&&(t=n,0===lt&>(De)),dt[i]={nextPos:it,result:e},e}function sr(){var e,t,r,u,o,s,i=75*it+64,c=dt[i];if(c)return it=c.nextPos,c.result;if(lt++,e=it,(t=or())!==n){for(r=[],u=it,(o=Nt())!==n&&(s=or())!==n?u=o=[o,s]:(it=u,u=n);u!==n;)r.push(u),u=it,(o=Nt())!==n&&(s=or())!==n?u=o=[o,s]:(it=u,u=n);e=ot(t,r)}else it=e,e=n;return lt--,e===n&&(t=n,0===lt&>(Ge)),dt[i]={nextPos:it,result:e},e}function ir(){var e,t,r,u,o,s,i=75*it+65,c=dt[i];if(c)return it=c.nextPos,c.result;if(lt++,e=it,(t=sr())!==n){for(r=[],u=it,(o=Ut())!==n&&(s=sr())!==n?u=o=[o,s]:(it=u,u=n);u!==n;)r.push(u),u=it,(o=Ut())!==n&&(s=sr())!==n?u=o=[o,s]:(it=u,u=n);e=ot(t,r)}else it=e,e=n;return lt--,e===n&&(t=n,0===lt&>(Xe)),dt[i]={nextPos:it,result:e},e}function cr(){var e,t,r,u,o,s,i=75*it+66,c=dt[i];if(c)return it=c.nextPos,c.result;if(lt++,e=it,(t=ir())!==n){for(r=[],u=it,(o=Ot())!==n&&(s=ir())!==n?u=o=[o,s]:(it=u,u=n);u!==n;)r.push(u),u=it,(o=Ot())!==n&&(s=ir())!==n?u=o=[o,s]:(it=u,u=n);e=ot(t,r)}else it=e,e=n;return lt--,e===n&&(t=n,0===lt&>(qe)),dt[i]={nextPos:it,result:e},e}function ar(){var e,t=75*it+68,r=dt[t];return r?(it=r.nextPos,r.result):(lt++,e=function(){var e,t,r,u,o,s,i=75*it+67,c=dt[i];if(c)return it=c.nextPos,c.result;if(lt++,e=it,(t=cr())!==n){for(r=[],u=it,(o=Ct())!==n&&(s=cr())!==n?u=o=[o,s]:(it=u,u=n);u!==n;)r.push(u),u=it,(o=Ct())!==n&&(s=cr())!==n?u=o=[o,s]:(it=u,u=n);e=ot(t,r)}else it=e,e=n;return lt--,e===n&&(t=n,0===lt&>(Le)),dt[i]={nextPos:it,result:e},e}(),lt--,e===n&&0===lt&>(Ve),dt[t]={nextPos:it,result:e},e)}function fr(){var e,t,r,u,o,s,i=75*it+69,c=dt[i];if(c)return it=c.nextPos,c.result;for(lt++,e=it,(t=dr())===n&&(t=null),r=[],u=it,(o=lr())!==n?((s=dr())===n&&(s=null),u=o=[o,s]):(it=u,u=n);u!==n;)r.push(u),u=it,(o=lr())!==n?((s=dr())===n&&(s=null),u=o=[o,s]):(it=u,u=n);return e=function(e,t){return vr(e,t)}(t,r),t=n,0==--lt&>(He),dt[i]={nextPos:it,result:e},e}function lr(){var t,r,u,o,s,i,c=75*it+70,a=dt[c];if(a)return it=a.nextPos,a.result;if((t=function(){var t,r,u,o,s,i=75*it+71,c=dt[i];if(c)return it=c.nextPos,c.result;if(t=it,r=it,"//"===e.substr(it,2)?(u="//",it+=2):(u=n,0===lt&>(Je)),u!==n){for(o=[],F.test(e.charAt(it))?(s=e.charAt(it),it++):(s=n,0===lt&>(Fe));s!==n;)o.push(s),F.test(e.charAt(it))?(s=e.charAt(it),it++):(s=n,0===lt&>(Fe));r=u=[u,o]}else it=r,r=n;return t=r!==n?e.substring(t,it):r,dt[i]={nextPos:it,result:t},t}())===n)if(t=it,(r=function(){var t,r,u,o,s,i,c,a=75*it+72,f=dt[a];if(f)return it=f.nextPos,f.result;if(t=it,r=it,"/*"===e.substr(it,2)?(u="/*",it+=2):(u=n,0===lt&>(Ke)),u!==n){for(o=[],s=it,i=it,lt++,e.substr(it,2)===m?(c=m,it+=2):(c=n,0===lt&>(Qe)),lt--,c===n?i=void 0:(it=i,i=n),i!==n?(e.length>it?(c=e.charAt(it),it++):(c=n,0===lt&>(Ye)),c!==n?s=c:(it=s,s=n)):(it=s,s=n);s!==n;)o.push(s),s=it,i=it,lt++,e.substr(it,2)===m?(c=m,it+=2):(c=n,0===lt&>(Qe)),lt--,c===n?i=void 0:(it=i,i=n),i!==n?(e.length>it?(c=e.charAt(it),it++):(c=n,0===lt&>(Ye)),c!==n?s=c:(it=s,s=n)):(it=s,s=n);e.substr(it,2)===m?(s=m,it+=2):(s=n,0===lt&>(Qe)),s!==n?r=u=[u,o,s]:(it=r,r=n)}else it=r,r=n;return t=r!==n?e.substring(t,it):r,dt[a]={nextPos:it,result:t},t}())!==n){for(u=[],o=it,(s=dr())!==n&&(i=lr())!==n?o=st(0,s,i):(it=o,o=n);o!==n;)u.push(o),o=it,(s=dr())!==n&&(i=lr())!==n?o=st(0,s,i):(it=o,o=n);t=function(e,t){return hr(e,t.flat())}(r,u)}else it=t,t=n;return dt[c]={nextPos:it,result:t},t}function dr(){var t,r,u,o=75*it+73,s=dt[o];if(s)return it=s.nextPos,s.result;if(lt++,t=it,r=[],M.test(e.charAt(it))?(u=e.charAt(it),it++):(u=n,0===lt&>(et)),u!==n)for(;u!==n;)r.push(u),M.test(e.charAt(it))?(u=e.charAt(it),it++):(u=n,0===lt&>(et));else r=n;return t=r!==n?e.substring(t,it):r,lt--,t===n&&(r=n,0===lt&>($e)),dt[o]={nextPos:it,result:t},t}function pr(){var t,r,u,o=75*it+74,s=dt[o];return s?(it=s.nextPos,s.result):(t=it,r=it,lt++,E.test(e.charAt(it))?(u=e.charAt(it),it++):(u=n,0===lt&>(ye)),lt--,u===n?r=void 0:(it=r,r=n),r!==n?t=u=fr():(it=t,t=n),dt[o]={nextPos:it,result:t},t)}e=A(e);const xr=(e,t)=>({type:e,...t}),hr=(...e)=>e.flat().filter(e=>null!=e&&""!==e&&0!==e.length),vr=(...e)=>(e=>e.length>1?e:e[0])(hr(e.flat())),Pr=(...e)=>e.flat().reduce((e,[t,r])=>({type:"binary",operator:t,left:e,right:r}));if((r=i())!==n&&it===e.length)return r;throw r!==n&&it0){for(t=1,r=1;to.length)throw new Error("'".concat(t,"': Too many arguments for macro"));if(a.length>":return t(r)>>t(n);case"<":return t(r)":return t(r)>t(n);case"<=":return t(r)<=t(n);case">=":return t(r)>=t(n);case"==":return t(r)==t(n);case"!=":return t(r)!=t(n);case"&":return t(r)&t(n);case"^":return t(r)^t(n);case"|":return t(r)|t(n);case"&&":return t(r)&&t(n);case"||":return t(r)||t(n);default:throw new Error("Preprocessing error: Unknown binary operator ".concat(u))}},unary:function(e,t){switch(e.operator.literal){case"+":return t(e.expression);case"-":return-1*t(e.expression);case"!":return!t(e.expression);case"~":return~t(e.expression);default:throw new Error("Preprocessing error: Unknown unary operator ".concat(e.operator.literal))}}},(n=function(e){var t=r[e.type];if(!t)throw new Error("No evaluate() evaluator for ".concat(e.type));return t(e,n)})(e);var r,n}((r=g(u,t).trim(),p(n)(r,{grammarSource:"expression",startRule:"constant_expression"})),t)},A=function(e,t){return void 0===t&&(t={}),e.replace(/\\[\n\r]/g,"")},w=function(e,t){void 0===t&&(t={});var r=Object.entries(t.defines||{}).reduce((function(e,t){var r,n=t[0],u=t[1];return x(x({},e),((r={})[n]={body:u},r))}),{}),n=function(e){return void 0===e&&(e={}),function(t){var r=null==e?void 0:e[t.node.type];return"function"==typeof r?r(t):r}}(t.preserve);return y(e,{conditional:{enter:function(e){var t=e,u=t.node;n(t)||(function(e,t){return"if"===t.type?!!t.expression&&b(m(t.expression,e)):"ifdef"===t.type?t.identifier.identifier in e:"ifndef"===t.type?!(t.identifier.identifier in e):void 0}(r,u.ifPart)?t.replaceWith(u.ifPart.body):u.elseIfParts.reduce((function(e,n){return e||b(m(n.expression,r))&&(t.replaceWith(n.body),!0)}),!1)||(u.elsePart?t.replaceWith(u.elsePart.body):t.remove()))}},text:{enter:function(e){var t=e;t.node.text=g(t.node.text,r)}},define_arguments:{enter:function(e){var t=e,u=t.node,o=u.identifier.identifier,s=u.body,i=u.args;r[o]={args:i,body:s},!n(t)&&t.remove()}},define:{enter:function(e){var t=e,u=t.node,o=u.identifier.identifier,s=u.body;r[o]={body:s},!n(t)&&t.remove()}},undef:{enter:function(e){var t=e;delete r[t.node.identifier.identifier],!n(t)&&t.remove()}},error:{enter:function(e){var r=e;if(t.stopOnError)throw new Error(r.node.message);!n(r)&&r.remove()}},pragma:{enter:function(e){var t=e;!n(t)&&t.remove()}},version:{enter:function(e){var t=e;!n(t)&&t.remove()}},extension:{enter:function(e){var t=e;!n(t)&&t.remove()}},line:{enter:function(e){var t=e;!n(t)&&t.remove()}}}),e},E=function(e,t){return p(n)((null==t?void 0:t.preserveComments)?e:v(e),t)},_=function(e,t){return o(w(E(e,t),t))};t.default=_},,function(e,t,r){"use strict";var n=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});var u=n(r(0));({codeElem:null,viewElem:null,show:function(){var e=this,t=this.codeElem.value;u.default.preprocess(t,(function(t,r){e.viewElem.textContent=t?"Error: ".concat(t):formatGLSL(r||""),Prism.highlightElement(e.viewElem)}),{constants:{}})},init:function(){this.codeElem=document.getElementById("code"),this.viewElem=document.getElementById("codeView"),this.bindEvent(),this.show()},bindEvent:function(){var e=this;this.codeElem.oninput=function(){e.show()}}}).init()}])})); \ No newline at end of file diff --git a/demo/app.ts b/demo/app.ts index d9524e5..f138e3c 100644 --- a/demo/app.ts +++ b/demo/app.ts @@ -1,6 +1,7 @@ import compiler from '../src/compiler'; declare const Prism: any; +declare const formatGLSL: (code: string) => string; interface App { codeElem: HTMLTextAreaElement; @@ -24,7 +25,7 @@ const app: App = { if (error) { this.viewElem.textContent = `Error: ${error}`; } else { - this.viewElem.textContent = code || ''; + this.viewElem.textContent = formatGLSL(code || ''); } Prism.highlightElement(this.viewElem); }, options); diff --git a/demo/index.html b/demo/index.html index b54b734..f48fbde 100644 --- a/demo/index.html +++ b/demo/index.html @@ -503,6 +503,7 @@ + \ No newline at end of file diff --git a/lib/glslFormatter.js b/lib/glslFormatter.js new file mode 100644 index 0000000..bf4a116 --- /dev/null +++ b/lib/glslFormatter.js @@ -0,0 +1,197 @@ +/** + * Simple GLSL code formatter / beautifier. + * Formats preprocessed GLSL shader code with consistent indentation. + */ +(function (root, factory) { + if (typeof module === 'object' && module.exports) { + module.exports = factory(); + } else { + root.formatGLSL = factory(); + } +}(typeof self !== 'undefined' ? self : this, function () { + + /** + * Format GLSL source code with proper indentation and line breaks. + * @param {string} code - The GLSL source code to format. + * @returns {string} The formatted GLSL source code. + */ + function formatGLSL(code) { + if (!code) return code; + + var INDENT = ' '; + + var tokens = tokenize(code); + var lines = []; + var indentLevel = 0; + var currentLine = ''; + + function getIndent() { + return INDENT.repeat(indentLevel); + } + + function flushLine() { + var trimmed = currentLine.trim(); + if (trimmed) { + lines.push(getIndent() + trimmed); + } + currentLine = ''; + } + + for (var i = 0; i < tokens.length; i++) { + var tok = tokens[i]; + + if (tok.type === 'directive') { + flushLine(); + lines.push(tok.value); + + } else if (tok.type === 'line_comment') { + flushLine(); + lines.push(getIndent() + tok.value); + + } else if (tok.type === 'block_comment') { + flushLine(); + // Preserve block comment lines, re-indenting each line + var commentLines = tok.value.split('\n'); + var baseIndent = getIndent(); + for (var c = 0; c < commentLines.length; c++) { + lines.push(baseIndent + commentLines[c].trim()); + } + + } else if (tok.type === 'open_brace') { + if (currentLine.trim()) { + lines.push(getIndent() + currentLine.trim() + ' {'); + } else { + lines.push(getIndent() + '{'); + } + currentLine = ''; + indentLevel++; + + } else if (tok.type === 'close_brace') { + flushLine(); + indentLevel = Math.max(0, indentLevel - 1); + lines.push(getIndent() + '}'); + + } else if (tok.type === 'semicolon') { + lines.push(getIndent() + currentLine.trim() + ';'); + currentLine = ''; + + } else { + // Regular code token + if (currentLine) { + currentLine += ' ' + tok.value; + } else { + currentLine = tok.value; + } + } + } + + flushLine(); + + // Remove leading/trailing blank lines, then collapse multiple blank lines + var result = lines.join('\n') + .replace(/\n{3,}/g, '\n\n') + .trim(); + + return result; + } + + /** + * Tokenize GLSL source code into a sequence of typed tokens. + * @param {string} code + * @returns {Array<{type: string, value: string}>} + */ + function tokenize(code) { + var tokens = []; + var pos = 0; + var len = code.length; + + while (pos < len) { + var ch = code[pos]; + var next = pos + 1 < len ? code[pos + 1] : ''; + + // Whitespace (skip, but preserve as separator) + if (ch === ' ' || ch === '\t' || ch === '\r') { + pos++; + continue; + } + + if (ch === '\n') { + pos++; + continue; + } + + // Line comment + if (ch === '/' && next === '/') { + var end = code.indexOf('\n', pos); + if (end === -1) end = len; + tokens.push({ type: 'line_comment', value: code.slice(pos, end) }); + pos = end; + continue; + } + + // Block comment + if (ch === '/' && next === '*') { + var end2 = code.indexOf('*/', pos + 2); + if (end2 === -1) end2 = len - 2; + tokens.push({ type: 'block_comment', value: code.slice(pos, end2 + 2) }); + pos = end2 + 2; + continue; + } + + // Preprocessor directive + if (ch === '#') { + var end3 = pos; + while (end3 < len) { + if (code[end3] === '\\' && end3 + 1 < len && code[end3 + 1] === '\n') { + end3 += 2; // line continuation + } else if (code[end3] === '\n') { + break; + } else { + end3++; + } + } + tokens.push({ type: 'directive', value: code.slice(pos, end3).trim() }); + pos = end3; + continue; + } + + if (ch === '{') { + tokens.push({ type: 'open_brace', value: '{' }); + pos++; + continue; + } + + if (ch === '}') { + tokens.push({ type: 'close_brace', value: '}' }); + pos++; + continue; + } + + if (ch === ';') { + tokens.push({ type: 'semicolon', value: ';' }); + pos++; + continue; + } + + // Gather remaining characters until a delimiter + var t = ''; + while (pos < len) { + var c = code[pos]; + if (c === '{' || c === '}' || c === ';' || c === '\n' || c === '\r' || + (c === '/' && pos + 1 < len && (code[pos + 1] === '/' || code[pos + 1] === '*')) || + c === '#') { + break; + } + t += c; + pos++; + } + if (t.trim()) { + tokens.push({ type: 'token', value: t.trim() }); + } + } + + return tokens; + } + + return formatGLSL; +}));