UNPKG

lakutata

Version:

An IoC-based universal application framework.

214 lines (198 loc) 4.51 kB
/* Build Date: Mon Jan 05 2026 23:52:23 GMT+0800 (China Standard Time) */ var t; (function(t) { t[t["None"] = 0] = "None"; t[t["Dumb"] = 1] = "Dumb"; })(t || (t = {})); function n(n) { const c = n.length; let u = 0; let s = "EOF"; let o = ""; let a = t.None; let h = 0; let l = 0; return { next: A, done: x }; function A(n = t.None) { a = n; F(); return g(); } function F() { o = ""; s = "EOF"; while (true) { if (u >= c) { return s = "EOF"; } const r = n.charAt(u); if (e(r)) { u++; continue; } switch (r) { case "(": u++; h++; return s = r; case ")": u++; l++; return s = r; case "*": u++; return s = r; case ",": u++; return s = r; case "=": u++; if ((a & t.Dumb) === 0) { $(); } return s = r; case "/": { u++; const t = n.charAt(u); if (t === "/") { b(t => t === "\n", true); u++; } if (t === "*") { b(t => { const e = n.charAt(u + 1); return t === "*" && e === "/"; }, true); u++; } continue; } default: if (i(r)) { w(); return s; } u++; } } } function w() { const t = n.charAt(u); const e = ++u; while (f(n.charAt(u))) { u++; } o = "" + t + n.substring(e, u); s = o === "function" || o === "class" ? o : "ident"; if (s !== "ident") { o = ""; } return o; } function $() { b(t => { const n = h === l + 1; if (t === "," && n) { return true; } if (t === "(") { h++; return false; } if (t === ")") { l++; if (n) { return true; } } return false; }); } function b(t, c = false) { while (u < n.length) { const i = n.charAt(u); if (t(i)) { return; } if (!c) { if (e(i)) { u++; continue; } if (r(i)) { d(); continue; } } u++; } } function d() { const t = n.charAt(u); u++; while (u < n.length) { const e = n.charAt(u); const r = n.charAt(u - 1); if (e === t && r !== "\\") { u++; return; } if (t === "`") { const t = n.charAt(u + 1); if (t === "$") { const t = n.charAt(u + 2); if (t === "{") { u = u + 2; b(t => t === "}"); } } } u++; } } function g() { if (o) { return { value: o, type: s }; } return { type: s }; } function x() { return s === "EOF"; } } function e(t) { switch (t) { case "\r": case "\n": case " ": return true; } return false; } function r(t) { switch (t) { case "'": case '"': case "`": return true; } return false; } const c = /^[_$a-zA-Z\xA0-\uFFFF]$/; const u = /^[._$a-zA-Z0-9\xA0-\uFFFF]$/; function i(t) { return c.test(t); } function f(t) { return u.test(t); } export { t as TokenizerFlags, n as createTokenizer };