@galacean/engine-shader-compiler 2.0.0-alpha.32 → 2.0.0-alpha.33

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.
@@ -1 +1 @@
1
- {"version":3,"file":"module.js","sources":["../../../node_modules/.pnpm/@swc+helpers@0.5.15/node_modules/@swc/helpers/esm/_instanceof.js","../../../node_modules/.pnpm/@swc+helpers@0.5.15/node_modules/@swc/helpers/esm/_set_prototype_of.js","../../../node_modules/.pnpm/@swc+helpers@0.5.15/node_modules/@swc/helpers/esm/_inherits.js","../../../node_modules/.pnpm/@swc+helpers@0.5.15/node_modules/@swc/helpers/esm/_create_class.js","../../../node_modules/.pnpm/@swc+helpers@0.5.15/node_modules/@swc/helpers/esm/_array_like_to_array.js","../../../node_modules/.pnpm/@swc+helpers@0.5.15/node_modules/@swc/helpers/esm/_unsupported_iterable_to_array.js","../../../node_modules/.pnpm/@swc+helpers@0.5.15/node_modules/@swc/helpers/esm/_create_for_of_iterator_helper_loose.js","../../../node_modules/.pnpm/tslib@2.8.1/node_modules/tslib/tslib.es6.mjs","../src/common/ShaderRange.ts","../src/common/ShaderPosition.ts","../src/common/types.ts","../src/common/enums/Keyword.ts","../src/ShaderCompilerUtils.ts","../src/common/BaseToken.ts","../src/parser/GrammarSymbol.ts","../src/ParserUtils.ts","../../../node_modules/.pnpm/@swc+helpers@0.5.15/node_modules/@swc/helpers/esm/_is_native_reflect_construct.js","../../../node_modules/.pnpm/@swc+helpers@0.5.15/node_modules/@swc/helpers/esm/_construct.js","../../../node_modules/.pnpm/@swc+helpers@0.5.15/node_modules/@swc/helpers/esm/_get_prototype_of.js","../../../node_modules/.pnpm/@swc+helpers@0.5.15/node_modules/@swc/helpers/esm/_is_native_function.js","../../../node_modules/.pnpm/@swc+helpers@0.5.15/node_modules/@swc/helpers/esm/_wrap_native_super.js","../src/GSError.ts","../src/common/BaseLexer.ts","../src/lexer/Lexer.ts","../src/common/enums/ShaderStage.ts","../src/parser/builtin/functions.ts","../src/parser/builtin/variables.ts","../src/common/SymbolTable.ts","../src/common/SymbolTableStack.ts","../src/parser/symbolTable/SymbolDataType.ts","../src/parser/symbolTable/SymbolInfo.ts","../src/parser/symbolTable/FnSymbol.ts","../src/parser/symbolTable/StructSymbol.ts","../src/parser/symbolTable/VarSymbol.ts","../src/parser/ShaderInfo.ts","../src/parser/SemanticAnalyzer.ts","../src/parser/types.ts","../src/parser/AST.ts","../src/codeGen/VisitorContext.ts","../src/TempArray.ts","../src/codeGen/CodeGenVisitor.ts","../src/codeGen/GLESVisitor.ts","../src/codeGen/GLES100.ts","../src/codeGen/GLES300.ts","../src/ShaderInstructionEncoder.ts","../src/lalr/StateItem.ts","../src/lalr/State.ts","../src/lalr/Utils.ts","../src/lalr/types.ts","../src/lalr/LALR1.ts","../src/lalr/Production.ts","../src/parser/Grammar.ts","../src/lalr/CFG.ts","../src/parser/ShaderTargetParser.ts","../src/Preprocessor.ts","../../../node_modules/.pnpm/@swc+helpers@0.5.15/node_modules/@swc/helpers/esm/_extends.js","../src/sourceParser/ShaderSourceFactory.ts","../src/sourceParser/ShaderSourceSymbol.ts","../src/sourceParser/SourceLexer.ts","../src/sourceParser/ShaderSourceParser.ts","../src/ShaderCompiler.ts","../src/index.ts"],"sourcesContent":["function _instanceof(left, right) {\n if (right != null && typeof Symbol !== \"undefined\" && right[Symbol.hasInstance]) {\n return !!right[Symbol.hasInstance](left);\n } else return left instanceof right;\n}\nexport { _instanceof as _ };\n","function _set_prototype_of(o, p) {\n _set_prototype_of = Object.setPrototypeOf || function setPrototypeOf(o, p) {\n o.__proto__ = p;\n\n return o;\n };\n\n return _set_prototype_of(o, p);\n}\nexport { _set_prototype_of as _ };\n","import { _ as _set_prototype_of } from \"./_set_prototype_of.js\";\n\nfunction _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function\");\n }\n\n subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } });\n\n if (superClass) _set_prototype_of(subClass, superClass);\n}\nexport { _inherits as _ };\n","function _defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n\n if (\"value\" in descriptor) descriptor.writable = true;\n\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n}\nfunction _create_class(Constructor, protoProps, staticProps) {\n if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n if (staticProps) _defineProperties(Constructor, staticProps);\n\n return Constructor;\n}\nexport { _create_class as _ };\n","function _array_like_to_array(arr, len) {\n if (len == null || len > arr.length) len = arr.length;\n\n for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i];\n\n return arr2;\n}\nexport { _array_like_to_array as _ };\n","import { _ as _array_like_to_array } from \"./_array_like_to_array.js\";\n\nfunction _unsupported_iterable_to_array(o, minLen) {\n if (!o) return;\n if (typeof o === \"string\") return _array_like_to_array(o, minLen);\n\n var n = Object.prototype.toString.call(o).slice(8, -1);\n\n if (n === \"Object\" && o.constructor) n = o.constructor.name;\n if (n === \"Map\" || n === \"Set\") return Array.from(n);\n if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _array_like_to_array(o, minLen);\n}\nexport { _unsupported_iterable_to_array as _ };\n","import { _ as _unsupported_iterable_to_array } from \"./_unsupported_iterable_to_array.js\";\n\nfunction _create_for_of_iterator_helper_loose(o, allowArrayLike) {\n var it = typeof Symbol !== \"undefined\" && o[Symbol.iterator] || o[\"@@iterator\"];\n\n if (it) return (it = it.call(o)).next.bind(it);\n // Fallback for engines without symbol support\n if (Array.isArray(o) || (it = _unsupported_iterable_to_array(o)) || allowArrayLike && o && typeof o.length === \"number\") {\n if (it) o = it;\n\n var i = 0;\n\n return function() {\n if (i >= o.length) return { done: true };\n\n return { done: false, value: o[i++] };\n };\n }\n\n throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}\nexport { _create_for_of_iterator_helper_loose as _ };\n","/******************************************************************************\nCopyright (c) Microsoft Corporation.\n\nPermission to use, copy, modify, and/or distribute this software for any\npurpose with or without fee is hereby granted.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\nPERFORMANCE OF THIS SOFTWARE.\n***************************************************************************** */\n/* global Reflect, Promise, SuppressedError, Symbol, Iterator */\n\nvar extendStatics = function(d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n};\n\nexport function __extends(d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n}\n\nexport var __assign = function() {\n __assign = Object.assign || function __assign(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n }\n return t;\n }\n return __assign.apply(this, arguments);\n}\n\nexport function __rest(s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\n t[p[i]] = s[p[i]];\n }\n return t;\n}\n\nexport function __decorate(decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n}\n\nexport function __param(paramIndex, decorator) {\n return function (target, key) { decorator(target, key, paramIndex); }\n}\n\nexport function __esDecorate(ctor, descriptorIn, decorators, contextIn, initializers, extraInitializers) {\n function accept(f) { if (f !== void 0 && typeof f !== \"function\") throw new TypeError(\"Function expected\"); return f; }\n var kind = contextIn.kind, key = kind === \"getter\" ? \"get\" : kind === \"setter\" ? \"set\" : \"value\";\n var target = !descriptorIn && ctor ? contextIn[\"static\"] ? ctor : ctor.prototype : null;\n var descriptor = descriptorIn || (target ? Object.getOwnPropertyDescriptor(target, contextIn.name) : {});\n var _, done = false;\n for (var i = decorators.length - 1; i >= 0; i--) {\n var context = {};\n for (var p in contextIn) context[p] = p === \"access\" ? {} : contextIn[p];\n for (var p in contextIn.access) context.access[p] = contextIn.access[p];\n context.addInitializer = function (f) { if (done) throw new TypeError(\"Cannot add initializers after decoration has completed\"); extraInitializers.push(accept(f || null)); };\n var result = (0, decorators[i])(kind === \"accessor\" ? { get: descriptor.get, set: descriptor.set } : descriptor[key], context);\n if (kind === \"accessor\") {\n if (result === void 0) continue;\n if (result === null || typeof result !== \"object\") throw new TypeError(\"Object expected\");\n if (_ = accept(result.get)) descriptor.get = _;\n if (_ = accept(result.set)) descriptor.set = _;\n if (_ = accept(result.init)) initializers.unshift(_);\n }\n else if (_ = accept(result)) {\n if (kind === \"field\") initializers.unshift(_);\n else descriptor[key] = _;\n }\n }\n if (target) Object.defineProperty(target, contextIn.name, descriptor);\n done = true;\n};\n\nexport function __runInitializers(thisArg, initializers, value) {\n var useValue = arguments.length > 2;\n for (var i = 0; i < initializers.length; i++) {\n value = useValue ? initializers[i].call(thisArg, value) : initializers[i].call(thisArg);\n }\n return useValue ? value : void 0;\n};\n\nexport function __propKey(x) {\n return typeof x === \"symbol\" ? x : \"\".concat(x);\n};\n\nexport function __setFunctionName(f, name, prefix) {\n if (typeof name === \"symbol\") name = name.description ? \"[\".concat(name.description, \"]\") : \"\";\n return Object.defineProperty(f, \"name\", { configurable: true, value: prefix ? \"\".concat(prefix, \" \", name) : name });\n};\n\nexport function __metadata(metadataKey, metadataValue) {\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\n}\n\nexport function __awaiter(thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n}\n\nexport function __generator(thisArg, body) {\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g = Object.create((typeof Iterator === \"function\" ? Iterator : Object).prototype);\n return g.next = verb(0), g[\"throw\"] = verb(1), g[\"return\"] = verb(2), typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n function verb(n) { return function (v) { return step([n, v]); }; }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (g && (g = 0, op[0] && (_ = 0)), _) try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [op[0] & 2, t.value];\n switch (op[0]) {\n case 0: case 1: t = op; break;\n case 4: _.label++; return { value: op[1], done: false };\n case 5: _.label++; y = op[1]; op = [0]; continue;\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n if (t[2]) _.ops.pop();\n _.trys.pop(); continue;\n }\n op = body.call(thisArg, _);\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n }\n}\n\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n});\n\nexport function __exportStar(m, o) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\n}\n\nexport function __values(o) {\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\n if (m) return m.call(o);\n if (o && typeof o.length === \"number\") return {\n next: function () {\n if (o && i >= o.length) o = void 0;\n return { value: o && o[i++], done: !o };\n }\n };\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\n}\n\nexport function __read(o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o), r, ar = [], e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n }\n catch (error) { e = { error: error }; }\n finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n }\n finally { if (e) throw e.error; }\n }\n return ar;\n}\n\n/** @deprecated */\nexport function __spread() {\n for (var ar = [], i = 0; i < arguments.length; i++)\n ar = ar.concat(__read(arguments[i]));\n return ar;\n}\n\n/** @deprecated */\nexport function __spreadArrays() {\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\n r[k] = a[j];\n return r;\n}\n\nexport function __spreadArray(to, from, pack) {\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\n if (ar || !(i in from)) {\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\n ar[i] = from[i];\n }\n }\n return to.concat(ar || Array.prototype.slice.call(from));\n}\n\nexport function __await(v) {\n return this instanceof __await ? (this.v = v, this) : new __await(v);\n}\n\nexport function __asyncGenerator(thisArg, _arguments, generator) {\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\n return i = Object.create((typeof AsyncIterator === \"function\" ? AsyncIterator : Object).prototype), verb(\"next\"), verb(\"throw\"), verb(\"return\", awaitReturn), i[Symbol.asyncIterator] = function () { return this; }, i;\n function awaitReturn(f) { return function (v) { return Promise.resolve(v).then(f, reject); }; }\n function verb(n, f) { if (g[n]) { i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; if (f) i[n] = f(i[n]); } }\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\n function fulfill(value) { resume(\"next\", value); }\n function reject(value) { resume(\"throw\", value); }\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\n}\n\nexport function __asyncDelegator(o) {\n var i, p;\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: false } : f ? f(v) : v; } : f; }\n}\n\nexport function __asyncValues(o) {\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\n var m = o[Symbol.asyncIterator], i;\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\n}\n\nexport function __makeTemplateObject(cooked, raw) {\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\n return cooked;\n};\n\nvar __setModuleDefault = Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n};\n\nvar ownKeys = function(o) {\n ownKeys = Object.getOwnPropertyNames || function (o) {\n var ar = [];\n for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;\n return ar;\n };\n return ownKeys(o);\n};\n\nexport function __importStar(mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== \"default\") __createBinding(result, mod, k[i]);\n __setModuleDefault(result, mod);\n return result;\n}\n\nexport function __importDefault(mod) {\n return (mod && mod.__esModule) ? mod : { default: mod };\n}\n\nexport function __classPrivateFieldGet(receiver, state, kind, f) {\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\n}\n\nexport function __classPrivateFieldSet(receiver, state, value, kind, f) {\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\n}\n\nexport function __classPrivateFieldIn(state, receiver) {\n if (receiver === null || (typeof receiver !== \"object\" && typeof receiver !== \"function\")) throw new TypeError(\"Cannot use 'in' operator on non-object\");\n return typeof state === \"function\" ? receiver === state : state.has(receiver);\n}\n\nexport function __addDisposableResource(env, value, async) {\n if (value !== null && value !== void 0) {\n if (typeof value !== \"object\" && typeof value !== \"function\") throw new TypeError(\"Object expected.\");\n var dispose, inner;\n if (async) {\n if (!Symbol.asyncDispose) throw new TypeError(\"Symbol.asyncDispose is not defined.\");\n dispose = value[Symbol.asyncDispose];\n }\n if (dispose === void 0) {\n if (!Symbol.dispose) throw new TypeError(\"Symbol.dispose is not defined.\");\n dispose = value[Symbol.dispose];\n if (async) inner = dispose;\n }\n if (typeof dispose !== \"function\") throw new TypeError(\"Object not disposable.\");\n if (inner) dispose = function() { try { inner.call(this); } catch (e) { return Promise.reject(e); } };\n env.stack.push({ value: value, dispose: dispose, async: async });\n }\n else if (async) {\n env.stack.push({ async: true });\n }\n return value;\n}\n\nvar _SuppressedError = typeof SuppressedError === \"function\" ? SuppressedError : function (error, suppressed, message) {\n var e = new Error(message);\n return e.name = \"SuppressedError\", e.error = error, e.suppressed = suppressed, e;\n};\n\nexport function __disposeResources(env) {\n function fail(e) {\n env.error = env.hasError ? new _SuppressedError(e, env.error, \"An error was suppressed during disposal.\") : e;\n env.hasError = true;\n }\n var r, s = 0;\n function next() {\n while (r = env.stack.pop()) {\n try {\n if (!r.async && s === 1) return s = 0, env.stack.push(r), Promise.resolve().then(next);\n if (r.dispose) {\n var result = r.dispose.call(r.value);\n if (r.async) return s |= 2, Promise.resolve(result).then(next, function(e) { fail(e); return next(); });\n }\n else s |= 1;\n }\n catch (e) {\n fail(e);\n }\n }\n if (s === 1) return env.hasError ? Promise.reject(env.error) : Promise.resolve();\n if (env.hasError) throw env.error;\n }\n return next();\n}\n\nexport function __rewriteRelativeImportExtension(path, preserveJsx) {\n if (typeof path === \"string\" && /^\\.\\.?\\//.test(path)) {\n return path.replace(/\\.(tsx)$|((?:\\.d)?)((?:\\.[^./]+?)?)\\.([cm]?)ts$/i, function (m, tsx, d, ext, cm) {\n return tsx ? preserveJsx ? \".jsx\" : \".js\" : d && (!ext || !cm) ? m : (d + ext + \".\" + cm.toLowerCase() + \"js\");\n });\n }\n return path;\n}\n\nexport default {\n __extends,\n __assign,\n __rest,\n __decorate,\n __param,\n __esDecorate,\n __runInitializers,\n __propKey,\n __setFunctionName,\n __metadata,\n __awaiter,\n __generator,\n __createBinding,\n __exportStar,\n __values,\n __read,\n __spread,\n __spreadArrays,\n __spreadArray,\n __await,\n __asyncGenerator,\n __asyncDelegator,\n __asyncValues,\n __makeTemplateObject,\n __importStar,\n __importDefault,\n __classPrivateFieldGet,\n __classPrivateFieldSet,\n __classPrivateFieldIn,\n __addDisposableResource,\n __disposeResources,\n __rewriteRelativeImportExtension,\n};\n","import type { IPoolElement } from \"@galacean/engine-core\";\nimport { ShaderPosition } from \"./ShaderPosition\";\n\nexport class ShaderRange implements IPoolElement {\n public start: ShaderPosition;\n public end: ShaderPosition;\n\n set(start: ShaderPosition, end: ShaderPosition) {\n this.start = start;\n this.end = end;\n }\n\n dispose(): void {\n this.start.dispose();\n this.end.dispose();\n }\n}\n","import type { IPoolElement } from \"@galacean/engine-core\";\n\nexport class ShaderPosition implements IPoolElement {\n index: number;\n // #if _VERBOSE\n line: number;\n column: number;\n // #endif\n\n set(\n index: number,\n // #if _VERBOSE\n line: number,\n column: number\n // #endif\n ) {\n this.index = index;\n // #if _VERBOSE\n this.line = line;\n this.column = column;\n // #endif\n }\n\n dispose(): void {\n this.index = 0;\n // #if _VERBOSE\n this.line = 0;\n this.column = 0;\n // #endif\n }\n}\n","import { Keyword } from \"./enums/Keyword\";\n\nexport enum ETokenType {\n ID = 1000,\n FLOAT_CONSTANT,\n INT_CONSTANT,\n STRING_CONST,\n /** << */\n LEFT_OP,\n /** \\>> */\n RIGHT_OP,\n /** ++ */\n INC_OP,\n /** -- */\n DEC_OP,\n /** <= */\n LE_OP,\n /** \\>= */\n GE_OP,\n /** == */\n EQ_OP,\n /** != */\n NE_OP,\n /** && */\n AND_OP,\n /** || */\n OR_OP,\n /** ^^ */\n XOR_OP,\n /** *= */\n MUL_ASSIGN,\n /** /= */\n DIV_ASSIGN,\n /** += */\n ADD_ASSIGN,\n /** -= */\n SUB_ASSIGN,\n /** %= */\n MOD_ASSIGN,\n /** <<= */\n LEFT_ASSIGN,\n /** >>= */\n RIGHT_ASSIGN,\n /** &= */\n AND_ASSIGN,\n /** ^= */\n XOR_ASSIGN,\n /** |= */\n OR_ASSIGN,\n /** ( */\n LEFT_PAREN,\n /** ) */\n RIGHT_PAREN,\n /** [ */\n LEFT_BRACKET,\n /** ] */\n RIGHT_BRACKET,\n /** { */\n LEFT_BRACE,\n /** } */\n RIGHT_BRACE,\n /** . */\n DOT,\n /** , */\n COMMA,\n COLON,\n /** = */\n EQUAL,\n /** ; */\n SEMICOLON,\n /** ! */\n BANG,\n /** \\- */\n DASH,\n /** ~ */\n TILDE,\n PLUS,\n /** \\* */\n STAR,\n /** / */\n SLASH,\n /** % */\n PERCENT,\n /** < */\n LEFT_ANGLE,\n /** \\> */\n RIGHT_ANGLE,\n VERTICAL_BAR,\n /** ^ */\n CARET,\n /** & */\n AMPERSAND,\n /** ? */\n QUESTION,\n\n NotWord,\n\n /** ε */\n EPSILON = 1998,\n EOF = 1999\n}\n\nexport const TypeAny = 3000;\n\nexport type GalaceanDataType =\n | Keyword.VOID\n | Keyword.FLOAT\n | Keyword.BOOL\n | Keyword.INT\n | Keyword.UINT\n | Keyword.VEC2\n | Keyword.VEC3\n | Keyword.VEC4\n | Keyword.BVEC2\n | Keyword.BVEC3\n | Keyword.BVEC4\n | Keyword.IVEC2\n | Keyword.IVEC3\n | Keyword.IVEC4\n | Keyword.UVEC2\n | Keyword.UVEC3\n | Keyword.UVEC4\n | Keyword.MAT2\n | Keyword.MAT3\n | Keyword.MAT4\n | Keyword.MAT2X3\n | Keyword.MAT2X4\n | Keyword.MAT3X2\n | Keyword.MAT3X4\n | Keyword.MAT4X2\n | Keyword.MAT4X3\n | Keyword.SAMPLER2D\n | Keyword.SAMPLER3D\n | Keyword.SAMPLER_CUBE\n | Keyword.SAMPLER2D_SHADOW\n | Keyword.SAMPLER_CUBE_SHADOW\n | Keyword.SAMPLER2D_ARRAY\n | Keyword.SAMPLER2D_ARRAY_SHADOW\n | Keyword.I_SAMPLER2D\n | Keyword.I_SAMPLER3D\n | Keyword.I_SAMPLER_CUBE\n | Keyword.I_SAMPLER2D_ARRAY\n | Keyword.U_SAMPLER2D\n | Keyword.U_SAMPLER3D\n | Keyword.U_SAMPLER_CUBE\n | Keyword.U_SAMPLER2D_ARRAY\n | Keyword.VEC4_ARRAY\n | typeof TypeAny\n | string;\n\nexport type TokenType = ETokenType | Keyword;\n","export enum Keyword {\n CONST = 0,\n BOOL,\n FLOAT,\n DOUBLE,\n INT,\n UINT,\n BREAK,\n CONTINUE,\n DO,\n ELSE,\n FOR,\n IF,\n WHILE,\n DISCARD,\n RETURN,\n BVEC2,\n BVEC3,\n BVEC4,\n IVEC2,\n IVEC3,\n IVEC4,\n UVEC2,\n UVEC3,\n UVEC4,\n VEC2,\n VEC3,\n VEC4,\n VEC4_ARRAY,\n MAT2,\n MAT3,\n MAT4,\n MAT2X3,\n MAT2X4,\n MAT3X2,\n MAT3X4,\n MAT4X2,\n MAT4X3,\n IN,\n OUT,\n INOUT,\n CENTROID,\n SAMPLER2D,\n SAMPLER3D,\n SAMPLER_CUBE,\n SAMPLER2D_SHADOW,\n SAMPLER_CUBE_SHADOW,\n SAMPLER2D_ARRAY,\n SAMPLER2D_ARRAY_SHADOW,\n I_SAMPLER2D,\n I_SAMPLER3D,\n I_SAMPLER_CUBE,\n I_SAMPLER2D_ARRAY,\n U_SAMPLER2D,\n U_SAMPLER3D,\n U_SAMPLER_CUBE,\n U_SAMPLER2D_ARRAY,\n STRUCT,\n LAYOUT,\n LOCATION,\n VOID,\n\n PRECISION,\n PRECISE,\n HIGHP,\n MEDIUMP,\n LOWP,\n INVARIANT,\n SMOOTH,\n FLAT,\n NOPERSPECTIVE,\n\n // Common Tokens\n True,\n False,\n LeftBrace,\n RightBrace,\n Equal,\n BitwiseOr,\n\n // Source Parser Tokens\n GSRenderQueueType,\n GSBlendState,\n GSDepthState,\n GSStencilState,\n GSRasterState,\n GSEditorProperties,\n GSEditorMacros,\n GSEditor,\n GSTags,\n GSVertexShader,\n GSFragmentShader,\n GSSubShader,\n GSPass,\n GSBlendFactor,\n GSBlendOperation,\n GSBool,\n GSNumber,\n GSColor,\n GSCompareFunction,\n GSStencilOperation,\n GSCullMode,\n GSColorWriteMask,\n GSUsePass,\n\n // Macros\n MACRO_IF,\n MACRO_IFDEF,\n MACRO_IFNDEF,\n MACRO_ELSE,\n MACRO_ELIF,\n MACRO_ENDIF,\n MACRO_UNDEF,\n /** Legacy opaque `#define` token — whole directive packed into one lexeme. Retained\n * for macros whose value can't be parsed as a GLSL expression (type aliases,\n * qualifier aliases, partial-syntax macros). Expression-style macros instead emit\n * `MACRO_DEFINE` + ID + value tokens + `MACRO_DEFINE_END`. */\n MACRO_DEFINE_EXPRESSION,\n MACRO_CONDITIONAL_EXPRESSION,\n MACRO_CALL,\n /** `#define` directive head for expression-style macros. */\n MACRO_DEFINE,\n /** Terminates a `MACRO_DEFINE` directive at end-of-line. */\n MACRO_DEFINE_END,\n /** `(params)` block for a function-like `#define`. The lexer captures the entire\n * parenthesized parameter list as one opaque token so the macro-define CFG rule\n * doesn't need its own parameter-list production (which would conflict with\n * function_call_parameter_list under LALR(1)). The AST consumer parses the\n * lexeme to recover the individual parameter names. */\n MACRO_DEFINE_PARAMS\n}\n","import { ClearableObjectPool, type IPoolElement } from \"@galacean/engine-core\";\nimport { GSErrorName } from \"./GSError\";\nimport { ShaderRange } from \"./common/ShaderRange\";\nimport { ShaderPosition } from \"./common/ShaderPosition\";\n// #if _VERBOSE\nimport { GSError } from \"./GSError\";\n// #endif\n\nexport class ShaderCompilerUtils {\n private static _shaderCompilerObjectPoolSet: ClearableObjectPool<IPoolElement>[] = [];\n\n static createObjectPool<T extends IPoolElement>(type: new () => T) {\n const pool = new ClearableObjectPool<T>(type);\n ShaderCompilerUtils._shaderCompilerObjectPoolSet.push(pool);\n return pool;\n }\n\n static clearAllShaderCompilerObjectPool() {\n for (let i = 0, n = ShaderCompilerUtils._shaderCompilerObjectPoolSet.length; i < n; i++) {\n ShaderCompilerUtils._shaderCompilerObjectPoolSet[i].clear();\n }\n }\n\n static createGSError(\n message: string,\n errorName: GSErrorName,\n source: string,\n location: ShaderRange | ShaderPosition,\n file?: string\n ): Error | undefined {\n // #if _VERBOSE\n return new GSError(errorName, message, location, source, file);\n // #else\n console.error(message);\n // #endif\n }\n}\n","import { ETokenType } from \"./types\";\nimport { ShaderRange, ShaderPosition } from \".\";\nimport { ShaderCompiler } from \"../ShaderCompiler\";\nimport type { IPoolElement } from \"@galacean/engine-core\";\nimport { ShaderCompilerUtils } from \"../ShaderCompilerUtils\";\n\n/**\n * One condition in a branch signature: `defined: true` for `#ifdef X` (the\n * branch is active when `X` is defined), `defined: false` for `#ifndef X` /\n * after `#else` (active when `X` is undefined).\n */\nexport interface BranchConstraint {\n name: string;\n defined: boolean;\n}\n\n/**\n * Snapshot of the `#ifdef`/`#ifndef`/`#else` stack at a source position. An\n * empty signature means unconditional (top-level). Constraints are conjunctive:\n * the position is active iff every constraint holds. Produced by the Lexer\n * (the sole branch-stack maintainer) and stamped onto every emitted token +\n * every registered `MacroDefineInfo`.\n */\nexport type BranchSignature = readonly BranchConstraint[];\n\n// Canonical empty branch signature shared by all default tokens — avoids\n// per-token allocation. The Lexer overwrites `branch` after `scanToken()`\n// for tokens that are inside an `#ifdef`.\nexport const EMPTY_BRANCH: BranchSignature = [];\n\nexport class BaseToken<T extends number = number> implements IPoolElement {\n static pool = ShaderCompilerUtils.createObjectPool(BaseToken);\n\n type: T;\n lexeme: string;\n location: ShaderRange;\n /** Branch signature snapshot at the point this token was emitted. Empty\n * signature (default) means top-level / unconditional. The Lexer tags\n * every token; downstream code (AST nodes built from tokens) can read\n * the field directly to know which `#ifdef` branch they're inside. */\n branch: BranchSignature = EMPTY_BRANCH;\n\n set(type: T, lexeme: string, start?: ShaderPosition);\n set(type: T, lexeme: string, location?: ShaderRange);\n set(type: T, lexeme: string, arg?: ShaderRange | ShaderPosition) {\n this.type = type;\n this.lexeme = lexeme;\n this.branch = EMPTY_BRANCH;\n if (arg) {\n if (arg instanceof ShaderRange) {\n this.location = arg as ShaderRange;\n } else {\n const end = ShaderCompiler.createPosition(\n arg.index + lexeme.length,\n // #if _VERBOSE\n arg.line,\n arg.column + lexeme.length\n // #endif\n );\n this.location = ShaderCompiler.createRange(arg, end);\n }\n }\n }\n\n dispose(): void {}\n}\n\nexport const EOF = new BaseToken();\nEOF.set(ETokenType.EOF, \"/EOF\");\n","import { TokenType } from \"../common\";\n\nexport type Terminal = TokenType;\n\nexport enum NoneTerminal {\n START = 2000,\n // galacean\n gs_shader_program,\n\n // glsl\n global_declaration,\n variable_declaration,\n variable_declaration_list,\n variable_declaration_statement,\n array_specifier_list,\n array_specifier,\n ext_builtin_type_specifier_nonarray,\n precision_specifier,\n variable_identifier,\n variable_identifier_node,\n primary_expression,\n postfix_expression,\n integer_expression,\n function_call,\n function_call_generic,\n function_call_header_no_parameters,\n function_call_header_with_parameters,\n function_call_parameter_list,\n function_call_header,\n function_identifier,\n constructor_identifier,\n unary_expression,\n unary_operator,\n multiplicative_expression,\n additive_expression,\n shift_expression,\n relational_expression,\n equality_expression,\n and_expression,\n inclusive_or_expression,\n exclusive_or_expression,\n logical_and_expression,\n logical_xor_expression,\n logical_or_expression,\n conditional_expression,\n assignment_expression,\n assignment_operator,\n expression,\n integer_constant_expression,\n integer_constant_expression_operator,\n declaration,\n function_prototype,\n function_declarator,\n function_header_with_parameters,\n function_header,\n function_parameter_list,\n parameter_declarator,\n parameter_declaration,\n parameter_qualifier,\n parameter_type_specifier,\n init_declarator_list,\n single_declaration,\n fully_specified_type,\n type_qualifier,\n single_type_qualifier,\n storage_qualifier,\n precision_qualifier,\n interpolation_qualifier,\n invariant_qualifier,\n type_specifier,\n type_specifier_nonarray,\n type_specifier_no_prec,\n basic_type,\n struct_specifier,\n struct_declaration_list,\n struct_declaration,\n layout_qualifier,\n struct_declarator_list,\n struct_declarator,\n identifier_list,\n decl_identifier,\n initializer,\n initializer_list,\n declaration_statement,\n simple_statement,\n compound_statement_no_scope,\n statement_with_scope,\n compound_statement,\n statement,\n statement_list,\n iteration_statement_no_new_scope,\n expression_statement,\n selection_statement,\n selection_rest_statement,\n condition,\n conditionopt,\n iteration_statement,\n for_init_statement,\n for_rest_statement,\n jump_statement,\n external_declaration,\n function_definition,\n field_selection,\n bool_constant,\n function_identifier_node,\n typename_identifier_node,\n scope_brace,\n scope_end_brace,\n\n // Macro\n macro_undef,\n macro_push_context,\n macro_pop_context,\n macro_elif_expression,\n macro_else_expression,\n global_macro_if_statement,\n global_macro_declaration,\n global_macro_branch,\n macro_struct_declaration,\n macro_struct_branch,\n macro_if_statement,\n macro_branch,\n macro_param_case_list,\n macro_param_block,\n macro_parameter_branch,\n macro_call_arg_case_list,\n macro_call_arg_block,\n macro_call_arg_branch,\n\n // Macro call\n macro_call_symbol,\n macro_call_function,\n\n // Macro define (expression-style): `#define NAME [(params)] VALUE`\n macro_define,\n\n _ignore\n}\n\nexport type GrammarSymbol = Terminal | NoneTerminal;\n\nexport type Derivation = GrammarSymbol[];\n","import { ETokenType, GalaceanDataType, TypeAny } from \"./common\";\nimport { BaseToken as Token } from \"./common/BaseToken\";\nimport { ASTNode, TreeNode } from \"./parser/AST\";\nimport { GrammarSymbol, NoneTerminal } from \"./parser/GrammarSymbol\";\n// #if _VERBOSE\nimport { Keyword } from \"./common/enums/Keyword\";\nimport State from \"./lalr/State\";\n// #endif\n\nexport class ParserUtils {\n static unwrapNodeByType<T = TreeNode>(node: TreeNode, type: NoneTerminal): T | undefined {\n const child = node.children[0];\n if (child instanceof Token) return;\n if (child.nt === type) return child as T;\n return ParserUtils.unwrapNodeByType(child, type);\n }\n\n /**\n * Parse a function-macro parameter-list lexeme (`\"(a, b, c)\"`) into its parameter\n * names. An empty list `\"()\"` yields `[]`. Leading/trailing whitespace around each\n * name is trimmed. Empty entries from consecutive commas are filtered out.\n */\n static parseMacroParamList(lexeme: string): string[] {\n const inner = lexeme.replace(/^\\s*\\(\\s*|\\s*\\)\\s*$/g, \"\");\n if (!inner) return [];\n return inner\n .split(\",\")\n .map((s) => s.trim())\n .filter(Boolean);\n }\n\n /**\n * Return the lexeme of `expr` when it is (transitively) a single bare identifier\n * wrapped in primary/postfix expression nodes, e.g. `o` → \"o\". Returns null for\n * compound expressions (`o.x`, `foo(..)`, `arr[0]`, …). Useful for callers that\n * want to apply a substitution rule only at the root of an expression, never on\n * swizzles or nested member access.\n */\n static extractDirectIdentLexeme(expr: TreeNode): string | null {\n let cur: TreeNode | Token = expr;\n while (cur) {\n if (cur instanceof ASTNode.VariableIdentifier) {\n const child = cur.children[0];\n return child instanceof Token ? child.lexeme : null;\n }\n // `( expression )` form on PrimaryExpression — descend through the\n // wrapped Expression so `(v)` resolves to `v`. All other compound\n // forms (member access, function call, comma, …) bail out.\n if (cur instanceof ASTNode.PrimaryExpression && cur.children.length === 3) {\n cur = cur.children[1];\n continue;\n }\n // Any precedence-chain wrapper with a single child forwards through.\n // Covers PostfixExpression / PrimaryExpression(len=1) / Assignment /\n // Conditional / LogicalOr / … all the way down — including the verbose\n // build's full chain and the release build's elision-flattened chain.\n if (cur instanceof ASTNode.ExpressionAstNode && cur.children.length === 1) {\n cur = cur.children[0];\n continue;\n }\n return null;\n }\n return null;\n }\n\n // #if _VERBOSE\n /**\n * Check if type `tb` is compatible with type `ta`.\n */\n static typeCompatible(ta: GalaceanDataType, tb: GalaceanDataType | undefined) {\n if (tb == undefined || tb === TypeAny) return true;\n if (ta === Keyword.INT) {\n return ta === tb || tb === Keyword.UINT;\n }\n return ta === tb;\n }\n\n static toString(sm: GrammarSymbol) {\n if (this.isTerminal(sm)) {\n return ETokenType[sm] ?? Keyword[sm];\n }\n return NoneTerminal[sm];\n }\n // #endif\n\n static isTerminal(sm: GrammarSymbol) {\n return sm < NoneTerminal.START;\n }\n\n /**\n * @internal\n */\n // #if _VERBOSE\n static printStatePool(logPath: string) {\n let output = \"\";\n\n console.log(\"========== Parser Pool ==========\");\n\n let count = 0;\n for (const state of State.pool.values()) {\n count++;\n let tmp = \"\";\n tmp += `${state.id}: \\n`.padEnd(4);\n for (const psItem of state.items) {\n tmp += \" \" + psItem.toString() + \"\\n\";\n }\n output += tmp;\n }\n\n console.log(\"state count:\", count);\n console.log(output);\n }\n // #endif\n}\n","function _is_native_reflect_construct() {\n // Since Reflect.construct can't be properly polyfilled, some\n // implementations (e.g. core-js@2) don't set the correct internal slots.\n // Those polyfills don't allow us to subclass built-ins, so we need to\n // use our fallback implementation.\n try {\n // If the internal slots aren't set, this throws an error similar to\n // TypeError: this is not a Boolean object.\n var result = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function() {}));\n } catch (_) {}\n return (_is_native_reflect_construct = function() {\n return !!result;\n })();\n}\n\nexport { _is_native_reflect_construct as _ };\n","import { _ as _is_native_reflect_construct } from \"./_is_native_reflect_construct.js\";\nimport { _ as _set_prototype_of } from \"./_set_prototype_of.js\";\nfunction _construct(Parent, args, Class) {\n if (_is_native_reflect_construct()) _construct = Reflect.construct;\n else {\n _construct = function construct(Parent, args, Class) {\n var a = [null];\n a.push.apply(a, args);\n var Constructor = Function.bind.apply(Parent, a);\n var instance = new Constructor();\n\n if (Class) _set_prototype_of(instance, Class.prototype);\n\n return instance;\n };\n }\n\n return _construct.apply(null, arguments);\n}\nexport { _construct as _ };\n","function _get_prototype_of(o) {\n _get_prototype_of = Object.setPrototypeOf ? Object.getPrototypeOf : function getPrototypeOf(o) {\n return o.__proto__ || Object.getPrototypeOf(o);\n };\n\n return _get_prototype_of(o);\n}\nexport { _get_prototype_of as _ };\n","function _is_native_function(fn) {\n return Function.toString.call(fn).indexOf(\"[native code]\") !== -1;\n}\nexport { _is_native_function as _ };\n","import { _ as _construct } from \"./_construct.js\";\nimport { _ as _get_prototype_of } from \"./_get_prototype_of.js\";\nimport { _ as _is_native_function } from \"./_is_native_function.js\";\nimport { _ as _set_prototype_of } from \"./_set_prototype_of.js\";\n\nfunction _wrap_native_super(Class) {\n var _cache = typeof Map === \"function\" ? new Map() : undefined;\n _wrap_native_super = function(Class) {\n if (Class === null || !_is_native_function(Class)) return Class;\n if (typeof Class !== \"function\") throw new TypeError(\"Super expression must either be null or a function\");\n if (typeof _cache !== \"undefined\") {\n if (_cache.has(Class)) return _cache.get(Class);\n _cache.set(Class, Wrapper);\n }\n\n function Wrapper() {\n return _construct(Class, arguments, _get_prototype_of(this).constructor);\n }\n Wrapper.prototype = Object.create(Class.prototype, { constructor: { value: Wrapper, enumerable: false, writable: true, configurable: true } });\n\n return _set_prototype_of(Wrapper, Class);\n };\n\n return _wrap_native_super(Class);\n}\nexport { _wrap_native_super as _ };\n","import { ShaderPosition } from \"./common/ShaderPosition\";\nimport { ShaderRange } from \"./common/ShaderRange\";\n\nexport class GSError extends Error {\n static wrappingLineCount = 2;\n\n constructor(\n name: GSErrorName,\n message: string,\n public readonly location: ShaderRange | ShaderPosition,\n public readonly source: string,\n public readonly file?: string\n ) {\n super(message);\n this.name = name;\n }\n\n override toString(): string {\n let start: ShaderPosition, end: ShaderPosition;\n const { message, location, source } = this;\n if (!source) {\n return message;\n }\n\n if (location instanceof ShaderPosition) {\n start = end = location;\n } else {\n start = location.start;\n end = location.end;\n }\n const lines = source.split(\"\\n\");\n\n let diagnosticMessage = `${this.name}: ${message}\\n\\n`;\n\n // #if _VERBOSE\n const lineSplit = \"|···\";\n\n const wrappingLineCount = GSError.wrappingLineCount;\n for (let i = start.line - wrappingLineCount, n = end.line + wrappingLineCount; i <= n; i++) {\n const line = lines[i];\n diagnosticMessage += lineSplit + `${line}\\n`;\n\n if (i < start.line || i > end.line) continue;\n\n let remarkStart = 0;\n let remarkEnd = line.length;\n let paddingLength = lineSplit.length;\n if (i === start.line) {\n remarkStart = start.column;\n paddingLength += start.column;\n }\n if (i === end.line) {\n remarkEnd = end.column;\n }\n const remarkLength = Math.max(remarkEnd - remarkStart, 1);\n\n diagnosticMessage += \" \".repeat(paddingLength) + \"^\".repeat(remarkLength) + \"\\n\";\n }\n // #endif\n\n return diagnosticMessage;\n }\n}\n\nexport enum GSErrorName {\n PreprocessorError = \"PreprocessorError\",\n CompilationError = \"CompilationError\",\n ScannerError = \"ScannerError\",\n CompilationWarn = \"CompilationWarning\"\n}\n","import { ShaderPosition, ShaderRange } from \".\";\nimport { GSErrorName } from \"../GSError\";\nimport { ShaderCompiler } from \"../ShaderCompiler\";\nimport { ShaderCompilerUtils } from \"../ShaderCompilerUtils\";\nimport { BaseToken } from \"./BaseToken\";\n\nexport type OnToken = (token: BaseToken, scanner: BaseLexer) => void;\n\n/**\n * @internal\n */\nexport abstract class BaseLexer {\n static isDigit(charCode: number): boolean {\n return charCode >= 48 && charCode <= 57; // 0-9\n }\n\n static isHexDigit(charCode: number): boolean {\n return (\n (charCode >= 48 && charCode <= 57) || // 0-9\n (charCode >= 65 && charCode <= 70) || // A-F\n (charCode >= 97 && charCode <= 102) // a-f\n );\n }\n\n // Check if character is alphabetic or underscore (valid word start)\n static isAlpha(charCode: number): boolean {\n return (\n charCode === 95 || // _\n (charCode >= 65 && charCode <= 90) || // A-Z\n (charCode >= 97 && charCode <= 122) // a-z\n );\n }\n\n // Check if character is alphanumeric (alpha + digit)\n static isAlnum(charCode: number): boolean {\n return BaseLexer.isAlpha(charCode) || BaseLexer.isDigit(charCode);\n }\n\n static isPreprocessorStartChar(charCode: number): boolean {\n return charCode === 35; // #\n }\n\n /**\n * If `i` points at the start of a `/* … *\\/` block comment, return the index\n * just past the closing `*\\/`. Otherwise return `i` unchanged. If the\n * comment is unterminated, returns `len` (clamped, never overshoots).\n * Single source of truth for block-comment scanning across the lexer.\n */\n protected static _skipBlockComment(src: string, i: number, len: number): number {\n if (src.charCodeAt(i) !== 47 /* '/' */ || i + 1 >= len || src.charCodeAt(i + 1) !== 42 /* '*' */) return i;\n let j = i + 2;\n while (j + 1 < len) {\n if (src.charCodeAt(j) === 42 && src.charCodeAt(j + 1) === 47) return j + 2;\n j++;\n }\n return len;\n }\n\n /**\n * If `i` points at the start of a `//` line comment, return the index of the\n * terminating newline (or `len` at EOF). The newline itself is NOT consumed\n * — callers decide whether `\\n` is whitespace or a logical separator.\n * Otherwise return `i` unchanged.\n */\n protected static _skipLineComment(src: string, i: number, len: number): number {\n if (src.charCodeAt(i) !== 47 /* '/' */ || i + 1 >= len || src.charCodeAt(i + 1) !== 47) return i;\n let j = i + 2;\n while (j < len) {\n const c = src.charCodeAt(j);\n if (c === 10 || c === 13) break;\n j++;\n }\n return j;\n }\n\n static isWhiteSpaceChar(charCode: number, includeBreak: boolean): boolean {\n // Space || Tab\n if (charCode === 32 || charCode === 9) {\n return true;\n }\n return includeBreak && (charCode === 10 || charCode === 13); // \\n || \\r\n }\n\n protected _currentIndex = 0;\n protected _source: string;\n\n // #if _VERBOSE\n protected _column = 0;\n protected _line = 0;\n // #endif\n\n get currentIndex(): number {\n return this._currentIndex;\n }\n\n get source(): string {\n return this._source;\n }\n\n // #if _VERBOSE\n get line() {\n return this._line;\n }\n\n get column() {\n return this._column;\n }\n // #endif\n\n constructor(source?: string) {\n this._source = source;\n }\n\n setSource(source: string): void {\n this._source = source;\n this._currentIndex = 0;\n // #if _VERBOSE\n this._line = this._column = 0;\n // #endif\n }\n\n getShaderPosition(backOffset = 0): ShaderPosition {\n return ShaderCompiler.createPosition(\n this._currentIndex - backOffset,\n // #if _VERBOSE\n this._line,\n this._column - backOffset\n // #endif\n );\n }\n\n isEnd(): boolean {\n return this._currentIndex >= this._source.length;\n }\n\n getCurChar(): string {\n return this._source[this._currentIndex];\n }\n\n getCurCharCode(): number {\n return this._source.charCodeAt(this._currentIndex);\n }\n\n advance(count: number): void {\n // #if _VERBOSE\n const source = this._source;\n const startIndex = this._currentIndex;\n for (let i = 0; i < count; i++) {\n if (source[startIndex + i] === \"\\n\") {\n this._line += 1;\n this._column = 0;\n } else {\n this._column += 1;\n }\n }\n // #endif\n this._currentIndex += count;\n }\n\n skipSpace(includeLineBreak: boolean): void {\n while (BaseLexer.isWhiteSpaceChar(this.getCurCharCode(), includeLineBreak)) {\n this.advance(1);\n }\n }\n\n skipCommentsAndSpace(): void {\n const source = this._source;\n const length = source.length;\n let index = this._currentIndex;\n\n while (index < length) {\n // Whitespace including newlines — `\\n` is just a separator in the\n // top-level (non-directive) scan path.\n while (index < length && BaseLexer.isWhiteSpaceChar(source.charCodeAt(index), true)) {\n index++;\n }\n const afterBlock = BaseLexer._skipBlockComment(source, index, length);\n if (afterBlock !== index) {\n index = afterBlock;\n continue;\n }\n const afterLine = BaseLexer._skipLineComment(source, index, length);\n if (afterLine !== index) {\n index = afterLine;\n continue;\n }\n break;\n }\n\n this.advance(index - this._currentIndex);\n }\n\n peek(to: number): string {\n const offset = this._currentIndex;\n return this._source.substring(offset, offset + to);\n }\n\n scanLexeme(lexeme: string): void {\n this.skipCommentsAndSpace();\n const length = lexeme.length;\n const peek = this.peek(length);\n if (peek !== lexeme) {\n this.throwError(this.getShaderPosition(0), `Expect lexeme \"${lexeme}\", but got \"${peek}\"`);\n }\n this.advance(length);\n }\n\n scanTwoExpectedLexemes(lexeme1: string, lexeme2: string): string | null {\n this.skipCommentsAndSpace();\n\n // Check first lexeme\n if (this.peek(lexeme1.length) === lexeme1) {\n this.advance(lexeme1.length);\n return lexeme1;\n }\n\n // Check second lexeme\n if (this.peek(lexeme2.length) === lexeme2) {\n this.advance(lexeme2.length);\n return lexeme2;\n }\n\n return null;\n }\n\n throwError(pos: ShaderPosition | ShaderRange, ...msgs: any[]) {\n const error = ShaderCompilerUtils.createGSError(msgs.join(\" \"), GSErrorName.ScannerError, this._source, pos);\n // #if _VERBOSE\n console.error(error!.toString());\n // #endif\n throw error;\n }\n\n scanPairedChar(left: string, right: string, balanced: boolean, skipLeading: boolean): string {\n if (!skipLeading) {\n this.scanLexeme(left);\n }\n\n const start = this._currentIndex;\n const source = this._source;\n const sourceLength = source.length;\n\n let currentIndex = this._currentIndex;\n if (balanced) {\n let level = 1;\n while (currentIndex < sourceLength) {\n const currentChar = source[currentIndex];\n if (currentChar === right && --level === 0) {\n break;\n } else if (currentChar === left) {\n level++;\n }\n currentIndex++;\n }\n } else {\n while (currentIndex < sourceLength) {\n if (source[currentIndex] === right) {\n break;\n }\n currentIndex++;\n }\n }\n\n this.advance(currentIndex + 1 - this._currentIndex);\n\n return source.substring(start, currentIndex);\n }\n\n abstract scanToken(onToken?: OnToken): void;\n}\n","import { ETokenType } from \"../common\";\nimport { BaseLexer } from \"../common/BaseLexer\";\nimport { BaseToken, BranchConstraint, BranchSignature, EMPTY_BRANCH, EOF } from \"../common/BaseToken\";\nimport { Keyword } from \"../common/enums/Keyword\";\nimport { MacroDefineInfo, MacroDefineList } from \"../Preprocessor\";\nimport { ShaderCompiler } from \"../ShaderCompiler\";\n\n/**\n * The Lexer of Shader Compiler\n */\nexport class Lexer extends BaseLexer {\n private static _lexemeTable = <Record<string, Keyword>>{\n const: Keyword.CONST,\n bool: Keyword.BOOL,\n float: Keyword.FLOAT,\n double: Keyword.DOUBLE,\n int: Keyword.INT,\n uint: Keyword.UINT,\n break: Keyword.BREAK,\n continue: Keyword.CONTINUE,\n do: Keyword.DO,\n else: Keyword.ELSE,\n for: Keyword.FOR,\n if: Keyword.IF,\n while: Keyword.WHILE,\n discard: Keyword.DISCARD,\n return: Keyword.RETURN,\n bvec2: Keyword.BVEC2,\n bvec3: Keyword.BVEC3,\n bvec4: Keyword.BVEC4,\n ivec2: Keyword.IVEC2,\n ivec3: Keyword.IVEC3,\n ivec4: Keyword.IVEC4,\n uvec2: Keyword.UVEC2,\n uvec3: Keyword.UVEC3,\n uvec4: Keyword.UVEC4,\n vec2: Keyword.VEC2,\n vec3: Keyword.VEC3,\n vec4: Keyword.VEC4,\n mat2: Keyword.MAT2,\n mat3: Keyword.MAT3,\n mat4: Keyword.MAT4,\n in: Keyword.IN,\n out: Keyword.OUT,\n inout: Keyword.INOUT,\n sampler2D: Keyword.SAMPLER2D,\n samplerCube: Keyword.SAMPLER_CUBE,\n sampler3D: Keyword.SAMPLER3D,\n sampler2DShadow: Keyword.SAMPLER2D_SHADOW,\n samplerCubeShadow: Keyword.SAMPLER_CUBE_SHADOW,\n sampler2DArray: Keyword.SAMPLER2D_ARRAY,\n sampler2DArrayShadow: Keyword.SAMPLER2D_ARRAY_SHADOW,\n isampler2D: Keyword.I_SAMPLER2D,\n isampler3D: Keyword.I_SAMPLER3D,\n isamplerCube: Keyword.I_SAMPLER_CUBE,\n isampler2DArray: Keyword.I_SAMPLER2D_ARRAY,\n usampler2D: Keyword.U_SAMPLER2D,\n usampler3D: Keyword.U_SAMPLER3D,\n usamplerCube: Keyword.U_SAMPLER_CUBE,\n usampler2DArray: Keyword.U_SAMPLER2D_ARRAY,\n struct: Keyword.STRUCT,\n void: Keyword.VOID,\n true: Keyword.True,\n false: Keyword.False,\n precision: Keyword.PRECISION,\n precise: Keyword.PRECISE,\n highp: Keyword.HIGHP,\n mediump: Keyword.MEDIUMP,\n lowp: Keyword.LOWP,\n invariant: Keyword.INVARIANT,\n flat: Keyword.FLAT,\n smooth: Keyword.SMOOTH,\n noperspective: Keyword.NOPERSPECTIVE,\n centroid: Keyword.CENTROID,\n layout: Keyword.LAYOUT,\n location: Keyword.LOCATION,\n\n // Macros ...\n \"#if\": Keyword.MACRO_IF,\n \"#ifdef\": Keyword.MACRO_IFDEF,\n \"#ifndef\": Keyword.MACRO_IFNDEF,\n \"#else\": Keyword.MACRO_ELSE,\n \"#elif\": Keyword.MACRO_ELIF,\n \"#endif\": Keyword.MACRO_ENDIF,\n \"#undef\": Keyword.MACRO_UNDEF\n };\n\n // Single source of truth for `#define` parsing — fed from both AST and legacy paths.\n private static readonly _defineDirectiveReg = /^\\s*#define\\s+(\\w+)[ ]*(\\(([^)]*)\\))?(?:[ \\t]+([^\\n\\r]*?))?\\s*$/;\n // Bare identifier or call form only — mixed-operator values reject.\n private static readonly _referenceReg = /^([a-zA-Z_]\\w*)(?:\\s*\\(.*\\))?$/;\n // C preprocessor line continuation.\n private static readonly _lineContinuationReg = /\\\\(?:\\r\\n|\\n|\\r)/g;\n // Synthetic `__if_<n>` per `#if` — polarity flip makes `#else` mutually exclusive in `isVisibleFrom`.\n private static _ifCounter = 0;\n\n /** Two branch signatures are equal iff they have the same constraints in the\n * same order with the same polarity. Used by `#define` dedup and AST upgrade\n * matching. */\n static sameBranch(a: BranchSignature, b: BranchSignature): boolean {\n if (a.length !== b.length) return false;\n for (let i = 0, n = a.length; i < n; i++) {\n if (a[i].name !== b[i].name || a[i].defined !== b[i].defined) return false;\n }\n return true;\n }\n\n /**\n * Returns true if a `#define` registered under `defBranch` is reachable from\n * a call site under `callSiteBranch`. Two signatures are mutually exclusive\n * iff some flag appears in both with opposite `defined` polarity. Anything\n * else is compatible — the same flag with the same polarity, or flags that\n * simply don't intersect.\n *\n * Conservative for `#if expr` (not modeled — `tokenize` pushes a sentinel\n * with `name === \"\"` to keep the `#endif` stack depth correct; that\n * sentinel never matches a real flag in the polarity check below, so it\n * stays visible from everywhere). Exact for the common `#ifdef` /\n * `#ifndef` / `#else` cases that drive real shader code.\n */\n static isVisibleFrom(defBranch: BranchSignature, callSiteBranch: BranchSignature): boolean {\n for (let i = 0, n = defBranch.length; i < n; i++) {\n const d = defBranch[i];\n for (let j = 0, m = callSiteBranch.length; j < m; j++) {\n const c = callSiteBranch[j];\n if (d.name === c.name && d.defined !== c.defined) return false;\n }\n }\n return true;\n }\n\n private _needScanMacroConditionExpression = false;\n\n // --- `#define` scanning state machine ---\n // Expression-style `#define` produces a token stream:\n // MACRO_DEFINE, ID(name), [MACRO_DEFINE_PARAMS], <value tokens>, MACRO_DEFINE_END\n // The three flags below encode the mini state machine driving that stream:\n // - _inMacroDefineValue : persistent mode — newline terminates the directive\n // rather than being skipped as whitespace\n // - _macroDefineExpectsNameToken : one-shot — next identifier is the macro\n // name and must be ID (not MACRO_CALL even if the\n // name was registered by a prior definition)\n // - _macroDefineExpectsParamsToken : one-shot — if next char is `(`, capture\n // the balanced `(…)` block as a single opaque token\n // so the CFG doesn't need its own parameter-list\n // non-terminal (which would conflict with\n // function_call_parameter_list under LALR(1))\n private _inMacroDefineValue = false;\n private _macroDefineExpectsNameToken = false;\n private _macroDefineExpectsParamsToken = false;\n\n // Source offset of the current `#define` directive's start (the `#`).\n // Set when `_scanDirectives` consumes `#define`, used by\n // `_registerMacroDefine` at MACRO_DEFINE_END to slice out the directive\n // text and parse it with the same regex the legacy path uses — single\n // source of truth.\n private _macroDefineDirectiveStart: number = -1;\n\n // Active `#ifdef`/`#ifndef`/`#else` stack. Updated by `tokenize` between\n // emitting tokens; read by `_registerMacroDefine` (when it registers a\n // legacy entry mid-scan) and stamped onto every emitted token's `branch`\n // field so AST nodes know which branch they're inside.\n private _branchStack: BranchConstraint[] = [];\n // True when the previous token was `#ifdef`/`#ifndef` and we're waiting on\n // the next ID token (the flag name) to actually push onto the stack.\n private _pendingBranchPushDefined: boolean | null = null;\n\n *tokenize() {\n while (!this.isEnd()) {\n const tok = this.scanToken();\n\n // Resolve a pending #ifdef/#ifndef push using the flag-name token that\n // immediately follows the keyword. Grammar allows the name to be either\n // a plain `id` or a `MACRO_CALL` (for `#ifdef <previously-defined-macro>`).\n if (this._pendingBranchPushDefined !== null && (tok.type === ETokenType.ID || tok.type === Keyword.MACRO_CALL)) {\n this._branchStack.push({ name: tok.lexeme, defined: this._pendingBranchPushDefined });\n this._pendingBranchPushDefined = null;\n }\n\n // Stamp the branch onto the token only when inside an `#ifdef`. The\n // top-level case keeps the BaseToken default (shared empty signature),\n // so the hot path stays allocation-free.\n if (this._branchStack.length > 0) tok.branch = this._branchStack.slice();\n\n // Update stack state based on the just-emitted token, so the *next*\n // token sees the correct snapshot. `#if expr` opens a level we can't\n // address (we don't model expressions), but must consume a stack slot\n // so the matching `#endif` pops the right depth — without it, an\n // outer `#ifdef A`'s constraint would be wrongly popped.\n switch (tok.type as Keyword) {\n case Keyword.MACRO_IFDEF:\n this._pendingBranchPushDefined = true;\n break;\n case Keyword.MACRO_IFNDEF:\n this._pendingBranchPushDefined = false;\n break;\n case Keyword.MACRO_IF:\n this._branchStack.push({ name: `__if_${++Lexer._ifCounter}`, defined: true });\n break;\n case Keyword.MACRO_ELIF:\n // Each `#elif` link gets a fresh tag so it's exclusive with earlier arms.\n if (this._branchStack.length > 0) {\n this._branchStack[this._branchStack.length - 1] = {\n name: `__if_${++Lexer._ifCounter}`,\n defined: true\n };\n }\n break;\n case Keyword.MACRO_ELSE: {\n // Flip polarity: `#ifdef X` → `[X=true]` becomes `[X=false]`; `__if_n` likewise.\n const top = this._branchStack[this._branchStack.length - 1];\n if (top) this._branchStack[this._branchStack.length - 1] = { name: top.name, defined: !top.defined };\n break;\n }\n case Keyword.MACRO_ENDIF:\n this._branchStack.pop();\n break;\n }\n\n yield tok;\n }\n return EOF;\n }\n\n constructor(\n source: string,\n public macroDefineList: MacroDefineList\n ) {\n super(source);\n }\n\n override scanToken(): BaseToken {\n if (this._inMacroDefineValue) {\n // Inside a `#define` value: newline ends the directive. Skip only spaces/tabs\n // and block comments, never \\n, so the termination can be detected.\n this._skipInlineSpaceAndComments();\n if (this.isEnd() || this._isAtLineBreak()) {\n return this._emitMacroDefineEnd();\n }\n // Right after the macro name, if the next char is `(`, capture the whole\n // parenthesized parameter list as one opaque token. This keeps the\n // macro-define grammar LALR(1)-friendly (no nested param-list non-terminal).\n if (this._macroDefineExpectsParamsToken) {\n this._macroDefineExpectsParamsToken = false;\n if (this.getCurChar() === \"(\") {\n return this._scanMacroDefineParams();\n }\n }\n } else {\n this.skipCommentsAndSpace();\n if (this.isEnd()) {\n return EOF;\n }\n }\n\n if (this._needScanMacroConditionExpression) {\n this._needScanMacroConditionExpression = false;\n return this._scanMacroConditionExpression();\n }\n\n const curCharCode = this.getCurCharCode();\n if (BaseLexer.isPreprocessorStartChar(curCharCode)) {\n return this._scanDirectives();\n }\n if (BaseLexer.isAlpha(curCharCode)) {\n return this._scanWord();\n }\n if (BaseLexer.isDigit(curCharCode)) {\n return this._scanNum();\n }\n\n const start = this.getShaderPosition();\n const token = BaseToken.pool.get();\n let curChar: string;\n\n switch (this.getCurChar()) {\n case \"<\":\n this.advance(1);\n curChar = this.getCurChar();\n if (curChar === \"<\") {\n this.advance(1);\n if (this.getCurChar() === \"=\") {\n this.advance(1);\n token.set(ETokenType.LEFT_ASSIGN, \"<<=\", start);\n break;\n }\n token.set(ETokenType.LEFT_OP, \"<<\", start);\n break;\n } else if (curChar === \"=\") {\n this.advance(1);\n token.set(ETokenType.LE_OP, \"<=\", start);\n break;\n }\n token.set(ETokenType.LEFT_ANGLE, \"<\", start);\n break;\n\n case \">\":\n this.advance(1);\n curChar = this.getCurChar();\n if (curChar === \">\") {\n this.advance(1);\n if (this.getCurChar() === \"=\") {\n this.advance(1);\n token.set(ETokenType.RIGHT_ASSIGN, \">>=\", start);\n break;\n }\n token.set(ETokenType.RIGHT_OP, \">>\", start);\n break;\n } else if (curChar === \"=\") {\n this.advance(1);\n token.set(ETokenType.GE_OP, \">=\", start);\n break;\n }\n token.set(ETokenType.RIGHT_ANGLE, \">\", start);\n break;\n\n case \"+\":\n this.advance(1);\n curChar = this.getCurChar();\n if (curChar === \"+\") {\n this.advance(1);\n token.set(ETokenType.INC_OP, \"++\", start);\n break;\n } else if (curChar === \"=\") {\n this.advance(1);\n token.set(ETokenType.ADD_ASSIGN, \"+=\", start);\n break;\n }\n token.set(ETokenType.PLUS, \"+\", start);\n break;\n\n case \"-\":\n this.advance(1);\n curChar = this.getCurChar();\n if (curChar === \"-\") {\n this.advance(1);\n token.set(ETokenType.DEC_OP, \"--\", start);\n break;\n } else if (curChar === \"=\") {\n this.advance(1);\n token.set(ETokenType.SUB_ASSIGN, \"-=\", start);\n break;\n }\n token.set(ETokenType.DASH, \"-\", start);\n break;\n\n case \"=\":\n this.advance(1);\n if (this.getCurChar() === \"=\") {\n this.advance(1);\n token.set(ETokenType.EQ_OP, \"==\", start);\n break;\n }\n token.set(ETokenType.EQUAL, \"=\", start);\n break;\n\n case \"!\":\n this.advance(1);\n if (this.getCurChar() === \"=\") {\n this.advance(1);\n token.set(ETokenType.NE_OP, \"!=\", start);\n break;\n }\n token.set(ETokenType.BANG, \"!\", start);\n break;\n\n case \"&\":\n this.advance(1);\n curChar = this.getCurChar();\n if (curChar === \"&\") {\n this.advance(1);\n token.set(ETokenType.AND_OP, \"&&\", start);\n break;\n } else if (curChar === \"=\") {\n this.advance(1);\n token.set(ETokenType.AND_ASSIGN, \"&=\", start);\n break;\n }\n token.set(ETokenType.AMPERSAND, \"&\", start);\n break;\n\n case \"|\":\n this.advance(1);\n curChar = this.getCurChar();\n if (curChar === \"|\") {\n this.advance(1);\n token.set(ETokenType.OR_OP, \"||\", start);\n break;\n } else if (curChar === \"=\") {\n this.advance(1);\n token.set(ETokenType.OR_ASSIGN, \"|=\", start);\n break;\n }\n token.set(ETokenType.VERTICAL_BAR, \"|\", start);\n break;\n\n case \"^\":\n this.advance(1);\n curChar = this.getCurChar();\n if (curChar === \"^\") {\n this.advance(1);\n token.set(ETokenType.XOR_OP, \"^^\", start);\n break;\n } else if (curChar === \"=\") {\n this.advance(1);\n token.set(ETokenType.XOR_ASSIGN, \"^=\", start);\n break;\n }\n token.set(ETokenType.CARET, \"^\", start);\n break;\n\n case \"*\":\n this.advance(1);\n if (this.getCurChar() === \"=\") {\n this.advance(1);\n token.set(ETokenType.MUL_ASSIGN, \"*=\", start);\n break;\n }\n\n token.set(ETokenType.STAR, \"*\", start);\n break;\n\n case \"/\":\n this.advance(1);\n if (this.getCurChar() === \"=\") {\n this.advance(1);\n\n token.set(ETokenType.DIV_ASSIGN, \"/=\", start);\n break;\n }\n\n token.set(ETokenType.SLASH, \"/\", start);\n break;\n\n case \"%\":\n this.advance(1);\n if (this.getCurChar() === \"=\") {\n this.advance(1);\n\n token.set(ETokenType.MOD_ASSIGN, \"%=\", start);\n break;\n }\n\n token.set(ETokenType.PERCENT, \"%\", start);\n break;\n\n case \"(\":\n this.advance(1);\n\n token.set(ETokenType.LEFT_PAREN, \"(\", start);\n break;\n case \")\":\n this.advance(1);\n\n token.set(ETokenType.RIGHT_PAREN, \")\", start);\n break;\n case \"{\":\n this.advance(1);\n\n token.set(ETokenType.LEFT_BRACE, \"{\", start);\n break;\n case \"}\":\n this.advance(1);\n\n token.set(ETokenType.RIGHT_BRACE, \"}\", start);\n break;\n case \"[\":\n this.advance(1);\n\n token.set(ETokenType.LEFT_BRACKET, \"[\", start);\n break;\n case \"]\":\n this.advance(1);\n\n token.set(ETokenType.RIGHT_BRACKET, \"]\", start);\n break;\n case \".\":\n this.advance(1);\n if (BaseLexer.isDigit(this.getCurCharCode())) {\n return this._scanNumAfterDot();\n }\n\n token.set(ETokenType.DOT, \".\", start);\n break;\n case \",\":\n this.advance(1);\n\n token.set(ETokenType.COMMA, \",\", start);\n break;\n case \":\":\n this.advance(1);\n\n token.set(ETokenType.COLON, \":\", start);\n return token;\n case \";\":\n this.advance(1);\n\n token.set(ETokenType.SEMICOLON, \";\", start);\n break;\n case \"~\":\n this.advance(1);\n\n token.set(ETokenType.TILDE, \"~\", start);\n break;\n case \"?\":\n this.advance(1);\n\n token.set(ETokenType.QUESTION, \"?\", start);\n break;\n case '\"':\n this.advance(1);\n return this._scanStringConst();\n\n default:\n this.throwError(this.getShaderPosition(0), `Unexpected character ${this.getCurChar()}`);\n }\n return token;\n }\n\n private _scanStringConst(): BaseToken {\n const start = this.getShaderPosition();\n const buffer: string[] = [];\n while (this.getCurChar() !== '\"') {\n buffer.push(this.getCurChar());\n this.advance(1);\n }\n this.advance(1);\n const range = ShaderCompiler.createRange(start, this.getShaderPosition());\n\n const token = BaseToken.pool.get();\n token.set(ETokenType.STRING_CONST, buffer.join(\"\"), range);\n return token;\n }\n\n private _scanNumAfterDot(): BaseToken {\n const buffer = [\".\"];\n while (BaseLexer.isDigit(this.getCurCharCode())) {\n buffer.push(this.getCurChar());\n this.advance(1);\n }\n this._scanFloatSuffix(buffer);\n const token = BaseToken.pool.get();\n token.set(ETokenType.FLOAT_CONSTANT, buffer.join(\"\"), this.getShaderPosition(buffer.length));\n return token;\n }\n\n private _scanUtilBreakLine(outBuffer: string[]): void {\n const src = this._source;\n const len = src.length;\n while (!this.isEnd()) {\n // Honor line-continuation so multi-line directives (`#define X a \\\\\\n + b`)\n // are not cut short at the first physical newline.\n const afterContinuation = Lexer._skipLineContinuation(src, this._currentIndex, len);\n if (afterContinuation !== this._currentIndex) {\n this.advance(afterContinuation - this._currentIndex);\n continue;\n }\n const c = src.charCodeAt(this._currentIndex);\n if (c === 10) break;\n outBuffer.push(src[this._currentIndex]);\n this.advance(1);\n }\n }\n\n private _scanDirectives(): BaseToken {\n const buffer: string[] = [this.getCurChar()];\n const start = this.getShaderPosition();\n this.advance(1);\n while (BaseLexer.isAlpha(this.getCurCharCode())) {\n buffer.push(this.getCurChar());\n this.advance(1);\n }\n const token = BaseToken.pool.get();\n const word = buffer.join(\"\");\n\n if (word === \"#define\") {\n // Mark the directive's start offset (the `#`) so the regex-based\n // registrar can later slice out the full directive text from `_source`.\n // Two paths share the same registrar — single source of truth.\n this._macroDefineDirectiveStart = start.index;\n if (this._defineHasValue()) {\n this._inMacroDefineValue = true;\n // The next word is the macro name: force ID type even if a prior `#define`\n // has already registered the name into `macroDefineList` (redefinition or\n // multi-chunk include), which would otherwise make the word a MACRO_CALL.\n this._macroDefineExpectsNameToken = true;\n token.set(Keyword.MACRO_DEFINE, \"#define\", start);\n } else {\n this._scanUtilBreakLine(buffer);\n const lexeme = \"\\n\" + buffer.join(\"\") + \"\\n\";\n // Legacy path: register immediately by parsing the buffered directive.\n this._registerMacroDefine(this._source.slice(this._macroDefineDirectiveStart, this._currentIndex));\n token.set(Keyword.MACRO_DEFINE_EXPRESSION, lexeme, start);\n }\n } else {\n const kt = Lexer._lexemeTable[word];\n token.set(kt ?? ETokenType.ID, word, start);\n if (word === \"#if\" || word === \"#elif\") {\n this._needScanMacroConditionExpression = true;\n }\n }\n\n return token;\n }\n\n /** True if the current char is an unescaped line break (ignoring `\\` continuation). */\n private _isAtLineBreak(): boolean {\n const c = this.getCurChar();\n return c === \"\\n\" || c === \"\\r\";\n }\n\n /**\n * Peek forward from `#define` and decide whether this directive should use the\n * expression-AST path or the legacy opaque path.\n *\n * The AST path's only purpose is to enable the shader compiler's structural rewrites\n * (varying flatten, struct-property reference tracking) on macro values that\n * mention struct members. Every other shape — bare identifiers, numeric\n * literals, type-alias keywords (`#define FxaaFloat2 vec2`), constructor\n * calls, qualifier fragments, `#define COMMA ,` etc. — is correctly handled\n * by the GLSL driver via textual substitution and needs no AST.\n *\n * So the routing rule is positive and information-driven: **AST iff the\n * replacement list contains a `.` member-access operator**. This is robust\n * against new GLSL keywords / extensions and incidentally moves all simple\n * constants and type aliases off the 18-layer expression precedence chain.\n */\n private _defineHasValue(): boolean {\n const src = this._source;\n const len = src.length;\n // All position advancement goes through `_skipNonSemantic`, which honors\n // line-continuation (`\\` + newline) and skips comments. This is critical:\n // `#define UV foo \\\\\\n .field` is one logical directive whose value\n // contains `.field`, and `#define HP /* a.b */ highp` must not let the\n // `.` inside the comment trigger AST routing.\n let i = Lexer._skipNonSemantic(src, this._currentIndex, len);\n // Skip macro name\n if (!(i < len && BaseLexer.isAlpha(src.charCodeAt(i)))) return false;\n while (i < len && BaseLexer.isAlnum(src.charCodeAt(i))) i++;\n i = Lexer._skipNonSemantic(src, i, len);\n // Optional `(params)`: scan past a balanced pair on the same logical line\n if (src.charCodeAt(i) === 40 /* '(' */) {\n let depth = 1;\n i++;\n while (i < len && depth > 0) {\n i = Lexer._skipNonSemantic(src, i, len);\n const c = src.charCodeAt(i);\n if (c === 10 || c === 13) return false; // malformed: stay legacy\n if (c === 40) depth++;\n else if (c === 41 /* ')' */) depth--;\n i++;\n }\n }\n // Scan to end-of-directive looking for a `.` member-access operator.\n // A `.` is member-access unless it's a decimal point inside a numeric\n // literal — the latter has digits on both physical sides (`3.14`).\n // Edge cases like `.5` go AST too (false positive, but AST path\n // handles bare floats correctly).\n while (i < len) {\n i = Lexer._skipNonSemantic(src, i, len);\n if (i >= len) break;\n const c = src.charCodeAt(i);\n if (c === 10 || c === 13) break; // real newline ends directive\n if (c === 46 /* '.' */) {\n const prev = i > 0 ? src.charCodeAt(i - 1) : 0;\n const next = i + 1 < len ? src.charCodeAt(i + 1) : 0;\n const prevIsDigit = prev >= 48 && prev <= 57;\n const nextIsDigit = next >= 48 && next <= 57;\n if (!(prevIsDigit && nextIsDigit)) return true;\n }\n i++;\n }\n return false;\n }\n\n /**\n * If `i` points at a `\\` immediately followed by a newline (`\\n`, `\\r`, or\n * `\\r\\n`), return the index just past the pair (a single atom in the C/GLSL\n * preprocessor view). Otherwise return `i` unchanged. This is the single\n * source of truth for line-continuation detection — callers along the\n * directive-scanning path (`_skipNonSemantic`, `_scanUtilBreakLine`,\n * `_scanMacroDefineParams`) all delegate here so the rule stays in one\n * place. The string-level `_lineContinuationReg` covers the regex path\n * used by `_registerMacroDefine` for one-shot folding.\n */\n private static _skipLineContinuation(src: string, i: number, len: number): number {\n if (src.charCodeAt(i) !== 92 /* '\\\\' */ || i + 1 >= len) return i;\n const n = src.charCodeAt(i + 1);\n if (n === 10) return i + 2;\n if (n === 13) return i + 2 < len && src.charCodeAt(i + 2) === 10 ? i + 3 : i + 2;\n return i;\n }\n\n /**\n * Pure positional version of \"skip non-semantic characters within a single\n * `#define` directive\": spaces, tabs, `\\` + newline line-continuation, block\n * comments, line comments. A real `\\n` (without preceding `\\`) is *not*\n * consumed — it terminates the directive — so callers can detect\n * end-of-directive after this returns. Shared by `_defineHasValue` (peek\n * path) and `_skipInlineSpaceAndComments` (consuming path) so both honor\n * the same lexical view.\n */\n private static _skipNonSemantic(src: string, from: number, len: number): number {\n let i = from;\n while (i < len) {\n const c = src.charCodeAt(i);\n if (c === 32 || c === 9) {\n i++;\n continue;\n }\n const afterContinuation = Lexer._skipLineContinuation(src, i, len);\n if (afterContinuation !== i) {\n i = afterContinuation;\n continue;\n }\n const afterBlock = Lexer._skipBlockComment(src, i, len);\n if (afterBlock !== i) {\n i = afterBlock;\n continue;\n }\n const afterLine = Lexer._skipLineComment(src, i, len);\n if (afterLine !== i) {\n i = afterLine;\n continue;\n }\n break;\n }\n return i;\n }\n\n /** Consuming wrapper around `_skipNonSemantic` operating on the lexer's\n * current position. Used by the `#define`-value scan state machine. Goes\n * through `advance(diff)` so verbose builds keep their line/column counters\n * in sync (advance walks the consumed slice and bumps `_line` on `\\n`). */\n private _skipInlineSpaceAndComments(): void {\n const next = Lexer._skipNonSemantic(this._source, this._currentIndex, this._source.length);\n if (next > this._currentIndex) this.advance(next - this._currentIndex);\n }\n\n /**\n * Capture a `(param1, param2, …)` block immediately after the macro name in a\n * `#define` directive, producing a single `MACRO_DEFINE_PARAMS` token whose lexeme\n * is the complete `(…)` text (including parens). Balanced parentheses are honored\n * so the scanner doesn't terminate early on inner `()`. Newlines inside the\n * parameter list are tolerated (rare; appears when the directive uses `\\` line\n * continuation), but any newline raises no special error here — it simply stops\n * capture and parser handles the resulting token however it can.\n */\n private _scanMacroDefineParams(): BaseToken {\n const start = this.getShaderPosition();\n const src = this._source;\n const len = src.length;\n const buffer: string[] = [];\n let depth = 0;\n while (this._currentIndex < len) {\n // Honor line-continuation so `#define MAX3( \\\\\\n a, b, c \\\\\\n ) …`\n // collapses onto one logical line. The `\\` and `\\n` must not enter the\n // params buffer or the grammar will reject the lexeme.\n const afterContinuation = Lexer._skipLineContinuation(src, this._currentIndex, len);\n if (afterContinuation !== this._currentIndex) {\n this.advance(afterContinuation - this._currentIndex);\n continue;\n }\n const ch = src[this._currentIndex];\n buffer.push(ch);\n if (ch === \"(\") depth++;\n else if (ch === \")\") {\n depth--;\n this.advance(1);\n if (depth === 0) break;\n continue;\n }\n this.advance(1);\n }\n const token = BaseToken.pool.get();\n token.set(Keyword.MACRO_DEFINE_PARAMS, buffer.join(\"\"), start);\n return token;\n }\n\n /** Emit `MACRO_DEFINE_END` at the end of a `#define` value, consuming the newline. */\n private _emitMacroDefineEnd(): BaseToken {\n const start = this.getShaderPosition();\n const source = this._source;\n if (this._currentIndex < source.length) {\n const c = source.charCodeAt(this._currentIndex);\n if (c === 13 && source.charCodeAt(this._currentIndex + 1) === 10) {\n this.advance(2);\n } else if (c === 10 || c === 13) {\n this.advance(1);\n }\n }\n // Register the directive into macroDefineList — single source of truth.\n this._registerMacroDefine(this._source.slice(this._macroDefineDirectiveStart, this._currentIndex));\n this._inMacroDefineValue = false;\n const token = BaseToken.pool.get();\n token.set(Keyword.MACRO_DEFINE_END, \"\\n\", start);\n return token;\n }\n\n // Parse a `#define <name>[(params)] [value]` directive (already lexed to\n // its newline) and register it. Both AST and legacy paths funnel through\n // here — single source of truth, no drift between two analyzers.\n private _registerMacroDefine(directive: string): void {\n // Fold line-continuations before matching: per C/GLSL preprocessor rules\n // `\\` immediately before a newline removes both characters and stitches\n // the next physical line onto this one. The regex's value group rejects\n // newlines, so without folding any multi-line directive (`#define X a \\\\\\n + b`)\n // would NO MATCH and registration would silently fail.\n const folded = directive.replace(Lexer._lineContinuationReg, \"\");\n const m = Lexer._defineDirectiveReg.exec(folded);\n if (!m) return;\n const name = m[1];\n const paramsStr = m[3];\n const valueRaw = m[4];\n const params = paramsStr\n ? paramsStr\n .split(\",\")\n .map((p) => p.trim())\n .filter(Boolean)\n : [];\n const refMatch = valueRaw ? Lexer._referenceReg.exec(valueRaw.trim()) : null;\n const info: MacroDefineInfo = {\n isFunction: m[2] !== undefined,\n name,\n params,\n referenceName: refMatch ? refMatch[1] : \"\",\n branch: this._branchStack.length === 0 ? EMPTY_BRANCH : this._branchStack.slice()\n };\n const arr = this.macroDefineList[name];\n if (!arr) {\n this.macroDefineList[name] = [info];\n return;\n }\n // Skip duplicates from re-includes / re-definitions in the same `#ifdef`\n // branch. Different branches → different entries (the call-site filter\n // picks the visible one); same branch + same shape → drop.\n for (let i = 0, n = arr.length; i < n; i++) {\n const e = arr[i];\n if (\n e.isFunction === info.isFunction &&\n e.referenceName === info.referenceName &&\n e.params.length === info.params.length &&\n e.params.every((p, idx) => p === info.params[idx]) &&\n Lexer.sameBranch(e.branch, info.branch)\n )\n return;\n }\n arr.push(info);\n }\n\n private _scanMacroConditionExpression(): BaseToken {\n const buffer = new Array<string>();\n const start = this.getShaderPosition();\n this._scanUtilBreakLine(buffer);\n const word = buffer.join(\"\");\n const token = BaseToken.pool.get();\n token.set(Keyword.MACRO_CONDITIONAL_EXPRESSION, word, start);\n return token;\n }\n\n private _scanWord(): BaseToken {\n const buffer: string[] = [this.getCurChar()];\n const start = this.getShaderPosition();\n this.advance(1);\n while (BaseLexer.isAlnum(this.getCurCharCode())) {\n buffer.push(this.getCurChar());\n this.advance(1);\n }\n const token = BaseToken.pool.get();\n const word = buffer.join(\"\");\n const kt = Lexer._lexemeTable[word];\n\n if (this._macroDefineExpectsNameToken) {\n // Bypass MACRO_CALL classification for this one word. Used for the name of\n // a `#define` directive so redefining a known macro still yields a declarer ID.\n this._macroDefineExpectsNameToken = false;\n // C99 §6.10.3/3: the macro is function-like only when `(` appears *immediately*\n // after the name (no intervening whitespace). `#define FOO (1+2)` is\n // object-like with value `(1+2)`, not a function-like macro `FOO()` with\n // body `1+2`. Check the current char before any whitespace-skipping happens\n // on the next `scanToken`, so a space-separated `(` stays part of the value.\n if (this._inMacroDefineValue) {\n this._macroDefineExpectsParamsToken = this.getCurChar() === \"(\";\n }\n token.set(ETokenType.ID, word, start);\n } else if (this._isVisibleMacro(word)) {\n token.set(Keyword.MACRO_CALL, word, start);\n } else {\n token.set(kt ?? ETokenType.ID, word, start);\n }\n return token;\n }\n\n /** True iff at least one `#define <word>` is reachable from the current branch. */\n private _isVisibleMacro(word: string): boolean {\n const defs = this.macroDefineList[word];\n if (!defs || defs.length === 0) return false;\n const callSiteBranch = this._branchStack;\n for (let i = 0, n = defs.length; i < n; i++) {\n if (Lexer.isVisibleFrom(defs[i].branch, callSiteBranch)) return true;\n }\n return false;\n }\n\n private _scanNum(): BaseToken {\n const buffer: string[] = [];\n\n // Hex integer literal: `0[xX][0-9a-fA-F]+[uU]?`. Detect before any\n // decimal-digit read so the `x`/`X` after the leading `0` isn't\n // misclassified as an identifier.\n if (this.getCurChar() === \"0\") {\n const nextCode = this._source.charCodeAt(this._currentIndex + 1);\n if (nextCode === 120 /* 'x' */ || nextCode === 88 /* 'X' */) {\n buffer.push(this.getCurChar());\n this.advance(1);\n buffer.push(this.getCurChar());\n this.advance(1);\n while (BaseLexer.isHexDigit(this.getCurCharCode())) {\n buffer.push(this.getCurChar());\n this.advance(1);\n }\n if (buffer.length === 2) {\n this.throwError(this.getShaderPosition(0), \"lexing error, hex literal needs at least one digit.\");\n }\n this._scanIntegerSuffix(buffer);\n\n const token = BaseToken.pool.get();\n token.set(ETokenType.INT_CONSTANT, buffer.join(\"\"), this.getShaderPosition(buffer.length));\n return token;\n }\n }\n\n while (BaseLexer.isDigit(this.getCurCharCode())) {\n buffer.push(this.getCurChar());\n this.advance(1);\n }\n const curChar = this.getCurChar();\n if (curChar === \".\") {\n buffer.push(curChar);\n this.advance(1);\n while (BaseLexer.isDigit(this.getCurCharCode())) {\n buffer.push(this.getCurChar());\n this.advance(1);\n }\n this._scanFloatSuffix(buffer);\n\n const token = BaseToken.pool.get();\n token.set(ETokenType.FLOAT_CONSTANT, buffer.join(\"\"), this.getShaderPosition(buffer.length));\n return token;\n } else if (curChar === \"e\" || curChar === \"E\") {\n this._scanFloatSuffix(buffer);\n\n const token = BaseToken.pool.get();\n token.set(ETokenType.FLOAT_CONSTANT, buffer.join(\"\"), this.getShaderPosition(buffer.length));\n return token;\n } else if (curChar === \"f\" || curChar === \"F\") {\n // Pure-integer + `f`/`F` suffix → float (`5f`, `100F`).\n buffer.push(curChar);\n this.advance(1);\n\n const token = BaseToken.pool.get();\n token.set(ETokenType.FLOAT_CONSTANT, buffer.join(\"\"), this.getShaderPosition(buffer.length));\n return token;\n } else {\n this._scanIntegerSuffix(buffer);\n\n const token = BaseToken.pool.get();\n token.set(ETokenType.INT_CONSTANT, buffer.join(\"\"), this.getShaderPosition(buffer.length));\n return token;\n }\n }\n\n private _scanFloatSuffix(buffer: string[]): void {\n let curChar = this.getCurChar();\n if (curChar === \"e\" || curChar === \"E\") {\n buffer.push(curChar);\n this.advance(1);\n curChar = this.getCurChar();\n if (curChar === \"+\" || curChar === \"-\") {\n buffer.push(curChar);\n this.advance(1);\n curChar = this.getCurChar();\n }\n if (!BaseLexer.isDigit(this.getCurCharCode()))\n this.throwError(this.getShaderPosition(0), \"lexing error, invalid exponent suffix.\");\n\n do {\n buffer.push(curChar);\n this.advance(1);\n curChar = this.getCurChar();\n } while (BaseLexer.isDigit(this.getCurCharCode()));\n }\n if (curChar === \"f\" || curChar === \"F\") {\n buffer.push(curChar);\n this.advance(1);\n }\n }\n\n private _scanIntegerSuffix(buffer: string[]): void {\n const curChar = this.getCurChar();\n if (curChar === \"u\" || curChar === \"U\") {\n buffer.push(curChar);\n this.advance(1);\n }\n }\n}\n","export enum EShaderStage {\n VERTEX,\n FRAGMENT,\n ALL\n}\n","import { GalaceanDataType, TypeAny } from \"../../common\";\nimport { Keyword } from \"../../common/enums/Keyword\";\nimport { EShaderStage } from \"../../common/enums/ShaderStage\";\n\nexport enum GenericType {\n GenType = 200,\n GenIntType,\n GenUintType,\n GenBoolType,\n Mat,\n BoolVec,\n IntVec,\n UintVec,\n Vec,\n GVec4,\n GSampler2D,\n GSampler3D,\n GSamplerCube,\n GSampler2DArray\n}\n\nexport type NonGenericGalaceanType = Exclude<GalaceanDataType, string>;\ntype BuiltinType = NonGenericGalaceanType | GenericType;\n\n// Generic type system\n//\n// A generic family declares its concrete members and the dimension along which\n// members vary. Matching a generic position locks an index; projecting a return\n// family uses that index. Two families can only share an index if they vary\n// along the same dimension\n//\n// Example: `texture(GSampler2D, vec2) → GVec4` against `texture(sampler2D, uv)`\n// 1. Locate `sampler2D` in GSampler2D (ScalarType dimension) → index 0\n// 2. Project GVec4 (ScalarType dimension) at index 0 → vec4\n//\n// `ivec4 = texture(isampler2D, uv)` locks index 1, projects to `ivec4`\n// `min(vec3, vec3)` locks index 2 in GenType (Size dimension) and returns vec3\n// `min(vec3, vec2)` fails because the second arg would need index 1 but 2 is locked\n\nconst enum GenericDimension {\n // Varies along vector size: scalar / vec2 / vec3 / vec4 (or equivalents)\n Size,\n // Varies along the underlying scalar type: float / int / uint (sometimes with bool)\n ScalarType\n}\n\ntype FamilySpec = {\n readonly dimension: GenericDimension;\n readonly members: readonly NonGenericGalaceanType[];\n};\n\nconst FamilyMembers: Partial<Record<BuiltinType, FamilySpec>> = {\n // Size-varying families: index 0 → scalar, 1 → vec2, 2 → vec3, 3 → vec4\n // Per GLSL Spec §5.1, these appear in both parameter and return positions\n [GenericType.GenType]: {\n dimension: GenericDimension.Size,\n members: [Keyword.FLOAT, Keyword.VEC2, Keyword.VEC3, Keyword.VEC4]\n },\n [GenericType.GenIntType]: {\n dimension: GenericDimension.Size,\n members: [Keyword.INT, Keyword.IVEC2, Keyword.IVEC3, Keyword.IVEC4]\n },\n [GenericType.GenUintType]: {\n dimension: GenericDimension.Size,\n members: [Keyword.UINT, Keyword.UVEC2, Keyword.UVEC3, Keyword.UVEC4]\n },\n [GenericType.GenBoolType]: {\n dimension: GenericDimension.Size,\n members: [Keyword.BOOL, Keyword.BVEC2, Keyword.BVEC3, Keyword.BVEC4]\n },\n // Vec-only sub-families (no scalar): index 0 → vec2, 1 → vec3, 2 → vec4\n [GenericType.Vec]: { dimension: GenericDimension.Size, members: [Keyword.VEC2, Keyword.VEC3, Keyword.VEC4] },\n [GenericType.IntVec]: { dimension: GenericDimension.Size, members: [Keyword.IVEC2, Keyword.IVEC3, Keyword.IVEC4] },\n [GenericType.UintVec]: { dimension: GenericDimension.Size, members: [Keyword.UVEC2, Keyword.UVEC3, Keyword.UVEC4] },\n [GenericType.BoolVec]: { dimension: GenericDimension.Size, members: [Keyword.BVEC2, Keyword.BVEC3, Keyword.BVEC4] },\n [GenericType.Mat]: { dimension: GenericDimension.Size, members: [Keyword.MAT2, Keyword.MAT3, Keyword.MAT4] },\n\n // ScalarType-varying families: index 0 → float base, 1 → int base, 2 → uint base\n // Per GLSL Spec §5.1:\n // GSampler* families are parameter-only (passed as texture samplers)\n // GVec4 is return-only (projected from a GSampler* parameter into the matching vec4 variant)\n [GenericType.GSampler2D]: {\n dimension: GenericDimension.ScalarType,\n members: [Keyword.SAMPLER2D, Keyword.I_SAMPLER2D, Keyword.U_SAMPLER2D]\n },\n [GenericType.GSampler3D]: {\n dimension: GenericDimension.ScalarType,\n members: [Keyword.SAMPLER3D, Keyword.I_SAMPLER3D, Keyword.U_SAMPLER3D]\n },\n [GenericType.GSamplerCube]: {\n dimension: GenericDimension.ScalarType,\n members: [Keyword.SAMPLER_CUBE, Keyword.I_SAMPLER_CUBE, Keyword.U_SAMPLER_CUBE]\n },\n [GenericType.GSampler2DArray]: {\n dimension: GenericDimension.ScalarType,\n members: [Keyword.SAMPLER2D_ARRAY, Keyword.I_SAMPLER2D_ARRAY, Keyword.U_SAMPLER2D_ARRAY]\n },\n [GenericType.GVec4]: { dimension: GenericDimension.ScalarType, members: [Keyword.VEC4, Keyword.IVEC4, Keyword.UVEC4] }\n};\n\nconst BuiltinFunctionTable: Map<string, BuiltinFunction[]> = new Map();\n\nexport class BuiltinFunction {\n ident: string;\n readonly args: BuiltinType[];\n readonly scope: EShaderStage;\n\n private _returnType: BuiltinType;\n private _realReturnType: NonGenericGalaceanType;\n\n get realReturnType(): NonGenericGalaceanType {\n return this._realReturnType;\n }\n\n private constructor(ident: string, returnType: BuiltinType, scope: EShaderStage, ...args: BuiltinType[]) {\n this.ident = ident;\n this._returnType = returnType;\n this.args = args;\n this.scope = scope;\n }\n\n static _create(ident: string, returnType: BuiltinType, ...args: BuiltinType[]) {\n const fn = new BuiltinFunction(ident, returnType, EShaderStage.ALL, ...args);\n const list = BuiltinFunctionTable.get(ident) ?? [];\n list.push(fn);\n BuiltinFunctionTable.set(ident, list);\n }\n\n static _createWithScope(ident: string, returnType: BuiltinType, scope: EShaderStage, ...args: BuiltinType[]) {\n const fn = new BuiltinFunction(ident, returnType, scope, ...args);\n const list = BuiltinFunctionTable.get(ident) ?? [];\n list.push(fn);\n BuiltinFunctionTable.set(ident, list);\n }\n\n // Overload resolution against the generic family system\n //\n // For each candidate signature: concrete positions require exact type match;\n // generic positions locate the actual arg's index within the declared family,\n // and lock an index per dimension (size / scalar-type) shared across positions.\n // The return type is resolved by projecting the appropriate lock through the\n // return family, or passed through verbatim if the return is concrete\n static resolveOverload(\n funcName: string,\n callArgTypes: NonGenericGalaceanType[] | undefined\n ): BuiltinFunction | undefined {\n const overloads = BuiltinFunctionTable.get(funcName);\n if (!overloads) return undefined;\n const n = callArgTypes?.length ?? 0;\n\n for (let i = 0, m = overloads.length; i < m; i++) {\n const candidate = overloads[i];\n const declaredArgs = candidate.args;\n if (declaredArgs.length !== n) continue;\n\n let sizeLock = -1;\n let scalarTypeLock = -1;\n let matched = true;\n\n for (let j = 0; j < n; j++) {\n const declaredType = declaredArgs[j];\n const actualType = callArgTypes![j];\n if (actualType === TypeAny) continue;\n\n const paramFamily = FamilyMembers[declaredType];\n if (paramFamily) {\n // Families have at most 4 members; linear indexOf beats Map.get on this size\n const memberIdx = paramFamily.members.indexOf(actualType);\n if (memberIdx === -1) {\n matched = false;\n break;\n }\n if (paramFamily.dimension === GenericDimension.Size) {\n if (sizeLock === -1) sizeLock = memberIdx;\n else if (sizeLock !== memberIdx) {\n matched = false;\n break;\n }\n } else {\n if (scalarTypeLock === -1) scalarTypeLock = memberIdx;\n else if (scalarTypeLock !== memberIdx) {\n matched = false;\n break;\n }\n }\n } else if (declaredType !== actualType) {\n matched = false;\n break;\n }\n }\n\n if (!matched) continue;\n\n const returnFamily = FamilyMembers[candidate._returnType];\n if (!returnFamily) {\n candidate._realReturnType = candidate._returnType as NonGenericGalaceanType;\n return candidate;\n }\n const returnIdx = returnFamily.dimension === GenericDimension.Size ? sizeLock : scalarTypeLock;\n // No argument locked the dimension (all relevant args were TypeAny): fall\n // through as TypeAny so downstream overload resolution treats the result\n // as a wildcard rather than a specific guess\n candidate._realReturnType = returnIdx === -1 ? TypeAny : returnFamily.members[returnIdx];\n return candidate;\n }\n\n return undefined;\n }\n\n static isExist(ident: string) {\n return BuiltinFunctionTable.has(ident);\n }\n}\n\nBuiltinFunction._create(\"radians\", GenericType.GenType, GenericType.GenType);\nBuiltinFunction._create(\"degrees\", GenericType.GenType, GenericType.GenType);\nBuiltinFunction._create(\"sin\", GenericType.GenType, GenericType.GenType);\nBuiltinFunction._create(\"cos\", GenericType.GenType, GenericType.GenType);\nBuiltinFunction._create(\"tan\", GenericType.GenType, GenericType.GenType);\nBuiltinFunction._create(\"asin\", GenericType.GenType, GenericType.GenType);\nBuiltinFunction._create(\"acos\", GenericType.GenType, GenericType.GenType);\nBuiltinFunction._create(\"atan\", GenericType.GenType, GenericType.GenType, GenericType.GenType);\nBuiltinFunction._create(\"atan\", GenericType.GenType, GenericType.GenType);\nBuiltinFunction._create(\"sinh\", GenericType.GenType, GenericType.GenType);\nBuiltinFunction._create(\"cosh\", GenericType.GenType, GenericType.GenType);\nBuiltinFunction._create(\"tanh\", GenericType.GenType, GenericType.GenType);\nBuiltinFunction._create(\"asinh\", GenericType.GenType, GenericType.GenType);\nBuiltinFunction._create(\"acosh\", GenericType.GenType, GenericType.GenType);\nBuiltinFunction._create(\"atanh\", GenericType.GenType, GenericType.GenType);\n\nBuiltinFunction._create(\"pow\", GenericType.GenType, GenericType.GenType, GenericType.GenType);\nBuiltinFunction._create(\"exp\", GenericType.GenType, GenericType.GenType);\nBuiltinFunction._create(\"log\", GenericType.GenType, GenericType.GenType);\nBuiltinFunction._create(\"exp2\", GenericType.GenType, GenericType.GenType);\nBuiltinFunction._create(\"log2\", GenericType.GenType, GenericType.GenType);\nBuiltinFunction._create(\"sqrt\", GenericType.GenType, GenericType.GenType);\nBuiltinFunction._create(\"inversesqrt\", GenericType.GenType, GenericType.GenType);\n\nBuiltinFunction._create(\"abs\", GenericType.GenType, GenericType.GenType);\nBuiltinFunction._create(\"abs\", GenericType.GenIntType, GenericType.GenIntType);\nBuiltinFunction._create(\"sign\", GenericType.GenType, GenericType.GenType);\nBuiltinFunction._create(\"sign\", GenericType.GenIntType, GenericType.GenIntType);\nBuiltinFunction._create(\"floor\", GenericType.GenType, GenericType.GenType);\nBuiltinFunction._create(\"trunc\", GenericType.GenType, GenericType.GenType);\nBuiltinFunction._create(\"round\", GenericType.GenType, GenericType.GenType);\nBuiltinFunction._create(\"roundEven\", GenericType.GenType, GenericType.GenType);\nBuiltinFunction._create(\"ceil\", GenericType.GenType, GenericType.GenType);\nBuiltinFunction._create(\"fract\", GenericType.GenType, GenericType.GenType);\nBuiltinFunction._create(\"mod\", GenericType.GenType, GenericType.GenType, Keyword.FLOAT);\nBuiltinFunction._create(\"mod\", GenericType.GenType, GenericType.GenType, GenericType.GenType);\nBuiltinFunction._create(\"min\", GenericType.GenType, GenericType.GenType, GenericType.GenType);\nBuiltinFunction._create(\"min\", GenericType.GenType, GenericType.GenType, Keyword.FLOAT);\nBuiltinFunction._create(\"min\", GenericType.GenIntType, GenericType.GenIntType, GenericType.GenIntType);\nBuiltinFunction._create(\"min\", GenericType.GenIntType, GenericType.GenIntType, Keyword.INT);\nBuiltinFunction._create(\"min\", GenericType.GenUintType, GenericType.GenUintType, GenericType.GenUintType);\nBuiltinFunction._create(\"min\", GenericType.GenUintType, GenericType.GenUintType, Keyword.UINT);\nBuiltinFunction._create(\"max\", GenericType.GenType, GenericType.GenType, GenericType.GenType);\nBuiltinFunction._create(\"max\", GenericType.GenType, GenericType.GenType, Keyword.FLOAT);\nBuiltinFunction._create(\"max\", GenericType.GenIntType, GenericType.GenIntType, GenericType.GenIntType);\nBuiltinFunction._create(\"max\", GenericType.GenIntType, GenericType.GenIntType, Keyword.INT);\nBuiltinFunction._create(\"clamp\", GenericType.GenType, GenericType.GenType, GenericType.GenType, GenericType.GenType);\nBuiltinFunction._create(\"clamp\", GenericType.GenType, GenericType.GenType, Keyword.FLOAT, Keyword.FLOAT);\nBuiltinFunction._create(\n \"clamp\",\n GenericType.GenIntType,\n GenericType.GenIntType,\n GenericType.GenIntType,\n GenericType.GenIntType\n);\nBuiltinFunction._create(\"clamp\", GenericType.GenIntType, GenericType.GenIntType, Keyword.INT, Keyword.INT);\nBuiltinFunction._create(\n \"clamp\",\n GenericType.GenUintType,\n GenericType.GenUintType,\n GenericType.GenUintType,\n GenericType.GenUintType\n);\nBuiltinFunction._create(\"clamp\", GenericType.GenUintType, GenericType.GenUintType, Keyword.UINT, Keyword.UINT);\nBuiltinFunction._create(\"mix\", GenericType.GenType, GenericType.GenType, GenericType.GenType, GenericType.GenType);\nBuiltinFunction._create(\"mix\", GenericType.GenType, GenericType.GenType, GenericType.GenType, Keyword.FLOAT);\nBuiltinFunction._create(\"mix\", GenericType.GenType, GenericType.GenType, GenericType.GenType, GenericType.GenBoolType);\nBuiltinFunction._create(\"step\", GenericType.GenType, GenericType.GenType, GenericType.GenType);\nBuiltinFunction._create(\"step\", GenericType.GenType, Keyword.FLOAT, GenericType.GenType);\nBuiltinFunction._create(\n \"smoothstep\",\n GenericType.GenType,\n GenericType.GenType,\n GenericType.GenType,\n GenericType.GenType\n);\nBuiltinFunction._create(\"smoothstep\", GenericType.GenType, Keyword.FLOAT, Keyword.FLOAT, GenericType.GenType);\nBuiltinFunction._create(\"isnan\", GenericType.GenBoolType, GenericType.GenType);\nBuiltinFunction._create(\"isinf\", GenericType.GenBoolType, GenericType.GenType);\nBuiltinFunction._create(\"floatBitsToInt\", GenericType.GenType, GenericType.GenType);\nBuiltinFunction._create(\"floatBitsToUint\", GenericType.GenUintType, GenericType.GenType);\nBuiltinFunction._create(\"intBitsToFloat\", GenericType.GenType, GenericType.GenIntType);\nBuiltinFunction._create(\"uintBitsToFloat\", GenericType.GenType, GenericType.GenUintType);\n\nBuiltinFunction._create(\"packSnorm2x16\", Keyword.UINT, Keyword.VEC2);\nBuiltinFunction._create(\"unpackSnorm2x16\", Keyword.VEC2, Keyword.UINT);\nBuiltinFunction._create(\"packUnorm2x16\", Keyword.UINT, Keyword.VEC2);\nBuiltinFunction._create(\"unpackUnorm2x16\", Keyword.VEC2, Keyword.UINT);\nBuiltinFunction._create(\"packHalf2x16\", Keyword.UINT, Keyword.VEC2);\nBuiltinFunction._create(\"unpackHalf2x16\", Keyword.VEC2, Keyword.UINT);\n\nBuiltinFunction._create(\"length\", Keyword.FLOAT, GenericType.GenType);\nBuiltinFunction._create(\"distance\", Keyword.FLOAT, GenericType.GenType, GenericType.GenType);\nBuiltinFunction._create(\"dot\", Keyword.FLOAT, GenericType.GenType, GenericType.GenType);\nBuiltinFunction._create(\"cross\", Keyword.VEC3, Keyword.VEC3, Keyword.VEC3);\nBuiltinFunction._create(\"normalize\", GenericType.GenType, GenericType.GenType);\nBuiltinFunction._create(\n \"faceforward\",\n GenericType.GenType,\n GenericType.GenType,\n GenericType.GenType,\n GenericType.GenType\n);\nBuiltinFunction._create(\"reflect\", GenericType.GenType, GenericType.GenType, GenericType.GenType);\nBuiltinFunction._create(\"refract\", GenericType.GenType, GenericType.GenType, GenericType.GenType, Keyword.FLOAT);\nBuiltinFunction._create(\"matrixCompMult\", GenericType.Mat, GenericType.Mat, GenericType.Mat);\nBuiltinFunction._create(\"outerProduct\", Keyword.MAT2, Keyword.VEC2, Keyword.VEC2);\nBuiltinFunction._create(\"outerProduct\", Keyword.MAT3, Keyword.VEC3, Keyword.VEC3);\nBuiltinFunction._create(\"outerProduct\", Keyword.MAT4, Keyword.VEC4, Keyword.VEC4);\n\nBuiltinFunction._create(\"outerProduct\", Keyword.MAT2X3, Keyword.VEC3, Keyword.VEC2);\nBuiltinFunction._create(\"outerProduct\", Keyword.MAT3X2, Keyword.VEC2, Keyword.VEC3);\n\nBuiltinFunction._create(\"outerProduct\", Keyword.MAT2X4, Keyword.VEC4, Keyword.VEC2);\nBuiltinFunction._create(\"outerProduct\", Keyword.MAT4X2, Keyword.VEC2, Keyword.VEC4);\n\nBuiltinFunction._create(\"outerProduct\", Keyword.MAT3X4, Keyword.VEC4, Keyword.VEC3);\nBuiltinFunction._create(\"outerProduct\", Keyword.MAT4X3, Keyword.VEC3, Keyword.VEC4);\n\nBuiltinFunction._create(\"transpose\", Keyword.MAT2, Keyword.MAT2);\nBuiltinFunction._create(\"transpose\", Keyword.MAT3, Keyword.MAT3);\nBuiltinFunction._create(\"transpose\", Keyword.MAT4, Keyword.MAT4);\nBuiltinFunction._create(\"transpose\", Keyword.MAT2X3, Keyword.MAT3X2);\nBuiltinFunction._create(\"transpose\", Keyword.MAT3X2, Keyword.MAT2X3);\nBuiltinFunction._create(\"transpose\", Keyword.MAT4X2, Keyword.MAT2X4);\nBuiltinFunction._create(\"transpose\", Keyword.MAT2X4, Keyword.MAT4X2);\nBuiltinFunction._create(\"transpose\", Keyword.MAT3X4, Keyword.MAT4X3);\nBuiltinFunction._create(\"transpose\", Keyword.MAT4X3, Keyword.MAT3X4);\n\nBuiltinFunction._create(\"determinant\", Keyword.FLOAT, Keyword.MAT2);\nBuiltinFunction._create(\"determinant\", Keyword.FLOAT, Keyword.MAT3);\nBuiltinFunction._create(\"determinant\", Keyword.FLOAT, Keyword.MAT4);\n\nBuiltinFunction._create(\"inverse\", Keyword.MAT2, Keyword.MAT2);\nBuiltinFunction._create(\"inverse\", Keyword.MAT3, Keyword.MAT3);\nBuiltinFunction._create(\"inverse\", Keyword.MAT4, Keyword.MAT4);\n\nBuiltinFunction._create(\"lessThan\", GenericType.BoolVec, GenericType.Vec, GenericType.Vec);\nBuiltinFunction._create(\"lessThan\", GenericType.BoolVec, GenericType.IntVec, GenericType.IntVec);\nBuiltinFunction._create(\"lessThan\", GenericType.BoolVec, GenericType.UintVec, GenericType.UintVec);\n\nBuiltinFunction._create(\"lessThanEqual\", GenericType.BoolVec, GenericType.Vec, GenericType.Vec);\nBuiltinFunction._create(\"lessThanEqual\", GenericType.BoolVec, GenericType.IntVec, GenericType.IntVec);\nBuiltinFunction._create(\"lessThanEqual\", GenericType.BoolVec, GenericType.UintVec, GenericType.UintVec);\n\nBuiltinFunction._create(\"greaterThan\", GenericType.BoolVec, GenericType.Vec, GenericType.Vec);\nBuiltinFunction._create(\"greaterThan\", GenericType.BoolVec, GenericType.IntVec, GenericType.IntVec);\nBuiltinFunction._create(\"greaterThan\", GenericType.BoolVec, GenericType.UintVec, GenericType.UintVec);\n\nBuiltinFunction._create(\"greaterThanEqual\", GenericType.BoolVec, GenericType.Vec, GenericType.Vec);\nBuiltinFunction._create(\"greaterThanEqual\", GenericType.BoolVec, GenericType.IntVec, GenericType.IntVec);\nBuiltinFunction._create(\"greaterThanEqual\", GenericType.BoolVec, GenericType.UintVec, GenericType.UintVec);\n\nBuiltinFunction._create(\"equal\", GenericType.BoolVec, GenericType.Vec, GenericType.Vec);\nBuiltinFunction._create(\"equal\", GenericType.BoolVec, GenericType.IntVec, GenericType.IntVec);\nBuiltinFunction._create(\"equal\", GenericType.BoolVec, GenericType.UintVec, GenericType.UintVec);\nBuiltinFunction._create(\"equal\", GenericType.BoolVec, GenericType.BoolVec, GenericType.BoolVec);\n\nBuiltinFunction._create(\"notEqual\", GenericType.BoolVec, GenericType.Vec, GenericType.Vec);\nBuiltinFunction._create(\"notEqual\", GenericType.BoolVec, GenericType.IntVec, GenericType.IntVec);\nBuiltinFunction._create(\"notEqual\", GenericType.BoolVec, GenericType.UintVec, GenericType.UintVec);\nBuiltinFunction._create(\"notEqual\", GenericType.BoolVec, GenericType.BoolVec, GenericType.BoolVec);\n\nBuiltinFunction._create(\"any\", Keyword.BOOL, GenericType.BoolVec);\nBuiltinFunction._create(\"all\", Keyword.BOOL, GenericType.BoolVec);\nBuiltinFunction._create(\"not\", GenericType.BoolVec, GenericType.BoolVec);\n\nBuiltinFunction._create(\"textureSize\", Keyword.IVEC2, GenericType.GSampler2D, Keyword.INT);\nBuiltinFunction._create(\"textureSize\", Keyword.IVEC3, GenericType.GSampler3D, Keyword.INT);\nBuiltinFunction._create(\"textureSize\", Keyword.IVEC2, GenericType.GSamplerCube, Keyword.INT);\n\nBuiltinFunction._create(\"textureSize\", Keyword.IVEC2, Keyword.SAMPLER2D_SHADOW, Keyword.INT);\nBuiltinFunction._create(\"textureSize\", Keyword.IVEC2, Keyword.SAMPLER_CUBE_SHADOW, Keyword.INT);\n\nBuiltinFunction._create(\"textureSize\", Keyword.IVEC3, GenericType.GSampler2DArray, Keyword.INT);\nBuiltinFunction._create(\"textureSize\", Keyword.IVEC3, Keyword.SAMPLER2D_ARRAY_SHADOW, Keyword.INT);\n\nBuiltinFunction._create(\"texture2D\", GenericType.GVec4, GenericType.GSampler2D, Keyword.VEC2);\nBuiltinFunction._create(\"texture2D\", GenericType.GVec4, GenericType.GSampler2D, Keyword.VEC2, Keyword.FLOAT);\n\nBuiltinFunction._create(\"texture\", GenericType.GVec4, GenericType.GSampler2D, Keyword.VEC2, Keyword.FLOAT);\nBuiltinFunction._create(\"texture\", GenericType.GVec4, GenericType.GSampler2D, Keyword.VEC2);\nBuiltinFunction._create(\"texture\", GenericType.GVec4, GenericType.GSampler3D, Keyword.VEC3, Keyword.FLOAT);\nBuiltinFunction._create(\"texture\", GenericType.GVec4, GenericType.GSampler3D, Keyword.VEC3);\n\nBuiltinFunction._create(\"texture\", GenericType.GVec4, GenericType.GSamplerCube, Keyword.VEC3, Keyword.FLOAT);\nBuiltinFunction._create(\"texture\", GenericType.GVec4, GenericType.GSamplerCube, Keyword.VEC3);\n\nBuiltinFunction._create(\"texture\", Keyword.FLOAT, Keyword.SAMPLER2D_SHADOW, Keyword.VEC3, Keyword.FLOAT);\nBuiltinFunction._create(\"texture\", Keyword.FLOAT, Keyword.SAMPLER2D_SHADOW, Keyword.VEC3);\n\nBuiltinFunction._create(\"texture\", Keyword.FLOAT, Keyword.SAMPLER_CUBE_SHADOW, Keyword.VEC4, Keyword.FLOAT);\nBuiltinFunction._create(\"texture\", Keyword.FLOAT, Keyword.SAMPLER_CUBE_SHADOW, Keyword.VEC4);\n\nBuiltinFunction._create(\"texture\", GenericType.GVec4, Keyword.SAMPLER2D_ARRAY, Keyword.VEC3, Keyword.FLOAT);\nBuiltinFunction._create(\"texture\", GenericType.GVec4, Keyword.SAMPLER2D_ARRAY, Keyword.VEC3);\n\nBuiltinFunction._create(\"texture\", Keyword.FLOAT, Keyword.SAMPLER2D_ARRAY_SHADOW, Keyword.VEC4);\n\nBuiltinFunction._create(\"textureProj\", GenericType.GVec4, GenericType.GSampler2D, Keyword.VEC3, Keyword.FLOAT);\nBuiltinFunction._create(\"textureProj\", GenericType.GVec4, GenericType.GSampler2D, Keyword.VEC3);\nBuiltinFunction._create(\"textureProj\", GenericType.GVec4, GenericType.GSampler2D, Keyword.VEC4, Keyword.FLOAT);\nBuiltinFunction._create(\"textureProj\", GenericType.GVec4, GenericType.GSampler2D, Keyword.VEC4);\nBuiltinFunction._create(\"textureProj\", GenericType.GVec4, GenericType.GSampler3D, Keyword.VEC4, Keyword.FLOAT);\nBuiltinFunction._create(\"textureProj\", GenericType.GVec4, GenericType.GSampler3D, Keyword.VEC4);\n\nBuiltinFunction._create(\"textureProj\", Keyword.FLOAT, Keyword.SAMPLER2D_SHADOW, Keyword.VEC4, Keyword.FLOAT);\nBuiltinFunction._create(\"textureProj\", Keyword.FLOAT, Keyword.SAMPLER2D_SHADOW, Keyword.VEC4);\n\nBuiltinFunction._create(\"textureLod\", GenericType.GVec4, GenericType.GSampler2D, Keyword.VEC2, Keyword.FLOAT);\nBuiltinFunction._create(\"textureLod\", GenericType.GVec4, GenericType.GSampler3D, Keyword.VEC3, Keyword.FLOAT);\nBuiltinFunction._create(\"textureLod\", GenericType.GVec4, GenericType.GSamplerCube, Keyword.VEC3, Keyword.FLOAT);\nBuiltinFunction._create(\"textureLod\", Keyword.FLOAT, Keyword.SAMPLER2D_SHADOW, Keyword.VEC3, Keyword.FLOAT);\nBuiltinFunction._create(\"textureLod\", GenericType.GVec4, GenericType.GSampler2DArray, Keyword.VEC3, Keyword.FLOAT);\nBuiltinFunction._create(\"texture2DLod\", GenericType.GVec4, GenericType.GSampler2D, Keyword.VEC2, Keyword.FLOAT);\nBuiltinFunction._create(\"texture2DLodEXT\", GenericType.GVec4, GenericType.GSampler2D, Keyword.VEC2, Keyword.FLOAT);\nBuiltinFunction._create(\"texture2DLodEXT\", GenericType.GVec4, GenericType.GSampler3D, Keyword.VEC3, Keyword.FLOAT);\n\nBuiltinFunction._create(\"textureCube\", GenericType.GVec4, GenericType.GSamplerCube, Keyword.VEC3);\nBuiltinFunction._create(\"textureCube\", GenericType.GVec4, GenericType.GSamplerCube, Keyword.VEC3, Keyword.FLOAT);\nBuiltinFunction._create(\"textureCubeLod\", GenericType.GVec4, GenericType.GSamplerCube, Keyword.VEC3, Keyword.FLOAT);\nBuiltinFunction._create(\"textureCubeLodEXT\", GenericType.GVec4, GenericType.GSamplerCube, Keyword.VEC3, Keyword.FLOAT);\n\nBuiltinFunction._create(\n \"textureOffset\",\n GenericType.GVec4,\n GenericType.GSampler2D,\n Keyword.VEC2,\n Keyword.IVEC2,\n Keyword.FLOAT\n);\nBuiltinFunction._create(\"textureOffset\", GenericType.GVec4, GenericType.GSampler2D, Keyword.VEC2, Keyword.IVEC2);\n\nBuiltinFunction._create(\n \"textureOffset\",\n GenericType.GVec4,\n GenericType.GSampler3D,\n Keyword.VEC3,\n Keyword.IVEC3,\n Keyword.FLOAT\n);\nBuiltinFunction._create(\"textureOffset\", GenericType.GVec4, GenericType.GSampler3D, Keyword.VEC3, Keyword.IVEC3);\n\nBuiltinFunction._create(\n \"textureOffset\",\n Keyword.FLOAT,\n Keyword.SAMPLER2D_SHADOW,\n Keyword.VEC3,\n Keyword.IVEC2,\n Keyword.FLOAT\n);\nBuiltinFunction._create(\"textureOffset\", Keyword.FLOAT, Keyword.SAMPLER2D_SHADOW, Keyword.VEC3, Keyword.IVEC2);\nBuiltinFunction._create(\n \"textureOffset\",\n GenericType.GVec4,\n GenericType.GSampler2DArray,\n Keyword.VEC3,\n Keyword.IVEC2,\n Keyword.FLOAT\n);\nBuiltinFunction._create(\"textureOffset\", GenericType.GVec4, GenericType.GSampler2DArray, Keyword.VEC3, Keyword.IVEC2);\n\nBuiltinFunction._create(\"texelFetch\", GenericType.GVec4, GenericType.GSampler2D, Keyword.IVEC2, Keyword.INT);\nBuiltinFunction._create(\"texelFetch\", GenericType.GVec4, GenericType.GSampler3D, Keyword.IVEC3, Keyword.INT);\nBuiltinFunction._create(\"texelFetch\", GenericType.GVec4, GenericType.GSampler2DArray, Keyword.IVEC3, Keyword.INT);\n\nBuiltinFunction._create(\n \"texelFetchOffset\",\n GenericType.GVec4,\n GenericType.GSampler2D,\n Keyword.IVEC2,\n Keyword.INT,\n Keyword.IVEC2\n);\nBuiltinFunction._create(\n \"texelFetchOffset\",\n GenericType.GVec4,\n GenericType.GSampler3D,\n Keyword.IVEC3,\n Keyword.INT,\n Keyword.IVEC3\n);\nBuiltinFunction._create(\n \"texelFetchOffset\",\n GenericType.GVec4,\n GenericType.GSampler2DArray,\n Keyword.IVEC3,\n Keyword.INT,\n Keyword.IVEC2\n);\n\nBuiltinFunction._create(\n \"textureProjOffset\",\n GenericType.GVec4,\n GenericType.GSampler2D,\n Keyword.VEC3,\n Keyword.IVEC2,\n Keyword.FLOAT\n);\nBuiltinFunction._create(\"textureProjOffset\", GenericType.GVec4, GenericType.GSampler2D, Keyword.VEC3, Keyword.IVEC2);\n\nBuiltinFunction._create(\n \"textureProjOffset\",\n GenericType.GVec4,\n GenericType.GSampler2D,\n Keyword.VEC4,\n Keyword.IVEC2,\n Keyword.FLOAT\n);\nBuiltinFunction._create(\"textureProjOffset\", GenericType.GVec4, GenericType.GSampler2D, Keyword.VEC4, Keyword.IVEC2);\n\nBuiltinFunction._create(\n \"textureProjOffset\",\n GenericType.GVec4,\n GenericType.GSampler3D,\n Keyword.VEC4,\n Keyword.IVEC3,\n Keyword.FLOAT\n);\nBuiltinFunction._create(\"textureProjOffset\", GenericType.GVec4, GenericType.GSampler3D, Keyword.VEC4, Keyword.IVEC3);\n\nBuiltinFunction._create(\n \"textureProjOffset\",\n Keyword.FLOAT,\n Keyword.SAMPLER2D_SHADOW,\n Keyword.VEC4,\n Keyword.IVEC2,\n Keyword.FLOAT\n);\nBuiltinFunction._create(\"textureProjOffset\", Keyword.FLOAT, Keyword.SAMPLER2D_SHADOW, Keyword.VEC4, Keyword.IVEC2);\n\nBuiltinFunction._create(\n \"textureLodOffset\",\n GenericType.GVec4,\n GenericType.GSampler2D,\n Keyword.VEC2,\n Keyword.FLOAT,\n Keyword.IVEC2\n);\nBuiltinFunction._create(\n \"textureLodOffset\",\n GenericType.GVec4,\n GenericType.GSampler3D,\n Keyword.VEC3,\n Keyword.FLOAT,\n Keyword.IVEC3\n);\n\nBuiltinFunction._create(\n \"textureLodOffset\",\n Keyword.FLOAT,\n Keyword.SAMPLER2D_SHADOW,\n Keyword.VEC3,\n Keyword.FLOAT,\n Keyword.IVEC2\n);\nBuiltinFunction._create(\n \"textureLodOffset\",\n GenericType.GVec4,\n GenericType.GSampler2DArray,\n Keyword.VEC3,\n Keyword.FLOAT,\n Keyword.IVEC2\n);\n\nBuiltinFunction._create(\"textureProjLod\", GenericType.GVec4, GenericType.GSampler2D, Keyword.VEC3, Keyword.FLOAT);\nBuiltinFunction._create(\"textureProjLod\", GenericType.GVec4, GenericType.GSampler2D, Keyword.VEC4, Keyword.FLOAT);\nBuiltinFunction._create(\"textureProjLod\", GenericType.GVec4, GenericType.GSampler3D, Keyword.VEC4, Keyword.FLOAT);\nBuiltinFunction._create(\"textureProjLod\", Keyword.FLOAT, Keyword.SAMPLER2D_SHADOW, Keyword.VEC4, Keyword.FLOAT);\n\nBuiltinFunction._create(\n \"textureProjLodOffset\",\n GenericType.GVec4,\n GenericType.GSampler2D,\n Keyword.VEC3,\n Keyword.FLOAT,\n Keyword.IVEC2\n);\nBuiltinFunction._create(\n \"textureProjLodOffset\",\n GenericType.GVec4,\n GenericType.GSampler2D,\n Keyword.VEC4,\n Keyword.FLOAT,\n Keyword.IVEC2\n);\nBuiltinFunction._create(\n \"textureProjLodOffset\",\n GenericType.GVec4,\n GenericType.GSampler3D,\n Keyword.VEC4,\n Keyword.FLOAT,\n Keyword.IVEC3\n);\nBuiltinFunction._create(\n \"textureProjLodOffset\",\n Keyword.FLOAT,\n Keyword.SAMPLER2D_SHADOW,\n Keyword.VEC4,\n Keyword.FLOAT,\n Keyword.IVEC2\n);\n\nBuiltinFunction._create(\n \"textureGrad\",\n GenericType.GVec4,\n GenericType.GSampler2D,\n Keyword.VEC2,\n Keyword.VEC2,\n Keyword.VEC2\n);\nBuiltinFunction._create(\n \"textureGrad\",\n GenericType.GVec4,\n GenericType.GSampler3D,\n Keyword.VEC3,\n Keyword.VEC3,\n Keyword.VEC3\n);\nBuiltinFunction._create(\n \"textureGrad\",\n GenericType.GVec4,\n GenericType.GSamplerCube,\n Keyword.VEC3,\n Keyword.VEC3,\n Keyword.VEC3\n);\n\nBuiltinFunction._create(\n \"textureGrad\",\n Keyword.FLOAT,\n Keyword.SAMPLER2D_SHADOW,\n Keyword.VEC3,\n Keyword.VEC2,\n Keyword.VEC2\n);\nBuiltinFunction._create(\n \"textureGrad\",\n Keyword.FLOAT,\n Keyword.SAMPLER_CUBE_SHADOW,\n Keyword.VEC4,\n Keyword.VEC3,\n Keyword.VEC3\n);\n\nBuiltinFunction._create(\n \"textureGrad\",\n GenericType.GVec4,\n GenericType.GSampler2DArray,\n Keyword.VEC3,\n Keyword.VEC2,\n Keyword.VEC2\n);\nBuiltinFunction._create(\n \"textureGrad\",\n Keyword.FLOAT,\n Keyword.SAMPLER2D_ARRAY_SHADOW,\n Keyword.VEC4,\n Keyword.VEC2,\n Keyword.VEC2\n);\n\nBuiltinFunction._create(\n \"textureGradOffset\",\n GenericType.GVec4,\n GenericType.GSampler2D,\n Keyword.VEC2,\n Keyword.VEC2,\n Keyword.VEC2,\n Keyword.IVEC2\n);\nBuiltinFunction._create(\n \"textureGradOffset\",\n GenericType.GVec4,\n GenericType.GSampler3D,\n Keyword.VEC3,\n Keyword.VEC3,\n Keyword.VEC3,\n Keyword.IVEC3\n);\nBuiltinFunction._create(\n \"textureGradOffset\",\n Keyword.FLOAT,\n Keyword.SAMPLER2D_SHADOW,\n Keyword.VEC3,\n Keyword.VEC2,\n Keyword.VEC2,\n Keyword.IVEC2\n);\nBuiltinFunction._create(\n \"textureGradOffset\",\n GenericType.GVec4,\n GenericType.GSampler2DArray,\n Keyword.VEC3,\n Keyword.VEC2,\n Keyword.VEC2,\n Keyword.IVEC2\n);\nBuiltinFunction._create(\n \"textureGradOffset\",\n Keyword.FLOAT,\n Keyword.SAMPLER2D_ARRAY_SHADOW,\n Keyword.VEC3,\n Keyword.VEC2,\n Keyword.VEC2,\n Keyword.IVEC2\n);\n\nBuiltinFunction._create(\n \"textureProjGrad\",\n GenericType.GVec4,\n GenericType.GSampler2D,\n Keyword.VEC3,\n Keyword.VEC2,\n Keyword.VEC2\n);\nBuiltinFunction._create(\n \"textureProjGrad\",\n GenericType.GVec4,\n GenericType.GSampler2D,\n Keyword.VEC4,\n Keyword.VEC2,\n Keyword.VEC2\n);\nBuiltinFunction._create(\n \"textureProjGrad\",\n GenericType.GVec4,\n GenericType.GSampler3D,\n Keyword.VEC4,\n Keyword.VEC3,\n Keyword.VEC3\n);\nBuiltinFunction._create(\n \"textureProjGrad\",\n Keyword.FLOAT,\n Keyword.SAMPLER2D_SHADOW,\n Keyword.VEC4,\n Keyword.VEC2,\n Keyword.VEC2\n);\n\nBuiltinFunction._create(\n \"textureProjGradOffset\",\n GenericType.GVec4,\n GenericType.GSampler2D,\n Keyword.VEC3,\n Keyword.VEC2,\n Keyword.VEC2,\n Keyword.IVEC2\n);\nBuiltinFunction._create(\n \"textureProjGradOffset\",\n GenericType.GVec4,\n GenericType.GSampler2D,\n Keyword.VEC4,\n Keyword.VEC2,\n Keyword.VEC2,\n Keyword.IVEC2\n);\nBuiltinFunction._create(\n \"textureProjGradOffset\",\n GenericType.GVec4,\n GenericType.GSampler3D,\n Keyword.VEC4,\n Keyword.VEC3,\n Keyword.VEC3,\n Keyword.IVEC3\n);\nBuiltinFunction._create(\n \"textureProjGradOffset\",\n Keyword.FLOAT,\n Keyword.SAMPLER2D_SHADOW,\n Keyword.VEC4,\n Keyword.VEC2,\n Keyword.VEC2,\n Keyword.IVEC2\n);\nBuiltinFunction._createWithScope(\"dFdx\", GenericType.GenType, EShaderStage.FRAGMENT, GenericType.GenType);\nBuiltinFunction._createWithScope(\"dFdy\", GenericType.GenType, EShaderStage.FRAGMENT, GenericType.GenType);\nBuiltinFunction._createWithScope(\"fwidth\", GenericType.GenType, EShaderStage.FRAGMENT, GenericType.GenType);\n","import { GalaceanDataType } from \"../../common\";\nimport { Keyword } from \"../../common/enums/Keyword\";\nimport { EShaderStage } from \"../../common/enums/ShaderStage\";\n\nexport const BuiltinVariableTable: Map<string, BuiltinVariable> = new Map();\n\nexport class BuiltinVariable {\n type: GalaceanDataType;\n lexeme: string;\n scope: EShaderStage;\n\n private constructor(type: GalaceanDataType, lexeme: string, scope: EShaderStage) {\n this.type = type;\n this.lexeme = lexeme;\n this.scope = scope;\n }\n\n static createVariable(lexeme: string, type: GalaceanDataType, scope = EShaderStage.ALL) {\n const item = new BuiltinVariable(type, lexeme, scope);\n BuiltinVariableTable.set(lexeme, item);\n }\n\n static getVar(ident: string): BuiltinVariable {\n return BuiltinVariableTable.get(ident);\n }\n}\n\nBuiltinVariable.createVariable(\"gl_VertexID\", Keyword.INT, EShaderStage.VERTEX);\nBuiltinVariable.createVariable(\"gl_InstanceID\", Keyword.INT, EShaderStage.VERTEX);\nBuiltinVariable.createVariable(\"gl_Position\", Keyword.VEC4, EShaderStage.VERTEX);\nBuiltinVariable.createVariable(\"gl_PointSize\", Keyword.FLOAT, EShaderStage.VERTEX);\n\nBuiltinVariable.createVariable(\"gl_FragCoord\", Keyword.VEC4, EShaderStage.FRAGMENT);\nBuiltinVariable.createVariable(\"gl_FrontFacing\", Keyword.BOOL, EShaderStage.FRAGMENT);\nBuiltinVariable.createVariable(\"gl_FragDepth\", Keyword.FLOAT, EShaderStage.FRAGMENT);\nBuiltinVariable.createVariable(\"gl_PointCoord\", Keyword.VEC2, EShaderStage.FRAGMENT);\nBuiltinVariable.createVariable(\"gl_FragColor\", Keyword.VEC4, EShaderStage.FRAGMENT);\nBuiltinVariable.createVariable(\"gl_FragData\", Keyword.VEC4_ARRAY, EShaderStage.FRAGMENT);\n\nBuiltinVariable.createVariable(\"gl_MaxVertexAttribs\", Keyword.INT);\nBuiltinVariable.createVariable(\"gl_MaxVertexUniformVectors\", Keyword.INT);\nBuiltinVariable.createVariable(\"gl_MaxVertexOutputVectors\", Keyword.INT);\nBuiltinVariable.createVariable(\"gl_MaxFragmentInputVectors\", Keyword.INT);\nBuiltinVariable.createVariable(\"gl_MaxVertexTextureImageUnits\", Keyword.INT);\nBuiltinVariable.createVariable(\"gl_MaxCombinedTextureImageUnits\", Keyword.INT);\nBuiltinVariable.createVariable(\"gl_MaxTextureImageUnits\", Keyword.INT);\nBuiltinVariable.createVariable(\"gl_MaxFragmentUniformVectors\", Keyword.INT);\nBuiltinVariable.createVariable(\"gl_MaxDrawBuffers\", Keyword.INT);\nBuiltinVariable.createVariable(\"gl_MinProgramTexelOffset\", Keyword.INT);\nBuiltinVariable.createVariable(\"gl_MaxProgramTexelOffset\", Keyword.INT);\n","import { IBaseSymbol } from \"./IBaseSymbol\";\n\nexport class SymbolTable<T extends IBaseSymbol> {\n private _table: Map<string, T[]> = new Map();\n\n insert(symbol: T, isInMacroBranch = false): void {\n symbol.isInMacroBranch = isInMacroBranch;\n\n const entry = this._table.get(symbol.ident) ?? [];\n for (let i = 0, n = entry.length; i < n; i++) {\n if (entry[i].isInMacroBranch) continue;\n if (entry[i].equal(symbol)) {\n console.warn(\"Replace symbol:\", symbol.ident);\n entry[i] = symbol;\n return;\n }\n }\n\n entry.push(symbol);\n this._table.set(symbol.ident, entry);\n }\n\n getSymbol(symbol: T, includeMacro = false): T | undefined {\n const entry = this._table.get(symbol.ident);\n if (entry) {\n for (let i = entry.length - 1; i >= 0; i--) {\n const item = entry[i];\n if (!includeMacro && item.isInMacroBranch) continue;\n if (item.equal(symbol)) return item;\n }\n }\n }\n\n getSymbols(symbol: T, includeMacro = false, out: T[]): T[] {\n out.length = 0;\n this._getSymbols(symbol, includeMacro, out);\n\n return out;\n }\n\n /**\n * @internal\n */\n _getSymbols(symbol: T, includeMacro = false, out: T[]): T[] {\n const entry = this._table.get(symbol.ident);\n\n if (entry) {\n for (let i = entry.length - 1; i >= 0; i--) {\n const item = entry[i];\n if (!includeMacro && item.isInMacroBranch) continue;\n if (item.equal(symbol)) out.push(item);\n }\n }\n\n return out;\n }\n\n /** Iterate every registered symbol. Order within a name bucket is insertion order. */\n forEach(callback: (symbol: T) => void): void {\n for (const entries of this._table.values()) {\n for (let i = 0, n = entries.length; i < n; i++) {\n callback(entries[i]);\n }\n }\n }\n}\n","import { IBaseSymbol } from \"./IBaseSymbol\";\nimport { SymbolTable } from \"./SymbolTable\";\n\nexport class SymbolTableStack<S extends IBaseSymbol, T extends SymbolTable<S>> {\n stack: T[] = [];\n\n /**\n * @internal\n */\n _macroLevel = 0;\n\n get scope(): T {\n return this.stack[this.stack.length - 1];\n }\n\n get isInMacroBranch(): boolean {\n return this._macroLevel > 0;\n }\n\n pushScope(scope: T): void {\n this.stack.push(scope);\n }\n\n clear(): void {\n this.stack.length = 0;\n }\n\n popScope(): T | undefined {\n return this.stack.pop();\n }\n\n insert(symbol: S): void {\n this.scope.insert(symbol, this.isInMacroBranch);\n }\n\n lookup(symbol: S, includeMacro = false): S | undefined {\n for (let i = this.stack.length - 1; i >= 0; i--) {\n const symbolTable = this.stack[i];\n const result = symbolTable.getSymbol(symbol, includeMacro);\n if (result) return result;\n }\n return undefined;\n }\n\n lookupAll(symbol: S, includeMacro = false, out: S[]): S[] {\n out.length = 0;\n for (let i = this.stack.length - 1; i >= 0; i--) {\n const symbolTable = this.stack[i];\n symbolTable._getSymbols(symbol, includeMacro, out);\n }\n return out;\n }\n}\n","import { GalaceanDataType } from \"../../common\";\nimport { ASTNode } from \"../AST\";\n\nexport class SymbolDataType {\n constructor(\n public type: GalaceanDataType,\n public typeLexeme: string,\n public arraySpecifier?: ASTNode.ArraySpecifier\n ) {}\n}\n","import { IBaseSymbol } from \"../../common/IBaseSymbol\";\nimport { GalaceanDataType, TypeAny } from \"../../common/types\";\nimport { ASTNode } from \"../AST\";\nimport { SymbolDataType } from \"./SymbolDataType\";\n\nexport enum ESymbolType {\n VAR,\n FN,\n STRUCT,\n Any\n}\n\nexport type SymbolAstNode =\n | ASTNode.Initializer\n | ASTNode.StructSpecifier\n | ASTNode.FunctionDefinition\n | ASTNode.ParameterDeclarator\n | ASTNode.InitDeclaratorList\n | ASTNode.VariableDeclaration;\n\nexport class SymbolInfo implements IBaseSymbol {\n constructor(\n public ident: string,\n public type: ESymbolType,\n public astNode?: SymbolAstNode,\n public dataType?: SymbolDataType,\n public paramSignature?: GalaceanDataType[],\n public isInMacroBranch = false\n ) {}\n\n set(\n ident: string,\n symbolType: ESymbolType,\n astNode?: SymbolAstNode,\n dataType?: SymbolDataType,\n paramSignature?: GalaceanDataType[]\n ) {\n this.ident = ident;\n this.type = symbolType;\n this.astNode = astNode;\n this.dataType = dataType;\n this.paramSignature = paramSignature;\n }\n\n equal(symbol: SymbolInfo): boolean {\n if (symbol.type !== ESymbolType.Any && this.type !== symbol.type) return false;\n if (this.type === ESymbolType.FN) {\n if (!symbol.astNode && !symbol.paramSignature) return true;\n\n const params = (<ASTNode.FunctionDefinition>this.astNode).protoType.paramSig;\n const comparedParams = symbol.paramSignature ?? (<ASTNode.FunctionDefinition>symbol.astNode).protoType.paramSig;\n const length = params?.length;\n if (length !== comparedParams?.length) return false;\n for (let i = 0; i < length; i++) {\n const t1 = params[i],\n t2 = comparedParams[i];\n if (t1 === TypeAny || t2 === TypeAny) continue;\n if (t1 !== t2) return false;\n }\n return true;\n }\n return true;\n }\n}\n","import { ASTNode } from \"../AST\";\nimport { SymbolDataType } from \"./SymbolDataType\";\nimport { ESymbolType, SymbolInfo } from \"./SymbolInfo\";\n\nexport class FnSymbol extends SymbolInfo {\n declare astNode: ASTNode.FunctionDefinition;\n\n constructor(lexeme: string, astNode: ASTNode.FunctionDefinition) {\n const type = new SymbolDataType(\n astNode.protoType.returnType.type,\n astNode.protoType.returnType.typeSpecifier.lexeme\n );\n super(lexeme, ESymbolType.FN, astNode, type);\n }\n}\n","import { ASTNode } from \"../AST\";\nimport { ESymbolType, SymbolInfo } from \"./SymbolInfo\";\n\nexport class StructSymbol extends SymbolInfo {\n declare astNode: ASTNode.StructSpecifier;\n\n constructor(lexeme: string, astNode: ASTNode.StructSpecifier) {\n super(lexeme, ESymbolType.STRUCT, astNode);\n }\n}\n","import { ASTNode } from \"../AST\";\nimport { SymbolDataType } from \"./SymbolDataType\";\nimport { ESymbolType, SymbolInfo } from \"./SymbolInfo\";\n\nexport class VarSymbol extends SymbolInfo {\n declare astNode:\n | ASTNode.Initializer\n | ASTNode.ParameterDeclarator\n | ASTNode.InitDeclaratorList\n | ASTNode.VariableDeclaration;\n\n readonly isGlobalVariable: boolean;\n\n constructor(\n ident: string,\n dataType: SymbolDataType,\n isGlobalVariable: boolean,\n initAst:\n | ASTNode.Initializer\n | ASTNode.ParameterDeclarator\n | ASTNode.InitDeclaratorList\n | ASTNode.VariableDeclaration\n ) {\n super(ident, ESymbolType.VAR, initAst, dataType);\n this.isGlobalVariable = isGlobalVariable;\n }\n}\n","import { SymbolInfo, SymbolTable } from \"../parser/symbolTable\";\nimport { ASTNode } from \"./AST\";\n\nexport class ShaderData {\n symbolTable: SymbolTable<SymbolInfo>;\n\n vertexMain: ASTNode.FunctionDefinition;\n fragmentMain: ASTNode.FunctionDefinition;\n\n globalPrecisions: ASTNode.PrecisionSpecifier[] = [];\n\n globalMacroDeclarations: ASTNode.GlobalDeclaration[] = [];\n\n getOuterGlobalMacroDeclarations(): ASTNode.GlobalDeclaration[] {\n return this.globalMacroDeclarations.filter((node) => node.parent instanceof ASTNode.GLShaderProgram);\n }\n}\n","import { ShaderRange } from \"../common\";\nimport { SymbolTable } from \"../common/SymbolTable\";\nimport { SymbolTableStack } from \"../common/SymbolTableStack\";\nimport { GSError, GSErrorName } from \"../GSError\";\nimport { SymbolInfo } from \"../parser/symbolTable\";\nimport { ShaderCompiler } from \"../ShaderCompiler\";\nimport { ASTNode, TreeNode } from \"./AST\";\nimport { ShaderData } from \"./ShaderInfo\";\nimport { NodeChild } from \"./types\";\n\nimport { MacroDefineList } from \"../Preprocessor\";\n\nexport type TranslationRule<T = any> = (sa: SemanticAnalyzer, ...tokens: NodeChild[]) => T;\n\n/**\n * @internal\n * The semantic analyzer of `ShaderCompiler` compiler.\n * - Build symbol table\n * - Static analysis\n */\nexport default class SemanticAnalyzer {\n /**\n * @internal\n */\n static _lookupSymbol: SymbolInfo = new SymbolInfo(\"\", null);\n\n semanticStack: TreeNode[] = [];\n acceptRule?: TranslationRule = undefined;\n symbolTableStack: SymbolTableStack<SymbolInfo, SymbolTable<SymbolInfo>> = new SymbolTableStack();\n curFunctionInfo: {\n header?: ASTNode.FunctionDeclarator;\n returnStatement?: ASTNode.JumpStatement;\n } = {};\n private _shaderData = new ShaderData();\n private _translationRuleTable: Map<number /** production id */, TranslationRule> = new Map();\n\n private _macroDefineList: MacroDefineList;\n\n // #if _VERBOSE\n readonly errors: Error[] = [];\n // #endif\n\n get shaderData() {\n return this._shaderData;\n }\n\n get macroDefineList(): MacroDefineList {\n return this._macroDefineList;\n }\n\n constructor() {\n this.pushScope();\n }\n\n reset(macroDefineList: MacroDefineList) {\n this._macroDefineList = macroDefineList;\n this.semanticStack.length = 0;\n this._shaderData = new ShaderData();\n this.symbolTableStack.clear();\n this.pushScope();\n // #if _VERBOSE\n this.errors.length = 0;\n // #endif\n }\n\n pushScope() {\n this.symbolTableStack.pushScope(new SymbolTable<SymbolInfo>());\n }\n\n popScope() {\n return this.symbolTableStack.popScope();\n }\n\n addTranslationRule(pid: number, rule: TranslationRule) {\n this._translationRuleTable.set(pid, rule);\n }\n\n getTranslationRule(pid: number) {\n return this._translationRuleTable.get(pid);\n }\n\n reportError(loc: ShaderRange, message: string): void {\n // #if _VERBOSE\n this.errors.push(new GSError(GSErrorName.CompilationError, message, loc, ShaderCompiler._processingPassText));\n // #else\n console.error(message);\n // #endif\n }\n\n reportWarning(loc: ShaderRange, message: string): void {\n console.warn(new GSError(GSErrorName.CompilationWarn, message, loc, ShaderCompiler._processingPassText).toString());\n }\n}\n","import { GalaceanDataType } from \"../common\";\nimport { BaseToken } from \"../common/BaseToken\";\nimport { ASTNode, TreeNode } from \"./AST\";\nimport { NoneTerminal } from \"./GrammarSymbol\";\n\nexport type TraceStackItem = NoneTerminal | BaseToken;\n\nexport class SymbolType {\n constructor(\n public type: GalaceanDataType,\n public typeLexeme: string,\n public arraySpecifier?: ASTNode.ArraySpecifier\n ) {}\n}\n\nexport class StructProp implements IParamInfo {\n constructor(\n public typeInfo: SymbolType,\n public ident: BaseToken,\n public mrtIndex?: number,\n public isInMacroBranch = false\n ) {}\n}\n\nexport type NodeChild = TreeNode | BaseToken;\n\nexport type IParamInfo = {\n ident?: BaseToken;\n typeInfo?: SymbolType;\n astNode?: ASTNode.ParameterDeclaration | ASTNode.MacroParamBlock;\n};\n","import { ClearableObjectPool, type IPoolElement } from \"@galacean/engine-core\";\nimport { CodeGenVisitor } from \"../codeGen\";\nimport { ETokenType, GalaceanDataType, ShaderRange, TokenType, TypeAny } from \"../common\";\nimport { BaseToken } from \"../common/BaseToken\";\nimport { Keyword } from \"../common/enums/Keyword\";\nimport { ParserUtils } from \"../ParserUtils\";\nimport { Lexer } from \"../lexer/Lexer\";\nimport { MacroDefineInfo } from \"../Preprocessor\";\nimport { ShaderCompilerUtils } from \"../ShaderCompilerUtils\";\nimport { BuiltinFunction, BuiltinVariable, NonGenericGalaceanType } from \"./builtin\";\nimport { NoneTerminal } from \"./GrammarSymbol\";\nimport SemanticAnalyzer from \"./SemanticAnalyzer\";\nimport { ShaderData } from \"./ShaderInfo\";\nimport { ESymbolType, FnSymbol, StructSymbol, VarSymbol } from \"./symbolTable\";\nimport { IParamInfo, NodeChild, StructProp, SymbolType } from \"./types\";\n\nfunction ASTNodeDecorator(nonTerminal: NoneTerminal) {\n return function <T extends { new (): TreeNode }>(ASTNode: T) {\n ASTNode.prototype.nt = nonTerminal;\n (<any>ASTNode).pool = ShaderCompilerUtils.createObjectPool(ASTNode);\n };\n}\n\nexport abstract class TreeNode implements IPoolElement {\n static pool: ClearableObjectPool<TreeNode & { set: (loc: ShaderRange, children: NodeChild[]) => void }>;\n\n /** The non-terminal in grammar. */\n nt: NoneTerminal;\n private _children: NodeChild[];\n private _parent: TreeNode;\n private _location: ShaderRange;\n private _codeCache: string;\n\n /**\n * Parent pointer for AST traversal.\n * @remarks\n * The parent pointer is only reliable after the entire AST has been constructed.\n * DO NOT rely on `parent` during the `semanticAnalyze` phase, as the AST may still be under construction.\n * It is safe to use `parent` during code generation or any phase after AST construction.\n */\n get parent(): TreeNode {\n return this._parent;\n }\n\n get children() {\n return this._children;\n }\n\n get location() {\n return this._location;\n }\n\n set(loc: ShaderRange, children: NodeChild[]): void {\n this._location = loc;\n this._children = children;\n for (const child of children) {\n if (child instanceof TreeNode) {\n child._parent = this;\n }\n }\n\n this.init();\n }\n\n init() {}\n\n dispose(): void {}\n\n setCache(code: string): string {\n this._codeCache = code;\n return code;\n }\n\n getCache(): string {\n return this._codeCache;\n }\n\n // Visitor pattern interface for code generation\n codeGen(visitor: CodeGenVisitor) {\n const code = visitor.defaultCodeGen(this.children);\n this.setCache(code);\n return code;\n }\n\n /**\n * Do semantic analyze right after the ast node is generated.\n */\n semanticAnalyze(sa: SemanticAnalyzer) {}\n}\n\nexport namespace ASTNode {\n type MacroExpression =\n | MacroPushContext\n | MacroPopContext\n | MacroElseExpression\n | MacroElifExpression\n | MacroUndef\n | MacroDefine\n | BaseToken;\n\n export type ASTNodePool = ClearableObjectPool<\n { set: (loc: ShaderRange, children: NodeChild[]) => void } & IPoolElement & TreeNode\n >;\n\n export function _unwrapToken(node: NodeChild) {\n if (node instanceof BaseToken) {\n return node;\n }\n throw \"not token\";\n }\n\n export function get(pool: ASTNodePool, sa: SemanticAnalyzer, loc: ShaderRange, children: NodeChild[]) {\n const node = pool.get();\n node.set(loc, children);\n node.semanticAnalyze(sa);\n sa.semanticStack.push(node);\n }\n\n @ASTNodeDecorator(NoneTerminal._ignore)\n export class TrivialNode extends TreeNode {}\n\n @ASTNodeDecorator(NoneTerminal.scope_brace)\n export class ScopeBrace extends TreeNode {\n override semanticAnalyze(sa: SemanticAnalyzer): void {\n sa.pushScope();\n }\n }\n\n @ASTNodeDecorator(NoneTerminal.scope_end_brace)\n export class ScopeEndBrace extends TreeNode {\n override semanticAnalyze(sa: SemanticAnalyzer): void {\n sa.popScope();\n }\n }\n\n @ASTNodeDecorator(NoneTerminal.jump_statement)\n export class JumpStatement extends TreeNode {\n isFragReturnStatement: boolean;\n\n override init(): void {\n this.isFragReturnStatement = false;\n }\n\n override semanticAnalyze(sa: SemanticAnalyzer): void {\n if (ASTNode._unwrapToken(this.children![0]).type === Keyword.RETURN) {\n sa.curFunctionInfo.returnStatement = this;\n }\n }\n\n override codeGen(visitor: CodeGenVisitor): string {\n return this.setCache(visitor.visitJumpStatement(this));\n }\n }\n\n // #if _VERBOSE\n @ASTNodeDecorator(NoneTerminal.conditionopt)\n export class ConditionOpt extends TreeNode {}\n\n @ASTNodeDecorator(NoneTerminal.for_rest_statement)\n export class ForRestStatement extends TreeNode {}\n\n @ASTNodeDecorator(NoneTerminal.condition)\n export class Condition extends TreeNode {}\n\n @ASTNodeDecorator(NoneTerminal.for_init_statement)\n export class ForInitStatement extends TreeNode {}\n\n @ASTNodeDecorator(NoneTerminal.iteration_statement)\n export class IterationStatement extends TreeNode {}\n\n @ASTNodeDecorator(NoneTerminal.selection_statement)\n export class SelectionStatement extends TreeNode {}\n\n @ASTNodeDecorator(NoneTerminal.expression_statement)\n export class ExpressionStatement extends TreeNode {}\n // #endif\n\n export abstract class ExpressionAstNode extends TreeNode {\n protected _type?: GalaceanDataType;\n set type(t: GalaceanDataType | undefined) {\n this._type = t;\n }\n get type() {\n return this._type ?? TypeAny;\n }\n\n override init(): void {\n this._type = undefined;\n }\n }\n\n // #if _VERBOSE\n @ASTNodeDecorator(NoneTerminal.initializer_list)\n export class InitializerList extends ExpressionAstNode {\n override semanticAnalyze(sa: SemanticAnalyzer): void {\n const init = this.children[0] as Initializer | InitializerList;\n this.type = init.type;\n }\n }\n\n @ASTNodeDecorator(NoneTerminal.initializer)\n export class Initializer extends ExpressionAstNode {\n override semanticAnalyze(sa: SemanticAnalyzer): void {\n if (this.children.length === 1) {\n this.type = (<AssignmentExpression>this.children[0]).type;\n } else {\n this.type = (<InitializerList>this.children[1]).type;\n }\n }\n }\n // #endif\n\n @ASTNodeDecorator(NoneTerminal.single_declaration)\n export class SingleDeclaration extends TreeNode {\n typeSpecifier: TypeSpecifier;\n arraySpecifier?: ArraySpecifier;\n\n override init(): void {\n this.typeSpecifier = undefined;\n this.arraySpecifier = undefined;\n }\n\n override semanticAnalyze(sa: SemanticAnalyzer): void {\n const children = this.children;\n const childrenLen = children.length;\n const fullyType = children[0] as FullySpecifiedType;\n const typeSpecifier = fullyType.typeSpecifier;\n this.typeSpecifier = typeSpecifier;\n this.arraySpecifier = typeSpecifier.arraySpecifier;\n\n const id = children[1] as BaseToken;\n\n let sm: VarSymbol;\n if (childrenLen === 2 || childrenLen === 4) {\n const symbolType = new SymbolType(fullyType.type, typeSpecifier.lexeme, this.arraySpecifier);\n const initializer = children[3] as Initializer;\n\n sm = new VarSymbol(id.lexeme, symbolType, false, initializer);\n } else {\n const arraySpecifier = children[2] as ArraySpecifier;\n // #if _VERBOSE\n if (arraySpecifier && this.arraySpecifier) {\n sa.reportError(arraySpecifier.location, \"Array of array is not supported.\");\n }\n // #endif\n this.arraySpecifier = arraySpecifier;\n const symbolType = new SymbolType(fullyType.type, typeSpecifier.lexeme, this.arraySpecifier);\n const initializer = children[4] as Initializer;\n\n sm = new VarSymbol(id.lexeme, symbolType, false, initializer);\n }\n sa.symbolTableStack.insert(sm);\n }\n\n override codeGen(visitor: CodeGenVisitor): string {\n return this.setCache(visitor.visitSingleDeclaration(this));\n }\n }\n\n @ASTNodeDecorator(NoneTerminal.fully_specified_type)\n export class FullySpecifiedType extends TreeNode {\n typeSpecifier: TypeSpecifier;\n type: GalaceanDataType;\n\n override semanticAnalyze(_: SemanticAnalyzer): void {\n const children = this.children;\n this.typeSpecifier = (children.length === 1 ? children[0] : children[1]) as TypeSpecifier;\n this.type = this.typeSpecifier.type;\n }\n }\n\n @ASTNodeDecorator(NoneTerminal.type_qualifier)\n export class TypeQualifier extends TreeNode {}\n\n @ASTNodeDecorator(NoneTerminal.single_type_qualifier)\n export class SingleTypeQualifier extends TreeNode {\n qualifier: Keyword;\n lexeme: string;\n\n override semanticAnalyze(sa: SemanticAnalyzer): void {\n const child = this.children[0];\n if (child instanceof BaseToken) {\n this.qualifier = child.type as Keyword;\n this.lexeme = child.lexeme;\n } else {\n this.qualifier = (<BasicTypeQualifier>child).qualifier;\n this.lexeme = (<BasicTypeQualifier>child).lexeme;\n }\n }\n }\n\n abstract class BasicTypeQualifier extends TreeNode {\n qualifier: Keyword;\n lexeme: string;\n\n override semanticAnalyze(sa: SemanticAnalyzer): void {\n const token = this.children[0] as BaseToken;\n this.qualifier = token.type as Keyword;\n this.lexeme = token.lexeme;\n }\n }\n\n // #if _VERBOSE\n @ASTNodeDecorator(NoneTerminal.storage_qualifier)\n export class StorageQualifier extends BasicTypeQualifier {}\n\n @ASTNodeDecorator(NoneTerminal.precision_qualifier)\n export class PrecisionQualifier extends BasicTypeQualifier {}\n\n @ASTNodeDecorator(NoneTerminal.interpolation_qualifier)\n export class InterpolationQualifier extends BasicTypeQualifier {}\n\n @ASTNodeDecorator(NoneTerminal.invariant_qualifier)\n export class InvariantQualifier extends BasicTypeQualifier {}\n // #endif\n\n @ASTNodeDecorator(NoneTerminal.type_specifier)\n export class TypeSpecifier extends TreeNode {\n type: GalaceanDataType;\n lexeme: string;\n arraySize?: number;\n isCustom: boolean;\n\n override init(): void {\n this.arraySize = undefined;\n }\n get arraySpecifier(): ArraySpecifier {\n return this.children[1] as ArraySpecifier;\n }\n\n override semanticAnalyze(sa: SemanticAnalyzer): void {\n const children = this.children;\n const firstChild = children[0] as TypeSpecifierNonArray;\n this.type = firstChild.type;\n this.lexeme = firstChild.lexeme;\n this.arraySize = (children?.[1] as ArraySpecifier)?.size;\n this.isCustom = typeof this.type === \"string\";\n }\n }\n\n @ASTNodeDecorator(NoneTerminal.array_specifier)\n export class ArraySpecifier extends TreeNode {\n size: number | undefined;\n override semanticAnalyze(sa: SemanticAnalyzer): void {\n const integerConstantExpr = this.children[1] as IntegerConstantExpression;\n this.size = integerConstantExpr.value;\n }\n }\n\n @ASTNodeDecorator(NoneTerminal.integer_constant_expression_operator)\n export class IntegerConstantExpressionOperator extends TreeNode {\n compute: (a: number, b: number) => number;\n lexeme: string;\n\n override semanticAnalyze(sa: SemanticAnalyzer): void {\n const operator = this.children[0] as BaseToken;\n this.lexeme = operator.lexeme;\n switch (operator.type) {\n case ETokenType.PLUS:\n this.compute = (a, b) => a + b;\n break;\n case ETokenType.DASH:\n this.compute = (a, b) => a - b;\n break;\n case ETokenType.STAR:\n this.compute = (a, b) => a * b;\n break;\n case ETokenType.SLASH:\n this.compute = (a, b) => a / b;\n break;\n case ETokenType.PERCENT:\n this.compute = (a, b) => a % b;\n break;\n default:\n sa.reportError(operator.location, `not implemented operator ${operator.lexeme}`);\n }\n }\n }\n\n @ASTNodeDecorator(NoneTerminal.integer_constant_expression)\n export class IntegerConstantExpression extends TreeNode {\n value?: number;\n\n override init(): void {\n this.value = undefined;\n }\n\n override semanticAnalyze(sa: SemanticAnalyzer): void {\n if (this.children.length === 1) {\n const child = this.children[0];\n if (child instanceof BaseToken) {\n this.value = Number(child.lexeme);\n }\n // #if _VERBOSE\n else {\n const id = child as VariableIdentifier;\n if (!ParserUtils.typeCompatible(Keyword.INT, id.typeInfo)) {\n sa.reportError(id.location, \"Invalid integer.\");\n return;\n }\n }\n // #endif\n }\n }\n }\n\n @ASTNodeDecorator(NoneTerminal.type_specifier_nonarray)\n export class TypeSpecifierNonArray extends TreeNode {\n type: GalaceanDataType;\n lexeme: string;\n\n override init(): void {\n const tt = this.children[0];\n if (tt instanceof BaseToken) {\n // ID — user-defined struct identifier; the lexeme is the type name.\n this.type = tt.lexeme;\n this.lexeme = tt.lexeme;\n } else if (tt instanceof MacroCallSymbol) {\n // Macro-as-type-alias — value resolved at variant codegen, type is `TypeAny` here.\n this.type = TypeAny;\n this.lexeme = tt.macroName;\n } else {\n this.type = (tt as ExtBuiltinTypeSpecifierNonArray).type as GalaceanDataType;\n this.lexeme = (tt as ExtBuiltinTypeSpecifierNonArray).lexeme;\n }\n }\n }\n\n @ASTNodeDecorator(NoneTerminal.ext_builtin_type_specifier_nonarray)\n export class ExtBuiltinTypeSpecifierNonArray extends TreeNode {\n type: TokenType;\n lexeme: string;\n\n override init(): void {\n const token = this.children[0] as BaseToken;\n this.type = token.type;\n this.lexeme = token.lexeme;\n }\n }\n\n @ASTNodeDecorator(NoneTerminal.init_declarator_list)\n export class InitDeclaratorList extends TreeNode {\n typeInfo: SymbolType;\n\n override semanticAnalyze(sa: SemanticAnalyzer): void {\n let sm: VarSymbol;\n const children = this.children;\n const childrenLength = children.length;\n if (childrenLength === 1) {\n const { typeSpecifier, arraySpecifier } = children[0] as SingleDeclaration;\n this.typeInfo = new SymbolType(typeSpecifier.type, typeSpecifier.lexeme, arraySpecifier);\n } else {\n const initDeclList = children[0] as InitDeclaratorList;\n this.typeInfo = initDeclList.typeInfo;\n }\n\n if (childrenLength === 3 || childrenLength === 5) {\n const id = children[2] as BaseToken;\n sm = new VarSymbol(id.lexeme, this.typeInfo, false, this);\n sa.symbolTableStack.insert(sm);\n } else if (childrenLength === 4 || childrenLength === 6) {\n const typeInfo = this.typeInfo;\n const arraySpecifier = this.children[3] as ArraySpecifier;\n // #if _VERBOSE\n if (typeInfo.arraySpecifier && arraySpecifier) {\n sa.reportError(arraySpecifier.location, \"Array of array is not supported.\");\n }\n // #endif\n typeInfo.arraySpecifier = arraySpecifier;\n const id = children[2] as BaseToken;\n sm = new VarSymbol(id.lexeme, typeInfo, false, this);\n sa.symbolTableStack.insert(sm);\n }\n }\n }\n\n @ASTNodeDecorator(NoneTerminal.identifier_list)\n export class IdentifierList extends TreeNode {\n idList: BaseToken[] = [];\n\n override init(): void {\n this.idList.length = 0;\n }\n\n override semanticAnalyze(sa: SemanticAnalyzer): void {\n const { children, idList: curIdList } = this;\n if (children.length === 2) {\n curIdList.push(children[1] as BaseToken);\n } else {\n const list = children[0] as IdentifierList;\n const id = children[2] as BaseToken;\n const listIdLength = list.idList.length;\n curIdList.length = listIdLength + 1;\n\n for (let i = 0; i < listIdLength; i++) {\n curIdList[i] = list.idList[i];\n }\n curIdList[listIdLength] = id;\n }\n }\n }\n\n @ASTNodeDecorator(NoneTerminal.declaration)\n export class Declaration extends TreeNode {\n override codeGen(visitor: CodeGenVisitor): string {\n return this.setCache(visitor.visitDeclaration(this));\n }\n }\n\n @ASTNodeDecorator(NoneTerminal.function_prototype)\n export class FunctionProtoType extends TreeNode {\n ident: BaseToken;\n returnType: FullySpecifiedType;\n parameterList: IParamInfo[];\n paramSig: GalaceanDataType[] | undefined;\n\n override semanticAnalyze(sa: SemanticAnalyzer): void {\n const declarator = this.children[0] as FunctionDeclarator;\n this.ident = declarator.ident;\n this.returnType = declarator.returnType;\n this.parameterList = declarator.parameterInfoList;\n this.paramSig = declarator.paramSig;\n }\n }\n\n @ASTNodeDecorator(NoneTerminal.function_declarator)\n export class FunctionDeclarator extends TreeNode {\n ident: BaseToken;\n returnType: FullySpecifiedType;\n parameterInfoList: IParamInfo[] | undefined;\n paramSig: GalaceanDataType[] | undefined;\n\n override semanticAnalyze(sa: SemanticAnalyzer): void {\n sa.curFunctionInfo.returnStatement = null;\n sa.curFunctionInfo.header = this;\n\n const children = this.children;\n const header = children[0] as FunctionHeader;\n const parameterList = children[1] as FunctionParameterList | undefined;\n this.ident = header.ident;\n this.returnType = header.returnType;\n this.parameterInfoList = parameterList?.parameterInfoList;\n this.paramSig = parameterList?.paramSig;\n }\n }\n\n @ASTNodeDecorator(NoneTerminal.function_header)\n export class FunctionHeader extends TreeNode {\n ident: BaseToken;\n returnType: FullySpecifiedType;\n\n override semanticAnalyze(sa: SemanticAnalyzer): void {\n sa.pushScope();\n const children = this.children;\n this.ident = children[1] as BaseToken;\n this.returnType = children[0] as FullySpecifiedType;\n }\n\n override codeGen(visitor: CodeGenVisitor): string {\n return this.setCache(visitor.visitFunctionHeader(this));\n }\n }\n\n @ASTNodeDecorator(NoneTerminal.function_parameter_list)\n export class FunctionParameterList extends TreeNode {\n parameterInfoList: IParamInfo[] = [];\n paramSig: GalaceanDataType[] = [];\n\n override init(): void {\n this.parameterInfoList.length = 0;\n this.paramSig.length = 0;\n }\n\n override semanticAnalyze(sa: SemanticAnalyzer): void {\n const children = this.children;\n const { parameterInfoList, paramSig } = this;\n\n if (children[0] instanceof ParameterDeclaration) {\n const decl = children[0];\n parameterInfoList.push({ ident: decl.ident, typeInfo: decl.typeInfo, astNode: decl });\n paramSig.push(decl.typeInfo?.type ?? TypeAny);\n } else if (children[2] instanceof ParameterDeclaration) {\n const list = children[0] as FunctionParameterList;\n const decl = children[2];\n\n parameterInfoList.push(...list.parameterInfoList, {\n ident: decl.ident,\n typeInfo: decl.typeInfo,\n astNode: decl\n });\n paramSig.push(...list.paramSig, decl.typeInfo?.type ?? TypeAny);\n } else if (children[0] instanceof FunctionParameterList && children[1] instanceof MacroParamBlock) {\n parameterInfoList.push(...children[0].parameterInfoList, { astNode: children[1] });\n paramSig.push(...children[0].paramSig, TypeAny);\n } else if (children[0] instanceof MacroParamBlock) {\n parameterInfoList.push({ astNode: children[0] });\n paramSig.push(TypeAny);\n }\n }\n\n override codeGen(visitor: CodeGenVisitor): string {\n return this.setCache(visitor.visitFunctionParameterList(this));\n }\n }\n\n @ASTNodeDecorator(NoneTerminal.macro_param_case_list)\n export class MacroParamCaseList extends TreeNode {}\n\n @ASTNodeDecorator(NoneTerminal.macro_param_block)\n export class MacroParamBlock extends TreeNode {}\n\n @ASTNodeDecorator(NoneTerminal.macro_parameter_branch)\n export class MacroParameterBranch extends TreeNode {}\n\n @ASTNodeDecorator(NoneTerminal.parameter_declaration)\n export class ParameterDeclaration extends TreeNode {\n // Some syntax is not recognized, eg.\n // `#define TEXTURE2D_SHADOW_PARAM(shadowMap) mediump sampler2D shadowMap`\n typeInfo?: SymbolType;\n ident?: BaseToken;\n\n override init(): void {\n this.typeInfo = undefined;\n this.ident = undefined;\n }\n\n override semanticAnalyze(sa: SemanticAnalyzer): void {\n const children = this.children;\n let parameterDeclarator: ParameterDeclarator | undefined;\n\n if (children[0] instanceof ParameterDeclarator) {\n parameterDeclarator = children[0];\n } else if (children[1] instanceof ParameterDeclarator) {\n parameterDeclarator = children[1];\n }\n\n if (parameterDeclarator) {\n this.typeInfo = parameterDeclarator.typeInfo;\n this.ident = parameterDeclarator.ident;\n const varSymbol = new VarSymbol(\n parameterDeclarator.ident.lexeme,\n parameterDeclarator.typeInfo,\n false,\n parameterDeclarator\n );\n sa.symbolTableStack.insert(varSymbol);\n }\n }\n }\n\n @ASTNodeDecorator(NoneTerminal.parameter_declarator)\n export class ParameterDeclarator extends TreeNode {\n ident: BaseToken;\n typeInfo: SymbolType;\n\n override semanticAnalyze(sa: SemanticAnalyzer): void {\n const children = this.children;\n this.ident = children[1] as BaseToken;\n const typeSpecifier = children[0] as TypeSpecifier;\n const arraySpecifier = children[2] as ArraySpecifier;\n this.typeInfo = new SymbolType(typeSpecifier.type, typeSpecifier.lexeme, arraySpecifier);\n }\n }\n\n // #if _VERBOSE\n @ASTNodeDecorator(NoneTerminal.simple_statement)\n export class SimpleStatement extends TreeNode {}\n\n @ASTNodeDecorator(NoneTerminal.compound_statement)\n export class CompoundStatement extends TreeNode {}\n // #endif\n\n @ASTNodeDecorator(NoneTerminal.compound_statement_no_scope)\n export class CompoundStatementNoScope extends TreeNode {}\n\n // #if _VERBOSE\n @ASTNodeDecorator(NoneTerminal.statement)\n export class Statement extends TreeNode {}\n // #endif\n\n @ASTNodeDecorator(NoneTerminal.statement_list)\n export class StatementList extends TreeNode {\n override codeGen(visitor: CodeGenVisitor): string {\n return this.setCache(visitor.visitStatementList(this));\n }\n }\n\n @ASTNodeDecorator(NoneTerminal.function_definition)\n export class FunctionDefinition extends TreeNode {\n returnStatement?: ASTNode.JumpStatement;\n protoType: FunctionProtoType;\n statements: CompoundStatementNoScope;\n isInMacroBranch: boolean;\n\n override init(): void {\n this.returnStatement = undefined;\n }\n\n override semanticAnalyze(sa: SemanticAnalyzer): void {\n const children = this.children;\n this.protoType = children[0] as FunctionProtoType;\n this.statements = children[1] as CompoundStatementNoScope;\n\n sa.popScope();\n const sm = new FnSymbol(this.protoType.ident.lexeme, this);\n sa.symbolTableStack.insert(sm);\n this.isInMacroBranch = sa.symbolTableStack.isInMacroBranch;\n\n const { curFunctionInfo } = sa;\n const { header, returnStatement } = curFunctionInfo;\n if (header.returnType.type === Keyword.VOID) {\n if (returnStatement) {\n sa.reportError(header.returnType.location, \"Return in void function.\");\n }\n } else {\n if (!returnStatement) {\n sa.reportError(header.returnType.location, `No return statement found.`);\n } else {\n this.returnStatement = returnStatement;\n }\n }\n curFunctionInfo.header = undefined;\n curFunctionInfo.returnStatement = undefined;\n }\n\n override codeGen(visitor: CodeGenVisitor): string {\n return this.setCache(visitor.visitFunctionDefinition(this));\n }\n }\n\n @ASTNodeDecorator(NoneTerminal.function_call)\n export class FunctionCall extends ExpressionAstNode {\n override semanticAnalyze(sa: SemanticAnalyzer): void {\n this.type = (this.children[0] as FunctionCallGeneric).type;\n }\n\n override codeGen(visitor: CodeGenVisitor): string {\n return this.setCache(visitor.visitFunctionCall(this));\n }\n }\n\n @ASTNodeDecorator(NoneTerminal.function_call_generic)\n export class FunctionCallGeneric extends ExpressionAstNode {\n fnSymbol: FnSymbol | StructSymbol | undefined;\n\n override init(): void {\n super.init();\n this.fnSymbol = undefined;\n }\n\n override semanticAnalyze(sa: SemanticAnalyzer): void {\n const functionIdentifier = this.children[0] as FunctionIdentifier;\n if (functionIdentifier.isBuiltin) {\n this.type = functionIdentifier.ident;\n } else {\n const fnIdent = <string>functionIdentifier.ident;\n\n let paramSig: NonGenericGalaceanType[] | undefined;\n if (this.children.length === 4) {\n const paramList = this.children[2];\n if (paramList instanceof FunctionCallParameterList) {\n paramSig = paramList.paramSig as any;\n }\n }\n // #if _VERBOSE\n const builtinFn = BuiltinFunction.resolveOverload(fnIdent, paramSig);\n if (builtinFn) {\n this.type = builtinFn.realReturnType;\n return;\n }\n // #endif\n\n const lookupSymbol = SemanticAnalyzer._lookupSymbol;\n lookupSymbol.set(fnIdent, ESymbolType.FN, undefined, undefined, paramSig);\n\n const fnSymbol = sa.symbolTableStack.lookup(lookupSymbol, true) as FnSymbol;\n\n if (!fnSymbol) {\n // #if _VERBOSE\n sa.reportError(this.location, `No overload function type found: ${functionIdentifier.ident}`);\n // #endif\n return;\n }\n this.type = fnSymbol?.dataType?.type;\n this.fnSymbol = fnSymbol;\n }\n }\n }\n\n @ASTNodeDecorator(NoneTerminal.function_call_parameter_list)\n export class FunctionCallParameterList extends TreeNode {\n paramSig: GalaceanDataType[] = [];\n paramNodes: Array<AssignmentExpression | MacroCallArgBlock> = [];\n\n override init(): void {\n this.paramSig.length = 0;\n this.paramNodes.length = 0;\n }\n\n override semanticAnalyze(sa: SemanticAnalyzer): void {\n const { children, paramSig, paramNodes } = this;\n if (children[0] instanceof AssignmentExpression) {\n const expr = children[0];\n paramSig.push(expr.type);\n paramNodes.push(expr);\n } else if (children[2] instanceof AssignmentExpression) {\n const list = children[0] as FunctionCallParameterList;\n const decl = children[2] as AssignmentExpression;\n paramSig.push(...list.paramSig, decl.type);\n paramNodes.push(...list.paramNodes, decl);\n } else if (children[0] instanceof FunctionCallParameterList && children[1] instanceof MacroCallArgBlock) {\n paramSig.push(...children[0].paramSig, TypeAny);\n paramNodes.push(...children[0].paramNodes, children[1]);\n } else if (children[0] instanceof MacroCallArgBlock) {\n paramSig.push(TypeAny);\n paramNodes.push(children[0]);\n }\n }\n }\n\n @ASTNodeDecorator(NoneTerminal.macro_call_arg_case_list)\n export class MacroCallArgCaseList extends TreeNode {}\n @ASTNodeDecorator(NoneTerminal.macro_call_arg_block)\n export class MacroCallArgBlock extends TreeNode {}\n @ASTNodeDecorator(NoneTerminal.macro_call_arg_branch)\n export class MacroCallArgBranch extends TreeNode {}\n\n @ASTNodeDecorator(NoneTerminal.precision_specifier)\n export class PrecisionSpecifier extends TreeNode {\n override semanticAnalyze(sa: SemanticAnalyzer): void {\n if (!sa.symbolTableStack.isInMacroBranch) {\n sa.shaderData.globalPrecisions.push(this);\n }\n }\n }\n\n @ASTNodeDecorator(NoneTerminal.function_identifier)\n export class FunctionIdentifier extends TreeNode {\n ident: GalaceanDataType;\n lexeme: string;\n isBuiltin: boolean;\n\n override semanticAnalyze(sa: SemanticAnalyzer): void {\n const typeSpecifier = this.children[0] as TypeSpecifier;\n\n this.ident = typeSpecifier.type;\n this.lexeme = typeSpecifier.lexeme;\n this.isBuiltin = typeof this.ident !== \"string\";\n }\n\n override codeGen(visitor: CodeGenVisitor): string {\n return this.setCache(visitor.visitFunctionIdentifier(this));\n }\n }\n\n @ASTNodeDecorator(NoneTerminal.assignment_expression)\n export class AssignmentExpression extends ExpressionAstNode {\n override semanticAnalyze(sa: SemanticAnalyzer): void {\n if (this.children.length === 1) {\n const expr = this.children[0] as ConditionalExpression;\n this.type = expr.type ?? TypeAny;\n } else {\n const expr = this.children[2] as AssignmentExpression;\n this.type = expr.type ?? TypeAny;\n }\n }\n }\n\n // #if _VERBOSE\n @ASTNodeDecorator(NoneTerminal.assignment_operator)\n export class AssignmentOperator extends TreeNode {}\n // #endif\n\n @ASTNodeDecorator(NoneTerminal.expression)\n export class Expression extends ExpressionAstNode {\n override semanticAnalyze(sa: SemanticAnalyzer): void {\n if (this.children.length === 1) {\n const expr = this.children[0] as AssignmentExpression;\n this.type = expr.type;\n } else {\n const expr = this.children[2] as AssignmentExpression;\n this.type = expr.type;\n }\n }\n }\n\n @ASTNodeDecorator(NoneTerminal.primary_expression)\n export class PrimaryExpression extends ExpressionAstNode {\n override semanticAnalyze(sa: SemanticAnalyzer): void {\n if (this.children.length === 1) {\n const id = this.children[0];\n if (id instanceof VariableIdentifier) {\n this.type = id.typeInfo ?? TypeAny;\n } else {\n switch ((<BaseToken>id).type) {\n case ETokenType.INT_CONSTANT:\n this._type = Keyword.INT;\n break;\n case ETokenType.FLOAT_CONSTANT:\n this.type = Keyword.FLOAT;\n break;\n case Keyword.True:\n case Keyword.False:\n this.type = Keyword.BOOL;\n break;\n }\n }\n } else {\n const expression = this.children[1] as Expression;\n this.type = expression.type;\n }\n }\n }\n\n @ASTNodeDecorator(NoneTerminal.postfix_expression)\n export class PostfixExpression extends ExpressionAstNode {\n override init(): void {\n super.init();\n if (this.children.length === 1) {\n const child = this.children[0] as PrimaryExpression | FunctionCall;\n this.type = child.type;\n }\n }\n\n override codeGen(visitor: CodeGenVisitor): string {\n return this.setCache(visitor.visitPostfixExpression(this));\n }\n }\n\n // #if _VERBOSE\n @ASTNodeDecorator(NoneTerminal.unary_operator)\n export class UnaryOperator extends TreeNode {}\n\n @ASTNodeDecorator(NoneTerminal.unary_expression)\n export class UnaryExpression extends ExpressionAstNode {\n override init(): void {\n this.type = (this.children[0] as PostfixExpression).type;\n }\n }\n\n @ASTNodeDecorator(NoneTerminal.multiplicative_expression)\n export class MultiplicativeExpression extends ExpressionAstNode {\n override init(): void {\n super.init();\n if (this.children.length === 1) {\n this.type = (this.children[0] as UnaryExpression).type;\n // TODO: Temporarily remove type deduce due to generic function type issue.\n // } else {\n // const exp1 = this.children[0] as MultiplicativeExpression;\n // const exp2 = this.children[2] as UnaryExpression;\n // if (exp1.type === exp2.type) {\n // this.type = exp1.type;\n // }\n }\n }\n }\n\n @ASTNodeDecorator(NoneTerminal.additive_expression)\n export class AdditiveExpression extends ExpressionAstNode {\n override init(): void {\n super.init();\n if (this.children.length === 1) {\n this.type = (this.children[0] as MultiplicativeExpression).type;\n // TODO: Temporarily remove type deduce due to generic function type issue.\n // } else {\n // const exp1 = this.children[0] as AdditiveExpression;\n // const exp2 = this.children[2] as MultiplicativeExpression;\n // if (exp1.type === exp2.type) {\n // this.type = exp1.type;\n // }\n }\n }\n }\n\n @ASTNodeDecorator(NoneTerminal.shift_expression)\n export class ShiftExpression extends ExpressionAstNode {\n override semanticAnalyze(sa: SemanticAnalyzer): void {\n const expr = this.children[0] as ExpressionAstNode;\n this.type = expr.type;\n }\n }\n\n @ASTNodeDecorator(NoneTerminal.relational_expression)\n export class RelationalExpression extends ExpressionAstNode {\n override semanticAnalyze(sa: SemanticAnalyzer): void {\n if (this.children.length === 1) {\n this.type = (<ShiftExpression>this.children[0]).type;\n } else {\n this.type = Keyword.BOOL;\n }\n }\n }\n\n @ASTNodeDecorator(NoneTerminal.equality_expression)\n export class EqualityExpression extends ExpressionAstNode {\n override semanticAnalyze(sa: SemanticAnalyzer): void {\n if (this.children.length === 1) {\n this.type = (<RelationalExpression>this.children[0]).type;\n } else {\n this.type = Keyword.BOOL;\n }\n }\n }\n\n @ASTNodeDecorator(NoneTerminal.and_expression)\n export class AndExpression extends ExpressionAstNode {\n override semanticAnalyze(sa: SemanticAnalyzer): void {\n if (this.children.length === 1) {\n this.type = (<AndExpression>this.children[0]).type;\n } else {\n this.type = Keyword.UINT;\n }\n }\n }\n\n @ASTNodeDecorator(NoneTerminal.exclusive_or_expression)\n export class ExclusiveOrExpression extends ExpressionAstNode {\n override semanticAnalyze(sa: SemanticAnalyzer): void {\n if (this.children.length === 1) {\n this.type = (<AndExpression>this.children[0]).type;\n } else {\n this.type = Keyword.UINT;\n }\n }\n }\n\n @ASTNodeDecorator(NoneTerminal.inclusive_or_expression)\n export class InclusiveOrExpression extends ExpressionAstNode {\n override semanticAnalyze(sa: SemanticAnalyzer): void {\n if (this.children.length === 1) {\n this.type = (<ExclusiveOrExpression>this.children[0]).type;\n } else {\n this.type = Keyword.UINT;\n }\n }\n }\n\n @ASTNodeDecorator(NoneTerminal.logical_and_expression)\n export class LogicalAndExpression extends ExpressionAstNode {\n override semanticAnalyze(sa: SemanticAnalyzer): void {\n if (this.children.length === 1) {\n this.type = (<InclusiveOrExpression>this.children[0]).type;\n } else {\n this.type = Keyword.BOOL;\n }\n }\n }\n\n @ASTNodeDecorator(NoneTerminal.logical_xor_expression)\n export class LogicalXorExpression extends ExpressionAstNode {\n override semanticAnalyze(sa: SemanticAnalyzer): void {\n if (this.children.length === 1) {\n this.type = (<LogicalAndExpression>this.children[0]).type;\n } else {\n this.type = Keyword.BOOL;\n }\n }\n }\n\n @ASTNodeDecorator(NoneTerminal.logical_or_expression)\n export class LogicalOrExpression extends ExpressionAstNode {\n override semanticAnalyze(sa: SemanticAnalyzer): void {\n if (this.children.length === 1) {\n this.type = (<LogicalXorExpression>this.children[0]).type;\n } else {\n this.type = Keyword.BOOL;\n }\n }\n }\n\n @ASTNodeDecorator(NoneTerminal.conditional_expression)\n export class ConditionalExpression extends ExpressionAstNode {\n override semanticAnalyze(sa: SemanticAnalyzer): void {\n if (this.children.length === 1) {\n this.type = (<LogicalOrExpression>this.children[0]).type;\n }\n }\n }\n // #endif\n\n @ASTNodeDecorator(NoneTerminal.struct_specifier)\n export class StructSpecifier extends TreeNode {\n ident?: BaseToken;\n propList: StructProp[];\n macroExpressions: MacroExpression[];\n isInMacroBranch: boolean;\n\n override init(): void {\n this.ident = undefined;\n }\n\n override semanticAnalyze(sa: SemanticAnalyzer): void {\n const children = this.children;\n this.isInMacroBranch = sa.symbolTableStack.isInMacroBranch;\n if (children.length === 6) {\n this.ident = children[1] as BaseToken;\n sa.symbolTableStack.insert(new StructSymbol(this.ident.lexeme, this));\n\n this.propList = (children[3] as StructDeclarationList).propList;\n this.macroExpressions = (children[3] as StructDeclarationList).macroExpressions;\n } else {\n this.propList = (children[2] as StructDeclarationList).propList;\n this.macroExpressions = (children[2] as StructDeclarationList).macroExpressions;\n }\n }\n\n override codeGen(visitor: CodeGenVisitor) {\n return this.setCache(visitor.visitStructSpecifier(this));\n }\n }\n\n @ASTNodeDecorator(NoneTerminal.struct_declaration_list)\n export class StructDeclarationList extends TreeNode {\n propList: StructProp[] = [];\n macroExpressions: MacroExpression[] = [];\n\n override init(): void {\n this.propList.length = 0;\n this.macroExpressions.length = 0;\n }\n\n override semanticAnalyze(sa: SemanticAnalyzer): void {\n const { children, propList, macroExpressions } = this;\n\n if (children.length === 1) {\n propList.push(...(children[0] as StructDeclaration).props);\n macroExpressions.push(...(children[0] as StructDeclaration).macroExpressions);\n } else {\n propList.push(...(children[0] as StructDeclarationList).propList);\n propList.push(...(children[1] as StructDeclaration).props);\n macroExpressions.push(...(children[0] as StructDeclarationList).macroExpressions);\n macroExpressions.push(...(children[1] as StructDeclaration).macroExpressions);\n }\n }\n }\n\n @ASTNodeDecorator(NoneTerminal.struct_declaration)\n export class StructDeclaration extends TreeNode {\n props: StructProp[] = [];\n macroExpressions: MacroExpression[] = [];\n\n private _typeSpecifier?: TypeSpecifier;\n private _declaratorList?: StructDeclaratorList;\n\n override init(): void {\n this._typeSpecifier = undefined;\n this._declaratorList = undefined;\n this.props.length = 0;\n this.macroExpressions.length = 0;\n }\n\n override semanticAnalyze(sa: SemanticAnalyzer): void {\n const { children, props, macroExpressions } = this;\n\n if (children.length === 1) {\n const macroStructDeclaration = children[0] as MacroStructDeclaration;\n const macroProps = macroStructDeclaration.props;\n\n for (let i = 0, length = macroProps.length; i < length; i++) {\n macroProps[i].isInMacroBranch = true;\n props.push(macroProps[i]);\n }\n\n macroExpressions.push(...macroStructDeclaration.macroExpressions);\n\n return;\n }\n\n if (children.length === 3) {\n this._typeSpecifier = children[0] as TypeSpecifier;\n this._declaratorList = children[1] as StructDeclaratorList;\n } else {\n this._typeSpecifier = children[1] as TypeSpecifier;\n this._declaratorList = children[2] as StructDeclaratorList;\n }\n\n const firstChild = children[0];\n const { type, lexeme } = this._typeSpecifier;\n const isInMacroBranch = sa.symbolTableStack.isInMacroBranch;\n if (firstChild instanceof LayoutQualifier) {\n const declarator = children[2] as StructDeclarator;\n const typeInfo = new SymbolType(type, lexeme);\n const prop = new StructProp(typeInfo, declarator.ident, firstChild.index, isInMacroBranch);\n props.push(prop);\n } else {\n const declaratorList = this._declaratorList.declaratorList;\n const declaratorListLength = declaratorList.length;\n props.length = declaratorListLength;\n for (let i = 0; i < declaratorListLength; i++) {\n const declarator = declaratorList[i];\n const typeInfo = new SymbolType(type, lexeme, declarator.arraySpecifier);\n const prop = new StructProp(typeInfo, declarator.ident, undefined, isInMacroBranch);\n props[i] = prop;\n }\n }\n }\n }\n\n @ASTNodeDecorator(NoneTerminal.macro_struct_declaration)\n export class MacroStructDeclaration extends TreeNode {\n props: StructProp[] = [];\n macroExpressions: MacroExpression[] = [];\n\n override init(): void {\n this.props.length = 0;\n this.macroExpressions.length = 0;\n }\n\n override semanticAnalyze(): void {\n const children = this.children;\n\n this.macroExpressions.push(children[0] as MacroPushContext);\n\n if (children.length === 3) {\n this.props.push(...(children[1] as StructDeclarationList).propList);\n this.props.push(...(children[2] as MacroStructBranch).props);\n this.macroExpressions.push(...(children[1] as StructDeclarationList).macroExpressions);\n this.macroExpressions.push(...(children[2] as MacroStructBranch).macroExpressions);\n } else {\n this.props.push(...(children[1] as MacroStructBranch).props);\n this.macroExpressions.push(...(children[1] as MacroStructBranch).macroExpressions);\n }\n }\n }\n\n @ASTNodeDecorator(NoneTerminal.macro_struct_branch)\n export class MacroStructBranch extends TreeNode {\n props: StructProp[] = [];\n macroExpressions: MacroExpression[] = [];\n\n override init(): void {\n this.props.length = 0;\n this.macroExpressions.length = 0;\n }\n\n override semanticAnalyze(): void {\n const children = this.children;\n const lastNode = children[children.length - 1];\n\n this.macroExpressions.push(children[0] as MacroPopContext | MacroElseExpression | MacroElifExpression);\n\n if (children[1] instanceof StructDeclarationList) {\n this.props.push(...children[1].propList);\n this.macroExpressions.push(...children[1].macroExpressions);\n }\n\n if (lastNode instanceof MacroStructBranch) {\n this.props.push(...lastNode.props);\n this.macroExpressions.push(...lastNode.macroExpressions);\n }\n\n if (children.length > 1 && lastNode instanceof MacroPopContext) {\n this.macroExpressions.push(lastNode);\n }\n }\n }\n\n @ASTNodeDecorator(NoneTerminal.layout_qualifier)\n export class LayoutQualifier extends TreeNode {\n index: number;\n\n override semanticAnalyze(sa: SemanticAnalyzer): void {\n this.index = Number((<BaseToken>this.children[4]).lexeme);\n }\n }\n\n @ASTNodeDecorator(NoneTerminal.struct_declarator_list)\n export class StructDeclaratorList extends TreeNode {\n declaratorList: StructDeclarator[] = [];\n\n override init(): void {\n this.declaratorList.length = 0;\n }\n\n override semanticAnalyze(sa: SemanticAnalyzer): void {\n const { children, declaratorList } = this;\n if (children.length === 1) {\n declaratorList.push(children[0] as StructDeclarator);\n } else {\n const list = children[0] as StructDeclaratorList;\n const declarator = children[1] as StructDeclarator;\n const listLength = list.declaratorList.length;\n declaratorList.length = listLength + 1;\n for (let i = 0; i < listLength; i++) {\n declaratorList[i] = list.declaratorList[i];\n }\n declaratorList[listLength] = declarator;\n }\n }\n }\n\n @ASTNodeDecorator(NoneTerminal.struct_declarator)\n export class StructDeclarator extends TreeNode {\n ident: BaseToken;\n arraySpecifier: ArraySpecifier | undefined;\n\n override init(): void {\n this.arraySpecifier = undefined;\n }\n\n override semanticAnalyze(sa: SemanticAnalyzer): void {\n const children = this.children;\n this.ident = children[0] as BaseToken;\n this.arraySpecifier = children[1] as ArraySpecifier;\n }\n }\n\n @ASTNodeDecorator(NoneTerminal.variable_declaration)\n export class VariableDeclaration extends TreeNode {\n type: FullySpecifiedType;\n isStatic: boolean;\n\n override init(): void {\n this.isStatic = false;\n }\n\n override semanticAnalyze(sa: SemanticAnalyzer): void {\n const children = this.children;\n const type = children[0] as FullySpecifiedType;\n const ident = children[1] as BaseToken;\n this.type = type;\n const sm = new VarSymbol(ident.lexeme, new SymbolType(type.type, type.typeSpecifier.lexeme), true, this);\n\n sa.symbolTableStack.insert(sm);\n\n if (children.length === 4) {\n this.isStatic = true;\n }\n }\n\n override codeGen(visitor: CodeGenVisitor): string {\n if (this.isStatic) {\n return super.codeGen(visitor);\n } else {\n return this.setCache(visitor.visitGlobalVariableDeclaration(this));\n }\n }\n }\n\n @ASTNodeDecorator(NoneTerminal.variable_declaration_list)\n export class VariableDeclarationList extends TreeNode {\n type: FullySpecifiedType;\n variableDeclarations: VariableDeclaration[] = [];\n\n override init(): void {\n this.variableDeclarations.length = 0;\n }\n\n override semanticAnalyze(sa: SemanticAnalyzer): void {\n const { children } = this;\n const length = children.length;\n const child = children[0] as VariableDeclaration | VariableDeclarationList;\n const type = child.type;\n this.type = type;\n\n if (child instanceof VariableDeclaration) {\n this.variableDeclarations.push(child);\n } else {\n this.variableDeclarations.push(...child.variableDeclarations);\n\n const ident = children[2] as BaseToken;\n\n const newVariable = VariableDeclaration.pool.get() as VariableDeclaration;\n if (length === 3) {\n // variable_declaration_list ',' id\n newVariable.set(ident.location, [type, ident]);\n } else {\n // variable_declaration_list ',' id array_specifier\n newVariable.set(ident.location, [type, ident, children[3] as ArraySpecifier]);\n }\n newVariable.semanticAnalyze(sa);\n this.variableDeclarations.push(newVariable);\n }\n }\n }\n\n @ASTNodeDecorator(NoneTerminal.variable_identifier)\n export class VariableIdentifier extends TreeNode {\n // @todo: typeInfo may be multiple types\n typeInfo: GalaceanDataType;\n referenceGlobalSymbolNames: string[] = [];\n\n private _symbols: Array<VarSymbol | FnSymbol> = [];\n\n override init(): void {\n this.typeInfo = TypeAny;\n this.referenceGlobalSymbolNames.length = 0;\n this._symbols.length = 0;\n }\n\n override semanticAnalyze(sa: SemanticAnalyzer): void {\n const child = this.children[0] as BaseToken | MacroCallSymbol | MacroCallFunction;\n const referenceGlobalSymbolNames = this.referenceGlobalSymbolNames;\n const symbols = this._symbols;\n const lookupSymbol = SemanticAnalyzer._lookupSymbol;\n let needFindNames: string[];\n\n // FXAA-style cross-arm shadowing: same name is a macro in one\n // preprocessor arm and a variable in the mutually-exclusive arm.\n // At a MACRO_CALL use site, also probe the macro name itself so\n // the sibling-arm declaration is marked as referenced and codegen\n // keeps it. Grammar half of the fix is in 87cb2b5f0.\n let macroNameAsVarLookup: string | null = null;\n\n if (child instanceof BaseToken) {\n needFindNames = [child.lexeme];\n } else {\n const callSymbol = child as MacroCallSymbol | MacroCallFunction;\n needFindNames = callSymbol.referenceSymbolNames;\n const macroName = callSymbol.macroName;\n if (macroName && needFindNames.indexOf(macroName) === -1) {\n needFindNames = needFindNames.concat(macroName);\n macroNameAsVarLookup = macroName;\n }\n }\n\n for (let i = 0; i < needFindNames.length; i++) {\n const name = needFindNames[i];\n\n // `macroDefineList` short-circuit; bypass for the macro name itself\n // so cross-arm shadowing can resolve the sibling-arm declaration.\n if (sa.macroDefineList[name] && name !== macroNameAsVarLookup) {\n continue;\n }\n\n // only `macro_call` CFG can reference fnSymbols, others fnSymbols are referenced in `function_call_generic` CFG\n if (!(child instanceof BaseToken) && BuiltinFunction.isExist(name)) {\n continue;\n }\n\n const builtinVar = BuiltinVariable.getVar(name);\n if (builtinVar) {\n this.typeInfo = builtinVar.type;\n continue;\n }\n\n lookupSymbol.set(name, ESymbolType.Any);\n sa.symbolTableStack.lookupAll(lookupSymbol, true, symbols);\n\n if (!symbols.length) {\n // #if _VERBOSE\n sa.reportWarning(this.location, `Please sure the identifier \"${name}\" will be declared before used.`);\n // #endif\n } else {\n // Expression-style macros have their own value AST; its real type isn't\n // the type of any single `referenceSymbolNames` entry (`v` in `v.v_uv`\n // is a `Varyings` struct but the macro call site's type should be the\n // member type). Skip type inference for those and keep TypeAny.\n if (child instanceof BaseToken || !child.hasAstValue) {\n this.typeInfo = symbols[0].dataType?.type;\n }\n const currentScopeSymbol = <VarSymbol | FnSymbol>sa.symbolTableStack.scope.getSymbol(lookupSymbol, true);\n if (currentScopeSymbol) {\n if (\n (currentScopeSymbol instanceof FnSymbol || currentScopeSymbol.isGlobalVariable) &&\n referenceGlobalSymbolNames.indexOf(name) === -1\n ) {\n referenceGlobalSymbolNames.push(name);\n }\n } else if (\n symbols.some((s) => s instanceof FnSymbol || s.isGlobalVariable) &&\n referenceGlobalSymbolNames.indexOf(name) === -1\n ) {\n referenceGlobalSymbolNames.push(name);\n }\n }\n }\n }\n\n override codeGen(visitor: CodeGenVisitor): string {\n return this.setCache(visitor.visitVariableIdentifier(this));\n }\n\n getLexeme(visitor: CodeGenVisitor): string {\n const child = this.children[0] as BaseToken | MacroCallSymbol | MacroCallFunction;\n if (child instanceof BaseToken) {\n return child.lexeme;\n } else {\n return child.codeGen(visitor);\n }\n }\n }\n\n @ASTNodeDecorator(NoneTerminal.gs_shader_program)\n export class GLShaderProgram extends TreeNode {\n shaderData: ShaderData;\n\n override semanticAnalyze(sa: SemanticAnalyzer): void {\n this.shaderData = sa.shaderData;\n this.shaderData.symbolTable = sa.symbolTableStack.scope;\n }\n }\n\n @ASTNodeDecorator(NoneTerminal.global_declaration)\n export class GlobalDeclaration extends TreeNode {\n macroExpressions: Array<MacroExpression | MacroUndef | BaseToken> = [];\n\n override init(): void {\n this.macroExpressions.length = 0;\n }\n\n override semanticAnalyze(sa: SemanticAnalyzer): void {\n const child = this.children[0];\n\n if (\n child instanceof MacroUndef ||\n child instanceof GlobalMacroIfStatement ||\n child instanceof MacroDefine ||\n child instanceof BaseToken\n ) {\n sa.shaderData.globalMacroDeclarations.push(this);\n\n if (child instanceof GlobalMacroIfStatement) {\n this.macroExpressions.push(...child.macroExpressions);\n } else {\n this.macroExpressions.push(child);\n }\n }\n }\n }\n\n @ASTNodeDecorator(NoneTerminal.macro_undef)\n export class MacroUndef extends TreeNode {\n override codeGen(visitor: CodeGenVisitor) {\n return this.setCache(super.codeGen(visitor) + \"\\n\");\n }\n }\n\n @ASTNodeDecorator(NoneTerminal.macro_push_context)\n export class MacroPushContext extends TreeNode {\n override semanticAnalyze(sa: SemanticAnalyzer): void {\n sa.symbolTableStack._macroLevel++;\n }\n\n override codeGen(visitor: CodeGenVisitor) {\n return this.setCache(\"\\n\" + super.codeGen(visitor) + \"\\n\");\n }\n }\n\n @ASTNodeDecorator(NoneTerminal.macro_pop_context)\n export class MacroPopContext extends TreeNode {\n override semanticAnalyze(sa: SemanticAnalyzer): void {\n sa.symbolTableStack._macroLevel--;\n }\n\n override codeGen(visitor: CodeGenVisitor) {\n return this.setCache(\"\\n\" + super.codeGen(visitor) + \"\\n\");\n }\n }\n\n @ASTNodeDecorator(NoneTerminal.macro_elif_expression)\n export class MacroElifExpression extends TreeNode {\n override codeGen(visitor: CodeGenVisitor) {\n return this.setCache(\"\\n\" + super.codeGen(visitor) + \"\\n\");\n }\n }\n\n @ASTNodeDecorator(NoneTerminal.macro_else_expression)\n export class MacroElseExpression extends TreeNode {\n override codeGen(visitor: CodeGenVisitor) {\n return this.setCache(\"\\n\" + super.codeGen(visitor) + \"\\n\");\n }\n }\n\n @ASTNodeDecorator(NoneTerminal.global_macro_declaration)\n export class GlobalMacroDeclaration extends TreeNode {\n macroExpressions: MacroExpression[] = [];\n\n override init(): void {\n this.macroExpressions.length = 0;\n }\n\n override semanticAnalyze(sa: SemanticAnalyzer): void {\n const children = this.children;\n const macroExpressions = this.macroExpressions;\n\n if (children.length === 1) {\n macroExpressions.push(...(children[0] as GlobalDeclaration).macroExpressions);\n } else {\n macroExpressions.push(...(children[0] as GlobalMacroDeclaration).macroExpressions);\n macroExpressions.push(...(children[1] as GlobalDeclaration).macroExpressions);\n }\n }\n\n override codeGen(visitor: CodeGenVisitor) {\n const children = this.children as TreeNode[];\n if (children.length === 1) {\n return this.setCache(children[0].codeGen(visitor));\n } else {\n return this.setCache(`${children[0].codeGen(visitor)}\\n${children[1].codeGen(visitor)}`);\n }\n }\n }\n\n @ASTNodeDecorator(NoneTerminal.global_macro_if_statement)\n export class GlobalMacroIfStatement extends TreeNode {\n macroExpressions: MacroExpression[] = [];\n\n override init(): void {\n this.macroExpressions.length = 0;\n }\n\n override semanticAnalyze(sa: SemanticAnalyzer): void {\n const children = this.children;\n const macroExpressions = this.macroExpressions;\n\n if (children.length === 3) {\n macroExpressions.push(children[0] as MacroPushContext);\n macroExpressions.push(...(children[1] as GlobalMacroDeclaration).macroExpressions);\n macroExpressions.push(...(children[2] as GlobalMacroBranch).macroExpressions);\n } else {\n macroExpressions.push(children[0] as MacroPushContext);\n macroExpressions.push(...(children[1] as GlobalMacroBranch).macroExpressions);\n }\n }\n }\n\n @ASTNodeDecorator(NoneTerminal.global_macro_branch)\n export class GlobalMacroBranch extends TreeNode {\n macroExpressions: MacroExpression[] = [];\n\n override init(): void {\n this.macroExpressions.length = 0;\n }\n\n override semanticAnalyze(sa: SemanticAnalyzer): void {\n const children = this.children;\n const lastNode = children[children.length - 1];\n\n const macroExpressions = this.macroExpressions;\n macroExpressions.push(children[0] as MacroPopContext | MacroElseExpression | MacroElifExpression);\n\n if (children[1] instanceof GlobalMacroDeclaration) {\n macroExpressions.push(...children[1].macroExpressions);\n }\n\n if (lastNode instanceof GlobalMacroBranch) {\n macroExpressions.push(...lastNode.macroExpressions);\n }\n\n if (children.length > 1 && lastNode instanceof MacroPopContext) {\n macroExpressions.push(lastNode);\n }\n }\n }\n\n @ASTNodeDecorator(NoneTerminal.macro_if_statement)\n export class MacroIfStatement extends TreeNode {}\n\n @ASTNodeDecorator(NoneTerminal.macro_branch)\n export class MacroBranch extends TreeNode {}\n\n @ASTNodeDecorator(NoneTerminal.macro_call_symbol)\n export class MacroCallSymbol extends TreeNode {\n referenceSymbolNames: string[] = [];\n macroName: string;\n /** True iff every `MacroDefineInfo` visible from this call site's branch\n * has a `valueAst` (i.e. was parsed via the `macro_define` CFG rule).\n * Call sites use this to skip naive type inference: an AST-form macro\n * drives the call site's type through its own value subtree, not through\n * a root of `referenceSymbolNames`. Mixed forms across branches → false,\n * fall back to legacy inference. */\n hasAstValue: boolean = false;\n /** True when the macro is defined as function-like (`#define NAME(params) …`).\n * Used by `MacroCallFunction` codegen to pick between the two call shapes\n * — object-like-macro-as-function-name vs true function-like macro. */\n isFunctionLikeMacro: boolean = false;\n\n override init(): void {\n this.referenceSymbolNames.length = 0;\n this.hasAstValue = false;\n this.isFunctionLikeMacro = false;\n }\n\n override semanticAnalyze(sa: SemanticAnalyzer): void {\n const nameToken = this.children[0] as BaseToken;\n const macroName = nameToken.lexeme;\n this.macroName = macroName;\n\n // Filter `defList` to only entries reachable from this call site's\n // `#ifdef` branch (Issue #2980 nit fix). Without filtering, definitions\n // in disjoint branches conflate at the call site and pollute type\n // inference; with it, what remains is exactly what could substitute at\n // this position.\n const callSiteBranch = nameToken.branch;\n const defList = sa.macroDefineList[macroName];\n const refs = this.referenceSymbolNames;\n refs.length = 0;\n let visibleCount = 0;\n let allAst = true;\n let isFn = false;\n if (defList) {\n for (let i = 0, n = defList.length; i < n; i++) {\n const info = defList[i];\n if (!Lexer.isVisibleFrom(info.branch, callSiteBranch)) continue;\n visibleCount++;\n if (info.valueAst == null) allAst = false;\n if (info.isFunction) isFn = true;\n const ref = info.referenceName;\n if (ref && info.params.indexOf(ref) === -1 && refs.indexOf(ref) === -1) refs.push(ref);\n }\n }\n // Require *every* visible entry to be AST-form before taking the AST\n // shortcut: residual ambiguity (e.g. unmodeled `#if expr` letting both\n // forms through) falls back to legacy `referenceSymbolNames` inference\n // instead of polluting the call site with TypeAny.\n this.hasAstValue = visibleCount > 0 && allAst;\n this.isFunctionLikeMacro = isFn;\n }\n }\n\n @ASTNodeDecorator(NoneTerminal.macro_call_function)\n export class MacroCallFunction extends TreeNode {\n referenceSymbolNames: string[] = [];\n macroName: string = \"\";\n hasAstValue: boolean = false;\n isFunctionLikeMacro: boolean = false;\n\n override init(): void {\n this.referenceSymbolNames = [];\n this.macroName = \"\";\n this.hasAstValue = false;\n this.isFunctionLikeMacro = false;\n }\n\n override semanticAnalyze(sa: SemanticAnalyzer): void {\n const child = this.children[0] as MacroCallSymbol;\n\n this.referenceSymbolNames = child.referenceSymbolNames;\n this.macroName = child.macroName;\n this.hasAstValue = child.hasAstValue;\n this.isFunctionLikeMacro = child.isFunctionLikeMacro;\n }\n\n override codeGen(visitor: CodeGenVisitor) {\n return this.setCache(visitor.visitMacroCallFunction(this));\n }\n }\n\n /**\n * `#define NAME [(params)] [value]` — expression-style macro.\n *\n * Expression-form macros are parsed into AST rather than kept as raw lexemes. The\n * optional `valueExpression` is an `AssignmentExpression` subtree that participates\n * in normal codegen — so `v.v_normal.xyz` inside a `#define` flows through\n * `visitPostfixExpression` just like an inline expression would, and varying\n * flattening/type inference/reference tracking all come for free.\n *\n * Semantic analysis does not resolve symbols inside the value (the definition-site\n * scope is not the call-site scope). Lookup happens lazily during codegen.\n */\n @ASTNodeDecorator(NoneTerminal.macro_define)\n export class MacroDefine extends TreeNode {\n macroName: string;\n isFunction: boolean;\n valueExpression?: AssignmentExpression;\n\n override init(): void {\n this.macroName = \"\";\n this.isFunction = false;\n this.valueExpression = undefined;\n }\n\n override semanticAnalyze(sa: SemanticAnalyzer): void {\n const children = this.children;\n // children[0] is MACRO_DEFINE head token, children[1] is ID.\n this.macroName = (children[1] as BaseToken).lexeme;\n\n // If children[2] is a MACRO_DEFINE_PARAMS token, the macro is function-like\n // and its parameter list lives in that token's lexeme (e.g. \"(a, b, c)\").\n let params: string[] = [];\n let valueIdx = 2;\n if (children[2] instanceof BaseToken && (children[2] as BaseToken).type === Keyword.MACRO_DEFINE_PARAMS) {\n this.isFunction = true;\n params = ParserUtils.parseMacroParamList((children[2] as BaseToken).lexeme);\n valueIdx = 3;\n }\n\n if (children[valueIdx] instanceof AssignmentExpression) {\n this.valueExpression = children[valueIdx] as AssignmentExpression;\n }\n\n // The Lexer already registered a regex-derived entry for this directive.\n // Upgrade that entry in place by attaching the AST subtree, rather than\n // pushing a duplicate. Match must be branch-aware: `#define X` in\n // `#ifdef A` and another `#define X` in `#else` are separate entries\n // with disjoint branch signatures, and `valueExpression` belongs to\n // whichever branch actually parsed it.\n const definingBranch = (children[1] as BaseToken).branch;\n const list = sa.macroDefineList;\n const entries = list[this.macroName];\n const sameArity = (info: MacroDefineInfo) =>\n info.isFunction === this.isFunction &&\n info.params.length === params.length &&\n info.params.every((p, i) => p === params[i]);\n const upgradable = entries?.find(\n (info) => !info.valueAst && sameArity(info) && Lexer.sameBranch(info.branch, definingBranch)\n );\n if (upgradable) {\n upgradable.valueAst = this.valueExpression;\n } else {\n // No matching preprocessor entry (e.g. the lexer was fed the directive\n // directly without a `Preprocessor.parse` pass). Push a fresh entry.\n const info: MacroDefineInfo = {\n isFunction: this.isFunction,\n name: this.macroName,\n params,\n valueAst: this.valueExpression,\n referenceName: \"\",\n branch: definingBranch\n };\n if (entries) entries.push(info);\n else list[this.macroName] = [info];\n }\n }\n\n override codeGen(visitor: CodeGenVisitor): string {\n return this.setCache(visitor.visitMacroDefine(this));\n }\n }\n}\n","import { BaseToken } from \"../common/BaseToken\";\nimport { EShaderStage } from \"../common/enums/ShaderStage\";\nimport { SymbolTable } from \"../common/SymbolTable\";\nimport { GSErrorName } from \"../GSError\";\nimport { ASTNode, TreeNode } from \"../parser/AST\";\nimport { ESymbolType, SymbolInfo } from \"../parser/symbolTable\";\nimport { StructProp } from \"../parser/types\";\nimport { ShaderCompiler } from \"../ShaderCompiler\";\nimport { ShaderCompilerUtils } from \"../ShaderCompilerUtils\";\n\n/** Role of a struct type in the shader compiler's IO flattening. */\nexport type StructRole = \"varying\" | \"attribute\" | \"mrt\";\n\n/** @internal */\nexport class VisitorContext {\n private static _lookupSymbol: SymbolInfo = new SymbolInfo(\"\", null);\n private static _singleton: VisitorContext;\n static get context() {\n return this._singleton;\n }\n\n static reset() {\n if (!this._singleton) {\n this._singleton = new VisitorContext();\n }\n this._singleton.reset();\n }\n\n attributeStructs: ASTNode.StructSpecifier[] = [];\n attributeList: StructProp[] = [];\n varyingStructs: ASTNode.StructSpecifier[] = [];\n varyingList: StructProp[] = [];\n mrtStructs: ASTNode.StructSpecifier[] = [];\n mrtList: StructProp[] = [];\n\n stage: EShaderStage;\n stageEntry: string;\n\n _referencedAttributeList: Record<string, StructProp[]>;\n _referencedVaryingList: Record<string, StructProp[]>;\n _referencedMRTList: Record<string, StructProp[]>;\n _referencedGlobals: Record<string, SymbolInfo[]>;\n _referencedGlobalMacroASTs: TreeNode[] = [];\n /**\n * Maps variable names (function params, locals, and globals whose type is a\n * varying/attribute/mrt struct) to their role. Populated during stage setup and\n * used by macro-value rewriting to recognize `varName.prop` patterns that should\n * be flattened against the IO lists.\n */\n _structVarMap: Record<string, StructRole>;\n\n _passSymbolTable: SymbolTable<SymbolInfo>;\n\n reset(resetAll = true) {\n if (resetAll) {\n this.attributeStructs.length = 0;\n this.attributeList.length = 0;\n this.varyingStructs.length = 0;\n this.varyingList.length = 0;\n this.mrtStructs.length = 0;\n this.mrtList.length = 0;\n }\n\n this._referencedAttributeList = Object.create(null);\n this._referencedVaryingList = Object.create(null);\n this._referencedMRTList = Object.create(null);\n this._referencedGlobals = Object.create(null);\n this._referencedGlobalMacroASTs.length = 0;\n if (resetAll) {\n // Struct-var bindings are pass-scoped, not stage-scoped — global `#define`\n // values must see the same bindings in both the vertex and fragment outputs,\n // so we keep the map across the vertex→fragment stage transition.\n this._structVarMap = Object.create(null);\n }\n }\n\n isAttributeStruct(type: string) {\n return this.attributeStructs.findIndex((item) => item.ident!.lexeme === type) !== -1;\n }\n\n isVaryingStruct(type: string) {\n return this.varyingStructs.findIndex((item) => item.ident!.lexeme === type) !== -1;\n }\n\n isMRTStruct(type: string) {\n return this.mrtStructs.findIndex((item) => item.ident!.lexeme === type) !== -1;\n }\n\n /** Return the role of a struct type, or undefined if it isn't one of the IO roles. */\n getStructRole(typeLexeme: string): StructRole | undefined {\n if (this.isAttributeStruct(typeLexeme)) return \"attribute\";\n if (this.isVaryingStruct(typeLexeme)) return \"varying\";\n if (this.isMRTStruct(typeLexeme)) return \"mrt\";\n }\n\n /** Register a variable as holding a value of a varying/attribute/mrt struct type. */\n registerStructVar(varName: string, role: StructRole): void {\n this._structVarMap[varName] = role;\n }\n\n referenceAttribute(ident: BaseToken): Error | void {\n return this._referenceProp(\n \"attribute\",\n ident.lexeme,\n this.attributeList,\n this._referencedAttributeList,\n ident.location\n );\n }\n\n referenceVarying(ident: BaseToken): Error | void {\n return this._referenceProp(\"varying\", ident.lexeme, this.varyingList, this._referencedVaryingList, ident.location);\n }\n\n referenceMRTProp(ident: BaseToken): Error | void {\n return this._referenceProp(\"mrt\", ident.lexeme, this.mrtList, this._referencedMRTList, ident.location);\n }\n\n referenceGlobal(ident: string, type: ESymbolType): void {\n if (this._referencedGlobals[ident]) return;\n\n this._referencedGlobals[ident] = [];\n\n const lookupSymbol = VisitorContext._lookupSymbol;\n lookupSymbol.set(ident, type);\n this._passSymbolTable.getSymbols(lookupSymbol, true, this._referencedGlobals[ident]);\n }\n\n private _referenceProp(\n role: StructRole,\n name: string,\n list: StructProp[],\n refList: Record<string, StructProp[]>,\n location: any\n ): Error | void {\n if (refList[name]) return;\n const props = list.filter((item) => item.ident.lexeme === name);\n if (!props.length) {\n return ShaderCompilerUtils.createGSError(\n `referenced ${role} not found: ${name}`,\n GSErrorName.CompilationError,\n ShaderCompiler._processingPassText,\n location\n );\n }\n refList[name] = props;\n }\n}\n","import type { IPoolElement } from \"@galacean/engine-core\";\n\nexport class TempArray<T> implements IPoolElement {\n array: Array<T> = new Array();\n\n dispose(): void {\n this.array.length = 0;\n }\n}\n","import { ShaderPosition, ShaderRange } from \"../common\";\nimport { BaseToken } from \"../common/BaseToken\";\nimport { GSErrorName } from \"../GSError\";\nimport { ASTNode, TreeNode } from \"../parser/AST\";\nimport { NoneTerminal } from \"../parser/GrammarSymbol\";\nimport { ESymbolType, FnSymbol } from \"../parser/symbolTable\";\nimport { NodeChild, StructProp } from \"../parser/types\";\nimport { ParserUtils } from \"../ParserUtils\";\nimport { ShaderCompiler } from \"../ShaderCompiler\";\nimport { StructRole, VisitorContext } from \"./VisitorContext\";\n// #if _VERBOSE\nimport { GSError } from \"../GSError\";\n// #endif\nimport { ReturnableObjectPool } from \"@galacean/engine-core\";\nimport { Keyword } from \"../common/enums/Keyword\";\nimport { TempArray } from \"../TempArray\";\nimport { ICodeSegment } from \"./types\";\n\n/**\n * @internal\n * The code generator\n */\nexport abstract class CodeGenVisitor {\n // #if _VERBOSE\n readonly errors: Error[] = [];\n // #endif\n\n abstract getAttributeProp(prop: StructProp): string;\n abstract getVaryingProp(prop: StructProp): string;\n abstract getMRTProp(prop: StructProp): string;\n\n protected static _tmpArrayPool = new ReturnableObjectPool(TempArray<string>, 10);\n\n defaultCodeGen(children: NodeChild[]) {\n const pool = CodeGenVisitor._tmpArrayPool;\n let ret = pool.get();\n ret.dispose();\n for (const child of children) {\n if (child instanceof BaseToken) {\n // Legacy opaque `#define` lexemes carry the directive verbatim — expression-style defines go through the AST path.\n ret.array.push(child.lexeme);\n } else {\n ret.array.push(child.codeGen(this));\n }\n }\n pool.return(ret);\n return ret.array.join(\" \");\n }\n\n visitPostfixExpression(node: ASTNode.PostfixExpression): string {\n const children = node.children;\n const derivationLength = children.length;\n const context = VisitorContext.context;\n\n if (derivationLength === 3) {\n const postExpr = children[0] as ASTNode.PostfixExpression;\n const prop = children[2];\n\n if (prop instanceof BaseToken) {\n // Struct role priority: `_structVarMap` by bare root ident (covers forward-declared types like `Varyings o;`),\n // then AST static type (normal path when `semanticAnalyze` resolved `postExpr.type`).\n let role: StructRole | undefined;\n const directRoot = ParserUtils.extractDirectIdentLexeme(postExpr);\n if (directRoot) role = context._structVarMap[directRoot];\n if (!role) role = context.getStructRole(<string>postExpr.type);\n\n if (role) {\n const error =\n role === \"attribute\"\n ? context.referenceAttribute(prop)\n : role === \"varying\"\n ? context.referenceVarying(prop)\n : context.referenceMRTProp(prop);\n // #if _VERBOSE\n if (error) this.errors.push(<GSError>error);\n // #endif\n return prop.lexeme;\n }\n\n return `${postExpr.codeGen(this)}.${prop.lexeme}`;\n } else {\n return `${postExpr.codeGen(this)}.${prop.codeGen(this)}`;\n }\n } else if (derivationLength === 4) {\n const identNode = children[0] as ASTNode.PostfixExpression;\n const indexNode = children[2] as ASTNode.Expression;\n const identLexeme = identNode.codeGen(this);\n const indexLexeme = indexNode.codeGen(this);\n if (identLexeme === \"gl_FragData\") {\n this._reportError(identNode.location, \"Please use MRT struct instead of gl_FragData.\");\n }\n return `${identLexeme}[${indexLexeme}]`;\n }\n\n return this.defaultCodeGen(node.children);\n }\n\n visitVariableIdentifier(node: ASTNode.VariableIdentifier): string {\n for (let name of node.referenceGlobalSymbolNames) {\n VisitorContext.context.referenceGlobal(name, ESymbolType.Any);\n }\n\n return node.getLexeme(this);\n }\n\n visitFunctionCall(node: ASTNode.FunctionCall): string {\n const call = node.children[0] as ASTNode.FunctionCallGeneric;\n if (call.fnSymbol instanceof FnSymbol) {\n VisitorContext.context.referenceGlobal(call.fnSymbol.ident, ESymbolType.FN);\n\n const paramList = call.children[2];\n if (paramList instanceof ASTNode.FunctionCallParameterList) {\n const astNodes = paramList.paramNodes;\n const paramInfoList = call.fnSymbol.astNode.protoType.parameterList;\n\n const context = VisitorContext.context;\n const params = astNodes.filter((_, i) => {\n const typeInfo = paramInfoList?.[i]?.typeInfo;\n // Drop struct-IO parameters (attribute/varying/mrt) — they're flattened\n // into top-level declarations and no longer exist as function-call args.\n return !typeInfo || !context.getStructRole(typeInfo.typeLexeme);\n });\n\n let paramsCode = \"\";\n\n for (let i = 0, length = params.length; i < length; i++) {\n const astNode = params[i];\n const code = astNode.codeGen(this);\n if (astNode instanceof ASTNode.MacroCallArgBlock || i === 0) {\n paramsCode += code;\n } else {\n paramsCode += `, ${code}`;\n }\n }\n\n return `${call.fnSymbol.ident}(${paramsCode})`;\n }\n }\n\n return this.defaultCodeGen(node.children);\n }\n\n visitMacroCallFunction(node: ASTNode.MacroCallFunction): string {\n const children = node.children;\n const paramList = children[2];\n if (paramList instanceof ASTNode.FunctionCallParameterList) {\n const astNodes = paramList.paramNodes;\n const context = VisitorContext.context;\n\n // `MacroCallFunction` covers two call shapes sharing the same AST:\n // (a) object-like macro whose value is a function name, used as a call —\n // `#define FN foo` + `FN(varyings, …)`. The driver expands `FN` to\n // `foo`, and `foo` is a shader function whose IO-struct params\n // have been flattened. The call site must drop IO-struct args to\n // match the flattened signature — same rule as `visitFunctionCall`.\n // (b) true function-like macro — `#define MAX3(a,b,c) …` + `MAX3(v.x, …)`.\n // The shader compiler doesn't expand the macro; the driver does, and the\n // `#define` fixes the parameter count. Args must be preserved\n // verbatim — a member-access arg like `v.v_uv` unwraps to a root\n // identifier whose type is an IO struct, but dropping the arg\n // would change the macro's arity.\n //\n // `isFunctionLikeMacro` is set by `MacroCallSymbol.semanticAnalyze` from\n // `macroDefineList[name][*].isFunction` and carries the definition shape.\n const params = node.isFunctionLikeMacro\n ? astNodes\n : astNodes.filter((arg) => {\n if (arg instanceof ASTNode.AssignmentExpression) {\n const variableParam = ParserUtils.unwrapNodeByType<ASTNode.VariableIdentifier>(\n arg,\n NoneTerminal.variable_identifier\n );\n if (\n variableParam &&\n typeof variableParam.typeInfo === \"string\" &&\n context.getStructRole(variableParam.typeInfo)\n ) {\n return false;\n }\n }\n return true;\n });\n\n let paramsCode = \"\";\n for (let i = 0, length = params.length; i < length; i++) {\n const argNode = params[i];\n const code = argNode.codeGen(this);\n\n if (argNode instanceof ASTNode.MacroCallArgBlock || i === 0) {\n paramsCode += code;\n } else {\n paramsCode += `, ${code}`;\n }\n }\n\n return `${node.macroName}(${paramsCode})`;\n } else {\n return this.defaultCodeGen(node.children);\n }\n }\n\n visitStatementList(node: ASTNode.StatementList): string {\n const children = node.children as TreeNode[];\n if (children.length === 1) {\n return children[0].codeGen(this);\n } else {\n return `${children[0].codeGen(this)}\\n${children[1].codeGen(this)}`;\n }\n }\n\n /**\n * Code-generate a `#define` macro parsed as expression AST. Produces a `#define`\n * directive whose value is the AST-rewritten string — so varying flattening\n * happens naturally via `visitPostfixExpression` inside the AST walk.\n */\n visitMacroDefine(node: ASTNode.MacroDefine): string {\n // For function-like macros, preserve the original `(params)` lexeme verbatim —\n // the parameter list is user-authored text that shouldn't be canonicalized.\n let paramsLexeme = \"\";\n if (node.isFunction) {\n const paramsToken = node.children[2];\n if (paramsToken instanceof BaseToken) paramsLexeme = paramsToken.lexeme;\n }\n const valueCode = node.valueExpression ? node.valueExpression.codeGen(this) : \"\";\n // Newlines around the directive keep `#` at the start of its physical line per\n // GLSL ES 3.0 §3.4, regardless of how surrounding tokens are joined.\n return `\\n#define ${node.macroName}${paramsLexeme}${valueCode ? \" \" + valueCode : \"\"}\\n`;\n }\n\n visitSingleDeclaration(node: ASTNode.SingleDeclaration): string {\n const type = node.typeSpecifier.type;\n if (typeof type === \"string\") {\n VisitorContext.context.referenceGlobal(type, ESymbolType.STRUCT);\n }\n return this.defaultCodeGen(node.children);\n }\n\n visitGlobalVariableDeclaration(node: ASTNode.VariableDeclaration): string {\n const children = node.children;\n const fullType = children[0];\n if (fullType instanceof ASTNode.FullySpecifiedType && fullType.typeSpecifier.isCustom) {\n const context = VisitorContext.context;\n // Global variables whose declared type is a varying/attribute/mrt struct\n // (e.g. `Varyings o;`) are not emitted as `uniform`. The variable itself is\n // already registered in `_structVarMap` by the pre-pass in\n // `GLESVisitor._collectAllStructVars`, so `visitPostfixExpression` can\n // flatten `o.field` at macro-value codegen time.\n if (context.getStructRole(fullType.typeSpecifier.lexeme)) {\n return \"\";\n }\n context.referenceGlobal(<string>fullType.type, ESymbolType.STRUCT);\n }\n return `uniform ${this.defaultCodeGen(children)}`;\n }\n\n visitDeclaration(node: ASTNode.Declaration): string {\n const { context } = VisitorContext;\n const children = node.children;\n const child = children[0];\n\n if (child instanceof ASTNode.InitDeclaratorList) {\n const typeLexeme = child.typeInfo.typeLexeme;\n if (context.isVaryingStruct(typeLexeme) || context.isMRTStruct(typeLexeme)) return \"\";\n }\n return this.defaultCodeGen(children);\n }\n\n visitFunctionParameterList(node: ASTNode.FunctionParameterList): string {\n const context = VisitorContext.context;\n const params = node.parameterInfoList.filter(\n (item) => !item.typeInfo || !context.getStructRole(item.typeInfo.typeLexeme)\n );\n\n let out = \"\";\n for (let i = 0, length = params.length; i < length; i++) {\n const item = params[i];\n const astNode = item.astNode;\n const code = astNode.codeGen(this);\n if (astNode instanceof ASTNode.MacroParamBlock || i === 0) {\n out += code;\n } else {\n out += `, ${code}`;\n }\n }\n\n return out;\n }\n\n visitFunctionHeader(node: ASTNode.FunctionHeader): string {\n const returnType = node.returnType.typeSpecifier.lexeme;\n if (VisitorContext.context.isVaryingStruct(returnType)) {\n return `void ${node.ident.lexeme}(`;\n }\n return this.defaultCodeGen(node.children);\n }\n\n visitJumpStatement(node: ASTNode.JumpStatement): string {\n const children = node.children;\n const cmd = children[0] as BaseToken;\n if (cmd.type === Keyword.RETURN) {\n const expr = children[1];\n if (expr instanceof ASTNode.Expression) {\n const returnVar = ParserUtils.unwrapNodeByType<ASTNode.VariableIdentifier>(\n expr,\n NoneTerminal.variable_identifier\n );\n if (VisitorContext.context.isVaryingStruct(<string>returnVar?.typeInfo)) {\n return \"\";\n }\n const returnFnCall = ParserUtils.unwrapNodeByType<ASTNode.FunctionCall>(expr, NoneTerminal.function_call);\n if (VisitorContext.context.isVaryingStruct(<string>returnFnCall?.type)) {\n return `${expr.codeGen(this)};`;\n }\n }\n }\n return this.defaultCodeGen(children);\n }\n\n visitFunctionIdentifier(node: ASTNode.FunctionIdentifier): string {\n return this.defaultCodeGen(node.children);\n }\n\n visitStructSpecifier(node: ASTNode.StructSpecifier): string {\n const context = VisitorContext.context;\n const { varyingStructs, attributeStructs, mrtStructs } = context;\n const isVaryingStruct = varyingStructs.indexOf(node) !== -1;\n const isAttributeStruct = attributeStructs.indexOf(node) !== -1;\n const isMRTStruct = mrtStructs.indexOf(node) !== -1;\n\n if (isVaryingStruct && isAttributeStruct) {\n this._reportError(node.location, \"cannot use same struct as Varying and Attribute\");\n }\n\n if (isVaryingStruct && isMRTStruct) {\n this._reportError(node.location, \"cannot use same struct as Varying and MRT\");\n }\n\n if (isAttributeStruct && isMRTStruct) {\n this._reportError(node.location, \"cannot use same struct as Attribute and MRT\");\n }\n\n if (isVaryingStruct || isAttributeStruct || isMRTStruct) {\n let result: ICodeSegment[] = [];\n\n result.push(\n ...node.macroExpressions.map((item) => ({\n text: item instanceof BaseToken ? item.lexeme : item.codeGen(this),\n index: item.location.start.index\n }))\n );\n\n for (const prop of node.propList) {\n const name = prop.ident.lexeme;\n if (isVaryingStruct && context._referencedVaryingList[name]?.indexOf(prop) >= 0) {\n result.push({\n text: `${this.getVaryingProp(prop)}\\n`,\n index: prop.ident.location.start.index\n });\n } else if (isAttributeStruct && context._referencedAttributeList[name]?.indexOf(prop) >= 0) {\n result.push({\n text: `${this.getAttributeProp(prop)}\\n`,\n index: prop.ident.location.start.index\n });\n } else if (isMRTStruct && context._referencedMRTList[name]?.indexOf(prop) >= 0) {\n result.push({\n text: `${this.getMRTProp(prop)}\\n`,\n index: prop.ident.location.start.index\n });\n }\n }\n\n const text = result\n .sort((a, b) => a.index - b.index)\n .map((item) => item.text)\n .join(\"\");\n\n return text;\n } else {\n return this.defaultCodeGen(node.children);\n }\n }\n\n visitFunctionDefinition(fnNode: ASTNode.FunctionDefinition): string {\n const fnName = fnNode.protoType.ident.lexeme;\n const context = VisitorContext.context;\n\n if (fnName == context.stageEntry) {\n const statements = fnNode.statements.codeGen(this);\n return `void main() ${statements}`;\n } else {\n return this.defaultCodeGen(fnNode.children);\n }\n }\n\n protected _reportError(loc: ShaderRange | ShaderPosition, message: string): void {\n // #if _VERBOSE\n this.errors.push(new GSError(GSErrorName.CompilationError, message, loc, ShaderCompiler._processingPassText));\n // #else\n console.error(message);\n // #endif\n }\n}\n","import type { IShaderInfo } from \"@galacean/engine-design\";\nimport { BaseToken } from \"../common/BaseToken\";\nimport { EShaderStage } from \"../common/enums/ShaderStage\";\nimport { Keyword } from \"../common/enums/Keyword\";\nimport { ASTNode, TreeNode } from \"../parser/AST\";\nimport { NodeChild } from \"../parser/types\";\nimport { ShaderData } from \"../parser/ShaderInfo\";\nimport { ESymbolType, FnSymbol, StructSymbol, SymbolInfo } from \"../parser/symbolTable\";\nimport { CodeGenVisitor } from \"./CodeGenVisitor\";\nimport { ICodeSegment } from \"./types\";\nimport { StructRole, VisitorContext } from \"./VisitorContext\";\n\n/**\n * @internal\n */\nexport abstract class GLESVisitor extends CodeGenVisitor {\n private _globalCodeArray: ICodeSegment[] = [];\n private static _lookupSymbol: SymbolInfo = new SymbolInfo(\"\", null);\n private static _serializedGlobalKey = new Set();\n\n reset(): void {\n const { _globalCodeArray: globalCodeArray } = this;\n globalCodeArray.length = 0;\n GLESVisitor._serializedGlobalKey.clear();\n }\n\n getOtherGlobal(data: ShaderData, out: ICodeSegment[]): void {\n for (const precision of data.globalPrecisions) {\n out.push({ text: precision.codeGen(this), index: precision.location.start.index });\n }\n }\n\n visitShaderProgram(node: ASTNode.GLShaderProgram, vertexEntry: string, fragmentEntry: string): IShaderInfo {\n // #if _VERBOSE\n this.errors.length = 0;\n // #endif\n VisitorContext.reset();\n this.reset();\n\n const shaderData = node.shaderData;\n const context = VisitorContext.context;\n context._passSymbolTable = shaderData.symbolTable;\n\n const outerGlobalMacroDeclarations = shaderData.getOuterGlobalMacroDeclarations();\n\n // `_structVarMap` must span both stages so global `#define` references rewrite consistently across vertex/fragment outputs.\n this._collectAllStructVars(vertexEntry, fragmentEntry);\n\n return {\n vertex: this._vertexMain(vertexEntry, shaderData, outerGlobalMacroDeclarations),\n fragment: this._fragmentMain(fragmentEntry, shaderData, outerGlobalMacroDeclarations)\n };\n }\n\n /** Populate `_structVarMap` for varying/attribute/mrt-typed variables across both stages before codegen. */\n private _collectAllStructVars(vertexEntry: string, fragmentEntry: string): void {\n const context = VisitorContext.context;\n const lookupSymbol = GLESVisitor._lookupSymbol;\n const symbolTable = context._passSymbolTable;\n\n // Roles from entry signatures: vertex param[0]=attribute, return=varying; fragment param[0]=varying, return=mrt.\n const structRoles: Record<string, StructRole> = Object.create(null);\n\n const addEntryRoles = (entry: string, paramRole: StructRole, returnRole: StructRole): FnSymbol[] => {\n lookupSymbol.set(entry, ESymbolType.FN);\n const fns = <FnSymbol[]>symbolTable.getSymbols(lookupSymbol, true, []);\n for (const fn of fns) {\n const proto = fn.astNode.protoType;\n const param0 = proto.parameterList?.[0];\n if (param0 && typeof param0.typeInfo?.type === \"string\") {\n structRoles[param0.typeInfo.typeLexeme] = paramRole;\n }\n if (typeof proto.returnType.type === \"string\") {\n structRoles[<string>proto.returnType.type] = returnRole;\n }\n }\n return fns;\n };\n\n const entryFns = addEntryRoles(vertexEntry, \"attribute\", \"varying\").concat(\n addEntryRoles(fragmentEntry, \"varying\", \"mrt\")\n );\n\n const registerByType = (typeLexeme: string | undefined, varName: string): void => {\n if (!typeLexeme) return;\n const role = structRoles[typeLexeme];\n if (role) context.registerStructVar(varName, role);\n };\n\n const walkLocals = (node: TreeNode): void => {\n for (const child of node.children) {\n if (child instanceof ASTNode.InitDeclaratorList) {\n const typeLexeme = child.typeInfo?.typeLexeme;\n if (typeLexeme && structRoles[typeLexeme]) {\n this._extractLocalVarNames(child, context, structRoles[typeLexeme]);\n }\n } else if (child instanceof TreeNode) {\n walkLocals(child);\n }\n }\n };\n\n for (const fn of entryFns) {\n const proto = fn.astNode.protoType;\n if (proto.parameterList) {\n for (const param of proto.parameterList) {\n if (param.ident && typeof param.typeInfo?.type === \"string\") {\n registerByType(param.typeInfo.typeLexeme, param.ident.lexeme);\n }\n }\n }\n walkLocals(fn.astNode.statements);\n }\n\n // Register module-level globals whose type carries a role (e.g. `Varyings o;`).\n symbolTable.forEach((sym) => {\n if (sym.type === ESymbolType.VAR) registerByType(sym.dataType?.typeLexeme, sym.ident);\n });\n }\n\n private _vertexMain(\n entry: string,\n data: ShaderData,\n outerGlobalMacroDeclarations: ASTNode.GlobalDeclaration[]\n ): string {\n const context = VisitorContext.context;\n context.stage = EShaderStage.VERTEX;\n context.stageEntry = entry;\n\n const lookupSymbol = GLESVisitor._lookupSymbol;\n const symbolTable = data.symbolTable;\n lookupSymbol.set(entry, ESymbolType.FN);\n const fnSymbols = <FnSymbol[]>symbolTable.getSymbols(lookupSymbol, true, []);\n if (!fnSymbols.length) throw `no entry function found: ${entry}`;\n\n const { attributeStructs, attributeList, varyingStructs, varyingList } = context;\n fnSymbols.forEach((fnSymbol) => {\n const fnNode = fnSymbol.astNode;\n const returnType = fnNode.protoType.returnType;\n\n if (typeof returnType.type === \"string\") {\n lookupSymbol.set(returnType.type, ESymbolType.STRUCT);\n const varyingSymbols = <StructSymbol[]>symbolTable.getSymbols(lookupSymbol, true, []);\n if (!varyingSymbols.length) {\n this._reportError(returnType.location, `invalid varying struct: \"${returnType.type}\".`);\n } else {\n for (let i = 0; i < varyingSymbols.length; i++) {\n const varyingSymbol = varyingSymbols[i];\n const astNode = varyingSymbol.astNode;\n varyingStructs.push(astNode);\n for (const prop of astNode.propList) {\n varyingList.push(prop);\n }\n }\n }\n } else if (returnType.type !== Keyword.VOID) {\n this._reportError(returnType.location, \"vertex main entry can only return struct or void.\");\n }\n\n const paramList = fnNode.protoType.parameterList;\n const attributeParam = paramList?.[0];\n if (attributeParam) {\n const attributeType = attributeParam.typeInfo.type;\n if (typeof attributeType === \"string\") {\n lookupSymbol.set(attributeType, ESymbolType.STRUCT);\n const attributeSymbols = <StructSymbol[]>symbolTable.getSymbols(lookupSymbol, true, []);\n if (!attributeSymbols.length) {\n this._reportError(attributeParam.astNode.location, `invalid attribute struct: \"${attributeType}\".`);\n } else {\n for (let i = 0; i < attributeSymbols.length; i++) {\n const attributeSymbol = attributeSymbols[i];\n const astNode = attributeSymbol.astNode;\n attributeStructs.push(astNode);\n for (const prop of astNode.propList) {\n attributeList.push(prop);\n }\n }\n }\n }\n }\n });\n\n // Pre-walk global `#define` values so referenced struct properties emit `attribute`/`varying` declarations.\n this._preRegisterGlobalMacroRefs(outerGlobalMacroDeclarations);\n\n const globalCodeArray = this._globalCodeArray;\n VisitorContext.context.referenceGlobal(entry, ESymbolType.FN);\n\n this._getGlobalSymbol(globalCodeArray);\n this._getCustomStruct(context.attributeStructs, globalCodeArray);\n this._getCustomStruct(context.varyingStructs, globalCodeArray);\n this._getGlobalMacroDeclarations(outerGlobalMacroDeclarations, globalCodeArray);\n this.getOtherGlobal(data, globalCodeArray);\n\n const globalCode = globalCodeArray\n .sort((a, b) => a.index - b.index)\n .map((item) => item.text)\n .join(\"\\n\");\n\n VisitorContext.context.reset(false);\n this.reset();\n\n return globalCode;\n }\n\n private _fragmentMain(\n entry: string,\n data: ShaderData,\n outerGlobalMacroStatements: ASTNode.GlobalDeclaration[]\n ): string {\n const context = VisitorContext.context;\n context.stage = EShaderStage.FRAGMENT;\n context.stageEntry = entry;\n\n const lookupSymbol = GLESVisitor._lookupSymbol;\n const { symbolTable } = data;\n lookupSymbol.set(entry, ESymbolType.FN);\n const fnSymbols = <FnSymbol[]>symbolTable.getSymbols(lookupSymbol, true, []);\n if (!fnSymbols?.length) throw `no entry function found: ${entry}`;\n\n // Fragment varying info inherits from vertex stage (preserved across `context.reset(false)`).\n fnSymbols.forEach((fnSymbol) => {\n const fnNode = fnSymbol.astNode;\n const { returnStatement } = fnNode;\n\n if (returnStatement) {\n returnStatement.isFragReturnStatement = true;\n }\n\n const { type: returnDataType, location: returnLocation } = fnNode.protoType.returnType;\n if (typeof returnDataType === \"string\") {\n lookupSymbol.set(returnDataType, ESymbolType.STRUCT);\n const mrtSymbols = <StructSymbol[]>symbolTable.getSymbols(lookupSymbol, true, []);\n if (!mrtSymbols.length) {\n this._reportError(returnLocation, `invalid mrt struct: ${returnDataType}`);\n } else {\n for (let i = 0; i < mrtSymbols.length; i++) {\n const mrtSymbol = mrtSymbols[i];\n const astNode = mrtSymbol.astNode;\n context.mrtStructs.push(astNode);\n for (const prop of astNode.propList) {\n context.mrtList.push(prop);\n }\n }\n }\n } else if (returnDataType !== Keyword.VOID && returnDataType !== Keyword.VEC4) {\n this._reportError(returnLocation, \"fragment main entry can only return struct or vec4.\");\n }\n });\n\n // `_structVarMap` is already populated in `visitShaderProgram` with both stages'\n // variables; just pre-walk macro refs so struct codegen sees the references.\n this._preRegisterGlobalMacroRefs(outerGlobalMacroStatements);\n\n const globalCodeArray = this._globalCodeArray;\n VisitorContext.context.referenceGlobal(entry, ESymbolType.FN);\n\n this._getGlobalSymbol(globalCodeArray);\n this._getCustomStruct(context.varyingStructs, globalCodeArray);\n this._getCustomStruct(context.mrtStructs, globalCodeArray);\n this._getGlobalMacroDeclarations(outerGlobalMacroStatements, globalCodeArray);\n this.getOtherGlobal(data, globalCodeArray);\n\n const globalCode = globalCodeArray\n .sort((a, b) => a.index - b.index)\n .map((item) => item.text)\n .join(\"\\n\");\n\n context.reset();\n this.reset();\n\n return globalCode;\n }\n\n private _extractLocalVarNames(node: ASTNode.InitDeclaratorList, context: VisitorContext, role: StructRole): void {\n const children = node.children;\n if (children.length === 1) {\n const singleDecl = children[0] as ASTNode.SingleDeclaration;\n const identChildren = singleDecl.children;\n if (identChildren.length >= 2 && identChildren[1] instanceof BaseToken) {\n context.registerStructVar(identChildren[1].lexeme, role);\n }\n } else if (children.length >= 3) {\n const initDeclList = children[0];\n if (initDeclList instanceof ASTNode.InitDeclaratorList) {\n this._extractLocalVarNames(initDeclList, context, role);\n }\n if (children[2] instanceof BaseToken) {\n context.registerStructVar((children[2] as BaseToken).lexeme, role);\n }\n }\n }\n\n /**\n * Pre-walk `#define` values in global macro declarations and register any\n * `structVar.prop` member accesses as referenced struct props. This must run before\n * struct codegen emits the declaration lists (`attribute …`, `varying …`, `MRT …`),\n * otherwise properties used only from macros would be missing from the output.\n */\n private _preRegisterGlobalMacroRefs(macros: ASTNode.GlobalDeclaration[]): void {\n for (const macro of macros) {\n this._walkMacroDefineTokens(macro.children);\n }\n }\n\n private _walkMacroDefineTokens(children: NodeChild[]): void {\n for (const child of children) {\n if (child instanceof ASTNode.MacroDefine) {\n // Codegen the value once so the enclosed `visitPostfixExpression` calls\n // register their struct-prop references. The returned string is discarded\n // — the real emit happens later in `_getGlobalMacroDeclarations`.\n if (child.valueExpression) child.valueExpression.codeGen(this);\n } else if (child instanceof TreeNode) {\n this._walkMacroDefineTokens(child.children);\n }\n }\n }\n\n private _getGlobalSymbol(out: ICodeSegment[]): void {\n const context = VisitorContext.context;\n const { _referencedGlobals } = context;\n const lastLength = Object.keys(_referencedGlobals).length;\n if (lastLength === 0) return;\n\n for (const ident in _referencedGlobals) {\n if (GLESVisitor._serializedGlobalKey.has(ident)) continue;\n GLESVisitor._serializedGlobalKey.add(ident);\n\n const symbols = _referencedGlobals[ident];\n for (let i = 0, n = symbols.length; i < n; i++) {\n const sm = symbols[i];\n const codeGenResult = sm.astNode.codeGen(this);\n if (!codeGenResult) continue;\n const text = codeGenResult + (sm.type === ESymbolType.VAR ? \";\" : \"\");\n if (!sm.isInMacroBranch) {\n out.push({\n text,\n index: sm.astNode.location.start.index\n });\n }\n }\n }\n\n if (Object.keys(_referencedGlobals).length !== lastLength) {\n this._getGlobalSymbol(out);\n }\n }\n\n private _getCustomStruct(structNodes: ASTNode.StructSpecifier[], out: ICodeSegment[]): void {\n for (const node of structNodes) {\n const text = node.codeGen(this);\n\n if (!node.isInMacroBranch) {\n out.push({ text, index: node.location.start.index });\n }\n }\n }\n\n private _getGlobalMacroDeclarations(macros: ASTNode.GlobalDeclaration[], out: ICodeSegment[]): void {\n const context = VisitorContext.context;\n const referencedGlobals = context._referencedGlobals;\n const referencedGlobalMacroASTs = context._referencedGlobalMacroASTs;\n referencedGlobalMacroASTs.length = 0;\n\n for (const symbols of Object.values(referencedGlobals)) {\n for (const symbol of symbols) {\n if (symbol.isInMacroBranch) {\n referencedGlobalMacroASTs.push(symbol.astNode);\n }\n }\n }\n\n for (const macro of macros) {\n let text: string;\n const child = macro.children[0];\n\n if (child instanceof ASTNode.GlobalMacroIfStatement) {\n let result: ICodeSegment[] = [];\n result.push(\n ...macro.macroExpressions.map((item) => ({\n text: item instanceof BaseToken ? item.lexeme : item.codeGen(this),\n index: item.location.start.index\n }))\n );\n\n this._visitGlobalMacroIfStatement(child, result);\n\n text = result\n .sort((a, b) => a.index - b.index)\n .map((item) => item.text)\n .join(\"\\n\");\n } else if (child instanceof BaseToken && child.type === Keyword.MACRO_DEFINE_EXPRESSION) {\n // Legacy opaque `#define` — its lexeme is the complete directive text,\n // newlines included; emit verbatim.\n text = child.lexeme;\n } else {\n text = macro.codeGen(this);\n }\n\n out.push({\n text,\n index: macro.location.start.index\n });\n }\n }\n\n private _visitGlobalMacroIfStatement(node: TreeNode, out: ICodeSegment[]): void {\n const children = node.children;\n for (let i = 0; i < children.length; i++) {\n const child = children[i];\n if (child instanceof ASTNode.PrecisionSpecifier) {\n out.push({\n text: child.codeGen(this),\n index: child.location.start.index\n });\n } else if (child instanceof ASTNode.FunctionDefinition) {\n if (VisitorContext.context._referencedGlobalMacroASTs.indexOf(child) !== -1) {\n out.push({\n text: child.getCache(), // code has generated in `_getGlobalSymbol`\n index: child.location.start.index\n });\n }\n } else if (child instanceof ASTNode.StructSpecifier) {\n const context = VisitorContext.context;\n const stage = context.stage;\n if (\n VisitorContext.context._referencedGlobalMacroASTs.indexOf(child) !== -1 ||\n (stage === EShaderStage.VERTEX\n ? context.isAttributeStruct(child.ident?.lexeme) || context.isVaryingStruct(child.ident?.lexeme)\n : context.isVaryingStruct(child.ident?.lexeme) || context.isMRTStruct(child.ident?.lexeme))\n ) {\n out.push({\n text: child.getCache(), // code has generated in `_getGlobalSymbol` or `_getCustomStruct`\n index: child.location.start.index\n });\n }\n } else if (child instanceof ASTNode.VariableDeclarationList) {\n const variableDeclarations = child.variableDeclarations;\n for (let i = 0; i < variableDeclarations.length; i++) {\n const variableDeclaration = variableDeclarations[i];\n if (VisitorContext.context._referencedGlobalMacroASTs.indexOf(variableDeclaration) !== -1) {\n out.push({\n text: variableDeclaration.getCache() + \";\", // code has generated in `_getGlobalSymbol`\n index: variableDeclaration.location.start.index\n });\n }\n }\n }\n\n if (child instanceof TreeNode) {\n this._visitGlobalMacroIfStatement(child, out);\n }\n }\n }\n}\n","import { BaseToken } from \"../common/BaseToken\";\nimport { ASTNode } from \"../parser/AST\";\nimport { StructProp } from \"../parser/types\";\nimport { GLESVisitor } from \"./GLESVisitor\";\nimport { VisitorContext } from \"./VisitorContext\";\n\nexport class GLES100Visitor extends GLESVisitor {\n private static _singleton: GLES100Visitor;\n static getVisitor(): GLES100Visitor {\n if (!this._singleton) {\n this._singleton = new GLES100Visitor();\n }\n return this._singleton;\n }\n\n override getAttributeProp(prop: StructProp): string {\n return `attribute ${prop.typeInfo.typeLexeme} ${prop.ident.lexeme};`;\n }\n\n override getVaryingProp(prop: StructProp): string {\n return `varying ${prop.typeInfo.typeLexeme} ${prop.ident.lexeme};`;\n }\n\n override getMRTProp(): string {\n return null;\n }\n\n override visitPostfixExpression(node: ASTNode.PostfixExpression): string {\n const { children } = node;\n const postExpr = children[0];\n const { context } = VisitorContext;\n if (postExpr instanceof ASTNode.PostfixExpression && context.isMRTStruct(<string>postExpr.type)) {\n const propReferenced = children[2] as BaseToken;\n const prop = context.mrtList.find((item) => item.ident.lexeme === propReferenced.lexeme);\n if (!prop) {\n this._reportError(propReferenced.location, `not found mrt property: ${propReferenced.lexeme}`);\n return \"\";\n }\n return `gl_FragData[${prop.mrtIndex!}]`;\n }\n return super.visitPostfixExpression(node);\n }\n\n override visitJumpStatement(node: ASTNode.JumpStatement): string {\n if (node.isFragReturnStatement) {\n if (VisitorContext.context.mrtStructs.length) {\n return \"\";\n }\n const expression = node.children[1] as ASTNode.Expression;\n return `gl_FragColor = ${expression.codeGen(this)};`;\n }\n return super.visitJumpStatement(node);\n }\n}\n","import { EShaderStage } from \"../common/enums/ShaderStage\";\nimport { ASTNode } from \"../parser/AST\";\nimport { ShaderData } from \"../parser/ShaderInfo\";\nimport { StructProp } from \"../parser/types\";\nimport { GLESVisitor } from \"./GLESVisitor\";\nimport { ICodeSegment } from \"./types\";\nimport { VisitorContext } from \"./VisitorContext\";\n\nconst V3_GL_FragColor = \"GS_glFragColor\";\n\nexport class GLES300Visitor extends GLESVisitor {\n private static _singleton: GLES300Visitor;\n static getVisitor(): GLES300Visitor {\n if (!this._singleton) {\n this._singleton = new GLES300Visitor();\n }\n return this._singleton;\n }\n\n private _otherCodeArray: ICodeSegment[] = [];\n private _fragColorVariableRegistered = false;\n\n override reset(): void {\n super.reset();\n\n this._otherCodeArray.length = 0;\n this._fragColorVariableRegistered = false;\n }\n\n override getOtherGlobal(data: ShaderData, out: ICodeSegment[]): void {\n super.getOtherGlobal(data, out);\n\n for (let i = 0, n = this._otherCodeArray.length; i < n; i++) {\n out.push(this._otherCodeArray[i]);\n }\n }\n\n override getAttributeProp(prop: StructProp): string {\n return `in ${prop.typeInfo.typeLexeme} ${prop.ident.lexeme};`;\n }\n\n override getVaryingProp(prop: StructProp): string {\n const qualifier = VisitorContext.context.stage === EShaderStage.FRAGMENT ? \"in\" : \"out\";\n return `${qualifier} ${prop.typeInfo.typeLexeme} ${prop.ident.lexeme};`;\n }\n\n override getMRTProp(prop: StructProp): string {\n return `layout(location = ${prop.mrtIndex}) out vec4 ${prop.ident.lexeme};`;\n }\n\n override visitFunctionIdentifier(node: ASTNode.FunctionIdentifier): string {\n const children = node.children;\n const typeSpecifier = children[0] as ASTNode.TypeSpecifier;\n if (typeSpecifier.children.length !== 1) {\n return this.defaultCodeGen(children);\n }\n let ident = node.lexeme;\n switch (node.ident) {\n case \"texture2D\":\n case \"textureCube\":\n ident = \"texture\";\n break;\n case \"texture2DProj\":\n ident = \"textureProj\";\n break;\n case \"texture2DLodEXT\":\n case \"textureCubeLodEXT\":\n ident = \"textureLod\";\n break;\n case \"texture2DGradEXT\":\n case \"textureCubeGradEXT\":\n ident = \"textureGrad\";\n break;\n case \"texture2DProjLodEXT\":\n ident = \"textureProjLod\";\n break;\n case \"texture2DProjGradEXT\":\n ident = \"textureProjGrad\";\n break;\n case \"gl_FragDepthEXT\":\n ident = \"gl_FragDepth\";\n break;\n }\n return ident;\n }\n\n override visitVariableIdentifier(node: ASTNode.VariableIdentifier): string {\n const { context } = VisitorContext;\n if (context.stage === EShaderStage.FRAGMENT && node.getLexeme(this) === \"gl_FragColor\") {\n if (context.mrtStructs.length) {\n this._reportError(node.location, \"gl_FragColor cannot be used with MRT (Multiple Render Targets).\");\n return;\n }\n this._registerFragColorVariable();\n return V3_GL_FragColor;\n }\n return super.visitVariableIdentifier(node);\n }\n\n override visitJumpStatement(node: ASTNode.JumpStatement): string {\n if (node.isFragReturnStatement) {\n if (VisitorContext.context.mrtStructs.length) {\n return \"\";\n }\n this._registerFragColorVariable();\n\n const expression = node.children[1] as ASTNode.Expression;\n return `${V3_GL_FragColor} = ${expression.codeGen(this)};`;\n }\n return super.visitJumpStatement(node);\n }\n\n private _registerFragColorVariable() {\n if (this._fragColorVariableRegistered) return;\n this._otherCodeArray.push({\n text: `out vec4 ${V3_GL_FragColor};`,\n index: 0\n });\n this._fragColorVariableRegistered = true;\n }\n}\n","import type { Condition, ShaderInstruction } from \"@galacean/engine-design\";\n\nexport type { ShaderInstruction } from \"@galacean/engine-design\";\n\n/** Must stay in sync with ShaderPreprocessorDirective in @galacean/engine-core */\nconst ShaderPreprocessorDirective = {\n Text: 0,\n IfDef: 1,\n IfNdef: 2,\n IfCmp: 3,\n IfExpr: 4,\n Else: 5,\n Endif: 6,\n Define: 7,\n DefineVal: 8,\n DefineFunc: 9,\n Undef: 10\n} as const;\n\ninterface ExprCtx {\n s: string;\n i: number;\n}\n\n/**\n * @internal\n */\nexport class ShaderInstructionEncoder {\n private static _DIRECTIVE_RE = /^[ \\t]*#[ \\t]*(if|ifdef|ifndef|elif|else|endif|define|undef)\\b(.*)/;\n private static _FUNC_MACRO_RE = /^(\\w+)\\(([^)]*)\\)\\s*(.*)/;\n\n static parse(glsl: string): ShaderInstruction[] {\n const instructions: ShaderInstruction[] = [];\n const length = glsl.length;\n let pos = 0;\n const backfillStack: number[][] = [];\n\n while (pos < length) {\n const directiveStart = ShaderInstructionEncoder._findDirectiveStart(glsl, pos, length);\n\n if (directiveStart === -1) {\n ShaderInstructionEncoder._pushText(instructions, glsl, pos, length);\n break;\n }\n\n if (directiveStart > pos) {\n ShaderInstructionEncoder._pushText(instructions, glsl, pos, directiveStart);\n }\n\n let lineEnd = glsl.indexOf(\"\\n\", directiveStart);\n if (lineEnd === -1) lineEnd = length;\n const line = glsl.substring(directiveStart, lineEnd);\n pos = lineEnd < length ? lineEnd + 1 : length;\n\n const match = ShaderInstructionEncoder._DIRECTIVE_RE.exec(line);\n if (!match) {\n const last = instructions.length > 0 ? instructions[instructions.length - 1] : null;\n const text = lineEnd < length ? line + \"\\n\" : line;\n if (last && last[0] === ShaderPreprocessorDirective.Text) {\n (last as [number, string])[1] += text;\n } else {\n instructions.push([ShaderPreprocessorDirective.Text, text]);\n }\n continue;\n }\n\n const keyword = match[1];\n const rest = match[2].trim();\n\n switch (keyword) {\n case \"ifdef\": {\n const idx = instructions.length;\n instructions.push([ShaderPreprocessorDirective.IfDef, rest, -1]);\n backfillStack.push([idx]);\n break;\n }\n case \"ifndef\": {\n const idx = instructions.length;\n instructions.push([ShaderPreprocessorDirective.IfNdef, rest, -1]);\n backfillStack.push([idx]);\n break;\n }\n case \"if\": {\n const cond = ShaderInstructionEncoder._parseCondition(rest);\n const idx = instructions.length;\n ShaderInstructionEncoder._pushConditionInstruction(instructions, cond);\n backfillStack.push([idx]);\n break;\n }\n case \"elif\": {\n const stack = backfillStack[backfillStack.length - 1];\n const prevIdx = stack[stack.length - 1];\n const elseIdx = instructions.length;\n instructions.push([ShaderPreprocessorDirective.Else, -1]);\n stack.push(elseIdx);\n ShaderInstructionEncoder._backfillJump(instructions[prevIdx], instructions.length);\n\n const cond = ShaderInstructionEncoder._parseCondition(rest);\n const idx = instructions.length;\n ShaderInstructionEncoder._pushConditionInstruction(instructions, cond);\n stack.push(idx);\n break;\n }\n case \"else\": {\n const stack = backfillStack[backfillStack.length - 1];\n const prevIdx = stack[stack.length - 1];\n const elseIdx = instructions.length;\n instructions.push([ShaderPreprocessorDirective.Else, -1]);\n stack.push(elseIdx);\n ShaderInstructionEncoder._backfillJump(instructions[prevIdx], instructions.length);\n break;\n }\n case \"endif\": {\n const endifIdx = instructions.length;\n instructions.push([ShaderPreprocessorDirective.Endif]);\n const stack = backfillStack.pop();\n if (stack) {\n const afterEndif = endifIdx + 1;\n for (let j = 0; j < stack.length; j++) {\n const inst = instructions[stack[j]];\n if (inst[0] === ShaderPreprocessorDirective.Else) {\n (inst as [number, number])[1] = afterEndif;\n } else {\n ShaderInstructionEncoder._backfillJump(inst, afterEndif, true);\n }\n }\n }\n break;\n }\n case \"define\": {\n const funcMatch = ShaderInstructionEncoder._FUNC_MACRO_RE.exec(rest);\n if (funcMatch) {\n const params = funcMatch[2]\n .split(\",\")\n .map((p) => p.trim())\n .filter((p) => p.length > 0);\n instructions.push([\n ShaderPreprocessorDirective.DefineFunc,\n funcMatch[1],\n params,\n ShaderInstructionEncoder._stripLineComment(funcMatch[3].trim())\n ]);\n } else {\n const spaceIdx = rest.indexOf(\" \");\n if (spaceIdx === -1) {\n instructions.push([ShaderPreprocessorDirective.Define, rest]);\n } else {\n instructions.push([\n ShaderPreprocessorDirective.DefineVal,\n rest.substring(0, spaceIdx),\n ShaderInstructionEncoder._stripLineComment(rest.substring(spaceIdx + 1).trim())\n ]);\n }\n }\n break;\n }\n case \"undef\": {\n instructions.push([ShaderPreprocessorDirective.Undef, rest]);\n break;\n }\n }\n }\n\n return instructions;\n }\n\n private static _pushConditionInstruction(instructions: ShaderInstruction[], cond: Condition): void {\n if (cond.t === \"def\") {\n instructions.push([ShaderPreprocessorDirective.IfDef, cond.m, -1]);\n } else if (cond.t === \"ndef\") {\n instructions.push([ShaderPreprocessorDirective.IfNdef, cond.m, -1]);\n } else if (cond.t === \"cmp\") {\n instructions.push([ShaderPreprocessorDirective.IfCmp, cond.m, cond.op, cond.v, -1]);\n } else {\n instructions.push([ShaderPreprocessorDirective.IfExpr, cond, -1]);\n }\n }\n\n private static _findDirectiveStart(source: string, from: number, length: number): number {\n let i = from;\n while (i < length) {\n let j = i;\n while (j < length) {\n const c = source.charCodeAt(j);\n if (c === 32 /* space */ || c === 9 /* tab */) {\n j++;\n } else {\n break;\n }\n }\n if (j < length && source.charCodeAt(j) === 35 /* '#' */) return i;\n\n const nl = source.indexOf(\"\\n\", i);\n if (nl === -1) break;\n i = nl + 1;\n }\n return -1;\n }\n\n private static _pushText(instructions: ShaderInstruction[], source: string, from: number, to: number): void {\n if (from >= to) return;\n const last = instructions.length > 0 ? instructions[instructions.length - 1] : null;\n if (last && last[0] === ShaderPreprocessorDirective.Text) {\n (last as [number, string])[1] += source.substring(from, to);\n } else {\n instructions.push([ShaderPreprocessorDirective.Text, source.substring(from, to)]);\n }\n }\n\n /**\n * Backfill jump offset of an IF/ELIF instruction.\n * When onlyPlaceholder is true, only backfill if the current value is still -1\n */\n private static _backfillJump(inst: ShaderInstruction, target: number, onlyPlaceholder = false): void {\n const directive = inst[0];\n if (directive === ShaderPreprocessorDirective.IfDef || directive === ShaderPreprocessorDirective.IfNdef) {\n if (!onlyPlaceholder || inst[2] === -1) (inst as [number, string, number])[2] = target;\n } else if (directive === ShaderPreprocessorDirective.IfCmp) {\n if (!onlyPlaceholder || inst[4] === -1) (inst as [number, string, string, number, number])[4] = target;\n } else if (directive === ShaderPreprocessorDirective.IfExpr) {\n if (!onlyPlaceholder || inst[2] === -1) (inst as [number, Condition, number])[2] = target;\n }\n }\n\n private static _stripLineComment(s: string): string {\n const idx = s.indexOf(\"//\");\n return idx >= 0 ? s.substring(0, idx).trimEnd() : s;\n }\n\n private static _parseCondition(expr: string): Condition {\n const ctx: ExprCtx = { s: expr.trim(), i: 0 };\n return ShaderInstructionEncoder._parseOr(ctx);\n }\n\n private static _skipWs(ctx: ExprCtx): void {\n while (\n ctx.i < ctx.s.length &&\n (ctx.s.charCodeAt(ctx.i) === 32 /* space */ || ctx.s.charCodeAt(ctx.i) === 9) /* tab */\n )\n ctx.i++;\n }\n\n private static _parseOr(ctx: ExprCtx): Condition {\n let left = ShaderInstructionEncoder._parseAnd(ctx);\n ShaderInstructionEncoder._skipWs(ctx);\n while (\n ctx.i < ctx.s.length - 1 &&\n ctx.s.charCodeAt(ctx.i) === 124 /* '|' */ &&\n ctx.s.charCodeAt(ctx.i + 1) === 124 /* '|' */\n ) {\n ctx.i += 2;\n ShaderInstructionEncoder._skipWs(ctx);\n left = { t: \"or\", l: left, r: ShaderInstructionEncoder._parseAnd(ctx) };\n ShaderInstructionEncoder._skipWs(ctx);\n }\n return left;\n }\n\n private static _parseAnd(ctx: ExprCtx): Condition {\n let left = ShaderInstructionEncoder._parseUnary(ctx);\n ShaderInstructionEncoder._skipWs(ctx);\n while (\n ctx.i < ctx.s.length - 1 &&\n ctx.s.charCodeAt(ctx.i) === 38 /* '&' */ &&\n ctx.s.charCodeAt(ctx.i + 1) === 38 /* '&' */\n ) {\n ctx.i += 2;\n ShaderInstructionEncoder._skipWs(ctx);\n left = { t: \"and\", l: left, r: ShaderInstructionEncoder._parseUnary(ctx) };\n ShaderInstructionEncoder._skipWs(ctx);\n }\n return left;\n }\n\n private static _parseUnary(ctx: ExprCtx): Condition {\n ShaderInstructionEncoder._skipWs(ctx);\n if (ctx.s.charCodeAt(ctx.i) === 33 /* '!' */) {\n ctx.i++;\n ShaderInstructionEncoder._skipWs(ctx);\n return { t: \"not\", c: ShaderInstructionEncoder._parsePrimary(ctx) };\n }\n return ShaderInstructionEncoder._parsePrimary(ctx);\n }\n\n private static _parsePrimary(ctx: ExprCtx): Condition {\n ShaderInstructionEncoder._skipWs(ctx);\n const { s } = ctx;\n\n // Parenthesized expression\n if (s.charCodeAt(ctx.i) === 40 /* '(' */) {\n ctx.i++;\n ShaderInstructionEncoder._skipWs(ctx);\n const inner = ShaderInstructionEncoder._parseOr(ctx);\n ShaderInstructionEncoder._skipWs(ctx);\n if (s.charCodeAt(ctx.i) === 41 /* ')' */) ctx.i++;\n return inner;\n }\n\n // defined(MACRO) or defined MACRO\n if (s.substring(ctx.i, ctx.i + 7) === \"defined\") {\n ctx.i += 7;\n ShaderInstructionEncoder._skipWs(ctx);\n const hasParen = s.charCodeAt(ctx.i) === 40; /* '(' */\n if (hasParen) ctx.i++;\n ShaderInstructionEncoder._skipWs(ctx);\n const name = ShaderInstructionEncoder._scanIdentifier(ctx);\n ShaderInstructionEncoder._skipWs(ctx);\n if (hasParen && s.charCodeAt(ctx.i) === 41 /* ')' */) ctx.i++;\n return { t: \"def\", m: name };\n }\n\n // Numeric literal\n if (ctx.i < s.length && ShaderInstructionEncoder._isDigit(s.charCodeAt(ctx.i))) {\n const lhsNum = ShaderInstructionEncoder._scanNumber(ctx);\n ShaderInstructionEncoder._skipWs(ctx);\n const op = ShaderInstructionEncoder._scanOp(ctx);\n if (op) {\n ShaderInstructionEncoder._skipWs(ctx);\n return {\n t: \"bool\",\n v: ShaderInstructionEncoder._evalNumOp(lhsNum, op, ShaderInstructionEncoder._scanNumber(ctx))\n };\n }\n return { t: \"bool\", v: lhsNum !== 0 };\n }\n\n // Identifier — comparison or defined check\n const name = ShaderInstructionEncoder._scanIdentifier(ctx);\n if (!name) return { t: \"bool\", v: false };\n ShaderInstructionEncoder._skipWs(ctx);\n const op = ShaderInstructionEncoder._scanOp(ctx);\n if (op) {\n ShaderInstructionEncoder._skipWs(ctx);\n return { t: \"cmp\", m: name, op, v: ShaderInstructionEncoder._scanNumber(ctx) };\n }\n return { t: \"def\", m: name };\n }\n\n private static _isDigit(charCode: number): boolean {\n return charCode >= 48 /* '0' */ && charCode <= 57 /* '9' */;\n }\n\n private static _isAlnum(charCode: number): boolean {\n return (\n (charCode >= 65 /* 'A' */ && charCode <= 90) /* 'Z' */ ||\n (charCode >= 97 /* 'a' */ && charCode <= 122) /* 'z' */ ||\n (charCode >= 48 /* '0' */ && charCode <= 57) /* '9' */ ||\n charCode === 95 /* '_' */\n );\n }\n\n private static _scanIdentifier(ctx: ExprCtx): string {\n const start = ctx.i;\n while (ctx.i < ctx.s.length && ShaderInstructionEncoder._isAlnum(ctx.s.charCodeAt(ctx.i))) ctx.i++;\n return ctx.s.substring(start, ctx.i);\n }\n\n private static _scanNumber(ctx: ExprCtx): number {\n const start = ctx.i;\n if (ctx.s.charCodeAt(ctx.i) === 45 /* '-' */) ctx.i++;\n while (\n ctx.i < ctx.s.length &&\n (ShaderInstructionEncoder._isDigit(ctx.s.charCodeAt(ctx.i)) || ctx.s.charCodeAt(ctx.i) === 46) /* '.' */\n )\n ctx.i++;\n return Number(ctx.s.substring(start, ctx.i)) || 0;\n }\n\n private static _scanOp(ctx: ExprCtx): string {\n const c = ctx.s.charCodeAt(ctx.i);\n const c2 = ctx.i + 1 < ctx.s.length ? ctx.s.charCodeAt(ctx.i + 1) : 0;\n if (c === 61 /* '=' */ && c2 === 61 /* '=' */) {\n ctx.i += 2;\n return \"==\";\n }\n if (c === 33 /* '!' */ && c2 === 61 /* '=' */) {\n ctx.i += 2;\n return \"!=\";\n }\n if (c === 62 /* '>' */ && c2 === 61 /* '=' */) {\n ctx.i += 2;\n return \">=\";\n }\n if (c === 60 /* '<' */ && c2 === 61 /* '=' */) {\n ctx.i += 2;\n return \"<=\";\n }\n if (c === 62 /* '>' */) {\n ctx.i++;\n return \">\";\n }\n if (c === 60 /* '<' */) {\n ctx.i++;\n return \"<\";\n }\n return \"\";\n }\n\n private static _evalNumOp(lhs: number, op: string, rhs: number): boolean {\n switch (op) {\n case \"==\":\n return lhs === rhs;\n case \"!=\":\n return lhs !== rhs;\n case \">\":\n return lhs > rhs;\n case \"<\":\n return lhs < rhs;\n case \">=\":\n return lhs >= rhs;\n case \"<=\":\n return lhs <= rhs;\n default:\n return false;\n }\n }\n}\n","import { ETokenType } from \"../common\";\nimport { NoneTerminal, Terminal } from \"../parser/GrammarSymbol\";\nimport Production from \"./Production\";\nimport GrammarUtils from \"./Utils\";\n\nexport default class StateItem {\n static _id = 0;\n\n readonly production: Production;\n readonly position: number;\n readonly lookaheadSet: Set<Terminal>;\n readonly id: number;\n\n _needReInfer = true;\n get needReInfer() {\n return this._needReInfer;\n }\n set needReInfer(v: boolean) {\n this._needReInfer = v;\n }\n\n get curSymbol() {\n return this.production.derivation[this.position];\n }\n get nextSymbol() {\n return this.production.derivation[this.position + 1];\n }\n\n constructor(production: Production, position: number, lookahead: Iterable<Terminal>) {\n this.production = production;\n this.position = position;\n this.lookaheadSet = new Set();\n for (const la of lookahead) {\n this.lookaheadSet.add(la);\n }\n this.id = StateItem._id++;\n }\n\n addLookahead(ts: Iterable<Terminal>) {\n for (const t of ts) {\n if (this.lookaheadSet.has(t)) continue;\n this.lookaheadSet.add(t);\n this.needReInfer = true;\n }\n }\n\n symbolByOffset(offset: number) {\n return this.production.derivation[this.position + offset];\n }\n\n canReduce() {\n if (this.position > this.production.derivation.length - 1) return true;\n else {\n for (let i = this.position; i < this.production.derivation.length; i++) {\n if (this.production.derivation[i] !== ETokenType.EPSILON) return false;\n }\n return true;\n }\n }\n\n advance() {\n // #if _VERBOSE\n if (this.canReduce()) throw `Error: advance reduce-able parsing state item`;\n // #endif\n return new StateItem(this.production, this.position + 1, this.lookaheadSet);\n }\n\n // #if _VERBOSE\n toString() {\n const coreItem = this.production.derivation.map((item) => GrammarUtils.toString(item));\n coreItem[this.position] = \".\" + (coreItem[this.position] ?? \"\");\n\n return `${NoneTerminal[this.production.goal]} :=> ${coreItem.join(\"|\")} ;${Array.from(this.lookaheadSet)\n .map((item) => GrammarUtils.toString(item))\n .join(\"/\")}`;\n }\n // #endif\n}\n","import { Terminal } from \"../parser/GrammarSymbol\";\nimport Production from \"./Production\";\nimport StateItem from \"./StateItem\";\n\nexport default class State {\n static closureMap: Map<string /** state mapKey */, State> = new Map();\n static pool: Map<number, State> = new Map();\n static _id = 0;\n\n readonly id: number;\n readonly cores: Set<StateItem>;\n private _items: Set<StateItem>;\n get items() {\n return this._items;\n }\n\n closured = false;\n get needReInfer() {\n for (const core of this.cores) {\n if (core.needReInfer) return true;\n }\n return false;\n }\n\n private _stateItemPool: Map<string /** Map ID */, StateItem> = new Map();\n\n static create(cores: StateItem[]) {\n const cacheKey = this.getMapKey(cores);\n const state = this.closureMap.get(cacheKey);\n if (state) {\n for (const core of cores) {\n // merge lookahead\n state.createStateItem(core.production, core.position, core.lookaheadSet);\n }\n return state;\n }\n\n const newState = new State(cores);\n this.closureMap.set(cacheKey, newState);\n return newState;\n }\n\n // TODO: any optimization?\n static getMapKey(cores: StateItem[]) {\n return cores.map((item) => `${item.production.id},${item.position}`).join(\";\");\n }\n\n private constructor(cores: Iterable<StateItem>) {\n this.id = State._id++;\n this._items = new Set([...cores]);\n this.cores = new Set([...cores]);\n for (const it of cores) {\n const itemMapKey = this.getStateItemMapKey(it.production, it.position);\n this._stateItemPool.set(itemMapKey, it);\n }\n State.pool.set(this.id, this);\n }\n\n // TODO: any optimization?\n getStateItemMapKey(production: Production, position: number) {\n return `${production.id},${position}`;\n }\n\n createStateItem(production: Production, position: number, lookaheadSet: Iterable<Terminal> = new Set()) {\n const mapId = this.getStateItemMapKey(production, position);\n const item = this._stateItemPool.get(mapId);\n if (item) {\n for (const la of lookaheadSet) {\n if (item.lookaheadSet.has(la)) continue;\n item.lookaheadSet.add(la);\n item.needReInfer = true;\n }\n return item;\n }\n const newItem = new StateItem(production, position, lookaheadSet);\n this._stateItemPool.set(mapId, newItem);\n return newItem;\n }\n}\n","import { ETokenType, ShaderRange } from \"../common\";\nimport { ASTNode, TreeNode } from \"../parser/AST\";\nimport { TranslationRule } from \"../parser/SemanticAnalyzer\";\nimport { NoneTerminal, GrammarSymbol } from \"../parser/GrammarSymbol\";\nimport Production from \"./Production\";\nimport { ActionInfo, EAction } from \"./types\";\nimport { ShaderCompiler } from \"../ShaderCompiler\";\nimport { ClearableObjectPool, type IPoolElement } from \"@galacean/engine-core\";\nimport { NodeChild } from \"../parser/types\";\nimport { Keyword } from \"../common/enums/Keyword\";\n\nexport default class GrammarUtils {\n static isTerminal(sm: GrammarSymbol) {\n return sm < NoneTerminal.START;\n }\n\n static toString(sm: GrammarSymbol) {\n if (this.isTerminal(sm)) {\n return ETokenType[sm] ?? Keyword[sm];\n }\n return NoneTerminal[sm];\n }\n\n static createProductionWithOptions(\n goal: NoneTerminal,\n options: GrammarSymbol[][],\n /** the ast node */\n astTypePool?: ClearableObjectPool<\n { set: (loc: ShaderRange, children: NodeChild[]) => void } & IPoolElement & TreeNode\n >\n ) {\n // Resolve the AST pool once per grammar production (not per reduce).\n const pool = astTypePool ?? ASTNode.TrivialNode.pool;\n const ret: [GrammarSymbol[], TranslationRule | undefined][] = [];\n for (const opt of options) {\n // Single-`NonTerminal` RHS + no typed class → this production reduces\n // to a semantic-empty `TrivialNode` wrapper. Elide it at reduce time\n // by pushing the child directly onto the semantic stack. Safe because\n // the parser's GOTO runs off `reduceProduction.goal`, not off the node\n // type on the stack. Single-Terminal RHS (e.g. `unary_operator → PLUS`)\n // isn't eligible — a `BaseToken` can't stand in for an AST node.\n const canElide = !astTypePool && opt.length === 1 && !GrammarUtils.isTerminal(opt[0]);\n ret.push([\n [goal, ...opt],\n function (sa, ...children) {\n if (!children[0]) return;\n if (canElide) {\n sa.semanticStack.push(children[0] as TreeNode);\n } else {\n const start = children[0].location.start;\n const end = children[children.length - 1].location.end;\n const location = ShaderCompiler.createRange(start, end);\n ASTNode.get(pool, sa, location, children);\n }\n }\n ]);\n }\n return ret;\n }\n\n static addMapSetItem<K, T>(map: Map<K, Set<T>>, k: K, v: T) {\n const set = map.get(k) ?? new Set();\n set.add(v);\n map.set(k, set);\n }\n\n static isSubSet<T>(sa: Set<T>, sb: Set<T>) {\n for (const item of sa) {\n if (!sb.has(item)) return false;\n }\n return true;\n }\n\n static isActionEqual(a: ActionInfo, b: ActionInfo) {\n return a.action === b.action && a.target === b.target;\n }\n\n // #if _VERBOSE\n static printAction(actionInfo: ActionInfo) {\n const production = Production.pool.get(actionInfo.target!);\n return `<Action: ${EAction[actionInfo.action]} -> ${this.printProduction(production)}>`;\n }\n\n static printProduction(production: Production) {\n const deriv = production.derivation.map((gs) => GrammarUtils.toString(gs)).join(\"|\");\n return `${NoneTerminal[production.goal]} :=> ${deriv}`;\n }\n // #endif\n}\n","import { NoneTerminal, Terminal } from \"../parser/GrammarSymbol\";\n\nexport type StateActionTable = Map<number /** state ID */, ActionTable>;\nexport type ActionTable = Map<Terminal, ActionInfo>;\nexport type StateGotoTable = Map<number /** state ID */, GotoTable>;\nexport type GotoTable = Map<NoneTerminal, number /** state ID */>;\n\nexport enum EAction {\n Shift = 0,\n Reduce,\n Accept\n}\n\nexport interface ActionInfo {\n action: EAction;\n target?: number;\n}\n","import { ETokenType } from \"../common\";\nimport { Keyword } from \"../common/enums/Keyword\";\nimport { Grammar } from \"../parser/Grammar\";\nimport { GrammarSymbol, NoneTerminal, Terminal } from \"../parser/GrammarSymbol\";\nimport State from \"./State\";\nimport StateItem from \"./StateItem\";\nimport { default as GrammarUtils, default as Utils } from \"./Utils\";\nimport { ActionInfo, ActionTable, EAction, GotoTable, StateActionTable, StateGotoTable } from \"./types\";\n\n/**\n * The [LALR1](https://web.stanford.edu/class/archive/cs/cs143/cs143.1128/handouts/140%20LALR%20Parsing.pdf) Parser generator\n */\nexport class LALR1 {\n readonly firstSetMap: Map<NoneTerminal, Set<Terminal>> = new Map();\n readonly followSetMap: Map<NoneTerminal, Set<Terminal>> = new Map();\n\n readonly actionTable: StateActionTable = new Map();\n readonly gotoTable: StateGotoTable = new Map();\n private grammar: Grammar;\n\n /** For circle detect */\n private _firstSetNTStack: NoneTerminal[] = [];\n\n constructor(grammar: Grammar) {\n this.grammar = grammar;\n }\n\n generate() {\n this.computeFirstSet();\n this.buildStateTable();\n }\n\n private buildStateTable() {\n const startStateItemCore = [new StateItem(this.grammar.productions[0], 0, [ETokenType.EOF])];\n const startState = State.create(startStateItemCore);\n this._extendState(startState);\n }\n\n private _extendState(state: State) {\n if (!state.needReInfer) return;\n this._closure(state);\n const newStates = this._inferNextState(state);\n for (const ns of newStates) {\n this._extendState(ns);\n }\n }\n\n private _closure(state: State) {\n for (const core of state.cores) {\n if (!core.canReduce()) {\n this._extendStateItem(state, core);\n }\n }\n state.closured = true;\n return state;\n }\n\n private _extendStateItem(state: State, item: StateItem) {\n if (GrammarUtils.isTerminal(item.curSymbol)) return;\n\n const productionList = this.grammar.getProductionList(<NoneTerminal>item.curSymbol);\n\n if (item.nextSymbol) {\n let newLookaheadSet = new Set<Terminal>();\n let lastFirstSet: Set<Terminal> | undefined;\n let terminalExist = false;\n // when A :=> a.BC, a; ==》 B :=> .xy, First(Ca)\n // newLookAhead = First(Ca)\n for (let i = 1, nextSymbol = item.symbolByOffset(1); !!nextSymbol; nextSymbol = item.symbolByOffset(++i)) {\n if (GrammarUtils.isTerminal(nextSymbol)) {\n newLookaheadSet.add(<Terminal>nextSymbol);\n terminalExist = true;\n break;\n }\n lastFirstSet = this.firstSetMap.get(<NoneTerminal>nextSymbol)!;\n for (const t of lastFirstSet) {\n newLookaheadSet.add(t);\n }\n if (!lastFirstSet.has(ETokenType.EPSILON)) break;\n }\n if (!terminalExist && lastFirstSet?.has(ETokenType.EPSILON)) {\n for (const t of item.lookaheadSet) {\n newLookaheadSet.add(t);\n }\n }\n\n for (const production of productionList) {\n const newItem = state.createStateItem(production, 0);\n if (!state.items.has(newItem) || !Utils.isSubSet(newLookaheadSet, newItem.lookaheadSet)) {\n state.items.add(newItem);\n newItem.addLookahead(newLookaheadSet);\n this._extendStateItem(state, newItem);\n }\n }\n } else {\n for (const production of productionList) {\n const newItem = state.createStateItem(production, 0);\n if (!state.items.has(newItem) || !Utils.isSubSet(item.lookaheadSet, newItem.lookaheadSet)) {\n state.items.add(newItem);\n newItem.addLookahead(item.lookaheadSet);\n this._extendStateItem(state, newItem);\n }\n }\n }\n }\n\n private _inferNextState(state: State): Set<State> {\n const coreMap: Map<GrammarSymbol, Set<StateItem>> = new Map();\n const stateActionTable: ActionTable = this.actionTable.get(state.id) ?? new Map();\n const stateGotoTable: GotoTable = this.gotoTable.get(state.id) ?? new Map();\n\n this.actionTable.set(state.id, stateActionTable);\n this.gotoTable.set(state.id, stateGotoTable);\n\n for (const stateItem of state.items) {\n if (stateItem.canReduce()) {\n let action: ActionInfo;\n if (stateItem.production.goal !== NoneTerminal.START) {\n action = {\n action: EAction.Reduce,\n target: stateItem.production.id\n };\n } else {\n action = { action: EAction.Accept };\n }\n\n for (const t of stateItem.lookaheadSet) {\n this._addAction(stateActionTable, t, action);\n }\n } else {\n const nextItem = stateItem.advance();\n Utils.addMapSetItem(coreMap, stateItem.curSymbol, nextItem);\n }\n\n stateItem.needReInfer = false;\n }\n\n const newStates = new Set<State>();\n for (const [gs, cores] of coreMap.entries()) {\n const newState = State.create(Array.from(cores));\n if (GrammarUtils.isTerminal(gs)) {\n this._addAction(stateActionTable, <Terminal>gs, {\n action: EAction.Shift,\n target: newState.id\n });\n } else {\n stateGotoTable.set(<NoneTerminal>gs, newState.id);\n }\n\n newStates.add(newState);\n }\n\n return newStates;\n }\n\n /** Resolve shift-reduce/reduce-reduce conflict detect */\n private _addAction(table: ActionTable, terminal: Terminal, action: ActionInfo) {\n const exist = table.get(terminal);\n if (exist && !Utils.isActionEqual(exist, action)) {\n // Resolve dangling else ambiguity\n if (terminal === Keyword.ELSE && exist.action === EAction.Shift && action.action === EAction.Reduce) {\n return;\n } else {\n // #if _VERBOSE\n console.warn(\n `conflict detect: <Terminal ${GrammarUtils.toString(terminal)}> \\n`,\n Utils.printAction(exist),\n \"\\n\",\n Utils.printAction(action)\n );\n // #endif\n }\n }\n table.set(terminal, action);\n }\n\n // https://people.cs.pitt.edu/~jmisurda/teaching/cs1622/handouts/cs1622-first_and_follow.pdf\n private computeFirstSet() {\n for (const production of this.grammar.productions.slice(1)) {\n this._computeFirstSetForNT(production.goal);\n }\n }\n\n private _computeFirstSetForNT(NT: NoneTerminal) {\n // circle detect\n const idx = this._firstSetNTStack.findIndex((item) => item === NT);\n if (idx !== -1) {\n const computingFS = this.firstSetMap.get(NT)!;\n const len = this._firstSetNTStack.length;\n for (let i = len - 1; i > idx; i--) {\n const curNT = this._firstSetNTStack[i];\n this.firstSetMap.set(curNT, computingFS);\n }\n return computingFS;\n }\n this._firstSetNTStack.push(NT);\n\n const productionList = this.grammar.getProductionList(NT);\n const firstSet = new Set<Terminal>();\n this.firstSetMap.set(NT, firstSet);\n if (this.grammar.isNullableNT(NT)) firstSet.add(ETokenType.EPSILON);\n\n for (const production of productionList) {\n let i = 0;\n for (; i < production.derivation.length; i++) {\n const gs = production.derivation[i];\n if (GrammarUtils.isTerminal(gs)) {\n firstSet.add(<Terminal>gs);\n break;\n }\n\n const succeedFirstSet = this._computeFirstSetForNT(<NoneTerminal>gs);\n\n for (const item of succeedFirstSet) {\n if (item !== ETokenType.EPSILON) firstSet.add(item);\n }\n if (!this.grammar.isNullableNT(<NoneTerminal>gs)) break;\n }\n if (i === production.derivation.length) firstSet.add(ETokenType.EPSILON);\n }\n\n this._firstSetNTStack.pop();\n return firstSet;\n }\n}\n","import { NoneTerminal, GrammarSymbol } from \"../parser/GrammarSymbol\";\n\nexport default class Production {\n private static _id = 0;\n static pool: Map<number, Production> = new Map();\n\n readonly goal: NoneTerminal;\n readonly derivation: GrammarSymbol[];\n readonly id: number;\n\n constructor(goal: NoneTerminal, derivation: GrammarSymbol[]) {\n this.goal = goal;\n this.derivation = derivation;\n this.id = Production._id++;\n Production.pool.set(this.id, this);\n }\n}\n","import { ETokenType } from \"../common\";\nimport { NoneTerminal, GrammarSymbol } from \"./GrammarSymbol\";\nimport Production from \"../lalr/Production\";\n\nexport class Grammar {\n readonly productions: Production[];\n\n readonly startSymbol: NoneTerminal;\n\n static create(start: NoneTerminal, productions: GrammarSymbol[][]) {\n const _ps = productions.map((gsl) => {\n return new Production(<NoneTerminal>gsl[0], gsl.slice(1));\n });\n return new Grammar(start, _ps);\n }\n\n constructor(start: NoneTerminal, productions: Production[]) {\n this.startSymbol = start;\n productions.unshift(new Production(NoneTerminal.START, [start]));\n this.productions = productions;\n }\n\n getProductionList(nonTerminal: NoneTerminal) {\n return this.productions.filter((item) => item.goal === nonTerminal);\n }\n\n isNullableNT(NT: NoneTerminal) {\n return this.productions.find((item) => item.goal === NT && item.derivation[0] === ETokenType.EPSILON);\n }\n\n getProductionByID(pid: number) {\n return Production.pool.get(pid);\n }\n}\n","// Context Free Grammar of Galacean Shader\nimport { ETokenType } from \"../common\";\nimport { Keyword } from \"../common/enums/Keyword\";\nimport { ASTNode } from \"../parser/AST\";\nimport { Grammar } from \"../parser/Grammar\";\nimport { GrammarSymbol, NoneTerminal } from \"../parser/GrammarSymbol\";\nimport SemanticAnalyzer, { TranslationRule } from \"../parser/SemanticAnalyzer\";\nimport GrammarUtils from \"./Utils\";\n\nconst productionAndRules: [GrammarSymbol[], TranslationRule | undefined][] = [\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.gs_shader_program,\n [[NoneTerminal.global_declaration], [NoneTerminal.gs_shader_program, NoneTerminal.global_declaration]],\n ASTNode.GLShaderProgram.pool\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.global_declaration,\n [\n [NoneTerminal.precision_specifier],\n [NoneTerminal.variable_declaration_statement],\n [NoneTerminal.struct_specifier],\n [NoneTerminal.function_definition],\n [NoneTerminal.global_macro_if_statement],\n [NoneTerminal.macro_undef],\n [NoneTerminal.macro_define],\n [Keyword.MACRO_DEFINE_EXPRESSION]\n ],\n ASTNode.GlobalDeclaration.pool\n ),\n\n // Expression-style `#define` — lexer emits either:\n // `MACRO_DEFINE ID <value tokens> MACRO_DEFINE_END` (object macro)\n // `MACRO_DEFINE ID MACRO_DEFINE_PARAMS <value tokens> MACRO_DEFINE_END` (function macro)\n //\n // The `(param1, param2, …)` block is captured by the lexer as a single opaque\n // `MACRO_DEFINE_PARAMS` token. Capturing in the lexer (rather than recursively in\n // the CFG via a `macro_define_param_list` non-terminal) avoids an LALR(1) conflict\n // between `macro_define_param_list` and the visually similar\n // `function_call_parameter_list` when the parser is in a state that could follow\n // either `LEFT_PAREN ID , ID` pattern.\n //\n // Empty-value `#define X\\n` and function-like without body stay on the legacy\n // opaque `MACRO_DEFINE_EXPRESSION` path.\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.macro_define,\n [\n [Keyword.MACRO_DEFINE, ETokenType.ID, NoneTerminal.assignment_expression, Keyword.MACRO_DEFINE_END],\n [\n Keyword.MACRO_DEFINE,\n ETokenType.ID,\n Keyword.MACRO_DEFINE_PARAMS,\n NoneTerminal.assignment_expression,\n Keyword.MACRO_DEFINE_END\n ]\n ],\n ASTNode.MacroDefine.pool\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.macro_call_symbol,\n [[Keyword.MACRO_CALL]],\n ASTNode.MacroCallSymbol.pool\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.macro_call_function,\n [\n [NoneTerminal.macro_call_symbol, ETokenType.LEFT_PAREN, ETokenType.RIGHT_PAREN],\n [\n NoneTerminal.macro_call_symbol,\n ETokenType.LEFT_PAREN,\n NoneTerminal.function_call_parameter_list,\n ETokenType.RIGHT_PAREN\n ]\n ],\n ASTNode.MacroCallFunction.pool\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.macro_undef,\n [\n [Keyword.MACRO_UNDEF, ETokenType.ID],\n [Keyword.MACRO_UNDEF, Keyword.MACRO_CALL]\n ],\n ASTNode.MacroUndef.pool\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.macro_push_context,\n [\n [Keyword.MACRO_IF, Keyword.MACRO_CONDITIONAL_EXPRESSION],\n [Keyword.MACRO_IFDEF, ETokenType.ID],\n [Keyword.MACRO_IFNDEF, ETokenType.ID],\n [Keyword.MACRO_IFDEF, NoneTerminal.macro_call_symbol],\n [Keyword.MACRO_IFNDEF, NoneTerminal.macro_call_symbol]\n ],\n ASTNode.MacroPushContext.pool\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.macro_pop_context,\n [[Keyword.MACRO_ENDIF]],\n ASTNode.MacroPopContext.pool\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.macro_elif_expression,\n [[Keyword.MACRO_ELIF, Keyword.MACRO_CONDITIONAL_EXPRESSION]],\n ASTNode.MacroElifExpression.pool\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.macro_else_expression,\n [[Keyword.MACRO_ELSE]],\n ASTNode.MacroElseExpression.pool\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.global_macro_declaration,\n [[NoneTerminal.global_declaration], [NoneTerminal.global_macro_declaration, NoneTerminal.global_declaration]],\n ASTNode.GlobalMacroDeclaration.pool\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.global_macro_if_statement,\n [\n [NoneTerminal.macro_push_context, NoneTerminal.global_macro_declaration, NoneTerminal.global_macro_branch],\n [NoneTerminal.macro_push_context, NoneTerminal.global_macro_branch]\n ],\n ASTNode.GlobalMacroIfStatement.pool\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.global_macro_branch,\n [\n [NoneTerminal.macro_pop_context],\n [NoneTerminal.macro_elif_expression, NoneTerminal.global_macro_declaration, NoneTerminal.global_macro_branch],\n [NoneTerminal.macro_else_expression, NoneTerminal.global_macro_declaration, NoneTerminal.macro_pop_context],\n [NoneTerminal.macro_elif_expression, NoneTerminal.global_macro_branch],\n [NoneTerminal.macro_else_expression, NoneTerminal.macro_pop_context]\n ],\n ASTNode.GlobalMacroBranch.pool\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.variable_declaration,\n [\n [NoneTerminal.fully_specified_type, ETokenType.ID],\n [NoneTerminal.fully_specified_type, ETokenType.ID, NoneTerminal.array_specifier],\n [NoneTerminal.fully_specified_type, ETokenType.ID, ETokenType.EQUAL, NoneTerminal.initializer]\n ],\n ASTNode.VariableDeclaration.pool\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.variable_declaration_list,\n [\n [NoneTerminal.variable_declaration],\n [NoneTerminal.variable_declaration_list, ETokenType.COMMA, ETokenType.ID],\n [NoneTerminal.variable_declaration_list, ETokenType.COMMA, ETokenType.ID, NoneTerminal.array_specifier]\n ],\n ASTNode.VariableDeclarationList.pool\n ),\n\n ...GrammarUtils.createProductionWithOptions(NoneTerminal.variable_declaration_statement, [\n [NoneTerminal.variable_declaration_list, ETokenType.SEMICOLON]\n ]),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.ext_builtin_type_specifier_nonarray,\n [\n [Keyword.VOID],\n [Keyword.FLOAT],\n [Keyword.BOOL],\n [Keyword.INT],\n [Keyword.UINT],\n [Keyword.VEC2],\n [Keyword.VEC3],\n [Keyword.VEC4],\n [Keyword.BVEC2],\n [Keyword.BVEC3],\n [Keyword.BVEC4],\n [Keyword.IVEC2],\n [Keyword.IVEC3],\n [Keyword.IVEC4],\n [Keyword.UVEC2],\n [Keyword.UVEC3],\n [Keyword.UVEC4],\n [Keyword.MAT2],\n [Keyword.MAT3],\n [Keyword.MAT4],\n [Keyword.MAT2X3],\n [Keyword.MAT2X4],\n [Keyword.MAT3X2],\n [Keyword.MAT3X4],\n [Keyword.MAT4X2],\n [Keyword.MAT4X3],\n [Keyword.SAMPLER2D],\n [Keyword.SAMPLER3D],\n [Keyword.SAMPLER_CUBE],\n [Keyword.SAMPLER2D_SHADOW],\n [Keyword.SAMPLER_CUBE_SHADOW],\n [Keyword.SAMPLER2D_ARRAY],\n [Keyword.SAMPLER2D_ARRAY_SHADOW],\n [Keyword.I_SAMPLER2D],\n [Keyword.I_SAMPLER3D],\n [Keyword.I_SAMPLER_CUBE],\n [Keyword.I_SAMPLER2D_ARRAY],\n [Keyword.U_SAMPLER2D],\n [Keyword.U_SAMPLER3D],\n [Keyword.U_SAMPLER_CUBE],\n [Keyword.U_SAMPLER2D_ARRAY]\n ],\n ASTNode.ExtBuiltinTypeSpecifierNonArray.pool\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.type_specifier_nonarray,\n [\n // User-defined struct identifier\n [ETokenType.ID],\n // Built-in type keyword (float / vec3 / sampler2D / ...)\n [NoneTerminal.ext_builtin_type_specifier_nonarray],\n // Macro-as-type-alias (e.g. `#define FxaaFloat float; FxaaFloat x;`).\n // Routing through `macro_call_symbol` keeps the macro a first-class AST\n // node and lets the LALR table disambiguate from expression-position\n // macro calls.\n [NoneTerminal.macro_call_symbol]\n ],\n ASTNode.TypeSpecifierNonArray.pool\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.fully_specified_type,\n [[NoneTerminal.type_specifier], [NoneTerminal.type_qualifier, NoneTerminal.type_specifier]],\n ASTNode.FullySpecifiedType.pool\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.type_specifier,\n [\n [NoneTerminal.type_specifier_nonarray],\n [NoneTerminal.ext_builtin_type_specifier_nonarray, NoneTerminal.array_specifier]\n ],\n ASTNode.TypeSpecifier.pool\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.type_qualifier,\n [[NoneTerminal.single_type_qualifier], [NoneTerminal.type_qualifier, NoneTerminal.single_type_qualifier]],\n ASTNode.TypeQualifier.pool\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.single_type_qualifier,\n [\n [NoneTerminal.storage_qualifier],\n [NoneTerminal.precision_qualifier],\n [NoneTerminal.interpolation_qualifier],\n [NoneTerminal.invariant_qualifier],\n [Keyword.PRECISE]\n ],\n ASTNode.SingleTypeQualifier.pool\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.storage_qualifier,\n [[Keyword.CONST], [Keyword.IN], [Keyword.INOUT], [Keyword.OUT], [Keyword.CENTROID]],\n // #if _VERBOSE\n ASTNode.StorageQualifier.pool\n // #endif\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.interpolation_qualifier,\n [[Keyword.SMOOTH], [Keyword.FLAT]],\n // #if _VERBOSE\n ASTNode.InterpolationQualifier.pool\n // #endif\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.invariant_qualifier,\n [[Keyword.INVARIANT]],\n // #if _VERBOSE\n ASTNode.InvariantQualifier.pool\n // #endif\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.precision_qualifier,\n [[Keyword.HIGHP], [Keyword.MEDIUMP], [Keyword.LOWP]],\n // #if _VERBOSE\n ASTNode.PrecisionQualifier.pool\n // #endif\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.struct_specifier,\n [\n [\n Keyword.STRUCT,\n ETokenType.ID,\n ETokenType.LEFT_BRACE,\n NoneTerminal.struct_declaration_list,\n ETokenType.RIGHT_BRACE,\n ETokenType.SEMICOLON\n ],\n [\n Keyword.STRUCT,\n ETokenType.LEFT_BRACE,\n NoneTerminal.struct_declaration_list,\n ETokenType.RIGHT_BRACE,\n ETokenType.SEMICOLON\n ]\n ],\n ASTNode.StructSpecifier.pool\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.struct_declaration_list,\n [[NoneTerminal.struct_declaration], [NoneTerminal.struct_declaration_list, NoneTerminal.struct_declaration]],\n ASTNode.StructDeclarationList.pool\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.struct_declaration,\n [\n [NoneTerminal.type_specifier, NoneTerminal.struct_declarator_list, ETokenType.SEMICOLON],\n [\n NoneTerminal.type_qualifier,\n NoneTerminal.type_specifier,\n NoneTerminal.struct_declarator_list,\n ETokenType.SEMICOLON\n ],\n [\n NoneTerminal.layout_qualifier,\n NoneTerminal.type_specifier,\n NoneTerminal.struct_declarator,\n ETokenType.SEMICOLON\n ],\n [NoneTerminal.macro_struct_declaration]\n ],\n ASTNode.StructDeclaration.pool\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.macro_struct_declaration,\n [\n [NoneTerminal.macro_push_context, NoneTerminal.struct_declaration_list, NoneTerminal.macro_struct_branch],\n [NoneTerminal.macro_push_context, NoneTerminal.macro_struct_branch]\n ],\n ASTNode.MacroStructDeclaration.pool\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.macro_struct_branch,\n [\n [NoneTerminal.macro_pop_context],\n [NoneTerminal.macro_elif_expression, NoneTerminal.struct_declaration_list, NoneTerminal.macro_struct_branch],\n [NoneTerminal.macro_else_expression, NoneTerminal.struct_declaration_list, NoneTerminal.macro_pop_context],\n [NoneTerminal.macro_elif_expression, NoneTerminal.macro_struct_branch],\n [NoneTerminal.macro_else_expression, NoneTerminal.macro_pop_context]\n ],\n ASTNode.MacroStructBranch.pool\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.layout_qualifier,\n [\n [\n Keyword.LAYOUT,\n ETokenType.LEFT_PAREN,\n Keyword.LOCATION,\n ETokenType.EQUAL,\n ETokenType.INT_CONSTANT,\n ETokenType.RIGHT_PAREN\n ]\n ],\n ASTNode.LayoutQualifier.pool\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.struct_declarator_list,\n [\n [NoneTerminal.struct_declarator],\n [NoneTerminal.struct_declarator_list, ETokenType.COMMA, NoneTerminal.struct_declarator]\n ],\n ASTNode.StructDeclaratorList.pool\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.struct_declarator,\n [[ETokenType.ID], [ETokenType.ID, NoneTerminal.array_specifier]],\n ASTNode.StructDeclarator.pool\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.array_specifier,\n [\n [ETokenType.LEFT_BRACKET, ETokenType.RIGHT_BRACKET],\n [ETokenType.LEFT_BRACKET, NoneTerminal.integer_constant_expression, ETokenType.RIGHT_BRACKET]\n ],\n ASTNode.ArraySpecifier.pool\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.integer_constant_expression_operator,\n [[ETokenType.PLUS], [ETokenType.DASH], [ETokenType.STAR], [ETokenType.SLASH], [ETokenType.PERCENT]],\n ASTNode.IntegerConstantExpressionOperator.pool\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.integer_constant_expression,\n [\n [NoneTerminal.variable_identifier],\n [ETokenType.INT_CONSTANT],\n [\n NoneTerminal.integer_constant_expression,\n NoneTerminal.integer_constant_expression_operator,\n ETokenType.INT_CONSTANT\n ],\n [\n NoneTerminal.integer_constant_expression,\n NoneTerminal.integer_constant_expression_operator,\n NoneTerminal.variable_identifier\n ]\n ],\n ASTNode.IntegerConstantExpression.pool\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.conditional_expression,\n [\n [NoneTerminal.logical_or_expression],\n [\n NoneTerminal.logical_or_expression,\n ETokenType.QUESTION,\n NoneTerminal.expression,\n ETokenType.COLON,\n NoneTerminal.assignment_expression\n ]\n ],\n // #if _VERBOSE\n ASTNode.ConditionalExpression.pool\n // #endif\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.logical_or_expression,\n [\n [NoneTerminal.logical_xor_expression],\n [NoneTerminal.logical_or_expression, ETokenType.OR_OP, NoneTerminal.logical_xor_expression]\n ],\n // #if _VERBOSE\n ASTNode.LogicalOrExpression.pool\n // #endif\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.logical_xor_expression,\n [\n [NoneTerminal.logical_and_expression],\n [NoneTerminal.logical_xor_expression, ETokenType.XOR_OP, NoneTerminal.logical_and_expression]\n ],\n // #if _VERBOSE\n ASTNode.LogicalXorExpression.pool\n // #endif\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.logical_and_expression,\n [\n [NoneTerminal.inclusive_or_expression],\n [NoneTerminal.logical_and_expression, ETokenType.AND_OP, NoneTerminal.inclusive_or_expression]\n ],\n // #if _VERBOSE\n ASTNode.LogicalAndExpression.pool\n // #endif\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.inclusive_or_expression,\n [\n [NoneTerminal.exclusive_or_expression],\n [NoneTerminal.inclusive_or_expression, ETokenType.VERTICAL_BAR, NoneTerminal.exclusive_or_expression]\n ],\n // #if _VERBOSE\n ASTNode.InclusiveOrExpression.pool\n // #endif\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.exclusive_or_expression,\n [\n [NoneTerminal.and_expression],\n [NoneTerminal.exclusive_or_expression, ETokenType.CARET, NoneTerminal.and_expression]\n ],\n // #if _VERBOSE\n ASTNode.ExclusiveOrExpression.pool\n // #endif\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.and_expression,\n [\n [NoneTerminal.equality_expression],\n [NoneTerminal.and_expression, ETokenType.AMPERSAND, NoneTerminal.equality_expression]\n ],\n // #if _VERBOSE\n ASTNode.AndExpression.pool\n // #endif\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.equality_expression,\n [\n [NoneTerminal.relational_expression],\n [NoneTerminal.equality_expression, ETokenType.EQ_OP, NoneTerminal.relational_expression],\n [NoneTerminal.equality_expression, ETokenType.NE_OP, NoneTerminal.relational_expression]\n ],\n // #if _VERBOSE\n ASTNode.EqualityExpression.pool\n // #endif\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.relational_expression,\n [\n [NoneTerminal.shift_expression],\n [NoneTerminal.relational_expression, ETokenType.LEFT_ANGLE, NoneTerminal.shift_expression],\n [NoneTerminal.relational_expression, ETokenType.RIGHT_ANGLE, NoneTerminal.shift_expression],\n [NoneTerminal.relational_expression, ETokenType.LE_OP, NoneTerminal.shift_expression],\n [NoneTerminal.relational_expression, ETokenType.GE_OP, NoneTerminal.shift_expression]\n ],\n // #if _VERBOSE\n ASTNode.RelationalExpression.pool\n // #endif\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.shift_expression,\n [\n [NoneTerminal.additive_expression],\n [NoneTerminal.shift_expression, ETokenType.LEFT_OP, NoneTerminal.additive_expression],\n [NoneTerminal.shift_expression, ETokenType.RIGHT_OP, NoneTerminal.additive_expression]\n ],\n // #if _VERBOSE\n ASTNode.ShiftExpression.pool\n // #endif\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.additive_expression,\n [\n [NoneTerminal.multiplicative_expression],\n [NoneTerminal.additive_expression, ETokenType.PLUS, NoneTerminal.multiplicative_expression],\n [NoneTerminal.additive_expression, ETokenType.DASH, NoneTerminal.multiplicative_expression]\n ],\n // #if _VERBOSE\n ASTNode.AdditiveExpression.pool\n // #endif\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.multiplicative_expression,\n [\n [NoneTerminal.unary_expression],\n [NoneTerminal.multiplicative_expression, ETokenType.STAR, NoneTerminal.unary_expression],\n [NoneTerminal.multiplicative_expression, ETokenType.SLASH, NoneTerminal.unary_expression],\n [NoneTerminal.multiplicative_expression, ETokenType.PERCENT, NoneTerminal.unary_expression]\n ],\n // #if _VERBOSE\n ASTNode.MultiplicativeExpression.pool\n // #endif\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.unary_expression,\n [\n [NoneTerminal.postfix_expression],\n [ETokenType.INC_OP, NoneTerminal.unary_expression],\n [ETokenType.DEC_OP, NoneTerminal.unary_expression],\n [NoneTerminal.unary_operator, NoneTerminal.unary_expression]\n ],\n // #if _VERBOSE\n ASTNode.UnaryExpression.pool\n // #endif\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.unary_operator,\n [[ETokenType.PLUS], [ETokenType.DASH], [ETokenType.BANG], [ETokenType.TILDE]],\n // #if _VERBOSE\n ASTNode.UnaryOperator.pool\n // #endif\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.postfix_expression,\n [\n [NoneTerminal.primary_expression],\n [NoneTerminal.postfix_expression, ETokenType.LEFT_BRACKET, NoneTerminal.expression, ETokenType.RIGHT_BRACKET],\n [NoneTerminal.function_call],\n [NoneTerminal.postfix_expression, ETokenType.DOT, ETokenType.ID],\n [NoneTerminal.postfix_expression, ETokenType.DOT, NoneTerminal.function_call],\n [NoneTerminal.postfix_expression, ETokenType.INC_OP],\n [NoneTerminal.postfix_expression, ETokenType.DEC_OP]\n ],\n ASTNode.PostfixExpression.pool\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.primary_expression,\n [\n [NoneTerminal.variable_identifier],\n [ETokenType.INT_CONSTANT],\n [ETokenType.FLOAT_CONSTANT],\n [Keyword.True],\n [Keyword.False],\n [ETokenType.LEFT_PAREN, NoneTerminal.expression, ETokenType.RIGHT_PAREN]\n ],\n ASTNode.PrimaryExpression.pool\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.expression,\n [\n [NoneTerminal.assignment_expression],\n [NoneTerminal.expression, ETokenType.COMMA, NoneTerminal.assignment_expression]\n ],\n ASTNode.Expression.pool\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.assignment_expression,\n [\n [NoneTerminal.conditional_expression],\n [NoneTerminal.unary_expression, NoneTerminal.assignment_operator, NoneTerminal.assignment_expression]\n ],\n ASTNode.AssignmentExpression.pool\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.assignment_operator,\n [\n [ETokenType.EQUAL],\n [ETokenType.MUL_ASSIGN],\n [ETokenType.DIV_ASSIGN],\n [ETokenType.MOD_ASSIGN],\n [ETokenType.ADD_ASSIGN],\n [ETokenType.SUB_ASSIGN],\n [ETokenType.LEFT_ASSIGN],\n [ETokenType.RIGHT_ASSIGN],\n [ETokenType.AND_ASSIGN],\n [ETokenType.XOR_ASSIGN],\n [ETokenType.OR_ASSIGN]\n ],\n // #if _VERBOSE\n ASTNode.AssignmentOperator.pool\n // #endif\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.function_call,\n [[NoneTerminal.function_call_generic]],\n ASTNode.FunctionCall.pool\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.function_call_generic,\n [\n [\n NoneTerminal.function_identifier,\n ETokenType.LEFT_PAREN,\n NoneTerminal.function_call_parameter_list,\n ETokenType.RIGHT_PAREN\n ],\n [NoneTerminal.function_identifier, ETokenType.LEFT_PAREN, ETokenType.RIGHT_PAREN],\n [NoneTerminal.function_identifier, Keyword.VOID, ETokenType.RIGHT_PAREN]\n ],\n ASTNode.FunctionCallGeneric.pool\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.function_call_parameter_list,\n [\n [NoneTerminal.assignment_expression],\n [NoneTerminal.function_call_parameter_list, ETokenType.COMMA, NoneTerminal.assignment_expression],\n [NoneTerminal.macro_call_arg_block],\n [NoneTerminal.function_call_parameter_list, NoneTerminal.macro_call_arg_block]\n ],\n ASTNode.FunctionCallParameterList.pool\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.macro_call_arg_case_list,\n [\n [NoneTerminal.assignment_expression],\n [ETokenType.COMMA, NoneTerminal.assignment_expression],\n [NoneTerminal.macro_call_arg_block],\n [NoneTerminal.macro_call_arg_case_list, NoneTerminal.macro_call_arg_block],\n [NoneTerminal.macro_call_arg_case_list, ETokenType.COMMA, NoneTerminal.assignment_expression]\n ],\n ASTNode.MacroCallArgCaseList.pool\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.macro_call_arg_block,\n [\n [NoneTerminal.macro_push_context, NoneTerminal.macro_call_arg_branch],\n [NoneTerminal.macro_push_context, NoneTerminal.macro_call_arg_case_list, NoneTerminal.macro_call_arg_branch]\n ],\n ASTNode.MacroCallArgBlock.pool\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.macro_call_arg_branch,\n [\n [NoneTerminal.macro_pop_context],\n [NoneTerminal.macro_elif_expression, NoneTerminal.macro_call_arg_case_list, NoneTerminal.macro_call_arg_branch],\n [NoneTerminal.macro_else_expression, NoneTerminal.macro_call_arg_case_list, NoneTerminal.macro_pop_context],\n [NoneTerminal.macro_elif_expression, NoneTerminal.macro_call_arg_branch],\n [NoneTerminal.macro_else_expression, NoneTerminal.macro_pop_context]\n ],\n ASTNode.MacroCallArgBranch.pool\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.function_identifier,\n [[NoneTerminal.type_specifier]],\n ASTNode.FunctionIdentifier.pool\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.function_definition,\n [[NoneTerminal.function_prototype, NoneTerminal.compound_statement_no_scope]],\n ASTNode.FunctionDefinition.pool\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.function_prototype,\n [[NoneTerminal.function_declarator, ETokenType.RIGHT_PAREN]],\n ASTNode.FunctionProtoType.pool\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.function_declarator,\n [[NoneTerminal.function_header], [NoneTerminal.function_header, NoneTerminal.function_parameter_list]],\n ASTNode.FunctionDeclarator.pool\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.function_header,\n [[NoneTerminal.fully_specified_type, ETokenType.ID, ETokenType.LEFT_PAREN]],\n ASTNode.FunctionHeader.pool\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.function_parameter_list,\n [\n [NoneTerminal.parameter_declaration],\n [NoneTerminal.function_parameter_list, ETokenType.COMMA, NoneTerminal.parameter_declaration],\n [NoneTerminal.macro_param_block],\n [NoneTerminal.function_parameter_list, NoneTerminal.macro_param_block]\n ],\n ASTNode.FunctionParameterList.pool\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.macro_param_case_list,\n [\n [NoneTerminal.parameter_declaration],\n [ETokenType.COMMA, NoneTerminal.parameter_declaration],\n [NoneTerminal.macro_param_block],\n [NoneTerminal.macro_param_case_list, NoneTerminal.macro_param_block],\n [NoneTerminal.macro_param_case_list, ETokenType.COMMA, NoneTerminal.parameter_declaration]\n ],\n ASTNode.MacroParamCaseList.pool\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.macro_param_block,\n [\n [NoneTerminal.macro_push_context, NoneTerminal.macro_parameter_branch],\n [NoneTerminal.macro_push_context, NoneTerminal.macro_param_case_list, NoneTerminal.macro_parameter_branch]\n ],\n ASTNode.MacroParamBlock.pool\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.macro_parameter_branch,\n [\n [NoneTerminal.macro_pop_context],\n [NoneTerminal.macro_elif_expression, NoneTerminal.macro_param_case_list, NoneTerminal.macro_parameter_branch],\n [NoneTerminal.macro_else_expression, NoneTerminal.macro_param_case_list, NoneTerminal.macro_pop_context],\n [NoneTerminal.macro_elif_expression, NoneTerminal.macro_parameter_branch],\n [NoneTerminal.macro_else_expression, NoneTerminal.macro_pop_context]\n ],\n ASTNode.MacroParameterBranch.pool\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.parameter_declaration,\n [\n [NoneTerminal.type_qualifier, NoneTerminal.parameter_declarator],\n [NoneTerminal.parameter_declarator],\n [NoneTerminal.macro_call_symbol],\n [NoneTerminal.macro_call_function]\n ],\n ASTNode.ParameterDeclaration.pool\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.parameter_declarator,\n [\n [NoneTerminal.type_specifier, ETokenType.ID],\n [NoneTerminal.type_specifier, ETokenType.ID, NoneTerminal.array_specifier]\n ],\n ASTNode.ParameterDeclarator.pool\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.statement_list,\n [[NoneTerminal.statement], [NoneTerminal.statement_list, NoneTerminal.statement]],\n ASTNode.StatementList.pool\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.statement,\n [[NoneTerminal.compound_statement], [NoneTerminal.simple_statement]],\n // #if _VERBOSE\n ASTNode.Statement.pool\n // #endif\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.compound_statement_no_scope,\n [\n [ETokenType.LEFT_BRACE, ETokenType.RIGHT_BRACE],\n [ETokenType.LEFT_BRACE, NoneTerminal.statement_list, ETokenType.RIGHT_BRACE]\n ],\n ASTNode.CompoundStatementNoScope.pool\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.compound_statement,\n [\n [ETokenType.LEFT_BRACE, ETokenType.RIGHT_BRACE],\n [NoneTerminal.scope_brace, NoneTerminal.statement_list, NoneTerminal.scope_end_brace]\n ],\n // #if _VERBOSE\n ASTNode.CompoundStatement.pool\n // #endif\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.simple_statement,\n [\n [NoneTerminal.declaration],\n [NoneTerminal.expression_statement],\n [NoneTerminal.selection_statement],\n [NoneTerminal.iteration_statement],\n [NoneTerminal.jump_statement],\n [NoneTerminal.macro_if_statement],\n [NoneTerminal.macro_undef],\n [NoneTerminal.macro_define],\n [Keyword.MACRO_DEFINE_EXPRESSION]\n ],\n // #if _VERBOSE\n ASTNode.SimpleStatement.pool\n // #endif\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.declaration,\n [\n [NoneTerminal.function_prototype, ETokenType.SEMICOLON],\n [NoneTerminal.init_declarator_list, ETokenType.SEMICOLON],\n [\n Keyword.PRECISION,\n NoneTerminal.precision_qualifier,\n NoneTerminal.ext_builtin_type_specifier_nonarray,\n ETokenType.SEMICOLON\n ],\n [NoneTerminal.type_qualifier, ETokenType.ID, ETokenType.SEMICOLON],\n [NoneTerminal.type_qualifier, ETokenType.ID, NoneTerminal.identifier_list, ETokenType.SEMICOLON]\n ],\n ASTNode.Declaration.pool\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.identifier_list,\n [\n [ETokenType.COMMA, ETokenType.ID],\n [NoneTerminal.identifier_list, ETokenType.COMMA, ETokenType.ID]\n ],\n ASTNode.IdentifierList.pool\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.init_declarator_list,\n [\n [NoneTerminal.single_declaration],\n [NoneTerminal.init_declarator_list, ETokenType.COMMA, ETokenType.ID],\n [NoneTerminal.init_declarator_list, ETokenType.COMMA, ETokenType.ID, NoneTerminal.array_specifier],\n [\n NoneTerminal.init_declarator_list,\n ETokenType.COMMA,\n ETokenType.ID,\n NoneTerminal.array_specifier,\n ETokenType.EQUAL,\n NoneTerminal.initializer\n ],\n [NoneTerminal.init_declarator_list, ETokenType.COMMA, ETokenType.ID, ETokenType.EQUAL, NoneTerminal.initializer]\n ],\n ASTNode.InitDeclaratorList.pool\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.single_declaration,\n [\n [NoneTerminal.fully_specified_type, ETokenType.ID],\n [NoneTerminal.fully_specified_type, ETokenType.ID, NoneTerminal.array_specifier],\n [\n NoneTerminal.fully_specified_type,\n ETokenType.ID,\n NoneTerminal.array_specifier,\n ETokenType.EQUAL,\n NoneTerminal.initializer\n ],\n [NoneTerminal.fully_specified_type, ETokenType.ID, ETokenType.EQUAL, NoneTerminal.initializer],\n // Declarator name collides with a `#define` from a sibling `#if expr` arm\n // whose value the lexer can't evaluate. Branch-mutex covers `#if`/`#else`\n // pairs; this variant is the fallback for cross-`#if` collisions (e.g.\n // FXAA's `#define lumaNW …` shadowing `FxaaFloat lumaNW = …`).\n [NoneTerminal.fully_specified_type, Keyword.MACRO_CALL],\n [NoneTerminal.fully_specified_type, Keyword.MACRO_CALL, ETokenType.EQUAL, NoneTerminal.initializer]\n ],\n ASTNode.SingleDeclaration.pool\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.initializer,\n [\n [NoneTerminal.assignment_expression],\n [ETokenType.LEFT_BRACE, NoneTerminal.initializer_list, ETokenType.RIGHT_BRACE]\n ],\n // #if _VERBOSE\n ASTNode.Initializer.pool\n // #endif\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.initializer_list,\n [[NoneTerminal.initializer], [NoneTerminal.initializer_list, ETokenType.COMMA, NoneTerminal.initializer]],\n // #if _VERBOSE\n ASTNode.InitializerList.pool\n // #endif\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.expression_statement,\n [[ETokenType.SEMICOLON], [NoneTerminal.expression, ETokenType.SEMICOLON]],\n // #if _VERBOSE\n ASTNode.ExpressionStatement.pool\n // #endif\n ),\n\n // dangling else ambiguity\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.selection_statement,\n [\n [Keyword.IF, ETokenType.LEFT_PAREN, NoneTerminal.expression, ETokenType.RIGHT_PAREN, NoneTerminal.statement],\n [\n Keyword.IF,\n ETokenType.LEFT_PAREN,\n NoneTerminal.expression,\n ETokenType.RIGHT_PAREN,\n NoneTerminal.statement,\n Keyword.ELSE,\n NoneTerminal.statement\n ]\n ],\n // #if _VERBOSE\n ASTNode.SelectionStatement.pool\n // #endif\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.iteration_statement,\n [\n [Keyword.WHILE, ETokenType.LEFT_PAREN, NoneTerminal.condition, ETokenType.RIGHT_PAREN, NoneTerminal.statement],\n [\n Keyword.FOR,\n ETokenType.LEFT_PAREN,\n NoneTerminal.for_init_statement,\n NoneTerminal.for_rest_statement,\n ETokenType.RIGHT_PAREN,\n NoneTerminal.statement\n ]\n ],\n // #if _VERBOSE\n ASTNode.IterationStatement.pool\n // #endif\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.precision_specifier,\n [\n [\n Keyword.PRECISION,\n NoneTerminal.precision_qualifier,\n NoneTerminal.ext_builtin_type_specifier_nonarray,\n ETokenType.SEMICOLON\n ]\n ],\n ASTNode.PrecisionSpecifier.pool\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.for_init_statement,\n [[NoneTerminal.expression_statement], [NoneTerminal.declaration]],\n // #if _VERBOSE\n ASTNode.ForInitStatement.pool\n // #endif\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.condition,\n [\n [NoneTerminal.expression],\n [NoneTerminal.fully_specified_type, ETokenType.ID, ETokenType.EQUAL, NoneTerminal.initializer]\n ],\n // #if _VERBOSE\n ASTNode.Condition.pool\n // #endif\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.for_rest_statement,\n [\n [NoneTerminal.conditionopt, ETokenType.SEMICOLON],\n [NoneTerminal.conditionopt, ETokenType.SEMICOLON, NoneTerminal.expression]\n ],\n // #if _VERBOSE\n ASTNode.ForRestStatement.pool\n // #endif\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.conditionopt,\n [[ETokenType.EPSILON], [NoneTerminal.condition]],\n // #if _VERBOSE\n ASTNode.ConditionOpt.pool\n // #endif\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.jump_statement,\n [\n [Keyword.CONTINUE, ETokenType.SEMICOLON],\n [Keyword.BREAK, ETokenType.SEMICOLON],\n [Keyword.RETURN, ETokenType.SEMICOLON],\n [Keyword.RETURN, NoneTerminal.expression, ETokenType.SEMICOLON],\n [Keyword.DISCARD, ETokenType.SEMICOLON]\n ],\n ASTNode.JumpStatement.pool\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.scope_brace,\n [[ETokenType.LEFT_BRACE]],\n ASTNode.ScopeBrace.pool\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.scope_end_brace,\n [[ETokenType.RIGHT_BRACE]],\n ASTNode.ScopeEndBrace.pool\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.variable_identifier,\n [[ETokenType.ID], [NoneTerminal.macro_call_symbol], [NoneTerminal.macro_call_function]],\n ASTNode.VariableIdentifier.pool\n ),\n\n // Macros ...\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.macro_if_statement,\n [\n [NoneTerminal.macro_push_context, NoneTerminal.statement_list, NoneTerminal.macro_branch],\n [NoneTerminal.macro_push_context, NoneTerminal.macro_branch]\n ],\n ASTNode.MacroIfStatement.pool\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.macro_branch,\n [\n [NoneTerminal.macro_pop_context],\n [NoneTerminal.macro_elif_expression, NoneTerminal.statement_list, NoneTerminal.macro_branch],\n [NoneTerminal.macro_else_expression, NoneTerminal.statement_list, NoneTerminal.macro_pop_context],\n [NoneTerminal.macro_elif_expression, NoneTerminal.macro_branch],\n [NoneTerminal.macro_else_expression, NoneTerminal.macro_pop_context]\n ],\n ASTNode.MacroBranch.pool\n )\n];\n\nconst createGrammar = () =>\n Grammar.create(\n NoneTerminal.gs_shader_program,\n productionAndRules.map((item) => item[0])\n );\n\nconst addTranslationRule = (sa: SemanticAnalyzer) => {\n for (let i = 0; i < productionAndRules.length; i++) {\n const rule = productionAndRules[i][1];\n if (rule) {\n sa.addTranslationRule(i, rule);\n }\n }\n};\n\nexport { addTranslationRule, createGrammar };\n","import { ETokenType } from \"../common\";\nimport { BaseToken } from \"../common/BaseToken\";\nimport { GSError, GSErrorName } from \"../GSError\";\nimport { LALR1 } from \"../lalr\";\nimport { addTranslationRule, createGrammar } from \"../lalr/CFG\";\nimport { EAction, StateActionTable, StateGotoTable } from \"../lalr/types\";\nimport { MacroDefineList } from \"../Preprocessor\";\nimport { ParserUtils } from \"../ParserUtils\";\nimport { ShaderCompiler } from \"../ShaderCompiler\";\nimport { ShaderCompilerUtils } from \"../ShaderCompilerUtils\";\nimport { ASTNode, TreeNode } from \"./AST\";\nimport { Grammar } from \"./Grammar\";\nimport { GrammarSymbol, NoneTerminal } from \"./GrammarSymbol\";\nimport SematicAnalyzer from \"./SemanticAnalyzer\";\nimport { TraceStackItem } from \"./types\";\n\n/**\n * The syntax parser and sematic analyzer of `ShaderCompiler` compiler\n */\nexport class ShaderTargetParser {\n readonly actionTable: StateActionTable;\n readonly gotoTable: StateGotoTable;\n readonly grammar: Grammar;\n readonly sematicAnalyzer: SematicAnalyzer;\n private _traceBackStack: (TraceStackItem | number)[] = [];\n\n private get curState() {\n return this._traceBackStack[this._traceBackStack.length - 1] as number;\n }\n private get stateActionTable() {\n return this.actionTable.get(this.curState)!;\n }\n private get stateGotoTable() {\n return this.gotoTable.get(this.curState);\n }\n\n // #if _VERBOSE\n /** @internal */\n get errors() {\n return this.sematicAnalyzer.errors;\n }\n // #endif\n\n static _singleton: ShaderTargetParser;\n\n static create() {\n if (!this._singleton) {\n const grammar = createGrammar();\n const generator = new LALR1(grammar);\n generator.generate();\n this._singleton = new ShaderTargetParser(generator.actionTable, generator.gotoTable, grammar);\n addTranslationRule(this._singleton.sematicAnalyzer);\n }\n\n return this._singleton;\n }\n\n private constructor(actionTable: StateActionTable, gotoTable: StateGotoTable, grammar: Grammar) {\n this.actionTable = actionTable;\n this.gotoTable = gotoTable;\n this.grammar = grammar;\n this.sematicAnalyzer = new SematicAnalyzer();\n }\n\n parse(tokens: Generator<BaseToken, BaseToken>, macroDefineList: MacroDefineList): ASTNode.GLShaderProgram | null {\n this.sematicAnalyzer.reset(macroDefineList);\n const { _traceBackStack: traceBackStack, sematicAnalyzer } = this;\n traceBackStack.push(0);\n\n let nextToken = tokens.next();\n while (true) {\n const token = nextToken.value;\n\n const actionInfo = this.stateActionTable.get(token.type);\n if (actionInfo?.action === EAction.Shift) {\n traceBackStack.push(token, actionInfo.target!);\n nextToken = tokens.next();\n } else if (actionInfo?.action === EAction.Accept) {\n sematicAnalyzer.acceptRule?.(sematicAnalyzer);\n return sematicAnalyzer.semanticStack.pop() as ASTNode.GLShaderProgram;\n } else if (actionInfo?.action === EAction.Reduce) {\n const target = actionInfo.target!;\n const reduceProduction = this.grammar.getProductionByID(target)!;\n const translationRule = sematicAnalyzer.getTranslationRule(reduceProduction.id);\n\n const values: (TreeNode | BaseToken)[] = [];\n\n for (let i = reduceProduction.derivation.length - 1; i >= 0; i--) {\n if (reduceProduction.derivation[i] === ETokenType.EPSILON) continue;\n traceBackStack.pop();\n const token = traceBackStack.pop();\n if (token instanceof BaseToken) {\n values.unshift(token);\n } else {\n const astNode = sematicAnalyzer.semanticStack.pop()!;\n values.unshift(astNode);\n }\n }\n translationRule?.(sematicAnalyzer, ...values);\n\n const gotoTable = this.stateGotoTable;\n traceBackStack.push(reduceProduction.goal);\n\n const nextState = gotoTable?.get(reduceProduction.goal)!;\n traceBackStack.push(nextState);\n continue;\n } else {\n const error = ShaderCompilerUtils.createGSError(\n `Unexpected token ${token.lexeme}`,\n GSErrorName.CompilationError,\n ShaderCompiler._processingPassText,\n token.location\n );\n // #if _VERBOSE\n this.sematicAnalyzer.errors.push(<GSError>error);\n // #endif\n return null;\n }\n }\n }\n\n // #if _VERBOSE\n private _printStack(nextToken: BaseToken) {\n let str = \"\";\n for (let i = 0; i < this._traceBackStack.length - 1; i++) {\n const state = <NoneTerminal>this._traceBackStack[i++];\n const token = this._traceBackStack[i];\n str += `State${state} - ${(<BaseToken>token).lexeme ?? ParserUtils.toString(token as GrammarSymbol)}; `;\n }\n str += `State${this._traceBackStack[this._traceBackStack.length - 1]} --- ${nextToken.lexeme}`;\n console.info(str);\n }\n // #endif\n}\n","import type { ASTNode } from \"./parser/AST\";\nimport type { BranchSignature } from \"./common/BaseToken\";\n\n// Mirrors `ShaderPass._shaderRootPath`; inlined to keep shader-compiler standalone.\nconst SHADER_ROOT_PATH = \"shaders://root/\";\n\nexport type IncludeMap = { readonly [includeName: string]: string | undefined };\n\nexport type ChunkOutputCache = Map<string, string>;\n\n/**\n * Record for a single `#define` directive. `valueAst` is set for expression\n * macros (joined into the AST pipeline); opaque macros leave it undefined and\n * are emitted verbatim to the GLSL driver.\n */\nexport interface MacroDefineInfo {\n isFunction: boolean;\n name: string;\n params: string[];\n valueAst?: ASTNode.AssignmentExpression;\n /** Leading identifier of the value (`#define F foo` → `foo`, `#define F foo(a)`\n * → `foo`), or empty for literals / operator expressions. Drives symbol-table\n * lookup at macro call sites. */\n referenceName: string;\n /** Branch signature at the point of registration. The same `#define` repeated\n * in different `#ifdef` branches produces multiple entries with different\n * signatures; call sites filter to those visible from their own position. */\n branch: BranchSignature;\n}\n\nexport interface MacroDefineList {\n [macroName: string]: MacroDefineInfo[];\n}\n\nexport class Preprocessor {\n // Block-comment alternation prevents expanding `#include` inside doc comments.\n private static readonly _includeReg = /\\/\\*[\\s\\S]*?\\*\\/|^[ \\t]*#include +\"([\\w\\d./]+)\"/gm;\n\n static parse(\n source: string,\n basePathForIncludeKey: string,\n includeMap: IncludeMap,\n chunkOutputCache: ChunkOutputCache\n ): string {\n return source.replace(this._includeReg, (match, includeName) =>\n includeName ? this._replace(includeName, basePathForIncludeKey, includeMap, chunkOutputCache) : match\n );\n }\n\n private static _replace(\n includeName: string,\n basePathForIncludeKey: string,\n includeMap: IncludeMap,\n chunkOutputCache: ChunkOutputCache\n ): string {\n let path: string;\n if (includeName[0] === \".\") {\n path = new URL(includeName, basePathForIncludeKey).href.substring(SHADER_ROOT_PATH.length);\n } else {\n path = includeName;\n }\n\n const chunk = includeMap[path];\n if (!chunk) {\n console.error(`Shader slice \"${path}\" not founded.`);\n return \"\";\n }\n\n let cached = chunkOutputCache.get(path);\n if (cached === undefined) {\n cached = this.parse(chunk, basePathForIncludeKey, includeMap, chunkOutputCache);\n chunkOutputCache.set(path, cached);\n }\n return cached;\n }\n}\n","function _extends() {\n _extends = Object.assign || function assign(target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n for (var key in source) if (Object.prototype.hasOwnProperty.call(source, key)) target[key] = source[key];\n }\n\n return target;\n };\n\n return _extends.apply(this, arguments);\n}\nexport { _extends as _ };\n","import type { IRenderStates, IShaderPassSource, IShaderSource, ISubShaderSource } from \"@galacean/engine-design\";\n\nexport class ShaderSourceFactory {\n static createRenderStates(): IRenderStates {\n return {\n constantMap: {},\n variableMap: {}\n };\n }\n\n static createShaderSource(name: string): IShaderSource {\n return {\n name,\n subShaders: [],\n pendingContents: [],\n renderStates: this.createRenderStates()\n };\n }\n\n static createSubShaderSource(name: string): ISubShaderSource {\n return {\n name,\n passes: [],\n pendingContents: [],\n tags: {},\n renderStates: this.createRenderStates()\n };\n }\n\n static createShaderPassSource(name: string): IShaderPassSource {\n return {\n name,\n pendingContents: [],\n tags: {},\n renderStates: this.createRenderStates()\n } as IShaderPassSource;\n }\n\n static createUsePass(name: string): IShaderPassSource {\n return {\n name,\n pendingContents: [],\n isUsePass: true,\n tags: {},\n renderStates: this.createRenderStates()\n } as IShaderPassSource;\n }\n}\n","import { IBaseSymbol } from \"../common/IBaseSymbol\";\n\nexport class ShaderSourceSymbol implements IBaseSymbol {\n public isInMacroBranch: boolean = false;\n\n constructor(\n public ident: string,\n public type: number,\n public value?: any\n ) {}\n\n set(ident: string, type: number, value?: any): void {\n this.ident = ident;\n this.type = type;\n this.value = value;\n }\n\n equal(other: ShaderSourceSymbol): boolean {\n return this.type === other.type;\n }\n}\n","import { Color } from \"@galacean/engine-math\";\nimport { ETokenType, ShaderPosition, ShaderRange } from \"../common\";\nimport { BaseLexer } from \"../common/BaseLexer\";\nimport { BaseToken } from \"../common/BaseToken\";\nimport { Keyword } from \"../common/enums/Keyword\";\nimport { GSErrorName } from \"../GSError\";\nimport { ShaderCompiler } from \"../ShaderCompiler\";\nimport { ShaderCompilerUtils } from \"../ShaderCompilerUtils\";\n\nexport default class SourceLexer extends BaseLexer {\n hasPendingContent = false;\n\n private static _keywordLexemeTable = <Record<string, Keyword>>{\n RenderQueueType: Keyword.GSRenderQueueType,\n BlendState: Keyword.GSBlendState,\n DepthState: Keyword.GSDepthState,\n StencilState: Keyword.GSStencilState,\n RasterState: Keyword.GSRasterState,\n EditorProperties: Keyword.GSEditorProperties,\n EditorMacros: Keyword.GSEditorMacros,\n Editor: Keyword.GSEditor,\n Tags: Keyword.GSTags,\n VertexShader: Keyword.GSVertexShader,\n FragmentShader: Keyword.GSFragmentShader,\n SubShader: Keyword.GSSubShader,\n Pass: Keyword.GSPass,\n BlendFactor: Keyword.GSBlendFactor,\n BlendOperation: Keyword.GSBlendOperation,\n Bool: Keyword.GSBool,\n Number: Keyword.GSNumber,\n Color: Keyword.GSColor,\n CompareFunction: Keyword.GSCompareFunction,\n StencilOperation: Keyword.GSStencilOperation,\n CullMode: Keyword.GSCullMode,\n ColorWriteMask: Keyword.GSColorWriteMask,\n UsePass: Keyword.GSUsePass,\n\n true: Keyword.True,\n false: Keyword.False\n };\n\n private static _symbolLexemeTable = <Record<string, Keyword>>{\n \"{\": Keyword.LeftBrace,\n \"}\": Keyword.RightBrace,\n \"=\": Keyword.Equal,\n \"|\": Keyword.BitwiseOr\n };\n\n private static _isWordSeparatorChar(charCode: number): boolean {\n return (\n charCode === 123 || // {\n charCode === 125 || // }\n charCode === 61 || // =\n charCode === 59 || // ;\n charCode === 46 || // . CullMode.Back\n charCode === 91 || // [ Enabled[0],\n charCode === 40 || // ( Color(1.0, 1.0, 1.0, 1.0);\n charCode === 124 // | ColorWriteMask.Red | ColorWriteMask.Green\n );\n }\n\n private static _scanDigits(source: string, startIndex: number): number {\n let currentIndex = startIndex;\n while (currentIndex < source.length) {\n const charCode = source.charCodeAt(currentIndex);\n if (BaseLexer.isDigit(charCode)) {\n currentIndex++;\n } else {\n break;\n }\n }\n return currentIndex;\n }\n\n scanNumber(): number {\n this.skipCommentsAndSpace();\n const start = this._currentIndex;\n const source = this._source;\n let index = this._currentIndex;\n\n // Scan integer part\n index = SourceLexer._scanDigits(source, index);\n\n // Scan decimal part if present\n if (source[index] === \".\") {\n index = SourceLexer._scanDigits(source, index + 1);\n }\n\n this.advance(index - this._currentIndex);\n return Number(source.substring(start, index));\n }\n\n scanColor(): Color {\n this.scanLexeme(\"(\");\n\n let r = 0;\n let g = 0;\n let b = 0;\n let a = 1;\n\n r = this.scanNumber();\n this.skipCommentsAndSpace();\n if (this.peek(1) !== \")\") {\n this.scanLexeme(\",\");\n g = this.scanNumber();\n this.skipCommentsAndSpace();\n if (this.peek(1) !== \")\") {\n this.scanLexeme(\",\");\n b = this.scanNumber();\n this.skipCommentsAndSpace();\n if (this.peek(1) !== \")\") {\n this.scanLexeme(\",\");\n a = this.scanNumber();\n this.skipCommentsAndSpace();\n }\n }\n }\n\n this.scanLexeme(\")\");\n return new Color(r, g, b, a);\n }\n\n override scanToken(): BaseToken {\n while (true) {\n this.skipCommentsAndSpace();\n\n if (this.isEnd()) {\n return;\n }\n\n const start = this.getShaderPosition(0);\n if (BaseLexer.isAlpha(this.getCurCharCode())) {\n const wordToken = this._scanWord(start);\n if (wordToken !== null) {\n return wordToken;\n }\n this.hasPendingContent = true;\n continue; // Continue loop to scan next token if word was invalid\n }\n\n const currentChar = this.getCurChar();\n const symbolKeyword = SourceLexer._symbolLexemeTable[currentChar];\n if (symbolKeyword !== undefined) {\n this.advance(1);\n const token = BaseToken.pool.get();\n token.set(symbolKeyword, currentChar, start);\n return token;\n }\n\n // Skip unrecognized character and continue\n this.advance(1);\n }\n }\n\n // #if _VERBOSE\n scanToCharacter(char: string): void {\n while (this.getCurChar() !== char && !this.isEnd()) {\n this.advance(1);\n }\n this.advance(1);\n }\n // #endif\n\n createCompileError(message: string, location?: ShaderPosition | ShaderRange) {\n return ShaderCompilerUtils.createGSError(\n message,\n GSErrorName.CompilationError,\n this.source,\n location ?? this.getShaderPosition(0)\n );\n }\n\n private _scanWord(start: ShaderPosition): BaseToken | null {\n // Scan the complete word first\n while (BaseLexer.isAlnum(this.getCurCharCode()) && !this.isEnd()) {\n this.advance(1);\n }\n const end = this.getShaderPosition(0);\n\n // Validate both boundaries in one optimized call\n if (!this._validateWordBoundaries(start.index, end.index)) {\n return null; // Invalid word due to boundary violation\n }\n\n const lexeme = this._source.substring(start.index, end.index);\n const tokenType = SourceLexer._keywordLexemeTable[lexeme] ?? ETokenType.ID;\n const range = ShaderCompiler.createRange(start, end);\n const token = BaseToken.pool.get();\n token.set(tokenType, lexeme, range);\n return token;\n }\n\n private _validateWordBoundaries(startIndex: number, endIndex: number): boolean {\n const source = this._source;\n\n // Check previous boundary\n if (startIndex > 0) {\n const prevCharCode = source.charCodeAt(startIndex - 1);\n if (!this._isValidWordBoundary(prevCharCode)) {\n return false;\n }\n }\n\n // Check next boundary\n if (endIndex < source.length) {\n const nextCharCode = source.charCodeAt(endIndex);\n if (!this._isValidWordBoundary(nextCharCode)) {\n return false;\n }\n }\n\n return true;\n }\n\n private _isValidWordBoundary(charCode: number): boolean {\n return BaseLexer.isWhiteSpaceChar(charCode, true) || SourceLexer._isWordSeparatorChar(charCode);\n }\n}\n","import { Color } from \"@galacean/engine-math\";\nimport {\n BlendFactor,\n BlendOperation,\n ColorWriteMask,\n CompareFunction,\n CullMode,\n RenderQueueType,\n RenderStateElementKey,\n StencilOperation\n} from \"@galacean/engine-core\";\nimport type {\n IRenderStates,\n IShaderPassSource,\n IShaderSource,\n IStatement,\n ISubShaderSource\n} from \"@galacean/engine-design\";\nimport { ETokenType, ShaderPosition, ShaderRange } from \"../common\";\nimport { BaseToken } from \"../common/BaseToken\";\nimport { SymbolTableStack } from \"../common/SymbolTableStack\";\nimport { GSErrorName } from \"../GSError\";\n// #if _VERBOSE\nimport { GSError } from \"../GSError\";\n// #endif\nimport { BaseLexer } from \"../common/BaseLexer\";\nimport { Keyword } from \"../common/enums/Keyword\";\nimport { SymbolTable } from \"../common/SymbolTable\";\nimport { ShaderCompilerUtils } from \"../ShaderCompilerUtils\";\nimport { ShaderSourceFactory } from \"./ShaderSourceFactory\";\nimport { ShaderSourceSymbol } from \"./ShaderSourceSymbol\";\nimport SourceLexer from \"./SourceLexer\";\n\n/**\n * @internal\n */\nexport class ShaderSourceParser {\n static readonly errors = new Array<GSError>();\n\n private static _renderStateConstMap = <Record<string, Record<string, number | string | boolean>>>{\n RenderQueueType,\n CompareFunction,\n StencilOperation,\n BlendOperation,\n BlendFactor,\n CullMode,\n ColorWriteMask\n };\n private static _symbolTableStack = new SymbolTableStack<ShaderSourceSymbol, SymbolTable<ShaderSourceSymbol>>();\n private static _lexer = new SourceLexer();\n private static _lookupSymbol = new ShaderSourceSymbol(\"\", null);\n\n static parse(sourceCode: string): IShaderSource {\n // Clear previous data\n this.errors.length = 0;\n this._symbolTableStack.clear();\n this._pushScope();\n\n const lexer = this._lexer;\n lexer.setSource(sourceCode);\n\n const shaderSource = this._parseShader(lexer);\n\n const shaderPendingContents = shaderSource.pendingContents;\n const shaderRenderStates = shaderSource.renderStates;\n for (let i = 0, n = shaderSource.subShaders.length; i < n; i++) {\n const subShader = shaderSource.subShaders[i];\n const curSubShaderGlobalStatements = shaderPendingContents.concat(subShader.pendingContents);\n const globalSubShaderStates = {\n constantMap: { ...shaderRenderStates.constantMap },\n variableMap: { ...shaderRenderStates.variableMap }\n };\n this._mergeRenderStates(globalSubShaderStates, subShader.renderStates);\n\n for (let j = 0, m = subShader.passes.length; j < m; j++) {\n const pass = subShader.passes[j];\n const globalPassRenderStates = {\n constantMap: { ...globalSubShaderStates.constantMap },\n variableMap: { ...globalSubShaderStates.variableMap }\n };\n this._mergeRenderStates(globalPassRenderStates, pass.renderStates);\n pass.renderStates = globalPassRenderStates;\n\n if (pass.isUsePass) continue;\n const passGlobalStatements = curSubShaderGlobalStatements.concat(pass.pendingContents);\n pass.contents = passGlobalStatements.map((item) => item.content).join(\"\\n\");\n }\n }\n\n return shaderSource;\n }\n\n private static _parseShader(lexer: SourceLexer): IShaderSource {\n // Parse shader header\n lexer.scanLexeme(\"Shader\");\n const name = lexer.scanPairedChar('\"', '\"', false, false);\n const shaderSource = ShaderSourceFactory.createShaderSource(name);\n lexer.scanLexeme(\"{\");\n\n let braceLevel = 1;\n lexer.skipCommentsAndSpace();\n let start = lexer.getShaderPosition(0);\n\n const { pendingContents } = shaderSource;\n while (true) {\n const token = lexer.scanToken();\n switch (token.type) {\n case Keyword.GSSubShader:\n this._addPendingContents(start, token.lexeme.length, pendingContents);\n const subShader = this._parseSubShader();\n shaderSource.subShaders.push(subShader);\n start = lexer.getShaderPosition(0);\n break;\n case Keyword.GSEditorProperties:\n case Keyword.GSEditorMacros:\n case Keyword.GSEditor:\n this._addPendingContents(start, token.lexeme.length, pendingContents);\n lexer.scanPairedChar(\"{\", \"}\", true, false);\n start = lexer.getShaderPosition(0);\n break;\n case Keyword.LeftBrace:\n ++braceLevel;\n break;\n case Keyword.RightBrace:\n if (--braceLevel === 0) {\n this._addPendingContents(start, token.lexeme.length, pendingContents);\n this._popScope();\n return shaderSource;\n }\n break;\n default:\n start = this._parseRenderState(token, start, pendingContents, shaderSource.renderStates);\n }\n }\n }\n\n private static _parseRenderStateDeclarationOrAssignment(outRenderStates: IRenderStates, stateToken: BaseToken): void {\n const lexer = this._lexer;\n const token = lexer.scanToken();\n if (token.type === ETokenType.ID) {\n // Declaration\n lexer.scanLexeme(\"{\");\n const renderState = this._parseRenderStateProperties(stateToken.lexeme);\n const symbol = new ShaderSourceSymbol(token.lexeme, stateToken.type, renderState);\n this._symbolTableStack.insert(symbol);\n } else if (token.lexeme === \"=\") {\n // Check if it's direct assignment syntax sugar or variable assignment\n const nextToken = lexer.scanToken();\n\n let renderState: IRenderStates;\n if (nextToken.lexeme === \"{\") {\n // Syntax: DepthState = { ... }\n renderState = this._parseRenderStateProperties(stateToken.lexeme);\n } else {\n // Syntax: DepthState = customDepthState;\n lexer.scanLexeme(\";\");\n const lookupSymbol = this._lookupSymbol;\n lookupSymbol.set(nextToken.lexeme, stateToken.type);\n const sm = this._symbolTableStack.lookup(lookupSymbol);\n if (!sm?.value) {\n this._createCompileError(`Invalid \"${stateToken.lexeme}\" variable: ${nextToken.lexeme}`, nextToken.location);\n // #if _VERBOSE\n return;\n // #endif\n }\n renderState = sm.value as IRenderStates;\n }\n this._mergeRenderStates(outRenderStates, renderState);\n }\n }\n\n private static _mergeRenderStates(outTarget: IRenderStates, source: IRenderStates): void {\n // For each key in the source, remove it from the opposite map in target to ensure proper override\n const { constantMap: targetConstantMap, variableMap: targetVariableMap } = outTarget;\n const { constantMap: sourceConstantMap, variableMap: sourceVariableMap } = source;\n\n for (const key in sourceConstantMap) {\n delete targetVariableMap[key];\n targetConstantMap[key] = sourceConstantMap[key];\n }\n\n for (const key in sourceVariableMap) {\n delete targetConstantMap[key];\n targetVariableMap[key] = sourceVariableMap[key];\n }\n }\n\n private static _parseVariableDeclaration(): void {\n const lexer = this._lexer;\n const token = lexer.scanToken();\n lexer.scanLexeme(\";\");\n const symbol = new ShaderSourceSymbol(token.lexeme, token.type);\n this._symbolTableStack.insert(symbol);\n }\n\n private static _pushScope(): void {\n const symbolTable = new SymbolTable<ShaderSourceSymbol>();\n this._symbolTableStack.pushScope(symbolTable);\n }\n\n private static _popScope(): void {\n this._symbolTableStack.popScope();\n }\n\n private static _parseRenderStateProperties(state: string): IRenderStates {\n const lexer = this._lexer;\n const renderStates = ShaderSourceFactory.createRenderStates();\n while (lexer.getCurChar() !== \"}\") {\n this._parseRenderStateProperty(state, renderStates);\n lexer.skipCommentsAndSpace();\n }\n lexer.advance(1);\n return renderStates;\n }\n\n private static _createCompileError(message: string, location?: ShaderPosition | ShaderRange): void {\n const error = this._lexer.createCompileError(message, location);\n // #if _VERBOSE\n this.errors.push(<GSError>error);\n // #endif\n }\n\n private static _scanEnumConstValue(enumName: string): number | undefined {\n const lexer = this._lexer;\n lexer.advance(1);\n const constValueToken = lexer.scanToken();\n const value = this._renderStateConstMap[enumName]?.[constValueToken.lexeme] as number;\n if (value == undefined) {\n this._createCompileError(\n `Invalid engine constant: ${enumName}.${constValueToken.lexeme}`,\n constValueToken.location\n );\n // #if _VERBOSE\n lexer.scanToCharacter(\";\");\n // #endif\n }\n return value;\n }\n\n private static _parseRenderStateProperty(stateLexeme: string, out: IRenderStates): void {\n const lexer = this._lexer;\n const propertyToken = lexer.scanToken();\n const propertyLexeme = propertyToken.lexeme;\n let stateElementKey = propertyLexeme;\n if (stateLexeme === \"BlendState\" && propertyLexeme !== \"BlendColor\" && propertyLexeme !== \"AlphaToCoverage\") {\n let keyIndex = 0;\n const scannedLexeme = lexer.scanTwoExpectedLexemes(\"[\", \"=\");\n if (scannedLexeme === \"[\") {\n keyIndex = lexer.scanNumber();\n lexer.scanLexeme(\"]\");\n lexer.scanLexeme(\"=\");\n } else if (scannedLexeme !== \"=\") {\n this._createCompileError(`Invalid syntax, expect '[' or '=', but got unexpected token`);\n // #if _VERBOSE\n lexer.scanToCharacter(\";\");\n return;\n // #endif\n }\n stateElementKey += keyIndex;\n } else {\n lexer.scanLexeme(\"=\");\n }\n\n const renderStateElementKey = RenderStateElementKey[stateLexeme + stateElementKey];\n if (renderStateElementKey === undefined) {\n this._createCompileError(`Invalid render state property ${propertyLexeme}`);\n // #if _VERBOSE\n lexer.scanToCharacter(\";\");\n return;\n // #endif\n }\n\n lexer.skipCommentsAndSpace();\n let propertyValue: number | string | boolean | Color;\n\n const curCharCode = lexer.getCurCharCode();\n if (BaseLexer.isDigit(curCharCode) || curCharCode === 46) {\n // Digit or '.'\n propertyValue = lexer.scanNumber();\n } else {\n const valueToken = lexer.scanToken();\n const valueTokenType = valueToken.type;\n\n if (valueTokenType === Keyword.True) {\n propertyValue = true;\n } else if (valueTokenType === Keyword.False) {\n propertyValue = false;\n } else if (valueTokenType === Keyword.GSColor) {\n propertyValue = lexer.scanColor();\n } else if (lexer.getCurChar() === \".\") {\n propertyValue = this._scanEnumConstValue(valueToken.lexeme);\n if (propertyValue == undefined) return;\n // Support bitwise OR only for bitmask enums (e.g. ColorWriteMask)\n lexer.skipCommentsAndSpace();\n if (lexer.getCurChar() === \"|\") {\n if (valueToken.lexeme !== \"ColorWriteMask\") {\n this._createCompileError(\n `Bitwise OR '|' is not supported for '${valueToken.lexeme}', only bitmask enums like 'ColorWriteMask' support this`,\n valueToken.location\n );\n // #if _VERBOSE\n lexer.scanToCharacter(\";\");\n // #endif\n return;\n }\n while (lexer.getCurChar() === \"|\") {\n lexer.advance(1);\n const nextEnumToken = lexer.scanToken();\n if (nextEnumToken == undefined || lexer.getCurChar() !== \".\") {\n this._createCompileError(`Invalid syntax after '|', expect 'EnumType.Value'`, nextEnumToken?.location);\n // #if _VERBOSE\n lexer.scanToCharacter(\";\");\n // #endif\n return;\n }\n if (nextEnumToken.lexeme !== valueToken.lexeme) {\n this._createCompileError(\n `Cannot mix enum types in bitwise OR: expected '${valueToken.lexeme}' but got '${nextEnumToken.lexeme}'`,\n nextEnumToken.location\n );\n // #if _VERBOSE\n lexer.scanToCharacter(\";\");\n // #endif\n return;\n }\n const nextValue = this._scanEnumConstValue(nextEnumToken.lexeme);\n if (nextValue == undefined) return;\n propertyValue = (<number>propertyValue) | (<number>nextValue);\n lexer.skipCommentsAndSpace();\n }\n }\n } else {\n propertyValue = valueToken.lexeme;\n const lookupSymbol = this._lookupSymbol;\n lookupSymbol.set(valueToken.lexeme, ETokenType.ID);\n if (!this._symbolTableStack.lookup(lookupSymbol)) {\n this._createCompileError(`Invalid ${stateLexeme} variable: ${valueToken.lexeme}`, valueToken.location);\n // #if _VERBOSE\n lexer.scanToCharacter(\";\");\n return;\n // #endif\n }\n }\n }\n lexer.scanLexeme(\";\");\n if (typeof propertyValue === \"string\") {\n out.variableMap[renderStateElementKey] = propertyValue;\n } else {\n out.constantMap[renderStateElementKey] = propertyValue;\n }\n }\n\n private static _parseRenderQueueDeclarationOrAssignment(renderStates: IRenderStates): void {\n const lexer = this._lexer;\n const token = lexer.scanToken();\n if (token.type === ETokenType.ID) {\n // Declaration\n lexer.scanLexeme(\";\");\n const symbol = new ShaderSourceSymbol(token.lexeme, Keyword.GSRenderQueueType);\n this._symbolTableStack.insert(symbol);\n return;\n }\n\n if (token.lexeme !== \"=\") {\n this._createCompileError(`Invalid syntax, expect character '=', but got ${token.lexeme}`, token.location);\n // #if _VERBOSE\n return;\n // #endif\n }\n const word = lexer.scanToken();\n lexer.scanLexeme(\";\");\n const value = this._renderStateConstMap.RenderQueueType[word.lexeme];\n const key = RenderStateElementKey.RenderQueueType;\n if (value == undefined) {\n renderStates.variableMap[key] = word.lexeme;\n const lookupSymbol = this._lookupSymbol;\n lookupSymbol.set(word.lexeme, Keyword.GSRenderQueueType);\n const sm = this._symbolTableStack.lookup(lookupSymbol);\n if (!sm) {\n this._createCompileError(`Invalid RenderQueueType variable: ${word.lexeme}`, word.location);\n // #if _VERBOSE\n return;\n // #endif\n }\n } else {\n renderStates.constantMap[key] = value;\n }\n }\n\n private static _addPendingContents(\n start: ShaderPosition,\n backOffset: number,\n outPendingContents: IStatement[]\n ): void {\n const lexer = this._lexer;\n if (lexer.hasPendingContent) {\n const endIndex = lexer.currentIndex - backOffset;\n outPendingContents.push({\n range: { start, end: { ...lexer.getShaderPosition(0), index: endIndex - 1 } },\n content: lexer.source.substring(start.index, endIndex - 1)\n });\n lexer.hasPendingContent = false;\n }\n }\n\n private static _parseSubShader(): ISubShaderSource {\n const lexer = this._lexer;\n this._pushScope();\n\n let braceLevel = 1;\n const name = lexer.scanPairedChar('\"', '\"', false, false);\n const subShaderSource = ShaderSourceFactory.createSubShaderSource(name);\n lexer.scanLexeme(\"{\");\n\n lexer.skipCommentsAndSpace();\n let start = lexer.getShaderPosition(0);\n\n while (true) {\n const token = lexer.scanToken();\n switch (token.type) {\n case Keyword.GSPass:\n this._addPendingContents(start, token.lexeme.length, subShaderSource.pendingContents);\n const pass = this._parsePass();\n subShaderSource.passes.push(pass);\n start = lexer.getShaderPosition(0);\n break;\n case Keyword.GSUsePass:\n this._addPendingContents(start, token.lexeme.length, subShaderSource.pendingContents);\n const name = lexer.scanPairedChar('\"', '\"', false, false);\n subShaderSource.passes.push(ShaderSourceFactory.createUsePass(name));\n start = lexer.getShaderPosition(0);\n break;\n case Keyword.LeftBrace:\n ++braceLevel;\n break;\n case Keyword.RightBrace:\n if (--braceLevel === 0) {\n this._addPendingContents(start, token.lexeme.length, subShaderSource.pendingContents);\n this._popScope();\n return subShaderSource;\n }\n break;\n default:\n start = this._parseRenderStateAndTags(\n token,\n start,\n subShaderSource.pendingContents,\n subShaderSource.renderStates,\n subShaderSource.tags\n );\n }\n }\n }\n\n private static _parseTags(tags: Record<string, number | string | boolean>): void {\n const lexer = this._lexer;\n lexer.scanLexeme(\"{\");\n while (true) {\n const ident = lexer.scanToken();\n lexer.scanLexeme(\"=\");\n const value = lexer.scanPairedChar('\"', '\"', false, false);\n lexer.skipCommentsAndSpace();\n\n tags[ident.lexeme] = value;\n\n if (lexer.peek(1) === \"}\") {\n lexer.advance(1);\n return;\n }\n lexer.scanLexeme(\",\");\n }\n }\n\n private static _parsePass(): IShaderPassSource {\n this._pushScope();\n const lexer = this._lexer;\n\n const name = lexer.scanPairedChar('\"', '\"', false, false);\n const passSource = ShaderSourceFactory.createShaderPassSource(name);\n lexer.scanLexeme(\"{\");\n let braceLevel = 1;\n\n lexer.skipCommentsAndSpace();\n let start = lexer.getShaderPosition(0);\n\n while (true) {\n const token = lexer.scanToken();\n switch (token.type) {\n case Keyword.GSVertexShader:\n case Keyword.GSFragmentShader:\n this._addPendingContents(start, token.lexeme.length, passSource.pendingContents);\n lexer.scanLexeme(\"=\");\n const entry = lexer.scanToken();\n if (passSource[token.lexeme]) {\n const error = ShaderCompilerUtils.createGSError(\n \"Reassign main entry\",\n GSErrorName.CompilationError,\n lexer.source,\n lexer.getShaderPosition(0)\n );\n // #if _VERBOSE\n console.error(error.toString());\n throw error;\n // #endif\n }\n const key = token.type === Keyword.GSVertexShader ? \"vertexEntry\" : \"fragmentEntry\";\n passSource[key] = entry.lexeme;\n lexer.scanLexeme(\";\");\n start = lexer.getShaderPosition(0);\n break;\n case Keyword.LeftBrace:\n ++braceLevel;\n break;\n case Keyword.RightBrace:\n if (--braceLevel === 0) {\n this._addPendingContents(start, token.lexeme.length, passSource.pendingContents);\n this._popScope();\n return passSource;\n }\n break;\n default:\n start = this._parseRenderStateAndTags(\n token,\n start,\n passSource.pendingContents,\n passSource.renderStates,\n passSource.tags\n );\n }\n }\n }\n\n private static _parseRenderStateAndTags(\n token: BaseToken<number>,\n start: ShaderPosition,\n outGlobalContents: IStatement[],\n outRenderStates: IRenderStates,\n outTags: Record<string, number | string | boolean>\n ): ShaderPosition {\n switch (token.type) {\n case Keyword.GSTags:\n this._addPendingContents(start, token.lexeme.length, outGlobalContents);\n this._parseTags(outTags);\n start = this._lexer.getShaderPosition(0);\n break;\n default:\n start = this._parseRenderState(token, start, outGlobalContents, outRenderStates);\n }\n return start;\n }\n\n private static _parseRenderState(\n token: BaseToken<number>,\n start: ShaderPosition,\n outGlobalContents: IStatement[],\n outRenderStates: IRenderStates\n ): ShaderPosition {\n switch (token.type) {\n case Keyword.GSBlendState:\n case Keyword.GSDepthState:\n case Keyword.GSRasterState:\n case Keyword.GSStencilState:\n this._addPendingContents(start, token.lexeme.length, outGlobalContents);\n this._parseRenderStateDeclarationOrAssignment(outRenderStates, token);\n start = this._lexer.getShaderPosition(0);\n break;\n case Keyword.GSBlendFactor:\n case Keyword.GSBlendOperation:\n case Keyword.GSBool:\n case Keyword.GSNumber:\n case Keyword.GSColor:\n case Keyword.GSCompareFunction:\n case Keyword.GSStencilOperation:\n case Keyword.GSCullMode:\n case Keyword.GSColorWriteMask:\n this._addPendingContents(start, token.lexeme.length, outGlobalContents);\n this._parseVariableDeclaration();\n start = this._lexer.getShaderPosition(0);\n break;\n case Keyword.GSRenderQueueType:\n this._addPendingContents(start, token.lexeme.length, outGlobalContents);\n this._parseRenderQueueDeclarationOrAssignment(outRenderStates);\n start = this._lexer.getShaderPosition(0);\n break;\n default:\n // Unrecognized tokens are defined as pending content\n this._lexer.hasPendingContent = true;\n }\n return start;\n }\n}\n","import { Color } from \"@galacean/engine-math\";\nimport { ShaderLanguage } from \"@galacean/engine-core\";\nimport type { IPrecompiledShader, IRenderStates, IShaderSource } from \"@galacean/engine-design\";\nimport type { IShaderProgramSource } from \"@galacean/engine-design/types/shader-compiler/IShaderProgramSource\";\nimport { GLES100Visitor, GLES300Visitor } from \"./codeGen\";\nimport { ShaderPosition, ShaderRange } from \"./common\";\nimport { Lexer } from \"./lexer\";\nimport { ShaderInstructionEncoder } from \"./ShaderInstructionEncoder\";\nimport { ShaderTargetParser } from \"./parser\";\nimport { Preprocessor, IncludeMap, ChunkOutputCache } from \"./Preprocessor\";\nimport { ShaderCompilerUtils } from \"./ShaderCompilerUtils\";\nimport { ShaderSourceParser } from \"./sourceParser/ShaderSourceParser\";\n\nexport class ShaderCompiler {\n private static _parser = ShaderTargetParser.create();\n private static _shaderPositionPool = ShaderCompilerUtils.createObjectPool(ShaderPosition);\n private static _shaderRangePool = ShaderCompilerUtils.createObjectPool(ShaderRange);\n\n // #if _VERBOSE\n static _processingPassText?: string;\n // #endif\n\n private _includeMap: IncludeMap = {};\n private readonly _chunkOutputCache: ChunkOutputCache = new Map();\n\n /** Replace the `#include` lookup table and clear the derived chunk cache. */\n _setIncludeMap(includeMap: IncludeMap): void {\n this._includeMap = includeMap;\n this._chunkOutputCache.clear();\n }\n\n static createPosition(index: number, line?: number, column?: number): ShaderPosition {\n const position = this._shaderPositionPool.get();\n position.set(\n index,\n // #if _VERBOSE\n line,\n column\n // #endif\n );\n return position;\n }\n\n static createRange(start: ShaderPosition, end: ShaderPosition): ShaderRange {\n const range = this._shaderRangePool.get();\n range.set(start, end);\n return range;\n }\n\n _parseShaderSource(sourceCode: string): IShaderSource {\n ShaderCompilerUtils.clearAllShaderCompilerObjectPool();\n const shaderSource = ShaderSourceParser.parse(sourceCode);\n\n // #if _VERBOSE\n this._logErrors(ShaderSourceParser.errors);\n // #endif\n\n return shaderSource;\n }\n\n _parseShaderPass(\n source: string,\n vertexEntry: string,\n fragmentEntry: string,\n backend: ShaderLanguage,\n basePathForIncludeKey: string\n ): IShaderProgramSource | undefined {\n const macroDefineList = {};\n const noIncludeContent = Preprocessor.parse(\n source,\n basePathForIncludeKey,\n this._includeMap,\n this._chunkOutputCache\n );\n\n const lexer = new Lexer(noIncludeContent, macroDefineList);\n\n const tokens = lexer.tokenize();\n const { _parser: parser } = ShaderCompiler;\n\n ShaderCompiler._processingPassText = noIncludeContent;\n\n const program = parser.parse(tokens, macroDefineList);\n\n // #if _VERBOSE\n this._logErrors(parser.errors);\n // #endif\n\n if (!program) {\n return undefined;\n }\n\n const codeGen = backend === ShaderLanguage.GLSLES100 ? GLES100Visitor.getVisitor() : GLES300Visitor.getVisitor();\n\n const ret = codeGen.visitShaderProgram(program, vertexEntry, fragmentEntry);\n ShaderCompiler._processingPassText = undefined;\n\n // #if _VERBOSE\n this._logErrors(codeGen.errors);\n // #endif\n\n if (ret) {\n ret.vertexShaderInstructions = ShaderInstructionEncoder.parse(ret.vertex);\n ret.fragmentShaderInstructions = ShaderInstructionEncoder.parse(ret.fragment);\n }\n\n return ret;\n }\n\n _precompile(sourceCode: string, platformTarget: ShaderLanguage, basePathForIncludeKey: string): IPrecompiledShader {\n const shaderSource = this._parseShaderSource(sourceCode);\n\n const subShaders = shaderSource.subShaders.map((sub) => ({\n name: sub.name,\n tags: sub.tags,\n passes: sub.passes.map((pass) => {\n if (pass.isUsePass) {\n return {\n name: pass.name,\n isUsePass: true as const,\n tags: pass.tags,\n renderStates: this._serializeRenderStates(pass.renderStates)\n };\n }\n\n const programSource = this._parseShaderPass(\n pass.contents,\n pass.vertexEntry,\n pass.fragmentEntry,\n platformTarget,\n basePathForIncludeKey\n );\n\n if (!programSource) {\n throw new Error(\n `Shader pass \"${shaderSource.name}.${sub.name}.${pass.name}\" precompile failed, please check the shader source code.`\n );\n }\n\n return {\n name: pass.name,\n isUsePass: false as const,\n tags: pass.tags,\n renderStates: this._serializeRenderStates(pass.renderStates),\n vertexShaderInstructions: programSource.vertexShaderInstructions,\n fragmentShaderInstructions: programSource.fragmentShaderInstructions\n };\n })\n }));\n\n return {\n name: shaderSource.name,\n platformTarget,\n subShaders\n };\n }\n\n private _serializeRenderStates(renderStates: IRenderStates): {\n constantMap: Record<string, number | string | boolean | number[]>;\n variableMap: Record<string, string>;\n } {\n const constantMap: Record<string, number | string | boolean | number[]> = {};\n for (const key in renderStates.constantMap) {\n const value = renderStates.constantMap[key];\n if (value instanceof Color) {\n constantMap[key] = [value.r, value.g, value.b, value.a];\n } else {\n constantMap[key] = value as number | string | boolean;\n }\n }\n return {\n constantMap,\n variableMap: renderStates.variableMap\n };\n }\n\n // #if _VERBOSE\n /**\n * @internal\n */\n _logErrors(errors: Error[]) {\n if (errors.length === 0) return;\n console.error(`${errors.length} errors occur!`);\n for (const err of errors) {\n console.error(err.toString());\n }\n }\n // #endif\n}\n","export { ShaderCompiler } from \"./ShaderCompiler\";\n\nexport * from \"./GSError\";\n\n//@ts-ignore\nexport const version = `__buildVersion`;\n\nlet mode = \"Release\";\n// #if _VERBOSE\nmode = \"Verbose\";\n// #endif\n\nconsole.log(`Galacean Engine Shader Compiler Version: ${version} | Mode: ${mode}`);\n"],"names":["ShaderRange","set","start","end","dispose","ShaderPosition","index","ETokenType","TypeAny","Keyword","ShaderCompilerUtils","createObjectPool","type","pool","ClearableObjectPool","_shaderCompilerObjectPoolSet","push","clearAllShaderCompilerObjectPool","i","n","length","clear","createGSError","message","errorName","source","location","file","console","error","EMPTY_BRANCH","BaseToken","branch","lexeme","arg","ShaderCompiler","createPosition","createRange","EOF","NoneTerminal","ParserUtils","unwrapNodeByType","node","child","children","Token","nt","parseMacroParamList","inner","replace","split","map","s","trim","filter","Boolean","extractDirectIdentLexeme","expr","cur","ASTNode","VariableIdentifier","PrimaryExpression","ExpressionAstNode","isTerminal","sm","START","GSError","name","toString","diagnosticMessage","Error","wrappingLineCount","GSErrorName","BaseLexer","_currentIndex","_source","setSource","getShaderPosition","backOffset","isEnd","getCurChar","getCurCharCode","charCodeAt","advance","count","skipSpace","includeLineBreak","isWhiteSpaceChar","skipCommentsAndSpace","afterBlock","_skipBlockComment","afterLine","_skipLineComment","peek","to","offset","substring","scanLexeme","throwError","scanTwoExpectedLexemes","lexeme1","lexeme2","pos","msgs","join","ScannerError","scanPairedChar","left","right","balanced","skipLeading","sourceLength","currentIndex","level","currentChar","isDigit","charCode","isHexDigit","isAlpha","isAlnum","isPreprocessorStartChar","src","len","j","c","includeBreak","Lexer","macroDefineList","_needScanMacroConditionExpression","_inMacroDefineValue","_macroDefineExpectsNameToken","_macroDefineExpectsParamsToken","_macroDefineDirectiveStart","_branchStack","_pendingBranchPushDefined","tokenize","tok","top","scanToken","ID","MACRO_CALL","defined","slice","MACRO_IFDEF","MACRO_IFNDEF","MACRO_IF","_ifCounter","MACRO_ELIF","MACRO_ELSE","MACRO_ENDIF","pop","_skipInlineSpaceAndComments","_isAtLineBreak","_emitMacroDefineEnd","_scanMacroDefineParams","_scanMacroConditionExpression","curCharCode","_scanDirectives","_scanWord","_scanNum","token","get","curChar","LEFT_ASSIGN","LEFT_OP","LE_OP","LEFT_ANGLE","RIGHT_ASSIGN","RIGHT_OP","GE_OP","RIGHT_ANGLE","INC_OP","ADD_ASSIGN","PLUS","DEC_OP","SUB_ASSIGN","DASH","EQ_OP","EQUAL","NE_OP","BANG","AND_OP","AND_ASSIGN","AMPERSAND","OR_OP","OR_ASSIGN","VERTICAL_BAR","XOR_OP","XOR_ASSIGN","CARET","MUL_ASSIGN","STAR","DIV_ASSIGN","SLASH","MOD_ASSIGN","PERCENT","LEFT_PAREN","RIGHT_PAREN","LEFT_BRACE","RIGHT_BRACE","LEFT_BRACKET","RIGHT_BRACKET","_scanNumAfterDot","DOT","COMMA","COLON","SEMICOLON","TILDE","QUESTION","_scanStringConst","buffer","range","STRING_CONST","_scanFloatSuffix","FLOAT_CONSTANT","_scanUtilBreakLine","outBuffer","afterContinuation","_skipLineContinuation","word","_defineHasValue","MACRO_DEFINE","_registerMacroDefine","MACRO_DEFINE_EXPRESSION","kt","_lexemeTable","_skipNonSemantic","depth","prev","next","prevIsDigit","nextIsDigit","ch","MACRO_DEFINE_PARAMS","MACRO_DEFINE_END","directive","folded","_lineContinuationReg","m","_defineDirectiveReg","exec","paramsStr","valueRaw","params","p","refMatch","_referenceReg","info","isFunction","undefined","referenceName","arr","e","every","idx","sameBranch","Array","MACRO_CONDITIONAL_EXPRESSION","_isVisibleMacro","defs","callSiteBranch","isVisibleFrom","nextCode","_scanIntegerSuffix","INT_CONSTANT","a","b","defBranch","d","from","const","CONST","bool","BOOL","float","FLOAT","double","DOUBLE","int","INT","uint","UINT","break","BREAK","continue","CONTINUE","do","DO","else","ELSE","for","FOR","if","IF","while","WHILE","discard","DISCARD","return","RETURN","bvec2","BVEC2","bvec3","BVEC3","bvec4","BVEC4","ivec2","IVEC2","ivec3","IVEC3","ivec4","IVEC4","uvec2","UVEC2","uvec3","UVEC3","uvec4","UVEC4","vec2","VEC2","vec3","VEC3","vec4","VEC4","mat2","MAT2","mat3","MAT3","mat4","MAT4","in","IN","out","OUT","inout","INOUT","sampler2D","SAMPLER2D","samplerCube","SAMPLER_CUBE","sampler3D","SAMPLER3D","sampler2DShadow","SAMPLER2D_SHADOW","samplerCubeShadow","SAMPLER_CUBE_SHADOW","sampler2DArray","SAMPLER2D_ARRAY","sampler2DArrayShadow","SAMPLER2D_ARRAY_SHADOW","isampler2D","I_SAMPLER2D","isampler3D","I_SAMPLER3D","isamplerCube","I_SAMPLER_CUBE","isampler2DArray","I_SAMPLER2D_ARRAY","usampler2D","U_SAMPLER2D","usampler3D","U_SAMPLER3D","usamplerCube","U_SAMPLER_CUBE","usampler2DArray","U_SAMPLER2D_ARRAY","struct","STRUCT","void","VOID","true","True","false","False","precision","PRECISION","precise","PRECISE","highp","HIGHP","mediump","MEDIUMP","lowp","LOWP","invariant","INVARIANT","flat","FLAT","smooth","SMOOTH","noperspective","NOPERSPECTIVE","centroid","CENTROID","layout","LAYOUT","LOCATION","MACRO_UNDEF","EShaderStage","FamilyMembers","dimension","members","BuiltinFunctionTable","Map","BuiltinFunction","ident","returnType","scope","args","_returnType","_create","fn","ALL","list","_createWithScope","resolveOverload","funcName","callArgTypes","overloads","candidate","declaredArgs","sizeLock","scalarTypeLock","matched","declaredType","actualType","paramFamily","memberIdx","indexOf","returnFamily","_realReturnType","returnIdx","isExist","has","realReturnType","MAT2X3","MAT3X2","MAT2X4","MAT4X2","MAT3X4","MAT4X3","FRAGMENT","BuiltinVariableTable","BuiltinVariable","createVariable","item","getVar","VERTEX","VEC4_ARRAY","SymbolTable","_table","insert","symbol","isInMacroBranch","entry","equal","warn","getSymbol","includeMacro","getSymbols","_getSymbols","forEach","callback","values","entries","SymbolTableStack","stack","_macroLevel","pushScope","popScope","lookup","symbolTable","result","lookupAll","SymbolDataType","arraySpecifier","typeLexeme","ESymbolType","SymbolInfo","dataType","paramSignature","astNode","symbolType","protoType","paramSig","comparedParams","t1","t2","FnSymbol","typeSpecifier","FN","StructSymbol","VarSymbol","isGlobalVariable","initAst","VAR","ShaderData","globalPrecisions","globalMacroDeclarations","getOuterGlobalMacroDeclarations","parent","GLShaderProgram","SemanticAnalyzer","semanticStack","acceptRule","symbolTableStack","curFunctionInfo","_shaderData","_translationRuleTable","reset","_macroDefineList","addTranslationRule","pid","rule","getTranslationRule","reportError","loc","reportWarning","CompilationWarn","_processingPassText","shaderData","_lookupSymbol","SymbolType","StructProp","mrtIndex","typeInfo","ASTNodeDecorator","nonTerminal","prototype","TreeNode","_location","_children","_parent","init","setCache","code","_codeCache","getCache","codeGen","visitor","defaultCodeGen","semanticAnalyze","sa","_unwrapToken","TrivialNode","_ignore","ScopeBrace","scope_brace","ScopeEndBrace","scope_end_brace","JumpStatement","isFragReturnStatement","returnStatement","visitJumpStatement","jump_statement","_type","t","SingleDeclaration","childrenLen","fullyType","id","initializer","visitSingleDeclaration","single_declaration","FullySpecifiedType","_","fully_specified_type","TypeQualifier","type_qualifier","SingleTypeQualifier","qualifier","single_type_qualifier","TypeSpecifier","arraySize","firstChild","size","isCustom","type_specifier","ArraySpecifier","integerConstantExpr","value","array_specifier","IntegerConstantExpressionOperator","operator","compute","integer_constant_expression_operator","IntegerConstantExpression","Number","integer_constant_expression","TypeSpecifierNonArray","tt","MacroCallSymbol","macroName","type_specifier_nonarray","ExtBuiltinTypeSpecifierNonArray","ext_builtin_type_specifier_nonarray","InitDeclaratorList","childrenLength","initDeclList","init_declarator_list","IdentifierList","idList","curIdList","listIdLength","identifier_list","Declaration","visitDeclaration","declaration","FunctionProtoType","declarator","parameterList","parameterInfoList","function_prototype","FunctionDeclarator","header","function_declarator","FunctionHeader","visitFunctionHeader","function_header","FunctionParameterList","ParameterDeclaration","decl","MacroParamBlock","visitFunctionParameterList","function_parameter_list","MacroParamCaseList","macro_param_case_list","macro_param_block","MacroParameterBranch","macro_parameter_branch","parameterDeclarator","ParameterDeclarator","varSymbol","parameter_declaration","parameter_declarator","CompoundStatementNoScope","compound_statement_no_scope","StatementList","visitStatementList","statement_list","FunctionDefinition","statements","visitFunctionDefinition","function_definition","FunctionCall","visitFunctionCall","function_call","FunctionCallGeneric","fnSymbol","functionIdentifier","isBuiltin","fnIdent","paramList","FunctionCallParameterList","lookupSymbol","function_call_generic","paramNodes","AssignmentExpression","MacroCallArgBlock","function_call_parameter_list","MacroCallArgCaseList","macro_call_arg_case_list","macro_call_arg_block","MacroCallArgBranch","macro_call_arg_branch","PrecisionSpecifier","precision_specifier","FunctionIdentifier","visitFunctionIdentifier","function_identifier","assignment_expression","Expression","expression","primary_expression","PostfixExpression","visitPostfixExpression","postfix_expression","StructSpecifier","propList","macroExpressions","visitStructSpecifier","struct_specifier","StructDeclarationList","props","struct_declaration_list","StructDeclaration","_typeSpecifier","_declaratorList","macroStructDeclaration","macroProps","LayoutQualifier","prop","declaratorList","declaratorListLength","struct_declaration","MacroStructDeclaration","macro_struct_declaration","MacroStructBranch","lastNode","MacroPopContext","macro_struct_branch","layout_qualifier","StructDeclaratorList","listLength","struct_declarator_list","StructDeclarator","struct_declarator","VariableDeclaration","isStatic","visitGlobalVariableDeclaration","variable_declaration","VariableDeclarationList","variableDeclarations","newVariable","variable_declaration_list","referenceGlobalSymbolNames","_symbols","symbols","needFindNames","macroNameAsVarLookup","callSymbol","referenceSymbolNames","concat","builtinVar","Any","hasAstValue","currentScopeSymbol","some","visitVariableIdentifier","getLexeme","variable_identifier","gs_shader_program","GlobalDeclaration","MacroUndef","GlobalMacroIfStatement","MacroDefine","global_declaration","macro_undef","MacroPushContext","macro_push_context","macro_pop_context","MacroElifExpression","macro_elif_expression","MacroElseExpression","macro_else_expression","GlobalMacroDeclaration","global_macro_declaration","global_macro_if_statement","GlobalMacroBranch","global_macro_branch","MacroIfStatement","macro_if_statement","MacroBranch","macro_branch","isFunctionLikeMacro","nameToken","defList","refs","visibleCount","allAst","isFn","valueAst","ref","macro_call_symbol","MacroCallFunction","visitMacroCallFunction","macro_call_function","valueExpression","valueIdx","definingBranch","sameArity","upgradable","find","visitMacroDefine","macro_define","VisitorContext","attributeStructs","attributeList","varyingStructs","varyingList","mrtStructs","mrtList","_referencedGlobalMacroASTs","resetAll","_referencedAttributeList","Object","create","_referencedVaryingList","_referencedMRTList","_referencedGlobals","_structVarMap","isAttributeStruct","findIndex","isVaryingStruct","isMRTStruct","getStructRole","registerStructVar","varName","role","referenceAttribute","_referenceProp","referenceVarying","referenceMRTProp","referenceGlobal","_passSymbolTable","refList","CompilationError","_singleton","context","TempArray","array","CodeGenVisitor","_tmpArrayPool","ret","derivationLength","postExpr","directRoot","identNode","indexNode","identLexeme","indexLexeme","_reportError","call","astNodes","paramInfoList","paramsCode","variableParam","argNode","paramsLexeme","paramsToken","valueCode","fullType","cmd","returnVar","returnFnCall","text","getVaryingProp","getAttributeProp","getMRTProp","sort","fnNode","fnName","stageEntry","ReturnableObjectPool","GLESVisitor","_globalCodeArray","globalCodeArray","_serializedGlobalKey","getOtherGlobal","data","visitShaderProgram","vertexEntry","fragmentEntry","outerGlobalMacroDeclarations","_collectAllStructVars","vertex","_vertexMain","fragment","_fragmentMain","structRoles","addEntryRoles","paramRole","returnRole","fns","proto","param0","entryFns","registerByType","walkLocals","_extractLocalVarNames","param","sym","stage","fnSymbols","varyingSymbols","varyingSymbol","attributeParam","attributeType","attributeSymbols","attributeSymbol","_preRegisterGlobalMacroRefs","_getGlobalSymbol","_getCustomStruct","_getGlobalMacroDeclarations","globalCode","outerGlobalMacroStatements","returnDataType","returnLocation","mrtSymbols","mrtSymbol","singleDecl","identChildren","macros","macro","_walkMacroDefineTokens","lastLength","keys","add","codeGenResult","structNodes","referencedGlobals","referencedGlobalMacroASTs","_visitGlobalMacroIfStatement","variableDeclaration","Set","GLES100Visitor","propReferenced","getVisitor","V3_GL_FragColor","GLES300Visitor","_otherCodeArray","_fragColorVariableRegistered","_registerFragColorVariable","ShaderPreprocessorDirective","Text","IfDef","IfNdef","IfCmp","IfExpr","Else","Endif","Define","DefineVal","DefineFunc","Undef","ShaderInstructionEncoder","parse","glsl","instructions","backfillStack","directiveStart","_findDirectiveStart","_pushText","lineEnd","line","match","_DIRECTIVE_RE","last","keyword","rest","cond","_parseCondition","_pushConditionInstruction","prevIdx","elseIdx","_backfillJump","endifIdx","afterEndif","inst","funcMatch","_FUNC_MACRO_RE","_stripLineComment","spaceIdx","op","v","nl","target","onlyPlaceholder","trimEnd","ctx","_parseOr","_skipWs","_parseAnd","l","r","_parseUnary","_parsePrimary","hasParen","_scanIdentifier","_isDigit","lhsNum","_scanNumber","_scanOp","_evalNumOp","_isAlnum","c2","lhs","rhs","StateItem","production","position","lookahead","_needReInfer","lookaheadSet","la","_id","addLookahead","ts","needReInfer","symbolByOffset","derivation","canReduce","EPSILON","curSymbol","nextSymbol","State","cores","closured","_stateItemPool","_items","it","itemMapKey","getStateItemMapKey","createStateItem","mapId","newItem","cacheKey","getMapKey","state","closureMap","core","newState","items","GrammarUtils","createProductionWithOptions","goal","options","astTypePool","opt","canElide","addMapSetItem","k","isSubSet","sb","isActionEqual","action","EAction","LALR1","grammar","firstSetMap","followSetMap","actionTable","gotoTable","_firstSetNTStack","generate","computeFirstSet","buildStateTable","startStateItemCore","productions","startState","_extendState","_closure","newStates","_inferNextState","ns","_extendStateItem","productionList","getProductionList","newLookaheadSet","lastFirstSet","terminalExist","Utils","coreMap","stateActionTable","stateGotoTable","stateItem","Reduce","Accept","_addAction","nextItem","gs","Shift","table","terminal","exist","_computeFirstSetForNT","NT","computingFS","curNT","firstSet","isNullableNT","succeedFirstSet","Production","Grammar","startSymbol","unshift","getProductionByID","_ps","gsl","productionAndRules","variable_declaration_statement","storage_qualifier","precision_qualifier","interpolation_qualifier","invariant_qualifier","conditional_expression","logical_or_expression","logical_xor_expression","logical_and_expression","inclusive_or_expression","exclusive_or_expression","and_expression","equality_expression","relational_expression","shift_expression","additive_expression","multiplicative_expression","unary_expression","unary_operator","assignment_operator","statement","compound_statement","simple_statement","expression_statement","selection_statement","iteration_statement","initializer_list","condition","for_init_statement","for_rest_statement","conditionopt","createGrammar","ShaderTargetParser","_traceBackStack","sematicAnalyzer","SematicAnalyzer","tokens","traceBackStack","nextToken","actionInfo","reduceProduction","translationRule","nextState","generator","curState","SHADER_ROOT_PATH","Preprocessor","basePathForIncludeKey","includeMap","chunkOutputCache","_includeReg","includeName","_replace","path","URL","href","chunk","cached","ShaderSourceFactory","createRenderStates","constantMap","variableMap","createShaderSource","subShaders","pendingContents","renderStates","createSubShaderSource","passes","tags","createShaderPassSource","createUsePass","isUsePass","ShaderSourceSymbol","other","SourceLexer","hasPendingContent","scanNumber","_scanDigits","scanColor","g","Color","wordToken","symbolKeyword","_symbolLexemeTable","createCompileError","_validateWordBoundaries","tokenType","_keywordLexemeTable","startIndex","endIndex","prevCharCode","_isValidWordBoundary","nextCharCode","_isWordSeparatorChar","RenderQueueType","GSRenderQueueType","BlendState","GSBlendState","DepthState","GSDepthState","StencilState","GSStencilState","RasterState","GSRasterState","EditorProperties","GSEditorProperties","EditorMacros","GSEditorMacros","Editor","GSEditor","Tags","GSTags","VertexShader","GSVertexShader","FragmentShader","GSFragmentShader","SubShader","GSSubShader","Pass","GSPass","BlendFactor","GSBlendFactor","BlendOperation","GSBlendOperation","Bool","GSBool","GSNumber","GSColor","CompareFunction","GSCompareFunction","StencilOperation","GSStencilOperation","CullMode","GSCullMode","ColorWriteMask","GSColorWriteMask","UsePass","GSUsePass","LeftBrace","RightBrace","Equal","BitwiseOr","ShaderSourceParser","sourceCode","errors","_symbolTableStack","_pushScope","lexer","_lexer","shaderSource","_parseShader","shaderPendingContents","shaderRenderStates","subShader","curSubShaderGlobalStatements","globalSubShaderStates","_mergeRenderStates","pass","globalPassRenderStates","passGlobalStatements","contents","content","braceLevel","_addPendingContents","_parseSubShader","_popScope","_parseRenderState","_parseRenderStateDeclarationOrAssignment","outRenderStates","stateToken","renderState","_parseRenderStateProperties","_createCompileError","outTarget","targetVariableMap","sourceVariableMap","key","sourceConstantMap","targetConstantMap","_parseVariableDeclaration","_parseRenderStateProperty","_scanEnumConstValue","enumName","constValueToken","_renderStateConstMap","stateLexeme","propertyToken","propertyLexeme","stateElementKey","keyIndex","scannedLexeme","renderStateElementKey","RenderStateElementKey","propertyValue","valueToken","valueTokenType","nextEnumToken","nextValue","_parseRenderQueueDeclarationOrAssignment","outPendingContents","subShaderSource","_parsePass","_parseRenderStateAndTags","_parseTags","passSource","outGlobalContents","outTags","_includeMap","_chunkOutputCache","_setIncludeMap","_parseShaderSource","_parseShaderPass","backend","noIncludeContent","parser","_parser","program","ShaderLanguage","GLSLES100","vertexShaderInstructions","fragmentShaderInstructions","_precompile","platformTarget","sub","_serializeRenderStates","programSource","column","_shaderPositionPool","_shaderRangePool","version","mode","log"],"mappings":"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"}
1
+ {"version":3,"file":"module.js","sources":["../../../node_modules/.pnpm/@swc+helpers@0.5.15/node_modules/@swc/helpers/esm/_instanceof.js","../../../node_modules/.pnpm/@swc+helpers@0.5.15/node_modules/@swc/helpers/esm/_set_prototype_of.js","../../../node_modules/.pnpm/@swc+helpers@0.5.15/node_modules/@swc/helpers/esm/_inherits.js","../../../node_modules/.pnpm/@swc+helpers@0.5.15/node_modules/@swc/helpers/esm/_create_class.js","../../../node_modules/.pnpm/@swc+helpers@0.5.15/node_modules/@swc/helpers/esm/_array_like_to_array.js","../../../node_modules/.pnpm/@swc+helpers@0.5.15/node_modules/@swc/helpers/esm/_unsupported_iterable_to_array.js","../../../node_modules/.pnpm/@swc+helpers@0.5.15/node_modules/@swc/helpers/esm/_create_for_of_iterator_helper_loose.js","../../../node_modules/.pnpm/tslib@2.8.1/node_modules/tslib/tslib.es6.mjs","../src/common/ShaderRange.ts","../src/common/ShaderPosition.ts","../src/common/types.ts","../src/common/enums/Keyword.ts","../src/ShaderCompilerUtils.ts","../src/common/BaseToken.ts","../src/parser/GrammarSymbol.ts","../src/ParserUtils.ts","../../../node_modules/.pnpm/@swc+helpers@0.5.15/node_modules/@swc/helpers/esm/_is_native_reflect_construct.js","../../../node_modules/.pnpm/@swc+helpers@0.5.15/node_modules/@swc/helpers/esm/_construct.js","../../../node_modules/.pnpm/@swc+helpers@0.5.15/node_modules/@swc/helpers/esm/_get_prototype_of.js","../../../node_modules/.pnpm/@swc+helpers@0.5.15/node_modules/@swc/helpers/esm/_is_native_function.js","../../../node_modules/.pnpm/@swc+helpers@0.5.15/node_modules/@swc/helpers/esm/_wrap_native_super.js","../src/GSError.ts","../src/common/BaseLexer.ts","../src/lexer/Lexer.ts","../src/common/enums/ShaderStage.ts","../src/parser/builtin/functions.ts","../src/parser/builtin/variables.ts","../src/common/SymbolTable.ts","../src/common/SymbolTableStack.ts","../src/parser/symbolTable/SymbolDataType.ts","../src/parser/symbolTable/SymbolInfo.ts","../src/parser/symbolTable/FnSymbol.ts","../src/parser/symbolTable/StructSymbol.ts","../src/parser/symbolTable/VarSymbol.ts","../src/parser/ShaderInfo.ts","../src/parser/SemanticAnalyzer.ts","../src/parser/types.ts","../src/parser/AST.ts","../src/codeGen/VisitorContext.ts","../src/TempArray.ts","../src/codeGen/CodeGenVisitor.ts","../src/codeGen/GLESVisitor.ts","../src/codeGen/GLES100.ts","../src/codeGen/GLES300.ts","../src/ShaderInstructionEncoder.ts","../src/lalr/Production.ts","../src/lalr/StateItem.ts","../src/lalr/State.ts","../src/lalr/Utils.ts","../src/lalr/types.ts","../src/lalr/LALR1.ts","../src/parser/Grammar.ts","../src/lalr/CFG.ts","../src/parser/ShaderTargetParser.ts","../src/Preprocessor.ts","../../../node_modules/.pnpm/@swc+helpers@0.5.15/node_modules/@swc/helpers/esm/_extends.js","../src/sourceParser/ShaderSourceFactory.ts","../src/sourceParser/ShaderSourceSymbol.ts","../src/sourceParser/SourceLexer.ts","../src/sourceParser/ShaderSourceParser.ts","../src/ShaderCompiler.ts","../src/index.ts"],"sourcesContent":["function _instanceof(left, right) {\n if (right != null && typeof Symbol !== \"undefined\" && right[Symbol.hasInstance]) {\n return !!right[Symbol.hasInstance](left);\n } else return left instanceof right;\n}\nexport { _instanceof as _ };\n","function _set_prototype_of(o, p) {\n _set_prototype_of = Object.setPrototypeOf || function setPrototypeOf(o, p) {\n o.__proto__ = p;\n\n return o;\n };\n\n return _set_prototype_of(o, p);\n}\nexport { _set_prototype_of as _ };\n","import { _ as _set_prototype_of } from \"./_set_prototype_of.js\";\n\nfunction _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function\");\n }\n\n subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } });\n\n if (superClass) _set_prototype_of(subClass, superClass);\n}\nexport { _inherits as _ };\n","function _defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n\n if (\"value\" in descriptor) descriptor.writable = true;\n\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n}\nfunction _create_class(Constructor, protoProps, staticProps) {\n if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n if (staticProps) _defineProperties(Constructor, staticProps);\n\n return Constructor;\n}\nexport { _create_class as _ };\n","function _array_like_to_array(arr, len) {\n if (len == null || len > arr.length) len = arr.length;\n\n for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i];\n\n return arr2;\n}\nexport { _array_like_to_array as _ };\n","import { _ as _array_like_to_array } from \"./_array_like_to_array.js\";\n\nfunction _unsupported_iterable_to_array(o, minLen) {\n if (!o) return;\n if (typeof o === \"string\") return _array_like_to_array(o, minLen);\n\n var n = Object.prototype.toString.call(o).slice(8, -1);\n\n if (n === \"Object\" && o.constructor) n = o.constructor.name;\n if (n === \"Map\" || n === \"Set\") return Array.from(n);\n if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _array_like_to_array(o, minLen);\n}\nexport { _unsupported_iterable_to_array as _ };\n","import { _ as _unsupported_iterable_to_array } from \"./_unsupported_iterable_to_array.js\";\n\nfunction _create_for_of_iterator_helper_loose(o, allowArrayLike) {\n var it = typeof Symbol !== \"undefined\" && o[Symbol.iterator] || o[\"@@iterator\"];\n\n if (it) return (it = it.call(o)).next.bind(it);\n // Fallback for engines without symbol support\n if (Array.isArray(o) || (it = _unsupported_iterable_to_array(o)) || allowArrayLike && o && typeof o.length === \"number\") {\n if (it) o = it;\n\n var i = 0;\n\n return function() {\n if (i >= o.length) return { done: true };\n\n return { done: false, value: o[i++] };\n };\n }\n\n throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}\nexport { _create_for_of_iterator_helper_loose as _ };\n","/******************************************************************************\nCopyright (c) Microsoft Corporation.\n\nPermission to use, copy, modify, and/or distribute this software for any\npurpose with or without fee is hereby granted.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\nPERFORMANCE OF THIS SOFTWARE.\n***************************************************************************** */\n/* global Reflect, Promise, SuppressedError, Symbol, Iterator */\n\nvar extendStatics = function(d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n};\n\nexport function __extends(d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n}\n\nexport var __assign = function() {\n __assign = Object.assign || function __assign(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n }\n return t;\n }\n return __assign.apply(this, arguments);\n}\n\nexport function __rest(s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\n t[p[i]] = s[p[i]];\n }\n return t;\n}\n\nexport function __decorate(decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n}\n\nexport function __param(paramIndex, decorator) {\n return function (target, key) { decorator(target, key, paramIndex); }\n}\n\nexport function __esDecorate(ctor, descriptorIn, decorators, contextIn, initializers, extraInitializers) {\n function accept(f) { if (f !== void 0 && typeof f !== \"function\") throw new TypeError(\"Function expected\"); return f; }\n var kind = contextIn.kind, key = kind === \"getter\" ? \"get\" : kind === \"setter\" ? \"set\" : \"value\";\n var target = !descriptorIn && ctor ? contextIn[\"static\"] ? ctor : ctor.prototype : null;\n var descriptor = descriptorIn || (target ? Object.getOwnPropertyDescriptor(target, contextIn.name) : {});\n var _, done = false;\n for (var i = decorators.length - 1; i >= 0; i--) {\n var context = {};\n for (var p in contextIn) context[p] = p === \"access\" ? {} : contextIn[p];\n for (var p in contextIn.access) context.access[p] = contextIn.access[p];\n context.addInitializer = function (f) { if (done) throw new TypeError(\"Cannot add initializers after decoration has completed\"); extraInitializers.push(accept(f || null)); };\n var result = (0, decorators[i])(kind === \"accessor\" ? { get: descriptor.get, set: descriptor.set } : descriptor[key], context);\n if (kind === \"accessor\") {\n if (result === void 0) continue;\n if (result === null || typeof result !== \"object\") throw new TypeError(\"Object expected\");\n if (_ = accept(result.get)) descriptor.get = _;\n if (_ = accept(result.set)) descriptor.set = _;\n if (_ = accept(result.init)) initializers.unshift(_);\n }\n else if (_ = accept(result)) {\n if (kind === \"field\") initializers.unshift(_);\n else descriptor[key] = _;\n }\n }\n if (target) Object.defineProperty(target, contextIn.name, descriptor);\n done = true;\n};\n\nexport function __runInitializers(thisArg, initializers, value) {\n var useValue = arguments.length > 2;\n for (var i = 0; i < initializers.length; i++) {\n value = useValue ? initializers[i].call(thisArg, value) : initializers[i].call(thisArg);\n }\n return useValue ? value : void 0;\n};\n\nexport function __propKey(x) {\n return typeof x === \"symbol\" ? x : \"\".concat(x);\n};\n\nexport function __setFunctionName(f, name, prefix) {\n if (typeof name === \"symbol\") name = name.description ? \"[\".concat(name.description, \"]\") : \"\";\n return Object.defineProperty(f, \"name\", { configurable: true, value: prefix ? \"\".concat(prefix, \" \", name) : name });\n};\n\nexport function __metadata(metadataKey, metadataValue) {\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\n}\n\nexport function __awaiter(thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n}\n\nexport function __generator(thisArg, body) {\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g = Object.create((typeof Iterator === \"function\" ? Iterator : Object).prototype);\n return g.next = verb(0), g[\"throw\"] = verb(1), g[\"return\"] = verb(2), typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n function verb(n) { return function (v) { return step([n, v]); }; }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (g && (g = 0, op[0] && (_ = 0)), _) try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [op[0] & 2, t.value];\n switch (op[0]) {\n case 0: case 1: t = op; break;\n case 4: _.label++; return { value: op[1], done: false };\n case 5: _.label++; y = op[1]; op = [0]; continue;\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n if (t[2]) _.ops.pop();\n _.trys.pop(); continue;\n }\n op = body.call(thisArg, _);\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n }\n}\n\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n});\n\nexport function __exportStar(m, o) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\n}\n\nexport function __values(o) {\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\n if (m) return m.call(o);\n if (o && typeof o.length === \"number\") return {\n next: function () {\n if (o && i >= o.length) o = void 0;\n return { value: o && o[i++], done: !o };\n }\n };\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\n}\n\nexport function __read(o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o), r, ar = [], e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n }\n catch (error) { e = { error: error }; }\n finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n }\n finally { if (e) throw e.error; }\n }\n return ar;\n}\n\n/** @deprecated */\nexport function __spread() {\n for (var ar = [], i = 0; i < arguments.length; i++)\n ar = ar.concat(__read(arguments[i]));\n return ar;\n}\n\n/** @deprecated */\nexport function __spreadArrays() {\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\n r[k] = a[j];\n return r;\n}\n\nexport function __spreadArray(to, from, pack) {\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\n if (ar || !(i in from)) {\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\n ar[i] = from[i];\n }\n }\n return to.concat(ar || Array.prototype.slice.call(from));\n}\n\nexport function __await(v) {\n return this instanceof __await ? (this.v = v, this) : new __await(v);\n}\n\nexport function __asyncGenerator(thisArg, _arguments, generator) {\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\n return i = Object.create((typeof AsyncIterator === \"function\" ? AsyncIterator : Object).prototype), verb(\"next\"), verb(\"throw\"), verb(\"return\", awaitReturn), i[Symbol.asyncIterator] = function () { return this; }, i;\n function awaitReturn(f) { return function (v) { return Promise.resolve(v).then(f, reject); }; }\n function verb(n, f) { if (g[n]) { i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; if (f) i[n] = f(i[n]); } }\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\n function fulfill(value) { resume(\"next\", value); }\n function reject(value) { resume(\"throw\", value); }\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\n}\n\nexport function __asyncDelegator(o) {\n var i, p;\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: false } : f ? f(v) : v; } : f; }\n}\n\nexport function __asyncValues(o) {\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\n var m = o[Symbol.asyncIterator], i;\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\n}\n\nexport function __makeTemplateObject(cooked, raw) {\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\n return cooked;\n};\n\nvar __setModuleDefault = Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n};\n\nvar ownKeys = function(o) {\n ownKeys = Object.getOwnPropertyNames || function (o) {\n var ar = [];\n for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;\n return ar;\n };\n return ownKeys(o);\n};\n\nexport function __importStar(mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== \"default\") __createBinding(result, mod, k[i]);\n __setModuleDefault(result, mod);\n return result;\n}\n\nexport function __importDefault(mod) {\n return (mod && mod.__esModule) ? mod : { default: mod };\n}\n\nexport function __classPrivateFieldGet(receiver, state, kind, f) {\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\n}\n\nexport function __classPrivateFieldSet(receiver, state, value, kind, f) {\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\n}\n\nexport function __classPrivateFieldIn(state, receiver) {\n if (receiver === null || (typeof receiver !== \"object\" && typeof receiver !== \"function\")) throw new TypeError(\"Cannot use 'in' operator on non-object\");\n return typeof state === \"function\" ? receiver === state : state.has(receiver);\n}\n\nexport function __addDisposableResource(env, value, async) {\n if (value !== null && value !== void 0) {\n if (typeof value !== \"object\" && typeof value !== \"function\") throw new TypeError(\"Object expected.\");\n var dispose, inner;\n if (async) {\n if (!Symbol.asyncDispose) throw new TypeError(\"Symbol.asyncDispose is not defined.\");\n dispose = value[Symbol.asyncDispose];\n }\n if (dispose === void 0) {\n if (!Symbol.dispose) throw new TypeError(\"Symbol.dispose is not defined.\");\n dispose = value[Symbol.dispose];\n if (async) inner = dispose;\n }\n if (typeof dispose !== \"function\") throw new TypeError(\"Object not disposable.\");\n if (inner) dispose = function() { try { inner.call(this); } catch (e) { return Promise.reject(e); } };\n env.stack.push({ value: value, dispose: dispose, async: async });\n }\n else if (async) {\n env.stack.push({ async: true });\n }\n return value;\n}\n\nvar _SuppressedError = typeof SuppressedError === \"function\" ? SuppressedError : function (error, suppressed, message) {\n var e = new Error(message);\n return e.name = \"SuppressedError\", e.error = error, e.suppressed = suppressed, e;\n};\n\nexport function __disposeResources(env) {\n function fail(e) {\n env.error = env.hasError ? new _SuppressedError(e, env.error, \"An error was suppressed during disposal.\") : e;\n env.hasError = true;\n }\n var r, s = 0;\n function next() {\n while (r = env.stack.pop()) {\n try {\n if (!r.async && s === 1) return s = 0, env.stack.push(r), Promise.resolve().then(next);\n if (r.dispose) {\n var result = r.dispose.call(r.value);\n if (r.async) return s |= 2, Promise.resolve(result).then(next, function(e) { fail(e); return next(); });\n }\n else s |= 1;\n }\n catch (e) {\n fail(e);\n }\n }\n if (s === 1) return env.hasError ? Promise.reject(env.error) : Promise.resolve();\n if (env.hasError) throw env.error;\n }\n return next();\n}\n\nexport function __rewriteRelativeImportExtension(path, preserveJsx) {\n if (typeof path === \"string\" && /^\\.\\.?\\//.test(path)) {\n return path.replace(/\\.(tsx)$|((?:\\.d)?)((?:\\.[^./]+?)?)\\.([cm]?)ts$/i, function (m, tsx, d, ext, cm) {\n return tsx ? preserveJsx ? \".jsx\" : \".js\" : d && (!ext || !cm) ? m : (d + ext + \".\" + cm.toLowerCase() + \"js\");\n });\n }\n return path;\n}\n\nexport default {\n __extends,\n __assign,\n __rest,\n __decorate,\n __param,\n __esDecorate,\n __runInitializers,\n __propKey,\n __setFunctionName,\n __metadata,\n __awaiter,\n __generator,\n __createBinding,\n __exportStar,\n __values,\n __read,\n __spread,\n __spreadArrays,\n __spreadArray,\n __await,\n __asyncGenerator,\n __asyncDelegator,\n __asyncValues,\n __makeTemplateObject,\n __importStar,\n __importDefault,\n __classPrivateFieldGet,\n __classPrivateFieldSet,\n __classPrivateFieldIn,\n __addDisposableResource,\n __disposeResources,\n __rewriteRelativeImportExtension,\n};\n","import type { IPoolElement } from \"@galacean/engine-core\";\nimport { ShaderPosition } from \"./ShaderPosition\";\n\nexport class ShaderRange implements IPoolElement {\n public start: ShaderPosition;\n public end: ShaderPosition;\n\n set(start: ShaderPosition, end: ShaderPosition) {\n this.start = start;\n this.end = end;\n }\n\n dispose(): void {\n this.start.dispose();\n this.end.dispose();\n }\n}\n","import type { IPoolElement } from \"@galacean/engine-core\";\n\nexport class ShaderPosition implements IPoolElement {\n index: number;\n // #if _VERBOSE\n line: number;\n column: number;\n // #endif\n\n set(\n index: number,\n // #if _VERBOSE\n line: number,\n column: number\n // #endif\n ) {\n this.index = index;\n // #if _VERBOSE\n this.line = line;\n this.column = column;\n // #endif\n }\n\n dispose(): void {\n this.index = 0;\n // #if _VERBOSE\n this.line = 0;\n this.column = 0;\n // #endif\n }\n}\n","import { Keyword } from \"./enums/Keyword\";\n\nexport enum ETokenType {\n ID = 1000,\n FLOAT_CONSTANT,\n INT_CONSTANT,\n STRING_CONST,\n /** << */\n LEFT_OP,\n /** \\>> */\n RIGHT_OP,\n /** ++ */\n INC_OP,\n /** -- */\n DEC_OP,\n /** <= */\n LE_OP,\n /** \\>= */\n GE_OP,\n /** == */\n EQ_OP,\n /** != */\n NE_OP,\n /** && */\n AND_OP,\n /** || */\n OR_OP,\n /** ^^ */\n XOR_OP,\n /** *= */\n MUL_ASSIGN,\n /** /= */\n DIV_ASSIGN,\n /** += */\n ADD_ASSIGN,\n /** -= */\n SUB_ASSIGN,\n /** %= */\n MOD_ASSIGN,\n /** <<= */\n LEFT_ASSIGN,\n /** >>= */\n RIGHT_ASSIGN,\n /** &= */\n AND_ASSIGN,\n /** ^= */\n XOR_ASSIGN,\n /** |= */\n OR_ASSIGN,\n /** ( */\n LEFT_PAREN,\n /** ) */\n RIGHT_PAREN,\n /** [ */\n LEFT_BRACKET,\n /** ] */\n RIGHT_BRACKET,\n /** { */\n LEFT_BRACE,\n /** } */\n RIGHT_BRACE,\n /** . */\n DOT,\n /** , */\n COMMA,\n COLON,\n /** = */\n EQUAL,\n /** ; */\n SEMICOLON,\n /** ! */\n BANG,\n /** \\- */\n DASH,\n /** ~ */\n TILDE,\n PLUS,\n /** \\* */\n STAR,\n /** / */\n SLASH,\n /** % */\n PERCENT,\n /** < */\n LEFT_ANGLE,\n /** \\> */\n RIGHT_ANGLE,\n VERTICAL_BAR,\n /** ^ */\n CARET,\n /** & */\n AMPERSAND,\n /** ? */\n QUESTION,\n\n NotWord,\n\n /** ε */\n EPSILON = 1998,\n EOF = 1999\n}\n\nexport const TypeAny = 3000;\n\nexport type GalaceanDataType =\n | Keyword.VOID\n | Keyword.FLOAT\n | Keyword.BOOL\n | Keyword.INT\n | Keyword.UINT\n | Keyword.VEC2\n | Keyword.VEC3\n | Keyword.VEC4\n | Keyword.BVEC2\n | Keyword.BVEC3\n | Keyword.BVEC4\n | Keyword.IVEC2\n | Keyword.IVEC3\n | Keyword.IVEC4\n | Keyword.UVEC2\n | Keyword.UVEC3\n | Keyword.UVEC4\n | Keyword.MAT2\n | Keyword.MAT3\n | Keyword.MAT4\n | Keyword.MAT2X3\n | Keyword.MAT2X4\n | Keyword.MAT3X2\n | Keyword.MAT3X4\n | Keyword.MAT4X2\n | Keyword.MAT4X3\n | Keyword.SAMPLER2D\n | Keyword.SAMPLER3D\n | Keyword.SAMPLER_CUBE\n | Keyword.SAMPLER2D_SHADOW\n | Keyword.SAMPLER_CUBE_SHADOW\n | Keyword.SAMPLER2D_ARRAY\n | Keyword.SAMPLER2D_ARRAY_SHADOW\n | Keyword.I_SAMPLER2D\n | Keyword.I_SAMPLER3D\n | Keyword.I_SAMPLER_CUBE\n | Keyword.I_SAMPLER2D_ARRAY\n | Keyword.U_SAMPLER2D\n | Keyword.U_SAMPLER3D\n | Keyword.U_SAMPLER_CUBE\n | Keyword.U_SAMPLER2D_ARRAY\n | Keyword.VEC4_ARRAY\n | typeof TypeAny\n | string;\n\nexport type TokenType = ETokenType | Keyword;\n","export enum Keyword {\n CONST = 0,\n BOOL,\n FLOAT,\n DOUBLE,\n INT,\n UINT,\n BREAK,\n CONTINUE,\n DO,\n ELSE,\n FOR,\n IF,\n WHILE,\n DISCARD,\n RETURN,\n BVEC2,\n BVEC3,\n BVEC4,\n IVEC2,\n IVEC3,\n IVEC4,\n UVEC2,\n UVEC3,\n UVEC4,\n VEC2,\n VEC3,\n VEC4,\n VEC4_ARRAY,\n MAT2,\n MAT3,\n MAT4,\n MAT2X3,\n MAT2X4,\n MAT3X2,\n MAT3X4,\n MAT4X2,\n MAT4X3,\n IN,\n OUT,\n INOUT,\n CENTROID,\n SAMPLER2D,\n SAMPLER3D,\n SAMPLER_CUBE,\n SAMPLER2D_SHADOW,\n SAMPLER_CUBE_SHADOW,\n SAMPLER2D_ARRAY,\n SAMPLER2D_ARRAY_SHADOW,\n I_SAMPLER2D,\n I_SAMPLER3D,\n I_SAMPLER_CUBE,\n I_SAMPLER2D_ARRAY,\n U_SAMPLER2D,\n U_SAMPLER3D,\n U_SAMPLER_CUBE,\n U_SAMPLER2D_ARRAY,\n STRUCT,\n LAYOUT,\n LOCATION,\n VOID,\n\n PRECISION,\n PRECISE,\n HIGHP,\n MEDIUMP,\n LOWP,\n INVARIANT,\n SMOOTH,\n FLAT,\n NOPERSPECTIVE,\n\n // Common Tokens\n True,\n False,\n LeftBrace,\n RightBrace,\n Equal,\n BitwiseOr,\n\n // Source Parser Tokens\n GSRenderQueueType,\n GSBlendState,\n GSDepthState,\n GSStencilState,\n GSRasterState,\n GSEditorProperties,\n GSEditorMacros,\n GSEditor,\n GSTags,\n GSVertexShader,\n GSFragmentShader,\n GSSubShader,\n GSPass,\n GSBlendFactor,\n GSBlendOperation,\n GSBool,\n GSNumber,\n GSColor,\n GSCompareFunction,\n GSStencilOperation,\n GSCullMode,\n GSColorWriteMask,\n GSUsePass,\n\n // Macros\n MACRO_IF,\n MACRO_IFDEF,\n MACRO_IFNDEF,\n MACRO_ELSE,\n MACRO_ELIF,\n MACRO_ENDIF,\n MACRO_UNDEF,\n /** Legacy opaque `#define` token — whole directive packed into one lexeme. Retained\n * for macros whose value can't be parsed as a GLSL expression (type aliases,\n * qualifier aliases, partial-syntax macros). Expression-style macros instead emit\n * `MACRO_DEFINE` + ID + value tokens + `MACRO_DEFINE_END`. */\n MACRO_DEFINE_EXPRESSION,\n MACRO_CONDITIONAL_EXPRESSION,\n MACRO_CALL,\n /** `#define` directive head for expression-style macros. */\n MACRO_DEFINE,\n /** Terminates a `MACRO_DEFINE` directive at end-of-line. */\n MACRO_DEFINE_END,\n /** `(params)` block for a function-like `#define`. The lexer captures the entire\n * parenthesized parameter list as one opaque token so the macro-define CFG rule\n * doesn't need its own parameter-list production (which would conflict with\n * function_call_parameter_list under LALR(1)). The AST consumer parses the\n * lexeme to recover the individual parameter names. */\n MACRO_DEFINE_PARAMS\n}\n","import { ClearableObjectPool, type IPoolElement } from \"@galacean/engine-core\";\nimport { GSErrorName } from \"./GSError\";\nimport { ShaderRange } from \"./common/ShaderRange\";\nimport { ShaderPosition } from \"./common/ShaderPosition\";\n// #if _VERBOSE\nimport { GSError } from \"./GSError\";\n// #endif\n\nexport class ShaderCompilerUtils {\n private static _shaderCompilerObjectPoolSet: ClearableObjectPool<IPoolElement>[] = [];\n\n static createObjectPool<T extends IPoolElement>(type: new () => T) {\n const pool = new ClearableObjectPool<T>(type);\n ShaderCompilerUtils._shaderCompilerObjectPoolSet.push(pool);\n return pool;\n }\n\n static clearAllShaderCompilerObjectPool() {\n for (let i = 0, n = ShaderCompilerUtils._shaderCompilerObjectPoolSet.length; i < n; i++) {\n ShaderCompilerUtils._shaderCompilerObjectPoolSet[i].clear();\n }\n }\n\n static createGSError(\n message: string,\n errorName: GSErrorName,\n source: string,\n location: ShaderRange | ShaderPosition,\n file?: string\n ): Error {\n // #if _VERBOSE\n return new GSError(errorName, message, location, source, file);\n // #else\n console.error(message);\n const err = new Error(message);\n err.name = errorName;\n return err;\n // #endif\n }\n}\n","import { ETokenType } from \"./types\";\nimport { ShaderRange, ShaderPosition } from \".\";\nimport { ShaderCompiler } from \"../ShaderCompiler\";\nimport type { IPoolElement } from \"@galacean/engine-core\";\nimport { ShaderCompilerUtils } from \"../ShaderCompilerUtils\";\n\n/**\n * One condition in a branch signature: `defined: true` for `#ifdef X` (the\n * branch is active when `X` is defined), `defined: false` for `#ifndef X` /\n * after `#else` (active when `X` is undefined).\n */\nexport interface BranchConstraint {\n name: string;\n defined: boolean;\n}\n\n/**\n * Snapshot of the `#ifdef`/`#ifndef`/`#else` stack at a source position. An\n * empty signature means unconditional (top-level). Constraints are conjunctive:\n * the position is active iff every constraint holds. Produced by the Lexer\n * (the sole branch-stack maintainer) and stamped onto every emitted token +\n * every registered `MacroDefineInfo`.\n */\nexport type BranchSignature = readonly BranchConstraint[];\n\n// Canonical empty branch signature shared by all default tokens — avoids\n// per-token allocation. The Lexer overwrites `branch` after `scanToken()`\n// for tokens that are inside an `#ifdef`.\nexport const EMPTY_BRANCH: BranchSignature = [];\n\nexport class BaseToken<T extends number = number> implements IPoolElement {\n static pool = ShaderCompilerUtils.createObjectPool(BaseToken);\n\n type: T;\n lexeme: string;\n location: ShaderRange;\n /** Branch signature snapshot at the point this token was emitted. Empty\n * signature (default) means top-level / unconditional. The Lexer tags\n * every token; downstream code (AST nodes built from tokens) can read\n * the field directly to know which `#ifdef` branch they're inside. */\n branch: BranchSignature = EMPTY_BRANCH;\n\n set(type: T, lexeme: string, start?: ShaderPosition);\n set(type: T, lexeme: string, location?: ShaderRange);\n set(type: T, lexeme: string, arg?: ShaderRange | ShaderPosition) {\n this.type = type;\n this.lexeme = lexeme;\n this.branch = EMPTY_BRANCH;\n if (arg) {\n if (arg instanceof ShaderRange) {\n this.location = arg as ShaderRange;\n } else {\n const end = ShaderCompiler.createPosition(\n arg.index + lexeme.length,\n // #if _VERBOSE\n arg.line,\n arg.column + lexeme.length\n // #endif\n );\n this.location = ShaderCompiler.createRange(arg, end);\n }\n }\n }\n\n dispose(): void {}\n}\n\nexport const EOF = new BaseToken();\nEOF.set(ETokenType.EOF, \"/EOF\");\n","import { TokenType } from \"../common\";\n\nexport type Terminal = TokenType;\n\nexport enum NoneTerminal {\n START = 2000,\n // galacean\n gs_shader_program,\n\n // glsl\n global_declaration,\n variable_declaration,\n variable_declaration_list,\n variable_declaration_statement,\n array_specifier_list,\n array_specifier,\n ext_builtin_type_specifier_nonarray,\n precision_specifier,\n variable_identifier,\n variable_identifier_node,\n primary_expression,\n postfix_expression,\n integer_expression,\n function_call,\n function_call_generic,\n function_call_header_no_parameters,\n function_call_header_with_parameters,\n function_call_parameter_list,\n function_call_header,\n function_identifier,\n constructor_identifier,\n unary_expression,\n unary_operator,\n multiplicative_expression,\n additive_expression,\n shift_expression,\n relational_expression,\n equality_expression,\n and_expression,\n inclusive_or_expression,\n exclusive_or_expression,\n logical_and_expression,\n logical_xor_expression,\n logical_or_expression,\n conditional_expression,\n assignment_expression,\n assignment_operator,\n expression,\n integer_constant_expression,\n integer_constant_expression_operator,\n declaration,\n function_prototype,\n function_declarator,\n function_header_with_parameters,\n function_header,\n function_parameter_list,\n parameter_declarator,\n parameter_declaration,\n parameter_qualifier,\n parameter_type_specifier,\n init_declarator_list,\n single_declaration,\n fully_specified_type,\n type_qualifier,\n single_type_qualifier,\n storage_qualifier,\n precision_qualifier,\n interpolation_qualifier,\n invariant_qualifier,\n type_specifier,\n type_specifier_nonarray,\n type_specifier_no_prec,\n basic_type,\n struct_specifier,\n struct_declaration_list,\n struct_declaration,\n layout_qualifier,\n struct_declarator_list,\n struct_declarator,\n identifier_list,\n decl_identifier,\n initializer,\n initializer_list,\n declaration_statement,\n simple_statement,\n compound_statement_no_scope,\n statement_with_scope,\n compound_statement,\n statement,\n statement_list,\n iteration_statement_no_new_scope,\n expression_statement,\n selection_statement,\n selection_rest_statement,\n condition,\n conditionopt,\n iteration_statement,\n for_init_statement,\n for_rest_statement,\n jump_statement,\n external_declaration,\n function_definition,\n field_selection,\n bool_constant,\n function_identifier_node,\n typename_identifier_node,\n scope_brace,\n scope_end_brace,\n\n // Macro\n macro_undef,\n macro_push_context,\n macro_pop_context,\n macro_elif_expression,\n macro_else_expression,\n global_macro_if_statement,\n global_macro_declaration,\n global_macro_branch,\n macro_struct_declaration,\n macro_struct_branch,\n macro_if_statement,\n macro_branch,\n macro_param_case_list,\n macro_param_block,\n macro_parameter_branch,\n macro_call_arg_case_list,\n macro_call_arg_block,\n macro_call_arg_branch,\n\n // Macro call\n macro_call_symbol,\n macro_call_function,\n\n // Macro define (expression-style): `#define NAME [(params)] VALUE`\n macro_define,\n\n _ignore\n}\n\nexport type GrammarSymbol = Terminal | NoneTerminal;\n\nexport type Derivation = GrammarSymbol[];\n","import { ETokenType, GalaceanDataType, TypeAny } from \"./common\";\nimport { BaseToken as Token } from \"./common/BaseToken\";\nimport { ASTNode, TreeNode } from \"./parser/AST\";\nimport { GrammarSymbol, NoneTerminal } from \"./parser/GrammarSymbol\";\n// #if _VERBOSE\nimport { Keyword } from \"./common/enums/Keyword\";\nimport State from \"./lalr/State\";\n// #endif\n\nexport class ParserUtils {\n static unwrapNodeByType<T = TreeNode>(node: TreeNode, type: NoneTerminal): T | undefined {\n const child = node.children[0];\n if (child instanceof Token) return;\n if (child.nt === type) return child as T;\n return ParserUtils.unwrapNodeByType(child, type);\n }\n\n /**\n * Parse a function-macro parameter-list lexeme (`\"(a, b, c)\"`) into its parameter\n * names. An empty list `\"()\"` yields `[]`. Leading/trailing whitespace around each\n * name is trimmed. Empty entries from consecutive commas are filtered out.\n */\n static parseMacroParamList(lexeme: string): string[] {\n const inner = lexeme.replace(/^\\s*\\(\\s*|\\s*\\)\\s*$/g, \"\");\n if (!inner) return [];\n return inner\n .split(\",\")\n .map((s) => s.trim())\n .filter(Boolean);\n }\n\n /**\n * Walk single-child precedence-chain wrappers down to a `VariableIdentifier`,\n * returning the leaf node (or `undefined` for any compound expression).\n *\n * `allowParens` chooses between two callers' needs:\n * - `true` — descend through `( expression )` form, so `(v)` resolves to\n * `v`. Use when the caller substitutes at the expression root\n * (aliasing, renaming); user-written parens carry no extra meaning.\n * - `false` — any 3-child `PrimaryExpression` aborts; `(v)` stays\n * compound. Use when the caller treats the unwrapped node as a single\n * token (IO-struct arg drop, alias detection); user-written parens\n * must not collapse.\n */\n static unwrapBareIdentifier(\n node: TreeNode,\n options: { allowParens: boolean }\n ): ASTNode.VariableIdentifier | undefined {\n let cur: TreeNode = node;\n while (true) {\n if (cur instanceof ASTNode.VariableIdentifier) return cur;\n if (options.allowParens && cur instanceof ASTNode.PrimaryExpression && cur.children.length === 3) {\n const inner = cur.children[1];\n if (!(inner instanceof TreeNode)) return undefined;\n cur = inner;\n continue;\n }\n if (cur instanceof ASTNode.ExpressionAstNode && cur.children.length === 1) {\n const child = cur.children[0];\n if (!(child instanceof TreeNode)) return undefined;\n cur = child;\n continue;\n }\n return undefined;\n }\n }\n\n /**\n * Lexeme variant of `unwrapBareIdentifier({ allowParens: true })` for callers\n * that already work with strings. Returns `null` for compound expressions.\n */\n static extractDirectIdentLexeme(expr: TreeNode): string | null {\n const ident = ParserUtils.unwrapBareIdentifier(expr, { allowParens: true });\n if (!ident) return null;\n const child = ident.children[0];\n return child instanceof Token ? child.lexeme : null;\n }\n\n // #if _VERBOSE\n /**\n * Check if type `tb` is compatible with type `ta`.\n */\n static typeCompatible(ta: GalaceanDataType, tb: GalaceanDataType | undefined) {\n if (tb == undefined || tb === TypeAny) return true;\n if (ta === Keyword.INT) {\n return ta === tb || tb === Keyword.UINT;\n }\n return ta === tb;\n }\n\n static toString(sm: GrammarSymbol) {\n if (this.isTerminal(sm)) {\n return ETokenType[sm] ?? Keyword[sm];\n }\n return NoneTerminal[sm];\n }\n // #endif\n\n static isTerminal(sm: GrammarSymbol) {\n return sm < NoneTerminal.START;\n }\n\n /**\n * @internal\n */\n // #if _VERBOSE\n static printStatePool(logPath: string) {\n let output = \"\";\n\n console.log(\"========== Parser Pool ==========\");\n\n let count = 0;\n for (const state of State.pool.values()) {\n count++;\n let tmp = \"\";\n tmp += `${state.id}: \\n`.padEnd(4);\n for (const psItem of state.items) {\n tmp += \" \" + psItem.toString() + \"\\n\";\n }\n output += tmp;\n }\n\n console.log(\"state count:\", count);\n console.log(output);\n }\n // #endif\n}\n","function _is_native_reflect_construct() {\n // Since Reflect.construct can't be properly polyfilled, some\n // implementations (e.g. core-js@2) don't set the correct internal slots.\n // Those polyfills don't allow us to subclass built-ins, so we need to\n // use our fallback implementation.\n try {\n // If the internal slots aren't set, this throws an error similar to\n // TypeError: this is not a Boolean object.\n var result = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function() {}));\n } catch (_) {}\n return (_is_native_reflect_construct = function() {\n return !!result;\n })();\n}\n\nexport { _is_native_reflect_construct as _ };\n","import { _ as _is_native_reflect_construct } from \"./_is_native_reflect_construct.js\";\nimport { _ as _set_prototype_of } from \"./_set_prototype_of.js\";\nfunction _construct(Parent, args, Class) {\n if (_is_native_reflect_construct()) _construct = Reflect.construct;\n else {\n _construct = function construct(Parent, args, Class) {\n var a = [null];\n a.push.apply(a, args);\n var Constructor = Function.bind.apply(Parent, a);\n var instance = new Constructor();\n\n if (Class) _set_prototype_of(instance, Class.prototype);\n\n return instance;\n };\n }\n\n return _construct.apply(null, arguments);\n}\nexport { _construct as _ };\n","function _get_prototype_of(o) {\n _get_prototype_of = Object.setPrototypeOf ? Object.getPrototypeOf : function getPrototypeOf(o) {\n return o.__proto__ || Object.getPrototypeOf(o);\n };\n\n return _get_prototype_of(o);\n}\nexport { _get_prototype_of as _ };\n","function _is_native_function(fn) {\n return Function.toString.call(fn).indexOf(\"[native code]\") !== -1;\n}\nexport { _is_native_function as _ };\n","import { _ as _construct } from \"./_construct.js\";\nimport { _ as _get_prototype_of } from \"./_get_prototype_of.js\";\nimport { _ as _is_native_function } from \"./_is_native_function.js\";\nimport { _ as _set_prototype_of } from \"./_set_prototype_of.js\";\n\nfunction _wrap_native_super(Class) {\n var _cache = typeof Map === \"function\" ? new Map() : undefined;\n _wrap_native_super = function(Class) {\n if (Class === null || !_is_native_function(Class)) return Class;\n if (typeof Class !== \"function\") throw new TypeError(\"Super expression must either be null or a function\");\n if (typeof _cache !== \"undefined\") {\n if (_cache.has(Class)) return _cache.get(Class);\n _cache.set(Class, Wrapper);\n }\n\n function Wrapper() {\n return _construct(Class, arguments, _get_prototype_of(this).constructor);\n }\n Wrapper.prototype = Object.create(Class.prototype, { constructor: { value: Wrapper, enumerable: false, writable: true, configurable: true } });\n\n return _set_prototype_of(Wrapper, Class);\n };\n\n return _wrap_native_super(Class);\n}\nexport { _wrap_native_super as _ };\n","import { ShaderPosition } from \"./common/ShaderPosition\";\nimport { ShaderRange } from \"./common/ShaderRange\";\n\nexport class GSError extends Error {\n static wrappingLineCount = 2;\n\n constructor(\n name: GSErrorName,\n message: string,\n public readonly location: ShaderRange | ShaderPosition,\n public readonly source: string,\n public readonly file?: string\n ) {\n super(message);\n this.name = name;\n }\n\n override toString(): string {\n let start: ShaderPosition, end: ShaderPosition;\n const { message, location, source } = this;\n if (!source) {\n return message;\n }\n\n if (location instanceof ShaderPosition) {\n start = end = location;\n } else {\n start = location.start;\n end = location.end;\n }\n const lines = source.split(\"\\n\");\n\n let diagnosticMessage = `${this.name}: ${message}\\n\\n`;\n\n // #if _VERBOSE\n const lineSplit = \"|···\";\n\n const wrappingLineCount = GSError.wrappingLineCount;\n for (let i = start.line - wrappingLineCount, n = end.line + wrappingLineCount; i <= n; i++) {\n const line = lines[i];\n diagnosticMessage += lineSplit + `${line}\\n`;\n\n if (i < start.line || i > end.line) continue;\n\n let remarkStart = 0;\n let remarkEnd = line.length;\n let paddingLength = lineSplit.length;\n if (i === start.line) {\n remarkStart = start.column;\n paddingLength += start.column;\n }\n if (i === end.line) {\n remarkEnd = end.column;\n }\n const remarkLength = Math.max(remarkEnd - remarkStart, 1);\n\n diagnosticMessage += \" \".repeat(paddingLength) + \"^\".repeat(remarkLength) + \"\\n\";\n }\n // #endif\n\n return diagnosticMessage;\n }\n}\n\nexport enum GSErrorName {\n PreprocessorError = \"PreprocessorError\",\n CompilationError = \"CompilationError\",\n ScannerError = \"ScannerError\",\n CompilationWarn = \"CompilationWarning\"\n}\n","import { ShaderPosition, ShaderRange } from \".\";\nimport { GSErrorName } from \"../GSError\";\nimport { ShaderCompiler } from \"../ShaderCompiler\";\nimport { ShaderCompilerUtils } from \"../ShaderCompilerUtils\";\nimport { BaseToken } from \"./BaseToken\";\n\nexport type OnToken = (token: BaseToken, scanner: BaseLexer) => void;\n\n/**\n * @internal\n */\nexport abstract class BaseLexer {\n static isDigit(charCode: number): boolean {\n return charCode >= 48 && charCode <= 57; // 0-9\n }\n\n static isHexDigit(charCode: number): boolean {\n return (\n (charCode >= 48 && charCode <= 57) || // 0-9\n (charCode >= 65 && charCode <= 70) || // A-F\n (charCode >= 97 && charCode <= 102) // a-f\n );\n }\n\n // Check if character is alphabetic or underscore (valid word start)\n static isAlpha(charCode: number): boolean {\n return (\n charCode === 95 || // _\n (charCode >= 65 && charCode <= 90) || // A-Z\n (charCode >= 97 && charCode <= 122) // a-z\n );\n }\n\n // Check if character is alphanumeric (alpha + digit)\n static isAlnum(charCode: number): boolean {\n return BaseLexer.isAlpha(charCode) || BaseLexer.isDigit(charCode);\n }\n\n static isPreprocessorStartChar(charCode: number): boolean {\n return charCode === 35; // #\n }\n\n /**\n * If `i` points at the start of a `/* … *\\/` block comment, return the index\n * just past the closing `*\\/`. Otherwise return `i` unchanged. If the\n * comment is unterminated, returns `len` (clamped, never overshoots).\n * Single source of truth for block-comment scanning across the lexer.\n */\n protected static _skipBlockComment(src: string, i: number, len: number): number {\n if (src.charCodeAt(i) !== 47 /* '/' */ || i + 1 >= len || src.charCodeAt(i + 1) !== 42 /* '*' */) return i;\n let j = i + 2;\n while (j + 1 < len) {\n if (src.charCodeAt(j) === 42 && src.charCodeAt(j + 1) === 47) return j + 2;\n j++;\n }\n return len;\n }\n\n /**\n * If `i` points at the start of a `//` line comment, return the index of the\n * terminating newline (or `len` at EOF). The newline itself is NOT consumed\n * — callers decide whether `\\n` is whitespace or a logical separator.\n * Otherwise return `i` unchanged.\n */\n protected static _skipLineComment(src: string, i: number, len: number): number {\n if (src.charCodeAt(i) !== 47 /* '/' */ || i + 1 >= len || src.charCodeAt(i + 1) !== 47) return i;\n let j = i + 2;\n while (j < len) {\n const c = src.charCodeAt(j);\n if (c === 10 || c === 13) break;\n j++;\n }\n return j;\n }\n\n static isWhiteSpaceChar(charCode: number, includeBreak: boolean): boolean {\n // Space || Tab\n if (charCode === 32 || charCode === 9) {\n return true;\n }\n return includeBreak && (charCode === 10 || charCode === 13); // \\n || \\r\n }\n\n protected _currentIndex = 0;\n protected _source: string;\n\n // #if _VERBOSE\n protected _column = 0;\n protected _line = 0;\n // #endif\n\n get currentIndex(): number {\n return this._currentIndex;\n }\n\n get source(): string {\n return this._source;\n }\n\n // #if _VERBOSE\n get line() {\n return this._line;\n }\n\n get column() {\n return this._column;\n }\n // #endif\n\n constructor(source?: string) {\n this._source = source;\n }\n\n setSource(source: string): void {\n this._source = source;\n this._currentIndex = 0;\n // #if _VERBOSE\n this._line = this._column = 0;\n // #endif\n }\n\n getShaderPosition(backOffset = 0): ShaderPosition {\n return ShaderCompiler.createPosition(\n this._currentIndex - backOffset,\n // #if _VERBOSE\n this._line,\n this._column - backOffset\n // #endif\n );\n }\n\n isEnd(): boolean {\n return this._currentIndex >= this._source.length;\n }\n\n getCurChar(): string {\n return this._source[this._currentIndex];\n }\n\n getCurCharCode(): number {\n return this._source.charCodeAt(this._currentIndex);\n }\n\n advance(count: number): void {\n // #if _VERBOSE\n const source = this._source;\n const startIndex = this._currentIndex;\n for (let i = 0; i < count; i++) {\n if (source[startIndex + i] === \"\\n\") {\n this._line += 1;\n this._column = 0;\n } else {\n this._column += 1;\n }\n }\n // #endif\n this._currentIndex += count;\n }\n\n skipSpace(includeLineBreak: boolean): void {\n while (BaseLexer.isWhiteSpaceChar(this.getCurCharCode(), includeLineBreak)) {\n this.advance(1);\n }\n }\n\n skipCommentsAndSpace(): void {\n const source = this._source;\n const length = source.length;\n let index = this._currentIndex;\n\n while (index < length) {\n // Whitespace including newlines — `\\n` is just a separator in the\n // top-level (non-directive) scan path.\n while (index < length && BaseLexer.isWhiteSpaceChar(source.charCodeAt(index), true)) {\n index++;\n }\n const afterBlock = BaseLexer._skipBlockComment(source, index, length);\n if (afterBlock !== index) {\n index = afterBlock;\n continue;\n }\n const afterLine = BaseLexer._skipLineComment(source, index, length);\n if (afterLine !== index) {\n index = afterLine;\n continue;\n }\n break;\n }\n\n this.advance(index - this._currentIndex);\n }\n\n peek(to: number): string {\n const offset = this._currentIndex;\n return this._source.substring(offset, offset + to);\n }\n\n scanLexeme(lexeme: string): void {\n this.skipCommentsAndSpace();\n const length = lexeme.length;\n const peek = this.peek(length);\n if (peek !== lexeme) {\n this.throwError(this.getShaderPosition(0), `Expect lexeme \"${lexeme}\", but got \"${peek}\"`);\n }\n this.advance(length);\n }\n\n scanTwoExpectedLexemes(lexeme1: string, lexeme2: string): string | null {\n this.skipCommentsAndSpace();\n\n // Check first lexeme\n if (this.peek(lexeme1.length) === lexeme1) {\n this.advance(lexeme1.length);\n return lexeme1;\n }\n\n // Check second lexeme\n if (this.peek(lexeme2.length) === lexeme2) {\n this.advance(lexeme2.length);\n return lexeme2;\n }\n\n return null;\n }\n\n throwError(pos: ShaderPosition | ShaderRange, ...msgs: any[]) {\n const error = ShaderCompilerUtils.createGSError(msgs.join(\" \"), GSErrorName.ScannerError, this._source, pos);\n // #if _VERBOSE\n console.error(error!.toString());\n // #endif\n throw error;\n }\n\n scanPairedChar(left: string, right: string, balanced: boolean, skipLeading: boolean): string {\n if (!skipLeading) {\n this.scanLexeme(left);\n }\n\n const start = this._currentIndex;\n const source = this._source;\n const sourceLength = source.length;\n\n let currentIndex = this._currentIndex;\n if (balanced) {\n let level = 1;\n while (currentIndex < sourceLength) {\n const currentChar = source[currentIndex];\n if (currentChar === right && --level === 0) {\n break;\n } else if (currentChar === left) {\n level++;\n }\n currentIndex++;\n }\n } else {\n while (currentIndex < sourceLength) {\n if (source[currentIndex] === right) {\n break;\n }\n currentIndex++;\n }\n }\n\n this.advance(currentIndex + 1 - this._currentIndex);\n\n return source.substring(start, currentIndex);\n }\n\n abstract scanToken(onToken?: OnToken): void;\n}\n","import { ETokenType } from \"../common\";\nimport { BaseLexer } from \"../common/BaseLexer\";\nimport { BaseToken, BranchConstraint, BranchSignature, EMPTY_BRANCH, EOF } from \"../common/BaseToken\";\nimport { Keyword } from \"../common/enums/Keyword\";\nimport { MacroDefineInfo, MacroDefineList } from \"../Preprocessor\";\nimport { ShaderCompiler } from \"../ShaderCompiler\";\n\n/**\n * The Lexer of Shader Compiler\n */\nexport class Lexer extends BaseLexer {\n private static _lexemeTable = <Record<string, Keyword>>{\n const: Keyword.CONST,\n bool: Keyword.BOOL,\n float: Keyword.FLOAT,\n double: Keyword.DOUBLE,\n int: Keyword.INT,\n uint: Keyword.UINT,\n break: Keyword.BREAK,\n continue: Keyword.CONTINUE,\n do: Keyword.DO,\n else: Keyword.ELSE,\n for: Keyword.FOR,\n if: Keyword.IF,\n while: Keyword.WHILE,\n discard: Keyword.DISCARD,\n return: Keyword.RETURN,\n bvec2: Keyword.BVEC2,\n bvec3: Keyword.BVEC3,\n bvec4: Keyword.BVEC4,\n ivec2: Keyword.IVEC2,\n ivec3: Keyword.IVEC3,\n ivec4: Keyword.IVEC4,\n uvec2: Keyword.UVEC2,\n uvec3: Keyword.UVEC3,\n uvec4: Keyword.UVEC4,\n vec2: Keyword.VEC2,\n vec3: Keyword.VEC3,\n vec4: Keyword.VEC4,\n mat2: Keyword.MAT2,\n mat3: Keyword.MAT3,\n mat4: Keyword.MAT4,\n in: Keyword.IN,\n out: Keyword.OUT,\n inout: Keyword.INOUT,\n sampler2D: Keyword.SAMPLER2D,\n samplerCube: Keyword.SAMPLER_CUBE,\n sampler3D: Keyword.SAMPLER3D,\n sampler2DShadow: Keyword.SAMPLER2D_SHADOW,\n samplerCubeShadow: Keyword.SAMPLER_CUBE_SHADOW,\n sampler2DArray: Keyword.SAMPLER2D_ARRAY,\n sampler2DArrayShadow: Keyword.SAMPLER2D_ARRAY_SHADOW,\n isampler2D: Keyword.I_SAMPLER2D,\n isampler3D: Keyword.I_SAMPLER3D,\n isamplerCube: Keyword.I_SAMPLER_CUBE,\n isampler2DArray: Keyword.I_SAMPLER2D_ARRAY,\n usampler2D: Keyword.U_SAMPLER2D,\n usampler3D: Keyword.U_SAMPLER3D,\n usamplerCube: Keyword.U_SAMPLER_CUBE,\n usampler2DArray: Keyword.U_SAMPLER2D_ARRAY,\n struct: Keyword.STRUCT,\n void: Keyword.VOID,\n true: Keyword.True,\n false: Keyword.False,\n precision: Keyword.PRECISION,\n precise: Keyword.PRECISE,\n highp: Keyword.HIGHP,\n mediump: Keyword.MEDIUMP,\n lowp: Keyword.LOWP,\n invariant: Keyword.INVARIANT,\n flat: Keyword.FLAT,\n smooth: Keyword.SMOOTH,\n noperspective: Keyword.NOPERSPECTIVE,\n centroid: Keyword.CENTROID,\n layout: Keyword.LAYOUT,\n location: Keyword.LOCATION,\n\n // Macros ...\n \"#if\": Keyword.MACRO_IF,\n \"#ifdef\": Keyword.MACRO_IFDEF,\n \"#ifndef\": Keyword.MACRO_IFNDEF,\n \"#else\": Keyword.MACRO_ELSE,\n \"#elif\": Keyword.MACRO_ELIF,\n \"#endif\": Keyword.MACRO_ENDIF,\n \"#undef\": Keyword.MACRO_UNDEF\n };\n\n // Synthetic `__if_<n>` per `#if` — polarity flip makes `#else` mutually exclusive in `isVisibleFrom`.\n private static _ifCounter = 0;\n\n /** Two branch signatures are equal iff they have the same constraints in the\n * same order with the same polarity. Used by `#define` dedup and AST upgrade\n * matching. */\n static sameBranch(a: BranchSignature, b: BranchSignature): boolean {\n if (a.length !== b.length) return false;\n for (let i = 0, n = a.length; i < n; i++) {\n if (a[i].name !== b[i].name || a[i].defined !== b[i].defined) return false;\n }\n return true;\n }\n\n /**\n * Returns true if a `#define` registered under `defBranch` is reachable from\n * a call site under `callSiteBranch`. Two signatures are mutually exclusive\n * iff some flag appears in both with opposite `defined` polarity. Anything\n * else is compatible — the same flag with the same polarity, or flags that\n * simply don't intersect.\n *\n * Conservative for `#if expr` (not modeled — `tokenize` pushes a sentinel\n * with `name === \"\"` to keep the `#endif` stack depth correct; that\n * sentinel never matches a real flag in the polarity check below, so it\n * stays visible from everywhere). Exact for the common `#ifdef` /\n * `#ifndef` / `#else` cases that drive real shader code.\n */\n static isVisibleFrom(defBranch: BranchSignature, callSiteBranch: BranchSignature): boolean {\n for (let i = 0, n = defBranch.length; i < n; i++) {\n const d = defBranch[i];\n for (let j = 0, m = callSiteBranch.length; j < m; j++) {\n const c = callSiteBranch[j];\n if (d.name === c.name && d.defined !== c.defined) return false;\n }\n }\n return true;\n }\n\n private _needScanMacroConditionExpression = false;\n\n // --- `#define` scanning state machine ---\n // Expression-style `#define` produces a token stream:\n // MACRO_DEFINE, ID(name), [MACRO_DEFINE_PARAMS], <value tokens>, MACRO_DEFINE_END\n // The three flags below encode the mini state machine driving that stream:\n // - _inMacroDefineValue : persistent mode — newline terminates the directive\n // rather than being skipped as whitespace\n // - _macroDefineExpectsNameToken : one-shot — next identifier is the macro\n // name and must be ID (not MACRO_CALL even if the\n // name was registered by a prior definition)\n // - _macroDefineExpectsParamsToken : one-shot — if next char is `(`, capture\n // the balanced `(…)` block as a single opaque token\n // so the CFG doesn't need its own parameter-list\n // non-terminal (which would conflict with\n // function_call_parameter_list under LALR(1))\n private _inMacroDefineValue = false;\n private _macroDefineExpectsNameToken = false;\n private _macroDefineExpectsParamsToken = false;\n\n // Fields populated as the state machine walks a `#define` directive; consumed\n // by `_emitMacroDefineEnd` to register the directive without re-parsing.\n private _currentMacroName = \"\";\n private _currentMacroParamsLexeme: string | undefined = undefined;\n private _currentMacroValueStart = -1;\n\n // Active `#ifdef`/`#ifndef`/`#else` stack. Updated by `tokenize` between\n // emitting tokens; read by `_registerMacroDefine` (when it registers a\n // legacy entry mid-scan) and stamped onto every emitted token's `branch`\n // field so AST nodes know which branch they're inside.\n private _branchStack: BranchConstraint[] = [];\n // True when the previous token was `#ifdef`/`#ifndef` and we're waiting on\n // the next ID token (the flag name) to actually push onto the stack.\n private _pendingBranchPushDefined: boolean | null = null;\n\n *tokenize() {\n while (!this.isEnd()) {\n const tok = this.scanToken();\n\n // Resolve a pending #ifdef/#ifndef push using the flag-name token that\n // immediately follows the keyword. Grammar allows the name to be either\n // a plain `id` or a `MACRO_CALL` (for `#ifdef <previously-defined-macro>`).\n if (this._pendingBranchPushDefined !== null && (tok.type === ETokenType.ID || tok.type === Keyword.MACRO_CALL)) {\n this._branchStack.push({ name: tok.lexeme, defined: this._pendingBranchPushDefined });\n this._pendingBranchPushDefined = null;\n }\n\n // Stamp the branch onto the token only when inside an `#ifdef`. The\n // top-level case keeps the BaseToken default (shared empty signature),\n // so the hot path stays allocation-free.\n if (this._branchStack.length > 0) tok.branch = this._branchStack.slice();\n\n // Update stack state based on the just-emitted token, so the *next*\n // token sees the correct snapshot. `#if expr` opens a level we can't\n // address (we don't model expressions), but must consume a stack slot\n // so the matching `#endif` pops the right depth — without it, an\n // outer `#ifdef A`'s constraint would be wrongly popped.\n switch (tok.type as Keyword) {\n case Keyword.MACRO_IFDEF:\n this._pendingBranchPushDefined = true;\n break;\n case Keyword.MACRO_IFNDEF:\n this._pendingBranchPushDefined = false;\n break;\n case Keyword.MACRO_IF:\n this._branchStack.push({ name: `__if_${++Lexer._ifCounter}`, defined: true });\n break;\n case Keyword.MACRO_ELIF:\n // Each `#elif` link gets a fresh tag so it's exclusive with earlier arms.\n if (this._branchStack.length > 0) {\n this._branchStack[this._branchStack.length - 1] = {\n name: `__if_${++Lexer._ifCounter}`,\n defined: true\n };\n }\n break;\n case Keyword.MACRO_ELSE: {\n // Flip polarity: `#ifdef X` → `[X=true]` becomes `[X=false]`; `__if_n` likewise.\n const top = this._branchStack[this._branchStack.length - 1];\n if (top) this._branchStack[this._branchStack.length - 1] = { name: top.name, defined: !top.defined };\n break;\n }\n case Keyword.MACRO_ENDIF:\n this._branchStack.pop();\n break;\n }\n\n yield tok;\n }\n return EOF;\n }\n\n constructor(\n source: string,\n public macroDefineList: MacroDefineList\n ) {\n super(source);\n }\n\n override scanToken(): BaseToken {\n if (this._inMacroDefineValue) {\n // Inside a `#define` value: newline ends the directive. Skip only spaces/tabs\n // and block comments, never \\n, so the termination can be detected.\n this._skipInlineSpaceAndComments();\n if (this.isEnd() || this._isAtLineBreak()) {\n return this._emitMacroDefineEnd();\n }\n // Right after the macro name, if the next char is `(`, capture the whole\n // parenthesized parameter list as one opaque token. This keeps the\n // macro-define grammar LALR(1)-friendly (no nested param-list non-terminal).\n if (this._macroDefineExpectsParamsToken) {\n this._macroDefineExpectsParamsToken = false;\n if (this.getCurChar() === \"(\") {\n return this._scanMacroDefineParams();\n }\n }\n } else {\n this.skipCommentsAndSpace();\n if (this.isEnd()) {\n return EOF;\n }\n }\n\n if (this._needScanMacroConditionExpression) {\n this._needScanMacroConditionExpression = false;\n return this._scanMacroConditionExpression();\n }\n\n const curCharCode = this.getCurCharCode();\n if (BaseLexer.isPreprocessorStartChar(curCharCode)) {\n return this._scanDirectives();\n }\n if (BaseLexer.isAlpha(curCharCode)) {\n return this._scanWord();\n }\n if (BaseLexer.isDigit(curCharCode)) {\n return this._scanNum();\n }\n\n const start = this.getShaderPosition();\n const token = BaseToken.pool.get();\n let curChar: string;\n\n switch (this.getCurChar()) {\n case \"<\":\n this.advance(1);\n curChar = this.getCurChar();\n if (curChar === \"<\") {\n this.advance(1);\n if (this.getCurChar() === \"=\") {\n this.advance(1);\n token.set(ETokenType.LEFT_ASSIGN, \"<<=\", start);\n break;\n }\n token.set(ETokenType.LEFT_OP, \"<<\", start);\n break;\n } else if (curChar === \"=\") {\n this.advance(1);\n token.set(ETokenType.LE_OP, \"<=\", start);\n break;\n }\n token.set(ETokenType.LEFT_ANGLE, \"<\", start);\n break;\n\n case \">\":\n this.advance(1);\n curChar = this.getCurChar();\n if (curChar === \">\") {\n this.advance(1);\n if (this.getCurChar() === \"=\") {\n this.advance(1);\n token.set(ETokenType.RIGHT_ASSIGN, \">>=\", start);\n break;\n }\n token.set(ETokenType.RIGHT_OP, \">>\", start);\n break;\n } else if (curChar === \"=\") {\n this.advance(1);\n token.set(ETokenType.GE_OP, \">=\", start);\n break;\n }\n token.set(ETokenType.RIGHT_ANGLE, \">\", start);\n break;\n\n case \"+\":\n this.advance(1);\n curChar = this.getCurChar();\n if (curChar === \"+\") {\n this.advance(1);\n token.set(ETokenType.INC_OP, \"++\", start);\n break;\n } else if (curChar === \"=\") {\n this.advance(1);\n token.set(ETokenType.ADD_ASSIGN, \"+=\", start);\n break;\n }\n token.set(ETokenType.PLUS, \"+\", start);\n break;\n\n case \"-\":\n this.advance(1);\n curChar = this.getCurChar();\n if (curChar === \"-\") {\n this.advance(1);\n token.set(ETokenType.DEC_OP, \"--\", start);\n break;\n } else if (curChar === \"=\") {\n this.advance(1);\n token.set(ETokenType.SUB_ASSIGN, \"-=\", start);\n break;\n }\n token.set(ETokenType.DASH, \"-\", start);\n break;\n\n case \"=\":\n this.advance(1);\n if (this.getCurChar() === \"=\") {\n this.advance(1);\n token.set(ETokenType.EQ_OP, \"==\", start);\n break;\n }\n token.set(ETokenType.EQUAL, \"=\", start);\n break;\n\n case \"!\":\n this.advance(1);\n if (this.getCurChar() === \"=\") {\n this.advance(1);\n token.set(ETokenType.NE_OP, \"!=\", start);\n break;\n }\n token.set(ETokenType.BANG, \"!\", start);\n break;\n\n case \"&\":\n this.advance(1);\n curChar = this.getCurChar();\n if (curChar === \"&\") {\n this.advance(1);\n token.set(ETokenType.AND_OP, \"&&\", start);\n break;\n } else if (curChar === \"=\") {\n this.advance(1);\n token.set(ETokenType.AND_ASSIGN, \"&=\", start);\n break;\n }\n token.set(ETokenType.AMPERSAND, \"&\", start);\n break;\n\n case \"|\":\n this.advance(1);\n curChar = this.getCurChar();\n if (curChar === \"|\") {\n this.advance(1);\n token.set(ETokenType.OR_OP, \"||\", start);\n break;\n } else if (curChar === \"=\") {\n this.advance(1);\n token.set(ETokenType.OR_ASSIGN, \"|=\", start);\n break;\n }\n token.set(ETokenType.VERTICAL_BAR, \"|\", start);\n break;\n\n case \"^\":\n this.advance(1);\n curChar = this.getCurChar();\n if (curChar === \"^\") {\n this.advance(1);\n token.set(ETokenType.XOR_OP, \"^^\", start);\n break;\n } else if (curChar === \"=\") {\n this.advance(1);\n token.set(ETokenType.XOR_ASSIGN, \"^=\", start);\n break;\n }\n token.set(ETokenType.CARET, \"^\", start);\n break;\n\n case \"*\":\n this.advance(1);\n if (this.getCurChar() === \"=\") {\n this.advance(1);\n token.set(ETokenType.MUL_ASSIGN, \"*=\", start);\n break;\n }\n\n token.set(ETokenType.STAR, \"*\", start);\n break;\n\n case \"/\":\n this.advance(1);\n if (this.getCurChar() === \"=\") {\n this.advance(1);\n\n token.set(ETokenType.DIV_ASSIGN, \"/=\", start);\n break;\n }\n\n token.set(ETokenType.SLASH, \"/\", start);\n break;\n\n case \"%\":\n this.advance(1);\n if (this.getCurChar() === \"=\") {\n this.advance(1);\n\n token.set(ETokenType.MOD_ASSIGN, \"%=\", start);\n break;\n }\n\n token.set(ETokenType.PERCENT, \"%\", start);\n break;\n\n case \"(\":\n this.advance(1);\n\n token.set(ETokenType.LEFT_PAREN, \"(\", start);\n break;\n case \")\":\n this.advance(1);\n\n token.set(ETokenType.RIGHT_PAREN, \")\", start);\n break;\n case \"{\":\n this.advance(1);\n\n token.set(ETokenType.LEFT_BRACE, \"{\", start);\n break;\n case \"}\":\n this.advance(1);\n\n token.set(ETokenType.RIGHT_BRACE, \"}\", start);\n break;\n case \"[\":\n this.advance(1);\n\n token.set(ETokenType.LEFT_BRACKET, \"[\", start);\n break;\n case \"]\":\n this.advance(1);\n\n token.set(ETokenType.RIGHT_BRACKET, \"]\", start);\n break;\n case \".\":\n this.advance(1);\n if (BaseLexer.isDigit(this.getCurCharCode())) {\n return this._scanNumAfterDot();\n }\n\n token.set(ETokenType.DOT, \".\", start);\n break;\n case \",\":\n this.advance(1);\n\n token.set(ETokenType.COMMA, \",\", start);\n break;\n case \":\":\n this.advance(1);\n\n token.set(ETokenType.COLON, \":\", start);\n return token;\n case \";\":\n this.advance(1);\n\n token.set(ETokenType.SEMICOLON, \";\", start);\n break;\n case \"~\":\n this.advance(1);\n\n token.set(ETokenType.TILDE, \"~\", start);\n break;\n case \"?\":\n this.advance(1);\n\n token.set(ETokenType.QUESTION, \"?\", start);\n break;\n case '\"':\n this.advance(1);\n return this._scanStringConst();\n\n default:\n this.throwError(this.getShaderPosition(0), `Unexpected character ${this.getCurChar()}`);\n }\n return token;\n }\n\n private _scanStringConst(): BaseToken {\n const start = this.getShaderPosition();\n const buffer: string[] = [];\n while (this.getCurChar() !== '\"') {\n buffer.push(this.getCurChar());\n this.advance(1);\n }\n this.advance(1);\n const range = ShaderCompiler.createRange(start, this.getShaderPosition());\n\n const token = BaseToken.pool.get();\n token.set(ETokenType.STRING_CONST, buffer.join(\"\"), range);\n return token;\n }\n\n private _scanNumAfterDot(): BaseToken {\n const buffer = [\".\"];\n while (BaseLexer.isDigit(this.getCurCharCode())) {\n buffer.push(this.getCurChar());\n this.advance(1);\n }\n this._scanFloatSuffix(buffer);\n const token = BaseToken.pool.get();\n token.set(ETokenType.FLOAT_CONSTANT, buffer.join(\"\"), this.getShaderPosition(buffer.length));\n return token;\n }\n\n private _scanUtilBreakLine(outBuffer: string[]): void {\n const src = this._source;\n const len = src.length;\n while (!this.isEnd()) {\n // Honor line-continuation so multi-line directives (`#define X a \\\\\\n + b`)\n // are not cut short at the first physical newline.\n const afterContinuation = Lexer._skipLineContinuation(src, this._currentIndex, len);\n if (afterContinuation !== this._currentIndex) {\n this.advance(afterContinuation - this._currentIndex);\n continue;\n }\n const c = src.charCodeAt(this._currentIndex);\n if (c === 10) break;\n outBuffer.push(src[this._currentIndex]);\n this.advance(1);\n }\n }\n\n private _scanDirectives(): BaseToken {\n const buffer: string[] = [this.getCurChar()];\n const start = this.getShaderPosition();\n this.advance(1);\n while (BaseLexer.isAlpha(this.getCurCharCode())) {\n buffer.push(this.getCurChar());\n this.advance(1);\n }\n const token = BaseToken.pool.get();\n const word = buffer.join(\"\");\n\n if (word === \"#define\") {\n const peek = this._peekMacroDefine();\n if (peek && peek.isExpression) {\n // AST path: the value will be tokenized by the lexer's `_inMacroDefineValue`\n // state machine and re-parsed by the expression grammar. State machine\n // fills `_currentMacroName` / `_currentMacroParamsLexeme` / `_currentMacroValueStart`\n // as it walks the value; `_emitMacroDefineEnd` consumes them.\n this._inMacroDefineValue = true;\n // The next word is the macro name: force ID type even if a prior `#define`\n // has already registered the name into `macroDefineList` (redefinition or\n // multi-chunk include), which would otherwise make the word a MACRO_CALL.\n this._macroDefineExpectsNameToken = true;\n token.set(Keyword.MACRO_DEFINE, \"#define\", start);\n } else {\n // Legacy path: opaque token sequence. Register directly from the peek\n // result without re-walking the directive.\n this._scanUtilBreakLine(buffer);\n const lexeme = \"\\n\" + buffer.join(\"\") + \"\\n\";\n if (peek) {\n this._registerMacroDefine(peek.name, peek.paramsLexeme, peek.valueStart, peek.valueEnd);\n }\n token.set(Keyword.MACRO_DEFINE_EXPRESSION, lexeme, start);\n }\n } else {\n const kt = Lexer._lexemeTable[word];\n token.set(kt ?? ETokenType.ID, word, start);\n if (word === \"#if\" || word === \"#elif\") {\n this._needScanMacroConditionExpression = true;\n }\n }\n\n return token;\n }\n\n /** True if the current char is an unescaped line break (ignoring `\\` continuation). */\n private _isAtLineBreak(): boolean {\n const c = this.getCurChar();\n return c === \"\\n\" || c === \"\\r\";\n }\n\n /**\n * Walk a `#define` directive head once and produce everything both routing\n * and registration need: name range, optional params range, value range,\n * and whether the value parses as an `expression`.\n *\n * The replacement list is split three ways:\n *\n * - **AST path** (`isExpression = true`): value parses as `expression`.\n * Covers identifiers, literals, parenthesized sub-expressions, operator\n * expressions, function calls, top-level comma lists (per C99 §6.10.3).\n *\n * - **Legacy opaque path** (`isExpression = false`, no throw): the three\n * GLSL-ES-§3.4-legal-but-not-an-expression shapes with real-world use —\n * 1. empty value e.g. `#define COMMON_INCLUDED`\n * 2. single type/qualifier keyword e.g. `#define FxaaFloat float`\n * 3. type-qualifier list e.g. `#define TEX_PARAM(s) mediump sampler2D s`\n *\n * Note on X-macro support: the classical C X-macro pattern (a list\n * macro re-expanded with redefined `X(...)`) works fine — it uses\n * function-like macros + `\\` line-continuation + `#undef`, all of\n * which Galacean supports. It does NOT require unbalanced parens.\n *\n * - **Authoring error** (throws): every other shape that's not a valid\n * `expression`. Legal token sequences in theory but not used in real\n * GLSL — almost always author mistakes. We surface one uniform\n * diagnostic with the macro name and value text and let the user fix\n * their code instead of routing politely.\n *\n * Unsupported shapes that throw (non-exhaustive — the predicate is\n * \"the value doesn't reduce as `expression` and isn't one of the three\n * legacy shapes above\"):\n * - leading bare punctuation `,` `;` `:` `?` `)` `]`\n * - trailing `,` or `;` e.g. `#define X a, b,`\n * - trailing binary / unary op `+` `-` `*` `/` `%` `&` `|` `^`\n * `<` `>` `=` `!` `~`\n * - trailing ternary fragment `?` or `:`\n * - unbalanced `[` / `]` e.g. `#define X a[b`\n * - unbalanced `(` / `)` e.g. `#define PAREN (`\n *\n * Returns `null` if the directive is malformed before the name. `cursor` is\n * the position past the last non-newline char (caller advances from there).\n */\n private _peekMacroDefine(): {\n name: string;\n paramsLexeme: string | undefined;\n valueStart: number;\n valueEnd: number;\n cursor: number;\n isExpression: boolean;\n } | null {\n const src = this._source;\n const len = src.length;\n let i = Lexer._skipNonSemantic(src, this._currentIndex, len);\n if (!(i < len && BaseLexer.isAlpha(src.charCodeAt(i)))) return null;\n const nameStart = i;\n while (i < len && BaseLexer.isAlnum(src.charCodeAt(i))) i++;\n const name = src.slice(nameStart, i);\n // Optional `(params)` glued to the name (function-like per C99 §6.10.3/10;\n // whitespace before `(` makes it object-like — `(` becomes part of value).\n let paramsLexeme: string | undefined;\n if (i < len && src.charCodeAt(i) === 40 /* '(' */) {\n const paramsStart = i;\n let depth = 1;\n i++;\n while (i < len && depth > 0) {\n i = Lexer._skipNonSemantic(src, i, len);\n if (i >= len) break;\n const c = src.charCodeAt(i);\n if (c === 10 || c === 13) {\n // Unbalanced before newline — treat as malformed function-like.\n return { name, paramsLexeme: undefined, valueStart: i, valueEnd: i, cursor: i, isExpression: false };\n }\n if (c === 40) depth++;\n else if (c === 41 /* ')' */) depth--;\n i++;\n }\n paramsLexeme = src.slice(paramsStart, i);\n }\n // Walk the value once tracking what routing needs.\n const valueStart = i;\n let parenDepth = 0;\n let bracketDepth = 0;\n let firstStart = -1;\n let firstEnd = -1;\n let firstFollowedByParen = false;\n let topLevelLast = -1;\n while (i < len) {\n const skipped = Lexer._skipNonSemantic(src, i, len);\n if (skipped !== i) {\n i = skipped;\n continue;\n }\n const c = src.charCodeAt(i);\n if (c === 10 || c === 13) break;\n if (firstStart === -1) {\n firstStart = i;\n if (BaseLexer.isAlpha(c)) {\n while (i < len && BaseLexer.isAlnum(src.charCodeAt(i))) i++;\n firstEnd = i;\n const after = Lexer._skipNonSemantic(src, i, len);\n firstFollowedByParen = after < len && src.charCodeAt(after) === 40;\n topLevelLast = firstEnd - 1;\n continue;\n }\n }\n if (c === 40) parenDepth++;\n else if (c === 41) parenDepth--;\n else if (c === 91 /* [ */) bracketDepth++;\n else if (c === 93 /* ] */) bracketDepth--;\n if (parenDepth === 0 && bracketDepth === 0) topLevelLast = i;\n i++;\n }\n const result = { name, paramsLexeme, valueStart, valueEnd: i, cursor: i, isExpression: false };\n // Real-world legacy shapes:\n // 1. empty value, 2. single type/qualifier kw, 3. type-qualifier list.\n if (firstStart === -1) return result;\n if (\n firstEnd !== -1 &&\n !firstFollowedByParen &&\n Lexer._isNonExpressionLeadingKeyword(src.slice(firstStart, firstEnd))\n ) {\n return result;\n }\n // Authoring errors. Anything that's neither a legal `expression` nor one\n // of the three legacy shapes above gets a single uniform diagnostic —\n // the user sees the macro name and the value text, that's enough to\n // locate and fix. We don't categorize further; the rule for users is\n // simply \"value must be a valid GLSL expression\".\n //\n // Legal expression starts: alnum (identifier / literal), `(` (group),\n // `.` (GLSL ES §4.1.4 leading-dot float literal like `.5`), `-`/`+`/`!`/`~`\n // (unary). Legal expression ends: alnum (identifier / literal), `)` (group\n // close), `]` (array-index close). Everything else at the head or\n // top-level tail is an authoring error.\n const head = src.charCodeAt(firstStart);\n const tail = topLevelLast >= 0 ? src.charCodeAt(topLevelLast) : 0;\n const headIllegal =\n !BaseLexer.isAlnum(head) &&\n head !== 40 /* ( */ &&\n head !== 46 /* . */ &&\n head !== 45 /* - */ &&\n head !== 43 /* + */ &&\n head !== 33 /* ! */ &&\n head !== 126; /* ~ */\n const tailIllegal = !BaseLexer.isAlnum(tail) && tail !== 41 /* ) */ && tail !== 93; /* ] */\n if (parenDepth !== 0 || bracketDepth !== 0 || headIllegal || tailIllegal) {\n const valueText = src.slice(firstStart, i).replace(/\\s+/g, \" \").trim();\n this.throwError(\n this.getShaderPosition(0),\n `#define ${name}: invalid replacement list — not a valid GLSL expression (\"${valueText}\")`\n );\n }\n result.isExpression = true;\n return result;\n }\n\n /** GLSL type / qualifier keywords that aren't expression starters when standing alone.\n * `true` / `false` are excluded — they're `primary_expression` literals.\n * `#`-prefixed entries are excluded — they're preprocessor directive names. */\n private static _isNonExpressionLeadingKeyword(lexeme: string): boolean {\n const kw = Lexer._lexemeTable[lexeme];\n return kw !== undefined && kw !== Keyword.True && kw !== Keyword.False && !lexeme.startsWith(\"#\");\n }\n\n /**\n * If `i` points at a `\\` immediately followed by a newline (`\\n`, `\\r`, or\n * `\\r\\n`), return the index just past the pair (a single atom in the C/GLSL\n * preprocessor view). Otherwise return `i` unchanged. This is the single\n * source of truth for line-continuation detection — callers along the\n * directive-scanning path (`_skipNonSemantic`, `_scanUtilBreakLine`,\n * `_scanMacroDefineParams`) all delegate here so the rule stays in one\n * place.\n */\n private static _skipLineContinuation(src: string, i: number, len: number): number {\n if (src.charCodeAt(i) !== 92 /* '\\\\' */ || i + 1 >= len) return i;\n const n = src.charCodeAt(i + 1);\n if (n === 10) return i + 2;\n if (n === 13) return i + 2 < len && src.charCodeAt(i + 2) === 10 ? i + 3 : i + 2;\n return i;\n }\n\n /**\n * Pure positional version of \"skip non-semantic characters within a single\n * `#define` directive\": spaces, tabs, `\\` + newline line-continuation, block\n * comments, line comments. A real `\\n` (without preceding `\\`) is *not*\n * consumed — it terminates the directive — so callers can detect\n * end-of-directive after this returns. Shared by `_defineHasValue` (peek\n * path) and `_skipInlineSpaceAndComments` (consuming path) so both honor\n * the same lexical view.\n */\n private static _skipNonSemantic(src: string, from: number, len: number): number {\n let i = from;\n while (i < len) {\n const c = src.charCodeAt(i);\n if (c === 32 || c === 9) {\n i++;\n continue;\n }\n const afterContinuation = Lexer._skipLineContinuation(src, i, len);\n if (afterContinuation !== i) {\n i = afterContinuation;\n continue;\n }\n const afterBlock = Lexer._skipBlockComment(src, i, len);\n if (afterBlock !== i) {\n i = afterBlock;\n continue;\n }\n const afterLine = Lexer._skipLineComment(src, i, len);\n if (afterLine !== i) {\n i = afterLine;\n continue;\n }\n break;\n }\n return i;\n }\n\n /** Consuming wrapper around `_skipNonSemantic` operating on the lexer's\n * current position. Used by the `#define`-value scan state machine. Goes\n * through `advance(diff)` so verbose builds keep their line/column counters\n * in sync (advance walks the consumed slice and bumps `_line` on `\\n`). */\n private _skipInlineSpaceAndComments(): void {\n const next = Lexer._skipNonSemantic(this._source, this._currentIndex, this._source.length);\n if (next > this._currentIndex) this.advance(next - this._currentIndex);\n }\n\n /**\n * Capture a `(param1, param2, …)` block immediately after the macro name in a\n * `#define` directive, producing a single `MACRO_DEFINE_PARAMS` token whose lexeme\n * is the complete `(…)` text (including parens). Balanced parentheses are honored\n * so the scanner doesn't terminate early on inner `()`. Newlines inside the\n * parameter list are tolerated (rare; appears when the directive uses `\\` line\n * continuation), but any newline raises no special error here — it simply stops\n * capture and parser handles the resulting token however it can.\n */\n private _scanMacroDefineParams(): BaseToken {\n const start = this.getShaderPosition();\n const src = this._source;\n const len = src.length;\n const buffer: string[] = [];\n let depth = 0;\n while (this._currentIndex < len) {\n // Honor line-continuation so `#define MAX3( \\\\\\n a, b, c \\\\\\n ) …`\n // collapses onto one logical line. The `\\` and `\\n` must not enter the\n // params buffer or the grammar will reject the lexeme.\n const afterContinuation = Lexer._skipLineContinuation(src, this._currentIndex, len);\n if (afterContinuation !== this._currentIndex) {\n this.advance(afterContinuation - this._currentIndex);\n continue;\n }\n const ch = src[this._currentIndex];\n buffer.push(ch);\n if (ch === \"(\") depth++;\n else if (ch === \")\") {\n depth--;\n this.advance(1);\n if (depth === 0) break;\n continue;\n }\n this.advance(1);\n }\n const token = BaseToken.pool.get();\n const lexeme = buffer.join(\"\");\n this._currentMacroParamsLexeme = lexeme;\n // Value starts after the `)` we just consumed.\n this._currentMacroValueStart = this._currentIndex;\n token.set(Keyword.MACRO_DEFINE_PARAMS, lexeme, start);\n return token;\n }\n\n /** Emit `MACRO_DEFINE_END` at the end of a `#define` value, consuming the newline. */\n private _emitMacroDefineEnd(): BaseToken {\n const start = this.getShaderPosition();\n const valueEnd = this._currentIndex;\n const source = this._source;\n if (this._currentIndex < source.length) {\n const c = source.charCodeAt(this._currentIndex);\n if (c === 13 && source.charCodeAt(this._currentIndex + 1) === 10) {\n this.advance(2);\n } else if (c === 10 || c === 13) {\n this.advance(1);\n }\n }\n this._registerMacroDefine(\n this._currentMacroName,\n this._currentMacroParamsLexeme,\n this._currentMacroValueStart,\n valueEnd\n );\n this._inMacroDefineValue = false;\n const token = BaseToken.pool.get();\n token.set(Keyword.MACRO_DEFINE_END, \"\\n\", start);\n return token;\n }\n\n // Register a `#define` directive. Both AST and legacy paths funnel through\n // here using ranges already extracted by `_peekMacroDefine` / the value\n // state machine — no re-parsing the directive text.\n private _registerMacroDefine(\n name: string,\n paramsLexeme: string | undefined,\n valueStart: number,\n valueEnd: number\n ): void {\n const params = paramsLexeme\n ? paramsLexeme\n .slice(1, -1) // strip enclosing `(` `)`\n .split(\",\")\n .map((p) => p.trim())\n .filter(Boolean)\n : [];\n // Dedup key: normalized value text (same lexical view the token-stream\n // path sees — comments stripped, whitespace collapsed). Two `#define`s\n // with the same name but different value text produce different keys,\n // so disjoint-branch entries stay separate.\n const dedupKey = `${paramsLexeme ?? \"\"}=${Lexer._normalizeValueText(this._source, valueStart, valueEnd)}`;\n const info: MacroDefineInfo = {\n isFunction: paramsLexeme !== undefined,\n params,\n dedupKey,\n branch: this._branchStack.length === 0 ? EMPTY_BRANCH : this._branchStack.slice()\n };\n const arr = this.macroDefineList[name];\n if (!arr) {\n this.macroDefineList[name] = [info];\n return;\n }\n // Same key + same branch → duplicate (re-include). Different branches stay\n // separate so the visibility filter picks the right entry at each call site.\n for (let i = 0, n = arr.length; i < n; i++) {\n const e = arr[i];\n if (e.dedupKey === dedupKey && Lexer.sameBranch(e.branch, info.branch)) return;\n }\n arr.push(info);\n }\n\n /** Render a `[start, end)` value range as space-separated significant chars,\n * using the same comment / line-continuation rules `_skipNonSemantic`\n * applies on the token-stream path. Used as the dedup key body. */\n private static _normalizeValueText(src: string, start: number, end: number): string {\n let out = \"\";\n let i = start;\n let pendingSpace = false;\n while (i < end) {\n const skipped = Lexer._skipNonSemantic(src, i, end);\n if (skipped !== i) {\n pendingSpace = out.length > 0;\n i = skipped;\n continue;\n }\n const c = src.charCodeAt(i);\n if (c === 32 || c === 9) {\n pendingSpace = out.length > 0;\n i++;\n continue;\n }\n if (pendingSpace) {\n out += \" \";\n pendingSpace = false;\n }\n out += src[i];\n i++;\n }\n return out;\n }\n\n private _scanMacroConditionExpression(): BaseToken {\n const buffer = new Array<string>();\n const start = this.getShaderPosition();\n this._scanUtilBreakLine(buffer);\n const word = buffer.join(\"\");\n const token = BaseToken.pool.get();\n token.set(Keyword.MACRO_CONDITIONAL_EXPRESSION, word, start);\n return token;\n }\n\n private _scanWord(): BaseToken {\n const buffer: string[] = [this.getCurChar()];\n const start = this.getShaderPosition();\n this.advance(1);\n while (BaseLexer.isAlnum(this.getCurCharCode())) {\n buffer.push(this.getCurChar());\n this.advance(1);\n }\n const token = BaseToken.pool.get();\n const word = buffer.join(\"\");\n const kt = Lexer._lexemeTable[word];\n\n if (this._macroDefineExpectsNameToken) {\n // Bypass MACRO_CALL classification for this one word. Used for the name of\n // a `#define` directive so redefining a known macro still yields a declarer ID.\n this._macroDefineExpectsNameToken = false;\n this._currentMacroName = word;\n this._currentMacroParamsLexeme = undefined;\n // C99 §6.10.3/3: the macro is function-like only when `(` appears *immediately*\n // after the name (no intervening whitespace). `#define FOO (1+2)` is\n // object-like with value `(1+2)`, not a function-like macro `FOO()` with\n // body `1+2`. Check the current char before any whitespace-skipping happens\n // on the next `scanToken`, so a space-separated `(` stays part of the value.\n if (this._inMacroDefineValue) {\n this._macroDefineExpectsParamsToken = this.getCurChar() === \"(\";\n // For object-like macros, the value begins where the cursor is now\n // (after the name, before whitespace skipping). Function-like macros\n // overwrite this in `_scanMacroDefineParams` after capturing `(...)`.\n this._currentMacroValueStart = this._currentIndex;\n }\n token.set(ETokenType.ID, word, start);\n } else if (this._isVisibleMacro(word)) {\n token.set(Keyword.MACRO_CALL, word, start);\n } else {\n token.set(kt ?? ETokenType.ID, word, start);\n }\n return token;\n }\n\n /** True iff at least one `#define <word>` is reachable from the current branch. */\n private _isVisibleMacro(word: string): boolean {\n const defs = this.macroDefineList[word];\n if (!defs || defs.length === 0) return false;\n const callSiteBranch = this._branchStack;\n for (let i = 0, n = defs.length; i < n; i++) {\n if (Lexer.isVisibleFrom(defs[i].branch, callSiteBranch)) return true;\n }\n return false;\n }\n\n private _scanNum(): BaseToken {\n const buffer: string[] = [];\n\n // Hex integer literal: `0[xX][0-9a-fA-F]+[uU]?`. Detect before any\n // decimal-digit read so the `x`/`X` after the leading `0` isn't\n // misclassified as an identifier.\n if (this.getCurChar() === \"0\") {\n const nextCode = this._source.charCodeAt(this._currentIndex + 1);\n if (nextCode === 120 /* 'x' */ || nextCode === 88 /* 'X' */) {\n buffer.push(this.getCurChar());\n this.advance(1);\n buffer.push(this.getCurChar());\n this.advance(1);\n while (BaseLexer.isHexDigit(this.getCurCharCode())) {\n buffer.push(this.getCurChar());\n this.advance(1);\n }\n if (buffer.length === 2) {\n this.throwError(this.getShaderPosition(0), \"lexing error, hex literal needs at least one digit.\");\n }\n this._scanIntegerSuffix(buffer);\n\n const token = BaseToken.pool.get();\n token.set(ETokenType.INT_CONSTANT, buffer.join(\"\"), this.getShaderPosition(buffer.length));\n return token;\n }\n }\n\n while (BaseLexer.isDigit(this.getCurCharCode())) {\n buffer.push(this.getCurChar());\n this.advance(1);\n }\n const curChar = this.getCurChar();\n if (curChar === \".\") {\n buffer.push(curChar);\n this.advance(1);\n while (BaseLexer.isDigit(this.getCurCharCode())) {\n buffer.push(this.getCurChar());\n this.advance(1);\n }\n this._scanFloatSuffix(buffer);\n\n const token = BaseToken.pool.get();\n token.set(ETokenType.FLOAT_CONSTANT, buffer.join(\"\"), this.getShaderPosition(buffer.length));\n return token;\n } else if (curChar === \"e\" || curChar === \"E\") {\n this._scanFloatSuffix(buffer);\n\n const token = BaseToken.pool.get();\n token.set(ETokenType.FLOAT_CONSTANT, buffer.join(\"\"), this.getShaderPosition(buffer.length));\n return token;\n } else if (curChar === \"f\" || curChar === \"F\") {\n // Pure-integer + `f`/`F` suffix → float (`5f`, `100F`).\n buffer.push(curChar);\n this.advance(1);\n\n const token = BaseToken.pool.get();\n token.set(ETokenType.FLOAT_CONSTANT, buffer.join(\"\"), this.getShaderPosition(buffer.length));\n return token;\n } else {\n this._scanIntegerSuffix(buffer);\n\n const token = BaseToken.pool.get();\n token.set(ETokenType.INT_CONSTANT, buffer.join(\"\"), this.getShaderPosition(buffer.length));\n return token;\n }\n }\n\n private _scanFloatSuffix(buffer: string[]): void {\n let curChar = this.getCurChar();\n if (curChar === \"e\" || curChar === \"E\") {\n buffer.push(curChar);\n this.advance(1);\n curChar = this.getCurChar();\n if (curChar === \"+\" || curChar === \"-\") {\n buffer.push(curChar);\n this.advance(1);\n curChar = this.getCurChar();\n }\n if (!BaseLexer.isDigit(this.getCurCharCode()))\n this.throwError(this.getShaderPosition(0), \"lexing error, invalid exponent suffix.\");\n\n do {\n buffer.push(curChar);\n this.advance(1);\n curChar = this.getCurChar();\n } while (BaseLexer.isDigit(this.getCurCharCode()));\n }\n if (curChar === \"f\" || curChar === \"F\") {\n buffer.push(curChar);\n this.advance(1);\n }\n }\n\n private _scanIntegerSuffix(buffer: string[]): void {\n const curChar = this.getCurChar();\n if (curChar === \"u\" || curChar === \"U\") {\n buffer.push(curChar);\n this.advance(1);\n }\n }\n}\n","export enum EShaderStage {\n VERTEX,\n FRAGMENT,\n ALL\n}\n","import { GalaceanDataType, TypeAny } from \"../../common\";\nimport { Keyword } from \"../../common/enums/Keyword\";\nimport { EShaderStage } from \"../../common/enums/ShaderStage\";\n\nexport enum GenericType {\n GenType = 200,\n GenIntType,\n GenUintType,\n GenBoolType,\n Mat,\n BoolVec,\n IntVec,\n UintVec,\n Vec,\n GVec4,\n GSampler2D,\n GSampler3D,\n GSamplerCube,\n GSampler2DArray\n}\n\nexport type NonGenericGalaceanType = Exclude<GalaceanDataType, string>;\ntype BuiltinType = NonGenericGalaceanType | GenericType;\n\n// Generic type system\n//\n// A generic family declares its concrete members and the dimension along which\n// members vary. Matching a generic position locks an index; projecting a return\n// family uses that index. Two families can only share an index if they vary\n// along the same dimension\n//\n// Example: `texture(GSampler2D, vec2) → GVec4` against `texture(sampler2D, uv)`\n// 1. Locate `sampler2D` in GSampler2D (ScalarType dimension) → index 0\n// 2. Project GVec4 (ScalarType dimension) at index 0 → vec4\n//\n// `ivec4 = texture(isampler2D, uv)` locks index 1, projects to `ivec4`\n// `min(vec3, vec3)` locks index 2 in GenType (Size dimension) and returns vec3\n// `min(vec3, vec2)` fails because the second arg would need index 1 but 2 is locked\n\nconst enum GenericDimension {\n // Varies along vector size: scalar / vec2 / vec3 / vec4 (or equivalents)\n Size,\n // Varies along the underlying scalar type: float / int / uint (sometimes with bool)\n ScalarType\n}\n\ntype FamilySpec = {\n readonly dimension: GenericDimension;\n readonly members: readonly NonGenericGalaceanType[];\n};\n\nconst FamilyMembers: Partial<Record<BuiltinType, FamilySpec>> = {\n // Size-varying families: index 0 → scalar, 1 → vec2, 2 → vec3, 3 → vec4\n // Per GLSL Spec §5.1, these appear in both parameter and return positions\n [GenericType.GenType]: {\n dimension: GenericDimension.Size,\n members: [Keyword.FLOAT, Keyword.VEC2, Keyword.VEC3, Keyword.VEC4]\n },\n [GenericType.GenIntType]: {\n dimension: GenericDimension.Size,\n members: [Keyword.INT, Keyword.IVEC2, Keyword.IVEC3, Keyword.IVEC4]\n },\n [GenericType.GenUintType]: {\n dimension: GenericDimension.Size,\n members: [Keyword.UINT, Keyword.UVEC2, Keyword.UVEC3, Keyword.UVEC4]\n },\n [GenericType.GenBoolType]: {\n dimension: GenericDimension.Size,\n members: [Keyword.BOOL, Keyword.BVEC2, Keyword.BVEC3, Keyword.BVEC4]\n },\n // Vec-only sub-families (no scalar): index 0 → vec2, 1 → vec3, 2 → vec4\n [GenericType.Vec]: { dimension: GenericDimension.Size, members: [Keyword.VEC2, Keyword.VEC3, Keyword.VEC4] },\n [GenericType.IntVec]: { dimension: GenericDimension.Size, members: [Keyword.IVEC2, Keyword.IVEC3, Keyword.IVEC4] },\n [GenericType.UintVec]: { dimension: GenericDimension.Size, members: [Keyword.UVEC2, Keyword.UVEC3, Keyword.UVEC4] },\n [GenericType.BoolVec]: { dimension: GenericDimension.Size, members: [Keyword.BVEC2, Keyword.BVEC3, Keyword.BVEC4] },\n [GenericType.Mat]: { dimension: GenericDimension.Size, members: [Keyword.MAT2, Keyword.MAT3, Keyword.MAT4] },\n\n // ScalarType-varying families: index 0 → float base, 1 → int base, 2 → uint base\n // Per GLSL Spec §5.1:\n // GSampler* families are parameter-only (passed as texture samplers)\n // GVec4 is return-only (projected from a GSampler* parameter into the matching vec4 variant)\n [GenericType.GSampler2D]: {\n dimension: GenericDimension.ScalarType,\n members: [Keyword.SAMPLER2D, Keyword.I_SAMPLER2D, Keyword.U_SAMPLER2D]\n },\n [GenericType.GSampler3D]: {\n dimension: GenericDimension.ScalarType,\n members: [Keyword.SAMPLER3D, Keyword.I_SAMPLER3D, Keyword.U_SAMPLER3D]\n },\n [GenericType.GSamplerCube]: {\n dimension: GenericDimension.ScalarType,\n members: [Keyword.SAMPLER_CUBE, Keyword.I_SAMPLER_CUBE, Keyword.U_SAMPLER_CUBE]\n },\n [GenericType.GSampler2DArray]: {\n dimension: GenericDimension.ScalarType,\n members: [Keyword.SAMPLER2D_ARRAY, Keyword.I_SAMPLER2D_ARRAY, Keyword.U_SAMPLER2D_ARRAY]\n },\n [GenericType.GVec4]: { dimension: GenericDimension.ScalarType, members: [Keyword.VEC4, Keyword.IVEC4, Keyword.UVEC4] }\n};\n\nconst BuiltinFunctionTable: Map<string, BuiltinFunction[]> = new Map();\n\nexport class BuiltinFunction {\n ident: string;\n readonly args: BuiltinType[];\n readonly scope: EShaderStage;\n\n private _returnType: BuiltinType;\n private _realReturnType: NonGenericGalaceanType;\n\n get realReturnType(): NonGenericGalaceanType {\n return this._realReturnType;\n }\n\n private constructor(ident: string, returnType: BuiltinType, scope: EShaderStage, ...args: BuiltinType[]) {\n this.ident = ident;\n this._returnType = returnType;\n this.args = args;\n this.scope = scope;\n }\n\n static _create(ident: string, returnType: BuiltinType, ...args: BuiltinType[]) {\n const fn = new BuiltinFunction(ident, returnType, EShaderStage.ALL, ...args);\n const list = BuiltinFunctionTable.get(ident) ?? [];\n list.push(fn);\n BuiltinFunctionTable.set(ident, list);\n }\n\n static _createWithScope(ident: string, returnType: BuiltinType, scope: EShaderStage, ...args: BuiltinType[]) {\n const fn = new BuiltinFunction(ident, returnType, scope, ...args);\n const list = BuiltinFunctionTable.get(ident) ?? [];\n list.push(fn);\n BuiltinFunctionTable.set(ident, list);\n }\n\n // Overload resolution against the generic family system\n //\n // For each candidate signature: concrete positions require exact type match;\n // generic positions locate the actual arg's index within the declared family,\n // and lock an index per dimension (size / scalar-type) shared across positions.\n // The return type is resolved by projecting the appropriate lock through the\n // return family, or passed through verbatim if the return is concrete\n static resolveOverload(\n funcName: string,\n callArgTypes: NonGenericGalaceanType[] | undefined\n ): BuiltinFunction | undefined {\n const overloads = BuiltinFunctionTable.get(funcName);\n if (!overloads) return undefined;\n const n = callArgTypes?.length ?? 0;\n\n for (let i = 0, m = overloads.length; i < m; i++) {\n const candidate = overloads[i];\n const declaredArgs = candidate.args;\n if (declaredArgs.length !== n) continue;\n\n let sizeLock = -1;\n let scalarTypeLock = -1;\n let matched = true;\n\n for (let j = 0; j < n; j++) {\n const declaredType = declaredArgs[j];\n const actualType = callArgTypes![j];\n if (actualType === TypeAny) continue;\n\n const paramFamily = FamilyMembers[declaredType];\n if (paramFamily) {\n // Families have at most 4 members; linear indexOf beats Map.get on this size\n const memberIdx = paramFamily.members.indexOf(actualType);\n if (memberIdx === -1) {\n matched = false;\n break;\n }\n if (paramFamily.dimension === GenericDimension.Size) {\n if (sizeLock === -1) sizeLock = memberIdx;\n else if (sizeLock !== memberIdx) {\n matched = false;\n break;\n }\n } else {\n if (scalarTypeLock === -1) scalarTypeLock = memberIdx;\n else if (scalarTypeLock !== memberIdx) {\n matched = false;\n break;\n }\n }\n } else if (declaredType !== actualType) {\n matched = false;\n break;\n }\n }\n\n if (!matched) continue;\n\n const returnFamily = FamilyMembers[candidate._returnType];\n if (!returnFamily) {\n candidate._realReturnType = candidate._returnType as NonGenericGalaceanType;\n return candidate;\n }\n const returnIdx = returnFamily.dimension === GenericDimension.Size ? sizeLock : scalarTypeLock;\n // No argument locked the dimension (all relevant args were TypeAny): fall\n // through as TypeAny so downstream overload resolution treats the result\n // as a wildcard rather than a specific guess\n candidate._realReturnType = returnIdx === -1 ? TypeAny : returnFamily.members[returnIdx];\n return candidate;\n }\n\n return undefined;\n }\n\n static isExist(ident: string) {\n return BuiltinFunctionTable.has(ident);\n }\n}\n\nBuiltinFunction._create(\"radians\", GenericType.GenType, GenericType.GenType);\nBuiltinFunction._create(\"degrees\", GenericType.GenType, GenericType.GenType);\nBuiltinFunction._create(\"sin\", GenericType.GenType, GenericType.GenType);\nBuiltinFunction._create(\"cos\", GenericType.GenType, GenericType.GenType);\nBuiltinFunction._create(\"tan\", GenericType.GenType, GenericType.GenType);\nBuiltinFunction._create(\"asin\", GenericType.GenType, GenericType.GenType);\nBuiltinFunction._create(\"acos\", GenericType.GenType, GenericType.GenType);\nBuiltinFunction._create(\"atan\", GenericType.GenType, GenericType.GenType, GenericType.GenType);\nBuiltinFunction._create(\"atan\", GenericType.GenType, GenericType.GenType);\nBuiltinFunction._create(\"sinh\", GenericType.GenType, GenericType.GenType);\nBuiltinFunction._create(\"cosh\", GenericType.GenType, GenericType.GenType);\nBuiltinFunction._create(\"tanh\", GenericType.GenType, GenericType.GenType);\nBuiltinFunction._create(\"asinh\", GenericType.GenType, GenericType.GenType);\nBuiltinFunction._create(\"acosh\", GenericType.GenType, GenericType.GenType);\nBuiltinFunction._create(\"atanh\", GenericType.GenType, GenericType.GenType);\n\nBuiltinFunction._create(\"pow\", GenericType.GenType, GenericType.GenType, GenericType.GenType);\nBuiltinFunction._create(\"exp\", GenericType.GenType, GenericType.GenType);\nBuiltinFunction._create(\"log\", GenericType.GenType, GenericType.GenType);\nBuiltinFunction._create(\"exp2\", GenericType.GenType, GenericType.GenType);\nBuiltinFunction._create(\"log2\", GenericType.GenType, GenericType.GenType);\nBuiltinFunction._create(\"sqrt\", GenericType.GenType, GenericType.GenType);\nBuiltinFunction._create(\"inversesqrt\", GenericType.GenType, GenericType.GenType);\n\nBuiltinFunction._create(\"abs\", GenericType.GenType, GenericType.GenType);\nBuiltinFunction._create(\"abs\", GenericType.GenIntType, GenericType.GenIntType);\nBuiltinFunction._create(\"sign\", GenericType.GenType, GenericType.GenType);\nBuiltinFunction._create(\"sign\", GenericType.GenIntType, GenericType.GenIntType);\nBuiltinFunction._create(\"floor\", GenericType.GenType, GenericType.GenType);\nBuiltinFunction._create(\"trunc\", GenericType.GenType, GenericType.GenType);\nBuiltinFunction._create(\"round\", GenericType.GenType, GenericType.GenType);\nBuiltinFunction._create(\"roundEven\", GenericType.GenType, GenericType.GenType);\nBuiltinFunction._create(\"ceil\", GenericType.GenType, GenericType.GenType);\nBuiltinFunction._create(\"fract\", GenericType.GenType, GenericType.GenType);\nBuiltinFunction._create(\"mod\", GenericType.GenType, GenericType.GenType, Keyword.FLOAT);\nBuiltinFunction._create(\"mod\", GenericType.GenType, GenericType.GenType, GenericType.GenType);\nBuiltinFunction._create(\"min\", GenericType.GenType, GenericType.GenType, GenericType.GenType);\nBuiltinFunction._create(\"min\", GenericType.GenType, GenericType.GenType, Keyword.FLOAT);\nBuiltinFunction._create(\"min\", GenericType.GenIntType, GenericType.GenIntType, GenericType.GenIntType);\nBuiltinFunction._create(\"min\", GenericType.GenIntType, GenericType.GenIntType, Keyword.INT);\nBuiltinFunction._create(\"min\", GenericType.GenUintType, GenericType.GenUintType, GenericType.GenUintType);\nBuiltinFunction._create(\"min\", GenericType.GenUintType, GenericType.GenUintType, Keyword.UINT);\nBuiltinFunction._create(\"max\", GenericType.GenType, GenericType.GenType, GenericType.GenType);\nBuiltinFunction._create(\"max\", GenericType.GenType, GenericType.GenType, Keyword.FLOAT);\nBuiltinFunction._create(\"max\", GenericType.GenIntType, GenericType.GenIntType, GenericType.GenIntType);\nBuiltinFunction._create(\"max\", GenericType.GenIntType, GenericType.GenIntType, Keyword.INT);\nBuiltinFunction._create(\"clamp\", GenericType.GenType, GenericType.GenType, GenericType.GenType, GenericType.GenType);\nBuiltinFunction._create(\"clamp\", GenericType.GenType, GenericType.GenType, Keyword.FLOAT, Keyword.FLOAT);\nBuiltinFunction._create(\n \"clamp\",\n GenericType.GenIntType,\n GenericType.GenIntType,\n GenericType.GenIntType,\n GenericType.GenIntType\n);\nBuiltinFunction._create(\"clamp\", GenericType.GenIntType, GenericType.GenIntType, Keyword.INT, Keyword.INT);\nBuiltinFunction._create(\n \"clamp\",\n GenericType.GenUintType,\n GenericType.GenUintType,\n GenericType.GenUintType,\n GenericType.GenUintType\n);\nBuiltinFunction._create(\"clamp\", GenericType.GenUintType, GenericType.GenUintType, Keyword.UINT, Keyword.UINT);\nBuiltinFunction._create(\"mix\", GenericType.GenType, GenericType.GenType, GenericType.GenType, GenericType.GenType);\nBuiltinFunction._create(\"mix\", GenericType.GenType, GenericType.GenType, GenericType.GenType, Keyword.FLOAT);\nBuiltinFunction._create(\"mix\", GenericType.GenType, GenericType.GenType, GenericType.GenType, GenericType.GenBoolType);\nBuiltinFunction._create(\"step\", GenericType.GenType, GenericType.GenType, GenericType.GenType);\nBuiltinFunction._create(\"step\", GenericType.GenType, Keyword.FLOAT, GenericType.GenType);\nBuiltinFunction._create(\n \"smoothstep\",\n GenericType.GenType,\n GenericType.GenType,\n GenericType.GenType,\n GenericType.GenType\n);\nBuiltinFunction._create(\"smoothstep\", GenericType.GenType, Keyword.FLOAT, Keyword.FLOAT, GenericType.GenType);\nBuiltinFunction._create(\"isnan\", GenericType.GenBoolType, GenericType.GenType);\nBuiltinFunction._create(\"isinf\", GenericType.GenBoolType, GenericType.GenType);\nBuiltinFunction._create(\"floatBitsToInt\", GenericType.GenType, GenericType.GenType);\nBuiltinFunction._create(\"floatBitsToUint\", GenericType.GenUintType, GenericType.GenType);\nBuiltinFunction._create(\"intBitsToFloat\", GenericType.GenType, GenericType.GenIntType);\nBuiltinFunction._create(\"uintBitsToFloat\", GenericType.GenType, GenericType.GenUintType);\n\nBuiltinFunction._create(\"packSnorm2x16\", Keyword.UINT, Keyword.VEC2);\nBuiltinFunction._create(\"unpackSnorm2x16\", Keyword.VEC2, Keyword.UINT);\nBuiltinFunction._create(\"packUnorm2x16\", Keyword.UINT, Keyword.VEC2);\nBuiltinFunction._create(\"unpackUnorm2x16\", Keyword.VEC2, Keyword.UINT);\nBuiltinFunction._create(\"packHalf2x16\", Keyword.UINT, Keyword.VEC2);\nBuiltinFunction._create(\"unpackHalf2x16\", Keyword.VEC2, Keyword.UINT);\n\nBuiltinFunction._create(\"length\", Keyword.FLOAT, GenericType.GenType);\nBuiltinFunction._create(\"distance\", Keyword.FLOAT, GenericType.GenType, GenericType.GenType);\nBuiltinFunction._create(\"dot\", Keyword.FLOAT, GenericType.GenType, GenericType.GenType);\nBuiltinFunction._create(\"cross\", Keyword.VEC3, Keyword.VEC3, Keyword.VEC3);\nBuiltinFunction._create(\"normalize\", GenericType.GenType, GenericType.GenType);\nBuiltinFunction._create(\n \"faceforward\",\n GenericType.GenType,\n GenericType.GenType,\n GenericType.GenType,\n GenericType.GenType\n);\nBuiltinFunction._create(\"reflect\", GenericType.GenType, GenericType.GenType, GenericType.GenType);\nBuiltinFunction._create(\"refract\", GenericType.GenType, GenericType.GenType, GenericType.GenType, Keyword.FLOAT);\nBuiltinFunction._create(\"matrixCompMult\", GenericType.Mat, GenericType.Mat, GenericType.Mat);\nBuiltinFunction._create(\"outerProduct\", Keyword.MAT2, Keyword.VEC2, Keyword.VEC2);\nBuiltinFunction._create(\"outerProduct\", Keyword.MAT3, Keyword.VEC3, Keyword.VEC3);\nBuiltinFunction._create(\"outerProduct\", Keyword.MAT4, Keyword.VEC4, Keyword.VEC4);\n\nBuiltinFunction._create(\"outerProduct\", Keyword.MAT2X3, Keyword.VEC3, Keyword.VEC2);\nBuiltinFunction._create(\"outerProduct\", Keyword.MAT3X2, Keyword.VEC2, Keyword.VEC3);\n\nBuiltinFunction._create(\"outerProduct\", Keyword.MAT2X4, Keyword.VEC4, Keyword.VEC2);\nBuiltinFunction._create(\"outerProduct\", Keyword.MAT4X2, Keyword.VEC2, Keyword.VEC4);\n\nBuiltinFunction._create(\"outerProduct\", Keyword.MAT3X4, Keyword.VEC4, Keyword.VEC3);\nBuiltinFunction._create(\"outerProduct\", Keyword.MAT4X3, Keyword.VEC3, Keyword.VEC4);\n\nBuiltinFunction._create(\"transpose\", Keyword.MAT2, Keyword.MAT2);\nBuiltinFunction._create(\"transpose\", Keyword.MAT3, Keyword.MAT3);\nBuiltinFunction._create(\"transpose\", Keyword.MAT4, Keyword.MAT4);\nBuiltinFunction._create(\"transpose\", Keyword.MAT2X3, Keyword.MAT3X2);\nBuiltinFunction._create(\"transpose\", Keyword.MAT3X2, Keyword.MAT2X3);\nBuiltinFunction._create(\"transpose\", Keyword.MAT4X2, Keyword.MAT2X4);\nBuiltinFunction._create(\"transpose\", Keyword.MAT2X4, Keyword.MAT4X2);\nBuiltinFunction._create(\"transpose\", Keyword.MAT3X4, Keyword.MAT4X3);\nBuiltinFunction._create(\"transpose\", Keyword.MAT4X3, Keyword.MAT3X4);\n\nBuiltinFunction._create(\"determinant\", Keyword.FLOAT, Keyword.MAT2);\nBuiltinFunction._create(\"determinant\", Keyword.FLOAT, Keyword.MAT3);\nBuiltinFunction._create(\"determinant\", Keyword.FLOAT, Keyword.MAT4);\n\nBuiltinFunction._create(\"inverse\", Keyword.MAT2, Keyword.MAT2);\nBuiltinFunction._create(\"inverse\", Keyword.MAT3, Keyword.MAT3);\nBuiltinFunction._create(\"inverse\", Keyword.MAT4, Keyword.MAT4);\n\nBuiltinFunction._create(\"lessThan\", GenericType.BoolVec, GenericType.Vec, GenericType.Vec);\nBuiltinFunction._create(\"lessThan\", GenericType.BoolVec, GenericType.IntVec, GenericType.IntVec);\nBuiltinFunction._create(\"lessThan\", GenericType.BoolVec, GenericType.UintVec, GenericType.UintVec);\n\nBuiltinFunction._create(\"lessThanEqual\", GenericType.BoolVec, GenericType.Vec, GenericType.Vec);\nBuiltinFunction._create(\"lessThanEqual\", GenericType.BoolVec, GenericType.IntVec, GenericType.IntVec);\nBuiltinFunction._create(\"lessThanEqual\", GenericType.BoolVec, GenericType.UintVec, GenericType.UintVec);\n\nBuiltinFunction._create(\"greaterThan\", GenericType.BoolVec, GenericType.Vec, GenericType.Vec);\nBuiltinFunction._create(\"greaterThan\", GenericType.BoolVec, GenericType.IntVec, GenericType.IntVec);\nBuiltinFunction._create(\"greaterThan\", GenericType.BoolVec, GenericType.UintVec, GenericType.UintVec);\n\nBuiltinFunction._create(\"greaterThanEqual\", GenericType.BoolVec, GenericType.Vec, GenericType.Vec);\nBuiltinFunction._create(\"greaterThanEqual\", GenericType.BoolVec, GenericType.IntVec, GenericType.IntVec);\nBuiltinFunction._create(\"greaterThanEqual\", GenericType.BoolVec, GenericType.UintVec, GenericType.UintVec);\n\nBuiltinFunction._create(\"equal\", GenericType.BoolVec, GenericType.Vec, GenericType.Vec);\nBuiltinFunction._create(\"equal\", GenericType.BoolVec, GenericType.IntVec, GenericType.IntVec);\nBuiltinFunction._create(\"equal\", GenericType.BoolVec, GenericType.UintVec, GenericType.UintVec);\nBuiltinFunction._create(\"equal\", GenericType.BoolVec, GenericType.BoolVec, GenericType.BoolVec);\n\nBuiltinFunction._create(\"notEqual\", GenericType.BoolVec, GenericType.Vec, GenericType.Vec);\nBuiltinFunction._create(\"notEqual\", GenericType.BoolVec, GenericType.IntVec, GenericType.IntVec);\nBuiltinFunction._create(\"notEqual\", GenericType.BoolVec, GenericType.UintVec, GenericType.UintVec);\nBuiltinFunction._create(\"notEqual\", GenericType.BoolVec, GenericType.BoolVec, GenericType.BoolVec);\n\nBuiltinFunction._create(\"any\", Keyword.BOOL, GenericType.BoolVec);\nBuiltinFunction._create(\"all\", Keyword.BOOL, GenericType.BoolVec);\nBuiltinFunction._create(\"not\", GenericType.BoolVec, GenericType.BoolVec);\n\nBuiltinFunction._create(\"textureSize\", Keyword.IVEC2, GenericType.GSampler2D, Keyword.INT);\nBuiltinFunction._create(\"textureSize\", Keyword.IVEC3, GenericType.GSampler3D, Keyword.INT);\nBuiltinFunction._create(\"textureSize\", Keyword.IVEC2, GenericType.GSamplerCube, Keyword.INT);\n\nBuiltinFunction._create(\"textureSize\", Keyword.IVEC2, Keyword.SAMPLER2D_SHADOW, Keyword.INT);\nBuiltinFunction._create(\"textureSize\", Keyword.IVEC2, Keyword.SAMPLER_CUBE_SHADOW, Keyword.INT);\n\nBuiltinFunction._create(\"textureSize\", Keyword.IVEC3, GenericType.GSampler2DArray, Keyword.INT);\nBuiltinFunction._create(\"textureSize\", Keyword.IVEC3, Keyword.SAMPLER2D_ARRAY_SHADOW, Keyword.INT);\n\nBuiltinFunction._create(\"texture2D\", GenericType.GVec4, GenericType.GSampler2D, Keyword.VEC2);\nBuiltinFunction._create(\"texture2D\", GenericType.GVec4, GenericType.GSampler2D, Keyword.VEC2, Keyword.FLOAT);\n\nBuiltinFunction._create(\"texture\", GenericType.GVec4, GenericType.GSampler2D, Keyword.VEC2, Keyword.FLOAT);\nBuiltinFunction._create(\"texture\", GenericType.GVec4, GenericType.GSampler2D, Keyword.VEC2);\nBuiltinFunction._create(\"texture\", GenericType.GVec4, GenericType.GSampler3D, Keyword.VEC3, Keyword.FLOAT);\nBuiltinFunction._create(\"texture\", GenericType.GVec4, GenericType.GSampler3D, Keyword.VEC3);\n\nBuiltinFunction._create(\"texture\", GenericType.GVec4, GenericType.GSamplerCube, Keyword.VEC3, Keyword.FLOAT);\nBuiltinFunction._create(\"texture\", GenericType.GVec4, GenericType.GSamplerCube, Keyword.VEC3);\n\nBuiltinFunction._create(\"texture\", Keyword.FLOAT, Keyword.SAMPLER2D_SHADOW, Keyword.VEC3, Keyword.FLOAT);\nBuiltinFunction._create(\"texture\", Keyword.FLOAT, Keyword.SAMPLER2D_SHADOW, Keyword.VEC3);\n\nBuiltinFunction._create(\"texture\", Keyword.FLOAT, Keyword.SAMPLER_CUBE_SHADOW, Keyword.VEC4, Keyword.FLOAT);\nBuiltinFunction._create(\"texture\", Keyword.FLOAT, Keyword.SAMPLER_CUBE_SHADOW, Keyword.VEC4);\n\nBuiltinFunction._create(\"texture\", GenericType.GVec4, Keyword.SAMPLER2D_ARRAY, Keyword.VEC3, Keyword.FLOAT);\nBuiltinFunction._create(\"texture\", GenericType.GVec4, Keyword.SAMPLER2D_ARRAY, Keyword.VEC3);\n\nBuiltinFunction._create(\"texture\", Keyword.FLOAT, Keyword.SAMPLER2D_ARRAY_SHADOW, Keyword.VEC4);\n\nBuiltinFunction._create(\"textureProj\", GenericType.GVec4, GenericType.GSampler2D, Keyword.VEC3, Keyword.FLOAT);\nBuiltinFunction._create(\"textureProj\", GenericType.GVec4, GenericType.GSampler2D, Keyword.VEC3);\nBuiltinFunction._create(\"textureProj\", GenericType.GVec4, GenericType.GSampler2D, Keyword.VEC4, Keyword.FLOAT);\nBuiltinFunction._create(\"textureProj\", GenericType.GVec4, GenericType.GSampler2D, Keyword.VEC4);\nBuiltinFunction._create(\"textureProj\", GenericType.GVec4, GenericType.GSampler3D, Keyword.VEC4, Keyword.FLOAT);\nBuiltinFunction._create(\"textureProj\", GenericType.GVec4, GenericType.GSampler3D, Keyword.VEC4);\n\nBuiltinFunction._create(\"textureProj\", Keyword.FLOAT, Keyword.SAMPLER2D_SHADOW, Keyword.VEC4, Keyword.FLOAT);\nBuiltinFunction._create(\"textureProj\", Keyword.FLOAT, Keyword.SAMPLER2D_SHADOW, Keyword.VEC4);\n\nBuiltinFunction._create(\"textureLod\", GenericType.GVec4, GenericType.GSampler2D, Keyword.VEC2, Keyword.FLOAT);\nBuiltinFunction._create(\"textureLod\", GenericType.GVec4, GenericType.GSampler3D, Keyword.VEC3, Keyword.FLOAT);\nBuiltinFunction._create(\"textureLod\", GenericType.GVec4, GenericType.GSamplerCube, Keyword.VEC3, Keyword.FLOAT);\nBuiltinFunction._create(\"textureLod\", Keyword.FLOAT, Keyword.SAMPLER2D_SHADOW, Keyword.VEC3, Keyword.FLOAT);\nBuiltinFunction._create(\"textureLod\", GenericType.GVec4, GenericType.GSampler2DArray, Keyword.VEC3, Keyword.FLOAT);\nBuiltinFunction._create(\"texture2DLod\", GenericType.GVec4, GenericType.GSampler2D, Keyword.VEC2, Keyword.FLOAT);\nBuiltinFunction._create(\"texture2DLodEXT\", GenericType.GVec4, GenericType.GSampler2D, Keyword.VEC2, Keyword.FLOAT);\nBuiltinFunction._create(\"texture2DLodEXT\", GenericType.GVec4, GenericType.GSampler3D, Keyword.VEC3, Keyword.FLOAT);\n\nBuiltinFunction._create(\"textureCube\", GenericType.GVec4, GenericType.GSamplerCube, Keyword.VEC3);\nBuiltinFunction._create(\"textureCube\", GenericType.GVec4, GenericType.GSamplerCube, Keyword.VEC3, Keyword.FLOAT);\nBuiltinFunction._create(\"textureCubeLod\", GenericType.GVec4, GenericType.GSamplerCube, Keyword.VEC3, Keyword.FLOAT);\nBuiltinFunction._create(\"textureCubeLodEXT\", GenericType.GVec4, GenericType.GSamplerCube, Keyword.VEC3, Keyword.FLOAT);\n\nBuiltinFunction._create(\n \"textureOffset\",\n GenericType.GVec4,\n GenericType.GSampler2D,\n Keyword.VEC2,\n Keyword.IVEC2,\n Keyword.FLOAT\n);\nBuiltinFunction._create(\"textureOffset\", GenericType.GVec4, GenericType.GSampler2D, Keyword.VEC2, Keyword.IVEC2);\n\nBuiltinFunction._create(\n \"textureOffset\",\n GenericType.GVec4,\n GenericType.GSampler3D,\n Keyword.VEC3,\n Keyword.IVEC3,\n Keyword.FLOAT\n);\nBuiltinFunction._create(\"textureOffset\", GenericType.GVec4, GenericType.GSampler3D, Keyword.VEC3, Keyword.IVEC3);\n\nBuiltinFunction._create(\n \"textureOffset\",\n Keyword.FLOAT,\n Keyword.SAMPLER2D_SHADOW,\n Keyword.VEC3,\n Keyword.IVEC2,\n Keyword.FLOAT\n);\nBuiltinFunction._create(\"textureOffset\", Keyword.FLOAT, Keyword.SAMPLER2D_SHADOW, Keyword.VEC3, Keyword.IVEC2);\nBuiltinFunction._create(\n \"textureOffset\",\n GenericType.GVec4,\n GenericType.GSampler2DArray,\n Keyword.VEC3,\n Keyword.IVEC2,\n Keyword.FLOAT\n);\nBuiltinFunction._create(\"textureOffset\", GenericType.GVec4, GenericType.GSampler2DArray, Keyword.VEC3, Keyword.IVEC2);\n\nBuiltinFunction._create(\"texelFetch\", GenericType.GVec4, GenericType.GSampler2D, Keyword.IVEC2, Keyword.INT);\nBuiltinFunction._create(\"texelFetch\", GenericType.GVec4, GenericType.GSampler3D, Keyword.IVEC3, Keyword.INT);\nBuiltinFunction._create(\"texelFetch\", GenericType.GVec4, GenericType.GSampler2DArray, Keyword.IVEC3, Keyword.INT);\n\nBuiltinFunction._create(\n \"texelFetchOffset\",\n GenericType.GVec4,\n GenericType.GSampler2D,\n Keyword.IVEC2,\n Keyword.INT,\n Keyword.IVEC2\n);\nBuiltinFunction._create(\n \"texelFetchOffset\",\n GenericType.GVec4,\n GenericType.GSampler3D,\n Keyword.IVEC3,\n Keyword.INT,\n Keyword.IVEC3\n);\nBuiltinFunction._create(\n \"texelFetchOffset\",\n GenericType.GVec4,\n GenericType.GSampler2DArray,\n Keyword.IVEC3,\n Keyword.INT,\n Keyword.IVEC2\n);\n\nBuiltinFunction._create(\n \"textureProjOffset\",\n GenericType.GVec4,\n GenericType.GSampler2D,\n Keyword.VEC3,\n Keyword.IVEC2,\n Keyword.FLOAT\n);\nBuiltinFunction._create(\"textureProjOffset\", GenericType.GVec4, GenericType.GSampler2D, Keyword.VEC3, Keyword.IVEC2);\n\nBuiltinFunction._create(\n \"textureProjOffset\",\n GenericType.GVec4,\n GenericType.GSampler2D,\n Keyword.VEC4,\n Keyword.IVEC2,\n Keyword.FLOAT\n);\nBuiltinFunction._create(\"textureProjOffset\", GenericType.GVec4, GenericType.GSampler2D, Keyword.VEC4, Keyword.IVEC2);\n\nBuiltinFunction._create(\n \"textureProjOffset\",\n GenericType.GVec4,\n GenericType.GSampler3D,\n Keyword.VEC4,\n Keyword.IVEC3,\n Keyword.FLOAT\n);\nBuiltinFunction._create(\"textureProjOffset\", GenericType.GVec4, GenericType.GSampler3D, Keyword.VEC4, Keyword.IVEC3);\n\nBuiltinFunction._create(\n \"textureProjOffset\",\n Keyword.FLOAT,\n Keyword.SAMPLER2D_SHADOW,\n Keyword.VEC4,\n Keyword.IVEC2,\n Keyword.FLOAT\n);\nBuiltinFunction._create(\"textureProjOffset\", Keyword.FLOAT, Keyword.SAMPLER2D_SHADOW, Keyword.VEC4, Keyword.IVEC2);\n\nBuiltinFunction._create(\n \"textureLodOffset\",\n GenericType.GVec4,\n GenericType.GSampler2D,\n Keyword.VEC2,\n Keyword.FLOAT,\n Keyword.IVEC2\n);\nBuiltinFunction._create(\n \"textureLodOffset\",\n GenericType.GVec4,\n GenericType.GSampler3D,\n Keyword.VEC3,\n Keyword.FLOAT,\n Keyword.IVEC3\n);\n\nBuiltinFunction._create(\n \"textureLodOffset\",\n Keyword.FLOAT,\n Keyword.SAMPLER2D_SHADOW,\n Keyword.VEC3,\n Keyword.FLOAT,\n Keyword.IVEC2\n);\nBuiltinFunction._create(\n \"textureLodOffset\",\n GenericType.GVec4,\n GenericType.GSampler2DArray,\n Keyword.VEC3,\n Keyword.FLOAT,\n Keyword.IVEC2\n);\n\nBuiltinFunction._create(\"textureProjLod\", GenericType.GVec4, GenericType.GSampler2D, Keyword.VEC3, Keyword.FLOAT);\nBuiltinFunction._create(\"textureProjLod\", GenericType.GVec4, GenericType.GSampler2D, Keyword.VEC4, Keyword.FLOAT);\nBuiltinFunction._create(\"textureProjLod\", GenericType.GVec4, GenericType.GSampler3D, Keyword.VEC4, Keyword.FLOAT);\nBuiltinFunction._create(\"textureProjLod\", Keyword.FLOAT, Keyword.SAMPLER2D_SHADOW, Keyword.VEC4, Keyword.FLOAT);\n\nBuiltinFunction._create(\n \"textureProjLodOffset\",\n GenericType.GVec4,\n GenericType.GSampler2D,\n Keyword.VEC3,\n Keyword.FLOAT,\n Keyword.IVEC2\n);\nBuiltinFunction._create(\n \"textureProjLodOffset\",\n GenericType.GVec4,\n GenericType.GSampler2D,\n Keyword.VEC4,\n Keyword.FLOAT,\n Keyword.IVEC2\n);\nBuiltinFunction._create(\n \"textureProjLodOffset\",\n GenericType.GVec4,\n GenericType.GSampler3D,\n Keyword.VEC4,\n Keyword.FLOAT,\n Keyword.IVEC3\n);\nBuiltinFunction._create(\n \"textureProjLodOffset\",\n Keyword.FLOAT,\n Keyword.SAMPLER2D_SHADOW,\n Keyword.VEC4,\n Keyword.FLOAT,\n Keyword.IVEC2\n);\n\nBuiltinFunction._create(\n \"textureGrad\",\n GenericType.GVec4,\n GenericType.GSampler2D,\n Keyword.VEC2,\n Keyword.VEC2,\n Keyword.VEC2\n);\nBuiltinFunction._create(\n \"textureGrad\",\n GenericType.GVec4,\n GenericType.GSampler3D,\n Keyword.VEC3,\n Keyword.VEC3,\n Keyword.VEC3\n);\nBuiltinFunction._create(\n \"textureGrad\",\n GenericType.GVec4,\n GenericType.GSamplerCube,\n Keyword.VEC3,\n Keyword.VEC3,\n Keyword.VEC3\n);\n\nBuiltinFunction._create(\n \"textureGrad\",\n Keyword.FLOAT,\n Keyword.SAMPLER2D_SHADOW,\n Keyword.VEC3,\n Keyword.VEC2,\n Keyword.VEC2\n);\nBuiltinFunction._create(\n \"textureGrad\",\n Keyword.FLOAT,\n Keyword.SAMPLER_CUBE_SHADOW,\n Keyword.VEC4,\n Keyword.VEC3,\n Keyword.VEC3\n);\n\nBuiltinFunction._create(\n \"textureGrad\",\n GenericType.GVec4,\n GenericType.GSampler2DArray,\n Keyword.VEC3,\n Keyword.VEC2,\n Keyword.VEC2\n);\nBuiltinFunction._create(\n \"textureGrad\",\n Keyword.FLOAT,\n Keyword.SAMPLER2D_ARRAY_SHADOW,\n Keyword.VEC4,\n Keyword.VEC2,\n Keyword.VEC2\n);\n\nBuiltinFunction._create(\n \"textureGradOffset\",\n GenericType.GVec4,\n GenericType.GSampler2D,\n Keyword.VEC2,\n Keyword.VEC2,\n Keyword.VEC2,\n Keyword.IVEC2\n);\nBuiltinFunction._create(\n \"textureGradOffset\",\n GenericType.GVec4,\n GenericType.GSampler3D,\n Keyword.VEC3,\n Keyword.VEC3,\n Keyword.VEC3,\n Keyword.IVEC3\n);\nBuiltinFunction._create(\n \"textureGradOffset\",\n Keyword.FLOAT,\n Keyword.SAMPLER2D_SHADOW,\n Keyword.VEC3,\n Keyword.VEC2,\n Keyword.VEC2,\n Keyword.IVEC2\n);\nBuiltinFunction._create(\n \"textureGradOffset\",\n GenericType.GVec4,\n GenericType.GSampler2DArray,\n Keyword.VEC3,\n Keyword.VEC2,\n Keyword.VEC2,\n Keyword.IVEC2\n);\nBuiltinFunction._create(\n \"textureGradOffset\",\n Keyword.FLOAT,\n Keyword.SAMPLER2D_ARRAY_SHADOW,\n Keyword.VEC3,\n Keyword.VEC2,\n Keyword.VEC2,\n Keyword.IVEC2\n);\n\nBuiltinFunction._create(\n \"textureProjGrad\",\n GenericType.GVec4,\n GenericType.GSampler2D,\n Keyword.VEC3,\n Keyword.VEC2,\n Keyword.VEC2\n);\nBuiltinFunction._create(\n \"textureProjGrad\",\n GenericType.GVec4,\n GenericType.GSampler2D,\n Keyword.VEC4,\n Keyword.VEC2,\n Keyword.VEC2\n);\nBuiltinFunction._create(\n \"textureProjGrad\",\n GenericType.GVec4,\n GenericType.GSampler3D,\n Keyword.VEC4,\n Keyword.VEC3,\n Keyword.VEC3\n);\nBuiltinFunction._create(\n \"textureProjGrad\",\n Keyword.FLOAT,\n Keyword.SAMPLER2D_SHADOW,\n Keyword.VEC4,\n Keyword.VEC2,\n Keyword.VEC2\n);\n\nBuiltinFunction._create(\n \"textureProjGradOffset\",\n GenericType.GVec4,\n GenericType.GSampler2D,\n Keyword.VEC3,\n Keyword.VEC2,\n Keyword.VEC2,\n Keyword.IVEC2\n);\nBuiltinFunction._create(\n \"textureProjGradOffset\",\n GenericType.GVec4,\n GenericType.GSampler2D,\n Keyword.VEC4,\n Keyword.VEC2,\n Keyword.VEC2,\n Keyword.IVEC2\n);\nBuiltinFunction._create(\n \"textureProjGradOffset\",\n GenericType.GVec4,\n GenericType.GSampler3D,\n Keyword.VEC4,\n Keyword.VEC3,\n Keyword.VEC3,\n Keyword.IVEC3\n);\nBuiltinFunction._create(\n \"textureProjGradOffset\",\n Keyword.FLOAT,\n Keyword.SAMPLER2D_SHADOW,\n Keyword.VEC4,\n Keyword.VEC2,\n Keyword.VEC2,\n Keyword.IVEC2\n);\nBuiltinFunction._createWithScope(\"dFdx\", GenericType.GenType, EShaderStage.FRAGMENT, GenericType.GenType);\nBuiltinFunction._createWithScope(\"dFdy\", GenericType.GenType, EShaderStage.FRAGMENT, GenericType.GenType);\nBuiltinFunction._createWithScope(\"fwidth\", GenericType.GenType, EShaderStage.FRAGMENT, GenericType.GenType);\n","import { GalaceanDataType } from \"../../common\";\nimport { Keyword } from \"../../common/enums/Keyword\";\nimport { EShaderStage } from \"../../common/enums/ShaderStage\";\n\nexport const BuiltinVariableTable: Map<string, BuiltinVariable> = new Map();\n\nexport class BuiltinVariable {\n type: GalaceanDataType;\n lexeme: string;\n scope: EShaderStage;\n\n private constructor(type: GalaceanDataType, lexeme: string, scope: EShaderStage) {\n this.type = type;\n this.lexeme = lexeme;\n this.scope = scope;\n }\n\n static createVariable(lexeme: string, type: GalaceanDataType, scope = EShaderStage.ALL) {\n const item = new BuiltinVariable(type, lexeme, scope);\n BuiltinVariableTable.set(lexeme, item);\n }\n\n static getVar(ident: string): BuiltinVariable {\n return BuiltinVariableTable.get(ident);\n }\n}\n\nBuiltinVariable.createVariable(\"gl_VertexID\", Keyword.INT, EShaderStage.VERTEX);\nBuiltinVariable.createVariable(\"gl_InstanceID\", Keyword.INT, EShaderStage.VERTEX);\nBuiltinVariable.createVariable(\"gl_Position\", Keyword.VEC4, EShaderStage.VERTEX);\nBuiltinVariable.createVariable(\"gl_PointSize\", Keyword.FLOAT, EShaderStage.VERTEX);\n\nBuiltinVariable.createVariable(\"gl_FragCoord\", Keyword.VEC4, EShaderStage.FRAGMENT);\nBuiltinVariable.createVariable(\"gl_FrontFacing\", Keyword.BOOL, EShaderStage.FRAGMENT);\nBuiltinVariable.createVariable(\"gl_FragDepth\", Keyword.FLOAT, EShaderStage.FRAGMENT);\nBuiltinVariable.createVariable(\"gl_PointCoord\", Keyword.VEC2, EShaderStage.FRAGMENT);\nBuiltinVariable.createVariable(\"gl_FragColor\", Keyword.VEC4, EShaderStage.FRAGMENT);\nBuiltinVariable.createVariable(\"gl_FragData\", Keyword.VEC4_ARRAY, EShaderStage.FRAGMENT);\n\nBuiltinVariable.createVariable(\"gl_MaxVertexAttribs\", Keyword.INT);\nBuiltinVariable.createVariable(\"gl_MaxVertexUniformVectors\", Keyword.INT);\nBuiltinVariable.createVariable(\"gl_MaxVertexOutputVectors\", Keyword.INT);\nBuiltinVariable.createVariable(\"gl_MaxFragmentInputVectors\", Keyword.INT);\nBuiltinVariable.createVariable(\"gl_MaxVertexTextureImageUnits\", Keyword.INT);\nBuiltinVariable.createVariable(\"gl_MaxCombinedTextureImageUnits\", Keyword.INT);\nBuiltinVariable.createVariable(\"gl_MaxTextureImageUnits\", Keyword.INT);\nBuiltinVariable.createVariable(\"gl_MaxFragmentUniformVectors\", Keyword.INT);\nBuiltinVariable.createVariable(\"gl_MaxDrawBuffers\", Keyword.INT);\nBuiltinVariable.createVariable(\"gl_MinProgramTexelOffset\", Keyword.INT);\nBuiltinVariable.createVariable(\"gl_MaxProgramTexelOffset\", Keyword.INT);\n","import { IBaseSymbol } from \"./IBaseSymbol\";\n\nexport class SymbolTable<T extends IBaseSymbol> {\n private _table: Map<string, T[]> = new Map();\n\n insert(symbol: T, isInMacroBranch = false): void {\n symbol.isInMacroBranch = isInMacroBranch;\n\n const entry = this._table.get(symbol.ident) ?? [];\n for (let i = 0, n = entry.length; i < n; i++) {\n if (entry[i].isInMacroBranch) continue;\n if (entry[i].equal(symbol)) {\n console.warn(\"Replace symbol:\", symbol.ident);\n entry[i] = symbol;\n return;\n }\n }\n\n entry.push(symbol);\n this._table.set(symbol.ident, entry);\n }\n\n getSymbol(symbol: T, includeMacro = false): T | undefined {\n const entry = this._table.get(symbol.ident);\n if (entry) {\n for (let i = entry.length - 1; i >= 0; i--) {\n const item = entry[i];\n if (!includeMacro && item.isInMacroBranch) continue;\n if (item.equal(symbol)) return item;\n }\n }\n }\n\n getSymbols(symbol: T, includeMacro = false, out: T[]): T[] {\n out.length = 0;\n this._getSymbols(symbol, includeMacro, out);\n\n return out;\n }\n\n /**\n * @internal\n */\n _getSymbols(symbol: T, includeMacro = false, out: T[]): T[] {\n const entry = this._table.get(symbol.ident);\n\n if (entry) {\n for (let i = entry.length - 1; i >= 0; i--) {\n const item = entry[i];\n if (!includeMacro && item.isInMacroBranch) continue;\n if (item.equal(symbol)) out.push(item);\n }\n }\n\n return out;\n }\n\n /** Iterate every registered symbol. Order within a name bucket is insertion order. */\n forEach(callback: (symbol: T) => void): void {\n for (const entries of this._table.values()) {\n for (let i = 0, n = entries.length; i < n; i++) {\n callback(entries[i]);\n }\n }\n }\n}\n","import { IBaseSymbol } from \"./IBaseSymbol\";\nimport { SymbolTable } from \"./SymbolTable\";\n\nexport class SymbolTableStack<S extends IBaseSymbol, T extends SymbolTable<S>> {\n stack: T[] = [];\n\n /**\n * @internal\n */\n _macroLevel = 0;\n\n get scope(): T {\n return this.stack[this.stack.length - 1];\n }\n\n get isInMacroBranch(): boolean {\n return this._macroLevel > 0;\n }\n\n pushScope(scope: T): void {\n this.stack.push(scope);\n }\n\n clear(): void {\n this.stack.length = 0;\n }\n\n popScope(): T | undefined {\n return this.stack.pop();\n }\n\n insert(symbol: S): void {\n this.scope.insert(symbol, this.isInMacroBranch);\n }\n\n lookup(symbol: S, includeMacro = false): S | undefined {\n for (let i = this.stack.length - 1; i >= 0; i--) {\n const symbolTable = this.stack[i];\n const result = symbolTable.getSymbol(symbol, includeMacro);\n if (result) return result;\n }\n return undefined;\n }\n\n lookupAll(symbol: S, includeMacro = false, out: S[]): S[] {\n out.length = 0;\n for (let i = this.stack.length - 1; i >= 0; i--) {\n const symbolTable = this.stack[i];\n symbolTable._getSymbols(symbol, includeMacro, out);\n }\n return out;\n }\n}\n","import { GalaceanDataType } from \"../../common\";\nimport { ASTNode } from \"../AST\";\n\nexport class SymbolDataType {\n constructor(\n public type: GalaceanDataType,\n public typeLexeme: string,\n public arraySpecifier?: ASTNode.ArraySpecifier\n ) {}\n}\n","import { IBaseSymbol } from \"../../common/IBaseSymbol\";\nimport { GalaceanDataType, TypeAny } from \"../../common/types\";\nimport { ASTNode } from \"../AST\";\nimport { SymbolDataType } from \"./SymbolDataType\";\n\nexport enum ESymbolType {\n VAR,\n FN,\n STRUCT,\n Any\n}\n\nexport type SymbolAstNode =\n | ASTNode.Initializer\n | ASTNode.StructSpecifier\n | ASTNode.FunctionDefinition\n | ASTNode.ParameterDeclarator\n | ASTNode.InitDeclaratorList\n | ASTNode.VariableDeclaration;\n\nexport class SymbolInfo implements IBaseSymbol {\n constructor(\n public ident: string,\n public type: ESymbolType,\n public astNode?: SymbolAstNode,\n public dataType?: SymbolDataType,\n public paramSignature?: GalaceanDataType[],\n public isInMacroBranch = false\n ) {}\n\n set(\n ident: string,\n symbolType: ESymbolType,\n astNode?: SymbolAstNode,\n dataType?: SymbolDataType,\n paramSignature?: GalaceanDataType[]\n ) {\n this.ident = ident;\n this.type = symbolType;\n this.astNode = astNode;\n this.dataType = dataType;\n this.paramSignature = paramSignature;\n }\n\n equal(symbol: SymbolInfo): boolean {\n if (symbol.type !== ESymbolType.Any && this.type !== symbol.type) return false;\n if (this.type === ESymbolType.FN) {\n if (!symbol.astNode && !symbol.paramSignature) return true;\n\n const params = (<ASTNode.FunctionDefinition>this.astNode).protoType.paramSig;\n const comparedParams = symbol.paramSignature ?? (<ASTNode.FunctionDefinition>symbol.astNode).protoType.paramSig;\n const length = params?.length;\n if (length !== comparedParams?.length) return false;\n for (let i = 0; i < length; i++) {\n const t1 = params[i],\n t2 = comparedParams[i];\n if (t1 === TypeAny || t2 === TypeAny) continue;\n if (t1 !== t2) return false;\n }\n return true;\n }\n return true;\n }\n}\n","import { ASTNode } from \"../AST\";\nimport { SymbolDataType } from \"./SymbolDataType\";\nimport { ESymbolType, SymbolInfo } from \"./SymbolInfo\";\n\nexport class FnSymbol extends SymbolInfo {\n declare astNode: ASTNode.FunctionDefinition;\n\n constructor(lexeme: string, astNode: ASTNode.FunctionDefinition) {\n const type = new SymbolDataType(\n astNode.protoType.returnType.type,\n astNode.protoType.returnType.typeSpecifier.lexeme\n );\n super(lexeme, ESymbolType.FN, astNode, type);\n }\n}\n","import { ASTNode } from \"../AST\";\nimport { ESymbolType, SymbolInfo } from \"./SymbolInfo\";\n\nexport class StructSymbol extends SymbolInfo {\n declare astNode: ASTNode.StructSpecifier;\n\n constructor(lexeme: string, astNode: ASTNode.StructSpecifier) {\n super(lexeme, ESymbolType.STRUCT, astNode);\n }\n}\n","import { ASTNode } from \"../AST\";\nimport { SymbolDataType } from \"./SymbolDataType\";\nimport { ESymbolType, SymbolInfo } from \"./SymbolInfo\";\n\nexport class VarSymbol extends SymbolInfo {\n declare astNode:\n | ASTNode.Initializer\n | ASTNode.ParameterDeclarator\n | ASTNode.InitDeclaratorList\n | ASTNode.VariableDeclaration;\n\n readonly isGlobalVariable: boolean;\n\n constructor(\n ident: string,\n dataType: SymbolDataType,\n isGlobalVariable: boolean,\n initAst:\n | ASTNode.Initializer\n | ASTNode.ParameterDeclarator\n | ASTNode.InitDeclaratorList\n | ASTNode.VariableDeclaration\n ) {\n super(ident, ESymbolType.VAR, initAst, dataType);\n this.isGlobalVariable = isGlobalVariable;\n }\n}\n","import { SymbolInfo, SymbolTable } from \"../parser/symbolTable\";\nimport { ASTNode } from \"./AST\";\n\nexport class ShaderData {\n symbolTable: SymbolTable<SymbolInfo>;\n\n vertexMain: ASTNode.FunctionDefinition;\n fragmentMain: ASTNode.FunctionDefinition;\n\n globalPrecisions: ASTNode.PrecisionSpecifier[] = [];\n\n globalMacroDeclarations: ASTNode.GlobalDeclaration[] = [];\n\n getOuterGlobalMacroDeclarations(): ASTNode.GlobalDeclaration[] {\n return this.globalMacroDeclarations.filter((node) => node.parent instanceof ASTNode.GLShaderProgram);\n }\n}\n","import { ShaderRange } from \"../common\";\nimport { SymbolTable } from \"../common/SymbolTable\";\nimport { SymbolTableStack } from \"../common/SymbolTableStack\";\nimport { GSError, GSErrorName } from \"../GSError\";\nimport { SymbolInfo } from \"../parser/symbolTable\";\nimport { ShaderCompiler } from \"../ShaderCompiler\";\nimport { ASTNode, TreeNode } from \"./AST\";\nimport { ShaderData } from \"./ShaderInfo\";\nimport { NodeChild } from \"./types\";\n\nimport { MacroDefineList } from \"../Preprocessor\";\n\nexport type TranslationRule<T = any> = (sa: SemanticAnalyzer, ...tokens: NodeChild[]) => T;\n\n/**\n * @internal\n * The semantic analyzer of `ShaderCompiler` compiler.\n * - Build symbol table\n * - Static analysis\n */\nexport default class SemanticAnalyzer {\n /**\n * @internal\n */\n static _lookupSymbol: SymbolInfo = new SymbolInfo(\"\", null);\n\n semanticStack: TreeNode[] = [];\n acceptRule?: TranslationRule = undefined;\n symbolTableStack: SymbolTableStack<SymbolInfo, SymbolTable<SymbolInfo>> = new SymbolTableStack();\n curFunctionInfo: {\n header?: ASTNode.FunctionDeclarator;\n returnStatement?: ASTNode.JumpStatement;\n } = {};\n private _shaderData = new ShaderData();\n private _translationRuleTable: Map<number /** production id */, TranslationRule> = new Map();\n\n private _macroDefineList: MacroDefineList;\n\n // #if _VERBOSE\n readonly errors: Error[] = [];\n // #endif\n\n get shaderData() {\n return this._shaderData;\n }\n\n get macroDefineList(): MacroDefineList {\n return this._macroDefineList;\n }\n\n constructor() {\n this.pushScope();\n }\n\n reset(macroDefineList: MacroDefineList) {\n this._macroDefineList = macroDefineList;\n this.semanticStack.length = 0;\n this._shaderData = new ShaderData();\n this.symbolTableStack.clear();\n this.pushScope();\n // #if _VERBOSE\n this.errors.length = 0;\n // #endif\n }\n\n pushScope() {\n this.symbolTableStack.pushScope(new SymbolTable<SymbolInfo>());\n }\n\n popScope() {\n return this.symbolTableStack.popScope();\n }\n\n addTranslationRule(pid: number, rule: TranslationRule) {\n this._translationRuleTable.set(pid, rule);\n }\n\n getTranslationRule(pid: number) {\n return this._translationRuleTable.get(pid);\n }\n\n reportError(loc: ShaderRange, message: string): void {\n // #if _VERBOSE\n this.errors.push(new GSError(GSErrorName.CompilationError, message, loc, ShaderCompiler._processingPassText));\n // #else\n console.error(message);\n // #endif\n }\n\n reportWarning(loc: ShaderRange, message: string): void {\n console.warn(new GSError(GSErrorName.CompilationWarn, message, loc, ShaderCompiler._processingPassText).toString());\n }\n}\n","import { GalaceanDataType } from \"../common\";\nimport { BaseToken } from \"../common/BaseToken\";\nimport { ASTNode, TreeNode } from \"./AST\";\nimport { NoneTerminal } from \"./GrammarSymbol\";\n\nexport type TraceStackItem = NoneTerminal | BaseToken;\n\nexport class SymbolType {\n constructor(\n public type: GalaceanDataType,\n public typeLexeme: string,\n public arraySpecifier?: ASTNode.ArraySpecifier\n ) {}\n}\n\nexport class StructProp implements IParamInfo {\n constructor(\n public typeInfo: SymbolType,\n public ident: BaseToken,\n public mrtIndex?: number,\n public isInMacroBranch = false\n ) {}\n}\n\nexport type NodeChild = TreeNode | BaseToken;\n\nexport type IParamInfo = {\n ident?: BaseToken;\n typeInfo?: SymbolType;\n astNode?: ASTNode.ParameterDeclaration | ASTNode.MacroParamBlock;\n};\n","import { ClearableObjectPool, type IPoolElement } from \"@galacean/engine-core\";\nimport { CodeGenVisitor } from \"../codeGen\";\nimport { ETokenType, GalaceanDataType, ShaderRange, TokenType, TypeAny } from \"../common\";\nimport { BaseToken } from \"../common/BaseToken\";\nimport { Keyword } from \"../common/enums/Keyword\";\nimport { ParserUtils } from \"../ParserUtils\";\nimport { Lexer } from \"../lexer/Lexer\";\nimport { MacroDefineInfo } from \"../Preprocessor\";\nimport { ShaderCompilerUtils } from \"../ShaderCompilerUtils\";\nimport { BuiltinFunction, BuiltinVariable, NonGenericGalaceanType } from \"./builtin\";\nimport { NoneTerminal } from \"./GrammarSymbol\";\nimport SemanticAnalyzer from \"./SemanticAnalyzer\";\nimport { ShaderData } from \"./ShaderInfo\";\nimport { ESymbolType, FnSymbol, StructSymbol, VarSymbol } from \"./symbolTable\";\nimport { IParamInfo, NodeChild, StructProp, SymbolType } from \"./types\";\n\nfunction ASTNodeDecorator(nonTerminal: NoneTerminal) {\n return function <T extends { new (): TreeNode }>(ASTNode: T) {\n ASTNode.prototype.nt = nonTerminal;\n (<any>ASTNode).pool = ShaderCompilerUtils.createObjectPool(ASTNode);\n };\n}\n\nexport abstract class TreeNode implements IPoolElement {\n static pool: ClearableObjectPool<TreeNode & { set: (loc: ShaderRange, children: NodeChild[]) => void }>;\n\n /** The non-terminal in grammar. */\n nt: NoneTerminal;\n private _children: NodeChild[];\n private _parent: TreeNode;\n private _location: ShaderRange;\n private _codeCache: string;\n\n /**\n * Parent pointer for AST traversal.\n * @remarks\n * The parent pointer is only reliable after the entire AST has been constructed.\n * DO NOT rely on `parent` during the `semanticAnalyze` phase, as the AST may still be under construction.\n * It is safe to use `parent` during code generation or any phase after AST construction.\n */\n get parent(): TreeNode {\n return this._parent;\n }\n\n get children() {\n return this._children;\n }\n\n get location() {\n return this._location;\n }\n\n set(loc: ShaderRange, children: NodeChild[]): void {\n this._location = loc;\n this._children = children;\n for (const child of children) {\n if (child instanceof TreeNode) {\n child._parent = this;\n }\n }\n\n this.init();\n }\n\n init() {}\n\n dispose(): void {}\n\n setCache(code: string): string {\n this._codeCache = code;\n return code;\n }\n\n getCache(): string {\n return this._codeCache;\n }\n\n // Visitor pattern interface for code generation\n codeGen(visitor: CodeGenVisitor) {\n const code = visitor.defaultCodeGen(this.children);\n this.setCache(code);\n return code;\n }\n\n /**\n * Do semantic analyze right after the ast node is generated.\n */\n semanticAnalyze(sa: SemanticAnalyzer) {}\n}\n\nexport namespace ASTNode {\n type MacroExpression =\n | MacroPushContext\n | MacroPopContext\n | MacroElseExpression\n | MacroElifExpression\n | MacroUndef\n | MacroDefine\n | BaseToken;\n\n export type ASTNodePool = ClearableObjectPool<\n { set: (loc: ShaderRange, children: NodeChild[]) => void } & IPoolElement & TreeNode\n >;\n\n export function _unwrapToken(node: NodeChild) {\n if (node instanceof BaseToken) {\n return node;\n }\n throw \"not token\";\n }\n\n export function get(pool: ASTNodePool, sa: SemanticAnalyzer, loc: ShaderRange, children: NodeChild[]) {\n const node = pool.get();\n node.set(loc, children);\n node.semanticAnalyze(sa);\n sa.semanticStack.push(node);\n }\n\n @ASTNodeDecorator(NoneTerminal._ignore)\n export class TrivialNode extends TreeNode {}\n\n @ASTNodeDecorator(NoneTerminal.scope_brace)\n export class ScopeBrace extends TreeNode {\n override semanticAnalyze(sa: SemanticAnalyzer): void {\n sa.pushScope();\n }\n }\n\n @ASTNodeDecorator(NoneTerminal.scope_end_brace)\n export class ScopeEndBrace extends TreeNode {\n override semanticAnalyze(sa: SemanticAnalyzer): void {\n sa.popScope();\n }\n }\n\n @ASTNodeDecorator(NoneTerminal.jump_statement)\n export class JumpStatement extends TreeNode {\n isFragReturnStatement: boolean;\n\n override init(): void {\n this.isFragReturnStatement = false;\n }\n\n override semanticAnalyze(sa: SemanticAnalyzer): void {\n if (ASTNode._unwrapToken(this.children![0]).type === Keyword.RETURN) {\n sa.curFunctionInfo.returnStatement = this;\n }\n }\n\n override codeGen(visitor: CodeGenVisitor): string {\n return this.setCache(visitor.visitJumpStatement(this));\n }\n }\n\n // #if _VERBOSE\n @ASTNodeDecorator(NoneTerminal.conditionopt)\n export class ConditionOpt extends TreeNode {}\n\n @ASTNodeDecorator(NoneTerminal.for_rest_statement)\n export class ForRestStatement extends TreeNode {}\n\n @ASTNodeDecorator(NoneTerminal.condition)\n export class Condition extends TreeNode {}\n\n @ASTNodeDecorator(NoneTerminal.for_init_statement)\n export class ForInitStatement extends TreeNode {}\n\n @ASTNodeDecorator(NoneTerminal.iteration_statement)\n export class IterationStatement extends TreeNode {}\n\n @ASTNodeDecorator(NoneTerminal.selection_statement)\n export class SelectionStatement extends TreeNode {}\n\n @ASTNodeDecorator(NoneTerminal.expression_statement)\n export class ExpressionStatement extends TreeNode {}\n // #endif\n\n export abstract class ExpressionAstNode extends TreeNode {\n protected _type?: GalaceanDataType;\n set type(t: GalaceanDataType | undefined) {\n this._type = t;\n }\n get type() {\n return this._type ?? TypeAny;\n }\n\n override init(): void {\n this._type = undefined;\n }\n }\n\n // #if _VERBOSE\n @ASTNodeDecorator(NoneTerminal.initializer_list)\n export class InitializerList extends ExpressionAstNode {\n override semanticAnalyze(sa: SemanticAnalyzer): void {\n const init = this.children[0] as Initializer | InitializerList;\n this.type = init.type;\n }\n }\n\n @ASTNodeDecorator(NoneTerminal.initializer)\n export class Initializer extends ExpressionAstNode {\n override semanticAnalyze(sa: SemanticAnalyzer): void {\n if (this.children.length === 1) {\n this.type = (<AssignmentExpression>this.children[0]).type;\n } else {\n this.type = (<InitializerList>this.children[1]).type;\n }\n }\n }\n // #endif\n\n @ASTNodeDecorator(NoneTerminal.single_declaration)\n export class SingleDeclaration extends TreeNode {\n typeSpecifier: TypeSpecifier;\n arraySpecifier?: ArraySpecifier;\n\n override init(): void {\n this.typeSpecifier = undefined;\n this.arraySpecifier = undefined;\n }\n\n override semanticAnalyze(sa: SemanticAnalyzer): void {\n const children = this.children;\n const childrenLen = children.length;\n const fullyType = children[0] as FullySpecifiedType;\n const typeSpecifier = fullyType.typeSpecifier;\n this.typeSpecifier = typeSpecifier;\n this.arraySpecifier = typeSpecifier.arraySpecifier;\n\n const id = children[1] as BaseToken;\n\n let sm: VarSymbol;\n if (childrenLen === 2 || childrenLen === 4) {\n const symbolType = new SymbolType(fullyType.type, typeSpecifier.lexeme, this.arraySpecifier);\n const initializer = children[3] as Initializer;\n\n sm = new VarSymbol(id.lexeme, symbolType, false, initializer);\n } else {\n const arraySpecifier = children[2] as ArraySpecifier;\n // #if _VERBOSE\n if (arraySpecifier && this.arraySpecifier) {\n sa.reportError(arraySpecifier.location, \"Array of array is not supported.\");\n }\n // #endif\n this.arraySpecifier = arraySpecifier;\n const symbolType = new SymbolType(fullyType.type, typeSpecifier.lexeme, this.arraySpecifier);\n const initializer = children[4] as Initializer;\n\n sm = new VarSymbol(id.lexeme, symbolType, false, initializer);\n }\n sa.symbolTableStack.insert(sm);\n }\n\n override codeGen(visitor: CodeGenVisitor): string {\n return this.setCache(visitor.visitSingleDeclaration(this));\n }\n }\n\n @ASTNodeDecorator(NoneTerminal.fully_specified_type)\n export class FullySpecifiedType extends TreeNode {\n typeSpecifier: TypeSpecifier;\n type: GalaceanDataType;\n\n override semanticAnalyze(_: SemanticAnalyzer): void {\n const children = this.children;\n this.typeSpecifier = (children.length === 1 ? children[0] : children[1]) as TypeSpecifier;\n this.type = this.typeSpecifier.type;\n }\n }\n\n @ASTNodeDecorator(NoneTerminal.type_qualifier)\n export class TypeQualifier extends TreeNode {}\n\n @ASTNodeDecorator(NoneTerminal.single_type_qualifier)\n export class SingleTypeQualifier extends TreeNode {\n qualifier: Keyword;\n lexeme: string;\n\n override semanticAnalyze(sa: SemanticAnalyzer): void {\n const child = this.children[0];\n if (child instanceof BaseToken) {\n this.qualifier = child.type as Keyword;\n this.lexeme = child.lexeme;\n } else {\n this.qualifier = (<BasicTypeQualifier>child).qualifier;\n this.lexeme = (<BasicTypeQualifier>child).lexeme;\n }\n }\n }\n\n abstract class BasicTypeQualifier extends TreeNode {\n qualifier: Keyword;\n lexeme: string;\n\n override semanticAnalyze(sa: SemanticAnalyzer): void {\n const token = this.children[0] as BaseToken;\n this.qualifier = token.type as Keyword;\n this.lexeme = token.lexeme;\n }\n }\n\n // #if _VERBOSE\n @ASTNodeDecorator(NoneTerminal.storage_qualifier)\n export class StorageQualifier extends BasicTypeQualifier {}\n\n @ASTNodeDecorator(NoneTerminal.precision_qualifier)\n export class PrecisionQualifier extends BasicTypeQualifier {}\n\n @ASTNodeDecorator(NoneTerminal.interpolation_qualifier)\n export class InterpolationQualifier extends BasicTypeQualifier {}\n\n @ASTNodeDecorator(NoneTerminal.invariant_qualifier)\n export class InvariantQualifier extends BasicTypeQualifier {}\n // #endif\n\n @ASTNodeDecorator(NoneTerminal.type_specifier)\n export class TypeSpecifier extends TreeNode {\n type: GalaceanDataType;\n lexeme: string;\n arraySize?: number;\n isCustom: boolean;\n\n override init(): void {\n this.arraySize = undefined;\n }\n get arraySpecifier(): ArraySpecifier {\n return this.children[1] as ArraySpecifier;\n }\n\n override semanticAnalyze(sa: SemanticAnalyzer): void {\n const children = this.children;\n const firstChild = children[0] as TypeSpecifierNonArray;\n this.type = firstChild.type;\n this.lexeme = firstChild.lexeme;\n this.arraySize = (children?.[1] as ArraySpecifier)?.size;\n this.isCustom = typeof this.type === \"string\";\n }\n }\n\n @ASTNodeDecorator(NoneTerminal.array_specifier)\n export class ArraySpecifier extends TreeNode {\n size: number | undefined;\n override semanticAnalyze(sa: SemanticAnalyzer): void {\n const integerConstantExpr = this.children[1] as IntegerConstantExpression;\n this.size = integerConstantExpr.value;\n }\n }\n\n @ASTNodeDecorator(NoneTerminal.integer_constant_expression_operator)\n export class IntegerConstantExpressionOperator extends TreeNode {\n compute: (a: number, b: number) => number;\n lexeme: string;\n\n override semanticAnalyze(sa: SemanticAnalyzer): void {\n const operator = this.children[0] as BaseToken;\n this.lexeme = operator.lexeme;\n switch (operator.type) {\n case ETokenType.PLUS:\n this.compute = (a, b) => a + b;\n break;\n case ETokenType.DASH:\n this.compute = (a, b) => a - b;\n break;\n case ETokenType.STAR:\n this.compute = (a, b) => a * b;\n break;\n case ETokenType.SLASH:\n this.compute = (a, b) => a / b;\n break;\n case ETokenType.PERCENT:\n this.compute = (a, b) => a % b;\n break;\n default:\n sa.reportError(operator.location, `not implemented operator ${operator.lexeme}`);\n }\n }\n }\n\n @ASTNodeDecorator(NoneTerminal.integer_constant_expression)\n export class IntegerConstantExpression extends TreeNode {\n value?: number;\n\n override init(): void {\n this.value = undefined;\n }\n\n override semanticAnalyze(sa: SemanticAnalyzer): void {\n if (this.children.length === 1) {\n const child = this.children[0];\n if (child instanceof BaseToken) {\n this.value = Number(child.lexeme);\n }\n // #if _VERBOSE\n else {\n const id = child as VariableIdentifier;\n if (!ParserUtils.typeCompatible(Keyword.INT, id.typeInfo)) {\n sa.reportError(id.location, \"Invalid integer.\");\n return;\n }\n }\n // #endif\n }\n }\n }\n\n @ASTNodeDecorator(NoneTerminal.type_specifier_nonarray)\n export class TypeSpecifierNonArray extends TreeNode {\n type: GalaceanDataType;\n lexeme: string;\n\n override init(): void {\n const tt = this.children[0];\n if (tt instanceof BaseToken) {\n // ID — user-defined struct identifier; the lexeme is the type name.\n this.type = tt.lexeme;\n this.lexeme = tt.lexeme;\n } else if (tt instanceof MacroCallSymbol) {\n // Macro-as-type-alias — value resolved at variant codegen, type is `TypeAny` here.\n this.type = TypeAny;\n this.lexeme = tt.macroName;\n } else {\n this.type = (tt as ExtBuiltinTypeSpecifierNonArray).type as GalaceanDataType;\n this.lexeme = (tt as ExtBuiltinTypeSpecifierNonArray).lexeme;\n }\n }\n }\n\n @ASTNodeDecorator(NoneTerminal.ext_builtin_type_specifier_nonarray)\n export class ExtBuiltinTypeSpecifierNonArray extends TreeNode {\n type: TokenType;\n lexeme: string;\n\n override init(): void {\n const token = this.children[0] as BaseToken;\n this.type = token.type;\n this.lexeme = token.lexeme;\n }\n }\n\n @ASTNodeDecorator(NoneTerminal.init_declarator_list)\n export class InitDeclaratorList extends TreeNode {\n typeInfo: SymbolType;\n\n override semanticAnalyze(sa: SemanticAnalyzer): void {\n let sm: VarSymbol;\n const children = this.children;\n const childrenLength = children.length;\n if (childrenLength === 1) {\n const { typeSpecifier, arraySpecifier } = children[0] as SingleDeclaration;\n this.typeInfo = new SymbolType(typeSpecifier.type, typeSpecifier.lexeme, arraySpecifier);\n } else {\n const initDeclList = children[0] as InitDeclaratorList;\n this.typeInfo = initDeclList.typeInfo;\n }\n\n if (childrenLength === 3 || childrenLength === 5) {\n const id = children[2] as BaseToken;\n sm = new VarSymbol(id.lexeme, this.typeInfo, false, this);\n sa.symbolTableStack.insert(sm);\n } else if (childrenLength === 4 || childrenLength === 6) {\n const typeInfo = this.typeInfo;\n const arraySpecifier = this.children[3] as ArraySpecifier;\n // #if _VERBOSE\n if (typeInfo.arraySpecifier && arraySpecifier) {\n sa.reportError(arraySpecifier.location, \"Array of array is not supported.\");\n }\n // #endif\n typeInfo.arraySpecifier = arraySpecifier;\n const id = children[2] as BaseToken;\n sm = new VarSymbol(id.lexeme, typeInfo, false, this);\n sa.symbolTableStack.insert(sm);\n }\n }\n }\n\n @ASTNodeDecorator(NoneTerminal.identifier_list)\n export class IdentifierList extends TreeNode {\n idList: BaseToken[] = [];\n\n override init(): void {\n this.idList.length = 0;\n }\n\n override semanticAnalyze(sa: SemanticAnalyzer): void {\n const { children, idList: curIdList } = this;\n if (children.length === 2) {\n curIdList.push(children[1] as BaseToken);\n } else {\n const list = children[0] as IdentifierList;\n const id = children[2] as BaseToken;\n const listIdLength = list.idList.length;\n curIdList.length = listIdLength + 1;\n\n for (let i = 0; i < listIdLength; i++) {\n curIdList[i] = list.idList[i];\n }\n curIdList[listIdLength] = id;\n }\n }\n }\n\n @ASTNodeDecorator(NoneTerminal.declaration)\n export class Declaration extends TreeNode {\n override codeGen(visitor: CodeGenVisitor): string {\n return this.setCache(visitor.visitDeclaration(this));\n }\n }\n\n @ASTNodeDecorator(NoneTerminal.function_prototype)\n export class FunctionProtoType extends TreeNode {\n ident: BaseToken;\n returnType: FullySpecifiedType;\n parameterList: IParamInfo[];\n paramSig: GalaceanDataType[] | undefined;\n\n override semanticAnalyze(sa: SemanticAnalyzer): void {\n const declarator = this.children[0] as FunctionDeclarator;\n this.ident = declarator.ident;\n this.returnType = declarator.returnType;\n this.parameterList = declarator.parameterInfoList;\n this.paramSig = declarator.paramSig;\n }\n }\n\n @ASTNodeDecorator(NoneTerminal.function_declarator)\n export class FunctionDeclarator extends TreeNode {\n ident: BaseToken;\n returnType: FullySpecifiedType;\n parameterInfoList: IParamInfo[] | undefined;\n paramSig: GalaceanDataType[] | undefined;\n\n override semanticAnalyze(sa: SemanticAnalyzer): void {\n sa.curFunctionInfo.returnStatement = null;\n sa.curFunctionInfo.header = this;\n\n const children = this.children;\n const header = children[0] as FunctionHeader;\n const parameterList = children[1] as FunctionParameterList | undefined;\n this.ident = header.ident;\n this.returnType = header.returnType;\n this.parameterInfoList = parameterList?.parameterInfoList;\n this.paramSig = parameterList?.paramSig;\n }\n }\n\n @ASTNodeDecorator(NoneTerminal.function_header)\n export class FunctionHeader extends TreeNode {\n ident: BaseToken;\n returnType: FullySpecifiedType;\n\n override semanticAnalyze(sa: SemanticAnalyzer): void {\n sa.pushScope();\n const children = this.children;\n this.ident = children[1] as BaseToken;\n this.returnType = children[0] as FullySpecifiedType;\n }\n\n override codeGen(visitor: CodeGenVisitor): string {\n return this.setCache(visitor.visitFunctionHeader(this));\n }\n }\n\n @ASTNodeDecorator(NoneTerminal.function_parameter_list)\n export class FunctionParameterList extends TreeNode {\n parameterInfoList: IParamInfo[] = [];\n paramSig: GalaceanDataType[] = [];\n\n override init(): void {\n this.parameterInfoList.length = 0;\n this.paramSig.length = 0;\n }\n\n override semanticAnalyze(sa: SemanticAnalyzer): void {\n const children = this.children;\n const { parameterInfoList, paramSig } = this;\n\n if (children[0] instanceof ParameterDeclaration) {\n const decl = children[0];\n parameterInfoList.push({ ident: decl.ident, typeInfo: decl.typeInfo, astNode: decl });\n paramSig.push(decl.typeInfo?.type ?? TypeAny);\n } else if (children[2] instanceof ParameterDeclaration) {\n const list = children[0] as FunctionParameterList;\n const decl = children[2];\n\n parameterInfoList.push(...list.parameterInfoList, {\n ident: decl.ident,\n typeInfo: decl.typeInfo,\n astNode: decl\n });\n paramSig.push(...list.paramSig, decl.typeInfo?.type ?? TypeAny);\n } else if (children[0] instanceof FunctionParameterList && children[1] instanceof MacroParamBlock) {\n parameterInfoList.push(...children[0].parameterInfoList, { astNode: children[1] });\n paramSig.push(...children[0].paramSig, TypeAny);\n } else if (children[0] instanceof MacroParamBlock) {\n parameterInfoList.push({ astNode: children[0] });\n paramSig.push(TypeAny);\n }\n }\n\n override codeGen(visitor: CodeGenVisitor): string {\n return this.setCache(visitor.visitFunctionParameterList(this));\n }\n }\n\n @ASTNodeDecorator(NoneTerminal.macro_param_case_list)\n export class MacroParamCaseList extends TreeNode {}\n\n @ASTNodeDecorator(NoneTerminal.macro_param_block)\n export class MacroParamBlock extends TreeNode {}\n\n @ASTNodeDecorator(NoneTerminal.macro_parameter_branch)\n export class MacroParameterBranch extends TreeNode {}\n\n @ASTNodeDecorator(NoneTerminal.parameter_declaration)\n export class ParameterDeclaration extends TreeNode {\n // Some syntax is not recognized, eg.\n // `#define TEXTURE2D_SHADOW_PARAM(shadowMap) mediump sampler2D shadowMap`\n typeInfo?: SymbolType;\n ident?: BaseToken;\n\n override init(): void {\n this.typeInfo = undefined;\n this.ident = undefined;\n }\n\n override semanticAnalyze(sa: SemanticAnalyzer): void {\n const children = this.children;\n let parameterDeclarator: ParameterDeclarator | undefined;\n\n if (children[0] instanceof ParameterDeclarator) {\n parameterDeclarator = children[0];\n } else if (children[1] instanceof ParameterDeclarator) {\n parameterDeclarator = children[1];\n }\n\n if (parameterDeclarator) {\n this.typeInfo = parameterDeclarator.typeInfo;\n this.ident = parameterDeclarator.ident;\n const varSymbol = new VarSymbol(\n parameterDeclarator.ident.lexeme,\n parameterDeclarator.typeInfo,\n false,\n parameterDeclarator\n );\n sa.symbolTableStack.insert(varSymbol);\n }\n }\n }\n\n @ASTNodeDecorator(NoneTerminal.parameter_declarator)\n export class ParameterDeclarator extends TreeNode {\n ident: BaseToken;\n typeInfo: SymbolType;\n\n override semanticAnalyze(sa: SemanticAnalyzer): void {\n const children = this.children;\n this.ident = children[1] as BaseToken;\n const typeSpecifier = children[0] as TypeSpecifier;\n const arraySpecifier = children[2] as ArraySpecifier;\n this.typeInfo = new SymbolType(typeSpecifier.type, typeSpecifier.lexeme, arraySpecifier);\n }\n }\n\n // #if _VERBOSE\n @ASTNodeDecorator(NoneTerminal.simple_statement)\n export class SimpleStatement extends TreeNode {}\n\n @ASTNodeDecorator(NoneTerminal.compound_statement)\n export class CompoundStatement extends TreeNode {}\n // #endif\n\n @ASTNodeDecorator(NoneTerminal.compound_statement_no_scope)\n export class CompoundStatementNoScope extends TreeNode {}\n\n // #if _VERBOSE\n @ASTNodeDecorator(NoneTerminal.statement)\n export class Statement extends TreeNode {}\n // #endif\n\n @ASTNodeDecorator(NoneTerminal.statement_list)\n export class StatementList extends TreeNode {\n override codeGen(visitor: CodeGenVisitor): string {\n return this.setCache(visitor.visitStatementList(this));\n }\n }\n\n @ASTNodeDecorator(NoneTerminal.function_definition)\n export class FunctionDefinition extends TreeNode {\n returnStatement?: ASTNode.JumpStatement;\n protoType: FunctionProtoType;\n statements: CompoundStatementNoScope;\n isInMacroBranch: boolean;\n\n override init(): void {\n this.returnStatement = undefined;\n }\n\n override semanticAnalyze(sa: SemanticAnalyzer): void {\n const children = this.children;\n this.protoType = children[0] as FunctionProtoType;\n this.statements = children[1] as CompoundStatementNoScope;\n\n sa.popScope();\n const sm = new FnSymbol(this.protoType.ident.lexeme, this);\n sa.symbolTableStack.insert(sm);\n this.isInMacroBranch = sa.symbolTableStack.isInMacroBranch;\n\n const { curFunctionInfo } = sa;\n const { header, returnStatement } = curFunctionInfo;\n if (header.returnType.type === Keyword.VOID) {\n if (returnStatement) {\n sa.reportError(header.returnType.location, \"Return in void function.\");\n }\n } else {\n if (!returnStatement) {\n sa.reportError(header.returnType.location, `No return statement found.`);\n } else {\n this.returnStatement = returnStatement;\n }\n }\n curFunctionInfo.header = undefined;\n curFunctionInfo.returnStatement = undefined;\n }\n\n override codeGen(visitor: CodeGenVisitor): string {\n return this.setCache(visitor.visitFunctionDefinition(this));\n }\n }\n\n @ASTNodeDecorator(NoneTerminal.function_call)\n export class FunctionCall extends ExpressionAstNode {\n override semanticAnalyze(sa: SemanticAnalyzer): void {\n this.type = (this.children[0] as FunctionCallGeneric).type;\n }\n\n override codeGen(visitor: CodeGenVisitor): string {\n return this.setCache(visitor.visitFunctionCall(this));\n }\n }\n\n @ASTNodeDecorator(NoneTerminal.function_call_generic)\n export class FunctionCallGeneric extends ExpressionAstNode {\n fnSymbol: FnSymbol | StructSymbol | undefined;\n\n override init(): void {\n super.init();\n this.fnSymbol = undefined;\n }\n\n override semanticAnalyze(sa: SemanticAnalyzer): void {\n const functionIdentifier = this.children[0] as FunctionIdentifier;\n if (functionIdentifier.isBuiltin) {\n this.type = functionIdentifier.ident;\n } else {\n const fnIdent = <string>functionIdentifier.ident;\n\n let paramSig: NonGenericGalaceanType[] | undefined;\n if (this.children.length === 4) {\n const paramList = this.children[2];\n if (paramList instanceof FunctionCallParameterList) {\n paramSig = paramList.paramSig as any;\n }\n }\n // #if _VERBOSE\n const builtinFn = BuiltinFunction.resolveOverload(fnIdent, paramSig);\n if (builtinFn) {\n this.type = builtinFn.realReturnType;\n return;\n }\n // #endif\n\n const lookupSymbol = SemanticAnalyzer._lookupSymbol;\n lookupSymbol.set(fnIdent, ESymbolType.FN, undefined, undefined, paramSig);\n\n const fnSymbol = sa.symbolTableStack.lookup(lookupSymbol, true) as FnSymbol;\n\n if (!fnSymbol) {\n // #if _VERBOSE\n sa.reportError(this.location, `No overload function type found: ${functionIdentifier.ident}`);\n // #endif\n return;\n }\n this.type = fnSymbol?.dataType?.type;\n this.fnSymbol = fnSymbol;\n }\n }\n }\n\n @ASTNodeDecorator(NoneTerminal.function_call_parameter_list)\n export class FunctionCallParameterList extends TreeNode {\n paramSig: GalaceanDataType[] = [];\n paramNodes: Array<AssignmentExpression | MacroCallArgBlock> = [];\n\n override init(): void {\n this.paramSig.length = 0;\n this.paramNodes.length = 0;\n }\n\n override semanticAnalyze(sa: SemanticAnalyzer): void {\n const { children, paramSig, paramNodes } = this;\n if (children[0] instanceof AssignmentExpression) {\n const expr = children[0];\n paramSig.push(expr.type);\n paramNodes.push(expr);\n } else if (children[2] instanceof AssignmentExpression) {\n const list = children[0] as FunctionCallParameterList;\n const decl = children[2] as AssignmentExpression;\n paramSig.push(...list.paramSig, decl.type);\n paramNodes.push(...list.paramNodes, decl);\n } else if (children[0] instanceof FunctionCallParameterList && children[1] instanceof MacroCallArgBlock) {\n paramSig.push(...children[0].paramSig, TypeAny);\n paramNodes.push(...children[0].paramNodes, children[1]);\n } else if (children[0] instanceof MacroCallArgBlock) {\n paramSig.push(TypeAny);\n paramNodes.push(children[0]);\n }\n }\n }\n\n @ASTNodeDecorator(NoneTerminal.macro_call_arg_case_list)\n export class MacroCallArgCaseList extends TreeNode {}\n @ASTNodeDecorator(NoneTerminal.macro_call_arg_block)\n export class MacroCallArgBlock extends TreeNode {}\n @ASTNodeDecorator(NoneTerminal.macro_call_arg_branch)\n export class MacroCallArgBranch extends TreeNode {}\n\n @ASTNodeDecorator(NoneTerminal.precision_specifier)\n export class PrecisionSpecifier extends TreeNode {\n override semanticAnalyze(sa: SemanticAnalyzer): void {\n if (!sa.symbolTableStack.isInMacroBranch) {\n sa.shaderData.globalPrecisions.push(this);\n }\n }\n }\n\n @ASTNodeDecorator(NoneTerminal.function_identifier)\n export class FunctionIdentifier extends TreeNode {\n ident: GalaceanDataType;\n lexeme: string;\n isBuiltin: boolean;\n\n override semanticAnalyze(sa: SemanticAnalyzer): void {\n const typeSpecifier = this.children[0] as TypeSpecifier;\n\n this.ident = typeSpecifier.type;\n this.lexeme = typeSpecifier.lexeme;\n this.isBuiltin = typeof this.ident !== \"string\";\n }\n\n override codeGen(visitor: CodeGenVisitor): string {\n return this.setCache(visitor.visitFunctionIdentifier(this));\n }\n }\n\n @ASTNodeDecorator(NoneTerminal.assignment_expression)\n export class AssignmentExpression extends ExpressionAstNode {\n override semanticAnalyze(sa: SemanticAnalyzer): void {\n if (this.children.length === 1) {\n const expr = this.children[0] as ConditionalExpression;\n this.type = expr.type ?? TypeAny;\n } else {\n const expr = this.children[2] as AssignmentExpression;\n this.type = expr.type ?? TypeAny;\n }\n }\n }\n\n // #if _VERBOSE\n @ASTNodeDecorator(NoneTerminal.assignment_operator)\n export class AssignmentOperator extends TreeNode {}\n // #endif\n\n @ASTNodeDecorator(NoneTerminal.expression)\n export class Expression extends ExpressionAstNode {\n override semanticAnalyze(sa: SemanticAnalyzer): void {\n if (this.children.length === 1) {\n const expr = this.children[0] as AssignmentExpression;\n this.type = expr.type;\n } else {\n const expr = this.children[2] as AssignmentExpression;\n this.type = expr.type;\n }\n }\n }\n\n @ASTNodeDecorator(NoneTerminal.primary_expression)\n export class PrimaryExpression extends ExpressionAstNode {\n override semanticAnalyze(sa: SemanticAnalyzer): void {\n if (this.children.length === 1) {\n const id = this.children[0];\n if (id instanceof VariableIdentifier) {\n this.type = id.typeInfo ?? TypeAny;\n } else {\n switch ((<BaseToken>id).type) {\n case ETokenType.INT_CONSTANT:\n this._type = Keyword.INT;\n break;\n case ETokenType.FLOAT_CONSTANT:\n this.type = Keyword.FLOAT;\n break;\n case Keyword.True:\n case Keyword.False:\n this.type = Keyword.BOOL;\n break;\n }\n }\n } else {\n const expression = this.children[1] as Expression;\n this.type = expression.type;\n }\n }\n }\n\n @ASTNodeDecorator(NoneTerminal.postfix_expression)\n export class PostfixExpression extends ExpressionAstNode {\n override init(): void {\n super.init();\n if (this.children.length === 1) {\n const child = this.children[0] as PrimaryExpression | FunctionCall;\n this.type = child.type;\n }\n }\n\n override codeGen(visitor: CodeGenVisitor): string {\n return this.setCache(visitor.visitPostfixExpression(this));\n }\n }\n\n // #if _VERBOSE\n @ASTNodeDecorator(NoneTerminal.unary_operator)\n export class UnaryOperator extends TreeNode {}\n\n @ASTNodeDecorator(NoneTerminal.unary_expression)\n export class UnaryExpression extends ExpressionAstNode {\n override init(): void {\n this.type = (this.children[0] as PostfixExpression).type;\n }\n }\n\n @ASTNodeDecorator(NoneTerminal.multiplicative_expression)\n export class MultiplicativeExpression extends ExpressionAstNode {\n override init(): void {\n super.init();\n if (this.children.length === 1) {\n this.type = (this.children[0] as UnaryExpression).type;\n // TODO: Temporarily remove type deduce due to generic function type issue.\n // } else {\n // const exp1 = this.children[0] as MultiplicativeExpression;\n // const exp2 = this.children[2] as UnaryExpression;\n // if (exp1.type === exp2.type) {\n // this.type = exp1.type;\n // }\n }\n }\n }\n\n @ASTNodeDecorator(NoneTerminal.additive_expression)\n export class AdditiveExpression extends ExpressionAstNode {\n override init(): void {\n super.init();\n if (this.children.length === 1) {\n this.type = (this.children[0] as MultiplicativeExpression).type;\n // TODO: Temporarily remove type deduce due to generic function type issue.\n // } else {\n // const exp1 = this.children[0] as AdditiveExpression;\n // const exp2 = this.children[2] as MultiplicativeExpression;\n // if (exp1.type === exp2.type) {\n // this.type = exp1.type;\n // }\n }\n }\n }\n\n @ASTNodeDecorator(NoneTerminal.shift_expression)\n export class ShiftExpression extends ExpressionAstNode {\n override semanticAnalyze(sa: SemanticAnalyzer): void {\n const expr = this.children[0] as ExpressionAstNode;\n this.type = expr.type;\n }\n }\n\n @ASTNodeDecorator(NoneTerminal.relational_expression)\n export class RelationalExpression extends ExpressionAstNode {\n override semanticAnalyze(sa: SemanticAnalyzer): void {\n if (this.children.length === 1) {\n this.type = (<ShiftExpression>this.children[0]).type;\n } else {\n this.type = Keyword.BOOL;\n }\n }\n }\n\n @ASTNodeDecorator(NoneTerminal.equality_expression)\n export class EqualityExpression extends ExpressionAstNode {\n override semanticAnalyze(sa: SemanticAnalyzer): void {\n if (this.children.length === 1) {\n this.type = (<RelationalExpression>this.children[0]).type;\n } else {\n this.type = Keyword.BOOL;\n }\n }\n }\n\n @ASTNodeDecorator(NoneTerminal.and_expression)\n export class AndExpression extends ExpressionAstNode {\n override semanticAnalyze(sa: SemanticAnalyzer): void {\n if (this.children.length === 1) {\n this.type = (<AndExpression>this.children[0]).type;\n } else {\n this.type = Keyword.UINT;\n }\n }\n }\n\n @ASTNodeDecorator(NoneTerminal.exclusive_or_expression)\n export class ExclusiveOrExpression extends ExpressionAstNode {\n override semanticAnalyze(sa: SemanticAnalyzer): void {\n if (this.children.length === 1) {\n this.type = (<AndExpression>this.children[0]).type;\n } else {\n this.type = Keyword.UINT;\n }\n }\n }\n\n @ASTNodeDecorator(NoneTerminal.inclusive_or_expression)\n export class InclusiveOrExpression extends ExpressionAstNode {\n override semanticAnalyze(sa: SemanticAnalyzer): void {\n if (this.children.length === 1) {\n this.type = (<ExclusiveOrExpression>this.children[0]).type;\n } else {\n this.type = Keyword.UINT;\n }\n }\n }\n\n @ASTNodeDecorator(NoneTerminal.logical_and_expression)\n export class LogicalAndExpression extends ExpressionAstNode {\n override semanticAnalyze(sa: SemanticAnalyzer): void {\n if (this.children.length === 1) {\n this.type = (<InclusiveOrExpression>this.children[0]).type;\n } else {\n this.type = Keyword.BOOL;\n }\n }\n }\n\n @ASTNodeDecorator(NoneTerminal.logical_xor_expression)\n export class LogicalXorExpression extends ExpressionAstNode {\n override semanticAnalyze(sa: SemanticAnalyzer): void {\n if (this.children.length === 1) {\n this.type = (<LogicalAndExpression>this.children[0]).type;\n } else {\n this.type = Keyword.BOOL;\n }\n }\n }\n\n @ASTNodeDecorator(NoneTerminal.logical_or_expression)\n export class LogicalOrExpression extends ExpressionAstNode {\n override semanticAnalyze(sa: SemanticAnalyzer): void {\n if (this.children.length === 1) {\n this.type = (<LogicalXorExpression>this.children[0]).type;\n } else {\n this.type = Keyword.BOOL;\n }\n }\n }\n\n @ASTNodeDecorator(NoneTerminal.conditional_expression)\n export class ConditionalExpression extends ExpressionAstNode {\n override semanticAnalyze(sa: SemanticAnalyzer): void {\n if (this.children.length === 1) {\n this.type = (<LogicalOrExpression>this.children[0]).type;\n }\n }\n }\n // #endif\n\n @ASTNodeDecorator(NoneTerminal.struct_specifier)\n export class StructSpecifier extends TreeNode {\n ident?: BaseToken;\n propList: StructProp[];\n macroExpressions: MacroExpression[];\n isInMacroBranch: boolean;\n\n override init(): void {\n this.ident = undefined;\n }\n\n override semanticAnalyze(sa: SemanticAnalyzer): void {\n const children = this.children;\n this.isInMacroBranch = sa.symbolTableStack.isInMacroBranch;\n if (children.length === 6) {\n this.ident = children[1] as BaseToken;\n sa.symbolTableStack.insert(new StructSymbol(this.ident.lexeme, this));\n\n this.propList = (children[3] as StructDeclarationList).propList;\n this.macroExpressions = (children[3] as StructDeclarationList).macroExpressions;\n } else {\n this.propList = (children[2] as StructDeclarationList).propList;\n this.macroExpressions = (children[2] as StructDeclarationList).macroExpressions;\n }\n }\n\n override codeGen(visitor: CodeGenVisitor) {\n return this.setCache(visitor.visitStructSpecifier(this));\n }\n }\n\n @ASTNodeDecorator(NoneTerminal.struct_declaration_list)\n export class StructDeclarationList extends TreeNode {\n propList: StructProp[] = [];\n macroExpressions: MacroExpression[] = [];\n\n override init(): void {\n this.propList.length = 0;\n this.macroExpressions.length = 0;\n }\n\n override semanticAnalyze(sa: SemanticAnalyzer): void {\n const { children, propList, macroExpressions } = this;\n\n if (children.length === 1) {\n propList.push(...(children[0] as StructDeclaration).props);\n macroExpressions.push(...(children[0] as StructDeclaration).macroExpressions);\n } else {\n propList.push(...(children[0] as StructDeclarationList).propList);\n propList.push(...(children[1] as StructDeclaration).props);\n macroExpressions.push(...(children[0] as StructDeclarationList).macroExpressions);\n macroExpressions.push(...(children[1] as StructDeclaration).macroExpressions);\n }\n }\n }\n\n @ASTNodeDecorator(NoneTerminal.struct_declaration)\n export class StructDeclaration extends TreeNode {\n props: StructProp[] = [];\n macroExpressions: MacroExpression[] = [];\n\n private _typeSpecifier?: TypeSpecifier;\n private _declaratorList?: StructDeclaratorList;\n\n override init(): void {\n this._typeSpecifier = undefined;\n this._declaratorList = undefined;\n this.props.length = 0;\n this.macroExpressions.length = 0;\n }\n\n override semanticAnalyze(sa: SemanticAnalyzer): void {\n const { children, props, macroExpressions } = this;\n\n if (children.length === 1) {\n const macroStructDeclaration = children[0] as MacroStructDeclaration;\n const macroProps = macroStructDeclaration.props;\n\n for (let i = 0, length = macroProps.length; i < length; i++) {\n macroProps[i].isInMacroBranch = true;\n props.push(macroProps[i]);\n }\n\n macroExpressions.push(...macroStructDeclaration.macroExpressions);\n\n return;\n }\n\n if (children.length === 3) {\n this._typeSpecifier = children[0] as TypeSpecifier;\n this._declaratorList = children[1] as StructDeclaratorList;\n } else {\n this._typeSpecifier = children[1] as TypeSpecifier;\n this._declaratorList = children[2] as StructDeclaratorList;\n }\n\n const firstChild = children[0];\n const { type, lexeme } = this._typeSpecifier;\n const isInMacroBranch = sa.symbolTableStack.isInMacroBranch;\n if (firstChild instanceof LayoutQualifier) {\n const declarator = children[2] as StructDeclarator;\n const typeInfo = new SymbolType(type, lexeme);\n const prop = new StructProp(typeInfo, declarator.ident, firstChild.index, isInMacroBranch);\n props.push(prop);\n } else {\n const declaratorList = this._declaratorList.declaratorList;\n const declaratorListLength = declaratorList.length;\n props.length = declaratorListLength;\n for (let i = 0; i < declaratorListLength; i++) {\n const declarator = declaratorList[i];\n const typeInfo = new SymbolType(type, lexeme, declarator.arraySpecifier);\n const prop = new StructProp(typeInfo, declarator.ident, undefined, isInMacroBranch);\n props[i] = prop;\n }\n }\n }\n }\n\n @ASTNodeDecorator(NoneTerminal.macro_struct_declaration)\n export class MacroStructDeclaration extends TreeNode {\n props: StructProp[] = [];\n macroExpressions: MacroExpression[] = [];\n\n override init(): void {\n this.props.length = 0;\n this.macroExpressions.length = 0;\n }\n\n override semanticAnalyze(): void {\n const children = this.children;\n\n this.macroExpressions.push(children[0] as MacroPushContext);\n\n if (children.length === 3) {\n this.props.push(...(children[1] as StructDeclarationList).propList);\n this.props.push(...(children[2] as MacroStructBranch).props);\n this.macroExpressions.push(...(children[1] as StructDeclarationList).macroExpressions);\n this.macroExpressions.push(...(children[2] as MacroStructBranch).macroExpressions);\n } else {\n this.props.push(...(children[1] as MacroStructBranch).props);\n this.macroExpressions.push(...(children[1] as MacroStructBranch).macroExpressions);\n }\n }\n }\n\n @ASTNodeDecorator(NoneTerminal.macro_struct_branch)\n export class MacroStructBranch extends TreeNode {\n props: StructProp[] = [];\n macroExpressions: MacroExpression[] = [];\n\n override init(): void {\n this.props.length = 0;\n this.macroExpressions.length = 0;\n }\n\n override semanticAnalyze(): void {\n const children = this.children;\n const lastNode = children[children.length - 1];\n\n this.macroExpressions.push(children[0] as MacroPopContext | MacroElseExpression | MacroElifExpression);\n\n if (children[1] instanceof StructDeclarationList) {\n this.props.push(...children[1].propList);\n this.macroExpressions.push(...children[1].macroExpressions);\n }\n\n if (lastNode instanceof MacroStructBranch) {\n this.props.push(...lastNode.props);\n this.macroExpressions.push(...lastNode.macroExpressions);\n }\n\n if (children.length > 1 && lastNode instanceof MacroPopContext) {\n this.macroExpressions.push(lastNode);\n }\n }\n }\n\n @ASTNodeDecorator(NoneTerminal.layout_qualifier)\n export class LayoutQualifier extends TreeNode {\n index: number;\n\n override semanticAnalyze(sa: SemanticAnalyzer): void {\n this.index = Number((<BaseToken>this.children[4]).lexeme);\n }\n }\n\n @ASTNodeDecorator(NoneTerminal.struct_declarator_list)\n export class StructDeclaratorList extends TreeNode {\n declaratorList: StructDeclarator[] = [];\n\n override init(): void {\n this.declaratorList.length = 0;\n }\n\n override semanticAnalyze(sa: SemanticAnalyzer): void {\n const { children, declaratorList } = this;\n if (children.length === 1) {\n declaratorList.push(children[0] as StructDeclarator);\n } else {\n const list = children[0] as StructDeclaratorList;\n const declarator = children[1] as StructDeclarator;\n const listLength = list.declaratorList.length;\n declaratorList.length = listLength + 1;\n for (let i = 0; i < listLength; i++) {\n declaratorList[i] = list.declaratorList[i];\n }\n declaratorList[listLength] = declarator;\n }\n }\n }\n\n @ASTNodeDecorator(NoneTerminal.struct_declarator)\n export class StructDeclarator extends TreeNode {\n ident: BaseToken;\n arraySpecifier: ArraySpecifier | undefined;\n\n override init(): void {\n this.arraySpecifier = undefined;\n }\n\n override semanticAnalyze(sa: SemanticAnalyzer): void {\n const children = this.children;\n this.ident = children[0] as BaseToken;\n this.arraySpecifier = children[1] as ArraySpecifier;\n }\n }\n\n @ASTNodeDecorator(NoneTerminal.variable_declaration)\n export class VariableDeclaration extends TreeNode {\n type: FullySpecifiedType;\n isStatic: boolean;\n\n override init(): void {\n this.isStatic = false;\n }\n\n override semanticAnalyze(sa: SemanticAnalyzer): void {\n const children = this.children;\n const type = children[0] as FullySpecifiedType;\n const ident = children[1] as BaseToken;\n this.type = type;\n const sm = new VarSymbol(ident.lexeme, new SymbolType(type.type, type.typeSpecifier.lexeme), true, this);\n\n sa.symbolTableStack.insert(sm);\n\n if (children.length === 4) {\n this.isStatic = true;\n }\n }\n\n override codeGen(visitor: CodeGenVisitor): string {\n if (this.isStatic) {\n return super.codeGen(visitor);\n } else {\n return this.setCache(visitor.visitGlobalVariableDeclaration(this));\n }\n }\n }\n\n @ASTNodeDecorator(NoneTerminal.variable_declaration_list)\n export class VariableDeclarationList extends TreeNode {\n type: FullySpecifiedType;\n variableDeclarations: VariableDeclaration[] = [];\n\n override init(): void {\n this.variableDeclarations.length = 0;\n }\n\n override semanticAnalyze(sa: SemanticAnalyzer): void {\n const { children } = this;\n const length = children.length;\n const child = children[0] as VariableDeclaration | VariableDeclarationList;\n const type = child.type;\n this.type = type;\n\n if (child instanceof VariableDeclaration) {\n this.variableDeclarations.push(child);\n } else {\n this.variableDeclarations.push(...child.variableDeclarations);\n\n const ident = children[2] as BaseToken;\n\n const newVariable = VariableDeclaration.pool.get() as VariableDeclaration;\n if (length === 3) {\n // variable_declaration_list ',' id\n newVariable.set(ident.location, [type, ident]);\n } else {\n // variable_declaration_list ',' id array_specifier\n newVariable.set(ident.location, [type, ident, children[3] as ArraySpecifier]);\n }\n newVariable.semanticAnalyze(sa);\n this.variableDeclarations.push(newVariable);\n }\n }\n }\n\n @ASTNodeDecorator(NoneTerminal.variable_identifier)\n export class VariableIdentifier extends TreeNode {\n // @todo: typeInfo may be multiple types\n typeInfo: GalaceanDataType;\n referenceGlobalSymbolNames: string[] = [];\n\n private _symbols: Array<VarSymbol | FnSymbol> = [];\n\n override init(): void {\n this.typeInfo = TypeAny;\n this.referenceGlobalSymbolNames.length = 0;\n this._symbols.length = 0;\n }\n\n override semanticAnalyze(sa: SemanticAnalyzer): void {\n const child = this.children[0] as BaseToken | MacroCallSymbol | MacroCallFunction;\n const referenceGlobalSymbolNames = this.referenceGlobalSymbolNames;\n const symbols = this._symbols;\n\n // Real references — every name must resolve; miss is an authoring error.\n const needFindNames = child instanceof BaseToken ? [child.lexeme] : child.referenceSymbolNames;\n\n for (let i = 0; i < needFindNames.length; i++) {\n const name = needFindNames[i];\n\n if (sa.macroDefineList[name]) continue;\n\n // only `macro_call` CFG can reference fnSymbols, others fnSymbols are referenced in `function_call_generic` CFG\n if (!(child instanceof BaseToken) && BuiltinFunction.isExist(name)) {\n continue;\n }\n\n const builtinVar = BuiltinVariable.getVar(name);\n if (builtinVar) {\n this.typeInfo = builtinVar.type;\n continue;\n }\n\n const hit = VariableIdentifier._lookupAndMarkGlobalReference(\n sa,\n name,\n symbols,\n referenceGlobalSymbolNames,\n this.location\n );\n // Expression-style macros have their own value AST; its real type isn't\n // the type of any single `referenceSymbolNames` entry (`v` in `v.v_uv`\n // is a `Varyings` struct but the macro call site's type should be the\n // member type). Skip type inference for those and keep TypeAny.\n if (hit && (child instanceof BaseToken || !child.hasAstValue)) {\n this.typeInfo = symbols[0].dataType?.type;\n }\n }\n\n // FXAA-style cross-arm shadowing: at a MACRO_CALL use site, silently\n // probe the macro name itself so any sibling-arm `var` declaration is\n // marked as referenced and codegen keeps it. Miss is the common\n // single-arm case — no warning, no type inference. Grammar half of the\n // cross-arm fix is in 87cb2b5f0.\n if (!(child instanceof BaseToken)) {\n VariableIdentifier._probeCrossArmShadowing(sa, child, needFindNames, symbols, referenceGlobalSymbolNames);\n }\n }\n\n /** Run the cross-arm shadowing probe for a MACRO_CALL site. No-op when the\n * probe isn't meaningful: no macro name, name already resolved as a real\n * reference, or name is a builtin (builtins can't be shadowed by a\n * sibling-arm decl). */\n private static _probeCrossArmShadowing(\n sa: SemanticAnalyzer,\n child: MacroCallSymbol | MacroCallFunction,\n needFindNames: string[],\n symbols: (VarSymbol | FnSymbol)[],\n referenceGlobalSymbolNames: string[]\n ): void {\n const macroName = child.macroName;\n if (!macroName) return;\n if (needFindNames.indexOf(macroName) !== -1) return; // already looked up as a real reference\n if (BuiltinFunction.isExist(macroName) || BuiltinVariable.getVar(macroName)) return; // builtins can't be shadowed\n VariableIdentifier._lookupAndMarkGlobalReference(sa, macroName, symbols, referenceGlobalSymbolNames, null);\n }\n\n /** Look up `name` in the symbol stack and, if a global var/fn declaration\n * exists, push it into `referenceGlobalSymbolNames`. Returns `true` iff\n * the lookup hit (caller can then derive type info). When `missWarnLoc`\n * is non-null, a miss reports a \"declared before used\" warning; pass\n * `null` for silent probes (e.g. FXAA-style cross-arm shadowing).\n *\n * Mutation contract: `symbols` is used as scratch storage — `lookupAll`\n * clears and refills it. On hit, the caller may read `symbols[0]` for\n * type info before the next call overwrites the contents. */\n private static _lookupAndMarkGlobalReference(\n sa: SemanticAnalyzer,\n name: string,\n symbols: (VarSymbol | FnSymbol)[],\n referenceGlobalSymbolNames: string[],\n missWarnLoc: ShaderRange | null\n ): boolean {\n const lookupSymbol = SemanticAnalyzer._lookupSymbol;\n lookupSymbol.set(name, ESymbolType.Any);\n sa.symbolTableStack.lookupAll(lookupSymbol, true, symbols);\n\n if (!symbols.length) {\n // #if _VERBOSE\n if (missWarnLoc) {\n sa.reportWarning(missWarnLoc, `Please sure the identifier \"${name}\" will be declared before used.`);\n }\n // #endif\n return false;\n }\n const currentScopeSymbol = <VarSymbol | FnSymbol>sa.symbolTableStack.scope.getSymbol(lookupSymbol, true);\n const isGlobal = currentScopeSymbol\n ? currentScopeSymbol instanceof FnSymbol || currentScopeSymbol.isGlobalVariable\n : symbols.some((s) => s instanceof FnSymbol || s.isGlobalVariable);\n if (isGlobal && referenceGlobalSymbolNames.indexOf(name) === -1) {\n referenceGlobalSymbolNames.push(name);\n }\n return true;\n }\n\n override codeGen(visitor: CodeGenVisitor): string {\n return this.setCache(visitor.visitVariableIdentifier(this));\n }\n\n getLexeme(visitor: CodeGenVisitor): string {\n const child = this.children[0] as BaseToken | MacroCallSymbol | MacroCallFunction;\n if (child instanceof BaseToken) {\n return child.lexeme;\n } else {\n return child.codeGen(visitor);\n }\n }\n }\n\n @ASTNodeDecorator(NoneTerminal.gs_shader_program)\n export class GLShaderProgram extends TreeNode {\n shaderData: ShaderData;\n\n override semanticAnalyze(sa: SemanticAnalyzer): void {\n this.shaderData = sa.shaderData;\n this.shaderData.symbolTable = sa.symbolTableStack.scope;\n }\n }\n\n @ASTNodeDecorator(NoneTerminal.global_declaration)\n export class GlobalDeclaration extends TreeNode {\n macroExpressions: Array<MacroExpression | MacroUndef | BaseToken> = [];\n\n override init(): void {\n this.macroExpressions.length = 0;\n }\n\n override semanticAnalyze(sa: SemanticAnalyzer): void {\n const child = this.children[0];\n\n if (\n child instanceof MacroUndef ||\n child instanceof GlobalMacroIfStatement ||\n child instanceof MacroDefine ||\n child instanceof BaseToken\n ) {\n sa.shaderData.globalMacroDeclarations.push(this);\n\n if (child instanceof GlobalMacroIfStatement) {\n this.macroExpressions.push(...child.macroExpressions);\n } else {\n this.macroExpressions.push(child);\n }\n }\n }\n }\n\n @ASTNodeDecorator(NoneTerminal.macro_undef)\n export class MacroUndef extends TreeNode {\n override codeGen(visitor: CodeGenVisitor) {\n return this.setCache(super.codeGen(visitor) + \"\\n\");\n }\n }\n\n @ASTNodeDecorator(NoneTerminal.macro_push_context)\n export class MacroPushContext extends TreeNode {\n override semanticAnalyze(sa: SemanticAnalyzer): void {\n sa.symbolTableStack._macroLevel++;\n }\n\n override codeGen(visitor: CodeGenVisitor) {\n return this.setCache(\"\\n\" + super.codeGen(visitor) + \"\\n\");\n }\n }\n\n @ASTNodeDecorator(NoneTerminal.macro_pop_context)\n export class MacroPopContext extends TreeNode {\n override semanticAnalyze(sa: SemanticAnalyzer): void {\n sa.symbolTableStack._macroLevel--;\n }\n\n override codeGen(visitor: CodeGenVisitor) {\n return this.setCache(\"\\n\" + super.codeGen(visitor) + \"\\n\");\n }\n }\n\n @ASTNodeDecorator(NoneTerminal.macro_elif_expression)\n export class MacroElifExpression extends TreeNode {\n override codeGen(visitor: CodeGenVisitor) {\n return this.setCache(\"\\n\" + super.codeGen(visitor) + \"\\n\");\n }\n }\n\n @ASTNodeDecorator(NoneTerminal.macro_else_expression)\n export class MacroElseExpression extends TreeNode {\n override codeGen(visitor: CodeGenVisitor) {\n return this.setCache(\"\\n\" + super.codeGen(visitor) + \"\\n\");\n }\n }\n\n @ASTNodeDecorator(NoneTerminal.global_macro_declaration)\n export class GlobalMacroDeclaration extends TreeNode {\n macroExpressions: MacroExpression[] = [];\n\n override init(): void {\n this.macroExpressions.length = 0;\n }\n\n override semanticAnalyze(sa: SemanticAnalyzer): void {\n const children = this.children;\n const macroExpressions = this.macroExpressions;\n\n if (children.length === 1) {\n macroExpressions.push(...(children[0] as GlobalDeclaration).macroExpressions);\n } else {\n macroExpressions.push(...(children[0] as GlobalMacroDeclaration).macroExpressions);\n macroExpressions.push(...(children[1] as GlobalDeclaration).macroExpressions);\n }\n }\n\n override codeGen(visitor: CodeGenVisitor) {\n const children = this.children as TreeNode[];\n if (children.length === 1) {\n return this.setCache(children[0].codeGen(visitor));\n } else {\n return this.setCache(`${children[0].codeGen(visitor)}\\n${children[1].codeGen(visitor)}`);\n }\n }\n }\n\n @ASTNodeDecorator(NoneTerminal.global_macro_if_statement)\n export class GlobalMacroIfStatement extends TreeNode {\n macroExpressions: MacroExpression[] = [];\n\n override init(): void {\n this.macroExpressions.length = 0;\n }\n\n override semanticAnalyze(sa: SemanticAnalyzer): void {\n const children = this.children;\n const macroExpressions = this.macroExpressions;\n\n if (children.length === 3) {\n macroExpressions.push(children[0] as MacroPushContext);\n macroExpressions.push(...(children[1] as GlobalMacroDeclaration).macroExpressions);\n macroExpressions.push(...(children[2] as GlobalMacroBranch).macroExpressions);\n } else {\n macroExpressions.push(children[0] as MacroPushContext);\n macroExpressions.push(...(children[1] as GlobalMacroBranch).macroExpressions);\n }\n }\n }\n\n @ASTNodeDecorator(NoneTerminal.global_macro_branch)\n export class GlobalMacroBranch extends TreeNode {\n macroExpressions: MacroExpression[] = [];\n\n override init(): void {\n this.macroExpressions.length = 0;\n }\n\n override semanticAnalyze(sa: SemanticAnalyzer): void {\n const children = this.children;\n const lastNode = children[children.length - 1];\n\n const macroExpressions = this.macroExpressions;\n macroExpressions.push(children[0] as MacroPopContext | MacroElseExpression | MacroElifExpression);\n\n if (children[1] instanceof GlobalMacroDeclaration) {\n macroExpressions.push(...children[1].macroExpressions);\n }\n\n if (lastNode instanceof GlobalMacroBranch) {\n macroExpressions.push(...lastNode.macroExpressions);\n }\n\n if (children.length > 1 && lastNode instanceof MacroPopContext) {\n macroExpressions.push(lastNode);\n }\n }\n }\n\n @ASTNodeDecorator(NoneTerminal.macro_if_statement)\n export class MacroIfStatement extends TreeNode {}\n\n @ASTNodeDecorator(NoneTerminal.macro_branch)\n export class MacroBranch extends TreeNode {}\n\n @ASTNodeDecorator(NoneTerminal.macro_call_symbol)\n export class MacroCallSymbol extends TreeNode {\n referenceSymbolNames: string[] = [];\n macroName: string;\n /** True iff every `MacroDefineInfo` visible from this call site's branch\n * has a `valueAst` (i.e. was parsed via the `macro_define` CFG rule).\n * Call sites use this to skip naive type inference: an AST-form macro\n * drives the call site's type through its own value subtree, not through\n * a root of `referenceSymbolNames`. Mixed forms across branches → false,\n * fall back to legacy inference. */\n hasAstValue: boolean = false;\n /** `#define NAME(params) …` form — drives function-like vs object-like codegen. */\n isFunctionLikeMacro: boolean = false;\n /** Every visible replacement is a non-builtin identifier — assume user fn alias. */\n aliasesNonBuiltinIdent: boolean = false;\n\n override init(): void {\n this.referenceSymbolNames.length = 0;\n this.hasAstValue = false;\n this.isFunctionLikeMacro = false;\n this.aliasesNonBuiltinIdent = false;\n }\n\n override semanticAnalyze(sa: SemanticAnalyzer): void {\n const nameToken = this.children[0] as BaseToken;\n const macroName = nameToken.lexeme;\n this.macroName = macroName;\n\n // Filter `defList` to only entries reachable from this call site's\n // `#ifdef` branch (Issue #2980 nit fix). Without filtering, definitions\n // in disjoint branches conflate at the call site and pollute type\n // inference; with it, what remains is exactly what could substitute at\n // this position.\n const callSiteBranch = nameToken.branch;\n const defList = sa.macroDefineList[macroName];\n const refs = this.referenceSymbolNames;\n refs.length = 0;\n let visibleCount = 0;\n let allAst = true;\n let isFn = false;\n let allAliasNonBuiltinIdent = true;\n if (defList) {\n for (let i = 0, n = defList.length; i < n; i++) {\n const info = defList[i];\n if (!Lexer.isVisibleFrom(info.branch, callSiteBranch)) continue;\n visibleCount++;\n if (info.valueAst == null) allAst = false;\n if (info.isFunction) isFn = true;\n // Harvest references from the value AST. Legacy-form macros (no\n // `valueAst`) hold non-expression token sequences with no user\n // identifiers, so nothing to collect.\n if (info.valueAst) {\n MacroCallSymbol._collectIdentifierRefs(info.valueAst, info.params, refs);\n }\n // aliasesNonBuiltinIdent: macro replacement is a single non-builtin\n // identifier — best-effort proxy for \"this macro call site aliases a\n // user fn\", since uniform/const aliases would surface as a GLSL\n // compile error later anyway. Keyword replacements (`vec3`, `mat4`)\n // reach here with `valueAst === undefined` (opaque path), so they\n // automatically fail without an explicit keyword guard.\n if (info.isFunction || !info.valueAst) {\n allAliasNonBuiltinIdent = false;\n } else {\n const leadingIdent = ParserUtils.unwrapBareIdentifier(info.valueAst, { allowParens: false });\n const leadingChild = leadingIdent?.children[0];\n const leadingId = leadingChild instanceof BaseToken ? leadingChild.lexeme : undefined;\n if (!leadingId || BuiltinFunction.isExist(leadingId)) {\n allAliasNonBuiltinIdent = false;\n }\n }\n }\n }\n // Require *every* visible entry to be AST-form before taking the AST\n // shortcut: residual ambiguity (e.g. unmodeled `#if expr` letting both\n // forms through) falls back to legacy `referenceSymbolNames` inference\n // instead of polluting the call site with TypeAny.\n this.hasAstValue = visibleCount > 0 && allAst;\n this.isFunctionLikeMacro = isFn;\n this.aliasesNonBuiltinIdent = visibleCount > 0 && allAliasNonBuiltinIdent;\n }\n\n /** Push every leaf `VariableIdentifier`'s lexeme into `out`, skipping\n * function-like parameter names (local to the macro, not call-site refs)\n * and duplicates. */\n private static _collectIdentifierRefs(node: TreeNode, params: string[], out: string[]): void {\n if (node instanceof VariableIdentifier) {\n const child = node.children[0];\n if (child instanceof BaseToken) {\n const name = child.lexeme;\n if (params.indexOf(name) === -1 && out.indexOf(name) === -1) out.push(name);\n }\n return;\n }\n const children = node.children;\n if (!children) return;\n for (let i = 0, n = children.length; i < n; i++) {\n const c = children[i];\n if (c instanceof TreeNode) MacroCallSymbol._collectIdentifierRefs(c, params, out);\n }\n }\n }\n\n @ASTNodeDecorator(NoneTerminal.macro_call_function)\n export class MacroCallFunction extends TreeNode {\n referenceSymbolNames: string[] = [];\n macroName: string = \"\";\n hasAstValue: boolean = false;\n isFunctionLikeMacro: boolean = false;\n aliasesNonBuiltinIdent: boolean = false;\n\n override init(): void {\n this.referenceSymbolNames = [];\n this.macroName = \"\";\n this.hasAstValue = false;\n this.isFunctionLikeMacro = false;\n this.aliasesNonBuiltinIdent = false;\n }\n\n override semanticAnalyze(sa: SemanticAnalyzer): void {\n const child = this.children[0] as MacroCallSymbol;\n\n this.referenceSymbolNames = child.referenceSymbolNames;\n this.macroName = child.macroName;\n this.hasAstValue = child.hasAstValue;\n this.isFunctionLikeMacro = child.isFunctionLikeMacro;\n this.aliasesNonBuiltinIdent = child.aliasesNonBuiltinIdent;\n }\n\n override codeGen(visitor: CodeGenVisitor) {\n return this.setCache(visitor.visitMacroCallFunction(this));\n }\n }\n\n /**\n * `#define NAME [(params)] [value]` — expression-style macro.\n *\n * Expression-form macros are parsed into AST rather than kept as raw lexemes. The\n * optional `valueExpression` is an `AssignmentExpression` subtree that participates\n * in normal codegen — so `v.v_normal.xyz` inside a `#define` flows through\n * `visitPostfixExpression` just like an inline expression would, and varying\n * flattening/type inference/reference tracking all come for free.\n *\n * Semantic analysis does not resolve symbols inside the value (the definition-site\n * scope is not the call-site scope). Lookup happens lazily during codegen.\n */\n @ASTNodeDecorator(NoneTerminal.macro_define)\n export class MacroDefine extends TreeNode {\n macroName: string;\n isFunction: boolean;\n valueExpression?: Expression;\n\n override init(): void {\n this.macroName = \"\";\n this.isFunction = false;\n this.valueExpression = undefined;\n }\n\n override semanticAnalyze(sa: SemanticAnalyzer): void {\n const children = this.children;\n // children[0] is MACRO_DEFINE head token, children[1] is ID.\n this.macroName = (children[1] as BaseToken).lexeme;\n\n // If children[2] is a MACRO_DEFINE_PARAMS token, the macro is function-like\n // and its parameter list lives in that token's lexeme (e.g. \"(a, b, c)\").\n let params: string[] = [];\n let valueIdx = 2;\n if (children[2] instanceof BaseToken && (children[2] as BaseToken).type === Keyword.MACRO_DEFINE_PARAMS) {\n this.isFunction = true;\n params = ParserUtils.parseMacroParamList((children[2] as BaseToken).lexeme);\n valueIdx = 3;\n }\n\n // Grammar's macro_define value is `expression` (not `assignment_expression`),\n // so the value child is always an `Expression` wrapper — even for a single\n // assignment-expression value, which appears as `Expression > AssignmentExpression`.\n if (children[valueIdx] instanceof Expression) {\n this.valueExpression = children[valueIdx] as Expression;\n }\n\n // The Lexer already registered a regex-derived entry for this directive.\n // Upgrade that entry in place by attaching the AST subtree, rather than\n // pushing a duplicate. Match must be branch-aware: `#define X` in\n // `#ifdef A` and another `#define X` in `#else` are separate entries\n // with disjoint branch signatures, and `valueExpression` belongs to\n // whichever branch actually parsed it.\n const definingBranch = (children[1] as BaseToken).branch;\n const list = sa.macroDefineList;\n const entries = list[this.macroName];\n const sameArity = (info: MacroDefineInfo) =>\n info.isFunction === this.isFunction &&\n info.params.length === params.length &&\n info.params.every((p, i) => p === params[i]);\n const upgradable = entries?.find(\n (info) => !info.valueAst && sameArity(info) && Lexer.sameBranch(info.branch, definingBranch)\n );\n if (upgradable) {\n upgradable.valueAst = this.valueExpression;\n } else {\n // No matching preprocessor entry (lexer fed directly, no\n // `Preprocessor.parse` pass). Synthetic key based on shape is enough\n // — this path's only dedup unit is this AST-direct registration.\n const info: MacroDefineInfo = {\n isFunction: this.isFunction,\n params,\n valueAst: this.valueExpression,\n dedupKey: `${this.macroName}#ast/${this.isFunction ? params.join(\",\") : \"\"}`,\n branch: definingBranch\n };\n if (entries) entries.push(info);\n else list[this.macroName] = [info];\n }\n\n // Close the form-param scope pushed at `MACRO_DEFINE_PARAMS` shift. By\n // the time this reduce fires, every `VariableIdentifier` inside the\n // value expression has already resolved against the params. Object-like\n // macros never pushed a scope, so nothing to pop.\n if (this.isFunction) {\n sa.popScope();\n }\n }\n\n override codeGen(visitor: CodeGenVisitor): string {\n return this.setCache(visitor.visitMacroDefine(this));\n }\n }\n}\n","import { BaseToken } from \"../common/BaseToken\";\nimport { EShaderStage } from \"../common/enums/ShaderStage\";\nimport { SymbolTable } from \"../common/SymbolTable\";\nimport { GSErrorName } from \"../GSError\";\nimport { ASTNode, TreeNode } from \"../parser/AST\";\nimport { ESymbolType, SymbolInfo } from \"../parser/symbolTable\";\nimport { StructProp } from \"../parser/types\";\nimport { ShaderCompiler } from \"../ShaderCompiler\";\nimport { ShaderCompilerUtils } from \"../ShaderCompilerUtils\";\n\n/** Role of a struct type in the shader compiler's IO flattening. */\nexport type StructRole = \"varying\" | \"attribute\" | \"mrt\";\n\n/** @internal */\nexport class VisitorContext {\n private static _lookupSymbol: SymbolInfo = new SymbolInfo(\"\", null);\n private static _singleton: VisitorContext;\n static get context() {\n return this._singleton;\n }\n\n static reset() {\n if (!this._singleton) {\n this._singleton = new VisitorContext();\n }\n this._singleton.reset();\n }\n\n attributeStructs: ASTNode.StructSpecifier[] = [];\n attributeList: StructProp[] = [];\n varyingStructs: ASTNode.StructSpecifier[] = [];\n varyingList: StructProp[] = [];\n mrtStructs: ASTNode.StructSpecifier[] = [];\n mrtList: StructProp[] = [];\n\n stage: EShaderStage;\n stageEntry: string;\n\n _referencedAttributeList: Record<string, StructProp[]>;\n _referencedVaryingList: Record<string, StructProp[]>;\n _referencedMRTList: Record<string, StructProp[]>;\n _referencedGlobals: Record<string, SymbolInfo[]>;\n _referencedGlobalMacroASTs: TreeNode[] = [];\n /**\n * Maps variable names (function params, locals, and globals whose type is a\n * varying/attribute/mrt struct) to their role. Populated during stage setup and\n * used by macro-value rewriting to recognize `varName.prop` patterns that should\n * be flattened against the IO lists.\n */\n _structVarMap: Record<string, StructRole>;\n\n _passSymbolTable: SymbolTable<SymbolInfo>;\n\n reset(resetAll = true) {\n if (resetAll) {\n this.attributeStructs.length = 0;\n this.attributeList.length = 0;\n this.varyingStructs.length = 0;\n this.varyingList.length = 0;\n this.mrtStructs.length = 0;\n this.mrtList.length = 0;\n }\n\n this._referencedAttributeList = Object.create(null);\n this._referencedVaryingList = Object.create(null);\n this._referencedMRTList = Object.create(null);\n this._referencedGlobals = Object.create(null);\n this._referencedGlobalMacroASTs.length = 0;\n if (resetAll) {\n // Struct-var bindings are pass-scoped, not stage-scoped — global `#define`\n // values must see the same bindings in both the vertex and fragment outputs,\n // so we keep the map across the vertex→fragment stage transition.\n this._structVarMap = Object.create(null);\n }\n }\n\n isAttributeStruct(type: string) {\n return this.attributeStructs.findIndex((item) => item.ident!.lexeme === type) !== -1;\n }\n\n isVaryingStruct(type: string) {\n return this.varyingStructs.findIndex((item) => item.ident!.lexeme === type) !== -1;\n }\n\n isMRTStruct(type: string) {\n return this.mrtStructs.findIndex((item) => item.ident!.lexeme === type) !== -1;\n }\n\n /** Return the role of a struct type, or undefined if it isn't one of the IO roles. */\n getStructRole(typeLexeme: string): StructRole | undefined {\n if (this.isAttributeStruct(typeLexeme)) return \"attribute\";\n if (this.isVaryingStruct(typeLexeme)) return \"varying\";\n if (this.isMRTStruct(typeLexeme)) return \"mrt\";\n }\n\n /** Register a variable as holding a value of a varying/attribute/mrt struct type. */\n registerStructVar(varName: string, role: StructRole): void {\n this._structVarMap[varName] = role;\n }\n\n referenceAttribute(ident: BaseToken): Error | void {\n return this._referenceProp(\n \"attribute\",\n ident.lexeme,\n this.attributeList,\n this._referencedAttributeList,\n ident.location\n );\n }\n\n referenceVarying(ident: BaseToken): Error | void {\n return this._referenceProp(\"varying\", ident.lexeme, this.varyingList, this._referencedVaryingList, ident.location);\n }\n\n referenceMRTProp(ident: BaseToken): Error | void {\n return this._referenceProp(\"mrt\", ident.lexeme, this.mrtList, this._referencedMRTList, ident.location);\n }\n\n referenceGlobal(ident: string, type: ESymbolType): void {\n if (this._referencedGlobals[ident]) return;\n\n this._referencedGlobals[ident] = [];\n\n const lookupSymbol = VisitorContext._lookupSymbol;\n lookupSymbol.set(ident, type);\n this._passSymbolTable.getSymbols(lookupSymbol, true, this._referencedGlobals[ident]);\n }\n\n private _referenceProp(\n role: StructRole,\n name: string,\n list: StructProp[],\n refList: Record<string, StructProp[]>,\n location: any\n ): Error | void {\n if (refList[name]) return;\n const props = list.filter((item) => item.ident.lexeme === name);\n if (!props.length) {\n return ShaderCompilerUtils.createGSError(\n `referenced ${role} not found: ${name}`,\n GSErrorName.CompilationError,\n ShaderCompiler._processingPassText,\n location\n );\n }\n refList[name] = props;\n }\n}\n","import type { IPoolElement } from \"@galacean/engine-core\";\n\nexport class TempArray<T> implements IPoolElement {\n array: Array<T> = new Array();\n\n dispose(): void {\n this.array.length = 0;\n }\n}\n","import { ShaderPosition, ShaderRange } from \"../common\";\nimport { BaseToken } from \"../common/BaseToken\";\nimport { GSErrorName } from \"../GSError\";\nimport { ASTNode, TreeNode } from \"../parser/AST\";\nimport { NoneTerminal } from \"../parser/GrammarSymbol\";\nimport { ESymbolType, FnSymbol } from \"../parser/symbolTable\";\nimport { NodeChild, StructProp } from \"../parser/types\";\nimport { ParserUtils } from \"../ParserUtils\";\nimport { ShaderCompiler } from \"../ShaderCompiler\";\nimport { StructRole, VisitorContext } from \"./VisitorContext\";\n// #if _VERBOSE\nimport { GSError } from \"../GSError\";\n// #endif\nimport { ReturnableObjectPool } from \"@galacean/engine-core\";\nimport { Keyword } from \"../common/enums/Keyword\";\nimport { TempArray } from \"../TempArray\";\nimport { ICodeSegment } from \"./types\";\n\n/**\n * @internal\n * The code generator\n */\nexport abstract class CodeGenVisitor {\n // #if _VERBOSE\n readonly errors: Error[] = [];\n // #endif\n\n abstract getAttributeProp(prop: StructProp): string;\n abstract getVaryingProp(prop: StructProp): string;\n abstract getMRTProp(prop: StructProp): string;\n\n protected static _tmpArrayPool = new ReturnableObjectPool(TempArray<string>, 10);\n\n defaultCodeGen(children: NodeChild[]) {\n const pool = CodeGenVisitor._tmpArrayPool;\n let ret = pool.get();\n ret.dispose();\n for (const child of children) {\n if (child instanceof BaseToken) {\n // Legacy opaque `#define` lexemes carry the directive verbatim — expression-style defines go through the AST path.\n ret.array.push(child.lexeme);\n } else {\n ret.array.push(child.codeGen(this));\n }\n }\n pool.return(ret);\n return ret.array.join(\" \");\n }\n\n visitPostfixExpression(node: ASTNode.PostfixExpression): string {\n const children = node.children;\n const derivationLength = children.length;\n const context = VisitorContext.context;\n\n if (derivationLength === 3) {\n const postExpr = children[0] as ASTNode.PostfixExpression;\n const prop = children[2];\n\n if (prop instanceof BaseToken) {\n // Struct role priority: `_structVarMap` by bare root ident (covers forward-declared types like `Varyings o;`),\n // then AST static type (normal path when `semanticAnalyze` resolved `postExpr.type`).\n let role: StructRole | undefined;\n const directRoot = ParserUtils.extractDirectIdentLexeme(postExpr);\n if (directRoot) role = context._structVarMap[directRoot];\n if (!role) role = context.getStructRole(<string>postExpr.type);\n\n if (role) {\n const error =\n role === \"attribute\"\n ? context.referenceAttribute(prop)\n : role === \"varying\"\n ? context.referenceVarying(prop)\n : context.referenceMRTProp(prop);\n // #if _VERBOSE\n if (error) this.errors.push(<GSError>error);\n // #endif\n return prop.lexeme;\n }\n\n return `${postExpr.codeGen(this)}.${prop.lexeme}`;\n } else {\n return `${postExpr.codeGen(this)}.${prop.codeGen(this)}`;\n }\n } else if (derivationLength === 4) {\n const identNode = children[0] as ASTNode.PostfixExpression;\n const indexNode = children[2] as ASTNode.Expression;\n const identLexeme = identNode.codeGen(this);\n const indexLexeme = indexNode.codeGen(this);\n if (identLexeme === \"gl_FragData\") {\n this._reportError(identNode.location, \"Please use MRT struct instead of gl_FragData.\");\n }\n return `${identLexeme}[${indexLexeme}]`;\n }\n\n return this.defaultCodeGen(node.children);\n }\n\n visitVariableIdentifier(node: ASTNode.VariableIdentifier): string {\n for (let name of node.referenceGlobalSymbolNames) {\n VisitorContext.context.referenceGlobal(name, ESymbolType.Any);\n }\n\n return node.getLexeme(this);\n }\n\n visitFunctionCall(node: ASTNode.FunctionCall): string {\n const call = node.children[0] as ASTNode.FunctionCallGeneric;\n if (call.fnSymbol instanceof FnSymbol) {\n VisitorContext.context.referenceGlobal(call.fnSymbol.ident, ESymbolType.FN);\n\n const paramList = call.children[2];\n if (paramList instanceof ASTNode.FunctionCallParameterList) {\n const astNodes = paramList.paramNodes;\n const paramInfoList = call.fnSymbol.astNode.protoType.parameterList;\n\n const context = VisitorContext.context;\n const params = astNodes.filter((_, i) => {\n const typeInfo = paramInfoList?.[i]?.typeInfo;\n // Drop struct-IO parameters (attribute/varying/mrt) — they're flattened\n // into top-level declarations and no longer exist as function-call args.\n return !typeInfo || !context.getStructRole(typeInfo.typeLexeme);\n });\n\n let paramsCode = \"\";\n\n for (let i = 0, length = params.length; i < length; i++) {\n const astNode = params[i];\n const code = astNode.codeGen(this);\n if (astNode instanceof ASTNode.MacroCallArgBlock || i === 0) {\n paramsCode += code;\n } else {\n paramsCode += `, ${code}`;\n }\n }\n\n return `${call.fnSymbol.ident}(${paramsCode})`;\n }\n }\n\n return this.defaultCodeGen(node.children);\n }\n\n visitMacroCallFunction(node: ASTNode.MacroCallFunction): string {\n const children = node.children;\n const paramList = children[2];\n if (paramList instanceof ASTNode.FunctionCallParameterList) {\n const astNodes = paramList.paramNodes;\n const context = VisitorContext.context;\n\n // Drop bare IO-struct args only when the macro aliases a user fn (whose\n // formal was flattened). All other shapes preserve args verbatim.\n let params: typeof astNodes;\n if (node.isFunctionLikeMacro || !node.aliasesNonBuiltinIdent) {\n params = astNodes;\n } else {\n params = astNodes.filter((arg) => {\n if (arg instanceof ASTNode.AssignmentExpression) {\n const variableParam = ParserUtils.unwrapBareIdentifier(arg, { allowParens: false });\n if (\n variableParam &&\n typeof variableParam.typeInfo === \"string\" &&\n context.getStructRole(variableParam.typeInfo)\n ) {\n return false;\n }\n }\n return true;\n });\n }\n\n let paramsCode = \"\";\n for (let i = 0, length = params.length; i < length; i++) {\n const argNode = params[i];\n const code = argNode.codeGen(this);\n\n if (argNode instanceof ASTNode.MacroCallArgBlock || i === 0) {\n paramsCode += code;\n } else {\n paramsCode += `, ${code}`;\n }\n }\n\n return `${node.macroName}(${paramsCode})`;\n } else {\n return this.defaultCodeGen(node.children);\n }\n }\n\n visitStatementList(node: ASTNode.StatementList): string {\n const children = node.children as TreeNode[];\n if (children.length === 1) {\n return children[0].codeGen(this);\n } else {\n return `${children[0].codeGen(this)}\\n${children[1].codeGen(this)}`;\n }\n }\n\n /**\n * Code-generate a `#define` macro parsed as expression AST. Produces a `#define`\n * directive whose value is the AST-rewritten string — so varying flattening\n * happens naturally via `visitPostfixExpression` inside the AST walk.\n */\n visitMacroDefine(node: ASTNode.MacroDefine): string {\n // For function-like macros, preserve the original `(params)` lexeme verbatim —\n // the parameter list is user-authored text that shouldn't be canonicalized.\n let paramsLexeme = \"\";\n if (node.isFunction) {\n const paramsToken = node.children[2];\n if (paramsToken instanceof BaseToken) paramsLexeme = paramsToken.lexeme;\n }\n const valueCode = node.valueExpression ? node.valueExpression.codeGen(this) : \"\";\n // Newlines around the directive keep `#` at the start of its physical line per\n // GLSL ES 3.0 §3.4, regardless of how surrounding tokens are joined.\n return `\\n#define ${node.macroName}${paramsLexeme}${valueCode ? \" \" + valueCode : \"\"}\\n`;\n }\n\n visitSingleDeclaration(node: ASTNode.SingleDeclaration): string {\n const type = node.typeSpecifier.type;\n if (typeof type === \"string\") {\n VisitorContext.context.referenceGlobal(type, ESymbolType.STRUCT);\n }\n return this.defaultCodeGen(node.children);\n }\n\n visitGlobalVariableDeclaration(node: ASTNode.VariableDeclaration): string {\n const children = node.children;\n const fullType = children[0];\n if (fullType instanceof ASTNode.FullySpecifiedType && fullType.typeSpecifier.isCustom) {\n const context = VisitorContext.context;\n // Global variables whose declared type is a varying/attribute/mrt struct\n // (e.g. `Varyings o;`) are not emitted as `uniform`. The variable itself is\n // already registered in `_structVarMap` by the pre-pass in\n // `GLESVisitor._collectAllStructVars`, so `visitPostfixExpression` can\n // flatten `o.field` at macro-value codegen time.\n if (context.getStructRole(fullType.typeSpecifier.lexeme)) {\n return \"\";\n }\n context.referenceGlobal(<string>fullType.type, ESymbolType.STRUCT);\n }\n return `uniform ${this.defaultCodeGen(children)}`;\n }\n\n visitDeclaration(node: ASTNode.Declaration): string {\n const { context } = VisitorContext;\n const children = node.children;\n const child = children[0];\n\n if (child instanceof ASTNode.InitDeclaratorList) {\n const typeLexeme = child.typeInfo.typeLexeme;\n if (context.isVaryingStruct(typeLexeme) || context.isMRTStruct(typeLexeme)) return \"\";\n }\n return this.defaultCodeGen(children);\n }\n\n visitFunctionParameterList(node: ASTNode.FunctionParameterList): string {\n const context = VisitorContext.context;\n const params = node.parameterInfoList.filter(\n (item) => !item.typeInfo || !context.getStructRole(item.typeInfo.typeLexeme)\n );\n\n let out = \"\";\n for (let i = 0, length = params.length; i < length; i++) {\n const item = params[i];\n const astNode = item.astNode;\n const code = astNode.codeGen(this);\n if (astNode instanceof ASTNode.MacroParamBlock || i === 0) {\n out += code;\n } else {\n out += `, ${code}`;\n }\n }\n\n return out;\n }\n\n visitFunctionHeader(node: ASTNode.FunctionHeader): string {\n const returnType = node.returnType.typeSpecifier.lexeme;\n if (VisitorContext.context.isVaryingStruct(returnType)) {\n return `void ${node.ident.lexeme}(`;\n }\n return this.defaultCodeGen(node.children);\n }\n\n visitJumpStatement(node: ASTNode.JumpStatement): string {\n const children = node.children;\n const cmd = children[0] as BaseToken;\n if (cmd.type === Keyword.RETURN) {\n const expr = children[1];\n if (expr instanceof ASTNode.Expression) {\n const returnVar = ParserUtils.unwrapNodeByType<ASTNode.VariableIdentifier>(\n expr,\n NoneTerminal.variable_identifier\n );\n if (VisitorContext.context.isVaryingStruct(<string>returnVar?.typeInfo)) {\n return \"\";\n }\n const returnFnCall = ParserUtils.unwrapNodeByType<ASTNode.FunctionCall>(expr, NoneTerminal.function_call);\n if (VisitorContext.context.isVaryingStruct(<string>returnFnCall?.type)) {\n return `${expr.codeGen(this)};`;\n }\n }\n }\n return this.defaultCodeGen(children);\n }\n\n visitFunctionIdentifier(node: ASTNode.FunctionIdentifier): string {\n return this.defaultCodeGen(node.children);\n }\n\n visitStructSpecifier(node: ASTNode.StructSpecifier): string {\n const context = VisitorContext.context;\n const { varyingStructs, attributeStructs, mrtStructs } = context;\n const isVaryingStruct = varyingStructs.indexOf(node) !== -1;\n const isAttributeStruct = attributeStructs.indexOf(node) !== -1;\n const isMRTStruct = mrtStructs.indexOf(node) !== -1;\n\n if (isVaryingStruct && isAttributeStruct) {\n this._reportError(node.location, \"cannot use same struct as Varying and Attribute\");\n }\n\n if (isVaryingStruct && isMRTStruct) {\n this._reportError(node.location, \"cannot use same struct as Varying and MRT\");\n }\n\n if (isAttributeStruct && isMRTStruct) {\n this._reportError(node.location, \"cannot use same struct as Attribute and MRT\");\n }\n\n if (isVaryingStruct || isAttributeStruct || isMRTStruct) {\n let result: ICodeSegment[] = [];\n\n result.push(\n ...node.macroExpressions.map((item) => ({\n text: item instanceof BaseToken ? item.lexeme : item.codeGen(this),\n index: item.location.start.index\n }))\n );\n\n for (const prop of node.propList) {\n const name = prop.ident.lexeme;\n if (isVaryingStruct && context._referencedVaryingList[name]?.indexOf(prop) >= 0) {\n result.push({\n text: `${this.getVaryingProp(prop)}\\n`,\n index: prop.ident.location.start.index\n });\n } else if (isAttributeStruct && context._referencedAttributeList[name]?.indexOf(prop) >= 0) {\n result.push({\n text: `${this.getAttributeProp(prop)}\\n`,\n index: prop.ident.location.start.index\n });\n } else if (isMRTStruct && context._referencedMRTList[name]?.indexOf(prop) >= 0) {\n result.push({\n text: `${this.getMRTProp(prop)}\\n`,\n index: prop.ident.location.start.index\n });\n }\n }\n\n const text = result\n .sort((a, b) => a.index - b.index)\n .map((item) => item.text)\n .join(\"\");\n\n return text;\n } else {\n return this.defaultCodeGen(node.children);\n }\n }\n\n visitFunctionDefinition(fnNode: ASTNode.FunctionDefinition): string {\n const fnName = fnNode.protoType.ident.lexeme;\n const context = VisitorContext.context;\n\n if (fnName == context.stageEntry) {\n const statements = fnNode.statements.codeGen(this);\n return `void main() ${statements}`;\n } else {\n return this.defaultCodeGen(fnNode.children);\n }\n }\n\n protected _reportError(loc: ShaderRange | ShaderPosition, message: string): void {\n // #if _VERBOSE\n this.errors.push(new GSError(GSErrorName.CompilationError, message, loc, ShaderCompiler._processingPassText));\n // #else\n console.error(message);\n // #endif\n }\n}\n","import type { IShaderInfo } from \"@galacean/engine-design\";\nimport { BaseToken } from \"../common/BaseToken\";\nimport { EShaderStage } from \"../common/enums/ShaderStage\";\nimport { Keyword } from \"../common/enums/Keyword\";\nimport { ASTNode, TreeNode } from \"../parser/AST\";\nimport { NodeChild } from \"../parser/types\";\nimport { ShaderData } from \"../parser/ShaderInfo\";\nimport { ESymbolType, FnSymbol, StructSymbol, SymbolInfo } from \"../parser/symbolTable\";\nimport { CodeGenVisitor } from \"./CodeGenVisitor\";\nimport { ICodeSegment } from \"./types\";\nimport { StructRole, VisitorContext } from \"./VisitorContext\";\n\n/**\n * @internal\n */\nexport abstract class GLESVisitor extends CodeGenVisitor {\n private _globalCodeArray: ICodeSegment[] = [];\n private static _lookupSymbol: SymbolInfo = new SymbolInfo(\"\", null);\n private static _serializedGlobalKey = new Set();\n\n reset(): void {\n const { _globalCodeArray: globalCodeArray } = this;\n globalCodeArray.length = 0;\n GLESVisitor._serializedGlobalKey.clear();\n }\n\n getOtherGlobal(data: ShaderData, out: ICodeSegment[]): void {\n for (const precision of data.globalPrecisions) {\n out.push({ text: precision.codeGen(this), index: precision.location.start.index });\n }\n }\n\n visitShaderProgram(node: ASTNode.GLShaderProgram, vertexEntry: string, fragmentEntry: string): IShaderInfo {\n // #if _VERBOSE\n this.errors.length = 0;\n // #endif\n VisitorContext.reset();\n this.reset();\n\n const shaderData = node.shaderData;\n const context = VisitorContext.context;\n context._passSymbolTable = shaderData.symbolTable;\n\n const outerGlobalMacroDeclarations = shaderData.getOuterGlobalMacroDeclarations();\n\n // `_structVarMap` must span both stages so global `#define` references rewrite consistently across vertex/fragment outputs.\n this._collectAllStructVars(vertexEntry, fragmentEntry);\n\n return {\n vertex: this._vertexMain(vertexEntry, shaderData, outerGlobalMacroDeclarations),\n fragment: this._fragmentMain(fragmentEntry, shaderData, outerGlobalMacroDeclarations)\n };\n }\n\n /** Populate `_structVarMap` for varying/attribute/mrt-typed variables across both stages before codegen. */\n private _collectAllStructVars(vertexEntry: string, fragmentEntry: string): void {\n const context = VisitorContext.context;\n const lookupSymbol = GLESVisitor._lookupSymbol;\n const symbolTable = context._passSymbolTable;\n\n // Roles from entry signatures: vertex param[0]=attribute, return=varying; fragment param[0]=varying, return=mrt.\n const structRoles: Record<string, StructRole> = Object.create(null);\n\n const addEntryRoles = (entry: string, paramRole: StructRole, returnRole: StructRole): FnSymbol[] => {\n lookupSymbol.set(entry, ESymbolType.FN);\n const fns = <FnSymbol[]>symbolTable.getSymbols(lookupSymbol, true, []);\n for (const fn of fns) {\n const proto = fn.astNode.protoType;\n const param0 = proto.parameterList?.[0];\n if (param0 && typeof param0.typeInfo?.type === \"string\") {\n structRoles[param0.typeInfo.typeLexeme] = paramRole;\n }\n if (typeof proto.returnType.type === \"string\") {\n structRoles[<string>proto.returnType.type] = returnRole;\n }\n }\n return fns;\n };\n\n const entryFns = addEntryRoles(vertexEntry, \"attribute\", \"varying\").concat(\n addEntryRoles(fragmentEntry, \"varying\", \"mrt\")\n );\n\n const registerByType = (typeLexeme: string | undefined, varName: string): void => {\n if (!typeLexeme) return;\n const role = structRoles[typeLexeme];\n if (role) context.registerStructVar(varName, role);\n };\n\n const walkLocals = (node: TreeNode): void => {\n for (const child of node.children) {\n if (child instanceof ASTNode.InitDeclaratorList) {\n const typeLexeme = child.typeInfo?.typeLexeme;\n if (typeLexeme && structRoles[typeLexeme]) {\n this._extractLocalVarNames(child, context, structRoles[typeLexeme]);\n }\n } else if (child instanceof TreeNode) {\n walkLocals(child);\n }\n }\n };\n\n for (const fn of entryFns) {\n const proto = fn.astNode.protoType;\n if (proto.parameterList) {\n for (const param of proto.parameterList) {\n if (param.ident && typeof param.typeInfo?.type === \"string\") {\n registerByType(param.typeInfo.typeLexeme, param.ident.lexeme);\n }\n }\n }\n walkLocals(fn.astNode.statements);\n }\n\n // Register module-level globals whose type carries a role (e.g. `Varyings o;`).\n symbolTable.forEach((sym) => {\n if (sym.type === ESymbolType.VAR) registerByType(sym.dataType?.typeLexeme, sym.ident);\n });\n }\n\n private _vertexMain(\n entry: string,\n data: ShaderData,\n outerGlobalMacroDeclarations: ASTNode.GlobalDeclaration[]\n ): string {\n const context = VisitorContext.context;\n context.stage = EShaderStage.VERTEX;\n context.stageEntry = entry;\n\n const lookupSymbol = GLESVisitor._lookupSymbol;\n const symbolTable = data.symbolTable;\n lookupSymbol.set(entry, ESymbolType.FN);\n const fnSymbols = <FnSymbol[]>symbolTable.getSymbols(lookupSymbol, true, []);\n if (!fnSymbols.length) throw `no entry function found: ${entry}`;\n\n const { attributeStructs, attributeList, varyingStructs, varyingList } = context;\n fnSymbols.forEach((fnSymbol) => {\n const fnNode = fnSymbol.astNode;\n const returnType = fnNode.protoType.returnType;\n\n if (typeof returnType.type === \"string\") {\n lookupSymbol.set(returnType.type, ESymbolType.STRUCT);\n const varyingSymbols = <StructSymbol[]>symbolTable.getSymbols(lookupSymbol, true, []);\n if (!varyingSymbols.length) {\n this._reportError(returnType.location, `invalid varying struct: \"${returnType.type}\".`);\n } else {\n for (let i = 0; i < varyingSymbols.length; i++) {\n const varyingSymbol = varyingSymbols[i];\n const astNode = varyingSymbol.astNode;\n varyingStructs.push(astNode);\n for (const prop of astNode.propList) {\n varyingList.push(prop);\n }\n }\n }\n } else if (returnType.type !== Keyword.VOID) {\n this._reportError(returnType.location, \"vertex main entry can only return struct or void.\");\n }\n\n const paramList = fnNode.protoType.parameterList;\n const attributeParam = paramList?.[0];\n if (attributeParam) {\n const attributeType = attributeParam.typeInfo.type;\n if (typeof attributeType === \"string\") {\n lookupSymbol.set(attributeType, ESymbolType.STRUCT);\n const attributeSymbols = <StructSymbol[]>symbolTable.getSymbols(lookupSymbol, true, []);\n if (!attributeSymbols.length) {\n this._reportError(attributeParam.astNode.location, `invalid attribute struct: \"${attributeType}\".`);\n } else {\n for (let i = 0; i < attributeSymbols.length; i++) {\n const attributeSymbol = attributeSymbols[i];\n const astNode = attributeSymbol.astNode;\n attributeStructs.push(astNode);\n for (const prop of astNode.propList) {\n attributeList.push(prop);\n }\n }\n }\n }\n }\n });\n\n // Pre-walk global `#define` values so referenced struct properties emit `attribute`/`varying` declarations.\n this._preRegisterGlobalMacroRefs(outerGlobalMacroDeclarations);\n\n const globalCodeArray = this._globalCodeArray;\n VisitorContext.context.referenceGlobal(entry, ESymbolType.FN);\n\n this._getGlobalSymbol(globalCodeArray);\n this._getCustomStruct(context.attributeStructs, globalCodeArray);\n this._getCustomStruct(context.varyingStructs, globalCodeArray);\n this._getGlobalMacroDeclarations(outerGlobalMacroDeclarations, globalCodeArray);\n this.getOtherGlobal(data, globalCodeArray);\n\n const globalCode = globalCodeArray\n .sort((a, b) => a.index - b.index)\n .map((item) => item.text)\n .join(\"\\n\");\n\n VisitorContext.context.reset(false);\n this.reset();\n\n return globalCode;\n }\n\n private _fragmentMain(\n entry: string,\n data: ShaderData,\n outerGlobalMacroStatements: ASTNode.GlobalDeclaration[]\n ): string {\n const context = VisitorContext.context;\n context.stage = EShaderStage.FRAGMENT;\n context.stageEntry = entry;\n\n const lookupSymbol = GLESVisitor._lookupSymbol;\n const { symbolTable } = data;\n lookupSymbol.set(entry, ESymbolType.FN);\n const fnSymbols = <FnSymbol[]>symbolTable.getSymbols(lookupSymbol, true, []);\n if (!fnSymbols?.length) throw `no entry function found: ${entry}`;\n\n // Fragment varying info inherits from vertex stage (preserved across `context.reset(false)`).\n fnSymbols.forEach((fnSymbol) => {\n const fnNode = fnSymbol.astNode;\n const { returnStatement } = fnNode;\n\n if (returnStatement) {\n returnStatement.isFragReturnStatement = true;\n }\n\n const { type: returnDataType, location: returnLocation } = fnNode.protoType.returnType;\n if (typeof returnDataType === \"string\") {\n lookupSymbol.set(returnDataType, ESymbolType.STRUCT);\n const mrtSymbols = <StructSymbol[]>symbolTable.getSymbols(lookupSymbol, true, []);\n if (!mrtSymbols.length) {\n this._reportError(returnLocation, `invalid mrt struct: ${returnDataType}`);\n } else {\n for (let i = 0; i < mrtSymbols.length; i++) {\n const mrtSymbol = mrtSymbols[i];\n const astNode = mrtSymbol.astNode;\n context.mrtStructs.push(astNode);\n for (const prop of astNode.propList) {\n context.mrtList.push(prop);\n }\n }\n }\n } else if (returnDataType !== Keyword.VOID && returnDataType !== Keyword.VEC4) {\n this._reportError(returnLocation, \"fragment main entry can only return struct or vec4.\");\n }\n });\n\n // `_structVarMap` is already populated in `visitShaderProgram` with both stages'\n // variables; just pre-walk macro refs so struct codegen sees the references.\n this._preRegisterGlobalMacroRefs(outerGlobalMacroStatements);\n\n const globalCodeArray = this._globalCodeArray;\n VisitorContext.context.referenceGlobal(entry, ESymbolType.FN);\n\n this._getGlobalSymbol(globalCodeArray);\n this._getCustomStruct(context.varyingStructs, globalCodeArray);\n this._getCustomStruct(context.mrtStructs, globalCodeArray);\n this._getGlobalMacroDeclarations(outerGlobalMacroStatements, globalCodeArray);\n this.getOtherGlobal(data, globalCodeArray);\n\n const globalCode = globalCodeArray\n .sort((a, b) => a.index - b.index)\n .map((item) => item.text)\n .join(\"\\n\");\n\n context.reset();\n this.reset();\n\n return globalCode;\n }\n\n private _extractLocalVarNames(node: ASTNode.InitDeclaratorList, context: VisitorContext, role: StructRole): void {\n const children = node.children;\n if (children.length === 1) {\n const singleDecl = children[0] as ASTNode.SingleDeclaration;\n const identChildren = singleDecl.children;\n if (identChildren.length >= 2 && identChildren[1] instanceof BaseToken) {\n context.registerStructVar(identChildren[1].lexeme, role);\n }\n } else if (children.length >= 3) {\n const initDeclList = children[0];\n if (initDeclList instanceof ASTNode.InitDeclaratorList) {\n this._extractLocalVarNames(initDeclList, context, role);\n }\n if (children[2] instanceof BaseToken) {\n context.registerStructVar((children[2] as BaseToken).lexeme, role);\n }\n }\n }\n\n /**\n * Pre-walk `#define` values in global macro declarations and register any\n * `structVar.prop` member accesses as referenced struct props. This must run before\n * struct codegen emits the declaration lists (`attribute …`, `varying …`, `MRT …`),\n * otherwise properties used only from macros would be missing from the output.\n */\n private _preRegisterGlobalMacroRefs(macros: ASTNode.GlobalDeclaration[]): void {\n for (const macro of macros) {\n this._walkMacroDefineTokens(macro.children);\n }\n }\n\n private _walkMacroDefineTokens(children: NodeChild[]): void {\n for (const child of children) {\n if (child instanceof ASTNode.MacroDefine) {\n // Codegen the value once so the enclosed `visitPostfixExpression` calls\n // register their struct-prop references. The returned string is discarded\n // — the real emit happens later in `_getGlobalMacroDeclarations`.\n if (child.valueExpression) child.valueExpression.codeGen(this);\n } else if (child instanceof TreeNode) {\n this._walkMacroDefineTokens(child.children);\n }\n }\n }\n\n private _getGlobalSymbol(out: ICodeSegment[]): void {\n const context = VisitorContext.context;\n const { _referencedGlobals } = context;\n const lastLength = Object.keys(_referencedGlobals).length;\n if (lastLength === 0) return;\n\n for (const ident in _referencedGlobals) {\n if (GLESVisitor._serializedGlobalKey.has(ident)) continue;\n GLESVisitor._serializedGlobalKey.add(ident);\n\n const symbols = _referencedGlobals[ident];\n for (let i = 0, n = symbols.length; i < n; i++) {\n const sm = symbols[i];\n const codeGenResult = sm.astNode.codeGen(this);\n if (!codeGenResult) continue;\n const text = codeGenResult + (sm.type === ESymbolType.VAR ? \";\" : \"\");\n if (!sm.isInMacroBranch) {\n out.push({\n text,\n index: sm.astNode.location.start.index\n });\n }\n }\n }\n\n if (Object.keys(_referencedGlobals).length !== lastLength) {\n this._getGlobalSymbol(out);\n }\n }\n\n private _getCustomStruct(structNodes: ASTNode.StructSpecifier[], out: ICodeSegment[]): void {\n for (const node of structNodes) {\n const text = node.codeGen(this);\n\n if (!node.isInMacroBranch) {\n out.push({ text, index: node.location.start.index });\n }\n }\n }\n\n private _getGlobalMacroDeclarations(macros: ASTNode.GlobalDeclaration[], out: ICodeSegment[]): void {\n const context = VisitorContext.context;\n const referencedGlobals = context._referencedGlobals;\n const referencedGlobalMacroASTs = context._referencedGlobalMacroASTs;\n referencedGlobalMacroASTs.length = 0;\n\n for (const symbols of Object.values(referencedGlobals)) {\n for (const symbol of symbols) {\n if (symbol.isInMacroBranch) {\n referencedGlobalMacroASTs.push(symbol.astNode);\n }\n }\n }\n\n for (const macro of macros) {\n let text: string;\n const child = macro.children[0];\n\n if (child instanceof ASTNode.GlobalMacroIfStatement) {\n let result: ICodeSegment[] = [];\n result.push(\n ...macro.macroExpressions.map((item) => ({\n text: item instanceof BaseToken ? item.lexeme : item.codeGen(this),\n index: item.location.start.index\n }))\n );\n\n this._visitGlobalMacroIfStatement(child, result);\n\n text = result\n .sort((a, b) => a.index - b.index)\n .map((item) => item.text)\n .join(\"\\n\");\n } else if (child instanceof BaseToken && child.type === Keyword.MACRO_DEFINE_EXPRESSION) {\n // Legacy opaque `#define` — its lexeme is the complete directive text,\n // newlines included; emit verbatim.\n text = child.lexeme;\n } else {\n text = macro.codeGen(this);\n }\n\n out.push({\n text,\n index: macro.location.start.index\n });\n }\n }\n\n private _visitGlobalMacroIfStatement(node: TreeNode, out: ICodeSegment[]): void {\n const children = node.children;\n for (let i = 0; i < children.length; i++) {\n const child = children[i];\n if (child instanceof ASTNode.PrecisionSpecifier) {\n out.push({\n text: child.codeGen(this),\n index: child.location.start.index\n });\n } else if (child instanceof ASTNode.FunctionDefinition) {\n if (VisitorContext.context._referencedGlobalMacroASTs.indexOf(child) !== -1) {\n out.push({\n text: child.getCache(), // code has generated in `_getGlobalSymbol`\n index: child.location.start.index\n });\n }\n } else if (child instanceof ASTNode.StructSpecifier) {\n const context = VisitorContext.context;\n const stage = context.stage;\n if (\n VisitorContext.context._referencedGlobalMacroASTs.indexOf(child) !== -1 ||\n (stage === EShaderStage.VERTEX\n ? context.isAttributeStruct(child.ident?.lexeme) || context.isVaryingStruct(child.ident?.lexeme)\n : context.isVaryingStruct(child.ident?.lexeme) || context.isMRTStruct(child.ident?.lexeme))\n ) {\n out.push({\n text: child.getCache(), // code has generated in `_getGlobalSymbol` or `_getCustomStruct`\n index: child.location.start.index\n });\n }\n } else if (child instanceof ASTNode.VariableDeclarationList) {\n const variableDeclarations = child.variableDeclarations;\n for (let i = 0; i < variableDeclarations.length; i++) {\n const variableDeclaration = variableDeclarations[i];\n if (VisitorContext.context._referencedGlobalMacroASTs.indexOf(variableDeclaration) !== -1) {\n out.push({\n text: variableDeclaration.getCache() + \";\", // code has generated in `_getGlobalSymbol`\n index: variableDeclaration.location.start.index\n });\n }\n }\n }\n\n if (child instanceof TreeNode) {\n this._visitGlobalMacroIfStatement(child, out);\n }\n }\n }\n}\n","import { BaseToken } from \"../common/BaseToken\";\nimport { ASTNode } from \"../parser/AST\";\nimport { StructProp } from \"../parser/types\";\nimport { GLESVisitor } from \"./GLESVisitor\";\nimport { VisitorContext } from \"./VisitorContext\";\n\nexport class GLES100Visitor extends GLESVisitor {\n private static _singleton: GLES100Visitor;\n static getVisitor(): GLES100Visitor {\n if (!this._singleton) {\n this._singleton = new GLES100Visitor();\n }\n return this._singleton;\n }\n\n override getAttributeProp(prop: StructProp): string {\n return `attribute ${prop.typeInfo.typeLexeme} ${prop.ident.lexeme};`;\n }\n\n override getVaryingProp(prop: StructProp): string {\n return `varying ${prop.typeInfo.typeLexeme} ${prop.ident.lexeme};`;\n }\n\n override getMRTProp(): string {\n return null;\n }\n\n override visitPostfixExpression(node: ASTNode.PostfixExpression): string {\n const { children } = node;\n const postExpr = children[0];\n const { context } = VisitorContext;\n if (postExpr instanceof ASTNode.PostfixExpression && context.isMRTStruct(<string>postExpr.type)) {\n const propReferenced = children[2] as BaseToken;\n const prop = context.mrtList.find((item) => item.ident.lexeme === propReferenced.lexeme);\n if (!prop) {\n this._reportError(propReferenced.location, `not found mrt property: ${propReferenced.lexeme}`);\n return \"\";\n }\n return `gl_FragData[${prop.mrtIndex!}]`;\n }\n return super.visitPostfixExpression(node);\n }\n\n override visitJumpStatement(node: ASTNode.JumpStatement): string {\n if (node.isFragReturnStatement) {\n if (VisitorContext.context.mrtStructs.length) {\n return \"\";\n }\n const expression = node.children[1] as ASTNode.Expression;\n return `gl_FragColor = ${expression.codeGen(this)};`;\n }\n return super.visitJumpStatement(node);\n }\n}\n","import { EShaderStage } from \"../common/enums/ShaderStage\";\nimport { ASTNode } from \"../parser/AST\";\nimport { ShaderData } from \"../parser/ShaderInfo\";\nimport { StructProp } from \"../parser/types\";\nimport { GLESVisitor } from \"./GLESVisitor\";\nimport { ICodeSegment } from \"./types\";\nimport { VisitorContext } from \"./VisitorContext\";\n\nconst V3_GL_FragColor = \"GS_glFragColor\";\n\nexport class GLES300Visitor extends GLESVisitor {\n private static _singleton: GLES300Visitor;\n static getVisitor(): GLES300Visitor {\n if (!this._singleton) {\n this._singleton = new GLES300Visitor();\n }\n return this._singleton;\n }\n\n private _otherCodeArray: ICodeSegment[] = [];\n private _fragColorVariableRegistered = false;\n\n override reset(): void {\n super.reset();\n\n this._otherCodeArray.length = 0;\n this._fragColorVariableRegistered = false;\n }\n\n override getOtherGlobal(data: ShaderData, out: ICodeSegment[]): void {\n super.getOtherGlobal(data, out);\n\n for (let i = 0, n = this._otherCodeArray.length; i < n; i++) {\n out.push(this._otherCodeArray[i]);\n }\n }\n\n override getAttributeProp(prop: StructProp): string {\n return `in ${prop.typeInfo.typeLexeme} ${prop.ident.lexeme};`;\n }\n\n override getVaryingProp(prop: StructProp): string {\n const qualifier = VisitorContext.context.stage === EShaderStage.FRAGMENT ? \"in\" : \"out\";\n return `${qualifier} ${prop.typeInfo.typeLexeme} ${prop.ident.lexeme};`;\n }\n\n override getMRTProp(prop: StructProp): string {\n return `layout(location = ${prop.mrtIndex}) out vec4 ${prop.ident.lexeme};`;\n }\n\n override visitFunctionIdentifier(node: ASTNode.FunctionIdentifier): string {\n const children = node.children;\n const typeSpecifier = children[0] as ASTNode.TypeSpecifier;\n if (typeSpecifier.children.length !== 1) {\n return this.defaultCodeGen(children);\n }\n let ident = node.lexeme;\n switch (node.ident) {\n case \"texture2D\":\n case \"textureCube\":\n ident = \"texture\";\n break;\n case \"texture2DProj\":\n ident = \"textureProj\";\n break;\n case \"texture2DLodEXT\":\n case \"textureCubeLodEXT\":\n ident = \"textureLod\";\n break;\n case \"texture2DGradEXT\":\n case \"textureCubeGradEXT\":\n ident = \"textureGrad\";\n break;\n case \"texture2DProjLodEXT\":\n ident = \"textureProjLod\";\n break;\n case \"texture2DProjGradEXT\":\n ident = \"textureProjGrad\";\n break;\n case \"gl_FragDepthEXT\":\n ident = \"gl_FragDepth\";\n break;\n }\n return ident;\n }\n\n override visitVariableIdentifier(node: ASTNode.VariableIdentifier): string {\n const { context } = VisitorContext;\n if (context.stage === EShaderStage.FRAGMENT && node.getLexeme(this) === \"gl_FragColor\") {\n if (context.mrtStructs.length) {\n this._reportError(node.location, \"gl_FragColor cannot be used with MRT (Multiple Render Targets).\");\n return;\n }\n this._registerFragColorVariable();\n return V3_GL_FragColor;\n }\n return super.visitVariableIdentifier(node);\n }\n\n override visitJumpStatement(node: ASTNode.JumpStatement): string {\n if (node.isFragReturnStatement) {\n if (VisitorContext.context.mrtStructs.length) {\n return \"\";\n }\n this._registerFragColorVariable();\n\n const expression = node.children[1] as ASTNode.Expression;\n return `${V3_GL_FragColor} = ${expression.codeGen(this)};`;\n }\n return super.visitJumpStatement(node);\n }\n\n private _registerFragColorVariable() {\n if (this._fragColorVariableRegistered) return;\n this._otherCodeArray.push({\n text: `out vec4 ${V3_GL_FragColor};`,\n index: 0\n });\n this._fragColorVariableRegistered = true;\n }\n}\n","import type { Condition, ShaderInstruction } from \"@galacean/engine-design\";\n\nexport type { ShaderInstruction } from \"@galacean/engine-design\";\n\n/** Must stay in sync with ShaderPreprocessorDirective in @galacean/engine-core */\nconst ShaderPreprocessorDirective = {\n Text: 0,\n IfDef: 1,\n IfNdef: 2,\n IfCmp: 3,\n IfExpr: 4,\n Else: 5,\n Endif: 6,\n Define: 7,\n DefineVal: 8,\n DefineFunc: 9,\n Undef: 10\n} as const;\n\ninterface ExprCtx {\n s: string;\n i: number;\n}\n\n/**\n * @internal\n */\nexport class ShaderInstructionEncoder {\n private static _DIRECTIVE_RE = /^[ \\t]*#[ \\t]*(if|ifdef|ifndef|elif|else|endif|define|undef)\\b(.*)/;\n private static _FUNC_MACRO_RE = /^(\\w+)\\(([^)]*)\\)\\s*(.*)/;\n\n static parse(glsl: string): ShaderInstruction[] {\n const instructions: ShaderInstruction[] = [];\n const length = glsl.length;\n let pos = 0;\n const backfillStack: number[][] = [];\n\n while (pos < length) {\n const directiveStart = ShaderInstructionEncoder._findDirectiveStart(glsl, pos, length);\n\n if (directiveStart === -1) {\n ShaderInstructionEncoder._pushText(instructions, glsl, pos, length);\n break;\n }\n\n if (directiveStart > pos) {\n ShaderInstructionEncoder._pushText(instructions, glsl, pos, directiveStart);\n }\n\n let lineEnd = glsl.indexOf(\"\\n\", directiveStart);\n if (lineEnd === -1) lineEnd = length;\n const line = glsl.substring(directiveStart, lineEnd);\n pos = lineEnd < length ? lineEnd + 1 : length;\n\n const match = ShaderInstructionEncoder._DIRECTIVE_RE.exec(line);\n if (!match) {\n const last = instructions.length > 0 ? instructions[instructions.length - 1] : null;\n const text = lineEnd < length ? line + \"\\n\" : line;\n if (last && last[0] === ShaderPreprocessorDirective.Text) {\n (last as [number, string])[1] += text;\n } else {\n instructions.push([ShaderPreprocessorDirective.Text, text]);\n }\n continue;\n }\n\n const keyword = match[1];\n const rest = match[2].trim();\n\n switch (keyword) {\n case \"ifdef\": {\n const idx = instructions.length;\n instructions.push([ShaderPreprocessorDirective.IfDef, rest, -1]);\n backfillStack.push([idx]);\n break;\n }\n case \"ifndef\": {\n const idx = instructions.length;\n instructions.push([ShaderPreprocessorDirective.IfNdef, rest, -1]);\n backfillStack.push([idx]);\n break;\n }\n case \"if\": {\n const cond = ShaderInstructionEncoder._parseCondition(rest);\n const idx = instructions.length;\n ShaderInstructionEncoder._pushConditionInstruction(instructions, cond);\n backfillStack.push([idx]);\n break;\n }\n case \"elif\": {\n const stack = backfillStack[backfillStack.length - 1];\n const prevIdx = stack[stack.length - 1];\n const elseIdx = instructions.length;\n instructions.push([ShaderPreprocessorDirective.Else, -1]);\n stack.push(elseIdx);\n ShaderInstructionEncoder._backfillJump(instructions[prevIdx], instructions.length);\n\n const cond = ShaderInstructionEncoder._parseCondition(rest);\n const idx = instructions.length;\n ShaderInstructionEncoder._pushConditionInstruction(instructions, cond);\n stack.push(idx);\n break;\n }\n case \"else\": {\n const stack = backfillStack[backfillStack.length - 1];\n const prevIdx = stack[stack.length - 1];\n const elseIdx = instructions.length;\n instructions.push([ShaderPreprocessorDirective.Else, -1]);\n stack.push(elseIdx);\n ShaderInstructionEncoder._backfillJump(instructions[prevIdx], instructions.length);\n break;\n }\n case \"endif\": {\n const endifIdx = instructions.length;\n instructions.push([ShaderPreprocessorDirective.Endif]);\n const stack = backfillStack.pop();\n if (stack) {\n const afterEndif = endifIdx + 1;\n for (let j = 0; j < stack.length; j++) {\n const inst = instructions[stack[j]];\n if (inst[0] === ShaderPreprocessorDirective.Else) {\n (inst as [number, number])[1] = afterEndif;\n } else {\n ShaderInstructionEncoder._backfillJump(inst, afterEndif, true);\n }\n }\n }\n break;\n }\n case \"define\": {\n const funcMatch = ShaderInstructionEncoder._FUNC_MACRO_RE.exec(rest);\n if (funcMatch) {\n const params = funcMatch[2]\n .split(\",\")\n .map((p) => p.trim())\n .filter((p) => p.length > 0);\n instructions.push([\n ShaderPreprocessorDirective.DefineFunc,\n funcMatch[1],\n params,\n ShaderInstructionEncoder._stripLineComment(funcMatch[3].trim())\n ]);\n } else {\n const spaceIdx = rest.indexOf(\" \");\n if (spaceIdx === -1) {\n instructions.push([ShaderPreprocessorDirective.Define, rest]);\n } else {\n instructions.push([\n ShaderPreprocessorDirective.DefineVal,\n rest.substring(0, spaceIdx),\n ShaderInstructionEncoder._stripLineComment(rest.substring(spaceIdx + 1).trim())\n ]);\n }\n }\n break;\n }\n case \"undef\": {\n instructions.push([ShaderPreprocessorDirective.Undef, rest]);\n break;\n }\n }\n }\n\n return instructions;\n }\n\n private static _pushConditionInstruction(instructions: ShaderInstruction[], cond: Condition): void {\n if (cond.t === \"def\") {\n instructions.push([ShaderPreprocessorDirective.IfDef, cond.m, -1]);\n } else if (cond.t === \"ndef\") {\n instructions.push([ShaderPreprocessorDirective.IfNdef, cond.m, -1]);\n } else if (cond.t === \"cmp\") {\n instructions.push([ShaderPreprocessorDirective.IfCmp, cond.m, cond.op, cond.v, -1]);\n } else {\n instructions.push([ShaderPreprocessorDirective.IfExpr, cond, -1]);\n }\n }\n\n private static _findDirectiveStart(source: string, from: number, length: number): number {\n let i = from;\n while (i < length) {\n let j = i;\n while (j < length) {\n const c = source.charCodeAt(j);\n if (c === 32 /* space */ || c === 9 /* tab */) {\n j++;\n } else {\n break;\n }\n }\n if (j < length && source.charCodeAt(j) === 35 /* '#' */) return i;\n\n const nl = source.indexOf(\"\\n\", i);\n if (nl === -1) break;\n i = nl + 1;\n }\n return -1;\n }\n\n private static _pushText(instructions: ShaderInstruction[], source: string, from: number, to: number): void {\n if (from >= to) return;\n const last = instructions.length > 0 ? instructions[instructions.length - 1] : null;\n if (last && last[0] === ShaderPreprocessorDirective.Text) {\n (last as [number, string])[1] += source.substring(from, to);\n } else {\n instructions.push([ShaderPreprocessorDirective.Text, source.substring(from, to)]);\n }\n }\n\n /**\n * Backfill jump offset of an IF/ELIF instruction.\n * When onlyPlaceholder is true, only backfill if the current value is still -1\n */\n private static _backfillJump(inst: ShaderInstruction, target: number, onlyPlaceholder = false): void {\n const directive = inst[0];\n if (directive === ShaderPreprocessorDirective.IfDef || directive === ShaderPreprocessorDirective.IfNdef) {\n if (!onlyPlaceholder || inst[2] === -1) (inst as [number, string, number])[2] = target;\n } else if (directive === ShaderPreprocessorDirective.IfCmp) {\n if (!onlyPlaceholder || inst[4] === -1) (inst as [number, string, string, number, number])[4] = target;\n } else if (directive === ShaderPreprocessorDirective.IfExpr) {\n if (!onlyPlaceholder || inst[2] === -1) (inst as [number, Condition, number])[2] = target;\n }\n }\n\n private static _stripLineComment(s: string): string {\n const idx = s.indexOf(\"//\");\n return idx >= 0 ? s.substring(0, idx).trimEnd() : s;\n }\n\n private static _parseCondition(expr: string): Condition {\n const ctx: ExprCtx = { s: expr.trim(), i: 0 };\n return ShaderInstructionEncoder._parseOr(ctx);\n }\n\n private static _skipWs(ctx: ExprCtx): void {\n while (\n ctx.i < ctx.s.length &&\n (ctx.s.charCodeAt(ctx.i) === 32 /* space */ || ctx.s.charCodeAt(ctx.i) === 9) /* tab */\n )\n ctx.i++;\n }\n\n private static _parseOr(ctx: ExprCtx): Condition {\n let left = ShaderInstructionEncoder._parseAnd(ctx);\n ShaderInstructionEncoder._skipWs(ctx);\n while (\n ctx.i < ctx.s.length - 1 &&\n ctx.s.charCodeAt(ctx.i) === 124 /* '|' */ &&\n ctx.s.charCodeAt(ctx.i + 1) === 124 /* '|' */\n ) {\n ctx.i += 2;\n ShaderInstructionEncoder._skipWs(ctx);\n left = { t: \"or\", l: left, r: ShaderInstructionEncoder._parseAnd(ctx) };\n ShaderInstructionEncoder._skipWs(ctx);\n }\n return left;\n }\n\n private static _parseAnd(ctx: ExprCtx): Condition {\n let left = ShaderInstructionEncoder._parseUnary(ctx);\n ShaderInstructionEncoder._skipWs(ctx);\n while (\n ctx.i < ctx.s.length - 1 &&\n ctx.s.charCodeAt(ctx.i) === 38 /* '&' */ &&\n ctx.s.charCodeAt(ctx.i + 1) === 38 /* '&' */\n ) {\n ctx.i += 2;\n ShaderInstructionEncoder._skipWs(ctx);\n left = { t: \"and\", l: left, r: ShaderInstructionEncoder._parseUnary(ctx) };\n ShaderInstructionEncoder._skipWs(ctx);\n }\n return left;\n }\n\n private static _parseUnary(ctx: ExprCtx): Condition {\n ShaderInstructionEncoder._skipWs(ctx);\n if (ctx.s.charCodeAt(ctx.i) === 33 /* '!' */) {\n ctx.i++;\n ShaderInstructionEncoder._skipWs(ctx);\n return { t: \"not\", c: ShaderInstructionEncoder._parsePrimary(ctx) };\n }\n return ShaderInstructionEncoder._parsePrimary(ctx);\n }\n\n private static _parsePrimary(ctx: ExprCtx): Condition {\n ShaderInstructionEncoder._skipWs(ctx);\n const { s } = ctx;\n\n // Parenthesized expression\n if (s.charCodeAt(ctx.i) === 40 /* '(' */) {\n ctx.i++;\n ShaderInstructionEncoder._skipWs(ctx);\n const inner = ShaderInstructionEncoder._parseOr(ctx);\n ShaderInstructionEncoder._skipWs(ctx);\n if (s.charCodeAt(ctx.i) === 41 /* ')' */) ctx.i++;\n return inner;\n }\n\n // defined(MACRO) or defined MACRO\n if (s.substring(ctx.i, ctx.i + 7) === \"defined\") {\n ctx.i += 7;\n ShaderInstructionEncoder._skipWs(ctx);\n const hasParen = s.charCodeAt(ctx.i) === 40; /* '(' */\n if (hasParen) ctx.i++;\n ShaderInstructionEncoder._skipWs(ctx);\n const name = ShaderInstructionEncoder._scanIdentifier(ctx);\n ShaderInstructionEncoder._skipWs(ctx);\n if (hasParen && s.charCodeAt(ctx.i) === 41 /* ')' */) ctx.i++;\n return { t: \"def\", m: name };\n }\n\n // Numeric literal\n if (ctx.i < s.length && ShaderInstructionEncoder._isDigit(s.charCodeAt(ctx.i))) {\n const lhsNum = ShaderInstructionEncoder._scanNumber(ctx);\n ShaderInstructionEncoder._skipWs(ctx);\n const op = ShaderInstructionEncoder._scanOp(ctx);\n if (op) {\n ShaderInstructionEncoder._skipWs(ctx);\n return {\n t: \"bool\",\n v: ShaderInstructionEncoder._evalNumOp(lhsNum, op, ShaderInstructionEncoder._scanNumber(ctx))\n };\n }\n return { t: \"bool\", v: lhsNum !== 0 };\n }\n\n // Identifier — comparison or defined check\n const name = ShaderInstructionEncoder._scanIdentifier(ctx);\n if (!name) return { t: \"bool\", v: false };\n ShaderInstructionEncoder._skipWs(ctx);\n const op = ShaderInstructionEncoder._scanOp(ctx);\n if (op) {\n ShaderInstructionEncoder._skipWs(ctx);\n return { t: \"cmp\", m: name, op, v: ShaderInstructionEncoder._scanNumber(ctx) };\n }\n return { t: \"def\", m: name };\n }\n\n private static _isDigit(charCode: number): boolean {\n return charCode >= 48 /* '0' */ && charCode <= 57 /* '9' */;\n }\n\n private static _isAlnum(charCode: number): boolean {\n return (\n (charCode >= 65 /* 'A' */ && charCode <= 90) /* 'Z' */ ||\n (charCode >= 97 /* 'a' */ && charCode <= 122) /* 'z' */ ||\n (charCode >= 48 /* '0' */ && charCode <= 57) /* '9' */ ||\n charCode === 95 /* '_' */\n );\n }\n\n private static _scanIdentifier(ctx: ExprCtx): string {\n const start = ctx.i;\n while (ctx.i < ctx.s.length && ShaderInstructionEncoder._isAlnum(ctx.s.charCodeAt(ctx.i))) ctx.i++;\n return ctx.s.substring(start, ctx.i);\n }\n\n private static _scanNumber(ctx: ExprCtx): number {\n const start = ctx.i;\n if (ctx.s.charCodeAt(ctx.i) === 45 /* '-' */) ctx.i++;\n while (\n ctx.i < ctx.s.length &&\n (ShaderInstructionEncoder._isDigit(ctx.s.charCodeAt(ctx.i)) || ctx.s.charCodeAt(ctx.i) === 46) /* '.' */\n )\n ctx.i++;\n return Number(ctx.s.substring(start, ctx.i)) || 0;\n }\n\n private static _scanOp(ctx: ExprCtx): string {\n const c = ctx.s.charCodeAt(ctx.i);\n const c2 = ctx.i + 1 < ctx.s.length ? ctx.s.charCodeAt(ctx.i + 1) : 0;\n if (c === 61 /* '=' */ && c2 === 61 /* '=' */) {\n ctx.i += 2;\n return \"==\";\n }\n if (c === 33 /* '!' */ && c2 === 61 /* '=' */) {\n ctx.i += 2;\n return \"!=\";\n }\n if (c === 62 /* '>' */ && c2 === 61 /* '=' */) {\n ctx.i += 2;\n return \">=\";\n }\n if (c === 60 /* '<' */ && c2 === 61 /* '=' */) {\n ctx.i += 2;\n return \"<=\";\n }\n if (c === 62 /* '>' */) {\n ctx.i++;\n return \">\";\n }\n if (c === 60 /* '<' */) {\n ctx.i++;\n return \"<\";\n }\n return \"\";\n }\n\n private static _evalNumOp(lhs: number, op: string, rhs: number): boolean {\n switch (op) {\n case \"==\":\n return lhs === rhs;\n case \"!=\":\n return lhs !== rhs;\n case \">\":\n return lhs > rhs;\n case \"<\":\n return lhs < rhs;\n case \">=\":\n return lhs >= rhs;\n case \"<=\":\n return lhs <= rhs;\n default:\n return false;\n }\n }\n}\n","import { NoneTerminal, GrammarSymbol } from \"../parser/GrammarSymbol\";\n\nexport default class Production {\n private static _id = 0;\n static pool: Map<number, Production> = new Map();\n\n readonly goal: NoneTerminal;\n readonly derivation: GrammarSymbol[];\n readonly id: number;\n\n constructor(goal: NoneTerminal, derivation: GrammarSymbol[]) {\n this.goal = goal;\n this.derivation = derivation;\n this.id = Production._id++;\n Production.pool.set(this.id, this);\n }\n}\n","import { ETokenType } from \"../common\";\nimport { NoneTerminal, Terminal } from \"../parser/GrammarSymbol\";\nimport Production from \"./Production\";\nimport GrammarUtils from \"./Utils\";\n\nexport default class StateItem {\n static _id = 0;\n\n readonly production: Production;\n readonly position: number;\n readonly lookaheadSet: Set<Terminal>;\n readonly id: number;\n\n _needReInfer = true;\n get needReInfer() {\n return this._needReInfer;\n }\n set needReInfer(v: boolean) {\n this._needReInfer = v;\n }\n\n get curSymbol() {\n return this.production.derivation[this.position];\n }\n get nextSymbol() {\n return this.production.derivation[this.position + 1];\n }\n\n constructor(production: Production, position: number, lookahead: Iterable<Terminal>) {\n this.production = production;\n this.position = position;\n this.lookaheadSet = new Set();\n for (const la of lookahead) {\n this.lookaheadSet.add(la);\n }\n this.id = StateItem._id++;\n }\n\n addLookahead(ts: Iterable<Terminal>) {\n for (const t of ts) {\n if (this.lookaheadSet.has(t)) continue;\n this.lookaheadSet.add(t);\n this.needReInfer = true;\n }\n }\n\n symbolByOffset(offset: number) {\n return this.production.derivation[this.position + offset];\n }\n\n canReduce() {\n if (this.position > this.production.derivation.length - 1) return true;\n else {\n for (let i = this.position; i < this.production.derivation.length; i++) {\n if (this.production.derivation[i] !== ETokenType.EPSILON) return false;\n }\n return true;\n }\n }\n\n advance() {\n // #if _VERBOSE\n if (this.canReduce()) throw `Error: advance reduce-able parsing state item`;\n // #endif\n return new StateItem(this.production, this.position + 1, this.lookaheadSet);\n }\n\n // #if _VERBOSE\n toString() {\n const coreItem = this.production.derivation.map((item) => GrammarUtils.toString(item));\n coreItem[this.position] = \".\" + (coreItem[this.position] ?? \"\");\n\n return `${NoneTerminal[this.production.goal]} :=> ${coreItem.join(\"|\")} ;${Array.from(this.lookaheadSet)\n .map((item) => GrammarUtils.toString(item))\n .join(\"/\")}`;\n }\n // #endif\n}\n","import { Terminal } from \"../parser/GrammarSymbol\";\nimport Production from \"./Production\";\nimport StateItem from \"./StateItem\";\n\nexport default class State {\n static closureMap: Map<string /** state mapKey */, State> = new Map();\n static pool: Map<number, State> = new Map();\n static _id = 0;\n\n readonly id: number;\n readonly cores: Set<StateItem>;\n private _items: Set<StateItem>;\n get items() {\n return this._items;\n }\n\n closured = false;\n get needReInfer() {\n for (const core of this.cores) {\n if (core.needReInfer) return true;\n }\n return false;\n }\n\n private _stateItemPool: Map<string /** Map ID */, StateItem> = new Map();\n\n static create(cores: StateItem[]) {\n const cacheKey = this.getMapKey(cores);\n const state = this.closureMap.get(cacheKey);\n if (state) {\n for (const core of cores) {\n // merge lookahead\n state.createStateItem(core.production, core.position, core.lookaheadSet);\n }\n return state;\n }\n\n const newState = new State(cores);\n this.closureMap.set(cacheKey, newState);\n return newState;\n }\n\n // TODO: any optimization?\n static getMapKey(cores: StateItem[]) {\n return cores.map((item) => `${item.production.id},${item.position}`).join(\";\");\n }\n\n private constructor(cores: Iterable<StateItem>) {\n this.id = State._id++;\n this._items = new Set([...cores]);\n this.cores = new Set([...cores]);\n for (const it of cores) {\n const itemMapKey = this.getStateItemMapKey(it.production, it.position);\n this._stateItemPool.set(itemMapKey, it);\n }\n State.pool.set(this.id, this);\n }\n\n // TODO: any optimization?\n getStateItemMapKey(production: Production, position: number) {\n return `${production.id},${position}`;\n }\n\n createStateItem(production: Production, position: number, lookaheadSet: Iterable<Terminal> = new Set()) {\n const mapId = this.getStateItemMapKey(production, position);\n const item = this._stateItemPool.get(mapId);\n if (item) {\n for (const la of lookaheadSet) {\n if (item.lookaheadSet.has(la)) continue;\n item.lookaheadSet.add(la);\n item.needReInfer = true;\n }\n return item;\n }\n const newItem = new StateItem(production, position, lookaheadSet);\n this._stateItemPool.set(mapId, newItem);\n return newItem;\n }\n}\n","import { ETokenType, ShaderRange } from \"../common\";\nimport { ASTNode, TreeNode } from \"../parser/AST\";\nimport { TranslationRule } from \"../parser/SemanticAnalyzer\";\nimport { NoneTerminal, GrammarSymbol } from \"../parser/GrammarSymbol\";\nimport Production from \"./Production\";\nimport { ActionInfo, EAction } from \"./types\";\nimport { ShaderCompiler } from \"../ShaderCompiler\";\nimport { ClearableObjectPool, type IPoolElement } from \"@galacean/engine-core\";\nimport { NodeChild } from \"../parser/types\";\nimport { Keyword } from \"../common/enums/Keyword\";\n\nexport default class GrammarUtils {\n static isTerminal(sm: GrammarSymbol) {\n return sm < NoneTerminal.START;\n }\n\n static toString(sm: GrammarSymbol) {\n if (this.isTerminal(sm)) {\n return ETokenType[sm] ?? Keyword[sm];\n }\n return NoneTerminal[sm];\n }\n\n static createProductionWithOptions(\n goal: NoneTerminal,\n options: GrammarSymbol[][],\n /** the ast node */\n astTypePool?: ClearableObjectPool<\n { set: (loc: ShaderRange, children: NodeChild[]) => void } & IPoolElement & TreeNode\n >\n ) {\n // Resolve the AST pool once per grammar production (not per reduce).\n const pool = astTypePool ?? ASTNode.TrivialNode.pool;\n const ret: [GrammarSymbol[], TranslationRule | undefined][] = [];\n for (const opt of options) {\n // Single-`NonTerminal` RHS + no typed class → this production reduces\n // to a semantic-empty `TrivialNode` wrapper. Elide it at reduce time\n // by pushing the child directly onto the semantic stack. Safe because\n // the parser's GOTO runs off `reduceProduction.goal`, not off the node\n // type on the stack. Single-Terminal RHS (e.g. `unary_operator → PLUS`)\n // isn't eligible — a `BaseToken` can't stand in for an AST node.\n const canElide = !astTypePool && opt.length === 1 && !GrammarUtils.isTerminal(opt[0]);\n ret.push([\n [goal, ...opt],\n function (sa, ...children) {\n if (!children[0]) return;\n if (canElide) {\n sa.semanticStack.push(children[0] as TreeNode);\n } else {\n const start = children[0].location.start;\n const end = children[children.length - 1].location.end;\n const location = ShaderCompiler.createRange(start, end);\n ASTNode.get(pool, sa, location, children);\n }\n }\n ]);\n }\n return ret;\n }\n\n static addMapSetItem<K, T>(map: Map<K, Set<T>>, k: K, v: T) {\n const set = map.get(k) ?? new Set();\n set.add(v);\n map.set(k, set);\n }\n\n static isSubSet<T>(sa: Set<T>, sb: Set<T>) {\n for (const item of sa) {\n if (!sb.has(item)) return false;\n }\n return true;\n }\n\n static isActionEqual(a: ActionInfo, b: ActionInfo) {\n return a.action === b.action && a.target === b.target;\n }\n\n // #if _VERBOSE\n static printAction(actionInfo: ActionInfo) {\n const production = Production.pool.get(actionInfo.target!);\n return `<Action: ${EAction[actionInfo.action]} -> ${this.printProduction(production)}>`;\n }\n\n static printProduction(production: Production) {\n const deriv = production.derivation.map((gs) => GrammarUtils.toString(gs)).join(\"|\");\n return `${NoneTerminal[production.goal]} :=> ${deriv}`;\n }\n // #endif\n}\n","import { NoneTerminal, Terminal } from \"../parser/GrammarSymbol\";\n\nexport type StateActionTable = Map<number /** state ID */, ActionTable>;\nexport type ActionTable = Map<Terminal, ActionInfo>;\nexport type StateGotoTable = Map<number /** state ID */, GotoTable>;\nexport type GotoTable = Map<NoneTerminal, number /** state ID */>;\n\nexport enum EAction {\n Shift = 0,\n Reduce,\n Accept\n}\n\nexport interface ActionInfo {\n action: EAction;\n target?: number;\n}\n","import { ETokenType } from \"../common\";\nimport { Keyword } from \"../common/enums/Keyword\";\nimport { Grammar } from \"../parser/Grammar\";\nimport { GrammarSymbol, NoneTerminal, Terminal } from \"../parser/GrammarSymbol\";\nimport Production from \"./Production\";\nimport State from \"./State\";\nimport StateItem from \"./StateItem\";\nimport { default as GrammarUtils, default as Utils } from \"./Utils\";\nimport { ActionInfo, ActionTable, EAction, GotoTable, StateActionTable, StateGotoTable } from \"./types\";\n\n/**\n * The [LALR1](https://web.stanford.edu/class/archive/cs/cs143/cs143.1128/handouts/140%20LALR%20Parsing.pdf) Parser generator\n */\nexport class LALR1 {\n readonly firstSetMap: Map<NoneTerminal, Set<Terminal>> = new Map();\n readonly followSetMap: Map<NoneTerminal, Set<Terminal>> = new Map();\n\n readonly actionTable: StateActionTable = new Map();\n readonly gotoTable: StateGotoTable = new Map();\n private grammar: Grammar;\n\n /** For circle detect */\n private _firstSetNTStack: NoneTerminal[] = [];\n\n constructor(grammar: Grammar) {\n this.grammar = grammar;\n }\n\n generate() {\n this.computeFirstSet();\n this.buildStateTable();\n }\n\n private buildStateTable() {\n const startStateItemCore = [new StateItem(this.grammar.productions[0], 0, [ETokenType.EOF])];\n const startState = State.create(startStateItemCore);\n this._extendState(startState);\n }\n\n private _extendState(state: State) {\n if (!state.needReInfer) return;\n this._closure(state);\n const newStates = this._inferNextState(state);\n for (const ns of newStates) {\n this._extendState(ns);\n }\n }\n\n private _closure(state: State) {\n for (const core of state.cores) {\n if (!core.canReduce()) {\n this._extendStateItem(state, core);\n }\n }\n state.closured = true;\n return state;\n }\n\n private _extendStateItem(state: State, item: StateItem) {\n if (GrammarUtils.isTerminal(item.curSymbol)) return;\n\n const productionList = this.grammar.getProductionList(<NoneTerminal>item.curSymbol);\n\n if (item.nextSymbol) {\n let newLookaheadSet = new Set<Terminal>();\n let lastFirstSet: Set<Terminal> | undefined;\n let terminalExist = false;\n // when A :=> a.BC, a; ==》 B :=> .xy, First(Ca)\n // newLookAhead = First(Ca)\n for (let i = 1, nextSymbol = item.symbolByOffset(1); !!nextSymbol; nextSymbol = item.symbolByOffset(++i)) {\n if (GrammarUtils.isTerminal(nextSymbol)) {\n newLookaheadSet.add(<Terminal>nextSymbol);\n terminalExist = true;\n break;\n }\n lastFirstSet = this.firstSetMap.get(<NoneTerminal>nextSymbol)!;\n for (const t of lastFirstSet) {\n newLookaheadSet.add(t);\n }\n if (!lastFirstSet.has(ETokenType.EPSILON)) break;\n }\n if (!terminalExist && lastFirstSet?.has(ETokenType.EPSILON)) {\n for (const t of item.lookaheadSet) {\n newLookaheadSet.add(t);\n }\n }\n\n for (const production of productionList) {\n const newItem = state.createStateItem(production, 0);\n if (!state.items.has(newItem) || !Utils.isSubSet(newLookaheadSet, newItem.lookaheadSet)) {\n state.items.add(newItem);\n newItem.addLookahead(newLookaheadSet);\n this._extendStateItem(state, newItem);\n }\n }\n } else {\n for (const production of productionList) {\n const newItem = state.createStateItem(production, 0);\n if (!state.items.has(newItem) || !Utils.isSubSet(item.lookaheadSet, newItem.lookaheadSet)) {\n state.items.add(newItem);\n newItem.addLookahead(item.lookaheadSet);\n this._extendStateItem(state, newItem);\n }\n }\n }\n }\n\n private _inferNextState(state: State): Set<State> {\n const coreMap: Map<GrammarSymbol, Set<StateItem>> = new Map();\n const stateActionTable: ActionTable = this.actionTable.get(state.id) ?? new Map();\n const stateGotoTable: GotoTable = this.gotoTable.get(state.id) ?? new Map();\n\n this.actionTable.set(state.id, stateActionTable);\n this.gotoTable.set(state.id, stateGotoTable);\n\n for (const stateItem of state.items) {\n if (stateItem.canReduce()) {\n let action: ActionInfo;\n if (stateItem.production.goal !== NoneTerminal.START) {\n action = {\n action: EAction.Reduce,\n target: stateItem.production.id\n };\n } else {\n action = { action: EAction.Accept };\n }\n\n for (const t of stateItem.lookaheadSet) {\n this._addAction(stateActionTable, t, action);\n }\n } else {\n const nextItem = stateItem.advance();\n Utils.addMapSetItem(coreMap, stateItem.curSymbol, nextItem);\n }\n\n stateItem.needReInfer = false;\n }\n\n const newStates = new Set<State>();\n for (const [gs, cores] of coreMap.entries()) {\n const newState = State.create(Array.from(cores));\n if (GrammarUtils.isTerminal(gs)) {\n this._addAction(stateActionTable, <Terminal>gs, {\n action: EAction.Shift,\n target: newState.id\n });\n } else {\n stateGotoTable.set(<NoneTerminal>gs, newState.id);\n }\n\n newStates.add(newState);\n }\n\n return newStates;\n }\n\n /** Resolve shift-reduce/reduce-reduce conflict detect */\n private _addAction(table: ActionTable, terminal: Terminal, action: ActionInfo) {\n const exist = table.get(terminal);\n if (exist && !Utils.isActionEqual(exist, action)) {\n // Known shift-preferred conflicts (see TargetParser.y `%expect 2`).\n // Enforce shift regardless of the order `_inferNextState` registers\n // actions: when `exist` is already Shift and `action` is Reduce, keep\n // `exist` (early-return); the reverse order (`exist` Reduce, `action`\n // Shift) falls through to `table.set` below and Shift overwrites\n // Reduce. Order-independent by construction.\n if (LALR1._isKnownShiftPreferred(terminal, exist, action)) {\n if (exist.action === EAction.Shift && action.action === EAction.Reduce) return;\n } else {\n // #if _VERBOSE\n console.warn(\n `conflict detect: <Terminal ${GrammarUtils.toString(terminal)}> \\n`,\n Utils.printAction(exist),\n \"\\n\",\n Utils.printAction(action)\n );\n // #endif\n }\n }\n table.set(terminal, action);\n }\n\n // Catalog of expected shift/reduce conflicts. Each entry must correspond to\n // one of TargetParser.y's `%expect`-ed conflicts; any new conflict not in\n // this list falls through to the verbose `conflict detect` warning so the\n // grammar/runtime drift is loud rather than silent.\n // - ELSE: dangling-else, bind to nearest `if`\n // - '(' + `type_specifier_nonarray → macro_call_symbol`: macro-as-type-alias\n // (#2974), prefer the expression-position `macro_call_function` over the\n // type-position reduce\n private static _isKnownShiftPreferred(terminal: Terminal, exist: ActionInfo, action: ActionInfo): boolean {\n if (terminal === Keyword.ELSE) return true;\n if (terminal !== ETokenType.LEFT_PAREN) return false;\n const reduce = exist.action === EAction.Reduce ? exist : action.action === EAction.Reduce ? action : null;\n if (!reduce) return false;\n const prod = Production.pool.get(reduce.target!);\n return (\n !!prod &&\n prod.goal === NoneTerminal.type_specifier_nonarray &&\n prod.derivation.length === 1 &&\n prod.derivation[0] === NoneTerminal.macro_call_symbol\n );\n }\n\n // https://people.cs.pitt.edu/~jmisurda/teaching/cs1622/handouts/cs1622-first_and_follow.pdf\n private computeFirstSet() {\n for (const production of this.grammar.productions.slice(1)) {\n this._computeFirstSetForNT(production.goal);\n }\n }\n\n private _computeFirstSetForNT(NT: NoneTerminal) {\n // circle detect\n const idx = this._firstSetNTStack.findIndex((item) => item === NT);\n if (idx !== -1) {\n const computingFS = this.firstSetMap.get(NT)!;\n const len = this._firstSetNTStack.length;\n for (let i = len - 1; i > idx; i--) {\n const curNT = this._firstSetNTStack[i];\n this.firstSetMap.set(curNT, computingFS);\n }\n return computingFS;\n }\n this._firstSetNTStack.push(NT);\n\n const productionList = this.grammar.getProductionList(NT);\n const firstSet = new Set<Terminal>();\n this.firstSetMap.set(NT, firstSet);\n if (this.grammar.isNullableNT(NT)) firstSet.add(ETokenType.EPSILON);\n\n for (const production of productionList) {\n let i = 0;\n for (; i < production.derivation.length; i++) {\n const gs = production.derivation[i];\n if (GrammarUtils.isTerminal(gs)) {\n firstSet.add(<Terminal>gs);\n break;\n }\n\n const succeedFirstSet = this._computeFirstSetForNT(<NoneTerminal>gs);\n\n for (const item of succeedFirstSet) {\n if (item !== ETokenType.EPSILON) firstSet.add(item);\n }\n if (!this.grammar.isNullableNT(<NoneTerminal>gs)) break;\n }\n if (i === production.derivation.length) firstSet.add(ETokenType.EPSILON);\n }\n\n this._firstSetNTStack.pop();\n return firstSet;\n }\n}\n","import { ETokenType } from \"../common\";\nimport { NoneTerminal, GrammarSymbol } from \"./GrammarSymbol\";\nimport Production from \"../lalr/Production\";\n\nexport class Grammar {\n readonly productions: Production[];\n\n readonly startSymbol: NoneTerminal;\n\n static create(start: NoneTerminal, productions: GrammarSymbol[][]) {\n const _ps = productions.map((gsl) => {\n return new Production(<NoneTerminal>gsl[0], gsl.slice(1));\n });\n return new Grammar(start, _ps);\n }\n\n constructor(start: NoneTerminal, productions: Production[]) {\n this.startSymbol = start;\n productions.unshift(new Production(NoneTerminal.START, [start]));\n this.productions = productions;\n }\n\n getProductionList(nonTerminal: NoneTerminal) {\n return this.productions.filter((item) => item.goal === nonTerminal);\n }\n\n isNullableNT(NT: NoneTerminal) {\n return this.productions.find((item) => item.goal === NT && item.derivation[0] === ETokenType.EPSILON);\n }\n\n getProductionByID(pid: number) {\n return Production.pool.get(pid);\n }\n}\n","// Context Free Grammar of Galacean Shader\nimport { ETokenType } from \"../common\";\nimport { Keyword } from \"../common/enums/Keyword\";\nimport { ASTNode } from \"../parser/AST\";\nimport { Grammar } from \"../parser/Grammar\";\nimport { GrammarSymbol, NoneTerminal } from \"../parser/GrammarSymbol\";\nimport SemanticAnalyzer, { TranslationRule } from \"../parser/SemanticAnalyzer\";\nimport GrammarUtils from \"./Utils\";\n\nconst productionAndRules: [GrammarSymbol[], TranslationRule | undefined][] = [\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.gs_shader_program,\n [[NoneTerminal.global_declaration], [NoneTerminal.gs_shader_program, NoneTerminal.global_declaration]],\n ASTNode.GLShaderProgram.pool\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.global_declaration,\n [\n [NoneTerminal.precision_specifier],\n [NoneTerminal.variable_declaration_statement],\n [NoneTerminal.struct_specifier],\n [NoneTerminal.function_definition],\n [NoneTerminal.global_macro_if_statement],\n [NoneTerminal.macro_undef],\n [NoneTerminal.macro_define],\n [Keyword.MACRO_DEFINE_EXPRESSION]\n ],\n ASTNode.GlobalDeclaration.pool\n ),\n\n // Expression-style `#define` — lexer emits either:\n // `MACRO_DEFINE ID <value tokens> MACRO_DEFINE_END` (object macro)\n // `MACRO_DEFINE ID MACRO_DEFINE_PARAMS <value tokens> MACRO_DEFINE_END` (function macro)\n //\n // The `(param1, param2, …)` block is captured by the lexer as a single opaque\n // `MACRO_DEFINE_PARAMS` token. Capturing in the lexer (rather than recursively in\n // the CFG via a `macro_define_param_list` non-terminal) avoids an LALR(1) conflict\n // between `macro_define_param_list` and the visually similar\n // `function_call_parameter_list` when the parser is in a state that could follow\n // either `LEFT_PAREN ID , ID` pattern.\n //\n // Empty-value `#define X\\n` and function-like without body stay on the legacy\n // opaque `MACRO_DEFINE_EXPRESSION` path.\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.macro_define,\n [\n [Keyword.MACRO_DEFINE, ETokenType.ID, NoneTerminal.expression, Keyword.MACRO_DEFINE_END],\n [\n Keyword.MACRO_DEFINE,\n ETokenType.ID,\n Keyword.MACRO_DEFINE_PARAMS,\n NoneTerminal.expression,\n Keyword.MACRO_DEFINE_END\n ]\n ],\n ASTNode.MacroDefine.pool\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.macro_call_symbol,\n [[Keyword.MACRO_CALL]],\n ASTNode.MacroCallSymbol.pool\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.macro_call_function,\n [\n [NoneTerminal.macro_call_symbol, ETokenType.LEFT_PAREN, ETokenType.RIGHT_PAREN],\n [\n NoneTerminal.macro_call_symbol,\n ETokenType.LEFT_PAREN,\n NoneTerminal.function_call_parameter_list,\n ETokenType.RIGHT_PAREN\n ]\n ],\n ASTNode.MacroCallFunction.pool\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.macro_undef,\n [\n [Keyword.MACRO_UNDEF, ETokenType.ID],\n [Keyword.MACRO_UNDEF, Keyword.MACRO_CALL]\n ],\n ASTNode.MacroUndef.pool\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.macro_push_context,\n [\n [Keyword.MACRO_IF, Keyword.MACRO_CONDITIONAL_EXPRESSION],\n [Keyword.MACRO_IFDEF, ETokenType.ID],\n [Keyword.MACRO_IFNDEF, ETokenType.ID],\n [Keyword.MACRO_IFDEF, NoneTerminal.macro_call_symbol],\n [Keyword.MACRO_IFNDEF, NoneTerminal.macro_call_symbol]\n ],\n ASTNode.MacroPushContext.pool\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.macro_pop_context,\n [[Keyword.MACRO_ENDIF]],\n ASTNode.MacroPopContext.pool\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.macro_elif_expression,\n [[Keyword.MACRO_ELIF, Keyword.MACRO_CONDITIONAL_EXPRESSION]],\n ASTNode.MacroElifExpression.pool\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.macro_else_expression,\n [[Keyword.MACRO_ELSE]],\n ASTNode.MacroElseExpression.pool\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.global_macro_declaration,\n [[NoneTerminal.global_declaration], [NoneTerminal.global_macro_declaration, NoneTerminal.global_declaration]],\n ASTNode.GlobalMacroDeclaration.pool\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.global_macro_if_statement,\n [\n [NoneTerminal.macro_push_context, NoneTerminal.global_macro_declaration, NoneTerminal.global_macro_branch],\n [NoneTerminal.macro_push_context, NoneTerminal.global_macro_branch]\n ],\n ASTNode.GlobalMacroIfStatement.pool\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.global_macro_branch,\n [\n [NoneTerminal.macro_pop_context],\n [NoneTerminal.macro_elif_expression, NoneTerminal.global_macro_declaration, NoneTerminal.global_macro_branch],\n [NoneTerminal.macro_else_expression, NoneTerminal.global_macro_declaration, NoneTerminal.macro_pop_context],\n [NoneTerminal.macro_elif_expression, NoneTerminal.global_macro_branch],\n [NoneTerminal.macro_else_expression, NoneTerminal.macro_pop_context]\n ],\n ASTNode.GlobalMacroBranch.pool\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.variable_declaration,\n [\n [NoneTerminal.fully_specified_type, ETokenType.ID],\n [NoneTerminal.fully_specified_type, ETokenType.ID, NoneTerminal.array_specifier],\n [NoneTerminal.fully_specified_type, ETokenType.ID, ETokenType.EQUAL, NoneTerminal.initializer]\n ],\n ASTNode.VariableDeclaration.pool\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.variable_declaration_list,\n [\n [NoneTerminal.variable_declaration],\n [NoneTerminal.variable_declaration_list, ETokenType.COMMA, ETokenType.ID],\n [NoneTerminal.variable_declaration_list, ETokenType.COMMA, ETokenType.ID, NoneTerminal.array_specifier]\n ],\n ASTNode.VariableDeclarationList.pool\n ),\n\n ...GrammarUtils.createProductionWithOptions(NoneTerminal.variable_declaration_statement, [\n [NoneTerminal.variable_declaration_list, ETokenType.SEMICOLON]\n ]),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.ext_builtin_type_specifier_nonarray,\n [\n [Keyword.VOID],\n [Keyword.FLOAT],\n [Keyword.BOOL],\n [Keyword.INT],\n [Keyword.UINT],\n [Keyword.VEC2],\n [Keyword.VEC3],\n [Keyword.VEC4],\n [Keyword.BVEC2],\n [Keyword.BVEC3],\n [Keyword.BVEC4],\n [Keyword.IVEC2],\n [Keyword.IVEC3],\n [Keyword.IVEC4],\n [Keyword.UVEC2],\n [Keyword.UVEC3],\n [Keyword.UVEC4],\n [Keyword.MAT2],\n [Keyword.MAT3],\n [Keyword.MAT4],\n [Keyword.MAT2X3],\n [Keyword.MAT2X4],\n [Keyword.MAT3X2],\n [Keyword.MAT3X4],\n [Keyword.MAT4X2],\n [Keyword.MAT4X3],\n [Keyword.SAMPLER2D],\n [Keyword.SAMPLER3D],\n [Keyword.SAMPLER_CUBE],\n [Keyword.SAMPLER2D_SHADOW],\n [Keyword.SAMPLER_CUBE_SHADOW],\n [Keyword.SAMPLER2D_ARRAY],\n [Keyword.SAMPLER2D_ARRAY_SHADOW],\n [Keyword.I_SAMPLER2D],\n [Keyword.I_SAMPLER3D],\n [Keyword.I_SAMPLER_CUBE],\n [Keyword.I_SAMPLER2D_ARRAY],\n [Keyword.U_SAMPLER2D],\n [Keyword.U_SAMPLER3D],\n [Keyword.U_SAMPLER_CUBE],\n [Keyword.U_SAMPLER2D_ARRAY]\n ],\n ASTNode.ExtBuiltinTypeSpecifierNonArray.pool\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.type_specifier_nonarray,\n [\n // User-defined struct identifier\n [ETokenType.ID],\n // Built-in type keyword (float / vec3 / sampler2D / ...)\n [NoneTerminal.ext_builtin_type_specifier_nonarray],\n // Macro-as-type-alias (e.g. `#define FxaaFloat float; FxaaFloat x;`).\n // Routing through `macro_call_symbol` keeps the macro a first-class AST\n // node and lets the LALR table disambiguate from expression-position\n // macro calls.\n [NoneTerminal.macro_call_symbol]\n ],\n ASTNode.TypeSpecifierNonArray.pool\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.fully_specified_type,\n [[NoneTerminal.type_specifier], [NoneTerminal.type_qualifier, NoneTerminal.type_specifier]],\n ASTNode.FullySpecifiedType.pool\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.type_specifier,\n [\n [NoneTerminal.type_specifier_nonarray],\n [NoneTerminal.ext_builtin_type_specifier_nonarray, NoneTerminal.array_specifier]\n ],\n ASTNode.TypeSpecifier.pool\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.type_qualifier,\n [[NoneTerminal.single_type_qualifier], [NoneTerminal.type_qualifier, NoneTerminal.single_type_qualifier]],\n ASTNode.TypeQualifier.pool\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.single_type_qualifier,\n [\n [NoneTerminal.storage_qualifier],\n [NoneTerminal.precision_qualifier],\n [NoneTerminal.interpolation_qualifier],\n [NoneTerminal.invariant_qualifier],\n [Keyword.PRECISE]\n ],\n ASTNode.SingleTypeQualifier.pool\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.storage_qualifier,\n [[Keyword.CONST], [Keyword.IN], [Keyword.INOUT], [Keyword.OUT], [Keyword.CENTROID]],\n // #if _VERBOSE\n ASTNode.StorageQualifier.pool\n // #endif\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.interpolation_qualifier,\n [[Keyword.SMOOTH], [Keyword.FLAT]],\n // #if _VERBOSE\n ASTNode.InterpolationQualifier.pool\n // #endif\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.invariant_qualifier,\n [[Keyword.INVARIANT]],\n // #if _VERBOSE\n ASTNode.InvariantQualifier.pool\n // #endif\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.precision_qualifier,\n [[Keyword.HIGHP], [Keyword.MEDIUMP], [Keyword.LOWP]],\n // #if _VERBOSE\n ASTNode.PrecisionQualifier.pool\n // #endif\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.struct_specifier,\n [\n [\n Keyword.STRUCT,\n ETokenType.ID,\n ETokenType.LEFT_BRACE,\n NoneTerminal.struct_declaration_list,\n ETokenType.RIGHT_BRACE,\n ETokenType.SEMICOLON\n ],\n [\n Keyword.STRUCT,\n ETokenType.LEFT_BRACE,\n NoneTerminal.struct_declaration_list,\n ETokenType.RIGHT_BRACE,\n ETokenType.SEMICOLON\n ]\n ],\n ASTNode.StructSpecifier.pool\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.struct_declaration_list,\n [[NoneTerminal.struct_declaration], [NoneTerminal.struct_declaration_list, NoneTerminal.struct_declaration]],\n ASTNode.StructDeclarationList.pool\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.struct_declaration,\n [\n [NoneTerminal.type_specifier, NoneTerminal.struct_declarator_list, ETokenType.SEMICOLON],\n [\n NoneTerminal.type_qualifier,\n NoneTerminal.type_specifier,\n NoneTerminal.struct_declarator_list,\n ETokenType.SEMICOLON\n ],\n [\n NoneTerminal.layout_qualifier,\n NoneTerminal.type_specifier,\n NoneTerminal.struct_declarator,\n ETokenType.SEMICOLON\n ],\n [NoneTerminal.macro_struct_declaration]\n ],\n ASTNode.StructDeclaration.pool\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.macro_struct_declaration,\n [\n [NoneTerminal.macro_push_context, NoneTerminal.struct_declaration_list, NoneTerminal.macro_struct_branch],\n [NoneTerminal.macro_push_context, NoneTerminal.macro_struct_branch]\n ],\n ASTNode.MacroStructDeclaration.pool\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.macro_struct_branch,\n [\n [NoneTerminal.macro_pop_context],\n [NoneTerminal.macro_elif_expression, NoneTerminal.struct_declaration_list, NoneTerminal.macro_struct_branch],\n [NoneTerminal.macro_else_expression, NoneTerminal.struct_declaration_list, NoneTerminal.macro_pop_context],\n [NoneTerminal.macro_elif_expression, NoneTerminal.macro_struct_branch],\n [NoneTerminal.macro_else_expression, NoneTerminal.macro_pop_context]\n ],\n ASTNode.MacroStructBranch.pool\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.layout_qualifier,\n [\n [\n Keyword.LAYOUT,\n ETokenType.LEFT_PAREN,\n Keyword.LOCATION,\n ETokenType.EQUAL,\n ETokenType.INT_CONSTANT,\n ETokenType.RIGHT_PAREN\n ]\n ],\n ASTNode.LayoutQualifier.pool\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.struct_declarator_list,\n [\n [NoneTerminal.struct_declarator],\n [NoneTerminal.struct_declarator_list, ETokenType.COMMA, NoneTerminal.struct_declarator]\n ],\n ASTNode.StructDeclaratorList.pool\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.struct_declarator,\n [[ETokenType.ID], [ETokenType.ID, NoneTerminal.array_specifier]],\n ASTNode.StructDeclarator.pool\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.array_specifier,\n [\n [ETokenType.LEFT_BRACKET, ETokenType.RIGHT_BRACKET],\n [ETokenType.LEFT_BRACKET, NoneTerminal.integer_constant_expression, ETokenType.RIGHT_BRACKET]\n ],\n ASTNode.ArraySpecifier.pool\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.integer_constant_expression_operator,\n [[ETokenType.PLUS], [ETokenType.DASH], [ETokenType.STAR], [ETokenType.SLASH], [ETokenType.PERCENT]],\n ASTNode.IntegerConstantExpressionOperator.pool\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.integer_constant_expression,\n [\n [NoneTerminal.variable_identifier],\n [ETokenType.INT_CONSTANT],\n [\n NoneTerminal.integer_constant_expression,\n NoneTerminal.integer_constant_expression_operator,\n ETokenType.INT_CONSTANT\n ],\n [\n NoneTerminal.integer_constant_expression,\n NoneTerminal.integer_constant_expression_operator,\n NoneTerminal.variable_identifier\n ]\n ],\n ASTNode.IntegerConstantExpression.pool\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.conditional_expression,\n [\n [NoneTerminal.logical_or_expression],\n [\n NoneTerminal.logical_or_expression,\n ETokenType.QUESTION,\n NoneTerminal.expression,\n ETokenType.COLON,\n NoneTerminal.assignment_expression\n ]\n ],\n // #if _VERBOSE\n ASTNode.ConditionalExpression.pool\n // #endif\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.logical_or_expression,\n [\n [NoneTerminal.logical_xor_expression],\n [NoneTerminal.logical_or_expression, ETokenType.OR_OP, NoneTerminal.logical_xor_expression]\n ],\n // #if _VERBOSE\n ASTNode.LogicalOrExpression.pool\n // #endif\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.logical_xor_expression,\n [\n [NoneTerminal.logical_and_expression],\n [NoneTerminal.logical_xor_expression, ETokenType.XOR_OP, NoneTerminal.logical_and_expression]\n ],\n // #if _VERBOSE\n ASTNode.LogicalXorExpression.pool\n // #endif\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.logical_and_expression,\n [\n [NoneTerminal.inclusive_or_expression],\n [NoneTerminal.logical_and_expression, ETokenType.AND_OP, NoneTerminal.inclusive_or_expression]\n ],\n // #if _VERBOSE\n ASTNode.LogicalAndExpression.pool\n // #endif\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.inclusive_or_expression,\n [\n [NoneTerminal.exclusive_or_expression],\n [NoneTerminal.inclusive_or_expression, ETokenType.VERTICAL_BAR, NoneTerminal.exclusive_or_expression]\n ],\n // #if _VERBOSE\n ASTNode.InclusiveOrExpression.pool\n // #endif\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.exclusive_or_expression,\n [\n [NoneTerminal.and_expression],\n [NoneTerminal.exclusive_or_expression, ETokenType.CARET, NoneTerminal.and_expression]\n ],\n // #if _VERBOSE\n ASTNode.ExclusiveOrExpression.pool\n // #endif\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.and_expression,\n [\n [NoneTerminal.equality_expression],\n [NoneTerminal.and_expression, ETokenType.AMPERSAND, NoneTerminal.equality_expression]\n ],\n // #if _VERBOSE\n ASTNode.AndExpression.pool\n // #endif\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.equality_expression,\n [\n [NoneTerminal.relational_expression],\n [NoneTerminal.equality_expression, ETokenType.EQ_OP, NoneTerminal.relational_expression],\n [NoneTerminal.equality_expression, ETokenType.NE_OP, NoneTerminal.relational_expression]\n ],\n // #if _VERBOSE\n ASTNode.EqualityExpression.pool\n // #endif\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.relational_expression,\n [\n [NoneTerminal.shift_expression],\n [NoneTerminal.relational_expression, ETokenType.LEFT_ANGLE, NoneTerminal.shift_expression],\n [NoneTerminal.relational_expression, ETokenType.RIGHT_ANGLE, NoneTerminal.shift_expression],\n [NoneTerminal.relational_expression, ETokenType.LE_OP, NoneTerminal.shift_expression],\n [NoneTerminal.relational_expression, ETokenType.GE_OP, NoneTerminal.shift_expression]\n ],\n // #if _VERBOSE\n ASTNode.RelationalExpression.pool\n // #endif\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.shift_expression,\n [\n [NoneTerminal.additive_expression],\n [NoneTerminal.shift_expression, ETokenType.LEFT_OP, NoneTerminal.additive_expression],\n [NoneTerminal.shift_expression, ETokenType.RIGHT_OP, NoneTerminal.additive_expression]\n ],\n // #if _VERBOSE\n ASTNode.ShiftExpression.pool\n // #endif\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.additive_expression,\n [\n [NoneTerminal.multiplicative_expression],\n [NoneTerminal.additive_expression, ETokenType.PLUS, NoneTerminal.multiplicative_expression],\n [NoneTerminal.additive_expression, ETokenType.DASH, NoneTerminal.multiplicative_expression]\n ],\n // #if _VERBOSE\n ASTNode.AdditiveExpression.pool\n // #endif\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.multiplicative_expression,\n [\n [NoneTerminal.unary_expression],\n [NoneTerminal.multiplicative_expression, ETokenType.STAR, NoneTerminal.unary_expression],\n [NoneTerminal.multiplicative_expression, ETokenType.SLASH, NoneTerminal.unary_expression],\n [NoneTerminal.multiplicative_expression, ETokenType.PERCENT, NoneTerminal.unary_expression]\n ],\n // #if _VERBOSE\n ASTNode.MultiplicativeExpression.pool\n // #endif\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.unary_expression,\n [\n [NoneTerminal.postfix_expression],\n [ETokenType.INC_OP, NoneTerminal.unary_expression],\n [ETokenType.DEC_OP, NoneTerminal.unary_expression],\n [NoneTerminal.unary_operator, NoneTerminal.unary_expression]\n ],\n // #if _VERBOSE\n ASTNode.UnaryExpression.pool\n // #endif\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.unary_operator,\n [[ETokenType.PLUS], [ETokenType.DASH], [ETokenType.BANG], [ETokenType.TILDE]],\n // #if _VERBOSE\n ASTNode.UnaryOperator.pool\n // #endif\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.postfix_expression,\n [\n [NoneTerminal.primary_expression],\n [NoneTerminal.postfix_expression, ETokenType.LEFT_BRACKET, NoneTerminal.expression, ETokenType.RIGHT_BRACKET],\n [NoneTerminal.function_call],\n [NoneTerminal.postfix_expression, ETokenType.DOT, ETokenType.ID],\n [NoneTerminal.postfix_expression, ETokenType.DOT, NoneTerminal.function_call],\n [NoneTerminal.postfix_expression, ETokenType.INC_OP],\n [NoneTerminal.postfix_expression, ETokenType.DEC_OP]\n ],\n ASTNode.PostfixExpression.pool\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.primary_expression,\n [\n [NoneTerminal.variable_identifier],\n [ETokenType.INT_CONSTANT],\n [ETokenType.FLOAT_CONSTANT],\n [Keyword.True],\n [Keyword.False],\n [ETokenType.LEFT_PAREN, NoneTerminal.expression, ETokenType.RIGHT_PAREN]\n ],\n ASTNode.PrimaryExpression.pool\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.expression,\n [\n [NoneTerminal.assignment_expression],\n [NoneTerminal.expression, ETokenType.COMMA, NoneTerminal.assignment_expression]\n ],\n ASTNode.Expression.pool\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.assignment_expression,\n [\n [NoneTerminal.conditional_expression],\n [NoneTerminal.unary_expression, NoneTerminal.assignment_operator, NoneTerminal.assignment_expression]\n ],\n ASTNode.AssignmentExpression.pool\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.assignment_operator,\n [\n [ETokenType.EQUAL],\n [ETokenType.MUL_ASSIGN],\n [ETokenType.DIV_ASSIGN],\n [ETokenType.MOD_ASSIGN],\n [ETokenType.ADD_ASSIGN],\n [ETokenType.SUB_ASSIGN],\n [ETokenType.LEFT_ASSIGN],\n [ETokenType.RIGHT_ASSIGN],\n [ETokenType.AND_ASSIGN],\n [ETokenType.XOR_ASSIGN],\n [ETokenType.OR_ASSIGN]\n ],\n // #if _VERBOSE\n ASTNode.AssignmentOperator.pool\n // #endif\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.function_call,\n [[NoneTerminal.function_call_generic]],\n ASTNode.FunctionCall.pool\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.function_call_generic,\n [\n [\n NoneTerminal.function_identifier,\n ETokenType.LEFT_PAREN,\n NoneTerminal.function_call_parameter_list,\n ETokenType.RIGHT_PAREN\n ],\n [NoneTerminal.function_identifier, ETokenType.LEFT_PAREN, ETokenType.RIGHT_PAREN],\n [NoneTerminal.function_identifier, Keyword.VOID, ETokenType.RIGHT_PAREN]\n ],\n ASTNode.FunctionCallGeneric.pool\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.function_call_parameter_list,\n [\n [NoneTerminal.assignment_expression],\n [NoneTerminal.function_call_parameter_list, ETokenType.COMMA, NoneTerminal.assignment_expression],\n [NoneTerminal.macro_call_arg_block],\n [NoneTerminal.function_call_parameter_list, NoneTerminal.macro_call_arg_block]\n ],\n ASTNode.FunctionCallParameterList.pool\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.macro_call_arg_case_list,\n [\n [NoneTerminal.assignment_expression],\n [ETokenType.COMMA, NoneTerminal.assignment_expression],\n [NoneTerminal.macro_call_arg_block],\n [NoneTerminal.macro_call_arg_case_list, NoneTerminal.macro_call_arg_block],\n [NoneTerminal.macro_call_arg_case_list, ETokenType.COMMA, NoneTerminal.assignment_expression]\n ],\n ASTNode.MacroCallArgCaseList.pool\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.macro_call_arg_block,\n [\n [NoneTerminal.macro_push_context, NoneTerminal.macro_call_arg_branch],\n [NoneTerminal.macro_push_context, NoneTerminal.macro_call_arg_case_list, NoneTerminal.macro_call_arg_branch]\n ],\n ASTNode.MacroCallArgBlock.pool\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.macro_call_arg_branch,\n [\n [NoneTerminal.macro_pop_context],\n [NoneTerminal.macro_elif_expression, NoneTerminal.macro_call_arg_case_list, NoneTerminal.macro_call_arg_branch],\n [NoneTerminal.macro_else_expression, NoneTerminal.macro_call_arg_case_list, NoneTerminal.macro_pop_context],\n [NoneTerminal.macro_elif_expression, NoneTerminal.macro_call_arg_branch],\n [NoneTerminal.macro_else_expression, NoneTerminal.macro_pop_context]\n ],\n ASTNode.MacroCallArgBranch.pool\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.function_identifier,\n [[NoneTerminal.type_specifier]],\n ASTNode.FunctionIdentifier.pool\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.function_definition,\n [[NoneTerminal.function_prototype, NoneTerminal.compound_statement_no_scope]],\n ASTNode.FunctionDefinition.pool\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.function_prototype,\n [[NoneTerminal.function_declarator, ETokenType.RIGHT_PAREN]],\n ASTNode.FunctionProtoType.pool\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.function_declarator,\n [[NoneTerminal.function_header], [NoneTerminal.function_header, NoneTerminal.function_parameter_list]],\n ASTNode.FunctionDeclarator.pool\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.function_header,\n [[NoneTerminal.fully_specified_type, ETokenType.ID, ETokenType.LEFT_PAREN]],\n ASTNode.FunctionHeader.pool\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.function_parameter_list,\n [\n [NoneTerminal.parameter_declaration],\n [NoneTerminal.function_parameter_list, ETokenType.COMMA, NoneTerminal.parameter_declaration],\n [NoneTerminal.macro_param_block],\n [NoneTerminal.function_parameter_list, NoneTerminal.macro_param_block]\n ],\n ASTNode.FunctionParameterList.pool\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.macro_param_case_list,\n [\n [NoneTerminal.parameter_declaration],\n [ETokenType.COMMA, NoneTerminal.parameter_declaration],\n [NoneTerminal.macro_param_block],\n [NoneTerminal.macro_param_case_list, NoneTerminal.macro_param_block],\n [NoneTerminal.macro_param_case_list, ETokenType.COMMA, NoneTerminal.parameter_declaration]\n ],\n ASTNode.MacroParamCaseList.pool\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.macro_param_block,\n [\n [NoneTerminal.macro_push_context, NoneTerminal.macro_parameter_branch],\n [NoneTerminal.macro_push_context, NoneTerminal.macro_param_case_list, NoneTerminal.macro_parameter_branch]\n ],\n ASTNode.MacroParamBlock.pool\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.macro_parameter_branch,\n [\n [NoneTerminal.macro_pop_context],\n [NoneTerminal.macro_elif_expression, NoneTerminal.macro_param_case_list, NoneTerminal.macro_parameter_branch],\n [NoneTerminal.macro_else_expression, NoneTerminal.macro_param_case_list, NoneTerminal.macro_pop_context],\n [NoneTerminal.macro_elif_expression, NoneTerminal.macro_parameter_branch],\n [NoneTerminal.macro_else_expression, NoneTerminal.macro_pop_context]\n ],\n ASTNode.MacroParameterBranch.pool\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.parameter_declaration,\n [\n [NoneTerminal.type_qualifier, NoneTerminal.parameter_declarator],\n [NoneTerminal.parameter_declarator],\n [NoneTerminal.macro_call_symbol],\n [NoneTerminal.macro_call_function]\n ],\n ASTNode.ParameterDeclaration.pool\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.parameter_declarator,\n [\n [NoneTerminal.type_specifier, ETokenType.ID],\n [NoneTerminal.type_specifier, ETokenType.ID, NoneTerminal.array_specifier]\n ],\n ASTNode.ParameterDeclarator.pool\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.statement_list,\n [[NoneTerminal.statement], [NoneTerminal.statement_list, NoneTerminal.statement]],\n ASTNode.StatementList.pool\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.statement,\n [[NoneTerminal.compound_statement], [NoneTerminal.simple_statement]],\n // #if _VERBOSE\n ASTNode.Statement.pool\n // #endif\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.compound_statement_no_scope,\n [\n [ETokenType.LEFT_BRACE, ETokenType.RIGHT_BRACE],\n [ETokenType.LEFT_BRACE, NoneTerminal.statement_list, ETokenType.RIGHT_BRACE]\n ],\n ASTNode.CompoundStatementNoScope.pool\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.compound_statement,\n [\n [ETokenType.LEFT_BRACE, ETokenType.RIGHT_BRACE],\n [NoneTerminal.scope_brace, NoneTerminal.statement_list, NoneTerminal.scope_end_brace]\n ],\n // #if _VERBOSE\n ASTNode.CompoundStatement.pool\n // #endif\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.simple_statement,\n [\n [NoneTerminal.declaration],\n [NoneTerminal.expression_statement],\n [NoneTerminal.selection_statement],\n [NoneTerminal.iteration_statement],\n [NoneTerminal.jump_statement],\n [NoneTerminal.macro_if_statement],\n [NoneTerminal.macro_undef],\n [NoneTerminal.macro_define],\n [Keyword.MACRO_DEFINE_EXPRESSION]\n ],\n // #if _VERBOSE\n ASTNode.SimpleStatement.pool\n // #endif\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.declaration,\n [\n [NoneTerminal.function_prototype, ETokenType.SEMICOLON],\n [NoneTerminal.init_declarator_list, ETokenType.SEMICOLON],\n [\n Keyword.PRECISION,\n NoneTerminal.precision_qualifier,\n NoneTerminal.ext_builtin_type_specifier_nonarray,\n ETokenType.SEMICOLON\n ],\n [NoneTerminal.type_qualifier, ETokenType.ID, ETokenType.SEMICOLON],\n [NoneTerminal.type_qualifier, ETokenType.ID, NoneTerminal.identifier_list, ETokenType.SEMICOLON]\n ],\n ASTNode.Declaration.pool\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.identifier_list,\n [\n [ETokenType.COMMA, ETokenType.ID],\n [NoneTerminal.identifier_list, ETokenType.COMMA, ETokenType.ID]\n ],\n ASTNode.IdentifierList.pool\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.init_declarator_list,\n [\n [NoneTerminal.single_declaration],\n [NoneTerminal.init_declarator_list, ETokenType.COMMA, ETokenType.ID],\n [NoneTerminal.init_declarator_list, ETokenType.COMMA, ETokenType.ID, NoneTerminal.array_specifier],\n [\n NoneTerminal.init_declarator_list,\n ETokenType.COMMA,\n ETokenType.ID,\n NoneTerminal.array_specifier,\n ETokenType.EQUAL,\n NoneTerminal.initializer\n ],\n [NoneTerminal.init_declarator_list, ETokenType.COMMA, ETokenType.ID, ETokenType.EQUAL, NoneTerminal.initializer]\n ],\n ASTNode.InitDeclaratorList.pool\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.single_declaration,\n [\n [NoneTerminal.fully_specified_type, ETokenType.ID],\n [NoneTerminal.fully_specified_type, ETokenType.ID, NoneTerminal.array_specifier],\n [\n NoneTerminal.fully_specified_type,\n ETokenType.ID,\n NoneTerminal.array_specifier,\n ETokenType.EQUAL,\n NoneTerminal.initializer\n ],\n [NoneTerminal.fully_specified_type, ETokenType.ID, ETokenType.EQUAL, NoneTerminal.initializer],\n // Declarator name collides with a `#define` from a sibling `#if expr` arm\n // whose value the lexer can't evaluate. Branch-mutex covers `#if`/`#else`\n // pairs; this variant is the fallback for cross-`#if` collisions (e.g.\n // FXAA's `#define lumaNW …` shadowing `FxaaFloat lumaNW = …`).\n [NoneTerminal.fully_specified_type, Keyword.MACRO_CALL],\n [NoneTerminal.fully_specified_type, Keyword.MACRO_CALL, ETokenType.EQUAL, NoneTerminal.initializer]\n ],\n ASTNode.SingleDeclaration.pool\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.initializer,\n [\n [NoneTerminal.assignment_expression],\n [ETokenType.LEFT_BRACE, NoneTerminal.initializer_list, ETokenType.RIGHT_BRACE]\n ],\n // #if _VERBOSE\n ASTNode.Initializer.pool\n // #endif\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.initializer_list,\n [[NoneTerminal.initializer], [NoneTerminal.initializer_list, ETokenType.COMMA, NoneTerminal.initializer]],\n // #if _VERBOSE\n ASTNode.InitializerList.pool\n // #endif\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.expression_statement,\n [[ETokenType.SEMICOLON], [NoneTerminal.expression, ETokenType.SEMICOLON]],\n // #if _VERBOSE\n ASTNode.ExpressionStatement.pool\n // #endif\n ),\n\n // dangling else ambiguity\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.selection_statement,\n [\n [Keyword.IF, ETokenType.LEFT_PAREN, NoneTerminal.expression, ETokenType.RIGHT_PAREN, NoneTerminal.statement],\n [\n Keyword.IF,\n ETokenType.LEFT_PAREN,\n NoneTerminal.expression,\n ETokenType.RIGHT_PAREN,\n NoneTerminal.statement,\n Keyword.ELSE,\n NoneTerminal.statement\n ]\n ],\n // #if _VERBOSE\n ASTNode.SelectionStatement.pool\n // #endif\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.iteration_statement,\n [\n [Keyword.WHILE, ETokenType.LEFT_PAREN, NoneTerminal.condition, ETokenType.RIGHT_PAREN, NoneTerminal.statement],\n [\n Keyword.FOR,\n ETokenType.LEFT_PAREN,\n NoneTerminal.for_init_statement,\n NoneTerminal.for_rest_statement,\n ETokenType.RIGHT_PAREN,\n NoneTerminal.statement\n ]\n ],\n // #if _VERBOSE\n ASTNode.IterationStatement.pool\n // #endif\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.precision_specifier,\n [\n [\n Keyword.PRECISION,\n NoneTerminal.precision_qualifier,\n NoneTerminal.ext_builtin_type_specifier_nonarray,\n ETokenType.SEMICOLON\n ]\n ],\n ASTNode.PrecisionSpecifier.pool\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.for_init_statement,\n [[NoneTerminal.expression_statement], [NoneTerminal.declaration]],\n // #if _VERBOSE\n ASTNode.ForInitStatement.pool\n // #endif\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.condition,\n [\n [NoneTerminal.expression],\n [NoneTerminal.fully_specified_type, ETokenType.ID, ETokenType.EQUAL, NoneTerminal.initializer]\n ],\n // #if _VERBOSE\n ASTNode.Condition.pool\n // #endif\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.for_rest_statement,\n [\n [NoneTerminal.conditionopt, ETokenType.SEMICOLON],\n [NoneTerminal.conditionopt, ETokenType.SEMICOLON, NoneTerminal.expression]\n ],\n // #if _VERBOSE\n ASTNode.ForRestStatement.pool\n // #endif\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.conditionopt,\n [[ETokenType.EPSILON], [NoneTerminal.condition]],\n // #if _VERBOSE\n ASTNode.ConditionOpt.pool\n // #endif\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.jump_statement,\n [\n [Keyword.CONTINUE, ETokenType.SEMICOLON],\n [Keyword.BREAK, ETokenType.SEMICOLON],\n [Keyword.RETURN, ETokenType.SEMICOLON],\n [Keyword.RETURN, NoneTerminal.expression, ETokenType.SEMICOLON],\n [Keyword.DISCARD, ETokenType.SEMICOLON]\n ],\n ASTNode.JumpStatement.pool\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.scope_brace,\n [[ETokenType.LEFT_BRACE]],\n ASTNode.ScopeBrace.pool\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.scope_end_brace,\n [[ETokenType.RIGHT_BRACE]],\n ASTNode.ScopeEndBrace.pool\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.variable_identifier,\n [[ETokenType.ID], [NoneTerminal.macro_call_symbol], [NoneTerminal.macro_call_function]],\n ASTNode.VariableIdentifier.pool\n ),\n\n // Macros ...\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.macro_if_statement,\n [\n [NoneTerminal.macro_push_context, NoneTerminal.statement_list, NoneTerminal.macro_branch],\n [NoneTerminal.macro_push_context, NoneTerminal.macro_branch]\n ],\n ASTNode.MacroIfStatement.pool\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.macro_branch,\n [\n [NoneTerminal.macro_pop_context],\n [NoneTerminal.macro_elif_expression, NoneTerminal.statement_list, NoneTerminal.macro_branch],\n [NoneTerminal.macro_else_expression, NoneTerminal.statement_list, NoneTerminal.macro_pop_context],\n [NoneTerminal.macro_elif_expression, NoneTerminal.macro_branch],\n [NoneTerminal.macro_else_expression, NoneTerminal.macro_pop_context]\n ],\n ASTNode.MacroBranch.pool\n )\n];\n\nconst createGrammar = () =>\n Grammar.create(\n NoneTerminal.gs_shader_program,\n productionAndRules.map((item) => item[0])\n );\n\nconst addTranslationRule = (sa: SemanticAnalyzer) => {\n for (let i = 0; i < productionAndRules.length; i++) {\n const rule = productionAndRules[i][1];\n if (rule) {\n sa.addTranslationRule(i, rule);\n }\n }\n};\n\nexport { addTranslationRule, createGrammar };\n","import { ETokenType } from \"../common\";\nimport { BaseToken } from \"../common/BaseToken\";\nimport { Keyword } from \"../common/enums/Keyword\";\nimport { GSError, GSErrorName } from \"../GSError\";\nimport { LALR1 } from \"../lalr\";\nimport { addTranslationRule, createGrammar } from \"../lalr/CFG\";\nimport { EAction, StateActionTable, StateGotoTable } from \"../lalr/types\";\nimport { MacroDefineList } from \"../Preprocessor\";\nimport { ParserUtils } from \"../ParserUtils\";\nimport { ShaderCompiler } from \"../ShaderCompiler\";\nimport { ShaderCompilerUtils } from \"../ShaderCompilerUtils\";\nimport { ASTNode, TreeNode } from \"./AST\";\nimport { Grammar } from \"./Grammar\";\nimport { GrammarSymbol, NoneTerminal } from \"./GrammarSymbol\";\nimport SematicAnalyzer from \"./SemanticAnalyzer\";\nimport { ESymbolType, SymbolInfo } from \"./symbolTable\";\nimport { TraceStackItem } from \"./types\";\n\n/**\n * The syntax parser and sematic analyzer of `ShaderCompiler` compiler\n */\nexport class ShaderTargetParser {\n readonly actionTable: StateActionTable;\n readonly gotoTable: StateGotoTable;\n readonly grammar: Grammar;\n readonly sematicAnalyzer: SematicAnalyzer;\n private _traceBackStack: (TraceStackItem | number)[] = [];\n\n private get curState() {\n return this._traceBackStack[this._traceBackStack.length - 1] as number;\n }\n private get stateActionTable() {\n return this.actionTable.get(this.curState)!;\n }\n private get stateGotoTable() {\n return this.gotoTable.get(this.curState);\n }\n\n // #if _VERBOSE\n /** @internal */\n get errors() {\n return this.sematicAnalyzer.errors;\n }\n // #endif\n\n static _singleton: ShaderTargetParser;\n\n static create() {\n if (!this._singleton) {\n const grammar = createGrammar();\n const generator = new LALR1(grammar);\n generator.generate();\n this._singleton = new ShaderTargetParser(generator.actionTable, generator.gotoTable, grammar);\n addTranslationRule(this._singleton.sematicAnalyzer);\n }\n\n return this._singleton;\n }\n\n private constructor(actionTable: StateActionTable, gotoTable: StateGotoTable, grammar: Grammar) {\n this.actionTable = actionTable;\n this.gotoTable = gotoTable;\n this.grammar = grammar;\n this.sematicAnalyzer = new SematicAnalyzer();\n }\n\n parse(tokens: Generator<BaseToken, BaseToken>, macroDefineList: MacroDefineList): ASTNode.GLShaderProgram | null {\n this.sematicAnalyzer.reset(macroDefineList);\n const { _traceBackStack: traceBackStack, sematicAnalyzer } = this;\n traceBackStack.push(0);\n\n let nextToken = tokens.next();\n while (true) {\n const token = nextToken.value;\n\n const actionInfo = this.stateActionTable.get(token.type);\n if (actionInfo?.action === EAction.Shift) {\n traceBackStack.push(token, actionInfo.target!);\n // Function-like `#define` form params live in a scope wrapping the\n // value AST, mirroring how `function_header` opens a scope for GLSL\n // function parameters. Push on shift of `MACRO_DEFINE_PARAMS`; the\n // matching `popScope` runs when `MacroDefine.semanticAnalyze` reduces\n // the production (only the function-like alternative needs it, and\n // it knows that from its own children).\n if (token.type === Keyword.MACRO_DEFINE_PARAMS) {\n sematicAnalyzer.pushScope();\n for (const p of ParserUtils.parseMacroParamList(token.lexeme)) {\n sematicAnalyzer.symbolTableStack.insert(new SymbolInfo(p, ESymbolType.VAR));\n }\n }\n nextToken = tokens.next();\n } else if (actionInfo?.action === EAction.Accept) {\n sematicAnalyzer.acceptRule?.(sematicAnalyzer);\n return sematicAnalyzer.semanticStack.pop() as ASTNode.GLShaderProgram;\n } else if (actionInfo?.action === EAction.Reduce) {\n const target = actionInfo.target!;\n const reduceProduction = this.grammar.getProductionByID(target)!;\n const translationRule = sematicAnalyzer.getTranslationRule(reduceProduction.id);\n\n const values: (TreeNode | BaseToken)[] = [];\n\n for (let i = reduceProduction.derivation.length - 1; i >= 0; i--) {\n if (reduceProduction.derivation[i] === ETokenType.EPSILON) continue;\n traceBackStack.pop();\n const token = traceBackStack.pop();\n if (token instanceof BaseToken) {\n values.unshift(token);\n } else {\n const astNode = sematicAnalyzer.semanticStack.pop()!;\n values.unshift(astNode);\n }\n }\n translationRule?.(sematicAnalyzer, ...values);\n\n const gotoTable = this.stateGotoTable;\n traceBackStack.push(reduceProduction.goal);\n\n const nextState = gotoTable?.get(reduceProduction.goal)!;\n traceBackStack.push(nextState);\n continue;\n } else {\n const error = ShaderCompilerUtils.createGSError(\n `Unexpected token ${token.lexeme}`,\n GSErrorName.CompilationError,\n ShaderCompiler._processingPassText,\n token.location\n );\n // #if _VERBOSE\n this.sematicAnalyzer.errors.push(<GSError>error);\n // #endif\n return null;\n }\n }\n }\n\n // #if _VERBOSE\n private _printStack(nextToken: BaseToken) {\n let str = \"\";\n for (let i = 0; i < this._traceBackStack.length - 1; i++) {\n const state = <NoneTerminal>this._traceBackStack[i++];\n const token = this._traceBackStack[i];\n str += `State${state} - ${(<BaseToken>token).lexeme ?? ParserUtils.toString(token as GrammarSymbol)}; `;\n }\n str += `State${this._traceBackStack[this._traceBackStack.length - 1]} --- ${nextToken.lexeme}`;\n console.info(str);\n }\n // #endif\n}\n","import type { ASTNode } from \"./parser/AST\";\nimport type { BranchSignature } from \"./common/BaseToken\";\n\n// Mirrors `ShaderPass._shaderRootPath`; inlined to keep shader-compiler standalone.\nconst SHADER_ROOT_PATH = \"shaders://root/\";\n\nexport type IncludeMap = { readonly [includeName: string]: string | undefined };\n\nexport type ChunkOutputCache = Map<string, string>;\n\nexport interface MacroDefineInfo {\n isFunction: boolean;\n params: string[];\n /** Value AST. Set when the replacement list parses as `expression` (which\n * includes comma-separated lists per C99 §6.10.3); absent for the GLSL ES\n * 3.00 §3.4 opaque cases the grammar can't reduce (empty, type-alias keyword,\n * trailing punctuation, unbalanced bracket, trailing operator). Identifier\n * references inside are collected by `MacroCallSymbol._collectIdentifierRefs`\n * walking this subtree. */\n valueAst?: ASTNode.Expression;\n /** Whitespace-normalized directive text. Dedup key against re-includes in\n * the same branch; differing values produce different keys. */\n dedupKey: string;\n /** `#ifdef` branch at registration time; call sites filter to visible entries. */\n branch: BranchSignature;\n}\n\nexport interface MacroDefineList {\n [macroName: string]: MacroDefineInfo[];\n}\n\nexport class Preprocessor {\n // Block-comment alternation prevents expanding `#include` inside doc comments.\n private static readonly _includeReg = /\\/\\*[\\s\\S]*?\\*\\/|^[ \\t]*#include +\"([\\w\\d./]+)\"/gm;\n\n static parse(\n source: string,\n basePathForIncludeKey: string,\n includeMap: IncludeMap,\n chunkOutputCache: ChunkOutputCache\n ): string {\n return source.replace(this._includeReg, (match, includeName) =>\n includeName ? this._replace(includeName, basePathForIncludeKey, includeMap, chunkOutputCache) : match\n );\n }\n\n private static _replace(\n includeName: string,\n basePathForIncludeKey: string,\n includeMap: IncludeMap,\n chunkOutputCache: ChunkOutputCache\n ): string {\n let path: string;\n if (includeName[0] === \".\") {\n path = new URL(includeName, basePathForIncludeKey).href.substring(SHADER_ROOT_PATH.length);\n } else {\n path = includeName;\n }\n\n const chunk = includeMap[path];\n if (!chunk) {\n console.error(`Shader slice \"${path}\" not founded.`);\n return \"\";\n }\n\n let cached = chunkOutputCache.get(path);\n if (cached === undefined) {\n cached = this.parse(chunk, basePathForIncludeKey, includeMap, chunkOutputCache);\n chunkOutputCache.set(path, cached);\n }\n return cached;\n }\n}\n","function _extends() {\n _extends = Object.assign || function assign(target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n for (var key in source) if (Object.prototype.hasOwnProperty.call(source, key)) target[key] = source[key];\n }\n\n return target;\n };\n\n return _extends.apply(this, arguments);\n}\nexport { _extends as _ };\n","import type { IRenderStates, IShaderPassSource, IShaderSource, ISubShaderSource } from \"@galacean/engine-design\";\n\nexport class ShaderSourceFactory {\n static createRenderStates(): IRenderStates {\n return {\n constantMap: {},\n variableMap: {}\n };\n }\n\n static createShaderSource(name: string): IShaderSource {\n return {\n name,\n subShaders: [],\n pendingContents: [],\n renderStates: this.createRenderStates()\n };\n }\n\n static createSubShaderSource(name: string): ISubShaderSource {\n return {\n name,\n passes: [],\n pendingContents: [],\n tags: {},\n renderStates: this.createRenderStates()\n };\n }\n\n static createShaderPassSource(name: string): IShaderPassSource {\n return {\n name,\n pendingContents: [],\n tags: {},\n renderStates: this.createRenderStates()\n } as IShaderPassSource;\n }\n\n static createUsePass(name: string): IShaderPassSource {\n return {\n name,\n pendingContents: [],\n isUsePass: true,\n tags: {},\n renderStates: this.createRenderStates()\n } as IShaderPassSource;\n }\n}\n","import { IBaseSymbol } from \"../common/IBaseSymbol\";\n\nexport class ShaderSourceSymbol implements IBaseSymbol {\n public isInMacroBranch: boolean = false;\n\n constructor(\n public ident: string,\n public type: number,\n public value?: any\n ) {}\n\n set(ident: string, type: number, value?: any): void {\n this.ident = ident;\n this.type = type;\n this.value = value;\n }\n\n equal(other: ShaderSourceSymbol): boolean {\n return this.type === other.type;\n }\n}\n","import { Color } from \"@galacean/engine-math\";\nimport { ETokenType, ShaderPosition, ShaderRange } from \"../common\";\nimport { BaseLexer } from \"../common/BaseLexer\";\nimport { BaseToken } from \"../common/BaseToken\";\nimport { Keyword } from \"../common/enums/Keyword\";\nimport { GSErrorName } from \"../GSError\";\nimport { ShaderCompiler } from \"../ShaderCompiler\";\nimport { ShaderCompilerUtils } from \"../ShaderCompilerUtils\";\n\nexport default class SourceLexer extends BaseLexer {\n hasPendingContent = false;\n\n private static _keywordLexemeTable = <Record<string, Keyword>>{\n RenderQueueType: Keyword.GSRenderQueueType,\n BlendState: Keyword.GSBlendState,\n DepthState: Keyword.GSDepthState,\n StencilState: Keyword.GSStencilState,\n RasterState: Keyword.GSRasterState,\n EditorProperties: Keyword.GSEditorProperties,\n EditorMacros: Keyword.GSEditorMacros,\n Editor: Keyword.GSEditor,\n Tags: Keyword.GSTags,\n VertexShader: Keyword.GSVertexShader,\n FragmentShader: Keyword.GSFragmentShader,\n SubShader: Keyword.GSSubShader,\n Pass: Keyword.GSPass,\n BlendFactor: Keyword.GSBlendFactor,\n BlendOperation: Keyword.GSBlendOperation,\n Bool: Keyword.GSBool,\n Number: Keyword.GSNumber,\n Color: Keyword.GSColor,\n CompareFunction: Keyword.GSCompareFunction,\n StencilOperation: Keyword.GSStencilOperation,\n CullMode: Keyword.GSCullMode,\n ColorWriteMask: Keyword.GSColorWriteMask,\n UsePass: Keyword.GSUsePass,\n\n true: Keyword.True,\n false: Keyword.False\n };\n\n private static _symbolLexemeTable = <Record<string, Keyword>>{\n \"{\": Keyword.LeftBrace,\n \"}\": Keyword.RightBrace,\n \"=\": Keyword.Equal,\n \"|\": Keyword.BitwiseOr\n };\n\n private static _isWordSeparatorChar(charCode: number): boolean {\n return (\n charCode === 123 || // {\n charCode === 125 || // }\n charCode === 61 || // =\n charCode === 59 || // ;\n charCode === 46 || // . CullMode.Back\n charCode === 91 || // [ Enabled[0],\n charCode === 40 || // ( Color(1.0, 1.0, 1.0, 1.0);\n charCode === 124 // | ColorWriteMask.Red | ColorWriteMask.Green\n );\n }\n\n private static _scanDigits(source: string, startIndex: number): number {\n let currentIndex = startIndex;\n while (currentIndex < source.length) {\n const charCode = source.charCodeAt(currentIndex);\n if (BaseLexer.isDigit(charCode)) {\n currentIndex++;\n } else {\n break;\n }\n }\n return currentIndex;\n }\n\n scanNumber(): number {\n this.skipCommentsAndSpace();\n const start = this._currentIndex;\n const source = this._source;\n let index = this._currentIndex;\n\n // Scan integer part\n index = SourceLexer._scanDigits(source, index);\n\n // Scan decimal part if present\n if (source[index] === \".\") {\n index = SourceLexer._scanDigits(source, index + 1);\n }\n\n this.advance(index - this._currentIndex);\n return Number(source.substring(start, index));\n }\n\n scanColor(): Color {\n this.scanLexeme(\"(\");\n\n let r = 0;\n let g = 0;\n let b = 0;\n let a = 1;\n\n r = this.scanNumber();\n this.skipCommentsAndSpace();\n if (this.peek(1) !== \")\") {\n this.scanLexeme(\",\");\n g = this.scanNumber();\n this.skipCommentsAndSpace();\n if (this.peek(1) !== \")\") {\n this.scanLexeme(\",\");\n b = this.scanNumber();\n this.skipCommentsAndSpace();\n if (this.peek(1) !== \")\") {\n this.scanLexeme(\",\");\n a = this.scanNumber();\n this.skipCommentsAndSpace();\n }\n }\n }\n\n this.scanLexeme(\")\");\n return new Color(r, g, b, a);\n }\n\n override scanToken(): BaseToken {\n while (true) {\n this.skipCommentsAndSpace();\n\n if (this.isEnd()) {\n return;\n }\n\n const start = this.getShaderPosition(0);\n if (BaseLexer.isAlpha(this.getCurCharCode())) {\n const wordToken = this._scanWord(start);\n if (wordToken !== null) {\n return wordToken;\n }\n this.hasPendingContent = true;\n continue; // Continue loop to scan next token if word was invalid\n }\n\n const currentChar = this.getCurChar();\n const symbolKeyword = SourceLexer._symbolLexemeTable[currentChar];\n if (symbolKeyword !== undefined) {\n this.advance(1);\n const token = BaseToken.pool.get();\n token.set(symbolKeyword, currentChar, start);\n return token;\n }\n\n // Skip unrecognized character and continue\n this.advance(1);\n }\n }\n\n // #if _VERBOSE\n scanToCharacter(char: string): void {\n while (this.getCurChar() !== char && !this.isEnd()) {\n this.advance(1);\n }\n this.advance(1);\n }\n // #endif\n\n createCompileError(message: string, location?: ShaderPosition | ShaderRange) {\n return ShaderCompilerUtils.createGSError(\n message,\n GSErrorName.CompilationError,\n this.source,\n location ?? this.getShaderPosition(0)\n );\n }\n\n private _scanWord(start: ShaderPosition): BaseToken | null {\n // Scan the complete word first\n while (BaseLexer.isAlnum(this.getCurCharCode()) && !this.isEnd()) {\n this.advance(1);\n }\n const end = this.getShaderPosition(0);\n\n // Validate both boundaries in one optimized call\n if (!this._validateWordBoundaries(start.index, end.index)) {\n return null; // Invalid word due to boundary violation\n }\n\n const lexeme = this._source.substring(start.index, end.index);\n const tokenType = SourceLexer._keywordLexemeTable[lexeme] ?? ETokenType.ID;\n const range = ShaderCompiler.createRange(start, end);\n const token = BaseToken.pool.get();\n token.set(tokenType, lexeme, range);\n return token;\n }\n\n private _validateWordBoundaries(startIndex: number, endIndex: number): boolean {\n const source = this._source;\n\n // Check previous boundary\n if (startIndex > 0) {\n const prevCharCode = source.charCodeAt(startIndex - 1);\n if (!this._isValidWordBoundary(prevCharCode)) {\n return false;\n }\n }\n\n // Check next boundary\n if (endIndex < source.length) {\n const nextCharCode = source.charCodeAt(endIndex);\n if (!this._isValidWordBoundary(nextCharCode)) {\n return false;\n }\n }\n\n return true;\n }\n\n private _isValidWordBoundary(charCode: number): boolean {\n return BaseLexer.isWhiteSpaceChar(charCode, true) || SourceLexer._isWordSeparatorChar(charCode);\n }\n}\n","import { Color } from \"@galacean/engine-math\";\nimport {\n BlendFactor,\n BlendOperation,\n ColorWriteMask,\n CompareFunction,\n CullMode,\n RenderQueueType,\n RenderStateElementKey,\n StencilOperation\n} from \"@galacean/engine-core\";\nimport type {\n IRenderStates,\n IShaderPassSource,\n IShaderSource,\n IStatement,\n ISubShaderSource\n} from \"@galacean/engine-design\";\nimport { ETokenType, ShaderPosition, ShaderRange } from \"../common\";\nimport { BaseToken } from \"../common/BaseToken\";\nimport { SymbolTableStack } from \"../common/SymbolTableStack\";\nimport { GSErrorName } from \"../GSError\";\n// #if _VERBOSE\nimport { GSError } from \"../GSError\";\n// #endif\nimport { BaseLexer } from \"../common/BaseLexer\";\nimport { Keyword } from \"../common/enums/Keyword\";\nimport { SymbolTable } from \"../common/SymbolTable\";\nimport { ShaderCompilerUtils } from \"../ShaderCompilerUtils\";\nimport { ShaderSourceFactory } from \"./ShaderSourceFactory\";\nimport { ShaderSourceSymbol } from \"./ShaderSourceSymbol\";\nimport SourceLexer from \"./SourceLexer\";\n\n/**\n * @internal\n */\nexport class ShaderSourceParser {\n static readonly errors = new Array<GSError>();\n\n private static _renderStateConstMap = <Record<string, Record<string, number | string | boolean>>>{\n RenderQueueType,\n CompareFunction,\n StencilOperation,\n BlendOperation,\n BlendFactor,\n CullMode,\n ColorWriteMask\n };\n private static _symbolTableStack = new SymbolTableStack<ShaderSourceSymbol, SymbolTable<ShaderSourceSymbol>>();\n private static _lexer = new SourceLexer();\n private static _lookupSymbol = new ShaderSourceSymbol(\"\", null);\n\n static parse(sourceCode: string): IShaderSource {\n // Clear previous data\n this.errors.length = 0;\n this._symbolTableStack.clear();\n this._pushScope();\n\n const lexer = this._lexer;\n lexer.setSource(sourceCode);\n\n const shaderSource = this._parseShader(lexer);\n\n const shaderPendingContents = shaderSource.pendingContents;\n const shaderRenderStates = shaderSource.renderStates;\n for (let i = 0, n = shaderSource.subShaders.length; i < n; i++) {\n const subShader = shaderSource.subShaders[i];\n const curSubShaderGlobalStatements = shaderPendingContents.concat(subShader.pendingContents);\n const globalSubShaderStates = {\n constantMap: { ...shaderRenderStates.constantMap },\n variableMap: { ...shaderRenderStates.variableMap }\n };\n this._mergeRenderStates(globalSubShaderStates, subShader.renderStates);\n\n for (let j = 0, m = subShader.passes.length; j < m; j++) {\n const pass = subShader.passes[j];\n const globalPassRenderStates = {\n constantMap: { ...globalSubShaderStates.constantMap },\n variableMap: { ...globalSubShaderStates.variableMap }\n };\n this._mergeRenderStates(globalPassRenderStates, pass.renderStates);\n pass.renderStates = globalPassRenderStates;\n\n if (pass.isUsePass) continue;\n const passGlobalStatements = curSubShaderGlobalStatements.concat(pass.pendingContents);\n pass.contents = passGlobalStatements.map((item) => item.content).join(\"\\n\");\n }\n }\n\n return shaderSource;\n }\n\n private static _parseShader(lexer: SourceLexer): IShaderSource {\n // Parse shader header\n lexer.scanLexeme(\"Shader\");\n const name = lexer.scanPairedChar('\"', '\"', false, false);\n const shaderSource = ShaderSourceFactory.createShaderSource(name);\n lexer.scanLexeme(\"{\");\n\n let braceLevel = 1;\n lexer.skipCommentsAndSpace();\n let start = lexer.getShaderPosition(0);\n\n const { pendingContents } = shaderSource;\n while (true) {\n const token = lexer.scanToken();\n switch (token.type) {\n case Keyword.GSSubShader:\n this._addPendingContents(start, token.lexeme.length, pendingContents);\n const subShader = this._parseSubShader();\n shaderSource.subShaders.push(subShader);\n start = lexer.getShaderPosition(0);\n break;\n case Keyword.GSEditorProperties:\n case Keyword.GSEditorMacros:\n case Keyword.GSEditor:\n this._addPendingContents(start, token.lexeme.length, pendingContents);\n lexer.scanPairedChar(\"{\", \"}\", true, false);\n start = lexer.getShaderPosition(0);\n break;\n case Keyword.LeftBrace:\n ++braceLevel;\n break;\n case Keyword.RightBrace:\n if (--braceLevel === 0) {\n this._addPendingContents(start, token.lexeme.length, pendingContents);\n this._popScope();\n return shaderSource;\n }\n break;\n default:\n start = this._parseRenderState(token, start, pendingContents, shaderSource.renderStates);\n }\n }\n }\n\n private static _parseRenderStateDeclarationOrAssignment(outRenderStates: IRenderStates, stateToken: BaseToken): void {\n const lexer = this._lexer;\n const token = lexer.scanToken();\n if (token.type === ETokenType.ID) {\n // Declaration\n lexer.scanLexeme(\"{\");\n const renderState = this._parseRenderStateProperties(stateToken.lexeme);\n const symbol = new ShaderSourceSymbol(token.lexeme, stateToken.type, renderState);\n this._symbolTableStack.insert(symbol);\n } else if (token.lexeme === \"=\") {\n // Check if it's direct assignment syntax sugar or variable assignment\n const nextToken = lexer.scanToken();\n\n let renderState: IRenderStates;\n if (nextToken.lexeme === \"{\") {\n // Syntax: DepthState = { ... }\n renderState = this._parseRenderStateProperties(stateToken.lexeme);\n } else {\n // Syntax: DepthState = customDepthState;\n lexer.scanLexeme(\";\");\n const lookupSymbol = this._lookupSymbol;\n lookupSymbol.set(nextToken.lexeme, stateToken.type);\n const sm = this._symbolTableStack.lookup(lookupSymbol);\n if (!sm?.value) {\n this._createCompileError(`Invalid \"${stateToken.lexeme}\" variable: ${nextToken.lexeme}`, nextToken.location);\n // #if _VERBOSE\n return;\n // #endif\n }\n renderState = sm.value as IRenderStates;\n }\n this._mergeRenderStates(outRenderStates, renderState);\n }\n }\n\n private static _mergeRenderStates(outTarget: IRenderStates, source: IRenderStates): void {\n // For each key in the source, remove it from the opposite map in target to ensure proper override\n const { constantMap: targetConstantMap, variableMap: targetVariableMap } = outTarget;\n const { constantMap: sourceConstantMap, variableMap: sourceVariableMap } = source;\n\n for (const key in sourceConstantMap) {\n delete targetVariableMap[key];\n targetConstantMap[key] = sourceConstantMap[key];\n }\n\n for (const key in sourceVariableMap) {\n delete targetConstantMap[key];\n targetVariableMap[key] = sourceVariableMap[key];\n }\n }\n\n private static _parseVariableDeclaration(): void {\n const lexer = this._lexer;\n const token = lexer.scanToken();\n lexer.scanLexeme(\";\");\n const symbol = new ShaderSourceSymbol(token.lexeme, token.type);\n this._symbolTableStack.insert(symbol);\n }\n\n private static _pushScope(): void {\n const symbolTable = new SymbolTable<ShaderSourceSymbol>();\n this._symbolTableStack.pushScope(symbolTable);\n }\n\n private static _popScope(): void {\n this._symbolTableStack.popScope();\n }\n\n private static _parseRenderStateProperties(state: string): IRenderStates {\n const lexer = this._lexer;\n const renderStates = ShaderSourceFactory.createRenderStates();\n while (lexer.getCurChar() !== \"}\") {\n this._parseRenderStateProperty(state, renderStates);\n lexer.skipCommentsAndSpace();\n }\n lexer.advance(1);\n return renderStates;\n }\n\n private static _createCompileError(message: string, location?: ShaderPosition | ShaderRange): void {\n const error = this._lexer.createCompileError(message, location);\n // #if _VERBOSE\n this.errors.push(<GSError>error);\n // #endif\n }\n\n private static _scanEnumConstValue(enumName: string): number | undefined {\n const lexer = this._lexer;\n lexer.advance(1);\n const constValueToken = lexer.scanToken();\n const value = this._renderStateConstMap[enumName]?.[constValueToken.lexeme] as number;\n if (value == undefined) {\n this._createCompileError(\n `Invalid engine constant: ${enumName}.${constValueToken.lexeme}`,\n constValueToken.location\n );\n // #if _VERBOSE\n lexer.scanToCharacter(\";\");\n // #endif\n }\n return value;\n }\n\n private static _parseRenderStateProperty(stateLexeme: string, out: IRenderStates): void {\n const lexer = this._lexer;\n const propertyToken = lexer.scanToken();\n const propertyLexeme = propertyToken.lexeme;\n let stateElementKey = propertyLexeme;\n if (stateLexeme === \"BlendState\" && propertyLexeme !== \"BlendColor\" && propertyLexeme !== \"AlphaToCoverage\") {\n let keyIndex = 0;\n const scannedLexeme = lexer.scanTwoExpectedLexemes(\"[\", \"=\");\n if (scannedLexeme === \"[\") {\n keyIndex = lexer.scanNumber();\n lexer.scanLexeme(\"]\");\n lexer.scanLexeme(\"=\");\n } else if (scannedLexeme !== \"=\") {\n this._createCompileError(`Invalid syntax, expect '[' or '=', but got unexpected token`);\n // #if _VERBOSE\n lexer.scanToCharacter(\";\");\n return;\n // #endif\n }\n stateElementKey += keyIndex;\n } else {\n lexer.scanLexeme(\"=\");\n }\n\n const renderStateElementKey = RenderStateElementKey[stateLexeme + stateElementKey];\n if (renderStateElementKey === undefined) {\n this._createCompileError(`Invalid render state property ${propertyLexeme}`);\n // #if _VERBOSE\n lexer.scanToCharacter(\";\");\n return;\n // #endif\n }\n\n lexer.skipCommentsAndSpace();\n let propertyValue: number | string | boolean | Color;\n\n const curCharCode = lexer.getCurCharCode();\n if (BaseLexer.isDigit(curCharCode) || curCharCode === 46) {\n // Digit or '.'\n propertyValue = lexer.scanNumber();\n } else {\n const valueToken = lexer.scanToken();\n const valueTokenType = valueToken.type;\n\n if (valueTokenType === Keyword.True) {\n propertyValue = true;\n } else if (valueTokenType === Keyword.False) {\n propertyValue = false;\n } else if (valueTokenType === Keyword.GSColor) {\n propertyValue = lexer.scanColor();\n } else if (lexer.getCurChar() === \".\") {\n propertyValue = this._scanEnumConstValue(valueToken.lexeme);\n if (propertyValue == undefined) return;\n // Support bitwise OR only for bitmask enums (e.g. ColorWriteMask)\n lexer.skipCommentsAndSpace();\n if (lexer.getCurChar() === \"|\") {\n if (valueToken.lexeme !== \"ColorWriteMask\") {\n this._createCompileError(\n `Bitwise OR '|' is not supported for '${valueToken.lexeme}', only bitmask enums like 'ColorWriteMask' support this`,\n valueToken.location\n );\n // #if _VERBOSE\n lexer.scanToCharacter(\";\");\n // #endif\n return;\n }\n while (lexer.getCurChar() === \"|\") {\n lexer.advance(1);\n const nextEnumToken = lexer.scanToken();\n if (nextEnumToken == undefined || lexer.getCurChar() !== \".\") {\n this._createCompileError(`Invalid syntax after '|', expect 'EnumType.Value'`, nextEnumToken?.location);\n // #if _VERBOSE\n lexer.scanToCharacter(\";\");\n // #endif\n return;\n }\n if (nextEnumToken.lexeme !== valueToken.lexeme) {\n this._createCompileError(\n `Cannot mix enum types in bitwise OR: expected '${valueToken.lexeme}' but got '${nextEnumToken.lexeme}'`,\n nextEnumToken.location\n );\n // #if _VERBOSE\n lexer.scanToCharacter(\";\");\n // #endif\n return;\n }\n const nextValue = this._scanEnumConstValue(nextEnumToken.lexeme);\n if (nextValue == undefined) return;\n propertyValue = (<number>propertyValue) | (<number>nextValue);\n lexer.skipCommentsAndSpace();\n }\n }\n } else {\n propertyValue = valueToken.lexeme;\n const lookupSymbol = this._lookupSymbol;\n lookupSymbol.set(valueToken.lexeme, ETokenType.ID);\n if (!this._symbolTableStack.lookup(lookupSymbol)) {\n this._createCompileError(`Invalid ${stateLexeme} variable: ${valueToken.lexeme}`, valueToken.location);\n // #if _VERBOSE\n lexer.scanToCharacter(\";\");\n return;\n // #endif\n }\n }\n }\n lexer.scanLexeme(\";\");\n if (typeof propertyValue === \"string\") {\n out.variableMap[renderStateElementKey] = propertyValue;\n } else {\n out.constantMap[renderStateElementKey] = propertyValue;\n }\n }\n\n private static _parseRenderQueueDeclarationOrAssignment(renderStates: IRenderStates): void {\n const lexer = this._lexer;\n const token = lexer.scanToken();\n if (token.type === ETokenType.ID) {\n // Declaration\n lexer.scanLexeme(\";\");\n const symbol = new ShaderSourceSymbol(token.lexeme, Keyword.GSRenderQueueType);\n this._symbolTableStack.insert(symbol);\n return;\n }\n\n if (token.lexeme !== \"=\") {\n this._createCompileError(`Invalid syntax, expect character '=', but got ${token.lexeme}`, token.location);\n // #if _VERBOSE\n return;\n // #endif\n }\n const word = lexer.scanToken();\n lexer.scanLexeme(\";\");\n const value = this._renderStateConstMap.RenderQueueType[word.lexeme];\n const key = RenderStateElementKey.RenderQueueType;\n if (value == undefined) {\n renderStates.variableMap[key] = word.lexeme;\n const lookupSymbol = this._lookupSymbol;\n lookupSymbol.set(word.lexeme, Keyword.GSRenderQueueType);\n const sm = this._symbolTableStack.lookup(lookupSymbol);\n if (!sm) {\n this._createCompileError(`Invalid RenderQueueType variable: ${word.lexeme}`, word.location);\n // #if _VERBOSE\n return;\n // #endif\n }\n } else {\n renderStates.constantMap[key] = value;\n }\n }\n\n private static _addPendingContents(\n start: ShaderPosition,\n backOffset: number,\n outPendingContents: IStatement[]\n ): void {\n const lexer = this._lexer;\n if (lexer.hasPendingContent) {\n const endIndex = lexer.currentIndex - backOffset;\n outPendingContents.push({\n range: { start, end: { ...lexer.getShaderPosition(0), index: endIndex - 1 } },\n content: lexer.source.substring(start.index, endIndex - 1)\n });\n lexer.hasPendingContent = false;\n }\n }\n\n private static _parseSubShader(): ISubShaderSource {\n const lexer = this._lexer;\n this._pushScope();\n\n let braceLevel = 1;\n const name = lexer.scanPairedChar('\"', '\"', false, false);\n const subShaderSource = ShaderSourceFactory.createSubShaderSource(name);\n lexer.scanLexeme(\"{\");\n\n lexer.skipCommentsAndSpace();\n let start = lexer.getShaderPosition(0);\n\n while (true) {\n const token = lexer.scanToken();\n switch (token.type) {\n case Keyword.GSPass:\n this._addPendingContents(start, token.lexeme.length, subShaderSource.pendingContents);\n const pass = this._parsePass();\n subShaderSource.passes.push(pass);\n start = lexer.getShaderPosition(0);\n break;\n case Keyword.GSUsePass:\n this._addPendingContents(start, token.lexeme.length, subShaderSource.pendingContents);\n const name = lexer.scanPairedChar('\"', '\"', false, false);\n subShaderSource.passes.push(ShaderSourceFactory.createUsePass(name));\n start = lexer.getShaderPosition(0);\n break;\n case Keyword.LeftBrace:\n ++braceLevel;\n break;\n case Keyword.RightBrace:\n if (--braceLevel === 0) {\n this._addPendingContents(start, token.lexeme.length, subShaderSource.pendingContents);\n this._popScope();\n return subShaderSource;\n }\n break;\n default:\n start = this._parseRenderStateAndTags(\n token,\n start,\n subShaderSource.pendingContents,\n subShaderSource.renderStates,\n subShaderSource.tags\n );\n }\n }\n }\n\n private static _parseTags(tags: Record<string, number | string | boolean>): void {\n const lexer = this._lexer;\n lexer.scanLexeme(\"{\");\n while (true) {\n const ident = lexer.scanToken();\n lexer.scanLexeme(\"=\");\n const value = lexer.scanPairedChar('\"', '\"', false, false);\n lexer.skipCommentsAndSpace();\n\n tags[ident.lexeme] = value;\n\n if (lexer.peek(1) === \"}\") {\n lexer.advance(1);\n return;\n }\n lexer.scanLexeme(\",\");\n }\n }\n\n private static _parsePass(): IShaderPassSource {\n this._pushScope();\n const lexer = this._lexer;\n\n const name = lexer.scanPairedChar('\"', '\"', false, false);\n const passSource = ShaderSourceFactory.createShaderPassSource(name);\n lexer.scanLexeme(\"{\");\n let braceLevel = 1;\n\n lexer.skipCommentsAndSpace();\n let start = lexer.getShaderPosition(0);\n\n while (true) {\n const token = lexer.scanToken();\n switch (token.type) {\n case Keyword.GSVertexShader:\n case Keyword.GSFragmentShader:\n this._addPendingContents(start, token.lexeme.length, passSource.pendingContents);\n lexer.scanLexeme(\"=\");\n const entry = lexer.scanToken();\n if (passSource[token.lexeme]) {\n const error = ShaderCompilerUtils.createGSError(\n \"Reassign main entry\",\n GSErrorName.CompilationError,\n lexer.source,\n lexer.getShaderPosition(0)\n );\n // #if _VERBOSE\n console.error(error.toString());\n throw error;\n // #endif\n }\n const key = token.type === Keyword.GSVertexShader ? \"vertexEntry\" : \"fragmentEntry\";\n passSource[key] = entry.lexeme;\n lexer.scanLexeme(\";\");\n start = lexer.getShaderPosition(0);\n break;\n case Keyword.LeftBrace:\n ++braceLevel;\n break;\n case Keyword.RightBrace:\n if (--braceLevel === 0) {\n this._addPendingContents(start, token.lexeme.length, passSource.pendingContents);\n this._popScope();\n return passSource;\n }\n break;\n default:\n start = this._parseRenderStateAndTags(\n token,\n start,\n passSource.pendingContents,\n passSource.renderStates,\n passSource.tags\n );\n }\n }\n }\n\n private static _parseRenderStateAndTags(\n token: BaseToken<number>,\n start: ShaderPosition,\n outGlobalContents: IStatement[],\n outRenderStates: IRenderStates,\n outTags: Record<string, number | string | boolean>\n ): ShaderPosition {\n switch (token.type) {\n case Keyword.GSTags:\n this._addPendingContents(start, token.lexeme.length, outGlobalContents);\n this._parseTags(outTags);\n start = this._lexer.getShaderPosition(0);\n break;\n default:\n start = this._parseRenderState(token, start, outGlobalContents, outRenderStates);\n }\n return start;\n }\n\n private static _parseRenderState(\n token: BaseToken<number>,\n start: ShaderPosition,\n outGlobalContents: IStatement[],\n outRenderStates: IRenderStates\n ): ShaderPosition {\n switch (token.type) {\n case Keyword.GSBlendState:\n case Keyword.GSDepthState:\n case Keyword.GSRasterState:\n case Keyword.GSStencilState:\n this._addPendingContents(start, token.lexeme.length, outGlobalContents);\n this._parseRenderStateDeclarationOrAssignment(outRenderStates, token);\n start = this._lexer.getShaderPosition(0);\n break;\n case Keyword.GSBlendFactor:\n case Keyword.GSBlendOperation:\n case Keyword.GSBool:\n case Keyword.GSNumber:\n case Keyword.GSColor:\n case Keyword.GSCompareFunction:\n case Keyword.GSStencilOperation:\n case Keyword.GSCullMode:\n case Keyword.GSColorWriteMask:\n this._addPendingContents(start, token.lexeme.length, outGlobalContents);\n this._parseVariableDeclaration();\n start = this._lexer.getShaderPosition(0);\n break;\n case Keyword.GSRenderQueueType:\n this._addPendingContents(start, token.lexeme.length, outGlobalContents);\n this._parseRenderQueueDeclarationOrAssignment(outRenderStates);\n start = this._lexer.getShaderPosition(0);\n break;\n default:\n // Unrecognized tokens are defined as pending content\n this._lexer.hasPendingContent = true;\n }\n return start;\n }\n}\n","import { Color } from \"@galacean/engine-math\";\nimport { ShaderLanguage } from \"@galacean/engine-core\";\nimport type { IPrecompiledShader, IRenderStates, IShaderSource } from \"@galacean/engine-design\";\nimport type { IShaderProgramSource } from \"@galacean/engine-design/types/shader-compiler/IShaderProgramSource\";\nimport { GLES100Visitor, GLES300Visitor } from \"./codeGen\";\nimport { ShaderPosition, ShaderRange } from \"./common\";\nimport { Lexer } from \"./lexer\";\nimport { ShaderInstructionEncoder } from \"./ShaderInstructionEncoder\";\nimport { ShaderTargetParser } from \"./parser\";\nimport { Preprocessor, IncludeMap, ChunkOutputCache } from \"./Preprocessor\";\nimport { ShaderCompilerUtils } from \"./ShaderCompilerUtils\";\nimport { ShaderSourceParser } from \"./sourceParser/ShaderSourceParser\";\n\nexport class ShaderCompiler {\n private static _parser = ShaderTargetParser.create();\n private static _shaderPositionPool = ShaderCompilerUtils.createObjectPool(ShaderPosition);\n private static _shaderRangePool = ShaderCompilerUtils.createObjectPool(ShaderRange);\n\n // #if _VERBOSE\n static _processingPassText?: string;\n // #endif\n\n private _includeMap: IncludeMap = {};\n private readonly _chunkOutputCache: ChunkOutputCache = new Map();\n\n /** Replace the `#include` lookup table and clear the derived chunk cache. */\n _setIncludeMap(includeMap: IncludeMap): void {\n this._includeMap = includeMap;\n this._chunkOutputCache.clear();\n }\n\n static createPosition(index: number, line?: number, column?: number): ShaderPosition {\n const position = this._shaderPositionPool.get();\n position.set(\n index,\n // #if _VERBOSE\n line,\n column\n // #endif\n );\n return position;\n }\n\n static createRange(start: ShaderPosition, end: ShaderPosition): ShaderRange {\n const range = this._shaderRangePool.get();\n range.set(start, end);\n return range;\n }\n\n _parseShaderSource(sourceCode: string): IShaderSource {\n ShaderCompilerUtils.clearAllShaderCompilerObjectPool();\n const shaderSource = ShaderSourceParser.parse(sourceCode);\n\n // #if _VERBOSE\n this._logErrors(ShaderSourceParser.errors);\n // #endif\n\n return shaderSource;\n }\n\n _parseShaderPass(\n source: string,\n vertexEntry: string,\n fragmentEntry: string,\n backend: ShaderLanguage,\n basePathForIncludeKey: string\n ): IShaderProgramSource | undefined {\n const macroDefineList = {};\n const noIncludeContent = Preprocessor.parse(\n source,\n basePathForIncludeKey,\n this._includeMap,\n this._chunkOutputCache\n );\n\n const lexer = new Lexer(noIncludeContent, macroDefineList);\n\n const tokens = lexer.tokenize();\n const { _parser: parser } = ShaderCompiler;\n\n ShaderCompiler._processingPassText = noIncludeContent;\n\n const program = parser.parse(tokens, macroDefineList);\n\n // #if _VERBOSE\n this._logErrors(parser.errors);\n // #endif\n\n if (!program) {\n return undefined;\n }\n\n const codeGen = backend === ShaderLanguage.GLSLES100 ? GLES100Visitor.getVisitor() : GLES300Visitor.getVisitor();\n\n const ret = codeGen.visitShaderProgram(program, vertexEntry, fragmentEntry);\n ShaderCompiler._processingPassText = undefined;\n\n // #if _VERBOSE\n this._logErrors(codeGen.errors);\n // #endif\n\n if (ret) {\n ret.vertexShaderInstructions = ShaderInstructionEncoder.parse(ret.vertex);\n ret.fragmentShaderInstructions = ShaderInstructionEncoder.parse(ret.fragment);\n }\n\n return ret;\n }\n\n _precompile(sourceCode: string, platformTarget: ShaderLanguage, basePathForIncludeKey: string): IPrecompiledShader {\n const shaderSource = this._parseShaderSource(sourceCode);\n\n const subShaders = shaderSource.subShaders.map((sub) => ({\n name: sub.name,\n tags: sub.tags,\n passes: sub.passes.map((pass) => {\n if (pass.isUsePass) {\n return {\n name: pass.name,\n isUsePass: true as const,\n tags: pass.tags,\n renderStates: this._serializeRenderStates(pass.renderStates)\n };\n }\n\n const programSource = this._parseShaderPass(\n pass.contents,\n pass.vertexEntry,\n pass.fragmentEntry,\n platformTarget,\n basePathForIncludeKey\n );\n\n if (!programSource) {\n throw new Error(\n `Shader pass \"${shaderSource.name}.${sub.name}.${pass.name}\" precompile failed, please check the shader source code.`\n );\n }\n\n return {\n name: pass.name,\n isUsePass: false as const,\n tags: pass.tags,\n renderStates: this._serializeRenderStates(pass.renderStates),\n vertexShaderInstructions: programSource.vertexShaderInstructions,\n fragmentShaderInstructions: programSource.fragmentShaderInstructions\n };\n })\n }));\n\n return {\n name: shaderSource.name,\n platformTarget,\n subShaders\n };\n }\n\n private _serializeRenderStates(renderStates: IRenderStates): {\n constantMap: Record<string, number | string | boolean | number[]>;\n variableMap: Record<string, string>;\n } {\n const constantMap: Record<string, number | string | boolean | number[]> = {};\n for (const key in renderStates.constantMap) {\n const value = renderStates.constantMap[key];\n if (value instanceof Color) {\n constantMap[key] = [value.r, value.g, value.b, value.a];\n } else {\n constantMap[key] = value as number | string | boolean;\n }\n }\n return {\n constantMap,\n variableMap: renderStates.variableMap\n };\n }\n\n // #if _VERBOSE\n /**\n * @internal\n */\n _logErrors(errors: Error[]) {\n if (errors.length === 0) return;\n console.error(`${errors.length} errors occur!`);\n for (const err of errors) {\n console.error(err.toString());\n }\n }\n // #endif\n}\n","export { ShaderCompiler } from \"./ShaderCompiler\";\n\nexport * from \"./GSError\";\n\n//@ts-ignore\nexport const version = `__buildVersion`;\n\nlet mode = \"Release\";\n// #if _VERBOSE\nmode = \"Verbose\";\n// #endif\n\nconsole.log(`Galacean Engine Shader Compiler Version: ${version} | Mode: ${mode}`);\n"],"names":["ShaderRange","set","start","end","dispose","ShaderPosition","index","ETokenType","TypeAny","Keyword","ShaderCompilerUtils","createObjectPool","type","pool","ClearableObjectPool","_shaderCompilerObjectPoolSet","push","clearAllShaderCompilerObjectPool","i","n","length","clear","createGSError","message","errorName","source","location","file","console","error","err","Error","name","EMPTY_BRANCH","BaseToken","branch","lexeme","arg","ShaderCompiler","createPosition","createRange","EOF","NoneTerminal","ParserUtils","unwrapNodeByType","node","child","children","Token","nt","parseMacroParamList","inner","replace","split","map","s","trim","filter","Boolean","unwrapBareIdentifier","options","cur","ASTNode","VariableIdentifier","allowParens","PrimaryExpression","TreeNode","undefined","ExpressionAstNode","extractDirectIdentLexeme","expr","ident","isTerminal","sm","START","GSError","toString","diagnosticMessage","wrappingLineCount","GSErrorName","BaseLexer","_currentIndex","_source","setSource","getShaderPosition","backOffset","isEnd","getCurChar","getCurCharCode","charCodeAt","advance","count","skipSpace","includeLineBreak","isWhiteSpaceChar","skipCommentsAndSpace","afterBlock","_skipBlockComment","afterLine","_skipLineComment","peek","to","offset","substring","scanLexeme","throwError","scanTwoExpectedLexemes","lexeme1","lexeme2","pos","msgs","join","ScannerError","scanPairedChar","left","right","balanced","skipLeading","sourceLength","currentIndex","level","currentChar","isDigit","charCode","isHexDigit","isAlpha","isAlnum","isPreprocessorStartChar","src","len","j","c","includeBreak","Lexer","macroDefineList","_needScanMacroConditionExpression","_inMacroDefineValue","_macroDefineExpectsNameToken","_macroDefineExpectsParamsToken","_currentMacroName","_currentMacroParamsLexeme","_currentMacroValueStart","_branchStack","_pendingBranchPushDefined","tokenize","tok","top","scanToken","ID","MACRO_CALL","defined","slice","MACRO_IFDEF","MACRO_IFNDEF","MACRO_IF","_ifCounter","MACRO_ELIF","MACRO_ELSE","MACRO_ENDIF","pop","_skipInlineSpaceAndComments","_isAtLineBreak","_emitMacroDefineEnd","_scanMacroDefineParams","_scanMacroConditionExpression","curCharCode","_scanDirectives","_scanWord","_scanNum","token","get","curChar","LEFT_ASSIGN","LEFT_OP","LE_OP","LEFT_ANGLE","RIGHT_ASSIGN","RIGHT_OP","GE_OP","RIGHT_ANGLE","INC_OP","ADD_ASSIGN","PLUS","DEC_OP","SUB_ASSIGN","DASH","EQ_OP","EQUAL","NE_OP","BANG","AND_OP","AND_ASSIGN","AMPERSAND","OR_OP","OR_ASSIGN","VERTICAL_BAR","XOR_OP","XOR_ASSIGN","CARET","MUL_ASSIGN","STAR","DIV_ASSIGN","SLASH","MOD_ASSIGN","PERCENT","LEFT_PAREN","RIGHT_PAREN","LEFT_BRACE","RIGHT_BRACE","LEFT_BRACKET","RIGHT_BRACKET","_scanNumAfterDot","DOT","COMMA","COLON","SEMICOLON","TILDE","QUESTION","_scanStringConst","buffer","range","STRING_CONST","_scanFloatSuffix","FLOAT_CONSTANT","_scanUtilBreakLine","outBuffer","afterContinuation","_skipLineContinuation","word","_peekMacroDefine","isExpression","MACRO_DEFINE","_registerMacroDefine","paramsLexeme","valueStart","valueEnd","MACRO_DEFINE_EXPRESSION","kt","_lexemeTable","_skipNonSemantic","nameStart","paramsStart","depth","cursor","parenDepth","bracketDepth","firstStart","firstEnd","firstFollowedByParen","topLevelLast","skipped","after","result","_isNonExpressionLeadingKeyword","head","tail","headIllegal","tailIllegal","valueText","next","ch","MACRO_DEFINE_PARAMS","MACRO_DEFINE_END","params","p","dedupKey","_normalizeValueText","info","isFunction","arr","e","sameBranch","Array","MACRO_CONDITIONAL_EXPRESSION","_isVisibleMacro","defs","callSiteBranch","isVisibleFrom","nextCode","_scanIntegerSuffix","INT_CONSTANT","a","b","defBranch","d","m","kw","True","False","startsWith","from","out","pendingSpace","const","CONST","bool","BOOL","float","FLOAT","double","DOUBLE","int","INT","uint","UINT","break","BREAK","continue","CONTINUE","do","DO","else","ELSE","for","FOR","if","IF","while","WHILE","discard","DISCARD","return","RETURN","bvec2","BVEC2","bvec3","BVEC3","bvec4","BVEC4","ivec2","IVEC2","ivec3","IVEC3","ivec4","IVEC4","uvec2","UVEC2","uvec3","UVEC3","uvec4","UVEC4","vec2","VEC2","vec3","VEC3","vec4","VEC4","mat2","MAT2","mat3","MAT3","mat4","MAT4","in","IN","OUT","inout","INOUT","sampler2D","SAMPLER2D","samplerCube","SAMPLER_CUBE","sampler3D","SAMPLER3D","sampler2DShadow","SAMPLER2D_SHADOW","samplerCubeShadow","SAMPLER_CUBE_SHADOW","sampler2DArray","SAMPLER2D_ARRAY","sampler2DArrayShadow","SAMPLER2D_ARRAY_SHADOW","isampler2D","I_SAMPLER2D","isampler3D","I_SAMPLER3D","isamplerCube","I_SAMPLER_CUBE","isampler2DArray","I_SAMPLER2D_ARRAY","usampler2D","U_SAMPLER2D","usampler3D","U_SAMPLER3D","usamplerCube","U_SAMPLER_CUBE","usampler2DArray","U_SAMPLER2D_ARRAY","struct","STRUCT","void","VOID","true","false","precision","PRECISION","precise","PRECISE","highp","HIGHP","mediump","MEDIUMP","lowp","LOWP","invariant","INVARIANT","flat","FLAT","smooth","SMOOTH","noperspective","NOPERSPECTIVE","centroid","CENTROID","layout","LAYOUT","LOCATION","MACRO_UNDEF","EShaderStage","FamilyMembers","dimension","members","BuiltinFunctionTable","Map","BuiltinFunction","returnType","scope","args","_returnType","_create","fn","ALL","list","_createWithScope","resolveOverload","funcName","callArgTypes","overloads","candidate","declaredArgs","sizeLock","scalarTypeLock","matched","declaredType","actualType","paramFamily","memberIdx","indexOf","returnFamily","_realReturnType","returnIdx","isExist","has","realReturnType","MAT2X3","MAT3X2","MAT2X4","MAT4X2","MAT3X4","MAT4X3","FRAGMENT","BuiltinVariableTable","BuiltinVariable","createVariable","item","getVar","VERTEX","VEC4_ARRAY","SymbolTable","_table","insert","symbol","isInMacroBranch","entry","equal","warn","getSymbol","includeMacro","getSymbols","_getSymbols","forEach","callback","values","entries","SymbolTableStack","stack","_macroLevel","pushScope","popScope","lookup","symbolTable","lookupAll","SymbolDataType","arraySpecifier","typeLexeme","ESymbolType","SymbolInfo","dataType","paramSignature","astNode","symbolType","protoType","paramSig","comparedParams","t1","t2","FnSymbol","typeSpecifier","FN","StructSymbol","VarSymbol","isGlobalVariable","initAst","VAR","ShaderData","globalPrecisions","globalMacroDeclarations","getOuterGlobalMacroDeclarations","parent","GLShaderProgram","SemanticAnalyzer","semanticStack","acceptRule","symbolTableStack","curFunctionInfo","_shaderData","_translationRuleTable","reset","_macroDefineList","addTranslationRule","pid","rule","getTranslationRule","reportError","loc","reportWarning","CompilationWarn","_processingPassText","shaderData","_lookupSymbol","SymbolType","StructProp","mrtIndex","typeInfo","ASTNodeDecorator","nonTerminal","prototype","_location","_children","_parent","init","setCache","code","_codeCache","getCache","codeGen","visitor","defaultCodeGen","semanticAnalyze","sa","_unwrapToken","TrivialNode","_ignore","ScopeBrace","scope_brace","ScopeEndBrace","scope_end_brace","JumpStatement","isFragReturnStatement","returnStatement","visitJumpStatement","jump_statement","_type","t","SingleDeclaration","childrenLen","fullyType","id","initializer","visitSingleDeclaration","single_declaration","FullySpecifiedType","_","fully_specified_type","TypeQualifier","type_qualifier","SingleTypeQualifier","qualifier","single_type_qualifier","TypeSpecifier","arraySize","firstChild","size","isCustom","type_specifier","ArraySpecifier","integerConstantExpr","value","array_specifier","IntegerConstantExpressionOperator","operator","compute","integer_constant_expression_operator","IntegerConstantExpression","Number","integer_constant_expression","TypeSpecifierNonArray","tt","MacroCallSymbol","macroName","type_specifier_nonarray","ExtBuiltinTypeSpecifierNonArray","ext_builtin_type_specifier_nonarray","InitDeclaratorList","childrenLength","initDeclList","init_declarator_list","IdentifierList","idList","curIdList","listIdLength","identifier_list","Declaration","visitDeclaration","declaration","FunctionProtoType","declarator","parameterList","parameterInfoList","function_prototype","FunctionDeclarator","header","function_declarator","FunctionHeader","visitFunctionHeader","function_header","FunctionParameterList","ParameterDeclaration","decl","MacroParamBlock","visitFunctionParameterList","function_parameter_list","MacroParamCaseList","macro_param_case_list","macro_param_block","MacroParameterBranch","macro_parameter_branch","parameterDeclarator","ParameterDeclarator","varSymbol","parameter_declaration","parameter_declarator","CompoundStatementNoScope","compound_statement_no_scope","StatementList","visitStatementList","statement_list","FunctionDefinition","statements","visitFunctionDefinition","function_definition","FunctionCall","visitFunctionCall","function_call","FunctionCallGeneric","fnSymbol","functionIdentifier","isBuiltin","fnIdent","paramList","FunctionCallParameterList","lookupSymbol","function_call_generic","paramNodes","AssignmentExpression","MacroCallArgBlock","function_call_parameter_list","MacroCallArgCaseList","macro_call_arg_case_list","macro_call_arg_block","MacroCallArgBranch","macro_call_arg_branch","PrecisionSpecifier","precision_specifier","FunctionIdentifier","visitFunctionIdentifier","function_identifier","assignment_expression","Expression","expression","primary_expression","PostfixExpression","visitPostfixExpression","postfix_expression","StructSpecifier","propList","macroExpressions","visitStructSpecifier","struct_specifier","StructDeclarationList","props","struct_declaration_list","StructDeclaration","_typeSpecifier","_declaratorList","macroStructDeclaration","macroProps","LayoutQualifier","prop","declaratorList","declaratorListLength","struct_declaration","MacroStructDeclaration","macro_struct_declaration","MacroStructBranch","lastNode","MacroPopContext","macro_struct_branch","layout_qualifier","StructDeclaratorList","listLength","struct_declarator_list","StructDeclarator","struct_declarator","VariableDeclaration","isStatic","visitGlobalVariableDeclaration","variable_declaration","VariableDeclarationList","variableDeclarations","newVariable","variable_declaration_list","referenceGlobalSymbolNames","_symbols","symbols","needFindNames","referenceSymbolNames","builtinVar","hit","_lookupAndMarkGlobalReference","hasAstValue","_probeCrossArmShadowing","visitVariableIdentifier","getLexeme","missWarnLoc","Any","currentScopeSymbol","isGlobal","some","variable_identifier","gs_shader_program","GlobalDeclaration","MacroUndef","GlobalMacroIfStatement","MacroDefine","global_declaration","macro_undef","MacroPushContext","macro_push_context","macro_pop_context","MacroElifExpression","macro_elif_expression","MacroElseExpression","macro_else_expression","GlobalMacroDeclaration","global_macro_declaration","global_macro_if_statement","GlobalMacroBranch","global_macro_branch","MacroIfStatement","macro_if_statement","MacroBranch","macro_branch","isFunctionLikeMacro","aliasesNonBuiltinIdent","nameToken","defList","refs","visibleCount","allAst","isFn","allAliasNonBuiltinIdent","valueAst","_collectIdentifierRefs","leadingIdent","leadingChild","leadingId","macro_call_symbol","MacroCallFunction","visitMacroCallFunction","macro_call_function","valueExpression","valueIdx","definingBranch","sameArity","every","upgradable","find","visitMacroDefine","macro_define","VisitorContext","attributeStructs","attributeList","varyingStructs","varyingList","mrtStructs","mrtList","_referencedGlobalMacroASTs","resetAll","_referencedAttributeList","Object","create","_referencedVaryingList","_referencedMRTList","_referencedGlobals","_structVarMap","isAttributeStruct","findIndex","isVaryingStruct","isMRTStruct","getStructRole","registerStructVar","varName","role","referenceAttribute","_referenceProp","referenceVarying","referenceMRTProp","referenceGlobal","_passSymbolTable","refList","CompilationError","_singleton","context","TempArray","array","CodeGenVisitor","_tmpArrayPool","ret","derivationLength","postExpr","directRoot","identNode","indexNode","identLexeme","indexLexeme","_reportError","call","astNodes","paramInfoList","paramsCode","variableParam","argNode","paramsToken","valueCode","fullType","cmd","returnVar","returnFnCall","text","getVaryingProp","getAttributeProp","getMRTProp","sort","fnNode","fnName","stageEntry","ReturnableObjectPool","GLESVisitor","_globalCodeArray","globalCodeArray","_serializedGlobalKey","getOtherGlobal","data","visitShaderProgram","vertexEntry","fragmentEntry","outerGlobalMacroDeclarations","_collectAllStructVars","vertex","_vertexMain","fragment","_fragmentMain","structRoles","addEntryRoles","paramRole","returnRole","fns","proto","param0","entryFns","concat","registerByType","walkLocals","_extractLocalVarNames","param","sym","stage","fnSymbols","varyingSymbols","varyingSymbol","attributeParam","attributeType","attributeSymbols","attributeSymbol","_preRegisterGlobalMacroRefs","_getGlobalSymbol","_getCustomStruct","_getGlobalMacroDeclarations","globalCode","outerGlobalMacroStatements","returnDataType","returnLocation","mrtSymbols","mrtSymbol","singleDecl","identChildren","macros","macro","_walkMacroDefineTokens","lastLength","keys","add","codeGenResult","structNodes","referencedGlobals","referencedGlobalMacroASTs","_visitGlobalMacroIfStatement","variableDeclaration","Set","GLES100Visitor","propReferenced","getVisitor","V3_GL_FragColor","GLES300Visitor","_otherCodeArray","_fragColorVariableRegistered","_registerFragColorVariable","ShaderPreprocessorDirective","Text","IfDef","IfNdef","IfCmp","IfExpr","Else","Endif","Define","DefineVal","DefineFunc","Undef","ShaderInstructionEncoder","parse","glsl","instructions","backfillStack","directiveStart","_findDirectiveStart","_pushText","lineEnd","line","match","_DIRECTIVE_RE","exec","last","keyword","rest","idx","cond","_parseCondition","_pushConditionInstruction","prevIdx","elseIdx","_backfillJump","endifIdx","afterEndif","inst","funcMatch","_FUNC_MACRO_RE","_stripLineComment","spaceIdx","op","v","nl","target","onlyPlaceholder","directive","trimEnd","ctx","_parseOr","_skipWs","_parseAnd","l","r","_parseUnary","_parsePrimary","hasParen","_scanIdentifier","_isDigit","lhsNum","_scanNumber","_scanOp","_evalNumOp","_isAlnum","c2","lhs","rhs","Production","goal","derivation","_id","StateItem","production","position","lookahead","_needReInfer","lookaheadSet","la","addLookahead","ts","needReInfer","symbolByOffset","canReduce","EPSILON","curSymbol","nextSymbol","State","cores","closured","_stateItemPool","_items","it","itemMapKey","getStateItemMapKey","createStateItem","mapId","newItem","cacheKey","getMapKey","state","closureMap","core","newState","items","GrammarUtils","createProductionWithOptions","astTypePool","opt","canElide","addMapSetItem","k","isSubSet","sb","isActionEqual","action","EAction","LALR1","grammar","firstSetMap","followSetMap","actionTable","gotoTable","_firstSetNTStack","generate","computeFirstSet","buildStateTable","startStateItemCore","productions","startState","_extendState","_closure","newStates","_inferNextState","ns","_extendStateItem","productionList","getProductionList","newLookaheadSet","lastFirstSet","terminalExist","Utils","coreMap","stateActionTable","stateGotoTable","stateItem","Reduce","Accept","_addAction","nextItem","gs","Shift","table","terminal","exist","_isKnownShiftPreferred","_computeFirstSetForNT","NT","computingFS","curNT","firstSet","isNullableNT","succeedFirstSet","reduce","prod","Grammar","startSymbol","unshift","getProductionByID","_ps","gsl","productionAndRules","variable_declaration_statement","storage_qualifier","precision_qualifier","interpolation_qualifier","invariant_qualifier","conditional_expression","logical_or_expression","logical_xor_expression","logical_and_expression","inclusive_or_expression","exclusive_or_expression","and_expression","equality_expression","relational_expression","shift_expression","additive_expression","multiplicative_expression","unary_expression","unary_operator","assignment_operator","statement","compound_statement","simple_statement","expression_statement","selection_statement","iteration_statement","initializer_list","condition","for_init_statement","for_rest_statement","conditionopt","createGrammar","ShaderTargetParser","_traceBackStack","sematicAnalyzer","SematicAnalyzer","tokens","traceBackStack","nextToken","actionInfo","reduceProduction","translationRule","nextState","generator","curState","SHADER_ROOT_PATH","Preprocessor","basePathForIncludeKey","includeMap","chunkOutputCache","_includeReg","includeName","_replace","path","URL","href","chunk","cached","ShaderSourceFactory","createRenderStates","constantMap","variableMap","createShaderSource","subShaders","pendingContents","renderStates","createSubShaderSource","passes","tags","createShaderPassSource","createUsePass","isUsePass","ShaderSourceSymbol","other","SourceLexer","hasPendingContent","scanNumber","_scanDigits","scanColor","g","Color","wordToken","symbolKeyword","_symbolLexemeTable","createCompileError","_validateWordBoundaries","tokenType","_keywordLexemeTable","startIndex","endIndex","prevCharCode","_isValidWordBoundary","nextCharCode","_isWordSeparatorChar","RenderQueueType","GSRenderQueueType","BlendState","GSBlendState","DepthState","GSDepthState","StencilState","GSStencilState","RasterState","GSRasterState","EditorProperties","GSEditorProperties","EditorMacros","GSEditorMacros","Editor","GSEditor","Tags","GSTags","VertexShader","GSVertexShader","FragmentShader","GSFragmentShader","SubShader","GSSubShader","Pass","GSPass","BlendFactor","GSBlendFactor","BlendOperation","GSBlendOperation","Bool","GSBool","GSNumber","GSColor","CompareFunction","GSCompareFunction","StencilOperation","GSStencilOperation","CullMode","GSCullMode","ColorWriteMask","GSColorWriteMask","UsePass","GSUsePass","LeftBrace","RightBrace","Equal","BitwiseOr","ShaderSourceParser","sourceCode","errors","_symbolTableStack","_pushScope","lexer","_lexer","shaderSource","_parseShader","shaderPendingContents","shaderRenderStates","subShader","curSubShaderGlobalStatements","globalSubShaderStates","_mergeRenderStates","pass","globalPassRenderStates","passGlobalStatements","contents","content","braceLevel","_addPendingContents","_parseSubShader","_popScope","_parseRenderState","_parseRenderStateDeclarationOrAssignment","outRenderStates","stateToken","renderState","_parseRenderStateProperties","_createCompileError","outTarget","targetVariableMap","sourceVariableMap","key","sourceConstantMap","targetConstantMap","_parseVariableDeclaration","_parseRenderStateProperty","_scanEnumConstValue","enumName","constValueToken","_renderStateConstMap","stateLexeme","propertyToken","propertyLexeme","stateElementKey","keyIndex","scannedLexeme","renderStateElementKey","RenderStateElementKey","propertyValue","valueToken","valueTokenType","nextEnumToken","nextValue","_parseRenderQueueDeclarationOrAssignment","outPendingContents","subShaderSource","_parsePass","_parseRenderStateAndTags","_parseTags","passSource","outGlobalContents","outTags","_includeMap","_chunkOutputCache","_setIncludeMap","_parseShaderSource","_parseShaderPass","backend","noIncludeContent","parser","_parser","program","ShaderLanguage","GLSLES100","vertexShaderInstructions","fragmentShaderInstructions","_precompile","platformTarget","sub","_serializeRenderStates","programSource","column","_shaderPositionPool","_shaderRangePool","version","mode","log"],"mappings":"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"}