@galacean/engine-shaderlab 1.6.5 → 1.6.6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/browser.js +43 -18
- package/dist/browser.js.map +1 -1
- package/dist/browser.min.js +1 -1
- package/dist/browser.min.js.map +1 -1
- package/dist/browser.verbose.js +44 -19
- package/dist/browser.verbose.js.map +1 -1
- package/dist/browser.verbose.min.js +1 -1
- package/dist/browser.verbose.min.js.map +1 -1
- package/dist/main.js +43 -18
- package/dist/main.js.map +1 -1
- package/dist/main.verbose.js +44 -19
- package/dist/main.verbose.js.map +1 -1
- package/dist/module.js +43 -18
- package/dist/module.js.map +1 -1
- package/dist/module.verbose.js +44 -19
- package/dist/module.verbose.js.map +1 -1
- package/package.json +4 -4
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"browser.verbose.min.js","sources":["../../../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/_create_for_of_iterator_helper_loose.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/_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/_create_class.js","../../../node_modules/.pnpm/tslib@2.8.1/node_modules/tslib/tslib.es6.mjs","../src/common/ShaderRange.ts","../src/common/types.ts","../src/common/enums/Keyword.ts","../src/GSError.ts","../src/parser/GrammarSymbol.ts","../src/lalr/types.ts","../src/common/enums/ShaderStage.ts","../src/parser/symbolTable/SymbolInfo.ts","../src/parser/AST.ts","../src/macroProcessor/constants.ts","../src/common/ShaderPosition.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/_wrap_native_super.js","../../../node_modules/.pnpm/@swc+helpers@0.5.15/node_modules/@swc/helpers/esm/_is_native_function.js","../src/ShaderLabUtils.ts","../src/common/BaseToken.ts","../src/lalr/Production.ts","../src/lalr/Utils.ts","../src/lalr/StateItem.ts","../src/lalr/State.ts","../src/ParserUtils.ts","../src/Preprocessor.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/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/codeGen/VisitorContext.ts","../src/TempArray.ts","../src/codeGen/CodeGenVisitor.ts","../src/codeGen/GLESVisitor.ts","../src/codeGen/GLES100.ts","../src/codeGen/GLES300.ts","../src/common/BaseLexer.ts","../src/lexer/Lexer.ts","../../../node_modules/.pnpm/@swc+helpers@0.5.15/node_modules/@swc/helpers/esm/_type_of.js","../src/macroProcessor/MacroDefine.ts","../src/macroProcessor/sourceMap/index.ts","../src/macroProcessor/MacroParserLexer.ts","../src/macroProcessor/Utils.ts","../src/macroProcessor/MacroParser.ts","../src/lalr/LALR1.ts","../src/parser/Grammar.ts","../src/lalr/CFG.ts","../src/parser/ShaderTargetParser.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/ShaderLab.ts","../src/index.ts"],"sourcesContent":["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 _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","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","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 _defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n\n if (\"value\" in descriptor) descriptor.writable = true;\n\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n}\nfunction _create_class(Constructor, protoProps, staticProps) {\n if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n if (staticProps) _defineProperties(Constructor, staticProps);\n\n return Constructor;\n}\nexport { _create_class as _ };\n","/******************************************************************************\nCopyright (c) Microsoft Corporation.\n\nPermission to use, copy, modify, and/or distribute this software for any\npurpose with or without fee is hereby granted.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\nPERFORMANCE OF THIS SOFTWARE.\n***************************************************************************** */\n/* global Reflect, Promise, SuppressedError, Symbol, Iterator */\n\nvar extendStatics = function(d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n};\n\nexport function __extends(d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n}\n\nexport var __assign = function() {\n __assign = Object.assign || function __assign(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n }\n return t;\n }\n return __assign.apply(this, arguments);\n}\n\nexport function __rest(s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\n t[p[i]] = s[p[i]];\n }\n return t;\n}\n\nexport function __decorate(decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n}\n\nexport function __param(paramIndex, decorator) {\n return function (target, key) { decorator(target, key, paramIndex); }\n}\n\nexport function __esDecorate(ctor, descriptorIn, decorators, contextIn, initializers, extraInitializers) {\n function accept(f) { if (f !== void 0 && typeof f !== \"function\") throw new TypeError(\"Function expected\"); return f; }\n var kind = contextIn.kind, key = kind === \"getter\" ? \"get\" : kind === \"setter\" ? \"set\" : \"value\";\n var target = !descriptorIn && ctor ? contextIn[\"static\"] ? ctor : ctor.prototype : null;\n var descriptor = descriptorIn || (target ? Object.getOwnPropertyDescriptor(target, contextIn.name) : {});\n var _, done = false;\n for (var i = decorators.length - 1; i >= 0; i--) {\n var context = {};\n for (var p in contextIn) context[p] = p === \"access\" ? {} : contextIn[p];\n for (var p in contextIn.access) context.access[p] = contextIn.access[p];\n context.addInitializer = function (f) { if (done) throw new TypeError(\"Cannot add initializers after decoration has completed\"); extraInitializers.push(accept(f || null)); };\n var result = (0, decorators[i])(kind === \"accessor\" ? { get: descriptor.get, set: descriptor.set } : descriptor[key], context);\n if (kind === \"accessor\") {\n if (result === void 0) continue;\n if (result === null || typeof result !== \"object\") throw new TypeError(\"Object expected\");\n if (_ = accept(result.get)) descriptor.get = _;\n if (_ = accept(result.set)) descriptor.set = _;\n if (_ = accept(result.init)) initializers.unshift(_);\n }\n else if (_ = accept(result)) {\n if (kind === \"field\") initializers.unshift(_);\n else descriptor[key] = _;\n }\n }\n if (target) Object.defineProperty(target, contextIn.name, descriptor);\n done = true;\n};\n\nexport function __runInitializers(thisArg, initializers, value) {\n var useValue = arguments.length > 2;\n for (var i = 0; i < initializers.length; i++) {\n value = useValue ? initializers[i].call(thisArg, value) : initializers[i].call(thisArg);\n }\n return useValue ? value : void 0;\n};\n\nexport function __propKey(x) {\n return typeof x === \"symbol\" ? x : \"\".concat(x);\n};\n\nexport function __setFunctionName(f, name, prefix) {\n if (typeof name === \"symbol\") name = name.description ? \"[\".concat(name.description, \"]\") : \"\";\n return Object.defineProperty(f, \"name\", { configurable: true, value: prefix ? \"\".concat(prefix, \" \", name) : name });\n};\n\nexport function __metadata(metadataKey, metadataValue) {\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\n}\n\nexport function __awaiter(thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n}\n\nexport function __generator(thisArg, body) {\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g = Object.create((typeof Iterator === \"function\" ? Iterator : Object).prototype);\n return g.next = verb(0), g[\"throw\"] = verb(1), g[\"return\"] = verb(2), typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n function verb(n) { return function (v) { return step([n, v]); }; }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (g && (g = 0, op[0] && (_ = 0)), _) try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [op[0] & 2, t.value];\n switch (op[0]) {\n case 0: case 1: t = op; break;\n case 4: _.label++; return { value: op[1], done: false };\n case 5: _.label++; y = op[1]; op = [0]; continue;\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n if (t[2]) _.ops.pop();\n _.trys.pop(); continue;\n }\n op = body.call(thisArg, _);\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n }\n}\n\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n});\n\nexport function __exportStar(m, o) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\n}\n\nexport function __values(o) {\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\n if (m) return m.call(o);\n if (o && typeof o.length === \"number\") return {\n next: function () {\n if (o && i >= o.length) o = void 0;\n return { value: o && o[i++], done: !o };\n }\n };\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\n}\n\nexport function __read(o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o), r, ar = [], e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n }\n catch (error) { e = { error: error }; }\n finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n }\n finally { if (e) throw e.error; }\n }\n return ar;\n}\n\n/** @deprecated */\nexport function __spread() {\n for (var ar = [], i = 0; i < arguments.length; i++)\n ar = ar.concat(__read(arguments[i]));\n return ar;\n}\n\n/** @deprecated */\nexport function __spreadArrays() {\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\n r[k] = a[j];\n return r;\n}\n\nexport function __spreadArray(to, from, pack) {\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\n if (ar || !(i in from)) {\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\n ar[i] = from[i];\n }\n }\n return to.concat(ar || Array.prototype.slice.call(from));\n}\n\nexport function __await(v) {\n return this instanceof __await ? (this.v = v, this) : new __await(v);\n}\n\nexport function __asyncGenerator(thisArg, _arguments, generator) {\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\n return i = Object.create((typeof AsyncIterator === \"function\" ? AsyncIterator : Object).prototype), verb(\"next\"), verb(\"throw\"), verb(\"return\", awaitReturn), i[Symbol.asyncIterator] = function () { return this; }, i;\n function awaitReturn(f) { return function (v) { return Promise.resolve(v).then(f, reject); }; }\n function verb(n, f) { if (g[n]) { i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; if (f) i[n] = f(i[n]); } }\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\n function fulfill(value) { resume(\"next\", value); }\n function reject(value) { resume(\"throw\", value); }\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\n}\n\nexport function __asyncDelegator(o) {\n var i, p;\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: false } : f ? f(v) : v; } : f; }\n}\n\nexport function __asyncValues(o) {\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\n var m = o[Symbol.asyncIterator], i;\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\n}\n\nexport function __makeTemplateObject(cooked, raw) {\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\n return cooked;\n};\n\nvar __setModuleDefault = Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n};\n\nvar ownKeys = function(o) {\n ownKeys = Object.getOwnPropertyNames || function (o) {\n var ar = [];\n for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;\n return ar;\n };\n return ownKeys(o);\n};\n\nexport function __importStar(mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== \"default\") __createBinding(result, mod, k[i]);\n __setModuleDefault(result, mod);\n return result;\n}\n\nexport function __importDefault(mod) {\n return (mod && mod.__esModule) ? mod : { default: mod };\n}\n\nexport function __classPrivateFieldGet(receiver, state, kind, f) {\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\n}\n\nexport function __classPrivateFieldSet(receiver, state, value, kind, f) {\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\n}\n\nexport function __classPrivateFieldIn(state, receiver) {\n if (receiver === null || (typeof receiver !== \"object\" && typeof receiver !== \"function\")) throw new TypeError(\"Cannot use 'in' operator on non-object\");\n return typeof state === \"function\" ? receiver === state : state.has(receiver);\n}\n\nexport function __addDisposableResource(env, value, async) {\n if (value !== null && value !== void 0) {\n if (typeof value !== \"object\" && typeof value !== \"function\") throw new TypeError(\"Object expected.\");\n var dispose, inner;\n if (async) {\n if (!Symbol.asyncDispose) throw new TypeError(\"Symbol.asyncDispose is not defined.\");\n dispose = value[Symbol.asyncDispose];\n }\n if (dispose === void 0) {\n if (!Symbol.dispose) throw new TypeError(\"Symbol.dispose is not defined.\");\n dispose = value[Symbol.dispose];\n if (async) inner = dispose;\n }\n if (typeof dispose !== \"function\") throw new TypeError(\"Object not disposable.\");\n if (inner) dispose = function() { try { inner.call(this); } catch (e) { return Promise.reject(e); } };\n env.stack.push({ value: value, dispose: dispose, async: async });\n }\n else if (async) {\n env.stack.push({ async: true });\n }\n return value;\n}\n\nvar _SuppressedError = typeof SuppressedError === \"function\" ? SuppressedError : function (error, suppressed, message) {\n var e = new Error(message);\n return e.name = \"SuppressedError\", e.error = error, e.suppressed = suppressed, e;\n};\n\nexport function __disposeResources(env) {\n function fail(e) {\n env.error = env.hasError ? new _SuppressedError(e, env.error, \"An error was suppressed during disposal.\") : e;\n env.hasError = true;\n }\n var r, s = 0;\n function next() {\n while (r = env.stack.pop()) {\n try {\n if (!r.async && s === 1) return s = 0, env.stack.push(r), Promise.resolve().then(next);\n if (r.dispose) {\n var result = r.dispose.call(r.value);\n if (r.async) return s |= 2, Promise.resolve(result).then(next, function(e) { fail(e); return next(); });\n }\n else s |= 1;\n }\n catch (e) {\n fail(e);\n }\n }\n if (s === 1) return env.hasError ? Promise.reject(env.error) : Promise.resolve();\n if (env.hasError) throw env.error;\n }\n return next();\n}\n\nexport function __rewriteRelativeImportExtension(path, preserveJsx) {\n if (typeof path === \"string\" && /^\\.\\.?\\//.test(path)) {\n return path.replace(/\\.(tsx)$|((?:\\.d)?)((?:\\.[^./]+?)?)\\.([cm]?)ts$/i, function (m, tsx, d, ext, cm) {\n return tsx ? preserveJsx ? \".jsx\" : \".js\" : d && (!ext || !cm) ? m : (d + ext + \".\" + cm.toLowerCase() + \"js\");\n });\n }\n return path;\n}\n\nexport default {\n __extends,\n __assign,\n __rest,\n __decorate,\n __param,\n __esDecorate,\n __runInitializers,\n __propKey,\n __setFunctionName,\n __metadata,\n __awaiter,\n __generator,\n __createBinding,\n __exportStar,\n __values,\n __read,\n __spread,\n __spreadArrays,\n __spreadArray,\n __await,\n __asyncGenerator,\n __asyncDelegator,\n __asyncValues,\n __makeTemplateObject,\n __importStar,\n __importDefault,\n __classPrivateFieldGet,\n __classPrivateFieldSet,\n __classPrivateFieldIn,\n __addDisposableResource,\n __disposeResources,\n __rewriteRelativeImportExtension,\n};\n","import { IPoolElement } from \"@galacean/engine\";\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 { 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\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 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 MACRO_DEFINE_EXPRESSION,\n MACRO_CONDITIONAL_EXPRESSION,\n MACRO_CALL\n}\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 { 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 _ignore\n}\n\nexport type GrammarSymbol = Terminal | NoneTerminal;\n\nexport type Derivation = GrammarSymbol[];\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","export enum EShaderStage {\n VERTEX,\n FRAGMENT,\n ALL\n}\n","import { IBaseSymbol } from \"../../common/IBaseSymbol\";\nimport { GalaceanDataType, TypeAny } from \"../../common/types\";\nimport { ASTNode } from \"../AST\";\nimport { SymbolDataType } from \"./SymbolDataType\";\n\nexport enum ESymbolType {\n VAR,\n FN,\n STRUCT,\n Any\n}\n\nexport type SymbolAstNode =\n | ASTNode.Initializer\n | ASTNode.StructSpecifier\n | ASTNode.FunctionDefinition\n | ASTNode.ParameterDeclarator\n | ASTNode.InitDeclaratorList\n | ASTNode.VariableDeclaration;\n\nexport class SymbolInfo implements IBaseSymbol {\n constructor(\n public ident: string,\n public type: ESymbolType,\n public astNode?: SymbolAstNode,\n public dataType?: SymbolDataType,\n public paramSignature?: GalaceanDataType[],\n public isInMacroBranch = false\n ) {}\n\n set(\n ident: string,\n symbolType: ESymbolType,\n astNode?: SymbolAstNode,\n dataType?: SymbolDataType,\n paramSignature?: GalaceanDataType[]\n ) {\n this.ident = ident;\n this.type = symbolType;\n this.astNode = astNode;\n this.dataType = dataType;\n this.paramSignature = paramSignature;\n }\n\n equal(symbol: SymbolInfo): boolean {\n if (symbol.type !== ESymbolType.Any && this.type !== symbol.type) return false;\n if (this.type === ESymbolType.FN) {\n if (!symbol.astNode && !symbol.paramSignature) return true;\n\n const params = (<ASTNode.FunctionDefinition>this.astNode).protoType.paramSig;\n const comparedParams = symbol.paramSignature ?? (<ASTNode.FunctionDefinition>symbol.astNode).protoType.paramSig;\n const length = params?.length;\n if (length !== comparedParams?.length) return false;\n for (let i = 0; i < length; i++) {\n const t1 = params[i],\n t2 = comparedParams[i];\n if (t1 === TypeAny || t2 === TypeAny) continue;\n if (t1 !== t2) return false;\n }\n return true;\n }\n return true;\n }\n}\n","import { ClearableObjectPool, IPoolElement } from \"@galacean/engine\";\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 { Preprocessor } from \"../Preprocessor\";\nimport { ShaderLabUtils } from \"../ShaderLabUtils\";\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 = ShaderLabUtils.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 | BaseToken;\n\n export type ASTNodePool = ClearableObjectPool<\n { set: (loc: ShaderRange, children: NodeChild[]) => void } & IPoolElement & TreeNode\n >;\n\n export function _unwrapToken(node: NodeChild) {\n if (node instanceof BaseToken) {\n return node;\n }\n throw \"not token\";\n }\n\n export function get(pool: ASTNodePool, sa: SemanticAnalyzer, loc: ShaderRange, children: NodeChild[]) {\n const node = pool.get();\n node.set(loc, children);\n node.semanticAnalyze(sa);\n sa.semanticStack.push(node);\n }\n\n @ASTNodeDecorator(NoneTerminal._ignore)\n export class TrivialNode extends TreeNode {}\n\n @ASTNodeDecorator(NoneTerminal.scope_brace)\n export class ScopeBrace extends TreeNode {\n override semanticAnalyze(sa: SemanticAnalyzer): void {\n sa.pushScope();\n }\n }\n\n @ASTNodeDecorator(NoneTerminal.scope_end_brace)\n export class ScopeEndBrace extends TreeNode {\n override semanticAnalyze(sa: SemanticAnalyzer): void {\n sa.popScope();\n }\n }\n\n @ASTNodeDecorator(NoneTerminal.jump_statement)\n export class JumpStatement extends TreeNode {\n isFragReturnStatement: boolean;\n\n override init(): void {\n this.isFragReturnStatement = false;\n }\n\n override semanticAnalyze(sa: SemanticAnalyzer): void {\n if (ASTNode._unwrapToken(this.children![0]).type === Keyword.RETURN) {\n sa.curFunctionInfo.returnStatement = this;\n }\n }\n\n override codeGen(visitor: CodeGenVisitor): string {\n return this.setCache(visitor.visitJumpStatement(this));\n }\n }\n\n // #if _VERBOSE\n @ASTNodeDecorator(NoneTerminal.conditionopt)\n export class ConditionOpt extends TreeNode {}\n\n @ASTNodeDecorator(NoneTerminal.for_rest_statement)\n export class ForRestStatement extends TreeNode {}\n\n @ASTNodeDecorator(NoneTerminal.condition)\n export class Condition extends TreeNode {}\n\n @ASTNodeDecorator(NoneTerminal.for_init_statement)\n export class ForInitStatement extends TreeNode {}\n\n @ASTNodeDecorator(NoneTerminal.iteration_statement)\n export class IterationStatement extends TreeNode {}\n\n @ASTNodeDecorator(NoneTerminal.selection_statement)\n export class SelectionStatement extends TreeNode {}\n\n @ASTNodeDecorator(NoneTerminal.expression_statement)\n export class ExpressionStatement extends TreeNode {}\n // #endif\n\n export abstract class ExpressionAstNode extends TreeNode {\n protected _type?: GalaceanDataType;\n set type(t: GalaceanDataType | undefined) {\n this._type = t;\n }\n get type() {\n return this._type ?? TypeAny;\n }\n\n override init(): void {\n this._type = undefined;\n }\n }\n\n // #if _VERBOSE\n @ASTNodeDecorator(NoneTerminal.initializer_list)\n export class InitializerList extends ExpressionAstNode {\n override semanticAnalyze(sa: SemanticAnalyzer): void {\n const init = this.children[0] as Initializer | InitializerList;\n this.type = init.type;\n }\n }\n\n @ASTNodeDecorator(NoneTerminal.initializer)\n export class Initializer extends ExpressionAstNode {\n override semanticAnalyze(sa: SemanticAnalyzer): void {\n if (this.children.length === 1) {\n this.type = (<AssignmentExpression>this.children[0]).type;\n } else {\n this.type = (<InitializerList>this.children[1]).type;\n }\n }\n }\n // #endif\n\n @ASTNodeDecorator(NoneTerminal.single_declaration)\n export class SingleDeclaration extends TreeNode {\n typeSpecifier: TypeSpecifier;\n arraySpecifier?: ArraySpecifier;\n\n override init(): void {\n this.typeSpecifier = undefined;\n this.arraySpecifier = undefined;\n }\n\n override semanticAnalyze(sa: SemanticAnalyzer): void {\n const children = this.children;\n const childrenLen = children.length;\n const fullyType = children[0] as FullySpecifiedType;\n const typeSpecifier = fullyType.typeSpecifier;\n this.typeSpecifier = typeSpecifier;\n this.arraySpecifier = typeSpecifier.arraySpecifier;\n\n const id = children[1] as BaseToken;\n\n let sm: VarSymbol;\n if (childrenLen === 2 || childrenLen === 4) {\n const symbolType = new SymbolType(fullyType.type, typeSpecifier.lexeme, this.arraySpecifier);\n const initializer = children[3] as Initializer;\n\n sm = new VarSymbol(id.lexeme, symbolType, false, initializer);\n } else {\n const arraySpecifier = children[2] as ArraySpecifier;\n // #if _VERBOSE\n if (arraySpecifier && this.arraySpecifier) {\n sa.reportError(arraySpecifier.location, \"Array of array is not supported.\");\n }\n // #endif\n this.arraySpecifier = arraySpecifier;\n const symbolType = new SymbolType(fullyType.type, typeSpecifier.lexeme, this.arraySpecifier);\n const initializer = children[4] as Initializer;\n\n sm = new VarSymbol(id.lexeme, symbolType, false, initializer);\n }\n sa.symbolTableStack.insert(sm);\n }\n\n override codeGen(visitor: CodeGenVisitor): string {\n return this.setCache(visitor.visitSingleDeclaration(this));\n }\n }\n\n @ASTNodeDecorator(NoneTerminal.fully_specified_type)\n export class FullySpecifiedType extends TreeNode {\n typeSpecifier: TypeSpecifier;\n type: GalaceanDataType;\n\n override semanticAnalyze(_: SemanticAnalyzer): void {\n const children = this.children;\n this.typeSpecifier = (children.length === 1 ? children[0] : children[1]) as TypeSpecifier;\n this.type = this.typeSpecifier.type;\n }\n }\n\n @ASTNodeDecorator(NoneTerminal.type_qualifier)\n export class TypeQualifier extends TreeNode {}\n\n @ASTNodeDecorator(NoneTerminal.single_type_qualifier)\n export class SingleTypeQualifier extends TreeNode {\n qualifier: Keyword;\n lexeme: string;\n\n override semanticAnalyze(sa: SemanticAnalyzer): void {\n const child = this.children[0];\n if (child instanceof BaseToken) {\n this.qualifier = child.type as Keyword;\n this.lexeme = child.lexeme;\n } else {\n this.qualifier = (<BasicTypeQualifier>child).qualifier;\n this.lexeme = (<BasicTypeQualifier>child).lexeme;\n }\n }\n }\n\n abstract class BasicTypeQualifier extends TreeNode {\n qualifier: Keyword;\n lexeme: string;\n\n override semanticAnalyze(sa: SemanticAnalyzer): void {\n const token = this.children[0] as BaseToken;\n this.qualifier = token.type as Keyword;\n this.lexeme = token.lexeme;\n }\n }\n\n // #if _VERBOSE\n @ASTNodeDecorator(NoneTerminal.storage_qualifier)\n export class StorageQualifier extends BasicTypeQualifier {}\n\n @ASTNodeDecorator(NoneTerminal.precision_qualifier)\n export class PrecisionQualifier extends BasicTypeQualifier {}\n\n @ASTNodeDecorator(NoneTerminal.interpolation_qualifier)\n export class InterpolationQualifier extends BasicTypeQualifier {}\n\n @ASTNodeDecorator(NoneTerminal.invariant_qualifier)\n export class InvariantQualifier extends BasicTypeQualifier {}\n // #endif\n\n @ASTNodeDecorator(NoneTerminal.type_specifier)\n export class TypeSpecifier extends TreeNode {\n type: GalaceanDataType;\n lexeme: string;\n arraySize?: number;\n isCustom: boolean;\n\n override init(): void {\n this.arraySize = undefined;\n }\n get arraySpecifier(): ArraySpecifier {\n return this.children[1] as ArraySpecifier;\n }\n\n override semanticAnalyze(sa: SemanticAnalyzer): void {\n const children = this.children;\n const firstChild = children[0] as TypeSpecifierNonArray;\n this.type = firstChild.type;\n this.lexeme = firstChild.lexeme;\n this.arraySize = (children?.[1] as ArraySpecifier)?.size;\n this.isCustom = typeof this.type === \"string\";\n }\n }\n\n @ASTNodeDecorator(NoneTerminal.array_specifier)\n export class ArraySpecifier extends TreeNode {\n size: number | undefined;\n override semanticAnalyze(sa: SemanticAnalyzer): void {\n const integerConstantExpr = this.children[1] as IntegerConstantExpression;\n this.size = integerConstantExpr.value;\n }\n }\n\n @ASTNodeDecorator(NoneTerminal.integer_constant_expression_operator)\n export class IntegerConstantExpressionOperator extends TreeNode {\n compute: (a: number, b: number) => number;\n lexeme: string;\n\n override semanticAnalyze(sa: SemanticAnalyzer): void {\n const operator = this.children[0] as BaseToken;\n this.lexeme = operator.lexeme;\n switch (operator.type) {\n case ETokenType.PLUS:\n this.compute = (a, b) => a + b;\n break;\n case ETokenType.DASH:\n this.compute = (a, b) => a - b;\n break;\n case ETokenType.STAR:\n this.compute = (a, b) => a * b;\n break;\n case ETokenType.SLASH:\n this.compute = (a, b) => a / b;\n break;\n case ETokenType.PERCENT:\n this.compute = (a, b) => a % b;\n break;\n default:\n sa.reportError(operator.location, `not implemented operator ${operator.lexeme}`);\n }\n }\n }\n\n @ASTNodeDecorator(NoneTerminal.integer_constant_expression)\n export class IntegerConstantExpression extends TreeNode {\n value?: number;\n\n override init(): void {\n this.value = undefined;\n }\n\n override semanticAnalyze(sa: SemanticAnalyzer): void {\n if (this.children.length === 1) {\n const child = this.children[0];\n if (child instanceof BaseToken) {\n this.value = Number(child.lexeme);\n }\n // #if _VERBOSE\n else {\n const id = child as VariableIdentifier;\n if (!ParserUtils.typeCompatible(Keyword.INT, id.typeInfo)) {\n sa.reportError(id.location, \"Invalid integer.\");\n return;\n }\n }\n // #endif\n }\n }\n }\n\n @ASTNodeDecorator(NoneTerminal.type_specifier_nonarray)\n export class TypeSpecifierNonArray extends TreeNode {\n type: GalaceanDataType;\n lexeme: string;\n\n override init(): void {\n const tt = this.children[0];\n if (tt instanceof BaseToken) {\n this.type = tt.lexeme;\n this.lexeme = tt.lexeme;\n } else {\n this.type = (tt as ExtBuiltinTypeSpecifierNonArray).type as GalaceanDataType;\n this.lexeme = (tt as ExtBuiltinTypeSpecifierNonArray).lexeme;\n }\n }\n }\n\n @ASTNodeDecorator(NoneTerminal.ext_builtin_type_specifier_nonarray)\n export class ExtBuiltinTypeSpecifierNonArray extends TreeNode {\n type: TokenType;\n lexeme: string;\n\n override init(): void {\n const token = this.children[0] as BaseToken;\n this.type = token.type;\n this.lexeme = token.lexeme;\n }\n }\n\n @ASTNodeDecorator(NoneTerminal.init_declarator_list)\n export class InitDeclaratorList extends TreeNode {\n typeInfo: SymbolType;\n\n override semanticAnalyze(sa: SemanticAnalyzer): void {\n let sm: VarSymbol;\n const children = this.children;\n const childrenLength = children.length;\n if (childrenLength === 1) {\n const { typeSpecifier, arraySpecifier } = children[0] as SingleDeclaration;\n this.typeInfo = new SymbolType(typeSpecifier.type, typeSpecifier.lexeme, arraySpecifier);\n } else {\n const initDeclList = children[0] as InitDeclaratorList;\n this.typeInfo = initDeclList.typeInfo;\n }\n\n if (childrenLength === 3 || childrenLength === 5) {\n const id = children[2] as BaseToken;\n sm = new VarSymbol(id.lexeme, this.typeInfo, false, this);\n sa.symbolTableStack.insert(sm);\n } else if (childrenLength === 4 || childrenLength === 6) {\n const typeInfo = this.typeInfo;\n const arraySpecifier = this.children[3] as ArraySpecifier;\n // #if _VERBOSE\n if (typeInfo.arraySpecifier && arraySpecifier) {\n sa.reportError(arraySpecifier.location, \"Array of array is not supported.\");\n }\n // #endif\n typeInfo.arraySpecifier = arraySpecifier;\n const id = children[2] as BaseToken;\n sm = new VarSymbol(id.lexeme, typeInfo, false, this);\n sa.symbolTableStack.insert(sm);\n }\n }\n }\n\n @ASTNodeDecorator(NoneTerminal.identifier_list)\n export class IdentifierList extends TreeNode {\n idList: BaseToken[] = [];\n\n override init(): void {\n this.idList.length = 0;\n }\n\n override semanticAnalyze(sa: SemanticAnalyzer): void {\n const { children, idList: curIdList } = this;\n if (children.length === 2) {\n curIdList.push(children[1] as BaseToken);\n } else {\n const list = children[0] as IdentifierList;\n const id = children[2] as BaseToken;\n const listIdLength = list.idList.length;\n curIdList.length = listIdLength + 1;\n\n for (let i = 0; i < listIdLength; i++) {\n curIdList[i] = list.idList[i];\n }\n curIdList[listIdLength] = id;\n }\n }\n }\n\n @ASTNodeDecorator(NoneTerminal.declaration)\n export class Declaration extends TreeNode {\n override codeGen(visitor: CodeGenVisitor): string {\n return this.setCache(visitor.visitDeclaration(this));\n }\n }\n\n @ASTNodeDecorator(NoneTerminal.function_prototype)\n export class FunctionProtoType extends TreeNode {\n ident: BaseToken;\n returnType: FullySpecifiedType;\n parameterList: IParamInfo[];\n paramSig: GalaceanDataType[] | undefined;\n\n override semanticAnalyze(sa: SemanticAnalyzer): void {\n const declarator = this.children[0] as FunctionDeclarator;\n this.ident = declarator.ident;\n this.returnType = declarator.returnType;\n this.parameterList = declarator.parameterInfoList;\n this.paramSig = declarator.paramSig;\n }\n }\n\n @ASTNodeDecorator(NoneTerminal.function_declarator)\n export class FunctionDeclarator extends TreeNode {\n ident: BaseToken;\n returnType: FullySpecifiedType;\n parameterInfoList: IParamInfo[] | undefined;\n paramSig: GalaceanDataType[] | undefined;\n\n override semanticAnalyze(sa: SemanticAnalyzer): void {\n sa.curFunctionInfo.returnStatement = null;\n sa.curFunctionInfo.header = this;\n\n const children = this.children;\n const header = children[0] as FunctionHeader;\n const parameterList = children[1] as FunctionParameterList | undefined;\n this.ident = header.ident;\n this.returnType = header.returnType;\n this.parameterInfoList = parameterList?.parameterInfoList;\n this.paramSig = parameterList?.paramSig;\n }\n }\n\n @ASTNodeDecorator(NoneTerminal.function_header)\n export class FunctionHeader extends TreeNode {\n ident: BaseToken;\n returnType: FullySpecifiedType;\n\n override semanticAnalyze(sa: SemanticAnalyzer): void {\n sa.pushScope();\n const children = this.children;\n this.ident = children[1] as BaseToken;\n this.returnType = children[0] as FullySpecifiedType;\n }\n\n override codeGen(visitor: CodeGenVisitor): string {\n return this.setCache(visitor.visitFunctionHeader(this));\n }\n }\n\n @ASTNodeDecorator(NoneTerminal.function_parameter_list)\n export class FunctionParameterList extends TreeNode {\n parameterInfoList: IParamInfo[] = [];\n paramSig: GalaceanDataType[] = [];\n\n override init(): void {\n this.parameterInfoList.length = 0;\n this.paramSig.length = 0;\n }\n\n override semanticAnalyze(sa: SemanticAnalyzer): void {\n const children = this.children;\n const { parameterInfoList, paramSig } = this;\n\n if (children[0] instanceof ParameterDeclaration) {\n const decl = children[0];\n parameterInfoList.push({ ident: decl.ident, typeInfo: decl.typeInfo, astNode: decl });\n paramSig.push(decl.typeInfo?.type ?? TypeAny);\n } else if (children[2] instanceof ParameterDeclaration) {\n const list = children[0] as FunctionParameterList;\n const decl = children[2];\n\n parameterInfoList.push(...list.parameterInfoList, {\n ident: decl.ident,\n typeInfo: decl.typeInfo,\n astNode: decl\n });\n paramSig.push(...list.paramSig, decl.typeInfo?.type ?? TypeAny);\n } else if (children[0] instanceof FunctionParameterList && children[1] instanceof MacroParamBlock) {\n parameterInfoList.push(...children[0].parameterInfoList, { astNode: children[1] });\n paramSig.push(...children[0].paramSig, TypeAny);\n } else if (children[0] instanceof MacroParamBlock) {\n parameterInfoList.push({ astNode: children[0] });\n paramSig.push(TypeAny);\n }\n }\n\n override codeGen(visitor: CodeGenVisitor): string {\n return this.setCache(visitor.visitFunctionParameterList(this));\n }\n }\n\n @ASTNodeDecorator(NoneTerminal.macro_param_case_list)\n export class MacroParamCaseList extends TreeNode {}\n\n @ASTNodeDecorator(NoneTerminal.macro_param_block)\n export class MacroParamBlock extends TreeNode {}\n\n @ASTNodeDecorator(NoneTerminal.macro_parameter_branch)\n export class MacroParameterBranch extends TreeNode {}\n\n @ASTNodeDecorator(NoneTerminal.parameter_declaration)\n export class ParameterDeclaration extends TreeNode {\n // Some syntax is not recognized, eg.\n // `#define TEXTURE2D_SHADOW_PARAM(shadowMap) mediump sampler2D shadowMap`\n typeInfo?: SymbolType;\n ident?: BaseToken;\n\n override init(): void {\n this.typeInfo = undefined;\n this.ident = undefined;\n }\n\n override semanticAnalyze(sa: SemanticAnalyzer): void {\n const children = this.children;\n let parameterDeclarator: ParameterDeclarator | undefined;\n\n if (children[0] instanceof ParameterDeclarator) {\n parameterDeclarator = children[0];\n } else if (children[1] instanceof ParameterDeclarator) {\n parameterDeclarator = children[1];\n }\n\n if (parameterDeclarator) {\n this.typeInfo = parameterDeclarator.typeInfo;\n this.ident = parameterDeclarator.ident;\n const varSymbol = new VarSymbol(\n parameterDeclarator.ident.lexeme,\n parameterDeclarator.typeInfo,\n false,\n parameterDeclarator\n );\n sa.symbolTableStack.insert(varSymbol);\n }\n }\n }\n\n @ASTNodeDecorator(NoneTerminal.parameter_declarator)\n export class ParameterDeclarator extends TreeNode {\n ident: BaseToken;\n typeInfo: SymbolType;\n\n override semanticAnalyze(sa: SemanticAnalyzer): void {\n const children = this.children;\n this.ident = children[1] as BaseToken;\n const typeSpecifier = children[0] as TypeSpecifier;\n const arraySpecifier = children[2] as ArraySpecifier;\n this.typeInfo = new SymbolType(typeSpecifier.type, typeSpecifier.lexeme, arraySpecifier);\n }\n }\n\n // #if _VERBOSE\n @ASTNodeDecorator(NoneTerminal.simple_statement)\n export class SimpleStatement extends TreeNode {}\n\n @ASTNodeDecorator(NoneTerminal.compound_statement)\n export class CompoundStatement extends TreeNode {}\n // #endif\n\n @ASTNodeDecorator(NoneTerminal.compound_statement_no_scope)\n export class CompoundStatementNoScope extends TreeNode {}\n\n // #if _VERBOSE\n @ASTNodeDecorator(NoneTerminal.statement)\n export class Statement extends TreeNode {}\n // #endif\n\n @ASTNodeDecorator(NoneTerminal.statement_list)\n export class StatementList extends TreeNode {\n override codeGen(visitor: CodeGenVisitor): string {\n return this.setCache(visitor.visitStatementList(this));\n }\n }\n\n @ASTNodeDecorator(NoneTerminal.function_definition)\n export class FunctionDefinition extends TreeNode {\n returnStatement?: ASTNode.JumpStatement;\n protoType: FunctionProtoType;\n statements: CompoundStatementNoScope;\n isInMacroBranch: boolean;\n\n override init(): void {\n this.returnStatement = undefined;\n }\n\n override semanticAnalyze(sa: SemanticAnalyzer): void {\n const children = this.children;\n this.protoType = children[0] as FunctionProtoType;\n this.statements = children[1] as CompoundStatementNoScope;\n\n sa.popScope();\n const sm = new FnSymbol(this.protoType.ident.lexeme, this);\n sa.symbolTableStack.insert(sm);\n this.isInMacroBranch = sa.symbolTableStack.isInMacroBranch;\n\n const { curFunctionInfo } = sa;\n const { header, returnStatement } = curFunctionInfo;\n if (header.returnType.type === Keyword.VOID) {\n if (returnStatement) {\n sa.reportError(header.returnType.location, \"Return in void function.\");\n }\n } else {\n if (!returnStatement) {\n sa.reportError(header.returnType.location, `No return statement found.`);\n } else {\n this.returnStatement = returnStatement;\n }\n }\n curFunctionInfo.header = undefined;\n curFunctionInfo.returnStatement = undefined;\n }\n\n override codeGen(visitor: CodeGenVisitor): string {\n return this.setCache(visitor.visitFunctionDefinition(this));\n }\n }\n\n @ASTNodeDecorator(NoneTerminal.function_call)\n export class FunctionCall extends ExpressionAstNode {\n override semanticAnalyze(sa: SemanticAnalyzer): void {\n this.type = (this.children[0] as FunctionCallGeneric).type;\n }\n\n override codeGen(visitor: CodeGenVisitor): string {\n return this.setCache(visitor.visitFunctionCall(this));\n }\n }\n\n @ASTNodeDecorator(NoneTerminal.function_call_generic)\n export class FunctionCallGeneric extends ExpressionAstNode {\n fnSymbol: FnSymbol | StructSymbol | undefined;\n\n override init(): void {\n super.init();\n this.fnSymbol = undefined;\n }\n\n override semanticAnalyze(sa: SemanticAnalyzer): void {\n const functionIdentifier = this.children[0] as FunctionIdentifier;\n if (functionIdentifier.isBuiltin) {\n this.type = functionIdentifier.ident;\n } else {\n const fnIdent = <string>functionIdentifier.ident;\n\n let paramSig: NonGenericGalaceanType[] | undefined;\n if (this.children.length === 4) {\n const paramList = this.children[2];\n if (paramList instanceof FunctionCallParameterList) {\n paramSig = paramList.paramSig as any;\n }\n }\n // #if _VERBOSE\n const builtinFn = BuiltinFunction.getFn(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 // #if _VERBOSE\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 // #endif\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 // #if _VERBOSE\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 // #endif\n }\n\n @ASTNodeDecorator(NoneTerminal.primary_expression)\n export class PrimaryExpression extends ExpressionAstNode {\n override semanticAnalyze(sa: SemanticAnalyzer): void {\n if (this.children.length === 1) {\n const id = this.children[0];\n if (id instanceof VariableIdentifier) {\n this.type = id.typeInfo ?? TypeAny;\n } else {\n switch ((<BaseToken>id).type) {\n case ETokenType.INT_CONSTANT:\n this._type = Keyword.INT;\n break;\n case ETokenType.FLOAT_CONSTANT:\n this.type = Keyword.FLOAT;\n break;\n case Keyword.True:\n case Keyword.False:\n this.type = Keyword.BOOL;\n break;\n }\n }\n } else {\n const expression = this.children[1] as Expression;\n this.type = expression.type;\n }\n }\n }\n\n @ASTNodeDecorator(NoneTerminal.postfix_expression)\n export class PostfixExpression extends ExpressionAstNode {\n override init(): void {\n super.init();\n if (this.children.length === 1) {\n const child = this.children[0] as PrimaryExpression | FunctionCall;\n this.type = child.type;\n }\n }\n\n override codeGen(visitor: CodeGenVisitor): string {\n return this.setCache(visitor.visitPostfixExpression(this));\n }\n }\n\n // #if _VERBOSE\n @ASTNodeDecorator(NoneTerminal.unary_operator)\n export class UnaryOperator extends TreeNode {}\n\n @ASTNodeDecorator(NoneTerminal.unary_expression)\n export class UnaryExpression extends ExpressionAstNode {\n override init(): void {\n this.type = (this.children[0] as PostfixExpression).type;\n }\n }\n\n @ASTNodeDecorator(NoneTerminal.multiplicative_expression)\n export class MultiplicativeExpression extends ExpressionAstNode {\n override init(): void {\n super.init();\n if (this.children.length === 1) {\n this.type = (this.children[0] as UnaryExpression).type;\n // TODO: Temporarily remove type deduce due to generic function type issue.\n // } else {\n // const exp1 = this.children[0] as MultiplicativeExpression;\n // const exp2 = this.children[2] as UnaryExpression;\n // if (exp1.type === exp2.type) {\n // this.type = exp1.type;\n // }\n }\n }\n }\n\n @ASTNodeDecorator(NoneTerminal.additive_expression)\n export class AdditiveExpression extends ExpressionAstNode {\n override init(): void {\n super.init();\n if (this.children.length === 1) {\n this.type = (this.children[0] as MultiplicativeExpression).type;\n // TODO: Temporarily remove type deduce due to generic function type issue.\n // } else {\n // const exp1 = this.children[0] as AdditiveExpression;\n // const exp2 = this.children[2] as MultiplicativeExpression;\n // if (exp1.type === exp2.type) {\n // this.type = exp1.type;\n // }\n }\n }\n }\n\n @ASTNodeDecorator(NoneTerminal.shift_expression)\n export class ShiftExpression extends ExpressionAstNode {\n override semanticAnalyze(sa: SemanticAnalyzer): void {\n const expr = this.children[0] as ExpressionAstNode;\n this.type = expr.type;\n }\n }\n\n @ASTNodeDecorator(NoneTerminal.relational_expression)\n export class RelationalExpression extends ExpressionAstNode {\n override semanticAnalyze(sa: SemanticAnalyzer): void {\n if (this.children.length === 1) {\n this.type = (<ShiftExpression>this.children[0]).type;\n } else {\n this.type = Keyword.BOOL;\n }\n }\n }\n\n @ASTNodeDecorator(NoneTerminal.equality_expression)\n export class EqualityExpression extends ExpressionAstNode {\n override semanticAnalyze(sa: SemanticAnalyzer): void {\n if (this.children.length === 1) {\n this.type = (<RelationalExpression>this.children[0]).type;\n } else {\n this.type = Keyword.BOOL;\n }\n }\n }\n\n @ASTNodeDecorator(NoneTerminal.and_expression)\n export class AndExpression extends ExpressionAstNode {\n override semanticAnalyze(sa: SemanticAnalyzer): void {\n if (this.children.length === 1) {\n this.type = (<AndExpression>this.children[0]).type;\n } else {\n this.type = Keyword.UINT;\n }\n }\n }\n\n @ASTNodeDecorator(NoneTerminal.exclusive_or_expression)\n export class ExclusiveOrExpression extends ExpressionAstNode {\n override semanticAnalyze(sa: SemanticAnalyzer): void {\n if (this.children.length === 1) {\n this.type = (<AndExpression>this.children[0]).type;\n } else {\n this.type = Keyword.UINT;\n }\n }\n }\n\n @ASTNodeDecorator(NoneTerminal.inclusive_or_expression)\n export class InclusiveOrExpression extends ExpressionAstNode {\n override semanticAnalyze(sa: SemanticAnalyzer): void {\n if (this.children.length === 1) {\n this.type = (<ExclusiveOrExpression>this.children[0]).type;\n } else {\n this.type = Keyword.UINT;\n }\n }\n }\n\n @ASTNodeDecorator(NoneTerminal.logical_and_expression)\n export class LogicalAndExpression extends ExpressionAstNode {\n override semanticAnalyze(sa: SemanticAnalyzer): void {\n if (this.children.length === 1) {\n this.type = (<InclusiveOrExpression>this.children[0]).type;\n } else {\n this.type = Keyword.BOOL;\n }\n }\n }\n\n @ASTNodeDecorator(NoneTerminal.logical_xor_expression)\n export class LogicalXorExpression extends ExpressionAstNode {\n override semanticAnalyze(sa: SemanticAnalyzer): void {\n if (this.children.length === 1) {\n this.type = (<LogicalAndExpression>this.children[0]).type;\n } else {\n this.type = Keyword.BOOL;\n }\n }\n }\n\n @ASTNodeDecorator(NoneTerminal.logical_or_expression)\n export class LogicalOrExpression extends ExpressionAstNode {\n override semanticAnalyze(sa: SemanticAnalyzer): void {\n if (this.children.length === 1) {\n this.type = (<LogicalXorExpression>this.children[0]).type;\n } else {\n this.type = Keyword.BOOL;\n }\n }\n }\n\n @ASTNodeDecorator(NoneTerminal.conditional_expression)\n export class ConditionalExpression extends ExpressionAstNode {\n override semanticAnalyze(sa: SemanticAnalyzer): void {\n if (this.children.length === 1) {\n this.type = (<LogicalOrExpression>this.children[0]).type;\n }\n }\n }\n // #endif\n\n @ASTNodeDecorator(NoneTerminal.struct_specifier)\n export class StructSpecifier extends TreeNode {\n ident?: BaseToken;\n propList: StructProp[];\n macroExpressions: MacroExpression[];\n isInMacroBranch: boolean;\n\n override init(): void {\n this.ident = undefined;\n }\n\n override semanticAnalyze(sa: SemanticAnalyzer): void {\n const children = this.children;\n this.isInMacroBranch = sa.symbolTableStack.isInMacroBranch;\n if (children.length === 6) {\n this.ident = children[1] as BaseToken;\n sa.symbolTableStack.insert(new StructSymbol(this.ident.lexeme, this));\n\n this.propList = (children[3] as StructDeclarationList).propList;\n this.macroExpressions = (children[3] as StructDeclarationList).macroExpressions;\n } else {\n this.propList = (children[2] as StructDeclarationList).propList;\n this.macroExpressions = (children[2] as StructDeclarationList).macroExpressions;\n }\n }\n\n override codeGen(visitor: CodeGenVisitor) {\n return this.setCache(visitor.visitStructSpecifier(this));\n }\n }\n\n @ASTNodeDecorator(NoneTerminal.struct_declaration_list)\n export class StructDeclarationList extends TreeNode {\n propList: StructProp[] = [];\n macroExpressions: MacroExpression[] = [];\n\n override init(): void {\n this.propList.length = 0;\n this.macroExpressions.length = 0;\n }\n\n override semanticAnalyze(sa: SemanticAnalyzer): void {\n const { children, propList, macroExpressions } = this;\n\n if (children.length === 1) {\n propList.push(...(children[0] as StructDeclaration).props);\n macroExpressions.push(...(children[0] as StructDeclaration).macroExpressions);\n } else {\n propList.push(...(children[0] as StructDeclarationList).propList);\n propList.push(...(children[1] as StructDeclaration).props);\n macroExpressions.push(...(children[0] as StructDeclarationList).macroExpressions);\n macroExpressions.push(...(children[1] as StructDeclaration).macroExpressions);\n }\n }\n }\n\n @ASTNodeDecorator(NoneTerminal.struct_declaration)\n export class StructDeclaration extends TreeNode {\n props: StructProp[] = [];\n macroExpressions: MacroExpression[] = [];\n\n private _typeSpecifier?: TypeSpecifier;\n private _declaratorList?: StructDeclaratorList;\n\n override init(): void {\n this._typeSpecifier = undefined;\n this._declaratorList = undefined;\n this.props.length = 0;\n this.macroExpressions.length = 0;\n }\n\n override semanticAnalyze(sa: SemanticAnalyzer): void {\n const { children, props, macroExpressions } = this;\n\n if (children.length === 1) {\n const macroStructDeclaration = children[0] as MacroStructDeclaration;\n const macroProps = macroStructDeclaration.props;\n\n for (let i = 0, length = macroProps.length; i < length; i++) {\n macroProps[i].isInMacroBranch = true;\n props.push(macroProps[i]);\n }\n\n macroExpressions.push(...macroStructDeclaration.macroExpressions);\n\n return;\n }\n\n if (children.length === 3) {\n this._typeSpecifier = children[0] as TypeSpecifier;\n this._declaratorList = children[1] as StructDeclaratorList;\n } else {\n this._typeSpecifier = children[1] as TypeSpecifier;\n this._declaratorList = children[2] as StructDeclaratorList;\n }\n\n const firstChild = children[0];\n const { type, lexeme } = this._typeSpecifier;\n const isInMacroBranch = sa.symbolTableStack.isInMacroBranch;\n if (firstChild instanceof LayoutQualifier) {\n const declarator = children[2] as StructDeclarator;\n const typeInfo = new SymbolType(type, lexeme);\n const prop = new StructProp(typeInfo, declarator.ident, firstChild.index, isInMacroBranch);\n props.push(prop);\n } else {\n const declaratorList = this._declaratorList.declaratorList;\n const declaratorListLength = declaratorList.length;\n props.length = declaratorListLength;\n for (let i = 0; i < declaratorListLength; i++) {\n const declarator = declaratorList[i];\n const typeInfo = new SymbolType(type, lexeme, declarator.arraySpecifier);\n const prop = new StructProp(typeInfo, declarator.ident, undefined, isInMacroBranch);\n props[i] = prop;\n }\n }\n }\n }\n\n @ASTNodeDecorator(NoneTerminal.macro_struct_declaration)\n export class MacroStructDeclaration extends TreeNode {\n props: StructProp[] = [];\n macroExpressions: MacroExpression[] = [];\n\n override init(): void {\n this.props.length = 0;\n this.macroExpressions.length = 0;\n }\n\n override semanticAnalyze(): void {\n const children = this.children;\n\n this.macroExpressions.push(children[0] as MacroPushContext);\n\n if (children.length === 3) {\n this.props.push(...(children[1] as StructDeclarationList).propList);\n this.props.push(...(children[2] as MacroStructBranch).props);\n this.macroExpressions.push(...(children[1] as StructDeclarationList).macroExpressions);\n this.macroExpressions.push(...(children[2] as MacroStructBranch).macroExpressions);\n } else {\n this.props.push(...(children[1] as MacroStructBranch).props);\n this.macroExpressions.push(...(children[1] as MacroStructBranch).macroExpressions);\n }\n }\n }\n\n @ASTNodeDecorator(NoneTerminal.macro_struct_branch)\n export class MacroStructBranch extends TreeNode {\n props: StructProp[] = [];\n macroExpressions: MacroExpression[] = [];\n\n override init(): void {\n this.props.length = 0;\n this.macroExpressions.length = 0;\n }\n\n override semanticAnalyze(): void {\n const children = this.children;\n const lastNode = children[children.length - 1];\n\n this.macroExpressions.push(children[0] as MacroPopContext | MacroElseExpression | MacroElifExpression);\n\n if (children[1] instanceof StructDeclarationList) {\n this.props.push(...children[1].propList);\n this.macroExpressions.push(...children[1].macroExpressions);\n }\n\n if (lastNode instanceof MacroStructBranch) {\n this.props.push(...lastNode.props);\n this.macroExpressions.push(...lastNode.macroExpressions);\n }\n\n if (children.length > 1 && lastNode instanceof MacroPopContext) {\n this.macroExpressions.push(lastNode);\n }\n }\n }\n\n @ASTNodeDecorator(NoneTerminal.layout_qualifier)\n export class LayoutQualifier extends TreeNode {\n index: number;\n\n override semanticAnalyze(sa: SemanticAnalyzer): void {\n this.index = Number((<BaseToken>this.children[4]).lexeme);\n }\n }\n\n @ASTNodeDecorator(NoneTerminal.struct_declarator_list)\n export class StructDeclaratorList extends TreeNode {\n declaratorList: StructDeclarator[] = [];\n\n override init(): void {\n this.declaratorList.length = 0;\n }\n\n override semanticAnalyze(sa: SemanticAnalyzer): void {\n const { children, declaratorList } = this;\n if (children.length === 1) {\n declaratorList.push(children[0] as StructDeclarator);\n } else {\n const list = children[0] as StructDeclaratorList;\n const declarator = children[1] as StructDeclarator;\n const listLength = list.declaratorList.length;\n declaratorList.length = listLength + 1;\n for (let i = 0; i < listLength; i++) {\n declaratorList[i] = list.declaratorList[i];\n }\n declaratorList[listLength] = declarator;\n }\n }\n }\n\n @ASTNodeDecorator(NoneTerminal.struct_declarator)\n export class StructDeclarator extends TreeNode {\n ident: BaseToken;\n arraySpecifier: ArraySpecifier | undefined;\n\n override init(): void {\n this.arraySpecifier = undefined;\n }\n\n override semanticAnalyze(sa: SemanticAnalyzer): void {\n const children = this.children;\n this.ident = children[0] as BaseToken;\n this.arraySpecifier = children[1] as ArraySpecifier;\n }\n }\n\n @ASTNodeDecorator(NoneTerminal.variable_declaration)\n export class VariableDeclaration extends TreeNode {\n type: FullySpecifiedType;\n isStatic: boolean;\n\n override init(): void {\n this.isStatic = false;\n }\n\n override semanticAnalyze(sa: SemanticAnalyzer): void {\n const children = this.children;\n const type = children[0] as FullySpecifiedType;\n const ident = children[1] as BaseToken;\n this.type = type;\n const sm = new VarSymbol(ident.lexeme, new SymbolType(type.type, type.typeSpecifier.lexeme), true, this);\n\n sa.symbolTableStack.insert(sm);\n\n if (children.length === 4) {\n this.isStatic = true;\n }\n }\n\n override codeGen(visitor: CodeGenVisitor): string {\n if (this.isStatic) {\n return super.codeGen(visitor);\n } else {\n return this.setCache(visitor.visitGlobalVariableDeclaration(this));\n }\n }\n }\n\n @ASTNodeDecorator(NoneTerminal.variable_declaration_list)\n export class VariableDeclarationList extends TreeNode {\n type: FullySpecifiedType;\n variableDeclarations: VariableDeclaration[] = [];\n\n override init(): void {\n this.variableDeclarations.length = 0;\n }\n\n override semanticAnalyze(sa: SemanticAnalyzer): void {\n const { children } = this;\n const length = children.length;\n const child = children[0] as VariableDeclaration | VariableDeclarationList;\n const type = child.type;\n this.type = type;\n\n if (child instanceof VariableDeclaration) {\n this.variableDeclarations.push(child);\n } else {\n this.variableDeclarations.push(...child.variableDeclarations);\n\n const ident = children[2] as BaseToken;\n\n const newVariable = VariableDeclaration.pool.get() as VariableDeclaration;\n if (length === 3) {\n // variable_declaration_list ',' id\n newVariable.set(ident.location, [type, ident]);\n } else {\n // variable_declaration_list ',' id array_specifier\n newVariable.set(ident.location, [type, ident, children[3] as ArraySpecifier]);\n }\n newVariable.semanticAnalyze(sa);\n this.variableDeclarations.push(newVariable);\n }\n }\n }\n\n @ASTNodeDecorator(NoneTerminal.variable_identifier)\n export class VariableIdentifier extends TreeNode {\n // @todo: typeInfo may be multiple types\n typeInfo: GalaceanDataType;\n referenceGlobalSymbolNames: string[] = [];\n\n private _symbols: Array<VarSymbol | FnSymbol> = [];\n\n override init(): void {\n this.typeInfo = TypeAny;\n this.referenceGlobalSymbolNames.length = 0;\n this._symbols.length = 0;\n }\n\n override semanticAnalyze(sa: SemanticAnalyzer): void {\n const child = this.children[0] as BaseToken | MacroCallSymbol | MacroCallFunction;\n const referenceGlobalSymbolNames = this.referenceGlobalSymbolNames;\n const symbols = this._symbols;\n const lookupSymbol = SemanticAnalyzer._lookupSymbol;\n let needFindNames: string[];\n\n if (child instanceof BaseToken) {\n needFindNames = [child.lexeme];\n } else {\n needFindNames = (child as MacroCallSymbol | MacroCallFunction).referenceSymbolNames;\n }\n\n for (let i = 0; i < needFindNames.length; i++) {\n const name = needFindNames[i];\n\n if (sa.macroDefineList[name]) {\n continue;\n }\n\n // only `macro_call` CFG can reference fnSymbols, others fnSymbols are referenced in `function_call_generic` CFG\n if (!(child instanceof BaseToken) && BuiltinFunction.isExist(name)) {\n continue;\n }\n\n const builtinVar = BuiltinVariable.getVar(name);\n if (builtinVar) {\n this.typeInfo = builtinVar.type;\n continue;\n }\n\n lookupSymbol.set(name, ESymbolType.Any);\n sa.symbolTableStack.lookupAll(lookupSymbol, true, symbols);\n\n if (!symbols.length) {\n // #if _VERBOSE\n sa.reportWarning(this.location, `Please sure the identifier \"${name}\" will be declared before used.`);\n // #endif\n } else {\n this.typeInfo = symbols[0].dataType?.type;\n const currentScopeSymbol = <VarSymbol | FnSymbol>sa.symbolTableStack.scope.getSymbol(lookupSymbol, true);\n if (currentScopeSymbol) {\n if (\n (currentScopeSymbol instanceof FnSymbol || currentScopeSymbol.isGlobalVariable) &&\n referenceGlobalSymbolNames.indexOf(name) === -1\n ) {\n referenceGlobalSymbolNames.push(name);\n }\n } else if (\n symbols.some((s) => s instanceof FnSymbol || s.isGlobalVariable) &&\n referenceGlobalSymbolNames.indexOf(name) === -1\n ) {\n referenceGlobalSymbolNames.push(name);\n }\n }\n }\n }\n\n override codeGen(visitor: CodeGenVisitor): string {\n return this.setCache(visitor.visitVariableIdentifier(this));\n }\n\n getLexeme(visitor: CodeGenVisitor): string {\n const child = this.children[0] as BaseToken | MacroCallSymbol | MacroCallFunction;\n if (child instanceof BaseToken) {\n return child.lexeme;\n } else {\n return child.codeGen(visitor);\n }\n }\n }\n\n @ASTNodeDecorator(NoneTerminal.gs_shader_program)\n export class GLShaderProgram extends TreeNode {\n shaderData: ShaderData;\n\n override semanticAnalyze(sa: SemanticAnalyzer): void {\n this.shaderData = sa.shaderData;\n this.shaderData.symbolTable = sa.symbolTableStack.scope;\n }\n }\n\n @ASTNodeDecorator(NoneTerminal.global_declaration)\n export class GlobalDeclaration extends TreeNode {\n macroExpressions: Array<MacroExpression | MacroUndef | BaseToken> = [];\n\n override init(): void {\n this.macroExpressions.length = 0;\n }\n\n override semanticAnalyze(sa: SemanticAnalyzer): void {\n const child = this.children[0];\n\n if (child instanceof MacroUndef || child instanceof GlobalMacroIfStatement || child instanceof BaseToken) {\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\n override init(): void {\n this.referenceSymbolNames.length = 0;\n }\n\n override semanticAnalyze(sa: SemanticAnalyzer): void {\n const children = this.children;\n const macroName = (children[0] as BaseToken).lexeme;\n\n this.macroName = macroName;\n\n Preprocessor.getReferenceSymbolNames(sa.macroDefineList, macroName, this.referenceSymbolNames);\n }\n }\n\n @ASTNodeDecorator(NoneTerminal.macro_call_function)\n export class MacroCallFunction extends TreeNode {\n referenceSymbolNames: string[];\n macroName: string;\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 }\n\n override codeGen(visitor: CodeGenVisitor) {\n return this.setCache(visitor.visitMacroCallFunction(this));\n }\n }\n}\n","export enum MacroParserToken {\n id,\n line_remain,\n chunk,\n int_constant,\n string_const,\n /** \\>> */\n right_op,\n /** << */\n left_op,\n left_paren,\n right_paren,\n /** \\>= */\n ge,\n /** <= */\n le,\n /** == */\n eq,\n /** != */\n neq,\n /** && */\n and,\n /** || */\n or,\n /** < */\n left_angle,\n /** \\> */\n right_angle,\n /** \\* */\n star,\n /** + */\n plus,\n /** \\- */\n dash,\n /** ! */\n bang,\n /** \\/ */\n slash,\n /** % */\n percent,\n\n EOF = 100\n}\n\nexport enum MacroParserKeyword {\n define = 101,\n undef,\n if,\n ifdef,\n ifndef,\n else,\n elif,\n endif,\n\n defined\n}\n\nexport type MacroParserConstant = boolean | number;\n","import { IPoolElement } from \"@galacean/engine\";\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","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","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 _is_native_function(fn) {\n return Function.toString.call(fn).indexOf(\"[native code]\") !== -1;\n}\nexport { _is_native_function as _ };\n","import { ClearableObjectPool, IPoolElement, Logger } from \"@galacean/engine\";\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 ShaderLabUtils {\n private static _shaderLabObjectPoolSet: ClearableObjectPool<IPoolElement>[] = [];\n\n static createObjectPool<T extends IPoolElement>(type: new () => T) {\n const pool = new ClearableObjectPool<T>(type);\n ShaderLabUtils._shaderLabObjectPoolSet.push(pool);\n return pool;\n }\n\n static clearAllShaderLabObjectPool() {\n for (let i = 0, n = ShaderLabUtils._shaderLabObjectPoolSet.length; i < n; i++) {\n ShaderLabUtils._shaderLabObjectPoolSet[i].clear();\n }\n }\n\n static createGSError(\n message: string,\n errorName: GSErrorName,\n source: string,\n location: ShaderRange | ShaderPosition,\n file?: string\n ): Error | undefined {\n // #if _VERBOSE\n return new GSError(errorName, message, location, source, file);\n // #else\n Logger.error(message);\n // #endif\n }\n}\n","import { ETokenType } from \"./types\";\nimport { ShaderRange, ShaderPosition } from \".\";\nimport { ShaderLab } from \"../ShaderLab\";\nimport { IPoolElement } from \"@galacean/engine\";\nimport { ShaderLabUtils } from \"../ShaderLabUtils\";\n\nexport class BaseToken<T extends number = number> implements IPoolElement {\n static pool = ShaderLabUtils.createObjectPool(BaseToken);\n\n type: T;\n lexeme: string;\n location: ShaderRange;\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 if (arg) {\n if (arg instanceof ShaderRange) {\n this.location = arg as ShaderRange;\n } else {\n const end = ShaderLab.createPosition(\n arg.index + lexeme.length,\n // #if _VERBOSE\n arg.line,\n arg.column + lexeme.length\n // #endif\n );\n this.location = ShaderLab.createRange(arg, end);\n }\n }\n }\n\n dispose(): void {}\n}\n\nexport const EOF = new BaseToken();\nEOF.set(ETokenType.EOF, \"/EOF\");\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, 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 { ShaderLab } from \"../ShaderLab\";\nimport { ClearableObjectPool, IPoolElement } from \"@galacean/engine\";\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 const ret: [GrammarSymbol[], TranslationRule | undefined][] = [];\n for (const opt of options) {\n ret.push([\n [goal, ...opt],\n function (sa, ...children) {\n if (!children[0]) return;\n const start = children[0].location.start;\n const end = children[children.length - 1].location.end;\n const location = ShaderLab.createRange(start, end);\n ASTNode.get(astTypePool ?? ASTNode.TrivialNode.pool, sa, location, children);\n }\n ]);\n }\n return ret;\n }\n\n static addMapSetItem<K, T>(map: Map<K, Set<T>>, k: K, v: T) {\n const set = map.get(k) ?? new Set();\n set.add(v);\n map.set(k, set);\n }\n\n static isSubSet<T>(sa: Set<T>, sb: Set<T>) {\n for (const item of sa) {\n if (!sb.has(item)) return false;\n }\n return true;\n }\n\n static isActionEqual(a: ActionInfo, b: ActionInfo) {\n return a.action === b.action && a.target === b.target;\n }\n\n // #if _VERBOSE\n static printAction(actionInfo: ActionInfo) {\n const production = Production.pool.get(actionInfo.target!);\n return `<Action: ${EAction[actionInfo.action]} -> ${this.printProduction(production)}>`;\n }\n\n static printProduction(production: Production) {\n const deriv = production.derivation.map((gs) => GrammarUtils.toString(gs)).join(\"|\");\n return `${NoneTerminal[production.goal]} :=> ${deriv}`;\n }\n // #endif\n}\n","import { ETokenType } from \"../common\";\nimport { NoneTerminal, Terminal } from \"../parser/GrammarSymbol\";\nimport Production from \"./Production\";\nimport GrammarUtils from \"./Utils\";\n\nexport default class StateItem {\n static _id = 0;\n\n readonly production: Production;\n readonly position: number;\n readonly lookaheadSet: Set<Terminal>;\n readonly id: number;\n\n _needReInfer = true;\n get needReInfer() {\n return this._needReInfer;\n }\n set needReInfer(v: boolean) {\n this._needReInfer = v;\n }\n\n get curSymbol() {\n return this.production.derivation[this.position];\n }\n get nextSymbol() {\n return this.production.derivation[this.position + 1];\n }\n\n constructor(production: Production, position: number, lookahead: Iterable<Terminal>) {\n this.production = production;\n this.position = position;\n this.lookaheadSet = new Set();\n for (const la of lookahead) {\n this.lookaheadSet.add(la);\n }\n this.id = StateItem._id++;\n }\n\n addLookahead(ts: Iterable<Terminal>) {\n for (const t of ts) {\n if (this.lookaheadSet.has(t)) continue;\n this.lookaheadSet.add(t);\n this.needReInfer = true;\n }\n }\n\n symbolByOffset(offset: number) {\n return this.production.derivation[this.position + offset];\n }\n\n canReduce() {\n if (this.position > this.production.derivation.length - 1) return true;\n else {\n for (let i = this.position; i < this.production.derivation.length; i++) {\n if (this.production.derivation[i] !== ETokenType.EPSILON) return false;\n }\n return true;\n }\n }\n\n advance() {\n // #if _VERBOSE\n if (this.canReduce()) throw `Error: advance reduce-able parsing state item`;\n // #endif\n return new StateItem(this.production, this.position + 1, this.lookaheadSet);\n }\n\n // #if _VERBOSE\n toString() {\n const coreItem = this.production.derivation.map((item) => GrammarUtils.toString(item));\n coreItem[this.position] = \".\" + (coreItem[this.position] ?? \"\");\n\n return `${NoneTerminal[this.production.goal]} :=> ${coreItem.join(\"|\")} ;${Array.from(this.lookaheadSet)\n .map((item) => GrammarUtils.toString(item))\n .join(\"/\")}`;\n }\n // #endif\n}\n","import { Terminal } from \"../parser/GrammarSymbol\";\nimport Production from \"./Production\";\nimport StateItem from \"./StateItem\";\n\nexport default class State {\n static closureMap: Map<string /** state mapKey */, State> = new Map();\n static pool: Map<number, State> = new Map();\n static _id = 0;\n\n readonly id: number;\n readonly cores: Set<StateItem>;\n private _items: Set<StateItem>;\n get items() {\n return this._items;\n }\n\n closured = false;\n get needReInfer() {\n for (const core of this.cores) {\n if (core.needReInfer) return true;\n }\n return false;\n }\n\n private _stateItemPool: Map<string /** Map ID */, StateItem> = new Map();\n\n static create(cores: StateItem[]) {\n const cacheKey = this.getMapKey(cores);\n const state = this.closureMap.get(cacheKey);\n if (state) {\n for (const core of cores) {\n // merge lookahead\n state.createStateItem(core.production, core.position, core.lookaheadSet);\n }\n return state;\n }\n\n const newState = new State(cores);\n this.closureMap.set(cacheKey, newState);\n return newState;\n }\n\n // TODO: any optimization?\n static getMapKey(cores: StateItem[]) {\n return cores.map((item) => `${item.production.id},${item.position}`).join(\";\");\n }\n\n private constructor(cores: Iterable<StateItem>) {\n this.id = State._id++;\n this._items = new Set([...cores]);\n this.cores = new Set([...cores]);\n for (const it of cores) {\n const itemMapKey = this.getStateItemMapKey(it.production, it.position);\n this._stateItemPool.set(itemMapKey, it);\n }\n State.pool.set(this.id, this);\n }\n\n // TODO: any optimization?\n getStateItemMapKey(production: Production, position: number) {\n return `${production.id},${position}`;\n }\n\n createStateItem(production: Production, position: number, lookaheadSet: Iterable<Terminal> = new Set()) {\n const mapId = this.getStateItemMapKey(production, position);\n const item = this._stateItemPool.get(mapId);\n if (item) {\n for (const la of lookaheadSet) {\n if (item.lookaheadSet.has(la)) continue;\n item.lookaheadSet.add(la);\n item.needReInfer = true;\n }\n return item;\n }\n const newItem = new StateItem(production, position, lookaheadSet);\n this._stateItemPool.set(mapId, newItem);\n return newItem;\n }\n}\n","import { ETokenType, GalaceanDataType, TypeAny } from \"./common\";\nimport { BaseToken as Token } from \"./common/BaseToken\";\nimport { 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 // #if _VERBOSE\n /**\n * Check if type `tb` is compatible with type `ta`.\n */\n static typeCompatible(ta: GalaceanDataType, tb: GalaceanDataType | undefined) {\n if (tb == undefined || tb === TypeAny) return true;\n if (ta === Keyword.INT) {\n return ta === tb || tb === Keyword.UINT;\n }\n return ta === tb;\n }\n\n static toString(sm: GrammarSymbol) {\n if (this.isTerminal(sm)) {\n return ETokenType[sm] ?? Keyword[sm];\n }\n return NoneTerminal[sm];\n }\n // #endif\n\n static isTerminal(sm: GrammarSymbol) {\n return sm < NoneTerminal.START;\n }\n\n /**\n * @internal\n */\n // #if _VERBOSE\n static printStatePool(logPath: string) {\n let output = \"\";\n\n console.log(\"========== Parser Pool ==========\");\n\n let count = 0;\n for (const state of State.pool.values()) {\n count++;\n let tmp = \"\";\n tmp += `${state.id}: \\n`.padEnd(4);\n for (const psItem of state.items) {\n tmp += \" \" + psItem.toString() + \"\\n\";\n }\n output += tmp;\n }\n\n console.log(\"state count:\", count);\n console.log(output);\n }\n // #endif\n}\n","import { Logger, ShaderPass } from \"@galacean/engine\";\n/** @ts-ignore */\nimport { ShaderLib } from \"@galacean/engine\";\n\nexport enum MacroValueType {\n Number, // 1, 1.1\n Symbol, // variable name\n FunctionCall, // function call, e.g. clamp(a, 0.0, 1.0)\n Other // shaderLab does not check this\n}\n\nexport interface MacroDefineInfo {\n isFunction: boolean;\n name: string;\n value: string;\n valueType: MacroValueType;\n params: string[];\n functionCallName: string;\n}\n\nexport interface MacroDefineList {\n [macroName: string]: MacroDefineInfo[];\n}\n\nexport class Preprocessor {\n private static readonly _includeReg = /^[ \\t]*#include +\"([\\w\\d./]+)\"/gm;\n private static readonly _macroRegex =\n /^\\s*#define\\s+(\\w+)[ ]*(\\(([^)]*)\\))?[ ]+(\\(?\\w+\\)?.*?)(?:\\/\\/.*|\\/\\*.*?\\*\\/)?\\s*$/gm;\n private static readonly _symbolReg = /^[a-zA-Z_][a-zA-Z0-9_]*$/;\n private static readonly _funcCallReg = /^([a-zA-Z_][a-zA-Z0-9_]*)\\s*\\((.*)\\)$/;\n private static readonly _macroDefineIncludeMap = new Map<string, MacroDefineList>();\n\n /**\n * @internal\n */\n static _repeatIncludeSet = new Set<string>();\n\n static parse(\n source: string,\n basePathForIncludeKey: string,\n outMacroDefineList: MacroDefineList,\n parseMacro = true\n ): string {\n if (parseMacro) {\n this._parseMacroDefines(source, outMacroDefineList);\n }\n return source.replace(this._includeReg, (_, includeName) =>\n this._replace(includeName, basePathForIncludeKey, outMacroDefineList)\n );\n }\n\n static getReferenceSymbolNames(macroDefineList: MacroDefineList, macroName: string, out: string[]): void {\n out.length = 0;\n const infos = macroDefineList[macroName];\n if (!infos) return;\n\n for (let i = 0; i < infos.length; i++) {\n const info = infos[i];\n const valueType = info.valueType;\n if (valueType === MacroValueType.FunctionCall || valueType === MacroValueType.Symbol) {\n const referencedName = valueType === MacroValueType.FunctionCall ? info.functionCallName : info.value;\n if (info.params.indexOf(referencedName) !== -1) continue;\n if (out.indexOf(referencedName) === -1) out.push(referencedName);\n } else if (valueType === MacroValueType.Other) {\n // #if _VERBOSE\n Logger.warn(\n `Warning: Macro \"${info.name}\" has an unrecognized value \"${info.value}\". ShaderLab does not validate this type.`\n );\n // #endif\n }\n }\n }\n\n private static _isNumber(str: string): boolean {\n return !isNaN(Number(str));\n }\n\n private static _isExist(list: MacroDefineInfo[], item: MacroDefineInfo): boolean {\n return list.some(\n (e) =>\n e.valueType === item.valueType &&\n e.value === item.value &&\n e.isFunction === item.isFunction &&\n e.functionCallName === item.functionCallName &&\n e.params.length === item.params.length &&\n e.params.every((p, i) => p === item.params[i])\n );\n }\n\n private static _parseMacroDefines(source: string, outMacroList: MacroDefineList): void {\n let match: RegExpExecArray | null;\n this._macroRegex.lastIndex = 0;\n\n while ((match = this._macroRegex.exec(source)) !== null) {\n const [, name, paramsGroup, paramsStr, valueRaw] = match;\n const isFunction = !!paramsGroup && !!valueRaw;\n const params =\n isFunction && paramsStr\n ? paramsStr\n .split(\",\")\n .map((p) => p.trim())\n .filter(Boolean)\n : [];\n const value = valueRaw ? valueRaw.trim() : \"\";\n\n let valueType = MacroValueType.Other;\n let functionCallName = \"\";\n\n if (this._isNumber(value)) {\n valueType = MacroValueType.Number;\n } else if (this._symbolReg.test(value)) {\n valueType = MacroValueType.Symbol;\n } else {\n const callMatch = this._funcCallReg.exec(value);\n if (callMatch) {\n valueType = MacroValueType.FunctionCall;\n functionCallName = callMatch[1];\n }\n }\n\n const info: MacroDefineInfo = {\n isFunction,\n name,\n value,\n valueType,\n params,\n functionCallName\n };\n\n const arr = outMacroList[name];\n if (arr) {\n if (!this._isExist(arr, info)) arr.push(info);\n } else {\n outMacroList[name] = [info];\n }\n }\n }\n\n private static _mergeMacroDefineLists(from: MacroDefineList, to: MacroDefineList): void {\n for (const macroName in from) {\n if (to[macroName]) {\n const target = to[macroName];\n const src = from[macroName];\n for (let i = 0; i < src.length; i++) {\n const info = src[i];\n if (!this._isExist(target, info)) target.push(info);\n }\n } else {\n to[macroName] = from[macroName];\n }\n }\n }\n\n private static _replace(\n includeName: string,\n basePathForIncludeKey: string,\n outMacroDefineList: MacroDefineList\n ): string {\n let path: string;\n if (includeName[0] === \".\") {\n // @ts-ignore\n path = new URL(includeName, basePathForIncludeKey).href.substring(ShaderPass._shaderRootPath.length);\n } else {\n path = includeName;\n }\n\n const chunk = (ShaderLib as any)[path];\n if (!chunk) {\n Logger.error(`Shader slice \"${path}\" not founded.`);\n return \"\";\n }\n\n if (this._repeatIncludeSet.has(path)) {\n Logger.warn(`Shader slice \"${path}\" is included multiple times.`);\n }\n this._repeatIncludeSet.add(path);\n\n if (this._macroDefineIncludeMap.has(path)) {\n this._mergeMacroDefineLists(this._macroDefineIncludeMap.get(path)!, outMacroDefineList);\n } else {\n const chunkMacroDefineList: MacroDefineList = {};\n this._parseMacroDefines(chunk, chunkMacroDefineList);\n this._macroDefineIncludeMap.set(path, chunkMacroDefineList);\n this._mergeMacroDefineLists(chunkMacroDefineList, outMacroDefineList);\n }\n\n return this.parse(chunk, basePathForIncludeKey, outMacroDefineList, false);\n }\n}\n","import { GalaceanDataType, TypeAny } from \"../../common\";\nimport { Keyword } from \"../../common/enums/Keyword\";\nimport { EShaderStage } from \"../../common/enums/ShaderStage\";\n\nexport enum EGenType {\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 | EGenType;\n\nfunction isGenericType(t: BuiltinType) {\n return t >= EGenType.GenType && t <= EGenType.GSampler2DArray;\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 getReturnType(fn: BuiltinFunction, genType?: NonGenericGalaceanType) {\n if (!isGenericType(fn._returnType)) return fn._returnType as NonGenericGalaceanType;\n return genType;\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 _createWithScop(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 // TODO: correct the type deduce, consider the following case:\n // It incorrectly inferred the type of the following expression as float, which should be vec3.\n // max(scatterAmt.xyz,0.0001)\n static getFn(ident: string, parameterTypes: NonGenericGalaceanType[]): BuiltinFunction | undefined {\n const list = BuiltinFunctionTable.get(ident);\n if (list) {\n for (let length = list.length, i = 0; i < length; i++) {\n const fn = list[i];\n const fnArgs = fn.args;\n const argLength = fnArgs.length;\n if (argLength !== parameterTypes.length) continue;\n // Try to match generic parameter type.\n let returnType = TypeAny;\n let found = true;\n for (let i = 0; i < argLength; i++) {\n const curFnArg = fnArgs[i];\n if (isGenericType(curFnArg)) {\n if (returnType === TypeAny) returnType = parameterTypes[i];\n } else {\n if (curFnArg !== parameterTypes[i] && parameterTypes[i] !== TypeAny) {\n found = false;\n break;\n }\n }\n }\n if (found) {\n fn._realReturnType = returnType;\n return fn;\n }\n }\n }\n }\n\n static isExist(ident: string) {\n return !!BuiltinFunctionTable.get(ident);\n }\n}\n\nBuiltinFunction._create(\"radians\", EGenType.GenType, EGenType.GenType);\nBuiltinFunction._create(\"degrees\", EGenType.GenType, EGenType.GenType);\nBuiltinFunction._create(\"sin\", EGenType.GenType, EGenType.GenType);\nBuiltinFunction._create(\"cos\", EGenType.GenType, EGenType.GenType);\nBuiltinFunction._create(\"tan\", EGenType.GenType, EGenType.GenType);\nBuiltinFunction._create(\"asin\", EGenType.GenType, EGenType.GenType);\nBuiltinFunction._create(\"acos\", EGenType.GenType, EGenType.GenType);\nBuiltinFunction._create(\"atan\", EGenType.GenType, EGenType.GenType, EGenType.GenType);\nBuiltinFunction._create(\"atan\", EGenType.GenType, EGenType.GenType);\nBuiltinFunction._create(\"sinh\", EGenType.GenType, EGenType.GenType);\nBuiltinFunction._create(\"cosh\", EGenType.GenType, EGenType.GenType);\nBuiltinFunction._create(\"tanh\", EGenType.GenType, EGenType.GenType);\nBuiltinFunction._create(\"asinh\", EGenType.GenType, EGenType.GenType);\nBuiltinFunction._create(\"acosh\", EGenType.GenType, EGenType.GenType);\nBuiltinFunction._create(\"atanh\", EGenType.GenType, EGenType.GenType);\n\nBuiltinFunction._create(\"pow\", EGenType.GenType, EGenType.GenType, EGenType.GenType);\nBuiltinFunction._create(\"exp\", EGenType.GenType, EGenType.GenType);\nBuiltinFunction._create(\"log\", EGenType.GenType, EGenType.GenType);\nBuiltinFunction._create(\"exp2\", EGenType.GenType, EGenType.GenType);\nBuiltinFunction._create(\"log2\", EGenType.GenType, EGenType.GenType);\nBuiltinFunction._create(\"sqrt\", EGenType.GenType, EGenType.GenType);\nBuiltinFunction._create(\"inversesqrt\", EGenType.GenType, EGenType.GenType);\n\nBuiltinFunction._create(\"abs\", EGenType.GenType, EGenType.GenType);\nBuiltinFunction._create(\"abs\", EGenType.GenIntType, EGenType.GenIntType);\nBuiltinFunction._create(\"sign\", EGenType.GenType, EGenType.GenType);\nBuiltinFunction._create(\"sign\", EGenType.GenIntType, EGenType.GenIntType);\nBuiltinFunction._create(\"floor\", EGenType.GenType, EGenType.GenType);\nBuiltinFunction._create(\"trunc\", EGenType.GenType, EGenType.GenType);\nBuiltinFunction._create(\"round\", EGenType.GenType, EGenType.GenType);\nBuiltinFunction._create(\"roundEven\", EGenType.GenType, EGenType.GenType);\nBuiltinFunction._create(\"ceil\", EGenType.GenType, EGenType.GenType);\nBuiltinFunction._create(\"fract\", EGenType.GenType, EGenType.GenType);\nBuiltinFunction._create(\"mod\", EGenType.GenType, EGenType.GenType, Keyword.FLOAT);\nBuiltinFunction._create(\"mod\", EGenType.GenType, EGenType.GenType, EGenType.GenType);\nBuiltinFunction._create(\"min\", EGenType.GenType, EGenType.GenType, EGenType.GenType);\nBuiltinFunction._create(\"min\", EGenType.GenType, EGenType.GenType, Keyword.FLOAT);\nBuiltinFunction._create(\"min\", EGenType.GenIntType, EGenType.GenIntType, EGenType.GenIntType);\nBuiltinFunction._create(\"min\", EGenType.GenIntType, EGenType.GenIntType, Keyword.INT);\nBuiltinFunction._create(\"min\", EGenType.GenUintType, EGenType.GenUintType, EGenType.GenUintType);\nBuiltinFunction._create(\"min\", EGenType.GenUintType, EGenType.GenUintType, Keyword.UINT);\nBuiltinFunction._create(\"max\", EGenType.GenType, EGenType.GenType, EGenType.GenType);\nBuiltinFunction._create(\"max\", EGenType.GenType, EGenType.GenType, Keyword.FLOAT);\nBuiltinFunction._create(\"max\", EGenType.GenIntType, EGenType.GenIntType, EGenType.GenIntType);\nBuiltinFunction._create(\"max\", EGenType.GenIntType, EGenType.GenIntType, Keyword.INT);\nBuiltinFunction._create(\"clamp\", EGenType.GenType, EGenType.GenType, EGenType.GenType, EGenType.GenType);\nBuiltinFunction._create(\"clamp\", EGenType.GenType, EGenType.GenType, Keyword.FLOAT, Keyword.FLOAT);\nBuiltinFunction._create(\"clamp\", EGenType.GenIntType, EGenType.GenIntType, EGenType.GenIntType, EGenType.GenIntType);\nBuiltinFunction._create(\"clamp\", EGenType.GenIntType, EGenType.GenIntType, Keyword.INT, Keyword.INT);\nBuiltinFunction._create(\n \"clamp\",\n EGenType.GenUintType,\n EGenType.GenUintType,\n EGenType.GenUintType,\n EGenType.GenUintType\n);\nBuiltinFunction._create(\"clamp\", EGenType.GenUintType, EGenType.GenUintType, Keyword.UINT, Keyword.UINT);\nBuiltinFunction._create(\"mix\", EGenType.GenType, EGenType.GenType, EGenType.GenType, EGenType.GenType);\nBuiltinFunction._create(\"mix\", EGenType.GenType, EGenType.GenType, EGenType.GenType, Keyword.FLOAT);\nBuiltinFunction._create(\"mix\", EGenType.GenType, EGenType.GenType, EGenType.GenType, EGenType.GenBoolType);\nBuiltinFunction._create(\"step\", EGenType.GenType, EGenType.GenType, EGenType.GenType);\nBuiltinFunction._create(\"step\", EGenType.GenType, Keyword.FLOAT, EGenType.GenType);\nBuiltinFunction._create(\"smoothstep\", EGenType.GenType, EGenType.GenType, EGenType.GenType, EGenType.GenType);\nBuiltinFunction._create(\"smoothstep\", EGenType.GenType, Keyword.FLOAT, Keyword.FLOAT, EGenType.GenType);\nBuiltinFunction._create(\"isnan\", EGenType.GenBoolType, EGenType.GenType);\nBuiltinFunction._create(\"isinf\", EGenType.GenBoolType, EGenType.GenType);\nBuiltinFunction._create(\"floatBitsToInt\", EGenType.GenType, EGenType.GenType);\nBuiltinFunction._create(\"floatBitsToUint\", EGenType.GenUintType, EGenType.GenType);\nBuiltinFunction._create(\"intBitsToFloat\", EGenType.GenType, EGenType.GenIntType);\nBuiltinFunction._create(\"uintBitsToFloat\", EGenType.GenType, EGenType.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, EGenType.GenType);\nBuiltinFunction._create(\"distance\", Keyword.FLOAT, EGenType.GenType, EGenType.GenType);\nBuiltinFunction._create(\"dot\", Keyword.FLOAT, EGenType.GenType, EGenType.GenType);\nBuiltinFunction._create(\"cross\", Keyword.VEC3, Keyword.VEC3, Keyword.VEC3);\nBuiltinFunction._create(\"normalize\", EGenType.GenType, EGenType.GenType);\nBuiltinFunction._create(\"faceforward\", EGenType.GenType, EGenType.GenType, EGenType.GenType, EGenType.GenType);\nBuiltinFunction._create(\"reflect\", EGenType.GenType, EGenType.GenType, EGenType.GenType);\nBuiltinFunction._create(\"refract\", EGenType.GenType, EGenType.GenType, EGenType.GenType, Keyword.FLOAT);\nBuiltinFunction._create(\"matrixCompMult\", EGenType.Mat, EGenType.Mat, EGenType.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\", EGenType.BoolVec, EGenType.Vec, EGenType.Vec);\nBuiltinFunction._create(\"lessThan\", EGenType.BoolVec, EGenType.IntVec, EGenType.IntVec);\nBuiltinFunction._create(\"lessThan\", EGenType.BoolVec, EGenType.UintVec, EGenType.UintVec);\n\nBuiltinFunction._create(\"lessThanEqual\", EGenType.BoolVec, EGenType.Vec, EGenType.Vec);\nBuiltinFunction._create(\"lessThanEqual\", EGenType.BoolVec, EGenType.IntVec, EGenType.IntVec);\nBuiltinFunction._create(\"lessThanEqual\", EGenType.BoolVec, EGenType.UintVec, EGenType.UintVec);\n\nBuiltinFunction._create(\"greaterThan\", EGenType.BoolVec, EGenType.Vec, EGenType.Vec);\nBuiltinFunction._create(\"greaterThan\", EGenType.BoolVec, EGenType.IntVec, EGenType.IntVec);\nBuiltinFunction._create(\"greaterThan\", EGenType.BoolVec, EGenType.UintVec, EGenType.UintVec);\n\nBuiltinFunction._create(\"greaterThanEqual\", EGenType.BoolVec, EGenType.Vec, EGenType.Vec);\nBuiltinFunction._create(\"greaterThanEqual\", EGenType.BoolVec, EGenType.IntVec, EGenType.IntVec);\nBuiltinFunction._create(\"greaterThanEqual\", EGenType.BoolVec, EGenType.UintVec, EGenType.UintVec);\n\nBuiltinFunction._create(\"equal\", EGenType.BoolVec, EGenType.Vec, EGenType.Vec);\nBuiltinFunction._create(\"equal\", EGenType.BoolVec, EGenType.IntVec, EGenType.IntVec);\nBuiltinFunction._create(\"equal\", EGenType.BoolVec, EGenType.UintVec, EGenType.UintVec);\nBuiltinFunction._create(\"equal\", EGenType.BoolVec, EGenType.BoolVec, EGenType.BoolVec);\n\nBuiltinFunction._create(\"notEqual\", EGenType.BoolVec, EGenType.Vec, EGenType.Vec);\nBuiltinFunction._create(\"notEqual\", EGenType.BoolVec, EGenType.IntVec, EGenType.IntVec);\nBuiltinFunction._create(\"notEqual\", EGenType.BoolVec, EGenType.UintVec, EGenType.UintVec);\nBuiltinFunction._create(\"notEqual\", EGenType.BoolVec, EGenType.BoolVec, EGenType.BoolVec);\n\nBuiltinFunction._create(\"any\", Keyword.BOOL, EGenType.BoolVec);\nBuiltinFunction._create(\"all\", Keyword.BOOL, EGenType.BoolVec);\nBuiltinFunction._create(\"not\", EGenType.BoolVec, EGenType.BoolVec);\n\nBuiltinFunction._create(\"textureSize\", Keyword.IVEC2, EGenType.GSampler2D, Keyword.INT);\nBuiltinFunction._create(\"textureSize\", Keyword.IVEC3, EGenType.GSampler3D, Keyword.INT);\nBuiltinFunction._create(\"textureSize\", Keyword.IVEC2, EGenType.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, EGenType.GSampler2DArray, Keyword.INT);\nBuiltinFunction._create(\"textureSize\", Keyword.IVEC3, Keyword.SAMPLER2D_ARRAY_SHADOW, Keyword.INT);\n\nBuiltinFunction._create(\"texture2D\", Keyword.VEC4, Keyword.SAMPLER2D, Keyword.VEC2);\nBuiltinFunction._create(\"texture2D\", Keyword.VEC4, Keyword.SAMPLER2D, Keyword.VEC2, Keyword.FLOAT);\n\nBuiltinFunction._create(\"texture\", EGenType.GVec4, EGenType.GSampler2D, Keyword.VEC2, Keyword.FLOAT);\nBuiltinFunction._create(\"texture\", EGenType.GVec4, EGenType.GSampler2D, Keyword.VEC2);\nBuiltinFunction._create(\"texture\", EGenType.GVec4, EGenType.GSampler3D, Keyword.VEC3, Keyword.FLOAT);\nBuiltinFunction._create(\"texture\", EGenType.GVec4, EGenType.GSampler3D, Keyword.VEC3);\n\nBuiltinFunction._create(\"texture\", EGenType.GVec4, EGenType.GSamplerCube, Keyword.VEC3, Keyword.FLOAT);\nBuiltinFunction._create(\"texture\", EGenType.GVec4, EGenType.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\", EGenType.GVec4, Keyword.SAMPLER2D_ARRAY, Keyword.VEC3, Keyword.FLOAT);\nBuiltinFunction._create(\"texture\", EGenType.GVec4, Keyword.SAMPLER2D_ARRAY, Keyword.VEC3);\n\nBuiltinFunction._create(\"texture\", Keyword.FLOAT, Keyword.SAMPLER2D_ARRAY_SHADOW, Keyword.VEC4);\n\nBuiltinFunction._create(\"textureProj\", EGenType.GVec4, EGenType.GSampler2D, Keyword.VEC3, Keyword.FLOAT);\nBuiltinFunction._create(\"textureProj\", EGenType.GVec4, EGenType.GSampler2D, Keyword.VEC3);\nBuiltinFunction._create(\"textureProj\", EGenType.GVec4, EGenType.GSampler2D, Keyword.VEC4, Keyword.FLOAT);\nBuiltinFunction._create(\"textureProj\", EGenType.GVec4, EGenType.GSampler2D, Keyword.VEC4);\nBuiltinFunction._create(\"textureProj\", EGenType.GVec4, EGenType.GSampler3D, Keyword.VEC4, Keyword.FLOAT);\nBuiltinFunction._create(\"textureProj\", EGenType.GVec4, EGenType.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\", EGenType.GVec4, EGenType.GSampler2D, Keyword.VEC2, Keyword.FLOAT);\nBuiltinFunction._create(\"textureLod\", EGenType.GVec4, EGenType.GSampler3D, Keyword.VEC3, Keyword.FLOAT);\nBuiltinFunction._create(\"textureLod\", EGenType.GVec4, EGenType.GSamplerCube, Keyword.VEC3, Keyword.FLOAT);\nBuiltinFunction._create(\"textureLod\", Keyword.FLOAT, Keyword.SAMPLER2D_SHADOW, Keyword.VEC3, Keyword.FLOAT);\nBuiltinFunction._create(\"textureLod\", EGenType.GVec4, EGenType.GSampler2DArray, Keyword.VEC3, Keyword.FLOAT);\nBuiltinFunction._create(\"texture2DLodEXT\", EGenType.GVec4, EGenType.GSampler2D, Keyword.VEC2, Keyword.FLOAT);\nBuiltinFunction._create(\"texture2DLodEXT\", EGenType.GVec4, EGenType.GSampler3D, Keyword.VEC3, Keyword.FLOAT);\n\nBuiltinFunction._create(\"textureCube\", Keyword.SAMPLER_CUBE, Keyword.VEC3);\nBuiltinFunction._create(\"textureCube\", Keyword.SAMPLER_CUBE, Keyword.VEC3, Keyword.FLOAT);\nBuiltinFunction._create(\"textureCube\", EGenType.GVec4, EGenType.GSamplerCube, Keyword.VEC3, Keyword.FLOAT);\nBuiltinFunction._create(\"textureCubeLod\", Keyword.SAMPLER_CUBE, Keyword.VEC3, Keyword.FLOAT);\nBuiltinFunction._create(\"textureCubeLodEXT\", EGenType.GVec4, EGenType.GSamplerCube, Keyword.VEC3, Keyword.FLOAT);\n\nBuiltinFunction._create(\n \"textureOffset\",\n EGenType.GVec4,\n EGenType.GSampler2D,\n Keyword.VEC2,\n Keyword.IVEC2,\n Keyword.FLOAT\n);\nBuiltinFunction._create(\"textureOffset\", EGenType.GVec4, EGenType.GSampler2D, Keyword.VEC2, Keyword.IVEC2);\n\nBuiltinFunction._create(\n \"textureOffset\",\n EGenType.GVec4,\n EGenType.GSampler3D,\n Keyword.VEC3,\n Keyword.IVEC3,\n Keyword.FLOAT\n);\nBuiltinFunction._create(\"textureOffset\", EGenType.GVec4, EGenType.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 EGenType.GVec4,\n EGenType.GSampler2DArray,\n Keyword.VEC3,\n Keyword.IVEC2,\n Keyword.FLOAT\n);\nBuiltinFunction._create(\"textureOffset\", EGenType.GVec4, EGenType.GSampler2DArray, Keyword.VEC3, Keyword.IVEC2);\n\nBuiltinFunction._create(\"texelFetch\", EGenType.GVec4, EGenType.GSampler2D, Keyword.IVEC2, Keyword.INT);\nBuiltinFunction._create(\"texelFetch\", EGenType.GVec4, EGenType.GSampler3D, Keyword.IVEC3, Keyword.INT);\nBuiltinFunction._create(\"texelFetch\", EGenType.GVec4, EGenType.GSampler2DArray, Keyword.IVEC3, Keyword.INT);\n\nBuiltinFunction._create(\n \"texelFetchOffset\",\n EGenType.GVec4,\n EGenType.GSampler2D,\n Keyword.IVEC2,\n Keyword.INT,\n Keyword.IVEC2\n);\nBuiltinFunction._create(\n \"texelFetchOffset\",\n EGenType.GVec4,\n EGenType.GSampler3D,\n Keyword.IVEC3,\n Keyword.INT,\n Keyword.IVEC3\n);\nBuiltinFunction._create(\n \"texelFetchOffset\",\n EGenType.GVec4,\n EGenType.GSampler2DArray,\n Keyword.IVEC3,\n Keyword.INT,\n Keyword.IVEC2\n);\n\nBuiltinFunction._create(\n \"textureProjOffset\",\n EGenType.GVec4,\n EGenType.GSampler2D,\n Keyword.VEC3,\n Keyword.IVEC2,\n Keyword.FLOAT\n);\nBuiltinFunction._create(\"textureProjOffset\", EGenType.GVec4, EGenType.GSampler2D, Keyword.VEC3, Keyword.IVEC2);\n\nBuiltinFunction._create(\n \"textureProjOffset\",\n EGenType.GVec4,\n EGenType.GSampler2D,\n Keyword.VEC4,\n Keyword.IVEC2,\n Keyword.FLOAT\n);\nBuiltinFunction._create(\"textureProjOffset\", EGenType.GVec4, EGenType.GSampler2D, Keyword.VEC4, Keyword.IVEC2);\n\nBuiltinFunction._create(\n \"textureProjOffset\",\n EGenType.GVec4,\n EGenType.GSampler3D,\n Keyword.VEC4,\n Keyword.IVEC3,\n Keyword.FLOAT\n);\nBuiltinFunction._create(\"textureProjOffset\", EGenType.GVec4, EGenType.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 EGenType.GVec4,\n EGenType.GSampler2D,\n Keyword.VEC2,\n Keyword.FLOAT,\n Keyword.IVEC2\n);\nBuiltinFunction._create(\n \"textureLodOffset\",\n EGenType.GVec4,\n EGenType.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 EGenType.GVec4,\n EGenType.GSampler2DArray,\n Keyword.VEC3,\n Keyword.FLOAT,\n Keyword.IVEC2\n);\n\nBuiltinFunction._create(\"textureProjLod\", EGenType.GVec4, EGenType.GSampler2D, Keyword.VEC3, Keyword.FLOAT);\nBuiltinFunction._create(\"textureProjLod\", EGenType.GVec4, EGenType.GSampler2D, Keyword.VEC4, Keyword.FLOAT);\nBuiltinFunction._create(\"textureProjLod\", EGenType.GVec4, EGenType.GSampler3D, Keyword.VEC4, Keyword.FLOAT);\nBuiltinFunction._create(\"textureProjLod\", Keyword.FLOAT, Keyword.SAMPLER2D_SHADOW, Keyword.VEC4, Keyword.FLOAT);\n\nBuiltinFunction._create(\n \"textureProjLodOffset\",\n EGenType.GVec4,\n EGenType.GSampler2D,\n Keyword.VEC3,\n Keyword.FLOAT,\n Keyword.IVEC2\n);\nBuiltinFunction._create(\n \"textureProjLodOffset\",\n EGenType.GVec4,\n EGenType.GSampler2D,\n Keyword.VEC4,\n Keyword.FLOAT,\n Keyword.IVEC2\n);\nBuiltinFunction._create(\n \"textureProjLodOffset\",\n EGenType.GVec4,\n EGenType.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(\"textureGrad\", EGenType.GVec4, EGenType.GSampler2D, Keyword.VEC2, Keyword.VEC2, Keyword.VEC2);\nBuiltinFunction._create(\"textureGrad\", EGenType.GVec4, EGenType.GSampler3D, Keyword.VEC3, Keyword.VEC3, Keyword.VEC3);\nBuiltinFunction._create(\"textureGrad\", EGenType.GVec4, EGenType.GSamplerCube, Keyword.VEC3, Keyword.VEC3, Keyword.VEC3);\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 EGenType.GVec4,\n EGenType.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 EGenType.GVec4,\n EGenType.GSampler2D,\n Keyword.VEC2,\n Keyword.VEC2,\n Keyword.VEC2,\n Keyword.IVEC2\n);\nBuiltinFunction._create(\n \"textureGradOffset\",\n EGenType.GVec4,\n EGenType.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 EGenType.GVec4,\n EGenType.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 EGenType.GVec4,\n EGenType.GSampler2D,\n Keyword.VEC3,\n Keyword.VEC2,\n Keyword.VEC2\n);\nBuiltinFunction._create(\n \"textureProjGrad\",\n EGenType.GVec4,\n EGenType.GSampler2D,\n Keyword.VEC4,\n Keyword.VEC2,\n Keyword.VEC2\n);\nBuiltinFunction._create(\n \"textureProjGrad\",\n EGenType.GVec4,\n EGenType.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 EGenType.GVec4,\n EGenType.GSampler2D,\n Keyword.VEC3,\n Keyword.VEC2,\n Keyword.VEC2,\n Keyword.IVEC2\n);\nBuiltinFunction._create(\n \"textureProjGradOffset\",\n EGenType.GVec4,\n EGenType.GSampler2D,\n Keyword.VEC4,\n Keyword.VEC2,\n Keyword.VEC2,\n Keyword.IVEC2\n);\nBuiltinFunction._create(\n \"textureProjGradOffset\",\n EGenType.GVec4,\n EGenType.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._createWithScop(\"dFdx\", EGenType.GenType, EShaderStage.FRAGMENT, EGenType.GenType);\nBuiltinFunction._createWithScop(\"dFdy\", EGenType.GenType, EShaderStage.FRAGMENT, EGenType.GenType);\nBuiltinFunction._createWithScop(\"fwidth\", EGenType.GenType, EShaderStage.FRAGMENT, EGenType.GenType);\n","import { GalaceanDataType } from \"../../common\";\nimport { Keyword } from \"../../common/enums/Keyword\";\nimport { EShaderStage } from \"../../common/enums/ShaderStage\";\n\nexport const BuiltinVariableTable: Map<string, BuiltinVariable> = new Map();\n\nexport class BuiltinVariable {\n type: GalaceanDataType;\n lexeme: string;\n scope: EShaderStage;\n\n private constructor(type: GalaceanDataType, lexeme: string, scope: EShaderStage) {\n this.type = type;\n this.lexeme = lexeme;\n this.scope = scope;\n }\n\n static createVariable(lexeme: string, type: GalaceanDataType, scope = EShaderStage.ALL) {\n const item = new BuiltinVariable(type, lexeme, scope);\n BuiltinVariableTable.set(lexeme, item);\n }\n\n static getVar(ident: string): BuiltinVariable {\n return BuiltinVariableTable.get(ident);\n }\n}\n\nBuiltinVariable.createVariable(\"gl_VertexID\", Keyword.INT, EShaderStage.VERTEX);\nBuiltinVariable.createVariable(\"gl_InstanceID\", Keyword.INT, EShaderStage.VERTEX);\nBuiltinVariable.createVariable(\"gl_Position\", Keyword.VEC4, EShaderStage.VERTEX);\nBuiltinVariable.createVariable(\"gl_PointSize\", Keyword.FLOAT, EShaderStage.VERTEX);\n\nBuiltinVariable.createVariable(\"gl_FragCoord\", Keyword.VEC4, EShaderStage.FRAGMENT);\nBuiltinVariable.createVariable(\"gl_FrontFacing\", Keyword.BOOL, EShaderStage.FRAGMENT);\nBuiltinVariable.createVariable(\"gl_FragDepth\", Keyword.FLOAT, EShaderStage.FRAGMENT);\nBuiltinVariable.createVariable(\"gl_PointCoord\", Keyword.VEC2, EShaderStage.FRAGMENT);\nBuiltinVariable.createVariable(\"gl_FragColor\", Keyword.VEC4, EShaderStage.FRAGMENT);\nBuiltinVariable.createVariable(\"gl_FragData\", Keyword.VEC4_ARRAY, EShaderStage.FRAGMENT);\n\nBuiltinVariable.createVariable(\"gl_MaxVertexAttribs\", Keyword.INT);\nBuiltinVariable.createVariable(\"gl_MaxVertexUniformVectors\", Keyword.INT);\nBuiltinVariable.createVariable(\"gl_MaxVertexOutputVectors\", Keyword.INT);\nBuiltinVariable.createVariable(\"gl_MaxFragmentInputVectors\", Keyword.INT);\nBuiltinVariable.createVariable(\"gl_MaxVertexTextureImageUnits\", Keyword.INT);\nBuiltinVariable.createVariable(\"gl_MaxCombinedTextureImageUnits\", Keyword.INT);\nBuiltinVariable.createVariable(\"gl_MaxTextureImageUnits\", Keyword.INT);\nBuiltinVariable.createVariable(\"gl_MaxFragmentUniformVectors\", Keyword.INT);\nBuiltinVariable.createVariable(\"gl_MaxDrawBuffers\", Keyword.INT);\nBuiltinVariable.createVariable(\"gl_MinProgramTexelOffset\", Keyword.INT);\nBuiltinVariable.createVariable(\"gl_MaxProgramTexelOffset\", Keyword.INT);\n","import { Logger } from \"@galacean/engine\";\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","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 { ASTNode } from \"../AST\";\nimport { SymbolDataType } from \"./SymbolDataType\";\nimport { ESymbolType, SymbolInfo } from \"./SymbolInfo\";\n\nexport class FnSymbol extends SymbolInfo {\n declare astNode: ASTNode.FunctionDefinition;\n\n constructor(lexeme: string, astNode: ASTNode.FunctionDefinition) {\n const type = new SymbolDataType(\n astNode.protoType.returnType.type,\n astNode.protoType.returnType.typeSpecifier.lexeme\n );\n super(lexeme, ESymbolType.FN, astNode, type);\n }\n}\n","import { ASTNode } from \"../AST\";\nimport { ESymbolType, SymbolInfo } from \"./SymbolInfo\";\n\nexport class StructSymbol extends SymbolInfo {\n declare astNode: ASTNode.StructSpecifier;\n\n constructor(lexeme: string, astNode: ASTNode.StructSpecifier) {\n super(lexeme, ESymbolType.STRUCT, astNode);\n }\n}\n","import { ASTNode } from \"../AST\";\nimport { SymbolDataType } from \"./SymbolDataType\";\nimport { ESymbolType, SymbolInfo } from \"./SymbolInfo\";\n\nexport class VarSymbol extends SymbolInfo {\n declare astNode:\n | ASTNode.Initializer\n | ASTNode.ParameterDeclarator\n | ASTNode.InitDeclaratorList\n | ASTNode.VariableDeclaration;\n\n readonly isGlobalVariable: boolean;\n\n constructor(\n ident: string,\n dataType: SymbolDataType,\n isGlobalVariable: boolean,\n initAst:\n | ASTNode.Initializer\n | ASTNode.ParameterDeclarator\n | ASTNode.InitDeclaratorList\n | ASTNode.VariableDeclaration\n ) {\n super(ident, ESymbolType.VAR, initAst, dataType);\n this.isGlobalVariable = isGlobalVariable;\n }\n}\n","import { SymbolInfo, SymbolTable } from \"../parser/symbolTable\";\nimport { ASTNode } from \"./AST\";\n\nexport class ShaderData {\n symbolTable: SymbolTable<SymbolInfo>;\n\n vertexMain: ASTNode.FunctionDefinition;\n fragmentMain: ASTNode.FunctionDefinition;\n\n globalPrecisions: ASTNode.PrecisionSpecifier[] = [];\n\n globalMacroDeclarations: ASTNode.GlobalDeclaration[] = [];\n\n getOuterGlobalMacroDeclarations(): ASTNode.GlobalDeclaration[] {\n return this.globalMacroDeclarations.filter((node) => node.parent instanceof ASTNode.GLShaderProgram);\n }\n}\n","import { ShaderRange } from \"../common\";\nimport { SymbolTable } from \"../common/SymbolTable\";\nimport { SymbolTableStack } from \"../common/SymbolTableStack\";\nimport { GSError, GSErrorName } from \"../GSError\";\nimport { SymbolInfo } from \"../parser/symbolTable\";\nimport { ShaderLab } from \"../ShaderLab\";\nimport { ASTNode, TreeNode } from \"./AST\";\nimport { ShaderData } from \"./ShaderInfo\";\nimport { NodeChild } from \"./types\";\n\nimport { Logger } from \"@galacean/engine\";\nimport { MacroDefineList } from \"../Preprocessor\";\n\nexport type TranslationRule<T = any> = (sa: SemanticAnalyzer, ...tokens: NodeChild[]) => T;\n\n/**\n * @internal\n * The semantic analyzer of `ShaderLab` compiler.\n * - Build symbol table\n * - Static analysis\n */\nexport default class SemanticAnalyzer {\n /**\n * @internal\n */\n static _lookupSymbol: SymbolInfo = new SymbolInfo(\"\", null);\n\n semanticStack: TreeNode[] = [];\n acceptRule?: TranslationRule = undefined;\n symbolTableStack: SymbolTableStack<SymbolInfo, SymbolTable<SymbolInfo>> = new SymbolTableStack();\n curFunctionInfo: {\n header?: ASTNode.FunctionDeclarator;\n returnStatement?: ASTNode.JumpStatement;\n } = {};\n private _shaderData = new ShaderData();\n private _translationRuleTable: Map<number /** production id */, TranslationRule> = new Map();\n\n private _macroDefineList: MacroDefineList;\n\n // #if _VERBOSE\n readonly errors: Error[] = [];\n // #endif\n\n get shaderData() {\n return this._shaderData;\n }\n\n get macroDefineList(): MacroDefineList {\n return this._macroDefineList;\n }\n\n constructor() {\n this.pushScope();\n }\n\n reset(macroDefineList: MacroDefineList) {\n this._macroDefineList = macroDefineList;\n this.semanticStack.length = 0;\n this._shaderData = new ShaderData();\n this.symbolTableStack.clear();\n this.pushScope();\n // #if _VERBOSE\n this.errors.length = 0;\n // #endif\n }\n\n pushScope() {\n this.symbolTableStack.pushScope(new SymbolTable<SymbolInfo>());\n }\n\n popScope() {\n return this.symbolTableStack.popScope();\n }\n\n addTranslationRule(pid: number, rule: TranslationRule) {\n this._translationRuleTable.set(pid, rule);\n }\n\n getTranslationRule(pid: number) {\n return this._translationRuleTable.get(pid);\n }\n\n reportError(loc: ShaderRange, message: string): void {\n // #if _VERBOSE\n this.errors.push(new GSError(GSErrorName.CompilationError, message, loc, ShaderLab._processingPassText));\n // #else\n Logger.error(message);\n // #endif\n }\n\n reportWarning(loc: ShaderRange, message: string): void {\n Logger.warn(new GSError(GSErrorName.CompilationWarn, message, loc, ShaderLab._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 { 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 { ShaderLab } from \"../ShaderLab\";\nimport { ShaderLabUtils } from \"../ShaderLabUtils\";\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 _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 }\n\n isAttributeStruct(type: string) {\n return this.attributeStructs.findIndex((item) => item.ident!.lexeme === type) !== -1;\n }\n\n isVaryingStruct(type: string) {\n return this.varyingStructs.findIndex((item) => item.ident!.lexeme === type) !== -1;\n }\n\n isMRTStruct(type: string) {\n return this.mrtStructs.findIndex((item) => item.ident!.lexeme === type) !== -1;\n }\n\n referenceAttribute(ident: BaseToken): Error | void {\n const lexeme = ident.lexeme;\n if (this._referencedAttributeList[lexeme]) return;\n\n const props = this.attributeList.filter((item) => item.ident.lexeme === lexeme);\n if (!props.length) {\n return ShaderLabUtils.createGSError(\n `referenced attribute not found: ${lexeme}`,\n GSErrorName.CompilationError,\n ShaderLab._processingPassText,\n ident.location\n );\n }\n this._referencedAttributeList[lexeme] = props;\n }\n\n referenceVarying(ident: BaseToken): Error | void {\n const lexeme = ident.lexeme;\n if (this._referencedVaryingList[lexeme]) return;\n\n const props = this.varyingList.filter((item) => item.ident.lexeme === lexeme);\n if (!props.length) {\n return ShaderLabUtils.createGSError(\n `referenced varying not found: ${lexeme}`,\n GSErrorName.CompilationError,\n ShaderLab._processingPassText,\n ident.location\n );\n }\n this._referencedVaryingList[lexeme] = props;\n }\n\n referenceMRTProp(ident: BaseToken): Error | void {\n const lexeme = ident.lexeme;\n if (this._referencedMRTList[lexeme]) return;\n\n const props = this.mrtList.filter((item) => item.ident.lexeme === lexeme);\n if (!props.length) {\n return ShaderLabUtils.createGSError(\n `referenced mrt not found: ${lexeme}`,\n GSErrorName.CompilationError,\n ShaderLab._processingPassText,\n ident.location\n );\n }\n this._referencedMRTList[lexeme] = props;\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","import { IPoolElement } from \"@galacean/engine\";\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 { ShaderLab } from \"../ShaderLab\";\nimport { VisitorContext } from \"./VisitorContext\";\n// #if _VERBOSE\nimport { GSError } from \"../GSError\";\n// #endif\nimport { Logger, ReturnableObjectPool } from \"@galacean/engine\";\nimport { Keyword } from \"../common/enums/Keyword\";\nimport { TempArray } from \"../TempArray\";\nimport { ICodeSegment } from \"./types\";\n\n/**\n * @internal\n * The code generator\n */\nexport abstract class CodeGenVisitor {\n // #if _VERBOSE\n readonly errors: Error[] = [];\n // #endif\n\n abstract getAttributeProp(prop: StructProp): string;\n abstract getVaryingProp(prop: StructProp): string;\n abstract getMRTProp(prop: StructProp): string;\n\n protected static _tmpArrayPool = new ReturnableObjectPool(TempArray<string>, 10);\n\n defaultCodeGen(children: NodeChild[]) {\n const pool = CodeGenVisitor._tmpArrayPool;\n let ret = pool.get();\n ret.dispose();\n for (const child of children) {\n if (child instanceof BaseToken) {\n 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 if (context.isAttributeStruct(<string>postExpr.type)) {\n const error = context.referenceAttribute(prop);\n // #if _VERBOSE\n if (error) {\n this.errors.push(<GSError>error);\n }\n // #endif\n return prop.lexeme;\n } else if (context.isVaryingStruct(<string>postExpr.type)) {\n const error = context.referenceVarying(prop);\n // #if _VERBOSE\n if (error) {\n this.errors.push(<GSError>error);\n }\n // #endif\n return prop.lexeme;\n } else if (context.isMRTStruct(<string>postExpr.type)) {\n const error = context.referenceMRTProp(prop);\n // #if _VERBOSE\n if (error) {\n this.errors.push(<GSError>error);\n }\n // #endif\n return prop.lexeme;\n }\n\n return `${postExpr.codeGen(this)}.${prop.lexeme}`;\n } else {\n return `${postExpr.codeGen(this)}.${prop.codeGen(this)}`;\n }\n } else if (derivationLength === 4) {\n const identNode = children[0] as ASTNode.PostfixExpression;\n const indexNode = children[2] as ASTNode.Expression;\n const identLexeme = identNode.codeGen(this);\n const indexLexeme = indexNode.codeGen(this);\n if (identLexeme === \"gl_FragData\") {\n this._reportError(identNode.location, \"Please use MRT struct instead of gl_FragData.\");\n }\n return `${identLexeme}[${indexLexeme}]`;\n }\n\n return this.defaultCodeGen(node.children);\n }\n\n visitVariableIdentifier(node: ASTNode.VariableIdentifier): string {\n for (let name of node.referenceGlobalSymbolNames) {\n VisitorContext.context.referenceGlobal(name, ESymbolType.Any);\n }\n\n return node.getLexeme(this);\n }\n\n visitFunctionCall(node: ASTNode.FunctionCall): string {\n const call = node.children[0] as ASTNode.FunctionCallGeneric;\n if (call.fnSymbol instanceof FnSymbol) {\n VisitorContext.context.referenceGlobal(call.fnSymbol.ident, ESymbolType.FN);\n\n const paramList = call.children[2];\n if (paramList instanceof ASTNode.FunctionCallParameterList) {\n const astNodes = paramList.paramNodes;\n const paramInfoList = call.fnSymbol.astNode.protoType.parameterList;\n\n const params = astNodes.filter((_, i) => {\n const typeInfo = paramInfoList?.[i]?.typeInfo;\n return (\n !typeInfo ||\n (!VisitorContext.context.isAttributeStruct(typeInfo.typeLexeme) &&\n !VisitorContext.context.isVaryingStruct(typeInfo.typeLexeme) &&\n !VisitorContext.context.isMRTStruct(typeInfo.typeLexeme))\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\n const params = astNodes.filter((node) => {\n if (node instanceof ASTNode.AssignmentExpression) {\n const variableParam = ParserUtils.unwrapNodeByType<ASTNode.VariableIdentifier>(\n node,\n NoneTerminal.variable_identifier\n );\n if (\n variableParam &&\n typeof variableParam.typeInfo === \"string\" &&\n (VisitorContext.context.isAttributeStruct(variableParam.typeInfo) ||\n VisitorContext.context.isVaryingStruct(variableParam.typeInfo) ||\n VisitorContext.context.isMRTStruct(variableParam.typeInfo))\n ) {\n return false;\n }\n }\n\n return true;\n });\n\n let paramsCode = \"\";\n for (let i = 0, length = params.length; i < length; i++) {\n const node = params[i];\n const code = node.codeGen(this);\n\n if (node 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 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 VisitorContext.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 params = node.parameterInfoList.filter(\n (item) =>\n !item.typeInfo ||\n (!VisitorContext.context.isAttributeStruct(item.typeInfo.typeLexeme) &&\n !VisitorContext.context.isVaryingStruct(item.typeInfo.typeLexeme) &&\n !VisitorContext.context.isMRTStruct(item.typeInfo.typeLexeme))\n );\n\n let out = \"\";\n for (let i = 0, length = params.length; i < length; i++) {\n const item = params[i];\n const astNode = item.astNode;\n const code = astNode.codeGen(this);\n if (astNode instanceof ASTNode.MacroParamBlock || i === 0) {\n out += code;\n } else {\n out += `, ${code}`;\n }\n }\n\n return out;\n }\n\n visitFunctionHeader(node: ASTNode.FunctionHeader): string {\n const returnType = node.returnType.typeSpecifier.lexeme;\n if (VisitorContext.context.isVaryingStruct(returnType)) {\n return `void ${node.ident.lexeme}(`;\n }\n return this.defaultCodeGen(node.children);\n }\n\n visitJumpStatement(node: ASTNode.JumpStatement): string {\n const children = node.children;\n const cmd = children[0] as BaseToken;\n if (cmd.type === Keyword.RETURN) {\n const expr = children[1];\n if (expr instanceof ASTNode.Expression) {\n const returnVar = ParserUtils.unwrapNodeByType<ASTNode.VariableIdentifier>(\n expr,\n NoneTerminal.variable_identifier\n );\n if (VisitorContext.context.isVaryingStruct(<string>returnVar?.typeInfo)) {\n return \"\";\n }\n const returnFnCall = ParserUtils.unwrapNodeByType<ASTNode.FunctionCall>(expr, NoneTerminal.function_call);\n if (VisitorContext.context.isVaryingStruct(<string>returnFnCall?.type)) {\n return `${expr.codeGen(this)};`;\n }\n }\n }\n return this.defaultCodeGen(children);\n }\n\n visitFunctionIdentifier(node: ASTNode.FunctionIdentifier): string {\n return this.defaultCodeGen(node.children);\n }\n\n visitStructSpecifier(node: ASTNode.StructSpecifier): string {\n const context = VisitorContext.context;\n const { varyingStructs, attributeStructs, mrtStructs } = context;\n const isVaryingStruct = varyingStructs.indexOf(node) !== -1;\n const isAttributeStruct = attributeStructs.indexOf(node) !== -1;\n const isMRTStruct = mrtStructs.indexOf(node) !== -1;\n\n if (isVaryingStruct && isAttributeStruct) {\n this._reportError(node.location, \"cannot use same struct as Varying and Attribute\");\n }\n\n if (isVaryingStruct && isMRTStruct) {\n this._reportError(node.location, \"cannot use same struct as Varying and MRT\");\n }\n\n if (isAttributeStruct && isMRTStruct) {\n this._reportError(node.location, \"cannot use same struct as Attribute and MRT\");\n }\n\n if (isVaryingStruct || isAttributeStruct || isMRTStruct) {\n let result: ICodeSegment[] = [];\n\n result.push(\n ...node.macroExpressions.map((item) => ({\n text: item instanceof BaseToken ? item.lexeme : item.codeGen(this),\n index: item.location.start.index\n }))\n );\n\n for (const prop of node.propList) {\n const name = prop.ident.lexeme;\n if (isVaryingStruct && context._referencedVaryingList[name]?.indexOf(prop) >= 0) {\n result.push({\n text: `${this.getVaryingProp(prop)}\\n`,\n index: prop.ident.location.start.index\n });\n } else if (isAttributeStruct && context._referencedAttributeList[name]?.indexOf(prop) >= 0) {\n result.push({\n text: `${this.getAttributeProp(prop)}\\n`,\n index: prop.ident.location.start.index\n });\n } else if (isMRTStruct && context._referencedMRTList[name]?.indexOf(prop) >= 0) {\n result.push({\n text: `${this.getMRTProp(prop)}\\n`,\n index: prop.ident.location.start.index\n });\n }\n }\n\n const text = result\n .sort((a, b) => a.index - b.index)\n .map((item) => item.text)\n .join(\"\");\n\n return text;\n } else {\n return this.defaultCodeGen(node.children);\n }\n }\n\n visitFunctionDefinition(fnNode: ASTNode.FunctionDefinition): string {\n const fnName = fnNode.protoType.ident.lexeme;\n const context = VisitorContext.context;\n\n if (fnName == context.stageEntry) {\n const statements = fnNode.statements.codeGen(this);\n return `void main() ${statements}`;\n } else {\n return this.defaultCodeGen(fnNode.children);\n }\n }\n\n protected _reportError(loc: ShaderRange | ShaderPosition, message: string): void {\n // #if _VERBOSE\n this.errors.push(new GSError(GSErrorName.CompilationError, message, loc, ShaderLab._processingPassText));\n // #else\n Logger.error(message);\n // #endif\n }\n}\n","import { 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 { ShaderData } from \"../parser/ShaderInfo\";\nimport { ESymbolType, FnSymbol, StructSymbol, SymbolInfo } from \"../parser/symbolTable\";\nimport { CodeGenVisitor } from \"./CodeGenVisitor\";\nimport { ICodeSegment } from \"./types\";\nimport { 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 VisitorContext.context._passSymbolTable = shaderData.symbolTable;\n\n const outerGlobalMacroDeclarations = shaderData.getOuterGlobalMacroDeclarations();\n\n return {\n vertex: this._vertexMain(vertexEntry, shaderData, outerGlobalMacroDeclarations),\n fragment: this._fragmentMain(fragmentEntry, shaderData, outerGlobalMacroDeclarations)\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 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 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 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 _getGlobalSymbol(out: ICodeSegment[]): void {\n const { _referencedGlobals } = VisitorContext.context;\n\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; i < symbols.length; i++) {\n const sm = symbols[i];\n const text = sm.astNode.codeGen(this) + (sm.type === ESymbolType.VAR ? \";\" : \"\");\n if (!sm.isInMacroBranch) {\n out.push({\n text,\n index: sm.astNode.location.start.index\n });\n }\n }\n }\n\n if (Object.keys(_referencedGlobals).length !== lastLength) {\n this._getGlobalSymbol(out);\n }\n }\n\n private _getCustomStruct(structNodes: ASTNode.StructSpecifier[], out: ICodeSegment[]): void {\n for (const node of structNodes) {\n const text = node.codeGen(this);\n\n if (!node.isInMacroBranch) {\n out.push({ text, index: node.location.start.index });\n }\n }\n }\n\n private _getGlobalMacroDeclarations(macros: ASTNode.GlobalDeclaration[], out: ICodeSegment[]): void {\n const context = VisitorContext.context;\n const referencedGlobals = context._referencedGlobals;\n const referencedGlobalMacroASTs = context._referencedGlobalMacroASTs;\n referencedGlobalMacroASTs.length = 0;\n\n for (const symbols of Object.values(referencedGlobals)) {\n for (const symbol of symbols) {\n if (symbol.isInMacroBranch) {\n referencedGlobalMacroASTs.push(symbol.astNode);\n }\n }\n }\n\n for (const macro of macros) {\n let text: string;\n const child = macro.children[0];\n\n if (child instanceof ASTNode.GlobalMacroIfStatement) {\n let result: ICodeSegment[] = [];\n result.push(\n ...macro.macroExpressions.map((item) => ({\n text: item instanceof BaseToken ? item.lexeme : item.codeGen(this),\n index: item.location.start.index\n }))\n );\n\n this._visitGlobalMacroIfStatement(child, result);\n\n text = result\n .sort((a, b) => a.index - b.index)\n .map((item) => item.text)\n .join(\"\\n\");\n } else {\n text = macro.codeGen(this);\n }\n\n out.push({\n text,\n index: macro.location.start.index\n });\n }\n }\n\n private _visitGlobalMacroIfStatement(node: TreeNode, out: ICodeSegment[]): void {\n const children = node.children;\n for (let i = 0; i < children.length; i++) {\n const child = children[i];\n if (child instanceof ASTNode.PrecisionSpecifier) {\n out.push({\n text: child.codeGen(this),\n index: child.location.start.index\n });\n } else if (child instanceof ASTNode.FunctionDefinition) {\n if (VisitorContext.context._referencedGlobalMacroASTs.indexOf(child) !== -1) {\n out.push({\n text: child.getCache(), // code has generated in `_getGlobalSymbol`\n index: child.location.start.index\n });\n }\n } else if (child instanceof ASTNode.StructSpecifier) {\n const context = VisitorContext.context;\n const stage = context.stage;\n if (\n VisitorContext.context._referencedGlobalMacroASTs.indexOf(child) !== -1 ||\n (stage === EShaderStage.VERTEX\n ? context.isAttributeStruct(child.ident?.lexeme) || context.isVaryingStruct(child.ident?.lexeme)\n : context.isVaryingStruct(child.ident?.lexeme) || context.isMRTStruct(child.ident?.lexeme))\n ) {\n out.push({\n text: child.getCache(), // code has generated in `_getGlobalSymbol` or `_getCustomStruct`\n index: child.location.start.index\n });\n }\n } else if (child instanceof ASTNode.VariableDeclarationList) {\n const variableDeclarations = child.variableDeclarations;\n for (let i = 0; i < variableDeclarations.length; i++) {\n const variableDeclaration = variableDeclarations[i];\n if (VisitorContext.context._referencedGlobalMacroASTs.indexOf(variableDeclaration) !== -1) {\n out.push({\n text: variableDeclaration.getCache() + \";\", // code has generated in `_getGlobalSymbol`\n index: variableDeclaration.location.start.index\n });\n }\n }\n }\n\n if (child instanceof TreeNode) {\n this._visitGlobalMacroIfStatement(child, out);\n }\n }\n }\n}\n","import { BaseToken } from \"../common/BaseToken\";\nimport { ASTNode } from \"../parser/AST\";\nimport { StructProp } from \"../parser/types\";\nimport { GLESVisitor } from \"./GLESVisitor\";\nimport { VisitorContext } from \"./VisitorContext\";\n\nexport class GLES100Visitor extends GLESVisitor {\n private static _singleton: GLES100Visitor;\n static getVisitor(): GLES100Visitor {\n if (!this._singleton) {\n this._singleton = new GLES100Visitor();\n }\n return this._singleton;\n }\n\n override getAttributeProp(prop: StructProp): string {\n return `attribute ${prop.typeInfo.typeLexeme} ${prop.ident.lexeme};`;\n }\n\n override getVaryingProp(prop: StructProp): string {\n return `varying ${prop.typeInfo.typeLexeme} ${prop.ident.lexeme};`;\n }\n\n override getMRTProp(): string {\n return null;\n }\n\n override visitPostfixExpression(node: ASTNode.PostfixExpression): string {\n const { children } = node;\n const postExpr = children[0];\n const { context } = VisitorContext;\n if (postExpr instanceof ASTNode.PostfixExpression && context.isMRTStruct(<string>postExpr.type)) {\n const propReferenced = children[2] as BaseToken;\n const prop = context.mrtList.find((item) => item.ident.lexeme === propReferenced.lexeme);\n if (!prop) {\n this._reportError(propReferenced.location, `not found mrt property: ${propReferenced.lexeme}`);\n return \"\";\n }\n return `gl_FragData[${prop.mrtIndex!}]`;\n }\n return super.visitPostfixExpression(node);\n }\n\n override visitJumpStatement(node: ASTNode.JumpStatement): string {\n if (node.isFragReturnStatement) {\n if (VisitorContext.context.mrtStructs.length) {\n return \"\";\n }\n const expression = node.children[1] as ASTNode.Expression;\n return `gl_FragColor = ${expression.codeGen(this)}`;\n }\n return super.visitJumpStatement(node);\n }\n}\n","import { EShaderStage } from \"../common/enums/ShaderStage\";\nimport { ASTNode } from \"../parser/AST\";\nimport { ShaderData } from \"../parser/ShaderInfo\";\nimport { StructProp } from \"../parser/types\";\nimport { GLESVisitor } from \"./GLESVisitor\";\nimport { ICodeSegment } from \"./types\";\nimport { VisitorContext } from \"./VisitorContext\";\n\nconst V3_GL_FragColor = \"GS_glFragColor\";\n\nexport class GLES300Visitor extends GLESVisitor {\n private static _singleton: GLES300Visitor;\n static getVisitor(): GLES300Visitor {\n if (!this._singleton) {\n this._singleton = new GLES300Visitor();\n }\n return this._singleton;\n }\n\n private _otherCodeArray: ICodeSegment[] = [];\n private _fragColorVariableRegistered = false;\n\n override reset(): void {\n super.reset();\n\n this._otherCodeArray.length = 0;\n this._fragColorVariableRegistered = false;\n }\n\n override getOtherGlobal(data: ShaderData, out: ICodeSegment[]): void {\n super.getOtherGlobal(data, out);\n\n for (let i = 0, n = this._otherCodeArray.length; i < n; i++) {\n out.push(this._otherCodeArray[i]);\n }\n }\n\n override getAttributeProp(prop: StructProp): string {\n return `in ${prop.typeInfo.typeLexeme} ${prop.ident.lexeme};`;\n }\n\n override getVaryingProp(prop: StructProp): string {\n const qualifier = VisitorContext.context.stage === EShaderStage.FRAGMENT ? \"in\" : \"out\";\n return `${qualifier} ${prop.typeInfo.typeLexeme} ${prop.ident.lexeme};`;\n }\n\n override getMRTProp(prop: StructProp): string {\n return `layout(location = ${prop.mrtIndex}) out vec4 ${prop.ident.lexeme};`;\n }\n\n override visitFunctionIdentifier(node: ASTNode.FunctionIdentifier): string {\n const children = node.children;\n const typeSpecifier = children[0] as ASTNode.TypeSpecifier;\n if (typeSpecifier.children.length !== 1) {\n return this.defaultCodeGen(children);\n }\n let ident = node.lexeme;\n switch (node.ident) {\n case \"texture2D\":\n case \"textureCube\":\n ident = \"texture\";\n break;\n case \"texture2DProj\":\n ident = \"textureProj\";\n break;\n case \"texture2DLodEXT\":\n case \"textureCubeLodEXT\":\n ident = \"textureLod\";\n break;\n case \"texture2DGradEXT\":\n case \"textureCubeGradEXT\":\n ident = \"textureGrad\";\n break;\n case \"texture2DProjLodEXT\":\n ident = \"textureProjLod\";\n break;\n case \"texture2DProjGradEXT\":\n ident = \"textureProjGrad\";\n break;\n case \"gl_FragDepthEXT\":\n ident = \"gl_FragDepth\";\n break;\n }\n return ident;\n }\n\n override visitVariableIdentifier(node: ASTNode.VariableIdentifier): string {\n const { context } = VisitorContext;\n if (context.stage === EShaderStage.FRAGMENT && node.getLexeme(this) === \"gl_FragColor\") {\n if (context.mrtStructs.length) {\n this._reportError(node.location, \"gl_FragColor cannot be used with MRT (Multiple Render Targets).\");\n return;\n }\n this._registerFragColorVariable();\n return V3_GL_FragColor;\n }\n return super.visitVariableIdentifier(node);\n }\n\n override visitJumpStatement(node: ASTNode.JumpStatement): string {\n if (node.isFragReturnStatement) {\n if (VisitorContext.context.mrtStructs.length) {\n return \"\";\n }\n this._registerFragColorVariable();\n\n const expression = node.children[1] as ASTNode.Expression;\n return `${V3_GL_FragColor} = ${expression.codeGen(this)};`;\n }\n return super.visitJumpStatement(node);\n }\n\n private _registerFragColorVariable() {\n if (this._fragColorVariableRegistered) return;\n this._otherCodeArray.push({\n text: `out vec4 ${V3_GL_FragColor};`,\n index: 0\n });\n this._fragColorVariableRegistered = true;\n }\n}\n","import { Logger } from \"@galacean/engine\";\nimport { ShaderPosition, ShaderRange } from \".\";\nimport { GSErrorName } from \"../GSError\";\nimport { ShaderLab } from \"../ShaderLab\";\nimport { ShaderLabUtils } from \"../ShaderLabUtils\";\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 // 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 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 ShaderLab.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 // Skip whitespace\n while (index < length && BaseLexer.isWhiteSpaceChar(source.charCodeAt(index), true)) {\n index++;\n }\n\n // Check for comments: 47 is '/'\n if (index + 1 >= length || source.charCodeAt(index) !== 47) break;\n\n const nextChar = source.charCodeAt(index + 1);\n if (nextChar === 47) {\n // Single line comment: 10 is '\\n', 13 is '\\r'\n index += 2;\n while (index < length) {\n const charCode = source.charCodeAt(index);\n if (charCode === 10 || charCode === 13) break;\n index++;\n }\n } else if (nextChar === 42) {\n // Multi-line comment: 42 is '*'\n index += 2;\n while (index + 1 < length && !(source.charCodeAt(index) === 42 && source.charCodeAt(index + 1) === 47)) {\n index++;\n }\n index += 2; // Skip '*/'\n } else {\n break; // Not a comment, stop\n }\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 = ShaderLabUtils.createGSError(msgs.join(\" \"), GSErrorName.ScannerError, this._source, pos);\n // #if _VERBOSE\n Logger.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, EOF } from \"../common/BaseToken\";\nimport { Keyword } from \"../common/enums/Keyword\";\nimport { MacroDefineList } from \"../Preprocessor\";\nimport { ShaderLab } from \"../ShaderLab\";\n\n/**\n * The Lexer of ShaderLab 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 private _needScanMacroConditionExpression = false;\n\n *tokenize() {\n while (!this.isEnd()) {\n yield this.scanToken();\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 this.skipCommentsAndSpace();\n if (this.isEnd()) {\n return EOF;\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.ADD_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 = ShaderLab.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 while (this.getCurChar() !== \"\\n\" && !this.isEnd()) {\n outBuffer.push(this.getCurChar());\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 it is a macro definition or conditional expression, we need to skip the rest of the line\n if (word === \"#define\") {\n this._scanUtilBreakLine(buffer);\n const word = buffer.join(\"\") + \"\\n\";\n token.set(Keyword.MACRO_DEFINE_EXPRESSION, word, start);\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 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.macroDefineList[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 private _scanNum(): BaseToken {\n const buffer: string[] = [];\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 {\n 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 {\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\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","function _type_of(obj) {\n \"@swc/helpers - typeof\";\n\n return obj && typeof Symbol !== \"undefined\" && obj.constructor === Symbol ? \"symbol\" : typeof obj;\n}\nexport { _type_of as _ };\n","import { ShaderRange } from \"../common\";\nimport { BaseToken } from \"../common/BaseToken\";\nimport { ShaderLabUtils } from \"../ShaderLabUtils\";\n// #if _VERBOSE\nimport { GSErrorName } from \"../GSError\";\n// #endif\n\nexport class MacroDefine {\n private _replaceRegex?: RegExp;\n private readonly _argsLexemes?: string[];\n\n get isFunction(): boolean {\n return !!this.args;\n }\n\n constructor(\n public readonly macro: BaseToken,\n public readonly body?: BaseToken,\n public readonly location?: ShaderRange,\n public readonly args?: BaseToken[]\n ) {\n if (args?.length > 0) {\n this._argsLexemes = this.args.map((item) => item.lexeme);\n this._replaceRegex = new RegExp(`\\\\b(${this._argsLexemes.join(\"|\")})\\\\b`, \"g\");\n }\n }\n\n expandFunctionBody(args: string[]): string {\n if (args.length !== this.args?.length) {\n throw ShaderLabUtils.createGSError(\"mismatched function macro\", GSErrorName.PreprocessorError, \"\", this.location);\n }\n\n if (args.length === 0) {\n return this.body.lexeme;\n }\n\n return this.body.lexeme.replace(this._replaceRegex, (m) => {\n return args[this._argsLexemes.indexOf(m)];\n });\n }\n}\n","import { ShaderRange } from \"../../common/ShaderRange\";\n\n// #if _VERBOSE\nexport class BlockInfo {\n readonly sourceFile: string;\n readonly rangeInFile?: ShaderRange;\n readonly sourceMap?: PpSourceMap;\n\n constructor(sourceFile?: string, rangeInFile?: ShaderRange, sourceMap?: PpSourceMap) {\n this.sourceFile = sourceFile ?? \"__main__\";\n this.rangeInFile = rangeInFile;\n this.sourceMap = sourceMap;\n }\n}\n\nexport class MapRange {\n sourceLoc: { block: BlockInfo; rangeInBlock: ShaderRange };\n generatedLoc: { start: number; end: number };\n\n constructor(sourceBlock: BlockInfo, rangeInBlock: ShaderRange, generatedLoc: { start: number; end: number }) {\n this.sourceLoc = { block: sourceBlock, rangeInBlock };\n this.generatedLoc = generatedLoc;\n }\n\n getSourceIndex(generatedIdx: number) {\n const { block, rangeInBlock } = this.sourceLoc;\n if (block.sourceMap) {\n if (block.sourceFile !== \"__main__\") return block.sourceMap.map(generatedIdx - this.generatedLoc.start);\n else if (rangeInBlock) {\n return {\n sourceFile: block.sourceFile,\n index: (block.rangeInFile?.start.index ?? 0) + rangeInBlock.start.index\n };\n }\n }\n\n return {\n index: generatedIdx - this.generatedLoc.start + rangeInBlock.start.index + (block.rangeInFile?.start.index ?? 0),\n sourceFile: this.sourceLoc.block.sourceFile\n };\n }\n}\n\nexport default class PpSourceMap {\n readonly mapRanges: MapRange[] = [];\n\n static rangeContains(range: MapRange[\"generatedLoc\"], index: number) {\n return range.start <= index && range.end > index;\n }\n\n addMapRange(mapRange: MapRange) {\n this.mapRanges.push(mapRange);\n }\n\n /**\n * @returns index\n */\n map(index: number): { sourceFile: string; index: number } {\n let curRange: MapRange | undefined;\n for (const range of this.mapRanges) {\n const { generatedLoc } = range;\n if (PpSourceMap.rangeContains(generatedLoc, index)) {\n return range.getSourceIndex(index);\n } else if (range.generatedLoc.start < index) {\n curRange = range;\n continue;\n } else {\n break;\n }\n }\n if (!curRange) return { sourceFile: \"__main__\", index };\n return {\n index: index - curRange.generatedLoc.end + curRange.sourceLoc.rangeInBlock.end.index,\n sourceFile: curRange.sourceLoc.block.sourceFile\n };\n }\n}\n// #endif\n","import { ShaderPosition, ShaderRange } from \"../common\";\n// #if _VERBOSE\nimport PpSourceMap from \"./sourceMap\";\n// #endif\nimport { BaseLexer } from \"../common/BaseLexer\";\nimport { BaseToken, EOF } from \"../common/BaseToken\";\nimport { ShaderLab } from \"../ShaderLab\";\nimport { MacroParserKeyword, MacroParserToken } from \"./constants\";\n\nexport type OnToken = (token: BaseToken, scanner: MacroParserLexer) => void;\n\nexport default class MacroParserLexer extends BaseLexer {\n private static _isPpCharacters(charCode: number): boolean {\n return (\n charCode === 35 || // #\n BaseLexer.isAlnum(charCode) // _, A-Z, a-z, 0-9\n );\n }\n\n private static _lexemeTable = <Record<string, MacroParserKeyword>>{\n \"#define\": MacroParserKeyword.define,\n \"#undef\": MacroParserKeyword.undef,\n \"#if\": MacroParserKeyword.if,\n \"#ifdef\": MacroParserKeyword.ifdef,\n \"#ifndef\": MacroParserKeyword.ifndef,\n \"#else\": MacroParserKeyword.else,\n \"#elif\": MacroParserKeyword.elif,\n \"#endif\": MacroParserKeyword.endif,\n defined: MacroParserKeyword.defined\n };\n\n private macroLvl = 0;\n\n // #if _VERBOSE\n readonly sourceMap = new PpSourceMap();\n readonly file: string;\n readonly blockRange?: ShaderRange;\n // #endif\n\n constructor(\n source: string,\n // #if _VERBOSE\n file = \"__main__\",\n blockRange?: ShaderRange\n // #endif\n ) {\n super(source);\n // #if _VERBOSE\n this.file = file;\n this.blockRange = blockRange;\n // #endif\n }\n\n scanWordsUntilTerminator(terminatorChar: string): BaseToken[] {\n const tokens: BaseToken[] = [];\n while (true) {\n this.skipSpace(true);\n if (BaseLexer.isAlpha(this.getCurCharCode())) {\n tokens.push(this.scanWord());\n } else if (this.getCurChar() === terminatorChar) {\n this.advance(1);\n return tokens;\n } else {\n this.advance(1);\n }\n }\n }\n\n scanWord(): BaseToken {\n // Skip all non-alphabetic characters, primarily used for handling defined(MACRO) syntax\n while (!BaseLexer.isAlpha(this.getCurCharCode()) && !this.isEnd()) {\n this.advance(1);\n }\n\n if (this.isEnd()) {\n return EOF;\n }\n\n const start = this._currentIndex;\n while (BaseLexer.isAlnum(this.getCurCharCode()) && !this.isEnd()) {\n this.advance(1);\n }\n const end = this._currentIndex;\n const word = this._source.slice(start, end);\n if (end === start) {\n this.throwError(this.getShaderPosition(0), \"no word found.\");\n }\n\n const token = BaseToken.pool.get();\n const tokenType = MacroParserLexer._lexemeTable[word] ?? MacroParserToken.id;\n token.set(tokenType, word, this.getShaderPosition(word.length));\n return token;\n }\n\n override scanToken(): BaseToken | undefined {\n this.skipCommentsAndSpace();\n if (this.isEnd()) {\n return;\n }\n const source = this._source;\n let start = this._currentIndex;\n let found = false;\n for (var n = source.length; this._currentIndex < n; ) {\n if (MacroParserLexer._isPpCharacters(source.charCodeAt(this._currentIndex))) {\n this.advance(1);\n found = true;\n } else {\n if (found) {\n break;\n }\n this.advance(1);\n this.skipCommentsAndSpace();\n start = this._currentIndex;\n }\n }\n\n const lexeme = source.slice(start, this._currentIndex);\n const token = BaseToken.pool.get();\n const type = MacroParserLexer._lexemeTable[lexeme] ?? MacroParserToken.id;\n token.set(type, lexeme, this.getShaderPosition(this._currentIndex - start));\n\n if (type === MacroParserKeyword.if || type === MacroParserKeyword.ifdef || type === MacroParserKeyword.ifndef) {\n this.macroLvl++;\n } else if (type === MacroParserKeyword.endif) {\n this.macroLvl--;\n }\n\n return token;\n }\n\n scanQuotedString(): BaseToken<MacroParserToken.string_const> {\n this.skipSpace(true);\n const source = this._source;\n const sourceLength = source.length;\n const start = this.getShaderPosition(0);\n\n let index = this._currentIndex;\n\n // Check for opening quote\n if (source.charCodeAt(index) !== 34) {\n // 34 = '\"'\n this.throwError(start, \"Unexpected char, expected '\\\"'\");\n }\n\n const contentStart = ++index; // Skip opening quote and record start\n\n // Fast scan to closing quote\n while (index < sourceLength && source.charCodeAt(index) !== 34) {\n index++;\n }\n\n if (index >= sourceLength) {\n this.throwError(this.getShaderPosition(0), \"Unexpected char, expected '\\\"'\");\n }\n\n const lexeme = source.slice(contentStart, index);\n this.advance(index + 1 - this._currentIndex); // Skip to after closing quote\n\n const token = BaseToken.pool.get();\n token.set(MacroParserToken.string_const, lexeme, start);\n return token;\n }\n\n scanToChar(char: string) {\n const source = this._source;\n while (source[this._currentIndex] !== char && !this.isEnd()) {\n this.advance(1);\n }\n }\n\n scanMacroBranchBody(): {\n body: BaseToken<MacroParserToken.chunk>;\n nextDirective: BaseToken;\n } {\n const shaderPosition = this.getShaderPosition(0);\n const startLevel = this.macroLvl;\n\n let nextDirective = this.scanToken()!;\n while (true) {\n const { type } = nextDirective;\n if (type === MacroParserKeyword.endif && startLevel - 1 === this.macroLvl) {\n break;\n } else if (\n (type === MacroParserKeyword.elif || type === MacroParserKeyword.else) &&\n startLevel === this.macroLvl\n ) {\n break;\n }\n nextDirective = this.scanToken()!;\n }\n\n const lexeme = this._source.slice(shaderPosition.index, this._currentIndex - nextDirective.lexeme.length - 1);\n const body = BaseToken.pool.get();\n body.set(MacroParserToken.chunk, lexeme, shaderPosition);\n return { body, nextDirective };\n }\n\n scanPairedBlock(lc: string, rc: string): void {\n this.scanToChar(lc);\n let level = 0;\n const source = this._source;\n\n do {\n const curChar = source[this._currentIndex];\n\n if (curChar === lc) {\n level++;\n } else if (curChar === rc) {\n level--;\n }\n this.advance(1);\n } while (level > 0);\n }\n\n /**\n * @returns end ShaderPosition\n */\n scanRemainMacro(): ShaderPosition {\n const startLvl = this.macroLvl;\n let directive = this.scanToken()!;\n while (!this.isEnd() && (directive.type !== MacroParserKeyword.endif || startLvl - 1 !== this.macroLvl)) {\n directive = this.scanToken()!;\n }\n return this.getShaderPosition(0);\n }\n\n peekNonSpace() {\n let current = this._currentIndex;\n while (/\\s/.test(this._source[current])) {\n current += 1;\n }\n return this._source[current];\n }\n\n scanInteger() {\n const start = this._currentIndex;\n while (BaseLexer.isDigit(this.getCurCharCode())) {\n this.advance(1);\n }\n if (this._currentIndex === start) {\n this.throwError(this.getShaderPosition(0), \"no integer found\");\n }\n const integer = this._source.slice(start, this._currentIndex);\n\n const token = BaseToken.pool.get();\n token.set(MacroParserToken.int_constant, integer, this.getShaderPosition(0));\n return token;\n }\n\n scanMacroBody(): BaseToken<MacroParserToken.line_remain> {\n this.skipSpace(false);\n let lexeme = \"\";\n const source = this._source;\n const sourceLength = source.length;\n\n const start = this.getShaderPosition(0);\n while (this._currentIndex < sourceLength) {\n const charCode = source.charCodeAt(this._currentIndex);\n\n // Check for line break (terminates macro definition), break when encounter \"\\n\"\n if (charCode === 10) {\n break;\n }\n\n // Check for comments (both single-line and multi-line)\n if (charCode === 47) {\n const nextIndex = this._currentIndex + 1;\n if (nextIndex < sourceLength) {\n const nextCharCode = source.charCodeAt(nextIndex);\n\n // Single-line comment (terminates macro definition), break when encounter \"//\"\n if (nextCharCode === 47) {\n break;\n }\n\n // Multi-line comment (skip but don't terminate)\n if (nextCharCode === 42) {\n this.advance(2); // Skip \"/*\"\n\n // Skip until end of multi-line comment\n while (this._currentIndex + 1 < sourceLength) {\n const currentIndex = this._currentIndex;\n if (source.charCodeAt(currentIndex) === 42 && source.charCodeAt(currentIndex + 1) === 47) {\n this.advance(2); // Skip \"*/\n break;\n }\n this.advance(1);\n }\n\n lexeme += \" \"; // Replace comment with space\n continue;\n }\n }\n }\n\n // Accumulate useful character\n lexeme += source[this._currentIndex];\n this.advance(1);\n }\n\n if (lexeme === \"\") {\n return null;\n }\n\n const valueToken = BaseToken.pool.get();\n valueToken.set(MacroParserToken.line_remain, lexeme, ShaderLab.createRange(start, this.getShaderPosition(0)));\n return valueToken;\n }\n}\n","import { ExpandSegment } from \"./MacroParser\";\n// #if _VERBOSE\nimport PpSourceMap, { MapRange } from \"./sourceMap\";\n// #endif\n\nexport class PpUtils {\n static expand(\n segments: ExpandSegment[],\n source: string,\n // #if _VERBOSE\n sourceMap?: PpSourceMap\n //#endif\n ) {\n const ret: string[] = [];\n let startIdx = 0;\n let generatedIdx = 0;\n\n for (const seg of segments) {\n const originSlice = source.slice(startIdx, seg.rangeInBlock.start.index);\n ret.push(originSlice, seg.replace);\n\n const generatedIdxEnd = generatedIdx + originSlice.length + seg.replace.length;\n\n // #if _VERBOSE\n const mapRange = new MapRange(seg.block, seg.rangeInBlock, {\n start: generatedIdx + originSlice.length,\n end: generatedIdxEnd\n });\n sourceMap?.addMapRange(mapRange);\n // #endif\n\n startIdx = seg.rangeInBlock.end.index;\n generatedIdx = generatedIdxEnd;\n }\n ret.push(source.slice(startIdx));\n return ret.join(\"\");\n }\n}\n","import { ShaderMacro } from \"@galacean/engine\";\nimport { ShaderPosition, ShaderRange } from \"../common\";\nimport { BaseToken } from \"../common/BaseToken\";\nimport { GSErrorName } from \"../GSError\";\nimport { ShaderLab } from \"../ShaderLab\";\nimport { ShaderLabUtils } from \"../ShaderLabUtils\";\nimport { MacroParserConstant, MacroParserKeyword, MacroParserToken } from \"./constants\";\nimport { MacroDefine } from \"./MacroDefine\";\nimport MacroParserLexer from \"./MacroParserLexer\";\nimport { PpUtils } from \"./Utils\";\n// #if _VERBOSE\nimport PpSourceMap, { BlockInfo } from \"./sourceMap\";\n// #endif\nimport { BaseLexer } from \"../common/BaseLexer\";\n\nexport interface ExpandSegment {\n // #if _VERBOSE\n block?: BlockInfo;\n // #endif\n rangeInBlock: ShaderRange;\n replace: string;\n}\n\n/** @internal */\nexport class MacroParser {\n static lexer: MacroParserLexer;\n\n private static _definedMacros: Map<string, MacroDefine> = new Map();\n private static _expandSegmentsStack: ExpandSegment[][] = [[]];\n\n private static _expandVisitedMacros: Record<string, number> = {};\n private static _expandVersionId: number = 1;\n\n // #if _VERBOSE\n static _errors: Error[] = [];\n // #endif\n\n static parse(source: string, macros: ShaderMacro[]): string | null {\n MacroParser._reset();\n\n for (const macro of macros) {\n MacroParser._addPredefinedMacro(macro.name, macro.value);\n }\n\n this.lexer = new MacroParserLexer(source);\n return MacroParser._parseDirectives(this.lexer);\n }\n\n private static _reset() {\n this._expandSegmentsStack.length = 0;\n this._expandSegmentsStack.push([]);\n\n this._definedMacros.clear();\n this._addPredefinedMacro(\"GL_ES\");\n\n // #if _VERBOSE\n this._errors.length = 0;\n // #endif\n }\n\n private static _addPredefinedMacro(macro: string, value?: string) {\n const token = BaseToken.pool.get();\n token.set(MacroParserToken.id, macro);\n\n let macroBody: BaseToken | undefined;\n if (value != undefined) {\n macroBody = BaseToken.pool.get();\n macroBody.set(MacroParserToken.id, value);\n }\n\n this._definedMacros.set(macro, new MacroDefine(token, macroBody));\n }\n\n private static _parseDirectives(lexer: MacroParserLexer): string | null {\n let directive: BaseToken | undefined;\n while ((directive = lexer.scanToken())) {\n switch (directive.type) {\n case MacroParserToken.id:\n this._parseMacro(lexer, directive);\n break;\n case MacroParserKeyword.define:\n this._parseDefine(lexer);\n break;\n case MacroParserKeyword.undef:\n this._parseUndef(lexer);\n break;\n case MacroParserKeyword.if:\n this._parseIfDirective(lexer, MacroParserKeyword.if);\n break;\n case MacroParserKeyword.ifndef:\n this._parseIfDirective(lexer, MacroParserKeyword.ifndef);\n break;\n case MacroParserKeyword.ifdef:\n this._parseIfDirective(lexer, MacroParserKeyword.ifdef);\n break;\n }\n }\n // #if _VERBOSE\n if (this._errors.length > 0) return null;\n // #endif\n\n return PpUtils.expand(this._getExpandSegments(), lexer.source, lexer.sourceMap);\n }\n\n private static _getExpandSegments(): ExpandSegment[] {\n return this._expandSegmentsStack[this._expandSegmentsStack.length - 1];\n }\n\n private static _reportError(loc: ShaderRange | ShaderPosition, message: string, source: string, file?: string) {\n const error = ShaderLabUtils.createGSError(message, GSErrorName.PreprocessorError, source, loc, file);\n // #if _VERBOSE\n this._errors.push(error);\n // #endif\n }\n\n private static _parseIfDirective(lexer: MacroParserLexer, directiveType: MacroParserKeyword): void {\n const directiveLength =\n directiveType === MacroParserKeyword.if ? 3 : directiveType === MacroParserKeyword.ifdef ? 6 : 7; // #if = 3, #ifdef = 6, #ifndef = 7\n const start = lexer.currentIndex - directiveLength;\n let skipMacro = false;\n\n let shouldInclude: MacroParserConstant;\n if (directiveType === MacroParserKeyword.if) {\n shouldInclude = this._parseConstantExpression(lexer);\n } else {\n const macroToken = lexer.scanWord();\n const lexeme = macroToken.lexeme;\n if (lexeme.startsWith(\"GL_\")) {\n skipMacro = true;\n } else {\n const defined = this._definedMacros.get(lexeme);\n shouldInclude = directiveType === MacroParserKeyword.ifdef ? !!defined : !defined;\n }\n }\n\n lexer.skipSpace(true);\n const { body, nextDirective } = lexer.scanMacroBranchBody();\n\n if (skipMacro) return;\n\n if (shouldInclude) {\n const end =\n nextDirective.type === MacroParserKeyword.endif ? lexer.getShaderPosition(0) : lexer.scanRemainMacro();\n const expanded = this._expandMacroChunk(body.lexeme, body.location, lexer);\n this._addContentReplace(\n lexer.file,\n ShaderLab.createPosition(start),\n end,\n expanded.content,\n lexer.blockRange,\n expanded.sourceMap\n );\n } else {\n this._addEmptyReplace(lexer, start);\n this._processConditionalDirective(nextDirective.type, lexer);\n }\n }\n\n private static _processConditionalDirective(\n directive: MacroParserKeyword.elif | MacroParserKeyword.else | MacroParserKeyword.endif,\n scanner: MacroParserLexer\n ) {\n if (directive === MacroParserKeyword.endif) {\n return;\n }\n\n const start = scanner.currentIndex;\n\n if (directive === MacroParserKeyword.else) {\n const { body } = scanner.scanMacroBranchBody();\n const expanded = this._expandMacroChunk(body.lexeme, body.location, scanner);\n this._addContentReplace(\n scanner.file,\n ShaderLab.createPosition(start),\n scanner.getShaderPosition(0),\n expanded.content,\n scanner.blockRange,\n expanded.sourceMap\n );\n } else if (directive === MacroParserKeyword.elif) {\n const constantExpr = this._parseConstantExpression(scanner);\n const { body, nextDirective } = scanner.scanMacroBranchBody();\n if (constantExpr) {\n const end =\n nextDirective.type === MacroParserKeyword.endif ? scanner.currentIndex : scanner.scanRemainMacro().index;\n const expanded = this._expandMacroChunk(body.lexeme, body.location, scanner);\n this._addContentReplace(\n scanner.file,\n ShaderLab.createPosition(start),\n ShaderLab.createPosition(end),\n expanded.content,\n scanner.blockRange,\n expanded.sourceMap\n );\n } else {\n this._addContentReplace(\n scanner.file,\n ShaderLab.createPosition(start),\n ShaderLab.createPosition(scanner.currentIndex),\n \"\",\n scanner.blockRange\n );\n this._processConditionalDirective(nextDirective.type, scanner);\n }\n }\n }\n\n private static _parseConstantExpression(scanner: MacroParserLexer): MacroParserConstant {\n scanner.skipSpace(true);\n return this._parseLogicalOrExpression(scanner);\n }\n\n private static _parseLogicalOrExpression(scanner: MacroParserLexer): MacroParserConstant {\n const operand1 = this._parseLogicalAndExpression(scanner);\n const operator = scanner.peek(2);\n if (operator && operator === \"||\") {\n scanner.advance(2);\n scanner.skipSpace(false);\n const operand2 = this._parseLogicalOrExpression(scanner);\n return operand1 || operand2;\n }\n return operand1;\n }\n\n private static _parseLogicalAndExpression(scanner: MacroParserLexer): MacroParserConstant {\n const operand1 = this._parseEqualityExpression(scanner);\n const operator = scanner.peek(2);\n if (operator && operator === \"&&\") {\n scanner.advance(2);\n scanner.skipSpace(false);\n const operand2 = this._parseLogicalAndExpression(scanner);\n return operand1 && operand2;\n }\n return operand1;\n }\n\n private static _parseEqualityExpression(scanner: MacroParserLexer): MacroParserConstant {\n const operand1 = this._parseRelationalExpression(scanner);\n const operator = scanner.peek(2);\n if (operator && [\"==\", \"!=\"].includes(operator)) {\n scanner.advance(2);\n scanner.skipSpace(false);\n const operand2 = this._parseEqualityExpression(scanner);\n switch (operator) {\n case \"==\":\n return operand1 === operand2;\n case \"!=\":\n return operand1 !== operand2;\n }\n }\n return operand1;\n }\n\n private static _parseRelationalExpression(scanner: MacroParserLexer): MacroParserConstant {\n const operand1 = this._parseShiftExpression(scanner) as number;\n let operator = scanner.peek(2);\n if (operator[1] !== \"=\") operator = operator[0];\n if (operator && [\">\", \"<\", \">=\", \"<=\"].includes(operator)) {\n const opPos = scanner.getShaderPosition(0);\n scanner.advance(operator.length);\n scanner.skipSpace(false);\n const operand2 = this._parseRelationalExpression(scanner) as number;\n if (typeof operand1 !== typeof operand2 && typeof operand1 !== \"number\") {\n this._reportError(opPos, \"invalid operator in relation expression.\", scanner.source, scanner.file);\n return;\n }\n switch (operator) {\n case \">\":\n return operand1 > operand2;\n case \"<\":\n return operand1 < operand2;\n case \">=\":\n return operand1 >= operand2;\n case \"<=\":\n return operand1 <= operand2;\n }\n }\n return operand1;\n }\n\n private static _parseShiftExpression(scanner: MacroParserLexer): MacroParserConstant {\n const operand1 = this._parseAdditiveExpression(scanner) as number;\n const operator = scanner.peek(2);\n if (operator && [\">>\", \"<<\"].includes(operator)) {\n const opPos = scanner.getShaderPosition(0);\n scanner.advance(2);\n scanner.skipSpace(false);\n const operand2 = this._parseShiftExpression(scanner) as number;\n if (typeof operand1 !== typeof operand2 && typeof operand1 !== \"number\") {\n this._reportError(opPos, \"invalid operator in shift expression.\", scanner.source, scanner.file);\n return;\n }\n switch (operator) {\n case \">>\":\n return operand1 >> operand2;\n case \"<<\":\n return operand1 << operand2;\n }\n }\n\n return operand1;\n }\n\n private static _parseAdditiveExpression(scanner: MacroParserLexer): MacroParserConstant {\n const operand1 = this._parseMulticativeExpression(scanner) as number;\n if ([\">\", \"<\"].includes(scanner.getCurChar())) {\n const opPos = scanner.getShaderPosition(0);\n scanner.advance(1);\n\n const operator = scanner.getCurChar();\n scanner.skipSpace(false);\n const operand2 = this._parseAdditiveExpression(scanner) as number;\n if (typeof operand1 !== typeof operand2 && typeof operand1 !== \"number\") {\n this._reportError(opPos, \"invalid operator.\", scanner.source, scanner.file);\n return false;\n }\n switch (operator) {\n case \"+\":\n return operand1 + operand2;\n case \"-\":\n return operand1 - operand2;\n }\n }\n return operand1;\n }\n\n private static _parseMulticativeExpression(scanner: MacroParserLexer): MacroParserConstant {\n const operand1 = this._parseUnaryExpression(scanner) as number;\n scanner.skipSpace(false);\n if ([\"*\", \"/\", \"%\"].includes(scanner.getCurChar())) {\n const opPos = scanner.getShaderPosition(0);\n const operator = scanner.getCurChar();\n scanner.skipSpace(false);\n const operand2 = this._parseMulticativeExpression(scanner) as number;\n if (typeof operand1 !== typeof operand2 && typeof operand1 !== \"number\") {\n this._reportError(opPos, \"invalid operator.\", scanner.source, scanner.file);\n return;\n }\n switch (operator) {\n case \"*\":\n return operand1 * operand2;\n case \"/\":\n return operand1 / operand2;\n case \"%\":\n return operand1 % operand2;\n }\n }\n return operand1;\n }\n\n private static _parseUnaryExpression(scanner: MacroParserLexer) {\n const operator = scanner.getCurChar();\n if ([\"+\", \"-\", \"!\"].includes(operator)) {\n const opPos = scanner.getShaderPosition(0);\n scanner.advance(1);\n scanner.skipSpace(false);\n const parenExpr = this._parseParenthesisExpression(scanner);\n if ((operator === \"!\" && typeof parenExpr !== \"boolean\") || (operator !== \"!\" && typeof parenExpr !== \"number\")) {\n this._reportError(opPos, \"invalid operator.\", scanner.source, scanner.file);\n }\n\n switch (operator) {\n case \"+\":\n return parenExpr;\n case \"-\":\n return -parenExpr;\n case \"!\":\n return !parenExpr;\n }\n }\n return this._parseParenthesisExpression(scanner);\n }\n\n private static _parseParenthesisExpression(scanner: MacroParserLexer): MacroParserConstant {\n if (scanner.getCurChar() === \"(\") {\n scanner.advance(1);\n scanner.skipSpace(false);\n const ret = this._parseConstantExpression(scanner);\n scanner.scanToChar(\")\");\n scanner.advance(1);\n return ret;\n }\n return this._parseConstant(scanner);\n }\n\n private static _parseConstant(scanner: MacroParserLexer): MacroParserConstant {\n if (BaseLexer.isAlpha(scanner.getCurCharCode())) {\n const id = scanner.scanWord();\n if (id.type === MacroParserKeyword.defined) {\n const withParen = scanner.peekNonSpace() === \"(\";\n const macro = scanner.scanWord();\n if (withParen) {\n scanner.scanToChar(\")\");\n scanner.advance(1);\n }\n return !!this._definedMacros.get(macro.lexeme);\n } else {\n const macro = this._definedMacros.get(id.lexeme);\n\n if (!macro) {\n return false;\n }\n\n if (!macro.body) {\n return true;\n }\n\n if (macro.isFunction) {\n this._reportError(id.location, \"invalid function macro usage\", scanner.source, scanner.file);\n }\n const value = Number(macro.body.lexeme);\n if (!Number.isInteger(value)) {\n this._reportError(id.location, `invalid const macro: ${id.lexeme}`, scanner.source, scanner.file);\n }\n return value;\n }\n } else if (BaseLexer.isDigit(scanner.getCurCharCode())) {\n const integer = scanner.scanInteger();\n return Number(integer.lexeme);\n } else {\n this._reportError(\n scanner.getShaderPosition(0),\n `invalid token: ${scanner.getCurChar()}`,\n scanner.source,\n scanner.file\n );\n }\n }\n\n private static _parseMacroFunctionArgs(\n source: string,\n startIndex: number,\n macroName: string\n ): { args: string[]; endIndex: number } {\n const length = source.length;\n let i = startIndex + macroName.length;\n\n // Find opening parenthesis\n while (i < length && source.charCodeAt(i) !== 40) i++;\n\n // Parse function arguments\n const args: string[] = [];\n let level = 1;\n let argStart = i + 1;\n let k = argStart;\n\n while (k < length && level > 0) {\n const charCode = source.charCodeAt(k);\n if (charCode === 40) {\n level++;\n } else if (charCode === 41) {\n if (--level === 0) {\n const arg = source.substring(argStart, k).trim();\n if (arg.length > 0) args.push(arg);\n break;\n }\n } else if (charCode === 44 && level === 1) {\n const arg = source.substring(argStart, k).trim();\n if (arg.length > 0) args.push(arg);\n argStart = k + 1;\n }\n k++;\n }\n\n return { args, endIndex: k + 1 };\n }\n\n private static _expandMacroBody(body: string): string {\n const visitedMacros = this._expandVisitedMacros;\n const currentVersionId = ++this._expandVersionId;\n let expandedBody = body;\n let hasExpansion = true;\n\n while (hasExpansion) {\n hasExpansion = false;\n const length = expandedBody.length;\n let i = 0;\n\n while (i < length) {\n const charCode = expandedBody.charCodeAt(i);\n if (!BaseLexer.isAlpha(charCode)) {\n i++;\n continue;\n }\n\n const start = i;\n while (i < length && BaseLexer.isAlnum(expandedBody.charCodeAt(i))) {\n i++;\n }\n\n const macroName = expandedBody.substring(start, i);\n const macro = this._definedMacros.get(macroName);\n\n if (!macro || visitedMacros[macroName] === currentVersionId) {\n continue;\n }\n\n // Prevent circular references\n visitedMacros[macroName] = currentVersionId;\n\n let replacement: string;\n let endIndex: number;\n\n if (!macro.isFunction) {\n replacement = macro.body?.lexeme ?? \"\";\n endIndex = i;\n } else {\n const { args, endIndex: newEndIndex } = this._parseMacroFunctionArgs(expandedBody, start, macroName);\n replacement = macro.expandFunctionBody(args);\n endIndex = newEndIndex;\n }\n\n expandedBody = expandedBody.substring(0, start) + replacement + expandedBody.substring(endIndex);\n hasExpansion = true;\n break;\n }\n }\n\n return expandedBody;\n }\n\n /**\n * Recursively expand macro body and expansion.\n */\n private static _expandMacroChunk(\n chunk: string,\n loc: ShaderRange,\n parentScanner: MacroParserLexer\n ): {\n content: string;\n // #if _VERBOSE\n sourceMap: PpSourceMap;\n // #endif\n };\n private static _expandMacroChunk(\n chunk: string,\n loc: ShaderRange,\n file: string\n ): {\n content: string;\n // #if _VERBOSE\n sourceMap: PpSourceMap;\n // #endif\n };\n private static _expandMacroChunk(\n chunk: string,\n loc: ShaderRange,\n scannerOrFile: MacroParserLexer | string\n ): {\n content: string;\n // #if _VERBOSE\n sourceMap: PpSourceMap;\n // #endif\n } {\n this._expandSegmentsStack.push([]);\n let scanner: MacroParserLexer;\n if (typeof scannerOrFile === \"string\") {\n scanner = new MacroParserLexer(chunk, scannerOrFile);\n } else {\n scanner = new MacroParserLexer(chunk, scannerOrFile.file, loc);\n }\n\n const ret = this._parseDirectives(scanner);\n this._expandSegmentsStack.pop();\n return {\n content: ret,\n // #if _VERBOSE\n sourceMap: scanner.sourceMap\n // #endif\n };\n }\n\n private static _addEmptyReplace(lexer: MacroParserLexer, start: number) {\n this._addContentReplace(\n lexer.file,\n ShaderLab.createPosition(start),\n lexer.getShaderPosition(0),\n \"\",\n lexer.blockRange\n );\n }\n\n private static _addContentReplace(\n sourceFile: string,\n start: ShaderPosition,\n end: ShaderPosition,\n content: string,\n sourceRange?: ShaderRange,\n sourceMap?: PpSourceMap\n ): void {\n // #if _VERBOSE\n const block = new BlockInfo(sourceFile, sourceRange, sourceMap);\n // #endif\n\n const range = ShaderLab.createRange(start, end);\n this._getExpandSegments().push({\n // #if _VERBOSE\n block,\n // #endif\n rangeInBlock: range,\n replace: content\n });\n }\n\n private static _parseDefine(lexer: MacroParserLexer): void {\n const start = lexer.getShaderPosition(7);\n const macroName = lexer.scanWord();\n\n const { lexeme, location } = macroName;\n let { end } = location;\n if (this._definedMacros.get(lexeme) && lexeme.startsWith(\"GL_\")) {\n this._reportError(location, `Redefined macro: ${lexeme}`, lexer.source, lexer.file);\n }\n\n let macroArgs: BaseToken[] | undefined;\n if (lexer.getCurChar() === \"(\") {\n macroArgs = lexer.scanWordsUntilTerminator(\")\");\n end = lexer.getShaderPosition(0);\n }\n const macroBody = lexer.scanMacroBody();\n const range = ShaderLab.createRange(start, end);\n const macroDefine = new MacroDefine(macroName, macroBody, range, macroArgs);\n this._definedMacros.set(lexeme, macroDefine);\n\n this._addContentReplace(lexer.file, start, lexer.getShaderPosition(0), \"\", lexer.blockRange);\n }\n\n private static _parseUndef(lexer: MacroParserLexer): void {\n const start = lexer.getShaderPosition(6);\n const macroName = lexer.scanWord();\n this._definedMacros.delete(macroName.lexeme);\n\n this._addContentReplace(lexer.file, start, lexer.getShaderPosition(0), \"\", lexer.blockRange);\n }\n\n private static _parseMacro(lexer: MacroParserLexer, token: BaseToken) {\n const macro = this._definedMacros.get(token.lexeme);\n if (macro) {\n const { location } = token;\n if (macro.isFunction) {\n const { args, endIndex } = this._parseMacroFunctionArgs(lexer.source, location.start.index, token.lexeme);\n const macroBodyExpanded = macro.expandFunctionBody(args);\n const expandedContent = this._expandMacroBody(macroBodyExpanded);\n\n const remainingLength = endIndex - location.end.index;\n lexer.advance(remainingLength);\n\n this._addContentReplace(\n lexer.file,\n location.start,\n lexer.getShaderPosition(0),\n expandedContent,\n lexer.blockRange\n );\n } else {\n const macroContent = macro.body?.lexeme ?? \"\";\n const expandedContent = this._expandMacroBody(macroContent);\n\n this._addContentReplace(lexer.file, location.start, location.end, expandedContent, lexer.blockRange);\n }\n }\n }\n\n // #if _VERBOSE\n static convertSourceIndex(index: number) {\n return this.lexer.sourceMap.map(index);\n }\n // #endif\n}\n","import { Logger } from \"@galacean/engine\";\nimport { ETokenType } from \"../common\";\nimport { Keyword } from \"../common/enums/Keyword\";\nimport { Grammar } from \"../parser/Grammar\";\nimport { GrammarSymbol, NoneTerminal, Terminal } from \"../parser/GrammarSymbol\";\nimport State from \"./State\";\nimport StateItem from \"./StateItem\";\nimport { default as GrammarUtils, default as Utils } from \"./Utils\";\nimport { ActionInfo, ActionTable, EAction, GotoTable, StateActionTable, StateGotoTable } from \"./types\";\n\n/**\n * The [LALR1](https://web.stanford.edu/class/archive/cs/cs143/cs143.1128/handouts/140%20LALR%20Parsing.pdf) Parser generator\n */\nexport class LALR1 {\n readonly firstSetMap: Map<NoneTerminal, Set<Terminal>> = new Map();\n readonly followSetMap: Map<NoneTerminal, Set<Terminal>> = new Map();\n\n readonly actionTable: StateActionTable = new Map();\n readonly gotoTable: StateGotoTable = new Map();\n private grammar: Grammar;\n\n /** For circle detect */\n private _firstSetNTStack: NoneTerminal[] = [];\n\n constructor(grammar: Grammar) {\n this.grammar = grammar;\n }\n\n generate() {\n this.computeFirstSet();\n this.buildStateTable();\n }\n\n private buildStateTable() {\n const startStateItemCore = [new StateItem(this.grammar.productions[0], 0, [ETokenType.EOF])];\n const startState = State.create(startStateItemCore);\n this._extendState(startState);\n }\n\n private _extendState(state: State) {\n if (!state.needReInfer) return;\n this._closure(state);\n const newStates = this._inferNextState(state);\n for (const ns of newStates) {\n this._extendState(ns);\n }\n }\n\n private _closure(state: State) {\n for (const core of state.cores) {\n if (!core.canReduce()) {\n this._extendStateItem(state, core);\n }\n }\n state.closured = true;\n return state;\n }\n\n private _extendStateItem(state: State, item: StateItem) {\n if (GrammarUtils.isTerminal(item.curSymbol)) return;\n\n const productionList = this.grammar.getProductionList(<NoneTerminal>item.curSymbol);\n\n if (item.nextSymbol) {\n let newLookaheadSet = new Set<Terminal>();\n let lastFirstSet: Set<Terminal> | undefined;\n let terminalExist = false;\n // when A :=> a.BC, a; ==》 B :=> .xy, First(Ca)\n // newLookAhead = First(Ca)\n for (let i = 1, nextSymbol = item.symbolByOffset(1); !!nextSymbol; nextSymbol = item.symbolByOffset(++i)) {\n if (GrammarUtils.isTerminal(nextSymbol)) {\n newLookaheadSet.add(<Terminal>nextSymbol);\n terminalExist = true;\n break;\n }\n lastFirstSet = this.firstSetMap.get(<NoneTerminal>nextSymbol)!;\n for (const t of lastFirstSet) {\n newLookaheadSet.add(t);\n }\n if (!lastFirstSet.has(ETokenType.EPSILON)) break;\n }\n if (!terminalExist && lastFirstSet?.has(ETokenType.EPSILON)) {\n for (const t of item.lookaheadSet) {\n newLookaheadSet.add(t);\n }\n }\n\n for (const production of productionList) {\n const newItem = state.createStateItem(production, 0);\n if (!state.items.has(newItem) || !Utils.isSubSet(newLookaheadSet, newItem.lookaheadSet)) {\n state.items.add(newItem);\n newItem.addLookahead(newLookaheadSet);\n this._extendStateItem(state, newItem);\n }\n }\n } else {\n for (const production of productionList) {\n const newItem = state.createStateItem(production, 0);\n if (!state.items.has(newItem) || !Utils.isSubSet(item.lookaheadSet, newItem.lookaheadSet)) {\n state.items.add(newItem);\n newItem.addLookahead(item.lookaheadSet);\n this._extendStateItem(state, newItem);\n }\n }\n }\n }\n\n private _inferNextState(state: State): Set<State> {\n const coreMap: Map<GrammarSymbol, Set<StateItem>> = new Map();\n const stateActionTable: ActionTable = this.actionTable.get(state.id) ?? new Map();\n const stateGotoTable: GotoTable = this.gotoTable.get(state.id) ?? new Map();\n\n this.actionTable.set(state.id, stateActionTable);\n this.gotoTable.set(state.id, stateGotoTable);\n\n for (const stateItem of state.items) {\n if (stateItem.canReduce()) {\n let action: ActionInfo;\n if (stateItem.production.goal !== NoneTerminal.START) {\n action = {\n action: EAction.Reduce,\n target: stateItem.production.id\n };\n } else {\n action = { action: EAction.Accept };\n }\n\n for (const t of stateItem.lookaheadSet) {\n this._addAction(stateActionTable, t, action);\n }\n } else {\n const nextItem = stateItem.advance();\n Utils.addMapSetItem(coreMap, stateItem.curSymbol, nextItem);\n }\n\n stateItem.needReInfer = false;\n }\n\n const newStates = new Set<State>();\n for (const [gs, cores] of coreMap.entries()) {\n const newState = State.create(Array.from(cores));\n if (GrammarUtils.isTerminal(gs)) {\n this._addAction(stateActionTable, <Terminal>gs, {\n action: EAction.Shift,\n target: newState.id\n });\n } else {\n stateGotoTable.set(<NoneTerminal>gs, newState.id);\n }\n\n newStates.add(newState);\n }\n\n return newStates;\n }\n\n /** Resolve shift-reduce/reduce-reduce conflict detect */\n private _addAction(table: ActionTable, terminal: Terminal, action: ActionInfo) {\n const exist = table.get(terminal);\n if (exist && !Utils.isActionEqual(exist, action)) {\n // Resolve dangling else ambiguity\n if (terminal === Keyword.ELSE && exist.action === EAction.Shift && action.action === EAction.Reduce) {\n return;\n } else {\n // #if _VERBOSE\n 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 // 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 ShaderLab\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 [Keyword.MACRO_DEFINE_EXPRESSION]\n ],\n ASTNode.GlobalDeclaration.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 [[ETokenType.ID], [NoneTerminal.ext_builtin_type_specifier_nonarray]],\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 [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 ],\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 { Logger } from \"@galacean/engine\";\nimport { ETokenType } from \"../common\";\nimport { BaseToken } from \"../common/BaseToken\";\nimport { GSError, GSErrorName } from \"../GSError\";\nimport { LALR1 } from \"../lalr\";\nimport { addTranslationRule, createGrammar } from \"../lalr/CFG\";\nimport { EAction, StateActionTable, StateGotoTable } from \"../lalr/types\";\nimport { MacroDefineList } from \"../Preprocessor\";\nimport { ParserUtils } from \"../ParserUtils\";\nimport { ShaderLab } from \"../ShaderLab\";\nimport { ShaderLabUtils } from \"../ShaderLabUtils\";\nimport { ASTNode, TreeNode } from \"./AST\";\nimport { Grammar } from \"./Grammar\";\nimport { GrammarSymbol, NoneTerminal } from \"./GrammarSymbol\";\nimport SematicAnalyzer from \"./SemanticAnalyzer\";\nimport { TraceStackItem } from \"./types\";\n\n/**\n * The syntax parser and sematic analyzer of `ShaderLab` 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 start = performance.now();\n const { _traceBackStack: traceBackStack, sematicAnalyzer } = this;\n traceBackStack.push(0);\n\n let nextToken = tokens.next();\n let loopCount = 0;\n while (true) {\n loopCount += 1;\n const token = nextToken.value;\n\n const actionInfo = this.stateActionTable.get(token.type);\n if (actionInfo?.action === EAction.Shift) {\n traceBackStack.push(token, actionInfo.target!);\n nextToken = tokens.next();\n } else if (actionInfo?.action === EAction.Accept) {\n Logger.info(\n `[Task - AST compilation] Accept! State automata run ${loopCount} times! cost time ${\n performance.now() - start\n }ms`\n );\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 = ShaderLabUtils.createGSError(\n `Unexpected token ${token.lexeme}`,\n GSErrorName.CompilationError,\n ShaderLab._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 Logger.info(str);\n }\n // #endif\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 { IRenderStates, IShaderPassSource, IShaderSource, ISubShaderSource } from \"@galacean/engine-design\";\n\nexport class ShaderSourceFactory {\n static createRenderStates(): IRenderStates {\n return {\n constantMap: {},\n variableMap: {}\n };\n }\n\n static createShaderSource(name: string): IShaderSource {\n return {\n name,\n subShaders: [],\n pendingContents: [],\n renderStates: this.createRenderStates()\n };\n }\n\n static createSubShaderSource(name: string): ISubShaderSource {\n return {\n name,\n passes: [],\n pendingContents: [],\n tags: {},\n renderStates: this.createRenderStates()\n };\n }\n\n static createShaderPassSource(name: string): IShaderPassSource {\n return {\n name,\n pendingContents: [],\n tags: {},\n renderStates: this.createRenderStates()\n } as IShaderPassSource;\n }\n\n static createUsePass(name: string): IShaderPassSource {\n return {\n name,\n pendingContents: [],\n isUsePass: true,\n tags: {},\n renderStates: this.createRenderStates()\n } as IShaderPassSource;\n }\n}\n","import { IBaseSymbol } from \"../common/IBaseSymbol\";\n\nexport class ShaderSourceSymbol implements IBaseSymbol {\n public isInMacroBranch: boolean = false;\n\n constructor(\n public ident: string,\n public type: number,\n public value?: any\n ) {}\n\n set(ident: string, type: number, value?: any): void {\n this.ident = ident;\n this.type = type;\n this.value = value;\n }\n\n equal(other: ShaderSourceSymbol): boolean {\n return this.type === other.type;\n }\n}\n","import { Color } from \"@galacean/engine\";\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 { ShaderLab } from \"../ShaderLab\";\nimport { ShaderLabUtils } from \"../ShaderLabUtils\";\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 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 };\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 );\n }\n\n private static _scanDigits(source: string, startIndex: number): number {\n let currentIndex = startIndex;\n while (currentIndex < source.length) {\n const charCode = source.charCodeAt(currentIndex);\n if (BaseLexer.isDigit(charCode)) {\n currentIndex++;\n } else {\n break;\n }\n }\n return currentIndex;\n }\n\n scanNumber(): number {\n this.skipCommentsAndSpace();\n const start = this._currentIndex;\n const source = this._source;\n let index = this._currentIndex;\n\n // Scan integer part\n index = SourceLexer._scanDigits(source, index);\n\n // Scan decimal part if present\n if (source[index] === \".\") {\n index = SourceLexer._scanDigits(source, index + 1);\n }\n\n this.advance(index - this._currentIndex);\n return Number(source.substring(start, index));\n }\n\n scanColor(): Color {\n this.scanLexeme(\"(\");\n\n let r = 0;\n let g = 0;\n let b = 0;\n let a = 1;\n\n r = this.scanNumber();\n this.skipCommentsAndSpace();\n if (this.peek(1) !== \")\") {\n this.scanLexeme(\",\");\n g = this.scanNumber();\n this.skipCommentsAndSpace();\n if (this.peek(1) !== \")\") {\n this.scanLexeme(\",\");\n b = this.scanNumber();\n this.skipCommentsAndSpace();\n if (this.peek(1) !== \")\") {\n this.scanLexeme(\",\");\n a = this.scanNumber();\n this.skipCommentsAndSpace();\n }\n }\n }\n\n this.scanLexeme(\")\");\n return new Color(r, g, b, a);\n }\n\n override scanToken(): BaseToken {\n while (true) {\n this.skipCommentsAndSpace();\n\n if (this.isEnd()) {\n return;\n }\n\n const start = this.getShaderPosition(0);\n if (BaseLexer.isAlpha(this.getCurCharCode())) {\n const wordToken = this._scanWord(start);\n if (wordToken !== null) {\n return wordToken;\n }\n this.hasPendingContent = true;\n continue; // Continue loop to scan next token if word was invalid\n }\n\n const currentChar = this.getCurChar();\n const symbolKeyword = SourceLexer._symbolLexemeTable[currentChar];\n if (symbolKeyword !== undefined) {\n this.advance(1);\n const token = BaseToken.pool.get();\n token.set(symbolKeyword, currentChar, start);\n return token;\n }\n\n // Skip unrecognized character and continue\n this.advance(1);\n }\n }\n\n // #if _VERBOSE\n scanToCharacter(char: string): void {\n while (this.getCurChar() !== char && !this.isEnd()) {\n this.advance(1);\n }\n this.advance(1);\n }\n // #endif\n\n createCompileError(message: string, location?: ShaderPosition | ShaderRange) {\n return ShaderLabUtils.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 = ShaderLab.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 {\n BlendFactor,\n BlendOperation,\n Color,\n CompareFunction,\n CullMode,\n Logger,\n RenderQueueType,\n RenderStateElementKey,\n StencilOperation\n} from \"@galacean/engine\";\nimport { IRenderStates, IShaderPassSource, IShaderSource, IStatement, ISubShaderSource } 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 { ShaderLabUtils } from \"../ShaderLabUtils\";\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 };\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 const startTime = performance.now();\n\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 constMap = { ...shaderRenderStates.constantMap, ...subShader.renderStates.constantMap };\n const variableMap = { ...shaderRenderStates.variableMap, ...subShader.renderStates.variableMap };\n\n for (let j = 0, m = subShader.passes.length; j < m; j++) {\n const pass = subShader.passes[j];\n Object.assign(pass.renderStates.constantMap, constMap);\n Object.assign(pass.renderStates.variableMap, variableMap);\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 Logger.info(`[Task - Source compilation] cost time ${performance.now() - startTime}ms`);\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(renderStates: 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 // Assignment\n const variable = lexer.scanToken();\n\n lexer.scanLexeme(\";\");\n const lookupSymbol = this._lookupSymbol;\n lookupSymbol.set(variable.lexeme, stateToken.type);\n const sm = this._symbolTableStack.lookup(lookupSymbol);\n if (!sm?.value) {\n this._createCompileError(`Invalid \"${stateToken.lexeme}\" variable: ${variable.lexeme}`, variable.location);\n // #if _VERBOSE\n return;\n // #endif\n }\n const renderState = sm.value as IRenderStates;\n Object.assign(renderStates.constantMap, renderState.constantMap);\n Object.assign(renderStates.variableMap, renderState.variableMap);\n return;\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 _parseRenderStateProperty(stateLexeme: string, out: IRenderStates): void {\n const lexer = this._lexer;\n const propertyToken = lexer.scanToken();\n const propertyLexeme = propertyToken.lexeme;\n let stateElementKey = propertyLexeme;\n if (stateLexeme === \"BlendState\" && propertyLexeme !== \"BlendColor\" && propertyLexeme !== \"AlphaToCoverage\") {\n let keyIndex = 0;\n const scannedLexeme = lexer.scanTwoExpectedLexemes(\"[\", \"=\");\n if (scannedLexeme === \"[\") {\n keyIndex = lexer.scanNumber();\n lexer.scanLexeme(\"]\");\n lexer.scanLexeme(\"=\");\n } else if (scannedLexeme !== \"=\") {\n this._createCompileError(`Invalid syntax, expect '[' or '=', but got unexpected token`);\n // #if _VERBOSE\n lexer.scanToCharacter(\";\");\n return;\n // #endif\n }\n stateElementKey += keyIndex;\n } else {\n lexer.scanLexeme(\"=\");\n }\n\n const renderStateElementKey = RenderStateElementKey[stateLexeme + stateElementKey];\n if (renderStateElementKey === undefined) {\n this._createCompileError(`Invalid render state property ${propertyLexeme}`);\n // #if _VERBOSE\n lexer.scanToCharacter(\";\");\n return;\n // #endif\n }\n\n lexer.skipCommentsAndSpace();\n let propertyValue: number | string | boolean | Color;\n\n const curCharCode = lexer.getCurCharCode();\n if (BaseLexer.isDigit(curCharCode) || curCharCode === 46) {\n // Digit or '.'\n propertyValue = lexer.scanNumber();\n } else {\n const valueToken = lexer.scanToken();\n const valueTokenType = valueToken.type;\n\n if (valueTokenType === Keyword.True) {\n propertyValue = true;\n } else if (valueTokenType === Keyword.False) {\n propertyValue = false;\n } else if (valueTokenType === Keyword.GSColor) {\n propertyValue = lexer.scanColor();\n } else if (lexer.getCurChar() === \".\") {\n lexer.advance(1);\n const constValueToken = lexer.scanToken();\n propertyValue = this._renderStateConstMap[valueToken.lexeme]?.[constValueToken.lexeme];\n if (propertyValue == undefined) {\n this._createCompileError(\n `Invalid engine constant: ${valueToken.lexeme}.${constValueToken.lexeme}`,\n constValueToken.location\n );\n // #if _VERBOSE\n lexer.scanToCharacter(\";\");\n return;\n // #endif\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 = ShaderLabUtils.createGSError(\n \"Reassign main entry\",\n GSErrorName.CompilationError,\n lexer.source,\n lexer.getShaderPosition(0)\n );\n // #if _VERBOSE\n Logger.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 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 { Logger, ShaderMacro, ShaderLanguage } from \"@galacean/engine\";\nimport { IShaderLab, IShaderSource } from \"@galacean/engine-design\";\nimport { IShaderProgramSource } from \"@galacean/engine-design/types/shader-lab/IShaderProgramSource\";\nimport { GLES100Visitor, GLES300Visitor } from \"./codeGen\";\nimport { ShaderPosition, ShaderRange } from \"./common\";\nimport { Lexer } from \"./lexer\";\nimport { MacroParser } from \"./macroProcessor/MacroParser\";\nimport { ShaderTargetParser } from \"./parser\";\nimport { Preprocessor } from \"./Preprocessor\";\nimport { ShaderLabUtils } from \"./ShaderLabUtils\";\nimport { ShaderSourceParser } from \"./sourceParser/ShaderSourceParser\";\n\nexport class ShaderLab implements IShaderLab {\n private static _parser = ShaderTargetParser.create();\n private static _shaderPositionPool = ShaderLabUtils.createObjectPool(ShaderPosition);\n private static _shaderRangePool = ShaderLabUtils.createObjectPool(ShaderRange);\n\n // #if _VERBOSE\n static _processingPassText?: string;\n // #endif\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 ShaderLabUtils.clearAllShaderLabObjectPool();\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 totalStartTime = performance.now();\n const macroDefineList = {};\n Preprocessor._repeatIncludeSet.clear();\n const noIncludeContent = Preprocessor.parse(source, basePathForIncludeKey, macroDefineList);\n Logger.info(`[Task - Pre processor] cost time ${performance.now() - totalStartTime}ms`);\n\n const lexer = new Lexer(noIncludeContent, macroDefineList);\n\n const tokens = lexer.tokenize();\n const { _parser: parser } = ShaderLab;\n\n ShaderLab._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 codeGenStartTime = performance.now();\n const ret = codeGen.visitShaderProgram(program, vertexEntry, fragmentEntry);\n Logger.info(`[Task - CodeGen] cost time: ${performance.now() - codeGenStartTime}ms`);\n Logger.info(`[Task - Total compilation] cost time: ${performance.now() - totalStartTime}ms`);\n ShaderLab._processingPassText = undefined;\n\n // #if _VERBOSE\n this._logErrors(codeGen.errors);\n // #endif\n\n return ret;\n }\n\n _parseMacros(content: string, macros: ShaderMacro[]): string {\n const startTime = performance.now();\n const parsedContent = MacroParser.parse(content, macros);\n Logger.info(`[Task - parse macros] cost time: ${performance.now() - startTime}ms`);\n\n // #if _VERBOSE\n this._logErrors(MacroParser._errors);\n // #endif\n\n return parsedContent;\n }\n\n // #if _VERBOSE\n /**\n * @internal\n */\n _logErrors(errors: Error[]) {\n if (errors.length === 0 || !Logger.isEnabled) return;\n Logger.error(`${errors.length} errors occur!`);\n for (const err of errors) {\n Logger.error(err.toString());\n }\n }\n // #endif\n}\n","export { ShaderLab } from \"./ShaderLab\";\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 ShaderLab Version: ${version} | Mode: ${mode}`);\n"],"names":["_array_like_to_array","arr","len","length","i","arr2","Array","_create_for_of_iterator_helper_loose","o","allowArrayLike","it","Symbol","iterator","call","next","bind","isArray","_unsupported_iterable_to_array","minLen","n","Object","prototype","toString","slice","constructor","name","from","test","done","value","TypeError","_set_prototype_of","p","setPrototypeOf","__proto__","_inherits","subClass","superClass","create","writable","configurable","_instanceof","left","right","hasInstance","_defineProperties","target","props","descriptor","enumerable","defineProperty","key","_create_class","Constructor","protoProps","staticProps","__decorate","decorators","desc","d","c","arguments","r","getOwnPropertyDescriptor","Reflect","decorate","SuppressedError","ETokenType","Keyword","GSErrorName","NoneTerminal","EAction","EShaderStage","ESymbolType","ASTNode","TrivialNode","ScopeBrace","ScopeEndBrace","JumpStatement","ConditionOpt","ForRestStatement","Condition","ForInitStatement","IterationStatement","SelectionStatement","ExpressionStatement","ExpressionAstNode","InitializerList","Initializer","SingleDeclaration","FullySpecifiedType","TypeQualifier","SingleTypeQualifier","BasicTypeQualifier","StorageQualifier","PrecisionQualifier","InterpolationQualifier","InvariantQualifier","TypeSpecifier","ArraySpecifier","IntegerConstantExpressionOperator","IntegerConstantExpression","TypeSpecifierNonArray","ExtBuiltinTypeSpecifierNonArray","InitDeclaratorList","IdentifierList","Declaration","FunctionProtoType","FunctionDeclarator","FunctionHeader","FunctionParameterList","MacroParamCaseList","MacroParamBlock","MacroParameterBranch","ParameterDeclaration","ParameterDeclarator","SimpleStatement","CompoundStatement","CompoundStatementNoScope","Statement","StatementList","FunctionDefinition","FunctionCall","FunctionCallGeneric","FunctionCallParameterList","MacroCallArgCaseList","MacroCallArgBlock","MacroCallArgBranch","PrecisionSpecifier","FunctionIdentifier","AssignmentExpression","AssignmentOperator","Expression","PrimaryExpression","PostfixExpression","UnaryOperator","UnaryExpression","MultiplicativeExpression","AdditiveExpression","ShiftExpression","RelationalExpression","EqualityExpression","AndExpression","ExclusiveOrExpression","InclusiveOrExpression","LogicalAndExpression","LogicalXorExpression","LogicalOrExpression","ConditionalExpression","StructSpecifier","StructDeclarationList","StructDeclaration","MacroStructDeclaration","MacroStructBranch","LayoutQualifier","StructDeclaratorList","StructDeclarator","VariableDeclaration","VariableDeclarationList","VariableIdentifier","GLShaderProgram","GlobalDeclaration","MacroUndef","MacroPushContext","MacroPopContext","MacroElifExpression","MacroElseExpression","GlobalMacroDeclaration","GlobalMacroIfStatement","GlobalMacroBranch","MacroIfStatement","MacroBranch","MacroCallSymbol","MacroCallFunction","MacroParserToken","MacroParserKeyword","ShaderRange","set","start","end","dispose","ShaderPosition","index","line","column","_is_native_reflect_construct","result","Boolean","valueOf","construct","_","_construct","Parent","args","Class","a","push","apply","instance","Function","_get_prototype_of","getPrototypeOf","_wrap_native_super","_cache","Map","undefined","indexOf","has","get","Wrapper","GSError","Error1","message","location","source","file","_this","_proto","lines","split","diagnosticMessage","lineSplit","wrappingLineCount","remarkStart","remarkEnd","paddingLength","remarkLength","Math","max","repeat","Error","ShaderLabUtils","createObjectPool","type","pool","ClearableObjectPool","_shaderLabObjectPoolSet","clearAllShaderLabObjectPool","clear","createGSError","errorName","BaseToken","lexeme","arg","ShaderLab","createPosition","createRange","EOF","Production","goal","derivation","id","_id","GrammarUtils","isTerminal","sm","START","createProductionWithOptions","options","astTypePool","_step","ret","_iterator","opt","sa","_len","children","_key","addMapSetItem","map","k","v","Set","add","isSubSet","sb","item","isActionEqual","b","action","printAction","actionInfo","production","printProduction","deriv","gs","join","StateItem","position","lookahead","_needReInfer","lookaheadSet","la","addLookahead","ts","t","needReInfer","symbolByOffset","offset","canReduce","EPSILON","advance","coreItem","curSymbol","nextSymbol","State","cores","closured","_stateItemPool","_items","itemMapKey","getStateItemMapKey","createStateItem","mapId","newItem","cacheKey","getMapKey","state","closureMap","core","newState","items","ParserUtils","unwrapNodeByType","node","child","Token","nt","typeCompatible","ta","tb","INT","UINT","printStatePool","logPath","output","console","log","count","values","tmp","padEnd","_step1","_iterator1","psItem","Preprocessor","parse","basePathForIncludeKey","outMacroDefineList","parseMacro","_parseMacroDefines","replace","_includeReg","includeName","_replace","getReferenceSymbolNames","macroDefineList","macroName","out","infos","info","valueType","referencedName","functionCallName","params","Logger","warn","_isNumber","str","isNaN","Number","_isExist","list","some","e","isFunction","every","outMacroList","match","_macroRegex","lastIndex","exec","paramsGroup","paramsStr","valueRaw","trim","filter","_symbolReg","callMatch","_funcCallReg","_mergeMacroDefineLists","to","src","path","URL","href","substring","ShaderPass","_shaderRootPath","chunk","ShaderLib","error","_repeatIncludeSet","_macroDefineIncludeMap","chunkMacroDefineList","isGenericType","BuiltinFunctionTable","BuiltinFunction","ident","returnType","scope","_returnType","getReturnType","fn","genType","_create","ALL","_createWithScop","getFn","parameterTypes","fnArgs","argLength","found","curFnArg","_realReturnType","isExist","realReturnType","FLOAT","VEC2","VEC3","MAT2","MAT3","MAT4","VEC4","MAT2X3","MAT3X2","MAT2X4","MAT4X2","MAT3X4","MAT4X3","BOOL","IVEC2","IVEC3","SAMPLER2D_SHADOW","SAMPLER_CUBE_SHADOW","SAMPLER2D_ARRAY_SHADOW","SAMPLER2D","SAMPLER2D_ARRAY","SAMPLER_CUBE","FRAGMENT","BuiltinVariableTable","BuiltinVariable","createVariable","getVar","VERTEX","VEC4_ARRAY","SymbolTable","_table","insert","symbol","isInMacroBranch","_this__table_get","entry","equal","getSymbol","includeMacro","getSymbols","_getSymbols","SymbolTableStack","stack","_macroLevel","pushScope","popScope","pop","lookup","symbolTable","lookupAll","SymbolDataType","typeLexeme","arraySpecifier","SymbolInfo","astNode","dataType","paramSignature","symbolType","protoType","paramSig","comparedParams","t1","t2","FnSymbol","typeSpecifier","FN","StructSymbol","STRUCT","VarSymbol","isGlobalVariable","initAst","VAR","ShaderData","globalPrecisions","globalMacroDeclarations","getOuterGlobalMacroDeclarations","parent","SemanticAnalyzer","semanticStack","acceptRule","symbolTableStack","curFunctionInfo","_shaderData","_translationRuleTable","errors","reset","_macroDefineList","addTranslationRule","pid","rule","getTranslationRule","reportError","loc","CompilationError","_processingPassText","reportWarning","CompilationWarn","shaderData","_lookupSymbol","SymbolType","StructProp","typeInfo","mrtIndex","ASTNodeDecorator","nonTerminal","TreeNode","_location","_children","_parent","init","setCache","code","_codeCache","getCache","codeGen","visitor","defaultCodeGen","semanticAnalyze","_unwrapToken","_ignore","scope_brace","scope_end_brace","isFragReturnStatement","RETURN","returnStatement","visitJumpStatement","jump_statement","conditionopt","for_rest_statement","condition","for_init_statement","iteration_statement","selection_statement","expression_statement","_type","_this__type","initializer_list","initializer","childrenLen","fullyType","visitSingleDeclaration","single_declaration","fully_specified_type","type_qualifier","qualifier","single_type_qualifier","token","storage_qualifier","precision_qualifier","interpolation_qualifier","invariant_qualifier","arraySize","firstChild","_children_","size","isCustom","type_specifier","integerConstantExpr","array_specifier","operator","PLUS","compute","DASH","STAR","SLASH","PERCENT","integer_constant_expression_operator","integer_constant_expression","tt","type_specifier_nonarray","ext_builtin_type_specifier_nonarray","childrenLength","initDeclList","init_declarator_list","idList","curIdList","listIdLength","identifier_list","visitDeclaration","declaration","declarator","parameterList","parameterInfoList","function_prototype","header","function_declarator","visitFunctionHeader","function_header","decl","visitFunctionParameterList","function_parameter_list","macro_param_case_list","macro_param_block","macro_parameter_branch","parameterDeclarator","varSymbol","parameter_declaration","parameter_declarator","simple_statement","compound_statement","compound_statement_no_scope","statement","visitStatementList","statement_list","statements","VOID","visitFunctionDefinition","function_definition","visitFunctionCall","function_call","fnSymbol","functionIdentifier","isBuiltin","fnIdent","paramList","builtinFn","lookupSymbol","function_call_generic","paramNodes","expr","function_call_parameter_list","macro_call_arg_case_list","macro_call_arg_block","macro_call_arg_branch","precision_specifier","visitFunctionIdentifier","function_identifier","assignment_expression","assignment_operator","expression","INT_CONSTANT","FLOAT_CONSTANT","True","False","primary_expression","visitPostfixExpression","postfix_expression","unary_operator","unary_expression","multiplicative_expression","additive_expression","shift_expression","relational_expression","equality_expression","and_expression","exclusive_or_expression","inclusive_or_expression","logical_and_expression","logical_xor_expression","logical_or_expression","conditional_expression","propList","macroExpressions","visitStructSpecifier","struct_specifier","struct_declaration_list","_typeSpecifier","_declaratorList","macroStructDeclaration","macroProps","_this__typeSpecifier","prop","declaratorList","declaratorListLength","struct_declaration","_this_props","_this_props1","_this_macroExpressions","_this_macroExpressions1","_this_props2","_this_macroExpressions2","concat","macro_struct_declaration","lastNode","macro_struct_branch","layout_qualifier","listLength","struct_declarator_list","struct_declarator","isStatic","visitGlobalVariableDeclaration","variable_declaration","variableDeclarations","_this_variableDeclarations","newVariable","variable_declaration_list","referenceGlobalSymbolNames","_symbols","symbols","needFindNames","referenceSymbolNames","builtinVar","Any","currentScopeSymbol","s","visitVariableIdentifier","getLexeme","variable_identifier","gs_shader_program","global_declaration","macro_undef","macro_push_context","macro_pop_context","macro_elif_expression","macro_else_expression","global_macro_declaration","global_macro_if_statement","global_macro_branch","macro_if_statement","macro_branch","macro_call_symbol","visitMacroCallFunction","macro_call_function","VisitorContext","attributeStructs","attributeList","varyingStructs","varyingList","mrtStructs","mrtList","_referencedGlobalMacroASTs","resetAll","_referencedAttributeList","_referencedVaryingList","_referencedMRTList","_referencedGlobals","isAttributeStruct","findIndex","isVaryingStruct","isMRTStruct","referenceAttribute","referenceVarying","referenceMRTProp","referenceGlobal","_passSymbolTable","_singleton","context","TempArray","array","CodeGenVisitor","_tmpArrayPool","return","derivationLength","postExpr","identNode","indexNode","identLexeme","indexLexeme","_reportError","astNodes","paramInfoList","paramsCode","variableParam","fullType","cmd","returnVar","returnFnCall","text","getVaryingProp","getAttributeProp","getMRTProp","sort","fnNode","fnName","stageEntry","ReturnableObjectPool","GLESVisitor","_globalCodeArray","globalCodeArray","_serializedGlobalKey","getOtherGlobal","data","precision","visitShaderProgram","vertexEntry","fragmentEntry","outerGlobalMacroDeclarations","vertex","_vertexMain","fragment","_fragmentMain","stage","fnSymbols","forEach","varyingSymbols","varyingSymbol","attributeParam","attributeType","attributeSymbols","attributeSymbol","_getGlobalSymbol","_getCustomStruct","_getGlobalMacroDeclarations","globalCode","outerGlobalMacroStatements","returnDataType","mrtSymbols","mrtSymbol","returnLocation","lastLength","keys","structNodes","macros","referencedGlobals","referencedGlobalMacroASTs","_step2","_iterator2","macro","_visitGlobalMacroIfStatement","variableDeclaration","GLES100Visitor","propReferenced","find","getVisitor","V3_GL_FragColor","GLES300Visitor","_otherCodeArray","_fragColorVariableRegistered","_registerFragColorVariable","BaseLexer","_currentIndex","_column","_line","_source","setSource","getShaderPosition","backOffset","isEnd","getCurChar","getCurCharCode","charCodeAt","startIndex","skipSpace","includeLineBreak","isWhiteSpaceChar","skipCommentsAndSpace","nextChar","charCode","peek","scanLexeme","throwError","scanTwoExpectedLexemes","lexeme1","lexeme2","pos","msgs","ScannerError","scanPairedChar","balanced","skipLeading","sourceLength","currentIndex","level","currentChar","isDigit","isAlpha","isAlnum","isPreprocessorStartChar","includeBreak","Lexer","BaseLexer1","_needScanMacroConditionExpression","tokenize","thisArg","body","f","y","label","sent","trys","ops","g","Iterator","verb","step","op","scanToken","_state","_scanMacroConditionExpression","curChar","curCharCode","_scanDirectives","_scanWord","_scanNum","LEFT_ASSIGN","LEFT_OP","LE_OP","LEFT_ANGLE","RIGHT_ASSIGN","RIGHT_OP","GE_OP","RIGHT_ANGLE","INC_OP","ADD_ASSIGN","DEC_OP","SUB_ASSIGN","EQ_OP","EQUAL","NE_OP","BANG","AND_OP","AMPERSAND","OR_OP","OR_ASSIGN","VERTICAL_BAR","XOR_OP","XOR_ASSIGN","CARET","MUL_ASSIGN","DIV_ASSIGN","MOD_ASSIGN","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","_scanUtilBreakLine","outBuffer","word","MACRO_DEFINE_EXPRESSION","kt","_lexemeTable","ID","MACRO_CONDITIONAL_EXPRESSION","MACRO_CALL","_scanIntegerSuffix","_type_of","obj","const","CONST","bool","float","double","DOUBLE","int","uint","break","BREAK","continue","CONTINUE","do","DO","else","ELSE","for","FOR","if","IF","while","WHILE","discard","DISCARD","bvec2","BVEC2","bvec3","BVEC3","bvec4","BVEC4","ivec2","ivec3","ivec4","IVEC4","uvec2","UVEC2","uvec3","UVEC3","uvec4","UVEC4","vec2","vec3","vec4","mat2","mat3","mat4","in","IN","OUT","inout","INOUT","sampler2D","samplerCube","sampler3D","SAMPLER3D","sampler2DShadow","samplerCubeShadow","sampler2DArray","sampler2DArrayShadow","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","void","true","false","PRECISION","precise","PRECISE","highp","HIGHP","mediump","MEDIUMP","lowp","LOWP","invariant","INVARIANT","flat","FLAT","smooth","SMOOTH","noperspective","NOPERSPECTIVE","centroid","CENTROID","layout","LAYOUT","LOCATION","MACRO_IF","MACRO_IFDEF","MACRO_IFNDEF","MACRO_ELSE","MACRO_ELIF","MACRO_ENDIF","MACRO_UNDEF","MacroDefine","_argsLexemes","_replaceRegex","RegExp","expandFunctionBody","_this_args","PreprocessorError","m","BlockInfo","sourceFile","rangeInFile","sourceMap","MapRange","sourceBlock","rangeInBlock","generatedLoc","sourceLoc","block","getSourceIndex","generatedIdx","_this_sourceLoc","PpSourceMap","mapRanges","addMapRange","mapRange","curRange","rangeContains","MacroParserLexer","blockRange","macroLvl","scanWordsUntilTerminator","terminatorChar","tokens","scanWord","tokenType","_isPpCharacters","ifdef","ifndef","endif","scanQuotedString","contentStart","string_const","scanToChar","char","scanMacroBranchBody","shaderPosition","startLevel","nextDirective","elif","scanPairedBlock","lc","rc","scanRemainMacro","startLvl","directive","peekNonSpace","current","scanInteger","integer","int_constant","scanMacroBody","nextIndex","nextCharCode","valueToken","line_remain","define","undef","defined","PpUtils","expand","segments","startIdx","seg","originSlice","generatedIdxEnd","MacroParser","_reset","_addPredefinedMacro","lexer","_parseDirectives","_expandSegmentsStack","_definedMacros","_errors","macroBody","_parseMacro","_parseDefine","_parseUndef","_parseIfDirective","_getExpandSegments","directiveType","shouldInclude","directiveLength","skipMacro","_parseConstantExpression","macroToken","startsWith","expanded","_expandMacroChunk","_addContentReplace","content","_addEmptyReplace","_processConditionalDirective","scanner","constantExpr","_parseLogicalOrExpression","operand1","_parseLogicalAndExpression","operand2","_parseEqualityExpression","_parseRelationalExpression","includes","_parseShiftExpression","opPos","_parseAdditiveExpression","_parseMulticativeExpression","_parseUnaryExpression","parenExpr","_parseParenthesisExpression","_parseConstant","withParen","isInteger","_parseMacroFunctionArgs","argStart","endIndex","_expandMacroBody","visitedMacros","_expandVisitedMacros","currentVersionId","_expandVersionId","expandedBody","hasExpansion","replacement","_this__parseMacroFunctionArgs","newEndIndex","scannerOrFile","sourceRange","macroArgs","macroDefine","delete","macroBodyExpanded","expandedContent","remainingLength","macroContent","convertSourceIndex","LALR1","grammar","firstSetMap","followSetMap","actionTable","gotoTable","_firstSetNTStack","generate","computeFirstSet","buildStateTable","startStateItemCore","productions","startState","_extendState","_closure","newStates","_inferNextState","ns","_extendStateItem","productionList","getProductionList","newLookaheadSet","terminalExist","lastFirstSet","Utils","_step3","_iterator3","coreMap","stateActionTable","_this_actionTable_get","stateGotoTable","_this_gotoTable_get","stateItem","Reduce","Accept","_addAction","nextItem","entries","Shift","table","terminal","exist","_computeFirstSetForNT","NT","idx","computingFS","curNT","firstSet","isNullableNT","succeedFirstSet","Grammar","startSymbol","unshift","getProductionByID","gsl","productionAndRules","variable_declaration_statement","AND_ASSIGN","ShaderTargetParser","_traceBackStack","sematicAnalyzer","SematicAnalyzer","performance","now","traceBackStack","nextToken","loopCount","reduceProduction","translationRule","nextState","_printStack","_token_lexeme","generator","curState","_extends","assign","hasOwnProperty","ShaderSourceFactory","createRenderStates","constantMap","variableMap","createShaderSource","subShaders","pendingContents","renderStates","createSubShaderSource","passes","tags","createShaderPassSource","createUsePass","isUsePass","ShaderSourceSymbol","other","SourceLexer","hasPendingContent","scanNumber","_scanDigits","scanColor","Color","wordToken","symbolKeyword","_symbolLexemeTable","scanToCharacter","createCompileError","_validateWordBoundaries","_keywordLexemeTable","prevCharCode","_isValidWordBoundary","_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","UsePass","GSUsePass","LeftBrace","RightBrace","Equal","ShaderSourceParser","sourceCode","startTime","_symbolTableStack","_pushScope","_lexer","shaderSource","_parseShader","shaderPendingContents","shaderRenderStates","subShader","curSubShaderGlobalStatements","constMap","j","pass","passGlobalStatements","contents","braceLevel","_addPendingContents","_parseSubShader","_popScope","_parseRenderState","_parseRenderStateDeclarationOrAssignment","stateToken","renderState","_parseRenderStateProperties","variable","_createCompileError","_parseVariableDeclaration","_parseRenderStateProperty","stateLexeme","propertyLexeme","propertyToken","stateElementKey","keyIndex","scannedLexeme","renderStateElementKey","RenderStateElementKey","propertyValue","valueTokenType","_this__renderStateConstMap_valueToken_lexeme","constValueToken","_renderStateConstMap","_parseRenderQueueDeclarationOrAssignment","outPendingContents","subShaderSource","_parsePass","_parseRenderStateAndTags","_parseTags","passSource","outGlobalContents","outRenderStates","outTags","_parseShaderSource","_logErrors","_parseShaderPass","backend","totalStartTime","noIncludeContent","parser","_parser","program","ShaderLanguage","GLSLES100","codeGenStartTime","_parseMacros","parsedContent","isEnabled","err","_shaderPositionPool","_shaderRangePool","version"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"browser.verbose.min.js","sources":["../../../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/_create_for_of_iterator_helper_loose.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/_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/_create_class.js","../../../node_modules/.pnpm/tslib@2.8.1/node_modules/tslib/tslib.es6.mjs","../src/common/ShaderRange.ts","../src/common/types.ts","../src/common/enums/Keyword.ts","../src/GSError.ts","../src/parser/GrammarSymbol.ts","../src/lalr/types.ts","../src/common/enums/ShaderStage.ts","../src/parser/symbolTable/SymbolInfo.ts","../src/parser/AST.ts","../src/macroProcessor/constants.ts","../src/common/ShaderPosition.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/_wrap_native_super.js","../../../node_modules/.pnpm/@swc+helpers@0.5.15/node_modules/@swc/helpers/esm/_is_native_function.js","../src/ShaderLabUtils.ts","../src/common/BaseToken.ts","../src/lalr/Production.ts","../src/lalr/Utils.ts","../src/lalr/StateItem.ts","../src/lalr/State.ts","../src/ParserUtils.ts","../src/Preprocessor.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/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/codeGen/VisitorContext.ts","../src/TempArray.ts","../src/codeGen/CodeGenVisitor.ts","../src/codeGen/GLESVisitor.ts","../src/codeGen/GLES100.ts","../src/codeGen/GLES300.ts","../src/common/BaseLexer.ts","../src/lexer/Lexer.ts","../../../node_modules/.pnpm/@swc+helpers@0.5.15/node_modules/@swc/helpers/esm/_type_of.js","../src/macroProcessor/MacroDefine.ts","../src/macroProcessor/sourceMap/index.ts","../src/macroProcessor/MacroParserLexer.ts","../src/macroProcessor/Utils.ts","../src/macroProcessor/MacroParser.ts","../src/lalr/LALR1.ts","../src/parser/Grammar.ts","../src/lalr/CFG.ts","../src/parser/ShaderTargetParser.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/ShaderLab.ts","../src/index.ts"],"sourcesContent":["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 _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","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","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 _defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n\n if (\"value\" in descriptor) descriptor.writable = true;\n\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n}\nfunction _create_class(Constructor, protoProps, staticProps) {\n if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n if (staticProps) _defineProperties(Constructor, staticProps);\n\n return Constructor;\n}\nexport { _create_class as _ };\n","/******************************************************************************\nCopyright (c) Microsoft Corporation.\n\nPermission to use, copy, modify, and/or distribute this software for any\npurpose with or without fee is hereby granted.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\nPERFORMANCE OF THIS SOFTWARE.\n***************************************************************************** */\n/* global Reflect, Promise, SuppressedError, Symbol, Iterator */\n\nvar extendStatics = function(d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n};\n\nexport function __extends(d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n}\n\nexport var __assign = function() {\n __assign = Object.assign || function __assign(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n }\n return t;\n }\n return __assign.apply(this, arguments);\n}\n\nexport function __rest(s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\n t[p[i]] = s[p[i]];\n }\n return t;\n}\n\nexport function __decorate(decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n}\n\nexport function __param(paramIndex, decorator) {\n return function (target, key) { decorator(target, key, paramIndex); }\n}\n\nexport function __esDecorate(ctor, descriptorIn, decorators, contextIn, initializers, extraInitializers) {\n function accept(f) { if (f !== void 0 && typeof f !== \"function\") throw new TypeError(\"Function expected\"); return f; }\n var kind = contextIn.kind, key = kind === \"getter\" ? \"get\" : kind === \"setter\" ? \"set\" : \"value\";\n var target = !descriptorIn && ctor ? contextIn[\"static\"] ? ctor : ctor.prototype : null;\n var descriptor = descriptorIn || (target ? Object.getOwnPropertyDescriptor(target, contextIn.name) : {});\n var _, done = false;\n for (var i = decorators.length - 1; i >= 0; i--) {\n var context = {};\n for (var p in contextIn) context[p] = p === \"access\" ? {} : contextIn[p];\n for (var p in contextIn.access) context.access[p] = contextIn.access[p];\n context.addInitializer = function (f) { if (done) throw new TypeError(\"Cannot add initializers after decoration has completed\"); extraInitializers.push(accept(f || null)); };\n var result = (0, decorators[i])(kind === \"accessor\" ? { get: descriptor.get, set: descriptor.set } : descriptor[key], context);\n if (kind === \"accessor\") {\n if (result === void 0) continue;\n if (result === null || typeof result !== \"object\") throw new TypeError(\"Object expected\");\n if (_ = accept(result.get)) descriptor.get = _;\n if (_ = accept(result.set)) descriptor.set = _;\n if (_ = accept(result.init)) initializers.unshift(_);\n }\n else if (_ = accept(result)) {\n if (kind === \"field\") initializers.unshift(_);\n else descriptor[key] = _;\n }\n }\n if (target) Object.defineProperty(target, contextIn.name, descriptor);\n done = true;\n};\n\nexport function __runInitializers(thisArg, initializers, value) {\n var useValue = arguments.length > 2;\n for (var i = 0; i < initializers.length; i++) {\n value = useValue ? initializers[i].call(thisArg, value) : initializers[i].call(thisArg);\n }\n return useValue ? value : void 0;\n};\n\nexport function __propKey(x) {\n return typeof x === \"symbol\" ? x : \"\".concat(x);\n};\n\nexport function __setFunctionName(f, name, prefix) {\n if (typeof name === \"symbol\") name = name.description ? \"[\".concat(name.description, \"]\") : \"\";\n return Object.defineProperty(f, \"name\", { configurable: true, value: prefix ? \"\".concat(prefix, \" \", name) : name });\n};\n\nexport function __metadata(metadataKey, metadataValue) {\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\n}\n\nexport function __awaiter(thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n}\n\nexport function __generator(thisArg, body) {\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g = Object.create((typeof Iterator === \"function\" ? Iterator : Object).prototype);\n return g.next = verb(0), g[\"throw\"] = verb(1), g[\"return\"] = verb(2), typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n function verb(n) { return function (v) { return step([n, v]); }; }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (g && (g = 0, op[0] && (_ = 0)), _) try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [op[0] & 2, t.value];\n switch (op[0]) {\n case 0: case 1: t = op; break;\n case 4: _.label++; return { value: op[1], done: false };\n case 5: _.label++; y = op[1]; op = [0]; continue;\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n if (t[2]) _.ops.pop();\n _.trys.pop(); continue;\n }\n op = body.call(thisArg, _);\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n }\n}\n\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n});\n\nexport function __exportStar(m, o) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\n}\n\nexport function __values(o) {\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\n if (m) return m.call(o);\n if (o && typeof o.length === \"number\") return {\n next: function () {\n if (o && i >= o.length) o = void 0;\n return { value: o && o[i++], done: !o };\n }\n };\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\n}\n\nexport function __read(o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o), r, ar = [], e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n }\n catch (error) { e = { error: error }; }\n finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n }\n finally { if (e) throw e.error; }\n }\n return ar;\n}\n\n/** @deprecated */\nexport function __spread() {\n for (var ar = [], i = 0; i < arguments.length; i++)\n ar = ar.concat(__read(arguments[i]));\n return ar;\n}\n\n/** @deprecated */\nexport function __spreadArrays() {\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\n r[k] = a[j];\n return r;\n}\n\nexport function __spreadArray(to, from, pack) {\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\n if (ar || !(i in from)) {\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\n ar[i] = from[i];\n }\n }\n return to.concat(ar || Array.prototype.slice.call(from));\n}\n\nexport function __await(v) {\n return this instanceof __await ? (this.v = v, this) : new __await(v);\n}\n\nexport function __asyncGenerator(thisArg, _arguments, generator) {\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\n return i = Object.create((typeof AsyncIterator === \"function\" ? AsyncIterator : Object).prototype), verb(\"next\"), verb(\"throw\"), verb(\"return\", awaitReturn), i[Symbol.asyncIterator] = function () { return this; }, i;\n function awaitReturn(f) { return function (v) { return Promise.resolve(v).then(f, reject); }; }\n function verb(n, f) { if (g[n]) { i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; if (f) i[n] = f(i[n]); } }\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\n function fulfill(value) { resume(\"next\", value); }\n function reject(value) { resume(\"throw\", value); }\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\n}\n\nexport function __asyncDelegator(o) {\n var i, p;\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: false } : f ? f(v) : v; } : f; }\n}\n\nexport function __asyncValues(o) {\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\n var m = o[Symbol.asyncIterator], i;\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\n}\n\nexport function __makeTemplateObject(cooked, raw) {\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\n return cooked;\n};\n\nvar __setModuleDefault = Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n};\n\nvar ownKeys = function(o) {\n ownKeys = Object.getOwnPropertyNames || function (o) {\n var ar = [];\n for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;\n return ar;\n };\n return ownKeys(o);\n};\n\nexport function __importStar(mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== \"default\") __createBinding(result, mod, k[i]);\n __setModuleDefault(result, mod);\n return result;\n}\n\nexport function __importDefault(mod) {\n return (mod && mod.__esModule) ? mod : { default: mod };\n}\n\nexport function __classPrivateFieldGet(receiver, state, kind, f) {\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\n}\n\nexport function __classPrivateFieldSet(receiver, state, value, kind, f) {\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\n}\n\nexport function __classPrivateFieldIn(state, receiver) {\n if (receiver === null || (typeof receiver !== \"object\" && typeof receiver !== \"function\")) throw new TypeError(\"Cannot use 'in' operator on non-object\");\n return typeof state === \"function\" ? receiver === state : state.has(receiver);\n}\n\nexport function __addDisposableResource(env, value, async) {\n if (value !== null && value !== void 0) {\n if (typeof value !== \"object\" && typeof value !== \"function\") throw new TypeError(\"Object expected.\");\n var dispose, inner;\n if (async) {\n if (!Symbol.asyncDispose) throw new TypeError(\"Symbol.asyncDispose is not defined.\");\n dispose = value[Symbol.asyncDispose];\n }\n if (dispose === void 0) {\n if (!Symbol.dispose) throw new TypeError(\"Symbol.dispose is not defined.\");\n dispose = value[Symbol.dispose];\n if (async) inner = dispose;\n }\n if (typeof dispose !== \"function\") throw new TypeError(\"Object not disposable.\");\n if (inner) dispose = function() { try { inner.call(this); } catch (e) { return Promise.reject(e); } };\n env.stack.push({ value: value, dispose: dispose, async: async });\n }\n else if (async) {\n env.stack.push({ async: true });\n }\n return value;\n}\n\nvar _SuppressedError = typeof SuppressedError === \"function\" ? SuppressedError : function (error, suppressed, message) {\n var e = new Error(message);\n return e.name = \"SuppressedError\", e.error = error, e.suppressed = suppressed, e;\n};\n\nexport function __disposeResources(env) {\n function fail(e) {\n env.error = env.hasError ? new _SuppressedError(e, env.error, \"An error was suppressed during disposal.\") : e;\n env.hasError = true;\n }\n var r, s = 0;\n function next() {\n while (r = env.stack.pop()) {\n try {\n if (!r.async && s === 1) return s = 0, env.stack.push(r), Promise.resolve().then(next);\n if (r.dispose) {\n var result = r.dispose.call(r.value);\n if (r.async) return s |= 2, Promise.resolve(result).then(next, function(e) { fail(e); return next(); });\n }\n else s |= 1;\n }\n catch (e) {\n fail(e);\n }\n }\n if (s === 1) return env.hasError ? Promise.reject(env.error) : Promise.resolve();\n if (env.hasError) throw env.error;\n }\n return next();\n}\n\nexport function __rewriteRelativeImportExtension(path, preserveJsx) {\n if (typeof path === \"string\" && /^\\.\\.?\\//.test(path)) {\n return path.replace(/\\.(tsx)$|((?:\\.d)?)((?:\\.[^./]+?)?)\\.([cm]?)ts$/i, function (m, tsx, d, ext, cm) {\n return tsx ? preserveJsx ? \".jsx\" : \".js\" : d && (!ext || !cm) ? m : (d + ext + \".\" + cm.toLowerCase() + \"js\");\n });\n }\n return path;\n}\n\nexport default {\n __extends,\n __assign,\n __rest,\n __decorate,\n __param,\n __esDecorate,\n __runInitializers,\n __propKey,\n __setFunctionName,\n __metadata,\n __awaiter,\n __generator,\n __createBinding,\n __exportStar,\n __values,\n __read,\n __spread,\n __spreadArrays,\n __spreadArray,\n __await,\n __asyncGenerator,\n __asyncDelegator,\n __asyncValues,\n __makeTemplateObject,\n __importStar,\n __importDefault,\n __classPrivateFieldGet,\n __classPrivateFieldSet,\n __classPrivateFieldIn,\n __addDisposableResource,\n __disposeResources,\n __rewriteRelativeImportExtension,\n};\n","import { IPoolElement } from \"@galacean/engine\";\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 { 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\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 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 MACRO_DEFINE_EXPRESSION,\n MACRO_CONDITIONAL_EXPRESSION,\n MACRO_CALL\n}\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 { 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 _ignore\n}\n\nexport type GrammarSymbol = Terminal | NoneTerminal;\n\nexport type Derivation = GrammarSymbol[];\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","export enum EShaderStage {\n VERTEX,\n FRAGMENT,\n ALL\n}\n","import { IBaseSymbol } from \"../../common/IBaseSymbol\";\nimport { GalaceanDataType, TypeAny } from \"../../common/types\";\nimport { ASTNode } from \"../AST\";\nimport { SymbolDataType } from \"./SymbolDataType\";\n\nexport enum ESymbolType {\n VAR,\n FN,\n STRUCT,\n Any\n}\n\nexport type SymbolAstNode =\n | ASTNode.Initializer\n | ASTNode.StructSpecifier\n | ASTNode.FunctionDefinition\n | ASTNode.ParameterDeclarator\n | ASTNode.InitDeclaratorList\n | ASTNode.VariableDeclaration;\n\nexport class SymbolInfo implements IBaseSymbol {\n constructor(\n public ident: string,\n public type: ESymbolType,\n public astNode?: SymbolAstNode,\n public dataType?: SymbolDataType,\n public paramSignature?: GalaceanDataType[],\n public isInMacroBranch = false\n ) {}\n\n set(\n ident: string,\n symbolType: ESymbolType,\n astNode?: SymbolAstNode,\n dataType?: SymbolDataType,\n paramSignature?: GalaceanDataType[]\n ) {\n this.ident = ident;\n this.type = symbolType;\n this.astNode = astNode;\n this.dataType = dataType;\n this.paramSignature = paramSignature;\n }\n\n equal(symbol: SymbolInfo): boolean {\n if (symbol.type !== ESymbolType.Any && this.type !== symbol.type) return false;\n if (this.type === ESymbolType.FN) {\n if (!symbol.astNode && !symbol.paramSignature) return true;\n\n const params = (<ASTNode.FunctionDefinition>this.astNode).protoType.paramSig;\n const comparedParams = symbol.paramSignature ?? (<ASTNode.FunctionDefinition>symbol.astNode).protoType.paramSig;\n const length = params?.length;\n if (length !== comparedParams?.length) return false;\n for (let i = 0; i < length; i++) {\n const t1 = params[i],\n t2 = comparedParams[i];\n if (t1 === TypeAny || t2 === TypeAny) continue;\n if (t1 !== t2) return false;\n }\n return true;\n }\n return true;\n }\n}\n","import { ClearableObjectPool, IPoolElement } from \"@galacean/engine\";\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 { Preprocessor } from \"../Preprocessor\";\nimport { ShaderLabUtils } from \"../ShaderLabUtils\";\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 = ShaderLabUtils.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 | BaseToken;\n\n export type ASTNodePool = ClearableObjectPool<\n { set: (loc: ShaderRange, children: NodeChild[]) => void } & IPoolElement & TreeNode\n >;\n\n export function _unwrapToken(node: NodeChild) {\n if (node instanceof BaseToken) {\n return node;\n }\n throw \"not token\";\n }\n\n export function get(pool: ASTNodePool, sa: SemanticAnalyzer, loc: ShaderRange, children: NodeChild[]) {\n const node = pool.get();\n node.set(loc, children);\n node.semanticAnalyze(sa);\n sa.semanticStack.push(node);\n }\n\n @ASTNodeDecorator(NoneTerminal._ignore)\n export class TrivialNode extends TreeNode {}\n\n @ASTNodeDecorator(NoneTerminal.scope_brace)\n export class ScopeBrace extends TreeNode {\n override semanticAnalyze(sa: SemanticAnalyzer): void {\n sa.pushScope();\n }\n }\n\n @ASTNodeDecorator(NoneTerminal.scope_end_brace)\n export class ScopeEndBrace extends TreeNode {\n override semanticAnalyze(sa: SemanticAnalyzer): void {\n sa.popScope();\n }\n }\n\n @ASTNodeDecorator(NoneTerminal.jump_statement)\n export class JumpStatement extends TreeNode {\n isFragReturnStatement: boolean;\n\n override init(): void {\n this.isFragReturnStatement = false;\n }\n\n override semanticAnalyze(sa: SemanticAnalyzer): void {\n if (ASTNode._unwrapToken(this.children![0]).type === Keyword.RETURN) {\n sa.curFunctionInfo.returnStatement = this;\n }\n }\n\n override codeGen(visitor: CodeGenVisitor): string {\n return this.setCache(visitor.visitJumpStatement(this));\n }\n }\n\n // #if _VERBOSE\n @ASTNodeDecorator(NoneTerminal.conditionopt)\n export class ConditionOpt extends TreeNode {}\n\n @ASTNodeDecorator(NoneTerminal.for_rest_statement)\n export class ForRestStatement extends TreeNode {}\n\n @ASTNodeDecorator(NoneTerminal.condition)\n export class Condition extends TreeNode {}\n\n @ASTNodeDecorator(NoneTerminal.for_init_statement)\n export class ForInitStatement extends TreeNode {}\n\n @ASTNodeDecorator(NoneTerminal.iteration_statement)\n export class IterationStatement extends TreeNode {}\n\n @ASTNodeDecorator(NoneTerminal.selection_statement)\n export class SelectionStatement extends TreeNode {}\n\n @ASTNodeDecorator(NoneTerminal.expression_statement)\n export class ExpressionStatement extends TreeNode {}\n // #endif\n\n export abstract class ExpressionAstNode extends TreeNode {\n protected _type?: GalaceanDataType;\n set type(t: GalaceanDataType | undefined) {\n this._type = t;\n }\n get type() {\n return this._type ?? TypeAny;\n }\n\n override init(): void {\n this._type = undefined;\n }\n }\n\n // #if _VERBOSE\n @ASTNodeDecorator(NoneTerminal.initializer_list)\n export class InitializerList extends ExpressionAstNode {\n override semanticAnalyze(sa: SemanticAnalyzer): void {\n const init = this.children[0] as Initializer | InitializerList;\n this.type = init.type;\n }\n }\n\n @ASTNodeDecorator(NoneTerminal.initializer)\n export class Initializer extends ExpressionAstNode {\n override semanticAnalyze(sa: SemanticAnalyzer): void {\n if (this.children.length === 1) {\n this.type = (<AssignmentExpression>this.children[0]).type;\n } else {\n this.type = (<InitializerList>this.children[1]).type;\n }\n }\n }\n // #endif\n\n @ASTNodeDecorator(NoneTerminal.single_declaration)\n export class SingleDeclaration extends TreeNode {\n typeSpecifier: TypeSpecifier;\n arraySpecifier?: ArraySpecifier;\n\n override init(): void {\n this.typeSpecifier = undefined;\n this.arraySpecifier = undefined;\n }\n\n override semanticAnalyze(sa: SemanticAnalyzer): void {\n const children = this.children;\n const childrenLen = children.length;\n const fullyType = children[0] as FullySpecifiedType;\n const typeSpecifier = fullyType.typeSpecifier;\n this.typeSpecifier = typeSpecifier;\n this.arraySpecifier = typeSpecifier.arraySpecifier;\n\n const id = children[1] as BaseToken;\n\n let sm: VarSymbol;\n if (childrenLen === 2 || childrenLen === 4) {\n const symbolType = new SymbolType(fullyType.type, typeSpecifier.lexeme, this.arraySpecifier);\n const initializer = children[3] as Initializer;\n\n sm = new VarSymbol(id.lexeme, symbolType, false, initializer);\n } else {\n const arraySpecifier = children[2] as ArraySpecifier;\n // #if _VERBOSE\n if (arraySpecifier && this.arraySpecifier) {\n sa.reportError(arraySpecifier.location, \"Array of array is not supported.\");\n }\n // #endif\n this.arraySpecifier = arraySpecifier;\n const symbolType = new SymbolType(fullyType.type, typeSpecifier.lexeme, this.arraySpecifier);\n const initializer = children[4] as Initializer;\n\n sm = new VarSymbol(id.lexeme, symbolType, false, initializer);\n }\n sa.symbolTableStack.insert(sm);\n }\n\n override codeGen(visitor: CodeGenVisitor): string {\n return this.setCache(visitor.visitSingleDeclaration(this));\n }\n }\n\n @ASTNodeDecorator(NoneTerminal.fully_specified_type)\n export class FullySpecifiedType extends TreeNode {\n typeSpecifier: TypeSpecifier;\n type: GalaceanDataType;\n\n override semanticAnalyze(_: SemanticAnalyzer): void {\n const children = this.children;\n this.typeSpecifier = (children.length === 1 ? children[0] : children[1]) as TypeSpecifier;\n this.type = this.typeSpecifier.type;\n }\n }\n\n @ASTNodeDecorator(NoneTerminal.type_qualifier)\n export class TypeQualifier extends TreeNode {}\n\n @ASTNodeDecorator(NoneTerminal.single_type_qualifier)\n export class SingleTypeQualifier extends TreeNode {\n qualifier: Keyword;\n lexeme: string;\n\n override semanticAnalyze(sa: SemanticAnalyzer): void {\n const child = this.children[0];\n if (child instanceof BaseToken) {\n this.qualifier = child.type as Keyword;\n this.lexeme = child.lexeme;\n } else {\n this.qualifier = (<BasicTypeQualifier>child).qualifier;\n this.lexeme = (<BasicTypeQualifier>child).lexeme;\n }\n }\n }\n\n abstract class BasicTypeQualifier extends TreeNode {\n qualifier: Keyword;\n lexeme: string;\n\n override semanticAnalyze(sa: SemanticAnalyzer): void {\n const token = this.children[0] as BaseToken;\n this.qualifier = token.type as Keyword;\n this.lexeme = token.lexeme;\n }\n }\n\n // #if _VERBOSE\n @ASTNodeDecorator(NoneTerminal.storage_qualifier)\n export class StorageQualifier extends BasicTypeQualifier {}\n\n @ASTNodeDecorator(NoneTerminal.precision_qualifier)\n export class PrecisionQualifier extends BasicTypeQualifier {}\n\n @ASTNodeDecorator(NoneTerminal.interpolation_qualifier)\n export class InterpolationQualifier extends BasicTypeQualifier {}\n\n @ASTNodeDecorator(NoneTerminal.invariant_qualifier)\n export class InvariantQualifier extends BasicTypeQualifier {}\n // #endif\n\n @ASTNodeDecorator(NoneTerminal.type_specifier)\n export class TypeSpecifier extends TreeNode {\n type: GalaceanDataType;\n lexeme: string;\n arraySize?: number;\n isCustom: boolean;\n\n override init(): void {\n this.arraySize = undefined;\n }\n get arraySpecifier(): ArraySpecifier {\n return this.children[1] as ArraySpecifier;\n }\n\n override semanticAnalyze(sa: SemanticAnalyzer): void {\n const children = this.children;\n const firstChild = children[0] as TypeSpecifierNonArray;\n this.type = firstChild.type;\n this.lexeme = firstChild.lexeme;\n this.arraySize = (children?.[1] as ArraySpecifier)?.size;\n this.isCustom = typeof this.type === \"string\";\n }\n }\n\n @ASTNodeDecorator(NoneTerminal.array_specifier)\n export class ArraySpecifier extends TreeNode {\n size: number | undefined;\n override semanticAnalyze(sa: SemanticAnalyzer): void {\n const integerConstantExpr = this.children[1] as IntegerConstantExpression;\n this.size = integerConstantExpr.value;\n }\n }\n\n @ASTNodeDecorator(NoneTerminal.integer_constant_expression_operator)\n export class IntegerConstantExpressionOperator extends TreeNode {\n compute: (a: number, b: number) => number;\n lexeme: string;\n\n override semanticAnalyze(sa: SemanticAnalyzer): void {\n const operator = this.children[0] as BaseToken;\n this.lexeme = operator.lexeme;\n switch (operator.type) {\n case ETokenType.PLUS:\n this.compute = (a, b) => a + b;\n break;\n case ETokenType.DASH:\n this.compute = (a, b) => a - b;\n break;\n case ETokenType.STAR:\n this.compute = (a, b) => a * b;\n break;\n case ETokenType.SLASH:\n this.compute = (a, b) => a / b;\n break;\n case ETokenType.PERCENT:\n this.compute = (a, b) => a % b;\n break;\n default:\n sa.reportError(operator.location, `not implemented operator ${operator.lexeme}`);\n }\n }\n }\n\n @ASTNodeDecorator(NoneTerminal.integer_constant_expression)\n export class IntegerConstantExpression extends TreeNode {\n value?: number;\n\n override init(): void {\n this.value = undefined;\n }\n\n override semanticAnalyze(sa: SemanticAnalyzer): void {\n if (this.children.length === 1) {\n const child = this.children[0];\n if (child instanceof BaseToken) {\n this.value = Number(child.lexeme);\n }\n // #if _VERBOSE\n else {\n const id = child as VariableIdentifier;\n if (!ParserUtils.typeCompatible(Keyword.INT, id.typeInfo)) {\n sa.reportError(id.location, \"Invalid integer.\");\n return;\n }\n }\n // #endif\n }\n }\n }\n\n @ASTNodeDecorator(NoneTerminal.type_specifier_nonarray)\n export class TypeSpecifierNonArray extends TreeNode {\n type: GalaceanDataType;\n lexeme: string;\n\n override init(): void {\n const tt = this.children[0];\n if (tt instanceof BaseToken) {\n this.type = tt.lexeme;\n this.lexeme = tt.lexeme;\n } else {\n this.type = (tt as ExtBuiltinTypeSpecifierNonArray).type as GalaceanDataType;\n this.lexeme = (tt as ExtBuiltinTypeSpecifierNonArray).lexeme;\n }\n }\n }\n\n @ASTNodeDecorator(NoneTerminal.ext_builtin_type_specifier_nonarray)\n export class ExtBuiltinTypeSpecifierNonArray extends TreeNode {\n type: TokenType;\n lexeme: string;\n\n override init(): void {\n const token = this.children[0] as BaseToken;\n this.type = token.type;\n this.lexeme = token.lexeme;\n }\n }\n\n @ASTNodeDecorator(NoneTerminal.init_declarator_list)\n export class InitDeclaratorList extends TreeNode {\n typeInfo: SymbolType;\n\n override semanticAnalyze(sa: SemanticAnalyzer): void {\n let sm: VarSymbol;\n const children = this.children;\n const childrenLength = children.length;\n if (childrenLength === 1) {\n const { typeSpecifier, arraySpecifier } = children[0] as SingleDeclaration;\n this.typeInfo = new SymbolType(typeSpecifier.type, typeSpecifier.lexeme, arraySpecifier);\n } else {\n const initDeclList = children[0] as InitDeclaratorList;\n this.typeInfo = initDeclList.typeInfo;\n }\n\n if (childrenLength === 3 || childrenLength === 5) {\n const id = children[2] as BaseToken;\n sm = new VarSymbol(id.lexeme, this.typeInfo, false, this);\n sa.symbolTableStack.insert(sm);\n } else if (childrenLength === 4 || childrenLength === 6) {\n const typeInfo = this.typeInfo;\n const arraySpecifier = this.children[3] as ArraySpecifier;\n // #if _VERBOSE\n if (typeInfo.arraySpecifier && arraySpecifier) {\n sa.reportError(arraySpecifier.location, \"Array of array is not supported.\");\n }\n // #endif\n typeInfo.arraySpecifier = arraySpecifier;\n const id = children[2] as BaseToken;\n sm = new VarSymbol(id.lexeme, typeInfo, false, this);\n sa.symbolTableStack.insert(sm);\n }\n }\n }\n\n @ASTNodeDecorator(NoneTerminal.identifier_list)\n export class IdentifierList extends TreeNode {\n idList: BaseToken[] = [];\n\n override init(): void {\n this.idList.length = 0;\n }\n\n override semanticAnalyze(sa: SemanticAnalyzer): void {\n const { children, idList: curIdList } = this;\n if (children.length === 2) {\n curIdList.push(children[1] as BaseToken);\n } else {\n const list = children[0] as IdentifierList;\n const id = children[2] as BaseToken;\n const listIdLength = list.idList.length;\n curIdList.length = listIdLength + 1;\n\n for (let i = 0; i < listIdLength; i++) {\n curIdList[i] = list.idList[i];\n }\n curIdList[listIdLength] = id;\n }\n }\n }\n\n @ASTNodeDecorator(NoneTerminal.declaration)\n export class Declaration extends TreeNode {\n override codeGen(visitor: CodeGenVisitor): string {\n return this.setCache(visitor.visitDeclaration(this));\n }\n }\n\n @ASTNodeDecorator(NoneTerminal.function_prototype)\n export class FunctionProtoType extends TreeNode {\n ident: BaseToken;\n returnType: FullySpecifiedType;\n parameterList: IParamInfo[];\n paramSig: GalaceanDataType[] | undefined;\n\n override semanticAnalyze(sa: SemanticAnalyzer): void {\n const declarator = this.children[0] as FunctionDeclarator;\n this.ident = declarator.ident;\n this.returnType = declarator.returnType;\n this.parameterList = declarator.parameterInfoList;\n this.paramSig = declarator.paramSig;\n }\n }\n\n @ASTNodeDecorator(NoneTerminal.function_declarator)\n export class FunctionDeclarator extends TreeNode {\n ident: BaseToken;\n returnType: FullySpecifiedType;\n parameterInfoList: IParamInfo[] | undefined;\n paramSig: GalaceanDataType[] | undefined;\n\n override semanticAnalyze(sa: SemanticAnalyzer): void {\n sa.curFunctionInfo.returnStatement = null;\n sa.curFunctionInfo.header = this;\n\n const children = this.children;\n const header = children[0] as FunctionHeader;\n const parameterList = children[1] as FunctionParameterList | undefined;\n this.ident = header.ident;\n this.returnType = header.returnType;\n this.parameterInfoList = parameterList?.parameterInfoList;\n this.paramSig = parameterList?.paramSig;\n }\n }\n\n @ASTNodeDecorator(NoneTerminal.function_header)\n export class FunctionHeader extends TreeNode {\n ident: BaseToken;\n returnType: FullySpecifiedType;\n\n override semanticAnalyze(sa: SemanticAnalyzer): void {\n sa.pushScope();\n const children = this.children;\n this.ident = children[1] as BaseToken;\n this.returnType = children[0] as FullySpecifiedType;\n }\n\n override codeGen(visitor: CodeGenVisitor): string {\n return this.setCache(visitor.visitFunctionHeader(this));\n }\n }\n\n @ASTNodeDecorator(NoneTerminal.function_parameter_list)\n export class FunctionParameterList extends TreeNode {\n parameterInfoList: IParamInfo[] = [];\n paramSig: GalaceanDataType[] = [];\n\n override init(): void {\n this.parameterInfoList.length = 0;\n this.paramSig.length = 0;\n }\n\n override semanticAnalyze(sa: SemanticAnalyzer): void {\n const children = this.children;\n const { parameterInfoList, paramSig } = this;\n\n if (children[0] instanceof ParameterDeclaration) {\n const decl = children[0];\n parameterInfoList.push({ ident: decl.ident, typeInfo: decl.typeInfo, astNode: decl });\n paramSig.push(decl.typeInfo?.type ?? TypeAny);\n } else if (children[2] instanceof ParameterDeclaration) {\n const list = children[0] as FunctionParameterList;\n const decl = children[2];\n\n parameterInfoList.push(...list.parameterInfoList, {\n ident: decl.ident,\n typeInfo: decl.typeInfo,\n astNode: decl\n });\n paramSig.push(...list.paramSig, decl.typeInfo?.type ?? TypeAny);\n } else if (children[0] instanceof FunctionParameterList && children[1] instanceof MacroParamBlock) {\n parameterInfoList.push(...children[0].parameterInfoList, { astNode: children[1] });\n paramSig.push(...children[0].paramSig, TypeAny);\n } else if (children[0] instanceof MacroParamBlock) {\n parameterInfoList.push({ astNode: children[0] });\n paramSig.push(TypeAny);\n }\n }\n\n override codeGen(visitor: CodeGenVisitor): string {\n return this.setCache(visitor.visitFunctionParameterList(this));\n }\n }\n\n @ASTNodeDecorator(NoneTerminal.macro_param_case_list)\n export class MacroParamCaseList extends TreeNode {}\n\n @ASTNodeDecorator(NoneTerminal.macro_param_block)\n export class MacroParamBlock extends TreeNode {}\n\n @ASTNodeDecorator(NoneTerminal.macro_parameter_branch)\n export class MacroParameterBranch extends TreeNode {}\n\n @ASTNodeDecorator(NoneTerminal.parameter_declaration)\n export class ParameterDeclaration extends TreeNode {\n // Some syntax is not recognized, eg.\n // `#define TEXTURE2D_SHADOW_PARAM(shadowMap) mediump sampler2D shadowMap`\n typeInfo?: SymbolType;\n ident?: BaseToken;\n\n override init(): void {\n this.typeInfo = undefined;\n this.ident = undefined;\n }\n\n override semanticAnalyze(sa: SemanticAnalyzer): void {\n const children = this.children;\n let parameterDeclarator: ParameterDeclarator | undefined;\n\n if (children[0] instanceof ParameterDeclarator) {\n parameterDeclarator = children[0];\n } else if (children[1] instanceof ParameterDeclarator) {\n parameterDeclarator = children[1];\n }\n\n if (parameterDeclarator) {\n this.typeInfo = parameterDeclarator.typeInfo;\n this.ident = parameterDeclarator.ident;\n const varSymbol = new VarSymbol(\n parameterDeclarator.ident.lexeme,\n parameterDeclarator.typeInfo,\n false,\n parameterDeclarator\n );\n sa.symbolTableStack.insert(varSymbol);\n }\n }\n }\n\n @ASTNodeDecorator(NoneTerminal.parameter_declarator)\n export class ParameterDeclarator extends TreeNode {\n ident: BaseToken;\n typeInfo: SymbolType;\n\n override semanticAnalyze(sa: SemanticAnalyzer): void {\n const children = this.children;\n this.ident = children[1] as BaseToken;\n const typeSpecifier = children[0] as TypeSpecifier;\n const arraySpecifier = children[2] as ArraySpecifier;\n this.typeInfo = new SymbolType(typeSpecifier.type, typeSpecifier.lexeme, arraySpecifier);\n }\n }\n\n // #if _VERBOSE\n @ASTNodeDecorator(NoneTerminal.simple_statement)\n export class SimpleStatement extends TreeNode {}\n\n @ASTNodeDecorator(NoneTerminal.compound_statement)\n export class CompoundStatement extends TreeNode {}\n // #endif\n\n @ASTNodeDecorator(NoneTerminal.compound_statement_no_scope)\n export class CompoundStatementNoScope extends TreeNode {}\n\n // #if _VERBOSE\n @ASTNodeDecorator(NoneTerminal.statement)\n export class Statement extends TreeNode {}\n // #endif\n\n @ASTNodeDecorator(NoneTerminal.statement_list)\n export class StatementList extends TreeNode {\n override codeGen(visitor: CodeGenVisitor): string {\n return this.setCache(visitor.visitStatementList(this));\n }\n }\n\n @ASTNodeDecorator(NoneTerminal.function_definition)\n export class FunctionDefinition extends TreeNode {\n returnStatement?: ASTNode.JumpStatement;\n protoType: FunctionProtoType;\n statements: CompoundStatementNoScope;\n isInMacroBranch: boolean;\n\n override init(): void {\n this.returnStatement = undefined;\n }\n\n override semanticAnalyze(sa: SemanticAnalyzer): void {\n const children = this.children;\n this.protoType = children[0] as FunctionProtoType;\n this.statements = children[1] as CompoundStatementNoScope;\n\n sa.popScope();\n const sm = new FnSymbol(this.protoType.ident.lexeme, this);\n sa.symbolTableStack.insert(sm);\n this.isInMacroBranch = sa.symbolTableStack.isInMacroBranch;\n\n const { curFunctionInfo } = sa;\n const { header, returnStatement } = curFunctionInfo;\n if (header.returnType.type === Keyword.VOID) {\n if (returnStatement) {\n sa.reportError(header.returnType.location, \"Return in void function.\");\n }\n } else {\n if (!returnStatement) {\n sa.reportError(header.returnType.location, `No return statement found.`);\n } else {\n this.returnStatement = returnStatement;\n }\n }\n curFunctionInfo.header = undefined;\n curFunctionInfo.returnStatement = undefined;\n }\n\n override codeGen(visitor: CodeGenVisitor): string {\n return this.setCache(visitor.visitFunctionDefinition(this));\n }\n }\n\n @ASTNodeDecorator(NoneTerminal.function_call)\n export class FunctionCall extends ExpressionAstNode {\n override semanticAnalyze(sa: SemanticAnalyzer): void {\n this.type = (this.children[0] as FunctionCallGeneric).type;\n }\n\n override codeGen(visitor: CodeGenVisitor): string {\n return this.setCache(visitor.visitFunctionCall(this));\n }\n }\n\n @ASTNodeDecorator(NoneTerminal.function_call_generic)\n export class FunctionCallGeneric extends ExpressionAstNode {\n fnSymbol: FnSymbol | StructSymbol | undefined;\n\n override init(): void {\n super.init();\n this.fnSymbol = undefined;\n }\n\n override semanticAnalyze(sa: SemanticAnalyzer): void {\n const functionIdentifier = this.children[0] as FunctionIdentifier;\n if (functionIdentifier.isBuiltin) {\n this.type = functionIdentifier.ident;\n } else {\n const fnIdent = <string>functionIdentifier.ident;\n\n let paramSig: NonGenericGalaceanType[] | undefined;\n if (this.children.length === 4) {\n const paramList = this.children[2];\n if (paramList instanceof FunctionCallParameterList) {\n paramSig = paramList.paramSig as any;\n }\n }\n // #if _VERBOSE\n const builtinFn = BuiltinFunction.getFn(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 // #if _VERBOSE\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 // #endif\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 // #if _VERBOSE\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 // #endif\n }\n\n @ASTNodeDecorator(NoneTerminal.primary_expression)\n export class PrimaryExpression extends ExpressionAstNode {\n override semanticAnalyze(sa: SemanticAnalyzer): void {\n if (this.children.length === 1) {\n const id = this.children[0];\n if (id instanceof VariableIdentifier) {\n this.type = id.typeInfo ?? TypeAny;\n } else {\n switch ((<BaseToken>id).type) {\n case ETokenType.INT_CONSTANT:\n this._type = Keyword.INT;\n break;\n case ETokenType.FLOAT_CONSTANT:\n this.type = Keyword.FLOAT;\n break;\n case Keyword.True:\n case Keyword.False:\n this.type = Keyword.BOOL;\n break;\n }\n }\n } else {\n const expression = this.children[1] as Expression;\n this.type = expression.type;\n }\n }\n }\n\n @ASTNodeDecorator(NoneTerminal.postfix_expression)\n export class PostfixExpression extends ExpressionAstNode {\n override init(): void {\n super.init();\n if (this.children.length === 1) {\n const child = this.children[0] as PrimaryExpression | FunctionCall;\n this.type = child.type;\n }\n }\n\n override codeGen(visitor: CodeGenVisitor): string {\n return this.setCache(visitor.visitPostfixExpression(this));\n }\n }\n\n // #if _VERBOSE\n @ASTNodeDecorator(NoneTerminal.unary_operator)\n export class UnaryOperator extends TreeNode {}\n\n @ASTNodeDecorator(NoneTerminal.unary_expression)\n export class UnaryExpression extends ExpressionAstNode {\n override init(): void {\n this.type = (this.children[0] as PostfixExpression).type;\n }\n }\n\n @ASTNodeDecorator(NoneTerminal.multiplicative_expression)\n export class MultiplicativeExpression extends ExpressionAstNode {\n override init(): void {\n super.init();\n if (this.children.length === 1) {\n this.type = (this.children[0] as UnaryExpression).type;\n // TODO: Temporarily remove type deduce due to generic function type issue.\n // } else {\n // const exp1 = this.children[0] as MultiplicativeExpression;\n // const exp2 = this.children[2] as UnaryExpression;\n // if (exp1.type === exp2.type) {\n // this.type = exp1.type;\n // }\n }\n }\n }\n\n @ASTNodeDecorator(NoneTerminal.additive_expression)\n export class AdditiveExpression extends ExpressionAstNode {\n override init(): void {\n super.init();\n if (this.children.length === 1) {\n this.type = (this.children[0] as MultiplicativeExpression).type;\n // TODO: Temporarily remove type deduce due to generic function type issue.\n // } else {\n // const exp1 = this.children[0] as AdditiveExpression;\n // const exp2 = this.children[2] as MultiplicativeExpression;\n // if (exp1.type === exp2.type) {\n // this.type = exp1.type;\n // }\n }\n }\n }\n\n @ASTNodeDecorator(NoneTerminal.shift_expression)\n export class ShiftExpression extends ExpressionAstNode {\n override semanticAnalyze(sa: SemanticAnalyzer): void {\n const expr = this.children[0] as ExpressionAstNode;\n this.type = expr.type;\n }\n }\n\n @ASTNodeDecorator(NoneTerminal.relational_expression)\n export class RelationalExpression extends ExpressionAstNode {\n override semanticAnalyze(sa: SemanticAnalyzer): void {\n if (this.children.length === 1) {\n this.type = (<ShiftExpression>this.children[0]).type;\n } else {\n this.type = Keyword.BOOL;\n }\n }\n }\n\n @ASTNodeDecorator(NoneTerminal.equality_expression)\n export class EqualityExpression extends ExpressionAstNode {\n override semanticAnalyze(sa: SemanticAnalyzer): void {\n if (this.children.length === 1) {\n this.type = (<RelationalExpression>this.children[0]).type;\n } else {\n this.type = Keyword.BOOL;\n }\n }\n }\n\n @ASTNodeDecorator(NoneTerminal.and_expression)\n export class AndExpression extends ExpressionAstNode {\n override semanticAnalyze(sa: SemanticAnalyzer): void {\n if (this.children.length === 1) {\n this.type = (<AndExpression>this.children[0]).type;\n } else {\n this.type = Keyword.UINT;\n }\n }\n }\n\n @ASTNodeDecorator(NoneTerminal.exclusive_or_expression)\n export class ExclusiveOrExpression extends ExpressionAstNode {\n override semanticAnalyze(sa: SemanticAnalyzer): void {\n if (this.children.length === 1) {\n this.type = (<AndExpression>this.children[0]).type;\n } else {\n this.type = Keyword.UINT;\n }\n }\n }\n\n @ASTNodeDecorator(NoneTerminal.inclusive_or_expression)\n export class InclusiveOrExpression extends ExpressionAstNode {\n override semanticAnalyze(sa: SemanticAnalyzer): void {\n if (this.children.length === 1) {\n this.type = (<ExclusiveOrExpression>this.children[0]).type;\n } else {\n this.type = Keyword.UINT;\n }\n }\n }\n\n @ASTNodeDecorator(NoneTerminal.logical_and_expression)\n export class LogicalAndExpression extends ExpressionAstNode {\n override semanticAnalyze(sa: SemanticAnalyzer): void {\n if (this.children.length === 1) {\n this.type = (<InclusiveOrExpression>this.children[0]).type;\n } else {\n this.type = Keyword.BOOL;\n }\n }\n }\n\n @ASTNodeDecorator(NoneTerminal.logical_xor_expression)\n export class LogicalXorExpression extends ExpressionAstNode {\n override semanticAnalyze(sa: SemanticAnalyzer): void {\n if (this.children.length === 1) {\n this.type = (<LogicalAndExpression>this.children[0]).type;\n } else {\n this.type = Keyword.BOOL;\n }\n }\n }\n\n @ASTNodeDecorator(NoneTerminal.logical_or_expression)\n export class LogicalOrExpression extends ExpressionAstNode {\n override semanticAnalyze(sa: SemanticAnalyzer): void {\n if (this.children.length === 1) {\n this.type = (<LogicalXorExpression>this.children[0]).type;\n } else {\n this.type = Keyword.BOOL;\n }\n }\n }\n\n @ASTNodeDecorator(NoneTerminal.conditional_expression)\n export class ConditionalExpression extends ExpressionAstNode {\n override semanticAnalyze(sa: SemanticAnalyzer): void {\n if (this.children.length === 1) {\n this.type = (<LogicalOrExpression>this.children[0]).type;\n }\n }\n }\n // #endif\n\n @ASTNodeDecorator(NoneTerminal.struct_specifier)\n export class StructSpecifier extends TreeNode {\n ident?: BaseToken;\n propList: StructProp[];\n macroExpressions: MacroExpression[];\n isInMacroBranch: boolean;\n\n override init(): void {\n this.ident = undefined;\n }\n\n override semanticAnalyze(sa: SemanticAnalyzer): void {\n const children = this.children;\n this.isInMacroBranch = sa.symbolTableStack.isInMacroBranch;\n if (children.length === 6) {\n this.ident = children[1] as BaseToken;\n sa.symbolTableStack.insert(new StructSymbol(this.ident.lexeme, this));\n\n this.propList = (children[3] as StructDeclarationList).propList;\n this.macroExpressions = (children[3] as StructDeclarationList).macroExpressions;\n } else {\n this.propList = (children[2] as StructDeclarationList).propList;\n this.macroExpressions = (children[2] as StructDeclarationList).macroExpressions;\n }\n }\n\n override codeGen(visitor: CodeGenVisitor) {\n return this.setCache(visitor.visitStructSpecifier(this));\n }\n }\n\n @ASTNodeDecorator(NoneTerminal.struct_declaration_list)\n export class StructDeclarationList extends TreeNode {\n propList: StructProp[] = [];\n macroExpressions: MacroExpression[] = [];\n\n override init(): void {\n this.propList.length = 0;\n this.macroExpressions.length = 0;\n }\n\n override semanticAnalyze(sa: SemanticAnalyzer): void {\n const { children, propList, macroExpressions } = this;\n\n if (children.length === 1) {\n propList.push(...(children[0] as StructDeclaration).props);\n macroExpressions.push(...(children[0] as StructDeclaration).macroExpressions);\n } else {\n propList.push(...(children[0] as StructDeclarationList).propList);\n propList.push(...(children[1] as StructDeclaration).props);\n macroExpressions.push(...(children[0] as StructDeclarationList).macroExpressions);\n macroExpressions.push(...(children[1] as StructDeclaration).macroExpressions);\n }\n }\n }\n\n @ASTNodeDecorator(NoneTerminal.struct_declaration)\n export class StructDeclaration extends TreeNode {\n props: StructProp[] = [];\n macroExpressions: MacroExpression[] = [];\n\n private _typeSpecifier?: TypeSpecifier;\n private _declaratorList?: StructDeclaratorList;\n\n override init(): void {\n this._typeSpecifier = undefined;\n this._declaratorList = undefined;\n this.props.length = 0;\n this.macroExpressions.length = 0;\n }\n\n override semanticAnalyze(sa: SemanticAnalyzer): void {\n const { children, props, macroExpressions } = this;\n\n if (children.length === 1) {\n const macroStructDeclaration = children[0] as MacroStructDeclaration;\n const macroProps = macroStructDeclaration.props;\n\n for (let i = 0, length = macroProps.length; i < length; i++) {\n macroProps[i].isInMacroBranch = true;\n props.push(macroProps[i]);\n }\n\n macroExpressions.push(...macroStructDeclaration.macroExpressions);\n\n return;\n }\n\n if (children.length === 3) {\n this._typeSpecifier = children[0] as TypeSpecifier;\n this._declaratorList = children[1] as StructDeclaratorList;\n } else {\n this._typeSpecifier = children[1] as TypeSpecifier;\n this._declaratorList = children[2] as StructDeclaratorList;\n }\n\n const firstChild = children[0];\n const { type, lexeme } = this._typeSpecifier;\n const isInMacroBranch = sa.symbolTableStack.isInMacroBranch;\n if (firstChild instanceof LayoutQualifier) {\n const declarator = children[2] as StructDeclarator;\n const typeInfo = new SymbolType(type, lexeme);\n const prop = new StructProp(typeInfo, declarator.ident, firstChild.index, isInMacroBranch);\n props.push(prop);\n } else {\n const declaratorList = this._declaratorList.declaratorList;\n const declaratorListLength = declaratorList.length;\n props.length = declaratorListLength;\n for (let i = 0; i < declaratorListLength; i++) {\n const declarator = declaratorList[i];\n const typeInfo = new SymbolType(type, lexeme, declarator.arraySpecifier);\n const prop = new StructProp(typeInfo, declarator.ident, undefined, isInMacroBranch);\n props[i] = prop;\n }\n }\n }\n }\n\n @ASTNodeDecorator(NoneTerminal.macro_struct_declaration)\n export class MacroStructDeclaration extends TreeNode {\n props: StructProp[] = [];\n macroExpressions: MacroExpression[] = [];\n\n override init(): void {\n this.props.length = 0;\n this.macroExpressions.length = 0;\n }\n\n override semanticAnalyze(): void {\n const children = this.children;\n\n this.macroExpressions.push(children[0] as MacroPushContext);\n\n if (children.length === 3) {\n this.props.push(...(children[1] as StructDeclarationList).propList);\n this.props.push(...(children[2] as MacroStructBranch).props);\n this.macroExpressions.push(...(children[1] as StructDeclarationList).macroExpressions);\n this.macroExpressions.push(...(children[2] as MacroStructBranch).macroExpressions);\n } else {\n this.props.push(...(children[1] as MacroStructBranch).props);\n this.macroExpressions.push(...(children[1] as MacroStructBranch).macroExpressions);\n }\n }\n }\n\n @ASTNodeDecorator(NoneTerminal.macro_struct_branch)\n export class MacroStructBranch extends TreeNode {\n props: StructProp[] = [];\n macroExpressions: MacroExpression[] = [];\n\n override init(): void {\n this.props.length = 0;\n this.macroExpressions.length = 0;\n }\n\n override semanticAnalyze(): void {\n const children = this.children;\n const lastNode = children[children.length - 1];\n\n this.macroExpressions.push(children[0] as MacroPopContext | MacroElseExpression | MacroElifExpression);\n\n if (children[1] instanceof StructDeclarationList) {\n this.props.push(...children[1].propList);\n this.macroExpressions.push(...children[1].macroExpressions);\n }\n\n if (lastNode instanceof MacroStructBranch) {\n this.props.push(...lastNode.props);\n this.macroExpressions.push(...lastNode.macroExpressions);\n }\n\n if (children.length > 1 && lastNode instanceof MacroPopContext) {\n this.macroExpressions.push(lastNode);\n }\n }\n }\n\n @ASTNodeDecorator(NoneTerminal.layout_qualifier)\n export class LayoutQualifier extends TreeNode {\n index: number;\n\n override semanticAnalyze(sa: SemanticAnalyzer): void {\n this.index = Number((<BaseToken>this.children[4]).lexeme);\n }\n }\n\n @ASTNodeDecorator(NoneTerminal.struct_declarator_list)\n export class StructDeclaratorList extends TreeNode {\n declaratorList: StructDeclarator[] = [];\n\n override init(): void {\n this.declaratorList.length = 0;\n }\n\n override semanticAnalyze(sa: SemanticAnalyzer): void {\n const { children, declaratorList } = this;\n if (children.length === 1) {\n declaratorList.push(children[0] as StructDeclarator);\n } else {\n const list = children[0] as StructDeclaratorList;\n const declarator = children[1] as StructDeclarator;\n const listLength = list.declaratorList.length;\n declaratorList.length = listLength + 1;\n for (let i = 0; i < listLength; i++) {\n declaratorList[i] = list.declaratorList[i];\n }\n declaratorList[listLength] = declarator;\n }\n }\n }\n\n @ASTNodeDecorator(NoneTerminal.struct_declarator)\n export class StructDeclarator extends TreeNode {\n ident: BaseToken;\n arraySpecifier: ArraySpecifier | undefined;\n\n override init(): void {\n this.arraySpecifier = undefined;\n }\n\n override semanticAnalyze(sa: SemanticAnalyzer): void {\n const children = this.children;\n this.ident = children[0] as BaseToken;\n this.arraySpecifier = children[1] as ArraySpecifier;\n }\n }\n\n @ASTNodeDecorator(NoneTerminal.variable_declaration)\n export class VariableDeclaration extends TreeNode {\n type: FullySpecifiedType;\n isStatic: boolean;\n\n override init(): void {\n this.isStatic = false;\n }\n\n override semanticAnalyze(sa: SemanticAnalyzer): void {\n const children = this.children;\n const type = children[0] as FullySpecifiedType;\n const ident = children[1] as BaseToken;\n this.type = type;\n const sm = new VarSymbol(ident.lexeme, new SymbolType(type.type, type.typeSpecifier.lexeme), true, this);\n\n sa.symbolTableStack.insert(sm);\n\n if (children.length === 4) {\n this.isStatic = true;\n }\n }\n\n override codeGen(visitor: CodeGenVisitor): string {\n if (this.isStatic) {\n return super.codeGen(visitor);\n } else {\n return this.setCache(visitor.visitGlobalVariableDeclaration(this));\n }\n }\n }\n\n @ASTNodeDecorator(NoneTerminal.variable_declaration_list)\n export class VariableDeclarationList extends TreeNode {\n type: FullySpecifiedType;\n variableDeclarations: VariableDeclaration[] = [];\n\n override init(): void {\n this.variableDeclarations.length = 0;\n }\n\n override semanticAnalyze(sa: SemanticAnalyzer): void {\n const { children } = this;\n const length = children.length;\n const child = children[0] as VariableDeclaration | VariableDeclarationList;\n const type = child.type;\n this.type = type;\n\n if (child instanceof VariableDeclaration) {\n this.variableDeclarations.push(child);\n } else {\n this.variableDeclarations.push(...child.variableDeclarations);\n\n const ident = children[2] as BaseToken;\n\n const newVariable = VariableDeclaration.pool.get() as VariableDeclaration;\n if (length === 3) {\n // variable_declaration_list ',' id\n newVariable.set(ident.location, [type, ident]);\n } else {\n // variable_declaration_list ',' id array_specifier\n newVariable.set(ident.location, [type, ident, children[3] as ArraySpecifier]);\n }\n newVariable.semanticAnalyze(sa);\n this.variableDeclarations.push(newVariable);\n }\n }\n }\n\n @ASTNodeDecorator(NoneTerminal.variable_identifier)\n export class VariableIdentifier extends TreeNode {\n // @todo: typeInfo may be multiple types\n typeInfo: GalaceanDataType;\n referenceGlobalSymbolNames: string[] = [];\n\n private _symbols: Array<VarSymbol | FnSymbol> = [];\n\n override init(): void {\n this.typeInfo = TypeAny;\n this.referenceGlobalSymbolNames.length = 0;\n this._symbols.length = 0;\n }\n\n override semanticAnalyze(sa: SemanticAnalyzer): void {\n const child = this.children[0] as BaseToken | MacroCallSymbol | MacroCallFunction;\n const referenceGlobalSymbolNames = this.referenceGlobalSymbolNames;\n const symbols = this._symbols;\n const lookupSymbol = SemanticAnalyzer._lookupSymbol;\n let needFindNames: string[];\n\n if (child instanceof BaseToken) {\n needFindNames = [child.lexeme];\n } else {\n needFindNames = (child as MacroCallSymbol | MacroCallFunction).referenceSymbolNames;\n }\n\n for (let i = 0; i < needFindNames.length; i++) {\n const name = needFindNames[i];\n\n if (sa.macroDefineList[name]) {\n continue;\n }\n\n // only `macro_call` CFG can reference fnSymbols, others fnSymbols are referenced in `function_call_generic` CFG\n if (!(child instanceof BaseToken) && BuiltinFunction.isExist(name)) {\n continue;\n }\n\n const builtinVar = BuiltinVariable.getVar(name);\n if (builtinVar) {\n this.typeInfo = builtinVar.type;\n continue;\n }\n\n lookupSymbol.set(name, ESymbolType.Any);\n sa.symbolTableStack.lookupAll(lookupSymbol, true, symbols);\n\n if (!symbols.length) {\n // #if _VERBOSE\n sa.reportWarning(this.location, `Please sure the identifier \"${name}\" will be declared before used.`);\n // #endif\n } else {\n this.typeInfo = symbols[0].dataType?.type;\n const currentScopeSymbol = <VarSymbol | FnSymbol>sa.symbolTableStack.scope.getSymbol(lookupSymbol, true);\n if (currentScopeSymbol) {\n if (\n (currentScopeSymbol instanceof FnSymbol || currentScopeSymbol.isGlobalVariable) &&\n referenceGlobalSymbolNames.indexOf(name) === -1\n ) {\n referenceGlobalSymbolNames.push(name);\n }\n } else if (\n symbols.some((s) => s instanceof FnSymbol || s.isGlobalVariable) &&\n referenceGlobalSymbolNames.indexOf(name) === -1\n ) {\n referenceGlobalSymbolNames.push(name);\n }\n }\n }\n }\n\n override codeGen(visitor: CodeGenVisitor): string {\n return this.setCache(visitor.visitVariableIdentifier(this));\n }\n\n getLexeme(visitor: CodeGenVisitor): string {\n const child = this.children[0] as BaseToken | MacroCallSymbol | MacroCallFunction;\n if (child instanceof BaseToken) {\n return child.lexeme;\n } else {\n return child.codeGen(visitor);\n }\n }\n }\n\n @ASTNodeDecorator(NoneTerminal.gs_shader_program)\n export class GLShaderProgram extends TreeNode {\n shaderData: ShaderData;\n\n override semanticAnalyze(sa: SemanticAnalyzer): void {\n this.shaderData = sa.shaderData;\n this.shaderData.symbolTable = sa.symbolTableStack.scope;\n }\n }\n\n @ASTNodeDecorator(NoneTerminal.global_declaration)\n export class GlobalDeclaration extends TreeNode {\n macroExpressions: Array<MacroExpression | MacroUndef | BaseToken> = [];\n\n override init(): void {\n this.macroExpressions.length = 0;\n }\n\n override semanticAnalyze(sa: SemanticAnalyzer): void {\n const child = this.children[0];\n\n if (child instanceof MacroUndef || child instanceof GlobalMacroIfStatement || child instanceof BaseToken) {\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\n override init(): void {\n this.referenceSymbolNames.length = 0;\n }\n\n override semanticAnalyze(sa: SemanticAnalyzer): void {\n const children = this.children;\n const macroName = (children[0] as BaseToken).lexeme;\n\n this.macroName = macroName;\n\n Preprocessor.getReferenceSymbolNames(sa.macroDefineList, macroName, this.referenceSymbolNames);\n }\n }\n\n @ASTNodeDecorator(NoneTerminal.macro_call_function)\n export class MacroCallFunction extends TreeNode {\n referenceSymbolNames: string[];\n macroName: string;\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 }\n\n override codeGen(visitor: CodeGenVisitor) {\n return this.setCache(visitor.visitMacroCallFunction(this));\n }\n }\n}\n","export enum MacroParserToken {\n id,\n line_remain,\n chunk,\n int_constant,\n string_const,\n /** \\>> */\n right_op,\n /** << */\n left_op,\n left_paren,\n right_paren,\n /** \\>= */\n ge,\n /** <= */\n le,\n /** == */\n eq,\n /** != */\n neq,\n /** && */\n and,\n /** || */\n or,\n /** < */\n left_angle,\n /** \\> */\n right_angle,\n /** \\* */\n star,\n /** + */\n plus,\n /** \\- */\n dash,\n /** ! */\n bang,\n /** \\/ */\n slash,\n /** % */\n percent,\n\n EOF = 100\n}\n\nexport enum MacroParserKeyword {\n define = 101,\n undef,\n if,\n ifdef,\n ifndef,\n else,\n elif,\n endif,\n\n defined\n}\n\nexport type MacroParserConstant = boolean | number;\n","import { IPoolElement } from \"@galacean/engine\";\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","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","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 _is_native_function(fn) {\n return Function.toString.call(fn).indexOf(\"[native code]\") !== -1;\n}\nexport { _is_native_function as _ };\n","import { ClearableObjectPool, IPoolElement, Logger } from \"@galacean/engine\";\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 ShaderLabUtils {\n private static _shaderLabObjectPoolSet: ClearableObjectPool<IPoolElement>[] = [];\n\n static createObjectPool<T extends IPoolElement>(type: new () => T) {\n const pool = new ClearableObjectPool<T>(type);\n ShaderLabUtils._shaderLabObjectPoolSet.push(pool);\n return pool;\n }\n\n static clearAllShaderLabObjectPool() {\n for (let i = 0, n = ShaderLabUtils._shaderLabObjectPoolSet.length; i < n; i++) {\n ShaderLabUtils._shaderLabObjectPoolSet[i].clear();\n }\n }\n\n static createGSError(\n message: string,\n errorName: GSErrorName,\n source: string,\n location: ShaderRange | ShaderPosition,\n file?: string\n ): Error | undefined {\n // #if _VERBOSE\n return new GSError(errorName, message, location, source, file);\n // #else\n Logger.error(message);\n // #endif\n }\n}\n","import { ETokenType } from \"./types\";\nimport { ShaderRange, ShaderPosition } from \".\";\nimport { ShaderLab } from \"../ShaderLab\";\nimport { IPoolElement } from \"@galacean/engine\";\nimport { ShaderLabUtils } from \"../ShaderLabUtils\";\n\nexport class BaseToken<T extends number = number> implements IPoolElement {\n static pool = ShaderLabUtils.createObjectPool(BaseToken);\n\n type: T;\n lexeme: string;\n location: ShaderRange;\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 if (arg) {\n if (arg instanceof ShaderRange) {\n this.location = arg as ShaderRange;\n } else {\n const end = ShaderLab.createPosition(\n arg.index + lexeme.length,\n // #if _VERBOSE\n arg.line,\n arg.column + lexeme.length\n // #endif\n );\n this.location = ShaderLab.createRange(arg, end);\n }\n }\n }\n\n dispose(): void {}\n}\n\nexport const EOF = new BaseToken();\nEOF.set(ETokenType.EOF, \"/EOF\");\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, 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 { ShaderLab } from \"../ShaderLab\";\nimport { ClearableObjectPool, IPoolElement } from \"@galacean/engine\";\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 const ret: [GrammarSymbol[], TranslationRule | undefined][] = [];\n for (const opt of options) {\n ret.push([\n [goal, ...opt],\n function (sa, ...children) {\n if (!children[0]) return;\n const start = children[0].location.start;\n const end = children[children.length - 1].location.end;\n const location = ShaderLab.createRange(start, end);\n ASTNode.get(astTypePool ?? ASTNode.TrivialNode.pool, sa, location, children);\n }\n ]);\n }\n return ret;\n }\n\n static addMapSetItem<K, T>(map: Map<K, Set<T>>, k: K, v: T) {\n const set = map.get(k) ?? new Set();\n set.add(v);\n map.set(k, set);\n }\n\n static isSubSet<T>(sa: Set<T>, sb: Set<T>) {\n for (const item of sa) {\n if (!sb.has(item)) return false;\n }\n return true;\n }\n\n static isActionEqual(a: ActionInfo, b: ActionInfo) {\n return a.action === b.action && a.target === b.target;\n }\n\n // #if _VERBOSE\n static printAction(actionInfo: ActionInfo) {\n const production = Production.pool.get(actionInfo.target!);\n return `<Action: ${EAction[actionInfo.action]} -> ${this.printProduction(production)}>`;\n }\n\n static printProduction(production: Production) {\n const deriv = production.derivation.map((gs) => GrammarUtils.toString(gs)).join(\"|\");\n return `${NoneTerminal[production.goal]} :=> ${deriv}`;\n }\n // #endif\n}\n","import { ETokenType } from \"../common\";\nimport { NoneTerminal, Terminal } from \"../parser/GrammarSymbol\";\nimport Production from \"./Production\";\nimport GrammarUtils from \"./Utils\";\n\nexport default class StateItem {\n static _id = 0;\n\n readonly production: Production;\n readonly position: number;\n readonly lookaheadSet: Set<Terminal>;\n readonly id: number;\n\n _needReInfer = true;\n get needReInfer() {\n return this._needReInfer;\n }\n set needReInfer(v: boolean) {\n this._needReInfer = v;\n }\n\n get curSymbol() {\n return this.production.derivation[this.position];\n }\n get nextSymbol() {\n return this.production.derivation[this.position + 1];\n }\n\n constructor(production: Production, position: number, lookahead: Iterable<Terminal>) {\n this.production = production;\n this.position = position;\n this.lookaheadSet = new Set();\n for (const la of lookahead) {\n this.lookaheadSet.add(la);\n }\n this.id = StateItem._id++;\n }\n\n addLookahead(ts: Iterable<Terminal>) {\n for (const t of ts) {\n if (this.lookaheadSet.has(t)) continue;\n this.lookaheadSet.add(t);\n this.needReInfer = true;\n }\n }\n\n symbolByOffset(offset: number) {\n return this.production.derivation[this.position + offset];\n }\n\n canReduce() {\n if (this.position > this.production.derivation.length - 1) return true;\n else {\n for (let i = this.position; i < this.production.derivation.length; i++) {\n if (this.production.derivation[i] !== ETokenType.EPSILON) return false;\n }\n return true;\n }\n }\n\n advance() {\n // #if _VERBOSE\n if (this.canReduce()) throw `Error: advance reduce-able parsing state item`;\n // #endif\n return new StateItem(this.production, this.position + 1, this.lookaheadSet);\n }\n\n // #if _VERBOSE\n toString() {\n const coreItem = this.production.derivation.map((item) => GrammarUtils.toString(item));\n coreItem[this.position] = \".\" + (coreItem[this.position] ?? \"\");\n\n return `${NoneTerminal[this.production.goal]} :=> ${coreItem.join(\"|\")} ;${Array.from(this.lookaheadSet)\n .map((item) => GrammarUtils.toString(item))\n .join(\"/\")}`;\n }\n // #endif\n}\n","import { Terminal } from \"../parser/GrammarSymbol\";\nimport Production from \"./Production\";\nimport StateItem from \"./StateItem\";\n\nexport default class State {\n static closureMap: Map<string /** state mapKey */, State> = new Map();\n static pool: Map<number, State> = new Map();\n static _id = 0;\n\n readonly id: number;\n readonly cores: Set<StateItem>;\n private _items: Set<StateItem>;\n get items() {\n return this._items;\n }\n\n closured = false;\n get needReInfer() {\n for (const core of this.cores) {\n if (core.needReInfer) return true;\n }\n return false;\n }\n\n private _stateItemPool: Map<string /** Map ID */, StateItem> = new Map();\n\n static create(cores: StateItem[]) {\n const cacheKey = this.getMapKey(cores);\n const state = this.closureMap.get(cacheKey);\n if (state) {\n for (const core of cores) {\n // merge lookahead\n state.createStateItem(core.production, core.position, core.lookaheadSet);\n }\n return state;\n }\n\n const newState = new State(cores);\n this.closureMap.set(cacheKey, newState);\n return newState;\n }\n\n // TODO: any optimization?\n static getMapKey(cores: StateItem[]) {\n return cores.map((item) => `${item.production.id},${item.position}`).join(\";\");\n }\n\n private constructor(cores: Iterable<StateItem>) {\n this.id = State._id++;\n this._items = new Set([...cores]);\n this.cores = new Set([...cores]);\n for (const it of cores) {\n const itemMapKey = this.getStateItemMapKey(it.production, it.position);\n this._stateItemPool.set(itemMapKey, it);\n }\n State.pool.set(this.id, this);\n }\n\n // TODO: any optimization?\n getStateItemMapKey(production: Production, position: number) {\n return `${production.id},${position}`;\n }\n\n createStateItem(production: Production, position: number, lookaheadSet: Iterable<Terminal> = new Set()) {\n const mapId = this.getStateItemMapKey(production, position);\n const item = this._stateItemPool.get(mapId);\n if (item) {\n for (const la of lookaheadSet) {\n if (item.lookaheadSet.has(la)) continue;\n item.lookaheadSet.add(la);\n item.needReInfer = true;\n }\n return item;\n }\n const newItem = new StateItem(production, position, lookaheadSet);\n this._stateItemPool.set(mapId, newItem);\n return newItem;\n }\n}\n","import { ETokenType, GalaceanDataType, TypeAny } from \"./common\";\nimport { BaseToken as Token } from \"./common/BaseToken\";\nimport { 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 // #if _VERBOSE\n /**\n * Check if type `tb` is compatible with type `ta`.\n */\n static typeCompatible(ta: GalaceanDataType, tb: GalaceanDataType | undefined) {\n if (tb == undefined || tb === TypeAny) return true;\n if (ta === Keyword.INT) {\n return ta === tb || tb === Keyword.UINT;\n }\n return ta === tb;\n }\n\n static toString(sm: GrammarSymbol) {\n if (this.isTerminal(sm)) {\n return ETokenType[sm] ?? Keyword[sm];\n }\n return NoneTerminal[sm];\n }\n // #endif\n\n static isTerminal(sm: GrammarSymbol) {\n return sm < NoneTerminal.START;\n }\n\n /**\n * @internal\n */\n // #if _VERBOSE\n static printStatePool(logPath: string) {\n let output = \"\";\n\n console.log(\"========== Parser Pool ==========\");\n\n let count = 0;\n for (const state of State.pool.values()) {\n count++;\n let tmp = \"\";\n tmp += `${state.id}: \\n`.padEnd(4);\n for (const psItem of state.items) {\n tmp += \" \" + psItem.toString() + \"\\n\";\n }\n output += tmp;\n }\n\n console.log(\"state count:\", count);\n console.log(output);\n }\n // #endif\n}\n","import { Logger, ShaderPass } from \"@galacean/engine\";\n/** @ts-ignore */\nimport { ShaderLib } from \"@galacean/engine\";\n\nexport enum MacroValueType {\n Number, // 1, 1.1\n Symbol, // variable name\n FunctionCall, // function call, e.g. clamp(a, 0.0, 1.0)\n Other // shaderLab does not check this\n}\n\nexport interface MacroDefineInfo {\n isFunction: boolean;\n name: string;\n value: string;\n valueType: MacroValueType;\n params: string[];\n functionCallName: string;\n}\n\nexport interface MacroDefineList {\n [macroName: string]: MacroDefineInfo[];\n}\n\nexport class Preprocessor {\n private static readonly _includeReg = /^[ \\t]*#include +\"([\\w\\d./]+)\"/gm;\n private static readonly _macroRegex =\n /^\\s*#define\\s+(\\w+)[ ]*(\\(([^)]*)\\))?[ ]+(\\(?\\w+\\)?.*?)(?:\\/\\/.*|\\/\\*.*?\\*\\/)?\\s*$/gm;\n private static readonly _symbolReg = /^[a-zA-Z_][a-zA-Z0-9_]*$/;\n private static readonly _funcCallReg = /^([a-zA-Z_][a-zA-Z0-9_]*)\\s*\\((.*)\\)$/;\n private static readonly _macroDefineIncludeMap = new Map<string, MacroDefineList>();\n\n /**\n * @internal\n */\n static _repeatIncludeSet = new Set<string>();\n\n static parse(\n source: string,\n basePathForIncludeKey: string,\n outMacroDefineList: MacroDefineList,\n parseMacro = true\n ): string {\n if (parseMacro) {\n this._parseMacroDefines(source, outMacroDefineList);\n }\n return source.replace(this._includeReg, (_, includeName) =>\n this._replace(includeName, basePathForIncludeKey, outMacroDefineList)\n );\n }\n\n static getReferenceSymbolNames(macroDefineList: MacroDefineList, macroName: string, out: string[]): void {\n out.length = 0;\n const infos = macroDefineList[macroName];\n if (!infos) return;\n\n for (let i = 0; i < infos.length; i++) {\n const info = infos[i];\n const valueType = info.valueType;\n if (valueType === MacroValueType.FunctionCall || valueType === MacroValueType.Symbol) {\n const referencedName = valueType === MacroValueType.FunctionCall ? info.functionCallName : info.value;\n if (info.params.indexOf(referencedName) !== -1) continue;\n if (out.indexOf(referencedName) === -1) out.push(referencedName);\n } else if (valueType === MacroValueType.Other) {\n // #if _VERBOSE\n Logger.warn(\n `Warning: Macro \"${info.name}\" has an unrecognized value \"${info.value}\". ShaderLab does not validate this type.`\n );\n // #endif\n }\n }\n }\n\n private static _isNumber(str: string): boolean {\n return !isNaN(Number(str));\n }\n\n private static _isExist(list: MacroDefineInfo[], item: MacroDefineInfo): boolean {\n return list.some(\n (e) =>\n e.valueType === item.valueType &&\n e.value === item.value &&\n e.isFunction === item.isFunction &&\n e.functionCallName === item.functionCallName &&\n e.params.length === item.params.length &&\n e.params.every((p, i) => p === item.params[i])\n );\n }\n\n private static _parseMacroDefines(source: string, outMacroList: MacroDefineList): void {\n let match: RegExpExecArray | null;\n this._macroRegex.lastIndex = 0;\n\n while ((match = this._macroRegex.exec(source)) !== null) {\n const [, name, paramsGroup, paramsStr, valueRaw] = match;\n const isFunction = !!paramsGroup && !!valueRaw;\n const params =\n isFunction && paramsStr\n ? paramsStr\n .split(\",\")\n .map((p) => p.trim())\n .filter(Boolean)\n : [];\n const value = valueRaw ? valueRaw.trim() : \"\";\n\n let valueType = MacroValueType.Other;\n let functionCallName = \"\";\n\n if (this._isNumber(value)) {\n valueType = MacroValueType.Number;\n } else if (this._symbolReg.test(value)) {\n valueType = MacroValueType.Symbol;\n } else {\n const callMatch = this._funcCallReg.exec(value);\n if (callMatch) {\n valueType = MacroValueType.FunctionCall;\n functionCallName = callMatch[1];\n }\n }\n\n const info: MacroDefineInfo = {\n isFunction,\n name,\n value,\n valueType,\n params,\n functionCallName\n };\n\n const arr = outMacroList[name];\n if (arr) {\n if (!this._isExist(arr, info)) arr.push(info);\n } else {\n outMacroList[name] = [info];\n }\n }\n }\n\n private static _mergeMacroDefineLists(from: MacroDefineList, to: MacroDefineList): void {\n for (const macroName in from) {\n if (to[macroName]) {\n const target = to[macroName];\n const src = from[macroName];\n for (let i = 0; i < src.length; i++) {\n const info = src[i];\n if (!this._isExist(target, info)) target.push(info);\n }\n } else {\n to[macroName] = from[macroName];\n }\n }\n }\n\n private static _replace(\n includeName: string,\n basePathForIncludeKey: string,\n outMacroDefineList: MacroDefineList\n ): string {\n let path: string;\n if (includeName[0] === \".\") {\n // @ts-ignore\n path = new URL(includeName, basePathForIncludeKey).href.substring(ShaderPass._shaderRootPath.length);\n } else {\n path = includeName;\n }\n\n const chunk = (ShaderLib as any)[path];\n if (!chunk) {\n Logger.error(`Shader slice \"${path}\" not founded.`);\n return \"\";\n }\n\n if (this._repeatIncludeSet.has(path)) {\n Logger.warn(`Shader slice \"${path}\" is included multiple times.`);\n }\n this._repeatIncludeSet.add(path);\n\n if (this._macroDefineIncludeMap.has(path)) {\n this._mergeMacroDefineLists(this._macroDefineIncludeMap.get(path)!, outMacroDefineList);\n } else {\n const chunkMacroDefineList: MacroDefineList = {};\n this._parseMacroDefines(chunk, chunkMacroDefineList);\n this._macroDefineIncludeMap.set(path, chunkMacroDefineList);\n this._mergeMacroDefineLists(chunkMacroDefineList, outMacroDefineList);\n }\n\n return this.parse(chunk, basePathForIncludeKey, outMacroDefineList, false);\n }\n}\n","import { GalaceanDataType, TypeAny } from \"../../common\";\nimport { Keyword } from \"../../common/enums/Keyword\";\nimport { EShaderStage } from \"../../common/enums/ShaderStage\";\n\nexport enum EGenType {\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 | EGenType;\n\nfunction isGenericType(t: BuiltinType) {\n return t >= EGenType.GenType && t <= EGenType.GSampler2DArray;\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 getReturnType(fn: BuiltinFunction, genType?: NonGenericGalaceanType) {\n if (!isGenericType(fn._returnType)) return fn._returnType as NonGenericGalaceanType;\n return genType;\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 _createWithScop(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 // TODO: correct the type deduce, consider the following case:\n // It incorrectly inferred the type of the following expression as float, which should be vec3.\n // max(scatterAmt.xyz,0.0001)\n static getFn(ident: string, parameterTypes: NonGenericGalaceanType[]): BuiltinFunction | undefined {\n const list = BuiltinFunctionTable.get(ident);\n if (list) {\n for (let length = list.length, i = 0; i < length; i++) {\n const fn = list[i];\n const fnArgs = fn.args;\n const argLength = fnArgs.length;\n if (argLength !== parameterTypes.length) continue;\n // Try to match generic parameter type.\n let returnType = TypeAny;\n let found = true;\n for (let i = 0; i < argLength; i++) {\n const curFnArg = fnArgs[i];\n if (isGenericType(curFnArg)) {\n if (returnType === TypeAny) returnType = parameterTypes[i];\n } else {\n if (curFnArg !== parameterTypes[i] && parameterTypes[i] !== TypeAny) {\n found = false;\n break;\n }\n }\n }\n if (found) {\n fn._realReturnType = returnType;\n return fn;\n }\n }\n }\n }\n\n static isExist(ident: string) {\n return !!BuiltinFunctionTable.get(ident);\n }\n}\n\nBuiltinFunction._create(\"radians\", EGenType.GenType, EGenType.GenType);\nBuiltinFunction._create(\"degrees\", EGenType.GenType, EGenType.GenType);\nBuiltinFunction._create(\"sin\", EGenType.GenType, EGenType.GenType);\nBuiltinFunction._create(\"cos\", EGenType.GenType, EGenType.GenType);\nBuiltinFunction._create(\"tan\", EGenType.GenType, EGenType.GenType);\nBuiltinFunction._create(\"asin\", EGenType.GenType, EGenType.GenType);\nBuiltinFunction._create(\"acos\", EGenType.GenType, EGenType.GenType);\nBuiltinFunction._create(\"atan\", EGenType.GenType, EGenType.GenType, EGenType.GenType);\nBuiltinFunction._create(\"atan\", EGenType.GenType, EGenType.GenType);\nBuiltinFunction._create(\"sinh\", EGenType.GenType, EGenType.GenType);\nBuiltinFunction._create(\"cosh\", EGenType.GenType, EGenType.GenType);\nBuiltinFunction._create(\"tanh\", EGenType.GenType, EGenType.GenType);\nBuiltinFunction._create(\"asinh\", EGenType.GenType, EGenType.GenType);\nBuiltinFunction._create(\"acosh\", EGenType.GenType, EGenType.GenType);\nBuiltinFunction._create(\"atanh\", EGenType.GenType, EGenType.GenType);\n\nBuiltinFunction._create(\"pow\", EGenType.GenType, EGenType.GenType, EGenType.GenType);\nBuiltinFunction._create(\"exp\", EGenType.GenType, EGenType.GenType);\nBuiltinFunction._create(\"log\", EGenType.GenType, EGenType.GenType);\nBuiltinFunction._create(\"exp2\", EGenType.GenType, EGenType.GenType);\nBuiltinFunction._create(\"log2\", EGenType.GenType, EGenType.GenType);\nBuiltinFunction._create(\"sqrt\", EGenType.GenType, EGenType.GenType);\nBuiltinFunction._create(\"inversesqrt\", EGenType.GenType, EGenType.GenType);\n\nBuiltinFunction._create(\"abs\", EGenType.GenType, EGenType.GenType);\nBuiltinFunction._create(\"abs\", EGenType.GenIntType, EGenType.GenIntType);\nBuiltinFunction._create(\"sign\", EGenType.GenType, EGenType.GenType);\nBuiltinFunction._create(\"sign\", EGenType.GenIntType, EGenType.GenIntType);\nBuiltinFunction._create(\"floor\", EGenType.GenType, EGenType.GenType);\nBuiltinFunction._create(\"trunc\", EGenType.GenType, EGenType.GenType);\nBuiltinFunction._create(\"round\", EGenType.GenType, EGenType.GenType);\nBuiltinFunction._create(\"roundEven\", EGenType.GenType, EGenType.GenType);\nBuiltinFunction._create(\"ceil\", EGenType.GenType, EGenType.GenType);\nBuiltinFunction._create(\"fract\", EGenType.GenType, EGenType.GenType);\nBuiltinFunction._create(\"mod\", EGenType.GenType, EGenType.GenType, Keyword.FLOAT);\nBuiltinFunction._create(\"mod\", EGenType.GenType, EGenType.GenType, EGenType.GenType);\nBuiltinFunction._create(\"min\", EGenType.GenType, EGenType.GenType, EGenType.GenType);\nBuiltinFunction._create(\"min\", EGenType.GenType, EGenType.GenType, Keyword.FLOAT);\nBuiltinFunction._create(\"min\", EGenType.GenIntType, EGenType.GenIntType, EGenType.GenIntType);\nBuiltinFunction._create(\"min\", EGenType.GenIntType, EGenType.GenIntType, Keyword.INT);\nBuiltinFunction._create(\"min\", EGenType.GenUintType, EGenType.GenUintType, EGenType.GenUintType);\nBuiltinFunction._create(\"min\", EGenType.GenUintType, EGenType.GenUintType, Keyword.UINT);\nBuiltinFunction._create(\"max\", EGenType.GenType, EGenType.GenType, EGenType.GenType);\nBuiltinFunction._create(\"max\", EGenType.GenType, EGenType.GenType, Keyword.FLOAT);\nBuiltinFunction._create(\"max\", EGenType.GenIntType, EGenType.GenIntType, EGenType.GenIntType);\nBuiltinFunction._create(\"max\", EGenType.GenIntType, EGenType.GenIntType, Keyword.INT);\nBuiltinFunction._create(\"clamp\", EGenType.GenType, EGenType.GenType, EGenType.GenType, EGenType.GenType);\nBuiltinFunction._create(\"clamp\", EGenType.GenType, EGenType.GenType, Keyword.FLOAT, Keyword.FLOAT);\nBuiltinFunction._create(\"clamp\", EGenType.GenIntType, EGenType.GenIntType, EGenType.GenIntType, EGenType.GenIntType);\nBuiltinFunction._create(\"clamp\", EGenType.GenIntType, EGenType.GenIntType, Keyword.INT, Keyword.INT);\nBuiltinFunction._create(\n \"clamp\",\n EGenType.GenUintType,\n EGenType.GenUintType,\n EGenType.GenUintType,\n EGenType.GenUintType\n);\nBuiltinFunction._create(\"clamp\", EGenType.GenUintType, EGenType.GenUintType, Keyword.UINT, Keyword.UINT);\nBuiltinFunction._create(\"mix\", EGenType.GenType, EGenType.GenType, EGenType.GenType, EGenType.GenType);\nBuiltinFunction._create(\"mix\", EGenType.GenType, EGenType.GenType, EGenType.GenType, Keyword.FLOAT);\nBuiltinFunction._create(\"mix\", EGenType.GenType, EGenType.GenType, EGenType.GenType, EGenType.GenBoolType);\nBuiltinFunction._create(\"step\", EGenType.GenType, EGenType.GenType, EGenType.GenType);\nBuiltinFunction._create(\"step\", EGenType.GenType, Keyword.FLOAT, EGenType.GenType);\nBuiltinFunction._create(\"smoothstep\", EGenType.GenType, EGenType.GenType, EGenType.GenType, EGenType.GenType);\nBuiltinFunction._create(\"smoothstep\", EGenType.GenType, Keyword.FLOAT, Keyword.FLOAT, EGenType.GenType);\nBuiltinFunction._create(\"isnan\", EGenType.GenBoolType, EGenType.GenType);\nBuiltinFunction._create(\"isinf\", EGenType.GenBoolType, EGenType.GenType);\nBuiltinFunction._create(\"floatBitsToInt\", EGenType.GenType, EGenType.GenType);\nBuiltinFunction._create(\"floatBitsToUint\", EGenType.GenUintType, EGenType.GenType);\nBuiltinFunction._create(\"intBitsToFloat\", EGenType.GenType, EGenType.GenIntType);\nBuiltinFunction._create(\"uintBitsToFloat\", EGenType.GenType, EGenType.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, EGenType.GenType);\nBuiltinFunction._create(\"distance\", Keyword.FLOAT, EGenType.GenType, EGenType.GenType);\nBuiltinFunction._create(\"dot\", Keyword.FLOAT, EGenType.GenType, EGenType.GenType);\nBuiltinFunction._create(\"cross\", Keyword.VEC3, Keyword.VEC3, Keyword.VEC3);\nBuiltinFunction._create(\"normalize\", EGenType.GenType, EGenType.GenType);\nBuiltinFunction._create(\"faceforward\", EGenType.GenType, EGenType.GenType, EGenType.GenType, EGenType.GenType);\nBuiltinFunction._create(\"reflect\", EGenType.GenType, EGenType.GenType, EGenType.GenType);\nBuiltinFunction._create(\"refract\", EGenType.GenType, EGenType.GenType, EGenType.GenType, Keyword.FLOAT);\nBuiltinFunction._create(\"matrixCompMult\", EGenType.Mat, EGenType.Mat, EGenType.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\", EGenType.BoolVec, EGenType.Vec, EGenType.Vec);\nBuiltinFunction._create(\"lessThan\", EGenType.BoolVec, EGenType.IntVec, EGenType.IntVec);\nBuiltinFunction._create(\"lessThan\", EGenType.BoolVec, EGenType.UintVec, EGenType.UintVec);\n\nBuiltinFunction._create(\"lessThanEqual\", EGenType.BoolVec, EGenType.Vec, EGenType.Vec);\nBuiltinFunction._create(\"lessThanEqual\", EGenType.BoolVec, EGenType.IntVec, EGenType.IntVec);\nBuiltinFunction._create(\"lessThanEqual\", EGenType.BoolVec, EGenType.UintVec, EGenType.UintVec);\n\nBuiltinFunction._create(\"greaterThan\", EGenType.BoolVec, EGenType.Vec, EGenType.Vec);\nBuiltinFunction._create(\"greaterThan\", EGenType.BoolVec, EGenType.IntVec, EGenType.IntVec);\nBuiltinFunction._create(\"greaterThan\", EGenType.BoolVec, EGenType.UintVec, EGenType.UintVec);\n\nBuiltinFunction._create(\"greaterThanEqual\", EGenType.BoolVec, EGenType.Vec, EGenType.Vec);\nBuiltinFunction._create(\"greaterThanEqual\", EGenType.BoolVec, EGenType.IntVec, EGenType.IntVec);\nBuiltinFunction._create(\"greaterThanEqual\", EGenType.BoolVec, EGenType.UintVec, EGenType.UintVec);\n\nBuiltinFunction._create(\"equal\", EGenType.BoolVec, EGenType.Vec, EGenType.Vec);\nBuiltinFunction._create(\"equal\", EGenType.BoolVec, EGenType.IntVec, EGenType.IntVec);\nBuiltinFunction._create(\"equal\", EGenType.BoolVec, EGenType.UintVec, EGenType.UintVec);\nBuiltinFunction._create(\"equal\", EGenType.BoolVec, EGenType.BoolVec, EGenType.BoolVec);\n\nBuiltinFunction._create(\"notEqual\", EGenType.BoolVec, EGenType.Vec, EGenType.Vec);\nBuiltinFunction._create(\"notEqual\", EGenType.BoolVec, EGenType.IntVec, EGenType.IntVec);\nBuiltinFunction._create(\"notEqual\", EGenType.BoolVec, EGenType.UintVec, EGenType.UintVec);\nBuiltinFunction._create(\"notEqual\", EGenType.BoolVec, EGenType.BoolVec, EGenType.BoolVec);\n\nBuiltinFunction._create(\"any\", Keyword.BOOL, EGenType.BoolVec);\nBuiltinFunction._create(\"all\", Keyword.BOOL, EGenType.BoolVec);\nBuiltinFunction._create(\"not\", EGenType.BoolVec, EGenType.BoolVec);\n\nBuiltinFunction._create(\"textureSize\", Keyword.IVEC2, EGenType.GSampler2D, Keyword.INT);\nBuiltinFunction._create(\"textureSize\", Keyword.IVEC3, EGenType.GSampler3D, Keyword.INT);\nBuiltinFunction._create(\"textureSize\", Keyword.IVEC2, EGenType.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, EGenType.GSampler2DArray, Keyword.INT);\nBuiltinFunction._create(\"textureSize\", Keyword.IVEC3, Keyword.SAMPLER2D_ARRAY_SHADOW, Keyword.INT);\n\nBuiltinFunction._create(\"texture2D\", Keyword.VEC4, Keyword.SAMPLER2D, Keyword.VEC2);\nBuiltinFunction._create(\"texture2D\", Keyword.VEC4, Keyword.SAMPLER2D, Keyword.VEC2, Keyword.FLOAT);\n\nBuiltinFunction._create(\"texture\", EGenType.GVec4, EGenType.GSampler2D, Keyword.VEC2, Keyword.FLOAT);\nBuiltinFunction._create(\"texture\", EGenType.GVec4, EGenType.GSampler2D, Keyword.VEC2);\nBuiltinFunction._create(\"texture\", EGenType.GVec4, EGenType.GSampler3D, Keyword.VEC3, Keyword.FLOAT);\nBuiltinFunction._create(\"texture\", EGenType.GVec4, EGenType.GSampler3D, Keyword.VEC3);\n\nBuiltinFunction._create(\"texture\", EGenType.GVec4, EGenType.GSamplerCube, Keyword.VEC3, Keyword.FLOAT);\nBuiltinFunction._create(\"texture\", EGenType.GVec4, EGenType.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\", EGenType.GVec4, Keyword.SAMPLER2D_ARRAY, Keyword.VEC3, Keyword.FLOAT);\nBuiltinFunction._create(\"texture\", EGenType.GVec4, Keyword.SAMPLER2D_ARRAY, Keyword.VEC3);\n\nBuiltinFunction._create(\"texture\", Keyword.FLOAT, Keyword.SAMPLER2D_ARRAY_SHADOW, Keyword.VEC4);\n\nBuiltinFunction._create(\"textureProj\", EGenType.GVec4, EGenType.GSampler2D, Keyword.VEC3, Keyword.FLOAT);\nBuiltinFunction._create(\"textureProj\", EGenType.GVec4, EGenType.GSampler2D, Keyword.VEC3);\nBuiltinFunction._create(\"textureProj\", EGenType.GVec4, EGenType.GSampler2D, Keyword.VEC4, Keyword.FLOAT);\nBuiltinFunction._create(\"textureProj\", EGenType.GVec4, EGenType.GSampler2D, Keyword.VEC4);\nBuiltinFunction._create(\"textureProj\", EGenType.GVec4, EGenType.GSampler3D, Keyword.VEC4, Keyword.FLOAT);\nBuiltinFunction._create(\"textureProj\", EGenType.GVec4, EGenType.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\", EGenType.GVec4, EGenType.GSampler2D, Keyword.VEC2, Keyword.FLOAT);\nBuiltinFunction._create(\"textureLod\", EGenType.GVec4, EGenType.GSampler3D, Keyword.VEC3, Keyword.FLOAT);\nBuiltinFunction._create(\"textureLod\", EGenType.GVec4, EGenType.GSamplerCube, Keyword.VEC3, Keyword.FLOAT);\nBuiltinFunction._create(\"textureLod\", Keyword.FLOAT, Keyword.SAMPLER2D_SHADOW, Keyword.VEC3, Keyword.FLOAT);\nBuiltinFunction._create(\"textureLod\", EGenType.GVec4, EGenType.GSampler2DArray, Keyword.VEC3, Keyword.FLOAT);\nBuiltinFunction._create(\"texture2DLodEXT\", EGenType.GVec4, EGenType.GSampler2D, Keyword.VEC2, Keyword.FLOAT);\nBuiltinFunction._create(\"texture2DLodEXT\", EGenType.GVec4, EGenType.GSampler3D, Keyword.VEC3, Keyword.FLOAT);\n\nBuiltinFunction._create(\"textureCube\", Keyword.SAMPLER_CUBE, Keyword.VEC3);\nBuiltinFunction._create(\"textureCube\", Keyword.SAMPLER_CUBE, Keyword.VEC3, Keyword.FLOAT);\nBuiltinFunction._create(\"textureCube\", EGenType.GVec4, EGenType.GSamplerCube, Keyword.VEC3, Keyword.FLOAT);\nBuiltinFunction._create(\"textureCubeLod\", Keyword.SAMPLER_CUBE, Keyword.VEC3, Keyword.FLOAT);\nBuiltinFunction._create(\"textureCubeLodEXT\", EGenType.GVec4, EGenType.GSamplerCube, Keyword.VEC3, Keyword.FLOAT);\n\nBuiltinFunction._create(\n \"textureOffset\",\n EGenType.GVec4,\n EGenType.GSampler2D,\n Keyword.VEC2,\n Keyword.IVEC2,\n Keyword.FLOAT\n);\nBuiltinFunction._create(\"textureOffset\", EGenType.GVec4, EGenType.GSampler2D, Keyword.VEC2, Keyword.IVEC2);\n\nBuiltinFunction._create(\n \"textureOffset\",\n EGenType.GVec4,\n EGenType.GSampler3D,\n Keyword.VEC3,\n Keyword.IVEC3,\n Keyword.FLOAT\n);\nBuiltinFunction._create(\"textureOffset\", EGenType.GVec4, EGenType.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 EGenType.GVec4,\n EGenType.GSampler2DArray,\n Keyword.VEC3,\n Keyword.IVEC2,\n Keyword.FLOAT\n);\nBuiltinFunction._create(\"textureOffset\", EGenType.GVec4, EGenType.GSampler2DArray, Keyword.VEC3, Keyword.IVEC2);\n\nBuiltinFunction._create(\"texelFetch\", EGenType.GVec4, EGenType.GSampler2D, Keyword.IVEC2, Keyword.INT);\nBuiltinFunction._create(\"texelFetch\", EGenType.GVec4, EGenType.GSampler3D, Keyword.IVEC3, Keyword.INT);\nBuiltinFunction._create(\"texelFetch\", EGenType.GVec4, EGenType.GSampler2DArray, Keyword.IVEC3, Keyword.INT);\n\nBuiltinFunction._create(\n \"texelFetchOffset\",\n EGenType.GVec4,\n EGenType.GSampler2D,\n Keyword.IVEC2,\n Keyword.INT,\n Keyword.IVEC2\n);\nBuiltinFunction._create(\n \"texelFetchOffset\",\n EGenType.GVec4,\n EGenType.GSampler3D,\n Keyword.IVEC3,\n Keyword.INT,\n Keyword.IVEC3\n);\nBuiltinFunction._create(\n \"texelFetchOffset\",\n EGenType.GVec4,\n EGenType.GSampler2DArray,\n Keyword.IVEC3,\n Keyword.INT,\n Keyword.IVEC2\n);\n\nBuiltinFunction._create(\n \"textureProjOffset\",\n EGenType.GVec4,\n EGenType.GSampler2D,\n Keyword.VEC3,\n Keyword.IVEC2,\n Keyword.FLOAT\n);\nBuiltinFunction._create(\"textureProjOffset\", EGenType.GVec4, EGenType.GSampler2D, Keyword.VEC3, Keyword.IVEC2);\n\nBuiltinFunction._create(\n \"textureProjOffset\",\n EGenType.GVec4,\n EGenType.GSampler2D,\n Keyword.VEC4,\n Keyword.IVEC2,\n Keyword.FLOAT\n);\nBuiltinFunction._create(\"textureProjOffset\", EGenType.GVec4, EGenType.GSampler2D, Keyword.VEC4, Keyword.IVEC2);\n\nBuiltinFunction._create(\n \"textureProjOffset\",\n EGenType.GVec4,\n EGenType.GSampler3D,\n Keyword.VEC4,\n Keyword.IVEC3,\n Keyword.FLOAT\n);\nBuiltinFunction._create(\"textureProjOffset\", EGenType.GVec4, EGenType.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 EGenType.GVec4,\n EGenType.GSampler2D,\n Keyword.VEC2,\n Keyword.FLOAT,\n Keyword.IVEC2\n);\nBuiltinFunction._create(\n \"textureLodOffset\",\n EGenType.GVec4,\n EGenType.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 EGenType.GVec4,\n EGenType.GSampler2DArray,\n Keyword.VEC3,\n Keyword.FLOAT,\n Keyword.IVEC2\n);\n\nBuiltinFunction._create(\"textureProjLod\", EGenType.GVec4, EGenType.GSampler2D, Keyword.VEC3, Keyword.FLOAT);\nBuiltinFunction._create(\"textureProjLod\", EGenType.GVec4, EGenType.GSampler2D, Keyword.VEC4, Keyword.FLOAT);\nBuiltinFunction._create(\"textureProjLod\", EGenType.GVec4, EGenType.GSampler3D, Keyword.VEC4, Keyword.FLOAT);\nBuiltinFunction._create(\"textureProjLod\", Keyword.FLOAT, Keyword.SAMPLER2D_SHADOW, Keyword.VEC4, Keyword.FLOAT);\n\nBuiltinFunction._create(\n \"textureProjLodOffset\",\n EGenType.GVec4,\n EGenType.GSampler2D,\n Keyword.VEC3,\n Keyword.FLOAT,\n Keyword.IVEC2\n);\nBuiltinFunction._create(\n \"textureProjLodOffset\",\n EGenType.GVec4,\n EGenType.GSampler2D,\n Keyword.VEC4,\n Keyword.FLOAT,\n Keyword.IVEC2\n);\nBuiltinFunction._create(\n \"textureProjLodOffset\",\n EGenType.GVec4,\n EGenType.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(\"textureGrad\", EGenType.GVec4, EGenType.GSampler2D, Keyword.VEC2, Keyword.VEC2, Keyword.VEC2);\nBuiltinFunction._create(\"textureGrad\", EGenType.GVec4, EGenType.GSampler3D, Keyword.VEC3, Keyword.VEC3, Keyword.VEC3);\nBuiltinFunction._create(\"textureGrad\", EGenType.GVec4, EGenType.GSamplerCube, Keyword.VEC3, Keyword.VEC3, Keyword.VEC3);\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 EGenType.GVec4,\n EGenType.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 EGenType.GVec4,\n EGenType.GSampler2D,\n Keyword.VEC2,\n Keyword.VEC2,\n Keyword.VEC2,\n Keyword.IVEC2\n);\nBuiltinFunction._create(\n \"textureGradOffset\",\n EGenType.GVec4,\n EGenType.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 EGenType.GVec4,\n EGenType.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 EGenType.GVec4,\n EGenType.GSampler2D,\n Keyword.VEC3,\n Keyword.VEC2,\n Keyword.VEC2\n);\nBuiltinFunction._create(\n \"textureProjGrad\",\n EGenType.GVec4,\n EGenType.GSampler2D,\n Keyword.VEC4,\n Keyword.VEC2,\n Keyword.VEC2\n);\nBuiltinFunction._create(\n \"textureProjGrad\",\n EGenType.GVec4,\n EGenType.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 EGenType.GVec4,\n EGenType.GSampler2D,\n Keyword.VEC3,\n Keyword.VEC2,\n Keyword.VEC2,\n Keyword.IVEC2\n);\nBuiltinFunction._create(\n \"textureProjGradOffset\",\n EGenType.GVec4,\n EGenType.GSampler2D,\n Keyword.VEC4,\n Keyword.VEC2,\n Keyword.VEC2,\n Keyword.IVEC2\n);\nBuiltinFunction._create(\n \"textureProjGradOffset\",\n EGenType.GVec4,\n EGenType.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._createWithScop(\"dFdx\", EGenType.GenType, EShaderStage.FRAGMENT, EGenType.GenType);\nBuiltinFunction._createWithScop(\"dFdy\", EGenType.GenType, EShaderStage.FRAGMENT, EGenType.GenType);\nBuiltinFunction._createWithScop(\"fwidth\", EGenType.GenType, EShaderStage.FRAGMENT, EGenType.GenType);\n","import { GalaceanDataType } from \"../../common\";\nimport { Keyword } from \"../../common/enums/Keyword\";\nimport { EShaderStage } from \"../../common/enums/ShaderStage\";\n\nexport const BuiltinVariableTable: Map<string, BuiltinVariable> = new Map();\n\nexport class BuiltinVariable {\n type: GalaceanDataType;\n lexeme: string;\n scope: EShaderStage;\n\n private constructor(type: GalaceanDataType, lexeme: string, scope: EShaderStage) {\n this.type = type;\n this.lexeme = lexeme;\n this.scope = scope;\n }\n\n static createVariable(lexeme: string, type: GalaceanDataType, scope = EShaderStage.ALL) {\n const item = new BuiltinVariable(type, lexeme, scope);\n BuiltinVariableTable.set(lexeme, item);\n }\n\n static getVar(ident: string): BuiltinVariable {\n return BuiltinVariableTable.get(ident);\n }\n}\n\nBuiltinVariable.createVariable(\"gl_VertexID\", Keyword.INT, EShaderStage.VERTEX);\nBuiltinVariable.createVariable(\"gl_InstanceID\", Keyword.INT, EShaderStage.VERTEX);\nBuiltinVariable.createVariable(\"gl_Position\", Keyword.VEC4, EShaderStage.VERTEX);\nBuiltinVariable.createVariable(\"gl_PointSize\", Keyword.FLOAT, EShaderStage.VERTEX);\n\nBuiltinVariable.createVariable(\"gl_FragCoord\", Keyword.VEC4, EShaderStage.FRAGMENT);\nBuiltinVariable.createVariable(\"gl_FrontFacing\", Keyword.BOOL, EShaderStage.FRAGMENT);\nBuiltinVariable.createVariable(\"gl_FragDepth\", Keyword.FLOAT, EShaderStage.FRAGMENT);\nBuiltinVariable.createVariable(\"gl_PointCoord\", Keyword.VEC2, EShaderStage.FRAGMENT);\nBuiltinVariable.createVariable(\"gl_FragColor\", Keyword.VEC4, EShaderStage.FRAGMENT);\nBuiltinVariable.createVariable(\"gl_FragData\", Keyword.VEC4_ARRAY, EShaderStage.FRAGMENT);\n\nBuiltinVariable.createVariable(\"gl_MaxVertexAttribs\", Keyword.INT);\nBuiltinVariable.createVariable(\"gl_MaxVertexUniformVectors\", Keyword.INT);\nBuiltinVariable.createVariable(\"gl_MaxVertexOutputVectors\", Keyword.INT);\nBuiltinVariable.createVariable(\"gl_MaxFragmentInputVectors\", Keyword.INT);\nBuiltinVariable.createVariable(\"gl_MaxVertexTextureImageUnits\", Keyword.INT);\nBuiltinVariable.createVariable(\"gl_MaxCombinedTextureImageUnits\", Keyword.INT);\nBuiltinVariable.createVariable(\"gl_MaxTextureImageUnits\", Keyword.INT);\nBuiltinVariable.createVariable(\"gl_MaxFragmentUniformVectors\", Keyword.INT);\nBuiltinVariable.createVariable(\"gl_MaxDrawBuffers\", Keyword.INT);\nBuiltinVariable.createVariable(\"gl_MinProgramTexelOffset\", Keyword.INT);\nBuiltinVariable.createVariable(\"gl_MaxProgramTexelOffset\", Keyword.INT);\n","import { Logger } from \"@galacean/engine\";\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","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 { ASTNode } from \"../AST\";\nimport { SymbolDataType } from \"./SymbolDataType\";\nimport { ESymbolType, SymbolInfo } from \"./SymbolInfo\";\n\nexport class FnSymbol extends SymbolInfo {\n declare astNode: ASTNode.FunctionDefinition;\n\n constructor(lexeme: string, astNode: ASTNode.FunctionDefinition) {\n const type = new SymbolDataType(\n astNode.protoType.returnType.type,\n astNode.protoType.returnType.typeSpecifier.lexeme\n );\n super(lexeme, ESymbolType.FN, astNode, type);\n }\n}\n","import { ASTNode } from \"../AST\";\nimport { ESymbolType, SymbolInfo } from \"./SymbolInfo\";\n\nexport class StructSymbol extends SymbolInfo {\n declare astNode: ASTNode.StructSpecifier;\n\n constructor(lexeme: string, astNode: ASTNode.StructSpecifier) {\n super(lexeme, ESymbolType.STRUCT, astNode);\n }\n}\n","import { ASTNode } from \"../AST\";\nimport { SymbolDataType } from \"./SymbolDataType\";\nimport { ESymbolType, SymbolInfo } from \"./SymbolInfo\";\n\nexport class VarSymbol extends SymbolInfo {\n declare astNode:\n | ASTNode.Initializer\n | ASTNode.ParameterDeclarator\n | ASTNode.InitDeclaratorList\n | ASTNode.VariableDeclaration;\n\n readonly isGlobalVariable: boolean;\n\n constructor(\n ident: string,\n dataType: SymbolDataType,\n isGlobalVariable: boolean,\n initAst:\n | ASTNode.Initializer\n | ASTNode.ParameterDeclarator\n | ASTNode.InitDeclaratorList\n | ASTNode.VariableDeclaration\n ) {\n super(ident, ESymbolType.VAR, initAst, dataType);\n this.isGlobalVariable = isGlobalVariable;\n }\n}\n","import { SymbolInfo, SymbolTable } from \"../parser/symbolTable\";\nimport { ASTNode } from \"./AST\";\n\nexport class ShaderData {\n symbolTable: SymbolTable<SymbolInfo>;\n\n vertexMain: ASTNode.FunctionDefinition;\n fragmentMain: ASTNode.FunctionDefinition;\n\n globalPrecisions: ASTNode.PrecisionSpecifier[] = [];\n\n globalMacroDeclarations: ASTNode.GlobalDeclaration[] = [];\n\n getOuterGlobalMacroDeclarations(): ASTNode.GlobalDeclaration[] {\n return this.globalMacroDeclarations.filter((node) => node.parent instanceof ASTNode.GLShaderProgram);\n }\n}\n","import { ShaderRange } from \"../common\";\nimport { SymbolTable } from \"../common/SymbolTable\";\nimport { SymbolTableStack } from \"../common/SymbolTableStack\";\nimport { GSError, GSErrorName } from \"../GSError\";\nimport { SymbolInfo } from \"../parser/symbolTable\";\nimport { ShaderLab } from \"../ShaderLab\";\nimport { ASTNode, TreeNode } from \"./AST\";\nimport { ShaderData } from \"./ShaderInfo\";\nimport { NodeChild } from \"./types\";\n\nimport { Logger } from \"@galacean/engine\";\nimport { MacroDefineList } from \"../Preprocessor\";\n\nexport type TranslationRule<T = any> = (sa: SemanticAnalyzer, ...tokens: NodeChild[]) => T;\n\n/**\n * @internal\n * The semantic analyzer of `ShaderLab` compiler.\n * - Build symbol table\n * - Static analysis\n */\nexport default class SemanticAnalyzer {\n /**\n * @internal\n */\n static _lookupSymbol: SymbolInfo = new SymbolInfo(\"\", null);\n\n semanticStack: TreeNode[] = [];\n acceptRule?: TranslationRule = undefined;\n symbolTableStack: SymbolTableStack<SymbolInfo, SymbolTable<SymbolInfo>> = new SymbolTableStack();\n curFunctionInfo: {\n header?: ASTNode.FunctionDeclarator;\n returnStatement?: ASTNode.JumpStatement;\n } = {};\n private _shaderData = new ShaderData();\n private _translationRuleTable: Map<number /** production id */, TranslationRule> = new Map();\n\n private _macroDefineList: MacroDefineList;\n\n // #if _VERBOSE\n readonly errors: Error[] = [];\n // #endif\n\n get shaderData() {\n return this._shaderData;\n }\n\n get macroDefineList(): MacroDefineList {\n return this._macroDefineList;\n }\n\n constructor() {\n this.pushScope();\n }\n\n reset(macroDefineList: MacroDefineList) {\n this._macroDefineList = macroDefineList;\n this.semanticStack.length = 0;\n this._shaderData = new ShaderData();\n this.symbolTableStack.clear();\n this.pushScope();\n // #if _VERBOSE\n this.errors.length = 0;\n // #endif\n }\n\n pushScope() {\n this.symbolTableStack.pushScope(new SymbolTable<SymbolInfo>());\n }\n\n popScope() {\n return this.symbolTableStack.popScope();\n }\n\n addTranslationRule(pid: number, rule: TranslationRule) {\n this._translationRuleTable.set(pid, rule);\n }\n\n getTranslationRule(pid: number) {\n return this._translationRuleTable.get(pid);\n }\n\n reportError(loc: ShaderRange, message: string): void {\n // #if _VERBOSE\n this.errors.push(new GSError(GSErrorName.CompilationError, message, loc, ShaderLab._processingPassText));\n // #else\n Logger.error(message);\n // #endif\n }\n\n reportWarning(loc: ShaderRange, message: string): void {\n Logger.warn(new GSError(GSErrorName.CompilationWarn, message, loc, ShaderLab._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 { 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 { ShaderLab } from \"../ShaderLab\";\nimport { ShaderLabUtils } from \"../ShaderLabUtils\";\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 _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 }\n\n isAttributeStruct(type: string) {\n return this.attributeStructs.findIndex((item) => item.ident!.lexeme === type) !== -1;\n }\n\n isVaryingStruct(type: string) {\n return this.varyingStructs.findIndex((item) => item.ident!.lexeme === type) !== -1;\n }\n\n isMRTStruct(type: string) {\n return this.mrtStructs.findIndex((item) => item.ident!.lexeme === type) !== -1;\n }\n\n referenceAttribute(ident: BaseToken): Error | void {\n const lexeme = ident.lexeme;\n if (this._referencedAttributeList[lexeme]) return;\n\n const props = this.attributeList.filter((item) => item.ident.lexeme === lexeme);\n if (!props.length) {\n return ShaderLabUtils.createGSError(\n `referenced attribute not found: ${lexeme}`,\n GSErrorName.CompilationError,\n ShaderLab._processingPassText,\n ident.location\n );\n }\n this._referencedAttributeList[lexeme] = props;\n }\n\n referenceVarying(ident: BaseToken): Error | void {\n const lexeme = ident.lexeme;\n if (this._referencedVaryingList[lexeme]) return;\n\n const props = this.varyingList.filter((item) => item.ident.lexeme === lexeme);\n if (!props.length) {\n return ShaderLabUtils.createGSError(\n `referenced varying not found: ${lexeme}`,\n GSErrorName.CompilationError,\n ShaderLab._processingPassText,\n ident.location\n );\n }\n this._referencedVaryingList[lexeme] = props;\n }\n\n referenceMRTProp(ident: BaseToken): Error | void {\n const lexeme = ident.lexeme;\n if (this._referencedMRTList[lexeme]) return;\n\n const props = this.mrtList.filter((item) => item.ident.lexeme === lexeme);\n if (!props.length) {\n return ShaderLabUtils.createGSError(\n `referenced mrt not found: ${lexeme}`,\n GSErrorName.CompilationError,\n ShaderLab._processingPassText,\n ident.location\n );\n }\n this._referencedMRTList[lexeme] = props;\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","import { IPoolElement } from \"@galacean/engine\";\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 { ShaderLab } from \"../ShaderLab\";\nimport { VisitorContext } from \"./VisitorContext\";\n// #if _VERBOSE\nimport { GSError } from \"../GSError\";\n// #endif\nimport { Logger, ReturnableObjectPool } from \"@galacean/engine\";\nimport { Keyword } from \"../common/enums/Keyword\";\nimport { TempArray } from \"../TempArray\";\nimport { ICodeSegment } from \"./types\";\n\n/**\n * @internal\n * The code generator\n */\nexport abstract class CodeGenVisitor {\n // #if _VERBOSE\n readonly errors: Error[] = [];\n // #endif\n\n abstract getAttributeProp(prop: StructProp): string;\n abstract getVaryingProp(prop: StructProp): string;\n abstract getMRTProp(prop: StructProp): string;\n\n protected static _tmpArrayPool = new ReturnableObjectPool(TempArray<string>, 10);\n\n defaultCodeGen(children: NodeChild[]) {\n const pool = CodeGenVisitor._tmpArrayPool;\n let ret = pool.get();\n ret.dispose();\n for (const child of children) {\n if (child instanceof BaseToken) {\n 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 if (context.isAttributeStruct(<string>postExpr.type)) {\n const error = context.referenceAttribute(prop);\n // #if _VERBOSE\n if (error) {\n this.errors.push(<GSError>error);\n }\n // #endif\n return prop.lexeme;\n } else if (context.isVaryingStruct(<string>postExpr.type)) {\n const error = context.referenceVarying(prop);\n // #if _VERBOSE\n if (error) {\n this.errors.push(<GSError>error);\n }\n // #endif\n return prop.lexeme;\n } else if (context.isMRTStruct(<string>postExpr.type)) {\n const error = context.referenceMRTProp(prop);\n // #if _VERBOSE\n if (error) {\n this.errors.push(<GSError>error);\n }\n // #endif\n return prop.lexeme;\n }\n\n return `${postExpr.codeGen(this)}.${prop.lexeme}`;\n } else {\n return `${postExpr.codeGen(this)}.${prop.codeGen(this)}`;\n }\n } else if (derivationLength === 4) {\n const identNode = children[0] as ASTNode.PostfixExpression;\n const indexNode = children[2] as ASTNode.Expression;\n const identLexeme = identNode.codeGen(this);\n const indexLexeme = indexNode.codeGen(this);\n if (identLexeme === \"gl_FragData\") {\n this._reportError(identNode.location, \"Please use MRT struct instead of gl_FragData.\");\n }\n return `${identLexeme}[${indexLexeme}]`;\n }\n\n return this.defaultCodeGen(node.children);\n }\n\n visitVariableIdentifier(node: ASTNode.VariableIdentifier): string {\n for (let name of node.referenceGlobalSymbolNames) {\n VisitorContext.context.referenceGlobal(name, ESymbolType.Any);\n }\n\n return node.getLexeme(this);\n }\n\n visitFunctionCall(node: ASTNode.FunctionCall): string {\n const call = node.children[0] as ASTNode.FunctionCallGeneric;\n if (call.fnSymbol instanceof FnSymbol) {\n VisitorContext.context.referenceGlobal(call.fnSymbol.ident, ESymbolType.FN);\n\n const paramList = call.children[2];\n if (paramList instanceof ASTNode.FunctionCallParameterList) {\n const astNodes = paramList.paramNodes;\n const paramInfoList = call.fnSymbol.astNode.protoType.parameterList;\n\n const params = astNodes.filter((_, i) => {\n const typeInfo = paramInfoList?.[i]?.typeInfo;\n return (\n !typeInfo ||\n (!VisitorContext.context.isAttributeStruct(typeInfo.typeLexeme) &&\n !VisitorContext.context.isVaryingStruct(typeInfo.typeLexeme) &&\n !VisitorContext.context.isMRTStruct(typeInfo.typeLexeme))\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\n const params = astNodes.filter((node) => {\n if (node instanceof ASTNode.AssignmentExpression) {\n const variableParam = ParserUtils.unwrapNodeByType<ASTNode.VariableIdentifier>(\n node,\n NoneTerminal.variable_identifier\n );\n if (\n variableParam &&\n typeof variableParam.typeInfo === \"string\" &&\n (VisitorContext.context.isAttributeStruct(variableParam.typeInfo) ||\n VisitorContext.context.isVaryingStruct(variableParam.typeInfo) ||\n VisitorContext.context.isMRTStruct(variableParam.typeInfo))\n ) {\n return false;\n }\n }\n\n return true;\n });\n\n let paramsCode = \"\";\n for (let i = 0, length = params.length; i < length; i++) {\n const node = params[i];\n const code = node.codeGen(this);\n\n if (node 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 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 VisitorContext.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 params = node.parameterInfoList.filter(\n (item) =>\n !item.typeInfo ||\n (!VisitorContext.context.isAttributeStruct(item.typeInfo.typeLexeme) &&\n !VisitorContext.context.isVaryingStruct(item.typeInfo.typeLexeme) &&\n !VisitorContext.context.isMRTStruct(item.typeInfo.typeLexeme))\n );\n\n let out = \"\";\n for (let i = 0, length = params.length; i < length; i++) {\n const item = params[i];\n const astNode = item.astNode;\n const code = astNode.codeGen(this);\n if (astNode instanceof ASTNode.MacroParamBlock || i === 0) {\n out += code;\n } else {\n out += `, ${code}`;\n }\n }\n\n return out;\n }\n\n visitFunctionHeader(node: ASTNode.FunctionHeader): string {\n const returnType = node.returnType.typeSpecifier.lexeme;\n if (VisitorContext.context.isVaryingStruct(returnType)) {\n return `void ${node.ident.lexeme}(`;\n }\n return this.defaultCodeGen(node.children);\n }\n\n visitJumpStatement(node: ASTNode.JumpStatement): string {\n const children = node.children;\n const cmd = children[0] as BaseToken;\n if (cmd.type === Keyword.RETURN) {\n const expr = children[1];\n if (expr instanceof ASTNode.Expression) {\n const returnVar = ParserUtils.unwrapNodeByType<ASTNode.VariableIdentifier>(\n expr,\n NoneTerminal.variable_identifier\n );\n if (VisitorContext.context.isVaryingStruct(<string>returnVar?.typeInfo)) {\n return \"\";\n }\n const returnFnCall = ParserUtils.unwrapNodeByType<ASTNode.FunctionCall>(expr, NoneTerminal.function_call);\n if (VisitorContext.context.isVaryingStruct(<string>returnFnCall?.type)) {\n return `${expr.codeGen(this)};`;\n }\n }\n }\n return this.defaultCodeGen(children);\n }\n\n visitFunctionIdentifier(node: ASTNode.FunctionIdentifier): string {\n return this.defaultCodeGen(node.children);\n }\n\n visitStructSpecifier(node: ASTNode.StructSpecifier): string {\n const context = VisitorContext.context;\n const { varyingStructs, attributeStructs, mrtStructs } = context;\n const isVaryingStruct = varyingStructs.indexOf(node) !== -1;\n const isAttributeStruct = attributeStructs.indexOf(node) !== -1;\n const isMRTStruct = mrtStructs.indexOf(node) !== -1;\n\n if (isVaryingStruct && isAttributeStruct) {\n this._reportError(node.location, \"cannot use same struct as Varying and Attribute\");\n }\n\n if (isVaryingStruct && isMRTStruct) {\n this._reportError(node.location, \"cannot use same struct as Varying and MRT\");\n }\n\n if (isAttributeStruct && isMRTStruct) {\n this._reportError(node.location, \"cannot use same struct as Attribute and MRT\");\n }\n\n if (isVaryingStruct || isAttributeStruct || isMRTStruct) {\n let result: ICodeSegment[] = [];\n\n result.push(\n ...node.macroExpressions.map((item) => ({\n text: item instanceof BaseToken ? item.lexeme : item.codeGen(this),\n index: item.location.start.index\n }))\n );\n\n for (const prop of node.propList) {\n const name = prop.ident.lexeme;\n if (isVaryingStruct && context._referencedVaryingList[name]?.indexOf(prop) >= 0) {\n result.push({\n text: `${this.getVaryingProp(prop)}\\n`,\n index: prop.ident.location.start.index\n });\n } else if (isAttributeStruct && context._referencedAttributeList[name]?.indexOf(prop) >= 0) {\n result.push({\n text: `${this.getAttributeProp(prop)}\\n`,\n index: prop.ident.location.start.index\n });\n } else if (isMRTStruct && context._referencedMRTList[name]?.indexOf(prop) >= 0) {\n result.push({\n text: `${this.getMRTProp(prop)}\\n`,\n index: prop.ident.location.start.index\n });\n }\n }\n\n const text = result\n .sort((a, b) => a.index - b.index)\n .map((item) => item.text)\n .join(\"\");\n\n return text;\n } else {\n return this.defaultCodeGen(node.children);\n }\n }\n\n visitFunctionDefinition(fnNode: ASTNode.FunctionDefinition): string {\n const fnName = fnNode.protoType.ident.lexeme;\n const context = VisitorContext.context;\n\n if (fnName == context.stageEntry) {\n const statements = fnNode.statements.codeGen(this);\n return `void main() ${statements}`;\n } else {\n return this.defaultCodeGen(fnNode.children);\n }\n }\n\n protected _reportError(loc: ShaderRange | ShaderPosition, message: string): void {\n // #if _VERBOSE\n this.errors.push(new GSError(GSErrorName.CompilationError, message, loc, ShaderLab._processingPassText));\n // #else\n Logger.error(message);\n // #endif\n }\n}\n","import { 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 { ShaderData } from \"../parser/ShaderInfo\";\nimport { ESymbolType, FnSymbol, StructSymbol, SymbolInfo } from \"../parser/symbolTable\";\nimport { CodeGenVisitor } from \"./CodeGenVisitor\";\nimport { ICodeSegment } from \"./types\";\nimport { 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 VisitorContext.context._passSymbolTable = shaderData.symbolTable;\n\n const outerGlobalMacroDeclarations = shaderData.getOuterGlobalMacroDeclarations();\n\n return {\n vertex: this._vertexMain(vertexEntry, shaderData, outerGlobalMacroDeclarations),\n fragment: this._fragmentMain(fragmentEntry, shaderData, outerGlobalMacroDeclarations)\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 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 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 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 _getGlobalSymbol(out: ICodeSegment[]): void {\n const { _referencedGlobals } = VisitorContext.context;\n\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; i < symbols.length; i++) {\n const sm = symbols[i];\n const text = sm.astNode.codeGen(this) + (sm.type === ESymbolType.VAR ? \";\" : \"\");\n if (!sm.isInMacroBranch) {\n out.push({\n text,\n index: sm.astNode.location.start.index\n });\n }\n }\n }\n\n if (Object.keys(_referencedGlobals).length !== lastLength) {\n this._getGlobalSymbol(out);\n }\n }\n\n private _getCustomStruct(structNodes: ASTNode.StructSpecifier[], out: ICodeSegment[]): void {\n for (const node of structNodes) {\n const text = node.codeGen(this);\n\n if (!node.isInMacroBranch) {\n out.push({ text, index: node.location.start.index });\n }\n }\n }\n\n private _getGlobalMacroDeclarations(macros: ASTNode.GlobalDeclaration[], out: ICodeSegment[]): void {\n const context = VisitorContext.context;\n const referencedGlobals = context._referencedGlobals;\n const referencedGlobalMacroASTs = context._referencedGlobalMacroASTs;\n referencedGlobalMacroASTs.length = 0;\n\n for (const symbols of Object.values(referencedGlobals)) {\n for (const symbol of symbols) {\n if (symbol.isInMacroBranch) {\n referencedGlobalMacroASTs.push(symbol.astNode);\n }\n }\n }\n\n for (const macro of macros) {\n let text: string;\n const child = macro.children[0];\n\n if (child instanceof ASTNode.GlobalMacroIfStatement) {\n let result: ICodeSegment[] = [];\n result.push(\n ...macro.macroExpressions.map((item) => ({\n text: item instanceof BaseToken ? item.lexeme : item.codeGen(this),\n index: item.location.start.index\n }))\n );\n\n this._visitGlobalMacroIfStatement(child, result);\n\n text = result\n .sort((a, b) => a.index - b.index)\n .map((item) => item.text)\n .join(\"\\n\");\n } else {\n text = macro.codeGen(this);\n }\n\n out.push({\n text,\n index: macro.location.start.index\n });\n }\n }\n\n private _visitGlobalMacroIfStatement(node: TreeNode, out: ICodeSegment[]): void {\n const children = node.children;\n for (let i = 0; i < children.length; i++) {\n const child = children[i];\n if (child instanceof ASTNode.PrecisionSpecifier) {\n out.push({\n text: child.codeGen(this),\n index: child.location.start.index\n });\n } else if (child instanceof ASTNode.FunctionDefinition) {\n if (VisitorContext.context._referencedGlobalMacroASTs.indexOf(child) !== -1) {\n out.push({\n text: child.getCache(), // code has generated in `_getGlobalSymbol`\n index: child.location.start.index\n });\n }\n } else if (child instanceof ASTNode.StructSpecifier) {\n const context = VisitorContext.context;\n const stage = context.stage;\n if (\n VisitorContext.context._referencedGlobalMacroASTs.indexOf(child) !== -1 ||\n (stage === EShaderStage.VERTEX\n ? context.isAttributeStruct(child.ident?.lexeme) || context.isVaryingStruct(child.ident?.lexeme)\n : context.isVaryingStruct(child.ident?.lexeme) || context.isMRTStruct(child.ident?.lexeme))\n ) {\n out.push({\n text: child.getCache(), // code has generated in `_getGlobalSymbol` or `_getCustomStruct`\n index: child.location.start.index\n });\n }\n } else if (child instanceof ASTNode.VariableDeclarationList) {\n const variableDeclarations = child.variableDeclarations;\n for (let i = 0; i < variableDeclarations.length; i++) {\n const variableDeclaration = variableDeclarations[i];\n if (VisitorContext.context._referencedGlobalMacroASTs.indexOf(variableDeclaration) !== -1) {\n out.push({\n text: variableDeclaration.getCache() + \";\", // code has generated in `_getGlobalSymbol`\n index: variableDeclaration.location.start.index\n });\n }\n }\n }\n\n if (child instanceof TreeNode) {\n this._visitGlobalMacroIfStatement(child, out);\n }\n }\n }\n}\n","import { BaseToken } from \"../common/BaseToken\";\nimport { ASTNode } from \"../parser/AST\";\nimport { StructProp } from \"../parser/types\";\nimport { GLESVisitor } from \"./GLESVisitor\";\nimport { VisitorContext } from \"./VisitorContext\";\n\nexport class GLES100Visitor extends GLESVisitor {\n private static _singleton: GLES100Visitor;\n static getVisitor(): GLES100Visitor {\n if (!this._singleton) {\n this._singleton = new GLES100Visitor();\n }\n return this._singleton;\n }\n\n override getAttributeProp(prop: StructProp): string {\n return `attribute ${prop.typeInfo.typeLexeme} ${prop.ident.lexeme};`;\n }\n\n override getVaryingProp(prop: StructProp): string {\n return `varying ${prop.typeInfo.typeLexeme} ${prop.ident.lexeme};`;\n }\n\n override getMRTProp(): string {\n return null;\n }\n\n override visitPostfixExpression(node: ASTNode.PostfixExpression): string {\n const { children } = node;\n const postExpr = children[0];\n const { context } = VisitorContext;\n if (postExpr instanceof ASTNode.PostfixExpression && context.isMRTStruct(<string>postExpr.type)) {\n const propReferenced = children[2] as BaseToken;\n const prop = context.mrtList.find((item) => item.ident.lexeme === propReferenced.lexeme);\n if (!prop) {\n this._reportError(propReferenced.location, `not found mrt property: ${propReferenced.lexeme}`);\n return \"\";\n }\n return `gl_FragData[${prop.mrtIndex!}]`;\n }\n return super.visitPostfixExpression(node);\n }\n\n override visitJumpStatement(node: ASTNode.JumpStatement): string {\n if (node.isFragReturnStatement) {\n if (VisitorContext.context.mrtStructs.length) {\n return \"\";\n }\n const expression = node.children[1] as ASTNode.Expression;\n return `gl_FragColor = ${expression.codeGen(this)}`;\n }\n return super.visitJumpStatement(node);\n }\n}\n","import { EShaderStage } from \"../common/enums/ShaderStage\";\nimport { ASTNode } from \"../parser/AST\";\nimport { ShaderData } from \"../parser/ShaderInfo\";\nimport { StructProp } from \"../parser/types\";\nimport { GLESVisitor } from \"./GLESVisitor\";\nimport { ICodeSegment } from \"./types\";\nimport { VisitorContext } from \"./VisitorContext\";\n\nconst V3_GL_FragColor = \"GS_glFragColor\";\n\nexport class GLES300Visitor extends GLESVisitor {\n private static _singleton: GLES300Visitor;\n static getVisitor(): GLES300Visitor {\n if (!this._singleton) {\n this._singleton = new GLES300Visitor();\n }\n return this._singleton;\n }\n\n private _otherCodeArray: ICodeSegment[] = [];\n private _fragColorVariableRegistered = false;\n\n override reset(): void {\n super.reset();\n\n this._otherCodeArray.length = 0;\n this._fragColorVariableRegistered = false;\n }\n\n override getOtherGlobal(data: ShaderData, out: ICodeSegment[]): void {\n super.getOtherGlobal(data, out);\n\n for (let i = 0, n = this._otherCodeArray.length; i < n; i++) {\n out.push(this._otherCodeArray[i]);\n }\n }\n\n override getAttributeProp(prop: StructProp): string {\n return `in ${prop.typeInfo.typeLexeme} ${prop.ident.lexeme};`;\n }\n\n override getVaryingProp(prop: StructProp): string {\n const qualifier = VisitorContext.context.stage === EShaderStage.FRAGMENT ? \"in\" : \"out\";\n return `${qualifier} ${prop.typeInfo.typeLexeme} ${prop.ident.lexeme};`;\n }\n\n override getMRTProp(prop: StructProp): string {\n return `layout(location = ${prop.mrtIndex}) out vec4 ${prop.ident.lexeme};`;\n }\n\n override visitFunctionIdentifier(node: ASTNode.FunctionIdentifier): string {\n const children = node.children;\n const typeSpecifier = children[0] as ASTNode.TypeSpecifier;\n if (typeSpecifier.children.length !== 1) {\n return this.defaultCodeGen(children);\n }\n let ident = node.lexeme;\n switch (node.ident) {\n case \"texture2D\":\n case \"textureCube\":\n ident = \"texture\";\n break;\n case \"texture2DProj\":\n ident = \"textureProj\";\n break;\n case \"texture2DLodEXT\":\n case \"textureCubeLodEXT\":\n ident = \"textureLod\";\n break;\n case \"texture2DGradEXT\":\n case \"textureCubeGradEXT\":\n ident = \"textureGrad\";\n break;\n case \"texture2DProjLodEXT\":\n ident = \"textureProjLod\";\n break;\n case \"texture2DProjGradEXT\":\n ident = \"textureProjGrad\";\n break;\n case \"gl_FragDepthEXT\":\n ident = \"gl_FragDepth\";\n break;\n }\n return ident;\n }\n\n override visitVariableIdentifier(node: ASTNode.VariableIdentifier): string {\n const { context } = VisitorContext;\n if (context.stage === EShaderStage.FRAGMENT && node.getLexeme(this) === \"gl_FragColor\") {\n if (context.mrtStructs.length) {\n this._reportError(node.location, \"gl_FragColor cannot be used with MRT (Multiple Render Targets).\");\n return;\n }\n this._registerFragColorVariable();\n return V3_GL_FragColor;\n }\n return super.visitVariableIdentifier(node);\n }\n\n override visitJumpStatement(node: ASTNode.JumpStatement): string {\n if (node.isFragReturnStatement) {\n if (VisitorContext.context.mrtStructs.length) {\n return \"\";\n }\n this._registerFragColorVariable();\n\n const expression = node.children[1] as ASTNode.Expression;\n return `${V3_GL_FragColor} = ${expression.codeGen(this)};`;\n }\n return super.visitJumpStatement(node);\n }\n\n private _registerFragColorVariable() {\n if (this._fragColorVariableRegistered) return;\n this._otherCodeArray.push({\n text: `out vec4 ${V3_GL_FragColor};`,\n index: 0\n });\n this._fragColorVariableRegistered = true;\n }\n}\n","import { Logger } from \"@galacean/engine\";\nimport { ShaderPosition, ShaderRange } from \".\";\nimport { GSErrorName } from \"../GSError\";\nimport { ShaderLab } from \"../ShaderLab\";\nimport { ShaderLabUtils } from \"../ShaderLabUtils\";\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 // 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 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 ShaderLab.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 // Skip whitespace\n while (index < length && BaseLexer.isWhiteSpaceChar(source.charCodeAt(index), true)) {\n index++;\n }\n\n // Check for comments: 47 is '/'\n if (index + 1 >= length || source.charCodeAt(index) !== 47) break;\n\n const nextChar = source.charCodeAt(index + 1);\n if (nextChar === 47) {\n // Single line comment: 10 is '\\n', 13 is '\\r'\n index += 2;\n while (index < length) {\n const charCode = source.charCodeAt(index);\n if (charCode === 10 || charCode === 13) break;\n index++;\n }\n } else if (nextChar === 42) {\n // Multi-line comment: 42 is '*'\n index += 2;\n while (index + 1 < length && !(source.charCodeAt(index) === 42 && source.charCodeAt(index + 1) === 47)) {\n index++;\n }\n index += 2; // Skip '*/'\n } else {\n break; // Not a comment, stop\n }\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 = ShaderLabUtils.createGSError(msgs.join(\" \"), GSErrorName.ScannerError, this._source, pos);\n // #if _VERBOSE\n Logger.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, EOF } from \"../common/BaseToken\";\nimport { Keyword } from \"../common/enums/Keyword\";\nimport { MacroDefineList } from \"../Preprocessor\";\nimport { ShaderLab } from \"../ShaderLab\";\n\n/**\n * The Lexer of ShaderLab 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 private _needScanMacroConditionExpression = false;\n\n *tokenize() {\n while (!this.isEnd()) {\n yield this.scanToken();\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 this.skipCommentsAndSpace();\n if (this.isEnd()) {\n return EOF;\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.ADD_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 = ShaderLab.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 while (this.getCurChar() !== \"\\n\" && !this.isEnd()) {\n outBuffer.push(this.getCurChar());\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 it is a macro definition or conditional expression, we need to skip the rest of the line\n if (word === \"#define\") {\n this._scanUtilBreakLine(buffer);\n const word = buffer.join(\"\") + \"\\n\";\n token.set(Keyword.MACRO_DEFINE_EXPRESSION, word, start);\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 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.macroDefineList[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 private _scanNum(): BaseToken {\n const buffer: string[] = [];\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 {\n 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 {\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\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","function _type_of(obj) {\n \"@swc/helpers - typeof\";\n\n return obj && typeof Symbol !== \"undefined\" && obj.constructor === Symbol ? \"symbol\" : typeof obj;\n}\nexport { _type_of as _ };\n","import { ShaderRange } from \"../common\";\nimport { BaseToken } from \"../common/BaseToken\";\nimport { ShaderLabUtils } from \"../ShaderLabUtils\";\n// #if _VERBOSE\nimport { GSErrorName } from \"../GSError\";\n// #endif\n\nexport class MacroDefine {\n private _replaceRegex?: RegExp;\n private readonly _argsLexemes?: string[];\n\n get isFunction(): boolean {\n return !!this.args;\n }\n\n constructor(\n public readonly macro: BaseToken,\n public readonly body?: BaseToken,\n public readonly location?: ShaderRange,\n public readonly args?: BaseToken[]\n ) {\n if (args?.length > 0) {\n this._argsLexemes = this.args.map((item) => item.lexeme);\n this._replaceRegex = new RegExp(`\\\\b(${this._argsLexemes.join(\"|\")})\\\\b`, \"g\");\n }\n }\n\n expandFunctionBody(args: string[]): string {\n if (args.length !== this.args?.length) {\n throw ShaderLabUtils.createGSError(\"mismatched function macro\", GSErrorName.PreprocessorError, \"\", this.location);\n }\n\n if (args.length === 0) {\n return this.body.lexeme;\n }\n\n return this.body.lexeme.replace(this._replaceRegex, (m) => {\n return args[this._argsLexemes.indexOf(m)];\n });\n }\n}\n","import { ShaderRange } from \"../../common/ShaderRange\";\n\n// #if _VERBOSE\nexport class BlockInfo {\n readonly sourceFile: string;\n readonly rangeInFile?: ShaderRange;\n readonly sourceMap?: PpSourceMap;\n\n constructor(sourceFile?: string, rangeInFile?: ShaderRange, sourceMap?: PpSourceMap) {\n this.sourceFile = sourceFile ?? \"__main__\";\n this.rangeInFile = rangeInFile;\n this.sourceMap = sourceMap;\n }\n}\n\nexport class MapRange {\n sourceLoc: { block: BlockInfo; rangeInBlock: ShaderRange };\n generatedLoc: { start: number; end: number };\n\n constructor(sourceBlock: BlockInfo, rangeInBlock: ShaderRange, generatedLoc: { start: number; end: number }) {\n this.sourceLoc = { block: sourceBlock, rangeInBlock };\n this.generatedLoc = generatedLoc;\n }\n\n getSourceIndex(generatedIdx: number) {\n const { block, rangeInBlock } = this.sourceLoc;\n if (block.sourceMap) {\n if (block.sourceFile !== \"__main__\") return block.sourceMap.map(generatedIdx - this.generatedLoc.start);\n else if (rangeInBlock) {\n return {\n sourceFile: block.sourceFile,\n index: (block.rangeInFile?.start.index ?? 0) + rangeInBlock.start.index\n };\n }\n }\n\n return {\n index: generatedIdx - this.generatedLoc.start + rangeInBlock.start.index + (block.rangeInFile?.start.index ?? 0),\n sourceFile: this.sourceLoc.block.sourceFile\n };\n }\n}\n\nexport default class PpSourceMap {\n readonly mapRanges: MapRange[] = [];\n\n static rangeContains(range: MapRange[\"generatedLoc\"], index: number) {\n return range.start <= index && range.end > index;\n }\n\n addMapRange(mapRange: MapRange) {\n this.mapRanges.push(mapRange);\n }\n\n /**\n * @returns index\n */\n map(index: number): { sourceFile: string; index: number } {\n let curRange: MapRange | undefined;\n for (const range of this.mapRanges) {\n const { generatedLoc } = range;\n if (PpSourceMap.rangeContains(generatedLoc, index)) {\n return range.getSourceIndex(index);\n } else if (range.generatedLoc.start < index) {\n curRange = range;\n continue;\n } else {\n break;\n }\n }\n if (!curRange) return { sourceFile: \"__main__\", index };\n return {\n index: index - curRange.generatedLoc.end + curRange.sourceLoc.rangeInBlock.end.index,\n sourceFile: curRange.sourceLoc.block.sourceFile\n };\n }\n}\n// #endif\n","import { ShaderPosition, ShaderRange } from \"../common\";\n// #if _VERBOSE\nimport PpSourceMap from \"./sourceMap\";\n// #endif\nimport { BaseLexer } from \"../common/BaseLexer\";\nimport { BaseToken, EOF } from \"../common/BaseToken\";\nimport { ShaderLab } from \"../ShaderLab\";\nimport { MacroParserKeyword, MacroParserToken } from \"./constants\";\n\nexport type OnToken = (token: BaseToken, scanner: MacroParserLexer) => void;\n\nexport default class MacroParserLexer extends BaseLexer {\n private static _isPpCharacters(charCode: number): boolean {\n return (\n charCode === 35 || // #\n BaseLexer.isAlnum(charCode) // _, A-Z, a-z, 0-9\n );\n }\n\n private static _lexemeTable = <Record<string, MacroParserKeyword>>{\n \"#define\": MacroParserKeyword.define,\n \"#undef\": MacroParserKeyword.undef,\n \"#if\": MacroParserKeyword.if,\n \"#ifdef\": MacroParserKeyword.ifdef,\n \"#ifndef\": MacroParserKeyword.ifndef,\n \"#else\": MacroParserKeyword.else,\n \"#elif\": MacroParserKeyword.elif,\n \"#endif\": MacroParserKeyword.endif,\n defined: MacroParserKeyword.defined\n };\n\n private macroLvl = 0;\n\n // #if _VERBOSE\n readonly sourceMap = new PpSourceMap();\n readonly file: string;\n readonly blockRange?: ShaderRange;\n // #endif\n\n constructor(\n source: string,\n // #if _VERBOSE\n file = \"__main__\",\n blockRange?: ShaderRange\n // #endif\n ) {\n super(source);\n // #if _VERBOSE\n this.file = file;\n this.blockRange = blockRange;\n // #endif\n }\n\n scanWordsUntilTerminator(terminatorChar: string): BaseToken[] {\n const tokens: BaseToken[] = [];\n while (true) {\n this.skipSpace(true);\n if (BaseLexer.isAlpha(this.getCurCharCode())) {\n tokens.push(this.scanWord());\n } else if (this.getCurChar() === terminatorChar) {\n this.advance(1);\n return tokens;\n } else {\n this.advance(1);\n }\n }\n }\n\n scanWord(): BaseToken {\n // Skip all non-alphabetic characters, primarily used for handling defined(MACRO) syntax\n while (!BaseLexer.isAlpha(this.getCurCharCode()) && !this.isEnd()) {\n this.advance(1);\n }\n\n if (this.isEnd()) {\n return EOF;\n }\n\n const start = this._currentIndex;\n while (BaseLexer.isAlnum(this.getCurCharCode()) && !this.isEnd()) {\n this.advance(1);\n }\n const end = this._currentIndex;\n const word = this._source.slice(start, end);\n if (end === start) {\n this.throwError(this.getShaderPosition(0), \"no word found.\");\n }\n\n const token = BaseToken.pool.get();\n const tokenType = MacroParserLexer._lexemeTable[word] ?? MacroParserToken.id;\n token.set(tokenType, word, this.getShaderPosition(word.length));\n return token;\n }\n\n override scanToken(): BaseToken | undefined {\n this.skipCommentsAndSpace();\n if (this.isEnd()) {\n return;\n }\n const source = this._source;\n let start = this._currentIndex;\n let found = false;\n for (var n = source.length; this._currentIndex < n; ) {\n if (MacroParserLexer._isPpCharacters(source.charCodeAt(this._currentIndex))) {\n this.advance(1);\n found = true;\n } else {\n if (found) {\n break;\n }\n this.advance(1);\n this.skipCommentsAndSpace();\n start = this._currentIndex;\n }\n }\n\n const lexeme = source.slice(start, this._currentIndex);\n const token = BaseToken.pool.get();\n const type = MacroParserLexer._lexemeTable[lexeme] ?? MacroParserToken.id;\n token.set(type, lexeme, this.getShaderPosition(this._currentIndex - start));\n\n if (type === MacroParserKeyword.if || type === MacroParserKeyword.ifdef || type === MacroParserKeyword.ifndef) {\n this.macroLvl++;\n } else if (type === MacroParserKeyword.endif) {\n this.macroLvl--;\n }\n\n return token;\n }\n\n scanQuotedString(): BaseToken<MacroParserToken.string_const> {\n this.skipSpace(true);\n const source = this._source;\n const sourceLength = source.length;\n const start = this.getShaderPosition(0);\n\n let index = this._currentIndex;\n\n // Check for opening quote\n if (source.charCodeAt(index) !== 34) {\n // 34 = '\"'\n this.throwError(start, \"Unexpected char, expected '\\\"'\");\n }\n\n const contentStart = ++index; // Skip opening quote and record start\n\n // Fast scan to closing quote\n while (index < sourceLength && source.charCodeAt(index) !== 34) {\n index++;\n }\n\n if (index >= sourceLength) {\n this.throwError(this.getShaderPosition(0), \"Unexpected char, expected '\\\"'\");\n }\n\n const lexeme = source.slice(contentStart, index);\n this.advance(index + 1 - this._currentIndex); // Skip to after closing quote\n\n const token = BaseToken.pool.get();\n token.set(MacroParserToken.string_const, lexeme, start);\n return token;\n }\n\n scanToChar(char: string) {\n const source = this._source;\n while (source[this._currentIndex] !== char && !this.isEnd()) {\n this.advance(1);\n }\n }\n\n scanMacroBranchBody(): {\n body: BaseToken<MacroParserToken.chunk>;\n nextDirective: BaseToken;\n } {\n const shaderPosition = this.getShaderPosition(0);\n const startLevel = this.macroLvl;\n\n let nextDirective = this.scanToken()!;\n while (true) {\n const { type } = nextDirective;\n if (type === MacroParserKeyword.endif && startLevel - 1 === this.macroLvl) {\n break;\n } else if (\n (type === MacroParserKeyword.elif || type === MacroParserKeyword.else) &&\n startLevel === this.macroLvl\n ) {\n break;\n }\n nextDirective = this.scanToken()!;\n }\n\n const lexeme = this._source.slice(shaderPosition.index, this._currentIndex - nextDirective.lexeme.length - 1);\n const body = BaseToken.pool.get();\n body.set(MacroParserToken.chunk, lexeme, shaderPosition);\n return { body, nextDirective };\n }\n\n scanPairedBlock(lc: string, rc: string): void {\n this.scanToChar(lc);\n let level = 0;\n const source = this._source;\n\n do {\n const curChar = source[this._currentIndex];\n\n if (curChar === lc) {\n level++;\n } else if (curChar === rc) {\n level--;\n }\n this.advance(1);\n } while (level > 0);\n }\n\n /**\n * @returns end ShaderPosition\n */\n scanRemainMacro(): ShaderPosition {\n const startLvl = this.macroLvl;\n let directive = this.scanToken()!;\n while (!this.isEnd() && (directive.type !== MacroParserKeyword.endif || startLvl - 1 !== this.macroLvl)) {\n directive = this.scanToken()!;\n }\n return this.getShaderPosition(0);\n }\n\n peekNonSpace() {\n let current = this._currentIndex;\n while (/\\s/.test(this._source[current])) {\n current += 1;\n }\n return this._source[current];\n }\n\n scanInteger() {\n const start = this._currentIndex;\n while (BaseLexer.isDigit(this.getCurCharCode())) {\n this.advance(1);\n }\n if (this._currentIndex === start) {\n this.throwError(this.getShaderPosition(0), \"no integer found\");\n }\n const integer = this._source.slice(start, this._currentIndex);\n\n const token = BaseToken.pool.get();\n token.set(MacroParserToken.int_constant, integer, this.getShaderPosition(0));\n return token;\n }\n\n scanMacroBody(): BaseToken<MacroParserToken.line_remain> {\n this.skipSpace(false);\n let lexeme = \"\";\n const source = this._source;\n const sourceLength = source.length;\n\n const start = this.getShaderPosition(0);\n while (this._currentIndex < sourceLength) {\n const charCode = source.charCodeAt(this._currentIndex);\n\n // Check for line break (terminates macro definition), break when encounter \"\\n\"\n if (charCode === 10) {\n break;\n }\n\n // Check for comments (both single-line and multi-line)\n if (charCode === 47) {\n const nextIndex = this._currentIndex + 1;\n if (nextIndex < sourceLength) {\n const nextCharCode = source.charCodeAt(nextIndex);\n\n // Single-line comment (terminates macro definition), break when encounter \"//\"\n if (nextCharCode === 47) {\n break;\n }\n\n // Multi-line comment (skip but don't terminate)\n if (nextCharCode === 42) {\n this.advance(2); // Skip \"/*\"\n\n // Skip until end of multi-line comment\n while (this._currentIndex + 1 < sourceLength) {\n const currentIndex = this._currentIndex;\n if (source.charCodeAt(currentIndex) === 42 && source.charCodeAt(currentIndex + 1) === 47) {\n this.advance(2); // Skip \"*/\n break;\n }\n this.advance(1);\n }\n\n lexeme += \" \"; // Replace comment with space\n continue;\n }\n }\n }\n\n // Accumulate useful character\n lexeme += source[this._currentIndex];\n this.advance(1);\n }\n\n if (lexeme === \"\") {\n return null;\n }\n\n const valueToken = BaseToken.pool.get();\n valueToken.set(MacroParserToken.line_remain, lexeme, ShaderLab.createRange(start, this.getShaderPosition(0)));\n return valueToken;\n }\n}\n","import { ExpandSegment } from \"./MacroParser\";\n// #if _VERBOSE\nimport PpSourceMap, { MapRange } from \"./sourceMap\";\n// #endif\n\nexport class PpUtils {\n static expand(\n segments: ExpandSegment[],\n source: string,\n // #if _VERBOSE\n sourceMap?: PpSourceMap\n //#endif\n ) {\n const ret: string[] = [];\n let startIdx = 0;\n let generatedIdx = 0;\n\n for (const seg of segments) {\n const originSlice = source.slice(startIdx, seg.rangeInBlock.start.index);\n ret.push(originSlice, seg.replace);\n\n const generatedIdxEnd = generatedIdx + originSlice.length + seg.replace.length;\n\n // #if _VERBOSE\n const mapRange = new MapRange(seg.block, seg.rangeInBlock, {\n start: generatedIdx + originSlice.length,\n end: generatedIdxEnd\n });\n sourceMap?.addMapRange(mapRange);\n // #endif\n\n startIdx = seg.rangeInBlock.end.index;\n generatedIdx = generatedIdxEnd;\n }\n ret.push(source.slice(startIdx));\n return ret.join(\"\");\n }\n}\n","import { ShaderMacro } from \"@galacean/engine\";\nimport { ShaderPosition, ShaderRange } from \"../common\";\nimport { BaseToken } from \"../common/BaseToken\";\nimport { GSErrorName } from \"../GSError\";\nimport { ShaderLab } from \"../ShaderLab\";\nimport { ShaderLabUtils } from \"../ShaderLabUtils\";\nimport { MacroParserConstant, MacroParserKeyword, MacroParserToken } from \"./constants\";\nimport { MacroDefine } from \"./MacroDefine\";\nimport MacroParserLexer from \"./MacroParserLexer\";\nimport { PpUtils } from \"./Utils\";\n// #if _VERBOSE\nimport PpSourceMap, { BlockInfo } from \"./sourceMap\";\n// #endif\nimport { BaseLexer } from \"../common/BaseLexer\";\n\nexport interface ExpandSegment {\n // #if _VERBOSE\n block?: BlockInfo;\n // #endif\n rangeInBlock: ShaderRange;\n replace: string;\n}\n\n/** @internal */\nexport class MacroParser {\n static lexer: MacroParserLexer;\n\n private static _definedMacros: Map<string, MacroDefine> = new Map();\n private static _expandSegmentsStack: ExpandSegment[][] = [[]];\n\n private static _expandVisitedMacros: Record<string, number> = {};\n private static _expandVersionId: number = 1;\n\n // #if _VERBOSE\n static _errors: Error[] = [];\n // #endif\n\n static parse(source: string, macros: ShaderMacro[]): string | null {\n MacroParser._reset();\n\n for (const macro of macros) {\n MacroParser._addPredefinedMacro(macro.name, macro.value);\n }\n\n this.lexer = new MacroParserLexer(source);\n return MacroParser._parseDirectives(this.lexer);\n }\n\n private static _reset() {\n this._expandSegmentsStack.length = 0;\n this._expandSegmentsStack.push([]);\n\n this._definedMacros.clear();\n this._addPredefinedMacro(\"GL_ES\");\n\n // #if _VERBOSE\n this._errors.length = 0;\n // #endif\n }\n\n private static _addPredefinedMacro(macro: string, value?: string) {\n const token = BaseToken.pool.get();\n token.set(MacroParserToken.id, macro);\n\n let macroBody: BaseToken | undefined;\n if (value != undefined) {\n macroBody = BaseToken.pool.get();\n macroBody.set(MacroParserToken.id, value);\n }\n\n this._definedMacros.set(macro, new MacroDefine(token, macroBody));\n }\n\n private static _parseDirectives(lexer: MacroParserLexer): string | null {\n let directive: BaseToken | undefined;\n while ((directive = lexer.scanToken())) {\n switch (directive.type) {\n case MacroParserToken.id:\n this._parseMacro(lexer, directive);\n break;\n case MacroParserKeyword.define:\n this._parseDefine(lexer);\n break;\n case MacroParserKeyword.undef:\n this._parseUndef(lexer);\n break;\n case MacroParserKeyword.if:\n this._parseIfDirective(lexer, MacroParserKeyword.if);\n break;\n case MacroParserKeyword.ifndef:\n this._parseIfDirective(lexer, MacroParserKeyword.ifndef);\n break;\n case MacroParserKeyword.ifdef:\n this._parseIfDirective(lexer, MacroParserKeyword.ifdef);\n break;\n }\n }\n // #if _VERBOSE\n if (this._errors.length > 0) return null;\n // #endif\n\n return PpUtils.expand(this._getExpandSegments(), lexer.source, lexer.sourceMap);\n }\n\n private static _getExpandSegments(): ExpandSegment[] {\n return this._expandSegmentsStack[this._expandSegmentsStack.length - 1];\n }\n\n private static _reportError(loc: ShaderRange | ShaderPosition, message: string, source: string, file?: string) {\n const error = ShaderLabUtils.createGSError(message, GSErrorName.PreprocessorError, source, loc, file);\n // #if _VERBOSE\n this._errors.push(error);\n // #endif\n }\n\n private static _parseIfDirective(lexer: MacroParserLexer, directiveType: MacroParserKeyword): void {\n const directiveLength =\n directiveType === MacroParserKeyword.if ? 3 : directiveType === MacroParserKeyword.ifdef ? 6 : 7; // #if = 3, #ifdef = 6, #ifndef = 7\n const start = lexer.currentIndex - directiveLength;\n let skipMacro = false;\n\n let shouldInclude: MacroParserConstant;\n if (directiveType === MacroParserKeyword.if) {\n shouldInclude = this._parseConstantExpression(lexer);\n } else {\n const macroToken = lexer.scanWord();\n const lexeme = macroToken.lexeme;\n if (lexeme.startsWith(\"GL_\")) {\n skipMacro = true;\n } else {\n const defined = this._definedMacros.get(lexeme);\n shouldInclude = directiveType === MacroParserKeyword.ifdef ? !!defined : !defined;\n }\n }\n\n lexer.skipSpace(true);\n const { body, nextDirective } = lexer.scanMacroBranchBody();\n\n if (skipMacro) return;\n\n if (shouldInclude) {\n const end =\n nextDirective.type === MacroParserKeyword.endif ? lexer.getShaderPosition(0) : lexer.scanRemainMacro();\n const expanded = this._expandMacroChunk(body.lexeme, body.location, lexer);\n this._addContentReplace(\n lexer.file,\n ShaderLab.createPosition(start),\n end,\n expanded.content,\n lexer.blockRange,\n expanded.sourceMap\n );\n } else {\n this._addEmptyReplace(lexer, start);\n this._processConditionalDirective(nextDirective.type, lexer);\n }\n }\n\n private static _processConditionalDirective(\n directive: MacroParserKeyword.elif | MacroParserKeyword.else | MacroParserKeyword.endif,\n scanner: MacroParserLexer\n ) {\n if (directive === MacroParserKeyword.endif) {\n return;\n }\n\n const start = scanner.currentIndex;\n\n if (directive === MacroParserKeyword.else) {\n const { body } = scanner.scanMacroBranchBody();\n const expanded = this._expandMacroChunk(body.lexeme, body.location, scanner);\n this._addContentReplace(\n scanner.file,\n ShaderLab.createPosition(start),\n scanner.getShaderPosition(0),\n expanded.content,\n scanner.blockRange,\n expanded.sourceMap\n );\n } else if (directive === MacroParserKeyword.elif) {\n const constantExpr = this._parseConstantExpression(scanner);\n const { body, nextDirective } = scanner.scanMacroBranchBody();\n if (constantExpr) {\n const end =\n nextDirective.type === MacroParserKeyword.endif ? scanner.currentIndex : scanner.scanRemainMacro().index;\n const expanded = this._expandMacroChunk(body.lexeme, body.location, scanner);\n this._addContentReplace(\n scanner.file,\n ShaderLab.createPosition(start),\n ShaderLab.createPosition(end),\n expanded.content,\n scanner.blockRange,\n expanded.sourceMap\n );\n } else {\n this._addContentReplace(\n scanner.file,\n ShaderLab.createPosition(start),\n ShaderLab.createPosition(scanner.currentIndex),\n \"\",\n scanner.blockRange\n );\n this._processConditionalDirective(nextDirective.type, scanner);\n }\n }\n }\n\n private static _parseConstantExpression(scanner: MacroParserLexer): MacroParserConstant {\n scanner.skipSpace(true);\n return this._parseLogicalOrExpression(scanner);\n }\n\n private static _parseLogicalOrExpression(scanner: MacroParserLexer): MacroParserConstant {\n const operand1 = this._parseLogicalAndExpression(scanner);\n const operator = scanner.peek(2);\n if (operator && operator === \"||\") {\n scanner.advance(2);\n scanner.skipSpace(false);\n const operand2 = this._parseLogicalOrExpression(scanner);\n return operand1 || operand2;\n }\n return operand1;\n }\n\n private static _parseLogicalAndExpression(scanner: MacroParserLexer): MacroParserConstant {\n const operand1 = this._parseEqualityExpression(scanner);\n const operator = scanner.peek(2);\n if (operator && operator === \"&&\") {\n scanner.advance(2);\n scanner.skipSpace(false);\n const operand2 = this._parseLogicalAndExpression(scanner);\n return operand1 && operand2;\n }\n return operand1;\n }\n\n private static _parseEqualityExpression(scanner: MacroParserLexer): MacroParserConstant {\n const operand1 = this._parseRelationalExpression(scanner);\n const operator = scanner.peek(2);\n if (operator && [\"==\", \"!=\"].includes(operator)) {\n scanner.advance(2);\n scanner.skipSpace(false);\n const operand2 = this._parseEqualityExpression(scanner);\n switch (operator) {\n case \"==\":\n return operand1 === operand2;\n case \"!=\":\n return operand1 !== operand2;\n }\n }\n return operand1;\n }\n\n private static _parseRelationalExpression(scanner: MacroParserLexer): MacroParserConstant {\n const operand1 = this._parseShiftExpression(scanner) as number;\n let operator = scanner.peek(2);\n if (operator[1] !== \"=\") operator = operator[0];\n if (operator && [\">\", \"<\", \">=\", \"<=\"].includes(operator)) {\n const opPos = scanner.getShaderPosition(0);\n scanner.advance(operator.length);\n scanner.skipSpace(false);\n const operand2 = this._parseRelationalExpression(scanner) as number;\n if (typeof operand1 !== typeof operand2 && typeof operand1 !== \"number\") {\n this._reportError(opPos, \"invalid operator in relation expression.\", scanner.source, scanner.file);\n return;\n }\n switch (operator) {\n case \">\":\n return operand1 > operand2;\n case \"<\":\n return operand1 < operand2;\n case \">=\":\n return operand1 >= operand2;\n case \"<=\":\n return operand1 <= operand2;\n }\n }\n return operand1;\n }\n\n private static _parseShiftExpression(scanner: MacroParserLexer): MacroParserConstant {\n const operand1 = this._parseAdditiveExpression(scanner) as number;\n const operator = scanner.peek(2);\n if (operator && [\">>\", \"<<\"].includes(operator)) {\n const opPos = scanner.getShaderPosition(0);\n scanner.advance(2);\n scanner.skipSpace(false);\n const operand2 = this._parseShiftExpression(scanner) as number;\n if (typeof operand1 !== typeof operand2 && typeof operand1 !== \"number\") {\n this._reportError(opPos, \"invalid operator in shift expression.\", scanner.source, scanner.file);\n return;\n }\n switch (operator) {\n case \">>\":\n return operand1 >> operand2;\n case \"<<\":\n return operand1 << operand2;\n }\n }\n\n return operand1;\n }\n\n private static _parseAdditiveExpression(scanner: MacroParserLexer): MacroParserConstant {\n const operand1 = this._parseMulticativeExpression(scanner) as number;\n if ([\">\", \"<\"].includes(scanner.getCurChar())) {\n const opPos = scanner.getShaderPosition(0);\n scanner.advance(1);\n\n const operator = scanner.getCurChar();\n scanner.skipSpace(false);\n const operand2 = this._parseAdditiveExpression(scanner) as number;\n if (typeof operand1 !== typeof operand2 && typeof operand1 !== \"number\") {\n this._reportError(opPos, \"invalid operator.\", scanner.source, scanner.file);\n return false;\n }\n switch (operator) {\n case \"+\":\n return operand1 + operand2;\n case \"-\":\n return operand1 - operand2;\n }\n }\n return operand1;\n }\n\n private static _parseMulticativeExpression(scanner: MacroParserLexer): MacroParserConstant {\n const operand1 = this._parseUnaryExpression(scanner) as number;\n scanner.skipSpace(false);\n if ([\"*\", \"/\", \"%\"].includes(scanner.getCurChar())) {\n const opPos = scanner.getShaderPosition(0);\n const operator = scanner.getCurChar();\n scanner.skipSpace(false);\n const operand2 = this._parseMulticativeExpression(scanner) as number;\n if (typeof operand1 !== typeof operand2 && typeof operand1 !== \"number\") {\n this._reportError(opPos, \"invalid operator.\", scanner.source, scanner.file);\n return;\n }\n switch (operator) {\n case \"*\":\n return operand1 * operand2;\n case \"/\":\n return operand1 / operand2;\n case \"%\":\n return operand1 % operand2;\n }\n }\n return operand1;\n }\n\n private static _parseUnaryExpression(scanner: MacroParserLexer) {\n const operator = scanner.getCurChar();\n if ([\"+\", \"-\", \"!\"].includes(operator)) {\n const opPos = scanner.getShaderPosition(0);\n scanner.advance(1);\n scanner.skipSpace(false);\n const parenExpr = this._parseParenthesisExpression(scanner);\n if ((operator === \"!\" && typeof parenExpr !== \"boolean\") || (operator !== \"!\" && typeof parenExpr !== \"number\")) {\n this._reportError(opPos, \"invalid operator.\", scanner.source, scanner.file);\n }\n\n switch (operator) {\n case \"+\":\n return parenExpr;\n case \"-\":\n return -parenExpr;\n case \"!\":\n return !parenExpr;\n }\n }\n return this._parseParenthesisExpression(scanner);\n }\n\n private static _parseParenthesisExpression(scanner: MacroParserLexer): MacroParserConstant {\n if (scanner.getCurChar() === \"(\") {\n scanner.advance(1);\n scanner.skipSpace(false);\n const ret = this._parseConstantExpression(scanner);\n scanner.scanToChar(\")\");\n scanner.advance(1);\n return ret;\n }\n return this._parseConstant(scanner);\n }\n\n private static _parseConstant(scanner: MacroParserLexer): MacroParserConstant {\n if (BaseLexer.isAlpha(scanner.getCurCharCode())) {\n const id = scanner.scanWord();\n if (id.type === MacroParserKeyword.defined) {\n const withParen = scanner.peekNonSpace() === \"(\";\n const macro = scanner.scanWord();\n if (withParen) {\n scanner.scanToChar(\")\");\n scanner.advance(1);\n }\n return !!this._definedMacros.get(macro.lexeme);\n } else {\n const macro = this._definedMacros.get(id.lexeme);\n\n if (!macro) {\n return false;\n }\n\n if (!macro.body) {\n return true;\n }\n\n if (macro.isFunction) {\n this._reportError(id.location, \"invalid function macro usage\", scanner.source, scanner.file);\n }\n const value = Number(macro.body.lexeme);\n if (!Number.isInteger(value)) {\n this._reportError(id.location, `invalid const macro: ${id.lexeme}`, scanner.source, scanner.file);\n }\n return value;\n }\n } else if (BaseLexer.isDigit(scanner.getCurCharCode())) {\n const integer = scanner.scanInteger();\n return Number(integer.lexeme);\n } else {\n this._reportError(\n scanner.getShaderPosition(0),\n `invalid token: ${scanner.getCurChar()}`,\n scanner.source,\n scanner.file\n );\n }\n }\n\n private static _parseMacroFunctionArgs(\n source: string,\n startIndex: number,\n macroName: string\n ): { args: string[]; endIndex: number } {\n const length = source.length;\n let i = startIndex + macroName.length;\n\n // Find opening parenthesis\n while (i < length && source.charCodeAt(i) !== 40) i++;\n\n // Parse function arguments\n const args: string[] = [];\n let level = 1;\n let argStart = i + 1;\n let k = argStart;\n\n while (k < length && level > 0) {\n const charCode = source.charCodeAt(k);\n if (charCode === 40) {\n level++;\n } else if (charCode === 41) {\n if (--level === 0) {\n const arg = source.substring(argStart, k).trim();\n if (arg.length > 0) args.push(arg);\n break;\n }\n } else if (charCode === 44 && level === 1) {\n const arg = source.substring(argStart, k).trim();\n if (arg.length > 0) args.push(arg);\n argStart = k + 1;\n }\n k++;\n }\n\n return { args, endIndex: k + 1 };\n }\n\n private static _expandMacroBody(body: string): string {\n const visitedMacros = this._expandVisitedMacros;\n const currentVersionId = ++this._expandVersionId;\n let expandedBody = body;\n let hasExpansion = true;\n\n while (hasExpansion) {\n hasExpansion = false;\n const length = expandedBody.length;\n let i = 0;\n\n while (i < length) {\n const charCode = expandedBody.charCodeAt(i);\n if (!BaseLexer.isAlpha(charCode)) {\n i++;\n continue;\n }\n\n const start = i;\n while (i < length && BaseLexer.isAlnum(expandedBody.charCodeAt(i))) {\n i++;\n }\n\n const macroName = expandedBody.substring(start, i);\n const macro = this._definedMacros.get(macroName);\n\n if (!macro || visitedMacros[macroName] === currentVersionId) {\n continue;\n }\n\n // Prevent circular references\n visitedMacros[macroName] = currentVersionId;\n\n let replacement: string;\n let endIndex: number;\n\n if (!macro.isFunction) {\n replacement = macro.body?.lexeme ?? \"\";\n endIndex = i;\n } else {\n const { args, endIndex: newEndIndex } = this._parseMacroFunctionArgs(expandedBody, start, macroName);\n replacement = macro.expandFunctionBody(args);\n endIndex = newEndIndex;\n }\n\n expandedBody = expandedBody.substring(0, start) + replacement + expandedBody.substring(endIndex);\n hasExpansion = true;\n break;\n }\n }\n\n return expandedBody;\n }\n\n /**\n * Recursively expand macro body and expansion.\n */\n private static _expandMacroChunk(\n chunk: string,\n loc: ShaderRange,\n parentScanner: MacroParserLexer\n ): {\n content: string;\n // #if _VERBOSE\n sourceMap: PpSourceMap;\n // #endif\n };\n private static _expandMacroChunk(\n chunk: string,\n loc: ShaderRange,\n file: string\n ): {\n content: string;\n // #if _VERBOSE\n sourceMap: PpSourceMap;\n // #endif\n };\n private static _expandMacroChunk(\n chunk: string,\n loc: ShaderRange,\n scannerOrFile: MacroParserLexer | string\n ): {\n content: string;\n // #if _VERBOSE\n sourceMap: PpSourceMap;\n // #endif\n } {\n this._expandSegmentsStack.push([]);\n let scanner: MacroParserLexer;\n if (typeof scannerOrFile === \"string\") {\n scanner = new MacroParserLexer(chunk, scannerOrFile);\n } else {\n scanner = new MacroParserLexer(chunk, scannerOrFile.file, loc);\n }\n\n const ret = this._parseDirectives(scanner);\n this._expandSegmentsStack.pop();\n return {\n content: ret,\n // #if _VERBOSE\n sourceMap: scanner.sourceMap\n // #endif\n };\n }\n\n private static _addEmptyReplace(lexer: MacroParserLexer, start: number) {\n this._addContentReplace(\n lexer.file,\n ShaderLab.createPosition(start),\n lexer.getShaderPosition(0),\n \"\",\n lexer.blockRange\n );\n }\n\n private static _addContentReplace(\n sourceFile: string,\n start: ShaderPosition,\n end: ShaderPosition,\n content: string,\n sourceRange?: ShaderRange,\n sourceMap?: PpSourceMap\n ): void {\n // #if _VERBOSE\n const block = new BlockInfo(sourceFile, sourceRange, sourceMap);\n // #endif\n\n const range = ShaderLab.createRange(start, end);\n this._getExpandSegments().push({\n // #if _VERBOSE\n block,\n // #endif\n rangeInBlock: range,\n replace: content\n });\n }\n\n private static _parseDefine(lexer: MacroParserLexer): void {\n const start = lexer.getShaderPosition(7);\n const macroName = lexer.scanWord();\n\n const { lexeme, location } = macroName;\n let { end } = location;\n if (this._definedMacros.get(lexeme) && lexeme.startsWith(\"GL_\")) {\n this._reportError(location, `Redefined macro: ${lexeme}`, lexer.source, lexer.file);\n }\n\n let macroArgs: BaseToken[] | undefined;\n if (lexer.getCurChar() === \"(\") {\n macroArgs = lexer.scanWordsUntilTerminator(\")\");\n end = lexer.getShaderPosition(0);\n }\n const macroBody = lexer.scanMacroBody();\n const range = ShaderLab.createRange(start, end);\n const macroDefine = new MacroDefine(macroName, macroBody, range, macroArgs);\n this._definedMacros.set(lexeme, macroDefine);\n\n this._addContentReplace(lexer.file, start, lexer.getShaderPosition(0), \"\", lexer.blockRange);\n }\n\n private static _parseUndef(lexer: MacroParserLexer): void {\n const start = lexer.getShaderPosition(6);\n const macroName = lexer.scanWord();\n this._definedMacros.delete(macroName.lexeme);\n\n this._addContentReplace(lexer.file, start, lexer.getShaderPosition(0), \"\", lexer.blockRange);\n }\n\n private static _parseMacro(lexer: MacroParserLexer, token: BaseToken) {\n const macro = this._definedMacros.get(token.lexeme);\n if (macro) {\n const { location } = token;\n if (macro.isFunction) {\n const { args, endIndex } = this._parseMacroFunctionArgs(lexer.source, location.start.index, token.lexeme);\n const macroBodyExpanded = macro.expandFunctionBody(args);\n const expandedContent = this._expandMacroBody(macroBodyExpanded);\n\n const remainingLength = endIndex - location.end.index;\n lexer.advance(remainingLength);\n\n this._addContentReplace(\n lexer.file,\n location.start,\n lexer.getShaderPosition(0),\n expandedContent,\n lexer.blockRange\n );\n } else {\n const macroContent = macro.body?.lexeme ?? \"\";\n const expandedContent = this._expandMacroBody(macroContent);\n\n this._addContentReplace(lexer.file, location.start, location.end, expandedContent, lexer.blockRange);\n }\n }\n }\n\n // #if _VERBOSE\n static convertSourceIndex(index: number) {\n return this.lexer.sourceMap.map(index);\n }\n // #endif\n}\n","import { Logger } from \"@galacean/engine\";\nimport { ETokenType } from \"../common\";\nimport { Keyword } from \"../common/enums/Keyword\";\nimport { Grammar } from \"../parser/Grammar\";\nimport { GrammarSymbol, NoneTerminal, Terminal } from \"../parser/GrammarSymbol\";\nimport State from \"./State\";\nimport StateItem from \"./StateItem\";\nimport { default as GrammarUtils, default as Utils } from \"./Utils\";\nimport { ActionInfo, ActionTable, EAction, GotoTable, StateActionTable, StateGotoTable } from \"./types\";\n\n/**\n * The [LALR1](https://web.stanford.edu/class/archive/cs/cs143/cs143.1128/handouts/140%20LALR%20Parsing.pdf) Parser generator\n */\nexport class LALR1 {\n readonly firstSetMap: Map<NoneTerminal, Set<Terminal>> = new Map();\n readonly followSetMap: Map<NoneTerminal, Set<Terminal>> = new Map();\n\n readonly actionTable: StateActionTable = new Map();\n readonly gotoTable: StateGotoTable = new Map();\n private grammar: Grammar;\n\n /** For circle detect */\n private _firstSetNTStack: NoneTerminal[] = [];\n\n constructor(grammar: Grammar) {\n this.grammar = grammar;\n }\n\n generate() {\n this.computeFirstSet();\n this.buildStateTable();\n }\n\n private buildStateTable() {\n const startStateItemCore = [new StateItem(this.grammar.productions[0], 0, [ETokenType.EOF])];\n const startState = State.create(startStateItemCore);\n this._extendState(startState);\n }\n\n private _extendState(state: State) {\n if (!state.needReInfer) return;\n this._closure(state);\n const newStates = this._inferNextState(state);\n for (const ns of newStates) {\n this._extendState(ns);\n }\n }\n\n private _closure(state: State) {\n for (const core of state.cores) {\n if (!core.canReduce()) {\n this._extendStateItem(state, core);\n }\n }\n state.closured = true;\n return state;\n }\n\n private _extendStateItem(state: State, item: StateItem) {\n if (GrammarUtils.isTerminal(item.curSymbol)) return;\n\n const productionList = this.grammar.getProductionList(<NoneTerminal>item.curSymbol);\n\n if (item.nextSymbol) {\n let newLookaheadSet = new Set<Terminal>();\n let lastFirstSet: Set<Terminal> | undefined;\n let terminalExist = false;\n // when A :=> a.BC, a; ==》 B :=> .xy, First(Ca)\n // newLookAhead = First(Ca)\n for (let i = 1, nextSymbol = item.symbolByOffset(1); !!nextSymbol; nextSymbol = item.symbolByOffset(++i)) {\n if (GrammarUtils.isTerminal(nextSymbol)) {\n newLookaheadSet.add(<Terminal>nextSymbol);\n terminalExist = true;\n break;\n }\n lastFirstSet = this.firstSetMap.get(<NoneTerminal>nextSymbol)!;\n for (const t of lastFirstSet) {\n newLookaheadSet.add(t);\n }\n if (!lastFirstSet.has(ETokenType.EPSILON)) break;\n }\n if (!terminalExist && lastFirstSet?.has(ETokenType.EPSILON)) {\n for (const t of item.lookaheadSet) {\n newLookaheadSet.add(t);\n }\n }\n\n for (const production of productionList) {\n const newItem = state.createStateItem(production, 0);\n if (!state.items.has(newItem) || !Utils.isSubSet(newLookaheadSet, newItem.lookaheadSet)) {\n state.items.add(newItem);\n newItem.addLookahead(newLookaheadSet);\n this._extendStateItem(state, newItem);\n }\n }\n } else {\n for (const production of productionList) {\n const newItem = state.createStateItem(production, 0);\n if (!state.items.has(newItem) || !Utils.isSubSet(item.lookaheadSet, newItem.lookaheadSet)) {\n state.items.add(newItem);\n newItem.addLookahead(item.lookaheadSet);\n this._extendStateItem(state, newItem);\n }\n }\n }\n }\n\n private _inferNextState(state: State): Set<State> {\n const coreMap: Map<GrammarSymbol, Set<StateItem>> = new Map();\n const stateActionTable: ActionTable = this.actionTable.get(state.id) ?? new Map();\n const stateGotoTable: GotoTable = this.gotoTable.get(state.id) ?? new Map();\n\n this.actionTable.set(state.id, stateActionTable);\n this.gotoTable.set(state.id, stateGotoTable);\n\n for (const stateItem of state.items) {\n if (stateItem.canReduce()) {\n let action: ActionInfo;\n if (stateItem.production.goal !== NoneTerminal.START) {\n action = {\n action: EAction.Reduce,\n target: stateItem.production.id\n };\n } else {\n action = { action: EAction.Accept };\n }\n\n for (const t of stateItem.lookaheadSet) {\n this._addAction(stateActionTable, t, action);\n }\n } else {\n const nextItem = stateItem.advance();\n Utils.addMapSetItem(coreMap, stateItem.curSymbol, nextItem);\n }\n\n stateItem.needReInfer = false;\n }\n\n const newStates = new Set<State>();\n for (const [gs, cores] of coreMap.entries()) {\n const newState = State.create(Array.from(cores));\n if (GrammarUtils.isTerminal(gs)) {\n this._addAction(stateActionTable, <Terminal>gs, {\n action: EAction.Shift,\n target: newState.id\n });\n } else {\n stateGotoTable.set(<NoneTerminal>gs, newState.id);\n }\n\n newStates.add(newState);\n }\n\n return newStates;\n }\n\n /** Resolve shift-reduce/reduce-reduce conflict detect */\n private _addAction(table: ActionTable, terminal: Terminal, action: ActionInfo) {\n const exist = table.get(terminal);\n if (exist && !Utils.isActionEqual(exist, action)) {\n // Resolve dangling else ambiguity\n if (terminal === Keyword.ELSE && exist.action === EAction.Shift && action.action === EAction.Reduce) {\n return;\n } else {\n // #if _VERBOSE\n 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 // 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 ShaderLab\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 [Keyword.MACRO_DEFINE_EXPRESSION]\n ],\n ASTNode.GlobalDeclaration.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 [[ETokenType.ID], [NoneTerminal.ext_builtin_type_specifier_nonarray]],\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 [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 ],\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 { Logger } from \"@galacean/engine\";\nimport { ETokenType } from \"../common\";\nimport { BaseToken } from \"../common/BaseToken\";\nimport { GSError, GSErrorName } from \"../GSError\";\nimport { LALR1 } from \"../lalr\";\nimport { addTranslationRule, createGrammar } from \"../lalr/CFG\";\nimport { EAction, StateActionTable, StateGotoTable } from \"../lalr/types\";\nimport { MacroDefineList } from \"../Preprocessor\";\nimport { ParserUtils } from \"../ParserUtils\";\nimport { ShaderLab } from \"../ShaderLab\";\nimport { ShaderLabUtils } from \"../ShaderLabUtils\";\nimport { ASTNode, TreeNode } from \"./AST\";\nimport { Grammar } from \"./Grammar\";\nimport { GrammarSymbol, NoneTerminal } from \"./GrammarSymbol\";\nimport SematicAnalyzer from \"./SemanticAnalyzer\";\nimport { TraceStackItem } from \"./types\";\n\n/**\n * The syntax parser and sematic analyzer of `ShaderLab` 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 start = performance.now();\n const { _traceBackStack: traceBackStack, sematicAnalyzer } = this;\n traceBackStack.push(0);\n\n let nextToken = tokens.next();\n let loopCount = 0;\n while (true) {\n loopCount += 1;\n const token = nextToken.value;\n\n const actionInfo = this.stateActionTable.get(token.type);\n if (actionInfo?.action === EAction.Shift) {\n traceBackStack.push(token, actionInfo.target!);\n nextToken = tokens.next();\n } else if (actionInfo?.action === EAction.Accept) {\n Logger.info(\n `[Task - AST compilation] Accept! State automata run ${loopCount} times! cost time ${\n performance.now() - start\n }ms`\n );\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 = ShaderLabUtils.createGSError(\n `Unexpected token ${token.lexeme}`,\n GSErrorName.CompilationError,\n ShaderLab._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 Logger.info(str);\n }\n // #endif\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 { IRenderStates, IShaderPassSource, IShaderSource, ISubShaderSource } from \"@galacean/engine-design\";\n\nexport class ShaderSourceFactory {\n static createRenderStates(): IRenderStates {\n return {\n constantMap: {},\n variableMap: {}\n };\n }\n\n static createShaderSource(name: string): IShaderSource {\n return {\n name,\n subShaders: [],\n pendingContents: [],\n renderStates: this.createRenderStates()\n };\n }\n\n static createSubShaderSource(name: string): ISubShaderSource {\n return {\n name,\n passes: [],\n pendingContents: [],\n tags: {},\n renderStates: this.createRenderStates()\n };\n }\n\n static createShaderPassSource(name: string): IShaderPassSource {\n return {\n name,\n pendingContents: [],\n tags: {},\n renderStates: this.createRenderStates()\n } as IShaderPassSource;\n }\n\n static createUsePass(name: string): IShaderPassSource {\n return {\n name,\n pendingContents: [],\n isUsePass: true,\n tags: {},\n renderStates: this.createRenderStates()\n } as IShaderPassSource;\n }\n}\n","import { IBaseSymbol } from \"../common/IBaseSymbol\";\n\nexport class ShaderSourceSymbol implements IBaseSymbol {\n public isInMacroBranch: boolean = false;\n\n constructor(\n public ident: string,\n public type: number,\n public value?: any\n ) {}\n\n set(ident: string, type: number, value?: any): void {\n this.ident = ident;\n this.type = type;\n this.value = value;\n }\n\n equal(other: ShaderSourceSymbol): boolean {\n return this.type === other.type;\n }\n}\n","import { Color } from \"@galacean/engine\";\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 { ShaderLab } from \"../ShaderLab\";\nimport { ShaderLabUtils } from \"../ShaderLabUtils\";\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 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 };\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 );\n }\n\n private static _scanDigits(source: string, startIndex: number): number {\n let currentIndex = startIndex;\n while (currentIndex < source.length) {\n const charCode = source.charCodeAt(currentIndex);\n if (BaseLexer.isDigit(charCode)) {\n currentIndex++;\n } else {\n break;\n }\n }\n return currentIndex;\n }\n\n scanNumber(): number {\n this.skipCommentsAndSpace();\n const start = this._currentIndex;\n const source = this._source;\n let index = this._currentIndex;\n\n // Scan integer part\n index = SourceLexer._scanDigits(source, index);\n\n // Scan decimal part if present\n if (source[index] === \".\") {\n index = SourceLexer._scanDigits(source, index + 1);\n }\n\n this.advance(index - this._currentIndex);\n return Number(source.substring(start, index));\n }\n\n scanColor(): Color {\n this.scanLexeme(\"(\");\n\n let r = 0;\n let g = 0;\n let b = 0;\n let a = 1;\n\n r = this.scanNumber();\n this.skipCommentsAndSpace();\n if (this.peek(1) !== \")\") {\n this.scanLexeme(\",\");\n g = this.scanNumber();\n this.skipCommentsAndSpace();\n if (this.peek(1) !== \")\") {\n this.scanLexeme(\",\");\n b = this.scanNumber();\n this.skipCommentsAndSpace();\n if (this.peek(1) !== \")\") {\n this.scanLexeme(\",\");\n a = this.scanNumber();\n this.skipCommentsAndSpace();\n }\n }\n }\n\n this.scanLexeme(\")\");\n return new Color(r, g, b, a);\n }\n\n override scanToken(): BaseToken {\n while (true) {\n this.skipCommentsAndSpace();\n\n if (this.isEnd()) {\n return;\n }\n\n const start = this.getShaderPosition(0);\n if (BaseLexer.isAlpha(this.getCurCharCode())) {\n const wordToken = this._scanWord(start);\n if (wordToken !== null) {\n return wordToken;\n }\n this.hasPendingContent = true;\n continue; // Continue loop to scan next token if word was invalid\n }\n\n const currentChar = this.getCurChar();\n const symbolKeyword = SourceLexer._symbolLexemeTable[currentChar];\n if (symbolKeyword !== undefined) {\n this.advance(1);\n const token = BaseToken.pool.get();\n token.set(symbolKeyword, currentChar, start);\n return token;\n }\n\n // Skip unrecognized character and continue\n this.advance(1);\n }\n }\n\n // #if _VERBOSE\n scanToCharacter(char: string): void {\n while (this.getCurChar() !== char && !this.isEnd()) {\n this.advance(1);\n }\n this.advance(1);\n }\n // #endif\n\n createCompileError(message: string, location?: ShaderPosition | ShaderRange) {\n return ShaderLabUtils.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 = ShaderLab.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 {\n BlendFactor,\n BlendOperation,\n Color,\n CompareFunction,\n CullMode,\n Logger,\n RenderQueueType,\n RenderStateElementKey,\n StencilOperation\n} from \"@galacean/engine\";\nimport { IRenderStates, IShaderPassSource, IShaderSource, IStatement, ISubShaderSource } 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 { ShaderLabUtils } from \"../ShaderLabUtils\";\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 };\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 const startTime = performance.now();\n\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 Logger.info(`[Task - Source compilation] cost time ${performance.now() - startTime}ms`);\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 _parseRenderStateProperty(stateLexeme: string, out: IRenderStates): void {\n const lexer = this._lexer;\n const propertyToken = lexer.scanToken();\n const propertyLexeme = propertyToken.lexeme;\n let stateElementKey = propertyLexeme;\n if (stateLexeme === \"BlendState\" && propertyLexeme !== \"BlendColor\" && propertyLexeme !== \"AlphaToCoverage\") {\n let keyIndex = 0;\n const scannedLexeme = lexer.scanTwoExpectedLexemes(\"[\", \"=\");\n if (scannedLexeme === \"[\") {\n keyIndex = lexer.scanNumber();\n lexer.scanLexeme(\"]\");\n lexer.scanLexeme(\"=\");\n } else if (scannedLexeme !== \"=\") {\n this._createCompileError(`Invalid syntax, expect '[' or '=', but got unexpected token`);\n // #if _VERBOSE\n lexer.scanToCharacter(\";\");\n return;\n // #endif\n }\n stateElementKey += keyIndex;\n } else {\n lexer.scanLexeme(\"=\");\n }\n\n const renderStateElementKey = RenderStateElementKey[stateLexeme + stateElementKey];\n if (renderStateElementKey === undefined) {\n this._createCompileError(`Invalid render state property ${propertyLexeme}`);\n // #if _VERBOSE\n lexer.scanToCharacter(\";\");\n return;\n // #endif\n }\n\n lexer.skipCommentsAndSpace();\n let propertyValue: number | string | boolean | Color;\n\n const curCharCode = lexer.getCurCharCode();\n if (BaseLexer.isDigit(curCharCode) || curCharCode === 46) {\n // Digit or '.'\n propertyValue = lexer.scanNumber();\n } else {\n const valueToken = lexer.scanToken();\n const valueTokenType = valueToken.type;\n\n if (valueTokenType === Keyword.True) {\n propertyValue = true;\n } else if (valueTokenType === Keyword.False) {\n propertyValue = false;\n } else if (valueTokenType === Keyword.GSColor) {\n propertyValue = lexer.scanColor();\n } else if (lexer.getCurChar() === \".\") {\n lexer.advance(1);\n const constValueToken = lexer.scanToken();\n propertyValue = this._renderStateConstMap[valueToken.lexeme]?.[constValueToken.lexeme];\n if (propertyValue == undefined) {\n this._createCompileError(\n `Invalid engine constant: ${valueToken.lexeme}.${constValueToken.lexeme}`,\n constValueToken.location\n );\n // #if _VERBOSE\n lexer.scanToCharacter(\";\");\n return;\n // #endif\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 = ShaderLabUtils.createGSError(\n \"Reassign main entry\",\n GSErrorName.CompilationError,\n lexer.source,\n lexer.getShaderPosition(0)\n );\n // #if _VERBOSE\n Logger.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 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 { Logger, ShaderMacro, ShaderLanguage } from \"@galacean/engine\";\nimport { IShaderLab, IShaderSource } from \"@galacean/engine-design\";\nimport { IShaderProgramSource } from \"@galacean/engine-design/types/shader-lab/IShaderProgramSource\";\nimport { GLES100Visitor, GLES300Visitor } from \"./codeGen\";\nimport { ShaderPosition, ShaderRange } from \"./common\";\nimport { Lexer } from \"./lexer\";\nimport { MacroParser } from \"./macroProcessor/MacroParser\";\nimport { ShaderTargetParser } from \"./parser\";\nimport { Preprocessor } from \"./Preprocessor\";\nimport { ShaderLabUtils } from \"./ShaderLabUtils\";\nimport { ShaderSourceParser } from \"./sourceParser/ShaderSourceParser\";\n\nexport class ShaderLab implements IShaderLab {\n private static _parser = ShaderTargetParser.create();\n private static _shaderPositionPool = ShaderLabUtils.createObjectPool(ShaderPosition);\n private static _shaderRangePool = ShaderLabUtils.createObjectPool(ShaderRange);\n\n // #if _VERBOSE\n static _processingPassText?: string;\n // #endif\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 ShaderLabUtils.clearAllShaderLabObjectPool();\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 totalStartTime = performance.now();\n const macroDefineList = {};\n Preprocessor._repeatIncludeSet.clear();\n const noIncludeContent = Preprocessor.parse(source, basePathForIncludeKey, macroDefineList);\n Logger.info(`[Task - Pre processor] cost time ${performance.now() - totalStartTime}ms`);\n\n const lexer = new Lexer(noIncludeContent, macroDefineList);\n\n const tokens = lexer.tokenize();\n const { _parser: parser } = ShaderLab;\n\n ShaderLab._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 codeGenStartTime = performance.now();\n const ret = codeGen.visitShaderProgram(program, vertexEntry, fragmentEntry);\n Logger.info(`[Task - CodeGen] cost time: ${performance.now() - codeGenStartTime}ms`);\n Logger.info(`[Task - Total compilation] cost time: ${performance.now() - totalStartTime}ms`);\n ShaderLab._processingPassText = undefined;\n\n // #if _VERBOSE\n this._logErrors(codeGen.errors);\n // #endif\n\n return ret;\n }\n\n _parseMacros(content: string, macros: ShaderMacro[]): string {\n const startTime = performance.now();\n const parsedContent = MacroParser.parse(content, macros);\n Logger.info(`[Task - parse macros] cost time: ${performance.now() - startTime}ms`);\n\n // #if _VERBOSE\n this._logErrors(MacroParser._errors);\n // #endif\n\n return parsedContent;\n }\n\n // #if _VERBOSE\n /**\n * @internal\n */\n _logErrors(errors: Error[]) {\n if (errors.length === 0 || !Logger.isEnabled) return;\n Logger.error(`${errors.length} errors occur!`);\n for (const err of errors) {\n Logger.error(err.toString());\n }\n }\n // #endif\n}\n","export { ShaderLab } from \"./ShaderLab\";\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 ShaderLab Version: ${version} | Mode: ${mode}`);\n"],"names":["_array_like_to_array","arr","len","length","i","arr2","Array","_create_for_of_iterator_helper_loose","o","allowArrayLike","it","Symbol","iterator","call","next","bind","isArray","_unsupported_iterable_to_array","minLen","n","Object","prototype","toString","slice","constructor","name","from","test","done","value","TypeError","_set_prototype_of","p","setPrototypeOf","__proto__","_inherits","subClass","superClass","create","writable","configurable","_instanceof","left","right","hasInstance","_defineProperties","target","props","descriptor","enumerable","defineProperty","key","_create_class","Constructor","protoProps","staticProps","__decorate","decorators","desc","d","c","arguments","r","getOwnPropertyDescriptor","Reflect","decorate","SuppressedError","ETokenType","Keyword","GSErrorName","NoneTerminal","EAction","EShaderStage","ESymbolType","ASTNode","TrivialNode","ScopeBrace","ScopeEndBrace","JumpStatement","ConditionOpt","ForRestStatement","Condition","ForInitStatement","IterationStatement","SelectionStatement","ExpressionStatement","ExpressionAstNode","InitializerList","Initializer","SingleDeclaration","FullySpecifiedType","TypeQualifier","SingleTypeQualifier","BasicTypeQualifier","StorageQualifier","PrecisionQualifier","InterpolationQualifier","InvariantQualifier","TypeSpecifier","ArraySpecifier","IntegerConstantExpressionOperator","IntegerConstantExpression","TypeSpecifierNonArray","ExtBuiltinTypeSpecifierNonArray","InitDeclaratorList","IdentifierList","Declaration","FunctionProtoType","FunctionDeclarator","FunctionHeader","FunctionParameterList","MacroParamCaseList","MacroParamBlock","MacroParameterBranch","ParameterDeclaration","ParameterDeclarator","SimpleStatement","CompoundStatement","CompoundStatementNoScope","Statement","StatementList","FunctionDefinition","FunctionCall","FunctionCallGeneric","FunctionCallParameterList","MacroCallArgCaseList","MacroCallArgBlock","MacroCallArgBranch","PrecisionSpecifier","FunctionIdentifier","AssignmentExpression","AssignmentOperator","Expression","PrimaryExpression","PostfixExpression","UnaryOperator","UnaryExpression","MultiplicativeExpression","AdditiveExpression","ShiftExpression","RelationalExpression","EqualityExpression","AndExpression","ExclusiveOrExpression","InclusiveOrExpression","LogicalAndExpression","LogicalXorExpression","LogicalOrExpression","ConditionalExpression","StructSpecifier","StructDeclarationList","StructDeclaration","MacroStructDeclaration","MacroStructBranch","LayoutQualifier","StructDeclaratorList","StructDeclarator","VariableDeclaration","VariableDeclarationList","VariableIdentifier","GLShaderProgram","GlobalDeclaration","MacroUndef","MacroPushContext","MacroPopContext","MacroElifExpression","MacroElseExpression","GlobalMacroDeclaration","GlobalMacroIfStatement","GlobalMacroBranch","MacroIfStatement","MacroBranch","MacroCallSymbol","MacroCallFunction","MacroParserToken","MacroParserKeyword","ShaderRange","set","start","end","dispose","ShaderPosition","index","line","column","_is_native_reflect_construct","result","Boolean","valueOf","construct","_","_construct","Parent","args","Class","a","push","apply","instance","Function","_get_prototype_of","getPrototypeOf","_wrap_native_super","_cache","Map","undefined","indexOf","has","get","Wrapper","GSError","Error1","message","location","source","file","_this","_proto","lines","split","diagnosticMessage","lineSplit","wrappingLineCount","remarkStart","remarkEnd","paddingLength","remarkLength","Math","max","repeat","Error","ShaderLabUtils","createObjectPool","type","pool","ClearableObjectPool","_shaderLabObjectPoolSet","clearAllShaderLabObjectPool","clear","createGSError","errorName","BaseToken","lexeme","arg","ShaderLab","createPosition","createRange","EOF","Production","goal","derivation","id","_id","GrammarUtils","isTerminal","sm","START","createProductionWithOptions","options","astTypePool","_step","ret","_iterator","opt","sa","_len","children","_key","addMapSetItem","map","k","v","Set","add","isSubSet","sb","item","isActionEqual","b","action","printAction","actionInfo","production","printProduction","deriv","gs","join","StateItem","position","lookahead","_needReInfer","lookaheadSet","la","addLookahead","ts","t","needReInfer","symbolByOffset","offset","canReduce","EPSILON","advance","coreItem","curSymbol","nextSymbol","State","cores","closured","_stateItemPool","_items","itemMapKey","getStateItemMapKey","createStateItem","mapId","newItem","cacheKey","getMapKey","state","closureMap","core","newState","items","ParserUtils","unwrapNodeByType","node","child","Token","nt","typeCompatible","ta","tb","INT","UINT","printStatePool","logPath","output","console","log","count","values","tmp","padEnd","_step1","_iterator1","psItem","Preprocessor","parse","basePathForIncludeKey","outMacroDefineList","parseMacro","_parseMacroDefines","replace","_includeReg","includeName","_replace","getReferenceSymbolNames","macroDefineList","macroName","out","infos","info","valueType","referencedName","functionCallName","params","Logger","warn","_isNumber","str","isNaN","Number","_isExist","list","some","e","isFunction","every","outMacroList","match","_macroRegex","lastIndex","exec","paramsGroup","paramsStr","valueRaw","trim","filter","_symbolReg","callMatch","_funcCallReg","_mergeMacroDefineLists","to","src","path","URL","href","substring","ShaderPass","_shaderRootPath","chunk","ShaderLib","error","_repeatIncludeSet","_macroDefineIncludeMap","chunkMacroDefineList","isGenericType","BuiltinFunctionTable","BuiltinFunction","ident","returnType","scope","_returnType","getReturnType","fn","genType","_create","ALL","_createWithScop","getFn","parameterTypes","fnArgs","argLength","found","curFnArg","_realReturnType","isExist","realReturnType","FLOAT","VEC2","VEC3","MAT2","MAT3","MAT4","VEC4","MAT2X3","MAT3X2","MAT2X4","MAT4X2","MAT3X4","MAT4X3","BOOL","IVEC2","IVEC3","SAMPLER2D_SHADOW","SAMPLER_CUBE_SHADOW","SAMPLER2D_ARRAY_SHADOW","SAMPLER2D","SAMPLER2D_ARRAY","SAMPLER_CUBE","FRAGMENT","BuiltinVariableTable","BuiltinVariable","createVariable","getVar","VERTEX","VEC4_ARRAY","SymbolTable","_table","insert","symbol","isInMacroBranch","_this__table_get","entry","equal","getSymbol","includeMacro","getSymbols","_getSymbols","SymbolTableStack","stack","_macroLevel","pushScope","popScope","pop","lookup","symbolTable","lookupAll","SymbolDataType","typeLexeme","arraySpecifier","SymbolInfo","astNode","dataType","paramSignature","symbolType","protoType","paramSig","comparedParams","t1","t2","FnSymbol","typeSpecifier","FN","StructSymbol","STRUCT","VarSymbol","isGlobalVariable","initAst","VAR","ShaderData","globalPrecisions","globalMacroDeclarations","getOuterGlobalMacroDeclarations","parent","SemanticAnalyzer","semanticStack","acceptRule","symbolTableStack","curFunctionInfo","_shaderData","_translationRuleTable","errors","reset","_macroDefineList","addTranslationRule","pid","rule","getTranslationRule","reportError","loc","CompilationError","_processingPassText","reportWarning","CompilationWarn","shaderData","_lookupSymbol","SymbolType","StructProp","typeInfo","mrtIndex","ASTNodeDecorator","nonTerminal","TreeNode","_location","_children","_parent","init","setCache","code","_codeCache","getCache","codeGen","visitor","defaultCodeGen","semanticAnalyze","_unwrapToken","_ignore","scope_brace","scope_end_brace","isFragReturnStatement","RETURN","returnStatement","visitJumpStatement","jump_statement","conditionopt","for_rest_statement","condition","for_init_statement","iteration_statement","selection_statement","expression_statement","_type","_this__type","initializer_list","initializer","childrenLen","fullyType","visitSingleDeclaration","single_declaration","fully_specified_type","type_qualifier","qualifier","single_type_qualifier","token","storage_qualifier","precision_qualifier","interpolation_qualifier","invariant_qualifier","arraySize","firstChild","_children_","size","isCustom","type_specifier","integerConstantExpr","array_specifier","operator","PLUS","compute","DASH","STAR","SLASH","PERCENT","integer_constant_expression_operator","integer_constant_expression","tt","type_specifier_nonarray","ext_builtin_type_specifier_nonarray","childrenLength","initDeclList","init_declarator_list","idList","curIdList","listIdLength","identifier_list","visitDeclaration","declaration","declarator","parameterList","parameterInfoList","function_prototype","header","function_declarator","visitFunctionHeader","function_header","decl","visitFunctionParameterList","function_parameter_list","macro_param_case_list","macro_param_block","macro_parameter_branch","parameterDeclarator","varSymbol","parameter_declaration","parameter_declarator","simple_statement","compound_statement","compound_statement_no_scope","statement","visitStatementList","statement_list","statements","VOID","visitFunctionDefinition","function_definition","visitFunctionCall","function_call","fnSymbol","functionIdentifier","isBuiltin","fnIdent","paramList","builtinFn","lookupSymbol","function_call_generic","paramNodes","expr","function_call_parameter_list","macro_call_arg_case_list","macro_call_arg_block","macro_call_arg_branch","precision_specifier","visitFunctionIdentifier","function_identifier","assignment_expression","assignment_operator","expression","INT_CONSTANT","FLOAT_CONSTANT","True","False","primary_expression","visitPostfixExpression","postfix_expression","unary_operator","unary_expression","multiplicative_expression","additive_expression","shift_expression","relational_expression","equality_expression","and_expression","exclusive_or_expression","inclusive_or_expression","logical_and_expression","logical_xor_expression","logical_or_expression","conditional_expression","propList","macroExpressions","visitStructSpecifier","struct_specifier","struct_declaration_list","_typeSpecifier","_declaratorList","macroStructDeclaration","macroProps","_this__typeSpecifier","prop","declaratorList","declaratorListLength","struct_declaration","_this_props","_this_props1","_this_macroExpressions","_this_macroExpressions1","_this_props2","_this_macroExpressions2","concat","macro_struct_declaration","lastNode","macro_struct_branch","layout_qualifier","listLength","struct_declarator_list","struct_declarator","isStatic","visitGlobalVariableDeclaration","variable_declaration","variableDeclarations","_this_variableDeclarations","newVariable","variable_declaration_list","referenceGlobalSymbolNames","_symbols","symbols","needFindNames","referenceSymbolNames","builtinVar","Any","currentScopeSymbol","s","visitVariableIdentifier","getLexeme","variable_identifier","gs_shader_program","global_declaration","macro_undef","macro_push_context","macro_pop_context","macro_elif_expression","macro_else_expression","global_macro_declaration","global_macro_if_statement","global_macro_branch","macro_if_statement","macro_branch","macro_call_symbol","visitMacroCallFunction","macro_call_function","VisitorContext","attributeStructs","attributeList","varyingStructs","varyingList","mrtStructs","mrtList","_referencedGlobalMacroASTs","resetAll","_referencedAttributeList","_referencedVaryingList","_referencedMRTList","_referencedGlobals","isAttributeStruct","findIndex","isVaryingStruct","isMRTStruct","referenceAttribute","referenceVarying","referenceMRTProp","referenceGlobal","_passSymbolTable","_singleton","context","TempArray","array","CodeGenVisitor","_tmpArrayPool","return","derivationLength","postExpr","identNode","indexNode","identLexeme","indexLexeme","_reportError","astNodes","paramInfoList","paramsCode","variableParam","fullType","cmd","returnVar","returnFnCall","text","getVaryingProp","getAttributeProp","getMRTProp","sort","fnNode","fnName","stageEntry","ReturnableObjectPool","GLESVisitor","_globalCodeArray","globalCodeArray","_serializedGlobalKey","getOtherGlobal","data","precision","visitShaderProgram","vertexEntry","fragmentEntry","outerGlobalMacroDeclarations","vertex","_vertexMain","fragment","_fragmentMain","stage","fnSymbols","forEach","varyingSymbols","varyingSymbol","attributeParam","attributeType","attributeSymbols","attributeSymbol","_getGlobalSymbol","_getCustomStruct","_getGlobalMacroDeclarations","globalCode","outerGlobalMacroStatements","returnDataType","mrtSymbols","mrtSymbol","returnLocation","lastLength","keys","structNodes","macros","referencedGlobals","referencedGlobalMacroASTs","_step2","_iterator2","macro","_visitGlobalMacroIfStatement","variableDeclaration","GLES100Visitor","propReferenced","find","getVisitor","V3_GL_FragColor","GLES300Visitor","_otherCodeArray","_fragColorVariableRegistered","_registerFragColorVariable","BaseLexer","_currentIndex","_column","_line","_source","setSource","getShaderPosition","backOffset","isEnd","getCurChar","getCurCharCode","charCodeAt","startIndex","skipSpace","includeLineBreak","isWhiteSpaceChar","skipCommentsAndSpace","nextChar","charCode","peek","scanLexeme","throwError","scanTwoExpectedLexemes","lexeme1","lexeme2","pos","msgs","ScannerError","scanPairedChar","balanced","skipLeading","sourceLength","currentIndex","level","currentChar","isDigit","isAlpha","isAlnum","isPreprocessorStartChar","includeBreak","Lexer","BaseLexer1","_needScanMacroConditionExpression","tokenize","thisArg","body","f","y","label","sent","trys","ops","g","Iterator","verb","step","op","scanToken","_state","_scanMacroConditionExpression","curChar","curCharCode","_scanDirectives","_scanWord","_scanNum","LEFT_ASSIGN","LEFT_OP","LE_OP","LEFT_ANGLE","RIGHT_ASSIGN","RIGHT_OP","GE_OP","RIGHT_ANGLE","INC_OP","ADD_ASSIGN","DEC_OP","SUB_ASSIGN","EQ_OP","EQUAL","NE_OP","BANG","AND_OP","AMPERSAND","OR_OP","OR_ASSIGN","VERTICAL_BAR","XOR_OP","XOR_ASSIGN","CARET","MUL_ASSIGN","DIV_ASSIGN","MOD_ASSIGN","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","_scanUtilBreakLine","outBuffer","word","MACRO_DEFINE_EXPRESSION","kt","_lexemeTable","ID","MACRO_CONDITIONAL_EXPRESSION","MACRO_CALL","_scanIntegerSuffix","_type_of","obj","const","CONST","bool","float","double","DOUBLE","int","uint","break","BREAK","continue","CONTINUE","do","DO","else","ELSE","for","FOR","if","IF","while","WHILE","discard","DISCARD","bvec2","BVEC2","bvec3","BVEC3","bvec4","BVEC4","ivec2","ivec3","ivec4","IVEC4","uvec2","UVEC2","uvec3","UVEC3","uvec4","UVEC4","vec2","vec3","vec4","mat2","mat3","mat4","in","IN","OUT","inout","INOUT","sampler2D","samplerCube","sampler3D","SAMPLER3D","sampler2DShadow","samplerCubeShadow","sampler2DArray","sampler2DArrayShadow","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","void","true","false","PRECISION","precise","PRECISE","highp","HIGHP","mediump","MEDIUMP","lowp","LOWP","invariant","INVARIANT","flat","FLAT","smooth","SMOOTH","noperspective","NOPERSPECTIVE","centroid","CENTROID","layout","LAYOUT","LOCATION","MACRO_IF","MACRO_IFDEF","MACRO_IFNDEF","MACRO_ELSE","MACRO_ELIF","MACRO_ENDIF","MACRO_UNDEF","MacroDefine","_argsLexemes","_replaceRegex","RegExp","expandFunctionBody","_this_args","PreprocessorError","m","BlockInfo","sourceFile","rangeInFile","sourceMap","MapRange","sourceBlock","rangeInBlock","generatedLoc","sourceLoc","block","getSourceIndex","generatedIdx","_this_sourceLoc","PpSourceMap","mapRanges","addMapRange","mapRange","curRange","rangeContains","MacroParserLexer","blockRange","macroLvl","scanWordsUntilTerminator","terminatorChar","tokens","scanWord","tokenType","_isPpCharacters","ifdef","ifndef","endif","scanQuotedString","contentStart","string_const","scanToChar","char","scanMacroBranchBody","shaderPosition","startLevel","nextDirective","elif","scanPairedBlock","lc","rc","scanRemainMacro","startLvl","directive","peekNonSpace","current","scanInteger","integer","int_constant","scanMacroBody","nextIndex","nextCharCode","valueToken","line_remain","define","undef","defined","PpUtils","expand","segments","startIdx","seg","originSlice","generatedIdxEnd","MacroParser","_reset","_addPredefinedMacro","lexer","_parseDirectives","_expandSegmentsStack","_definedMacros","_errors","macroBody","_parseMacro","_parseDefine","_parseUndef","_parseIfDirective","_getExpandSegments","directiveType","shouldInclude","directiveLength","skipMacro","_parseConstantExpression","macroToken","startsWith","expanded","_expandMacroChunk","_addContentReplace","content","_addEmptyReplace","_processConditionalDirective","scanner","constantExpr","_parseLogicalOrExpression","operand1","_parseLogicalAndExpression","operand2","_parseEqualityExpression","_parseRelationalExpression","includes","_parseShiftExpression","opPos","_parseAdditiveExpression","_parseMulticativeExpression","_parseUnaryExpression","parenExpr","_parseParenthesisExpression","_parseConstant","withParen","isInteger","_parseMacroFunctionArgs","argStart","endIndex","_expandMacroBody","visitedMacros","_expandVisitedMacros","currentVersionId","_expandVersionId","expandedBody","hasExpansion","replacement","_this__parseMacroFunctionArgs","newEndIndex","scannerOrFile","sourceRange","macroArgs","macroDefine","delete","macroBodyExpanded","expandedContent","remainingLength","macroContent","convertSourceIndex","LALR1","grammar","firstSetMap","followSetMap","actionTable","gotoTable","_firstSetNTStack","generate","computeFirstSet","buildStateTable","startStateItemCore","productions","startState","_extendState","_closure","newStates","_inferNextState","ns","_extendStateItem","productionList","getProductionList","newLookaheadSet","terminalExist","lastFirstSet","Utils","_step3","_iterator3","coreMap","stateActionTable","_this_actionTable_get","stateGotoTable","_this_gotoTable_get","stateItem","Reduce","Accept","_addAction","nextItem","entries","Shift","table","terminal","exist","_computeFirstSetForNT","NT","idx","computingFS","curNT","firstSet","isNullableNT","succeedFirstSet","Grammar","startSymbol","unshift","getProductionByID","gsl","productionAndRules","variable_declaration_statement","AND_ASSIGN","ShaderTargetParser","_traceBackStack","sematicAnalyzer","SematicAnalyzer","performance","now","traceBackStack","nextToken","loopCount","reduceProduction","translationRule","nextState","_printStack","_token_lexeme","generator","curState","_extends","assign","hasOwnProperty","ShaderSourceFactory","createRenderStates","constantMap","variableMap","createShaderSource","subShaders","pendingContents","renderStates","createSubShaderSource","passes","tags","createShaderPassSource","createUsePass","isUsePass","ShaderSourceSymbol","other","SourceLexer","hasPendingContent","scanNumber","_scanDigits","scanColor","Color","wordToken","symbolKeyword","_symbolLexemeTable","scanToCharacter","createCompileError","_validateWordBoundaries","_keywordLexemeTable","prevCharCode","_isValidWordBoundary","_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","UsePass","GSUsePass","LeftBrace","RightBrace","Equal","ShaderSourceParser","sourceCode","startTime","_symbolTableStack","_pushScope","_lexer","shaderSource","_parseShader","shaderPendingContents","shaderRenderStates","subShader","curSubShaderGlobalStatements","globalSubShaderStates","_mergeRenderStates","j","pass","globalPassRenderStates","passGlobalStatements","contents","braceLevel","_addPendingContents","_parseSubShader","_popScope","_parseRenderState","_parseRenderStateDeclarationOrAssignment","outRenderStates","stateToken","renderState","_parseRenderStateProperties","_createCompileError","outTarget","targetVariableMap","sourceVariableMap","sourceConstantMap","targetConstantMap","_parseVariableDeclaration","_parseRenderStateProperty","stateLexeme","propertyLexeme","propertyToken","stateElementKey","keyIndex","scannedLexeme","renderStateElementKey","RenderStateElementKey","propertyValue","valueTokenType","_this__renderStateConstMap_valueToken_lexeme","constValueToken","_renderStateConstMap","_parseRenderQueueDeclarationOrAssignment","outPendingContents","subShaderSource","_parsePass","_parseRenderStateAndTags","_parseTags","passSource","outGlobalContents","outTags","_parseShaderSource","_logErrors","_parseShaderPass","backend","totalStartTime","noIncludeContent","parser","_parser","program","ShaderLanguage","GLSLES100","codeGenStartTime","_parseMacros","parsedContent","isEnabled","err","_shaderPositionPool","_shaderRangePool","version"],"mappings":"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"}
|