@galacean/engine-shaderlab 1.6.9 → 1.6.10

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +1 @@
1
- {"version":3,"file":"browser.js","sources":["../../../node_modules/.pnpm/@swc+helpers@0.5.15/node_modules/@swc/helpers/esm/_set_prototype_of.js","../../../node_modules/.pnpm/@swc+helpers@0.5.15/node_modules/@swc/helpers/esm/_inherits.js","../../../node_modules/.pnpm/@swc+helpers@0.5.15/node_modules/@swc/helpers/esm/_instanceof.js","../../../node_modules/.pnpm/@swc+helpers@0.5.15/node_modules/@swc/helpers/esm/_create_class.js","../../../node_modules/.pnpm/@swc+helpers@0.5.15/node_modules/@swc/helpers/esm/_array_like_to_array.js","../../../node_modules/.pnpm/@swc+helpers@0.5.15/node_modules/@swc/helpers/esm/_unsupported_iterable_to_array.js","../../../node_modules/.pnpm/@swc+helpers@0.5.15/node_modules/@swc/helpers/esm/_create_for_of_iterator_helper_loose.js","../../../node_modules/.pnpm/tslib@2.8.1/node_modules/tslib/tslib.es6.mjs","../src/common/ShaderRange.ts","../src/common/ShaderPosition.ts","../src/common/types.ts","../src/common/enums/Keyword.ts","../src/ShaderLabUtils.ts","../src/common/BaseToken.ts","../src/Preprocessor.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","../src/common/enums/ShaderStage.ts","../src/parser/builtin/functions.ts","../src/parser/builtin/variables.ts","../src/parser/GrammarSymbol.ts","../src/common/SymbolTable.ts","../src/common/SymbolTableStack.ts","../../../node_modules/.pnpm/@swc+helpers@0.5.15/node_modules/@swc/helpers/esm/_get_prototype_of.js","../../../node_modules/.pnpm/@swc+helpers@0.5.15/node_modules/@swc/helpers/esm/_is_native_function.js","../../../node_modules/.pnpm/@swc+helpers@0.5.15/node_modules/@swc/helpers/esm/_wrap_native_super.js","../src/GSError.ts","../src/parser/symbolTable/SymbolDataType.ts","../src/parser/symbolTable/SymbolInfo.ts","../src/parser/symbolTable/FnSymbol.ts","../src/parser/symbolTable/StructSymbol.ts","../src/parser/symbolTable/VarSymbol.ts","../src/parser/ShaderInfo.ts","../src/parser/SemanticAnalyzer.ts","../src/parser/types.ts","../src/parser/AST.ts","../src/ParserUtils.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/constants.ts","../src/macroProcessor/MacroDefine.ts","../src/macroProcessor/MacroParserLexer.ts","../src/macroProcessor/Utils.ts","../src/macroProcessor/MacroParser.ts","../src/lalr/StateItem.ts","../src/lalr/State.ts","../src/lalr/Utils.ts","../src/lalr/types.ts","../src/lalr/LALR1.ts","../src/lalr/Production.ts","../src/parser/Grammar.ts","../src/lalr/CFG.ts","../src/parser/ShaderTargetParser.ts","../../../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 _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","function _array_like_to_array(arr, len) {\n if (len == null || len > arr.length) len = arr.length;\n\n for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i];\n\n return arr2;\n}\nexport { _array_like_to_array as _ };\n","import { _ as _array_like_to_array } from \"./_array_like_to_array.js\";\n\nfunction _unsupported_iterable_to_array(o, minLen) {\n if (!o) return;\n if (typeof o === \"string\") return _array_like_to_array(o, minLen);\n\n var n = Object.prototype.toString.call(o).slice(8, -1);\n\n if (n === \"Object\" && o.constructor) n = o.constructor.name;\n if (n === \"Map\" || n === \"Set\") return Array.from(n);\n if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _array_like_to_array(o, minLen);\n}\nexport { _unsupported_iterable_to_array as _ };\n","import { _ as _unsupported_iterable_to_array } from \"./_unsupported_iterable_to_array.js\";\n\nfunction _create_for_of_iterator_helper_loose(o, allowArrayLike) {\n var it = typeof Symbol !== \"undefined\" && o[Symbol.iterator] || o[\"@@iterator\"];\n\n if (it) return (it = it.call(o)).next.bind(it);\n // Fallback for engines without symbol support\n if (Array.isArray(o) || (it = _unsupported_iterable_to_array(o)) || allowArrayLike && o && typeof o.length === \"number\") {\n if (it) o = it;\n\n var i = 0;\n\n return function() {\n if (i >= o.length) return { done: true };\n\n return { done: false, value: o[i++] };\n };\n }\n\n throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}\nexport { _create_for_of_iterator_helper_loose as _ };\n","/******************************************************************************\nCopyright (c) Microsoft Corporation.\n\nPermission to use, copy, modify, and/or distribute this software for any\npurpose with or without fee is hereby granted.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\nPERFORMANCE OF THIS SOFTWARE.\n***************************************************************************** */\n/* global Reflect, Promise, SuppressedError, Symbol, Iterator */\n\nvar extendStatics = function(d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n};\n\nexport function __extends(d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n}\n\nexport var __assign = function() {\n __assign = Object.assign || function __assign(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n }\n return t;\n }\n return __assign.apply(this, arguments);\n}\n\nexport function __rest(s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\n t[p[i]] = s[p[i]];\n }\n return t;\n}\n\nexport function __decorate(decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n}\n\nexport function __param(paramIndex, decorator) {\n return function (target, key) { decorator(target, key, paramIndex); }\n}\n\nexport function __esDecorate(ctor, descriptorIn, decorators, contextIn, initializers, extraInitializers) {\n function accept(f) { if (f !== void 0 && typeof f !== \"function\") throw new TypeError(\"Function expected\"); return f; }\n var kind = contextIn.kind, key = kind === \"getter\" ? \"get\" : kind === \"setter\" ? \"set\" : \"value\";\n var target = !descriptorIn && ctor ? contextIn[\"static\"] ? ctor : ctor.prototype : null;\n var descriptor = descriptorIn || (target ? Object.getOwnPropertyDescriptor(target, contextIn.name) : {});\n var _, done = false;\n for (var i = decorators.length - 1; i >= 0; i--) {\n var context = {};\n for (var p in contextIn) context[p] = p === \"access\" ? {} : contextIn[p];\n for (var p in contextIn.access) context.access[p] = contextIn.access[p];\n context.addInitializer = function (f) { if (done) throw new TypeError(\"Cannot add initializers after decoration has completed\"); extraInitializers.push(accept(f || null)); };\n var result = (0, decorators[i])(kind === \"accessor\" ? { get: descriptor.get, set: descriptor.set } : descriptor[key], context);\n if (kind === \"accessor\") {\n if (result === void 0) continue;\n if (result === null || typeof result !== \"object\") throw new TypeError(\"Object expected\");\n if (_ = accept(result.get)) descriptor.get = _;\n if (_ = accept(result.set)) descriptor.set = _;\n if (_ = accept(result.init)) initializers.unshift(_);\n }\n else if (_ = accept(result)) {\n if (kind === \"field\") initializers.unshift(_);\n else descriptor[key] = _;\n }\n }\n if (target) Object.defineProperty(target, contextIn.name, descriptor);\n done = true;\n};\n\nexport function __runInitializers(thisArg, initializers, value) {\n var useValue = arguments.length > 2;\n for (var i = 0; i < initializers.length; i++) {\n value = useValue ? initializers[i].call(thisArg, value) : initializers[i].call(thisArg);\n }\n return useValue ? value : void 0;\n};\n\nexport function __propKey(x) {\n return typeof x === \"symbol\" ? x : \"\".concat(x);\n};\n\nexport function __setFunctionName(f, name, prefix) {\n if (typeof name === \"symbol\") name = name.description ? \"[\".concat(name.description, \"]\") : \"\";\n return Object.defineProperty(f, \"name\", { configurable: true, value: prefix ? \"\".concat(prefix, \" \", name) : name });\n};\n\nexport function __metadata(metadataKey, metadataValue) {\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\n}\n\nexport function __awaiter(thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n}\n\nexport function __generator(thisArg, body) {\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g = Object.create((typeof Iterator === \"function\" ? Iterator : Object).prototype);\n return g.next = verb(0), g[\"throw\"] = verb(1), g[\"return\"] = verb(2), typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n function verb(n) { return function (v) { return step([n, v]); }; }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (g && (g = 0, op[0] && (_ = 0)), _) try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [op[0] & 2, t.value];\n switch (op[0]) {\n case 0: case 1: t = op; break;\n case 4: _.label++; return { value: op[1], done: false };\n case 5: _.label++; y = op[1]; op = [0]; continue;\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n if (t[2]) _.ops.pop();\n _.trys.pop(); continue;\n }\n op = body.call(thisArg, _);\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n }\n}\n\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n});\n\nexport function __exportStar(m, o) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\n}\n\nexport function __values(o) {\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\n if (m) return m.call(o);\n if (o && typeof o.length === \"number\") return {\n next: function () {\n if (o && i >= o.length) o = void 0;\n return { value: o && o[i++], done: !o };\n }\n };\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\n}\n\nexport function __read(o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o), r, ar = [], e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n }\n catch (error) { e = { error: error }; }\n finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n }\n finally { if (e) throw e.error; }\n }\n return ar;\n}\n\n/** @deprecated */\nexport function __spread() {\n for (var ar = [], i = 0; i < arguments.length; i++)\n ar = ar.concat(__read(arguments[i]));\n return ar;\n}\n\n/** @deprecated */\nexport function __spreadArrays() {\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\n r[k] = a[j];\n return r;\n}\n\nexport function __spreadArray(to, from, pack) {\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\n if (ar || !(i in from)) {\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\n ar[i] = from[i];\n }\n }\n return to.concat(ar || Array.prototype.slice.call(from));\n}\n\nexport function __await(v) {\n return this instanceof __await ? (this.v = v, this) : new __await(v);\n}\n\nexport function __asyncGenerator(thisArg, _arguments, generator) {\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\n return i = Object.create((typeof AsyncIterator === \"function\" ? AsyncIterator : Object).prototype), verb(\"next\"), verb(\"throw\"), verb(\"return\", awaitReturn), i[Symbol.asyncIterator] = function () { return this; }, i;\n function awaitReturn(f) { return function (v) { return Promise.resolve(v).then(f, reject); }; }\n function verb(n, f) { if (g[n]) { i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; if (f) i[n] = f(i[n]); } }\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\n function fulfill(value) { resume(\"next\", value); }\n function reject(value) { resume(\"throw\", value); }\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\n}\n\nexport function __asyncDelegator(o) {\n var i, p;\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: false } : f ? f(v) : v; } : f; }\n}\n\nexport function __asyncValues(o) {\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\n var m = o[Symbol.asyncIterator], i;\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\n}\n\nexport function __makeTemplateObject(cooked, raw) {\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\n return cooked;\n};\n\nvar __setModuleDefault = Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n};\n\nvar ownKeys = function(o) {\n ownKeys = Object.getOwnPropertyNames || function (o) {\n var ar = [];\n for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;\n return ar;\n };\n return ownKeys(o);\n};\n\nexport function __importStar(mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== \"default\") __createBinding(result, mod, k[i]);\n __setModuleDefault(result, mod);\n return result;\n}\n\nexport function __importDefault(mod) {\n return (mod && mod.__esModule) ? mod : { default: mod };\n}\n\nexport function __classPrivateFieldGet(receiver, state, kind, f) {\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\n}\n\nexport function __classPrivateFieldSet(receiver, state, value, kind, f) {\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\n}\n\nexport function __classPrivateFieldIn(state, receiver) {\n if (receiver === null || (typeof receiver !== \"object\" && typeof receiver !== \"function\")) throw new TypeError(\"Cannot use 'in' operator on non-object\");\n return typeof state === \"function\" ? receiver === state : state.has(receiver);\n}\n\nexport function __addDisposableResource(env, value, async) {\n if (value !== null && value !== void 0) {\n if (typeof value !== \"object\" && typeof value !== \"function\") throw new TypeError(\"Object expected.\");\n var dispose, inner;\n if (async) {\n if (!Symbol.asyncDispose) throw new TypeError(\"Symbol.asyncDispose is not defined.\");\n dispose = value[Symbol.asyncDispose];\n }\n if (dispose === void 0) {\n if (!Symbol.dispose) throw new TypeError(\"Symbol.dispose is not defined.\");\n dispose = value[Symbol.dispose];\n if (async) inner = dispose;\n }\n if (typeof dispose !== \"function\") throw new TypeError(\"Object not disposable.\");\n if (inner) dispose = function() { try { inner.call(this); } catch (e) { return Promise.reject(e); } };\n env.stack.push({ value: value, dispose: dispose, async: async });\n }\n else if (async) {\n env.stack.push({ async: true });\n }\n return value;\n}\n\nvar _SuppressedError = typeof SuppressedError === \"function\" ? SuppressedError : function (error, suppressed, message) {\n var e = new Error(message);\n return e.name = \"SuppressedError\", e.error = error, e.suppressed = suppressed, e;\n};\n\nexport function __disposeResources(env) {\n function fail(e) {\n env.error = env.hasError ? new _SuppressedError(e, env.error, \"An error was suppressed during disposal.\") : e;\n env.hasError = true;\n }\n var r, s = 0;\n function next() {\n while (r = env.stack.pop()) {\n try {\n if (!r.async && s === 1) return s = 0, env.stack.push(r), Promise.resolve().then(next);\n if (r.dispose) {\n var result = r.dispose.call(r.value);\n if (r.async) return s |= 2, Promise.resolve(result).then(next, function(e) { fail(e); return next(); });\n }\n else s |= 1;\n }\n catch (e) {\n fail(e);\n }\n }\n if (s === 1) return env.hasError ? Promise.reject(env.error) : Promise.resolve();\n if (env.hasError) throw env.error;\n }\n return next();\n}\n\nexport function __rewriteRelativeImportExtension(path, preserveJsx) {\n if (typeof path === \"string\" && /^\\.\\.?\\//.test(path)) {\n return path.replace(/\\.(tsx)$|((?:\\.d)?)((?:\\.[^./]+?)?)\\.([cm]?)ts$/i, function (m, tsx, d, ext, cm) {\n return tsx ? preserveJsx ? \".jsx\" : \".js\" : d && (!ext || !cm) ? m : (d + ext + \".\" + cm.toLowerCase() + \"js\");\n });\n }\n return path;\n}\n\nexport default {\n __extends,\n __assign,\n __rest,\n __decorate,\n __param,\n __esDecorate,\n __runInitializers,\n __propKey,\n __setFunctionName,\n __metadata,\n __awaiter,\n __generator,\n __createBinding,\n __exportStar,\n __values,\n __read,\n __spread,\n __spreadArrays,\n __spreadArray,\n __await,\n __asyncGenerator,\n __asyncDelegator,\n __asyncValues,\n __makeTemplateObject,\n __importStar,\n __importDefault,\n __classPrivateFieldGet,\n __classPrivateFieldSet,\n __classPrivateFieldIn,\n __addDisposableResource,\n __disposeResources,\n __rewriteRelativeImportExtension,\n};\n","import { 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 { 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","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 { 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 { 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","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","export enum EShaderStage {\n VERTEX,\n FRAGMENT,\n ALL\n}\n","import { GalaceanDataType, TypeAny } from \"../../common\";\nimport { Keyword } from \"../../common/enums/Keyword\";\nimport { EShaderStage } from \"../../common/enums/ShaderStage\";\n\nexport enum 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 { 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 { 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","function _get_prototype_of(o) {\n _get_prototype_of = Object.setPrototypeOf ? Object.getPrototypeOf : function getPrototypeOf(o) {\n return o.__proto__ || Object.getPrototypeOf(o);\n };\n\n return _get_prototype_of(o);\n}\nexport { _get_prototype_of as _ };\n","function _is_native_function(fn) {\n return Function.toString.call(fn).indexOf(\"[native code]\") !== -1;\n}\nexport { _is_native_function as _ };\n","import { _ as _construct } from \"./_construct.js\";\nimport { _ as _get_prototype_of } from \"./_get_prototype_of.js\";\nimport { _ as _is_native_function } from \"./_is_native_function.js\";\nimport { _ as _set_prototype_of } from \"./_set_prototype_of.js\";\n\nfunction _wrap_native_super(Class) {\n var _cache = typeof Map === \"function\" ? new Map() : undefined;\n _wrap_native_super = function(Class) {\n if (Class === null || !_is_native_function(Class)) return Class;\n if (typeof Class !== \"function\") throw new TypeError(\"Super expression must either be null or a function\");\n if (typeof _cache !== \"undefined\") {\n if (_cache.has(Class)) return _cache.get(Class);\n _cache.set(Class, Wrapper);\n }\n\n function Wrapper() {\n return _construct(Class, arguments, _get_prototype_of(this).constructor);\n }\n Wrapper.prototype = Object.create(Class.prototype, { constructor: { value: Wrapper, enumerable: false, writable: true, configurable: true } });\n\n return _set_prototype_of(Wrapper, Class);\n };\n\n return _wrap_native_super(Class);\n}\nexport { _wrap_native_super as _ };\n","import { ShaderPosition } from \"./common/ShaderPosition\";\nimport { ShaderRange } from \"./common/ShaderRange\";\n\nexport class GSError extends Error {\n static wrappingLineCount = 2;\n\n constructor(\n name: GSErrorName,\n message: string,\n public readonly location: ShaderRange | ShaderPosition,\n public readonly source: string,\n public readonly file?: string\n ) {\n super(message);\n this.name = name;\n }\n\n override toString(): string {\n let start: ShaderPosition, end: ShaderPosition;\n const { message, location, source } = this;\n if (!source) {\n return message;\n }\n\n if (location instanceof ShaderPosition) {\n start = end = location;\n } else {\n start = location.start;\n end = location.end;\n }\n const lines = source.split(\"\\n\");\n\n let diagnosticMessage = `${this.name}: ${message}\\n\\n`;\n\n // #if _VERBOSE\n const lineSplit = \"|···\";\n\n const wrappingLineCount = GSError.wrappingLineCount;\n for (let i = start.line - wrappingLineCount, n = end.line + wrappingLineCount; i <= n; i++) {\n const line = lines[i];\n diagnosticMessage += lineSplit + `${line}\\n`;\n\n if (i < start.line || i > end.line) continue;\n\n let remarkStart = 0;\n let remarkEnd = line.length;\n let paddingLength = lineSplit.length;\n if (i === start.line) {\n remarkStart = start.column;\n paddingLength += start.column;\n }\n if (i === end.line) {\n remarkEnd = end.column;\n }\n const remarkLength = Math.max(remarkEnd - remarkStart, 1);\n\n diagnosticMessage += \" \".repeat(paddingLength) + \"^\".repeat(remarkLength) + \"\\n\";\n }\n // #endif\n\n return diagnosticMessage;\n }\n}\n\nexport enum GSErrorName {\n PreprocessorError = \"PreprocessorError\",\n CompilationError = \"CompilationError\",\n ScannerError = \"ScannerError\",\n CompilationWarn = \"CompilationWarning\"\n}\n","import { GalaceanDataType } from \"../../common\";\nimport { ASTNode } from \"../AST\";\n\nexport class SymbolDataType {\n constructor(\n public type: GalaceanDataType,\n public typeLexeme: string,\n public arraySpecifier?: ASTNode.ArraySpecifier\n ) {}\n}\n","import { IBaseSymbol } from \"../../common/IBaseSymbol\";\nimport { GalaceanDataType, TypeAny } from \"../../common/types\";\nimport { ASTNode } from \"../AST\";\nimport { SymbolDataType } from \"./SymbolDataType\";\n\nexport enum ESymbolType {\n VAR,\n FN,\n STRUCT,\n Any\n}\n\nexport type SymbolAstNode =\n | ASTNode.Initializer\n | ASTNode.StructSpecifier\n | ASTNode.FunctionDefinition\n | ASTNode.ParameterDeclarator\n | ASTNode.InitDeclaratorList\n | ASTNode.VariableDeclaration;\n\nexport class SymbolInfo implements IBaseSymbol {\n constructor(\n public ident: string,\n public type: ESymbolType,\n public astNode?: SymbolAstNode,\n public dataType?: SymbolDataType,\n public paramSignature?: GalaceanDataType[],\n public isInMacroBranch = false\n ) {}\n\n set(\n ident: string,\n symbolType: ESymbolType,\n astNode?: SymbolAstNode,\n dataType?: SymbolDataType,\n paramSignature?: GalaceanDataType[]\n ) {\n this.ident = ident;\n this.type = symbolType;\n this.astNode = astNode;\n this.dataType = dataType;\n this.paramSignature = paramSignature;\n }\n\n equal(symbol: SymbolInfo): boolean {\n if (symbol.type !== ESymbolType.Any && this.type !== symbol.type) return false;\n if (this.type === ESymbolType.FN) {\n if (!symbol.astNode && !symbol.paramSignature) return true;\n\n const params = (<ASTNode.FunctionDefinition>this.astNode).protoType.paramSig;\n const comparedParams = symbol.paramSignature ?? (<ASTNode.FunctionDefinition>symbol.astNode).protoType.paramSig;\n const length = params?.length;\n if (length !== comparedParams?.length) return false;\n for (let i = 0; i < length; i++) {\n const t1 = params[i],\n t2 = comparedParams[i];\n if (t1 === TypeAny || t2 === TypeAny) continue;\n if (t1 !== t2) return false;\n }\n return true;\n }\n return true;\n }\n}\n","import { ASTNode } from \"../AST\";\nimport { SymbolDataType } from \"./SymbolDataType\";\nimport { ESymbolType, SymbolInfo } from \"./SymbolInfo\";\n\nexport class FnSymbol extends SymbolInfo {\n declare astNode: ASTNode.FunctionDefinition;\n\n constructor(lexeme: string, astNode: ASTNode.FunctionDefinition) {\n const type = new SymbolDataType(\n astNode.protoType.returnType.type,\n astNode.protoType.returnType.typeSpecifier.lexeme\n );\n super(lexeme, ESymbolType.FN, astNode, type);\n }\n}\n","import { ASTNode } from \"../AST\";\nimport { ESymbolType, SymbolInfo } from \"./SymbolInfo\";\n\nexport class StructSymbol extends SymbolInfo {\n declare astNode: ASTNode.StructSpecifier;\n\n constructor(lexeme: string, astNode: ASTNode.StructSpecifier) {\n super(lexeme, ESymbolType.STRUCT, astNode);\n }\n}\n","import { ASTNode } from \"../AST\";\nimport { SymbolDataType } from \"./SymbolDataType\";\nimport { ESymbolType, SymbolInfo } from \"./SymbolInfo\";\n\nexport class VarSymbol extends SymbolInfo {\n declare astNode:\n | ASTNode.Initializer\n | ASTNode.ParameterDeclarator\n | ASTNode.InitDeclaratorList\n | ASTNode.VariableDeclaration;\n\n readonly isGlobalVariable: boolean;\n\n constructor(\n ident: string,\n dataType: SymbolDataType,\n isGlobalVariable: boolean,\n initAst:\n | ASTNode.Initializer\n | ASTNode.ParameterDeclarator\n | ASTNode.InitDeclaratorList\n | ASTNode.VariableDeclaration\n ) {\n super(ident, ESymbolType.VAR, initAst, dataType);\n this.isGlobalVariable = isGlobalVariable;\n }\n}\n","import { SymbolInfo, SymbolTable } from \"../parser/symbolTable\";\nimport { ASTNode } from \"./AST\";\n\nexport class ShaderData {\n symbolTable: SymbolTable<SymbolInfo>;\n\n vertexMain: ASTNode.FunctionDefinition;\n fragmentMain: ASTNode.FunctionDefinition;\n\n globalPrecisions: ASTNode.PrecisionSpecifier[] = [];\n\n globalMacroDeclarations: ASTNode.GlobalDeclaration[] = [];\n\n getOuterGlobalMacroDeclarations(): ASTNode.GlobalDeclaration[] {\n return this.globalMacroDeclarations.filter((node) => node.parent instanceof ASTNode.GLShaderProgram);\n }\n}\n","import { ShaderRange } from \"../common\";\nimport { SymbolTable } from \"../common/SymbolTable\";\nimport { SymbolTableStack } from \"../common/SymbolTableStack\";\nimport { GSError, GSErrorName } from \"../GSError\";\nimport { SymbolInfo } from \"../parser/symbolTable\";\nimport { 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 { 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","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 { 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","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 { 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 { 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 const result = ret.join(\"\");\n\n // Replace multiple consecutive newlines with a single newline to clean up the output\n return result.replace(/\\n\\s*\\n+/g, \"\\n\");\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 { ETokenType } from \"../common\";\nimport { NoneTerminal, Terminal } from \"../parser/GrammarSymbol\";\nimport Production from \"./Production\";\nimport GrammarUtils from \"./Utils\";\n\nexport default class StateItem {\n static _id = 0;\n\n readonly production: Production;\n readonly position: number;\n readonly lookaheadSet: Set<Terminal>;\n readonly id: number;\n\n _needReInfer = true;\n get needReInfer() {\n return this._needReInfer;\n }\n set needReInfer(v: boolean) {\n this._needReInfer = v;\n }\n\n get curSymbol() {\n return this.production.derivation[this.position];\n }\n get nextSymbol() {\n return this.production.derivation[this.position + 1];\n }\n\n constructor(production: Production, position: number, lookahead: Iterable<Terminal>) {\n this.production = production;\n this.position = position;\n this.lookaheadSet = new Set();\n for (const la of lookahead) {\n this.lookaheadSet.add(la);\n }\n this.id = StateItem._id++;\n }\n\n addLookahead(ts: Iterable<Terminal>) {\n for (const t of ts) {\n if (this.lookaheadSet.has(t)) continue;\n this.lookaheadSet.add(t);\n this.needReInfer = true;\n }\n }\n\n symbolByOffset(offset: number) {\n return this.production.derivation[this.position + offset];\n }\n\n canReduce() {\n if (this.position > this.production.derivation.length - 1) return true;\n else {\n for (let i = this.position; i < this.production.derivation.length; i++) {\n if (this.production.derivation[i] !== ETokenType.EPSILON) return false;\n }\n return true;\n }\n }\n\n advance() {\n // #if _VERBOSE\n if (this.canReduce()) throw `Error: advance reduce-able parsing state item`;\n // #endif\n return new StateItem(this.production, this.position + 1, this.lookaheadSet);\n }\n\n // #if _VERBOSE\n toString() {\n const coreItem = this.production.derivation.map((item) => GrammarUtils.toString(item));\n coreItem[this.position] = \".\" + (coreItem[this.position] ?? \"\");\n\n return `${NoneTerminal[this.production.goal]} :=> ${coreItem.join(\"|\")} ;${Array.from(this.lookaheadSet)\n .map((item) => GrammarUtils.toString(item))\n .join(\"/\")}`;\n }\n // #endif\n}\n","import { Terminal } from \"../parser/GrammarSymbol\";\nimport Production from \"./Production\";\nimport StateItem from \"./StateItem\";\n\nexport default class State {\n static closureMap: Map<string /** state mapKey */, State> = new Map();\n static pool: Map<number, State> = new Map();\n static _id = 0;\n\n readonly id: number;\n readonly cores: Set<StateItem>;\n private _items: Set<StateItem>;\n get items() {\n return this._items;\n }\n\n closured = false;\n get needReInfer() {\n for (const core of this.cores) {\n if (core.needReInfer) return true;\n }\n return false;\n }\n\n private _stateItemPool: Map<string /** Map ID */, StateItem> = new Map();\n\n static create(cores: StateItem[]) {\n const cacheKey = this.getMapKey(cores);\n const state = this.closureMap.get(cacheKey);\n if (state) {\n for (const core of cores) {\n // merge lookahead\n state.createStateItem(core.production, core.position, core.lookaheadSet);\n }\n return state;\n }\n\n const newState = new State(cores);\n this.closureMap.set(cacheKey, newState);\n return newState;\n }\n\n // TODO: any optimization?\n static getMapKey(cores: StateItem[]) {\n return cores.map((item) => `${item.production.id},${item.position}`).join(\";\");\n }\n\n private constructor(cores: Iterable<StateItem>) {\n this.id = State._id++;\n this._items = new Set([...cores]);\n this.cores = new Set([...cores]);\n for (const it of cores) {\n const itemMapKey = this.getStateItemMapKey(it.production, it.position);\n this._stateItemPool.set(itemMapKey, it);\n }\n State.pool.set(this.id, this);\n }\n\n // TODO: any optimization?\n getStateItemMapKey(production: Production, position: number) {\n return `${production.id},${position}`;\n }\n\n createStateItem(production: Production, position: number, lookaheadSet: Iterable<Terminal> = new Set()) {\n const mapId = this.getStateItemMapKey(production, position);\n const item = this._stateItemPool.get(mapId);\n if (item) {\n for (const la of lookaheadSet) {\n if (item.lookaheadSet.has(la)) continue;\n item.lookaheadSet.add(la);\n item.needReInfer = true;\n }\n return item;\n }\n const newItem = new StateItem(production, position, lookaheadSet);\n this._stateItemPool.set(mapId, newItem);\n return newItem;\n }\n}\n","import { ETokenType, ShaderRange } from \"../common\";\nimport { ASTNode, TreeNode } from \"../parser/AST\";\nimport { TranslationRule } from \"../parser/SemanticAnalyzer\";\nimport { NoneTerminal, GrammarSymbol } from \"../parser/GrammarSymbol\";\nimport Production from \"./Production\";\nimport { ActionInfo, EAction } from \"./types\";\nimport { 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 { NoneTerminal, Terminal } from \"../parser/GrammarSymbol\";\n\nexport type StateActionTable = Map<number /** state ID */, ActionTable>;\nexport type ActionTable = Map<Terminal, ActionInfo>;\nexport type StateGotoTable = Map<number /** state ID */, GotoTable>;\nexport type GotoTable = Map<NoneTerminal, number /** state ID */>;\n\nexport enum EAction {\n Shift = 0,\n Reduce,\n Accept\n}\n\nexport interface ActionInfo {\n action: EAction;\n target?: number;\n}\n","import { Logger } from \"@galacean/engine\";\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 { NoneTerminal, GrammarSymbol } from \"../parser/GrammarSymbol\";\n\nexport default class Production {\n private static _id = 0;\n static pool: Map<number, Production> = new Map();\n\n readonly goal: NoneTerminal;\n readonly derivation: GrammarSymbol[];\n readonly id: number;\n\n constructor(goal: NoneTerminal, derivation: GrammarSymbol[]) {\n this.goal = goal;\n this.derivation = derivation;\n this.id = Production._id++;\n Production.pool.set(this.id, this);\n }\n}\n","import { ETokenType } from \"../common\";\nimport { NoneTerminal, GrammarSymbol } from \"./GrammarSymbol\";\nimport Production from \"../lalr/Production\";\n\nexport class Grammar {\n readonly productions: Production[];\n\n readonly startSymbol: NoneTerminal;\n\n static create(start: NoneTerminal, productions: GrammarSymbol[][]) {\n const _ps = productions.map((gsl) => {\n return new Production(<NoneTerminal>gsl[0], gsl.slice(1));\n });\n return new Grammar(start, _ps);\n }\n\n constructor(start: NoneTerminal, productions: Production[]) {\n this.startSymbol = start;\n productions.unshift(new Production(NoneTerminal.START, [start]));\n this.productions = productions;\n }\n\n getProductionList(nonTerminal: NoneTerminal) {\n return this.productions.filter((item) => item.goal === nonTerminal);\n }\n\n isNullableNT(NT: NoneTerminal) {\n return this.productions.find((item) => item.goal === NT && item.derivation[0] === ETokenType.EPSILON);\n }\n\n getProductionByID(pid: number) {\n return Production.pool.get(pid);\n }\n}\n","// Context Free Grammar of Galacean 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":["ShaderRange","set","start","end","dispose","ShaderPosition","index","ETokenType","TypeAny","Keyword","ShaderLabUtils","createObjectPool","type","pool","ClearableObjectPool","_shaderLabObjectPoolSet","push","clearAllShaderLabObjectPool","i","n","length","clear","createGSError","message","errorName","source","location","file","Logger","error","BaseToken","lexeme","arg","ShaderLab","createPosition","createRange","EOF","Preprocessor","parse","basePathForIncludeKey","outMacroDefineList","parseMacro","_parseMacroDefines","replace","_includeReg","_","includeName","_replace","getReferenceSymbolNames","macroDefineList","macroName","out","infos","info","valueType","referencedName","functionCallName","value","params","indexOf","_isNumber","str","isNaN","Number","_isExist","list","item","some","e","isFunction","every","p","outMacroList","match","_macroRegex","lastIndex","exec","name","paramsGroup","paramsStr","valueRaw","split","map","trim","filter","Boolean","_symbolReg","test","callMatch","_funcCallReg","arr","_mergeMacroDefineLists","from","to","target","src","path","URL","href","substring","ShaderPass","_shaderRootPath","chunk","ShaderLib","_repeatIncludeSet","has","warn","add","_macroDefineIncludeMap","get","chunkMacroDefineList","Map","Set","EShaderStage","isGenericType","t","BuiltinFunctionTable","BuiltinFunction","ident","returnType","scope","args","_returnType","getReturnType","fn","genType","_create","ALL","_createWithScop","getFn","parameterTypes","fnArgs","argLength","found","curFnArg","_realReturnType","isExist","realReturnType","FLOAT","INT","UINT","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","NoneTerminal","SymbolTable","_table","insert","symbol","isInMacroBranch","entry","equal","getSymbol","includeMacro","getSymbols","_getSymbols","SymbolTableStack","stack","_macroLevel","pushScope","popScope","pop","lookup","symbolTable","result","undefined","lookupAll","GSError","toString","diagnosticMessage","Error","wrappingLineCount","GSErrorName","SymbolDataType","arraySpecifier","typeLexeme","ESymbolType","SymbolInfo","dataType","paramSignature","astNode","symbolType","protoType","paramSig","comparedParams","t1","t2","FnSymbol","typeSpecifier","FN","StructSymbol","STRUCT","VarSymbol","isGlobalVariable","initAst","VAR","ShaderData","globalPrecisions","globalMacroDeclarations","getOuterGlobalMacroDeclarations","node","parent","ASTNode","GLShaderProgram","SemanticAnalyzer","semanticStack","acceptRule","symbolTableStack","curFunctionInfo","_shaderData","_translationRuleTable","reset","_macroDefineList","addTranslationRule","pid","rule","getTranslationRule","reportError","loc","reportWarning","CompilationWarn","_processingPassText","shaderData","_lookupSymbol","SymbolType","StructProp","mrtIndex","typeInfo","ASTNodeDecorator","nonTerminal","prototype","nt","TreeNode","children","_location","_children","child","_parent","init","setCache","code","_codeCache","getCache","codeGen","visitor","defaultCodeGen","semanticAnalyze","sa","_unwrapToken","TrivialNode","_ignore","ScopeBrace","scope_brace","ScopeEndBrace","scope_end_brace","JumpStatement","isFragReturnStatement","RETURN","returnStatement","visitJumpStatement","jump_statement","ExpressionAstNode","_type","SingleDeclaration","childrenLen","fullyType","id","sm","initializer","visitSingleDeclaration","single_declaration","FullySpecifiedType","fully_specified_type","TypeQualifier","type_qualifier","SingleTypeQualifier","qualifier","single_type_qualifier","TypeSpecifier","arraySize","firstChild","size","isCustom","type_specifier","ArraySpecifier","integerConstantExpr","array_specifier","IntegerConstantExpressionOperator","operator","PLUS","compute","a","b","DASH","STAR","SLASH","PERCENT","integer_constant_expression_operator","IntegerConstantExpression","integer_constant_expression","TypeSpecifierNonArray","tt","type_specifier_nonarray","ExtBuiltinTypeSpecifierNonArray","token","ext_builtin_type_specifier_nonarray","InitDeclaratorList","childrenLength","initDeclList","init_declarator_list","IdentifierList","idList","curIdList","listIdLength","identifier_list","Declaration","visitDeclaration","declaration","FunctionProtoType","declarator","parameterList","parameterInfoList","function_prototype","FunctionDeclarator","header","function_declarator","FunctionHeader","visitFunctionHeader","function_header","FunctionParameterList","ParameterDeclaration","decl","MacroParamBlock","visitFunctionParameterList","function_parameter_list","MacroParamCaseList","macro_param_case_list","macro_param_block","MacroParameterBranch","macro_parameter_branch","parameterDeclarator","ParameterDeclarator","varSymbol","parameter_declaration","parameter_declarator","CompoundStatementNoScope","compound_statement_no_scope","StatementList","visitStatementList","statement_list","FunctionDefinition","statements","VOID","visitFunctionDefinition","function_definition","FunctionCall","visitFunctionCall","function_call","FunctionCallGeneric","fnSymbol","functionIdentifier","isBuiltin","fnIdent","paramList","FunctionCallParameterList","lookupSymbol","function_call_generic","paramNodes","AssignmentExpression","expr","MacroCallArgBlock","function_call_parameter_list","MacroCallArgCaseList","macro_call_arg_case_list","macro_call_arg_block","MacroCallArgBranch","macro_call_arg_branch","PrecisionSpecifier","precision_specifier","FunctionIdentifier","visitFunctionIdentifier","function_identifier","assignment_expression","Expression","expression","PrimaryExpression","VariableIdentifier","INT_CONSTANT","FLOAT_CONSTANT","True","False","primary_expression","PostfixExpression","visitPostfixExpression","postfix_expression","StructSpecifier","propList","macroExpressions","visitStructSpecifier","struct_specifier","StructDeclarationList","props","struct_declaration_list","StructDeclaration","_typeSpecifier","_declaratorList","macroStructDeclaration","macroProps","LayoutQualifier","prop","declaratorList","declaratorListLength","struct_declaration","MacroStructDeclaration","macro_struct_declaration","MacroStructBranch","lastNode","MacroPopContext","macro_struct_branch","layout_qualifier","StructDeclaratorList","listLength","struct_declarator_list","StructDeclarator","struct_declarator","VariableDeclaration","isStatic","visitGlobalVariableDeclaration","variable_declaration","VariableDeclarationList","variableDeclarations","newVariable","variable_declaration_list","referenceGlobalSymbolNames","_symbols","symbols","needFindNames","referenceSymbolNames","builtinVar","Any","currentScopeSymbol","s","visitVariableIdentifier","getLexeme","variable_identifier","gs_shader_program","GlobalDeclaration","MacroUndef","GlobalMacroIfStatement","global_declaration","macro_undef","MacroPushContext","macro_push_context","macro_pop_context","MacroElifExpression","macro_elif_expression","MacroElseExpression","macro_else_expression","GlobalMacroDeclaration","global_macro_declaration","global_macro_if_statement","GlobalMacroBranch","global_macro_branch","MacroIfStatement","macro_if_statement","MacroBranch","macro_branch","MacroCallSymbol","macro_call_symbol","MacroCallFunction","visitMacroCallFunction","macro_call_function","ParserUtils","unwrapNodeByType","Token","isTerminal","START","VisitorContext","attributeStructs","attributeList","varyingStructs","varyingList","mrtStructs","mrtList","_referencedGlobalMacroASTs","resetAll","_referencedAttributeList","Object","create","_referencedVaryingList","_referencedMRTList","_referencedGlobals","isAttributeStruct","findIndex","isVaryingStruct","isMRTStruct","referenceAttribute","CompilationError","referenceVarying","referenceMRTProp","referenceGlobal","_passSymbolTable","_singleton","context","TempArray","array","Array","CodeGenVisitor","_tmpArrayPool","ret","return","join","derivationLength","postExpr","identNode","indexNode","identLexeme","indexLexeme","_reportError","call","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","returnLocation","mrtSymbols","mrtSymbol","lastLength","keys","structNodes","macros","referencedGlobals","referencedGlobalMacroASTs","values","macro","_visitGlobalMacroIfStatement","variableDeclaration","GLES100Visitor","propReferenced","find","getVisitor","V3_GL_FragColor","GLES300Visitor","_otherCodeArray","_fragColorVariableRegistered","_registerFragColorVariable","BaseLexer","_currentIndex","_source","setSource","getShaderPosition","backOffset","isEnd","getCurChar","getCurCharCode","charCodeAt","advance","count","skipSpace","includeLineBreak","isWhiteSpaceChar","skipCommentsAndSpace","nextChar","charCode","peek","offset","scanLexeme","throwError","scanTwoExpectedLexemes","lexeme1","lexeme2","pos","msgs","ScannerError","scanPairedChar","left","right","balanced","skipLeading","sourceLength","currentIndex","level","currentChar","isDigit","isAlpha","isAlnum","isPreprocessorStartChar","includeBreak","Lexer","_needScanMacroConditionExpression","tokenize","scanToken","_scanMacroConditionExpression","curCharCode","_scanDirectives","_scanWord","_scanNum","curChar","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","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","MacroParserToken","MacroParserKeyword","MacroDefine","body","_argsLexemes","_replaceRegex","RegExp","expandFunctionBody","PreprocessorError","m","MacroParserLexer","macroLvl","scanWordsUntilTerminator","terminatorChar","tokens","scanWord","slice","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","generatedIdx","seg","originSlice","rangeInBlock","generatedIdxEnd","MacroParser","_reset","_addPredefinedMacro","lexer","_parseDirectives","_expandSegmentsStack","_definedMacros","macroBody","_parseMacro","_parseDefine","_parseUndef","_parseIfDirective","_getExpandSegments","sourceMap","directiveType","directiveLength","skipMacro","shouldInclude","_parseConstantExpression","macroToken","startsWith","expanded","_expandMacroChunk","_addContentReplace","content","blockRange","_addEmptyReplace","_processConditionalDirective","scanner","constantExpr","_parseLogicalOrExpression","operand1","_parseLogicalAndExpression","operand2","_parseEqualityExpression","_parseRelationalExpression","includes","_parseShiftExpression","opPos","_parseAdditiveExpression","_parseMulticativeExpression","_parseUnaryExpression","parenExpr","_parseParenthesisExpression","_parseConstant","withParen","isInteger","_parseMacroFunctionArgs","startIndex","argStart","k","endIndex","_expandMacroBody","visitedMacros","_expandVisitedMacros","currentVersionId","_expandVersionId","expandedBody","hasExpansion","replacement","newEndIndex","scannerOrFile","sourceFile","sourceRange","macroArgs","macroDefine","delete","macroBodyExpanded","expandedContent","remainingLength","macroContent","StateItem","production","position","lookahead","_needReInfer","lookaheadSet","la","_id","addLookahead","ts","needReInfer","symbolByOffset","derivation","canReduce","EPSILON","v","curSymbol","nextSymbol","State","cores","closured","_stateItemPool","_items","it","itemMapKey","getStateItemMapKey","createStateItem","mapId","newItem","cacheKey","getMapKey","state","closureMap","core","newState","items","GrammarUtils","createProductionWithOptions","goal","options","astTypePool","opt","addMapSetItem","isSubSet","sb","isActionEqual","action","EAction","LALR1","grammar","firstSetMap","followSetMap","actionTable","gotoTable","_firstSetNTStack","generate","computeFirstSet","buildStateTable","startStateItemCore","productions","startState","_extendState","_closure","newStates","_inferNextState","ns","_extendStateItem","productionList","getProductionList","newLookaheadSet","lastFirstSet","terminalExist","Utils","coreMap","stateActionTable","stateGotoTable","stateItem","Reduce","Accept","_addAction","nextItem","entries","gs","Shift","table","terminal","exist","_computeFirstSetForNT","NT","idx","computingFS","len","curNT","firstSet","isNullableNT","succeedFirstSet","Production","Grammar","startSymbol","unshift","getProductionByID","_ps","gsl","productionAndRules","variable_declaration_statement","storage_qualifier","precision_qualifier","interpolation_qualifier","invariant_qualifier","conditional_expression","logical_or_expression","logical_xor_expression","logical_and_expression","inclusive_or_expression","exclusive_or_expression","and_expression","equality_expression","relational_expression","shift_expression","additive_expression","multiplicative_expression","unary_expression","unary_operator","assignment_operator","AND_ASSIGN","statement","compound_statement","simple_statement","expression_statement","selection_statement","iteration_statement","initializer_list","condition","for_init_statement","for_rest_statement","conditionopt","createGrammar","ShaderTargetParser","_traceBackStack","sematicAnalyzer","SematicAnalyzer","performance","now","traceBackStack","nextToken","next","loopCount","actionInfo","reduceProduction","translationRule","nextState","generator","curState","ShaderSourceFactory","createRenderStates","constantMap","variableMap","createShaderSource","subShaders","pendingContents","renderStates","createSubShaderSource","passes","tags","createShaderPassSource","createUsePass","isUsePass","ShaderSourceSymbol","other","SourceLexer","hasPendingContent","scanNumber","_scanDigits","scanColor","r","g","Color","wordToken","symbolKeyword","_symbolLexemeTable","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","errors","_symbolTableStack","_pushScope","_lexer","shaderSource","_parseShader","shaderPendingContents","shaderRenderStates","subShader","curSubShaderGlobalStatements","concat","globalSubShaderStates","_mergeRenderStates","j","pass","globalPassRenderStates","passGlobalStatements","contents","braceLevel","_addPendingContents","_parseSubShader","_popScope","_parseRenderState","_parseRenderStateDeclarationOrAssignment","outRenderStates","stateToken","renderState","_parseRenderStateProperties","_createCompileError","outTarget","targetVariableMap","sourceVariableMap","key","sourceConstantMap","targetConstantMap","_parseVariableDeclaration","_parseRenderStateProperty","stateLexeme","propertyToken","propertyLexeme","stateElementKey","keyIndex","scannedLexeme","renderStateElementKey","RenderStateElementKey","propertyValue","valueTokenType","constValueToken","_renderStateConstMap","_parseRenderQueueDeclarationOrAssignment","outPendingContents","subShaderSource","_parsePass","_parseRenderStateAndTags","_parseTags","passSource","outGlobalContents","outTags","_parseShaderSource","_parseShaderPass","backend","totalStartTime","noIncludeContent","parser","_parser","program","ShaderLanguage","GLSLES100","codeGenStartTime","_parseMacros","parsedContent","line","column","_shaderPositionPool","_shaderRangePool","version","mode","console","log"],"mappings":"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"}
1
+ {"version":3,"file":"browser.js","sources":["../../../node_modules/.pnpm/@swc+helpers@0.5.15/node_modules/@swc/helpers/esm/_set_prototype_of.js","../../../node_modules/.pnpm/@swc+helpers@0.5.15/node_modules/@swc/helpers/esm/_inherits.js","../../../node_modules/.pnpm/@swc+helpers@0.5.15/node_modules/@swc/helpers/esm/_instanceof.js","../../../node_modules/.pnpm/@swc+helpers@0.5.15/node_modules/@swc/helpers/esm/_create_class.js","../../../node_modules/.pnpm/@swc+helpers@0.5.15/node_modules/@swc/helpers/esm/_array_like_to_array.js","../../../node_modules/.pnpm/@swc+helpers@0.5.15/node_modules/@swc/helpers/esm/_unsupported_iterable_to_array.js","../../../node_modules/.pnpm/@swc+helpers@0.5.15/node_modules/@swc/helpers/esm/_create_for_of_iterator_helper_loose.js","../../../node_modules/.pnpm/tslib@2.8.1/node_modules/tslib/tslib.es6.mjs","../src/common/ShaderRange.ts","../src/common/ShaderPosition.ts","../src/common/types.ts","../src/common/enums/Keyword.ts","../src/ShaderLabUtils.ts","../src/common/BaseToken.ts","../src/Preprocessor.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","../src/common/enums/ShaderStage.ts","../src/parser/builtin/functions.ts","../src/parser/builtin/variables.ts","../src/parser/GrammarSymbol.ts","../src/common/SymbolTable.ts","../src/common/SymbolTableStack.ts","../../../node_modules/.pnpm/@swc+helpers@0.5.15/node_modules/@swc/helpers/esm/_get_prototype_of.js","../../../node_modules/.pnpm/@swc+helpers@0.5.15/node_modules/@swc/helpers/esm/_is_native_function.js","../../../node_modules/.pnpm/@swc+helpers@0.5.15/node_modules/@swc/helpers/esm/_wrap_native_super.js","../src/GSError.ts","../src/parser/symbolTable/SymbolDataType.ts","../src/parser/symbolTable/SymbolInfo.ts","../src/parser/symbolTable/FnSymbol.ts","../src/parser/symbolTable/StructSymbol.ts","../src/parser/symbolTable/VarSymbol.ts","../src/parser/ShaderInfo.ts","../src/parser/SemanticAnalyzer.ts","../src/parser/types.ts","../src/parser/AST.ts","../src/ParserUtils.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/constants.ts","../src/macroProcessor/MacroDefine.ts","../src/macroProcessor/MacroParserLexer.ts","../src/macroProcessor/Utils.ts","../src/macroProcessor/MacroParser.ts","../src/lalr/StateItem.ts","../src/lalr/State.ts","../src/lalr/Utils.ts","../src/lalr/types.ts","../src/lalr/LALR1.ts","../src/lalr/Production.ts","../src/parser/Grammar.ts","../src/lalr/CFG.ts","../src/parser/ShaderTargetParser.ts","../../../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 _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","function _array_like_to_array(arr, len) {\n if (len == null || len > arr.length) len = arr.length;\n\n for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i];\n\n return arr2;\n}\nexport { _array_like_to_array as _ };\n","import { _ as _array_like_to_array } from \"./_array_like_to_array.js\";\n\nfunction _unsupported_iterable_to_array(o, minLen) {\n if (!o) return;\n if (typeof o === \"string\") return _array_like_to_array(o, minLen);\n\n var n = Object.prototype.toString.call(o).slice(8, -1);\n\n if (n === \"Object\" && o.constructor) n = o.constructor.name;\n if (n === \"Map\" || n === \"Set\") return Array.from(n);\n if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _array_like_to_array(o, minLen);\n}\nexport { _unsupported_iterable_to_array as _ };\n","import { _ as _unsupported_iterable_to_array } from \"./_unsupported_iterable_to_array.js\";\n\nfunction _create_for_of_iterator_helper_loose(o, allowArrayLike) {\n var it = typeof Symbol !== \"undefined\" && o[Symbol.iterator] || o[\"@@iterator\"];\n\n if (it) return (it = it.call(o)).next.bind(it);\n // Fallback for engines without symbol support\n if (Array.isArray(o) || (it = _unsupported_iterable_to_array(o)) || allowArrayLike && o && typeof o.length === \"number\") {\n if (it) o = it;\n\n var i = 0;\n\n return function() {\n if (i >= o.length) return { done: true };\n\n return { done: false, value: o[i++] };\n };\n }\n\n throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}\nexport { _create_for_of_iterator_helper_loose as _ };\n","/******************************************************************************\nCopyright (c) Microsoft Corporation.\n\nPermission to use, copy, modify, and/or distribute this software for any\npurpose with or without fee is hereby granted.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\nPERFORMANCE OF THIS SOFTWARE.\n***************************************************************************** */\n/* global Reflect, Promise, SuppressedError, Symbol, Iterator */\n\nvar extendStatics = function(d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n};\n\nexport function __extends(d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n}\n\nexport var __assign = function() {\n __assign = Object.assign || function __assign(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n }\n return t;\n }\n return __assign.apply(this, arguments);\n}\n\nexport function __rest(s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\n t[p[i]] = s[p[i]];\n }\n return t;\n}\n\nexport function __decorate(decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n}\n\nexport function __param(paramIndex, decorator) {\n return function (target, key) { decorator(target, key, paramIndex); }\n}\n\nexport function __esDecorate(ctor, descriptorIn, decorators, contextIn, initializers, extraInitializers) {\n function accept(f) { if (f !== void 0 && typeof f !== \"function\") throw new TypeError(\"Function expected\"); return f; }\n var kind = contextIn.kind, key = kind === \"getter\" ? \"get\" : kind === \"setter\" ? \"set\" : \"value\";\n var target = !descriptorIn && ctor ? contextIn[\"static\"] ? ctor : ctor.prototype : null;\n var descriptor = descriptorIn || (target ? Object.getOwnPropertyDescriptor(target, contextIn.name) : {});\n var _, done = false;\n for (var i = decorators.length - 1; i >= 0; i--) {\n var context = {};\n for (var p in contextIn) context[p] = p === \"access\" ? {} : contextIn[p];\n for (var p in contextIn.access) context.access[p] = contextIn.access[p];\n context.addInitializer = function (f) { if (done) throw new TypeError(\"Cannot add initializers after decoration has completed\"); extraInitializers.push(accept(f || null)); };\n var result = (0, decorators[i])(kind === \"accessor\" ? { get: descriptor.get, set: descriptor.set } : descriptor[key], context);\n if (kind === \"accessor\") {\n if (result === void 0) continue;\n if (result === null || typeof result !== \"object\") throw new TypeError(\"Object expected\");\n if (_ = accept(result.get)) descriptor.get = _;\n if (_ = accept(result.set)) descriptor.set = _;\n if (_ = accept(result.init)) initializers.unshift(_);\n }\n else if (_ = accept(result)) {\n if (kind === \"field\") initializers.unshift(_);\n else descriptor[key] = _;\n }\n }\n if (target) Object.defineProperty(target, contextIn.name, descriptor);\n done = true;\n};\n\nexport function __runInitializers(thisArg, initializers, value) {\n var useValue = arguments.length > 2;\n for (var i = 0; i < initializers.length; i++) {\n value = useValue ? initializers[i].call(thisArg, value) : initializers[i].call(thisArg);\n }\n return useValue ? value : void 0;\n};\n\nexport function __propKey(x) {\n return typeof x === \"symbol\" ? x : \"\".concat(x);\n};\n\nexport function __setFunctionName(f, name, prefix) {\n if (typeof name === \"symbol\") name = name.description ? \"[\".concat(name.description, \"]\") : \"\";\n return Object.defineProperty(f, \"name\", { configurable: true, value: prefix ? \"\".concat(prefix, \" \", name) : name });\n};\n\nexport function __metadata(metadataKey, metadataValue) {\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\n}\n\nexport function __awaiter(thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n}\n\nexport function __generator(thisArg, body) {\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g = Object.create((typeof Iterator === \"function\" ? Iterator : Object).prototype);\n return g.next = verb(0), g[\"throw\"] = verb(1), g[\"return\"] = verb(2), typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n function verb(n) { return function (v) { return step([n, v]); }; }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (g && (g = 0, op[0] && (_ = 0)), _) try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [op[0] & 2, t.value];\n switch (op[0]) {\n case 0: case 1: t = op; break;\n case 4: _.label++; return { value: op[1], done: false };\n case 5: _.label++; y = op[1]; op = [0]; continue;\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n if (t[2]) _.ops.pop();\n _.trys.pop(); continue;\n }\n op = body.call(thisArg, _);\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n }\n}\n\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n});\n\nexport function __exportStar(m, o) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\n}\n\nexport function __values(o) {\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\n if (m) return m.call(o);\n if (o && typeof o.length === \"number\") return {\n next: function () {\n if (o && i >= o.length) o = void 0;\n return { value: o && o[i++], done: !o };\n }\n };\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\n}\n\nexport function __read(o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o), r, ar = [], e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n }\n catch (error) { e = { error: error }; }\n finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n }\n finally { if (e) throw e.error; }\n }\n return ar;\n}\n\n/** @deprecated */\nexport function __spread() {\n for (var ar = [], i = 0; i < arguments.length; i++)\n ar = ar.concat(__read(arguments[i]));\n return ar;\n}\n\n/** @deprecated */\nexport function __spreadArrays() {\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\n r[k] = a[j];\n return r;\n}\n\nexport function __spreadArray(to, from, pack) {\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\n if (ar || !(i in from)) {\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\n ar[i] = from[i];\n }\n }\n return to.concat(ar || Array.prototype.slice.call(from));\n}\n\nexport function __await(v) {\n return this instanceof __await ? (this.v = v, this) : new __await(v);\n}\n\nexport function __asyncGenerator(thisArg, _arguments, generator) {\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\n return i = Object.create((typeof AsyncIterator === \"function\" ? AsyncIterator : Object).prototype), verb(\"next\"), verb(\"throw\"), verb(\"return\", awaitReturn), i[Symbol.asyncIterator] = function () { return this; }, i;\n function awaitReturn(f) { return function (v) { return Promise.resolve(v).then(f, reject); }; }\n function verb(n, f) { if (g[n]) { i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; if (f) i[n] = f(i[n]); } }\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\n function fulfill(value) { resume(\"next\", value); }\n function reject(value) { resume(\"throw\", value); }\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\n}\n\nexport function __asyncDelegator(o) {\n var i, p;\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: false } : f ? f(v) : v; } : f; }\n}\n\nexport function __asyncValues(o) {\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\n var m = o[Symbol.asyncIterator], i;\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\n}\n\nexport function __makeTemplateObject(cooked, raw) {\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\n return cooked;\n};\n\nvar __setModuleDefault = Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n};\n\nvar ownKeys = function(o) {\n ownKeys = Object.getOwnPropertyNames || function (o) {\n var ar = [];\n for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;\n return ar;\n };\n return ownKeys(o);\n};\n\nexport function __importStar(mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== \"default\") __createBinding(result, mod, k[i]);\n __setModuleDefault(result, mod);\n return result;\n}\n\nexport function __importDefault(mod) {\n return (mod && mod.__esModule) ? mod : { default: mod };\n}\n\nexport function __classPrivateFieldGet(receiver, state, kind, f) {\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\n}\n\nexport function __classPrivateFieldSet(receiver, state, value, kind, f) {\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\n}\n\nexport function __classPrivateFieldIn(state, receiver) {\n if (receiver === null || (typeof receiver !== \"object\" && typeof receiver !== \"function\")) throw new TypeError(\"Cannot use 'in' operator on non-object\");\n return typeof state === \"function\" ? receiver === state : state.has(receiver);\n}\n\nexport function __addDisposableResource(env, value, async) {\n if (value !== null && value !== void 0) {\n if (typeof value !== \"object\" && typeof value !== \"function\") throw new TypeError(\"Object expected.\");\n var dispose, inner;\n if (async) {\n if (!Symbol.asyncDispose) throw new TypeError(\"Symbol.asyncDispose is not defined.\");\n dispose = value[Symbol.asyncDispose];\n }\n if (dispose === void 0) {\n if (!Symbol.dispose) throw new TypeError(\"Symbol.dispose is not defined.\");\n dispose = value[Symbol.dispose];\n if (async) inner = dispose;\n }\n if (typeof dispose !== \"function\") throw new TypeError(\"Object not disposable.\");\n if (inner) dispose = function() { try { inner.call(this); } catch (e) { return Promise.reject(e); } };\n env.stack.push({ value: value, dispose: dispose, async: async });\n }\n else if (async) {\n env.stack.push({ async: true });\n }\n return value;\n}\n\nvar _SuppressedError = typeof SuppressedError === \"function\" ? SuppressedError : function (error, suppressed, message) {\n var e = new Error(message);\n return e.name = \"SuppressedError\", e.error = error, e.suppressed = suppressed, e;\n};\n\nexport function __disposeResources(env) {\n function fail(e) {\n env.error = env.hasError ? new _SuppressedError(e, env.error, \"An error was suppressed during disposal.\") : e;\n env.hasError = true;\n }\n var r, s = 0;\n function next() {\n while (r = env.stack.pop()) {\n try {\n if (!r.async && s === 1) return s = 0, env.stack.push(r), Promise.resolve().then(next);\n if (r.dispose) {\n var result = r.dispose.call(r.value);\n if (r.async) return s |= 2, Promise.resolve(result).then(next, function(e) { fail(e); return next(); });\n }\n else s |= 1;\n }\n catch (e) {\n fail(e);\n }\n }\n if (s === 1) return env.hasError ? Promise.reject(env.error) : Promise.resolve();\n if (env.hasError) throw env.error;\n }\n return next();\n}\n\nexport function __rewriteRelativeImportExtension(path, preserveJsx) {\n if (typeof path === \"string\" && /^\\.\\.?\\//.test(path)) {\n return path.replace(/\\.(tsx)$|((?:\\.d)?)((?:\\.[^./]+?)?)\\.([cm]?)ts$/i, function (m, tsx, d, ext, cm) {\n return tsx ? preserveJsx ? \".jsx\" : \".js\" : d && (!ext || !cm) ? m : (d + ext + \".\" + cm.toLowerCase() + \"js\");\n });\n }\n return path;\n}\n\nexport default {\n __extends,\n __assign,\n __rest,\n __decorate,\n __param,\n __esDecorate,\n __runInitializers,\n __propKey,\n __setFunctionName,\n __metadata,\n __awaiter,\n __generator,\n __createBinding,\n __exportStar,\n __values,\n __read,\n __spread,\n __spreadArrays,\n __spreadArray,\n __await,\n __asyncGenerator,\n __asyncDelegator,\n __asyncValues,\n __makeTemplateObject,\n __importStar,\n __importDefault,\n __classPrivateFieldGet,\n __classPrivateFieldSet,\n __classPrivateFieldIn,\n __addDisposableResource,\n __disposeResources,\n __rewriteRelativeImportExtension,\n};\n","import { 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 { 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","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 { 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 { 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","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","export enum EShaderStage {\n VERTEX,\n FRAGMENT,\n ALL\n}\n","import { GalaceanDataType, TypeAny } from \"../../common\";\nimport { Keyword } from \"../../common/enums/Keyword\";\nimport { EShaderStage } from \"../../common/enums/ShaderStage\";\n\nexport enum 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 { 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 { 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","function _get_prototype_of(o) {\n _get_prototype_of = Object.setPrototypeOf ? Object.getPrototypeOf : function getPrototypeOf(o) {\n return o.__proto__ || Object.getPrototypeOf(o);\n };\n\n return _get_prototype_of(o);\n}\nexport { _get_prototype_of as _ };\n","function _is_native_function(fn) {\n return Function.toString.call(fn).indexOf(\"[native code]\") !== -1;\n}\nexport { _is_native_function as _ };\n","import { _ as _construct } from \"./_construct.js\";\nimport { _ as _get_prototype_of } from \"./_get_prototype_of.js\";\nimport { _ as _is_native_function } from \"./_is_native_function.js\";\nimport { _ as _set_prototype_of } from \"./_set_prototype_of.js\";\n\nfunction _wrap_native_super(Class) {\n var _cache = typeof Map === \"function\" ? new Map() : undefined;\n _wrap_native_super = function(Class) {\n if (Class === null || !_is_native_function(Class)) return Class;\n if (typeof Class !== \"function\") throw new TypeError(\"Super expression must either be null or a function\");\n if (typeof _cache !== \"undefined\") {\n if (_cache.has(Class)) return _cache.get(Class);\n _cache.set(Class, Wrapper);\n }\n\n function Wrapper() {\n return _construct(Class, arguments, _get_prototype_of(this).constructor);\n }\n Wrapper.prototype = Object.create(Class.prototype, { constructor: { value: Wrapper, enumerable: false, writable: true, configurable: true } });\n\n return _set_prototype_of(Wrapper, Class);\n };\n\n return _wrap_native_super(Class);\n}\nexport { _wrap_native_super as _ };\n","import { ShaderPosition } from \"./common/ShaderPosition\";\nimport { ShaderRange } from \"./common/ShaderRange\";\n\nexport class GSError extends Error {\n static wrappingLineCount = 2;\n\n constructor(\n name: GSErrorName,\n message: string,\n public readonly location: ShaderRange | ShaderPosition,\n public readonly source: string,\n public readonly file?: string\n ) {\n super(message);\n this.name = name;\n }\n\n override toString(): string {\n let start: ShaderPosition, end: ShaderPosition;\n const { message, location, source } = this;\n if (!source) {\n return message;\n }\n\n if (location instanceof ShaderPosition) {\n start = end = location;\n } else {\n start = location.start;\n end = location.end;\n }\n const lines = source.split(\"\\n\");\n\n let diagnosticMessage = `${this.name}: ${message}\\n\\n`;\n\n // #if _VERBOSE\n const lineSplit = \"|···\";\n\n const wrappingLineCount = GSError.wrappingLineCount;\n for (let i = start.line - wrappingLineCount, n = end.line + wrappingLineCount; i <= n; i++) {\n const line = lines[i];\n diagnosticMessage += lineSplit + `${line}\\n`;\n\n if (i < start.line || i > end.line) continue;\n\n let remarkStart = 0;\n let remarkEnd = line.length;\n let paddingLength = lineSplit.length;\n if (i === start.line) {\n remarkStart = start.column;\n paddingLength += start.column;\n }\n if (i === end.line) {\n remarkEnd = end.column;\n }\n const remarkLength = Math.max(remarkEnd - remarkStart, 1);\n\n diagnosticMessage += \" \".repeat(paddingLength) + \"^\".repeat(remarkLength) + \"\\n\";\n }\n // #endif\n\n return diagnosticMessage;\n }\n}\n\nexport enum GSErrorName {\n PreprocessorError = \"PreprocessorError\",\n CompilationError = \"CompilationError\",\n ScannerError = \"ScannerError\",\n CompilationWarn = \"CompilationWarning\"\n}\n","import { GalaceanDataType } from \"../../common\";\nimport { ASTNode } from \"../AST\";\n\nexport class SymbolDataType {\n constructor(\n public type: GalaceanDataType,\n public typeLexeme: string,\n public arraySpecifier?: ASTNode.ArraySpecifier\n ) {}\n}\n","import { IBaseSymbol } from \"../../common/IBaseSymbol\";\nimport { GalaceanDataType, TypeAny } from \"../../common/types\";\nimport { ASTNode } from \"../AST\";\nimport { SymbolDataType } from \"./SymbolDataType\";\n\nexport enum ESymbolType {\n VAR,\n FN,\n STRUCT,\n Any\n}\n\nexport type SymbolAstNode =\n | ASTNode.Initializer\n | ASTNode.StructSpecifier\n | ASTNode.FunctionDefinition\n | ASTNode.ParameterDeclarator\n | ASTNode.InitDeclaratorList\n | ASTNode.VariableDeclaration;\n\nexport class SymbolInfo implements IBaseSymbol {\n constructor(\n public ident: string,\n public type: ESymbolType,\n public astNode?: SymbolAstNode,\n public dataType?: SymbolDataType,\n public paramSignature?: GalaceanDataType[],\n public isInMacroBranch = false\n ) {}\n\n set(\n ident: string,\n symbolType: ESymbolType,\n astNode?: SymbolAstNode,\n dataType?: SymbolDataType,\n paramSignature?: GalaceanDataType[]\n ) {\n this.ident = ident;\n this.type = symbolType;\n this.astNode = astNode;\n this.dataType = dataType;\n this.paramSignature = paramSignature;\n }\n\n equal(symbol: SymbolInfo): boolean {\n if (symbol.type !== ESymbolType.Any && this.type !== symbol.type) return false;\n if (this.type === ESymbolType.FN) {\n if (!symbol.astNode && !symbol.paramSignature) return true;\n\n const params = (<ASTNode.FunctionDefinition>this.astNode).protoType.paramSig;\n const comparedParams = symbol.paramSignature ?? (<ASTNode.FunctionDefinition>symbol.astNode).protoType.paramSig;\n const length = params?.length;\n if (length !== comparedParams?.length) return false;\n for (let i = 0; i < length; i++) {\n const t1 = params[i],\n t2 = comparedParams[i];\n if (t1 === TypeAny || t2 === TypeAny) continue;\n if (t1 !== t2) return false;\n }\n return true;\n }\n return true;\n }\n}\n","import { ASTNode } from \"../AST\";\nimport { SymbolDataType } from \"./SymbolDataType\";\nimport { ESymbolType, SymbolInfo } from \"./SymbolInfo\";\n\nexport class FnSymbol extends SymbolInfo {\n declare astNode: ASTNode.FunctionDefinition;\n\n constructor(lexeme: string, astNode: ASTNode.FunctionDefinition) {\n const type = new SymbolDataType(\n astNode.protoType.returnType.type,\n astNode.protoType.returnType.typeSpecifier.lexeme\n );\n super(lexeme, ESymbolType.FN, astNode, type);\n }\n}\n","import { ASTNode } from \"../AST\";\nimport { ESymbolType, SymbolInfo } from \"./SymbolInfo\";\n\nexport class StructSymbol extends SymbolInfo {\n declare astNode: ASTNode.StructSpecifier;\n\n constructor(lexeme: string, astNode: ASTNode.StructSpecifier) {\n super(lexeme, ESymbolType.STRUCT, astNode);\n }\n}\n","import { ASTNode } from \"../AST\";\nimport { SymbolDataType } from \"./SymbolDataType\";\nimport { ESymbolType, SymbolInfo } from \"./SymbolInfo\";\n\nexport class VarSymbol extends SymbolInfo {\n declare astNode:\n | ASTNode.Initializer\n | ASTNode.ParameterDeclarator\n | ASTNode.InitDeclaratorList\n | ASTNode.VariableDeclaration;\n\n readonly isGlobalVariable: boolean;\n\n constructor(\n ident: string,\n dataType: SymbolDataType,\n isGlobalVariable: boolean,\n initAst:\n | ASTNode.Initializer\n | ASTNode.ParameterDeclarator\n | ASTNode.InitDeclaratorList\n | ASTNode.VariableDeclaration\n ) {\n super(ident, ESymbolType.VAR, initAst, dataType);\n this.isGlobalVariable = isGlobalVariable;\n }\n}\n","import { SymbolInfo, SymbolTable } from \"../parser/symbolTable\";\nimport { ASTNode } from \"./AST\";\n\nexport class ShaderData {\n symbolTable: SymbolTable<SymbolInfo>;\n\n vertexMain: ASTNode.FunctionDefinition;\n fragmentMain: ASTNode.FunctionDefinition;\n\n globalPrecisions: ASTNode.PrecisionSpecifier[] = [];\n\n globalMacroDeclarations: ASTNode.GlobalDeclaration[] = [];\n\n getOuterGlobalMacroDeclarations(): ASTNode.GlobalDeclaration[] {\n return this.globalMacroDeclarations.filter((node) => node.parent instanceof ASTNode.GLShaderProgram);\n }\n}\n","import { ShaderRange } from \"../common\";\nimport { SymbolTable } from \"../common/SymbolTable\";\nimport { SymbolTableStack } from \"../common/SymbolTableStack\";\nimport { GSError, GSErrorName } from \"../GSError\";\nimport { SymbolInfo } from \"../parser/symbolTable\";\nimport { 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 { 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","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 { 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","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 { 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 { 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 const result = ret.join(\"\");\n\n // Replace multiple consecutive newlines with a single newline to clean up the output\n return result.replace(/\\n\\s*\\n+/g, \"\\n\");\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 { ETokenType } from \"../common\";\nimport { NoneTerminal, Terminal } from \"../parser/GrammarSymbol\";\nimport Production from \"./Production\";\nimport GrammarUtils from \"./Utils\";\n\nexport default class StateItem {\n static _id = 0;\n\n readonly production: Production;\n readonly position: number;\n readonly lookaheadSet: Set<Terminal>;\n readonly id: number;\n\n _needReInfer = true;\n get needReInfer() {\n return this._needReInfer;\n }\n set needReInfer(v: boolean) {\n this._needReInfer = v;\n }\n\n get curSymbol() {\n return this.production.derivation[this.position];\n }\n get nextSymbol() {\n return this.production.derivation[this.position + 1];\n }\n\n constructor(production: Production, position: number, lookahead: Iterable<Terminal>) {\n this.production = production;\n this.position = position;\n this.lookaheadSet = new Set();\n for (const la of lookahead) {\n this.lookaheadSet.add(la);\n }\n this.id = StateItem._id++;\n }\n\n addLookahead(ts: Iterable<Terminal>) {\n for (const t of ts) {\n if (this.lookaheadSet.has(t)) continue;\n this.lookaheadSet.add(t);\n this.needReInfer = true;\n }\n }\n\n symbolByOffset(offset: number) {\n return this.production.derivation[this.position + offset];\n }\n\n canReduce() {\n if (this.position > this.production.derivation.length - 1) return true;\n else {\n for (let i = this.position; i < this.production.derivation.length; i++) {\n if (this.production.derivation[i] !== ETokenType.EPSILON) return false;\n }\n return true;\n }\n }\n\n advance() {\n // #if _VERBOSE\n if (this.canReduce()) throw `Error: advance reduce-able parsing state item`;\n // #endif\n return new StateItem(this.production, this.position + 1, this.lookaheadSet);\n }\n\n // #if _VERBOSE\n toString() {\n const coreItem = this.production.derivation.map((item) => GrammarUtils.toString(item));\n coreItem[this.position] = \".\" + (coreItem[this.position] ?? \"\");\n\n return `${NoneTerminal[this.production.goal]} :=> ${coreItem.join(\"|\")} ;${Array.from(this.lookaheadSet)\n .map((item) => GrammarUtils.toString(item))\n .join(\"/\")}`;\n }\n // #endif\n}\n","import { Terminal } from \"../parser/GrammarSymbol\";\nimport Production from \"./Production\";\nimport StateItem from \"./StateItem\";\n\nexport default class State {\n static closureMap: Map<string /** state mapKey */, State> = new Map();\n static pool: Map<number, State> = new Map();\n static _id = 0;\n\n readonly id: number;\n readonly cores: Set<StateItem>;\n private _items: Set<StateItem>;\n get items() {\n return this._items;\n }\n\n closured = false;\n get needReInfer() {\n for (const core of this.cores) {\n if (core.needReInfer) return true;\n }\n return false;\n }\n\n private _stateItemPool: Map<string /** Map ID */, StateItem> = new Map();\n\n static create(cores: StateItem[]) {\n const cacheKey = this.getMapKey(cores);\n const state = this.closureMap.get(cacheKey);\n if (state) {\n for (const core of cores) {\n // merge lookahead\n state.createStateItem(core.production, core.position, core.lookaheadSet);\n }\n return state;\n }\n\n const newState = new State(cores);\n this.closureMap.set(cacheKey, newState);\n return newState;\n }\n\n // TODO: any optimization?\n static getMapKey(cores: StateItem[]) {\n return cores.map((item) => `${item.production.id},${item.position}`).join(\";\");\n }\n\n private constructor(cores: Iterable<StateItem>) {\n this.id = State._id++;\n this._items = new Set([...cores]);\n this.cores = new Set([...cores]);\n for (const it of cores) {\n const itemMapKey = this.getStateItemMapKey(it.production, it.position);\n this._stateItemPool.set(itemMapKey, it);\n }\n State.pool.set(this.id, this);\n }\n\n // TODO: any optimization?\n getStateItemMapKey(production: Production, position: number) {\n return `${production.id},${position}`;\n }\n\n createStateItem(production: Production, position: number, lookaheadSet: Iterable<Terminal> = new Set()) {\n const mapId = this.getStateItemMapKey(production, position);\n const item = this._stateItemPool.get(mapId);\n if (item) {\n for (const la of lookaheadSet) {\n if (item.lookaheadSet.has(la)) continue;\n item.lookaheadSet.add(la);\n item.needReInfer = true;\n }\n return item;\n }\n const newItem = new StateItem(production, position, lookaheadSet);\n this._stateItemPool.set(mapId, newItem);\n return newItem;\n }\n}\n","import { ETokenType, ShaderRange } from \"../common\";\nimport { ASTNode, TreeNode } from \"../parser/AST\";\nimport { TranslationRule } from \"../parser/SemanticAnalyzer\";\nimport { NoneTerminal, GrammarSymbol } from \"../parser/GrammarSymbol\";\nimport Production from \"./Production\";\nimport { ActionInfo, EAction } from \"./types\";\nimport { 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 { NoneTerminal, Terminal } from \"../parser/GrammarSymbol\";\n\nexport type StateActionTable = Map<number /** state ID */, ActionTable>;\nexport type ActionTable = Map<Terminal, ActionInfo>;\nexport type StateGotoTable = Map<number /** state ID */, GotoTable>;\nexport type GotoTable = Map<NoneTerminal, number /** state ID */>;\n\nexport enum EAction {\n Shift = 0,\n Reduce,\n Accept\n}\n\nexport interface ActionInfo {\n action: EAction;\n target?: number;\n}\n","import { Logger } from \"@galacean/engine\";\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 { NoneTerminal, GrammarSymbol } from \"../parser/GrammarSymbol\";\n\nexport default class Production {\n private static _id = 0;\n static pool: Map<number, Production> = new Map();\n\n readonly goal: NoneTerminal;\n readonly derivation: GrammarSymbol[];\n readonly id: number;\n\n constructor(goal: NoneTerminal, derivation: GrammarSymbol[]) {\n this.goal = goal;\n this.derivation = derivation;\n this.id = Production._id++;\n Production.pool.set(this.id, this);\n }\n}\n","import { ETokenType } from \"../common\";\nimport { NoneTerminal, GrammarSymbol } from \"./GrammarSymbol\";\nimport Production from \"../lalr/Production\";\n\nexport class Grammar {\n readonly productions: Production[];\n\n readonly startSymbol: NoneTerminal;\n\n static create(start: NoneTerminal, productions: GrammarSymbol[][]) {\n const _ps = productions.map((gsl) => {\n return new Production(<NoneTerminal>gsl[0], gsl.slice(1));\n });\n return new Grammar(start, _ps);\n }\n\n constructor(start: NoneTerminal, productions: Production[]) {\n this.startSymbol = start;\n productions.unshift(new Production(NoneTerminal.START, [start]));\n this.productions = productions;\n }\n\n getProductionList(nonTerminal: NoneTerminal) {\n return this.productions.filter((item) => item.goal === nonTerminal);\n }\n\n isNullableNT(NT: NoneTerminal) {\n return this.productions.find((item) => item.goal === NT && item.derivation[0] === ETokenType.EPSILON);\n }\n\n getProductionByID(pid: number) {\n return Production.pool.get(pid);\n }\n}\n","// Context Free Grammar of Galacean 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":["ShaderRange","set","start","end","dispose","ShaderPosition","index","ETokenType","TypeAny","Keyword","ShaderLabUtils","createObjectPool","type","pool","ClearableObjectPool","_shaderLabObjectPoolSet","push","clearAllShaderLabObjectPool","i","n","length","clear","createGSError","message","errorName","source","location","file","Logger","error","BaseToken","lexeme","arg","ShaderLab","createPosition","createRange","EOF","Preprocessor","parse","basePathForIncludeKey","outMacroDefineList","parseMacro","_parseMacroDefines","replace","_includeReg","_","includeName","_replace","getReferenceSymbolNames","macroDefineList","macroName","out","infos","info","valueType","referencedName","functionCallName","value","params","indexOf","_isNumber","str","isNaN","Number","_isExist","list","item","some","e","isFunction","every","p","outMacroList","match","_macroRegex","lastIndex","exec","name","paramsGroup","paramsStr","valueRaw","split","map","trim","filter","Boolean","_symbolReg","test","callMatch","_funcCallReg","arr","_mergeMacroDefineLists","from","to","target","src","path","URL","href","substring","ShaderPass","_shaderRootPath","chunk","ShaderLib","_repeatIncludeSet","has","warn","add","_macroDefineIncludeMap","get","chunkMacroDefineList","Map","Set","EShaderStage","isGenericType","t","BuiltinFunctionTable","BuiltinFunction","ident","returnType","scope","args","_returnType","getReturnType","fn","genType","_create","ALL","_createWithScop","getFn","parameterTypes","fnArgs","argLength","found","curFnArg","_realReturnType","isExist","realReturnType","FLOAT","INT","UINT","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","NoneTerminal","SymbolTable","_table","insert","symbol","isInMacroBranch","entry","equal","getSymbol","includeMacro","getSymbols","_getSymbols","SymbolTableStack","stack","_macroLevel","pushScope","popScope","pop","lookup","symbolTable","result","undefined","lookupAll","GSError","toString","diagnosticMessage","Error","wrappingLineCount","GSErrorName","SymbolDataType","arraySpecifier","typeLexeme","ESymbolType","SymbolInfo","dataType","paramSignature","astNode","symbolType","protoType","paramSig","comparedParams","t1","t2","FnSymbol","typeSpecifier","FN","StructSymbol","STRUCT","VarSymbol","isGlobalVariable","initAst","VAR","ShaderData","globalPrecisions","globalMacroDeclarations","getOuterGlobalMacroDeclarations","node","parent","ASTNode","GLShaderProgram","SemanticAnalyzer","semanticStack","acceptRule","symbolTableStack","curFunctionInfo","_shaderData","_translationRuleTable","reset","_macroDefineList","addTranslationRule","pid","rule","getTranslationRule","reportError","loc","reportWarning","CompilationWarn","_processingPassText","shaderData","_lookupSymbol","SymbolType","StructProp","mrtIndex","typeInfo","ASTNodeDecorator","nonTerminal","prototype","nt","TreeNode","children","_location","_children","child","_parent","init","setCache","code","_codeCache","getCache","codeGen","visitor","defaultCodeGen","semanticAnalyze","sa","_unwrapToken","TrivialNode","_ignore","ScopeBrace","scope_brace","ScopeEndBrace","scope_end_brace","JumpStatement","isFragReturnStatement","RETURN","returnStatement","visitJumpStatement","jump_statement","ExpressionAstNode","_type","SingleDeclaration","childrenLen","fullyType","id","sm","initializer","visitSingleDeclaration","single_declaration","FullySpecifiedType","fully_specified_type","TypeQualifier","type_qualifier","SingleTypeQualifier","qualifier","single_type_qualifier","TypeSpecifier","arraySize","firstChild","size","isCustom","type_specifier","ArraySpecifier","integerConstantExpr","array_specifier","IntegerConstantExpressionOperator","operator","PLUS","compute","a","b","DASH","STAR","SLASH","PERCENT","integer_constant_expression_operator","IntegerConstantExpression","integer_constant_expression","TypeSpecifierNonArray","tt","type_specifier_nonarray","ExtBuiltinTypeSpecifierNonArray","token","ext_builtin_type_specifier_nonarray","InitDeclaratorList","childrenLength","initDeclList","init_declarator_list","IdentifierList","idList","curIdList","listIdLength","identifier_list","Declaration","visitDeclaration","declaration","FunctionProtoType","declarator","parameterList","parameterInfoList","function_prototype","FunctionDeclarator","header","function_declarator","FunctionHeader","visitFunctionHeader","function_header","FunctionParameterList","ParameterDeclaration","decl","MacroParamBlock","visitFunctionParameterList","function_parameter_list","MacroParamCaseList","macro_param_case_list","macro_param_block","MacroParameterBranch","macro_parameter_branch","parameterDeclarator","ParameterDeclarator","varSymbol","parameter_declaration","parameter_declarator","CompoundStatementNoScope","compound_statement_no_scope","StatementList","visitStatementList","statement_list","FunctionDefinition","statements","VOID","visitFunctionDefinition","function_definition","FunctionCall","visitFunctionCall","function_call","FunctionCallGeneric","fnSymbol","functionIdentifier","isBuiltin","fnIdent","paramList","FunctionCallParameterList","lookupSymbol","function_call_generic","paramNodes","AssignmentExpression","expr","MacroCallArgBlock","function_call_parameter_list","MacroCallArgCaseList","macro_call_arg_case_list","macro_call_arg_block","MacroCallArgBranch","macro_call_arg_branch","PrecisionSpecifier","precision_specifier","FunctionIdentifier","visitFunctionIdentifier","function_identifier","assignment_expression","Expression","expression","PrimaryExpression","VariableIdentifier","INT_CONSTANT","FLOAT_CONSTANT","True","False","primary_expression","PostfixExpression","visitPostfixExpression","postfix_expression","StructSpecifier","propList","macroExpressions","visitStructSpecifier","struct_specifier","StructDeclarationList","props","struct_declaration_list","StructDeclaration","_typeSpecifier","_declaratorList","macroStructDeclaration","macroProps","LayoutQualifier","prop","declaratorList","declaratorListLength","struct_declaration","MacroStructDeclaration","macro_struct_declaration","MacroStructBranch","lastNode","MacroPopContext","macro_struct_branch","layout_qualifier","StructDeclaratorList","listLength","struct_declarator_list","StructDeclarator","struct_declarator","VariableDeclaration","isStatic","visitGlobalVariableDeclaration","variable_declaration","VariableDeclarationList","variableDeclarations","newVariable","variable_declaration_list","referenceGlobalSymbolNames","_symbols","symbols","needFindNames","referenceSymbolNames","builtinVar","Any","currentScopeSymbol","s","visitVariableIdentifier","getLexeme","variable_identifier","gs_shader_program","GlobalDeclaration","MacroUndef","GlobalMacroIfStatement","global_declaration","macro_undef","MacroPushContext","macro_push_context","macro_pop_context","MacroElifExpression","macro_elif_expression","MacroElseExpression","macro_else_expression","GlobalMacroDeclaration","global_macro_declaration","global_macro_if_statement","GlobalMacroBranch","global_macro_branch","MacroIfStatement","macro_if_statement","MacroBranch","macro_branch","MacroCallSymbol","macro_call_symbol","MacroCallFunction","visitMacroCallFunction","macro_call_function","ParserUtils","unwrapNodeByType","Token","isTerminal","START","VisitorContext","attributeStructs","attributeList","varyingStructs","varyingList","mrtStructs","mrtList","_referencedGlobalMacroASTs","resetAll","_referencedAttributeList","Object","create","_referencedVaryingList","_referencedMRTList","_referencedGlobals","isAttributeStruct","findIndex","isVaryingStruct","isMRTStruct","referenceAttribute","CompilationError","referenceVarying","referenceMRTProp","referenceGlobal","_passSymbolTable","_singleton","context","TempArray","array","Array","CodeGenVisitor","_tmpArrayPool","ret","return","join","derivationLength","postExpr","identNode","indexNode","identLexeme","indexLexeme","_reportError","call","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","returnLocation","mrtSymbols","mrtSymbol","lastLength","keys","structNodes","macros","referencedGlobals","referencedGlobalMacroASTs","values","macro","_visitGlobalMacroIfStatement","variableDeclaration","GLES100Visitor","propReferenced","find","getVisitor","V3_GL_FragColor","GLES300Visitor","_otherCodeArray","_fragColorVariableRegistered","_registerFragColorVariable","BaseLexer","_currentIndex","_source","setSource","getShaderPosition","backOffset","isEnd","getCurChar","getCurCharCode","charCodeAt","advance","count","skipSpace","includeLineBreak","isWhiteSpaceChar","skipCommentsAndSpace","nextChar","charCode","peek","offset","scanLexeme","throwError","scanTwoExpectedLexemes","lexeme1","lexeme2","pos","msgs","ScannerError","scanPairedChar","left","right","balanced","skipLeading","sourceLength","currentIndex","level","currentChar","isDigit","isAlpha","isAlnum","isPreprocessorStartChar","includeBreak","Lexer","_needScanMacroConditionExpression","tokenize","scanToken","_scanMacroConditionExpression","curCharCode","_scanDirectives","_scanWord","_scanNum","curChar","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","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","MacroParserToken","MacroParserKeyword","MacroDefine","body","_argsLexemes","_replaceRegex","RegExp","expandFunctionBody","PreprocessorError","m","MacroParserLexer","macroLvl","scanWordsUntilTerminator","terminatorChar","tokens","scanWord","slice","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","generatedIdx","seg","originSlice","rangeInBlock","generatedIdxEnd","MacroParser","_reset","_addPredefinedMacro","lexer","_parseDirectives","_expandSegmentsStack","_definedMacros","macroBody","_parseMacro","_parseDefine","_parseUndef","_parseIfDirective","_getExpandSegments","sourceMap","directiveType","directiveLength","skipMacro","shouldInclude","_parseConstantExpression","macroToken","startsWith","expanded","_expandMacroChunk","_addContentReplace","content","blockRange","_addEmptyReplace","_processConditionalDirective","scanner","constantExpr","_parseLogicalOrExpression","operand1","_parseLogicalAndExpression","operand2","_parseEqualityExpression","_parseRelationalExpression","includes","_parseShiftExpression","opPos","_parseAdditiveExpression","_parseMulticativeExpression","_parseUnaryExpression","parenExpr","_parseParenthesisExpression","_parseConstant","withParen","isInteger","_parseMacroFunctionArgs","startIndex","argStart","k","endIndex","_expandMacroBody","visitedMacros","_expandVisitedMacros","currentVersionId","_expandVersionId","expandedBody","hasExpansion","replacement","newEndIndex","scannerOrFile","sourceFile","sourceRange","macroArgs","macroDefine","delete","macroBodyExpanded","expandedContent","remainingLength","macroContent","StateItem","production","position","lookahead","_needReInfer","lookaheadSet","la","_id","addLookahead","ts","needReInfer","symbolByOffset","derivation","canReduce","EPSILON","v","curSymbol","nextSymbol","State","cores","closured","_stateItemPool","_items","it","itemMapKey","getStateItemMapKey","createStateItem","mapId","newItem","cacheKey","getMapKey","state","closureMap","core","newState","items","GrammarUtils","createProductionWithOptions","goal","options","astTypePool","opt","addMapSetItem","isSubSet","sb","isActionEqual","action","EAction","LALR1","grammar","firstSetMap","followSetMap","actionTable","gotoTable","_firstSetNTStack","generate","computeFirstSet","buildStateTable","startStateItemCore","productions","startState","_extendState","_closure","newStates","_inferNextState","ns","_extendStateItem","productionList","getProductionList","newLookaheadSet","lastFirstSet","terminalExist","Utils","coreMap","stateActionTable","stateGotoTable","stateItem","Reduce","Accept","_addAction","nextItem","entries","gs","Shift","table","terminal","exist","_computeFirstSetForNT","NT","idx","computingFS","len","curNT","firstSet","isNullableNT","succeedFirstSet","Production","Grammar","startSymbol","unshift","getProductionByID","_ps","gsl","productionAndRules","variable_declaration_statement","storage_qualifier","precision_qualifier","interpolation_qualifier","invariant_qualifier","conditional_expression","logical_or_expression","logical_xor_expression","logical_and_expression","inclusive_or_expression","exclusive_or_expression","and_expression","equality_expression","relational_expression","shift_expression","additive_expression","multiplicative_expression","unary_expression","unary_operator","assignment_operator","AND_ASSIGN","statement","compound_statement","simple_statement","expression_statement","selection_statement","iteration_statement","initializer_list","condition","for_init_statement","for_rest_statement","conditionopt","createGrammar","ShaderTargetParser","_traceBackStack","sematicAnalyzer","SematicAnalyzer","performance","now","traceBackStack","nextToken","next","loopCount","actionInfo","reduceProduction","translationRule","nextState","generator","curState","ShaderSourceFactory","createRenderStates","constantMap","variableMap","createShaderSource","subShaders","pendingContents","renderStates","createSubShaderSource","passes","tags","createShaderPassSource","createUsePass","isUsePass","ShaderSourceSymbol","other","SourceLexer","hasPendingContent","scanNumber","_scanDigits","scanColor","r","g","Color","wordToken","symbolKeyword","_symbolLexemeTable","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","errors","_symbolTableStack","_pushScope","_lexer","shaderSource","_parseShader","shaderPendingContents","shaderRenderStates","subShader","curSubShaderGlobalStatements","concat","globalSubShaderStates","_mergeRenderStates","j","pass","globalPassRenderStates","passGlobalStatements","contents","braceLevel","_addPendingContents","_parseSubShader","_popScope","_parseRenderState","_parseRenderStateDeclarationOrAssignment","outRenderStates","stateToken","renderState","_parseRenderStateProperties","_createCompileError","outTarget","targetVariableMap","sourceVariableMap","key","sourceConstantMap","targetConstantMap","_parseVariableDeclaration","_parseRenderStateProperty","stateLexeme","propertyToken","propertyLexeme","stateElementKey","keyIndex","scannedLexeme","renderStateElementKey","RenderStateElementKey","propertyValue","valueTokenType","constValueToken","_renderStateConstMap","_parseRenderQueueDeclarationOrAssignment","outPendingContents","subShaderSource","_parsePass","_parseRenderStateAndTags","_parseTags","passSource","outGlobalContents","outTags","_parseShaderSource","_parseShaderPass","backend","totalStartTime","noIncludeContent","parser","_parser","program","ShaderLanguage","GLSLES100","codeGenStartTime","_parseMacros","parsedContent","line","column","_shaderPositionPool","_shaderRangePool","version","mode","console","log"],"mappings":"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"}