@galacean/engine-shaderlab 2.0.0-alpha.28 → 2.0.0-alpha.30
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/browser.js +2 -2
- package/dist/browser.js.map +1 -1
- package/dist/browser.min.js +1 -1
- package/dist/browser.min.js.map +1 -1
- package/dist/browser.verbose.js +2 -2
- package/dist/browser.verbose.js.map +1 -1
- package/dist/browser.verbose.min.js +1 -1
- package/dist/browser.verbose.min.js.map +1 -1
- package/dist/main.js +2 -2
- package/dist/main.js.map +1 -1
- package/dist/main.verbose.js +2 -2
- package/dist/main.verbose.js.map +1 -1
- package/dist/module.js +2 -2
- package/dist/module.js.map +1 -1
- package/dist/module.verbose.js +2 -2
- package/dist/module.verbose.js.map +1 -1
- package/package.json +4 -4
package/dist/browser.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"browser.js","sources":["../../../node_modules/.pnpm/@swc+helpers@0.5.15/node_modules/@swc/helpers/esm/_instanceof.js","../../../node_modules/.pnpm/@swc+helpers@0.5.15/node_modules/@swc/helpers/esm/_set_prototype_of.js","../../../node_modules/.pnpm/@swc+helpers@0.5.15/node_modules/@swc/helpers/esm/_inherits.js","../../../node_modules/.pnpm/@swc+helpers@0.5.15/node_modules/@swc/helpers/esm/_create_class.js","../../../node_modules/.pnpm/@swc+helpers@0.5.15/node_modules/@swc/helpers/esm/_array_like_to_array.js","../../../node_modules/.pnpm/@swc+helpers@0.5.15/node_modules/@swc/helpers/esm/_unsupported_iterable_to_array.js","../../../node_modules/.pnpm/@swc+helpers@0.5.15/node_modules/@swc/helpers/esm/_create_for_of_iterator_helper_loose.js","../../../node_modules/.pnpm/tslib@2.8.1/node_modules/tslib/tslib.es6.mjs","../src/common/ShaderRange.ts","../src/common/ShaderPosition.ts","../src/common/types.ts","../src/common/enums/Keyword.ts","../src/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","../src/ShaderInstructionEncoder.ts","../src/lalr/StateItem.ts","../src/lalr/State.ts","../src/lalr/Utils.ts","../src/lalr/types.ts","../src/lalr/LALR1.ts","../src/lalr/Production.ts","../src/parser/Grammar.ts","../src/lalr/CFG.ts","../src/parser/ShaderTargetParser.ts","../../../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 _instanceof(left, right) {\n if (right != null && typeof Symbol !== \"undefined\" && right[Symbol.hasInstance]) {\n return !!right[Symbol.hasInstance](left);\n } else return left instanceof right;\n}\nexport { _instanceof as _ };\n","function _set_prototype_of(o, p) {\n _set_prototype_of = Object.setPrototypeOf || function setPrototypeOf(o, p) {\n o.__proto__ = p;\n\n return o;\n };\n\n return _set_prototype_of(o, p);\n}\nexport { _set_prototype_of as _ };\n","import { _ as _set_prototype_of } from \"./_set_prototype_of.js\";\n\nfunction _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function\");\n }\n\n subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } });\n\n if (superClass) _set_prototype_of(subClass, superClass);\n}\nexport { _inherits as _ };\n","function _defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n\n if (\"value\" in descriptor) descriptor.writable = true;\n\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n}\nfunction _create_class(Constructor, protoProps, staticProps) {\n if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n if (staticProps) _defineProperties(Constructor, staticProps);\n\n return Constructor;\n}\nexport { _create_class as _ };\n","function _array_like_to_array(arr, len) {\n if (len == null || len > arr.length) len = arr.length;\n\n for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i];\n\n return arr2;\n}\nexport { _array_like_to_array as _ };\n","import { _ as _array_like_to_array } from \"./_array_like_to_array.js\";\n\nfunction _unsupported_iterable_to_array(o, minLen) {\n if (!o) return;\n if (typeof o === \"string\") return _array_like_to_array(o, minLen);\n\n var n = Object.prototype.toString.call(o).slice(8, -1);\n\n if (n === \"Object\" && o.constructor) n = o.constructor.name;\n if (n === \"Map\" || n === \"Set\") return Array.from(n);\n if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _array_like_to_array(o, minLen);\n}\nexport { _unsupported_iterable_to_array as _ };\n","import { _ as _unsupported_iterable_to_array } from \"./_unsupported_iterable_to_array.js\";\n\nfunction _create_for_of_iterator_helper_loose(o, allowArrayLike) {\n var it = typeof Symbol !== \"undefined\" && o[Symbol.iterator] || o[\"@@iterator\"];\n\n if (it) return (it = it.call(o)).next.bind(it);\n // Fallback for engines without symbol support\n if (Array.isArray(o) || (it = _unsupported_iterable_to_array(o)) || allowArrayLike && o && typeof o.length === \"number\") {\n if (it) o = it;\n\n var i = 0;\n\n return function() {\n if (i >= o.length) return { done: true };\n\n return { done: false, value: o[i++] };\n };\n }\n\n throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}\nexport { _create_for_of_iterator_helper_loose as _ };\n","/******************************************************************************\nCopyright (c) Microsoft Corporation.\n\nPermission to use, copy, modify, and/or distribute this software for any\npurpose with or without fee is hereby granted.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\nPERFORMANCE OF THIS SOFTWARE.\n***************************************************************************** */\n/* global Reflect, Promise, SuppressedError, Symbol, Iterator */\n\nvar extendStatics = function(d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n};\n\nexport function __extends(d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n}\n\nexport var __assign = function() {\n __assign = Object.assign || function __assign(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n }\n return t;\n }\n return __assign.apply(this, arguments);\n}\n\nexport function __rest(s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\n t[p[i]] = s[p[i]];\n }\n return t;\n}\n\nexport function __decorate(decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n}\n\nexport function __param(paramIndex, decorator) {\n return function (target, key) { decorator(target, key, paramIndex); }\n}\n\nexport function __esDecorate(ctor, descriptorIn, decorators, contextIn, initializers, extraInitializers) {\n function accept(f) { if (f !== void 0 && typeof f !== \"function\") throw new TypeError(\"Function expected\"); return f; }\n var kind = contextIn.kind, key = kind === \"getter\" ? \"get\" : kind === \"setter\" ? \"set\" : \"value\";\n var target = !descriptorIn && ctor ? contextIn[\"static\"] ? ctor : ctor.prototype : null;\n var descriptor = descriptorIn || (target ? Object.getOwnPropertyDescriptor(target, contextIn.name) : {});\n var _, done = false;\n for (var i = decorators.length - 1; i >= 0; i--) {\n var context = {};\n for (var p in contextIn) context[p] = p === \"access\" ? {} : contextIn[p];\n for (var p in contextIn.access) context.access[p] = contextIn.access[p];\n context.addInitializer = function (f) { if (done) throw new TypeError(\"Cannot add initializers after decoration has completed\"); extraInitializers.push(accept(f || null)); };\n var result = (0, decorators[i])(kind === \"accessor\" ? { get: descriptor.get, set: descriptor.set } : descriptor[key], context);\n if (kind === \"accessor\") {\n if (result === void 0) continue;\n if (result === null || typeof result !== \"object\") throw new TypeError(\"Object expected\");\n if (_ = accept(result.get)) descriptor.get = _;\n if (_ = accept(result.set)) descriptor.set = _;\n if (_ = accept(result.init)) initializers.unshift(_);\n }\n else if (_ = accept(result)) {\n if (kind === \"field\") initializers.unshift(_);\n else descriptor[key] = _;\n }\n }\n if (target) Object.defineProperty(target, contextIn.name, descriptor);\n done = true;\n};\n\nexport function __runInitializers(thisArg, initializers, value) {\n var useValue = arguments.length > 2;\n for (var i = 0; i < initializers.length; i++) {\n value = useValue ? initializers[i].call(thisArg, value) : initializers[i].call(thisArg);\n }\n return useValue ? value : void 0;\n};\n\nexport function __propKey(x) {\n return typeof x === \"symbol\" ? x : \"\".concat(x);\n};\n\nexport function __setFunctionName(f, name, prefix) {\n if (typeof name === \"symbol\") name = name.description ? \"[\".concat(name.description, \"]\") : \"\";\n return Object.defineProperty(f, \"name\", { configurable: true, value: prefix ? \"\".concat(prefix, \" \", name) : name });\n};\n\nexport function __metadata(metadataKey, metadataValue) {\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\n}\n\nexport function __awaiter(thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n}\n\nexport function __generator(thisArg, body) {\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g = Object.create((typeof Iterator === \"function\" ? Iterator : Object).prototype);\n return g.next = verb(0), g[\"throw\"] = verb(1), g[\"return\"] = verb(2), typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n function verb(n) { return function (v) { return step([n, v]); }; }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (g && (g = 0, op[0] && (_ = 0)), _) try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [op[0] & 2, t.value];\n switch (op[0]) {\n case 0: case 1: t = op; break;\n case 4: _.label++; return { value: op[1], done: false };\n case 5: _.label++; y = op[1]; op = [0]; continue;\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n if (t[2]) _.ops.pop();\n _.trys.pop(); continue;\n }\n op = body.call(thisArg, _);\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n }\n}\n\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n});\n\nexport function __exportStar(m, o) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\n}\n\nexport function __values(o) {\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\n if (m) return m.call(o);\n if (o && typeof o.length === \"number\") return {\n next: function () {\n if (o && i >= o.length) o = void 0;\n return { value: o && o[i++], done: !o };\n }\n };\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\n}\n\nexport function __read(o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o), r, ar = [], e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n }\n catch (error) { e = { error: error }; }\n finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n }\n finally { if (e) throw e.error; }\n }\n return ar;\n}\n\n/** @deprecated */\nexport function __spread() {\n for (var ar = [], i = 0; i < arguments.length; i++)\n ar = ar.concat(__read(arguments[i]));\n return ar;\n}\n\n/** @deprecated */\nexport function __spreadArrays() {\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\n r[k] = a[j];\n return r;\n}\n\nexport function __spreadArray(to, from, pack) {\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\n if (ar || !(i in from)) {\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\n ar[i] = from[i];\n }\n }\n return to.concat(ar || Array.prototype.slice.call(from));\n}\n\nexport function __await(v) {\n return this instanceof __await ? (this.v = v, this) : new __await(v);\n}\n\nexport function __asyncGenerator(thisArg, _arguments, generator) {\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\n return i = Object.create((typeof AsyncIterator === \"function\" ? AsyncIterator : Object).prototype), verb(\"next\"), verb(\"throw\"), verb(\"return\", awaitReturn), i[Symbol.asyncIterator] = function () { return this; }, i;\n function awaitReturn(f) { return function (v) { return Promise.resolve(v).then(f, reject); }; }\n function verb(n, f) { if (g[n]) { i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; if (f) i[n] = f(i[n]); } }\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\n function fulfill(value) { resume(\"next\", value); }\n function reject(value) { resume(\"throw\", value); }\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\n}\n\nexport function __asyncDelegator(o) {\n var i, p;\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: false } : f ? f(v) : v; } : f; }\n}\n\nexport function __asyncValues(o) {\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\n var m = o[Symbol.asyncIterator], i;\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\n}\n\nexport function __makeTemplateObject(cooked, raw) {\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\n return cooked;\n};\n\nvar __setModuleDefault = Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n};\n\nvar ownKeys = function(o) {\n ownKeys = Object.getOwnPropertyNames || function (o) {\n var ar = [];\n for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;\n return ar;\n };\n return ownKeys(o);\n};\n\nexport function __importStar(mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== \"default\") __createBinding(result, mod, k[i]);\n __setModuleDefault(result, mod);\n return result;\n}\n\nexport function __importDefault(mod) {\n return (mod && mod.__esModule) ? mod : { default: mod };\n}\n\nexport function __classPrivateFieldGet(receiver, state, kind, f) {\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\n}\n\nexport function __classPrivateFieldSet(receiver, state, value, kind, f) {\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\n}\n\nexport function __classPrivateFieldIn(state, receiver) {\n if (receiver === null || (typeof receiver !== \"object\" && typeof receiver !== \"function\")) throw new TypeError(\"Cannot use 'in' operator on non-object\");\n return typeof state === \"function\" ? receiver === state : state.has(receiver);\n}\n\nexport function __addDisposableResource(env, value, async) {\n if (value !== null && value !== void 0) {\n if (typeof value !== \"object\" && typeof value !== \"function\") throw new TypeError(\"Object expected.\");\n var dispose, inner;\n if (async) {\n if (!Symbol.asyncDispose) throw new TypeError(\"Symbol.asyncDispose is not defined.\");\n dispose = value[Symbol.asyncDispose];\n }\n if (dispose === void 0) {\n if (!Symbol.dispose) throw new TypeError(\"Symbol.dispose is not defined.\");\n dispose = value[Symbol.dispose];\n if (async) inner = dispose;\n }\n if (typeof dispose !== \"function\") throw new TypeError(\"Object not disposable.\");\n if (inner) dispose = function() { try { inner.call(this); } catch (e) { return Promise.reject(e); } };\n env.stack.push({ value: value, dispose: dispose, async: async });\n }\n else if (async) {\n env.stack.push({ async: true });\n }\n return value;\n}\n\nvar _SuppressedError = typeof SuppressedError === \"function\" ? SuppressedError : function (error, suppressed, message) {\n var e = new Error(message);\n return e.name = \"SuppressedError\", e.error = error, e.suppressed = suppressed, e;\n};\n\nexport function __disposeResources(env) {\n function fail(e) {\n env.error = env.hasError ? new _SuppressedError(e, env.error, \"An error was suppressed during disposal.\") : e;\n env.hasError = true;\n }\n var r, s = 0;\n function next() {\n while (r = env.stack.pop()) {\n try {\n if (!r.async && s === 1) return s = 0, env.stack.push(r), Promise.resolve().then(next);\n if (r.dispose) {\n var result = r.dispose.call(r.value);\n if (r.async) return s |= 2, Promise.resolve(result).then(next, function(e) { fail(e); return next(); });\n }\n else s |= 1;\n }\n catch (e) {\n fail(e);\n }\n }\n if (s === 1) return env.hasError ? Promise.reject(env.error) : Promise.resolve();\n if (env.hasError) throw env.error;\n }\n return next();\n}\n\nexport function __rewriteRelativeImportExtension(path, preserveJsx) {\n if (typeof path === \"string\" && /^\\.\\.?\\//.test(path)) {\n return path.replace(/\\.(tsx)$|((?:\\.d)?)((?:\\.[^./]+?)?)\\.([cm]?)ts$/i, function (m, tsx, d, ext, cm) {\n return tsx ? preserveJsx ? \".jsx\" : \".js\" : d && (!ext || !cm) ? m : (d + ext + \".\" + cm.toLowerCase() + \"js\");\n });\n }\n return path;\n}\n\nexport default {\n __extends,\n __assign,\n __rest,\n __decorate,\n __param,\n __esDecorate,\n __runInitializers,\n __propKey,\n __setFunctionName,\n __metadata,\n __awaiter,\n __generator,\n __createBinding,\n __exportStar,\n __values,\n __read,\n __spread,\n __spreadArrays,\n __spreadArray,\n __await,\n __asyncGenerator,\n __asyncDelegator,\n __asyncValues,\n __makeTemplateObject,\n __importStar,\n __importDefault,\n __classPrivateFieldGet,\n __classPrivateFieldSet,\n __classPrivateFieldIn,\n __addDisposableResource,\n __disposeResources,\n __rewriteRelativeImportExtension,\n};\n","import { 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 BitwiseOr,\n\n // Source Parser Tokens\n GSRenderQueueType,\n GSBlendState,\n GSDepthState,\n GSStencilState,\n GSRasterState,\n GSEditorProperties,\n GSEditorMacros,\n GSEditor,\n GSTags,\n GSVertexShader,\n GSFragmentShader,\n GSSubShader,\n GSPass,\n GSBlendFactor,\n GSBlendOperation,\n GSBool,\n GSNumber,\n GSColor,\n GSCompareFunction,\n GSStencilOperation,\n GSCullMode,\n GSColorWriteMask,\n GSUsePass,\n\n // Macros\n MACRO_IF,\n MACRO_IFDEF,\n MACRO_IFNDEF,\n MACRO_ELSE,\n MACRO_ELIF,\n MACRO_ENDIF,\n MACRO_UNDEF,\n 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","import type { Condition, ShaderInstruction } from \"@galacean/engine-design\";\n\nexport type { ShaderInstruction } from \"@galacean/engine-design\";\n\n/** Must stay in sync with ShaderPreprocessorDirective in @galacean/engine-core */\nconst ShaderPreprocessorDirective = {\n Text: 0,\n IfDef: 1,\n IfNdef: 2,\n IfCmp: 3,\n IfExpr: 4,\n Else: 5,\n Endif: 6,\n Define: 7,\n DefineVal: 8,\n DefineFunc: 9,\n Undef: 10\n} as const;\n\ninterface ExprCtx {\n s: string;\n i: number;\n}\n\n/**\n * @internal\n */\nexport class ShaderInstructionEncoder {\n private static _DIRECTIVE_RE = /^[ \\t]*#[ \\t]*(if|ifdef|ifndef|elif|else|endif|define|undef)\\b(.*)/;\n private static _FUNC_MACRO_RE = /^(\\w+)\\(([^)]*)\\)\\s*(.*)/;\n\n static parse(glsl: string): ShaderInstruction[] {\n const instructions: ShaderInstruction[] = [];\n const length = glsl.length;\n let pos = 0;\n const backfillStack: number[][] = [];\n\n while (pos < length) {\n const directiveStart = ShaderInstructionEncoder._findDirectiveStart(glsl, pos, length);\n\n if (directiveStart === -1) {\n ShaderInstructionEncoder._pushText(instructions, glsl, pos, length);\n break;\n }\n\n if (directiveStart > pos) {\n ShaderInstructionEncoder._pushText(instructions, glsl, pos, directiveStart);\n }\n\n let lineEnd = glsl.indexOf(\"\\n\", directiveStart);\n if (lineEnd === -1) lineEnd = length;\n const line = glsl.substring(directiveStart, lineEnd);\n pos = lineEnd < length ? lineEnd + 1 : length;\n\n const match = ShaderInstructionEncoder._DIRECTIVE_RE.exec(line);\n if (!match) {\n const last = instructions.length > 0 ? instructions[instructions.length - 1] : null;\n const text = lineEnd < length ? line + \"\\n\" : line;\n if (last && last[0] === ShaderPreprocessorDirective.Text) {\n (last as [number, string])[1] += text;\n } else {\n instructions.push([ShaderPreprocessorDirective.Text, text]);\n }\n continue;\n }\n\n const keyword = match[1];\n const rest = match[2].trim();\n\n switch (keyword) {\n case \"ifdef\": {\n const idx = instructions.length;\n instructions.push([ShaderPreprocessorDirective.IfDef, rest, -1]);\n backfillStack.push([idx]);\n break;\n }\n case \"ifndef\": {\n const idx = instructions.length;\n instructions.push([ShaderPreprocessorDirective.IfNdef, rest, -1]);\n backfillStack.push([idx]);\n break;\n }\n case \"if\": {\n const cond = ShaderInstructionEncoder._parseCondition(rest);\n const idx = instructions.length;\n ShaderInstructionEncoder._pushConditionInstruction(instructions, cond);\n backfillStack.push([idx]);\n break;\n }\n case \"elif\": {\n const stack = backfillStack[backfillStack.length - 1];\n const prevIdx = stack[stack.length - 1];\n const elseIdx = instructions.length;\n instructions.push([ShaderPreprocessorDirective.Else, -1]);\n stack.push(elseIdx);\n ShaderInstructionEncoder._backfillJump(instructions[prevIdx], instructions.length);\n\n const cond = ShaderInstructionEncoder._parseCondition(rest);\n const idx = instructions.length;\n ShaderInstructionEncoder._pushConditionInstruction(instructions, cond);\n stack.push(idx);\n break;\n }\n case \"else\": {\n const stack = backfillStack[backfillStack.length - 1];\n const prevIdx = stack[stack.length - 1];\n const elseIdx = instructions.length;\n instructions.push([ShaderPreprocessorDirective.Else, -1]);\n stack.push(elseIdx);\n ShaderInstructionEncoder._backfillJump(instructions[prevIdx], instructions.length);\n break;\n }\n case \"endif\": {\n const endifIdx = instructions.length;\n instructions.push([ShaderPreprocessorDirective.Endif]);\n const stack = backfillStack.pop();\n if (stack) {\n const afterEndif = endifIdx + 1;\n for (let j = 0; j < stack.length; j++) {\n const inst = instructions[stack[j]];\n if (inst[0] === ShaderPreprocessorDirective.Else) {\n (inst as [number, number])[1] = afterEndif;\n } else {\n ShaderInstructionEncoder._backfillJump(inst, afterEndif, true);\n }\n }\n }\n break;\n }\n case \"define\": {\n const funcMatch = ShaderInstructionEncoder._FUNC_MACRO_RE.exec(rest);\n if (funcMatch) {\n const params = funcMatch[2]\n .split(\",\")\n .map((p) => p.trim())\n .filter((p) => p.length > 0);\n instructions.push([\n ShaderPreprocessorDirective.DefineFunc,\n funcMatch[1],\n params,\n ShaderInstructionEncoder._stripLineComment(funcMatch[3].trim())\n ]);\n } else {\n const spaceIdx = rest.indexOf(\" \");\n if (spaceIdx === -1) {\n instructions.push([ShaderPreprocessorDirective.Define, rest]);\n } else {\n instructions.push([\n ShaderPreprocessorDirective.DefineVal,\n rest.substring(0, spaceIdx),\n ShaderInstructionEncoder._stripLineComment(rest.substring(spaceIdx + 1).trim())\n ]);\n }\n }\n break;\n }\n case \"undef\": {\n instructions.push([ShaderPreprocessorDirective.Undef, rest]);\n break;\n }\n }\n }\n\n return instructions;\n }\n\n private static _pushConditionInstruction(instructions: ShaderInstruction[], cond: Condition): void {\n if (cond.t === \"def\") {\n instructions.push([ShaderPreprocessorDirective.IfDef, cond.m, -1]);\n } else if (cond.t === \"ndef\") {\n instructions.push([ShaderPreprocessorDirective.IfNdef, cond.m, -1]);\n } else if (cond.t === \"cmp\") {\n instructions.push([ShaderPreprocessorDirective.IfCmp, cond.m, cond.op, cond.v, -1]);\n } else {\n instructions.push([ShaderPreprocessorDirective.IfExpr, cond, -1]);\n }\n }\n\n private static _findDirectiveStart(source: string, from: number, length: number): number {\n let i = from;\n while (i < length) {\n let j = i;\n while (j < length) {\n const c = source.charCodeAt(j);\n if (c === 32 /* space */ || c === 9 /* tab */) {\n j++;\n } else {\n break;\n }\n }\n if (j < length && source.charCodeAt(j) === 35 /* '#' */) return i;\n\n const nl = source.indexOf(\"\\n\", i);\n if (nl === -1) break;\n i = nl + 1;\n }\n return -1;\n }\n\n private static _pushText(instructions: ShaderInstruction[], source: string, from: number, to: number): void {\n if (from >= to) return;\n const last = instructions.length > 0 ? instructions[instructions.length - 1] : null;\n if (last && last[0] === ShaderPreprocessorDirective.Text) {\n (last as [number, string])[1] += source.substring(from, to);\n } else {\n instructions.push([ShaderPreprocessorDirective.Text, source.substring(from, to)]);\n }\n }\n\n /**\n * Backfill jump offset of an IF/ELIF instruction.\n * When onlyPlaceholder is true, only backfill if the current value is still -1\n */\n private static _backfillJump(inst: ShaderInstruction, target: number, onlyPlaceholder = false): void {\n const directive = inst[0];\n if (directive === ShaderPreprocessorDirective.IfDef || directive === ShaderPreprocessorDirective.IfNdef) {\n if (!onlyPlaceholder || inst[2] === -1) (inst as [number, string, number])[2] = target;\n } else if (directive === ShaderPreprocessorDirective.IfCmp) {\n if (!onlyPlaceholder || inst[4] === -1) (inst as [number, string, string, number, number])[4] = target;\n } else if (directive === ShaderPreprocessorDirective.IfExpr) {\n if (!onlyPlaceholder || inst[2] === -1) (inst as [number, Condition, number])[2] = target;\n }\n }\n\n private static _stripLineComment(s: string): string {\n const idx = s.indexOf(\"//\");\n return idx >= 0 ? s.substring(0, idx).trimEnd() : s;\n }\n\n private static _parseCondition(expr: string): Condition {\n const ctx: ExprCtx = { s: expr.trim(), i: 0 };\n return ShaderInstructionEncoder._parseOr(ctx);\n }\n\n private static _skipWs(ctx: ExprCtx): void {\n while (\n ctx.i < ctx.s.length &&\n (ctx.s.charCodeAt(ctx.i) === 32 /* space */ || ctx.s.charCodeAt(ctx.i) === 9) /* tab */\n )\n ctx.i++;\n }\n\n private static _parseOr(ctx: ExprCtx): Condition {\n let left = ShaderInstructionEncoder._parseAnd(ctx);\n ShaderInstructionEncoder._skipWs(ctx);\n while (\n ctx.i < ctx.s.length - 1 &&\n ctx.s.charCodeAt(ctx.i) === 124 /* '|' */ &&\n ctx.s.charCodeAt(ctx.i + 1) === 124 /* '|' */\n ) {\n ctx.i += 2;\n ShaderInstructionEncoder._skipWs(ctx);\n left = { t: \"or\", l: left, r: ShaderInstructionEncoder._parseAnd(ctx) };\n ShaderInstructionEncoder._skipWs(ctx);\n }\n return left;\n }\n\n private static _parseAnd(ctx: ExprCtx): Condition {\n let left = ShaderInstructionEncoder._parseUnary(ctx);\n ShaderInstructionEncoder._skipWs(ctx);\n while (\n ctx.i < ctx.s.length - 1 &&\n ctx.s.charCodeAt(ctx.i) === 38 /* '&' */ &&\n ctx.s.charCodeAt(ctx.i + 1) === 38 /* '&' */\n ) {\n ctx.i += 2;\n ShaderInstructionEncoder._skipWs(ctx);\n left = { t: \"and\", l: left, r: ShaderInstructionEncoder._parseUnary(ctx) };\n ShaderInstructionEncoder._skipWs(ctx);\n }\n return left;\n }\n\n private static _parseUnary(ctx: ExprCtx): Condition {\n ShaderInstructionEncoder._skipWs(ctx);\n if (ctx.s.charCodeAt(ctx.i) === 33 /* '!' */) {\n ctx.i++;\n ShaderInstructionEncoder._skipWs(ctx);\n return { t: \"not\", c: ShaderInstructionEncoder._parsePrimary(ctx) };\n }\n return ShaderInstructionEncoder._parsePrimary(ctx);\n }\n\n private static _parsePrimary(ctx: ExprCtx): Condition {\n ShaderInstructionEncoder._skipWs(ctx);\n const { s } = ctx;\n\n // Parenthesized expression\n if (s.charCodeAt(ctx.i) === 40 /* '(' */) {\n ctx.i++;\n ShaderInstructionEncoder._skipWs(ctx);\n const inner = ShaderInstructionEncoder._parseOr(ctx);\n ShaderInstructionEncoder._skipWs(ctx);\n if (s.charCodeAt(ctx.i) === 41 /* ')' */) ctx.i++;\n return inner;\n }\n\n // defined(MACRO) or defined MACRO\n if (s.substring(ctx.i, ctx.i + 7) === \"defined\") {\n ctx.i += 7;\n ShaderInstructionEncoder._skipWs(ctx);\n const hasParen = s.charCodeAt(ctx.i) === 40; /* '(' */\n if (hasParen) ctx.i++;\n ShaderInstructionEncoder._skipWs(ctx);\n const name = ShaderInstructionEncoder._scanIdentifier(ctx);\n ShaderInstructionEncoder._skipWs(ctx);\n if (hasParen && s.charCodeAt(ctx.i) === 41 /* ')' */) ctx.i++;\n return { t: \"def\", m: name };\n }\n\n // Numeric literal\n if (ctx.i < s.length && ShaderInstructionEncoder._isDigit(s.charCodeAt(ctx.i))) {\n const lhsNum = ShaderInstructionEncoder._scanNumber(ctx);\n ShaderInstructionEncoder._skipWs(ctx);\n const op = ShaderInstructionEncoder._scanOp(ctx);\n if (op) {\n ShaderInstructionEncoder._skipWs(ctx);\n return {\n t: \"bool\",\n v: ShaderInstructionEncoder._evalNumOp(lhsNum, op, ShaderInstructionEncoder._scanNumber(ctx))\n };\n }\n return { t: \"bool\", v: lhsNum !== 0 };\n }\n\n // Identifier — comparison or defined check\n const name = ShaderInstructionEncoder._scanIdentifier(ctx);\n if (!name) return { t: \"bool\", v: false };\n ShaderInstructionEncoder._skipWs(ctx);\n const op = ShaderInstructionEncoder._scanOp(ctx);\n if (op) {\n ShaderInstructionEncoder._skipWs(ctx);\n return { t: \"cmp\", m: name, op, v: ShaderInstructionEncoder._scanNumber(ctx) };\n }\n return { t: \"def\", m: name };\n }\n\n private static _isDigit(charCode: number): boolean {\n return charCode >= 48 /* '0' */ && charCode <= 57 /* '9' */;\n }\n\n private static _isAlnum(charCode: number): boolean {\n return (\n (charCode >= 65 /* 'A' */ && charCode <= 90) /* 'Z' */ ||\n (charCode >= 97 /* 'a' */ && charCode <= 122) /* 'z' */ ||\n (charCode >= 48 /* '0' */ && charCode <= 57) /* '9' */ ||\n charCode === 95 /* '_' */\n );\n }\n\n private static _scanIdentifier(ctx: ExprCtx): string {\n const start = ctx.i;\n while (ctx.i < ctx.s.length && ShaderInstructionEncoder._isAlnum(ctx.s.charCodeAt(ctx.i))) ctx.i++;\n return ctx.s.substring(start, ctx.i);\n }\n\n private static _scanNumber(ctx: ExprCtx): number {\n const start = ctx.i;\n if (ctx.s.charCodeAt(ctx.i) === 45 /* '-' */) ctx.i++;\n while (\n ctx.i < ctx.s.length &&\n (ShaderInstructionEncoder._isDigit(ctx.s.charCodeAt(ctx.i)) || ctx.s.charCodeAt(ctx.i) === 46) /* '.' */\n )\n ctx.i++;\n return Number(ctx.s.substring(start, ctx.i)) || 0;\n }\n\n private static _scanOp(ctx: ExprCtx): string {\n const c = ctx.s.charCodeAt(ctx.i);\n const c2 = ctx.i + 1 < ctx.s.length ? ctx.s.charCodeAt(ctx.i + 1) : 0;\n if (c === 61 /* '=' */ && c2 === 61 /* '=' */) {\n ctx.i += 2;\n return \"==\";\n }\n if (c === 33 /* '!' */ && c2 === 61 /* '=' */) {\n ctx.i += 2;\n return \"!=\";\n }\n if (c === 62 /* '>' */ && c2 === 61 /* '=' */) {\n ctx.i += 2;\n return \">=\";\n }\n if (c === 60 /* '<' */ && c2 === 61 /* '=' */) {\n ctx.i += 2;\n return \"<=\";\n }\n if (c === 62 /* '>' */) {\n ctx.i++;\n return \">\";\n }\n if (c === 60 /* '<' */) {\n ctx.i++;\n return \"<\";\n }\n return \"\";\n }\n\n private static _evalNumOp(lhs: number, op: string, rhs: number): boolean {\n switch (op) {\n case \"==\":\n return lhs === rhs;\n case \"!=\":\n return lhs !== rhs;\n case \">\":\n return lhs > rhs;\n case \"<\":\n return lhs < rhs;\n case \">=\":\n return lhs >= rhs;\n case \"<=\":\n return lhs <= rhs;\n default:\n return false;\n }\n }\n}\n","import { ETokenType } from \"../common\";\nimport { NoneTerminal, Terminal } from \"../parser/GrammarSymbol\";\nimport Production from \"./Production\";\nimport GrammarUtils from \"./Utils\";\n\nexport default class StateItem {\n static _id = 0;\n\n readonly production: Production;\n readonly position: number;\n readonly lookaheadSet: Set<Terminal>;\n readonly id: number;\n\n _needReInfer = true;\n get needReInfer() {\n return this._needReInfer;\n }\n set needReInfer(v: boolean) {\n this._needReInfer = v;\n }\n\n get curSymbol() {\n return this.production.derivation[this.position];\n }\n get nextSymbol() {\n return this.production.derivation[this.position + 1];\n }\n\n constructor(production: Production, position: number, lookahead: Iterable<Terminal>) {\n this.production = production;\n this.position = position;\n this.lookaheadSet = new Set();\n for (const la of lookahead) {\n this.lookaheadSet.add(la);\n }\n this.id = StateItem._id++;\n }\n\n addLookahead(ts: Iterable<Terminal>) {\n for (const t of ts) {\n if (this.lookaheadSet.has(t)) continue;\n this.lookaheadSet.add(t);\n this.needReInfer = true;\n }\n }\n\n symbolByOffset(offset: number) {\n return this.production.derivation[this.position + offset];\n }\n\n canReduce() {\n if (this.position > this.production.derivation.length - 1) return true;\n else {\n for (let i = this.position; i < this.production.derivation.length; i++) {\n if (this.production.derivation[i] !== ETokenType.EPSILON) return false;\n }\n return true;\n }\n }\n\n advance() {\n // #if _VERBOSE\n if (this.canReduce()) throw `Error: advance reduce-able parsing state item`;\n // #endif\n return new StateItem(this.production, this.position + 1, this.lookaheadSet);\n }\n\n // #if _VERBOSE\n toString() {\n const coreItem = this.production.derivation.map((item) => GrammarUtils.toString(item));\n coreItem[this.position] = \".\" + (coreItem[this.position] ?? \"\");\n\n return `${NoneTerminal[this.production.goal]} :=> ${coreItem.join(\"|\")} ;${Array.from(this.lookaheadSet)\n .map((item) => GrammarUtils.toString(item))\n .join(\"/\")}`;\n }\n // #endif\n}\n","import { Terminal } from \"../parser/GrammarSymbol\";\nimport Production from \"./Production\";\nimport StateItem from \"./StateItem\";\n\nexport default class State {\n static closureMap: Map<string /** state mapKey */, State> = new Map();\n static pool: Map<number, State> = new Map();\n static _id = 0;\n\n readonly id: number;\n readonly cores: Set<StateItem>;\n private _items: Set<StateItem>;\n get items() {\n return this._items;\n }\n\n closured = false;\n get needReInfer() {\n for (const core of this.cores) {\n if (core.needReInfer) return true;\n }\n return false;\n }\n\n private _stateItemPool: Map<string /** Map ID */, StateItem> = new Map();\n\n static create(cores: StateItem[]) {\n const cacheKey = this.getMapKey(cores);\n const state = this.closureMap.get(cacheKey);\n if (state) {\n for (const core of cores) {\n // merge lookahead\n state.createStateItem(core.production, core.position, core.lookaheadSet);\n }\n return state;\n }\n\n const newState = new State(cores);\n this.closureMap.set(cacheKey, newState);\n return newState;\n }\n\n // TODO: any optimization?\n static getMapKey(cores: StateItem[]) {\n return cores.map((item) => `${item.production.id},${item.position}`).join(\";\");\n }\n\n private constructor(cores: Iterable<StateItem>) {\n this.id = State._id++;\n this._items = new Set([...cores]);\n this.cores = new Set([...cores]);\n for (const it of cores) {\n const itemMapKey = this.getStateItemMapKey(it.production, it.position);\n this._stateItemPool.set(itemMapKey, it);\n }\n State.pool.set(this.id, this);\n }\n\n // TODO: any optimization?\n getStateItemMapKey(production: Production, position: number) {\n return `${production.id},${position}`;\n }\n\n createStateItem(production: Production, position: number, lookaheadSet: Iterable<Terminal> = new Set()) {\n const mapId = this.getStateItemMapKey(production, position);\n const item = this._stateItemPool.get(mapId);\n if (item) {\n for (const la of lookaheadSet) {\n if (item.lookaheadSet.has(la)) continue;\n item.lookaheadSet.add(la);\n item.needReInfer = true;\n }\n return item;\n }\n const newItem = new StateItem(production, position, lookaheadSet);\n this._stateItemPool.set(mapId, newItem);\n return newItem;\n }\n}\n","import { ETokenType, ShaderRange } from \"../common\";\nimport { ASTNode, TreeNode } from \"../parser/AST\";\nimport { TranslationRule } from \"../parser/SemanticAnalyzer\";\nimport { NoneTerminal, GrammarSymbol } from \"../parser/GrammarSymbol\";\nimport Production from \"./Production\";\nimport { ActionInfo, EAction } from \"./types\";\nimport { 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 ColorWriteMask: Keyword.GSColorWriteMask,\n UsePass: Keyword.GSUsePass,\n\n true: Keyword.True,\n false: Keyword.False\n };\n\n private static _symbolLexemeTable = <Record<string, Keyword>>{\n \"{\": Keyword.LeftBrace,\n \"}\": Keyword.RightBrace,\n \"=\": Keyword.Equal,\n \"|\": Keyword.BitwiseOr\n };\n\n private static _isWordSeparatorChar(charCode: number): boolean {\n return (\n charCode === 123 || // {\n charCode === 125 || // }\n charCode === 61 || // =\n charCode === 59 || // ;\n charCode === 46 || // . CullMode.Back\n charCode === 91 || // [ Enabled[0],\n charCode === 40 || // ( Color(1.0, 1.0, 1.0, 1.0);\n charCode === 124 // | ColorWriteMask.Red | ColorWriteMask.Green\n );\n }\n\n private static _scanDigits(source: string, startIndex: number): number {\n let currentIndex = startIndex;\n while (currentIndex < source.length) {\n const charCode = source.charCodeAt(currentIndex);\n if (BaseLexer.isDigit(charCode)) {\n currentIndex++;\n } else {\n break;\n }\n }\n return currentIndex;\n }\n\n scanNumber(): number {\n this.skipCommentsAndSpace();\n const start = this._currentIndex;\n const source = this._source;\n let index = this._currentIndex;\n\n // Scan integer part\n index = SourceLexer._scanDigits(source, index);\n\n // Scan decimal part if present\n if (source[index] === \".\") {\n index = SourceLexer._scanDigits(source, index + 1);\n }\n\n this.advance(index - this._currentIndex);\n return Number(source.substring(start, index));\n }\n\n scanColor(): Color {\n this.scanLexeme(\"(\");\n\n let r = 0;\n let g = 0;\n let b = 0;\n let a = 1;\n\n r = this.scanNumber();\n this.skipCommentsAndSpace();\n if (this.peek(1) !== \")\") {\n this.scanLexeme(\",\");\n g = this.scanNumber();\n this.skipCommentsAndSpace();\n if (this.peek(1) !== \")\") {\n this.scanLexeme(\",\");\n b = this.scanNumber();\n this.skipCommentsAndSpace();\n if (this.peek(1) !== \")\") {\n this.scanLexeme(\",\");\n a = this.scanNumber();\n this.skipCommentsAndSpace();\n }\n }\n }\n\n this.scanLexeme(\")\");\n return new Color(r, g, b, a);\n }\n\n override scanToken(): BaseToken {\n while (true) {\n this.skipCommentsAndSpace();\n\n if (this.isEnd()) {\n return;\n }\n\n const start = this.getShaderPosition(0);\n if (BaseLexer.isAlpha(this.getCurCharCode())) {\n const wordToken = this._scanWord(start);\n if (wordToken !== null) {\n return wordToken;\n }\n this.hasPendingContent = true;\n continue; // Continue loop to scan next token if word was invalid\n }\n\n const currentChar = this.getCurChar();\n const symbolKeyword = SourceLexer._symbolLexemeTable[currentChar];\n if (symbolKeyword !== undefined) {\n this.advance(1);\n const token = BaseToken.pool.get();\n token.set(symbolKeyword, currentChar, start);\n return token;\n }\n\n // Skip unrecognized character and continue\n this.advance(1);\n }\n }\n\n // #if _VERBOSE\n scanToCharacter(char: string): void {\n while (this.getCurChar() !== char && !this.isEnd()) {\n this.advance(1);\n }\n this.advance(1);\n }\n // #endif\n\n createCompileError(message: string, location?: ShaderPosition | ShaderRange) {\n return 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 ColorWriteMask,\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 ColorWriteMask\n };\n private static _symbolTableStack = new SymbolTableStack<ShaderSourceSymbol, SymbolTable<ShaderSourceSymbol>>();\n private static _lexer = new SourceLexer();\n private static _lookupSymbol = new ShaderSourceSymbol(\"\", null);\n\n static parse(sourceCode: string): IShaderSource {\n 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 _scanEnumConstValue(enumName: string): number | undefined {\n const lexer = this._lexer;\n lexer.advance(1);\n const constValueToken = lexer.scanToken();\n const value = this._renderStateConstMap[enumName]?.[constValueToken.lexeme] as number;\n if (value == undefined) {\n this._createCompileError(\n `Invalid engine constant: ${enumName}.${constValueToken.lexeme}`,\n constValueToken.location\n );\n // #if _VERBOSE\n lexer.scanToCharacter(\";\");\n // #endif\n }\n return value;\n }\n\n private static _parseRenderStateProperty(stateLexeme: string, out: IRenderStates): void {\n const lexer = this._lexer;\n const propertyToken = lexer.scanToken();\n const propertyLexeme = propertyToken.lexeme;\n let stateElementKey = propertyLexeme;\n if (stateLexeme === \"BlendState\" && propertyLexeme !== \"BlendColor\" && propertyLexeme !== \"AlphaToCoverage\") {\n let keyIndex = 0;\n const scannedLexeme = lexer.scanTwoExpectedLexemes(\"[\", \"=\");\n if (scannedLexeme === \"[\") {\n keyIndex = lexer.scanNumber();\n lexer.scanLexeme(\"]\");\n lexer.scanLexeme(\"=\");\n } else if (scannedLexeme !== \"=\") {\n this._createCompileError(`Invalid syntax, expect '[' or '=', but got unexpected token`);\n // #if _VERBOSE\n lexer.scanToCharacter(\";\");\n return;\n // #endif\n }\n stateElementKey += keyIndex;\n } else {\n lexer.scanLexeme(\"=\");\n }\n\n const renderStateElementKey = RenderStateElementKey[stateLexeme + stateElementKey];\n if (renderStateElementKey === undefined) {\n this._createCompileError(`Invalid render state property ${propertyLexeme}`);\n // #if _VERBOSE\n lexer.scanToCharacter(\";\");\n return;\n // #endif\n }\n\n lexer.skipCommentsAndSpace();\n let propertyValue: number | string | boolean | Color;\n\n const curCharCode = lexer.getCurCharCode();\n if (BaseLexer.isDigit(curCharCode) || curCharCode === 46) {\n // Digit or '.'\n propertyValue = lexer.scanNumber();\n } else {\n const valueToken = lexer.scanToken();\n const valueTokenType = valueToken.type;\n\n if (valueTokenType === Keyword.True) {\n propertyValue = true;\n } else if (valueTokenType === Keyword.False) {\n propertyValue = false;\n } else if (valueTokenType === Keyword.GSColor) {\n propertyValue = lexer.scanColor();\n } else if (lexer.getCurChar() === \".\") {\n propertyValue = this._scanEnumConstValue(valueToken.lexeme);\n if (propertyValue == undefined) return;\n // Support bitwise OR only for bitmask enums (e.g. ColorWriteMask)\n lexer.skipCommentsAndSpace();\n if (lexer.getCurChar() === \"|\") {\n if (valueToken.lexeme !== \"ColorWriteMask\") {\n this._createCompileError(\n `Bitwise OR '|' is not supported for '${valueToken.lexeme}', only bitmask enums like 'ColorWriteMask' support this`,\n valueToken.location\n );\n // #if _VERBOSE\n lexer.scanToCharacter(\";\");\n // #endif\n return;\n }\n while (lexer.getCurChar() === \"|\") {\n lexer.advance(1);\n const nextEnumToken = lexer.scanToken();\n if (nextEnumToken == undefined || lexer.getCurChar() !== \".\") {\n this._createCompileError(`Invalid syntax after '|', expect 'EnumType.Value'`, nextEnumToken?.location);\n // #if _VERBOSE\n lexer.scanToCharacter(\";\");\n // #endif\n return;\n }\n if (nextEnumToken.lexeme !== valueToken.lexeme) {\n this._createCompileError(\n `Cannot mix enum types in bitwise OR: expected '${valueToken.lexeme}' but got '${nextEnumToken.lexeme}'`,\n nextEnumToken.location\n );\n // #if _VERBOSE\n lexer.scanToCharacter(\";\");\n // #endif\n return;\n }\n const nextValue = this._scanEnumConstValue(nextEnumToken.lexeme);\n if (nextValue == undefined) return;\n propertyValue = (<number>propertyValue) | (<number>nextValue);\n lexer.skipCommentsAndSpace();\n }\n }\n } else {\n propertyValue = valueToken.lexeme;\n const lookupSymbol = this._lookupSymbol;\n lookupSymbol.set(valueToken.lexeme, ETokenType.ID);\n if (!this._symbolTableStack.lookup(lookupSymbol)) {\n this._createCompileError(`Invalid ${stateLexeme} variable: ${valueToken.lexeme}`, valueToken.location);\n // #if _VERBOSE\n lexer.scanToCharacter(\";\");\n return;\n // #endif\n }\n }\n }\n lexer.scanLexeme(\";\");\n if (typeof propertyValue === \"string\") {\n out.variableMap[renderStateElementKey] = propertyValue;\n } else {\n out.constantMap[renderStateElementKey] = propertyValue;\n }\n }\n\n private static _parseRenderQueueDeclarationOrAssignment(renderStates: IRenderStates): void {\n const lexer = this._lexer;\n const token = lexer.scanToken();\n if (token.type === ETokenType.ID) {\n // Declaration\n lexer.scanLexeme(\";\");\n const symbol = new ShaderSourceSymbol(token.lexeme, Keyword.GSRenderQueueType);\n this._symbolTableStack.insert(symbol);\n return;\n }\n\n if (token.lexeme !== \"=\") {\n this._createCompileError(`Invalid syntax, expect character '=', but got ${token.lexeme}`, token.location);\n // #if _VERBOSE\n return;\n // #endif\n }\n const word = lexer.scanToken();\n lexer.scanLexeme(\";\");\n const value = this._renderStateConstMap.RenderQueueType[word.lexeme];\n const key = RenderStateElementKey.RenderQueueType;\n if (value == undefined) {\n renderStates.variableMap[key] = word.lexeme;\n const lookupSymbol = this._lookupSymbol;\n lookupSymbol.set(word.lexeme, Keyword.GSRenderQueueType);\n const sm = this._symbolTableStack.lookup(lookupSymbol);\n if (!sm) {\n this._createCompileError(`Invalid RenderQueueType variable: ${word.lexeme}`, word.location);\n // #if _VERBOSE\n return;\n // #endif\n }\n } else {\n renderStates.constantMap[key] = value;\n }\n }\n\n private static _addPendingContents(\n start: ShaderPosition,\n backOffset: number,\n outPendingContents: IStatement[]\n ): void {\n const lexer = this._lexer;\n if (lexer.hasPendingContent) {\n const endIndex = lexer.currentIndex - backOffset;\n outPendingContents.push({\n range: { start, end: { ...lexer.getShaderPosition(0), index: endIndex - 1 } },\n content: lexer.source.substring(start.index, endIndex - 1)\n });\n lexer.hasPendingContent = false;\n }\n }\n\n private static _parseSubShader(): ISubShaderSource {\n const lexer = this._lexer;\n this._pushScope();\n\n let braceLevel = 1;\n const name = lexer.scanPairedChar('\"', '\"', false, false);\n const subShaderSource = ShaderSourceFactory.createSubShaderSource(name);\n lexer.scanLexeme(\"{\");\n\n lexer.skipCommentsAndSpace();\n let start = lexer.getShaderPosition(0);\n\n while (true) {\n const token = lexer.scanToken();\n switch (token.type) {\n case Keyword.GSPass:\n this._addPendingContents(start, token.lexeme.length, subShaderSource.pendingContents);\n const pass = this._parsePass();\n subShaderSource.passes.push(pass);\n start = lexer.getShaderPosition(0);\n break;\n case Keyword.GSUsePass:\n this._addPendingContents(start, token.lexeme.length, subShaderSource.pendingContents);\n const name = lexer.scanPairedChar('\"', '\"', false, false);\n subShaderSource.passes.push(ShaderSourceFactory.createUsePass(name));\n start = lexer.getShaderPosition(0);\n break;\n case Keyword.LeftBrace:\n ++braceLevel;\n break;\n case Keyword.RightBrace:\n if (--braceLevel === 0) {\n this._addPendingContents(start, token.lexeme.length, subShaderSource.pendingContents);\n this._popScope();\n return subShaderSource;\n }\n break;\n default:\n start = this._parseRenderStateAndTags(\n token,\n start,\n subShaderSource.pendingContents,\n subShaderSource.renderStates,\n subShaderSource.tags\n );\n }\n }\n }\n\n private static _parseTags(tags: Record<string, number | string | boolean>): void {\n const lexer = this._lexer;\n lexer.scanLexeme(\"{\");\n while (true) {\n const ident = lexer.scanToken();\n lexer.scanLexeme(\"=\");\n const value = lexer.scanPairedChar('\"', '\"', false, false);\n lexer.skipCommentsAndSpace();\n\n tags[ident.lexeme] = value;\n\n if (lexer.peek(1) === \"}\") {\n lexer.advance(1);\n return;\n }\n lexer.scanLexeme(\",\");\n }\n }\n\n private static _parsePass(): IShaderPassSource {\n this._pushScope();\n const lexer = this._lexer;\n\n const name = lexer.scanPairedChar('\"', '\"', false, false);\n const passSource = ShaderSourceFactory.createShaderPassSource(name);\n lexer.scanLexeme(\"{\");\n let braceLevel = 1;\n\n lexer.skipCommentsAndSpace();\n let start = lexer.getShaderPosition(0);\n\n while (true) {\n const token = lexer.scanToken();\n switch (token.type) {\n case Keyword.GSVertexShader:\n case Keyword.GSFragmentShader:\n this._addPendingContents(start, token.lexeme.length, passSource.pendingContents);\n lexer.scanLexeme(\"=\");\n const entry = lexer.scanToken();\n if (passSource[token.lexeme]) {\n const error = 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 case Keyword.GSColorWriteMask:\n this._addPendingContents(start, token.lexeme.length, outGlobalContents);\n this._parseVariableDeclaration();\n start = this._lexer.getShaderPosition(0);\n break;\n case Keyword.GSRenderQueueType:\n this._addPendingContents(start, token.lexeme.length, outGlobalContents);\n this._parseRenderQueueDeclarationOrAssignment(outRenderStates);\n start = this._lexer.getShaderPosition(0);\n break;\n default:\n // Unrecognized tokens are defined as pending content\n this._lexer.hasPendingContent = true;\n }\n return start;\n }\n}\n","import { Color, Logger, ShaderLanguage } from \"@galacean/engine\";\nimport { IPrecompiledShader, IRenderStates, 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 { ShaderInstructionEncoder } from \"./ShaderInstructionEncoder\";\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 if (ret) {\n // Always parse instructions for the compiled GLSL\n ret.vertexShaderInstructions = ShaderInstructionEncoder.parse(ret.vertex);\n ret.fragmentShaderInstructions = ShaderInstructionEncoder.parse(ret.fragment);\n }\n\n return ret;\n }\n\n _precompile(sourceCode: string, platformTarget: ShaderLanguage, basePath: string): IPrecompiledShader {\n const shaderSource = this._parseShaderSource(sourceCode);\n\n const subShaders = shaderSource.subShaders.map((sub) => ({\n name: sub.name,\n tags: sub.tags,\n passes: sub.passes.map((pass) => {\n if (pass.isUsePass) {\n return {\n name: pass.name,\n isUsePass: true as const,\n tags: pass.tags,\n renderStates: this._serializeRenderStates(pass.renderStates)\n };\n }\n\n const programSource = this._parseShaderPass(\n pass.contents,\n pass.vertexEntry,\n pass.fragmentEntry,\n platformTarget,\n basePath\n );\n\n if (!programSource) {\n throw new Error(\n `Shader pass \"${shaderSource.name}.${sub.name}.${pass.name}\" precompile failed, please check the shader source code.`\n );\n }\n\n return {\n name: pass.name,\n isUsePass: false as const,\n tags: pass.tags,\n renderStates: this._serializeRenderStates(pass.renderStates),\n vertexShaderInstructions: programSource.vertexShaderInstructions,\n fragmentShaderInstructions: programSource.fragmentShaderInstructions\n };\n })\n }));\n\n return {\n name: shaderSource.name,\n platformTarget,\n subShaders\n };\n }\n\n private _serializeRenderStates(renderStates: IRenderStates): {\n constantMap: Record<string, number | string | boolean | number[]>;\n variableMap: Record<string, string>;\n } {\n const constantMap: Record<string, number | string | boolean | number[]> = {};\n for (const key in renderStates.constantMap) {\n const value = renderStates.constantMap[key];\n if (value instanceof Color) {\n constantMap[key] = [value.r, value.g, value.b, value.a];\n } else {\n constantMap[key] = value as number | string | boolean;\n }\n }\n return {\n constantMap,\n variableMap: renderStates.variableMap\n };\n }\n\n // #if _VERBOSE\n /**\n * @internal\n */\n _logErrors(errors: Error[]) {\n if (errors.length === 0 || !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","ShaderPreprocessorDirective","Text","IfDef","IfNdef","IfCmp","IfExpr","Else","Endif","Define","DefineVal","DefineFunc","Undef","ShaderInstructionEncoder","glsl","instructions","backfillStack","directiveStart","_findDirectiveStart","_pushText","lineEnd","line","_DIRECTIVE_RE","last","keyword","rest","idx","cond","_parseCondition","_pushConditionInstruction","prevIdx","elseIdx","_backfillJump","endifIdx","afterEndif","j","inst","funcMatch","_FUNC_MACRO_RE","_stripLineComment","spaceIdx","m","op","v","c","nl","onlyPlaceholder","directive","trimEnd","ctx","_parseOr","_skipWs","_parseAnd","l","r","_parseUnary","_parsePrimary","inner","hasParen","_scanIdentifier","_isDigit","lhsNum","_scanNumber","_scanOp","_evalNumOp","_isAlnum","c2","lhs","rhs","StateItem","production","position","lookahead","_needReInfer","lookaheadSet","la","_id","addLookahead","ts","needReInfer","symbolByOffset","derivation","canReduce","EPSILON","curSymbol","nextSymbol","State","cores","closured","_stateItemPool","_items","it","itemMapKey","getStateItemMapKey","createStateItem","mapId","newItem","cacheKey","getMapKey","state","closureMap","core","newState","items","GrammarUtils","createProductionWithOptions","goal","options","astTypePool","opt","addMapSetItem","k","isSubSet","sb","isActionEqual","action","EAction","LALR1","grammar","firstSetMap","followSetMap","actionTable","gotoTable","_firstSetNTStack","generate","computeFirstSet","buildStateTable","startStateItemCore","productions","startState","_extendState","_closure","newStates","_inferNextState","ns","_extendStateItem","productionList","getProductionList","newLookaheadSet","lastFirstSet","terminalExist","Utils","coreMap","stateActionTable","stateGotoTable","stateItem","Reduce","Accept","_addAction","nextItem","entries","gs","Shift","table","terminal","exist","slice","_computeFirstSetForNT","NT","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","tokens","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","g","Color","wordToken","symbolKeyword","_symbolLexemeTable","createCompileError","_validateWordBoundaries","tokenType","_keywordLexemeTable","startIndex","endIndex","prevCharCode","_isValidWordBoundary","nextCharCode","_isWordSeparatorChar","RenderQueueType","GSRenderQueueType","BlendState","GSBlendState","DepthState","GSDepthState","StencilState","GSStencilState","RasterState","GSRasterState","EditorProperties","GSEditorProperties","EditorMacros","GSEditorMacros","Editor","GSEditor","Tags","GSTags","VertexShader","GSVertexShader","FragmentShader","GSFragmentShader","SubShader","GSSubShader","Pass","GSPass","BlendFactor","GSBlendFactor","BlendOperation","GSBlendOperation","Bool","GSBool","GSNumber","GSColor","CompareFunction","GSCompareFunction","StencilOperation","GSStencilOperation","CullMode","GSCullMode","ColorWriteMask","GSColorWriteMask","UsePass","GSUsePass","LeftBrace","RightBrace","Equal","BitwiseOr","ShaderSourceParser","sourceCode","startTime","errors","_symbolTableStack","_pushScope","lexer","_lexer","shaderSource","_parseShader","shaderPendingContents","shaderRenderStates","subShader","curSubShaderGlobalStatements","concat","globalSubShaderStates","_mergeRenderStates","pass","globalPassRenderStates","passGlobalStatements","contents","content","braceLevel","_addPendingContents","_parseSubShader","_popScope","_parseRenderState","_parseRenderStateDeclarationOrAssignment","outRenderStates","stateToken","renderState","_parseRenderStateProperties","_createCompileError","outTarget","targetVariableMap","sourceVariableMap","key","sourceConstantMap","targetConstantMap","_parseVariableDeclaration","_parseRenderStateProperty","_scanEnumConstValue","enumName","constValueToken","_renderStateConstMap","stateLexeme","propertyToken","propertyLexeme","stateElementKey","keyIndex","scannedLexeme","renderStateElementKey","RenderStateElementKey","propertyValue","valueToken","valueTokenType","nextEnumToken","nextValue","_parseRenderQueueDeclarationOrAssignment","outPendingContents","subShaderSource","_parsePass","_parseRenderStateAndTags","_parseTags","passSource","outGlobalContents","outTags","_parseShaderSource","_parseShaderPass","backend","totalStartTime","noIncludeContent","parser","_parser","program","ShaderLanguage","GLSLES100","codeGenStartTime","vertexShaderInstructions","fragmentShaderInstructions","_precompile","platformTarget","basePath","sub","_serializeRenderStates","programSource","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/_instanceof.js","../../../node_modules/.pnpm/@swc+helpers@0.5.15/node_modules/@swc/helpers/esm/_set_prototype_of.js","../../../node_modules/.pnpm/@swc+helpers@0.5.15/node_modules/@swc/helpers/esm/_inherits.js","../../../node_modules/.pnpm/@swc+helpers@0.5.15/node_modules/@swc/helpers/esm/_create_class.js","../../../node_modules/.pnpm/@swc+helpers@0.5.15/node_modules/@swc/helpers/esm/_array_like_to_array.js","../../../node_modules/.pnpm/@swc+helpers@0.5.15/node_modules/@swc/helpers/esm/_unsupported_iterable_to_array.js","../../../node_modules/.pnpm/@swc+helpers@0.5.15/node_modules/@swc/helpers/esm/_create_for_of_iterator_helper_loose.js","../../../node_modules/.pnpm/tslib@2.8.1/node_modules/tslib/tslib.es6.mjs","../src/common/ShaderRange.ts","../src/common/ShaderPosition.ts","../src/common/types.ts","../src/common/enums/Keyword.ts","../src/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","../src/ShaderInstructionEncoder.ts","../src/lalr/StateItem.ts","../src/lalr/State.ts","../src/lalr/Utils.ts","../src/lalr/types.ts","../src/lalr/LALR1.ts","../src/lalr/Production.ts","../src/parser/Grammar.ts","../src/lalr/CFG.ts","../src/parser/ShaderTargetParser.ts","../../../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 _instanceof(left, right) {\n if (right != null && typeof Symbol !== \"undefined\" && right[Symbol.hasInstance]) {\n return !!right[Symbol.hasInstance](left);\n } else return left instanceof right;\n}\nexport { _instanceof as _ };\n","function _set_prototype_of(o, p) {\n _set_prototype_of = Object.setPrototypeOf || function setPrototypeOf(o, p) {\n o.__proto__ = p;\n\n return o;\n };\n\n return _set_prototype_of(o, p);\n}\nexport { _set_prototype_of as _ };\n","import { _ as _set_prototype_of } from \"./_set_prototype_of.js\";\n\nfunction _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function\");\n }\n\n subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } });\n\n if (superClass) _set_prototype_of(subClass, superClass);\n}\nexport { _inherits as _ };\n","function _defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n\n if (\"value\" in descriptor) descriptor.writable = true;\n\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n}\nfunction _create_class(Constructor, protoProps, staticProps) {\n if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n if (staticProps) _defineProperties(Constructor, staticProps);\n\n return Constructor;\n}\nexport { _create_class as _ };\n","function _array_like_to_array(arr, len) {\n if (len == null || len > arr.length) len = arr.length;\n\n for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i];\n\n return arr2;\n}\nexport { _array_like_to_array as _ };\n","import { _ as _array_like_to_array } from \"./_array_like_to_array.js\";\n\nfunction _unsupported_iterable_to_array(o, minLen) {\n if (!o) return;\n if (typeof o === \"string\") return _array_like_to_array(o, minLen);\n\n var n = Object.prototype.toString.call(o).slice(8, -1);\n\n if (n === \"Object\" && o.constructor) n = o.constructor.name;\n if (n === \"Map\" || n === \"Set\") return Array.from(n);\n if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _array_like_to_array(o, minLen);\n}\nexport { _unsupported_iterable_to_array as _ };\n","import { _ as _unsupported_iterable_to_array } from \"./_unsupported_iterable_to_array.js\";\n\nfunction _create_for_of_iterator_helper_loose(o, allowArrayLike) {\n var it = typeof Symbol !== \"undefined\" && o[Symbol.iterator] || o[\"@@iterator\"];\n\n if (it) return (it = it.call(o)).next.bind(it);\n // Fallback for engines without symbol support\n if (Array.isArray(o) || (it = _unsupported_iterable_to_array(o)) || allowArrayLike && o && typeof o.length === \"number\") {\n if (it) o = it;\n\n var i = 0;\n\n return function() {\n if (i >= o.length) return { done: true };\n\n return { done: false, value: o[i++] };\n };\n }\n\n throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}\nexport { _create_for_of_iterator_helper_loose as _ };\n","/******************************************************************************\nCopyright (c) Microsoft Corporation.\n\nPermission to use, copy, modify, and/or distribute this software for any\npurpose with or without fee is hereby granted.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\nPERFORMANCE OF THIS SOFTWARE.\n***************************************************************************** */\n/* global Reflect, Promise, SuppressedError, Symbol, Iterator */\n\nvar extendStatics = function(d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n};\n\nexport function __extends(d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n}\n\nexport var __assign = function() {\n __assign = Object.assign || function __assign(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n }\n return t;\n }\n return __assign.apply(this, arguments);\n}\n\nexport function __rest(s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\n t[p[i]] = s[p[i]];\n }\n return t;\n}\n\nexport function __decorate(decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n}\n\nexport function __param(paramIndex, decorator) {\n return function (target, key) { decorator(target, key, paramIndex); }\n}\n\nexport function __esDecorate(ctor, descriptorIn, decorators, contextIn, initializers, extraInitializers) {\n function accept(f) { if (f !== void 0 && typeof f !== \"function\") throw new TypeError(\"Function expected\"); return f; }\n var kind = contextIn.kind, key = kind === \"getter\" ? \"get\" : kind === \"setter\" ? \"set\" : \"value\";\n var target = !descriptorIn && ctor ? contextIn[\"static\"] ? ctor : ctor.prototype : null;\n var descriptor = descriptorIn || (target ? Object.getOwnPropertyDescriptor(target, contextIn.name) : {});\n var _, done = false;\n for (var i = decorators.length - 1; i >= 0; i--) {\n var context = {};\n for (var p in contextIn) context[p] = p === \"access\" ? {} : contextIn[p];\n for (var p in contextIn.access) context.access[p] = contextIn.access[p];\n context.addInitializer = function (f) { if (done) throw new TypeError(\"Cannot add initializers after decoration has completed\"); extraInitializers.push(accept(f || null)); };\n var result = (0, decorators[i])(kind === \"accessor\" ? { get: descriptor.get, set: descriptor.set } : descriptor[key], context);\n if (kind === \"accessor\") {\n if (result === void 0) continue;\n if (result === null || typeof result !== \"object\") throw new TypeError(\"Object expected\");\n if (_ = accept(result.get)) descriptor.get = _;\n if (_ = accept(result.set)) descriptor.set = _;\n if (_ = accept(result.init)) initializers.unshift(_);\n }\n else if (_ = accept(result)) {\n if (kind === \"field\") initializers.unshift(_);\n else descriptor[key] = _;\n }\n }\n if (target) Object.defineProperty(target, contextIn.name, descriptor);\n done = true;\n};\n\nexport function __runInitializers(thisArg, initializers, value) {\n var useValue = arguments.length > 2;\n for (var i = 0; i < initializers.length; i++) {\n value = useValue ? initializers[i].call(thisArg, value) : initializers[i].call(thisArg);\n }\n return useValue ? value : void 0;\n};\n\nexport function __propKey(x) {\n return typeof x === \"symbol\" ? x : \"\".concat(x);\n};\n\nexport function __setFunctionName(f, name, prefix) {\n if (typeof name === \"symbol\") name = name.description ? \"[\".concat(name.description, \"]\") : \"\";\n return Object.defineProperty(f, \"name\", { configurable: true, value: prefix ? \"\".concat(prefix, \" \", name) : name });\n};\n\nexport function __metadata(metadataKey, metadataValue) {\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\n}\n\nexport function __awaiter(thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n}\n\nexport function __generator(thisArg, body) {\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g = Object.create((typeof Iterator === \"function\" ? Iterator : Object).prototype);\n return g.next = verb(0), g[\"throw\"] = verb(1), g[\"return\"] = verb(2), typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n function verb(n) { return function (v) { return step([n, v]); }; }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (g && (g = 0, op[0] && (_ = 0)), _) try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [op[0] & 2, t.value];\n switch (op[0]) {\n case 0: case 1: t = op; break;\n case 4: _.label++; return { value: op[1], done: false };\n case 5: _.label++; y = op[1]; op = [0]; continue;\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n if (t[2]) _.ops.pop();\n _.trys.pop(); continue;\n }\n op = body.call(thisArg, _);\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n }\n}\n\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n});\n\nexport function __exportStar(m, o) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\n}\n\nexport function __values(o) {\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\n if (m) return m.call(o);\n if (o && typeof o.length === \"number\") return {\n next: function () {\n if (o && i >= o.length) o = void 0;\n return { value: o && o[i++], done: !o };\n }\n };\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\n}\n\nexport function __read(o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o), r, ar = [], e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n }\n catch (error) { e = { error: error }; }\n finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n }\n finally { if (e) throw e.error; }\n }\n return ar;\n}\n\n/** @deprecated */\nexport function __spread() {\n for (var ar = [], i = 0; i < arguments.length; i++)\n ar = ar.concat(__read(arguments[i]));\n return ar;\n}\n\n/** @deprecated */\nexport function __spreadArrays() {\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\n r[k] = a[j];\n return r;\n}\n\nexport function __spreadArray(to, from, pack) {\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\n if (ar || !(i in from)) {\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\n ar[i] = from[i];\n }\n }\n return to.concat(ar || Array.prototype.slice.call(from));\n}\n\nexport function __await(v) {\n return this instanceof __await ? (this.v = v, this) : new __await(v);\n}\n\nexport function __asyncGenerator(thisArg, _arguments, generator) {\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\n return i = Object.create((typeof AsyncIterator === \"function\" ? AsyncIterator : Object).prototype), verb(\"next\"), verb(\"throw\"), verb(\"return\", awaitReturn), i[Symbol.asyncIterator] = function () { return this; }, i;\n function awaitReturn(f) { return function (v) { return Promise.resolve(v).then(f, reject); }; }\n function verb(n, f) { if (g[n]) { i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; if (f) i[n] = f(i[n]); } }\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\n function fulfill(value) { resume(\"next\", value); }\n function reject(value) { resume(\"throw\", value); }\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\n}\n\nexport function __asyncDelegator(o) {\n var i, p;\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: false } : f ? f(v) : v; } : f; }\n}\n\nexport function __asyncValues(o) {\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\n var m = o[Symbol.asyncIterator], i;\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\n}\n\nexport function __makeTemplateObject(cooked, raw) {\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\n return cooked;\n};\n\nvar __setModuleDefault = Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n};\n\nvar ownKeys = function(o) {\n ownKeys = Object.getOwnPropertyNames || function (o) {\n var ar = [];\n for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;\n return ar;\n };\n return ownKeys(o);\n};\n\nexport function __importStar(mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== \"default\") __createBinding(result, mod, k[i]);\n __setModuleDefault(result, mod);\n return result;\n}\n\nexport function __importDefault(mod) {\n return (mod && mod.__esModule) ? mod : { default: mod };\n}\n\nexport function __classPrivateFieldGet(receiver, state, kind, f) {\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\n}\n\nexport function __classPrivateFieldSet(receiver, state, value, kind, f) {\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\n}\n\nexport function __classPrivateFieldIn(state, receiver) {\n if (receiver === null || (typeof receiver !== \"object\" && typeof receiver !== \"function\")) throw new TypeError(\"Cannot use 'in' operator on non-object\");\n return typeof state === \"function\" ? receiver === state : state.has(receiver);\n}\n\nexport function __addDisposableResource(env, value, async) {\n if (value !== null && value !== void 0) {\n if (typeof value !== \"object\" && typeof value !== \"function\") throw new TypeError(\"Object expected.\");\n var dispose, inner;\n if (async) {\n if (!Symbol.asyncDispose) throw new TypeError(\"Symbol.asyncDispose is not defined.\");\n dispose = value[Symbol.asyncDispose];\n }\n if (dispose === void 0) {\n if (!Symbol.dispose) throw new TypeError(\"Symbol.dispose is not defined.\");\n dispose = value[Symbol.dispose];\n if (async) inner = dispose;\n }\n if (typeof dispose !== \"function\") throw new TypeError(\"Object not disposable.\");\n if (inner) dispose = function() { try { inner.call(this); } catch (e) { return Promise.reject(e); } };\n env.stack.push({ value: value, dispose: dispose, async: async });\n }\n else if (async) {\n env.stack.push({ async: true });\n }\n return value;\n}\n\nvar _SuppressedError = typeof SuppressedError === \"function\" ? SuppressedError : function (error, suppressed, message) {\n var e = new Error(message);\n return e.name = \"SuppressedError\", e.error = error, e.suppressed = suppressed, e;\n};\n\nexport function __disposeResources(env) {\n function fail(e) {\n env.error = env.hasError ? new _SuppressedError(e, env.error, \"An error was suppressed during disposal.\") : e;\n env.hasError = true;\n }\n var r, s = 0;\n function next() {\n while (r = env.stack.pop()) {\n try {\n if (!r.async && s === 1) return s = 0, env.stack.push(r), Promise.resolve().then(next);\n if (r.dispose) {\n var result = r.dispose.call(r.value);\n if (r.async) return s |= 2, Promise.resolve(result).then(next, function(e) { fail(e); return next(); });\n }\n else s |= 1;\n }\n catch (e) {\n fail(e);\n }\n }\n if (s === 1) return env.hasError ? Promise.reject(env.error) : Promise.resolve();\n if (env.hasError) throw env.error;\n }\n return next();\n}\n\nexport function __rewriteRelativeImportExtension(path, preserveJsx) {\n if (typeof path === \"string\" && /^\\.\\.?\\//.test(path)) {\n return path.replace(/\\.(tsx)$|((?:\\.d)?)((?:\\.[^./]+?)?)\\.([cm]?)ts$/i, function (m, tsx, d, ext, cm) {\n return tsx ? preserveJsx ? \".jsx\" : \".js\" : d && (!ext || !cm) ? m : (d + ext + \".\" + cm.toLowerCase() + \"js\");\n });\n }\n return path;\n}\n\nexport default {\n __extends,\n __assign,\n __rest,\n __decorate,\n __param,\n __esDecorate,\n __runInitializers,\n __propKey,\n __setFunctionName,\n __metadata,\n __awaiter,\n __generator,\n __createBinding,\n __exportStar,\n __values,\n __read,\n __spread,\n __spreadArrays,\n __spreadArray,\n __await,\n __asyncGenerator,\n __asyncDelegator,\n __asyncValues,\n __makeTemplateObject,\n __importStar,\n __importDefault,\n __classPrivateFieldGet,\n __classPrivateFieldSet,\n __classPrivateFieldIn,\n __addDisposableResource,\n __disposeResources,\n __rewriteRelativeImportExtension,\n};\n","import { 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 BitwiseOr,\n\n // Source Parser Tokens\n GSRenderQueueType,\n GSBlendState,\n GSDepthState,\n GSStencilState,\n GSRasterState,\n GSEditorProperties,\n GSEditorMacros,\n GSEditor,\n GSTags,\n GSVertexShader,\n GSFragmentShader,\n GSSubShader,\n GSPass,\n GSBlendFactor,\n GSBlendOperation,\n GSBool,\n GSNumber,\n GSColor,\n GSCompareFunction,\n GSStencilOperation,\n GSCullMode,\n GSColorWriteMask,\n GSUsePass,\n\n // Macros\n MACRO_IF,\n MACRO_IFDEF,\n MACRO_IFNDEF,\n MACRO_ELSE,\n MACRO_ELIF,\n MACRO_ENDIF,\n MACRO_UNDEF,\n 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","import type { Condition, ShaderInstruction } from \"@galacean/engine-design\";\n\nexport type { ShaderInstruction } from \"@galacean/engine-design\";\n\n/** Must stay in sync with ShaderPreprocessorDirective in @galacean/engine-core */\nconst ShaderPreprocessorDirective = {\n Text: 0,\n IfDef: 1,\n IfNdef: 2,\n IfCmp: 3,\n IfExpr: 4,\n Else: 5,\n Endif: 6,\n Define: 7,\n DefineVal: 8,\n DefineFunc: 9,\n Undef: 10\n} as const;\n\ninterface ExprCtx {\n s: string;\n i: number;\n}\n\n/**\n * @internal\n */\nexport class ShaderInstructionEncoder {\n private static _DIRECTIVE_RE = /^[ \\t]*#[ \\t]*(if|ifdef|ifndef|elif|else|endif|define|undef)\\b(.*)/;\n private static _FUNC_MACRO_RE = /^(\\w+)\\(([^)]*)\\)\\s*(.*)/;\n\n static parse(glsl: string): ShaderInstruction[] {\n const instructions: ShaderInstruction[] = [];\n const length = glsl.length;\n let pos = 0;\n const backfillStack: number[][] = [];\n\n while (pos < length) {\n const directiveStart = ShaderInstructionEncoder._findDirectiveStart(glsl, pos, length);\n\n if (directiveStart === -1) {\n ShaderInstructionEncoder._pushText(instructions, glsl, pos, length);\n break;\n }\n\n if (directiveStart > pos) {\n ShaderInstructionEncoder._pushText(instructions, glsl, pos, directiveStart);\n }\n\n let lineEnd = glsl.indexOf(\"\\n\", directiveStart);\n if (lineEnd === -1) lineEnd = length;\n const line = glsl.substring(directiveStart, lineEnd);\n pos = lineEnd < length ? lineEnd + 1 : length;\n\n const match = ShaderInstructionEncoder._DIRECTIVE_RE.exec(line);\n if (!match) {\n const last = instructions.length > 0 ? instructions[instructions.length - 1] : null;\n const text = lineEnd < length ? line + \"\\n\" : line;\n if (last && last[0] === ShaderPreprocessorDirective.Text) {\n (last as [number, string])[1] += text;\n } else {\n instructions.push([ShaderPreprocessorDirective.Text, text]);\n }\n continue;\n }\n\n const keyword = match[1];\n const rest = match[2].trim();\n\n switch (keyword) {\n case \"ifdef\": {\n const idx = instructions.length;\n instructions.push([ShaderPreprocessorDirective.IfDef, rest, -1]);\n backfillStack.push([idx]);\n break;\n }\n case \"ifndef\": {\n const idx = instructions.length;\n instructions.push([ShaderPreprocessorDirective.IfNdef, rest, -1]);\n backfillStack.push([idx]);\n break;\n }\n case \"if\": {\n const cond = ShaderInstructionEncoder._parseCondition(rest);\n const idx = instructions.length;\n ShaderInstructionEncoder._pushConditionInstruction(instructions, cond);\n backfillStack.push([idx]);\n break;\n }\n case \"elif\": {\n const stack = backfillStack[backfillStack.length - 1];\n const prevIdx = stack[stack.length - 1];\n const elseIdx = instructions.length;\n instructions.push([ShaderPreprocessorDirective.Else, -1]);\n stack.push(elseIdx);\n ShaderInstructionEncoder._backfillJump(instructions[prevIdx], instructions.length);\n\n const cond = ShaderInstructionEncoder._parseCondition(rest);\n const idx = instructions.length;\n ShaderInstructionEncoder._pushConditionInstruction(instructions, cond);\n stack.push(idx);\n break;\n }\n case \"else\": {\n const stack = backfillStack[backfillStack.length - 1];\n const prevIdx = stack[stack.length - 1];\n const elseIdx = instructions.length;\n instructions.push([ShaderPreprocessorDirective.Else, -1]);\n stack.push(elseIdx);\n ShaderInstructionEncoder._backfillJump(instructions[prevIdx], instructions.length);\n break;\n }\n case \"endif\": {\n const endifIdx = instructions.length;\n instructions.push([ShaderPreprocessorDirective.Endif]);\n const stack = backfillStack.pop();\n if (stack) {\n const afterEndif = endifIdx + 1;\n for (let j = 0; j < stack.length; j++) {\n const inst = instructions[stack[j]];\n if (inst[0] === ShaderPreprocessorDirective.Else) {\n (inst as [number, number])[1] = afterEndif;\n } else {\n ShaderInstructionEncoder._backfillJump(inst, afterEndif, true);\n }\n }\n }\n break;\n }\n case \"define\": {\n const funcMatch = ShaderInstructionEncoder._FUNC_MACRO_RE.exec(rest);\n if (funcMatch) {\n const params = funcMatch[2]\n .split(\",\")\n .map((p) => p.trim())\n .filter((p) => p.length > 0);\n instructions.push([\n ShaderPreprocessorDirective.DefineFunc,\n funcMatch[1],\n params,\n ShaderInstructionEncoder._stripLineComment(funcMatch[3].trim())\n ]);\n } else {\n const spaceIdx = rest.indexOf(\" \");\n if (spaceIdx === -1) {\n instructions.push([ShaderPreprocessorDirective.Define, rest]);\n } else {\n instructions.push([\n ShaderPreprocessorDirective.DefineVal,\n rest.substring(0, spaceIdx),\n ShaderInstructionEncoder._stripLineComment(rest.substring(spaceIdx + 1).trim())\n ]);\n }\n }\n break;\n }\n case \"undef\": {\n instructions.push([ShaderPreprocessorDirective.Undef, rest]);\n break;\n }\n }\n }\n\n return instructions;\n }\n\n private static _pushConditionInstruction(instructions: ShaderInstruction[], cond: Condition): void {\n if (cond.t === \"def\") {\n instructions.push([ShaderPreprocessorDirective.IfDef, cond.m, -1]);\n } else if (cond.t === \"ndef\") {\n instructions.push([ShaderPreprocessorDirective.IfNdef, cond.m, -1]);\n } else if (cond.t === \"cmp\") {\n instructions.push([ShaderPreprocessorDirective.IfCmp, cond.m, cond.op, cond.v, -1]);\n } else {\n instructions.push([ShaderPreprocessorDirective.IfExpr, cond, -1]);\n }\n }\n\n private static _findDirectiveStart(source: string, from: number, length: number): number {\n let i = from;\n while (i < length) {\n let j = i;\n while (j < length) {\n const c = source.charCodeAt(j);\n if (c === 32 /* space */ || c === 9 /* tab */) {\n j++;\n } else {\n break;\n }\n }\n if (j < length && source.charCodeAt(j) === 35 /* '#' */) return i;\n\n const nl = source.indexOf(\"\\n\", i);\n if (nl === -1) break;\n i = nl + 1;\n }\n return -1;\n }\n\n private static _pushText(instructions: ShaderInstruction[], source: string, from: number, to: number): void {\n if (from >= to) return;\n const last = instructions.length > 0 ? instructions[instructions.length - 1] : null;\n if (last && last[0] === ShaderPreprocessorDirective.Text) {\n (last as [number, string])[1] += source.substring(from, to);\n } else {\n instructions.push([ShaderPreprocessorDirective.Text, source.substring(from, to)]);\n }\n }\n\n /**\n * Backfill jump offset of an IF/ELIF instruction.\n * When onlyPlaceholder is true, only backfill if the current value is still -1\n */\n private static _backfillJump(inst: ShaderInstruction, target: number, onlyPlaceholder = false): void {\n const directive = inst[0];\n if (directive === ShaderPreprocessorDirective.IfDef || directive === ShaderPreprocessorDirective.IfNdef) {\n if (!onlyPlaceholder || inst[2] === -1) (inst as [number, string, number])[2] = target;\n } else if (directive === ShaderPreprocessorDirective.IfCmp) {\n if (!onlyPlaceholder || inst[4] === -1) (inst as [number, string, string, number, number])[4] = target;\n } else if (directive === ShaderPreprocessorDirective.IfExpr) {\n if (!onlyPlaceholder || inst[2] === -1) (inst as [number, Condition, number])[2] = target;\n }\n }\n\n private static _stripLineComment(s: string): string {\n const idx = s.indexOf(\"//\");\n return idx >= 0 ? s.substring(0, idx).trimEnd() : s;\n }\n\n private static _parseCondition(expr: string): Condition {\n const ctx: ExprCtx = { s: expr.trim(), i: 0 };\n return ShaderInstructionEncoder._parseOr(ctx);\n }\n\n private static _skipWs(ctx: ExprCtx): void {\n while (\n ctx.i < ctx.s.length &&\n (ctx.s.charCodeAt(ctx.i) === 32 /* space */ || ctx.s.charCodeAt(ctx.i) === 9) /* tab */\n )\n ctx.i++;\n }\n\n private static _parseOr(ctx: ExprCtx): Condition {\n let left = ShaderInstructionEncoder._parseAnd(ctx);\n ShaderInstructionEncoder._skipWs(ctx);\n while (\n ctx.i < ctx.s.length - 1 &&\n ctx.s.charCodeAt(ctx.i) === 124 /* '|' */ &&\n ctx.s.charCodeAt(ctx.i + 1) === 124 /* '|' */\n ) {\n ctx.i += 2;\n ShaderInstructionEncoder._skipWs(ctx);\n left = { t: \"or\", l: left, r: ShaderInstructionEncoder._parseAnd(ctx) };\n ShaderInstructionEncoder._skipWs(ctx);\n }\n return left;\n }\n\n private static _parseAnd(ctx: ExprCtx): Condition {\n let left = ShaderInstructionEncoder._parseUnary(ctx);\n ShaderInstructionEncoder._skipWs(ctx);\n while (\n ctx.i < ctx.s.length - 1 &&\n ctx.s.charCodeAt(ctx.i) === 38 /* '&' */ &&\n ctx.s.charCodeAt(ctx.i + 1) === 38 /* '&' */\n ) {\n ctx.i += 2;\n ShaderInstructionEncoder._skipWs(ctx);\n left = { t: \"and\", l: left, r: ShaderInstructionEncoder._parseUnary(ctx) };\n ShaderInstructionEncoder._skipWs(ctx);\n }\n return left;\n }\n\n private static _parseUnary(ctx: ExprCtx): Condition {\n ShaderInstructionEncoder._skipWs(ctx);\n if (ctx.s.charCodeAt(ctx.i) === 33 /* '!' */) {\n ctx.i++;\n ShaderInstructionEncoder._skipWs(ctx);\n return { t: \"not\", c: ShaderInstructionEncoder._parsePrimary(ctx) };\n }\n return ShaderInstructionEncoder._parsePrimary(ctx);\n }\n\n private static _parsePrimary(ctx: ExprCtx): Condition {\n ShaderInstructionEncoder._skipWs(ctx);\n const { s } = ctx;\n\n // Parenthesized expression\n if (s.charCodeAt(ctx.i) === 40 /* '(' */) {\n ctx.i++;\n ShaderInstructionEncoder._skipWs(ctx);\n const inner = ShaderInstructionEncoder._parseOr(ctx);\n ShaderInstructionEncoder._skipWs(ctx);\n if (s.charCodeAt(ctx.i) === 41 /* ')' */) ctx.i++;\n return inner;\n }\n\n // defined(MACRO) or defined MACRO\n if (s.substring(ctx.i, ctx.i + 7) === \"defined\") {\n ctx.i += 7;\n ShaderInstructionEncoder._skipWs(ctx);\n const hasParen = s.charCodeAt(ctx.i) === 40; /* '(' */\n if (hasParen) ctx.i++;\n ShaderInstructionEncoder._skipWs(ctx);\n const name = ShaderInstructionEncoder._scanIdentifier(ctx);\n ShaderInstructionEncoder._skipWs(ctx);\n if (hasParen && s.charCodeAt(ctx.i) === 41 /* ')' */) ctx.i++;\n return { t: \"def\", m: name };\n }\n\n // Numeric literal\n if (ctx.i < s.length && ShaderInstructionEncoder._isDigit(s.charCodeAt(ctx.i))) {\n const lhsNum = ShaderInstructionEncoder._scanNumber(ctx);\n ShaderInstructionEncoder._skipWs(ctx);\n const op = ShaderInstructionEncoder._scanOp(ctx);\n if (op) {\n ShaderInstructionEncoder._skipWs(ctx);\n return {\n t: \"bool\",\n v: ShaderInstructionEncoder._evalNumOp(lhsNum, op, ShaderInstructionEncoder._scanNumber(ctx))\n };\n }\n return { t: \"bool\", v: lhsNum !== 0 };\n }\n\n // Identifier — comparison or defined check\n const name = ShaderInstructionEncoder._scanIdentifier(ctx);\n if (!name) return { t: \"bool\", v: false };\n ShaderInstructionEncoder._skipWs(ctx);\n const op = ShaderInstructionEncoder._scanOp(ctx);\n if (op) {\n ShaderInstructionEncoder._skipWs(ctx);\n return { t: \"cmp\", m: name, op, v: ShaderInstructionEncoder._scanNumber(ctx) };\n }\n return { t: \"def\", m: name };\n }\n\n private static _isDigit(charCode: number): boolean {\n return charCode >= 48 /* '0' */ && charCode <= 57 /* '9' */;\n }\n\n private static _isAlnum(charCode: number): boolean {\n return (\n (charCode >= 65 /* 'A' */ && charCode <= 90) /* 'Z' */ ||\n (charCode >= 97 /* 'a' */ && charCode <= 122) /* 'z' */ ||\n (charCode >= 48 /* '0' */ && charCode <= 57) /* '9' */ ||\n charCode === 95 /* '_' */\n );\n }\n\n private static _scanIdentifier(ctx: ExprCtx): string {\n const start = ctx.i;\n while (ctx.i < ctx.s.length && ShaderInstructionEncoder._isAlnum(ctx.s.charCodeAt(ctx.i))) ctx.i++;\n return ctx.s.substring(start, ctx.i);\n }\n\n private static _scanNumber(ctx: ExprCtx): number {\n const start = ctx.i;\n if (ctx.s.charCodeAt(ctx.i) === 45 /* '-' */) ctx.i++;\n while (\n ctx.i < ctx.s.length &&\n (ShaderInstructionEncoder._isDigit(ctx.s.charCodeAt(ctx.i)) || ctx.s.charCodeAt(ctx.i) === 46) /* '.' */\n )\n ctx.i++;\n return Number(ctx.s.substring(start, ctx.i)) || 0;\n }\n\n private static _scanOp(ctx: ExprCtx): string {\n const c = ctx.s.charCodeAt(ctx.i);\n const c2 = ctx.i + 1 < ctx.s.length ? ctx.s.charCodeAt(ctx.i + 1) : 0;\n if (c === 61 /* '=' */ && c2 === 61 /* '=' */) {\n ctx.i += 2;\n return \"==\";\n }\n if (c === 33 /* '!' */ && c2 === 61 /* '=' */) {\n ctx.i += 2;\n return \"!=\";\n }\n if (c === 62 /* '>' */ && c2 === 61 /* '=' */) {\n ctx.i += 2;\n return \">=\";\n }\n if (c === 60 /* '<' */ && c2 === 61 /* '=' */) {\n ctx.i += 2;\n return \"<=\";\n }\n if (c === 62 /* '>' */) {\n ctx.i++;\n return \">\";\n }\n if (c === 60 /* '<' */) {\n ctx.i++;\n return \"<\";\n }\n return \"\";\n }\n\n private static _evalNumOp(lhs: number, op: string, rhs: number): boolean {\n switch (op) {\n case \"==\":\n return lhs === rhs;\n case \"!=\":\n return lhs !== rhs;\n case \">\":\n return lhs > rhs;\n case \"<\":\n return lhs < rhs;\n case \">=\":\n return lhs >= rhs;\n case \"<=\":\n return lhs <= rhs;\n default:\n return false;\n }\n }\n}\n","import { ETokenType } from \"../common\";\nimport { NoneTerminal, Terminal } from \"../parser/GrammarSymbol\";\nimport Production from \"./Production\";\nimport GrammarUtils from \"./Utils\";\n\nexport default class StateItem {\n static _id = 0;\n\n readonly production: Production;\n readonly position: number;\n readonly lookaheadSet: Set<Terminal>;\n readonly id: number;\n\n _needReInfer = true;\n get needReInfer() {\n return this._needReInfer;\n }\n set needReInfer(v: boolean) {\n this._needReInfer = v;\n }\n\n get curSymbol() {\n return this.production.derivation[this.position];\n }\n get nextSymbol() {\n return this.production.derivation[this.position + 1];\n }\n\n constructor(production: Production, position: number, lookahead: Iterable<Terminal>) {\n this.production = production;\n this.position = position;\n this.lookaheadSet = new Set();\n for (const la of lookahead) {\n this.lookaheadSet.add(la);\n }\n this.id = StateItem._id++;\n }\n\n addLookahead(ts: Iterable<Terminal>) {\n for (const t of ts) {\n if (this.lookaheadSet.has(t)) continue;\n this.lookaheadSet.add(t);\n this.needReInfer = true;\n }\n }\n\n symbolByOffset(offset: number) {\n return this.production.derivation[this.position + offset];\n }\n\n canReduce() {\n if (this.position > this.production.derivation.length - 1) return true;\n else {\n for (let i = this.position; i < this.production.derivation.length; i++) {\n if (this.production.derivation[i] !== ETokenType.EPSILON) return false;\n }\n return true;\n }\n }\n\n advance() {\n // #if _VERBOSE\n if (this.canReduce()) throw `Error: advance reduce-able parsing state item`;\n // #endif\n return new StateItem(this.production, this.position + 1, this.lookaheadSet);\n }\n\n // #if _VERBOSE\n toString() {\n const coreItem = this.production.derivation.map((item) => GrammarUtils.toString(item));\n coreItem[this.position] = \".\" + (coreItem[this.position] ?? \"\");\n\n return `${NoneTerminal[this.production.goal]} :=> ${coreItem.join(\"|\")} ;${Array.from(this.lookaheadSet)\n .map((item) => GrammarUtils.toString(item))\n .join(\"/\")}`;\n }\n // #endif\n}\n","import { Terminal } from \"../parser/GrammarSymbol\";\nimport Production from \"./Production\";\nimport StateItem from \"./StateItem\";\n\nexport default class State {\n static closureMap: Map<string /** state mapKey */, State> = new Map();\n static pool: Map<number, State> = new Map();\n static _id = 0;\n\n readonly id: number;\n readonly cores: Set<StateItem>;\n private _items: Set<StateItem>;\n get items() {\n return this._items;\n }\n\n closured = false;\n get needReInfer() {\n for (const core of this.cores) {\n if (core.needReInfer) return true;\n }\n return false;\n }\n\n private _stateItemPool: Map<string /** Map ID */, StateItem> = new Map();\n\n static create(cores: StateItem[]) {\n const cacheKey = this.getMapKey(cores);\n const state = this.closureMap.get(cacheKey);\n if (state) {\n for (const core of cores) {\n // merge lookahead\n state.createStateItem(core.production, core.position, core.lookaheadSet);\n }\n return state;\n }\n\n const newState = new State(cores);\n this.closureMap.set(cacheKey, newState);\n return newState;\n }\n\n // TODO: any optimization?\n static getMapKey(cores: StateItem[]) {\n return cores.map((item) => `${item.production.id},${item.position}`).join(\";\");\n }\n\n private constructor(cores: Iterable<StateItem>) {\n this.id = State._id++;\n this._items = new Set([...cores]);\n this.cores = new Set([...cores]);\n for (const it of cores) {\n const itemMapKey = this.getStateItemMapKey(it.production, it.position);\n this._stateItemPool.set(itemMapKey, it);\n }\n State.pool.set(this.id, this);\n }\n\n // TODO: any optimization?\n getStateItemMapKey(production: Production, position: number) {\n return `${production.id},${position}`;\n }\n\n createStateItem(production: Production, position: number, lookaheadSet: Iterable<Terminal> = new Set()) {\n const mapId = this.getStateItemMapKey(production, position);\n const item = this._stateItemPool.get(mapId);\n if (item) {\n for (const la of lookaheadSet) {\n if (item.lookaheadSet.has(la)) continue;\n item.lookaheadSet.add(la);\n item.needReInfer = true;\n }\n return item;\n }\n const newItem = new StateItem(production, position, lookaheadSet);\n this._stateItemPool.set(mapId, newItem);\n return newItem;\n }\n}\n","import { ETokenType, ShaderRange } from \"../common\";\nimport { ASTNode, TreeNode } from \"../parser/AST\";\nimport { TranslationRule } from \"../parser/SemanticAnalyzer\";\nimport { NoneTerminal, GrammarSymbol } from \"../parser/GrammarSymbol\";\nimport Production from \"./Production\";\nimport { ActionInfo, EAction } from \"./types\";\nimport { 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 ColorWriteMask: Keyword.GSColorWriteMask,\n UsePass: Keyword.GSUsePass,\n\n true: Keyword.True,\n false: Keyword.False\n };\n\n private static _symbolLexemeTable = <Record<string, Keyword>>{\n \"{\": Keyword.LeftBrace,\n \"}\": Keyword.RightBrace,\n \"=\": Keyword.Equal,\n \"|\": Keyword.BitwiseOr\n };\n\n private static _isWordSeparatorChar(charCode: number): boolean {\n return (\n charCode === 123 || // {\n charCode === 125 || // }\n charCode === 61 || // =\n charCode === 59 || // ;\n charCode === 46 || // . CullMode.Back\n charCode === 91 || // [ Enabled[0],\n charCode === 40 || // ( Color(1.0, 1.0, 1.0, 1.0);\n charCode === 124 // | ColorWriteMask.Red | ColorWriteMask.Green\n );\n }\n\n private static _scanDigits(source: string, startIndex: number): number {\n let currentIndex = startIndex;\n while (currentIndex < source.length) {\n const charCode = source.charCodeAt(currentIndex);\n if (BaseLexer.isDigit(charCode)) {\n currentIndex++;\n } else {\n break;\n }\n }\n return currentIndex;\n }\n\n scanNumber(): number {\n this.skipCommentsAndSpace();\n const start = this._currentIndex;\n const source = this._source;\n let index = this._currentIndex;\n\n // Scan integer part\n index = SourceLexer._scanDigits(source, index);\n\n // Scan decimal part if present\n if (source[index] === \".\") {\n index = SourceLexer._scanDigits(source, index + 1);\n }\n\n this.advance(index - this._currentIndex);\n return Number(source.substring(start, index));\n }\n\n scanColor(): Color {\n this.scanLexeme(\"(\");\n\n let r = 0;\n let g = 0;\n let b = 0;\n let a = 1;\n\n r = this.scanNumber();\n this.skipCommentsAndSpace();\n if (this.peek(1) !== \")\") {\n this.scanLexeme(\",\");\n g = this.scanNumber();\n this.skipCommentsAndSpace();\n if (this.peek(1) !== \")\") {\n this.scanLexeme(\",\");\n b = this.scanNumber();\n this.skipCommentsAndSpace();\n if (this.peek(1) !== \")\") {\n this.scanLexeme(\",\");\n a = this.scanNumber();\n this.skipCommentsAndSpace();\n }\n }\n }\n\n this.scanLexeme(\")\");\n return new Color(r, g, b, a);\n }\n\n override scanToken(): BaseToken {\n while (true) {\n this.skipCommentsAndSpace();\n\n if (this.isEnd()) {\n return;\n }\n\n const start = this.getShaderPosition(0);\n if (BaseLexer.isAlpha(this.getCurCharCode())) {\n const wordToken = this._scanWord(start);\n if (wordToken !== null) {\n return wordToken;\n }\n this.hasPendingContent = true;\n continue; // Continue loop to scan next token if word was invalid\n }\n\n const currentChar = this.getCurChar();\n const symbolKeyword = SourceLexer._symbolLexemeTable[currentChar];\n if (symbolKeyword !== undefined) {\n this.advance(1);\n const token = BaseToken.pool.get();\n token.set(symbolKeyword, currentChar, start);\n return token;\n }\n\n // Skip unrecognized character and continue\n this.advance(1);\n }\n }\n\n // #if _VERBOSE\n scanToCharacter(char: string): void {\n while (this.getCurChar() !== char && !this.isEnd()) {\n this.advance(1);\n }\n this.advance(1);\n }\n // #endif\n\n createCompileError(message: string, location?: ShaderPosition | ShaderRange) {\n return 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 ColorWriteMask,\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 ColorWriteMask\n };\n private static _symbolTableStack = new SymbolTableStack<ShaderSourceSymbol, SymbolTable<ShaderSourceSymbol>>();\n private static _lexer = new SourceLexer();\n private static _lookupSymbol = new ShaderSourceSymbol(\"\", null);\n\n static parse(sourceCode: string): IShaderSource {\n 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 _scanEnumConstValue(enumName: string): number | undefined {\n const lexer = this._lexer;\n lexer.advance(1);\n const constValueToken = lexer.scanToken();\n const value = this._renderStateConstMap[enumName]?.[constValueToken.lexeme] as number;\n if (value == undefined) {\n this._createCompileError(\n `Invalid engine constant: ${enumName}.${constValueToken.lexeme}`,\n constValueToken.location\n );\n // #if _VERBOSE\n lexer.scanToCharacter(\";\");\n // #endif\n }\n return value;\n }\n\n private static _parseRenderStateProperty(stateLexeme: string, out: IRenderStates): void {\n const lexer = this._lexer;\n const propertyToken = lexer.scanToken();\n const propertyLexeme = propertyToken.lexeme;\n let stateElementKey = propertyLexeme;\n if (stateLexeme === \"BlendState\" && propertyLexeme !== \"BlendColor\" && propertyLexeme !== \"AlphaToCoverage\") {\n let keyIndex = 0;\n const scannedLexeme = lexer.scanTwoExpectedLexemes(\"[\", \"=\");\n if (scannedLexeme === \"[\") {\n keyIndex = lexer.scanNumber();\n lexer.scanLexeme(\"]\");\n lexer.scanLexeme(\"=\");\n } else if (scannedLexeme !== \"=\") {\n this._createCompileError(`Invalid syntax, expect '[' or '=', but got unexpected token`);\n // #if _VERBOSE\n lexer.scanToCharacter(\";\");\n return;\n // #endif\n }\n stateElementKey += keyIndex;\n } else {\n lexer.scanLexeme(\"=\");\n }\n\n const renderStateElementKey = RenderStateElementKey[stateLexeme + stateElementKey];\n if (renderStateElementKey === undefined) {\n this._createCompileError(`Invalid render state property ${propertyLexeme}`);\n // #if _VERBOSE\n lexer.scanToCharacter(\";\");\n return;\n // #endif\n }\n\n lexer.skipCommentsAndSpace();\n let propertyValue: number | string | boolean | Color;\n\n const curCharCode = lexer.getCurCharCode();\n if (BaseLexer.isDigit(curCharCode) || curCharCode === 46) {\n // Digit or '.'\n propertyValue = lexer.scanNumber();\n } else {\n const valueToken = lexer.scanToken();\n const valueTokenType = valueToken.type;\n\n if (valueTokenType === Keyword.True) {\n propertyValue = true;\n } else if (valueTokenType === Keyword.False) {\n propertyValue = false;\n } else if (valueTokenType === Keyword.GSColor) {\n propertyValue = lexer.scanColor();\n } else if (lexer.getCurChar() === \".\") {\n propertyValue = this._scanEnumConstValue(valueToken.lexeme);\n if (propertyValue == undefined) return;\n // Support bitwise OR only for bitmask enums (e.g. ColorWriteMask)\n lexer.skipCommentsAndSpace();\n if (lexer.getCurChar() === \"|\") {\n if (valueToken.lexeme !== \"ColorWriteMask\") {\n this._createCompileError(\n `Bitwise OR '|' is not supported for '${valueToken.lexeme}', only bitmask enums like 'ColorWriteMask' support this`,\n valueToken.location\n );\n // #if _VERBOSE\n lexer.scanToCharacter(\";\");\n // #endif\n return;\n }\n while (lexer.getCurChar() === \"|\") {\n lexer.advance(1);\n const nextEnumToken = lexer.scanToken();\n if (nextEnumToken == undefined || lexer.getCurChar() !== \".\") {\n this._createCompileError(`Invalid syntax after '|', expect 'EnumType.Value'`, nextEnumToken?.location);\n // #if _VERBOSE\n lexer.scanToCharacter(\";\");\n // #endif\n return;\n }\n if (nextEnumToken.lexeme !== valueToken.lexeme) {\n this._createCompileError(\n `Cannot mix enum types in bitwise OR: expected '${valueToken.lexeme}' but got '${nextEnumToken.lexeme}'`,\n nextEnumToken.location\n );\n // #if _VERBOSE\n lexer.scanToCharacter(\";\");\n // #endif\n return;\n }\n const nextValue = this._scanEnumConstValue(nextEnumToken.lexeme);\n if (nextValue == undefined) return;\n propertyValue = (<number>propertyValue) | (<number>nextValue);\n lexer.skipCommentsAndSpace();\n }\n }\n } else {\n propertyValue = valueToken.lexeme;\n const lookupSymbol = this._lookupSymbol;\n lookupSymbol.set(valueToken.lexeme, ETokenType.ID);\n if (!this._symbolTableStack.lookup(lookupSymbol)) {\n this._createCompileError(`Invalid ${stateLexeme} variable: ${valueToken.lexeme}`, valueToken.location);\n // #if _VERBOSE\n lexer.scanToCharacter(\";\");\n return;\n // #endif\n }\n }\n }\n lexer.scanLexeme(\";\");\n if (typeof propertyValue === \"string\") {\n out.variableMap[renderStateElementKey] = propertyValue;\n } else {\n out.constantMap[renderStateElementKey] = propertyValue;\n }\n }\n\n private static _parseRenderQueueDeclarationOrAssignment(renderStates: IRenderStates): void {\n const lexer = this._lexer;\n const token = lexer.scanToken();\n if (token.type === ETokenType.ID) {\n // Declaration\n lexer.scanLexeme(\";\");\n const symbol = new ShaderSourceSymbol(token.lexeme, Keyword.GSRenderQueueType);\n this._symbolTableStack.insert(symbol);\n return;\n }\n\n if (token.lexeme !== \"=\") {\n this._createCompileError(`Invalid syntax, expect character '=', but got ${token.lexeme}`, token.location);\n // #if _VERBOSE\n return;\n // #endif\n }\n const word = lexer.scanToken();\n lexer.scanLexeme(\";\");\n const value = this._renderStateConstMap.RenderQueueType[word.lexeme];\n const key = RenderStateElementKey.RenderQueueType;\n if (value == undefined) {\n renderStates.variableMap[key] = word.lexeme;\n const lookupSymbol = this._lookupSymbol;\n lookupSymbol.set(word.lexeme, Keyword.GSRenderQueueType);\n const sm = this._symbolTableStack.lookup(lookupSymbol);\n if (!sm) {\n this._createCompileError(`Invalid RenderQueueType variable: ${word.lexeme}`, word.location);\n // #if _VERBOSE\n return;\n // #endif\n }\n } else {\n renderStates.constantMap[key] = value;\n }\n }\n\n private static _addPendingContents(\n start: ShaderPosition,\n backOffset: number,\n outPendingContents: IStatement[]\n ): void {\n const lexer = this._lexer;\n if (lexer.hasPendingContent) {\n const endIndex = lexer.currentIndex - backOffset;\n outPendingContents.push({\n range: { start, end: { ...lexer.getShaderPosition(0), index: endIndex - 1 } },\n content: lexer.source.substring(start.index, endIndex - 1)\n });\n lexer.hasPendingContent = false;\n }\n }\n\n private static _parseSubShader(): ISubShaderSource {\n const lexer = this._lexer;\n this._pushScope();\n\n let braceLevel = 1;\n const name = lexer.scanPairedChar('\"', '\"', false, false);\n const subShaderSource = ShaderSourceFactory.createSubShaderSource(name);\n lexer.scanLexeme(\"{\");\n\n lexer.skipCommentsAndSpace();\n let start = lexer.getShaderPosition(0);\n\n while (true) {\n const token = lexer.scanToken();\n switch (token.type) {\n case Keyword.GSPass:\n this._addPendingContents(start, token.lexeme.length, subShaderSource.pendingContents);\n const pass = this._parsePass();\n subShaderSource.passes.push(pass);\n start = lexer.getShaderPosition(0);\n break;\n case Keyword.GSUsePass:\n this._addPendingContents(start, token.lexeme.length, subShaderSource.pendingContents);\n const name = lexer.scanPairedChar('\"', '\"', false, false);\n subShaderSource.passes.push(ShaderSourceFactory.createUsePass(name));\n start = lexer.getShaderPosition(0);\n break;\n case Keyword.LeftBrace:\n ++braceLevel;\n break;\n case Keyword.RightBrace:\n if (--braceLevel === 0) {\n this._addPendingContents(start, token.lexeme.length, subShaderSource.pendingContents);\n this._popScope();\n return subShaderSource;\n }\n break;\n default:\n start = this._parseRenderStateAndTags(\n token,\n start,\n subShaderSource.pendingContents,\n subShaderSource.renderStates,\n subShaderSource.tags\n );\n }\n }\n }\n\n private static _parseTags(tags: Record<string, number | string | boolean>): void {\n const lexer = this._lexer;\n lexer.scanLexeme(\"{\");\n while (true) {\n const ident = lexer.scanToken();\n lexer.scanLexeme(\"=\");\n const value = lexer.scanPairedChar('\"', '\"', false, false);\n lexer.skipCommentsAndSpace();\n\n tags[ident.lexeme] = value;\n\n if (lexer.peek(1) === \"}\") {\n lexer.advance(1);\n return;\n }\n lexer.scanLexeme(\",\");\n }\n }\n\n private static _parsePass(): IShaderPassSource {\n this._pushScope();\n const lexer = this._lexer;\n\n const name = lexer.scanPairedChar('\"', '\"', false, false);\n const passSource = ShaderSourceFactory.createShaderPassSource(name);\n lexer.scanLexeme(\"{\");\n let braceLevel = 1;\n\n lexer.skipCommentsAndSpace();\n let start = lexer.getShaderPosition(0);\n\n while (true) {\n const token = lexer.scanToken();\n switch (token.type) {\n case Keyword.GSVertexShader:\n case Keyword.GSFragmentShader:\n this._addPendingContents(start, token.lexeme.length, passSource.pendingContents);\n lexer.scanLexeme(\"=\");\n const entry = lexer.scanToken();\n if (passSource[token.lexeme]) {\n const error = 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 case Keyword.GSColorWriteMask:\n this._addPendingContents(start, token.lexeme.length, outGlobalContents);\n this._parseVariableDeclaration();\n start = this._lexer.getShaderPosition(0);\n break;\n case Keyword.GSRenderQueueType:\n this._addPendingContents(start, token.lexeme.length, outGlobalContents);\n this._parseRenderQueueDeclarationOrAssignment(outRenderStates);\n start = this._lexer.getShaderPosition(0);\n break;\n default:\n // Unrecognized tokens are defined as pending content\n this._lexer.hasPendingContent = true;\n }\n return start;\n }\n}\n","import { Color, Logger, ShaderLanguage } from \"@galacean/engine\";\nimport { IPrecompiledShader, IRenderStates, 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 { ShaderInstructionEncoder } from \"./ShaderInstructionEncoder\";\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 if (ret) {\n // Always parse instructions for the compiled GLSL\n ret.vertexShaderInstructions = ShaderInstructionEncoder.parse(ret.vertex);\n ret.fragmentShaderInstructions = ShaderInstructionEncoder.parse(ret.fragment);\n }\n\n return ret;\n }\n\n _precompile(sourceCode: string, platformTarget: ShaderLanguage, basePath: string): IPrecompiledShader {\n const shaderSource = this._parseShaderSource(sourceCode);\n\n const subShaders = shaderSource.subShaders.map((sub) => ({\n name: sub.name,\n tags: sub.tags,\n passes: sub.passes.map((pass) => {\n if (pass.isUsePass) {\n return {\n name: pass.name,\n isUsePass: true as const,\n tags: pass.tags,\n renderStates: this._serializeRenderStates(pass.renderStates)\n };\n }\n\n const programSource = this._parseShaderPass(\n pass.contents,\n pass.vertexEntry,\n pass.fragmentEntry,\n platformTarget,\n basePath\n );\n\n if (!programSource) {\n throw new Error(\n `Shader pass \"${shaderSource.name}.${sub.name}.${pass.name}\" precompile failed, please check the shader source code.`\n );\n }\n\n return {\n name: pass.name,\n isUsePass: false as const,\n tags: pass.tags,\n renderStates: this._serializeRenderStates(pass.renderStates),\n vertexShaderInstructions: programSource.vertexShaderInstructions,\n fragmentShaderInstructions: programSource.fragmentShaderInstructions\n };\n })\n }));\n\n return {\n name: shaderSource.name,\n platformTarget,\n subShaders\n };\n }\n\n private _serializeRenderStates(renderStates: IRenderStates): {\n constantMap: Record<string, number | string | boolean | number[]>;\n variableMap: Record<string, string>;\n } {\n const constantMap: Record<string, number | string | boolean | number[]> = {};\n for (const key in renderStates.constantMap) {\n const value = renderStates.constantMap[key];\n if (value instanceof Color) {\n constantMap[key] = [value.r, value.g, value.b, value.a];\n } else {\n constantMap[key] = value as number | string | boolean;\n }\n }\n return {\n constantMap,\n variableMap: renderStates.variableMap\n };\n }\n\n // #if _VERBOSE\n /**\n * @internal\n */\n _logErrors(errors: Error[]) {\n if (errors.length === 0 || !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","ShaderPreprocessorDirective","Text","IfDef","IfNdef","IfCmp","IfExpr","Else","Endif","Define","DefineVal","DefineFunc","Undef","ShaderInstructionEncoder","glsl","instructions","backfillStack","directiveStart","_findDirectiveStart","_pushText","lineEnd","line","_DIRECTIVE_RE","last","keyword","rest","idx","cond","_parseCondition","_pushConditionInstruction","prevIdx","elseIdx","_backfillJump","endifIdx","afterEndif","j","inst","funcMatch","_FUNC_MACRO_RE","_stripLineComment","spaceIdx","m","op","v","c","nl","onlyPlaceholder","directive","trimEnd","ctx","_parseOr","_skipWs","_parseAnd","l","r","_parseUnary","_parsePrimary","inner","hasParen","_scanIdentifier","_isDigit","lhsNum","_scanNumber","_scanOp","_evalNumOp","_isAlnum","c2","lhs","rhs","StateItem","production","position","lookahead","_needReInfer","lookaheadSet","la","_id","addLookahead","ts","needReInfer","symbolByOffset","derivation","canReduce","EPSILON","curSymbol","nextSymbol","State","cores","closured","_stateItemPool","_items","it","itemMapKey","getStateItemMapKey","createStateItem","mapId","newItem","cacheKey","getMapKey","state","closureMap","core","newState","items","GrammarUtils","createProductionWithOptions","goal","options","astTypePool","opt","addMapSetItem","k","isSubSet","sb","isActionEqual","action","EAction","LALR1","grammar","firstSetMap","followSetMap","actionTable","gotoTable","_firstSetNTStack","generate","computeFirstSet","buildStateTable","startStateItemCore","productions","startState","_extendState","_closure","newStates","_inferNextState","ns","_extendStateItem","productionList","getProductionList","newLookaheadSet","lastFirstSet","terminalExist","Utils","coreMap","stateActionTable","stateGotoTable","stateItem","Reduce","Accept","_addAction","nextItem","entries","gs","Shift","table","terminal","exist","slice","_computeFirstSetForNT","NT","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","tokens","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","g","Color","wordToken","symbolKeyword","_symbolLexemeTable","createCompileError","_validateWordBoundaries","tokenType","_keywordLexemeTable","startIndex","endIndex","prevCharCode","_isValidWordBoundary","nextCharCode","_isWordSeparatorChar","RenderQueueType","GSRenderQueueType","BlendState","GSBlendState","DepthState","GSDepthState","StencilState","GSStencilState","RasterState","GSRasterState","EditorProperties","GSEditorProperties","EditorMacros","GSEditorMacros","Editor","GSEditor","Tags","GSTags","VertexShader","GSVertexShader","FragmentShader","GSFragmentShader","SubShader","GSSubShader","Pass","GSPass","BlendFactor","GSBlendFactor","BlendOperation","GSBlendOperation","Bool","GSBool","GSNumber","GSColor","CompareFunction","GSCompareFunction","StencilOperation","GSStencilOperation","CullMode","GSCullMode","ColorWriteMask","GSColorWriteMask","UsePass","GSUsePass","LeftBrace","RightBrace","Equal","BitwiseOr","ShaderSourceParser","sourceCode","startTime","errors","_symbolTableStack","_pushScope","lexer","_lexer","shaderSource","_parseShader","shaderPendingContents","shaderRenderStates","subShader","curSubShaderGlobalStatements","concat","globalSubShaderStates","_mergeRenderStates","pass","globalPassRenderStates","passGlobalStatements","contents","content","braceLevel","_addPendingContents","_parseSubShader","_popScope","_parseRenderState","_parseRenderStateDeclarationOrAssignment","outRenderStates","stateToken","renderState","_parseRenderStateProperties","_createCompileError","outTarget","targetVariableMap","sourceVariableMap","key","sourceConstantMap","targetConstantMap","_parseVariableDeclaration","_parseRenderStateProperty","_scanEnumConstValue","enumName","constValueToken","_renderStateConstMap","stateLexeme","propertyToken","propertyLexeme","stateElementKey","keyIndex","scannedLexeme","renderStateElementKey","RenderStateElementKey","propertyValue","valueToken","valueTokenType","nextEnumToken","nextValue","_parseRenderQueueDeclarationOrAssignment","outPendingContents","subShaderSource","_parsePass","_parseRenderStateAndTags","_parseTags","passSource","outGlobalContents","outTags","_parseShaderSource","_parseShaderPass","backend","totalStartTime","noIncludeContent","parser","_parser","program","ShaderLanguage","GLSLES100","codeGenStartTime","vertexShaderInstructions","fragmentShaderInstructions","_precompile","platformTarget","basePath","sub","_serializeRenderStates","programSource","column","_shaderPositionPool","_shaderRangePool","version","mode","console","log"],"mappings":"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"}
|