@galacean/engine-shader-compiler 2.0.0-alpha.31 → 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.
- package/{dist/bundler → bundler}/cli.js +4 -2
- package/bundler/precompile.cjs.js +324 -0
- package/bundler/precompile.js +294 -0
- package/{dist/bundler → bundler}/rollup.cjs.js +4 -2
- package/{dist/bundler → bundler}/rollup.js +4 -2
- package/dist/browser.js +425 -207
- package/dist/browser.js.map +1 -1
- package/dist/browser.min.js +1 -1
- package/dist/browser.min.js.map +1 -1
- package/dist/browser.verbose.js +416 -200
- package/dist/browser.verbose.js.map +1 -1
- package/dist/browser.verbose.min.js +1 -1
- package/dist/browser.verbose.min.js.map +1 -1
- package/dist/main.js +425 -207
- package/dist/main.js.map +1 -1
- package/dist/main.verbose.js +416 -200
- package/dist/main.verbose.js.map +1 -1
- package/dist/module.js +425 -207
- package/dist/module.js.map +1 -1
- package/dist/module.verbose.js +416 -200
- package/dist/module.verbose.js.map +1 -1
- package/package.json +14 -8
- package/types/ParserUtils.d.ts +19 -6
- package/types/Preprocessor.d.ts +11 -14
- package/types/ShaderCompilerUtils.d.ts +1 -1
- package/types/lalr/LALR1.d.ts +1 -0
- package/types/lexer/Lexer.d.ts +51 -19
- package/types/parser/AST.d.ts +24 -4
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"browser.verbose.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/_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/@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/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","../../../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/ShaderCompilerUtils.ts","../src/common/BaseToken.ts","../src/parser/GrammarSymbol.ts","../src/lalr/Production.ts","../src/lalr/types.ts","../src/lalr/Utils.ts","../src/lalr/StateItem.ts","../src/lalr/State.ts","../src/ParserUtils.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/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 _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","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","/******************************************************************************\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","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 { 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 { 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 { 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, 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 { 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, 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","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 { 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 { 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","line","column","ETokenType","TypeAny","Keyword","GSError","name","message","location","file","source","toString","lines","split","diagnosticMessage","lineSplit","wrappingLineCount","i","n","remarkStart","remarkEnd","length","paddingLength","remarkLength","Math","max","repeat","Error","GSErrorName","ShaderCompilerUtils","createObjectPool","type","pool","ClearableObjectPool","_shaderCompilerObjectPoolSet","push","clearAllShaderCompilerObjectPool","clear","createGSError","errorName","EMPTY_BRANCH","BaseToken","branch","lexeme","arg","ShaderCompiler","createPosition","createRange","EOF","NoneTerminal","Production","goal","derivation","id","_id","Map","EAction","GrammarUtils","isTerminal","sm","START","createProductionWithOptions","options","astTypePool","opt","canElide","ret","sa","children","semanticStack","ASTNode","get","TrivialNode","addMapSetItem","map","k","v","Set","add","isSubSet","sb","item","has","isActionEqual","a","b","action","target","printAction","actionInfo","production","printProduction","deriv","gs","join","StateItem","position","lookahead","_needReInfer","lookaheadSet","la","addLookahead","ts","t","needReInfer","symbolByOffset","offset","canReduce","EPSILON","advance","coreItem","Array","from","curSymbol","nextSymbol","State","cores","closured","_stateItemPool","_items","it","itemMapKey","getStateItemMapKey","createStateItem","mapId","newItem","create","cacheKey","getMapKey","state","closureMap","core","newState","items","ParserUtils","unwrapNodeByType","node","child","Token","nt","parseMacroParamList","inner","replace","s","trim","filter","Boolean","extractDirectIdentLexeme","expr","cur","VariableIdentifier","PrimaryExpression","ExpressionAstNode","typeCompatible","ta","tb","undefined","INT","UINT","printStatePool","logPath","output","console","log","count","values","tmp","padEnd","psItem","BaseLexer","_currentIndex","_column","_line","_source","setSource","getShaderPosition","backOffset","isEnd","getCurChar","getCurCharCode","charCodeAt","startIndex","skipSpace","includeLineBreak","isWhiteSpaceChar","skipCommentsAndSpace","afterBlock","_skipBlockComment","afterLine","_skipLineComment","peek","to","substring","scanLexeme","throwError","scanTwoExpectedLexemes","lexeme1","lexeme2","pos","msgs","error","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","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","referenceName","arr","e","every","idx","sameBranch","MACRO_CONDITIONAL_EXPRESSION","_isVisibleMacro","defs","callSiteBranch","isVisibleFrom","nextCode","_scanIntegerSuffix","INT_CONSTANT","defBranch","d","const","CONST","bool","BOOL","float","FLOAT","double","DOUBLE","int","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","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","realReturnType","MAT2X3","MAT3X2","MAT2X4","MAT4X2","MAT3X4","MAT4X3","FRAGMENT","BuiltinVariableTable","BuiltinVariable","createVariable","getVar","VERTEX","VEC4_ARRAY","SymbolTable","_table","insert","symbol","isInMacroBranch","entry","equal","warn","getSymbol","includeMacro","getSymbols","_getSymbols","forEach","callback","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","acceptRule","symbolTableStack","curFunctionInfo","_shaderData","_translationRuleTable","errors","reset","_macroDefineList","addTranslationRule","pid","rule","getTranslationRule","reportError","loc","CompilationError","_processingPassText","reportWarning","CompilationWarn","shaderData","_lookupSymbol","SymbolType","StructProp","mrtIndex","typeInfo","ASTNodeDecorator","nonTerminal","prototype","TreeNode","_location","_children","_parent","init","setCache","code","_codeCache","getCache","codeGen","visitor","defaultCodeGen","semanticAnalyze","_unwrapToken","_ignore","ScopeBrace","scope_brace","ScopeEndBrace","scope_end_brace","JumpStatement","isFragReturnStatement","returnStatement","visitJumpStatement","jump_statement","ConditionOpt","conditionopt","ForRestStatement","for_rest_statement","Condition","condition","ForInitStatement","for_init_statement","IterationStatement","iteration_statement","SelectionStatement","selection_statement","ExpressionStatement","expression_statement","_type","InitializerList","initializer_list","Initializer","initializer","SingleDeclaration","childrenLen","fullyType","visitSingleDeclaration","single_declaration","FullySpecifiedType","_","fully_specified_type","TypeQualifier","type_qualifier","SingleTypeQualifier","qualifier","single_type_qualifier","BasicTypeQualifier","StorageQualifier","storage_qualifier","PrecisionQualifier","precision_qualifier","InterpolationQualifier","interpolation_qualifier","InvariantQualifier","invariant_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","SimpleStatement","simple_statement","CompoundStatement","compound_statement","CompoundStatementNoScope","compound_statement_no_scope","Statement","statement","StatementList","visitStatementList","statement_list","FunctionDefinition","statements","visitFunctionDefinition","function_definition","FunctionCall","visitFunctionCall","function_call","FunctionCallGeneric","fnSymbol","functionIdentifier","isBuiltin","fnIdent","paramList","FunctionCallParameterList","builtinFn","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","AssignmentOperator","assignment_operator","Expression","expression","primary_expression","PostfixExpression","visitPostfixExpression","postfix_expression","UnaryOperator","unary_operator","UnaryExpression","unary_expression","MultiplicativeExpression","multiplicative_expression","AdditiveExpression","additive_expression","ShiftExpression","shift_expression","RelationalExpression","relational_expression","EqualityExpression","equality_expression","AndExpression","and_expression","ExclusiveOrExpression","exclusive_or_expression","InclusiveOrExpression","inclusive_or_expression","LogicalAndExpression","logical_and_expression","LogicalXorExpression","logical_xor_expression","LogicalOrExpression","logical_or_expression","ConditionalExpression","conditional_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","_referencedVaryingList","_referencedMRTList","_referencedGlobals","_structVarMap","isAttributeStruct","findIndex","isVaryingStruct","isMRTStruct","getStructRole","registerStructVar","varName","role","referenceAttribute","_referenceProp","referenceVarying","referenceMRTProp","referenceGlobal","_passSymbolTable","refList","_singleton","context","TempArray","array","CodeGenVisitor","_tmpArrayPool","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","codeGenResult","structNodes","referencedGlobals","referencedGlobalMacroASTs","_visitGlobalMacroIfStatement","variableDeclaration","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","match","_DIRECTIVE_RE","last","keyword","rest","cond","_parseCondition","_pushConditionInstruction","prevIdx","elseIdx","_backfillJump","endifIdx","afterEndif","inst","funcMatch","_FUNC_MACRO_RE","_stripLineComment","spaceIdx","op","nl","onlyPlaceholder","trimEnd","ctx","_parseOr","_skipWs","_parseAnd","l","r","_parseUnary","_parsePrimary","hasParen","_scanIdentifier","_isDigit","lhsNum","_scanNumber","_scanOp","_evalNumOp","_isAlnum","c2","lhs","rhs","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","Shift","table","terminal","exist","_computeFirstSetForNT","NT","computingFS","curNT","firstSet","isNullableNT","succeedFirstSet","Grammar","startSymbol","unshift","getProductionByID","_ps","gsl","productionAndRules","variable_declaration_statement","createGrammar","ShaderTargetParser","_traceBackStack","sematicAnalyzer","SematicAnalyzer","tokens","traceBackStack","nextToken","reduceProduction","translationRule","nextState","_printStack","str","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","scanToCharacter","char","createCompileError","_validateWordBoundaries","tokenType","_keywordLexemeTable","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","_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","_logErrors","_parseShaderPass","backend","noIncludeContent","parser","_parser","program","ShaderLanguage","GLSLES100","vertexShaderInstructions","fragmentShaderInstructions","_precompile","platformTarget","sub","_serializeRenderStates","programSource","err","_shaderPositionPool","_shaderRangePool","version","mode"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"browser.verbose.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/_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/@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/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","../../../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/ShaderCompilerUtils.ts","../src/common/BaseToken.ts","../src/parser/GrammarSymbol.ts","../src/lalr/Production.ts","../src/lalr/types.ts","../src/lalr/Utils.ts","../src/lalr/StateItem.ts","../src/lalr/State.ts","../src/ParserUtils.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/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 _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","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","/******************************************************************************\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","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 { 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 { 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 { 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, 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 { 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, 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","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 { 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","line","column","ETokenType","TypeAny","Keyword","GSError","name","message","location","file","source","toString","lines","split","diagnosticMessage","lineSplit","wrappingLineCount","i","n","remarkStart","remarkEnd","length","paddingLength","remarkLength","Math","max","repeat","Error","GSErrorName","ShaderCompilerUtils","createObjectPool","type","pool","ClearableObjectPool","_shaderCompilerObjectPoolSet","push","clearAllShaderCompilerObjectPool","clear","createGSError","errorName","EMPTY_BRANCH","BaseToken","branch","lexeme","arg","ShaderCompiler","createPosition","createRange","EOF","NoneTerminal","Production","goal","derivation","id","_id","Map","EAction","GrammarUtils","isTerminal","sm","START","createProductionWithOptions","options","astTypePool","opt","canElide","ret","sa","children","semanticStack","ASTNode","get","TrivialNode","addMapSetItem","map","k","v","Set","add","isSubSet","sb","item","has","isActionEqual","a","b","action","target","printAction","actionInfo","production","printProduction","deriv","gs","join","StateItem","position","lookahead","_needReInfer","lookaheadSet","la","addLookahead","ts","t","needReInfer","symbolByOffset","offset","canReduce","EPSILON","advance","coreItem","Array","from","curSymbol","nextSymbol","State","cores","closured","_stateItemPool","_items","it","itemMapKey","getStateItemMapKey","createStateItem","mapId","newItem","create","cacheKey","getMapKey","state","closureMap","core","newState","items","ParserUtils","unwrapNodeByType","node","child","Token","nt","parseMacroParamList","inner","replace","s","trim","filter","Boolean","unwrapBareIdentifier","cur","VariableIdentifier","allowParens","PrimaryExpression","TreeNode","undefined","ExpressionAstNode","extractDirectIdentLexeme","expr","ident","typeCompatible","ta","tb","INT","UINT","printStatePool","logPath","output","console","log","count","values","tmp","padEnd","psItem","BaseLexer","_currentIndex","_column","_line","_source","setSource","getShaderPosition","backOffset","isEnd","getCurChar","getCurCharCode","charCodeAt","startIndex","skipSpace","includeLineBreak","isWhiteSpaceChar","skipCommentsAndSpace","afterBlock","_skipBlockComment","afterLine","_skipLineComment","peek","to","substring","scanLexeme","throwError","scanTwoExpectedLexemes","lexeme1","lexeme2","pos","msgs","error","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","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","MACRO_CONDITIONAL_EXPRESSION","_isVisibleMacro","defs","callSiteBranch","isVisibleFrom","nextCode","_scanIntegerSuffix","INT_CONSTANT","defBranch","d","m","kw","True","False","startsWith","out","pendingSpace","const","CONST","bool","BOOL","float","FLOAT","double","DOUBLE","int","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","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","realReturnType","MAT2X3","MAT3X2","MAT2X4","MAT4X2","MAT3X4","MAT4X3","FRAGMENT","BuiltinVariableTable","BuiltinVariable","createVariable","getVar","VERTEX","VEC4_ARRAY","SymbolTable","_table","insert","symbol","isInMacroBranch","entry","equal","warn","getSymbol","includeMacro","getSymbols","_getSymbols","forEach","callback","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","acceptRule","symbolTableStack","curFunctionInfo","_shaderData","_translationRuleTable","errors","reset","_macroDefineList","addTranslationRule","pid","rule","getTranslationRule","reportError","loc","CompilationError","_processingPassText","reportWarning","CompilationWarn","shaderData","_lookupSymbol","SymbolType","StructProp","mrtIndex","typeInfo","ASTNodeDecorator","nonTerminal","prototype","_location","_children","_parent","init","setCache","code","_codeCache","getCache","codeGen","visitor","defaultCodeGen","semanticAnalyze","_unwrapToken","_ignore","ScopeBrace","scope_brace","ScopeEndBrace","scope_end_brace","JumpStatement","isFragReturnStatement","returnStatement","visitJumpStatement","jump_statement","ConditionOpt","conditionopt","ForRestStatement","for_rest_statement","Condition","condition","ForInitStatement","for_init_statement","IterationStatement","iteration_statement","SelectionStatement","selection_statement","ExpressionStatement","expression_statement","_type","InitializerList","initializer_list","Initializer","initializer","SingleDeclaration","childrenLen","fullyType","visitSingleDeclaration","single_declaration","FullySpecifiedType","_","fully_specified_type","TypeQualifier","type_qualifier","SingleTypeQualifier","qualifier","single_type_qualifier","BasicTypeQualifier","StorageQualifier","storage_qualifier","PrecisionQualifier","precision_qualifier","InterpolationQualifier","interpolation_qualifier","InvariantQualifier","invariant_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","SimpleStatement","simple_statement","CompoundStatement","compound_statement","CompoundStatementNoScope","compound_statement_no_scope","Statement","statement","StatementList","visitStatementList","statement_list","FunctionDefinition","statements","visitFunctionDefinition","function_definition","FunctionCall","visitFunctionCall","function_call","FunctionCallGeneric","fnSymbol","functionIdentifier","isBuiltin","fnIdent","paramList","FunctionCallParameterList","builtinFn","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","AssignmentOperator","assignment_operator","Expression","expression","primary_expression","PostfixExpression","visitPostfixExpression","postfix_expression","UnaryOperator","unary_operator","UnaryExpression","unary_expression","MultiplicativeExpression","multiplicative_expression","AdditiveExpression","additive_expression","ShiftExpression","shift_expression","RelationalExpression","relational_expression","EqualityExpression","equality_expression","AndExpression","and_expression","ExclusiveOrExpression","exclusive_or_expression","InclusiveOrExpression","inclusive_or_expression","LogicalAndExpression","logical_and_expression","LogicalXorExpression","logical_xor_expression","LogicalOrExpression","logical_or_expression","ConditionalExpression","conditional_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","_referencedVaryingList","_referencedMRTList","_referencedGlobals","_structVarMap","isAttributeStruct","findIndex","isVaryingStruct","isMRTStruct","getStructRole","registerStructVar","varName","role","referenceAttribute","_referenceProp","referenceVarying","referenceMRTProp","referenceGlobal","_passSymbolTable","refList","_singleton","context","TempArray","array","CodeGenVisitor","_tmpArrayPool","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","codeGenResult","structNodes","referencedGlobals","referencedGlobalMacroASTs","_visitGlobalMacroIfStatement","variableDeclaration","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","match","_DIRECTIVE_RE","exec","last","keyword","rest","idx","cond","_parseCondition","_pushConditionInstruction","prevIdx","elseIdx","_backfillJump","endifIdx","afterEndif","inst","funcMatch","_FUNC_MACRO_RE","_stripLineComment","spaceIdx","op","nl","onlyPlaceholder","directive","trimEnd","ctx","_parseOr","_skipWs","_parseAnd","l","r","_parseUnary","_parsePrimary","hasParen","_scanIdentifier","_isDigit","lhsNum","_scanNumber","_scanOp","_evalNumOp","_isAlnum","c2","lhs","rhs","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","Shift","table","terminal","exist","_isKnownShiftPreferred","_computeFirstSetForNT","NT","computingFS","curNT","firstSet","isNullableNT","succeedFirstSet","reduce","prod","Grammar","startSymbol","unshift","getProductionByID","_ps","gsl","productionAndRules","variable_declaration_statement","createGrammar","ShaderTargetParser","_traceBackStack","sematicAnalyzer","SematicAnalyzer","tokens","traceBackStack","nextToken","reduceProduction","translationRule","nextState","_printStack","str","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","scanToCharacter","char","createCompileError","_validateWordBoundaries","tokenType","_keywordLexemeTable","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","_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","_logErrors","_parseShaderPass","backend","noIncludeContent","parser","_parser","program","ShaderLanguage","GLSLES100","vertexShaderInstructions","fragmentShaderInstructions","_precompile","platformTarget","sub","_serializeRenderStates","programSource","err","_shaderPositionPool","_shaderRangePool","version","mode"],"mappings":"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"}
|