@galacean/engine-shader-compiler 2.0.0-alpha.52 → 2.0.0-alpha.54

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.
Files changed (91) hide show
  1. package/README.md +40 -4
  2. package/bundler/cli.js +199 -104
  3. package/bundler/precompile.cjs.js +117 -47
  4. package/bundler/precompile.js +117 -47
  5. package/bundler/rollup.cjs.js +115 -45
  6. package/bundler/rollup.js +115 -45
  7. package/dist/browser.js +13421 -6555
  8. package/dist/browser.js.map +1 -1
  9. package/dist/browser.min.js +1 -1
  10. package/dist/browser.min.js.map +1 -1
  11. package/dist/main.js +1758 -8450
  12. package/dist/main.js.map +1 -1
  13. package/dist/module.js +1730 -8427
  14. package/dist/module.js.map +1 -1
  15. package/dist/precompile.main.js +2280 -0
  16. package/dist/precompile.main.js.map +1 -0
  17. package/dist/precompile.module.js +2276 -0
  18. package/dist/precompile.module.js.map +1 -0
  19. package/package.json +24 -13
  20. package/types/GLESBackend.d.ts +22 -0
  21. package/types/ShaderBackend.d.ts +15 -0
  22. package/types/ShaderCompilation.d.ts +40 -0
  23. package/types/ShaderCompiler.d.ts +42 -14
  24. package/types/ShaderInstructionEncoder.d.ts +46 -14
  25. package/types/ShaderPrecompiler.d.ts +31 -0
  26. package/types/bundler/precompile.d.ts +26 -3
  27. package/types/bundler/rollup.d.ts +23 -2
  28. package/types/codeGen/CodeGenVisitor.d.ts +11 -6
  29. package/types/codeGen/GLES100.d.ts +3 -5
  30. package/types/codeGen/GLES300.d.ts +14 -7
  31. package/types/codeGen/GLESVisitor.d.ts +55 -9
  32. package/types/codeGen/VisitorContext.d.ts +88 -29
  33. package/types/codeGen/types.d.ts +1 -1
  34. package/types/index.d.ts +4 -1
  35. package/types/precompile.d.ts +1 -0
  36. package/dist/browser.verbose.js +0 -9601
  37. package/dist/browser.verbose.js.map +0 -1
  38. package/dist/browser.verbose.min.js +0 -2
  39. package/dist/browser.verbose.min.js.map +0 -1
  40. package/dist/main.verbose.js +0 -9598
  41. package/dist/main.verbose.js.map +0 -1
  42. package/dist/module.verbose.js +0 -9591
  43. package/dist/module.verbose.js.map +0 -1
  44. package/types/GSError.d.ts +0 -16
  45. package/types/ParserUtils.d.ts +0 -43
  46. package/types/Preprocessor.d.ts +0 -30
  47. package/types/ShaderCompilerUtils.d.ts +0 -10
  48. package/types/common/BaseLexer.d.ts +0 -51
  49. package/types/common/BaseToken.d.ts +0 -35
  50. package/types/common/IBaseSymbol.d.ts +0 -5
  51. package/types/common/ShaderPosition.d.ts +0 -8
  52. package/types/common/ShaderRange.d.ts +0 -8
  53. package/types/common/SymbolTable.d.ts +0 -13
  54. package/types/common/SymbolTableStack.d.ts +0 -17
  55. package/types/common/enums/Keyword.d.ts +0 -124
  56. package/types/common/enums/ShaderStage.d.ts +0 -5
  57. package/types/common/index.d.ts +0 -5
  58. package/types/common/types.d.ts +0 -101
  59. package/types/lalr/CFG.d.ts +0 -5
  60. package/types/lalr/LALR1.d.ts +0 -27
  61. package/types/lalr/Production.d.ts +0 -9
  62. package/types/lalr/State.d.ts +0 -20
  63. package/types/lalr/StateItem.d.ts +0 -20
  64. package/types/lalr/Utils.d.ts +0 -22
  65. package/types/lalr/index.d.ts +0 -2
  66. package/types/lalr/types.d.ts +0 -14
  67. package/types/lexer/Lexer.d.ts +0 -143
  68. package/types/lexer/index.d.ts +0 -1
  69. package/types/parser/AST.d.ts +0 -502
  70. package/types/parser/Grammar.d.ts +0 -11
  71. package/types/parser/GrammarSymbol.d.ts +0 -128
  72. package/types/parser/SemanticAnalyzer.d.ts +0 -42
  73. package/types/parser/ShaderInfo.d.ts +0 -10
  74. package/types/parser/ShaderTargetParser.d.ts +0 -26
  75. package/types/parser/builtin/functions.d.ts +0 -34
  76. package/types/parser/builtin/index.d.ts +0 -2
  77. package/types/parser/builtin/variables.d.ts +0 -11
  78. package/types/parser/index.d.ts +0 -2
  79. package/types/parser/symbolTable/FnSymbol.d.ts +0 -6
  80. package/types/parser/symbolTable/StructSymbol.d.ts +0 -6
  81. package/types/parser/symbolTable/SymbolDataType.d.ts +0 -8
  82. package/types/parser/symbolTable/SymbolInfo.d.ts +0 -22
  83. package/types/parser/symbolTable/VarSymbol.d.ts +0 -8
  84. package/types/parser/symbolTable/index.d.ts +0 -6
  85. package/types/parser/types.d.ts +0 -24
  86. package/types/sourceParser/ShaderSourceFactory.d.ts +0 -8
  87. package/types/sourceParser/ShaderSourceParser.d.ts +0 -30
  88. package/types/sourceParser/ShaderSourceSymbol.d.ts +0 -10
  89. package/types/sourceParser/SourceLexer.d.ts +0 -19
  90. package/types/sourceParser/index.d.ts +0 -1
  91. package/verbose/package.json +0 -10
