MCPcopy Create free account
hub / github.com/bigskysoftware/_hyperscript / tokenize

Method tokenize

www/js/_hyperscript-max.min.js:6–6  ·  view source on GitHub ↗
(e,t)

Source from the content-addressed store, hash-verified

4`,l+=" ".repeat(a+5)+" ".repeat(i)+"^".repeat(o),e&&(l+=" "+e.type+" '"+e.value+"'"),l}currentToken(){return this.token(0)}token(e,t){var r,i=0;do{if(!t)for(;this.#t[i]&&this.#t[i].type==="WHITESPACE";)i++;r=this.#t[i],e--,i++}while(e>-1);return r||{type:"EOF",value:"<<<EOF>>>"}}hasMore(){return this.#t.length>0}lastMatch(){return this.#s}matchToken(e,t){if(!this.#o.includes(e)&&(t=t||"IDENTIFIER",this.currentToken()&&this.currentToken().value===e&&this.currentToken().type===t))return this.consumeToken()}matchOpToken(e){if(this.currentToken()&&this.currentToken().op&&this.currentToken().value===e)return this.consumeToken()}matchTokenType(...e){if(this.currentToken()&&this.currentToken().type&&e.includes(this.currentToken().type))return this.consumeToken()}matchAnyToken(...e){for(var t=0;t<e.length;t++){var r=this.matchToken(e[t]);if(r)return r}}matchAnyOpToken(...e){for(var t=0;t<e.length;t++){var r=this.matchOpToken(e[t]);if(r)return r}}consumeToken(){var e=this.#t.shift();return this.#i.push(e),this.#s=e,this.consumeWhitespace(),e}consumeWhitespace(){for(;this.token(0,!0).type==="WHITESPACE";)this.#i.push(this.#t.shift())}consumeUntil(e,t){for(var r=[],i=this.token(0,!0);(t==null||i.type!==t)&&(e==null||i.value!==e)&&i.type!=="EOF";){var n=this.#t.shift();this.#i.push(n),r.push(i),i=this.token(0,!0)}return this.consumeWhitespace(),r}consumeUntilWhitespace(){return this.consumeUntil(null,"WHITESPACE")}peekToken(e,t,r){t=t||0,r=r||"IDENTIFIER";let i=0;for(;t>0;)i++,this.#t[i]?.type!=="WHITESPACE"&&t--;if(this.#t[i]&&this.#t[i].value===e&&this.#t[i].type===r)return this.#t[i]}lastWhitespace(){var e=this.#i.at(-1);return e&&e.type==="WHITESPACE"?e.value:""}pushFollow(e){this.#o.push(e)}popFollow(){this.#o.pop()}pushFollows(...e){for(var t=0;t<e.length;t++)this.#o.push(e[t]);return e.length}popFollows(e){for(var t=0;t<e;t++)this.#o.pop()}clearFollows(){var e=this.#o;return this.#o=[],e}restoreFollows(e){this.#o=e}},Ae={"+":"PLUS","-":"MINUS","*":"MULTIPLY","/":"DIVIDE",".":"PERIOD","..":"ELLIPSIS","\\":"BACKSLASH",":":"COLON","%":"PERCENT","|":"PIPE","!":"EXCLAMATION","?":"QUESTION","#":"POUND","&":"AMPERSAND",$:"DOLLAR",";":"SEMI",",":"COMMA","(":"L_PAREN",")":"R_PAREN","<":"L_ANG",">":"R_ANG","<=":"LTE_ANG",">=":"GTE_ANG","==":"EQ","===":"EQQ","!=":"NEQ","!==":"NEQQ","{":"L_BRACE","}":"R_BRACE","[":"L_BRACKET","]":"R_BRACKET","=":"EQUALS","~":"TILDE","^":"CARET"},M=class s{#t="";#i=0;#s=0;#o=1;#a="<START>";#c=0;#n=[];#d=!1;#h;#l(e){return e>="a"&&e<="z"||e>="A"&&e<="Z"}#u(e){return e>="0"&&e<="9"}#p(e){return e===" "||e===" "||e==="\r"||e===`
5`}#v(e){return e==="\r"||e===`
6`}#g(e){return this.#l(e)||this.#u(e)||e==="-"||e==="_"||e===":"}#y(e){return e==="_"||e==="$"}#b(e){return e==="`"}static tokenize(e,t){return new s().tokenize(e,t)}tokenize(e,t){return this.#t=e,this.#i=0,this.#s=0,this.#o=1,this.#a="<START>",this.#c=0,this.#n=[],this.#d=t||!1,this.#h="indeterminant",this.#U()}#e(){return this.#t.charAt(this.#i)}#f(){return this.#t.charAt(this.#i+1)}#x(e=1){return this.#t.charAt(this.#i+e)}#r(){return this.#a=this.#e(),this.#i++,this.#a===`
7`?(this.#o++,this.#s=0):this.#s++,this.#a}#T(){return this.#d&&this.#c===0}#k(){return!this.#T()||this.#h==="command"}#E(){return this.#l(this.#a)||this.#u(this.#a)||this.#a===")"||this.#a==='"'||this.#a==="'"||this.#a==="`"||this.#a==="}"||this.#a==="]"}#w(){if(this.#n.length>0){var e=this.#n.at(-1);if(e.type==="IDENTIFIER"||e.type==="CLASS_REF"||e.type==="ID_REF"||e.op&&(e.value===">"||e.value===")"))return!1}return!0}#m(e,t){return{type:e,value:t||"",start:this.#i,end:this.#i+1,column:this.#s,line:this.#o}}#A(e,t){var r=this.#m(e,t);return r.op=!0,r}#L(){for(;this.#e()&&!this.#v(this.#e());)this.#r();this.#r()}#_(){for(var e=this.#m("WHITESPACE"),t="";this.#e()&&this.#p(this.#e());)this.#v(this.#e())&&(this.#h="indeterminant"),t+=this.#r();return e.value=t,e.end=this.#i,e}#I(){var e=this.#m("CLASS_REF"),t=this.#r();if(this.#e()==="{"){for(e.template=!0,t+=this.#r();this.#e()&&this.#e()!=="}";)t+=this.#r();if(this.#e()!=="}")throw new Error("Unterminated class reference");t+=this.#r()}else for(;this.#g(this.#e())||this.#e()==="\\";)this.#e()==="\\"&&this.#r(),t+=this.#r();return e.value=t,e.end=this.#i,e}#O(){var e=this.#m("ID_REF"),t=this.#r();if(this.#e()==="{"){for(e.template=!0,t+=this.#r();this.#e()&&this.#e()!=="}";)t+=this.#r();if(this.#e()!=="}")throw new Error("Unterminated id reference");this.#r()}else for(;this.#g(this.#e());)t+=this.#r();return e.value=t,e.end=this.#i,e}#M(){for(var e=this.#m("ATTRIBUTE_REF"),t=this.#r();this.#i<this.#t.length&&this.#e()!=="]";)t+=this.#r();return this.#e()==="]"&&(t+=this.#r()),e.value=t,e.end=this.#i,e}#C(){for(var e=this.#m("ATTRIBUTE_REF"),t=this.#r();this.#g(this.#e());)t+=this.#r();return this.#e()==="="&&(t+=this.#r(),this.#e()==='"'||this.#e()==="'"?t+=this.#S().value:(this.#l(this.#e())||this.#u(this.#e())||this.#y(this.#e()))&&(t+=this.#q().value)),e.value=t,e.end=this.#i,e}#F(){for(var e=this.#m("STYLE_REF"),t=this.#r();this.#l(this.#e())||this.#e()==="-";)t+=this.#r();return e.value=t,e.end=this.#i,e}#R(){var e=this.#m("IDENTIFIER");this.#r();for(var t="";this.#l(this.#e());)t+=this.#r();return e.value=t,e.end=this.#i,e}#P(){var e=this.#m("TEMPLATE_LINE");e.value="TEMPLATE_LINE";for(var t="";this.#e()&&!this.#v(this.#e());)t+=this.#r();return this.#e()&&this.#v(this.#e())&&(this.#r(),t+=`
8`,this.#h="indeterminant"),e.content=t,e.end=this.#i,e}#H(){var e=this.#m("IDENTIFIER"),t=this.#r(),r=t==="\\";for(r&&(t="");(this.#l(this.#e())||this.#u(this.#e())||this.#y(this.#e())||this.#e()==="\\"||this.#e()==="{"||this.#e()==="}")&&!(this.#e()==="$"&&!r);)this.#e()==="\\"?(r=!0,this.#r()):(r=!1,t+=this.#r());return this.#e()==="!"&&t==="beep"&&(t+=this.#r()),e.value=t,e.end=this.#i,e}#q(){for(var e=this.#m("IDENTIFIER"),t=this.#r();this.#l(this.#e())||this.#u(this.#e())||this.#y(this.#e());)t+=this.#r();return this.#e()==="!"&&t==="beep"&&(t+=this.#r()),e.value=t,e.end=this.#i,e}#D(){for(var e=this.#m("NUMBER"),t=this.#r();this.#u(this.#e());)t+=this.#r();for(this.#e()==="."&&this.#u(this.#f())&&(t+=this.#r());this.#u(this.#e());)t+=this.#r();for((this.#e()==="e"||this.#e()==="E")&&(this.#u(this.#f())?t+=this.#r():this.#f()==="-"&&(t+=this.#r(),t+=this.#r()));this.#u(this.#e());)t+=this.#r();return e.value=t,e.end=this.#i,e}#N(){for(var e=this.#A(),t=this.#r();this.#e()&&Ae[t+this.#e()];)t+=this.#r();return e.type=Ae[t],e.value=t,e.end=this.#i,e}#S(){var e=this.#m("STRING"),t=this.#r();e.template=t==="`";for(var r="";this.#e()&&this.#e()!==t;)if(this.#e()==="\\"){this.#r();let i=this.#r();if(i==="b")r+="\b";else if(i==="f")r+="\f";else if(i==="n")r+=`
9`;else if(i==="r")r+="\r";else if(i==="t")r+=" ";else if(i==="v")r+="\v";else if(e.template&&i==="$")r+="\\$";else if(i==="x"){let n=this.#j();if(Number.isNaN(n))throw new Error("Invalid hexadecimal escape at [Line: "+e.line+", Column: "+e.column+"]");r+=String.fromCharCode(n)}else r+=i}else r+=this.#r();if(this.#e()!==t)throw new Error("Unterminated string at [Line: "+e.line+", Column: "+e.column+"]");return this.#r(),e.value=r,e.end=this.#i,e}#j(){if(!this.#e())return NaN;let e=16*Number.parseInt(this.#r(),16);return this.#e()?(e+=Number.parseInt(this.#r(),16),e):NaN}#W(){var e=this.#e(),t=this.#f(),r=this.#x(2);return e==="-"&&t==="-"&&(this.#p(r)||r===""||r==="-")||e==="/"&&t==="/"&&(this.#p(r)||r===""||r==="/")}#U(){for(;this.#i<this.#t.length;)if(this.#W())this.#L();else if(this.#p(this.#e()))this.#n.push(this.#_());else if(!this.#E()&&this.#e()==="."&&(this.#l(this.#f())||this.#f()==="{"||this.#f()==="-"))this.#n.push(this.#I());else if(!this.#E()&&this.#e()==="#"&&(this.#l(this.#f())||this.#f()==="{"))this.#d==="lines"&&this.#h==="indeterminant"?(this.#h="command",this.#n.push(this.#R())):this.#n.push(this.#O());else if(this.#d==="lines"&&this.#h==="indeterminant"&&this.#c===0)this.#h="template",this.#n.push(this.#P());else if(this.#e()==="["&&this.#f()==="@")this.#n.push(this.#M());else if(this.#e()==="@")this.#n.push(this.#C());else if(this.#e()==="*"&&this.#l(this.#f()))this.#n.push(this.#F());else if(this.#T()&&(this.#l(this.#e())||this.#e()==="\\")&&this.#h!=="command")this.#n.push(this.#H());else if(this.#k()&&(this.#l(this.#e())||this.#y(this.#e())))this.#n.push(this.#q());else if(this.#u(this.#e()))this.#n.push(this.#D());else if(this.#k()&&(this.#e()==='"'||this.#e()==="`"))this.#n.push(this.#S());else if(this.#k()&&this.#e()==="'")this.#w()?this.#n.push(this.#S()):this.#n.push(this.#N());else if(Ae[this.#e()])this.#a==="$"&&this.#e()==="{"&&this.#c++,this.#e()==="}"&&this.#c--,this.#n.push(this.#N());else if(this.#T()||this.#b(this.#e()))this.#n.push(this.#m("RESERVED",this.#r()));else if(this.#i<this.#t.length)throw new Error("Unknown token: "+this.#e()+" ");return new Le(this.#n,this.#t)}};var C=class s{errors=[];collectErrors(e){if(e||(e=new Set),e.has(this))return[];e.add(this);var t=[...this.errors];for(var r of Object.keys(this))for(var i of[this[r]].flat())i instanceof s&&t.push(...i.collectErrors(e));return t}sourceFor(){return this.programSource.substring(this.startToken.start,this.endToken.end)}lineFor(){return this.programSource.split(`

Callers 8

parseMethod · 0.45
parseMethod · 0.45
#TMethod · 0.45
mFunction · 0.45
resolveMethod · 0.45
aFunction · 0.45
_renderTemplateMethod · 0.45

Calls 1

#UMethod · 0.95

Tested by

no test coverage detected