@@ -1 +1 @@
1
- {"version":3,"file":"module.js","sources":["../../../node_modules/.pnpm/@swc+helpers@0.5.15/node_modules/@swc/helpers/esm/_instanceof.js","../../../node_modules/.pnpm/@swc+helpers@0.5.15/node_modules/@swc/helpers/esm/_set_prototype_of.js","../../../node_modules/.pnpm/@swc+helpers@0.5.15/node_modules/@swc/helpers/esm/_inherits.js","../../../node_modules/.pnpm/@swc+helpers@0.5.15/node_modules/@swc/helpers/esm/_create_class.js","../../../node_modules/.pnpm/@swc+helpers@0.5.15/node_modules/@swc/helpers/esm/_array_like_to_array.js","../../../node_modules/.pnpm/@swc+helpers@0.5.15/node_modules/@swc/helpers/esm/_unsupported_iterable_to_array.js","../../../node_modules/.pnpm/@swc+helpers@0.5.15/node_modules/@swc/helpers/esm/_create_for_of_iterator_helper_loose.js","../../../node_modules/.pnpm/tslib@2.8.1/node_modules/tslib/tslib.es6.mjs","../src/common/ShaderRange.ts","../src/common/ShaderPosition.ts","../src/common/types.ts","../src/common/enums/Keyword.ts","../src/ShaderCompilerUtils.ts","../src/common/BaseToken.ts","../src/parser/GrammarSymbol.ts","../src/ParserUtils.ts","../../../node_modules/.pnpm/@swc+helpers@0.5.15/node_modules/@swc/helpers/esm/_is_native_reflect_construct.js","../../../node_modules/.pnpm/@swc+helpers@0.5.15/node_modules/@swc/helpers/esm/_construct.js","../../../node_modules/.pnpm/@swc+helpers@0.5.15/node_modules/@swc/helpers/esm/_get_prototype_of.js","../../../node_modules/.pnpm/@swc+helpers@0.5.15/node_modules/@swc/helpers/esm/_is_native_function.js","../../../node_modules/.pnpm/@swc+helpers@0.5.15/node_modules/@swc/helpers/esm/_wrap_native_super.js","../src/GSError.ts","../src/common/BaseLexer.ts","../src/lexer/Lexer.ts","../src/common/enums/ShaderStage.ts","../src/parser/builtin/functions.ts","../src/parser/builtin/variables.ts","../src/common/SymbolTable.ts","../src/common/SymbolTableStack.ts","../src/parser/symbolTable/SymbolDataType.ts","../src/parser/symbolTable/SymbolInfo.ts","../src/parser/symbolTable/FnSymbol.ts","../src/parser/symbolTable/StructSymbol.ts","../src/parser/symbolTable/VarSymbol.ts","../src/parser/ShaderInfo.ts","../src/parser/SemanticAnalyzer.ts","../src/parser/types.ts","../src/parser/AST.ts","../src/codeGen/VisitorContext.ts","../src/TempArray.ts","../src/codeGen/CodeGenVisitor.ts","../src/codeGen/GLESVisitor.ts","../src/codeGen/GLES100.ts","../src/codeGen/GLES300.ts","../src/ShaderInstructionEncoder.ts","../src/lalr/Production.ts","../src/lalr/StateItem.ts","../src/lalr/State.ts","../src/lalr/Utils.ts","../src/lalr/types.ts","../src/lalr/LALR1.ts","../src/parser/Grammar.ts","../src/lalr/CFG.ts","../src/parser/ShaderTargetParser.ts","../src/Preprocessor.ts","../../../node_modules/.pnpm/@swc+helpers@0.5.15/node_modules/@swc/helpers/esm/_extends.js","../src/sourceParser/ShaderSourceFactory.ts","../src/sourceParser/ShaderSourceSymbol.ts","../src/sourceParser/SourceLexer.ts","../src/sourceParser/ShaderSourceParser.ts","../src/ShaderCompiler.ts","../src/index.ts"],"sourcesContent":["function _instanceof(left, right) {\n if (right != null && typeof Symbol !== \"undefined\" && right[Symbol.hasInstance]) {\n return !!right[Symbol.hasInstance](left);\n } else return left instanceof right;\n}\nexport { _instanceof as _ };\n","function _set_prototype_of(o, p) {\n _set_prototype_of = Object.setPrototypeOf || function setPrototypeOf(o, p) {\n o.__proto__ = p;\n\n return o;\n };\n\n return _set_prototype_of(o, p);\n}\nexport { _set_prototype_of as _ };\n","import { _ as _set_prototype_of } from \"./_set_prototype_of.js\";\n\nfunction _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function\");\n }\n\n subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } });\n\n if (superClass) _set_prototype_of(subClass, superClass);\n}\nexport { _inherits as _ };\n","function _defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n\n if (\"value\" in descriptor) descriptor.writable = true;\n\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n}\nfunction _create_class(Constructor, protoProps, staticProps) {\n if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n if (staticProps) _defineProperties(Constructor, staticProps);\n\n return Constructor;\n}\nexport { _create_class as _ };\n","function _array_like_to_array(arr, len) {\n if (len == null || len > arr.length) len = arr.length;\n\n for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i];\n\n return arr2;\n}\nexport { _array_like_to_array as _ };\n","import { _ as _array_like_to_array } from \"./_array_like_to_array.js\";\n\nfunction _unsupported_iterable_to_array(o, minLen) {\n if (!o) return;\n if (typeof o === \"string\") return _array_like_to_array(o, minLen);\n\n var n = Object.prototype.toString.call(o).slice(8, -1);\n\n if (n === \"Object\" && o.constructor) n = o.constructor.name;\n if (n === \"Map\" || n === \"Set\") return Array.from(n);\n if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _array_like_to_array(o, minLen);\n}\nexport { _unsupported_iterable_to_array as _ };\n","import { _ as _unsupported_iterable_to_array } from \"./_unsupported_iterable_to_array.js\";\n\nfunction _create_for_of_iterator_helper_loose(o, allowArrayLike) {\n var it = typeof Symbol !== \"undefined\" && o[Symbol.iterator] || o[\"@@iterator\"];\n\n if (it) return (it = it.call(o)).next.bind(it);\n // Fallback for engines without symbol support\n if (Array.isArray(o) || (it = _unsupported_iterable_to_array(o)) || allowArrayLike && o && typeof o.length === \"number\") {\n if (it) o = it;\n\n var i = 0;\n\n return function() {\n if (i >= o.length) return { done: true };\n\n return { done: false, value: o[i++] };\n };\n }\n\n throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}\nexport { _create_for_of_iterator_helper_loose as _ };\n","/******************************************************************************\nCopyright (c) Microsoft Corporation.\n\nPermission to use, copy, modify, and/or distribute this software for any\npurpose with or without fee is hereby granted.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\nPERFORMANCE OF THIS SOFTWARE.\n***************************************************************************** */\n/* global Reflect, Promise, SuppressedError, Symbol, Iterator */\n\nvar extendStatics = function(d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n};\n\nexport function __extends(d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n}\n\nexport var __assign = function() {\n __assign = Object.assign || function __assign(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n }\n return t;\n }\n return __assign.apply(this, arguments);\n}\n\nexport function __rest(s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\n t[p[i]] = s[p[i]];\n }\n return t;\n}\n\nexport function __decorate(decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n}\n\nexport function __param(paramIndex, decorator) {\n return function (target, key) { decorator(target, key, paramIndex); }\n}\n\nexport function __esDecorate(ctor, descriptorIn, decorators, contextIn, initializers, extraInitializers) {\n function accept(f) { if (f !== void 0 && typeof f !== \"function\") throw new TypeError(\"Function expected\"); return f; }\n var kind = contextIn.kind, key = kind === \"getter\" ? \"get\" : kind === \"setter\" ? \"set\" : \"value\";\n var target = !descriptorIn && ctor ? contextIn[\"static\"] ? ctor : ctor.prototype : null;\n var descriptor = descriptorIn || (target ? Object.getOwnPropertyDescriptor(target, contextIn.name) : {});\n var _, done = false;\n for (var i = decorators.length - 1; i >= 0; i--) {\n var context = {};\n for (var p in contextIn) context[p] = p === \"access\" ? {} : contextIn[p];\n for (var p in contextIn.access) context.access[p] = contextIn.access[p];\n context.addInitializer = function (f) { if (done) throw new TypeError(\"Cannot add initializers after decoration has completed\"); extraInitializers.push(accept(f || null)); };\n var result = (0, decorators[i])(kind === \"accessor\" ? { get: descriptor.get, set: descriptor.set } : descriptor[key], context);\n if (kind === \"accessor\") {\n if (result === void 0) continue;\n if (result === null || typeof result !== \"object\") throw new TypeError(\"Object expected\");\n if (_ = accept(result.get)) descriptor.get = _;\n if (_ = accept(result.set)) descriptor.set = _;\n if (_ = accept(result.init)) initializers.unshift(_);\n }\n else if (_ = accept(result)) {\n if (kind === \"field\") initializers.unshift(_);\n else descriptor[key] = _;\n }\n }\n if (target) Object.defineProperty(target, contextIn.name, descriptor);\n done = true;\n};\n\nexport function __runInitializers(thisArg, initializers, value) {\n var useValue = arguments.length > 2;\n for (var i = 0; i < initializers.length; i++) {\n value = useValue ? initializers[i].call(thisArg, value) : initializers[i].call(thisArg);\n }\n return useValue ? value : void 0;\n};\n\nexport function __propKey(x) {\n return typeof x === \"symbol\" ? x : \"\".concat(x);\n};\n\nexport function __setFunctionName(f, name, prefix) {\n if (typeof name === \"symbol\") name = name.description ? \"[\".concat(name.description, \"]\") : \"\";\n return Object.defineProperty(f, \"name\", { configurable: true, value: prefix ? \"\".concat(prefix, \" \", name) : name });\n};\n\nexport function __metadata(metadataKey, metadataValue) {\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\n}\n\nexport function __awaiter(thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n}\n\nexport function __generator(thisArg, body) {\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g = Object.create((typeof Iterator === \"function\" ? Iterator : Object).prototype);\n return g.next = verb(0), g[\"throw\"] = verb(1), g[\"return\"] = verb(2), typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n function verb(n) { return function (v) { return step([n, v]); }; }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (g && (g = 0, op[0] && (_ = 0)), _) try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [op[0] & 2, t.value];\n switch (op[0]) {\n case 0: case 1: t = op; break;\n case 4: _.label++; return { value: op[1], done: false };\n case 5: _.label++; y = op[1]; op = [0]; continue;\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n if (t[2]) _.ops.pop();\n _.trys.pop(); continue;\n }\n op = body.call(thisArg, _);\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n }\n}\n\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n});\n\nexport function __exportStar(m, o) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\n}\n\nexport function __values(o) {\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\n if (m) return m.call(o);\n if (o && typeof o.length === \"number\") return {\n next: function () {\n if (o && i >= o.length) o = void 0;\n return { value: o && o[i++], done: !o };\n }\n };\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\n}\n\nexport function __read(o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o), r, ar = [], e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n }\n catch (error) { e = { error: error }; }\n finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n }\n finally { if (e) throw e.error; }\n }\n return ar;\n}\n\n/** @deprecated */\nexport function __spread() {\n for (var ar = [], i = 0; i < arguments.length; i++)\n ar = ar.concat(__read(arguments[i]));\n return ar;\n}\n\n/** @deprecated */\nexport function __spreadArrays() {\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\n r[k] = a[j];\n return r;\n}\n\nexport function __spreadArray(to, from, pack) {\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\n if (ar || !(i in from)) {\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\n ar[i] = from[i];\n }\n }\n return to.concat(ar || Array.prototype.slice.call(from));\n}\n\nexport function __await(v) {\n return this instanceof __await ? (this.v = v, this) : new __await(v);\n}\n\nexport function __asyncGenerator(thisArg, _arguments, generator) {\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\n return i = Object.create((typeof AsyncIterator === \"function\" ? AsyncIterator : Object).prototype), verb(\"next\"), verb(\"throw\"), verb(\"return\", awaitReturn), i[Symbol.asyncIterator] = function () { return this; }, i;\n function awaitReturn(f) { return function (v) { return Promise.resolve(v).then(f, reject); }; }\n function verb(n, f) { if (g[n]) { i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; if (f) i[n] = f(i[n]); } }\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\n function fulfill(value) { resume(\"next\", value); }\n function reject(value) { resume(\"throw\", value); }\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\n}\n\nexport function __asyncDelegator(o) {\n var i, p;\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: false } : f ? f(v) : v; } : f; }\n}\n\nexport function __asyncValues(o) {\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\n var m = o[Symbol.asyncIterator], i;\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\n}\n\nexport function __makeTemplateObject(cooked, raw) {\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\n return cooked;\n};\n\nvar __setModuleDefault = Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n};\n\nvar ownKeys = function(o) {\n ownKeys = Object.getOwnPropertyNames || function (o) {\n var ar = [];\n for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;\n return ar;\n };\n return ownKeys(o);\n};\n\nexport function __importStar(mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== \"default\") __createBinding(result, mod, k[i]);\n __setModuleDefault(result, mod);\n return result;\n}\n\nexport function __importDefault(mod) {\n return (mod && mod.__esModule) ? mod : { default: mod };\n}\n\nexport function __classPrivateFieldGet(receiver, state, kind, f) {\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\n}\n\nexport function __classPrivateFieldSet(receiver, state, value, kind, f) {\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\n}\n\nexport function __classPrivateFieldIn(state, receiver) {\n if (receiver === null || (typeof receiver !== \"object\" && typeof receiver !== \"function\")) throw new TypeError(\"Cannot use 'in' operator on non-object\");\n return typeof state === \"function\" ? receiver === state : state.has(receiver);\n}\n\nexport function __addDisposableResource(env, value, async) {\n if (value !== null && value !== void 0) {\n if (typeof value !== \"object\" && typeof value !== \"function\") throw new TypeError(\"Object expected.\");\n var dispose, inner;\n if (async) {\n if (!Symbol.asyncDispose) throw new TypeError(\"Symbol.asyncDispose is not defined.\");\n dispose = value[Symbol.asyncDispose];\n }\n if (dispose === void 0) {\n if (!Symbol.dispose) throw new TypeError(\"Symbol.dispose is not defined.\");\n dispose = value[Symbol.dispose];\n if (async) inner = dispose;\n }\n if (typeof dispose !== \"function\") throw new TypeError(\"Object not disposable.\");\n if (inner) dispose = function() { try { inner.call(this); } catch (e) { return Promise.reject(e); } };\n env.stack.push({ value: value, dispose: dispose, async: async });\n }\n else if (async) {\n env.stack.push({ async: true });\n }\n return value;\n}\n\nvar _SuppressedError = typeof SuppressedError === \"function\" ? SuppressedError : function (error, suppressed, message) {\n var e = new Error(message);\n return e.name = \"SuppressedError\", e.error = error, e.suppressed = suppressed, e;\n};\n\nexport function __disposeResources(env) {\n function fail(e) {\n env.error = env.hasError ? new _SuppressedError(e, env.error, \"An error was suppressed during disposal.\") : e;\n env.hasError = true;\n }\n var r, s = 0;\n function next() {\n while (r = env.stack.pop()) {\n try {\n if (!r.async && s === 1) return s = 0, env.stack.push(r), Promise.resolve().then(next);\n if (r.dispose) {\n var result = r.dispose.call(r.value);\n if (r.async) return s |= 2, Promise.resolve(result).then(next, function(e) { fail(e); return next(); });\n }\n else s |= 1;\n }\n catch (e) {\n fail(e);\n }\n }\n if (s === 1) return env.hasError ? Promise.reject(env.error) : Promise.resolve();\n if (env.hasError) throw env.error;\n }\n return next();\n}\n\nexport function __rewriteRelativeImportExtension(path, preserveJsx) {\n if (typeof path === \"string\" && /^\\.\\.?\\//.test(path)) {\n return path.replace(/\\.(tsx)$|((?:\\.d)?)((?:\\.[^./]+?)?)\\.([cm]?)ts$/i, function (m, tsx, d, ext, cm) {\n return tsx ? preserveJsx ? \".jsx\" : \".js\" : d && (!ext || !cm) ? m : (d + ext + \".\" + cm.toLowerCase() + \"js\");\n });\n }\n return path;\n}\n\nexport default {\n __extends,\n __assign,\n __rest,\n __decorate,\n __param,\n __esDecorate,\n __runInitializers,\n __propKey,\n __setFunctionName,\n __metadata,\n __awaiter,\n __generator,\n __createBinding,\n __exportStar,\n __values,\n __read,\n __spread,\n __spreadArrays,\n __spreadArray,\n __await,\n __asyncGenerator,\n __asyncDelegator,\n __asyncValues,\n __makeTemplateObject,\n __importStar,\n __importDefault,\n __classPrivateFieldGet,\n __classPrivateFieldSet,\n __classPrivateFieldIn,\n __addDisposableResource,\n __disposeResources,\n __rewriteRelativeImportExtension,\n};\n","import type { IPoolElement } from \"@galacean/engine-core\";\nimport { ShaderPosition } from \"./ShaderPosition\";\n\nexport class ShaderRange implements IPoolElement {\n public start: ShaderPosition;\n public end: ShaderPosition;\n\n set(start: ShaderPosition, end: ShaderPosition) {\n this.start = start;\n this.end = end;\n }\n\n dispose(): void {\n this.start.dispose();\n this.end.dispose();\n }\n}\n","import type { IPoolElement } from \"@galacean/engine-core\";\n\nexport class ShaderPosition implements IPoolElement {\n index: number;\n // #if _VERBOSE\n line: number;\n column: number;\n // #endif\n\n set(\n index: number,\n // #if _VERBOSE\n line: number,\n column: number\n // #endif\n ) {\n this.index = index;\n // #if _VERBOSE\n this.line = line;\n this.column = column;\n // #endif\n }\n\n dispose(): void {\n this.index = 0;\n // #if _VERBOSE\n this.line = 0;\n this.column = 0;\n // #endif\n }\n}\n","import { Keyword } from \"./enums/Keyword\";\n\nexport enum ETokenType {\n ID = 1000,\n FLOAT_CONSTANT,\n INT_CONSTANT,\n STRING_CONST,\n /** << */\n LEFT_OP,\n /** \\>> */\n RIGHT_OP,\n /** ++ */\n INC_OP,\n /** -- */\n DEC_OP,\n /** <= */\n LE_OP,\n /** \\>= */\n GE_OP,\n /** == */\n EQ_OP,\n /** != */\n NE_OP,\n /** && */\n AND_OP,\n /** || */\n OR_OP,\n /** ^^ */\n XOR_OP,\n /** *= */\n MUL_ASSIGN,\n /** /= */\n DIV_ASSIGN,\n /** += */\n ADD_ASSIGN,\n /** -= */\n SUB_ASSIGN,\n /** %= */\n MOD_ASSIGN,\n /** <<= */\n LEFT_ASSIGN,\n /** >>= */\n RIGHT_ASSIGN,\n /** &= */\n AND_ASSIGN,\n /** ^= */\n XOR_ASSIGN,\n /** |= */\n OR_ASSIGN,\n /** ( */\n LEFT_PAREN,\n /** ) */\n RIGHT_PAREN,\n /** [ */\n LEFT_BRACKET,\n /** ] */\n RIGHT_BRACKET,\n /** { */\n LEFT_BRACE,\n /** } */\n RIGHT_BRACE,\n /** . */\n DOT,\n /** , */\n COMMA,\n COLON,\n /** = */\n EQUAL,\n /** ; */\n SEMICOLON,\n /** ! */\n BANG,\n /** \\- */\n DASH,\n /** ~ */\n TILDE,\n PLUS,\n /** \\* */\n STAR,\n /** / */\n SLASH,\n /** % */\n PERCENT,\n /** < */\n LEFT_ANGLE,\n /** \\> */\n RIGHT_ANGLE,\n VERTICAL_BAR,\n /** ^ */\n CARET,\n /** & */\n AMPERSAND,\n /** ? */\n QUESTION,\n\n NotWord,\n\n /** ε */\n EPSILON = 1998,\n EOF = 1999\n}\n\nexport const TypeAny = 3000;\n\nexport type GalaceanDataType =\n | Keyword.VOID\n | Keyword.FLOAT\n | Keyword.BOOL\n | Keyword.INT\n | Keyword.UINT\n | Keyword.VEC2\n | Keyword.VEC3\n | Keyword.VEC4\n | Keyword.BVEC2\n | Keyword.BVEC3\n | Keyword.BVEC4\n | Keyword.IVEC2\n | Keyword.IVEC3\n | Keyword.IVEC4\n | Keyword.UVEC2\n | Keyword.UVEC3\n | Keyword.UVEC4\n | Keyword.MAT2\n | Keyword.MAT3\n | Keyword.MAT4\n | Keyword.MAT2X3\n | Keyword.MAT2X4\n | Keyword.MAT3X2\n | Keyword.MAT3X4\n | Keyword.MAT4X2\n | Keyword.MAT4X3\n | Keyword.SAMPLER2D\n | Keyword.SAMPLER3D\n | Keyword.SAMPLER_CUBE\n | Keyword.SAMPLER2D_SHADOW\n | Keyword.SAMPLER_CUBE_SHADOW\n | Keyword.SAMPLER2D_ARRAY\n | Keyword.SAMPLER2D_ARRAY_SHADOW\n | Keyword.I_SAMPLER2D\n | Keyword.I_SAMPLER3D\n | Keyword.I_SAMPLER_CUBE\n | Keyword.I_SAMPLER2D_ARRAY\n | Keyword.U_SAMPLER2D\n | Keyword.U_SAMPLER3D\n | Keyword.U_SAMPLER_CUBE\n | Keyword.U_SAMPLER2D_ARRAY\n | Keyword.VEC4_ARRAY\n | typeof TypeAny\n | string;\n\nexport type TokenType = ETokenType | Keyword;\n","export enum Keyword {\n CONST = 0,\n BOOL,\n FLOAT,\n DOUBLE,\n INT,\n UINT,\n BREAK,\n CONTINUE,\n DO,\n ELSE,\n FOR,\n IF,\n WHILE,\n DISCARD,\n RETURN,\n BVEC2,\n BVEC3,\n BVEC4,\n IVEC2,\n IVEC3,\n IVEC4,\n UVEC2,\n UVEC3,\n UVEC4,\n VEC2,\n VEC3,\n VEC4,\n VEC4_ARRAY,\n MAT2,\n MAT3,\n MAT4,\n MAT2X3,\n MAT2X4,\n MAT3X2,\n MAT3X4,\n MAT4X2,\n MAT4X3,\n IN,\n OUT,\n INOUT,\n CENTROID,\n SAMPLER2D,\n SAMPLER3D,\n SAMPLER_CUBE,\n SAMPLER2D_SHADOW,\n SAMPLER_CUBE_SHADOW,\n SAMPLER2D_ARRAY,\n SAMPLER2D_ARRAY_SHADOW,\n I_SAMPLER2D,\n I_SAMPLER3D,\n I_SAMPLER_CUBE,\n I_SAMPLER2D_ARRAY,\n U_SAMPLER2D,\n U_SAMPLER3D,\n U_SAMPLER_CUBE,\n U_SAMPLER2D_ARRAY,\n STRUCT,\n LAYOUT,\n LOCATION,\n VOID,\n\n PRECISION,\n PRECISE,\n HIGHP,\n MEDIUMP,\n LOWP,\n INVARIANT,\n SMOOTH,\n FLAT,\n NOPERSPECTIVE,\n\n // Common Tokens\n True,\n False,\n LeftBrace,\n RightBrace,\n Equal,\n BitwiseOr,\n\n // Source Parser Tokens\n GSRenderQueueType,\n GSBlendState,\n GSDepthState,\n GSStencilState,\n GSRasterState,\n GSEditorProperties,\n GSEditorMacros,\n GSEditor,\n GSTags,\n GSVertexShader,\n GSFragmentShader,\n GSSubShader,\n GSPass,\n GSBlendFactor,\n GSBlendOperation,\n GSBool,\n GSNumber,\n GSColor,\n GSCompareFunction,\n GSStencilOperation,\n GSCullMode,\n GSColorWriteMask,\n GSUsePass,\n\n // Macros\n MACRO_IF,\n MACRO_IFDEF,\n MACRO_IFNDEF,\n MACRO_ELSE,\n MACRO_ELIF,\n MACRO_ENDIF,\n MACRO_UNDEF,\n /** Legacy opaque `#define` token — whole directive packed into one lexeme. Retained\n * for macros whose value can't be parsed as a GLSL expression (type aliases,\n * qualifier aliases, partial-syntax macros). Expression-style macros instead emit\n * `MACRO_DEFINE` + ID + value tokens + `MACRO_DEFINE_END`. */\n MACRO_DEFINE_EXPRESSION,\n MACRO_CONDITIONAL_EXPRESSION,\n MACRO_CALL,\n /** `#define` directive head for expression-style macros. */\n MACRO_DEFINE,\n /** Terminates a `MACRO_DEFINE` directive at end-of-line. */\n MACRO_DEFINE_END,\n /** `(params)` block for a function-like `#define`. The lexer captures the entire\n * parenthesized parameter list as one opaque token so the macro-define CFG rule\n * doesn't need its own parameter-list production (which would conflict with\n * function_call_parameter_list under LALR(1)). The AST consumer parses the\n * lexeme to recover the individual parameter names. */\n MACRO_DEFINE_PARAMS\n}\n","import { ClearableObjectPool, type IPoolElement } from \"@galacean/engine-core\";\nimport { GSErrorName } from \"./GSError\";\nimport { ShaderRange } from \"./common/ShaderRange\";\nimport { ShaderPosition } from \"./common/ShaderPosition\";\n// #if _VERBOSE\nimport { GSError } from \"./GSError\";\n// #endif\n\nexport class ShaderCompilerUtils {\n private static _shaderCompilerObjectPoolSet: ClearableObjectPool<IPoolElement>[] = [];\n\n static createObjectPool<T extends IPoolElement>(type: new () => T) {\n const pool = new ClearableObjectPool<T>(type);\n ShaderCompilerUtils._shaderCompilerObjectPoolSet.push(pool);\n return pool;\n }\n\n static clearAllShaderCompilerObjectPool() {\n for (let i = 0, n = ShaderCompilerUtils._shaderCompilerObjectPoolSet.length; i < n; i++) {\n ShaderCompilerUtils._shaderCompilerObjectPoolSet[i].clear();\n }\n }\n\n static createGSError(\n message: string,\n errorName: GSErrorName,\n source: string,\n location: ShaderRange | ShaderPosition,\n file?: string\n ): Error {\n // #if _VERBOSE\n return new GSError(errorName, message, location, source, file);\n // #else\n console.error(message);\n const err = new Error(message);\n err.name = errorName;\n return err;\n // #endif\n }\n}\n","import { ETokenType } from \"./types\";\nimport { ShaderRange, ShaderPosition } from \".\";\nimport { ShaderCompiler } from \"../ShaderCompiler\";\nimport type { IPoolElement } from \"@galacean/engine-core\";\nimport { ShaderCompilerUtils } from \"../ShaderCompilerUtils\";\n\n/**\n * One condition in a branch signature: `defined: true` for `#ifdef X` (the\n * branch is active when `X` is defined), `defined: false` for `#ifndef X` /\n * after `#else` (active when `X` is undefined).\n */\nexport interface BranchConstraint {\n name: string;\n defined: boolean;\n}\n\n/**\n * Snapshot of the `#ifdef`/`#ifndef`/`#else` stack at a source position. An\n * empty signature means unconditional (top-level). Constraints are conjunctive:\n * the position is active iff every constraint holds. Produced by the Lexer\n * (the sole branch-stack maintainer) and stamped onto every emitted token +\n * every registered `MacroDefineInfo`.\n */\nexport type BranchSignature = readonly BranchConstraint[];\n\n// Canonical empty branch signature shared by all default tokens — avoids\n// per-token allocation. The Lexer overwrites `branch` after `scanToken()`\n// for tokens that are inside an `#ifdef`.\nexport const EMPTY_BRANCH: BranchSignature = [];\n\nexport class BaseToken<T extends number = number> implements IPoolElement {\n static pool = ShaderCompilerUtils.createObjectPool(BaseToken);\n\n type: T;\n lexeme: string;\n location: ShaderRange;\n /** Branch signature snapshot at the point this token was emitted. Empty\n * signature (default) means top-level / unconditional. The Lexer tags\n * every token; downstream code (AST nodes built from tokens) can read\n * the field directly to know which `#ifdef` branch they're inside. */\n branch: BranchSignature = EMPTY_BRANCH;\n\n set(type: T, lexeme: string, start?: ShaderPosition);\n set(type: T, lexeme: string, location?: ShaderRange);\n set(type: T, lexeme: string, arg?: ShaderRange | ShaderPosition) {\n this.type = type;\n this.lexeme = lexeme;\n this.branch = EMPTY_BRANCH;\n if (arg) {\n if (arg instanceof ShaderRange) {\n this.location = arg as ShaderRange;\n } else {\n const end = ShaderCompiler.createPosition(\n arg.index + lexeme.length,\n // #if _VERBOSE\n arg.line,\n arg.column + lexeme.length\n // #endif\n );\n this.location = ShaderCompiler.createRange(arg, end);\n }\n }\n }\n\n dispose(): void {}\n}\n\nexport const EOF = new BaseToken();\nEOF.set(ETokenType.EOF, \"/EOF\");\n","import { TokenType } from \"../common\";\n\nexport type Terminal = TokenType;\n\nexport enum NoneTerminal {\n START = 2000,\n // galacean\n gs_shader_program,\n\n // glsl\n global_declaration,\n variable_declaration,\n variable_declaration_list,\n variable_declaration_statement,\n array_specifier_list,\n array_specifier,\n ext_builtin_type_specifier_nonarray,\n precision_specifier,\n variable_identifier,\n variable_identifier_node,\n primary_expression,\n postfix_expression,\n integer_expression,\n function_call,\n function_call_generic,\n function_call_header_no_parameters,\n function_call_header_with_parameters,\n function_call_parameter_list,\n function_call_header,\n function_identifier,\n constructor_identifier,\n unary_expression,\n unary_operator,\n multiplicative_expression,\n additive_expression,\n shift_expression,\n relational_expression,\n equality_expression,\n and_expression,\n inclusive_or_expression,\n exclusive_or_expression,\n logical_and_expression,\n logical_xor_expression,\n logical_or_expression,\n conditional_expression,\n assignment_expression,\n assignment_operator,\n expression,\n integer_constant_expression,\n integer_constant_expression_operator,\n declaration,\n function_prototype,\n function_declarator,\n function_header_with_parameters,\n function_header,\n function_parameter_list,\n parameter_declarator,\n parameter_declaration,\n parameter_qualifier,\n parameter_type_specifier,\n init_declarator_list,\n single_declaration,\n fully_specified_type,\n type_qualifier,\n single_type_qualifier,\n storage_qualifier,\n precision_qualifier,\n interpolation_qualifier,\n invariant_qualifier,\n type_specifier,\n type_specifier_nonarray,\n type_specifier_no_prec,\n basic_type,\n struct_specifier,\n struct_declaration_list,\n struct_declaration,\n layout_qualifier,\n struct_declarator_list,\n struct_declarator,\n identifier_list,\n decl_identifier,\n initializer,\n initializer_list,\n declaration_statement,\n simple_statement,\n compound_statement_no_scope,\n statement_with_scope,\n compound_statement,\n statement,\n statement_list,\n iteration_statement_no_new_scope,\n expression_statement,\n selection_statement,\n selection_rest_statement,\n condition,\n conditionopt,\n iteration_statement,\n for_init_statement,\n for_rest_statement,\n jump_statement,\n external_declaration,\n function_definition,\n field_selection,\n bool_constant,\n function_identifier_node,\n typename_identifier_node,\n scope_brace,\n scope_end_brace,\n\n // Macro\n macro_undef,\n macro_push_context,\n macro_pop_context,\n macro_elif_expression,\n macro_else_expression,\n global_macro_if_statement,\n global_macro_declaration,\n global_macro_branch,\n macro_struct_declaration,\n macro_struct_branch,\n macro_if_statement,\n macro_branch,\n macro_param_case_list,\n macro_param_block,\n macro_parameter_branch,\n macro_call_arg_case_list,\n macro_call_arg_block,\n macro_call_arg_branch,\n\n // Macro call\n macro_call_symbol,\n macro_call_function,\n\n // Macro define (expression-style): `#define NAME [(params)] VALUE`\n macro_define,\n\n _ignore\n}\n\nexport type GrammarSymbol = Terminal | NoneTerminal;\n\nexport type Derivation = GrammarSymbol[];\n","import { ETokenType, GalaceanDataType, TypeAny } from \"./common\";\nimport { BaseToken as Token } from \"./common/BaseToken\";\nimport { ASTNode, TreeNode } from \"./parser/AST\";\nimport { GrammarSymbol, NoneTerminal } from \"./parser/GrammarSymbol\";\n// #if _VERBOSE\nimport { Keyword } from \"./common/enums/Keyword\";\nimport State from \"./lalr/State\";\n// #endif\n\nexport class ParserUtils {\n static unwrapNodeByType<T = TreeNode>(node: TreeNode, type: NoneTerminal): T | undefined {\n const child = node.children[0];\n if (child instanceof Token) return;\n if (child.nt === type) return child as T;\n return ParserUtils.unwrapNodeByType(child, type);\n }\n\n /**\n * Parse a function-macro parameter-list lexeme (`\"(a, b, c)\"`) into its parameter\n * names. An empty list `\"()\"` yields `[]`. Leading/trailing whitespace around each\n * name is trimmed. Empty entries from consecutive commas are filtered out.\n */\n static parseMacroParamList(lexeme: string): string[] {\n const inner = lexeme.replace(/^\\s*\\(\\s*|\\s*\\)\\s*$/g, \"\");\n if (!inner) return [];\n return inner\n .split(\",\")\n .map((s) => s.trim())\n .filter(Boolean);\n }\n\n /**\n * Walk single-child precedence-chain wrappers down to a `VariableIdentifier`,\n * returning the leaf node (or `undefined` for any compound expression).\n *\n * `allowParens` chooses between two callers' needs:\n * - `true` — descend through `( expression )` form, so `(v)` resolves to\n * `v`. Use when the caller substitutes at the expression root\n * (aliasing, renaming); user-written parens carry no extra meaning.\n * - `false` — any 3-child `PrimaryExpression` aborts; `(v)` stays\n * compound. Use when the caller treats the unwrapped node as a single\n * token (IO-struct arg drop, alias detection); user-written parens\n * must not collapse.\n */\n static unwrapBareIdentifier(\n node: TreeNode,\n options: { allowParens: boolean }\n ): ASTNode.VariableIdentifier | undefined {\n let cur: TreeNode = node;\n while (true) {\n if (cur instanceof ASTNode.VariableIdentifier) return cur;\n if (options.allowParens && cur instanceof ASTNode.PrimaryExpression && cur.children.length === 3) {\n const inner = cur.children[1];\n if (!(inner instanceof TreeNode)) return undefined;\n cur = inner;\n continue;\n }\n if (cur instanceof ASTNode.ExpressionAstNode && cur.children.length === 1) {\n const child = cur.children[0];\n if (!(child instanceof TreeNode)) return undefined;\n cur = child;\n continue;\n }\n return undefined;\n }\n }\n\n /**\n * Lexeme variant of `unwrapBareIdentifier({ allowParens: true })` for callers\n * that already work with strings. Returns `null` for compound expressions.\n */\n static extractDirectIdentLexeme(expr: TreeNode): string | null {\n const ident = ParserUtils.unwrapBareIdentifier(expr, { allowParens: true });\n if (!ident) return null;\n const child = ident.children[0];\n return child instanceof Token ? child.lexeme : null;\n }\n\n // #if _VERBOSE\n /**\n * Check if type `tb` is compatible with type `ta`.\n */\n static typeCompatible(ta: GalaceanDataType, tb: GalaceanDataType | undefined) {\n if (tb == undefined || tb === TypeAny) return true;\n if (ta === Keyword.INT) {\n return ta === tb || tb === Keyword.UINT;\n }\n return ta === tb;\n }\n\n static toString(sm: GrammarSymbol) {\n if (this.isTerminal(sm)) {\n return ETokenType[sm] ?? Keyword[sm];\n }\n return NoneTerminal[sm];\n }\n // #endif\n\n static isTerminal(sm: GrammarSymbol) {\n return sm < NoneTerminal.START;\n }\n\n /**\n * @internal\n */\n // #if _VERBOSE\n static printStatePool(logPath: string) {\n let output = \"\";\n\n console.log(\"========== Parser Pool ==========\");\n\n let count = 0;\n for (const state of State.pool.values()) {\n count++;\n let tmp = \"\";\n tmp += `${state.id}: \\n`.padEnd(4);\n for (const psItem of state.items) {\n tmp += \" \" + psItem.toString() + \"\\n\";\n }\n output += tmp;\n }\n\n console.log(\"state count:\", count);\n console.log(output);\n }\n // #endif\n}\n","function _is_native_reflect_construct() {\n // Since Reflect.construct can't be properly polyfilled, some\n // implementations (e.g. core-js@2) don't set the correct internal slots.\n // Those polyfills don't allow us to subclass built-ins, so we need to\n // use our fallback implementation.\n try {\n // If the internal slots aren't set, this throws an error similar to\n // TypeError: this is not a Boolean object.\n var result = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function() {}));\n } catch (_) {}\n return (_is_native_reflect_construct = function() {\n return !!result;\n })();\n}\n\nexport { _is_native_reflect_construct as _ };\n","import { _ as _is_native_reflect_construct } from \"./_is_native_reflect_construct.js\";\nimport { _ as _set_prototype_of } from \"./_set_prototype_of.js\";\nfunction _construct(Parent, args, Class) {\n if (_is_native_reflect_construct()) _construct = Reflect.construct;\n else {\n _construct = function construct(Parent, args, Class) {\n var a = [null];\n a.push.apply(a, args);\n var Constructor = Function.bind.apply(Parent, a);\n var instance = new Constructor();\n\n if (Class) _set_prototype_of(instance, Class.prototype);\n\n return instance;\n };\n }\n\n return _construct.apply(null, arguments);\n}\nexport { _construct as _ };\n","function _get_prototype_of(o) {\n _get_prototype_of = Object.setPrototypeOf ? Object.getPrototypeOf : function getPrototypeOf(o) {\n return o.__proto__ || Object.getPrototypeOf(o);\n };\n\n return _get_prototype_of(o);\n}\nexport { _get_prototype_of as _ };\n","function _is_native_function(fn) {\n return Function.toString.call(fn).indexOf(\"[native code]\") !== -1;\n}\nexport { _is_native_function as _ };\n","import { _ as _construct } from \"./_construct.js\";\nimport { _ as _get_prototype_of } from \"./_get_prototype_of.js\";\nimport { _ as _is_native_function } from \"./_is_native_function.js\";\nimport { _ as _set_prototype_of } from \"./_set_prototype_of.js\";\n\nfunction _wrap_native_super(Class) {\n var _cache = typeof Map === \"function\" ? new Map() : undefined;\n _wrap_native_super = function(Class) {\n if (Class === null || !_is_native_function(Class)) return Class;\n if (typeof Class !== \"function\") throw new TypeError(\"Super expression must either be null or a function\");\n if (typeof _cache !== \"undefined\") {\n if (_cache.has(Class)) return _cache.get(Class);\n _cache.set(Class, Wrapper);\n }\n\n function Wrapper() {\n return _construct(Class, arguments, _get_prototype_of(this).constructor);\n }\n Wrapper.prototype = Object.create(Class.prototype, { constructor: { value: Wrapper, enumerable: false, writable: true, configurable: true } });\n\n return _set_prototype_of(Wrapper, Class);\n };\n\n return _wrap_native_super(Class);\n}\nexport { _wrap_native_super as _ };\n","import { ShaderPosition } from \"./common/ShaderPosition\";\nimport { ShaderRange } from \"./common/ShaderRange\";\n\nexport class GSError extends Error {\n static wrappingLineCount = 2;\n\n constructor(\n name: GSErrorName,\n message: string,\n public readonly location: ShaderRange | ShaderPosition,\n public readonly source: string,\n public readonly file?: string\n ) {\n super(message);\n this.name = name;\n }\n\n override toString(): string {\n let start: ShaderPosition, end: ShaderPosition;\n const { message, location, source } = this;\n if (!source) {\n return message;\n }\n\n if (location instanceof ShaderPosition) {\n start = end = location;\n } else {\n start = location.start;\n end = location.end;\n }\n const lines = source.split(\"\\n\");\n\n let diagnosticMessage = `${this.name}: ${message}\\n\\n`;\n\n // #if _VERBOSE\n const lineSplit = \"|···\";\n\n const wrappingLineCount = GSError.wrappingLineCount;\n for (let i = start.line - wrappingLineCount, n = end.line + wrappingLineCount; i <= n; i++) {\n const line = lines[i];\n diagnosticMessage += lineSplit + `${line}\\n`;\n\n if (i < start.line || i > end.line) continue;\n\n let remarkStart = 0;\n let remarkEnd = line.length;\n let paddingLength = lineSplit.length;\n if (i === start.line) {\n remarkStart = start.column;\n paddingLength += start.column;\n }\n if (i === end.line) {\n remarkEnd = end.column;\n }\n const remarkLength = Math.max(remarkEnd - remarkStart, 1);\n\n diagnosticMessage += \" \".repeat(paddingLength) + \"^\".repeat(remarkLength) + \"\\n\";\n }\n // #endif\n\n return diagnosticMessage;\n }\n}\n\nexport enum GSErrorName {\n PreprocessorError = \"PreprocessorError\",\n CompilationError = \"CompilationError\",\n ScannerError = \"ScannerError\",\n CompilationWarn = \"CompilationWarning\"\n}\n","import { ShaderPosition, ShaderRange } from \".\";\nimport { GSErrorName } from \"../GSError\";\nimport { ShaderCompiler } from \"../ShaderCompiler\";\nimport { ShaderCompilerUtils } from \"../ShaderCompilerUtils\";\nimport { BaseToken } from \"./BaseToken\";\n\nexport type OnToken = (token: BaseToken, scanner: BaseLexer) => void;\n\n/**\n * @internal\n */\nexport abstract class BaseLexer {\n static isDigit(charCode: number): boolean {\n return charCode >= 48 && charCode <= 57; // 0-9\n }\n\n static isHexDigit(charCode: number): boolean {\n return (\n (charCode >= 48 && charCode <= 57) || // 0-9\n (charCode >= 65 && charCode <= 70) || // A-F\n (charCode >= 97 && charCode <= 102) // a-f\n );\n }\n\n // Check if character is alphabetic or underscore (valid word start)\n static isAlpha(charCode: number): boolean {\n return (\n charCode === 95 || // _\n (charCode >= 65 && charCode <= 90) || // A-Z\n (charCode >= 97 && charCode <= 122) // a-z\n );\n }\n\n // Check if character is alphanumeric (alpha + digit)\n static isAlnum(charCode: number): boolean {\n return BaseLexer.isAlpha(charCode) || BaseLexer.isDigit(charCode);\n }\n\n static isPreprocessorStartChar(charCode: number): boolean {\n return charCode === 35; // #\n }\n\n /**\n * If `i` points at the start of a `/* … *\\/` block comment, return the index\n * just past the closing `*\\/`. Otherwise return `i` unchanged. If the\n * comment is unterminated, returns `len` (clamped, never overshoots).\n * Single source of truth for block-comment scanning across the lexer.\n */\n protected static _skipBlockComment(src: string, i: number, len: number): number {\n if (src.charCodeAt(i) !== 47 /* '/' */ || i + 1 >= len || src.charCodeAt(i + 1) !== 42 /* '*' */) return i;\n let j = i + 2;\n while (j + 1 < len) {\n if (src.charCodeAt(j) === 42 && src.charCodeAt(j + 1) === 47) return j + 2;\n j++;\n }\n return len;\n }\n\n /**\n * If `i` points at the start of a `//` line comment, return the index of the\n * terminating newline (or `len` at EOF). The newline itself is NOT consumed\n * — callers decide whether `\\n` is whitespace or a logical separator.\n * Otherwise return `i` unchanged.\n */\n protected static _skipLineComment(src: string, i: number, len: number): number {\n if (src.charCodeAt(i) !== 47 /* '/' */ || i + 1 >= len || src.charCodeAt(i + 1) !== 47) return i;\n let j = i + 2;\n while (j < len) {\n const c = src.charCodeAt(j);\n if (c === 10 || c === 13) break;\n j++;\n }\n return j;\n }\n\n static isWhiteSpaceChar(charCode: number, includeBreak: boolean): boolean {\n // Space || Tab\n if (charCode === 32 || charCode === 9) {\n return true;\n }\n return includeBreak && (charCode === 10 || charCode === 13); // \\n || \\r\n }\n\n protected _currentIndex = 0;\n protected _source: string;\n\n // #if _VERBOSE\n protected _column = 0;\n protected _line = 0;\n // #endif\n\n get currentIndex(): number {\n return this._currentIndex;\n }\n\n get source(): string {\n return this._source;\n }\n\n // #if _VERBOSE\n get line() {\n return this._line;\n }\n\n get column() {\n return this._column;\n }\n // #endif\n\n constructor(source?: string) {\n this._source = source!;\n }\n\n setSource(source: string): void {\n this._source = source;\n this._currentIndex = 0;\n // #if _VERBOSE\n this._line = this._column = 0;\n // #endif\n }\n\n getShaderPosition(backOffset = 0): ShaderPosition {\n return ShaderCompiler.createPosition(\n this._currentIndex - backOffset,\n // #if _VERBOSE\n this._line,\n this._column - backOffset\n // #endif\n );\n }\n\n isEnd(): boolean {\n return this._currentIndex >= this._source.length;\n }\n\n getCurChar(): string {\n return this._source[this._currentIndex];\n }\n\n getCurCharCode(): number {\n return this._source.charCodeAt(this._currentIndex);\n }\n\n advance(count: number): void {\n // #if _VERBOSE\n const source = this._source;\n const startIndex = this._currentIndex;\n for (let i = 0; i < count; i++) {\n if (source[startIndex + i] === \"\\n\") {\n this._line += 1;\n this._column = 0;\n } else {\n this._column += 1;\n }\n }\n // #endif\n this._currentIndex += count;\n }\n\n skipSpace(includeLineBreak: boolean): void {\n while (BaseLexer.isWhiteSpaceChar(this.getCurCharCode(), includeLineBreak)) {\n this.advance(1);\n }\n }\n\n skipCommentsAndSpace(): void {\n const source = this._source;\n const length = source.length;\n let index = this._currentIndex;\n\n while (index < length) {\n // Whitespace including newlines — `\\n` is just a separator in the\n // top-level (non-directive) scan path.\n while (index < length && BaseLexer.isWhiteSpaceChar(source.charCodeAt(index), true)) {\n index++;\n }\n const afterBlock = BaseLexer._skipBlockComment(source, index, length);\n if (afterBlock !== index) {\n index = afterBlock;\n continue;\n }\n const afterLine = BaseLexer._skipLineComment(source, index, length);\n if (afterLine !== index) {\n index = afterLine;\n continue;\n }\n break;\n }\n\n this.advance(index - this._currentIndex);\n }\n\n peek(to: number): string {\n const offset = this._currentIndex;\n return this._source.substring(offset, offset + to);\n }\n\n scanLexeme(lexeme: string): void {\n this.skipCommentsAndSpace();\n const length = lexeme.length;\n const peek = this.peek(length);\n if (peek !== lexeme) {\n this.throwError(this.getShaderPosition(0), `Expect lexeme \"${lexeme}\", but got \"${peek}\"`);\n }\n this.advance(length);\n }\n\n scanTwoExpectedLexemes(lexeme1: string, lexeme2: string): string | null {\n this.skipCommentsAndSpace();\n\n // Check first lexeme\n if (this.peek(lexeme1.length) === lexeme1) {\n this.advance(lexeme1.length);\n return lexeme1;\n }\n\n // Check second lexeme\n if (this.peek(lexeme2.length) === lexeme2) {\n this.advance(lexeme2.length);\n return lexeme2;\n }\n\n return null;\n }\n\n throwError(pos: ShaderPosition | ShaderRange, ...msgs: any[]) {\n const error = ShaderCompilerUtils.createGSError(msgs.join(\" \"), GSErrorName.ScannerError, this._source, pos);\n // #if _VERBOSE\n console.error(error!.toString());\n // #endif\n throw error;\n }\n\n scanPairedChar(left: string, right: string, balanced: boolean, skipLeading: boolean): string {\n if (!skipLeading) {\n this.scanLexeme(left);\n }\n\n const start = this._currentIndex;\n const source = this._source;\n const sourceLength = source.length;\n\n let currentIndex = this._currentIndex;\n if (balanced) {\n let level = 1;\n while (currentIndex < sourceLength) {\n const currentChar = source[currentIndex];\n if (currentChar === right && --level === 0) {\n break;\n } else if (currentChar === left) {\n level++;\n }\n currentIndex++;\n }\n } else {\n while (currentIndex < sourceLength) {\n if (source[currentIndex] === right) {\n break;\n }\n currentIndex++;\n }\n }\n\n this.advance(currentIndex + 1 - this._currentIndex);\n\n return source.substring(start, currentIndex);\n }\n\n abstract scanToken(onToken?: OnToken): void;\n}\n","import { ETokenType } from \"../common\";\nimport { BaseLexer } from \"../common/BaseLexer\";\nimport { BaseToken, BranchConstraint, BranchSignature, EMPTY_BRANCH, EOF } from \"../common/BaseToken\";\nimport { Keyword } from \"../common/enums/Keyword\";\nimport { MacroDefineInfo, MacroDefineList } from \"../Preprocessor\";\nimport { ShaderCompiler } from \"../ShaderCompiler\";\n\n/**\n * The Lexer of Shader Compiler\n */\nexport class Lexer extends BaseLexer {\n private static _lexemeTable = <Record<string, Keyword>>{\n const: Keyword.CONST,\n bool: Keyword.BOOL,\n float: Keyword.FLOAT,\n double: Keyword.DOUBLE,\n int: Keyword.INT,\n uint: Keyword.UINT,\n break: Keyword.BREAK,\n continue: Keyword.CONTINUE,\n do: Keyword.DO,\n else: Keyword.ELSE,\n for: Keyword.FOR,\n if: Keyword.IF,\n while: Keyword.WHILE,\n discard: Keyword.DISCARD,\n return: Keyword.RETURN,\n bvec2: Keyword.BVEC2,\n bvec3: Keyword.BVEC3,\n bvec4: Keyword.BVEC4,\n ivec2: Keyword.IVEC2,\n ivec3: Keyword.IVEC3,\n ivec4: Keyword.IVEC4,\n uvec2: Keyword.UVEC2,\n uvec3: Keyword.UVEC3,\n uvec4: Keyword.UVEC4,\n vec2: Keyword.VEC2,\n vec3: Keyword.VEC3,\n vec4: Keyword.VEC4,\n mat2: Keyword.MAT2,\n mat3: Keyword.MAT3,\n mat4: Keyword.MAT4,\n in: Keyword.IN,\n out: Keyword.OUT,\n inout: Keyword.INOUT,\n sampler2D: Keyword.SAMPLER2D,\n samplerCube: Keyword.SAMPLER_CUBE,\n sampler3D: Keyword.SAMPLER3D,\n sampler2DShadow: Keyword.SAMPLER2D_SHADOW,\n samplerCubeShadow: Keyword.SAMPLER_CUBE_SHADOW,\n sampler2DArray: Keyword.SAMPLER2D_ARRAY,\n sampler2DArrayShadow: Keyword.SAMPLER2D_ARRAY_SHADOW,\n isampler2D: Keyword.I_SAMPLER2D,\n isampler3D: Keyword.I_SAMPLER3D,\n isamplerCube: Keyword.I_SAMPLER_CUBE,\n isampler2DArray: Keyword.I_SAMPLER2D_ARRAY,\n usampler2D: Keyword.U_SAMPLER2D,\n usampler3D: Keyword.U_SAMPLER3D,\n usamplerCube: Keyword.U_SAMPLER_CUBE,\n usampler2DArray: Keyword.U_SAMPLER2D_ARRAY,\n struct: Keyword.STRUCT,\n void: Keyword.VOID,\n true: Keyword.True,\n false: Keyword.False,\n precision: Keyword.PRECISION,\n precise: Keyword.PRECISE,\n highp: Keyword.HIGHP,\n mediump: Keyword.MEDIUMP,\n lowp: Keyword.LOWP,\n invariant: Keyword.INVARIANT,\n flat: Keyword.FLAT,\n smooth: Keyword.SMOOTH,\n noperspective: Keyword.NOPERSPECTIVE,\n centroid: Keyword.CENTROID,\n layout: Keyword.LAYOUT,\n location: Keyword.LOCATION,\n\n // Macros ...\n \"#if\": Keyword.MACRO_IF,\n \"#ifdef\": Keyword.MACRO_IFDEF,\n \"#ifndef\": Keyword.MACRO_IFNDEF,\n \"#else\": Keyword.MACRO_ELSE,\n \"#elif\": Keyword.MACRO_ELIF,\n \"#endif\": Keyword.MACRO_ENDIF,\n \"#undef\": Keyword.MACRO_UNDEF\n };\n\n // Synthetic `__if_<n>` per `#if` — polarity flip makes `#else` mutually exclusive in `isVisibleFrom`.\n private static _ifCounter = 0;\n\n /** Two branch signatures are equal iff they have the same constraints in the\n * same order with the same polarity. Used by `#define` dedup and AST upgrade\n * matching. */\n static sameBranch(a: BranchSignature, b: BranchSignature): boolean {\n if (a.length !== b.length) return false;\n for (let i = 0, n = a.length; i < n; i++) {\n if (a[i].name !== b[i].name || a[i].defined !== b[i].defined) return false;\n }\n return true;\n }\n\n /**\n * Returns true if a `#define` registered under `defBranch` is reachable from\n * a call site under `callSiteBranch`. Two signatures are mutually exclusive\n * iff some flag appears in both with opposite `defined` polarity. Anything\n * else is compatible — the same flag with the same polarity, or flags that\n * simply don't intersect.\n *\n * Conservative for `#if expr` (not modeled — `tokenize` pushes a sentinel\n * with `name === \"\"` to keep the `#endif` stack depth correct; that\n * sentinel never matches a real flag in the polarity check below, so it\n * stays visible from everywhere). Exact for the common `#ifdef` /\n * `#ifndef` / `#else` cases that drive real shader code.\n */\n static isVisibleFrom(defBranch: BranchSignature, callSiteBranch: BranchSignature): boolean {\n for (let i = 0, n = defBranch.length; i < n; i++) {\n const d = defBranch[i];\n for (let j = 0, m = callSiteBranch.length; j < m; j++) {\n const c = callSiteBranch[j];\n if (d.name === c.name && d.defined !== c.defined) return false;\n }\n }\n return true;\n }\n\n private _needScanMacroConditionExpression = false;\n\n // --- `#define` scanning state machine ---\n // Expression-style `#define` produces a token stream:\n // MACRO_DEFINE, ID(name), [MACRO_DEFINE_PARAMS], <value tokens>, MACRO_DEFINE_END\n // The three flags below encode the mini state machine driving that stream:\n // - _inMacroDefineValue : persistent mode — newline terminates the directive\n // rather than being skipped as whitespace\n // - _macroDefineExpectsNameToken : one-shot — next identifier is the macro\n // name and must be ID (not MACRO_CALL even if the\n // name was registered by a prior definition)\n // - _macroDefineExpectsParamsToken : one-shot — if next char is `(`, capture\n // the balanced `(…)` block as a single opaque token\n // so the CFG doesn't need its own parameter-list\n // non-terminal (which would conflict with\n // function_call_parameter_list under LALR(1))\n private _inMacroDefineValue = false;\n private _macroDefineExpectsNameToken = false;\n private _macroDefineExpectsParamsToken = false;\n\n // Fields populated as the state machine walks a `#define` directive; consumed\n // by `_emitMacroDefineEnd` to register the directive without re-parsing.\n private _currentMacroName = \"\";\n private _currentMacroParamsLexeme: string | undefined = undefined;\n private _currentMacroValueStart = -1;\n\n // Active `#ifdef`/`#ifndef`/`#else` stack. Updated by `tokenize` between\n // emitting tokens; read by `_registerMacroDefine` (when it registers a\n // legacy entry mid-scan) and stamped onto every emitted token's `branch`\n // field so AST nodes know which branch they're inside.\n private _branchStack: BranchConstraint[] = [];\n // True when the previous token was `#ifdef`/`#ifndef` and we're waiting on\n // the next ID token (the flag name) to actually push onto the stack.\n private _pendingBranchPushDefined: boolean | null = null;\n\n *tokenize() {\n while (!this.isEnd()) {\n const tok = this.scanToken();\n\n // Resolve a pending #ifdef/#ifndef push using the flag-name token that\n // immediately follows the keyword. Grammar allows the name to be either\n // a plain `id` or a `MACRO_CALL` (for `#ifdef <previously-defined-macro>`).\n if (this._pendingBranchPushDefined !== null && (tok.type === ETokenType.ID || tok.type === Keyword.MACRO_CALL)) {\n this._branchStack.push({ name: tok.lexeme, defined: this._pendingBranchPushDefined });\n this._pendingBranchPushDefined = null;\n }\n\n // Stamp the branch onto the token only when inside an `#ifdef`. The\n // top-level case keeps the BaseToken default (shared empty signature),\n // so the hot path stays allocation-free.\n if (this._branchStack.length > 0) tok.branch = this._branchStack.slice();\n\n // Update stack state based on the just-emitted token, so the *next*\n // token sees the correct snapshot. `#if expr` opens a level we can't\n // address (we don't model expressions), but must consume a stack slot\n // so the matching `#endif` pops the right depth — without it, an\n // outer `#ifdef A`'s constraint would be wrongly popped.\n switch (tok.type as Keyword) {\n case Keyword.MACRO_IFDEF:\n this._pendingBranchPushDefined = true;\n break;\n case Keyword.MACRO_IFNDEF:\n this._pendingBranchPushDefined = false;\n break;\n case Keyword.MACRO_IF:\n this._branchStack.push({ name: `__if_${++Lexer._ifCounter}`, defined: true });\n break;\n case Keyword.MACRO_ELIF:\n // Each `#elif` link gets a fresh tag so it's exclusive with earlier arms.\n if (this._branchStack.length > 0) {\n this._branchStack[this._branchStack.length - 1] = {\n name: `__if_${++Lexer._ifCounter}`,\n defined: true\n };\n }\n break;\n case Keyword.MACRO_ELSE: {\n // Flip polarity: `#ifdef X` → `[X=true]` becomes `[X=false]`; `__if_n` likewise.\n const top = this._branchStack[this._branchStack.length - 1];\n if (top) this._branchStack[this._branchStack.length - 1] = { name: top.name, defined: !top.defined };\n break;\n }\n case Keyword.MACRO_ENDIF:\n this._branchStack.pop();\n break;\n }\n\n yield tok;\n }\n return EOF;\n }\n\n constructor(\n source: string,\n public macroDefineList: MacroDefineList\n ) {\n super(source);\n }\n\n override scanToken(): BaseToken {\n if (this._inMacroDefineValue) {\n // Inside a `#define` value: newline ends the directive. Skip only spaces/tabs\n // and block comments, never \\n, so the termination can be detected.\n this._skipInlineSpaceAndComments();\n if (this.isEnd() || this._isAtLineBreak()) {\n return this._emitMacroDefineEnd();\n }\n // Right after the macro name, if the next char is `(`, capture the whole\n // parenthesized parameter list as one opaque token. This keeps the\n // macro-define grammar LALR(1)-friendly (no nested param-list non-terminal).\n if (this._macroDefineExpectsParamsToken) {\n this._macroDefineExpectsParamsToken = false;\n if (this.getCurChar() === \"(\") {\n return this._scanMacroDefineParams();\n }\n }\n } else {\n this.skipCommentsAndSpace();\n if (this.isEnd()) {\n return EOF;\n }\n }\n\n if (this._needScanMacroConditionExpression) {\n this._needScanMacroConditionExpression = false;\n return this._scanMacroConditionExpression();\n }\n\n const curCharCode = this.getCurCharCode();\n if (BaseLexer.isPreprocessorStartChar(curCharCode)) {\n return this._scanDirectives();\n }\n if (BaseLexer.isAlpha(curCharCode)) {\n return this._scanWord();\n }\n if (BaseLexer.isDigit(curCharCode)) {\n return this._scanNum();\n }\n\n const start = this.getShaderPosition();\n const token = BaseToken.pool.get();\n let curChar: string;\n\n switch (this.getCurChar()) {\n case \"<\":\n this.advance(1);\n curChar = this.getCurChar();\n if (curChar === \"<\") {\n this.advance(1);\n if (this.getCurChar() === \"=\") {\n this.advance(1);\n token.set(ETokenType.LEFT_ASSIGN, \"<<=\", start);\n break;\n }\n token.set(ETokenType.LEFT_OP, \"<<\", start);\n break;\n } else if (curChar === \"=\") {\n this.advance(1);\n token.set(ETokenType.LE_OP, \"<=\", start);\n break;\n }\n token.set(ETokenType.LEFT_ANGLE, \"<\", start);\n break;\n\n case \">\":\n this.advance(1);\n curChar = this.getCurChar();\n if (curChar === \">\") {\n this.advance(1);\n if (this.getCurChar() === \"=\") {\n this.advance(1);\n token.set(ETokenType.RIGHT_ASSIGN, \">>=\", start);\n break;\n }\n token.set(ETokenType.RIGHT_OP, \">>\", start);\n break;\n } else if (curChar === \"=\") {\n this.advance(1);\n token.set(ETokenType.GE_OP, \">=\", start);\n break;\n }\n token.set(ETokenType.RIGHT_ANGLE, \">\", start);\n break;\n\n case \"+\":\n this.advance(1);\n curChar = this.getCurChar();\n if (curChar === \"+\") {\n this.advance(1);\n token.set(ETokenType.INC_OP, \"++\", start);\n break;\n } else if (curChar === \"=\") {\n this.advance(1);\n token.set(ETokenType.ADD_ASSIGN, \"+=\", start);\n break;\n }\n token.set(ETokenType.PLUS, \"+\", start);\n break;\n\n case \"-\":\n this.advance(1);\n curChar = this.getCurChar();\n if (curChar === \"-\") {\n this.advance(1);\n token.set(ETokenType.DEC_OP, \"--\", start);\n break;\n } else if (curChar === \"=\") {\n this.advance(1);\n token.set(ETokenType.SUB_ASSIGN, \"-=\", start);\n break;\n }\n token.set(ETokenType.DASH, \"-\", start);\n break;\n\n case \"=\":\n this.advance(1);\n if (this.getCurChar() === \"=\") {\n this.advance(1);\n token.set(ETokenType.EQ_OP, \"==\", start);\n break;\n }\n token.set(ETokenType.EQUAL, \"=\", start);\n break;\n\n case \"!\":\n this.advance(1);\n if (this.getCurChar() === \"=\") {\n this.advance(1);\n token.set(ETokenType.NE_OP, \"!=\", start);\n break;\n }\n token.set(ETokenType.BANG, \"!\", start);\n break;\n\n case \"&\":\n this.advance(1);\n curChar = this.getCurChar();\n if (curChar === \"&\") {\n this.advance(1);\n token.set(ETokenType.AND_OP, \"&&\", start);\n break;\n } else if (curChar === \"=\") {\n this.advance(1);\n token.set(ETokenType.AND_ASSIGN, \"&=\", start);\n break;\n }\n token.set(ETokenType.AMPERSAND, \"&\", start);\n break;\n\n case \"|\":\n this.advance(1);\n curChar = this.getCurChar();\n if (curChar === \"|\") {\n this.advance(1);\n token.set(ETokenType.OR_OP, \"||\", start);\n break;\n } else if (curChar === \"=\") {\n this.advance(1);\n token.set(ETokenType.OR_ASSIGN, \"|=\", start);\n break;\n }\n token.set(ETokenType.VERTICAL_BAR, \"|\", start);\n break;\n\n case \"^\":\n this.advance(1);\n curChar = this.getCurChar();\n if (curChar === \"^\") {\n this.advance(1);\n token.set(ETokenType.XOR_OP, \"^^\", start);\n break;\n } else if (curChar === \"=\") {\n this.advance(1);\n token.set(ETokenType.XOR_ASSIGN, \"^=\", start);\n break;\n }\n token.set(ETokenType.CARET, \"^\", start);\n break;\n\n case \"*\":\n this.advance(1);\n if (this.getCurChar() === \"=\") {\n this.advance(1);\n token.set(ETokenType.MUL_ASSIGN, \"*=\", start);\n break;\n }\n\n token.set(ETokenType.STAR, \"*\", start);\n break;\n\n case \"/\":\n this.advance(1);\n if (this.getCurChar() === \"=\") {\n this.advance(1);\n\n token.set(ETokenType.DIV_ASSIGN, \"/=\", start);\n break;\n }\n\n token.set(ETokenType.SLASH, \"/\", start);\n break;\n\n case \"%\":\n this.advance(1);\n if (this.getCurChar() === \"=\") {\n this.advance(1);\n\n token.set(ETokenType.MOD_ASSIGN, \"%=\", start);\n break;\n }\n\n token.set(ETokenType.PERCENT, \"%\", start);\n break;\n\n case \"(\":\n this.advance(1);\n\n token.set(ETokenType.LEFT_PAREN, \"(\", start);\n break;\n case \")\":\n this.advance(1);\n\n token.set(ETokenType.RIGHT_PAREN, \")\", start);\n break;\n case \"{\":\n this.advance(1);\n\n token.set(ETokenType.LEFT_BRACE, \"{\", start);\n break;\n case \"}\":\n this.advance(1);\n\n token.set(ETokenType.RIGHT_BRACE, \"}\", start);\n break;\n case \"[\":\n this.advance(1);\n\n token.set(ETokenType.LEFT_BRACKET, \"[\", start);\n break;\n case \"]\":\n this.advance(1);\n\n token.set(ETokenType.RIGHT_BRACKET, \"]\", start);\n break;\n case \".\":\n this.advance(1);\n if (BaseLexer.isDigit(this.getCurCharCode())) {\n return this._scanNumAfterDot();\n }\n\n token.set(ETokenType.DOT, \".\", start);\n break;\n case \",\":\n this.advance(1);\n\n token.set(ETokenType.COMMA, \",\", start);\n break;\n case \":\":\n this.advance(1);\n\n token.set(ETokenType.COLON, \":\", start);\n return token;\n case \";\":\n this.advance(1);\n\n token.set(ETokenType.SEMICOLON, \";\", start);\n break;\n case \"~\":\n this.advance(1);\n\n token.set(ETokenType.TILDE, \"~\", start);\n break;\n case \"?\":\n this.advance(1);\n\n token.set(ETokenType.QUESTION, \"?\", start);\n break;\n case '\"':\n this.advance(1);\n return this._scanStringConst();\n\n default:\n this.throwError(this.getShaderPosition(0), `Unexpected character ${this.getCurChar()}`);\n }\n return token;\n }\n\n private _scanStringConst(): BaseToken {\n const start = this.getShaderPosition();\n const buffer: string[] = [];\n while (this.getCurChar() !== '\"') {\n buffer.push(this.getCurChar());\n this.advance(1);\n }\n this.advance(1);\n const range = ShaderCompiler.createRange(start, this.getShaderPosition());\n\n const token = BaseToken.pool.get();\n token.set(ETokenType.STRING_CONST, buffer.join(\"\"), range);\n return token;\n }\n\n private _scanNumAfterDot(): BaseToken {\n const buffer = [\".\"];\n while (BaseLexer.isDigit(this.getCurCharCode())) {\n buffer.push(this.getCurChar());\n this.advance(1);\n }\n this._scanFloatSuffix(buffer);\n const token = BaseToken.pool.get();\n token.set(ETokenType.FLOAT_CONSTANT, buffer.join(\"\"), this.getShaderPosition(buffer.length));\n return token;\n }\n\n private _scanUtilBreakLine(outBuffer: string[]): void {\n const src = this._source;\n const len = src.length;\n while (!this.isEnd()) {\n // Honor line-continuation so multi-line directives (`#define X a \\\\\\n + b`)\n // are not cut short at the first physical newline.\n const afterContinuation = Lexer._skipLineContinuation(src, this._currentIndex, len);\n if (afterContinuation !== this._currentIndex) {\n this.advance(afterContinuation - this._currentIndex);\n continue;\n }\n const c = src.charCodeAt(this._currentIndex);\n if (c === 10) break;\n outBuffer.push(src[this._currentIndex]);\n this.advance(1);\n }\n }\n\n private _scanDirectives(): BaseToken {\n const buffer: string[] = [this.getCurChar()];\n const start = this.getShaderPosition();\n this.advance(1);\n while (BaseLexer.isAlpha(this.getCurCharCode())) {\n buffer.push(this.getCurChar());\n this.advance(1);\n }\n const token = BaseToken.pool.get();\n const word = buffer.join(\"\");\n\n if (word === \"#define\") {\n const peek = this._peekMacroDefine();\n if (peek && peek.isExpression) {\n // AST path: the value will be tokenized by the lexer's `_inMacroDefineValue`\n // state machine and re-parsed by the expression grammar. State machine\n // fills `_currentMacroName` / `_currentMacroParamsLexeme` / `_currentMacroValueStart`\n // as it walks the value; `_emitMacroDefineEnd` consumes them.\n this._inMacroDefineValue = true;\n // The next word is the macro name: force ID type even if a prior `#define`\n // has already registered the name into `macroDefineList` (redefinition or\n // multi-chunk include), which would otherwise make the word a MACRO_CALL.\n this._macroDefineExpectsNameToken = true;\n token.set(Keyword.MACRO_DEFINE, \"#define\", start);\n } else {\n // Legacy path: opaque token sequence. Register directly from the peek\n // result without re-walking the directive.\n this._scanUtilBreakLine(buffer);\n const lexeme = \"\\n\" + buffer.join(\"\") + \"\\n\";\n if (peek) {\n this._registerMacroDefine(peek.name, peek.paramsLexeme, peek.valueStart, peek.valueEnd);\n }\n token.set(Keyword.MACRO_DEFINE_EXPRESSION, lexeme, start);\n }\n } else {\n const kt = Lexer._lexemeTable[word];\n token.set(kt ?? ETokenType.ID, word, start);\n if (word === \"#if\" || word === \"#elif\") {\n this._needScanMacroConditionExpression = true;\n }\n }\n\n return token;\n }\n\n /** True if the current char is an unescaped line break (ignoring `\\` continuation). */\n private _isAtLineBreak(): boolean {\n const c = this.getCurChar();\n return c === \"\\n\" || c === \"\\r\";\n }\n\n /**\n * Walk a `#define` directive head once and produce everything both routing\n * and registration need: name range, optional params range, value range,\n * and whether the value parses as an `expression`.\n *\n * The replacement list is split three ways:\n *\n * - **AST path** (`isExpression = true`): value parses as `expression`.\n * Covers identifiers, literals, parenthesized sub-expressions, operator\n * expressions, function calls, top-level comma lists (per C99 §6.10.3).\n *\n * - **Legacy opaque path** (`isExpression = false`, no throw): the three\n * GLSL-ES-§3.4-legal-but-not-an-expression shapes with real-world use —\n * 1. empty value e.g. `#define COMMON_INCLUDED`\n * 2. single type/qualifier keyword e.g. `#define FxaaFloat float`\n * 3. type-qualifier list e.g. `#define TEX_PARAM(s) mediump sampler2D s`\n *\n * Note on X-macro support: the classical C X-macro pattern (a list\n * macro re-expanded with redefined `X(...)`) works fine — it uses\n * function-like macros + `\\` line-continuation + `#undef`, all of\n * which Galacean supports. It does NOT require unbalanced parens.\n *\n * - **Authoring error** (throws): every other shape that's not a valid\n * `expression`. Legal token sequences in theory but not used in real\n * GLSL — almost always author mistakes. We surface one uniform\n * diagnostic with the macro name and value text and let the user fix\n * their code instead of routing politely.\n *\n * Unsupported shapes that throw (non-exhaustive — the predicate is\n * \"the value doesn't reduce as `expression` and isn't one of the three\n * legacy shapes above\"):\n * - leading bare punctuation `,` `;` `:` `?` `)` `]`\n * - trailing `,` or `;` e.g. `#define X a, b,`\n * - trailing binary / unary op `+` `-` `*` `/` `%` `&` `|` `^`\n * `<` `>` `=` `!` `~`\n * - trailing ternary fragment `?` or `:`\n * - unbalanced `[` / `]` e.g. `#define X a[b`\n * - unbalanced `(` / `)` e.g. `#define PAREN (`\n *\n * Returns `null` if the directive is malformed before the name. `cursor` is\n * the position past the last non-newline char (caller advances from there).\n */\n private _peekMacroDefine(): {\n name: string;\n paramsLexeme: string | undefined;\n valueStart: number;\n valueEnd: number;\n cursor: number;\n isExpression: boolean;\n } | null {\n const src = this._source;\n const len = src.length;\n let i = Lexer._skipNonSemantic(src, this._currentIndex, len);\n if (!(i < len && BaseLexer.isAlpha(src.charCodeAt(i)))) return null;\n const nameStart = i;\n while (i < len && BaseLexer.isAlnum(src.charCodeAt(i))) i++;\n const name = src.slice(nameStart, i);\n // Optional `(params)` glued to the name (function-like per C99 §6.10.3/10;\n // whitespace before `(` makes it object-like — `(` becomes part of value).\n let paramsLexeme: string | undefined;\n if (i < len && src.charCodeAt(i) === 40 /* '(' */) {\n const paramsStart = i;\n let depth = 1;\n i++;\n while (i < len && depth > 0) {\n i = Lexer._skipNonSemantic(src, i, len);\n if (i >= len) break;\n const c = src.charCodeAt(i);\n if (c === 10 || c === 13) {\n // Unbalanced before newline — treat as malformed function-like.\n return { name, paramsLexeme: undefined, valueStart: i, valueEnd: i, cursor: i, isExpression: false };\n }\n if (c === 40) depth++;\n else if (c === 41 /* ')' */) depth--;\n i++;\n }\n paramsLexeme = src.slice(paramsStart, i);\n }\n // Walk the value once tracking what routing needs.\n const valueStart = i;\n let parenDepth = 0;\n let bracketDepth = 0;\n let firstStart = -1;\n let firstEnd = -1;\n let firstFollowedByParen = false;\n let topLevelLast = -1;\n while (i < len) {\n const skipped = Lexer._skipNonSemantic(src, i, len);\n if (skipped !== i) {\n i = skipped;\n continue;\n }\n const c = src.charCodeAt(i);\n if (c === 10 || c === 13) break;\n if (firstStart === -1) {\n firstStart = i;\n if (BaseLexer.isAlpha(c)) {\n while (i < len && BaseLexer.isAlnum(src.charCodeAt(i))) i++;\n firstEnd = i;\n const after = Lexer._skipNonSemantic(src, i, len);\n firstFollowedByParen = after < len && src.charCodeAt(after) === 40;\n topLevelLast = firstEnd - 1;\n continue;\n }\n }\n if (c === 40) parenDepth++;\n else if (c === 41) parenDepth--;\n else if (c === 91 /* [ */) bracketDepth++;\n else if (c === 93 /* ] */) bracketDepth--;\n if (parenDepth === 0 && bracketDepth === 0) topLevelLast = i;\n i++;\n }\n const result = { name, paramsLexeme, valueStart, valueEnd: i, cursor: i, isExpression: false };\n // Real-world legacy shapes:\n // 1. empty value, 2. single type/qualifier kw, 3. type-qualifier list.\n if (firstStart === -1) return result;\n if (\n firstEnd !== -1 &&\n !firstFollowedByParen &&\n Lexer._isNonExpressionLeadingKeyword(src.slice(firstStart, firstEnd))\n ) {\n return result;\n }\n // Authoring errors. Anything that's neither a legal `expression` nor one\n // of the three legacy shapes above gets a single uniform diagnostic —\n // the user sees the macro name and the value text, that's enough to\n // locate and fix. We don't categorize further; the rule for users is\n // simply \"value must be a valid GLSL expression\".\n //\n // Legal expression starts: alnum (identifier / literal), `(` (group),\n // `.` (GLSL ES §4.1.4 leading-dot float literal like `.5`), `-`/`+`/`!`/`~`\n // (unary). Legal expression ends: alnum (identifier / literal), `)` (group\n // close), `]` (array-index close). Everything else at the head or\n // top-level tail is an authoring error.\n const head = src.charCodeAt(firstStart);\n const tail = topLevelLast >= 0 ? src.charCodeAt(topLevelLast) : 0;\n const headIllegal =\n !BaseLexer.isAlnum(head) &&\n head !== 40 /* ( */ &&\n head !== 46 /* . */ &&\n head !== 45 /* - */ &&\n head !== 43 /* + */ &&\n head !== 33 /* ! */ &&\n head !== 126; /* ~ */\n const tailIllegal = !BaseLexer.isAlnum(tail) && tail !== 41 /* ) */ && tail !== 93; /* ] */\n if (parenDepth !== 0 || bracketDepth !== 0 || headIllegal || tailIllegal) {\n const valueText = src.slice(firstStart, i).replace(/\\s+/g, \" \").trim();\n this.throwError(\n this.getShaderPosition(0),\n `#define ${name}: invalid replacement list — not a valid GLSL expression (\"${valueText}\")`\n );\n }\n result.isExpression = true;\n return result;\n }\n\n /** GLSL type / qualifier keywords that aren't expression starters when standing alone.\n * `true` / `false` are excluded — they're `primary_expression` literals.\n * `#`-prefixed entries are excluded — they're preprocessor directive names. */\n private static _isNonExpressionLeadingKeyword(lexeme: string): boolean {\n const kw = Lexer._lexemeTable[lexeme];\n return kw !== undefined && kw !== Keyword.True && kw !== Keyword.False && !lexeme.startsWith(\"#\");\n }\n\n /**\n * If `i` points at a `\\` immediately followed by a newline (`\\n`, `\\r`, or\n * `\\r\\n`), return the index just past the pair (a single atom in the C/GLSL\n * preprocessor view). Otherwise return `i` unchanged. This is the single\n * source of truth for line-continuation detection — callers along the\n * directive-scanning path (`_skipNonSemantic`, `_scanUtilBreakLine`,\n * `_scanMacroDefineParams`) all delegate here so the rule stays in one\n * place.\n */\n private static _skipLineContinuation(src: string, i: number, len: number): number {\n if (src.charCodeAt(i) !== 92 /* '\\\\' */ || i + 1 >= len) return i;\n const n = src.charCodeAt(i + 1);\n if (n === 10) return i + 2;\n if (n === 13) return i + 2 < len && src.charCodeAt(i + 2) === 10 ? i + 3 : i + 2;\n return i;\n }\n\n /**\n * Pure positional version of \"skip non-semantic characters within a single\n * `#define` directive\": spaces, tabs, `\\` + newline line-continuation, block\n * comments, line comments. A real `\\n` (without preceding `\\`) is *not*\n * consumed — it terminates the directive — so callers can detect\n * end-of-directive after this returns. Shared by `_defineHasValue` (peek\n * path) and `_skipInlineSpaceAndComments` (consuming path) so both honor\n * the same lexical view.\n */\n private static _skipNonSemantic(src: string, from: number, len: number): number {\n let i = from;\n while (i < len) {\n const c = src.charCodeAt(i);\n if (c === 32 || c === 9) {\n i++;\n continue;\n }\n const afterContinuation = Lexer._skipLineContinuation(src, i, len);\n if (afterContinuation !== i) {\n i = afterContinuation;\n continue;\n }\n const afterBlock = Lexer._skipBlockComment(src, i, len);\n if (afterBlock !== i) {\n i = afterBlock;\n continue;\n }\n const afterLine = Lexer._skipLineComment(src, i, len);\n if (afterLine !== i) {\n i = afterLine;\n continue;\n }\n break;\n }\n return i;\n }\n\n /** Consuming wrapper around `_skipNonSemantic` operating on the lexer's\n * current position. Used by the `#define`-value scan state machine. Goes\n * through `advance(diff)` so verbose builds keep their line/column counters\n * in sync (advance walks the consumed slice and bumps `_line` on `\\n`). */\n private _skipInlineSpaceAndComments(): void {\n const next = Lexer._skipNonSemantic(this._source, this._currentIndex, this._source.length);\n if (next > this._currentIndex) this.advance(next - this._currentIndex);\n }\n\n /**\n * Capture a `(param1, param2, …)` block immediately after the macro name in a\n * `#define` directive, producing a single `MACRO_DEFINE_PARAMS` token whose lexeme\n * is the complete `(…)` text (including parens). Balanced parentheses are honored\n * so the scanner doesn't terminate early on inner `()`. Newlines inside the\n * parameter list are tolerated (rare; appears when the directive uses `\\` line\n * continuation), but any newline raises no special error here — it simply stops\n * capture and parser handles the resulting token however it can.\n */\n private _scanMacroDefineParams(): BaseToken {\n const start = this.getShaderPosition();\n const src = this._source;\n const len = src.length;\n const buffer: string[] = [];\n let depth = 0;\n while (this._currentIndex < len) {\n // Honor line-continuation so `#define MAX3( \\\\\\n a, b, c \\\\\\n ) …`\n // collapses onto one logical line. The `\\` and `\\n` must not enter the\n // params buffer or the grammar will reject the lexeme.\n const afterContinuation = Lexer._skipLineContinuation(src, this._currentIndex, len);\n if (afterContinuation !== this._currentIndex) {\n this.advance(afterContinuation - this._currentIndex);\n continue;\n }\n const ch = src[this._currentIndex];\n buffer.push(ch);\n if (ch === \"(\") depth++;\n else if (ch === \")\") {\n depth--;\n this.advance(1);\n if (depth === 0) break;\n continue;\n }\n this.advance(1);\n }\n const token = BaseToken.pool.get();\n const lexeme = buffer.join(\"\");\n this._currentMacroParamsLexeme = lexeme;\n // Value starts after the `)` we just consumed.\n this._currentMacroValueStart = this._currentIndex;\n token.set(Keyword.MACRO_DEFINE_PARAMS, lexeme, start);\n return token;\n }\n\n /** Emit `MACRO_DEFINE_END` at the end of a `#define` value, consuming the newline. */\n private _emitMacroDefineEnd(): BaseToken {\n const start = this.getShaderPosition();\n const valueEnd = this._currentIndex;\n const source = this._source;\n if (this._currentIndex < source.length) {\n const c = source.charCodeAt(this._currentIndex);\n if (c === 13 && source.charCodeAt(this._currentIndex + 1) === 10) {\n this.advance(2);\n } else if (c === 10 || c === 13) {\n this.advance(1);\n }\n }\n this._registerMacroDefine(\n this._currentMacroName,\n this._currentMacroParamsLexeme,\n this._currentMacroValueStart,\n valueEnd\n );\n this._inMacroDefineValue = false;\n const token = BaseToken.pool.get();\n token.set(Keyword.MACRO_DEFINE_END, \"\\n\", start);\n return token;\n }\n\n // Register a `#define` directive. Both AST and legacy paths funnel through\n // here using ranges already extracted by `_peekMacroDefine` / the value\n // state machine — no re-parsing the directive text.\n private _registerMacroDefine(\n name: string,\n paramsLexeme: string | undefined,\n valueStart: number,\n valueEnd: number\n ): void {\n const params = paramsLexeme\n ? paramsLexeme\n .slice(1, -1) // strip enclosing `(` `)`\n .split(\",\")\n .map((p) => p.trim())\n .filter(Boolean)\n : [];\n // Dedup key: normalized value text (same lexical view the token-stream\n // path sees — comments stripped, whitespace collapsed). Two `#define`s\n // with the same name but different value text produce different keys,\n // so disjoint-branch entries stay separate.\n const dedupKey = `${paramsLexeme ?? \"\"}=${Lexer._normalizeValueText(this._source, valueStart, valueEnd)}`;\n const info: MacroDefineInfo = {\n isFunction: paramsLexeme !== undefined,\n params,\n dedupKey,\n branch: this._branchStack.length === 0 ? EMPTY_BRANCH : this._branchStack.slice()\n };\n const arr = this.macroDefineList[name];\n if (!arr) {\n this.macroDefineList[name] = [info];\n return;\n }\n // Same key + same branch → duplicate (re-include). Different branches stay\n // separate so the visibility filter picks the right entry at each call site.\n for (let i = 0, n = arr.length; i < n; i++) {\n const e = arr[i];\n if (e.dedupKey === dedupKey && Lexer.sameBranch(e.branch, info.branch)) return;\n }\n arr.push(info);\n }\n\n /** Render a `[start, end)` value range as space-separated significant chars,\n * using the same comment / line-continuation rules `_skipNonSemantic`\n * applies on the token-stream path. Used as the dedup key body. */\n private static _normalizeValueText(src: string, start: number, end: number): string {\n let out = \"\";\n let i = start;\n let pendingSpace = false;\n while (i < end) {\n const skipped = Lexer._skipNonSemantic(src, i, end);\n if (skipped !== i) {\n pendingSpace = out.length > 0;\n i = skipped;\n continue;\n }\n const c = src.charCodeAt(i);\n if (c === 32 || c === 9) {\n pendingSpace = out.length > 0;\n i++;\n continue;\n }\n if (pendingSpace) {\n out += \" \";\n pendingSpace = false;\n }\n out += src[i];\n i++;\n }\n return out;\n }\n\n private _scanMacroConditionExpression(): BaseToken {\n const buffer = new Array<string>();\n const start = this.getShaderPosition();\n this._scanUtilBreakLine(buffer);\n const word = buffer.join(\"\");\n const token = BaseToken.pool.get();\n token.set(Keyword.MACRO_CONDITIONAL_EXPRESSION, word, start);\n return token;\n }\n\n private _scanWord(): BaseToken {\n const buffer: string[] = [this.getCurChar()];\n const start = this.getShaderPosition();\n this.advance(1);\n while (BaseLexer.isAlnum(this.getCurCharCode())) {\n buffer.push(this.getCurChar());\n this.advance(1);\n }\n const token = BaseToken.pool.get();\n const word = buffer.join(\"\");\n const kt = Lexer._lexemeTable[word];\n\n if (this._macroDefineExpectsNameToken) {\n // Bypass MACRO_CALL classification for this one word. Used for the name of\n // a `#define` directive so redefining a known macro still yields a declarer ID.\n this._macroDefineExpectsNameToken = false;\n this._currentMacroName = word;\n this._currentMacroParamsLexeme = undefined;\n // C99 §6.10.3/3: the macro is function-like only when `(` appears *immediately*\n // after the name (no intervening whitespace). `#define FOO (1+2)` is\n // object-like with value `(1+2)`, not a function-like macro `FOO()` with\n // body `1+2`. Check the current char before any whitespace-skipping happens\n // on the next `scanToken`, so a space-separated `(` stays part of the value.\n if (this._inMacroDefineValue) {\n this._macroDefineExpectsParamsToken = this.getCurChar() === \"(\";\n // For object-like macros, the value begins where the cursor is now\n // (after the name, before whitespace skipping). Function-like macros\n // overwrite this in `_scanMacroDefineParams` after capturing `(...)`.\n this._currentMacroValueStart = this._currentIndex;\n }\n token.set(ETokenType.ID, word, start);\n } else if (this._isVisibleMacro(word)) {\n token.set(Keyword.MACRO_CALL, word, start);\n } else {\n token.set(kt ?? ETokenType.ID, word, start);\n }\n return token;\n }\n\n /** True iff at least one `#define <word>` is reachable from the current branch. */\n private _isVisibleMacro(word: string): boolean {\n const defs = this.macroDefineList[word];\n if (!defs || defs.length === 0) return false;\n const callSiteBranch = this._branchStack;\n for (let i = 0, n = defs.length; i < n; i++) {\n if (Lexer.isVisibleFrom(defs[i].branch, callSiteBranch)) return true;\n }\n return false;\n }\n\n private _scanNum(): BaseToken {\n const buffer: string[] = [];\n\n // Hex integer literal: `0[xX][0-9a-fA-F]+[uU]?`. Detect before any\n // decimal-digit read so the `x`/`X` after the leading `0` isn't\n // misclassified as an identifier.\n if (this.getCurChar() === \"0\") {\n const nextCode = this._source.charCodeAt(this._currentIndex + 1);\n if (nextCode === 120 /* 'x' */ || nextCode === 88 /* 'X' */) {\n buffer.push(this.getCurChar());\n this.advance(1);\n buffer.push(this.getCurChar());\n this.advance(1);\n while (BaseLexer.isHexDigit(this.getCurCharCode())) {\n buffer.push(this.getCurChar());\n this.advance(1);\n }\n if (buffer.length === 2) {\n this.throwError(this.getShaderPosition(0), \"lexing error, hex literal needs at least one digit.\");\n }\n this._scanIntegerSuffix(buffer);\n\n const token = BaseToken.pool.get();\n token.set(ETokenType.INT_CONSTANT, buffer.join(\"\"), this.getShaderPosition(buffer.length));\n return token;\n }\n }\n\n while (BaseLexer.isDigit(this.getCurCharCode())) {\n buffer.push(this.getCurChar());\n this.advance(1);\n }\n const curChar = this.getCurChar();\n if (curChar === \".\") {\n buffer.push(curChar);\n this.advance(1);\n while (BaseLexer.isDigit(this.getCurCharCode())) {\n buffer.push(this.getCurChar());\n this.advance(1);\n }\n this._scanFloatSuffix(buffer);\n\n const token = BaseToken.pool.get();\n token.set(ETokenType.FLOAT_CONSTANT, buffer.join(\"\"), this.getShaderPosition(buffer.length));\n return token;\n } else if (curChar === \"e\" || curChar === \"E\") {\n this._scanFloatSuffix(buffer);\n\n const token = BaseToken.pool.get();\n token.set(ETokenType.FLOAT_CONSTANT, buffer.join(\"\"), this.getShaderPosition(buffer.length));\n return token;\n } else if (curChar === \"f\" || curChar === \"F\") {\n // Pure-integer + `f`/`F` suffix → float (`5f`, `100F`).\n buffer.push(curChar);\n this.advance(1);\n\n const token = BaseToken.pool.get();\n token.set(ETokenType.FLOAT_CONSTANT, buffer.join(\"\"), this.getShaderPosition(buffer.length));\n return token;\n } else {\n this._scanIntegerSuffix(buffer);\n\n const token = BaseToken.pool.get();\n token.set(ETokenType.INT_CONSTANT, buffer.join(\"\"), this.getShaderPosition(buffer.length));\n return token;\n }\n }\n\n private _scanFloatSuffix(buffer: string[]): void {\n let curChar = this.getCurChar();\n if (curChar === \"e\" || curChar === \"E\") {\n buffer.push(curChar);\n this.advance(1);\n curChar = this.getCurChar();\n if (curChar === \"+\" || curChar === \"-\") {\n buffer.push(curChar);\n this.advance(1);\n curChar = this.getCurChar();\n }\n if (!BaseLexer.isDigit(this.getCurCharCode()))\n this.throwError(this.getShaderPosition(0), \"lexing error, invalid exponent suffix.\");\n\n do {\n buffer.push(curChar);\n this.advance(1);\n curChar = this.getCurChar();\n } while (BaseLexer.isDigit(this.getCurCharCode()));\n }\n if (curChar === \"f\" || curChar === \"F\") {\n buffer.push(curChar);\n this.advance(1);\n }\n }\n\n private _scanIntegerSuffix(buffer: string[]): void {\n const curChar = this.getCurChar();\n if (curChar === \"u\" || curChar === \"U\") {\n buffer.push(curChar);\n this.advance(1);\n }\n }\n}\n","export enum EShaderStage {\n VERTEX,\n FRAGMENT,\n ALL\n}\n","import { GalaceanDataType, TypeAny } from \"../../common\";\nimport { Keyword } from \"../../common/enums/Keyword\";\nimport { EShaderStage } from \"../../common/enums/ShaderStage\";\n\nexport enum GenericType {\n GenType = 200,\n GenIntType,\n GenUintType,\n GenBoolType,\n Mat,\n BoolVec,\n IntVec,\n UintVec,\n Vec,\n GVec4,\n GSampler2D,\n GSampler3D,\n GSamplerCube,\n GSampler2DArray\n}\n\nexport type NonGenericGalaceanType = Exclude<GalaceanDataType, string>;\ntype BuiltinType = NonGenericGalaceanType | GenericType;\n\n// Generic type system\n//\n// A generic family declares its concrete members and the dimension along which\n// members vary. Matching a generic position locks an index; projecting a return\n// family uses that index. Two families can only share an index if they vary\n// along the same dimension\n//\n// Example: `texture(GSampler2D, vec2) → GVec4` against `texture(sampler2D, uv)`\n// 1. Locate `sampler2D` in GSampler2D (ScalarType dimension) → index 0\n// 2. Project GVec4 (ScalarType dimension) at index 0 → vec4\n//\n// `ivec4 = texture(isampler2D, uv)` locks index 1, projects to `ivec4`\n// `min(vec3, vec3)` locks index 2 in GenType (Size dimension) and returns vec3\n// `min(vec3, vec2)` fails because the second arg would need index 1 but 2 is locked\n\nconst enum GenericDimension {\n // Varies along vector size: scalar / vec2 / vec3 / vec4 (or equivalents)\n Size,\n // Varies along the underlying scalar type: float / int / uint (sometimes with bool)\n ScalarType\n}\n\ntype FamilySpec = {\n readonly dimension: GenericDimension;\n readonly members: readonly NonGenericGalaceanType[];\n};\n\nconst FamilyMembers: Partial<Record<BuiltinType, FamilySpec>> = {\n // Size-varying families: index 0 → scalar, 1 → vec2, 2 → vec3, 3 → vec4\n // Per GLSL Spec §5.1, these appear in both parameter and return positions\n [GenericType.GenType]: {\n dimension: GenericDimension.Size,\n members: [Keyword.FLOAT, Keyword.VEC2, Keyword.VEC3, Keyword.VEC4]\n },\n [GenericType.GenIntType]: {\n dimension: GenericDimension.Size,\n members: [Keyword.INT, Keyword.IVEC2, Keyword.IVEC3, Keyword.IVEC4]\n },\n [GenericType.GenUintType]: {\n dimension: GenericDimension.Size,\n members: [Keyword.UINT, Keyword.UVEC2, Keyword.UVEC3, Keyword.UVEC4]\n },\n [GenericType.GenBoolType]: {\n dimension: GenericDimension.Size,\n members: [Keyword.BOOL, Keyword.BVEC2, Keyword.BVEC3, Keyword.BVEC4]\n },\n // Vec-only sub-families (no scalar): index 0 → vec2, 1 → vec3, 2 → vec4\n [GenericType.Vec]: { dimension: GenericDimension.Size, members: [Keyword.VEC2, Keyword.VEC3, Keyword.VEC4] },\n [GenericType.IntVec]: { dimension: GenericDimension.Size, members: [Keyword.IVEC2, Keyword.IVEC3, Keyword.IVEC4] },\n [GenericType.UintVec]: { dimension: GenericDimension.Size, members: [Keyword.UVEC2, Keyword.UVEC3, Keyword.UVEC4] },\n [GenericType.BoolVec]: { dimension: GenericDimension.Size, members: [Keyword.BVEC2, Keyword.BVEC3, Keyword.BVEC4] },\n [GenericType.Mat]: { dimension: GenericDimension.Size, members: [Keyword.MAT2, Keyword.MAT3, Keyword.MAT4] },\n\n // ScalarType-varying families: index 0 → float base, 1 → int base, 2 → uint base\n // Per GLSL Spec §5.1:\n // GSampler* families are parameter-only (passed as texture samplers)\n // GVec4 is return-only (projected from a GSampler* parameter into the matching vec4 variant)\n [GenericType.GSampler2D]: {\n dimension: GenericDimension.ScalarType,\n members: [Keyword.SAMPLER2D, Keyword.I_SAMPLER2D, Keyword.U_SAMPLER2D]\n },\n [GenericType.GSampler3D]: {\n dimension: GenericDimension.ScalarType,\n members: [Keyword.SAMPLER3D, Keyword.I_SAMPLER3D, Keyword.U_SAMPLER3D]\n },\n [GenericType.GSamplerCube]: {\n dimension: GenericDimension.ScalarType,\n members: [Keyword.SAMPLER_CUBE, Keyword.I_SAMPLER_CUBE, Keyword.U_SAMPLER_CUBE]\n },\n [GenericType.GSampler2DArray]: {\n dimension: GenericDimension.ScalarType,\n members: [Keyword.SAMPLER2D_ARRAY, Keyword.I_SAMPLER2D_ARRAY, Keyword.U_SAMPLER2D_ARRAY]\n },\n [GenericType.GVec4]: { dimension: GenericDimension.ScalarType, members: [Keyword.VEC4, Keyword.IVEC4, Keyword.UVEC4] }\n};\n\nconst BuiltinFunctionTable: Map<string, BuiltinFunction[]> = new Map();\n\nexport class BuiltinFunction {\n ident: string;\n readonly args: BuiltinType[];\n readonly scope: EShaderStage;\n\n private _returnType: BuiltinType;\n private _realReturnType: NonGenericGalaceanType;\n\n get realReturnType(): NonGenericGalaceanType {\n return this._realReturnType;\n }\n\n private constructor(ident: string, returnType: BuiltinType, scope: EShaderStage, ...args: BuiltinType[]) {\n this.ident = ident;\n this._returnType = returnType;\n this.args = args;\n this.scope = scope;\n }\n\n static _create(ident: string, returnType: BuiltinType, ...args: BuiltinType[]) {\n const fn = new BuiltinFunction(ident, returnType, EShaderStage.ALL, ...args);\n const list = BuiltinFunctionTable.get(ident) ?? [];\n list.push(fn);\n BuiltinFunctionTable.set(ident, list);\n }\n\n static _createWithScope(ident: string, returnType: BuiltinType, scope: EShaderStage, ...args: BuiltinType[]) {\n const fn = new BuiltinFunction(ident, returnType, scope, ...args);\n const list = BuiltinFunctionTable.get(ident) ?? [];\n list.push(fn);\n BuiltinFunctionTable.set(ident, list);\n }\n\n // Overload resolution against the generic family system\n //\n // For each candidate signature: concrete positions require exact type match;\n // generic positions locate the actual arg's index within the declared family,\n // and lock an index per dimension (size / scalar-type) shared across positions.\n // The return type is resolved by projecting the appropriate lock through the\n // return family, or passed through verbatim if the return is concrete\n static resolveOverload(\n funcName: string,\n callArgTypes: NonGenericGalaceanType[] | undefined\n ): BuiltinFunction | undefined {\n const overloads = BuiltinFunctionTable.get(funcName);\n if (!overloads) return undefined;\n const n = callArgTypes?.length ?? 0;\n\n for (let i = 0, m = overloads.length; i < m; i++) {\n const candidate = overloads[i];\n const declaredArgs = candidate.args;\n if (declaredArgs.length !== n) continue;\n\n let sizeLock = -1;\n let scalarTypeLock = -1;\n let matched = true;\n\n for (let j = 0; j < n; j++) {\n const declaredType = declaredArgs[j];\n const actualType = callArgTypes![j];\n if (actualType === TypeAny) continue;\n\n const paramFamily = FamilyMembers[declaredType];\n if (paramFamily) {\n // Families have at most 4 members; linear indexOf beats Map.get on this size\n const memberIdx = paramFamily.members.indexOf(actualType);\n if (memberIdx === -1) {\n matched = false;\n break;\n }\n if (paramFamily.dimension === GenericDimension.Size) {\n if (sizeLock === -1) sizeLock = memberIdx;\n else if (sizeLock !== memberIdx) {\n matched = false;\n break;\n }\n } else {\n if (scalarTypeLock === -1) scalarTypeLock = memberIdx;\n else if (scalarTypeLock !== memberIdx) {\n matched = false;\n break;\n }\n }\n } else if (declaredType !== actualType) {\n matched = false;\n break;\n }\n }\n\n if (!matched) continue;\n\n const returnFamily = FamilyMembers[candidate._returnType];\n if (!returnFamily) {\n candidate._realReturnType = candidate._returnType as NonGenericGalaceanType;\n return candidate;\n }\n const returnIdx = returnFamily.dimension === GenericDimension.Size ? sizeLock : scalarTypeLock;\n // No argument locked the dimension (all relevant args were TypeAny): fall\n // through as TypeAny so downstream overload resolution treats the result\n // as a wildcard rather than a specific guess\n candidate._realReturnType = returnIdx === -1 ? TypeAny : returnFamily.members[returnIdx];\n return candidate;\n }\n\n return undefined;\n }\n\n static isExist(ident: string) {\n return BuiltinFunctionTable.has(ident);\n }\n}\n\nBuiltinFunction._create(\"radians\", GenericType.GenType, GenericType.GenType);\nBuiltinFunction._create(\"degrees\", GenericType.GenType, GenericType.GenType);\nBuiltinFunction._create(\"sin\", GenericType.GenType, GenericType.GenType);\nBuiltinFunction._create(\"cos\", GenericType.GenType, GenericType.GenType);\nBuiltinFunction._create(\"tan\", GenericType.GenType, GenericType.GenType);\nBuiltinFunction._create(\"asin\", GenericType.GenType, GenericType.GenType);\nBuiltinFunction._create(\"acos\", GenericType.GenType, GenericType.GenType);\nBuiltinFunction._create(\"atan\", GenericType.GenType, GenericType.GenType, GenericType.GenType);\nBuiltinFunction._create(\"atan\", GenericType.GenType, GenericType.GenType);\nBuiltinFunction._create(\"sinh\", GenericType.GenType, GenericType.GenType);\nBuiltinFunction._create(\"cosh\", GenericType.GenType, GenericType.GenType);\nBuiltinFunction._create(\"tanh\", GenericType.GenType, GenericType.GenType);\nBuiltinFunction._create(\"asinh\", GenericType.GenType, GenericType.GenType);\nBuiltinFunction._create(\"acosh\", GenericType.GenType, GenericType.GenType);\nBuiltinFunction._create(\"atanh\", GenericType.GenType, GenericType.GenType);\n\nBuiltinFunction._create(\"pow\", GenericType.GenType, GenericType.GenType, GenericType.GenType);\nBuiltinFunction._create(\"exp\", GenericType.GenType, GenericType.GenType);\nBuiltinFunction._create(\"log\", GenericType.GenType, GenericType.GenType);\nBuiltinFunction._create(\"exp2\", GenericType.GenType, GenericType.GenType);\nBuiltinFunction._create(\"log2\", GenericType.GenType, GenericType.GenType);\nBuiltinFunction._create(\"sqrt\", GenericType.GenType, GenericType.GenType);\nBuiltinFunction._create(\"inversesqrt\", GenericType.GenType, GenericType.GenType);\n\nBuiltinFunction._create(\"abs\", GenericType.GenType, GenericType.GenType);\nBuiltinFunction._create(\"abs\", GenericType.GenIntType, GenericType.GenIntType);\nBuiltinFunction._create(\"sign\", GenericType.GenType, GenericType.GenType);\nBuiltinFunction._create(\"sign\", GenericType.GenIntType, GenericType.GenIntType);\nBuiltinFunction._create(\"floor\", GenericType.GenType, GenericType.GenType);\nBuiltinFunction._create(\"trunc\", GenericType.GenType, GenericType.GenType);\nBuiltinFunction._create(\"round\", GenericType.GenType, GenericType.GenType);\nBuiltinFunction._create(\"roundEven\", GenericType.GenType, GenericType.GenType);\nBuiltinFunction._create(\"ceil\", GenericType.GenType, GenericType.GenType);\nBuiltinFunction._create(\"fract\", GenericType.GenType, GenericType.GenType);\nBuiltinFunction._create(\"mod\", GenericType.GenType, GenericType.GenType, Keyword.FLOAT);\nBuiltinFunction._create(\"mod\", GenericType.GenType, GenericType.GenType, GenericType.GenType);\nBuiltinFunction._create(\"min\", GenericType.GenType, GenericType.GenType, GenericType.GenType);\nBuiltinFunction._create(\"min\", GenericType.GenType, GenericType.GenType, Keyword.FLOAT);\nBuiltinFunction._create(\"min\", GenericType.GenIntType, GenericType.GenIntType, GenericType.GenIntType);\nBuiltinFunction._create(\"min\", GenericType.GenIntType, GenericType.GenIntType, Keyword.INT);\nBuiltinFunction._create(\"min\", GenericType.GenUintType, GenericType.GenUintType, GenericType.GenUintType);\nBuiltinFunction._create(\"min\", GenericType.GenUintType, GenericType.GenUintType, Keyword.UINT);\nBuiltinFunction._create(\"max\", GenericType.GenType, GenericType.GenType, GenericType.GenType);\nBuiltinFunction._create(\"max\", GenericType.GenType, GenericType.GenType, Keyword.FLOAT);\nBuiltinFunction._create(\"max\", GenericType.GenIntType, GenericType.GenIntType, GenericType.GenIntType);\nBuiltinFunction._create(\"max\", GenericType.GenIntType, GenericType.GenIntType, Keyword.INT);\nBuiltinFunction._create(\"clamp\", GenericType.GenType, GenericType.GenType, GenericType.GenType, GenericType.GenType);\nBuiltinFunction._create(\"clamp\", GenericType.GenType, GenericType.GenType, Keyword.FLOAT, Keyword.FLOAT);\nBuiltinFunction._create(\n \"clamp\",\n GenericType.GenIntType,\n GenericType.GenIntType,\n GenericType.GenIntType,\n GenericType.GenIntType\n);\nBuiltinFunction._create(\"clamp\", GenericType.GenIntType, GenericType.GenIntType, Keyword.INT, Keyword.INT);\nBuiltinFunction._create(\n \"clamp\",\n GenericType.GenUintType,\n GenericType.GenUintType,\n GenericType.GenUintType,\n GenericType.GenUintType\n);\nBuiltinFunction._create(\"clamp\", GenericType.GenUintType, GenericType.GenUintType, Keyword.UINT, Keyword.UINT);\nBuiltinFunction._create(\"mix\", GenericType.GenType, GenericType.GenType, GenericType.GenType, GenericType.GenType);\nBuiltinFunction._create(\"mix\", GenericType.GenType, GenericType.GenType, GenericType.GenType, Keyword.FLOAT);\nBuiltinFunction._create(\"mix\", GenericType.GenType, GenericType.GenType, GenericType.GenType, GenericType.GenBoolType);\nBuiltinFunction._create(\"step\", GenericType.GenType, GenericType.GenType, GenericType.GenType);\nBuiltinFunction._create(\"step\", GenericType.GenType, Keyword.FLOAT, GenericType.GenType);\nBuiltinFunction._create(\n \"smoothstep\",\n GenericType.GenType,\n GenericType.GenType,\n GenericType.GenType,\n GenericType.GenType\n);\nBuiltinFunction._create(\"smoothstep\", GenericType.GenType, Keyword.FLOAT, Keyword.FLOAT, GenericType.GenType);\nBuiltinFunction._create(\"isnan\", GenericType.GenBoolType, GenericType.GenType);\nBuiltinFunction._create(\"isinf\", GenericType.GenBoolType, GenericType.GenType);\nBuiltinFunction._create(\"floatBitsToInt\", GenericType.GenType, GenericType.GenType);\nBuiltinFunction._create(\"floatBitsToUint\", GenericType.GenUintType, GenericType.GenType);\nBuiltinFunction._create(\"intBitsToFloat\", GenericType.GenType, GenericType.GenIntType);\nBuiltinFunction._create(\"uintBitsToFloat\", GenericType.GenType, GenericType.GenUintType);\n\nBuiltinFunction._create(\"packSnorm2x16\", Keyword.UINT, Keyword.VEC2);\nBuiltinFunction._create(\"unpackSnorm2x16\", Keyword.VEC2, Keyword.UINT);\nBuiltinFunction._create(\"packUnorm2x16\", Keyword.UINT, Keyword.VEC2);\nBuiltinFunction._create(\"unpackUnorm2x16\", Keyword.VEC2, Keyword.UINT);\nBuiltinFunction._create(\"packHalf2x16\", Keyword.UINT, Keyword.VEC2);\nBuiltinFunction._create(\"unpackHalf2x16\", Keyword.VEC2, Keyword.UINT);\n\nBuiltinFunction._create(\"length\", Keyword.FLOAT, GenericType.GenType);\nBuiltinFunction._create(\"distance\", Keyword.FLOAT, GenericType.GenType, GenericType.GenType);\nBuiltinFunction._create(\"dot\", Keyword.FLOAT, GenericType.GenType, GenericType.GenType);\nBuiltinFunction._create(\"cross\", Keyword.VEC3, Keyword.VEC3, Keyword.VEC3);\nBuiltinFunction._create(\"normalize\", GenericType.GenType, GenericType.GenType);\nBuiltinFunction._create(\n \"faceforward\",\n GenericType.GenType,\n GenericType.GenType,\n GenericType.GenType,\n GenericType.GenType\n);\nBuiltinFunction._create(\"reflect\", GenericType.GenType, GenericType.GenType, GenericType.GenType);\nBuiltinFunction._create(\"refract\", GenericType.GenType, GenericType.GenType, GenericType.GenType, Keyword.FLOAT);\nBuiltinFunction._create(\"matrixCompMult\", GenericType.Mat, GenericType.Mat, GenericType.Mat);\nBuiltinFunction._create(\"outerProduct\", Keyword.MAT2, Keyword.VEC2, Keyword.VEC2);\nBuiltinFunction._create(\"outerProduct\", Keyword.MAT3, Keyword.VEC3, Keyword.VEC3);\nBuiltinFunction._create(\"outerProduct\", Keyword.MAT4, Keyword.VEC4, Keyword.VEC4);\n\nBuiltinFunction._create(\"outerProduct\", Keyword.MAT2X3, Keyword.VEC3, Keyword.VEC2);\nBuiltinFunction._create(\"outerProduct\", Keyword.MAT3X2, Keyword.VEC2, Keyword.VEC3);\n\nBuiltinFunction._create(\"outerProduct\", Keyword.MAT2X4, Keyword.VEC4, Keyword.VEC2);\nBuiltinFunction._create(\"outerProduct\", Keyword.MAT4X2, Keyword.VEC2, Keyword.VEC4);\n\nBuiltinFunction._create(\"outerProduct\", Keyword.MAT3X4, Keyword.VEC4, Keyword.VEC3);\nBuiltinFunction._create(\"outerProduct\", Keyword.MAT4X3, Keyword.VEC3, Keyword.VEC4);\n\nBuiltinFunction._create(\"transpose\", Keyword.MAT2, Keyword.MAT2);\nBuiltinFunction._create(\"transpose\", Keyword.MAT3, Keyword.MAT3);\nBuiltinFunction._create(\"transpose\", Keyword.MAT4, Keyword.MAT4);\nBuiltinFunction._create(\"transpose\", Keyword.MAT2X3, Keyword.MAT3X2);\nBuiltinFunction._create(\"transpose\", Keyword.MAT3X2, Keyword.MAT2X3);\nBuiltinFunction._create(\"transpose\", Keyword.MAT4X2, Keyword.MAT2X4);\nBuiltinFunction._create(\"transpose\", Keyword.MAT2X4, Keyword.MAT4X2);\nBuiltinFunction._create(\"transpose\", Keyword.MAT3X4, Keyword.MAT4X3);\nBuiltinFunction._create(\"transpose\", Keyword.MAT4X3, Keyword.MAT3X4);\n\nBuiltinFunction._create(\"determinant\", Keyword.FLOAT, Keyword.MAT2);\nBuiltinFunction._create(\"determinant\", Keyword.FLOAT, Keyword.MAT3);\nBuiltinFunction._create(\"determinant\", Keyword.FLOAT, Keyword.MAT4);\n\nBuiltinFunction._create(\"inverse\", Keyword.MAT2, Keyword.MAT2);\nBuiltinFunction._create(\"inverse\", Keyword.MAT3, Keyword.MAT3);\nBuiltinFunction._create(\"inverse\", Keyword.MAT4, Keyword.MAT4);\n\nBuiltinFunction._create(\"lessThan\", GenericType.BoolVec, GenericType.Vec, GenericType.Vec);\nBuiltinFunction._create(\"lessThan\", GenericType.BoolVec, GenericType.IntVec, GenericType.IntVec);\nBuiltinFunction._create(\"lessThan\", GenericType.BoolVec, GenericType.UintVec, GenericType.UintVec);\n\nBuiltinFunction._create(\"lessThanEqual\", GenericType.BoolVec, GenericType.Vec, GenericType.Vec);\nBuiltinFunction._create(\"lessThanEqual\", GenericType.BoolVec, GenericType.IntVec, GenericType.IntVec);\nBuiltinFunction._create(\"lessThanEqual\", GenericType.BoolVec, GenericType.UintVec, GenericType.UintVec);\n\nBuiltinFunction._create(\"greaterThan\", GenericType.BoolVec, GenericType.Vec, GenericType.Vec);\nBuiltinFunction._create(\"greaterThan\", GenericType.BoolVec, GenericType.IntVec, GenericType.IntVec);\nBuiltinFunction._create(\"greaterThan\", GenericType.BoolVec, GenericType.UintVec, GenericType.UintVec);\n\nBuiltinFunction._create(\"greaterThanEqual\", GenericType.BoolVec, GenericType.Vec, GenericType.Vec);\nBuiltinFunction._create(\"greaterThanEqual\", GenericType.BoolVec, GenericType.IntVec, GenericType.IntVec);\nBuiltinFunction._create(\"greaterThanEqual\", GenericType.BoolVec, GenericType.UintVec, GenericType.UintVec);\n\nBuiltinFunction._create(\"equal\", GenericType.BoolVec, GenericType.Vec, GenericType.Vec);\nBuiltinFunction._create(\"equal\", GenericType.BoolVec, GenericType.IntVec, GenericType.IntVec);\nBuiltinFunction._create(\"equal\", GenericType.BoolVec, GenericType.UintVec, GenericType.UintVec);\nBuiltinFunction._create(\"equal\", GenericType.BoolVec, GenericType.BoolVec, GenericType.BoolVec);\n\nBuiltinFunction._create(\"notEqual\", GenericType.BoolVec, GenericType.Vec, GenericType.Vec);\nBuiltinFunction._create(\"notEqual\", GenericType.BoolVec, GenericType.IntVec, GenericType.IntVec);\nBuiltinFunction._create(\"notEqual\", GenericType.BoolVec, GenericType.UintVec, GenericType.UintVec);\nBuiltinFunction._create(\"notEqual\", GenericType.BoolVec, GenericType.BoolVec, GenericType.BoolVec);\n\nBuiltinFunction._create(\"any\", Keyword.BOOL, GenericType.BoolVec);\nBuiltinFunction._create(\"all\", Keyword.BOOL, GenericType.BoolVec);\nBuiltinFunction._create(\"not\", GenericType.BoolVec, GenericType.BoolVec);\n\nBuiltinFunction._create(\"textureSize\", Keyword.IVEC2, GenericType.GSampler2D, Keyword.INT);\nBuiltinFunction._create(\"textureSize\", Keyword.IVEC3, GenericType.GSampler3D, Keyword.INT);\nBuiltinFunction._create(\"textureSize\", Keyword.IVEC2, GenericType.GSamplerCube, Keyword.INT);\n\nBuiltinFunction._create(\"textureSize\", Keyword.IVEC2, Keyword.SAMPLER2D_SHADOW, Keyword.INT);\nBuiltinFunction._create(\"textureSize\", Keyword.IVEC2, Keyword.SAMPLER_CUBE_SHADOW, Keyword.INT);\n\nBuiltinFunction._create(\"textureSize\", Keyword.IVEC3, GenericType.GSampler2DArray, Keyword.INT);\nBuiltinFunction._create(\"textureSize\", Keyword.IVEC3, Keyword.SAMPLER2D_ARRAY_SHADOW, Keyword.INT);\n\nBuiltinFunction._create(\"texture2D\", GenericType.GVec4, GenericType.GSampler2D, Keyword.VEC2);\nBuiltinFunction._create(\"texture2D\", GenericType.GVec4, GenericType.GSampler2D, Keyword.VEC2, Keyword.FLOAT);\n\nBuiltinFunction._create(\"texture\", GenericType.GVec4, GenericType.GSampler2D, Keyword.VEC2, Keyword.FLOAT);\nBuiltinFunction._create(\"texture\", GenericType.GVec4, GenericType.GSampler2D, Keyword.VEC2);\nBuiltinFunction._create(\"texture\", GenericType.GVec4, GenericType.GSampler3D, Keyword.VEC3, Keyword.FLOAT);\nBuiltinFunction._create(\"texture\", GenericType.GVec4, GenericType.GSampler3D, Keyword.VEC3);\n\nBuiltinFunction._create(\"texture\", GenericType.GVec4, GenericType.GSamplerCube, Keyword.VEC3, Keyword.FLOAT);\nBuiltinFunction._create(\"texture\", GenericType.GVec4, GenericType.GSamplerCube, Keyword.VEC3);\n\nBuiltinFunction._create(\"texture\", Keyword.FLOAT, Keyword.SAMPLER2D_SHADOW, Keyword.VEC3, Keyword.FLOAT);\nBuiltinFunction._create(\"texture\", Keyword.FLOAT, Keyword.SAMPLER2D_SHADOW, Keyword.VEC3);\n\nBuiltinFunction._create(\"texture\", Keyword.FLOAT, Keyword.SAMPLER_CUBE_SHADOW, Keyword.VEC4, Keyword.FLOAT);\nBuiltinFunction._create(\"texture\", Keyword.FLOAT, Keyword.SAMPLER_CUBE_SHADOW, Keyword.VEC4);\n\nBuiltinFunction._create(\"texture\", GenericType.GVec4, Keyword.SAMPLER2D_ARRAY, Keyword.VEC3, Keyword.FLOAT);\nBuiltinFunction._create(\"texture\", GenericType.GVec4, Keyword.SAMPLER2D_ARRAY, Keyword.VEC3);\n\nBuiltinFunction._create(\"texture\", Keyword.FLOAT, Keyword.SAMPLER2D_ARRAY_SHADOW, Keyword.VEC4);\n\nBuiltinFunction._create(\"textureProj\", GenericType.GVec4, GenericType.GSampler2D, Keyword.VEC3, Keyword.FLOAT);\nBuiltinFunction._create(\"textureProj\", GenericType.GVec4, GenericType.GSampler2D, Keyword.VEC3);\nBuiltinFunction._create(\"textureProj\", GenericType.GVec4, GenericType.GSampler2D, Keyword.VEC4, Keyword.FLOAT);\nBuiltinFunction._create(\"textureProj\", GenericType.GVec4, GenericType.GSampler2D, Keyword.VEC4);\nBuiltinFunction._create(\"textureProj\", GenericType.GVec4, GenericType.GSampler3D, Keyword.VEC4, Keyword.FLOAT);\nBuiltinFunction._create(\"textureProj\", GenericType.GVec4, GenericType.GSampler3D, Keyword.VEC4);\n\nBuiltinFunction._create(\"textureProj\", Keyword.FLOAT, Keyword.SAMPLER2D_SHADOW, Keyword.VEC4, Keyword.FLOAT);\nBuiltinFunction._create(\"textureProj\", Keyword.FLOAT, Keyword.SAMPLER2D_SHADOW, Keyword.VEC4);\n\nBuiltinFunction._create(\"textureLod\", GenericType.GVec4, GenericType.GSampler2D, Keyword.VEC2, Keyword.FLOAT);\nBuiltinFunction._create(\"textureLod\", GenericType.GVec4, GenericType.GSampler3D, Keyword.VEC3, Keyword.FLOAT);\nBuiltinFunction._create(\"textureLod\", GenericType.GVec4, GenericType.GSamplerCube, Keyword.VEC3, Keyword.FLOAT);\nBuiltinFunction._create(\"textureLod\", Keyword.FLOAT, Keyword.SAMPLER2D_SHADOW, Keyword.VEC3, Keyword.FLOAT);\nBuiltinFunction._create(\"textureLod\", GenericType.GVec4, GenericType.GSampler2DArray, Keyword.VEC3, Keyword.FLOAT);\nBuiltinFunction._create(\"texture2DLod\", GenericType.GVec4, GenericType.GSampler2D, Keyword.VEC2, Keyword.FLOAT);\nBuiltinFunction._create(\"texture2DLodEXT\", GenericType.GVec4, GenericType.GSampler2D, Keyword.VEC2, Keyword.FLOAT);\nBuiltinFunction._create(\"texture2DLodEXT\", GenericType.GVec4, GenericType.GSampler3D, Keyword.VEC3, Keyword.FLOAT);\n\nBuiltinFunction._create(\"textureCube\", GenericType.GVec4, GenericType.GSamplerCube, Keyword.VEC3);\nBuiltinFunction._create(\"textureCube\", GenericType.GVec4, GenericType.GSamplerCube, Keyword.VEC3, Keyword.FLOAT);\nBuiltinFunction._create(\"textureCubeLod\", GenericType.GVec4, GenericType.GSamplerCube, Keyword.VEC3, Keyword.FLOAT);\nBuiltinFunction._create(\"textureCubeLodEXT\", GenericType.GVec4, GenericType.GSamplerCube, Keyword.VEC3, Keyword.FLOAT);\n\nBuiltinFunction._create(\n \"textureOffset\",\n GenericType.GVec4,\n GenericType.GSampler2D,\n Keyword.VEC2,\n Keyword.IVEC2,\n Keyword.FLOAT\n);\nBuiltinFunction._create(\"textureOffset\", GenericType.GVec4, GenericType.GSampler2D, Keyword.VEC2, Keyword.IVEC2);\n\nBuiltinFunction._create(\n \"textureOffset\",\n GenericType.GVec4,\n GenericType.GSampler3D,\n Keyword.VEC3,\n Keyword.IVEC3,\n Keyword.FLOAT\n);\nBuiltinFunction._create(\"textureOffset\", GenericType.GVec4, GenericType.GSampler3D, Keyword.VEC3, Keyword.IVEC3);\n\nBuiltinFunction._create(\n \"textureOffset\",\n Keyword.FLOAT,\n Keyword.SAMPLER2D_SHADOW,\n Keyword.VEC3,\n Keyword.IVEC2,\n Keyword.FLOAT\n);\nBuiltinFunction._create(\"textureOffset\", Keyword.FLOAT, Keyword.SAMPLER2D_SHADOW, Keyword.VEC3, Keyword.IVEC2);\nBuiltinFunction._create(\n \"textureOffset\",\n GenericType.GVec4,\n GenericType.GSampler2DArray,\n Keyword.VEC3,\n Keyword.IVEC2,\n Keyword.FLOAT\n);\nBuiltinFunction._create(\"textureOffset\", GenericType.GVec4, GenericType.GSampler2DArray, Keyword.VEC3, Keyword.IVEC2);\n\nBuiltinFunction._create(\"texelFetch\", GenericType.GVec4, GenericType.GSampler2D, Keyword.IVEC2, Keyword.INT);\nBuiltinFunction._create(\"texelFetch\", GenericType.GVec4, GenericType.GSampler3D, Keyword.IVEC3, Keyword.INT);\nBuiltinFunction._create(\"texelFetch\", GenericType.GVec4, GenericType.GSampler2DArray, Keyword.IVEC3, Keyword.INT);\n\nBuiltinFunction._create(\n \"texelFetchOffset\",\n GenericType.GVec4,\n GenericType.GSampler2D,\n Keyword.IVEC2,\n Keyword.INT,\n Keyword.IVEC2\n);\nBuiltinFunction._create(\n \"texelFetchOffset\",\n GenericType.GVec4,\n GenericType.GSampler3D,\n Keyword.IVEC3,\n Keyword.INT,\n Keyword.IVEC3\n);\nBuiltinFunction._create(\n \"texelFetchOffset\",\n GenericType.GVec4,\n GenericType.GSampler2DArray,\n Keyword.IVEC3,\n Keyword.INT,\n Keyword.IVEC2\n);\n\nBuiltinFunction._create(\n \"textureProjOffset\",\n GenericType.GVec4,\n GenericType.GSampler2D,\n Keyword.VEC3,\n Keyword.IVEC2,\n Keyword.FLOAT\n);\nBuiltinFunction._create(\"textureProjOffset\", GenericType.GVec4, GenericType.GSampler2D, Keyword.VEC3, Keyword.IVEC2);\n\nBuiltinFunction._create(\n \"textureProjOffset\",\n GenericType.GVec4,\n GenericType.GSampler2D,\n Keyword.VEC4,\n Keyword.IVEC2,\n Keyword.FLOAT\n);\nBuiltinFunction._create(\"textureProjOffset\", GenericType.GVec4, GenericType.GSampler2D, Keyword.VEC4, Keyword.IVEC2);\n\nBuiltinFunction._create(\n \"textureProjOffset\",\n GenericType.GVec4,\n GenericType.GSampler3D,\n Keyword.VEC4,\n Keyword.IVEC3,\n Keyword.FLOAT\n);\nBuiltinFunction._create(\"textureProjOffset\", GenericType.GVec4, GenericType.GSampler3D, Keyword.VEC4, Keyword.IVEC3);\n\nBuiltinFunction._create(\n \"textureProjOffset\",\n Keyword.FLOAT,\n Keyword.SAMPLER2D_SHADOW,\n Keyword.VEC4,\n Keyword.IVEC2,\n Keyword.FLOAT\n);\nBuiltinFunction._create(\"textureProjOffset\", Keyword.FLOAT, Keyword.SAMPLER2D_SHADOW, Keyword.VEC4, Keyword.IVEC2);\n\nBuiltinFunction._create(\n \"textureLodOffset\",\n GenericType.GVec4,\n GenericType.GSampler2D,\n Keyword.VEC2,\n Keyword.FLOAT,\n Keyword.IVEC2\n);\nBuiltinFunction._create(\n \"textureLodOffset\",\n GenericType.GVec4,\n GenericType.GSampler3D,\n Keyword.VEC3,\n Keyword.FLOAT,\n Keyword.IVEC3\n);\n\nBuiltinFunction._create(\n \"textureLodOffset\",\n Keyword.FLOAT,\n Keyword.SAMPLER2D_SHADOW,\n Keyword.VEC3,\n Keyword.FLOAT,\n Keyword.IVEC2\n);\nBuiltinFunction._create(\n \"textureLodOffset\",\n GenericType.GVec4,\n GenericType.GSampler2DArray,\n Keyword.VEC3,\n Keyword.FLOAT,\n Keyword.IVEC2\n);\n\nBuiltinFunction._create(\"textureProjLod\", GenericType.GVec4, GenericType.GSampler2D, Keyword.VEC3, Keyword.FLOAT);\nBuiltinFunction._create(\"textureProjLod\", GenericType.GVec4, GenericType.GSampler2D, Keyword.VEC4, Keyword.FLOAT);\nBuiltinFunction._create(\"textureProjLod\", GenericType.GVec4, GenericType.GSampler3D, Keyword.VEC4, Keyword.FLOAT);\nBuiltinFunction._create(\"textureProjLod\", Keyword.FLOAT, Keyword.SAMPLER2D_SHADOW, Keyword.VEC4, Keyword.FLOAT);\n\nBuiltinFunction._create(\n \"textureProjLodOffset\",\n GenericType.GVec4,\n GenericType.GSampler2D,\n Keyword.VEC3,\n Keyword.FLOAT,\n Keyword.IVEC2\n);\nBuiltinFunction._create(\n \"textureProjLodOffset\",\n GenericType.GVec4,\n GenericType.GSampler2D,\n Keyword.VEC4,\n Keyword.FLOAT,\n Keyword.IVEC2\n);\nBuiltinFunction._create(\n \"textureProjLodOffset\",\n GenericType.GVec4,\n GenericType.GSampler3D,\n Keyword.VEC4,\n Keyword.FLOAT,\n Keyword.IVEC3\n);\nBuiltinFunction._create(\n \"textureProjLodOffset\",\n Keyword.FLOAT,\n Keyword.SAMPLER2D_SHADOW,\n Keyword.VEC4,\n Keyword.FLOAT,\n Keyword.IVEC2\n);\n\nBuiltinFunction._create(\n \"textureGrad\",\n GenericType.GVec4,\n GenericType.GSampler2D,\n Keyword.VEC2,\n Keyword.VEC2,\n Keyword.VEC2\n);\nBuiltinFunction._create(\n \"textureGrad\",\n GenericType.GVec4,\n GenericType.GSampler3D,\n Keyword.VEC3,\n Keyword.VEC3,\n Keyword.VEC3\n);\nBuiltinFunction._create(\n \"textureGrad\",\n GenericType.GVec4,\n GenericType.GSamplerCube,\n Keyword.VEC3,\n Keyword.VEC3,\n Keyword.VEC3\n);\n\nBuiltinFunction._create(\n \"textureGrad\",\n Keyword.FLOAT,\n Keyword.SAMPLER2D_SHADOW,\n Keyword.VEC3,\n Keyword.VEC2,\n Keyword.VEC2\n);\nBuiltinFunction._create(\n \"textureGrad\",\n Keyword.FLOAT,\n Keyword.SAMPLER_CUBE_SHADOW,\n Keyword.VEC4,\n Keyword.VEC3,\n Keyword.VEC3\n);\n\nBuiltinFunction._create(\n \"textureGrad\",\n GenericType.GVec4,\n GenericType.GSampler2DArray,\n Keyword.VEC3,\n Keyword.VEC2,\n Keyword.VEC2\n);\nBuiltinFunction._create(\n \"textureGrad\",\n Keyword.FLOAT,\n Keyword.SAMPLER2D_ARRAY_SHADOW,\n Keyword.VEC4,\n Keyword.VEC2,\n Keyword.VEC2\n);\n\nBuiltinFunction._create(\n \"textureGradOffset\",\n GenericType.GVec4,\n GenericType.GSampler2D,\n Keyword.VEC2,\n Keyword.VEC2,\n Keyword.VEC2,\n Keyword.IVEC2\n);\nBuiltinFunction._create(\n \"textureGradOffset\",\n GenericType.GVec4,\n GenericType.GSampler3D,\n Keyword.VEC3,\n Keyword.VEC3,\n Keyword.VEC3,\n Keyword.IVEC3\n);\nBuiltinFunction._create(\n \"textureGradOffset\",\n Keyword.FLOAT,\n Keyword.SAMPLER2D_SHADOW,\n Keyword.VEC3,\n Keyword.VEC2,\n Keyword.VEC2,\n Keyword.IVEC2\n);\nBuiltinFunction._create(\n \"textureGradOffset\",\n GenericType.GVec4,\n GenericType.GSampler2DArray,\n Keyword.VEC3,\n Keyword.VEC2,\n Keyword.VEC2,\n Keyword.IVEC2\n);\nBuiltinFunction._create(\n \"textureGradOffset\",\n Keyword.FLOAT,\n Keyword.SAMPLER2D_ARRAY_SHADOW,\n Keyword.VEC3,\n Keyword.VEC2,\n Keyword.VEC2,\n Keyword.IVEC2\n);\n\nBuiltinFunction._create(\n \"textureProjGrad\",\n GenericType.GVec4,\n GenericType.GSampler2D,\n Keyword.VEC3,\n Keyword.VEC2,\n Keyword.VEC2\n);\nBuiltinFunction._create(\n \"textureProjGrad\",\n GenericType.GVec4,\n GenericType.GSampler2D,\n Keyword.VEC4,\n Keyword.VEC2,\n Keyword.VEC2\n);\nBuiltinFunction._create(\n \"textureProjGrad\",\n GenericType.GVec4,\n GenericType.GSampler3D,\n Keyword.VEC4,\n Keyword.VEC3,\n Keyword.VEC3\n);\nBuiltinFunction._create(\n \"textureProjGrad\",\n Keyword.FLOAT,\n Keyword.SAMPLER2D_SHADOW,\n Keyword.VEC4,\n Keyword.VEC2,\n Keyword.VEC2\n);\n\nBuiltinFunction._create(\n \"textureProjGradOffset\",\n GenericType.GVec4,\n GenericType.GSampler2D,\n Keyword.VEC3,\n Keyword.VEC2,\n Keyword.VEC2,\n Keyword.IVEC2\n);\nBuiltinFunction._create(\n \"textureProjGradOffset\",\n GenericType.GVec4,\n GenericType.GSampler2D,\n Keyword.VEC4,\n Keyword.VEC2,\n Keyword.VEC2,\n Keyword.IVEC2\n);\nBuiltinFunction._create(\n \"textureProjGradOffset\",\n GenericType.GVec4,\n GenericType.GSampler3D,\n Keyword.VEC4,\n Keyword.VEC3,\n Keyword.VEC3,\n Keyword.IVEC3\n);\nBuiltinFunction._create(\n \"textureProjGradOffset\",\n Keyword.FLOAT,\n Keyword.SAMPLER2D_SHADOW,\n Keyword.VEC4,\n Keyword.VEC2,\n Keyword.VEC2,\n Keyword.IVEC2\n);\nBuiltinFunction._createWithScope(\"dFdx\", GenericType.GenType, EShaderStage.FRAGMENT, GenericType.GenType);\nBuiltinFunction._createWithScope(\"dFdy\", GenericType.GenType, EShaderStage.FRAGMENT, GenericType.GenType);\nBuiltinFunction._createWithScope(\"fwidth\", GenericType.GenType, EShaderStage.FRAGMENT, GenericType.GenType);\n","import { GalaceanDataType } from \"../../common\";\nimport { Keyword } from \"../../common/enums/Keyword\";\nimport { EShaderStage } from \"../../common/enums/ShaderStage\";\n\nexport const BuiltinVariableTable: Map<string, BuiltinVariable> = new Map();\n\nexport class BuiltinVariable {\n type: GalaceanDataType;\n lexeme: string;\n scope: EShaderStage;\n\n private constructor(type: GalaceanDataType, lexeme: string, scope: EShaderStage) {\n this.type = type;\n this.lexeme = lexeme;\n this.scope = scope;\n }\n\n static createVariable(lexeme: string, type: GalaceanDataType, scope = EShaderStage.ALL) {\n const item = new BuiltinVariable(type, lexeme, scope);\n BuiltinVariableTable.set(lexeme, item);\n }\n\n static getVar(ident: string): BuiltinVariable | undefined {\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 { Logger } from \"@galacean/engine-core\";\nimport { 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 Logger.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 | null,\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 { Logger } from \"@galacean/engine-core\";\nimport { 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 = undefined;\n symbolTableStack: SymbolTableStack<SymbolInfo, SymbolTable<SymbolInfo>> = new SymbolTableStack();\n curFunctionInfo: {\n header?: ASTNode.FunctionDeclarator;\n returnStatement?: ASTNode.JumpStatement | null;\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 Logger.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 | undefined;\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[] | undefined;\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 | undefined;\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 | undefined) {\n return this.attributeStructs.findIndex((item) => item.ident!.lexeme === type) !== -1;\n }\n\n isVaryingStruct(type: string | undefined) {\n return this.varyingStructs.findIndex((item) => item.ident!.lexeme === type) !== -1;\n }\n\n isMRTStruct(type: string | undefined) {\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 | null;\n\n protected static _tmpArrayPool = new ReturnableObjectPool(TempArray<string>, 10);\n\n defaultCodeGen(children: NodeChild[]) {\n const pool = CodeGenVisitor._tmpArrayPool;\n const 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 (const 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 const 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 const 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 | null {\n return null;\n }\n\n override visitPostfixExpression(node: ASTNode.PostfixExpression): string {\n const { children } = node;\n const postExpr = children[0];\n const { context } = VisitorContext;\n if (postExpr instanceof ASTNode.PostfixExpression && context.isMRTStruct(<string>postExpr.type)) {\n const propReferenced = children[2] as BaseToken;\n const prop = context.mrtList.find((item) => item.ident.lexeme === propReferenced.lexeme);\n if (!prop) {\n this._reportError(propReferenced.location, `not found mrt property: ${propReferenced.lexeme}`);\n return \"\";\n }\n return `gl_FragData[${prop.mrtIndex!}]`;\n }\n return super.visitPostfixExpression(node);\n }\n\n override visitJumpStatement(node: ASTNode.JumpStatement): string {\n if (node.isFragReturnStatement) {\n if (VisitorContext.context.mrtStructs.length) {\n return \"\";\n }\n const expression = node.children[1] as ASTNode.Expression;\n return `gl_FragColor = ${expression.codeGen(this)};`;\n }\n return super.visitJumpStatement(node);\n }\n}\n","import { EShaderStage } from \"../common/enums/ShaderStage\";\nimport { ASTNode } from \"../parser/AST\";\nimport { ShaderData } from \"../parser/ShaderInfo\";\nimport { StructProp } from \"../parser/types\";\nimport { GLESVisitor } from \"./GLESVisitor\";\nimport { ICodeSegment } from \"./types\";\nimport { VisitorContext } from \"./VisitorContext\";\n\nconst V3_GL_FragColor = \"GS_glFragColor\";\n\nexport class GLES300Visitor extends GLESVisitor {\n private static _singleton: GLES300Visitor;\n static getVisitor(): GLES300Visitor {\n if (!this._singleton) {\n this._singleton = new GLES300Visitor();\n }\n return this._singleton;\n }\n\n private _otherCodeArray: ICodeSegment[] = [];\n private _fragColorVariableRegistered = false;\n\n override reset(): void {\n super.reset();\n\n this._otherCodeArray.length = 0;\n this._fragColorVariableRegistered = false;\n }\n\n override getOtherGlobal(data: ShaderData, out: ICodeSegment[]): void {\n super.getOtherGlobal(data, out);\n\n for (let i = 0, n = this._otherCodeArray.length; i < n; i++) {\n out.push(this._otherCodeArray[i]);\n }\n }\n\n override getAttributeProp(prop: StructProp): string {\n return `in ${prop.typeInfo.typeLexeme} ${prop.ident.lexeme};`;\n }\n\n override getVaryingProp(prop: StructProp): string {\n const qualifier = VisitorContext.context.stage === EShaderStage.FRAGMENT ? \"in\" : \"out\";\n return `${qualifier} ${prop.typeInfo.typeLexeme} ${prop.ident.lexeme};`;\n }\n\n override getMRTProp(prop: StructProp): string {\n return `layout(location = ${prop.mrtIndex}) out vec4 ${prop.ident.lexeme};`;\n }\n\n override visitFunctionIdentifier(node: ASTNode.FunctionIdentifier): string {\n const children = node.children;\n const typeSpecifier = children[0] as ASTNode.TypeSpecifier;\n if (typeSpecifier.children.length !== 1) {\n return this.defaultCodeGen(children);\n }\n let ident = node.lexeme;\n switch (node.ident) {\n case \"texture2D\":\n case \"textureCube\":\n ident = \"texture\";\n break;\n case \"texture2DProj\":\n ident = \"textureProj\";\n break;\n case \"texture2DLodEXT\":\n case \"textureCubeLodEXT\":\n ident = \"textureLod\";\n break;\n case \"texture2DGradEXT\":\n case \"textureCubeGradEXT\":\n ident = \"textureGrad\";\n break;\n case \"texture2DProjLodEXT\":\n ident = \"textureProjLod\";\n break;\n case \"texture2DProjGradEXT\":\n ident = \"textureProjGrad\";\n break;\n case \"gl_FragDepthEXT\":\n ident = \"gl_FragDepth\";\n break;\n }\n return ident;\n }\n\n override visitVariableIdentifier(node: ASTNode.VariableIdentifier): string {\n const { context } = VisitorContext;\n if (context.stage === EShaderStage.FRAGMENT && node.getLexeme(this) === \"gl_FragColor\") {\n if (context.mrtStructs.length) {\n this._reportError(node.location, \"gl_FragColor cannot be used with MRT (Multiple Render Targets).\");\n return \"\";\n }\n this._registerFragColorVariable();\n return V3_GL_FragColor;\n }\n return super.visitVariableIdentifier(node);\n }\n\n override visitJumpStatement(node: ASTNode.JumpStatement): string {\n if (node.isFragReturnStatement) {\n if (VisitorContext.context.mrtStructs.length) {\n return \"\";\n }\n this._registerFragColorVariable();\n\n const expression = node.children[1] as ASTNode.Expression;\n return `${V3_GL_FragColor} = ${expression.codeGen(this)};`;\n }\n return super.visitJumpStatement(node);\n }\n\n private _registerFragColorVariable() {\n if (this._fragColorVariableRegistered) return;\n this._otherCodeArray.push({\n text: `out vec4 ${V3_GL_FragColor};`,\n index: 0\n });\n this._fragColorVariableRegistered = true;\n }\n}\n","import type { Condition, ShaderInstruction } from \"@galacean/engine-design\";\n\nexport type { ShaderInstruction } from \"@galacean/engine-design\";\n\n/** Must stay in sync with ShaderPreprocessorDirective in @galacean/engine-core */\nconst ShaderPreprocessorDirective = {\n Text: 0,\n IfDef: 1,\n IfNdef: 2,\n IfCmp: 3,\n IfExpr: 4,\n Else: 5,\n Endif: 6,\n Define: 7,\n DefineVal: 8,\n DefineFunc: 9,\n Undef: 10\n} as const;\n\ninterface ExprCtx {\n s: string;\n i: number;\n}\n\n/**\n * @internal\n */\nexport class ShaderInstructionEncoder {\n private static _DIRECTIVE_RE = /^[ \\t]*#[ \\t]*(if|ifdef|ifndef|elif|else|endif|define|undef)\\b(.*)/;\n private static _FUNC_MACRO_RE = /^(\\w+)\\(([^)]*)\\)\\s*(.*)/;\n\n static parse(glsl: string): ShaderInstruction[] {\n const instructions: ShaderInstruction[] = [];\n const length = glsl.length;\n let pos = 0;\n const backfillStack: number[][] = [];\n\n while (pos < length) {\n const directiveStart = ShaderInstructionEncoder._findDirectiveStart(glsl, pos, length);\n\n if (directiveStart === -1) {\n ShaderInstructionEncoder._pushText(instructions, glsl, pos, length);\n break;\n }\n\n if (directiveStart > pos) {\n ShaderInstructionEncoder._pushText(instructions, glsl, pos, directiveStart);\n }\n\n let lineEnd = glsl.indexOf(\"\\n\", directiveStart);\n if (lineEnd === -1) lineEnd = length;\n const line = glsl.substring(directiveStart, lineEnd);\n pos = lineEnd < length ? lineEnd + 1 : length;\n\n const match = ShaderInstructionEncoder._DIRECTIVE_RE.exec(line);\n if (!match) {\n const last = instructions.length > 0 ? instructions[instructions.length - 1] : null;\n const text = lineEnd < length ? line + \"\\n\" : line;\n if (last && last[0] === ShaderPreprocessorDirective.Text) {\n (last as [number, string])[1] += text;\n } else {\n instructions.push([ShaderPreprocessorDirective.Text, text]);\n }\n continue;\n }\n\n const keyword = match[1];\n const rest = match[2].trim();\n\n switch (keyword) {\n case \"ifdef\": {\n const idx = instructions.length;\n instructions.push([ShaderPreprocessorDirective.IfDef, rest, -1]);\n backfillStack.push([idx]);\n break;\n }\n case \"ifndef\": {\n const idx = instructions.length;\n instructions.push([ShaderPreprocessorDirective.IfNdef, rest, -1]);\n backfillStack.push([idx]);\n break;\n }\n case \"if\": {\n const cond = ShaderInstructionEncoder._parseCondition(rest);\n const idx = instructions.length;\n ShaderInstructionEncoder._pushConditionInstruction(instructions, cond);\n backfillStack.push([idx]);\n break;\n }\n case \"elif\": {\n const stack = backfillStack[backfillStack.length - 1];\n const prevIdx = stack[stack.length - 1];\n const elseIdx = instructions.length;\n instructions.push([ShaderPreprocessorDirective.Else, -1]);\n stack.push(elseIdx);\n ShaderInstructionEncoder._backfillJump(instructions[prevIdx], instructions.length);\n\n const cond = ShaderInstructionEncoder._parseCondition(rest);\n const idx = instructions.length;\n ShaderInstructionEncoder._pushConditionInstruction(instructions, cond);\n stack.push(idx);\n break;\n }\n case \"else\": {\n const stack = backfillStack[backfillStack.length - 1];\n const prevIdx = stack[stack.length - 1];\n const elseIdx = instructions.length;\n instructions.push([ShaderPreprocessorDirective.Else, -1]);\n stack.push(elseIdx);\n ShaderInstructionEncoder._backfillJump(instructions[prevIdx], instructions.length);\n break;\n }\n case \"endif\": {\n const endifIdx = instructions.length;\n instructions.push([ShaderPreprocessorDirective.Endif]);\n const stack = backfillStack.pop();\n if (stack) {\n const afterEndif = endifIdx + 1;\n for (let j = 0; j < stack.length; j++) {\n const inst = instructions[stack[j]];\n if (inst[0] === ShaderPreprocessorDirective.Else) {\n (inst as [number, number])[1] = afterEndif;\n } else {\n ShaderInstructionEncoder._backfillJump(inst, afterEndif, true);\n }\n }\n }\n break;\n }\n case \"define\": {\n const funcMatch = ShaderInstructionEncoder._FUNC_MACRO_RE.exec(rest);\n if (funcMatch) {\n const params = funcMatch[2]\n .split(\",\")\n .map((p) => p.trim())\n .filter((p) => p.length > 0);\n instructions.push([\n ShaderPreprocessorDirective.DefineFunc,\n funcMatch[1],\n params,\n ShaderInstructionEncoder._stripLineComment(funcMatch[3].trim())\n ]);\n } else {\n const spaceIdx = rest.indexOf(\" \");\n if (spaceIdx === -1) {\n instructions.push([ShaderPreprocessorDirective.Define, rest]);\n } else {\n instructions.push([\n ShaderPreprocessorDirective.DefineVal,\n rest.substring(0, spaceIdx),\n ShaderInstructionEncoder._stripLineComment(rest.substring(spaceIdx + 1).trim())\n ]);\n }\n }\n break;\n }\n case \"undef\": {\n instructions.push([ShaderPreprocessorDirective.Undef, rest]);\n break;\n }\n }\n }\n\n return instructions;\n }\n\n private static _pushConditionInstruction(instructions: ShaderInstruction[], cond: Condition): void {\n if (cond.t === \"def\") {\n instructions.push([ShaderPreprocessorDirective.IfDef, cond.m, -1]);\n } else if (cond.t === \"ndef\") {\n instructions.push([ShaderPreprocessorDirective.IfNdef, cond.m, -1]);\n } else if (cond.t === \"cmp\") {\n instructions.push([ShaderPreprocessorDirective.IfCmp, cond.m, cond.op, cond.v, -1]);\n } else {\n instructions.push([ShaderPreprocessorDirective.IfExpr, cond, -1]);\n }\n }\n\n private static _findDirectiveStart(source: string, from: number, length: number): number {\n let i = from;\n while (i < length) {\n let j = i;\n while (j < length) {\n const c = source.charCodeAt(j);\n if (c === 32 /* space */ || c === 9 /* tab */) {\n j++;\n } else {\n break;\n }\n }\n if (j < length && source.charCodeAt(j) === 35 /* '#' */) return i;\n\n const nl = source.indexOf(\"\\n\", i);\n if (nl === -1) break;\n i = nl + 1;\n }\n return -1;\n }\n\n private static _pushText(instructions: ShaderInstruction[], source: string, from: number, to: number): void {\n if (from >= to) return;\n const last = instructions.length > 0 ? instructions[instructions.length - 1] : null;\n if (last && last[0] === ShaderPreprocessorDirective.Text) {\n (last as [number, string])[1] += source.substring(from, to);\n } else {\n instructions.push([ShaderPreprocessorDirective.Text, source.substring(from, to)]);\n }\n }\n\n /**\n * Backfill jump offset of an IF/ELIF instruction.\n * When onlyPlaceholder is true, only backfill if the current value is still -1\n */\n private static _backfillJump(inst: ShaderInstruction, target: number, onlyPlaceholder = false): void {\n const directive = inst[0];\n if (directive === ShaderPreprocessorDirective.IfDef || directive === ShaderPreprocessorDirective.IfNdef) {\n if (!onlyPlaceholder || inst[2] === -1) (inst as [number, string, number])[2] = target;\n } else if (directive === ShaderPreprocessorDirective.IfCmp) {\n if (!onlyPlaceholder || inst[4] === -1) (inst as [number, string, string, number, number])[4] = target;\n } else if (directive === ShaderPreprocessorDirective.IfExpr) {\n if (!onlyPlaceholder || inst[2] === -1) (inst as [number, Condition, number])[2] = target;\n }\n }\n\n private static _stripLineComment(s: string): string {\n const idx = s.indexOf(\"//\");\n return idx >= 0 ? s.substring(0, idx).trimEnd() : s;\n }\n\n private static _parseCondition(expr: string): Condition {\n const ctx: ExprCtx = { s: expr.trim(), i: 0 };\n return ShaderInstructionEncoder._parseOr(ctx);\n }\n\n private static _skipWs(ctx: ExprCtx): void {\n while (\n ctx.i < ctx.s.length &&\n (ctx.s.charCodeAt(ctx.i) === 32 /* space */ || ctx.s.charCodeAt(ctx.i) === 9) /* tab */\n )\n ctx.i++;\n }\n\n private static _parseOr(ctx: ExprCtx): Condition {\n let left = ShaderInstructionEncoder._parseAnd(ctx);\n ShaderInstructionEncoder._skipWs(ctx);\n while (\n ctx.i < ctx.s.length - 1 &&\n ctx.s.charCodeAt(ctx.i) === 124 /* '|' */ &&\n ctx.s.charCodeAt(ctx.i + 1) === 124 /* '|' */\n ) {\n ctx.i += 2;\n ShaderInstructionEncoder._skipWs(ctx);\n left = { t: \"or\", l: left, r: ShaderInstructionEncoder._parseAnd(ctx) };\n ShaderInstructionEncoder._skipWs(ctx);\n }\n return left;\n }\n\n private static _parseAnd(ctx: ExprCtx): Condition {\n let left = ShaderInstructionEncoder._parseUnary(ctx);\n ShaderInstructionEncoder._skipWs(ctx);\n while (\n ctx.i < ctx.s.length - 1 &&\n ctx.s.charCodeAt(ctx.i) === 38 /* '&' */ &&\n ctx.s.charCodeAt(ctx.i + 1) === 38 /* '&' */\n ) {\n ctx.i += 2;\n ShaderInstructionEncoder._skipWs(ctx);\n left = { t: \"and\", l: left, r: ShaderInstructionEncoder._parseUnary(ctx) };\n ShaderInstructionEncoder._skipWs(ctx);\n }\n return left;\n }\n\n private static _parseUnary(ctx: ExprCtx): Condition {\n ShaderInstructionEncoder._skipWs(ctx);\n if (ctx.s.charCodeAt(ctx.i) === 33 /* '!' */) {\n ctx.i++;\n ShaderInstructionEncoder._skipWs(ctx);\n return { t: \"not\", c: ShaderInstructionEncoder._parsePrimary(ctx) };\n }\n return ShaderInstructionEncoder._parsePrimary(ctx);\n }\n\n private static _parsePrimary(ctx: ExprCtx): Condition {\n ShaderInstructionEncoder._skipWs(ctx);\n const { s } = ctx;\n\n // Parenthesized expression\n if (s.charCodeAt(ctx.i) === 40 /* '(' */) {\n ctx.i++;\n ShaderInstructionEncoder._skipWs(ctx);\n const inner = ShaderInstructionEncoder._parseOr(ctx);\n ShaderInstructionEncoder._skipWs(ctx);\n if (s.charCodeAt(ctx.i) === 41 /* ')' */) ctx.i++;\n return inner;\n }\n\n // defined(MACRO) or defined MACRO\n if (s.substring(ctx.i, ctx.i + 7) === \"defined\") {\n ctx.i += 7;\n ShaderInstructionEncoder._skipWs(ctx);\n const hasParen = s.charCodeAt(ctx.i) === 40; /* '(' */\n if (hasParen) ctx.i++;\n ShaderInstructionEncoder._skipWs(ctx);\n const name = ShaderInstructionEncoder._scanIdentifier(ctx);\n ShaderInstructionEncoder._skipWs(ctx);\n if (hasParen && s.charCodeAt(ctx.i) === 41 /* ')' */) ctx.i++;\n return { t: \"def\", m: name };\n }\n\n // Numeric literal\n if (ctx.i < s.length && ShaderInstructionEncoder._isDigit(s.charCodeAt(ctx.i))) {\n const lhsNum = ShaderInstructionEncoder._scanNumber(ctx);\n ShaderInstructionEncoder._skipWs(ctx);\n const op = ShaderInstructionEncoder._scanOp(ctx);\n if (op) {\n ShaderInstructionEncoder._skipWs(ctx);\n return {\n t: \"bool\",\n v: ShaderInstructionEncoder._evalNumOp(lhsNum, op, ShaderInstructionEncoder._scanNumber(ctx))\n };\n }\n return { t: \"bool\", v: lhsNum !== 0 };\n }\n\n // Identifier — comparison or defined check\n const name = ShaderInstructionEncoder._scanIdentifier(ctx);\n if (!name) return { t: \"bool\", v: false };\n ShaderInstructionEncoder._skipWs(ctx);\n const op = ShaderInstructionEncoder._scanOp(ctx);\n if (op) {\n ShaderInstructionEncoder._skipWs(ctx);\n return { t: \"cmp\", m: name, op, v: ShaderInstructionEncoder._scanNumber(ctx) };\n }\n return { t: \"def\", m: name };\n }\n\n private static _isDigit(charCode: number): boolean {\n return charCode >= 48 /* '0' */ && charCode <= 57 /* '9' */;\n }\n\n private static _isAlnum(charCode: number): boolean {\n return (\n (charCode >= 65 /* 'A' */ && charCode <= 90) /* 'Z' */ ||\n (charCode >= 97 /* 'a' */ && charCode <= 122) /* 'z' */ ||\n (charCode >= 48 /* '0' */ && charCode <= 57) /* '9' */ ||\n charCode === 95 /* '_' */\n );\n }\n\n private static _scanIdentifier(ctx: ExprCtx): string {\n const start = ctx.i;\n while (ctx.i < ctx.s.length && ShaderInstructionEncoder._isAlnum(ctx.s.charCodeAt(ctx.i))) ctx.i++;\n return ctx.s.substring(start, ctx.i);\n }\n\n private static _scanNumber(ctx: ExprCtx): number {\n const start = ctx.i;\n if (ctx.s.charCodeAt(ctx.i) === 45 /* '-' */) ctx.i++;\n while (\n ctx.i < ctx.s.length &&\n (ShaderInstructionEncoder._isDigit(ctx.s.charCodeAt(ctx.i)) || ctx.s.charCodeAt(ctx.i) === 46) /* '.' */\n )\n ctx.i++;\n return Number(ctx.s.substring(start, ctx.i)) || 0;\n }\n\n private static _scanOp(ctx: ExprCtx): string {\n const c = ctx.s.charCodeAt(ctx.i);\n const c2 = ctx.i + 1 < ctx.s.length ? ctx.s.charCodeAt(ctx.i + 1) : 0;\n if (c === 61 /* '=' */ && c2 === 61 /* '=' */) {\n ctx.i += 2;\n return \"==\";\n }\n if (c === 33 /* '!' */ && c2 === 61 /* '=' */) {\n ctx.i += 2;\n return \"!=\";\n }\n if (c === 62 /* '>' */ && c2 === 61 /* '=' */) {\n ctx.i += 2;\n return \">=\";\n }\n if (c === 60 /* '<' */ && c2 === 61 /* '=' */) {\n ctx.i += 2;\n return \"<=\";\n }\n if (c === 62 /* '>' */) {\n ctx.i++;\n return \">\";\n }\n if (c === 60 /* '<' */) {\n ctx.i++;\n return \"<\";\n }\n return \"\";\n }\n\n private static _evalNumOp(lhs: number, op: string, rhs: number): boolean {\n switch (op) {\n case \"==\":\n return lhs === rhs;\n case \"!=\":\n return lhs !== rhs;\n case \">\":\n return lhs > rhs;\n case \"<\":\n return lhs < rhs;\n case \">=\":\n return lhs >= rhs;\n case \"<=\":\n return lhs <= rhs;\n default:\n return false;\n }\n }\n}\n","import { NoneTerminal, GrammarSymbol } from \"../parser/GrammarSymbol\";\n\nexport default class Production {\n private static _id = 0;\n static pool: Map<number, Production> = new Map();\n\n readonly goal: NoneTerminal;\n readonly derivation: GrammarSymbol[];\n readonly id: number;\n\n constructor(goal: NoneTerminal, derivation: GrammarSymbol[]) {\n this.goal = goal;\n this.derivation = derivation;\n this.id = Production._id++;\n Production.pool.set(this.id, this);\n }\n}\n","import { ETokenType } from \"../common\";\nimport { NoneTerminal, Terminal } from \"../parser/GrammarSymbol\";\nimport Production from \"./Production\";\nimport GrammarUtils from \"./Utils\";\n\nexport default class StateItem {\n static _id = 0;\n\n readonly production: Production;\n readonly position: number;\n readonly lookaheadSet: Set<Terminal>;\n readonly id: number;\n\n _needReInfer = true;\n get needReInfer() {\n return this._needReInfer;\n }\n set needReInfer(v: boolean) {\n this._needReInfer = v;\n }\n\n get curSymbol() {\n return this.production.derivation[this.position];\n }\n get nextSymbol() {\n return this.production.derivation[this.position + 1];\n }\n\n constructor(production: Production, position: number, lookahead: Iterable<Terminal>) {\n this.production = production;\n this.position = position;\n this.lookaheadSet = new Set();\n for (const la of lookahead) {\n this.lookaheadSet.add(la);\n }\n this.id = StateItem._id++;\n }\n\n addLookahead(ts: Iterable<Terminal>) {\n for (const t of ts) {\n if (this.lookaheadSet.has(t)) continue;\n this.lookaheadSet.add(t);\n this.needReInfer = true;\n }\n }\n\n symbolByOffset(offset: number) {\n return this.production.derivation[this.position + offset];\n }\n\n canReduce() {\n if (this.position > this.production.derivation.length - 1) return true;\n else {\n for (let i = this.position; i < this.production.derivation.length; i++) {\n if (this.production.derivation[i] !== ETokenType.EPSILON) return false;\n }\n return true;\n }\n }\n\n advance() {\n // #if _VERBOSE\n if (this.canReduce()) throw `Error: advance reduce-able parsing state item`;\n // #endif\n return new StateItem(this.production, this.position + 1, this.lookaheadSet);\n }\n\n // #if _VERBOSE\n toString() {\n const coreItem = this.production.derivation.map((item) => GrammarUtils.toString(item));\n coreItem[this.position] = \".\" + (coreItem[this.position] ?? \"\");\n\n return `${NoneTerminal[this.production.goal]} :=> ${coreItem.join(\"|\")} ;${Array.from(this.lookaheadSet)\n .map((item) => GrammarUtils.toString(item))\n .join(\"/\")}`;\n }\n // #endif\n}\n","import { Terminal } from \"../parser/GrammarSymbol\";\nimport Production from \"./Production\";\nimport StateItem from \"./StateItem\";\n\nexport default class State {\n static closureMap: Map<string /** state mapKey */, State> = new Map();\n static pool: Map<number, State> = new Map();\n static _id = 0;\n\n readonly id: number;\n readonly cores: Set<StateItem>;\n private _items: Set<StateItem>;\n get items() {\n return this._items;\n }\n\n closured = false;\n get needReInfer() {\n for (const core of this.cores) {\n if (core.needReInfer) return true;\n }\n return false;\n }\n\n private _stateItemPool: Map<string /** Map ID */, StateItem> = new Map();\n\n static create(cores: StateItem[]) {\n const cacheKey = this.getMapKey(cores);\n const state = this.closureMap.get(cacheKey);\n if (state) {\n for (const core of cores) {\n // merge lookahead\n state.createStateItem(core.production, core.position, core.lookaheadSet);\n }\n return state;\n }\n\n const newState = new State(cores);\n this.closureMap.set(cacheKey, newState);\n return newState;\n }\n\n // TODO: any optimization?\n static getMapKey(cores: StateItem[]) {\n return cores.map((item) => `${item.production.id},${item.position}`).join(\";\");\n }\n\n private constructor(cores: Iterable<StateItem>) {\n this.id = State._id++;\n this._items = new Set([...cores]);\n this.cores = new Set([...cores]);\n for (const it of cores) {\n const itemMapKey = this.getStateItemMapKey(it.production, it.position);\n this._stateItemPool.set(itemMapKey, it);\n }\n State.pool.set(this.id, this);\n }\n\n // TODO: any optimization?\n getStateItemMapKey(production: Production, position: number) {\n return `${production.id},${position}`;\n }\n\n createStateItem(production: Production, position: number, lookaheadSet: Iterable<Terminal> = new Set()) {\n const mapId = this.getStateItemMapKey(production, position);\n const item = this._stateItemPool.get(mapId);\n if (item) {\n for (const la of lookaheadSet) {\n if (item.lookaheadSet.has(la)) continue;\n item.lookaheadSet.add(la);\n item.needReInfer = true;\n }\n return item;\n }\n const newItem = new StateItem(production, position, lookaheadSet);\n this._stateItemPool.set(mapId, newItem);\n return newItem;\n }\n}\n","import { ETokenType, ShaderRange } from \"../common\";\nimport { ASTNode, TreeNode } from \"../parser/AST\";\nimport { TranslationRule } from \"../parser/SemanticAnalyzer\";\nimport { NoneTerminal, GrammarSymbol } from \"../parser/GrammarSymbol\";\nimport Production from \"./Production\";\nimport { ActionInfo, EAction } from \"./types\";\nimport { ShaderCompiler } from \"../ShaderCompiler\";\nimport { ClearableObjectPool, type IPoolElement } from \"@galacean/engine-core\";\nimport { NodeChild } from \"../parser/types\";\nimport { Keyword } from \"../common/enums/Keyword\";\n\nexport default class GrammarUtils {\n static isTerminal(sm: GrammarSymbol) {\n return sm < NoneTerminal.START;\n }\n\n static toString(sm: GrammarSymbol) {\n if (this.isTerminal(sm)) {\n return ETokenType[sm] ?? Keyword[sm];\n }\n return NoneTerminal[sm];\n }\n\n static createProductionWithOptions(\n goal: NoneTerminal,\n options: GrammarSymbol[][],\n /** the ast node */\n astTypePool?: ClearableObjectPool<\n { set: (loc: ShaderRange, children: NodeChild[]) => void } & IPoolElement & TreeNode\n >\n ) {\n // Resolve the AST pool once per grammar production (not per reduce).\n const pool = astTypePool ?? ASTNode.TrivialNode.pool;\n const ret: [GrammarSymbol[], TranslationRule | undefined][] = [];\n for (const opt of options) {\n // Single-`NonTerminal` RHS + no typed class → this production reduces\n // to a semantic-empty `TrivialNode` wrapper. Elide it at reduce time\n // by pushing the child directly onto the semantic stack. Safe because\n // the parser's GOTO runs off `reduceProduction.goal`, not off the node\n // type on the stack. Single-Terminal RHS (e.g. `unary_operator → PLUS`)\n // isn't eligible — a `BaseToken` can't stand in for an AST node.\n const canElide = !astTypePool && opt.length === 1 && !GrammarUtils.isTerminal(opt[0]);\n ret.push([\n [goal, ...opt],\n function (sa, ...children) {\n if (!children[0]) return;\n if (canElide) {\n sa.semanticStack.push(children[0] as TreeNode);\n } else {\n const start = children[0].location.start;\n const end = children[children.length - 1].location.end;\n const location = ShaderCompiler.createRange(start, end);\n ASTNode.get(pool, sa, location, children);\n }\n }\n ]);\n }\n return ret;\n }\n\n static addMapSetItem<K, T>(map: Map<K, Set<T>>, k: K, v: T) {\n const set = map.get(k) ?? new Set();\n set.add(v);\n map.set(k, set);\n }\n\n static isSubSet<T>(sa: Set<T>, sb: Set<T>) {\n for (const item of sa) {\n if (!sb.has(item)) return false;\n }\n return true;\n }\n\n static isActionEqual(a: ActionInfo, b: ActionInfo) {\n return a.action === b.action && a.target === b.target;\n }\n\n // #if _VERBOSE\n static printAction(actionInfo: ActionInfo) {\n const production = Production.pool.get(actionInfo.target!);\n return `<Action: ${EAction[actionInfo.action]} -> ${this.printProduction(production!)}>`;\n }\n\n static printProduction(production: Production) {\n const deriv = production.derivation.map((gs) => GrammarUtils.toString(gs)).join(\"|\");\n return `${NoneTerminal[production.goal]} :=> ${deriv}`;\n }\n // #endif\n}\n","import { NoneTerminal, Terminal } from \"../parser/GrammarSymbol\";\n\nexport type StateActionTable = Map<number /** state ID */, ActionTable>;\nexport type ActionTable = Map<Terminal, ActionInfo>;\nexport type StateGotoTable = Map<number /** state ID */, GotoTable>;\nexport type GotoTable = Map<NoneTerminal, number /** state ID */>;\n\nexport enum EAction {\n Shift = 0,\n Reduce,\n Accept\n}\n\nexport interface ActionInfo {\n action: EAction;\n target?: number;\n}\n","import { Logger } from \"@galacean/engine-core\";\nimport { 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 Logger.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: [] as IShaderPassSource[\"pendingContents\"],\n renderStates: this.createRenderStates()\n };\n }\n\n static createSubShaderSource(name: string): ISubShaderSource {\n return {\n name,\n passes: [],\n pendingContents: [] as IShaderPassSource[\"pendingContents\"],\n tags: {},\n renderStates: this.createRenderStates()\n };\n }\n\n static createShaderPassSource(name: string): IShaderPassSource {\n return {\n name,\n pendingContents: [] as IShaderPassSource[\"pendingContents\"],\n tags: {},\n renderStates: this.createRenderStates()\n } as IShaderPassSource;\n }\n\n static createUsePass(name: string): IShaderPassSource {\n return {\n name,\n pendingContents: [] as IShaderPassSource[\"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 | null,\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 | undefined {\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 | undefined;\n\n const curCharCode = lexer.getCurCharCode();\n if (BaseLexer.isDigit(curCharCode) || curCharCode === 46) {\n // Digit or '.'\n propertyValue = lexer.scanNumber();\n } else {\n const valueToken = lexer.scanToken()!;\n const valueTokenType = valueToken.type;\n\n if (valueTokenType === Keyword.True) {\n propertyValue = true;\n } else if (valueTokenType === Keyword.False) {\n propertyValue = false;\n } else if (valueTokenType === Keyword.GSColor) {\n propertyValue = lexer.scanColor();\n } else if (lexer.getCurChar() === \".\") {\n propertyValue = this._scanEnumConstValue(valueToken.lexeme);\n if (propertyValue == undefined) return;\n // Support bitwise OR only for bitmask enums (e.g. ColorWriteMask)\n lexer.skipCommentsAndSpace();\n if (lexer.getCurChar() === \"|\") {\n if (valueToken.lexeme !== \"ColorWriteMask\") {\n this._createCompileError(\n `Bitwise OR '|' is not supported for '${valueToken.lexeme}', only bitmask enums like 'ColorWriteMask' support this`,\n valueToken.location\n );\n // #if _VERBOSE\n lexer.scanToCharacter(\";\");\n // #endif\n return;\n }\n while (lexer.getCurChar() === \"|\") {\n lexer.advance(1);\n const nextEnumToken = lexer.scanToken();\n if (nextEnumToken == undefined || lexer.getCurChar() !== \".\") {\n this._createCompileError(`Invalid syntax after '|', expect 'EnumType.Value'`, nextEnumToken?.location);\n // #if _VERBOSE\n lexer.scanToCharacter(\";\");\n // #endif\n return;\n }\n if (nextEnumToken.lexeme !== valueToken.lexeme) {\n this._createCompileError(\n `Cannot mix enum types in bitwise OR: expected '${valueToken.lexeme}' but got '${nextEnumToken.lexeme}'`,\n nextEnumToken.location\n );\n // #if _VERBOSE\n lexer.scanToCharacter(\";\");\n // #endif\n return;\n }\n const nextValue = this._scanEnumConstValue(nextEnumToken.lexeme);\n if (nextValue == undefined) return;\n propertyValue = (<number>propertyValue) | (<number>nextValue);\n lexer.skipCommentsAndSpace();\n }\n }\n } else {\n propertyValue = valueToken.lexeme;\n const lookupSymbol = this._lookupSymbol;\n lookupSymbol.set(valueToken.lexeme, ETokenType.ID);\n if (!this._symbolTableStack.lookup(lookupSymbol)) {\n this._createCompileError(`Invalid ${stateLexeme} variable: ${valueToken.lexeme}`, valueToken.location);\n // #if _VERBOSE\n lexer.scanToCharacter(\";\");\n return;\n // #endif\n }\n }\n }\n lexer.scanLexeme(\";\");\n if (typeof propertyValue === \"string\") {\n out.variableMap[renderStateElementKey] = propertyValue;\n } else {\n out.constantMap[renderStateElementKey] = propertyValue;\n }\n }\n\n private static _parseRenderQueueDeclarationOrAssignment(renderStates: IRenderStates): void {\n const lexer = this._lexer;\n const token = lexer.scanToken()!;\n if (token.type === ETokenType.ID) {\n // Declaration\n lexer.scanLexeme(\";\");\n const symbol = new ShaderSourceSymbol(token.lexeme, Keyword.GSRenderQueueType);\n this._symbolTableStack.insert(symbol);\n return;\n }\n\n if (token.lexeme !== \"=\") {\n this._createCompileError(`Invalid syntax, expect character '=', but got ${token.lexeme}`, token.location);\n // #if _VERBOSE\n return;\n // #endif\n }\n const word = lexer.scanToken()!;\n lexer.scanLexeme(\";\");\n const value = this._renderStateConstMap.RenderQueueType[word.lexeme];\n const key = RenderStateElementKey.RenderQueueType;\n if (value == undefined) {\n renderStates.variableMap[key] = word.lexeme;\n const lookupSymbol = this._lookupSymbol;\n lookupSymbol.set(word.lexeme, Keyword.GSRenderQueueType);\n const sm = this._symbolTableStack.lookup(lookupSymbol);\n if (!sm) {\n this._createCompileError(`Invalid RenderQueueType variable: ${word.lexeme}`, word.location);\n // #if _VERBOSE\n return;\n // #endif\n }\n } else {\n renderStates.constantMap[key] = value;\n }\n }\n\n private static _addPendingContents(\n start: ShaderPosition,\n backOffset: number,\n outPendingContents: IStatement[]\n ): void {\n const lexer = this._lexer;\n if (lexer.hasPendingContent) {\n const endIndex = lexer.currentIndex - backOffset;\n outPendingContents.push({\n range: { start, end: { ...lexer.getShaderPosition(0), index: endIndex - 1 } },\n content: lexer.source.substring(start.index, endIndex - 1)\n });\n lexer.hasPendingContent = false;\n }\n }\n\n private static _parseSubShader(): ISubShaderSource {\n const lexer = this._lexer;\n this._pushScope();\n\n let braceLevel = 1;\n const name = lexer.scanPairedChar('\"', '\"', false, false);\n const subShaderSource = ShaderSourceFactory.createSubShaderSource(name);\n lexer.scanLexeme(\"{\");\n\n lexer.skipCommentsAndSpace();\n let start = lexer.getShaderPosition(0);\n\n while (true) {\n const token = lexer.scanToken()!;\n switch (token.type) {\n case Keyword.GSPass:\n this._addPendingContents(start, token.lexeme.length, subShaderSource.pendingContents);\n const pass = this._parsePass();\n subShaderSource.passes.push(pass);\n start = lexer.getShaderPosition(0);\n break;\n case Keyword.GSUsePass:\n this._addPendingContents(start, token.lexeme.length, subShaderSource.pendingContents);\n const name = lexer.scanPairedChar('\"', '\"', false, false);\n subShaderSource.passes.push(ShaderSourceFactory.createUsePass(name));\n start = lexer.getShaderPosition(0);\n break;\n case Keyword.LeftBrace:\n ++braceLevel;\n break;\n case Keyword.RightBrace:\n if (--braceLevel === 0) {\n this._addPendingContents(start, token.lexeme.length, subShaderSource.pendingContents);\n this._popScope();\n return subShaderSource;\n }\n break;\n default:\n start = this._parseRenderStateAndTags(\n token,\n start,\n subShaderSource.pendingContents,\n subShaderSource.renderStates,\n subShaderSource.tags!\n );\n }\n }\n }\n\n private static _parseTags(tags: Record<string, number | string | boolean>): void {\n const lexer = this._lexer;\n lexer.scanLexeme(\"{\");\n while (true) {\n const ident = lexer.scanToken()!;\n lexer.scanLexeme(\"=\");\n const value = lexer.scanPairedChar('\"', '\"', false, false);\n lexer.skipCommentsAndSpace();\n\n tags[ident.lexeme] = value;\n\n if (lexer.peek(1) === \"}\") {\n lexer.advance(1);\n return;\n }\n lexer.scanLexeme(\",\");\n }\n }\n\n private static _parsePass(): IShaderPassSource {\n this._pushScope();\n const lexer = this._lexer;\n\n const name = lexer.scanPairedChar('\"', '\"', false, false);\n const passSource = ShaderSourceFactory.createShaderPassSource(name);\n lexer.scanLexeme(\"{\");\n let braceLevel = 1;\n\n lexer.skipCommentsAndSpace();\n let start = lexer.getShaderPosition(0);\n\n while (true) {\n const token = lexer.scanToken()!;\n switch (token.type) {\n case Keyword.GSVertexShader:\n case Keyword.GSFragmentShader:\n this._addPendingContents(start, token.lexeme.length, passSource.pendingContents);\n lexer.scanLexeme(\"=\");\n const entry = lexer.scanToken()!;\n if (passSource[token.lexeme]) {\n const error = ShaderCompilerUtils.createGSError(\n \"Reassign main entry\",\n GSErrorName.CompilationError,\n lexer.source,\n lexer.getShaderPosition(0)\n );\n // #if _VERBOSE\n console.error(error.toString());\n throw error;\n // #endif\n }\n const key = token.type === Keyword.GSVertexShader ? \"vertexEntry\" : \"fragmentEntry\";\n passSource[key] = entry.lexeme;\n lexer.scanLexeme(\";\");\n start = lexer.getShaderPosition(0);\n break;\n case Keyword.LeftBrace:\n ++braceLevel;\n break;\n case Keyword.RightBrace:\n if (--braceLevel === 0) {\n this._addPendingContents(start, token.lexeme.length, passSource.pendingContents);\n this._popScope();\n return passSource;\n }\n break;\n default:\n start = this._parseRenderStateAndTags(\n token,\n start,\n passSource.pendingContents,\n passSource.renderStates,\n passSource.tags!\n );\n }\n }\n }\n\n private static _parseRenderStateAndTags(\n token: BaseToken<number>,\n start: ShaderPosition,\n outGlobalContents: IStatement[],\n outRenderStates: IRenderStates,\n outTags: Record<string, number | string | boolean>\n ): ShaderPosition {\n switch (token.type) {\n case Keyword.GSTags:\n this._addPendingContents(start, token.lexeme.length, outGlobalContents);\n this._parseTags(outTags);\n start = this._lexer.getShaderPosition(0);\n break;\n default:\n start = this._parseRenderState(token, start, outGlobalContents, outRenderStates);\n }\n return start;\n }\n\n private static _parseRenderState(\n token: BaseToken<number>,\n start: ShaderPosition,\n outGlobalContents: IStatement[],\n outRenderStates: IRenderStates\n ): ShaderPosition {\n switch (token.type) {\n case Keyword.GSBlendState:\n case Keyword.GSDepthState:\n case Keyword.GSRasterState:\n case Keyword.GSStencilState:\n this._addPendingContents(start, token.lexeme.length, outGlobalContents);\n this._parseRenderStateDeclarationOrAssignment(outRenderStates, token);\n start = this._lexer.getShaderPosition(0);\n break;\n case Keyword.GSBlendFactor:\n case Keyword.GSBlendOperation:\n case Keyword.GSBool:\n case Keyword.GSNumber:\n case Keyword.GSColor:\n case Keyword.GSCompareFunction:\n case Keyword.GSStencilOperation:\n case Keyword.GSCullMode:\n case Keyword.GSColorWriteMask:\n this._addPendingContents(start, token.lexeme.length, outGlobalContents);\n this._parseVariableDeclaration();\n start = this._lexer.getShaderPosition(0);\n break;\n case Keyword.GSRenderQueueType:\n this._addPendingContents(start, token.lexeme.length, outGlobalContents);\n this._parseRenderQueueDeclarationOrAssignment(outRenderStates);\n start = this._lexer.getShaderPosition(0);\n break;\n default:\n // Unrecognized tokens are defined as pending content\n this._lexer.hasPendingContent = true;\n }\n return start;\n }\n}\n","import { Color } from \"@galacean/engine-math\";\nimport { ShaderLanguage } from \"@galacean/engine-core\";\nimport type { IPrecompiledShader, IRenderStates, IShaderSource } from \"@galacean/engine-design\";\nimport type { IShaderProgramSource } from \"@galacean/engine-design/types/shader-compiler/IShaderProgramSource\";\nimport { GLES100Visitor, GLES300Visitor } from \"./codeGen\";\nimport { ShaderPosition, ShaderRange } from \"./common\";\nimport { Lexer } from \"./lexer\";\nimport { ShaderInstructionEncoder } from \"./ShaderInstructionEncoder\";\nimport { ShaderTargetParser } from \"./parser\";\nimport { Preprocessor, IncludeMap, ChunkOutputCache } from \"./Preprocessor\";\nimport { ShaderCompilerUtils } from \"./ShaderCompilerUtils\";\nimport { ShaderSourceParser } from \"./sourceParser/ShaderSourceParser\";\n\nexport class ShaderCompiler {\n private static _parser = ShaderTargetParser.create();\n private static _shaderPositionPool = ShaderCompilerUtils.createObjectPool(ShaderPosition);\n private static _shaderRangePool = ShaderCompilerUtils.createObjectPool(ShaderRange);\n\n // #if _VERBOSE\n static _processingPassText?: string;\n // #endif\n\n private _includeMap: IncludeMap = {};\n private readonly _chunkOutputCache: ChunkOutputCache = new Map();\n\n /** Replace the `#include` lookup table and clear the derived chunk cache. */\n _setIncludeMap(includeMap: IncludeMap): void {\n this._includeMap = includeMap;\n this._chunkOutputCache.clear();\n }\n\n static createPosition(index: number, line?: number, column?: number): ShaderPosition {\n const position = this._shaderPositionPool.get();\n position.set(\n index,\n // #if _VERBOSE\n line!,\n column!\n // #endif\n );\n return position;\n }\n\n static createRange(start: ShaderPosition, end: ShaderPosition): ShaderRange {\n const range = this._shaderRangePool.get();\n range.set(start, end);\n return range;\n }\n\n _parseShaderSource(sourceCode: string): IShaderSource {\n ShaderCompilerUtils.clearAllShaderCompilerObjectPool();\n const shaderSource = ShaderSourceParser.parse(sourceCode);\n\n // #if _VERBOSE\n this._logErrors(ShaderSourceParser.errors);\n // #endif\n\n return shaderSource;\n }\n\n _parseShaderPass(\n source: string,\n vertexEntry: string,\n fragmentEntry: string,\n backend: ShaderLanguage,\n basePathForIncludeKey: string\n ): IShaderProgramSource | undefined {\n const macroDefineList = {};\n const noIncludeContent = Preprocessor.parse(\n source,\n basePathForIncludeKey,\n this._includeMap,\n this._chunkOutputCache\n );\n\n const lexer = new Lexer(noIncludeContent, macroDefineList);\n\n const tokens = lexer.tokenize();\n const { _parser: parser } = ShaderCompiler;\n\n ShaderCompiler._processingPassText = noIncludeContent;\n\n const program = parser.parse(tokens, macroDefineList);\n\n // #if _VERBOSE\n this._logErrors(parser.errors);\n // #endif\n\n if (!program) {\n return undefined;\n }\n\n const codeGen = backend === ShaderLanguage.GLSLES100 ? GLES100Visitor.getVisitor() : GLES300Visitor.getVisitor();\n\n const ret = codeGen.visitShaderProgram(program, vertexEntry, fragmentEntry);\n ShaderCompiler._processingPassText = undefined;\n\n // #if _VERBOSE\n this._logErrors(codeGen.errors);\n // #endif\n\n if (ret) {\n ret.vertexShaderInstructions = ShaderInstructionEncoder.parse(ret.vertex);\n ret.fragmentShaderInstructions = ShaderInstructionEncoder.parse(ret.fragment);\n }\n\n return ret;\n }\n\n _precompile(sourceCode: string, platformTarget: ShaderLanguage, basePathForIncludeKey: string): IPrecompiledShader {\n const shaderSource = this._parseShaderSource(sourceCode);\n\n const subShaders = shaderSource.subShaders.map((sub) => ({\n name: sub.name,\n tags: sub.tags,\n passes: sub.passes.map((pass) => {\n if (pass.isUsePass) {\n return {\n name: pass.name,\n isUsePass: true as const,\n tags: pass.tags,\n renderStates: this._serializeRenderStates(pass.renderStates)\n };\n }\n\n const programSource = this._parseShaderPass(\n pass.contents,\n pass.vertexEntry,\n pass.fragmentEntry,\n platformTarget,\n basePathForIncludeKey\n );\n\n if (!programSource) {\n throw new Error(\n `Shader pass \"${shaderSource.name}.${sub.name}.${pass.name}\" precompile failed, please check the shader source code.`\n );\n }\n\n return {\n name: pass.name,\n isUsePass: false as const,\n tags: pass.tags,\n renderStates: this._serializeRenderStates(pass.renderStates),\n vertexShaderInstructions: programSource.vertexShaderInstructions,\n fragmentShaderInstructions: programSource.fragmentShaderInstructions\n };\n })\n }));\n\n return {\n name: shaderSource.name,\n platformTarget,\n subShaders\n };\n }\n\n private _serializeRenderStates(renderStates: IRenderStates): {\n constantMap: Record<string, number | string | boolean | number[]>;\n variableMap: Record<string, string>;\n } {\n const constantMap: Record<string, number | string | boolean | number[]> = {};\n for (const key in renderStates.constantMap) {\n const value = renderStates.constantMap[key];\n if (value instanceof Color) {\n constantMap[key] = [value.r, value.g, value.b, value.a];\n } else {\n constantMap[key] = value as number | string | boolean;\n }\n }\n return {\n constantMap,\n variableMap: renderStates.variableMap\n };\n }\n\n // #if _VERBOSE\n /**\n * @internal\n */\n _logErrors(errors: Error[]) {\n if (errors.length === 0) return;\n console.error(`${errors.length} errors occur!`);\n for (const err of errors) {\n console.error(err.toString());\n }\n }\n // #endif\n}\n","export { ShaderCompiler } from \"./ShaderCompiler\";\n\nexport * from \"./GSError\";\n\n//@ts-ignore\nexport const version = `__buildVersion`;\n\nlet mode = \"Release\";\n// #if _VERBOSE\nmode = \"Verbose\";\n// #endif\n\nconsole.log(`Galacean Engine Shader Compiler Version: ${version} | Mode: ${mode}`);\n"],"names":["ShaderRange","set","start","end","dispose","ShaderPosition","index","ETokenType","TypeAny","Keyword","ShaderCompilerUtils","createObjectPool","type","pool","ClearableObjectPool","_shaderCompilerObjectPoolSet","push","clearAllShaderCompilerObjectPool","i","n","length","clear","createGSError","message","errorName","source","location","file","console","error","err","Error","name","EMPTY_BRANCH","BaseToken","branch","lexeme","arg","ShaderCompiler","createPosition","createRange","EOF","NoneTerminal","ParserUtils","unwrapNodeByType","node","child","children","Token","nt","parseMacroParamList","inner","replace","split","map","s","trim","filter","Boolean","unwrapBareIdentifier","options","cur","ASTNode","VariableIdentifier","allowParens","PrimaryExpression","TreeNode","undefined","ExpressionAstNode","extractDirectIdentLexeme","expr","ident","isTerminal","sm","START","GSError","toString","diagnosticMessage","wrappingLineCount","GSErrorName","BaseLexer","_currentIndex","_source","setSource","getShaderPosition","backOffset","isEnd","getCurChar","getCurCharCode","charCodeAt","advance","count","skipSpace","includeLineBreak","isWhiteSpaceChar","skipCommentsAndSpace","afterBlock","_skipBlockComment","afterLine","_skipLineComment","peek","to","offset","substring","scanLexeme","throwError","scanTwoExpectedLexemes","lexeme1","lexeme2","pos","msgs","join","ScannerError","scanPairedChar","left","right","balanced","skipLeading","sourceLength","currentIndex","level","currentChar","isDigit","charCode","isHexDigit","isAlpha","isAlnum","isPreprocessorStartChar","src","len","j","c","includeBreak","Lexer","macroDefineList","_needScanMacroConditionExpression","_inMacroDefineValue","_macroDefineExpectsNameToken","_macroDefineExpectsParamsToken","_currentMacroName","_currentMacroParamsLexeme","_currentMacroValueStart","_branchStack","_pendingBranchPushDefined","tokenize","tok","top","scanToken","ID","MACRO_CALL","defined","slice","MACRO_IFDEF","MACRO_IFNDEF","MACRO_IF","_ifCounter","MACRO_ELIF","MACRO_ELSE","MACRO_ENDIF","pop","_skipInlineSpaceAndComments","_isAtLineBreak","_emitMacroDefineEnd","_scanMacroDefineParams","_scanMacroConditionExpression","curCharCode","_scanDirectives","_scanWord","_scanNum","token","get","curChar","LEFT_ASSIGN","LEFT_OP","LE_OP","LEFT_ANGLE","RIGHT_ASSIGN","RIGHT_OP","GE_OP","RIGHT_ANGLE","INC_OP","ADD_ASSIGN","PLUS","DEC_OP","SUB_ASSIGN","DASH","EQ_OP","EQUAL","NE_OP","BANG","AND_OP","AND_ASSIGN","AMPERSAND","OR_OP","OR_ASSIGN","VERTICAL_BAR","XOR_OP","XOR_ASSIGN","CARET","MUL_ASSIGN","STAR","DIV_ASSIGN","SLASH","MOD_ASSIGN","PERCENT","LEFT_PAREN","RIGHT_PAREN","LEFT_BRACE","RIGHT_BRACE","LEFT_BRACKET","RIGHT_BRACKET","_scanNumAfterDot","DOT","COMMA","COLON","SEMICOLON","TILDE","QUESTION","_scanStringConst","buffer","range","STRING_CONST","_scanFloatSuffix","FLOAT_CONSTANT","_scanUtilBreakLine","outBuffer","afterContinuation","_skipLineContinuation","word","_peekMacroDefine","isExpression","MACRO_DEFINE","_registerMacroDefine","paramsLexeme","valueStart","valueEnd","MACRO_DEFINE_EXPRESSION","kt","_lexemeTable","_skipNonSemantic","nameStart","paramsStart","depth","cursor","parenDepth","bracketDepth","firstStart","firstEnd","firstFollowedByParen","topLevelLast","skipped","after","result","_isNonExpressionLeadingKeyword","head","tail","headIllegal","tailIllegal","valueText","next","ch","MACRO_DEFINE_PARAMS","MACRO_DEFINE_END","params","p","dedupKey","_normalizeValueText","info","isFunction","arr","e","sameBranch","Array","MACRO_CONDITIONAL_EXPRESSION","_isVisibleMacro","defs","callSiteBranch","isVisibleFrom","nextCode","_scanIntegerSuffix","INT_CONSTANT","a","b","defBranch","d","m","kw","True","False","startsWith","from","out","pendingSpace","const","CONST","bool","BOOL","float","FLOAT","double","DOUBLE","int","INT","uint","UINT","break","BREAK","continue","CONTINUE","do","DO","else","ELSE","for","FOR","if","IF","while","WHILE","discard","DISCARD","return","RETURN","bvec2","BVEC2","bvec3","BVEC3","bvec4","BVEC4","ivec2","IVEC2","ivec3","IVEC3","ivec4","IVEC4","uvec2","UVEC2","uvec3","UVEC3","uvec4","UVEC4","vec2","VEC2","vec3","VEC3","vec4","VEC4","mat2","MAT2","mat3","MAT3","mat4","MAT4","in","IN","OUT","inout","INOUT","sampler2D","SAMPLER2D","samplerCube","SAMPLER_CUBE","sampler3D","SAMPLER3D","sampler2DShadow","SAMPLER2D_SHADOW","samplerCubeShadow","SAMPLER_CUBE_SHADOW","sampler2DArray","SAMPLER2D_ARRAY","sampler2DArrayShadow","SAMPLER2D_ARRAY_SHADOW","isampler2D","I_SAMPLER2D","isampler3D","I_SAMPLER3D","isamplerCube","I_SAMPLER_CUBE","isampler2DArray","I_SAMPLER2D_ARRAY","usampler2D","U_SAMPLER2D","usampler3D","U_SAMPLER3D","usamplerCube","U_SAMPLER_CUBE","usampler2DArray","U_SAMPLER2D_ARRAY","struct","STRUCT","void","VOID","true","false","precision","PRECISION","precise","PRECISE","highp","HIGHP","mediump","MEDIUMP","lowp","LOWP","invariant","INVARIANT","flat","FLAT","smooth","SMOOTH","noperspective","NOPERSPECTIVE","centroid","CENTROID","layout","LAYOUT","LOCATION","MACRO_UNDEF","EShaderStage","FamilyMembers","dimension","members","BuiltinFunctionTable","Map","BuiltinFunction","returnType","scope","args","_returnType","_create","fn","ALL","list","_createWithScope","resolveOverload","funcName","callArgTypes","overloads","candidate","declaredArgs","sizeLock","scalarTypeLock","matched","declaredType","actualType","paramFamily","memberIdx","indexOf","returnFamily","_realReturnType","returnIdx","isExist","has","realReturnType","MAT2X3","MAT3X2","MAT2X4","MAT4X2","MAT3X4","MAT4X3","FRAGMENT","BuiltinVariableTable","BuiltinVariable","createVariable","item","getVar","VERTEX","VEC4_ARRAY","SymbolTable","_table","insert","symbol","isInMacroBranch","entry","equal","Logger","warn","getSymbol","includeMacro","getSymbols","_getSymbols","forEach","callback","values","entries","SymbolTableStack","stack","_macroLevel","pushScope","popScope","lookup","symbolTable","lookupAll","SymbolDataType","arraySpecifier","typeLexeme","ESymbolType","SymbolInfo","dataType","paramSignature","astNode","symbolType","protoType","paramSig","comparedParams","t1","t2","FnSymbol","typeSpecifier","FN","StructSymbol","VarSymbol","isGlobalVariable","initAst","VAR","ShaderData","globalPrecisions","globalMacroDeclarations","getOuterGlobalMacroDeclarations","parent","GLShaderProgram","SemanticAnalyzer","semanticStack","acceptRule","symbolTableStack","curFunctionInfo","_shaderData","_translationRuleTable","reset","_macroDefineList","addTranslationRule","pid","rule","getTranslationRule","reportError","loc","reportWarning","CompilationWarn","_processingPassText","shaderData","_lookupSymbol","SymbolType","StructProp","mrtIndex","typeInfo","ASTNodeDecorator","nonTerminal","prototype","_location","_children","_parent","init","setCache","code","_codeCache","getCache","codeGen","visitor","defaultCodeGen","semanticAnalyze","sa","_unwrapToken","TrivialNode","_ignore","ScopeBrace","scope_brace","ScopeEndBrace","scope_end_brace","JumpStatement","isFragReturnStatement","returnStatement","visitJumpStatement","jump_statement","_type","t","SingleDeclaration","childrenLen","fullyType","id","initializer","visitSingleDeclaration","single_declaration","FullySpecifiedType","_","fully_specified_type","TypeQualifier","type_qualifier","SingleTypeQualifier","qualifier","single_type_qualifier","TypeSpecifier","arraySize","firstChild","size","isCustom","type_specifier","ArraySpecifier","integerConstantExpr","value","array_specifier","IntegerConstantExpressionOperator","operator","compute","integer_constant_expression_operator","IntegerConstantExpression","Number","integer_constant_expression","TypeSpecifierNonArray","tt","MacroCallSymbol","macroName","type_specifier_nonarray","ExtBuiltinTypeSpecifierNonArray","ext_builtin_type_specifier_nonarray","InitDeclaratorList","childrenLength","initDeclList","init_declarator_list","IdentifierList","idList","curIdList","listIdLength","identifier_list","Declaration","visitDeclaration","declaration","FunctionProtoType","declarator","parameterList","parameterInfoList","function_prototype","FunctionDeclarator","header","function_declarator","FunctionHeader","visitFunctionHeader","function_header","FunctionParameterList","ParameterDeclaration","decl","MacroParamBlock","visitFunctionParameterList","function_parameter_list","MacroParamCaseList","macro_param_case_list","macro_param_block","MacroParameterBranch","macro_parameter_branch","parameterDeclarator","ParameterDeclarator","varSymbol","parameter_declaration","parameter_declarator","CompoundStatementNoScope","compound_statement_no_scope","StatementList","visitStatementList","statement_list","FunctionDefinition","statements","visitFunctionDefinition","function_definition","FunctionCall","visitFunctionCall","function_call","FunctionCallGeneric","fnSymbol","functionIdentifier","isBuiltin","fnIdent","paramList","FunctionCallParameterList","lookupSymbol","function_call_generic","paramNodes","AssignmentExpression","MacroCallArgBlock","function_call_parameter_list","MacroCallArgCaseList","macro_call_arg_case_list","macro_call_arg_block","MacroCallArgBranch","macro_call_arg_branch","PrecisionSpecifier","precision_specifier","FunctionIdentifier","visitFunctionIdentifier","function_identifier","assignment_expression","Expression","expression","primary_expression","PostfixExpression","visitPostfixExpression","postfix_expression","StructSpecifier","propList","macroExpressions","visitStructSpecifier","struct_specifier","StructDeclarationList","props","struct_declaration_list","StructDeclaration","_typeSpecifier","_declaratorList","macroStructDeclaration","macroProps","LayoutQualifier","prop","declaratorList","declaratorListLength","struct_declaration","MacroStructDeclaration","macro_struct_declaration","MacroStructBranch","lastNode","MacroPopContext","macro_struct_branch","layout_qualifier","StructDeclaratorList","listLength","struct_declarator_list","StructDeclarator","struct_declarator","VariableDeclaration","isStatic","visitGlobalVariableDeclaration","variable_declaration","VariableDeclarationList","variableDeclarations","newVariable","variable_declaration_list","referenceGlobalSymbolNames","_symbols","symbols","needFindNames","referenceSymbolNames","builtinVar","hit","_lookupAndMarkGlobalReference","hasAstValue","_probeCrossArmShadowing","visitVariableIdentifier","getLexeme","missWarnLoc","Any","currentScopeSymbol","isGlobal","some","variable_identifier","gs_shader_program","GlobalDeclaration","MacroUndef","GlobalMacroIfStatement","MacroDefine","global_declaration","macro_undef","MacroPushContext","macro_push_context","macro_pop_context","MacroElifExpression","macro_elif_expression","MacroElseExpression","macro_else_expression","GlobalMacroDeclaration","global_macro_declaration","global_macro_if_statement","GlobalMacroBranch","global_macro_branch","MacroIfStatement","macro_if_statement","MacroBranch","macro_branch","isFunctionLikeMacro","aliasesNonBuiltinIdent","nameToken","defList","refs","visibleCount","allAst","isFn","allAliasNonBuiltinIdent","valueAst","_collectIdentifierRefs","leadingIdent","leadingChild","leadingId","macro_call_symbol","MacroCallFunction","visitMacroCallFunction","macro_call_function","valueExpression","valueIdx","definingBranch","sameArity","every","upgradable","find","visitMacroDefine","macro_define","VisitorContext","attributeStructs","attributeList","varyingStructs","varyingList","mrtStructs","mrtList","_referencedGlobalMacroASTs","resetAll","_referencedAttributeList","Object","create","_referencedVaryingList","_referencedMRTList","_referencedGlobals","_structVarMap","isAttributeStruct","findIndex","isVaryingStruct","isMRTStruct","getStructRole","registerStructVar","varName","role","referenceAttribute","_referenceProp","referenceVarying","referenceMRTProp","referenceGlobal","_passSymbolTable","refList","CompilationError","_singleton","context","TempArray","array","CodeGenVisitor","_tmpArrayPool","ret","derivationLength","postExpr","directRoot","identNode","indexNode","identLexeme","indexLexeme","_reportError","call","astNodes","paramInfoList","paramsCode","variableParam","argNode","paramsToken","valueCode","fullType","cmd","returnVar","returnFnCall","text","getVaryingProp","getAttributeProp","getMRTProp","sort","fnNode","fnName","stageEntry","ReturnableObjectPool","GLESVisitor","_globalCodeArray","globalCodeArray","_serializedGlobalKey","getOtherGlobal","data","visitShaderProgram","vertexEntry","fragmentEntry","outerGlobalMacroDeclarations","_collectAllStructVars","vertex","_vertexMain","fragment","_fragmentMain","structRoles","addEntryRoles","paramRole","returnRole","fns","proto","param0","entryFns","concat","registerByType","walkLocals","_extractLocalVarNames","param","sym","stage","fnSymbols","varyingSymbols","varyingSymbol","attributeParam","attributeType","attributeSymbols","attributeSymbol","_preRegisterGlobalMacroRefs","_getGlobalSymbol","_getCustomStruct","_getGlobalMacroDeclarations","globalCode","outerGlobalMacroStatements","returnDataType","returnLocation","mrtSymbols","mrtSymbol","singleDecl","identChildren","macros","macro","_walkMacroDefineTokens","lastLength","keys","add","codeGenResult","structNodes","referencedGlobals","referencedGlobalMacroASTs","_visitGlobalMacroIfStatement","variableDeclaration","Set","GLES100Visitor","propReferenced","getVisitor","V3_GL_FragColor","GLES300Visitor","_otherCodeArray","_fragColorVariableRegistered","_registerFragColorVariable","ShaderPreprocessorDirective","Text","IfDef","IfNdef","IfCmp","IfExpr","Else","Endif","Define","DefineVal","DefineFunc","Undef","ShaderInstructionEncoder","parse","glsl","instructions","backfillStack","directiveStart","_findDirectiveStart","_pushText","lineEnd","line","match","_DIRECTIVE_RE","exec","last","keyword","rest","idx","cond","_parseCondition","_pushConditionInstruction","prevIdx","elseIdx","_backfillJump","endifIdx","afterEndif","inst","funcMatch","_FUNC_MACRO_RE","_stripLineComment","spaceIdx","op","v","nl","target","onlyPlaceholder","directive","trimEnd","ctx","_parseOr","_skipWs","_parseAnd","l","r","_parseUnary","_parsePrimary","hasParen","_scanIdentifier","_isDigit","lhsNum","_scanNumber","_scanOp","_evalNumOp","_isAlnum","c2","lhs","rhs","Production","goal","derivation","_id","StateItem","production","position","lookahead","_needReInfer","lookaheadSet","la","addLookahead","ts","needReInfer","symbolByOffset","canReduce","EPSILON","curSymbol","nextSymbol","State","cores","closured","_stateItemPool","_items","it","itemMapKey","getStateItemMapKey","createStateItem","mapId","newItem","cacheKey","getMapKey","state","closureMap","core","newState","items","GrammarUtils","createProductionWithOptions","astTypePool","opt","canElide","addMapSetItem","k","isSubSet","sb","isActionEqual","action","EAction","LALR1","grammar","firstSetMap","followSetMap","actionTable","gotoTable","_firstSetNTStack","generate","computeFirstSet","buildStateTable","startStateItemCore","productions","startState","_extendState","_closure","newStates","_inferNextState","ns","_extendStateItem","productionList","getProductionList","newLookaheadSet","lastFirstSet","terminalExist","Utils","coreMap","stateActionTable","stateGotoTable","stateItem","Reduce","Accept","_addAction","nextItem","gs","Shift","table","terminal","exist","_isKnownShiftPreferred","_computeFirstSetForNT","NT","computingFS","curNT","firstSet","isNullableNT","succeedFirstSet","reduce","prod","Grammar","startSymbol","unshift","getProductionByID","_ps","gsl","productionAndRules","variable_declaration_statement","storage_qualifier","precision_qualifier","interpolation_qualifier","invariant_qualifier","conditional_expression","logical_or_expression","logical_xor_expression","logical_and_expression","inclusive_or_expression","exclusive_or_expression","and_expression","equality_expression","relational_expression","shift_expression","additive_expression","multiplicative_expression","unary_expression","unary_operator","assignment_operator","statement","compound_statement","simple_statement","expression_statement","selection_statement","iteration_statement","initializer_list","condition","for_init_statement","for_rest_statement","conditionopt","createGrammar","ShaderTargetParser","_traceBackStack","sematicAnalyzer","SematicAnalyzer","tokens","traceBackStack","nextToken","actionInfo","reduceProduction","translationRule","nextState","generator","curState","SHADER_ROOT_PATH","Preprocessor","basePathForIncludeKey","includeMap","chunkOutputCache","_includeReg","includeName","_replace","path","URL","href","chunk","cached","ShaderSourceFactory","createRenderStates","constantMap","variableMap","createShaderSource","subShaders","pendingContents","renderStates","createSubShaderSource","passes","tags","createShaderPassSource","createUsePass","isUsePass","ShaderSourceSymbol","other","SourceLexer","hasPendingContent","scanNumber","_scanDigits","scanColor","g","Color","wordToken","symbolKeyword","_symbolLexemeTable","createCompileError","_validateWordBoundaries","tokenType","_keywordLexemeTable","startIndex","endIndex","prevCharCode","_isValidWordBoundary","nextCharCode","_isWordSeparatorChar","RenderQueueType","GSRenderQueueType","BlendState","GSBlendState","DepthState","GSDepthState","StencilState","GSStencilState","RasterState","GSRasterState","EditorProperties","GSEditorProperties","EditorMacros","GSEditorMacros","Editor","GSEditor","Tags","GSTags","VertexShader","GSVertexShader","FragmentShader","GSFragmentShader","SubShader","GSSubShader","Pass","GSPass","BlendFactor","GSBlendFactor","BlendOperation","GSBlendOperation","Bool","GSBool","GSNumber","GSColor","CompareFunction","GSCompareFunction","StencilOperation","GSStencilOperation","CullMode","GSCullMode","ColorWriteMask","GSColorWriteMask","UsePass","GSUsePass","LeftBrace","RightBrace","Equal","BitwiseOr","ShaderSourceParser","sourceCode","errors","_symbolTableStack","_pushScope","lexer","_lexer","shaderSource","_parseShader","shaderPendingContents","shaderRenderStates","subShader","curSubShaderGlobalStatements","globalSubShaderStates","_mergeRenderStates","pass","globalPassRenderStates","passGlobalStatements","contents","content","braceLevel","_addPendingContents","_parseSubShader","_popScope","_parseRenderState","_parseRenderStateDeclarationOrAssignment","outRenderStates","stateToken","renderState","_parseRenderStateProperties","_createCompileError","outTarget","targetVariableMap","sourceVariableMap","key","sourceConstantMap","targetConstantMap","_parseVariableDeclaration","_parseRenderStateProperty","_scanEnumConstValue","enumName","constValueToken","_renderStateConstMap","stateLexeme","propertyToken","propertyLexeme","stateElementKey","keyIndex","scannedLexeme","renderStateElementKey","RenderStateElementKey","propertyValue","valueToken","valueTokenType","nextEnumToken","nextValue","_parseRenderQueueDeclarationOrAssignment","outPendingContents","subShaderSource","_parsePass","_parseRenderStateAndTags","_parseTags","passSource","outGlobalContents","outTags","_includeMap","_chunkOutputCache","_setIncludeMap","_parseShaderSource","_parseShaderPass","backend","noIncludeContent","parser","_parser","program","ShaderLanguage","GLSLES100","vertexShaderInstructions","fragmentShaderInstructions","_precompile","platformTarget","sub","_serializeRenderStates","programSource","column","_shaderPositionPool","_shaderRangePool","version","mode","log"],"mappings":"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"}
1
+ {"version":3,"file":"module.js","sources":["../../../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/_instanceof.js","../../../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","../../../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/_create_class.js","../src/codeGen/VisitorContext.ts","../src/TempArray.ts","../src/codeGen/CodeGenVisitor.ts","../src/ShaderInstructionEncoder.ts","../src/codeGen/GLESVisitor.ts","../src/codeGen/GLES100.ts","../src/codeGen/GLES300.ts","../src/GLESBackend.ts","../src/ShaderCompilation.ts","../src/ShaderCompiler.ts","../src/index.ts"],"sourcesContent":["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 _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 _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","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 _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","import { BaseToken } from \"@galacean/engine-shader-parser/internal\";\nimport { EShaderStage } from \"@galacean/engine-shader-parser/internal\";\nimport { SymbolTable } from \"@galacean/engine-shader-parser/internal\";\nimport { ASTNode, TreeNode } from \"@galacean/engine-shader-parser/internal\";\nimport { ESymbolType, SymbolInfo, VarSymbol } from \"@galacean/engine-shader-parser/internal\";\nimport { ShaderStructRole, StructProp } from \"@galacean/engine-shader-parser/internal\";\n\n/** @internal */\nexport class VisitorContext {\n private readonly _lookupSymbol = new SymbolInfo(\"\", null);\n private readonly _structRoles = new Map<ASTNode.StructSpecifier, ShaderStructRole>();\n private readonly _vertexUnresolvedVariableRoles = new Map<string, ShaderStructRole>();\n private readonly _fragmentUnresolvedVariableRoles = new Map<string, ShaderStructRole>();\n private readonly _vertexAmbiguousVariableNames = new Set<string>();\n private readonly _fragmentAmbiguousVariableNames = new Set<string>();\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 readonly _referencedGlobalSymbols = new Set<SymbolInfo>();\n private _globalSymbolQueries: Record<string, Partial<Record<ESymbolType, SymbolInfo[]>>>;\n _referencedGlobalMacroASTs: TreeNode[] = [];\n private readonly _structVariableRoles = new Map<VarSymbol, ShaderStructRole>();\n\n _passSymbolTable?: SymbolTable<SymbolInfo>;\n /** Receives every global use, including uses of declarations already discovered. */\n onReferenceGlobal?: (symbols: readonly SymbolInfo[]) => void;\n /** Receives interface uses so generated fields retain their declaration dependencies. */\n onReferenceStructProps?: (props: readonly StructProp[]) => void;\n readonly codeCache = new Map<TreeNode, string>();\n private readonly fragmentReturnModes = new Map<ASTNode.JumpStatement, FragmentReturnMode>();\n private readonly terminalInterfaceReturns = new Set<ASTNode.JumpStatement>();\n\n constructor() {\n this.reset();\n }\n\n reset(resetAll = true) {\n this.codeCache.clear();\n this.fragmentReturnModes.clear();\n this.terminalInterfaceReturns.clear();\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 this._structRoles.clear();\n this._vertexUnresolvedVariableRoles.clear();\n this._fragmentUnresolvedVariableRoles.clear();\n this._vertexAmbiguousVariableNames.clear();\n this._fragmentAmbiguousVariableNames.clear();\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._referencedGlobalSymbols.clear();\n this._globalSymbolQueries = Object.create(null);\n this._referencedGlobalMacroASTs.length = 0;\n if (resetAll) {\n this._structVariableRoles.clear();\n this._passSymbolTable = undefined;\n }\n }\n\n /**\n * Finds the shared interface role of custom-struct declaration candidates.\n * @param declarations - Exact parser struct identities resolved at one type occurrence.\n * @returns Interface role, or `undefined` when the type is not an unambiguous interface struct.\n */\n getStructRole(declarations: readonly ASTNode.StructSpecifier[]): ShaderStructRole | undefined {\n let resolvedRole: ShaderStructRole | undefined;\n for (const declaration of declarations) {\n const role = this._structRoles.get(declaration);\n if (!role || (resolvedRole && resolvedRole !== role)) return;\n resolvedRole = role;\n }\n return resolvedRole;\n }\n\n /**\n * Tests the exact interface role of one struct declaration.\n * @param declaration - Parser struct identity.\n * @param role - Expected interface role.\n * @returns Whether the declaration owns that role.\n */\n hasStructRole(declaration: ASTNode.StructSpecifier, role: ShaderStructRole): boolean {\n return this._structRoles.get(declaration) === role;\n }\n\n /**\n * Registers stage-interface struct types for constant-time role lookup.\n * @param role - Interface role shared by the supplied structs.\n * @param structs - Struct declarations derived from parser IR.\n * @internal\n */\n registerStructTypes(role: ShaderStructRole, structs: readonly ASTNode.StructSpecifier[]): void {\n for (const struct of structs) {\n this._structRoles.set(struct, role);\n }\n }\n\n /**\n * Registers a resolved variable that holds an interface struct.\n * @param variable - Parser symbol identity for the declaration.\n * @param role - Struct interface role.\n * @param stage - Optional stage from whose entry the variable is reachable. Omit when only exact\n * symbol lookup is required.\n */\n registerStructVar(variable: VarSymbol, role: ShaderStructRole, stage?: EShaderStage): void {\n this._structVariableRoles.set(variable, role);\n if (stage === undefined) return;\n const roles =\n stage === EShaderStage.VERTEX ? this._vertexUnresolvedVariableRoles : this._fragmentUnresolvedVariableRoles;\n const ambiguous =\n stage === EShaderStage.VERTEX ? this._vertexAmbiguousVariableNames : this._fragmentAmbiguousVariableNames;\n const name = variable.ident;\n if (ambiguous.has(name)) return;\n const existing = roles.get(name);\n if (existing && existing !== role) {\n roles.delete(name);\n ambiguous.add(name);\n } else {\n roles.set(name, role);\n }\n }\n\n /**\n * Finds an interface role for a global macro value that has no lexical symbol identity.\n * @param variableName - Bare variable name in the macro replacement AST.\n * @returns A role only when every stage-reachable declaration with that name agrees.\n */\n getUnresolvedStructVarRole(variableName: string): ShaderStructRole | undefined {\n const roles =\n this.stage === EShaderStage.VERTEX ? this._vertexUnresolvedVariableRoles : this._fragmentUnresolvedVariableRoles;\n const ambiguous =\n this.stage === EShaderStage.VERTEX ? this._vertexAmbiguousVariableNames : this._fragmentAmbiguousVariableNames;\n return ambiguous.has(variableName) ? undefined : roles.get(variableName);\n }\n\n /**\n * Finds the shared interface role of branch-visible variable candidates.\n * @param symbols - Exact parser symbols resolved at one reference.\n * @returns Interface role, or `undefined` when the reference is not an unambiguous interface value.\n */\n getStructVarRole(symbols: readonly SymbolInfo[]): ShaderStructRole | undefined {\n let resolvedRole: ShaderStructRole | undefined;\n for (const symbol of symbols) {\n if (!(symbol instanceof VarSymbol)) return;\n const role = this._structVariableRoles.get(symbol);\n if (!role || (resolvedRole && resolvedRole !== role)) return;\n resolvedRole = role;\n }\n return resolvedRole;\n }\n\n /**\n * Marks a value-return belonging to a fragment entry for backend lowering.\n * @param statement - Exact return statement identity.\n * @param mode - Fragment output contract of the containing entry declaration.\n */\n registerFragmentReturn(statement: ASTNode.JumpStatement, mode: FragmentReturnMode): void {\n this.fragmentReturnModes.set(statement, mode);\n }\n\n /**\n * Finds the output contract for a fragment-entry return statement.\n * @param statement - Return statement identity.\n * @returns Output mode, or `undefined` for ordinary helper/vertex returns.\n */\n getFragmentReturnMode(statement: ASTNode.JumpStatement): FragmentReturnMode | undefined {\n return this.fragmentReturnModes.get(statement);\n }\n\n /** Marks a syntactically final interface return whose control-flow exit can be omitted. */\n registerTerminalInterfaceReturn(statement: ASTNode.JumpStatement): void {\n this.terminalInterfaceReturns.add(statement);\n }\n\n /**\n * Tests whether an interface return is the final syntactic statement in its function.\n * @param statement - Return statement identity.\n * @returns Whether backend lowering may omit a trailing `return;`.\n */\n isTerminalInterfaceReturn(statement: ASTNode.JumpStatement): boolean {\n return this.terminalInterfaceReturns.has(statement);\n }\n\n referenceAttribute(ident: BaseToken): void {\n this._referenceProp(ident.lexeme, this.attributeList, this._referencedAttributeList);\n }\n\n referenceVarying(ident: BaseToken): void {\n this._referenceProp(ident.lexeme, this.varyingList, this._referencedVaryingList);\n }\n\n referenceMRTProp(ident: BaseToken): void {\n this._referenceProp(ident.lexeme, this.mrtList, this._referencedMRTList);\n }\n\n referenceGlobal(ident: string, type: ESymbolType): void {\n const queries = (this._globalSymbolQueries[ident] ??= Object.create(null));\n let symbols = queries[type];\n if (!symbols) {\n this._lookupSymbol.set(ident, type);\n symbols = queries[type] = this._passSymbolTable!.getSymbols(this._lookupSymbol, true, []);\n const namedSymbols = (this._referencedGlobals[ident] ??= []);\n for (const symbol of symbols) {\n if (!this._referencedGlobalSymbols.has(symbol)) {\n this._referencedGlobalSymbols.add(symbol);\n namedSymbols.push(symbol);\n }\n }\n }\n // Repeated uses still establish edges from each declaration's owner.\n this.onReferenceGlobal?.(symbols);\n }\n\n // Track which IO props are actually referenced (drives in/out emission). A missing member is no\n // longer flagged here — that's the parser's struct-field check (UndeclaredStructMember).\n private _referenceProp(name: string, list: StructProp[], refList: Record<string, StructProp[]>): void {\n if (!refList[name]) refList[name] = list.filter((item) => item.ident.lexeme === name);\n this.onReferenceStructProps?.(refList[name]);\n }\n}\n\n/** @internal */\nexport type FragmentReturnMode = \"color\" | \"mrt\";\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 { BaseToken } from \"@galacean/engine-shader-parser/internal\";\nimport { ASTNode, TreeNode } from \"@galacean/engine-shader-parser/internal\";\nimport { NoneTerminal } from \"@galacean/engine-shader-parser/internal\";\nimport { ESymbolType, FnSymbol } from \"@galacean/engine-shader-parser/internal\";\nimport { NodeChild, StructProp } from \"@galacean/engine-shader-parser/internal\";\nimport { ParserUtils } from \"@galacean/engine-shader-parser/internal\";\nimport { ShaderStructRole } from \"@galacean/engine-shader-parser/internal\";\nimport type { BranchSignature, ICodeGenVisitor } from \"@galacean/engine-shader-parser/internal\";\nimport { VisitorContext } from \"./VisitorContext\";\nimport { ReturnableObjectPool } from \"@galacean/engine-core\";\nimport { Keyword } from \"@galacean/engine-shader-parser/internal\";\nimport { TempArray } from \"../TempArray\";\nimport { ICodeSegment } from \"./types\";\n\n/**\n * @internal\n * The code generator\n */\nexport abstract class CodeGenVisitor implements ICodeGenVisitor {\n abstract getAttributeProp(prop: StructProp): string;\n abstract getVaryingProp(prop: StructProp): string;\n abstract getMRTProp(prop: StructProp): string | null;\n\n protected static _tmpArrayPool = new ReturnableObjectPool(TempArray<string>, 10);\n protected readonly context = new VisitorContext();\n\n cache(node: TreeNode, code: string): string {\n this.context.codeCache.set(node, code);\n return code;\n }\n\n getCachedCode(node: TreeNode): string | undefined {\n return this.context.codeCache.get(node);\n }\n\n defaultCodeGen(children: NodeChild[]) {\n const pool = CodeGenVisitor._tmpArrayPool;\n const 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 use the AST path\n ret.array.push(child.lexeme);\n } else {\n ret.array.push(child.codeGen(this));\n }\n }\n const result = ret.array.join(\" \");\n ret.dispose();\n pool.return(ret);\n return result;\n }\n\n visitPostfixExpression(node: ASTNode.PostfixExpression): string {\n const children = node.children;\n const derivationLength = children.length;\n const context = this.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 // Direct variables use parser symbol identity so lexical shadowing cannot inherit an IO role\n // from a same-named declaration. Macro-expanded identifiers can lack a resolved symbol, so\n // only that zero-symbol path consults the current stage's unambiguous name-to-role map.\n let role: ShaderStructRole | undefined;\n const directRoot = ParserUtils.unwrapBareIdentifier(postExpr, { allowParens: true });\n if (directRoot) {\n const symbols = directRoot.resolvedValueSymbols();\n const unresolvedName = ParserUtils.extractDirectIdentLexeme(postExpr);\n role = symbols.length\n ? context.getStructVarRole(symbols)\n : unresolvedName\n ? context.getUnresolvedStructVarRole(unresolvedName)\n : undefined;\n }\n\n if (role) {\n if (role === ShaderStructRole.Attribute) context.referenceAttribute(prop);\n else if (role === ShaderStructRole.Varying) context.referenceVarying(prop);\n else context.referenceMRTProp(prop);\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 return `${identNode.codeGen(this)}[${indexNode.codeGen(this)}]`;\n }\n\n return this.defaultCodeGen(node.children);\n }\n\n visitVariableIdentifier(node: ASTNode.VariableIdentifier): string {\n for (const name of node.referenceGlobalSymbolNames) {\n this.context.referenceGlobal(name, ESymbolType.Any);\n }\n for (const symbol of node.resolvedSymbols()) {\n if (symbol instanceof FnSymbol) this.referenceFunction(symbol, node.location.start.index, node._branch);\n }\n\n return node.getLexeme(this);\n }\n\n protected referenceFunction(symbol: FnSymbol, referenceIndex: number, branch: BranchSignature): void {\n void referenceIndex;\n void branch;\n this.context.referenceGlobal(symbol.ident, ESymbolType.FN);\n }\n\n visitFunctionCall(node: ASTNode.FunctionCall): string {\n const call = node.children[0] as ASTNode.FunctionCallGeneric;\n if (call.fnSymbol instanceof FnSymbol) {\n for (const symbol of call.fnSymbols?.length ? call.fnSymbols : [call.fnSymbol]) {\n this.referenceFunction(symbol, node.location.start.index, node._branch);\n }\n\n const paramList = call.children[2];\n if (paramList instanceof ASTNode.FunctionCallParameterList) {\n const astNodes = paramList.paramNodes;\n const finalSymbol = this.context._referencedGlobals[call.fnSymbol.ident].find(\n (candidate) => candidate instanceof FnSymbol && candidate.equal(call.fnSymbol!)\n ) as FnSymbol | undefined;\n const paramInfoList = (finalSymbol ?? call.fnSymbol).astNode.protoType.parameterList;\n\n const context = this.context;\n const params = astNodes.filter((_, i) => {\n const parameter = paramInfoList?.[i]?.astNode;\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 (\n !(parameter instanceof ASTNode.ParameterDeclaration) ||\n !parameter.symbol ||\n !context.getStructVarRole([parameter.symbol])\n );\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 = this.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 (variableParam && context.getStructVarRole(variableParam.resolvedValueSymbols())) {\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 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 = this.context;\n // Global interface variables are flattened and therefore are not emitted as uniforms.\n if (context.getStructVarRole([node.declarator.symbol])) {\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 = this.context;\n const children = node.children;\n const child = children[0];\n\n if (child instanceof ASTNode.InitDeclaratorList) {\n const first = child.children[0];\n const declarator =\n child.declarator ?? (first instanceof ASTNode.SingleDeclaration ? first.declarator : undefined);\n const role = declarator && context.getStructVarRole([declarator.symbol]);\n if (role === ShaderStructRole.Varying || role === ShaderStructRole.Mrt) return \"\";\n }\n return this.defaultCodeGen(children);\n }\n\n visitFunctionParameterList(node: ASTNode.FunctionParameterList): string {\n const context = this.context;\n const params = node.parameterInfoList.filter((item) => {\n const parameter = item.astNode;\n return (\n !(parameter instanceof ASTNode.ParameterDeclaration) ||\n !parameter.symbol ||\n !context.getStructVarRole([parameter.symbol])\n );\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;\n if (this.context.getStructRole(returnType.structDeclarations) === ShaderStructRole.Varying) {\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 (returnVar && this.context.getStructVarRole(returnVar.resolvedValueSymbols()) === ShaderStructRole.Varying) {\n return this.context.isTerminalInterfaceReturn(node) ? \"\" : \"return;\";\n }\n const returnFnCall = ParserUtils.unwrapNodeByType<ASTNode.FunctionCall>(expr, NoneTerminal.function_call);\n const calledFunction = returnFnCall?.children[0] as ASTNode.FunctionCallGeneric | undefined;\n const returnDeclarations =\n calledFunction?.fnSymbol instanceof FnSymbol\n ? calledFunction.fnSymbol.astNode.protoType.returnType.typeSpecifier.structDeclarations\n : [];\n if (this.context.getStructRole(returnDeclarations) === ShaderStructRole.Varying) {\n const call = `${expr.codeGen(this)};`;\n return this.context.isTerminalInterfaceReturn(node) ? call : `{ ${call} return; }`;\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 visitTypeSpecifier(node: ASTNode.TypeSpecifier): string {\n return this.defaultCodeGen(node.children);\n }\n\n visitStructSpecifier(node: ASTNode.StructSpecifier): string {\n const context = this.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 || isMRTStruct) {\n const 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 = this.context;\n const terminal = ParserUtils.lastStatement(fnNode.statements);\n if (terminal instanceof ASTNode.JumpStatement) context.registerTerminalInterfaceReturn(terminal);\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","import type { Condition, PreprocessorExpressionParseResult, ShaderInstruction } from \"@galacean/engine-design\";\nimport { ShaderPreprocessorDirective } from \"@galacean/engine-core\";\nimport { parsePreprocessorExpression, toPreprocessorCondition } from \"@galacean/engine-shader-parser/internal\";\nimport type { DeferredDeclarationOwnership } from \"@galacean/engine-shader-parser/internal\";\n\nexport type { ShaderInstruction } from \"@galacean/engine-design\";\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 /**\n * Marks compiler-owned text without placing parser objects in the instruction stream.\n * @param text - Declaration or derived declaration text.\n * @param owner - Neutral declaration identity, if runtime selection is required.\n * @param activate - Whether this is the declaration's original source position.\n * @returns Intermediate source consumed by the instruction encoder.\n * @internal\n */\n static declaration(text: string, owner?: DeferredDeclarationOwnership, activate = true): string {\n if (!owner) return text;\n const activation = activate ? `\\0D${owner.id},${owner.group},${owner.sourceScope}\\0\\n` : \"\";\n return text ? `${activation}\\0T${owner.id}\\0\\n${text}\\n\\0E\\0\\n` : activation;\n }\n\n /**\n * Marks derived text shared by any selected, reachable declaration without activating an owner.\n * @param text - Shared derived declaration text.\n * @param owners - Declarations that require the text; an empty list never retains it.\n * @returns Intermediate source consumed by the instruction encoder.\n * @internal\n */\n static sharedDeclaration(text: string, owners: readonly DeferredDeclarationOwnership[]): string {\n return text ? `\\0T${owners.map((owner) => owner.id).join(\",\")}\\0\\n${text}\\n\\0E\\0\\n` : \"\";\n }\n\n /**\n * Records a declaration dependency for variant-time reachability after ownership selection.\n * @param from - Referencing declaration identity, or zero for a stage root.\n * @param to - Referenced declaration identity.\n * @returns Intermediate source consumed by the instruction encoder.\n * @internal\n */\n static reference(from: number, to: number): string {\n return `\\0R${from},${to}\\0\\n`;\n }\n\n /**\n * Removes private emission markers from the public source view after instruction encoding.\n * @param source - Encoded intermediate stage source.\n * @returns GLSL source without compiler metadata.\n * @internal\n */\n static source(source: string): string {\n return source.indexOf(\"\\0\") < 0 ? source : source.replace(/\\0[^\\0]*\\0\\n?/g, \"\");\n }\n\n /**\n * Encodes generated GLSL directives into runtime-selectable instructions.\n * @param glsl - Generated stage source.\n * @param preprocessorExpressions - Parser-owned expression trees keyed by logical directive text.\n * @returns Runtime shader instruction stream.\n * @throws Error when a conditional directive is malformed or has a deterministic evaluation failure.\n * @internal\n */\n static parse(\n glsl: string,\n preprocessorExpressions?: ReadonlyMap<string, PreprocessorExpressionParseResult>\n ): ShaderInstruction[] {\n const instructions: ShaderInstruction[] = [];\n const length = glsl.length;\n let pos = 0;\n let owners: number[] | undefined;\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, owners);\n break;\n }\n\n if (directiveStart > pos) {\n ShaderInstructionEncoder._pushText(instructions, glsl, pos, directiveStart, owners);\n }\n\n const lineEnd = ShaderInstructionEncoder._findLogicalLineEnd(glsl, directiveStart, length);\n const line = glsl.substring(directiveStart, lineEnd).replace(/\\\\(?:\\r\\n|\\n|\\r)/g, \"\");\n pos = lineEnd < length ? lineEnd + 1 : length;\n\n if (line.charCodeAt(0) === 0) {\n const kind = line.charAt(1);\n if (kind === \"D\") {\n const fields = line.slice(2, -1).split(\",\").map(Number);\n instructions.push([ShaderPreprocessorDirective.Declaration, fields[0], fields[1], fields[2]]);\n } else if (kind === \"R\") {\n const fields = line.slice(2, -1).split(\",\").map(Number);\n instructions.push([ShaderPreprocessorDirective.Reference, fields[0], fields[1]]);\n } else {\n const ids = line.slice(2, -1);\n owners = kind === \"T\" ? (ids ? ids.split(\",\").map(Number) : []) : undefined;\n }\n continue;\n }\n\n const match = ShaderInstructionEncoder._DIRECTIVE_RE.exec(line);\n if (!match) {\n const text = lineEnd < length ? line + \"\\n\" : line;\n ShaderInstructionEncoder._pushText(instructions, text, 0, text.length, owners);\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, preprocessorExpressions);\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, preprocessorExpressions);\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 separator = ShaderInstructionEncoder._findInlineWhitespace(rest);\n if (separator === rest.length) {\n instructions.push([ShaderPreprocessorDirective.Define, rest]);\n } else {\n instructions.push([\n ShaderPreprocessorDirective.DefineVal,\n rest.substring(0, separator),\n ShaderInstructionEncoder._stripLineComment(rest.substring(separator + 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 _parseCondition(\n expression: string,\n preprocessorExpressions?: ReadonlyMap<string, PreprocessorExpressionParseResult>\n ): Condition {\n const result = preprocessorExpressions?.get(expression) ?? parsePreprocessorExpression(expression);\n if (\"error\" in result) {\n if (!result.error.certain && result.hasExpandableIdentifier) return { t: \"deferred\", e: expression };\n throw new Error(result.error.message);\n }\n if (result.evaluationError) throw new Error(result.evaluationError);\n const compact = toPreprocessorCondition(result.condition);\n if (compact && !result.hasExpandableIdentifier) return compact;\n return result.hasExpandableIdentifier ? { t: \"deferred\", e: expression } : result.condition;\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 /* '#' */ || source.charCodeAt(j) === 0)) 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 _findLogicalLineEnd(source: string, start: number, length: number): number {\n let lineEnd = source.indexOf(\"\\n\", start);\n while (lineEnd !== -1) {\n const beforeBreak = source.charCodeAt(lineEnd - 1) === 13 ? lineEnd - 2 : lineEnd - 1;\n if (beforeBreak < start || source.charCodeAt(beforeBreak) !== 92) return lineEnd;\n lineEnd = source.indexOf(\"\\n\", lineEnd + 1);\n }\n return length;\n }\n\n private static _findInlineWhitespace(source: string): number {\n let index = 0;\n while (index < source.length) {\n const charCode = source.charCodeAt(index);\n if (charCode === 32 /* space */ || charCode === 9 /* tab */) break;\n index++;\n }\n return index;\n }\n\n private static _pushText(\n instructions: ShaderInstruction[],\n source: string,\n from: number,\n to: number,\n owners?: readonly number[]\n ): void {\n if (from >= to) return;\n const last = instructions.length > 0 ? instructions[instructions.length - 1] : null;\n const directive = owners === undefined ? ShaderPreprocessorDirective.Text : ShaderPreprocessorDirective.OwnedText;\n if (\n last &&\n last[0] === directive &&\n (owners === undefined ||\n (last.length === owners.length + 2 && owners.every((owner, index) => last[index + 2] === owner)))\n ) {\n (last as [number, string])[1] += source.substring(from, to);\n } else {\n instructions.push(\n owners === undefined\n ? [directive, source.substring(from, to)]\n : [directive, source.substring(from, to), ...owners]\n );\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","import type { IShaderInfo } from \"@galacean/engine-design\";\nimport type { IPoolElement } from \"@galacean/engine-core\";\nimport { BaseToken } from \"@galacean/engine-shader-parser/internal\";\nimport { EShaderStage } from \"@galacean/engine-shader-parser/internal\";\nimport { Keyword } from \"@galacean/engine-shader-parser/internal\";\nimport { ASTNode, TreeNode } from \"@galacean/engine-shader-parser/internal\";\nimport { NodeChild } from \"@galacean/engine-shader-parser/internal\";\nimport { ShaderData } from \"@galacean/engine-shader-parser/internal\";\nimport { ESymbolType } from \"@galacean/engine-shader-parser/internal\";\nimport {\n FnSymbol,\n VarSymbol,\n canInheritanceBranchesCover,\n getLexicalDeclarationCoexistence\n} from \"@galacean/engine-shader-parser/internal\";\nimport { GSError, GSErrorName, mapExpandedShaderError } from \"@galacean/engine-shader-parser/internal\";\nimport { ShaderStructRole } from \"@galacean/engine-shader-parser/internal\";\nimport { ParserUtils } from \"@galacean/engine-shader-parser/internal\";\nimport type {\n BranchSignature,\n ShaderClueIR,\n ShaderCoreInfo,\n ShaderEntryPointInfo,\n DeferredDeclarationOwnership\n} from \"@galacean/engine-shader-parser/internal\";\nimport { CodeGenVisitor } from \"./CodeGenVisitor\";\nimport { ICodeSegment } from \"./types\";\nimport type { ShaderBackend } from \"../ShaderBackend\";\nimport { ShaderInstructionEncoder } from \"../ShaderInstructionEncoder\";\n\n/**\n * @internal\n */\nexport abstract class GLESVisitor extends CodeGenVisitor implements ShaderBackend, IPoolElement {\n private _globalCodeArray: ICodeSegment[] = [];\n private readonly _forwardFunctionDeclarations = new Map<ASTNode.FunctionDefinition, string>();\n private readonly _forwardStructIndices = new Map<ASTNode.StructSpecifier, number>();\n private readonly _structCodeSegments = new Map<ASTNode.StructSpecifier, ICodeSegment>();\n private readonly _forwardVariableIndices = new Map<ASTNode.VariableDeclaration, number>();\n private readonly _variableCodeSegments = new Map<ASTNode.VariableDeclaration, ICodeSegment>();\n private readonly _declarationOwners = new Map<TreeNode, DeferredDeclarationOwnership>();\n private readonly _deferredPrototypes = new Map<ASTNode.FunctionDefinition, ICodeSegment>();\n private readonly _declarationReferences = new Map<number, Set<number>>();\n private _currentDeclaration?: TreeNode;\n private _sourceIR?: ShaderClueIR;\n private _outerMacroDeclarations: readonly ASTNode.GlobalDeclaration[] = [];\n\n /**\n * Clears pass-local output retained by the pooled visitor.\n */\n reset(): void {\n const { _globalCodeArray: globalCodeArray } = this;\n globalCodeArray.length = 0;\n this._forwardFunctionDeclarations.clear();\n this._forwardStructIndices.clear();\n this._structCodeSegments.clear();\n this._forwardVariableIndices.clear();\n this._variableCodeSegments.clear();\n this._deferredPrototypes.clear();\n this._declarationReferences.clear();\n this._currentDeclaration = undefined;\n }\n\n /**\n * Releases references retained by an idle visitor when its pool is collected.\n * @internal\n */\n dispose(): void {\n this.context.reset();\n this.reset();\n }\n\n /**\n * Emits target-specific declarations that precede generated global code.\n * @param data - Parser-owned shader facts.\n * @param out - Destination code segments.\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 /**\n * Generates vertex and fragment source from neutral parser facts.\n * @param ir - Request-owned neutral shader IR.\n * @param coreInfo - Entry and stage-interface facts derived from the same IR.\n * @returns Generated vertex and fragment source.\n */\n generate(ir: ShaderClueIR, coreInfo: ShaderCoreInfo): IShaderInfo {\n this.context.reset();\n this.reset();\n\n const node = ir.program;\n const shaderData = node.shaderData;\n const context = this.context;\n context._passSymbolTable = shaderData.symbolTable;\n\n const outerGlobalMacroDeclarations = coreInfo.outerGlobalMacroDeclarations;\n const { io } = coreInfo;\n context.attributeStructs.push(...io.attributeStructs);\n context.attributeList.push(...io.attributeList);\n context.varyingStructs.push(...io.varyingStructs);\n context.varyingList.push(...io.varyingList);\n context.mrtStructs.push(...io.mrtStructs);\n context.mrtList.push(...io.mrtList);\n context.registerStructTypes(ShaderStructRole.Attribute, io.attributeStructs);\n context.registerStructTypes(ShaderStructRole.Varying, io.varyingStructs);\n context.registerStructTypes(ShaderStructRole.Mrt, io.mrtStructs);\n io.structVariableRoles.forEach((role, variable) => context.registerStructVar(variable, role));\n io.vertexStructVariableRoles.forEach((role, variable) => {\n context.registerStructVar(variable, role, EShaderStage.VERTEX);\n });\n io.fragmentStructVariableRoles.forEach((role, variable) => {\n context.registerStructVar(variable, role, EShaderStage.FRAGMENT);\n });\n\n this._sourceIR = ir;\n this._outerMacroDeclarations = outerGlobalMacroDeclarations;\n try {\n coreInfo.deferredDeclarationOwnership.forEach((owner, symbol) =>\n this._declarationOwners.set(symbol.astNode!, owner)\n );\n if (this._declarationOwners.size) {\n let nextId = 0;\n let nextGroup = 0;\n this._declarationOwners.forEach((owner) => {\n nextId = Math.max(nextId, owner.id);\n nextGroup = Math.max(nextGroup, owner.group);\n });\n // Reachability follows the selected declaration, including dependencies without an override.\n shaderData.symbolTable.forEach((symbol) => {\n if (symbol.astNode && !this._declarationOwners.has(symbol.astNode)) {\n this._declarationOwners.set(symbol.astNode, {\n id: ++nextId,\n group: ++nextGroup,\n sourceScope: symbol.sourceScope\n });\n }\n });\n context.onReferenceGlobal = (symbols) => {\n const from = this.currentDeclarationOwner?.id ?? 0;\n for (const symbol of symbols) this._referenceDeclaration(from, symbol.astNode!);\n };\n const propDeclarations = new Map();\n for (const struct of [...io.attributeStructs, ...io.varyingStructs, ...io.mrtStructs]) {\n for (const prop of struct.propList) propDeclarations.set(prop, struct);\n }\n context.onReferenceStructProps = (props) => {\n const from = this.currentDeclarationOwner?.id ?? 0;\n for (const prop of props) this._referenceDeclaration(from, propDeclarations.get(prop));\n };\n }\n if (coreInfo.unsupportedDeferredDeclarations.length) {\n throw mapExpandedShaderError(\n new GSError(\n GSErrorName.CompilationError,\n \"Deferred inheritance requires exact signatures and cannot resolve a known partial-coverage conflict.\",\n coreInfo.unsupportedDeferredDeclarations[0].astNode!.location,\n ir.source,\n undefined,\n \"UnsupportedDeferredDeclaration\"\n ),\n ir.source,\n ir.sourceMap\n );\n }\n return {\n vertex: this._vertexMain(coreInfo.vertexEntry, shaderData, outerGlobalMacroDeclarations),\n fragment: this._fragmentMain(coreInfo.fragmentEntry, shaderData, outerGlobalMacroDeclarations)\n };\n } finally {\n this._sourceIR = undefined;\n this._outerMacroDeclarations = [];\n this._declarationOwners.clear();\n context.onReferenceGlobal = undefined;\n context.onReferenceStructProps = undefined;\n }\n }\n\n private _vertexMain(\n entryInfo: ShaderEntryPointInfo,\n data: ShaderData,\n outerGlobalMacroDeclarations: readonly ASTNode.GlobalDeclaration[]\n ): string {\n const context = this.context;\n context.stage = EShaderStage.VERTEX;\n context.stageEntry = entryInfo.name;\n\n // Attribute/varying structs were collected in ShaderCoreInfo\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 context.referenceGlobal(entryInfo.name, 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 this._emitDeclarationReferences(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(false);\n this.reset();\n\n return globalCode;\n }\n\n private _fragmentMain(\n entryInfo: ShaderEntryPointInfo,\n data: ShaderData,\n outerGlobalMacroStatements: readonly ASTNode.GlobalDeclaration[]\n ): string {\n const context = this.context;\n context.stage = EShaderStage.FRAGMENT;\n context.stageEntry = entryInfo.name;\n this.prepareFragment(entryInfo, outerGlobalMacroStatements);\n\n // Every value-return must preserve early-exit control flow after entry return values are\n // lowered into fragment outputs.\n entryInfo.functions.forEach((fnSymbol) => {\n const returnType = fnSymbol.astNode.protoType.returnType;\n const mode =\n returnType.type === Keyword.VEC4\n ? \"color\"\n : returnType.typeSpecifier.structDeclarations.some((struct) =>\n context.hasStructRole(struct, ShaderStructRole.Mrt)\n )\n ? \"mrt\"\n : undefined;\n if (mode) {\n const statements = fnSymbol.astNode.statements;\n this._registerFragmentReturns(statements, mode, ParserUtils.lastStatement(statements));\n }\n });\n\n // Struct-variable identities are already populated from ShaderCoreInfo; just pre-walk macro\n // refs so struct codegen sees the references.\n this._preRegisterGlobalMacroRefs(outerGlobalMacroStatements);\n\n const globalCodeArray = this._globalCodeArray;\n context.referenceGlobal(entryInfo.name, 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 this._emitDeclarationReferences(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 protected prepareFragment(\n entryInfo: ShaderEntryPointInfo,\n outerGlobalMacroStatements: readonly ASTNode.GlobalDeclaration[]\n ): void {\n void entryInfo;\n void outerGlobalMacroStatements;\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: readonly 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 const previous = this._currentDeclaration;\n if (child instanceof ASTNode.FunctionDefinition) this._currentDeclaration = child;\n this._walkMacroDefineTokens(child.children);\n this._currentDeclaration = previous;\n }\n }\n }\n\n private _registerFragmentReturns(node: TreeNode, mode: \"color\" | \"mrt\", terminal?: TreeNode): void {\n if (node instanceof ASTNode.JumpStatement && node.children.length === 3) {\n this.context.registerFragmentReturn(node, mode);\n if (node === terminal) this.context.registerTerminalInterfaceReturn(node);\n return;\n }\n for (const child of node.children) {\n if (child instanceof TreeNode) this._registerFragmentReturns(child, mode, terminal);\n }\n }\n\n private _getGlobalSymbol(out: ICodeSegment[]): void {\n const context = this.context;\n // Set iteration includes dependencies discovered while generating earlier declarations.\n for (const sm of context._referencedGlobalSymbols) {\n this._currentDeclaration = sm.astNode;\n const codeGenResult = sm.astNode!.codeGen(this);\n this._currentDeclaration = undefined;\n if (!codeGenResult) continue;\n const text = codeGenResult + (sm.type === ESymbolType.VAR ? \";\" : \"\");\n if (!sm.isInMacroBranch) {\n const segment = {\n text: this._declaration(text, sm.astNode!),\n index: sm.astNode!.location.start.index\n };\n out.push(segment);\n if (sm.astNode instanceof ASTNode.StructSpecifier) this._structCodeSegments.set(sm.astNode, segment);\n if (sm.astNode instanceof ASTNode.VariableDeclaration) this._variableCodeSegments.set(sm.astNode, segment);\n }\n }\n this._getForwardDeclarations(out);\n for (const segment of this._deferredPrototypes.values()) out.push(segment);\n for (const [definition, text] of this._forwardFunctionDeclarations) {\n if (!definition.isInMacroBranch) out.push({ text, index: definition.location.start.index });\n }\n }\n\n protected override referenceFunction(symbol: FnSymbol, referenceIndex: number, branch: BranchSignature): void {\n super.referenceFunction(symbol, referenceIndex, branch);\n const definition = symbol.astNode;\n const declarations = this._forwardFunctionDeclarations;\n if (symbol.ident === this.context.stageEntry) return;\n const candidates = this.context._referencedGlobals[symbol.ident].filter(\n (candidate): candidate is FnSymbol => candidate instanceof FnSymbol && candidate.equal(symbol)\n );\n const owner = this._declarationOwners.get(definition);\n if (owner) {\n for (const candidate of candidates) {\n const replacement = candidate.astNode;\n const nextOwner = this._declarationOwners.get(replacement);\n if (\n !nextOwner ||\n nextOwner.group !== owner.group ||\n nextOwner.sourceScope <= owner.sourceScope ||\n replacement.location.start.index <= referenceIndex\n )\n continue;\n const prototype = replacement.protoType;\n const anchor = definition.location.start.index;\n const previous = this._deferredPrototypes.get(replacement);\n if (previous && previous.index <= anchor) continue;\n if (\n !this._isContextIndependent(prototype) ||\n this._hasDeclarationContextBarrier(anchor, prototype.location.start.index, false)\n ) {\n this._unsupportedForwardDeclaration(prototype);\n }\n const outer = this._outerMacroDeclarations.find(\n (macro) => macro.location.start.index <= anchor && macro.location.end.index >= definition.location.end.index\n );\n const typeAnchor = outer?.location.start.index ?? anchor;\n this._prepareForwardTypes(prototype.returnType.typeSpecifier.structDeclarations, anchor, typeAnchor);\n for (const parameter of prototype.parameterList ?? []) {\n this._prepareForwardTypes(parameter.typeInfo?.structDeclarations ?? [], anchor, typeAnchor);\n }\n // Selection is determined at the later definition, so the prototype must not replay its guard here.\n this._deferredPrototypes.set(replacement, {\n text: this._declaration(`${prototype.codeGen(this)};`, replacement, false),\n index: typeAnchor\n });\n }\n return;\n }\n if (candidates.some((candidate) => candidate.astNode === definition)) return;\n const compatible = candidates.filter((candidate) => this._canBranchesOverlap(candidate.branchSignature, branch));\n const preceding = compatible.filter((candidate) => candidate.astNode.location.start.index < referenceIndex);\n if (\n canInheritanceBranchesCover(\n preceding.map((candidate) => candidate.branchSignature),\n branch\n )\n )\n return;\n const replacement = compatible.find((candidate) => candidate.astNode.location.start.index > referenceIndex);\n if (replacement) {\n // An inherited helper can call a declaration whose overriding body occurs later. Keep the\n // original declaration's macro/type context and emit only the final backend signature there.\n const prototype = replacement.astNode.protoType;\n const anchor = definition.location.start.index;\n const text = `${prototype.codeGen(this)};`;\n const signature = this._getForwardSignature(prototype);\n for (const candidate of candidates) {\n if (\n this._canBranchesOverlap(candidate.branchSignature, symbol.branchSignature) &&\n this._getForwardSignature(candidate.astNode.protoType) !== signature\n ) {\n this._unsupportedForwardDeclaration(candidate.astNode.protoType);\n }\n }\n if (declarations.has(definition)) return;\n if (\n !this._isContextIndependent(prototype) ||\n this._hasDeclarationContextBarrier(anchor, prototype.location.start.index, false)\n ) {\n this._unsupportedForwardDeclaration(prototype);\n }\n const outerMacro = this._outerMacroDeclarations.find(\n (macro) => macro.location.start.index <= anchor && macro.location.end.index >= definition.location.end.index\n );\n const typeAnchor = outerMacro?.location.start.index ?? anchor;\n this._prepareForwardTypes(prototype.returnType.typeSpecifier.structDeclarations, anchor, typeAnchor);\n for (const parameter of prototype.parameterList ?? []) {\n if (\n parameter.astNode instanceof ASTNode.ParameterDeclaration &&\n parameter.astNode.symbol &&\n this.context.getStructVarRole([parameter.astNode.symbol])\n ) {\n continue;\n }\n this._prepareForwardTypes(parameter.typeInfo?.structDeclarations ?? [], anchor, typeAnchor);\n }\n declarations.set(definition, text);\n }\n }\n\n private _getForwardSignature(prototype: ASTNode.FunctionProtoType): string {\n const parameters: string[] = [];\n for (const parameter of prototype.parameterList ?? []) {\n const declaration = parameter.astNode!;\n if (\n declaration instanceof ASTNode.ParameterDeclaration &&\n declaration.symbol &&\n this.context.getStructVarRole([declaration.symbol])\n )\n continue;\n const tokens: string[] = [];\n const visit = (node: NodeChild) => {\n if (node instanceof BaseToken) {\n if (node !== parameter.ident && node.type !== Keyword.IN) tokens.push(node.lexeme);\n } else {\n node.children.forEach(visit);\n }\n };\n visit(declaration);\n const text = tokens.join(\" \");\n if (text !== \"void\") parameters.push(text);\n }\n return `${prototype.returnType.codeGen(this)}(${parameters.join(\",\")})`;\n }\n\n private _canBranchesOverlap(left: BranchSignature, right: BranchSignature): boolean {\n return (\n getLexicalDeclarationCoexistence(left, right) !== \"exclusive\" &&\n !canInheritanceBranchesCover([], [...left, ...right])\n );\n }\n\n override visitVariableIdentifier(node: ASTNode.VariableIdentifier): string {\n const code = super.visitVariableIdentifier(node);\n for (const symbol of node.resolvedSymbols()) {\n if (!(symbol instanceof VarSymbol) || !symbol.isUniform) continue;\n const candidates = this.context._referencedGlobals[symbol.ident]?.filter(\n (candidate): candidate is VarSymbol => candidate instanceof VarSymbol\n );\n const owner = this._declarationOwners.get(symbol.astNode);\n if (!candidates || (!owner && candidates.includes(symbol))) continue;\n const preceding = candidates.filter(\n (candidate) => candidate.astNode!.location.start.index < node.location.start.index\n );\n if (\n !owner &&\n canInheritanceBranchesCover(\n preceding.map((candidate) => candidate.branchSignature),\n node._branch\n )\n )\n continue;\n const oldMacro = this._outerMacroDeclarations.find(\n (macro) =>\n macro.location.start.index <= symbol.astNode.location.start.index &&\n macro.location.end.index >= symbol.astNode.location.end.index\n );\n const anchor = oldMacro?.location.start.index ?? symbol.astNode.location.start.index;\n for (const candidate of candidates) {\n if (candidate.astNode!.location.start.index <= node.location.start.index) continue;\n if (owner) {\n const nextOwner = this._declarationOwners.get(candidate.astNode!);\n if (!nextOwner || nextOwner.group !== owner.group || nextOwner.sourceScope <= owner.sourceScope) continue;\n }\n const declaration = candidate.astNode!;\n if (\n !(candidate instanceof VarSymbol) ||\n !candidate.isUniform ||\n !(declaration instanceof ASTNode.VariableDeclaration)\n ) {\n this._unsupportedForwardDeclaration(declaration);\n }\n const macro = this._outerMacroDeclarations.find(\n (item) =>\n item.location.start.index <= declaration.location.start.index &&\n item.location.end.index >= declaration.location.end.index\n );\n if (\n !this._isContextIndependent(declaration) ||\n this._hasDeclarationContextBarrier(anchor, macro?.location.end.index ?? declaration.location.end.index, true)\n ) {\n this._unsupportedForwardDeclaration(declaration);\n }\n this._prepareForwardTypes(candidate.dataType!.structDeclarations, anchor);\n this._forwardVariableIndices.set(\n declaration,\n Math.min(this._forwardVariableIndices.get(declaration) ?? Infinity, anchor)\n );\n }\n }\n return code;\n }\n\n private _getForwardDeclarations(out: ICodeSegment[]): void {\n type Declaration = ASTNode.StructSpecifier | ASTNode.VariableDeclaration;\n const guarded = new Map<ASTNode.GlobalDeclaration, { index: number; declarations: Declaration[] }>();\n const declarations: [Declaration, number][] = Array.from(this._forwardStructIndices);\n for (const entry of this._forwardVariableIndices) declarations.push(entry);\n const code = (declaration: Declaration) =>\n this._declaration(\n declaration.codeGen(this) + (declaration instanceof ASTNode.VariableDeclaration ? \";\" : \"\"),\n declaration,\n false\n );\n for (const [declaration, index] of declarations) {\n const owner = this._declarationOwners.get(declaration);\n const macro = this._outerMacroDeclarations.find(\n (item) =>\n item.location.start.index <= declaration.location.start.index &&\n item.location.end.index >= declaration.location.end.index\n );\n if (!macro) {\n const previous =\n declaration instanceof ASTNode.StructSpecifier\n ? this._structCodeSegments.get(declaration)\n : this._variableCodeSegments.get(declaration);\n if (previous) {\n if (owner) previous.text = this._declaration(\"\", declaration);\n else out.splice(out.indexOf(previous), 1);\n }\n out.push({ text: code(declaration), index });\n } else if (owner) {\n out.push({ text: code(declaration), index });\n } else {\n let group = guarded.get(macro);\n if (!group) guarded.set(macro, (group = { index, declarations: [] }));\n group.index = Math.min(group.index, index);\n group.declarations.push(declaration);\n }\n }\n for (const [macro, group] of guarded) {\n const segments: ICodeSegment[] = macro.macroExpressions.map((item) => ({\n text: item instanceof BaseToken ? item.lexeme : item.codeGen(this),\n index: item.location.start.index\n }));\n for (const declaration of group.declarations) {\n segments.push({ text: code(declaration), index: declaration.location.start.index });\n }\n out.push({\n text: segments\n .sort((a, b) => a.index - b.index)\n .map((item) => item.text)\n .join(\"\\n\"),\n index: group.index\n });\n }\n }\n\n override visitTypeSpecifier(node: ASTNode.TypeSpecifier): string {\n const call = node.parent instanceof ASTNode.FunctionIdentifier ? node.parent.parent : undefined;\n if (call instanceof ASTNode.FunctionCallGeneric && call.fnSymbol instanceof FnSymbol) {\n return super.visitTypeSpecifier(node);\n }\n for (const type of node.structDependencies) {\n if (!type.ident || this.context.getStructRole([type])) continue;\n // A function-local struct can shadow a global name without participating in inheritance.\n let parent = type.parent;\n while (\n parent &&\n !(parent instanceof ASTNode.GlobalDeclaration) &&\n !(parent instanceof ASTNode.FunctionDefinition)\n ) {\n parent = parent.parent;\n }\n if (parent instanceof ASTNode.FunctionDefinition) continue;\n this.context.referenceGlobal(type.ident.lexeme, ESymbolType.STRUCT);\n const final = this.context._referencedGlobals[type.ident.lexeme];\n const owner = this._declarationOwners.get(type);\n if (!owner && final.some((symbol) => symbol.astNode === type)) continue;\n const oldMacro = this._outerMacroDeclarations.find(\n (item) =>\n item.location.start.index <= type.location.start.index && item.location.end.index >= type.location.end.index\n );\n this._prepareForwardTypes(\n final\n .filter((symbol) => {\n if (!owner) return true;\n const nextOwner = this._declarationOwners.get(symbol.astNode!);\n return nextOwner?.group === owner.group && nextOwner.sourceScope > owner.sourceScope;\n })\n .map((symbol) => symbol.astNode)\n .filter((item): item is ASTNode.StructSpecifier => item instanceof ASTNode.StructSpecifier),\n oldMacro?.location.start.index ?? type.location.start.index\n );\n }\n return super.visitTypeSpecifier(node);\n }\n\n private _prepareForwardTypes(types: readonly ASTNode.StructSpecifier[], anchor: number, hoistAnchor = anchor): void {\n if (this.context.getStructRole(types)) return;\n for (const type of types) {\n if ((this._forwardStructIndices.get(type) ?? Infinity) <= anchor) continue;\n if (type.ident) {\n this.context.referenceGlobal(type.ident.lexeme, ESymbolType.STRUCT);\n const final = this.context._referencedGlobals[type.ident.lexeme];\n if (!final.some((symbol) => symbol.astNode === type)) {\n this._prepareForwardTypes(\n final\n .map((symbol) => symbol.astNode)\n .filter((item): item is ASTNode.StructSpecifier => item instanceof ASTNode.StructSpecifier),\n anchor,\n hoistAnchor\n );\n continue;\n }\n }\n const needsHoist = type.location.start.index > anchor;\n const macro = this._outerMacroDeclarations.find(\n (item) =>\n item.location.start.index <= type.location.start.index && item.location.end.index >= type.location.end.index\n );\n if (\n needsHoist &&\n (!this._isContextIndependent(type) ||\n this._hasDeclarationContextBarrier(hoistAnchor, macro?.location.end.index ?? type.location.end.index, true))\n ) {\n this._unsupportedForwardDeclaration(type);\n }\n const dependencyAnchor = needsHoist ? hoistAnchor : type.location.start.index;\n for (const property of type.propList) {\n this._prepareForwardTypes(property.typeInfo.structDeclarations, dependencyAnchor);\n }\n if (needsHoist) this._forwardStructIndices.set(type, hoistAnchor);\n }\n }\n\n private _isContextIndependent(node: TreeNode): boolean {\n if (\n node instanceof ASTNode.VariableIdentifier ||\n node instanceof ASTNode.MacroCallSymbol ||\n node instanceof ASTNode.MacroCallFunction\n )\n return false;\n if (node instanceof ASTNode.TypeSpecifier && node.isCustom && !node.structDeclarations.length) return false;\n return node.children.every((child) =>\n child instanceof TreeNode\n ? this._isContextIndependent(child)\n : child.type < Keyword.MACRO_IF || child.type > Keyword.MACRO_DEFINE_PARAMS\n );\n }\n\n private _hasDeclarationContextBarrier(start: number, end: number, includeMacros: boolean): boolean {\n const visit = (node: TreeNode, inFunction = false): boolean => {\n if (node.location.end.index <= start || node.location.start.index >= end) return false;\n if (node instanceof ASTNode.PrecisionSpecifier && !inFunction) return true;\n if (includeMacros && node instanceof ASTNode.MacroDefine) return true;\n inFunction ||= node instanceof ASTNode.FunctionDefinition;\n return node.children.some((child) =>\n child instanceof TreeNode\n ? visit(child, inFunction)\n : includeMacros &&\n child.location.start.index > start &&\n child.location.start.index < end &&\n (child.type === Keyword.MACRO_UNDEF || child.type === Keyword.MACRO_DEFINE_EXPRESSION)\n );\n };\n return visit(this._sourceIR!.program);\n }\n\n private _unsupportedForwardDeclaration(node: TreeNode): never {\n const ir = this._sourceIR!;\n throw mapExpandedShaderError(\n new GSError(\n GSErrorName.CompilationError,\n \"Inherited declarations require incompatible forward signatures or depend on a later macro or precision context.\",\n node.location,\n ir.source,\n undefined,\n \"UnsupportedForwardDeclaration\"\n ),\n ir.source,\n ir.sourceMap\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: this._declaration(text, node), index: node.location.start.index });\n }\n }\n }\n\n private _getGlobalMacroDeclarations(macros: readonly ASTNode.GlobalDeclaration[], out: ICodeSegment[]): void {\n const context = this.context;\n const referencedGlobalMacroASTs = context._referencedGlobalMacroASTs;\n referencedGlobalMacroASTs.length = 0;\n\n for (const symbol of context._referencedGlobalSymbols) {\n if (symbol.isInMacroBranch) referencedGlobalMacroASTs.push(symbol.astNode!);\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 const 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 const text =\n this.context._referencedGlobalMacroASTs.indexOf(child) !== -1\n ? this.getCachedCode(child)\n : this._forwardFunctionDeclarations.get(child);\n if (text !== undefined) {\n out.push({\n text: this._declaration(text, child),\n index: child.location.start.index\n });\n }\n } else if (child instanceof ASTNode.StructSpecifier) {\n if (this._forwardStructIndices.has(child)) {\n const text = this._declaration(\"\", child);\n if (text) out.push({ text, index: child.location.start.index });\n continue;\n }\n const context = this.context;\n const stage = context.stage;\n if (\n context._referencedGlobalMacroASTs.indexOf(child) !== -1 ||\n (stage === EShaderStage.VERTEX\n ? context.hasStructRole(child, ShaderStructRole.Attribute) ||\n context.hasStructRole(child, ShaderStructRole.Varying)\n : context.hasStructRole(child, ShaderStructRole.Varying) ||\n context.hasStructRole(child, ShaderStructRole.Mrt))\n ) {\n out.push({\n text: this._declaration(this.getCachedCode(child) ?? \"\", child),\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 (this.context._referencedGlobalMacroASTs.indexOf(variableDeclaration) !== -1) {\n out.push({\n text: this._declaration(\n this._forwardVariableIndices.has(variableDeclaration)\n ? \"\"\n : `${this.getCachedCode(variableDeclaration) ?? \"\"};`,\n variableDeclaration\n ),\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 /** Ownership of the declaration currently generating dependencies. @internal */\n protected get currentDeclarationOwner(): DeferredDeclarationOwnership | undefined {\n return this._currentDeclaration && this._declarationOwners.get(this._currentDeclaration);\n }\n\n private _referenceDeclaration(from: number, node: TreeNode): void {\n const owner = this._declarationOwners.get(node);\n if (!owner) return;\n let targets = this._declarationReferences.get(from);\n if (!targets) this._declarationReferences.set(from, (targets = new Set()));\n targets.add(owner.id);\n }\n\n private _emitDeclarationReferences(out: ICodeSegment[]): void {\n for (const [from, targets] of this._declarationReferences) {\n for (const to of targets) out.push({ text: ShaderInstructionEncoder.reference(from, to), index: -1 });\n }\n }\n\n private _declaration(text: string, node: TreeNode, activate = true): string {\n return ShaderInstructionEncoder.declaration(text, this._declarationOwners.get(node), activate);\n }\n}\n","import { BaseToken } from \"@galacean/engine-shader-parser/internal\";\nimport { ASTNode } from \"@galacean/engine-shader-parser/internal\";\nimport { ParserUtils, ShaderStructRole } from \"@galacean/engine-shader-parser/internal\";\nimport { StructProp } from \"@galacean/engine-shader-parser/internal\";\nimport { GLESVisitor } from \"./GLESVisitor\";\n\nexport class GLES100Visitor extends GLESVisitor {\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 \"\";\n }\n\n override visitPostfixExpression(node: ASTNode.PostfixExpression): string {\n const { children } = node;\n const postExpr = children[0];\n const context = this.context;\n const directRoot =\n postExpr instanceof ASTNode.PostfixExpression\n ? ParserUtils.unwrapBareIdentifier(postExpr, { allowParens: true })\n : undefined;\n const directSymbols = directRoot?.resolvedValueSymbols() ?? [];\n const unresolvedName =\n postExpr instanceof ASTNode.PostfixExpression ? ParserUtils.extractDirectIdentLexeme(postExpr) : null;\n const directRole = directRoot\n ? directSymbols.length\n ? context.getStructVarRole(directSymbols)\n : unresolvedName\n ? context.getUnresolvedStructVarRole(unresolvedName)\n : undefined\n : undefined;\n if (directRole === ShaderStructRole.Mrt) {\n const propReferenced = children[2] as BaseToken;\n const prop = context.mrtList.find((item) => item.ident.lexeme === propReferenced.lexeme);\n // The parser already validated struct fields (UndeclaredStructMember); a miss here is an\n // already-errored shader, so emit nothing rather than re-report.\n if (!prop) return \"\";\n return `gl_FragData[${prop.mrtIndex!}]`;\n }\n return super.visitPostfixExpression(node);\n }\n\n override visitJumpStatement(node: ASTNode.JumpStatement): string {\n const mode = this.context.getFragmentReturnMode(node);\n const terminal = this.context.isTerminalInterfaceReturn(node);\n if (mode === \"mrt\") return terminal ? \"\" : \"return;\";\n if (mode === \"color\") {\n const expression = node.children[1] as ASTNode.Expression;\n const assignment = `gl_FragColor = ${expression.codeGen(this)};`;\n return terminal ? assignment : `{ ${assignment} return; }`;\n }\n return super.visitJumpStatement(node);\n }\n}\n","import { EShaderStage } from \"@galacean/engine-shader-parser/internal\";\nimport { ASTNode } from \"@galacean/engine-shader-parser/internal\";\nimport { ShaderData } from \"@galacean/engine-shader-parser/internal\";\nimport { ShaderBuiltinSemantic } from \"@galacean/engine-shader-parser/internal\";\nimport { ParserUtils } from \"@galacean/engine-shader-parser/internal\";\nimport { ShaderEntryPointInfo } from \"@galacean/engine-shader-parser/internal\";\nimport { TreeNode } from \"@galacean/engine-shader-parser/internal\";\nimport { StructProp } from \"@galacean/engine-shader-parser/internal\";\nimport { GLESVisitor } from \"./GLESVisitor\";\nimport { ICodeSegment } from \"./types\";\nimport type { DeferredDeclarationOwnership } from \"@galacean/engine-shader-parser/internal\";\nimport { ShaderInstructionEncoder } from \"../ShaderInstructionEncoder\";\n\nconst V3_GL_FragColor = \"GS_glFragColor\";\nconst V3_GL_FragData = \"GS_glFragData\";\n\nexport class GLES300Visitor extends GLESVisitor {\n private readonly _outputDeclarations = new Map<\n string,\n { text: string; owners: Map<number, DeferredDeclarationOwnership>; unconditional: boolean }\n >();\n private _fragDataArrayRequired = false;\n private readonly _fragDataIndices = new Map<ASTNode.PostfixExpression, number>();\n private readonly _scannedFragmentFunctions = new Set<ShaderEntryPointInfo[\"functions\"][number]>();\n\n override reset(): void {\n super.reset();\n\n this._outputDeclarations.clear();\n this._fragDataArrayRequired = false;\n this._fragDataIndices.clear();\n this._scannedFragmentFunctions.clear();\n }\n\n override getOtherGlobal(data: ShaderData, out: ICodeSegment[]): void {\n super.getOtherGlobal(data, out);\n\n for (const output of this._outputDeclarations.values()) {\n out.push({\n text: output.unconditional\n ? output.text\n : ShaderInstructionEncoder.sharedDeclaration(output.text, Array.from(output.owners.values())),\n // A source macro block can start at zero and contain the first output use.\n index: -1\n });\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 = this.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 || typeSpecifier.structDependencies.length) {\n // Struct constructors still need the shared type-dependency visitor.\n return super.visitFunctionIdentifier(node);\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 }\n return ident;\n }\n\n override visitVariableIdentifier(node: ASTNode.VariableIdentifier): string {\n const context = this.context;\n if (context.stage === EShaderStage.FRAGMENT && node.builtinSemantic === ShaderBuiltinSemantic.FragmentOutput0) {\n this._registerFragColorVariable();\n return V3_GL_FragColor;\n }\n if (context.stage === EShaderStage.FRAGMENT && node.builtinSemantic === ShaderBuiltinSemantic.FragmentDepth) {\n return \"gl_FragDepth\";\n }\n if (context.stage === EShaderStage.FRAGMENT && node.builtinSemantic === ShaderBuiltinSemantic.FragmentOutputArray) {\n this._registerFragDataArray();\n return V3_GL_FragData;\n }\n return super.visitVariableIdentifier(node);\n }\n\n override visitPostfixExpression(node: ASTNode.PostfixExpression): string {\n if (!this._fragDataArrayRequired) {\n const index = this._fragDataIndices.get(node);\n if (index !== undefined) return this._registerFragDataVariable(index);\n }\n return super.visitPostfixExpression(node);\n }\n\n override visitJumpStatement(node: ASTNode.JumpStatement): string {\n const mode = this.context.getFragmentReturnMode(node);\n const terminal = this.context.isTerminalInterfaceReturn(node);\n if (mode === \"mrt\") return terminal ? \"\" : \"return;\";\n if (mode === \"color\") {\n this._registerFragColorVariable();\n\n const expression = node.children[1] as ASTNode.Expression;\n const assignment = `${V3_GL_FragColor} = ${expression.codeGen(this)};`;\n return terminal ? assignment : `{ ${assignment} return; }`;\n }\n return super.visitJumpStatement(node);\n }\n\n private _registerFragColorVariable(): void {\n this._registerOutput(V3_GL_FragColor, `out vec4 ${V3_GL_FragColor};`);\n }\n\n private _registerOutput(name: string, text: string): void {\n let output = this._outputDeclarations.get(name);\n if (!output) this._outputDeclarations.set(name, (output = { text, owners: new Map(), unconditional: false }));\n const owner = this.currentDeclarationOwner;\n if (owner) output.owners.set(owner.id, owner);\n else output.unconditional = true;\n }\n\n protected override prepareFragment(\n entryInfo: ShaderEntryPointInfo,\n outerGlobalMacroStatements: readonly ASTNode.GlobalDeclaration[]\n ): void {\n const pending = entryInfo.functions.slice();\n while (pending.length) {\n const fn = pending.pop()!;\n if (this._scannedFragmentFunctions.has(fn)) continue;\n this._scannedFragmentFunctions.add(fn);\n this._scanFragmentOutputs(fn.astNode);\n pending.push(...fn.calledFunctions);\n }\n for (const macro of outerGlobalMacroStatements) this._scanFragmentOutputs(macro);\n }\n\n private _scanFragmentOutputs(node: TreeNode): void {\n if (node instanceof ASTNode.PostfixExpression && node.children.length === 4) {\n const base = node.children[0];\n const index = node.children[2];\n if (\n base instanceof TreeNode &&\n index instanceof TreeNode &&\n ParserUtils.unwrapBareIdentifier(base, { allowParens: true })?.builtinSemantic ===\n ShaderBuiltinSemantic.FragmentOutputArray\n ) {\n const value = ParserUtils.constIntegerValue(index);\n if (value === undefined || value < 0) this._fragDataArrayRequired = true;\n else this._fragDataIndices.set(node, value);\n this._scanFragmentOutputs(index);\n return;\n }\n }\n if (\n node instanceof ASTNode.VariableIdentifier &&\n node.builtinSemantic === ShaderBuiltinSemantic.FragmentOutputArray\n ) {\n this._fragDataArrayRequired = true;\n return;\n }\n for (const child of node.children) {\n if (child instanceof TreeNode) this._scanFragmentOutputs(child);\n }\n }\n\n private _registerFragDataArray(): void {\n this._registerOutput(V3_GL_FragData, `layout(location = 0) out vec4 ${V3_GL_FragData}[gl_MaxDrawBuffers];`);\n }\n\n private _registerFragDataVariable(index: number): string {\n const name = `${V3_GL_FragData}${index}`;\n this._registerOutput(name, `layout(location = ${index}) out vec4 ${name};`);\n return name;\n }\n}\n","import type { IShaderInfo } from \"@galacean/engine-design\";\nimport { Logger, ReturnableObjectPool, ShaderLanguage } from \"@galacean/engine-core\";\nimport {\n GSError,\n GLESShaderInfo,\n type ShaderClueIR,\n type ShaderCoreInfo\n} from \"@galacean/engine-shader-parser/internal\";\nimport { GLES100Visitor, GLES300Visitor } from \"./codeGen\";\nimport type { GLESVisitor } from \"./codeGen/GLESVisitor\";\n\n/**\n * Static internal facade for GLES source generation.\n * @internal\n */\nexport class GLESBackend {\n private static readonly _gles100VisitorPool = new ReturnableObjectPool(GLES100Visitor);\n private static readonly _gles300VisitorPool = new ReturnableObjectPool(GLES300Visitor);\n\n private constructor() {}\n\n /**\n * Generates one GLES program with request-owned visitor state.\n * @param ir - Request-owned neutral parser IR consumed read-only.\n * @param coreInfo - Entry and stage-interface facts derived from the same IR.\n * @param target - GLES language version to emit.\n * @returns Generated vertex and fragment source.\n * @internal\n */\n static generate(ir: ShaderClueIR, coreInfo: ShaderCoreInfo, target: ShaderLanguage): IShaderInfo | undefined {\n const glesInfo = new GLESShaderInfo(ir, coreInfo);\n if (glesInfo.mrtOutputIssues.length || glesInfo.invalidMrtReturnLocations.length) {\n Logger.error(\n \"MRT outputs require unique non-negative locations, vec4 members, and returns through an assigned struct variable.\"\n );\n return undefined;\n }\n if (glesInfo.invalidVaryingReturnLocations.length) {\n Logger.error(\"Varying vertex entries must return a struct variable or same-type function result.\");\n return undefined;\n }\n if (glesInfo.structMemberOwnerIssues.length) {\n Logger.error(\"A struct member reference cannot be lowered safely across runtime macro expansion.\");\n return undefined;\n }\n\n return target === ShaderLanguage.GLSLES100\n ? GLESBackend._generateWithPool(GLESBackend._gles100VisitorPool, ir, coreInfo)\n : GLESBackend._generateWithPool(GLESBackend._gles300VisitorPool, ir, coreInfo);\n }\n\n private static _generateWithPool<T extends GLESVisitor>(\n pool: ReturnableObjectPool<T>,\n ir: ShaderClueIR,\n coreInfo: ShaderCoreInfo\n ): IShaderInfo | undefined {\n const visitor = pool.get();\n try {\n return visitor.generate(ir, coreInfo);\n } catch (error) {\n visitor.dispose();\n if (!(error instanceof GSError)) throw error;\n Logger.error(`${error.file ? `${error.file}: ` : \"\"}${error.code ? `${error.code}: ` : \"\"}${error.toString()}`);\n return undefined;\n } finally {\n pool.return(visitor);\n }\n }\n}\n","import { Logger, ShaderLanguage } from \"@galacean/engine-core\";\nimport type { IRenderStates, IShaderSource } from \"@galacean/engine-design\";\nimport type { IShaderProgramSource } from \"@galacean/engine-design/types/shader-compiler/IShaderProgramSource\";\nimport { Color } from \"@galacean/engine-math\";\nimport {\n GSError,\n ShaderCoreInfo,\n type ParsedShaderPassData,\n type ShaderClueIR,\n type ShaderSourceParseResult\n} from \"@galacean/engine-shader-parser/internal\";\nimport { GLESBackend } from \"./GLESBackend\";\nimport { ShaderInstructionEncoder } from \"./ShaderInstructionEncoder\";\n\nclass ShaderSourceParseError extends Error {\n constructor(readonly errors: readonly Error[]) {\n super(errors.map((error) => error.toString()).join(\"\\n\"));\n this.name = \"ShaderSourceParseError\";\n }\n}\n\n/**\n * Rejects a partial ShaderLab structure when source parsing produced errors.\n * @param result - ShaderLab source-parser result.\n * @returns Complete parsed ShaderLab structure.\n * @throws ShaderSourceParseError when structural source diagnostics exist.\n * @internal\n */\nexport function requireValidShaderSource(result: ShaderSourceParseResult): IShaderSource {\n if (result.errors.length) throw new ShaderSourceParseError(result.errors);\n return result.shaderSource;\n}\n\n/**\n * Generates one backend program from a parser-owned pass without reparsing it.\n * @param parsed - Neutral parser output.\n * @param vertexEntry - Vertex entry name.\n * @param fragmentEntry - Fragment entry name.\n * @param backend - Target GLES language.\n * @param coreInfo - Optional stage facts already derived from this exact parser result.\n * @returns Generated program, or `undefined` when parser or entry admission fails.\n * @internal\n */\nexport function generateParsedShaderPassData(\n parsed: ParsedShaderPassData,\n vertexEntry: string,\n fragmentEntry: string,\n backend: ShaderLanguage,\n coreInfo?: ShaderCoreInfo\n): IShaderProgramSource | undefined {\n if (parsed.blockingErrors.length) {\n for (const error of parsed.blockingErrors) Logger.error(error.toString());\n return undefined;\n }\n if (!parsed.ir) return undefined;\n const resolvedCoreInfo = coreInfo ?? ShaderCoreInfo.create(parsed.ir, vertexEntry, fragmentEntry);\n return generateShaderProgram(parsed.ir, resolvedCoreInfo, backend, parsed.preprocessorExpressions);\n}\n\nfunction generateShaderProgram(\n ir: ShaderClueIR,\n coreInfo: ShaderCoreInfo,\n backend: ShaderLanguage,\n preprocessorExpressions: ParsedShaderPassData[\"preprocessorExpressions\"]\n): IShaderProgramSource | undefined {\n if (!coreInfo.vertexEntry.functions.length) {\n Logger.error(`Vertex entry function '${coreInfo.vertexEntry.name}' not found.`);\n return undefined;\n }\n if (!coreInfo.fragmentEntry.functions.length) {\n Logger.error(`Fragment entry function '${coreInfo.fragmentEntry.name}' not found.`);\n return undefined;\n }\n if (coreInfo.vertexEntry.hasDefiniteAmbiguity) {\n Logger.error(`Vertex entry function '${coreInfo.vertexEntry.name}' resolves to multiple declarations.`);\n return undefined;\n }\n if (coreInfo.fragmentEntry.hasDefiniteAmbiguity) {\n Logger.error(`Fragment entry function '${coreInfo.fragmentEntry.name}' resolves to multiple declarations.`);\n return undefined;\n }\n if (coreInfo.roleConflicts.length) {\n Logger.error(\"A shader IO struct cannot serve multiple stage-interface roles.\");\n return undefined;\n }\n const result = GLESBackend.generate(ir, coreInfo, backend);\n if (result) {\n result.vertexShaderInstructions = ShaderInstructionEncoder.parse(result.vertex, preprocessorExpressions);\n result.fragmentShaderInstructions = ShaderInstructionEncoder.parse(result.fragment, preprocessorExpressions);\n result.vertex = ShaderInstructionEncoder.source(result.vertex);\n result.fragment = ShaderInstructionEncoder.source(result.fragment);\n }\n return result;\n}\n\n/**\n * Converts parser-owned render states into JSON-safe precompile data.\n * @param renderStates - Parsed render-state maps.\n * @returns Serializable constant and variable maps.\n * @internal\n */\nexport function 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 { constantMap, variableMap: renderStates.variableMap };\n}\n\n/**\n * Formats a parser failure with include-source attribution.\n * @param error - Parser failure.\n * @returns User-facing error text.\n * @internal\n */\nexport function formatShaderError(error: Error): string {\n const text = error.toString();\n return error instanceof GSError && error.file ? `${error.file}: ${text}` : text;\n}\n","import { ShaderLanguage } from \"@galacean/engine-core\";\nimport type { IShaderSource } from \"@galacean/engine-design\";\nimport type { IShaderProgramSource } from \"@galacean/engine-design/types/shader-compiler/IShaderProgramSource\";\nimport {\n getParsedShaderPassPayload,\n normalizeShaderIncludeMap,\n ParserObjectPool,\n createRuntimeShaderTargetParser,\n parseRuntimeShaderPass,\n type IncludeMap,\n type ChunkOutputCache,\n ShaderSourceParser\n} from \"@galacean/engine-shader-parser/internal\";\nimport type { ParsedShaderPass } from \"@galacean/engine-shader-parser/shared\";\nimport { generateParsedShaderPassData, requireValidShaderSource } from \"./ShaderCompilation\";\n\n/**\n * Compiles ShaderLab sources into runtime GLES programs.\n *\n * Source parsing and backend generation remain independent of authoring diagnostics; structural\n * source errors reject compilation before partial runtime programs can be created. Offline `.shaderc`\n * validation lives in the bundler-only precompiler entry and is excluded from this runtime package surface.\n */\nexport class ShaderCompiler {\n private _includeMap: IncludeMap = {};\n private readonly _chunkOutputCache: ChunkOutputCache = new Map();\n private readonly _sourceParserObjectPool = new ParserObjectPool();\n private readonly _parserObjectPool = new ParserObjectPool();\n private readonly _runtimeParser = createRuntimeShaderTargetParser(this._parserObjectPool);\n\n /**\n * Replaces the `#include` lookup table and clears the derived chunk cache.\n * @param includeMap - Canonical include paths mapped to shader chunks.\n * @internal\n */\n _setIncludeMap(includeMap: IncludeMap): void {\n this._includeMap = normalizeShaderIncludeMap(includeMap);\n this._chunkOutputCache.clear();\n }\n\n /**\n * Parses one ShaderLab document into its source structure.\n * @param sourceCode - Complete ShaderLab source.\n * @returns Parsed subshaders, passes, entries, and render states.\n * @throws ShaderSourceParseError when source-structure diagnostics were produced.\n * @internal\n */\n _parseShaderSource(sourceCode: string): IShaderSource {\n this._chunkOutputCache.clear();\n return requireValidShaderSource(ShaderSourceParser.parseStrict(sourceCode, this._sourceParserObjectPool));\n }\n\n /**\n * Parses and generates one runtime ShaderLab pass.\n * @param source - GLSL source contained by the pass.\n * @param vertexEntry - Vertex entry function name.\n * @param fragmentEntry - Fragment entry function name.\n * @param backend - Target GLES language version.\n * @param sourceFile - Optional logical source location used for relative includes and attribution.\n * @param sourceScopeStarts - Inherited ShaderLab content boundaries from source parsing.\n * @returns Generated stage program, or `undefined` after a blocking parser or backend error.\n * @internal\n */\n _parseShaderPass(\n source: string,\n vertexEntry: string,\n fragmentEntry: string,\n backend: ShaderLanguage,\n sourceFile?: string,\n sourceScopeStarts?: readonly number[]\n ): IShaderProgramSource | undefined {\n const parsed = parseRuntimeShaderPass(\n source,\n this._includeMap,\n this._chunkOutputCache,\n sourceFile,\n this._parserObjectPool,\n this._runtimeParser,\n sourceScopeStarts\n );\n return generateParsedShaderPassData(parsed, vertexEntry, fragmentEntry, backend);\n }\n\n /**\n * Generates backend source from a pass returned by `ShaderAnalyzer.analyze()` without parsing it again.\n * @param pass - Opaque parsed-pass handle from the analyzer result.\n * @param backend - Target GLES language version.\n * @returns Variant-selectable instructions and unselected text for inspection, or `undefined` on validation failure.\n * @throws TypeError when `pass` was not created by the compatible shader-parser package instance.\n */\n generate(pass: ParsedShaderPass, backend: ShaderLanguage): IShaderProgramSource | undefined {\n const { data, vertexEntry, fragmentEntry, coreInfo } = getParsedShaderPassPayload(pass);\n return generateParsedShaderPassData(data, vertexEntry, fragmentEntry, backend, coreInfo);\n }\n}\n","import { Logger } from \"@galacean/engine-core\";\n\nexport { ShaderCompiler } from \"./ShaderCompiler\";\n\nexport { GSError, GSErrorName } from \"@galacean/engine-shader-parser/internal\";\n\n/**\n * Version of the shader compiler package, replaced with the package version during builds.\n */\nexport const version = `__buildVersion`;\n\nLogger.info(`Galacean Engine Shader Compiler Version: ${version}`);\n"],"names":["VisitorContext","_lookupSymbol","SymbolInfo","_structRoles","Map","_vertexUnresolvedVariableRoles","_fragmentUnresolvedVariableRoles","_vertexAmbiguousVariableNames","Set","_fragmentAmbiguousVariableNames","attributeStructs","attributeList","varyingStructs","varyingList","mrtStructs","mrtList","_referencedGlobalSymbols","_referencedGlobalMacroASTs","_structVariableRoles","codeCache","fragmentReturnModes","terminalInterfaceReturns","reset","resetAll","clear","length","_referencedAttributeList","Object","create","_referencedVaryingList","_referencedMRTList","_referencedGlobals","_globalSymbolQueries","_passSymbolTable","undefined","getStructRole","declarations","resolvedRole","declaration","role","get","hasStructRole","registerStructTypes","structs","struct","set","registerStructVar","variable","stage","roles","EShaderStage","VERTEX","ambiguous","name","ident","has","existing","delete","add","getUnresolvedStructVarRole","variableName","getStructVarRole","symbols","symbol","VarSymbol","registerFragmentReturn","statement","mode","getFragmentReturnMode","registerTerminalInterfaceReturn","isTerminalInterfaceReturn","referenceAttribute","_referenceProp","lexeme","referenceVarying","referenceMRTProp","referenceGlobal","type","queries","getSymbols","namedSymbols","push","onReferenceGlobal","list","refList","filter","item","onReferenceStructProps","TempArray","array","Array","dispose","CodeGenVisitor","context","cache","node","code","getCachedCode","defaultCodeGen","children","pool","_tmpArrayPool","ret","child","BaseToken","codeGen","result","join","return","visitPostfixExpression","derivationLength","postExpr","prop","directRoot","ParserUtils","unwrapBareIdentifier","allowParens","resolvedValueSymbols","unresolvedName","extractDirectIdentLexeme","ShaderStructRole","Attribute","Varying","identNode","indexNode","visitVariableIdentifier","referenceGlobalSymbolNames","ESymbolType","Any","resolvedSymbols","FnSymbol","referenceFunction","location","start","index","_branch","getLexeme","referenceIndex","branch","FN","visitFunctionCall","call","fnSymbol","fnSymbols","paramList","ASTNode","FunctionCallParameterList","astNodes","paramNodes","finalSymbol","find","candidate","equal","paramInfoList","astNode","protoType","parameterList","params","_","i","parameter","ParameterDeclaration","paramsCode","MacroCallArgBlock","visitMacroCallFunction","isFunctionLikeMacro","aliasesNonBuiltinIdent","arg","AssignmentExpression","variableParam","argNode","macroName","visitStatementList","visitMacroDefine","paramsLexeme","isFunction","paramsToken","valueCode","valueExpression","visitSingleDeclaration","visitGlobalVariableDeclaration","fullType","FullySpecifiedType","typeSpecifier","isCustom","declarator","STRUCT","visitDeclaration","InitDeclaratorList","first","SingleDeclaration","Mrt","visitFunctionParameterList","parameterInfoList","out","MacroParamBlock","visitFunctionHeader","returnType","structDeclarations","visitJumpStatement","cmd","Keyword","RETURN","expr","Expression","returnVar","unwrapNodeByType","NoneTerminal","variable_identifier","returnFnCall","function_call","calledFunction","returnDeclarations","visitFunctionIdentifier","visitTypeSpecifier","visitStructSpecifier","isVaryingStruct","indexOf","isAttributeStruct","isMRTStruct","macroExpressions","map","text","propList","getVaryingProp","getAttributeProp","getMRTProp","sort","a","b","visitFunctionDefinition","fnNode","fnName","terminal","lastStatement","statements","JumpStatement","stageEntry","ReturnableObjectPool","ShaderInstructionEncoder","owner","activate","activation","id","group","sourceScope","sharedDeclaration","owners","reference","from","to","source","replace","parse","glsl","preprocessorExpressions","instructions","pos","backfillStack","directiveStart","_findDirectiveStart","_pushText","lineEnd","_findLogicalLineEnd","line","substring","charCodeAt","kind","charAt","fields","slice","split","Number","ShaderPreprocessorDirective","Declaration","Reference","ids","match","_DIRECTIVE_RE","exec","keyword","rest","trim","idx","IfDef","IfNdef","cond","_parseCondition","_pushConditionInstruction","stack","prevIdx","elseIdx","Else","_backfillJump","endifIdx","Endif","pop","afterEndif","j","inst","funcMatch","_FUNC_MACRO_RE","p","DefineFunc","_stripLineComment","separator","_findInlineWhitespace","Define","DefineVal","Undef","t","m","IfCmp","op","v","IfExpr","expression","parsePreprocessorExpression","error","certain","hasExpandableIdentifier","e","Error","message","evaluationError","compact","toPreprocessorCondition","condition","c","nl","beforeBreak","charCode","last","directive","Text","OwnedText","every","target","onlyPlaceholder","s","trimEnd","GLESVisitor","_globalCodeArray","_forwardFunctionDeclarations","_forwardStructIndices","_structCodeSegments","_forwardVariableIndices","_variableCodeSegments","_declarationOwners","_deferredPrototypes","_declarationReferences","_outerMacroDeclarations","globalCodeArray","_currentDeclaration","getOtherGlobal","data","globalPrecisions","precision","generate","ir","coreInfo","program","shaderData","symbolTable","outerGlobalMacroDeclarations","io","structVariableRoles","forEach","vertexStructVariableRoles","fragmentStructVariableRoles","FRAGMENT","_sourceIR","deferredDeclarationOwnership","size","nextId","nextGroup","Math","max","currentDeclarationOwner","_referenceDeclaration","propDeclarations","props","unsupportedDeferredDeclarations","mapExpandedShaderError","GSError","GSErrorName","CompilationError","sourceMap","vertex","_vertexMain","vertexEntry","fragment","_fragmentMain","fragmentEntry","entryInfo","_preRegisterGlobalMacroRefs","_getGlobalSymbol","_getCustomStruct","_getGlobalMacroDeclarations","_emitDeclarationReferences","globalCode","outerGlobalMacroStatements","prepareFragment","functions","VEC4","some","_registerFragmentReturns","macros","macro","_walkMacroDefineTokens","MacroDefine","TreeNode","previous","FunctionDefinition","sm","codeGenResult","VAR","isInMacroBranch","segment","_declaration","StructSpecifier","VariableDeclaration","_getForwardDeclarations","values","definition","candidates","replacement","nextOwner","prototype","anchor","_isContextIndependent","_hasDeclarationContextBarrier","_unsupportedForwardDeclaration","outer","end","typeAnchor","_prepareForwardTypes","typeInfo","compatible","_canBranchesOverlap","branchSignature","preceding","canInheritanceBranchesCover","signature","_getForwardSignature","outerMacro","tokens","visit","IN","parameters","left","right","getLexicalDeclarationCoexistence","isUniform","dataType","min","Infinity","includes","oldMacro","splice","guarded","entry","segments","parent","GlobalDeclaration","final","FunctionIdentifier","FunctionCallGeneric","structDependencies","types","hoistAnchor","needsHoist","dependencyAnchor","property","VariableIdentifier","MacroCallSymbol","MacroCallFunction","TypeSpecifier","MACRO_IF","MACRO_DEFINE_PARAMS","includeMacros","inFunction","PrecisionSpecifier","MACRO_UNDEF","MACRO_DEFINE_EXPRESSION","structNodes","referencedGlobalMacroASTs","GlobalMacroIfStatement","_visitGlobalMacroIfStatement","VariableDeclarationList","variableDeclarations","variableDeclaration","targets","GLES100Visitor","typeLexeme","PostfixExpression","directSymbols","directRole","propReferenced","mrtIndex","assignment","V3_GL_FragColor","V3_GL_FragData","GLES300Visitor","_outputDeclarations","_fragDataArrayRequired","_fragDataIndices","_scannedFragmentFunctions","output","unconditional","qualifier","builtinSemantic","ShaderBuiltinSemantic","FragmentOutput0","_registerFragColorVariable","FragmentDepth","FragmentOutputArray","_registerFragDataArray","_registerFragDataVariable","_registerOutput","pending","fn","_scanFragmentOutputs","calledFunctions","base","value","constIntegerValue","GLESBackend","glesInfo","GLESShaderInfo","mrtOutputIssues","invalidMrtReturnLocations","Logger","invalidVaryingReturnLocations","structMemberOwnerIssues","ShaderLanguage","GLSLES100","_generateWithPool","_gles100VisitorPool","_gles300VisitorPool","visitor","file","toString","ShaderSourceParseError","errors","requireValidShaderSource","shaderSource","generateParsedShaderPassData","parsed","backend","blockingErrors","resolvedCoreInfo","ShaderCoreInfo","generateShaderProgram","hasDefiniteAmbiguity","roleConflicts","vertexShaderInstructions","fragmentShaderInstructions","ShaderCompiler","_includeMap","_chunkOutputCache","_sourceParserObjectPool","ParserObjectPool","_parserObjectPool","_runtimeParser","createRuntimeShaderTargetParser","_setIncludeMap","includeMap","normalizeShaderIncludeMap","_parseShaderSource","sourceCode","ShaderSourceParser","parseStrict","_parseShaderPass","sourceFile","sourceScopeStarts","parseRuntimeShaderPass","pass","getParsedShaderPassPayload","version","info"],"mappings":"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"}