@galacean/engine-shaderlab 1.6.0-beta.2 → 1.6.1
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 +1 -1
- 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 +1 -1
- 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 +1 -1
- package/dist/main.js.map +1 -1
- package/dist/main.verbose.js +1 -1
- package/dist/main.verbose.js.map +1 -1
- package/dist/module.js +1 -1
- package/dist/module.js.map +1 -1
- package/dist/module.verbose.js +1 -1
- package/dist/module.verbose.js.map +1 -1
- package/package.json +4 -4
package/dist/main.verbose.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"main.verbose.js","sources":["../../../node_modules/.pnpm/@swc+helpers@0.5.15/node_modules/@swc/helpers/esm/_array_like_to_array.js","../../../node_modules/.pnpm/@swc+helpers@0.5.15/node_modules/@swc/helpers/esm/_unsupported_iterable_to_array.js","../../../node_modules/.pnpm/@swc+helpers@0.5.15/node_modules/@swc/helpers/esm/_create_for_of_iterator_helper_loose.js","../../../node_modules/.pnpm/@swc+helpers@0.5.15/node_modules/@swc/helpers/esm/_set_prototype_of.js","../../../node_modules/.pnpm/@swc+helpers@0.5.15/node_modules/@swc/helpers/esm/_inherits.js","../../../node_modules/.pnpm/@swc+helpers@0.5.15/node_modules/@swc/helpers/esm/_instanceof.js","../../../node_modules/.pnpm/@swc+helpers@0.5.15/node_modules/@swc/helpers/esm/_create_class.js","../../../node_modules/.pnpm/tslib@2.8.1/node_modules/tslib/tslib.es6.mjs","../src/common/ShaderRange.ts","../src/common/ShaderPosition.ts","../src/common/types.ts","../src/common/enums/Keyword.ts","../../../node_modules/.pnpm/@swc+helpers@0.5.15/node_modules/@swc/helpers/esm/_is_native_reflect_construct.js","../../../node_modules/.pnpm/@swc+helpers@0.5.15/node_modules/@swc/helpers/esm/_construct.js","../../../node_modules/.pnpm/@swc+helpers@0.5.15/node_modules/@swc/helpers/esm/_get_prototype_of.js","../../../node_modules/.pnpm/@swc+helpers@0.5.15/node_modules/@swc/helpers/esm/_is_native_function.js","../../../node_modules/.pnpm/@swc+helpers@0.5.15/node_modules/@swc/helpers/esm/_wrap_native_super.js","../src/GSError.ts","../src/ShaderLabUtils.ts","../src/common/BaseToken.ts","../src/parser/GrammarSymbol.ts","../src/lalr/Production.ts","../src/lalr/types.ts","../src/lalr/Utils.ts","../src/lalr/StateItem.ts","../src/lalr/State.ts","../src/ParserUtils.ts","../src/Preprocessor.ts","../src/common/enums/ShaderStage.ts","../src/parser/builtin/functions.ts","../src/parser/builtin/variables.ts","../src/common/SymbolTable.ts","../src/common/SymbolTableStack.ts","../src/parser/symbolTable/SymbolDataType.ts","../src/parser/symbolTable/SymbolInfo.ts","../src/parser/symbolTable/FnSymbol.ts","../src/parser/symbolTable/StructSymbol.ts","../src/parser/symbolTable/VarSymbol.ts","../src/parser/ShaderInfo.ts","../src/parser/SemanticAnalyzer.ts","../src/parser/types.ts","../src/parser/AST.ts","../src/codeGen/VisitorContext.ts","../src/TempArray.ts","../src/codeGen/CodeGenVisitor.ts","../src/codeGen/GLESVisitor.ts","../src/codeGen/GLES100.ts","../src/codeGen/GLES300.ts","../src/common/BaseLexer.ts","../src/lexer/Lexer.ts","../../../node_modules/.pnpm/@swc+helpers@0.5.15/node_modules/@swc/helpers/esm/_type_of.js","../src/macroProcessor/constants.ts","../src/macroProcessor/MacroDefine.ts","../src/macroProcessor/sourceMap/index.ts","../src/macroProcessor/MacroParserLexer.ts","../src/macroProcessor/Utils.ts","../src/macroProcessor/MacroParser.ts","../src/lalr/LALR1.ts","../src/parser/Grammar.ts","../src/lalr/CFG.ts","../src/parser/ShaderTargetParser.ts","../../../node_modules/.pnpm/@swc+helpers@0.5.15/node_modules/@swc/helpers/esm/_extends.js","../src/sourceParser/ShaderSourceFactory.ts","../src/sourceParser/ShaderSourceSymbol.ts","../src/sourceParser/SourceLexer.ts","../src/sourceParser/ShaderSourceParser.ts","../src/ShaderLab.ts","../src/index.ts"],"sourcesContent":["function _array_like_to_array(arr, len) {\n if (len == null || len > arr.length) len = arr.length;\n\n for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i];\n\n return arr2;\n}\nexport { _array_like_to_array as _ };\n","import { _ as _array_like_to_array } from \"./_array_like_to_array.js\";\n\nfunction _unsupported_iterable_to_array(o, minLen) {\n if (!o) return;\n if (typeof o === \"string\") return _array_like_to_array(o, minLen);\n\n var n = Object.prototype.toString.call(o).slice(8, -1);\n\n if (n === \"Object\" && o.constructor) n = o.constructor.name;\n if (n === \"Map\" || n === \"Set\") return Array.from(n);\n if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _array_like_to_array(o, minLen);\n}\nexport { _unsupported_iterable_to_array as _ };\n","import { _ as _unsupported_iterable_to_array } from \"./_unsupported_iterable_to_array.js\";\n\nfunction _create_for_of_iterator_helper_loose(o, allowArrayLike) {\n var it = typeof Symbol !== \"undefined\" && o[Symbol.iterator] || o[\"@@iterator\"];\n\n if (it) return (it = it.call(o)).next.bind(it);\n // Fallback for engines without symbol support\n if (Array.isArray(o) || (it = _unsupported_iterable_to_array(o)) || allowArrayLike && o && typeof o.length === \"number\") {\n if (it) o = it;\n\n var i = 0;\n\n return function() {\n if (i >= o.length) return { done: true };\n\n return { done: false, value: o[i++] };\n };\n }\n\n throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}\nexport { _create_for_of_iterator_helper_loose as _ };\n","function _set_prototype_of(o, p) {\n _set_prototype_of = Object.setPrototypeOf || function setPrototypeOf(o, p) {\n o.__proto__ = p;\n\n return o;\n };\n\n return _set_prototype_of(o, p);\n}\nexport { _set_prototype_of as _ };\n","import { _ as _set_prototype_of } from \"./_set_prototype_of.js\";\n\nfunction _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function\");\n }\n\n subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } });\n\n if (superClass) _set_prototype_of(subClass, superClass);\n}\nexport { _inherits as _ };\n","function _instanceof(left, right) {\n if (right != null && typeof Symbol !== \"undefined\" && right[Symbol.hasInstance]) {\n return !!right[Symbol.hasInstance](left);\n } else return left instanceof right;\n}\nexport { _instanceof as _ };\n","function _defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n\n if (\"value\" in descriptor) descriptor.writable = true;\n\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n}\nfunction _create_class(Constructor, protoProps, staticProps) {\n if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n if (staticProps) _defineProperties(Constructor, staticProps);\n\n return Constructor;\n}\nexport { _create_class as _ };\n","/******************************************************************************\nCopyright (c) Microsoft Corporation.\n\nPermission to use, copy, modify, and/or distribute this software for any\npurpose with or without fee is hereby granted.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\nPERFORMANCE OF THIS SOFTWARE.\n***************************************************************************** */\n/* global Reflect, Promise, SuppressedError, Symbol, Iterator */\n\nvar extendStatics = function(d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n};\n\nexport function __extends(d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n}\n\nexport var __assign = function() {\n __assign = Object.assign || function __assign(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n }\n return t;\n }\n return __assign.apply(this, arguments);\n}\n\nexport function __rest(s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\n t[p[i]] = s[p[i]];\n }\n return t;\n}\n\nexport function __decorate(decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n}\n\nexport function __param(paramIndex, decorator) {\n return function (target, key) { decorator(target, key, paramIndex); }\n}\n\nexport function __esDecorate(ctor, descriptorIn, decorators, contextIn, initializers, extraInitializers) {\n function accept(f) { if (f !== void 0 && typeof f !== \"function\") throw new TypeError(\"Function expected\"); return f; }\n var kind = contextIn.kind, key = kind === \"getter\" ? \"get\" : kind === \"setter\" ? \"set\" : \"value\";\n var target = !descriptorIn && ctor ? contextIn[\"static\"] ? ctor : ctor.prototype : null;\n var descriptor = descriptorIn || (target ? Object.getOwnPropertyDescriptor(target, contextIn.name) : {});\n var _, done = false;\n for (var i = decorators.length - 1; i >= 0; i--) {\n var context = {};\n for (var p in contextIn) context[p] = p === \"access\" ? {} : contextIn[p];\n for (var p in contextIn.access) context.access[p] = contextIn.access[p];\n context.addInitializer = function (f) { if (done) throw new TypeError(\"Cannot add initializers after decoration has completed\"); extraInitializers.push(accept(f || null)); };\n var result = (0, decorators[i])(kind === \"accessor\" ? { get: descriptor.get, set: descriptor.set } : descriptor[key], context);\n if (kind === \"accessor\") {\n if (result === void 0) continue;\n if (result === null || typeof result !== \"object\") throw new TypeError(\"Object expected\");\n if (_ = accept(result.get)) descriptor.get = _;\n if (_ = accept(result.set)) descriptor.set = _;\n if (_ = accept(result.init)) initializers.unshift(_);\n }\n else if (_ = accept(result)) {\n if (kind === \"field\") initializers.unshift(_);\n else descriptor[key] = _;\n }\n }\n if (target) Object.defineProperty(target, contextIn.name, descriptor);\n done = true;\n};\n\nexport function __runInitializers(thisArg, initializers, value) {\n var useValue = arguments.length > 2;\n for (var i = 0; i < initializers.length; i++) {\n value = useValue ? initializers[i].call(thisArg, value) : initializers[i].call(thisArg);\n }\n return useValue ? value : void 0;\n};\n\nexport function __propKey(x) {\n return typeof x === \"symbol\" ? x : \"\".concat(x);\n};\n\nexport function __setFunctionName(f, name, prefix) {\n if (typeof name === \"symbol\") name = name.description ? \"[\".concat(name.description, \"]\") : \"\";\n return Object.defineProperty(f, \"name\", { configurable: true, value: prefix ? \"\".concat(prefix, \" \", name) : name });\n};\n\nexport function __metadata(metadataKey, metadataValue) {\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\n}\n\nexport function __awaiter(thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n}\n\nexport function __generator(thisArg, body) {\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g = Object.create((typeof Iterator === \"function\" ? Iterator : Object).prototype);\n return g.next = verb(0), g[\"throw\"] = verb(1), g[\"return\"] = verb(2), typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n function verb(n) { return function (v) { return step([n, v]); }; }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (g && (g = 0, op[0] && (_ = 0)), _) try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [op[0] & 2, t.value];\n switch (op[0]) {\n case 0: case 1: t = op; break;\n case 4: _.label++; return { value: op[1], done: false };\n case 5: _.label++; y = op[1]; op = [0]; continue;\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n if (t[2]) _.ops.pop();\n _.trys.pop(); continue;\n }\n op = body.call(thisArg, _);\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n }\n}\n\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n});\n\nexport function __exportStar(m, o) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\n}\n\nexport function __values(o) {\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\n if (m) return m.call(o);\n if (o && typeof o.length === \"number\") return {\n next: function () {\n if (o && i >= o.length) o = void 0;\n return { value: o && o[i++], done: !o };\n }\n };\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\n}\n\nexport function __read(o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o), r, ar = [], e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n }\n catch (error) { e = { error: error }; }\n finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n }\n finally { if (e) throw e.error; }\n }\n return ar;\n}\n\n/** @deprecated */\nexport function __spread() {\n for (var ar = [], i = 0; i < arguments.length; i++)\n ar = ar.concat(__read(arguments[i]));\n return ar;\n}\n\n/** @deprecated */\nexport function __spreadArrays() {\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\n r[k] = a[j];\n return r;\n}\n\nexport function __spreadArray(to, from, pack) {\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\n if (ar || !(i in from)) {\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\n ar[i] = from[i];\n }\n }\n return to.concat(ar || Array.prototype.slice.call(from));\n}\n\nexport function __await(v) {\n return this instanceof __await ? (this.v = v, this) : new __await(v);\n}\n\nexport function __asyncGenerator(thisArg, _arguments, generator) {\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\n return i = Object.create((typeof AsyncIterator === \"function\" ? AsyncIterator : Object).prototype), verb(\"next\"), verb(\"throw\"), verb(\"return\", awaitReturn), i[Symbol.asyncIterator] = function () { return this; }, i;\n function awaitReturn(f) { return function (v) { return Promise.resolve(v).then(f, reject); }; }\n function verb(n, f) { if (g[n]) { i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; if (f) i[n] = f(i[n]); } }\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\n function fulfill(value) { resume(\"next\", value); }\n function reject(value) { resume(\"throw\", value); }\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\n}\n\nexport function __asyncDelegator(o) {\n var i, p;\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: false } : f ? f(v) : v; } : f; }\n}\n\nexport function __asyncValues(o) {\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\n var m = o[Symbol.asyncIterator], i;\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\n}\n\nexport function __makeTemplateObject(cooked, raw) {\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\n return cooked;\n};\n\nvar __setModuleDefault = Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n};\n\nvar ownKeys = function(o) {\n ownKeys = Object.getOwnPropertyNames || function (o) {\n var ar = [];\n for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;\n return ar;\n };\n return ownKeys(o);\n};\n\nexport function __importStar(mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== \"default\") __createBinding(result, mod, k[i]);\n __setModuleDefault(result, mod);\n return result;\n}\n\nexport function __importDefault(mod) {\n return (mod && mod.__esModule) ? mod : { default: mod };\n}\n\nexport function __classPrivateFieldGet(receiver, state, kind, f) {\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\n}\n\nexport function __classPrivateFieldSet(receiver, state, value, kind, f) {\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\n}\n\nexport function __classPrivateFieldIn(state, receiver) {\n if (receiver === null || (typeof receiver !== \"object\" && typeof receiver !== \"function\")) throw new TypeError(\"Cannot use 'in' operator on non-object\");\n return typeof state === \"function\" ? receiver === state : state.has(receiver);\n}\n\nexport function __addDisposableResource(env, value, async) {\n if (value !== null && value !== void 0) {\n if (typeof value !== \"object\" && typeof value !== \"function\") throw new TypeError(\"Object expected.\");\n var dispose, inner;\n if (async) {\n if (!Symbol.asyncDispose) throw new TypeError(\"Symbol.asyncDispose is not defined.\");\n dispose = value[Symbol.asyncDispose];\n }\n if (dispose === void 0) {\n if (!Symbol.dispose) throw new TypeError(\"Symbol.dispose is not defined.\");\n dispose = value[Symbol.dispose];\n if (async) inner = dispose;\n }\n if (typeof dispose !== \"function\") throw new TypeError(\"Object not disposable.\");\n if (inner) dispose = function() { try { inner.call(this); } catch (e) { return Promise.reject(e); } };\n env.stack.push({ value: value, dispose: dispose, async: async });\n }\n else if (async) {\n env.stack.push({ async: true });\n }\n return value;\n}\n\nvar _SuppressedError = typeof SuppressedError === \"function\" ? SuppressedError : function (error, suppressed, message) {\n var e = new Error(message);\n return e.name = \"SuppressedError\", e.error = error, e.suppressed = suppressed, e;\n};\n\nexport function __disposeResources(env) {\n function fail(e) {\n env.error = env.hasError ? new _SuppressedError(e, env.error, \"An error was suppressed during disposal.\") : e;\n env.hasError = true;\n }\n var r, s = 0;\n function next() {\n while (r = env.stack.pop()) {\n try {\n if (!r.async && s === 1) return s = 0, env.stack.push(r), Promise.resolve().then(next);\n if (r.dispose) {\n var result = r.dispose.call(r.value);\n if (r.async) return s |= 2, Promise.resolve(result).then(next, function(e) { fail(e); return next(); });\n }\n else s |= 1;\n }\n catch (e) {\n fail(e);\n }\n }\n if (s === 1) return env.hasError ? Promise.reject(env.error) : Promise.resolve();\n if (env.hasError) throw env.error;\n }\n return next();\n}\n\nexport function __rewriteRelativeImportExtension(path, preserveJsx) {\n if (typeof path === \"string\" && /^\\.\\.?\\//.test(path)) {\n return path.replace(/\\.(tsx)$|((?:\\.d)?)((?:\\.[^./]+?)?)\\.([cm]?)ts$/i, function (m, tsx, d, ext, cm) {\n return tsx ? preserveJsx ? \".jsx\" : \".js\" : d && (!ext || !cm) ? m : (d + ext + \".\" + cm.toLowerCase() + \"js\");\n });\n }\n return path;\n}\n\nexport default {\n __extends,\n __assign,\n __rest,\n __decorate,\n __param,\n __esDecorate,\n __runInitializers,\n __propKey,\n __setFunctionName,\n __metadata,\n __awaiter,\n __generator,\n __createBinding,\n __exportStar,\n __values,\n __read,\n __spread,\n __spreadArrays,\n __spreadArray,\n __await,\n __asyncGenerator,\n __asyncDelegator,\n __asyncValues,\n __makeTemplateObject,\n __importStar,\n __importDefault,\n __classPrivateFieldGet,\n __classPrivateFieldSet,\n __classPrivateFieldIn,\n __addDisposableResource,\n __disposeResources,\n __rewriteRelativeImportExtension,\n};\n","import { IPoolElement } from \"@galacean/engine\";\nimport { ShaderPosition } from \"./ShaderPosition\";\n\nexport class ShaderRange implements IPoolElement {\n public start: ShaderPosition;\n public end: ShaderPosition;\n\n set(start: ShaderPosition, end: ShaderPosition) {\n this.start = start;\n this.end = end;\n }\n\n dispose(): void {\n this.start.dispose();\n this.end.dispose();\n }\n}\n","import { IPoolElement } from \"@galacean/engine\";\n\nexport class ShaderPosition implements IPoolElement {\n index: number;\n // #if _VERBOSE\n line: number;\n column: number;\n // #endif\n\n set(\n index: number,\n // #if _VERBOSE\n line: number,\n column: number\n // #endif\n ) {\n this.index = index;\n // #if _VERBOSE\n this.line = line;\n this.column = column;\n // #endif\n }\n\n dispose(): void {\n this.index = 0;\n // #if _VERBOSE\n this.line = 0;\n this.column = 0;\n // #endif\n }\n}\n","import { Keyword } from \"./enums/Keyword\";\n\nexport enum ETokenType {\n ID = 1000,\n FLOAT_CONSTANT,\n INT_CONSTANT,\n STRING_CONST,\n /** << */\n LEFT_OP,\n /** \\>> */\n RIGHT_OP,\n /** ++ */\n INC_OP,\n /** -- */\n DEC_OP,\n /** <= */\n LE_OP,\n /** \\>= */\n GE_OP,\n /** == */\n EQ_OP,\n /** != */\n NE_OP,\n /** && */\n AND_OP,\n /** || */\n OR_OP,\n /** ^^ */\n XOR_OP,\n /** *= */\n MUL_ASSIGN,\n /** /= */\n DIV_ASSIGN,\n /** += */\n ADD_ASSIGN,\n /** -= */\n SUB_ASSIGN,\n /** %= */\n MOD_ASSIGN,\n /** <<= */\n LEFT_ASSIGN,\n /** >>= */\n RIGHT_ASSIGN,\n /** &= */\n AND_ASSIGN,\n /** ^= */\n XOR_ASSIGN,\n /** |= */\n OR_ASSIGN,\n /** ( */\n LEFT_PAREN,\n /** ) */\n RIGHT_PAREN,\n /** [ */\n LEFT_BRACKET,\n /** ] */\n RIGHT_BRACKET,\n /** { */\n LEFT_BRACE,\n /** } */\n RIGHT_BRACE,\n /** . */\n DOT,\n /** , */\n COMMA,\n COLON,\n /** = */\n EQUAL,\n /** ; */\n SEMICOLON,\n /** ! */\n BANG,\n /** \\- */\n DASH,\n /** ~ */\n TILDE,\n PLUS,\n /** \\* */\n STAR,\n /** / */\n SLASH,\n /** % */\n PERCENT,\n /** < */\n LEFT_ANGLE,\n /** \\> */\n RIGHT_ANGLE,\n VERTICAL_BAR,\n /** ^ */\n CARET,\n /** & */\n AMPERSAND,\n /** ? */\n QUESTION,\n\n NotWord,\n\n /** ε */\n EPSILON = 1998,\n EOF = 1999\n}\n\nexport const TypeAny = 3000;\n\nexport type GalaceanDataType =\n | Keyword.VOID\n | Keyword.FLOAT\n | Keyword.BOOL\n | Keyword.INT\n | Keyword.UINT\n | Keyword.VEC2\n | Keyword.VEC3\n | Keyword.VEC4\n | Keyword.BVEC2\n | Keyword.BVEC3\n | Keyword.BVEC4\n | Keyword.IVEC2\n | Keyword.IVEC3\n | Keyword.IVEC4\n | Keyword.UVEC2\n | Keyword.UVEC3\n | Keyword.UVEC4\n | Keyword.MAT2\n | Keyword.MAT3\n | Keyword.MAT4\n | Keyword.MAT2X3\n | Keyword.MAT2X4\n | Keyword.MAT3X2\n | Keyword.MAT3X4\n | Keyword.MAT4X2\n | Keyword.MAT4X3\n | Keyword.SAMPLER2D\n | Keyword.SAMPLER3D\n | Keyword.SAMPLER_CUBE\n | Keyword.SAMPLER2D_SHADOW\n | Keyword.SAMPLER_CUBE_SHADOW\n | Keyword.SAMPLER2D_ARRAY\n | Keyword.SAMPLER2D_ARRAY_SHADOW\n | Keyword.I_SAMPLER2D\n | Keyword.I_SAMPLER3D\n | Keyword.I_SAMPLER_CUBE\n | Keyword.I_SAMPLER2D_ARRAY\n | Keyword.U_SAMPLER2D\n | Keyword.U_SAMPLER3D\n | Keyword.U_SAMPLER_CUBE\n | Keyword.U_SAMPLER2D_ARRAY\n | Keyword.VEC4_ARRAY\n | typeof TypeAny\n | string;\n\nexport type TokenType = ETokenType | Keyword;\n","export enum Keyword {\n CONST = 0,\n BOOL,\n FLOAT,\n DOUBLE,\n INT,\n UINT,\n BREAK,\n CONTINUE,\n DO,\n ELSE,\n FOR,\n IF,\n WHILE,\n DISCARD,\n RETURN,\n BVEC2,\n BVEC3,\n BVEC4,\n IVEC2,\n IVEC3,\n IVEC4,\n UVEC2,\n UVEC3,\n UVEC4,\n VEC2,\n VEC3,\n VEC4,\n VEC4_ARRAY,\n MAT2,\n MAT3,\n MAT4,\n MAT2X3,\n MAT2X4,\n MAT3X2,\n MAT3X4,\n MAT4X2,\n MAT4X3,\n IN,\n OUT,\n INOUT,\n CENTROID,\n SAMPLER2D,\n SAMPLER3D,\n SAMPLER_CUBE,\n SAMPLER2D_SHADOW,\n SAMPLER_CUBE_SHADOW,\n SAMPLER2D_ARRAY,\n SAMPLER2D_ARRAY_SHADOW,\n I_SAMPLER2D,\n I_SAMPLER3D,\n I_SAMPLER_CUBE,\n I_SAMPLER2D_ARRAY,\n U_SAMPLER2D,\n U_SAMPLER3D,\n U_SAMPLER_CUBE,\n U_SAMPLER2D_ARRAY,\n STRUCT,\n LAYOUT,\n LOCATION,\n VOID,\n\n PRECISION,\n PRECISE,\n HIGHP,\n MEDIUMP,\n LOWP,\n INVARIANT,\n SMOOTH,\n FLAT,\n NOPERSPECTIVE,\n\n // Common Tokens\n True,\n False,\n LeftBrace,\n RightBrace,\n Equal,\n\n // Source Parser Tokens\n GSRenderQueueType,\n GSBlendState,\n GSDepthState,\n GSStencilState,\n GSRasterState,\n GSEditorProperties,\n GSEditorMacros,\n GSEditor,\n GSTags,\n GSVertexShader,\n GSFragmentShader,\n GSSubShader,\n GSPass,\n GSBlendFactor,\n GSBlendOperation,\n GSBool,\n GSNumber,\n GSColor,\n GSCompareFunction,\n GSStencilOperation,\n GSCullMode,\n GSUsePass,\n\n // Macros\n MACRO_IF,\n MACRO_IFDEF,\n MACRO_IFNDEF,\n MACRO_ELSE,\n MACRO_ELIF,\n MACRO_ENDIF,\n MACRO_UNDEF,\n MACRO_DEFINE_EXPRESSION,\n MACRO_CONDITIONAL_EXPRESSION,\n MACRO_CALL\n}\n","function _is_native_reflect_construct() {\n // Since Reflect.construct can't be properly polyfilled, some\n // implementations (e.g. core-js@2) don't set the correct internal slots.\n // Those polyfills don't allow us to subclass built-ins, so we need to\n // use our fallback implementation.\n try {\n // If the internal slots aren't set, this throws an error similar to\n // TypeError: this is not a Boolean object.\n var result = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function() {}));\n } catch (_) {}\n return (_is_native_reflect_construct = function() {\n return !!result;\n })();\n}\n\nexport { _is_native_reflect_construct as _ };\n","import { _ as _is_native_reflect_construct } from \"./_is_native_reflect_construct.js\";\nimport { _ as _set_prototype_of } from \"./_set_prototype_of.js\";\nfunction _construct(Parent, args, Class) {\n if (_is_native_reflect_construct()) _construct = Reflect.construct;\n else {\n _construct = function construct(Parent, args, Class) {\n var a = [null];\n a.push.apply(a, args);\n var Constructor = Function.bind.apply(Parent, a);\n var instance = new Constructor();\n\n if (Class) _set_prototype_of(instance, Class.prototype);\n\n return instance;\n };\n }\n\n return _construct.apply(null, arguments);\n}\nexport { _construct as _ };\n","function _get_prototype_of(o) {\n _get_prototype_of = Object.setPrototypeOf ? Object.getPrototypeOf : function getPrototypeOf(o) {\n return o.__proto__ || Object.getPrototypeOf(o);\n };\n\n return _get_prototype_of(o);\n}\nexport { _get_prototype_of as _ };\n","function _is_native_function(fn) {\n return Function.toString.call(fn).indexOf(\"[native code]\") !== -1;\n}\nexport { _is_native_function as _ };\n","import { _ as _construct } from \"./_construct.js\";\nimport { _ as _get_prototype_of } from \"./_get_prototype_of.js\";\nimport { _ as _is_native_function } from \"./_is_native_function.js\";\nimport { _ as _set_prototype_of } from \"./_set_prototype_of.js\";\n\nfunction _wrap_native_super(Class) {\n var _cache = typeof Map === \"function\" ? new Map() : undefined;\n _wrap_native_super = function(Class) {\n if (Class === null || !_is_native_function(Class)) return Class;\n if (typeof Class !== \"function\") throw new TypeError(\"Super expression must either be null or a function\");\n if (typeof _cache !== \"undefined\") {\n if (_cache.has(Class)) return _cache.get(Class);\n _cache.set(Class, Wrapper);\n }\n\n function Wrapper() {\n return _construct(Class, arguments, _get_prototype_of(this).constructor);\n }\n Wrapper.prototype = Object.create(Class.prototype, { constructor: { value: Wrapper, enumerable: false, writable: true, configurable: true } });\n\n return _set_prototype_of(Wrapper, Class);\n };\n\n return _wrap_native_super(Class);\n}\nexport { _wrap_native_super as _ };\n","import { ShaderPosition } from \"./common/ShaderPosition\";\nimport { ShaderRange } from \"./common/ShaderRange\";\n\nexport class GSError extends Error {\n static wrappingLineCount = 2;\n\n constructor(\n name: GSErrorName,\n message: string,\n public readonly location: ShaderRange | ShaderPosition,\n public readonly source: string,\n public readonly file?: string\n ) {\n super(message);\n this.name = name;\n }\n\n override toString(): string {\n let start: ShaderPosition, end: ShaderPosition;\n const { message, location, source } = this;\n if (!source) {\n return message;\n }\n\n if (location instanceof ShaderPosition) {\n start = end = location;\n } else {\n start = location.start;\n end = location.end;\n }\n const lines = source.split(\"\\n\");\n\n let diagnosticMessage = `${this.name}: ${message}\\n\\n`;\n\n // #if _VERBOSE\n const lineSplit = \"|···\";\n\n const wrappingLineCount = GSError.wrappingLineCount;\n for (let i = start.line - wrappingLineCount, n = end.line + wrappingLineCount; i <= n; i++) {\n const line = lines[i];\n diagnosticMessage += lineSplit + `${line}\\n`;\n\n if (i < start.line || i > end.line) continue;\n\n let remarkStart = 0;\n let remarkEnd = line.length;\n let paddingLength = lineSplit.length;\n if (i === start.line) {\n remarkStart = start.column;\n paddingLength += start.column;\n }\n if (i === end.line) {\n remarkEnd = end.column;\n }\n const remarkLength = Math.max(remarkEnd - remarkStart, 1);\n\n diagnosticMessage += \" \".repeat(paddingLength) + \"^\".repeat(remarkLength) + \"\\n\";\n }\n // #endif\n\n return diagnosticMessage;\n }\n}\n\nexport enum GSErrorName {\n PreprocessorError = \"PreprocessorError\",\n CompilationError = \"CompilationError\",\n ScannerError = \"ScannerError\",\n CompilationWarn = \"CompilationWarning\"\n}\n","import { ClearableObjectPool, 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 { TokenType } from \"../common\";\n\nexport type Terminal = TokenType;\n\nexport enum NoneTerminal {\n START = 2000,\n // galacean\n gs_shader_program,\n\n // glsl\n global_declaration,\n variable_declaration,\n variable_declaration_list,\n variable_declaration_statement,\n array_specifier_list,\n array_specifier,\n ext_builtin_type_specifier_nonarray,\n precision_specifier,\n variable_identifier,\n variable_identifier_node,\n primary_expression,\n postfix_expression,\n integer_expression,\n function_call,\n function_call_generic,\n function_call_header_no_parameters,\n function_call_header_with_parameters,\n function_call_parameter_list,\n function_call_header,\n function_identifier,\n constructor_identifier,\n unary_expression,\n unary_operator,\n multiplicative_expression,\n additive_expression,\n shift_expression,\n relational_expression,\n equality_expression,\n and_expression,\n inclusive_or_expression,\n exclusive_or_expression,\n logical_and_expression,\n logical_xor_expression,\n logical_or_expression,\n conditional_expression,\n assignment_expression,\n assignment_operator,\n expression,\n integer_constant_expression,\n integer_constant_expression_operator,\n declaration,\n function_prototype,\n function_declarator,\n function_header_with_parameters,\n function_header,\n function_parameter_list,\n parameter_declarator,\n parameter_declaration,\n parameter_qualifier,\n parameter_type_specifier,\n init_declarator_list,\n single_declaration,\n fully_specified_type,\n type_qualifier,\n single_type_qualifier,\n storage_qualifier,\n precision_qualifier,\n interpolation_qualifier,\n invariant_qualifier,\n type_specifier,\n type_specifier_nonarray,\n type_specifier_no_prec,\n basic_type,\n struct_specifier,\n struct_declaration_list,\n struct_declaration,\n layout_qualifier,\n struct_declarator_list,\n struct_declarator,\n identifier_list,\n decl_identifier,\n initializer,\n initializer_list,\n declaration_statement,\n simple_statement,\n compound_statement_no_scope,\n statement_with_scope,\n compound_statement,\n statement,\n statement_list,\n iteration_statement_no_new_scope,\n expression_statement,\n selection_statement,\n selection_rest_statement,\n condition,\n conditionopt,\n iteration_statement,\n for_init_statement,\n for_rest_statement,\n jump_statement,\n external_declaration,\n function_definition,\n field_selection,\n bool_constant,\n function_identifier_node,\n typename_identifier_node,\n scope_brace,\n scope_end_brace,\n\n // Macro\n macro_undef,\n macro_push_context,\n macro_pop_context,\n macro_elif_expression,\n macro_else_expression,\n global_macro_if_statement,\n global_macro_declaration,\n global_macro_branch,\n macro_struct_declaration,\n macro_struct_branch,\n macro_if_statement,\n macro_branch,\n macro_param_case_list,\n macro_param_block,\n macro_parameter_branch,\n macro_call_arg_case_list,\n macro_call_arg_block,\n macro_call_arg_branch,\n\n // Macro call\n macro_call_symbol,\n macro_call_function,\n\n _ignore\n}\n\nexport type GrammarSymbol = Terminal | NoneTerminal;\n\nexport type Derivation = GrammarSymbol[];\n","import { NoneTerminal, GrammarSymbol } from \"../parser/GrammarSymbol\";\n\nexport default class Production {\n private static _id = 0;\n static pool: Map<number, Production> = new Map();\n\n readonly goal: NoneTerminal;\n readonly derivation: GrammarSymbol[];\n readonly id: number;\n\n constructor(goal: NoneTerminal, derivation: GrammarSymbol[]) {\n this.goal = goal;\n this.derivation = derivation;\n this.id = Production._id++;\n Production.pool.set(this.id, this);\n }\n}\n","import { NoneTerminal, Terminal } from \"../parser/GrammarSymbol\";\n\nexport type StateActionTable = Map<number /** state ID */, ActionTable>;\nexport type ActionTable = Map<Terminal, ActionInfo>;\nexport type StateGotoTable = Map<number /** state ID */, GotoTable>;\nexport type GotoTable = Map<NoneTerminal, number /** state ID */>;\n\nexport enum EAction {\n Shift = 0,\n Reduce,\n Accept\n}\n\nexport interface ActionInfo {\n action: EAction;\n target?: number;\n}\n","import { ETokenType, ShaderRange } from \"../common\";\nimport { ASTNode, TreeNode } from \"../parser/AST\";\nimport { TranslationRule } from \"../parser/SemanticAnalyzer\";\nimport { NoneTerminal, GrammarSymbol } from \"../parser/GrammarSymbol\";\nimport Production from \"./Production\";\nimport { ActionInfo, EAction } from \"./types\";\nimport { ShaderLab } from \"../ShaderLab\";\nimport { ClearableObjectPool, IPoolElement } from \"@galacean/engine\";\nimport { NodeChild } from \"../parser/types\";\nimport { Keyword } from \"../common/enums/Keyword\";\n\nexport default class GrammarUtils {\n static isTerminal(sm: GrammarSymbol) {\n return sm < NoneTerminal.START;\n }\n\n static toString(sm: GrammarSymbol) {\n if (this.isTerminal(sm)) {\n return ETokenType[sm] ?? Keyword[sm];\n }\n return NoneTerminal[sm];\n }\n\n static createProductionWithOptions(\n goal: NoneTerminal,\n options: GrammarSymbol[][],\n /** the ast node */\n astTypePool?: ClearableObjectPool<\n { set: (loc: ShaderRange, children: NodeChild[]) => void } & IPoolElement & TreeNode\n >\n ) {\n const ret: [GrammarSymbol[], TranslationRule | undefined][] = [];\n for (const opt of options) {\n ret.push([\n [goal, ...opt],\n function (sa, ...children) {\n if (!children[0]) return;\n const start = children[0].location.start;\n const end = children[children.length - 1].location.end;\n const location = ShaderLab.createRange(start, end);\n ASTNode.get(astTypePool ?? ASTNode.TrivialNode.pool, sa, location, children);\n }\n ]);\n }\n return ret;\n }\n\n static addMapSetItem<K, T>(map: Map<K, Set<T>>, k: K, v: T) {\n const set = map.get(k) ?? new Set();\n set.add(v);\n map.set(k, set);\n }\n\n static isSubSet<T>(sa: Set<T>, sb: Set<T>) {\n for (const item of sa) {\n if (!sb.has(item)) return false;\n }\n return true;\n }\n\n static isActionEqual(a: ActionInfo, b: ActionInfo) {\n return a.action === b.action && a.target === b.target;\n }\n\n // #if _VERBOSE\n static printAction(actionInfo: ActionInfo) {\n const production = Production.pool.get(actionInfo.target!);\n return `<Action: ${EAction[actionInfo.action]} -> ${this.printProduction(production)}>`;\n }\n\n static printProduction(production: Production) {\n const deriv = production.derivation.map((gs) => GrammarUtils.toString(gs)).join(\"|\");\n return `${NoneTerminal[production.goal]} :=> ${deriv}`;\n }\n // #endif\n}\n","import { ETokenType } from \"../common\";\nimport { NoneTerminal, Terminal } from \"../parser/GrammarSymbol\";\nimport Production from \"./Production\";\nimport GrammarUtils from \"./Utils\";\n\nexport default class StateItem {\n static _id = 0;\n\n readonly production: Production;\n readonly position: number;\n readonly lookaheadSet: Set<Terminal>;\n readonly id: number;\n\n _needReInfer = true;\n get needReInfer() {\n return this._needReInfer;\n }\n set needReInfer(v: boolean) {\n this._needReInfer = v;\n }\n\n get curSymbol() {\n return this.production.derivation[this.position];\n }\n get nextSymbol() {\n return this.production.derivation[this.position + 1];\n }\n\n constructor(production: Production, position: number, lookahead: Iterable<Terminal>) {\n this.production = production;\n this.position = position;\n this.lookaheadSet = new Set();\n for (const la of lookahead) {\n this.lookaheadSet.add(la);\n }\n this.id = StateItem._id++;\n }\n\n addLookahead(ts: Iterable<Terminal>) {\n for (const t of ts) {\n if (this.lookaheadSet.has(t)) continue;\n this.lookaheadSet.add(t);\n this.needReInfer = true;\n }\n }\n\n symbolByOffset(offset: number) {\n return this.production.derivation[this.position + offset];\n }\n\n canReduce() {\n if (this.position > this.production.derivation.length - 1) return true;\n else {\n for (let i = this.position; i < this.production.derivation.length; i++) {\n if (this.production.derivation[i] !== ETokenType.EPSILON) return false;\n }\n return true;\n }\n }\n\n advance() {\n // #if _VERBOSE\n if (this.canReduce()) throw `Error: advance reduce-able parsing state item`;\n // #endif\n return new StateItem(this.production, this.position + 1, this.lookaheadSet);\n }\n\n // #if _VERBOSE\n toString() {\n const coreItem = this.production.derivation.map((item) => GrammarUtils.toString(item));\n coreItem[this.position] = \".\" + (coreItem[this.position] ?? \"\");\n\n return `${NoneTerminal[this.production.goal]} :=> ${coreItem.join(\"|\")} ;${Array.from(this.lookaheadSet)\n .map((item) => GrammarUtils.toString(item))\n .join(\"/\")}`;\n }\n // #endif\n}\n","import { Terminal } from \"../parser/GrammarSymbol\";\nimport Production from \"./Production\";\nimport StateItem from \"./StateItem\";\n\nexport default class State {\n static closureMap: Map<string /** state mapKey */, State> = new Map();\n static pool: Map<number, State> = new Map();\n static _id = 0;\n\n readonly id: number;\n readonly cores: Set<StateItem>;\n private _items: Set<StateItem>;\n get items() {\n return this._items;\n }\n\n closured = false;\n get needReInfer() {\n for (const core of this.cores) {\n if (core.needReInfer) return true;\n }\n return false;\n }\n\n private _stateItemPool: Map<string /** Map ID */, StateItem> = new Map();\n\n static create(cores: StateItem[]) {\n const cacheKey = this.getMapKey(cores);\n const state = this.closureMap.get(cacheKey);\n if (state) {\n for (const core of cores) {\n // merge lookahead\n state.createStateItem(core.production, core.position, core.lookaheadSet);\n }\n return state;\n }\n\n const newState = new State(cores);\n this.closureMap.set(cacheKey, newState);\n return newState;\n }\n\n // TODO: any optimization?\n static getMapKey(cores: StateItem[]) {\n return cores.map((item) => `${item.production.id},${item.position}`).join(\";\");\n }\n\n private constructor(cores: Iterable<StateItem>) {\n this.id = State._id++;\n this._items = new Set([...cores]);\n this.cores = new Set([...cores]);\n for (const it of cores) {\n const itemMapKey = this.getStateItemMapKey(it.production, it.position);\n this._stateItemPool.set(itemMapKey, it);\n }\n State.pool.set(this.id, this);\n }\n\n // TODO: any optimization?\n getStateItemMapKey(production: Production, position: number) {\n return `${production.id},${position}`;\n }\n\n createStateItem(production: Production, position: number, lookaheadSet: Iterable<Terminal> = new Set()) {\n const mapId = this.getStateItemMapKey(production, position);\n const item = this._stateItemPool.get(mapId);\n if (item) {\n for (const la of lookaheadSet) {\n if (item.lookaheadSet.has(la)) continue;\n item.lookaheadSet.add(la);\n item.needReInfer = true;\n }\n return item;\n }\n const newItem = new StateItem(production, position, lookaheadSet);\n this._stateItemPool.set(mapId, newItem);\n return newItem;\n }\n}\n","import { ETokenType, GalaceanDataType, TypeAny } from \"./common\";\nimport { BaseToken as Token } from \"./common/BaseToken\";\nimport { TreeNode } from \"./parser/AST\";\nimport { GrammarSymbol, NoneTerminal } from \"./parser/GrammarSymbol\";\n// #if _VERBOSE\nimport { Keyword } from \"./common/enums/Keyword\";\nimport State from \"./lalr/State\";\n// #endif\n\nexport class ParserUtils {\n static unwrapNodeByType<T = TreeNode>(node: TreeNode, type: NoneTerminal): T | undefined {\n const child = node.children[0];\n if (child instanceof Token) return;\n if (child.nt === type) return child as T;\n return ParserUtils.unwrapNodeByType(child, type);\n }\n\n // #if _VERBOSE\n /**\n * Check if type `tb` is compatible with type `ta`.\n */\n static typeCompatible(ta: GalaceanDataType, tb: GalaceanDataType | undefined) {\n if (tb == undefined || tb === TypeAny) return true;\n if (ta === Keyword.INT) {\n return ta === tb || tb === Keyword.UINT;\n }\n return ta === tb;\n }\n\n static toString(sm: GrammarSymbol) {\n if (this.isTerminal(sm)) {\n return ETokenType[sm] ?? Keyword[sm];\n }\n return NoneTerminal[sm];\n }\n // #endif\n\n static isTerminal(sm: GrammarSymbol) {\n return sm < NoneTerminal.START;\n }\n\n /**\n * @internal\n */\n // #if _VERBOSE\n static printStatePool(logPath: string) {\n let output = \"\";\n\n console.log(\"========== Parser Pool ==========\");\n\n let count = 0;\n for (const state of State.pool.values()) {\n count++;\n let tmp = \"\";\n tmp += `${state.id}: \\n`.padEnd(4);\n for (const psItem of state.items) {\n tmp += \" \" + psItem.toString() + \"\\n\";\n }\n output += tmp;\n }\n\n console.log(\"state count:\", count);\n console.log(output);\n }\n // #endif\n}\n","import { Logger, ShaderPass } from \"@galacean/engine\";\n/** @ts-ignore */\nimport { ShaderLib } from \"@galacean/engine\";\n\nexport enum MacroValueType {\n Number, // 1, 1.1\n Symbol, // variable name\n FunctionCall, // function call, e.g. clamp(a, 0.0, 1.0)\n Other // shaderLab does not check this\n}\n\nexport interface MacroDefineInfo {\n isFunction: boolean;\n name: string;\n value: string;\n valueType: MacroValueType;\n params: string[];\n functionCallName: string;\n}\n\nexport interface MacroDefineList {\n [macroName: string]: MacroDefineInfo[];\n}\n\nexport class Preprocessor {\n private static readonly _includeReg = /^[ \\t]*#include +\"([\\w\\d./]+)\"/gm;\n private static readonly _macroRegex =\n /^\\s*#define\\s+(\\w+)[ ]*(\\(([^)]*)\\))?[ ]+(\\(?\\w+\\)?.*?)(?:\\/\\/.*|\\/\\*.*?\\*\\/)?\\s*$/gm;\n private static readonly _symbolReg = /^[a-zA-Z_][a-zA-Z0-9_]*$/;\n private static readonly _funcCallReg = /^([a-zA-Z_][a-zA-Z0-9_]*)\\s*\\((.*)\\)$/;\n private static readonly _macroDefineIncludeMap = new Map<string, MacroDefineList>();\n\n /**\n * @internal\n */\n static _repeatIncludeSet = new Set<string>();\n\n static parse(\n source: string,\n basePathForIncludeKey: string,\n outMacroDefineList: MacroDefineList,\n parseMacro = true\n ): string {\n if (parseMacro) {\n this._parseMacroDefines(source, outMacroDefineList);\n }\n return source.replace(this._includeReg, (_, includeName) =>\n this._replace(includeName, basePathForIncludeKey, outMacroDefineList)\n );\n }\n\n static getReferenceSymbolNames(macroDefineList: MacroDefineList, macroName: string, out: string[]): void {\n out.length = 0;\n const infos = macroDefineList[macroName];\n if (!infos) return;\n\n for (let i = 0; i < infos.length; i++) {\n const info = infos[i];\n const valueType = info.valueType;\n if (valueType === MacroValueType.FunctionCall || valueType === MacroValueType.Symbol) {\n const referencedName = valueType === MacroValueType.FunctionCall ? info.functionCallName : info.value;\n if (info.params.indexOf(referencedName) !== -1) continue;\n if (out.indexOf(referencedName) === -1) out.push(referencedName);\n } else if (valueType === MacroValueType.Other) {\n // #if _VERBOSE\n Logger.warn(\n `Warning: Macro \"${info.name}\" has an unrecognized value \"${info.value}\". ShaderLab does not validate this type.`\n );\n // #endif\n }\n }\n }\n\n private static _isNumber(str: string): boolean {\n return !isNaN(Number(str));\n }\n\n private static _isExist(list: MacroDefineInfo[], item: MacroDefineInfo): boolean {\n return list.some(\n (e) =>\n e.valueType === item.valueType &&\n e.value === item.value &&\n e.isFunction === item.isFunction &&\n e.functionCallName === item.functionCallName &&\n e.params.length === item.params.length &&\n e.params.every((p, i) => p === item.params[i])\n );\n }\n\n private static _parseMacroDefines(source: string, outMacroList: MacroDefineList): void {\n let match: RegExpExecArray | null;\n this._macroRegex.lastIndex = 0;\n\n while ((match = this._macroRegex.exec(source)) !== null) {\n const [, name, paramsGroup, paramsStr, valueRaw] = match;\n const isFunction = !!paramsGroup && !!valueRaw;\n const params =\n isFunction && paramsStr\n ? paramsStr\n .split(\",\")\n .map((p) => p.trim())\n .filter(Boolean)\n : [];\n const value = valueRaw ? valueRaw.trim() : \"\";\n\n let valueType = MacroValueType.Other;\n let functionCallName = \"\";\n\n if (this._isNumber(value)) {\n valueType = MacroValueType.Number;\n } else if (this._symbolReg.test(value)) {\n valueType = MacroValueType.Symbol;\n } else {\n const callMatch = this._funcCallReg.exec(value);\n if (callMatch) {\n valueType = MacroValueType.FunctionCall;\n functionCallName = callMatch[1];\n }\n }\n\n const info: MacroDefineInfo = {\n isFunction,\n name,\n value,\n valueType,\n params,\n functionCallName\n };\n\n const arr = outMacroList[name];\n if (arr) {\n if (!this._isExist(arr, info)) arr.push(info);\n } else {\n outMacroList[name] = [info];\n }\n }\n }\n\n private static _mergeMacroDefineLists(from: MacroDefineList, to: MacroDefineList): void {\n for (const macroName in from) {\n if (to[macroName]) {\n const target = to[macroName];\n const src = from[macroName];\n for (let i = 0; i < src.length; i++) {\n const info = src[i];\n if (!this._isExist(target, info)) target.push(info);\n }\n } else {\n to[macroName] = from[macroName];\n }\n }\n }\n\n private static _replace(\n includeName: string,\n basePathForIncludeKey: string,\n outMacroDefineList: MacroDefineList\n ): string {\n let path: string;\n if (includeName[0] === \".\") {\n // @ts-ignore\n path = new URL(includeName, basePathForIncludeKey).href.substring(ShaderPass._shaderRootPath.length);\n } else {\n path = includeName;\n }\n\n const chunk = (ShaderLib as any)[path];\n if (!chunk) {\n Logger.error(`Shader slice \"${path}\" not founded.`);\n return \"\";\n }\n\n if (this._repeatIncludeSet.has(path)) {\n Logger.warn(`Shader slice \"${path}\" is included multiple times.`);\n }\n this._repeatIncludeSet.add(path);\n\n if (this._macroDefineIncludeMap.has(path)) {\n this._mergeMacroDefineLists(this._macroDefineIncludeMap.get(path)!, outMacroDefineList);\n } else {\n const chunkMacroDefineList: MacroDefineList = {};\n this._parseMacroDefines(chunk, chunkMacroDefineList);\n this._macroDefineIncludeMap.set(path, chunkMacroDefineList);\n this._mergeMacroDefineLists(chunkMacroDefineList, outMacroDefineList);\n }\n\n return this.parse(chunk, basePathForIncludeKey, outMacroDefineList, false);\n }\n}\n","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 { Logger } from \"@galacean/engine\";\nimport { IBaseSymbol } from \"./IBaseSymbol\";\n\nexport class SymbolTable<T extends IBaseSymbol> {\n private _table: Map<string, T[]> = new Map();\n\n insert(symbol: T, isInMacroBranch = false): void {\n symbol.isInMacroBranch = isInMacroBranch;\n\n const entry = this._table.get(symbol.ident) ?? [];\n for (let i = 0, n = entry.length; i < n; i++) {\n if (entry[i].isInMacroBranch) continue;\n if (entry[i].equal(symbol)) {\n Logger.warn(\"Replace symbol:\", symbol.ident);\n entry[i] = symbol;\n return;\n }\n }\n\n entry.push(symbol);\n this._table.set(symbol.ident, entry);\n }\n\n getSymbol(symbol: T, includeMacro = false): T | undefined {\n const entry = this._table.get(symbol.ident);\n if (entry) {\n for (let i = entry.length - 1; i >= 0; i--) {\n const item = entry[i];\n if (!includeMacro && item.isInMacroBranch) continue;\n if (item.equal(symbol)) return item;\n }\n }\n }\n\n getSymbols(symbol: T, includeMacro = false, out: T[]): T[] {\n out.length = 0;\n this._getSymbols(symbol, includeMacro, out);\n\n return out;\n }\n\n /**\n * @internal\n */\n _getSymbols(symbol: T, includeMacro = false, out: T[]): T[] {\n const entry = this._table.get(symbol.ident);\n\n if (entry) {\n for (let i = entry.length - 1; i >= 0; i--) {\n const item = entry[i];\n if (!includeMacro && item.isInMacroBranch) continue;\n if (item.equal(symbol)) out.push(item);\n }\n }\n\n return out;\n }\n}\n","import { IBaseSymbol } from \"./IBaseSymbol\";\nimport { SymbolTable } from \"./SymbolTable\";\n\nexport class SymbolTableStack<S extends IBaseSymbol, T extends SymbolTable<S>> {\n stack: T[] = [];\n\n /**\n * @internal\n */\n _macroLevel = 0;\n\n get scope(): T {\n return this.stack[this.stack.length - 1];\n }\n\n get isInMacroBranch(): boolean {\n return this._macroLevel > 0;\n }\n\n pushScope(scope: T): void {\n this.stack.push(scope);\n }\n\n clear(): void {\n this.stack.length = 0;\n }\n\n popScope(): T | undefined {\n return this.stack.pop();\n }\n\n insert(symbol: S): void {\n this.scope.insert(symbol, this.isInMacroBranch);\n }\n\n lookup(symbol: S, includeMacro = false): S | undefined {\n for (let i = this.stack.length - 1; i >= 0; i--) {\n const symbolTable = this.stack[i];\n const result = symbolTable.getSymbol(symbol, includeMacro);\n if (result) return result;\n }\n return undefined;\n }\n\n lookupAll(symbol: S, includeMacro = false, out: S[]): S[] {\n out.length = 0;\n for (let i = this.stack.length - 1; i >= 0; i--) {\n const symbolTable = this.stack[i];\n symbolTable._getSymbols(symbol, includeMacro, out);\n }\n return out;\n }\n}\n","import { GalaceanDataType } from \"../../common\";\nimport { ASTNode } from \"../AST\";\n\nexport class SymbolDataType {\n constructor(\n public type: GalaceanDataType,\n public typeLexeme: string,\n public arraySpecifier?: ASTNode.ArraySpecifier\n ) {}\n}\n","import { 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 { BaseToken } from \"../common/BaseToken\";\nimport { EShaderStage } from \"../common/enums/ShaderStage\";\nimport { SymbolTable } from \"../common/SymbolTable\";\nimport { GSErrorName } from \"../GSError\";\nimport { ASTNode, TreeNode } from \"../parser/AST\";\nimport { ESymbolType, SymbolInfo } from \"../parser/symbolTable\";\nimport { StructProp } from \"../parser/types\";\nimport { ShaderLab } from \"../ShaderLab\";\nimport { ShaderLabUtils } from \"../ShaderLabUtils\";\n\n/** @internal */\nexport class VisitorContext {\n private static _lookupSymbol: SymbolInfo = new SymbolInfo(\"\", null);\n private static _singleton: VisitorContext;\n static get context() {\n return this._singleton;\n }\n\n static reset() {\n if (!this._singleton) {\n this._singleton = new VisitorContext();\n }\n this._singleton.reset();\n }\n\n attributeStructs: ASTNode.StructSpecifier[] = [];\n attributeList: StructProp[] = [];\n varyingStructs: ASTNode.StructSpecifier[] = [];\n varyingList: StructProp[] = [];\n mrtStructs: ASTNode.StructSpecifier[] = [];\n mrtList: StructProp[] = [];\n\n stage: EShaderStage;\n stageEntry: string;\n\n _referencedAttributeList: Record<string, StructProp[]>;\n _referencedVaryingList: Record<string, StructProp[]>;\n _referencedMRTList: Record<string, StructProp[]>;\n _referencedGlobals: Record<string, SymbolInfo[]>;\n _referencedGlobalMacroASTs: TreeNode[] = [];\n\n _passSymbolTable: SymbolTable<SymbolInfo>;\n\n reset(resetAll = true) {\n if (resetAll) {\n this.attributeStructs.length = 0;\n this.attributeList.length = 0;\n this.varyingStructs.length = 0;\n this.varyingList.length = 0;\n this.mrtStructs.length = 0;\n this.mrtList.length = 0;\n }\n\n this._referencedAttributeList = Object.create(null);\n this._referencedVaryingList = Object.create(null);\n this._referencedMRTList = Object.create(null);\n this._referencedGlobals = Object.create(null);\n this._referencedGlobalMacroASTs.length = 0;\n }\n\n isAttributeStruct(type: string) {\n return this.attributeStructs.findIndex((item) => item.ident!.lexeme === type) !== -1;\n }\n\n isVaryingStruct(type: string) {\n return this.varyingStructs.findIndex((item) => item.ident!.lexeme === type) !== -1;\n }\n\n isMRTStruct(type: string) {\n return this.mrtStructs.findIndex((item) => item.ident!.lexeme === type) !== -1;\n }\n\n referenceAttribute(ident: BaseToken): Error | void {\n const lexeme = ident.lexeme;\n if (this._referencedAttributeList[lexeme]) return;\n\n const props = this.attributeList.filter((item) => item.ident.lexeme === lexeme);\n if (!props.length) {\n return ShaderLabUtils.createGSError(\n `referenced attribute not found: ${lexeme}`,\n GSErrorName.CompilationError,\n ShaderLab._processingPassText,\n ident.location\n );\n }\n this._referencedAttributeList[lexeme] = props;\n }\n\n referenceVarying(ident: BaseToken): Error | void {\n const lexeme = ident.lexeme;\n if (this._referencedVaryingList[lexeme]) return;\n\n const props = this.varyingList.filter((item) => item.ident.lexeme === lexeme);\n if (!props.length) {\n return ShaderLabUtils.createGSError(\n `referenced varying not found: ${lexeme}`,\n GSErrorName.CompilationError,\n ShaderLab._processingPassText,\n ident.location\n );\n }\n this._referencedVaryingList[lexeme] = props;\n }\n\n referenceMRTProp(ident: BaseToken): Error | void {\n const lexeme = ident.lexeme;\n if (this._referencedMRTList[lexeme]) return;\n\n const props = this.mrtList.filter((item) => item.ident.lexeme === lexeme);\n if (!props.length) {\n return ShaderLabUtils.createGSError(\n `referenced mrt not found: ${lexeme}`,\n GSErrorName.CompilationError,\n ShaderLab._processingPassText,\n ident.location\n );\n }\n this._referencedMRTList[lexeme] = props;\n }\n\n referenceGlobal(ident: string, type: ESymbolType): void {\n if (this._referencedGlobals[ident]) return;\n\n this._referencedGlobals[ident] = [];\n\n const lookupSymbol = VisitorContext._lookupSymbol;\n lookupSymbol.set(ident, type);\n this._passSymbolTable.getSymbols(lookupSymbol, true, this._referencedGlobals[ident]);\n }\n}\n","import { IPoolElement } from \"@galacean/engine\";\n\nexport class TempArray<T> implements IPoolElement {\n array: Array<T> = new Array();\n\n dispose(): void {\n this.array.length = 0;\n }\n}\n","import { ShaderPosition, ShaderRange } from \"../common\";\nimport { BaseToken } from \"../common/BaseToken\";\nimport { GSErrorName } from \"../GSError\";\nimport { ASTNode, TreeNode } from \"../parser/AST\";\nimport { NoneTerminal } from \"../parser/GrammarSymbol\";\nimport { ESymbolType, FnSymbol } from \"../parser/symbolTable\";\nimport { NodeChild, StructProp } from \"../parser/types\";\nimport { ParserUtils } from \"../ParserUtils\";\nimport { ShaderLab } from \"../ShaderLab\";\nimport { VisitorContext } from \"./VisitorContext\";\n// #if _VERBOSE\nimport { GSError } from \"../GSError\";\n// #endif\nimport { Logger, ReturnableObjectPool } from \"@galacean/engine\";\nimport { Keyword } from \"../common/enums/Keyword\";\nimport { TempArray } from \"../TempArray\";\nimport { ICodeSegment } from \"./types\";\n\n/**\n * @internal\n * The code generator\n */\nexport abstract class CodeGenVisitor {\n // #if _VERBOSE\n readonly errors: Error[] = [];\n // #endif\n\n abstract getAttributeProp(prop: StructProp): string;\n abstract getVaryingProp(prop: StructProp): string;\n abstract getMRTProp(prop: StructProp): string;\n\n protected static _tmpArrayPool = new ReturnableObjectPool(TempArray<string>, 10);\n\n defaultCodeGen(children: NodeChild[]) {\n const pool = CodeGenVisitor._tmpArrayPool;\n let ret = pool.get();\n ret.dispose();\n for (const child of children) {\n if (child instanceof BaseToken) {\n ret.array.push(child.lexeme);\n } else {\n ret.array.push(child.codeGen(this));\n }\n }\n pool.return(ret);\n return ret.array.join(\" \");\n }\n\n visitPostfixExpression(node: ASTNode.PostfixExpression): string {\n const children = node.children;\n const derivationLength = children.length;\n const context = VisitorContext.context;\n\n if (derivationLength === 3) {\n const postExpr = children[0] as ASTNode.PostfixExpression;\n const prop = children[2];\n\n if (prop instanceof BaseToken) {\n if (context.isAttributeStruct(<string>postExpr.type)) {\n const error = context.referenceAttribute(prop);\n // #if _VERBOSE\n if (error) {\n this.errors.push(<GSError>error);\n }\n // #endif\n return prop.lexeme;\n } else if (context.isVaryingStruct(<string>postExpr.type)) {\n const error = context.referenceVarying(prop);\n // #if _VERBOSE\n if (error) {\n this.errors.push(<GSError>error);\n }\n // #endif\n return prop.lexeme;\n } else if (context.isMRTStruct(<string>postExpr.type)) {\n const error = context.referenceMRTProp(prop);\n // #if _VERBOSE\n if (error) {\n this.errors.push(<GSError>error);\n }\n // #endif\n return prop.lexeme;\n }\n\n return `${postExpr.codeGen(this)}.${prop.lexeme}`;\n } else {\n return `${postExpr.codeGen(this)}.${prop.codeGen(this)}`;\n }\n } else if (derivationLength === 4) {\n const identNode = children[0] as ASTNode.PostfixExpression;\n const indexNode = children[2] as ASTNode.Expression;\n const identLexeme = identNode.codeGen(this);\n const indexLexeme = indexNode.codeGen(this);\n if (identLexeme === \"gl_FragData\") {\n this._reportError(identNode.location, \"Please use MRT struct instead of gl_FragData.\");\n }\n return `${identLexeme}[${indexLexeme}]`;\n }\n\n return this.defaultCodeGen(node.children);\n }\n\n visitVariableIdentifier(node: ASTNode.VariableIdentifier): string {\n for (let name of node.referenceGlobalSymbolNames) {\n VisitorContext.context.referenceGlobal(name, ESymbolType.Any);\n }\n\n return node.getLexeme(this);\n }\n\n visitFunctionCall(node: ASTNode.FunctionCall): string {\n const call = node.children[0] as ASTNode.FunctionCallGeneric;\n if (call.fnSymbol instanceof FnSymbol) {\n VisitorContext.context.referenceGlobal(call.fnSymbol.ident, ESymbolType.FN);\n\n const paramList = call.children[2];\n if (paramList instanceof ASTNode.FunctionCallParameterList) {\n const astNodes = paramList.paramNodes;\n const paramInfoList = call.fnSymbol.astNode.protoType.parameterList;\n\n const params = astNodes.filter((_, i) => {\n const typeInfo = paramInfoList?.[i]?.typeInfo;\n return (\n !typeInfo ||\n (!VisitorContext.context.isAttributeStruct(typeInfo.typeLexeme) &&\n !VisitorContext.context.isVaryingStruct(typeInfo.typeLexeme) &&\n !VisitorContext.context.isMRTStruct(typeInfo.typeLexeme))\n );\n });\n\n let paramsCode = \"\";\n\n for (let i = 0, length = params.length; i < length; i++) {\n const astNode = params[i];\n const code = astNode.codeGen(this);\n if (astNode instanceof ASTNode.MacroCallArgBlock || i === 0) {\n paramsCode += code;\n } else {\n paramsCode += `, ${code}`;\n }\n }\n\n return `${call.fnSymbol.ident}(${paramsCode})`;\n }\n }\n\n return this.defaultCodeGen(node.children);\n }\n\n visitMacroCallFunction(node: ASTNode.MacroCallFunction): string {\n const children = node.children;\n const paramList = children[2];\n if (paramList instanceof ASTNode.FunctionCallParameterList) {\n const astNodes = paramList.paramNodes;\n\n const params = astNodes.filter((node) => {\n if (node instanceof ASTNode.AssignmentExpression) {\n const variableParam = ParserUtils.unwrapNodeByType<ASTNode.VariableIdentifier>(\n node,\n NoneTerminal.variable_identifier\n );\n if (\n variableParam &&\n typeof variableParam.typeInfo === \"string\" &&\n (VisitorContext.context.isAttributeStruct(variableParam.typeInfo) ||\n VisitorContext.context.isVaryingStruct(variableParam.typeInfo) ||\n VisitorContext.context.isMRTStruct(variableParam.typeInfo))\n ) {\n return false;\n }\n }\n\n return true;\n });\n\n let paramsCode = \"\";\n for (let i = 0, length = params.length; i < length; i++) {\n const node = params[i];\n const code = node.codeGen(this);\n\n if (node instanceof ASTNode.MacroCallArgBlock || i === 0) {\n paramsCode += code;\n } else {\n paramsCode += `, ${code}`;\n }\n }\n\n return `${node.macroName}(${paramsCode})`;\n } else {\n return this.defaultCodeGen(node.children);\n }\n }\n\n visitStatementList(node: ASTNode.StatementList): string {\n const children = node.children as TreeNode[];\n if (children.length === 1) {\n return children[0].codeGen(this);\n } else {\n return `${children[0].codeGen(this)}\\n${children[1].codeGen(this)}`;\n }\n }\n\n visitSingleDeclaration(node: ASTNode.SingleDeclaration): string {\n const type = node.typeSpecifier.type;\n if (typeof type === \"string\") {\n VisitorContext.context.referenceGlobal(type, ESymbolType.STRUCT);\n }\n return this.defaultCodeGen(node.children);\n }\n\n visitGlobalVariableDeclaration(node: ASTNode.VariableDeclaration): string {\n const children = node.children;\n const fullType = children[0];\n if (fullType instanceof ASTNode.FullySpecifiedType && fullType.typeSpecifier.isCustom) {\n VisitorContext.context.referenceGlobal(<string>fullType.type, ESymbolType.STRUCT);\n }\n return `uniform ${this.defaultCodeGen(children)}`;\n }\n\n visitDeclaration(node: ASTNode.Declaration): string {\n const { context } = VisitorContext;\n const children = node.children;\n const child = children[0];\n\n if (child instanceof ASTNode.InitDeclaratorList) {\n const typeLexeme = child.typeInfo.typeLexeme;\n if (context.isVaryingStruct(typeLexeme) || context.isMRTStruct(typeLexeme)) return \"\";\n }\n return this.defaultCodeGen(children);\n }\n\n visitFunctionParameterList(node: ASTNode.FunctionParameterList): string {\n const params = node.parameterInfoList.filter(\n (item) =>\n !item.typeInfo ||\n (!VisitorContext.context.isAttributeStruct(item.typeInfo.typeLexeme) &&\n !VisitorContext.context.isVaryingStruct(item.typeInfo.typeLexeme) &&\n !VisitorContext.context.isMRTStruct(item.typeInfo.typeLexeme))\n );\n\n let out = \"\";\n for (let i = 0, length = params.length; i < length; i++) {\n const item = params[i];\n const astNode = item.astNode;\n const code = astNode.codeGen(this);\n if (astNode instanceof ASTNode.MacroParamBlock || i === 0) {\n out += code;\n } else {\n out += `, ${code}`;\n }\n }\n\n return out;\n }\n\n visitFunctionHeader(node: ASTNode.FunctionHeader): string {\n const returnType = node.returnType.typeSpecifier.lexeme;\n if (VisitorContext.context.isVaryingStruct(returnType)) {\n return `void ${node.ident.lexeme}(`;\n }\n return this.defaultCodeGen(node.children);\n }\n\n visitJumpStatement(node: ASTNode.JumpStatement): string {\n const children = node.children;\n const cmd = children[0] as BaseToken;\n if (cmd.type === Keyword.RETURN) {\n const expr = children[1];\n if (expr instanceof ASTNode.Expression) {\n const returnVar = ParserUtils.unwrapNodeByType<ASTNode.VariableIdentifier>(\n expr,\n NoneTerminal.variable_identifier\n );\n if (VisitorContext.context.isVaryingStruct(<string>returnVar?.typeInfo)) {\n return \"\";\n }\n const returnFnCall = ParserUtils.unwrapNodeByType<ASTNode.FunctionCall>(expr, NoneTerminal.function_call);\n if (VisitorContext.context.isVaryingStruct(<string>returnFnCall?.type)) {\n return `${expr.codeGen(this)};`;\n }\n }\n }\n return this.defaultCodeGen(children);\n }\n\n visitFunctionIdentifier(node: ASTNode.FunctionIdentifier): string {\n return this.defaultCodeGen(node.children);\n }\n\n visitStructSpecifier(node: ASTNode.StructSpecifier): string {\n const context = VisitorContext.context;\n const { varyingStructs, attributeStructs, mrtStructs } = context;\n const isVaryingStruct = varyingStructs.indexOf(node) !== -1;\n const isAttributeStruct = attributeStructs.indexOf(node) !== -1;\n const isMRTStruct = mrtStructs.indexOf(node) !== -1;\n\n if (isVaryingStruct && isAttributeStruct) {\n this._reportError(node.location, \"cannot use same struct as Varying and Attribute\");\n }\n\n if (isVaryingStruct && isMRTStruct) {\n this._reportError(node.location, \"cannot use same struct as Varying and MRT\");\n }\n\n if (isAttributeStruct && isMRTStruct) {\n this._reportError(node.location, \"cannot use same struct as Attribute and MRT\");\n }\n\n if (isVaryingStruct || isAttributeStruct || isMRTStruct) {\n let result: ICodeSegment[] = [];\n\n result.push(\n ...node.macroExpressions.map((item) => ({\n text: item instanceof BaseToken ? item.lexeme : item.codeGen(this),\n index: item.location.start.index\n }))\n );\n\n for (const prop of node.propList) {\n const name = prop.ident.lexeme;\n if (isVaryingStruct && context._referencedVaryingList[name]?.indexOf(prop) >= 0) {\n result.push({\n text: `${this.getVaryingProp(prop)}\\n`,\n index: prop.ident.location.start.index\n });\n } else if (isAttributeStruct && context._referencedAttributeList[name]?.indexOf(prop) >= 0) {\n result.push({\n text: `${this.getAttributeProp(prop)}\\n`,\n index: prop.ident.location.start.index\n });\n } else if (isMRTStruct && context._referencedMRTList[name]?.indexOf(prop) >= 0) {\n result.push({\n text: `${this.getMRTProp(prop)}\\n`,\n index: prop.ident.location.start.index\n });\n }\n }\n\n const text = result\n .sort((a, b) => a.index - b.index)\n .map((item) => item.text)\n .join(\"\");\n\n return text;\n } else {\n return this.defaultCodeGen(node.children);\n }\n }\n\n visitFunctionDefinition(fnNode: ASTNode.FunctionDefinition): string {\n const fnName = fnNode.protoType.ident.lexeme;\n const context = VisitorContext.context;\n\n if (fnName == context.stageEntry) {\n const statements = fnNode.statements.codeGen(this);\n return `void main() ${statements}`;\n } else {\n return this.defaultCodeGen(fnNode.children);\n }\n }\n\n protected _reportError(loc: ShaderRange | ShaderPosition, message: string): void {\n // #if _VERBOSE\n this.errors.push(new GSError(GSErrorName.CompilationError, message, loc, ShaderLab._processingPassText));\n // #else\n Logger.error(message);\n // #endif\n }\n}\n","import { IShaderInfo } from \"@galacean/engine-design\";\nimport { BaseToken } from \"../common/BaseToken\";\nimport { EShaderStage } from \"../common/enums/ShaderStage\";\nimport { Keyword } from \"../common/enums/Keyword\";\nimport { ASTNode, TreeNode } from \"../parser/AST\";\nimport { ShaderData } from \"../parser/ShaderInfo\";\nimport { ESymbolType, FnSymbol, StructSymbol, SymbolInfo } from \"../parser/symbolTable\";\nimport { CodeGenVisitor } from \"./CodeGenVisitor\";\nimport { ICodeSegment } from \"./types\";\nimport { VisitorContext } from \"./VisitorContext\";\n\n/**\n * @internal\n */\nexport abstract class GLESVisitor extends CodeGenVisitor {\n private _globalCodeArray: ICodeSegment[] = [];\n private static _lookupSymbol: SymbolInfo = new SymbolInfo(\"\", null);\n private static _serializedGlobalKey = new Set();\n\n reset(): void {\n const { _globalCodeArray: globalCodeArray } = this;\n globalCodeArray.length = 0;\n GLESVisitor._serializedGlobalKey.clear();\n }\n\n getOtherGlobal(data: ShaderData, out: ICodeSegment[]): void {\n for (const precision of data.globalPrecisions) {\n out.push({ text: precision.codeGen(this), index: precision.location.start.index });\n }\n }\n\n visitShaderProgram(node: ASTNode.GLShaderProgram, vertexEntry: string, fragmentEntry: string): IShaderInfo {\n // #if _VERBOSE\n this.errors.length = 0;\n // #endif\n VisitorContext.reset();\n this.reset();\n\n const shaderData = node.shaderData;\n VisitorContext.context._passSymbolTable = shaderData.symbolTable;\n\n const outerGlobalMacroDeclarations = shaderData.getOuterGlobalMacroDeclarations();\n\n return {\n vertex: this._vertexMain(vertexEntry, shaderData, outerGlobalMacroDeclarations),\n fragment: this._fragmentMain(fragmentEntry, shaderData, outerGlobalMacroDeclarations)\n };\n }\n\n private _vertexMain(\n entry: string,\n data: ShaderData,\n outerGlobalMacroDeclarations: ASTNode.GlobalDeclaration[]\n ): string {\n const context = VisitorContext.context;\n context.stage = EShaderStage.VERTEX;\n context.stageEntry = entry;\n\n const lookupSymbol = GLESVisitor._lookupSymbol;\n const symbolTable = data.symbolTable;\n lookupSymbol.set(entry, ESymbolType.FN);\n const fnSymbols = <FnSymbol[]>symbolTable.getSymbols(lookupSymbol, true, []);\n if (!fnSymbols.length) throw `no entry function found: ${entry}`;\n\n const { attributeStructs, attributeList, varyingStructs, varyingList } = context;\n fnSymbols.forEach((fnSymbol) => {\n const fnNode = fnSymbol.astNode;\n const returnType = fnNode.protoType.returnType;\n\n if (typeof returnType.type === \"string\") {\n lookupSymbol.set(returnType.type, ESymbolType.STRUCT);\n const varyingSymbols = <StructSymbol[]>symbolTable.getSymbols(lookupSymbol, true, []);\n if (!varyingSymbols.length) {\n this._reportError(returnType.location, `invalid varying struct: \"${returnType.type}\".`);\n } else {\n for (let i = 0; i < varyingSymbols.length; i++) {\n const varyingSymbol = varyingSymbols[i];\n const astNode = varyingSymbol.astNode;\n varyingStructs.push(astNode);\n for (const prop of astNode.propList) {\n varyingList.push(prop);\n }\n }\n }\n } else if (returnType.type !== Keyword.VOID) {\n this._reportError(returnType.location, \"vertex main entry can only return struct or void.\");\n }\n\n const paramList = fnNode.protoType.parameterList;\n const attributeParam = paramList?.[0];\n if (attributeParam) {\n const attributeType = attributeParam.typeInfo.type;\n if (typeof attributeType === \"string\") {\n lookupSymbol.set(attributeType, ESymbolType.STRUCT);\n const attributeSymbols = <StructSymbol[]>symbolTable.getSymbols(lookupSymbol, true, []);\n if (!attributeSymbols.length) {\n this._reportError(attributeParam.astNode.location, `invalid attribute struct: \"${attributeType}\".`);\n } else {\n for (let i = 0; i < attributeSymbols.length; i++) {\n const attributeSymbol = attributeSymbols[i];\n const astNode = attributeSymbol.astNode;\n attributeStructs.push(astNode);\n for (const prop of astNode.propList) {\n attributeList.push(prop);\n }\n }\n }\n }\n }\n });\n\n const globalCodeArray = this._globalCodeArray;\n VisitorContext.context.referenceGlobal(entry, ESymbolType.FN);\n\n this._getGlobalSymbol(globalCodeArray);\n this._getCustomStruct(context.attributeStructs, globalCodeArray);\n this._getCustomStruct(context.varyingStructs, globalCodeArray);\n this._getGlobalMacroDeclarations(outerGlobalMacroDeclarations, globalCodeArray);\n this.getOtherGlobal(data, globalCodeArray);\n\n const globalCode = globalCodeArray\n .sort((a, b) => a.index - b.index)\n .map((item) => item.text)\n .join(\"\\n\");\n\n VisitorContext.context.reset(false);\n this.reset();\n\n return globalCode;\n }\n\n private _fragmentMain(\n entry: string,\n data: ShaderData,\n outerGlobalMacroStatements: ASTNode.GlobalDeclaration[]\n ): string {\n const context = VisitorContext.context;\n context.stage = EShaderStage.FRAGMENT;\n context.stageEntry = entry;\n\n const lookupSymbol = GLESVisitor._lookupSymbol;\n const { symbolTable } = data;\n lookupSymbol.set(entry, ESymbolType.FN);\n const fnSymbols = <FnSymbol[]>symbolTable.getSymbols(lookupSymbol, true, []);\n if (!fnSymbols?.length) throw `no entry function found: ${entry}`;\n\n fnSymbols.forEach((fnSymbol) => {\n const fnNode = fnSymbol.astNode;\n const { returnStatement } = fnNode;\n\n if (returnStatement) {\n returnStatement.isFragReturnStatement = true;\n }\n\n const { type: returnDataType, location: returnLocation } = fnNode.protoType.returnType;\n if (typeof returnDataType === \"string\") {\n lookupSymbol.set(returnDataType, ESymbolType.STRUCT);\n const mrtSymbols = <StructSymbol[]>symbolTable.getSymbols(lookupSymbol, true, []);\n if (!mrtSymbols.length) {\n this._reportError(returnLocation, `invalid mrt struct: ${returnDataType}`);\n } else {\n for (let i = 0; i < mrtSymbols.length; i++) {\n const mrtSymbol = mrtSymbols[i];\n const astNode = mrtSymbol.astNode;\n context.mrtStructs.push(astNode);\n for (const prop of astNode.propList) {\n context.mrtList.push(prop);\n }\n }\n }\n } else if (returnDataType !== Keyword.VOID && returnDataType !== Keyword.VEC4) {\n this._reportError(returnLocation, \"fragment main entry can only return struct or vec4.\");\n }\n });\n\n const globalCodeArray = this._globalCodeArray;\n VisitorContext.context.referenceGlobal(entry, ESymbolType.FN);\n\n this._getGlobalSymbol(globalCodeArray);\n this._getCustomStruct(context.varyingStructs, globalCodeArray);\n this._getCustomStruct(context.mrtStructs, globalCodeArray);\n this._getGlobalMacroDeclarations(outerGlobalMacroStatements, globalCodeArray);\n this.getOtherGlobal(data, globalCodeArray);\n\n const globalCode = globalCodeArray\n .sort((a, b) => a.index - b.index)\n .map((item) => item.text)\n .join(\"\\n\");\n\n context.reset();\n this.reset();\n\n return globalCode;\n }\n\n private _getGlobalSymbol(out: ICodeSegment[]): void {\n const { _referencedGlobals } = VisitorContext.context;\n\n const lastLength = Object.keys(_referencedGlobals).length;\n if (lastLength === 0) return;\n\n for (const ident in _referencedGlobals) {\n if (GLESVisitor._serializedGlobalKey.has(ident)) continue;\n GLESVisitor._serializedGlobalKey.add(ident);\n\n const symbols = _referencedGlobals[ident];\n for (let i = 0; i < symbols.length; i++) {\n const sm = symbols[i];\n const text = sm.astNode.codeGen(this) + (sm.type === ESymbolType.VAR ? \";\" : \"\");\n if (!sm.isInMacroBranch) {\n out.push({\n text,\n index: sm.astNode.location.start.index\n });\n }\n }\n }\n\n if (Object.keys(_referencedGlobals).length !== lastLength) {\n this._getGlobalSymbol(out);\n }\n }\n\n private _getCustomStruct(structNodes: ASTNode.StructSpecifier[], out: ICodeSegment[]): void {\n for (const node of structNodes) {\n const text = node.codeGen(this);\n\n if (!node.isInMacroBranch) {\n out.push({ text, index: node.location.start.index });\n }\n }\n }\n\n private _getGlobalMacroDeclarations(macros: ASTNode.GlobalDeclaration[], out: ICodeSegment[]): void {\n const context = VisitorContext.context;\n const referencedGlobals = context._referencedGlobals;\n const referencedGlobalMacroASTs = context._referencedGlobalMacroASTs;\n referencedGlobalMacroASTs.length = 0;\n\n for (const symbols of Object.values(referencedGlobals)) {\n for (const symbol of symbols) {\n if (symbol.isInMacroBranch) {\n referencedGlobalMacroASTs.push(symbol.astNode);\n }\n }\n }\n\n for (const macro of macros) {\n let text: string;\n const child = macro.children[0];\n\n if (child instanceof ASTNode.GlobalMacroIfStatement) {\n let result: ICodeSegment[] = [];\n result.push(\n ...macro.macroExpressions.map((item) => ({\n text: item instanceof BaseToken ? item.lexeme : item.codeGen(this),\n index: item.location.start.index\n }))\n );\n\n this._visitGlobalMacroIfStatement(child, result);\n\n text = result\n .sort((a, b) => a.index - b.index)\n .map((item) => item.text)\n .join(\"\\n\");\n } else {\n text = macro.codeGen(this);\n }\n\n out.push({\n text,\n index: macro.location.start.index\n });\n }\n }\n\n private _visitGlobalMacroIfStatement(node: TreeNode, out: ICodeSegment[]): void {\n const children = node.children;\n for (let i = 0; i < children.length; i++) {\n const child = children[i];\n if (child instanceof ASTNode.PrecisionSpecifier) {\n out.push({\n text: child.codeGen(this),\n index: child.location.start.index\n });\n } else if (child instanceof ASTNode.FunctionDefinition) {\n if (VisitorContext.context._referencedGlobalMacroASTs.indexOf(child) !== -1) {\n out.push({\n text: child.getCache(), // code has generated in `_getGlobalSymbol`\n index: child.location.start.index\n });\n }\n } else if (child instanceof ASTNode.StructSpecifier) {\n const context = VisitorContext.context;\n const stage = context.stage;\n if (\n VisitorContext.context._referencedGlobalMacroASTs.indexOf(child) !== -1 ||\n (stage === EShaderStage.VERTEX\n ? context.isAttributeStruct(child.ident?.lexeme) || context.isVaryingStruct(child.ident?.lexeme)\n : context.isVaryingStruct(child.ident?.lexeme) || context.isMRTStruct(child.ident?.lexeme))\n ) {\n out.push({\n text: child.getCache(), // code has generated in `_getGlobalSymbol` or `_getCustomStruct`\n index: child.location.start.index\n });\n }\n } else if (child instanceof ASTNode.VariableDeclarationList) {\n const variableDeclarations = child.variableDeclarations;\n for (let i = 0; i < variableDeclarations.length; i++) {\n const variableDeclaration = variableDeclarations[i];\n if (VisitorContext.context._referencedGlobalMacroASTs.indexOf(variableDeclaration) !== -1) {\n out.push({\n text: variableDeclaration.getCache() + \";\", // code has generated in `_getGlobalSymbol`\n index: variableDeclaration.location.start.index\n });\n }\n }\n }\n\n if (child instanceof TreeNode) {\n this._visitGlobalMacroIfStatement(child, out);\n }\n }\n }\n}\n","import { BaseToken } from \"../common/BaseToken\";\nimport { ASTNode } from \"../parser/AST\";\nimport { StructProp } from \"../parser/types\";\nimport { GLESVisitor } from \"./GLESVisitor\";\nimport { VisitorContext } from \"./VisitorContext\";\n\nexport class GLES100Visitor extends GLESVisitor {\n private static _singleton: GLES100Visitor;\n static getVisitor(): GLES100Visitor {\n if (!this._singleton) {\n this._singleton = new GLES100Visitor();\n }\n return this._singleton;\n }\n\n override getAttributeProp(prop: StructProp): string {\n return `attribute ${prop.typeInfo.typeLexeme} ${prop.ident.lexeme};`;\n }\n\n override getVaryingProp(prop: StructProp): string {\n return `varying ${prop.typeInfo.typeLexeme} ${prop.ident.lexeme};`;\n }\n\n override getMRTProp(): string {\n return null;\n }\n\n override visitPostfixExpression(node: ASTNode.PostfixExpression): string {\n const { children } = node;\n const postExpr = children[0];\n const { context } = VisitorContext;\n if (postExpr instanceof ASTNode.PostfixExpression && context.isMRTStruct(<string>postExpr.type)) {\n const propReferenced = children[2] as BaseToken;\n const prop = context.mrtList.find((item) => item.ident.lexeme === propReferenced.lexeme);\n if (!prop) {\n this._reportError(propReferenced.location, `not found mrt property: ${propReferenced.lexeme}`);\n return \"\";\n }\n return `gl_FragData[${prop.mrtIndex!}]`;\n }\n return super.visitPostfixExpression(node);\n }\n\n override visitJumpStatement(node: ASTNode.JumpStatement): string {\n if (node.isFragReturnStatement) {\n if (VisitorContext.context.mrtStructs.length) {\n return \"\";\n }\n const expression = node.children[1] as ASTNode.Expression;\n return `gl_FragColor = ${expression.codeGen(this)}`;\n }\n return super.visitJumpStatement(node);\n }\n}\n","import { EShaderStage } from \"../common/enums/ShaderStage\";\nimport { ASTNode } from \"../parser/AST\";\nimport { ShaderData } from \"../parser/ShaderInfo\";\nimport { StructProp } from \"../parser/types\";\nimport { GLESVisitor } from \"./GLESVisitor\";\nimport { ICodeSegment } from \"./types\";\nimport { VisitorContext } from \"./VisitorContext\";\n\nconst V3_GL_FragColor = \"GS_glFragColor\";\n\nexport class GLES300Visitor extends GLESVisitor {\n private static _singleton: GLES300Visitor;\n static getVisitor(): GLES300Visitor {\n if (!this._singleton) {\n this._singleton = new GLES300Visitor();\n }\n return this._singleton;\n }\n\n private _otherCodeArray: ICodeSegment[] = [];\n private _fragColorVariableRegistered = false;\n\n override reset(): void {\n super.reset();\n\n this._otherCodeArray.length = 0;\n this._fragColorVariableRegistered = false;\n }\n\n override getOtherGlobal(data: ShaderData, out: ICodeSegment[]): void {\n super.getOtherGlobal(data, out);\n\n for (let i = 0, n = this._otherCodeArray.length; i < n; i++) {\n out.push(this._otherCodeArray[i]);\n }\n }\n\n override getAttributeProp(prop: StructProp): string {\n return `in ${prop.typeInfo.typeLexeme} ${prop.ident.lexeme};`;\n }\n\n override getVaryingProp(prop: StructProp): string {\n const qualifier = VisitorContext.context.stage === EShaderStage.FRAGMENT ? \"in\" : \"out\";\n return `${qualifier} ${prop.typeInfo.typeLexeme} ${prop.ident.lexeme};`;\n }\n\n override getMRTProp(prop: StructProp): string {\n return `layout(location = ${prop.mrtIndex}) out vec4 ${prop.ident.lexeme};`;\n }\n\n override visitFunctionIdentifier(node: ASTNode.FunctionIdentifier): string {\n const children = node.children;\n const typeSpecifier = children[0] as ASTNode.TypeSpecifier;\n if (typeSpecifier.children.length !== 1) {\n return this.defaultCodeGen(children);\n }\n let ident = node.lexeme;\n switch (node.ident) {\n case \"texture2D\":\n case \"textureCube\":\n ident = \"texture\";\n break;\n case \"texture2DProj\":\n ident = \"textureProj\";\n break;\n case \"texture2DLodEXT\":\n case \"textureCubeLodEXT\":\n ident = \"textureLod\";\n break;\n case \"texture2DGradEXT\":\n case \"textureCubeGradEXT\":\n ident = \"textureGrad\";\n break;\n case \"texture2DProjLodEXT\":\n ident = \"textureProjLod\";\n break;\n case \"texture2DProjGradEXT\":\n ident = \"textureProjGrad\";\n break;\n case \"gl_FragDepthEXT\":\n ident = \"gl_FragDepth\";\n break;\n }\n return ident;\n }\n\n override visitVariableIdentifier(node: ASTNode.VariableIdentifier): string {\n const { context } = VisitorContext;\n if (context.stage === EShaderStage.FRAGMENT && node.getLexeme(this) === \"gl_FragColor\") {\n if (context.mrtStructs.length) {\n this._reportError(node.location, \"gl_FragColor cannot be used with MRT (Multiple Render Targets).\");\n return;\n }\n this._registerFragColorVariable();\n return V3_GL_FragColor;\n }\n return super.visitVariableIdentifier(node);\n }\n\n override visitJumpStatement(node: ASTNode.JumpStatement): string {\n if (node.isFragReturnStatement) {\n if (VisitorContext.context.mrtStructs.length) {\n return \"\";\n }\n this._registerFragColorVariable();\n\n const expression = node.children[1] as ASTNode.Expression;\n return `${V3_GL_FragColor} = ${expression.codeGen(this)};`;\n }\n return super.visitJumpStatement(node);\n }\n\n private _registerFragColorVariable() {\n if (this._fragColorVariableRegistered) return;\n this._otherCodeArray.push({\n text: `out vec4 ${V3_GL_FragColor};`,\n index: 0\n });\n this._fragColorVariableRegistered = true;\n }\n}\n","import { Logger } from \"@galacean/engine\";\nimport { ShaderPosition, ShaderRange } from \".\";\nimport { GSErrorName } from \"../GSError\";\nimport { ShaderLab } from \"../ShaderLab\";\nimport { ShaderLabUtils } from \"../ShaderLabUtils\";\nimport { BaseToken } from \"./BaseToken\";\n\nexport type OnToken = (token: BaseToken, scanner: BaseLexer) => void;\n\n/**\n * @internal\n */\nexport abstract class BaseLexer {\n static isDigit(charCode: number): boolean {\n return charCode >= 48 && charCode <= 57; // 0-9\n }\n\n // Check if character is alphabetic or underscore (valid word start)\n static isAlpha(charCode: number): boolean {\n return (\n charCode === 95 || // _\n (charCode >= 65 && charCode <= 90) || // A-Z\n (charCode >= 97 && charCode <= 122) // a-z\n );\n }\n\n // Check if character is alphanumeric (alpha + digit)\n static isAlnum(charCode: number): boolean {\n return BaseLexer.isAlpha(charCode) || BaseLexer.isDigit(charCode);\n }\n\n static isPreprocessorStartChar(charCode: number): boolean {\n return charCode === 35; // #\n }\n\n static isWhiteSpaceChar(charCode: number, includeBreak: boolean): boolean {\n // Space || Tab\n if (charCode === 32 || charCode === 9) {\n return true;\n }\n return includeBreak && (charCode === 10 || charCode === 13); // \\n || \\r\n }\n\n protected _currentIndex = 0;\n protected _source: string;\n\n // #if _VERBOSE\n protected _column = 0;\n protected _line = 0;\n // #endif\n\n get currentIndex(): number {\n return this._currentIndex;\n }\n\n get source(): string {\n return this._source;\n }\n\n // #if _VERBOSE\n get line() {\n return this._line;\n }\n\n get column() {\n return this._column;\n }\n // #endif\n\n constructor(source?: string) {\n this._source = source;\n }\n\n setSource(source: string): void {\n this._source = source;\n this._currentIndex = 0;\n // #if _VERBOSE\n this._line = this._column = 0;\n // #endif\n }\n\n getShaderPosition(backOffset = 0): ShaderPosition {\n return ShaderLab.createPosition(\n this._currentIndex - backOffset,\n // #if _VERBOSE\n this._line,\n this._column - backOffset\n // #endif\n );\n }\n\n isEnd(): boolean {\n return this._currentIndex >= this._source.length;\n }\n\n getCurChar(): string {\n return this._source[this._currentIndex];\n }\n\n getCurCharCode(): number {\n return this._source.charCodeAt(this._currentIndex);\n }\n\n advance(count: number): void {\n // #if _VERBOSE\n const source = this._source;\n const startIndex = this._currentIndex;\n for (let i = 0; i < count; i++) {\n if (source[startIndex + i] === \"\\n\") {\n this._line += 1;\n this._column = 0;\n } else {\n this._column += 1;\n }\n }\n // #endif\n this._currentIndex += count;\n }\n\n skipSpace(includeLineBreak: boolean): void {\n while (BaseLexer.isWhiteSpaceChar(this.getCurCharCode(), includeLineBreak)) {\n this.advance(1);\n }\n }\n\n skipCommentsAndSpace(): void {\n const source = this._source;\n const length = source.length;\n let index = this._currentIndex;\n\n while (index < length) {\n // Skip whitespace\n while (index < length && BaseLexer.isWhiteSpaceChar(source.charCodeAt(index), true)) {\n index++;\n }\n\n // Check for comments: 47 is '/'\n if (index + 1 >= length || source.charCodeAt(index) !== 47) break;\n\n const nextChar = source.charCodeAt(index + 1);\n if (nextChar === 47) {\n // Single line comment: 10 is '\\n', 13 is '\\r'\n index += 2;\n while (index < length) {\n const charCode = source.charCodeAt(index);\n if (charCode === 10 || charCode === 13) break;\n index++;\n }\n } else if (nextChar === 42) {\n // Multi-line comment: 42 is '*'\n index += 2;\n while (index + 1 < length && !(source.charCodeAt(index) === 42 && source.charCodeAt(index + 1) === 47)) {\n index++;\n }\n index += 2; // Skip '*/'\n } else {\n break; // Not a comment, stop\n }\n }\n\n this.advance(index - this._currentIndex);\n }\n\n peek(to: number): string {\n const offset = this._currentIndex;\n return this._source.substring(offset, offset + to);\n }\n\n scanLexeme(lexeme: string): void {\n this.skipCommentsAndSpace();\n const length = lexeme.length;\n const peek = this.peek(length);\n if (peek !== lexeme) {\n this.throwError(this.getShaderPosition(0), `Expect lexeme \"${lexeme}\", but got \"${peek}\"`);\n }\n this.advance(length);\n }\n\n scanTwoExpectedLexemes(lexeme1: string, lexeme2: string): string | null {\n this.skipCommentsAndSpace();\n\n // Check first lexeme\n if (this.peek(lexeme1.length) === lexeme1) {\n this.advance(lexeme1.length);\n return lexeme1;\n }\n\n // Check second lexeme\n if (this.peek(lexeme2.length) === lexeme2) {\n this.advance(lexeme2.length);\n return lexeme2;\n }\n\n return null;\n }\n\n throwError(pos: ShaderPosition | ShaderRange, ...msgs: any[]) {\n const error = ShaderLabUtils.createGSError(msgs.join(\" \"), GSErrorName.ScannerError, this._source, pos);\n // #if _VERBOSE\n Logger.error(error!.toString());\n // #endif\n throw error;\n }\n\n scanPairedChar(left: string, right: string, balanced: boolean, skipLeading: boolean): string {\n if (!skipLeading) {\n this.scanLexeme(left);\n }\n\n const start = this._currentIndex;\n const source = this._source;\n const sourceLength = source.length;\n\n let currentIndex = this._currentIndex;\n if (balanced) {\n let level = 1;\n while (currentIndex < sourceLength) {\n const currentChar = source[currentIndex];\n if (currentChar === right && --level === 0) {\n break;\n } else if (currentChar === left) {\n level++;\n }\n currentIndex++;\n }\n } else {\n while (currentIndex < sourceLength) {\n if (source[currentIndex] === right) {\n break;\n }\n currentIndex++;\n }\n }\n\n this.advance(currentIndex + 1 - this._currentIndex);\n\n return source.substring(start, currentIndex);\n }\n\n abstract scanToken(onToken?: OnToken): void;\n}\n","import { ETokenType } from \"../common\";\nimport { BaseLexer } from \"../common/BaseLexer\";\nimport { BaseToken, EOF } from \"../common/BaseToken\";\nimport { Keyword } from \"../common/enums/Keyword\";\nimport { MacroDefineList } from \"../Preprocessor\";\nimport { ShaderLab } from \"../ShaderLab\";\n\n/**\n * The Lexer of ShaderLab Compiler\n */\nexport class Lexer extends BaseLexer {\n private static _lexemeTable = <Record<string, Keyword>>{\n const: Keyword.CONST,\n bool: Keyword.BOOL,\n float: Keyword.FLOAT,\n double: Keyword.DOUBLE,\n int: Keyword.INT,\n uint: Keyword.UINT,\n break: Keyword.BREAK,\n continue: Keyword.CONTINUE,\n do: Keyword.DO,\n else: Keyword.ELSE,\n for: Keyword.FOR,\n if: Keyword.IF,\n while: Keyword.WHILE,\n discard: Keyword.DISCARD,\n return: Keyword.RETURN,\n bvec2: Keyword.BVEC2,\n bvec3: Keyword.BVEC3,\n bvec4: Keyword.BVEC4,\n ivec2: Keyword.IVEC2,\n ivec3: Keyword.IVEC3,\n ivec4: Keyword.IVEC4,\n uvec2: Keyword.UVEC2,\n uvec3: Keyword.UVEC3,\n uvec4: Keyword.UVEC4,\n vec2: Keyword.VEC2,\n vec3: Keyword.VEC3,\n vec4: Keyword.VEC4,\n mat2: Keyword.MAT2,\n mat3: Keyword.MAT3,\n mat4: Keyword.MAT4,\n in: Keyword.IN,\n out: Keyword.OUT,\n inout: Keyword.INOUT,\n sampler2D: Keyword.SAMPLER2D,\n samplerCube: Keyword.SAMPLER_CUBE,\n sampler3D: Keyword.SAMPLER3D,\n sampler2DShadow: Keyword.SAMPLER2D_SHADOW,\n samplerCubeShadow: Keyword.SAMPLER_CUBE_SHADOW,\n sampler2DArray: Keyword.SAMPLER2D_ARRAY,\n sampler2DArrayShadow: Keyword.SAMPLER2D_ARRAY_SHADOW,\n isampler2D: Keyword.I_SAMPLER2D,\n isampler3D: Keyword.I_SAMPLER3D,\n isamplerCube: Keyword.I_SAMPLER_CUBE,\n isampler2DArray: Keyword.I_SAMPLER2D_ARRAY,\n usampler2D: Keyword.U_SAMPLER2D,\n usampler3D: Keyword.U_SAMPLER3D,\n usamplerCube: Keyword.U_SAMPLER_CUBE,\n usampler2DArray: Keyword.U_SAMPLER2D_ARRAY,\n struct: Keyword.STRUCT,\n void: Keyword.VOID,\n true: Keyword.True,\n false: Keyword.False,\n precision: Keyword.PRECISION,\n precise: Keyword.PRECISE,\n highp: Keyword.HIGHP,\n mediump: Keyword.MEDIUMP,\n lowp: Keyword.LOWP,\n invariant: Keyword.INVARIANT,\n flat: Keyword.FLAT,\n smooth: Keyword.SMOOTH,\n noperspective: Keyword.NOPERSPECTIVE,\n centroid: Keyword.CENTROID,\n layout: Keyword.LAYOUT,\n location: Keyword.LOCATION,\n\n // Macros ...\n \"#if\": Keyword.MACRO_IF,\n \"#ifdef\": Keyword.MACRO_IFDEF,\n \"#ifndef\": Keyword.MACRO_IFNDEF,\n \"#else\": Keyword.MACRO_ELSE,\n \"#elif\": Keyword.MACRO_ELIF,\n \"#endif\": Keyword.MACRO_ENDIF,\n \"#undef\": Keyword.MACRO_UNDEF\n };\n\n private _needScanMacroConditionExpression = false;\n\n *tokenize() {\n while (!this.isEnd()) {\n yield this.scanToken();\n }\n return EOF;\n }\n\n constructor(\n source: string,\n public macroDefineList: MacroDefineList\n ) {\n super(source);\n }\n\n override scanToken(): BaseToken {\n this.skipCommentsAndSpace();\n if (this.isEnd()) {\n return EOF;\n }\n\n if (this._needScanMacroConditionExpression) {\n this._needScanMacroConditionExpression = false;\n return this._scanMacroConditionExpression();\n }\n\n const curCharCode = this.getCurCharCode();\n if (BaseLexer.isPreprocessorStartChar(curCharCode)) {\n return this._scanDirectives();\n }\n if (BaseLexer.isAlpha(curCharCode)) {\n return this._scanWord();\n }\n if (BaseLexer.isDigit(curCharCode)) {\n return this._scanNum();\n }\n\n const start = this.getShaderPosition();\n const token = BaseToken.pool.get();\n let curChar: string;\n\n switch (this.getCurChar()) {\n case \"<\":\n this.advance(1);\n curChar = this.getCurChar();\n if (curChar === \"<\") {\n this.advance(1);\n if (this.getCurChar() === \"=\") {\n this.advance(1);\n token.set(ETokenType.LEFT_ASSIGN, \"<<=\", start);\n break;\n }\n token.set(ETokenType.LEFT_OP, \"<<\", start);\n break;\n } else if (curChar === \"=\") {\n this.advance(1);\n token.set(ETokenType.LE_OP, \"<=\", start);\n break;\n }\n token.set(ETokenType.LEFT_ANGLE, \"<\", start);\n break;\n\n case \">\":\n this.advance(1);\n curChar = this.getCurChar();\n if (curChar === \">\") {\n this.advance(1);\n if (this.getCurChar() === \"=\") {\n this.advance(1);\n token.set(ETokenType.RIGHT_ASSIGN, \">>=\", start);\n break;\n }\n token.set(ETokenType.RIGHT_OP, \">>\", start);\n break;\n } else if (curChar === \"=\") {\n this.advance(1);\n token.set(ETokenType.GE_OP, \">=\", start);\n break;\n }\n token.set(ETokenType.RIGHT_ANGLE, \">\", start);\n break;\n\n case \"+\":\n this.advance(1);\n curChar = this.getCurChar();\n if (curChar === \"+\") {\n this.advance(1);\n token.set(ETokenType.INC_OP, \"++\", start);\n break;\n } else if (curChar === \"=\") {\n this.advance(1);\n token.set(ETokenType.ADD_ASSIGN, \"+=\", start);\n break;\n }\n token.set(ETokenType.PLUS, \"+\", start);\n break;\n\n case \"-\":\n this.advance(1);\n curChar = this.getCurChar();\n if (curChar === \"-\") {\n this.advance(1);\n token.set(ETokenType.DEC_OP, \"--\", start);\n break;\n } else if (curChar === \"=\") {\n this.advance(1);\n token.set(ETokenType.SUB_ASSIGN, \"-=\", start);\n break;\n }\n token.set(ETokenType.DASH, \"-\", start);\n break;\n\n case \"=\":\n this.advance(1);\n if (this.getCurChar() === \"=\") {\n this.advance(1);\n token.set(ETokenType.EQ_OP, \"==\", start);\n break;\n }\n token.set(ETokenType.EQUAL, \"=\", start);\n break;\n\n case \"!\":\n this.advance(1);\n if (this.getCurChar() === \"=\") {\n this.advance(1);\n token.set(ETokenType.NE_OP, \"!=\", start);\n break;\n }\n token.set(ETokenType.BANG, \"!\", start);\n break;\n\n case \"&\":\n this.advance(1);\n curChar = this.getCurChar();\n if (curChar === \"&\") {\n this.advance(1);\n token.set(ETokenType.AND_OP, \"&&\", start);\n break;\n } else if (curChar === \"=\") {\n this.advance(1);\n token.set(ETokenType.ADD_ASSIGN, \"&=\", start);\n break;\n }\n token.set(ETokenType.AMPERSAND, \"&\", start);\n break;\n\n case \"|\":\n this.advance(1);\n curChar = this.getCurChar();\n if (curChar === \"|\") {\n this.advance(1);\n token.set(ETokenType.OR_OP, \"||\", start);\n break;\n } else if (curChar === \"=\") {\n this.advance(1);\n token.set(ETokenType.OR_ASSIGN, \"|=\", start);\n break;\n }\n token.set(ETokenType.VERTICAL_BAR, \"|\", start);\n break;\n\n case \"^\":\n this.advance(1);\n curChar = this.getCurChar();\n if (curChar === \"^\") {\n this.advance(1);\n token.set(ETokenType.XOR_OP, \"^^\", start);\n break;\n } else if (curChar === \"=\") {\n this.advance(1);\n token.set(ETokenType.XOR_ASSIGN, \"^=\", start);\n break;\n }\n token.set(ETokenType.CARET, \"^\", start);\n break;\n\n case \"*\":\n this.advance(1);\n if (this.getCurChar() === \"=\") {\n this.advance(1);\n token.set(ETokenType.MUL_ASSIGN, \"*=\", start);\n break;\n }\n\n token.set(ETokenType.STAR, \"*\", start);\n break;\n\n case \"/\":\n this.advance(1);\n if (this.getCurChar() === \"=\") {\n this.advance(1);\n\n token.set(ETokenType.DIV_ASSIGN, \"/=\", start);\n break;\n }\n\n token.set(ETokenType.SLASH, \"/\", start);\n break;\n\n case \"%\":\n this.advance(1);\n if (this.getCurChar() === \"=\") {\n this.advance(1);\n\n token.set(ETokenType.MOD_ASSIGN, \"%=\", start);\n break;\n }\n\n token.set(ETokenType.PERCENT, \"%\", start);\n break;\n\n case \"(\":\n this.advance(1);\n\n token.set(ETokenType.LEFT_PAREN, \"(\", start);\n break;\n case \")\":\n this.advance(1);\n\n token.set(ETokenType.RIGHT_PAREN, \")\", start);\n break;\n case \"{\":\n this.advance(1);\n\n token.set(ETokenType.LEFT_BRACE, \"{\", start);\n break;\n case \"}\":\n this.advance(1);\n\n token.set(ETokenType.RIGHT_BRACE, \"}\", start);\n break;\n case \"[\":\n this.advance(1);\n\n token.set(ETokenType.LEFT_BRACKET, \"[\", start);\n break;\n case \"]\":\n this.advance(1);\n\n token.set(ETokenType.RIGHT_BRACKET, \"]\", start);\n break;\n case \".\":\n this.advance(1);\n if (BaseLexer.isDigit(this.getCurCharCode())) {\n return this._scanNumAfterDot();\n }\n\n token.set(ETokenType.DOT, \".\", start);\n break;\n case \",\":\n this.advance(1);\n\n token.set(ETokenType.COMMA, \",\", start);\n break;\n case \":\":\n this.advance(1);\n\n token.set(ETokenType.COLON, \":\", start);\n return token;\n case \";\":\n this.advance(1);\n\n token.set(ETokenType.SEMICOLON, \";\", start);\n break;\n case \"~\":\n this.advance(1);\n\n token.set(ETokenType.TILDE, \"~\", start);\n break;\n case \"?\":\n this.advance(1);\n\n token.set(ETokenType.QUESTION, \"?\", start);\n break;\n case '\"':\n this.advance(1);\n return this._scanStringConst();\n\n default:\n this.throwError(this.getShaderPosition(0), `Unexpected character ${this.getCurChar()}`);\n }\n return token;\n }\n\n private _scanStringConst(): BaseToken {\n const start = this.getShaderPosition();\n const buffer: string[] = [];\n while (this.getCurChar() !== '\"') {\n buffer.push(this.getCurChar());\n this.advance(1);\n }\n this.advance(1);\n const range = ShaderLab.createRange(start, this.getShaderPosition());\n\n const token = BaseToken.pool.get();\n token.set(ETokenType.STRING_CONST, buffer.join(\"\"), range);\n return token;\n }\n\n private _scanNumAfterDot(): BaseToken {\n const buffer = [\".\"];\n while (BaseLexer.isDigit(this.getCurCharCode())) {\n buffer.push(this.getCurChar());\n this.advance(1);\n }\n this._scanFloatSuffix(buffer);\n const token = BaseToken.pool.get();\n token.set(ETokenType.FLOAT_CONSTANT, buffer.join(\"\"), this.getShaderPosition(buffer.length));\n return token;\n }\n\n private _scanUtilBreakLine(outBuffer: string[]): void {\n while (this.getCurChar() !== \"\\n\" && !this.isEnd()) {\n outBuffer.push(this.getCurChar());\n this.advance(1);\n }\n }\n\n private _scanDirectives(): BaseToken {\n const buffer: string[] = [this.getCurChar()];\n const start = this.getShaderPosition();\n this.advance(1);\n while (BaseLexer.isAlpha(this.getCurCharCode())) {\n buffer.push(this.getCurChar());\n this.advance(1);\n }\n const token = BaseToken.pool.get();\n const word = buffer.join(\"\");\n\n // If it is a macro definition or conditional expression, we need to skip the rest of the line\n if (word === \"#define\") {\n this._scanUtilBreakLine(buffer);\n const word = buffer.join(\"\") + \"\\n\";\n token.set(Keyword.MACRO_DEFINE_EXPRESSION, word, start);\n } else {\n const kt = Lexer._lexemeTable[word];\n token.set(kt ?? ETokenType.ID, word, start);\n if (word === \"#if\" || word === \"#elif\") {\n this._needScanMacroConditionExpression = true;\n }\n }\n\n return token;\n }\n\n private _scanMacroConditionExpression(): BaseToken {\n const buffer = new Array<string>();\n const start = this.getShaderPosition();\n this._scanUtilBreakLine(buffer);\n const word = buffer.join(\"\");\n const token = BaseToken.pool.get();\n token.set(Keyword.MACRO_CONDITIONAL_EXPRESSION, word, start);\n return token;\n }\n\n private _scanWord(): BaseToken {\n const buffer: string[] = [this.getCurChar()];\n const start = this.getShaderPosition();\n this.advance(1);\n while (BaseLexer.isAlnum(this.getCurCharCode())) {\n buffer.push(this.getCurChar());\n this.advance(1);\n }\n const token = BaseToken.pool.get();\n const word = buffer.join(\"\");\n const kt = Lexer._lexemeTable[word];\n\n if (this.macroDefineList[word]) {\n token.set(Keyword.MACRO_CALL, word, start);\n } else {\n token.set(kt ?? ETokenType.ID, word, start);\n }\n return token;\n }\n\n private _scanNum(): BaseToken {\n const buffer: string[] = [];\n while (BaseLexer.isDigit(this.getCurCharCode())) {\n buffer.push(this.getCurChar());\n this.advance(1);\n }\n const curChar = this.getCurChar();\n if (curChar === \".\") {\n buffer.push(curChar);\n this.advance(1);\n while (BaseLexer.isDigit(this.getCurCharCode())) {\n buffer.push(this.getCurChar());\n this.advance(1);\n }\n this._scanFloatSuffix(buffer);\n\n const token = BaseToken.pool.get();\n token.set(ETokenType.FLOAT_CONSTANT, buffer.join(\"\"), this.getShaderPosition(buffer.length));\n return token;\n } else {\n if (curChar === \"e\" || curChar === \"E\") {\n this._scanFloatSuffix(buffer);\n\n const token = BaseToken.pool.get();\n token.set(ETokenType.FLOAT_CONSTANT, buffer.join(\"\"), this.getShaderPosition(buffer.length));\n return token;\n } else {\n this._scanIntegerSuffix(buffer);\n\n const token = BaseToken.pool.get();\n token.set(ETokenType.INT_CONSTANT, buffer.join(\"\"), this.getShaderPosition(buffer.length));\n return token;\n }\n }\n }\n\n private _scanFloatSuffix(buffer: string[]): void {\n let curChar = this.getCurChar();\n if (curChar === \"e\" || curChar === \"E\") {\n buffer.push(curChar);\n this.advance(1);\n curChar = this.getCurChar();\n if (curChar === \"+\" || curChar === \"-\") {\n buffer.push(curChar);\n this.advance(1);\n curChar = this.getCurChar();\n }\n if (!BaseLexer.isDigit(this.getCurCharCode()))\n this.throwError(this.getShaderPosition(0), \"lexing error, invalid exponent suffix.\");\n\n do {\n buffer.push(curChar);\n this.advance(1);\n curChar = this.getCurChar();\n } while (BaseLexer.isDigit(this.getCurCharCode()));\n }\n if (curChar === \"f\" || curChar === \"F\") {\n buffer.push(curChar);\n this.advance(1);\n }\n }\n\n private _scanIntegerSuffix(buffer: string[]): void {\n const curChar = this.getCurChar();\n if (curChar === \"u\" || curChar === \"U\") {\n buffer.push(curChar);\n this.advance(1);\n }\n }\n}\n","function _type_of(obj) {\n \"@swc/helpers - typeof\";\n\n return obj && typeof Symbol !== \"undefined\" && obj.constructor === Symbol ? \"symbol\" : typeof obj;\n}\nexport { _type_of as _ };\n","export enum MacroParserToken {\n id,\n line_remain,\n chunk,\n int_constant,\n string_const,\n /** \\>> */\n right_op,\n /** << */\n left_op,\n left_paren,\n right_paren,\n /** \\>= */\n ge,\n /** <= */\n le,\n /** == */\n eq,\n /** != */\n neq,\n /** && */\n and,\n /** || */\n or,\n /** < */\n left_angle,\n /** \\> */\n right_angle,\n /** \\* */\n star,\n /** + */\n plus,\n /** \\- */\n dash,\n /** ! */\n bang,\n /** \\/ */\n slash,\n /** % */\n percent,\n\n EOF = 100\n}\n\nexport enum MacroParserKeyword {\n define = 101,\n undef,\n if,\n ifdef,\n ifndef,\n else,\n elif,\n endif,\n\n defined\n}\n\nexport type MacroParserConstant = boolean | number;\n","import { ShaderRange } from \"../common\";\nimport { BaseToken } from \"../common/BaseToken\";\nimport { ShaderLabUtils } from \"../ShaderLabUtils\";\n// #if _VERBOSE\nimport { GSErrorName } from \"../GSError\";\n// #endif\n\nexport class MacroDefine {\n private _replaceRegex?: RegExp;\n private readonly _argsLexemes?: string[];\n\n get isFunction(): boolean {\n return !!this.args;\n }\n\n constructor(\n public readonly macro: BaseToken,\n public readonly body?: BaseToken,\n public readonly location?: ShaderRange,\n public readonly args?: BaseToken[]\n ) {\n if (args?.length > 0) {\n this._argsLexemes = this.args.map((item) => item.lexeme);\n this._replaceRegex = new RegExp(`\\\\b(${this._argsLexemes.join(\"|\")})\\\\b`, \"g\");\n }\n }\n\n expandFunctionBody(args: string[]): string {\n if (args.length !== this.args?.length) {\n throw ShaderLabUtils.createGSError(\"mismatched function macro\", GSErrorName.PreprocessorError, \"\", this.location);\n }\n\n if (args.length === 0) {\n return this.body.lexeme;\n }\n\n return this.body.lexeme.replace(this._replaceRegex, (m) => {\n return args[this._argsLexemes.indexOf(m)];\n });\n }\n}\n","import { ShaderRange } from \"../../common/ShaderRange\";\n\n// #if _VERBOSE\nexport class BlockInfo {\n readonly sourceFile: string;\n readonly rangeInFile?: ShaderRange;\n readonly sourceMap?: PpSourceMap;\n\n constructor(sourceFile?: string, rangeInFile?: ShaderRange, sourceMap?: PpSourceMap) {\n this.sourceFile = sourceFile ?? \"__main__\";\n this.rangeInFile = rangeInFile;\n this.sourceMap = sourceMap;\n }\n}\n\nexport class MapRange {\n sourceLoc: { block: BlockInfo; rangeInBlock: ShaderRange };\n generatedLoc: { start: number; end: number };\n\n constructor(sourceBlock: BlockInfo, rangeInBlock: ShaderRange, generatedLoc: { start: number; end: number }) {\n this.sourceLoc = { block: sourceBlock, rangeInBlock };\n this.generatedLoc = generatedLoc;\n }\n\n getSourceIndex(generatedIdx: number) {\n const { block, rangeInBlock } = this.sourceLoc;\n if (block.sourceMap) {\n if (block.sourceFile !== \"__main__\") return block.sourceMap.map(generatedIdx - this.generatedLoc.start);\n else if (rangeInBlock) {\n return {\n sourceFile: block.sourceFile,\n index: (block.rangeInFile?.start.index ?? 0) + rangeInBlock.start.index\n };\n }\n }\n\n return {\n index: generatedIdx - this.generatedLoc.start + rangeInBlock.start.index + (block.rangeInFile?.start.index ?? 0),\n sourceFile: this.sourceLoc.block.sourceFile\n };\n }\n}\n\nexport default class PpSourceMap {\n readonly mapRanges: MapRange[] = [];\n\n static rangeContains(range: MapRange[\"generatedLoc\"], index: number) {\n return range.start <= index && range.end > index;\n }\n\n addMapRange(mapRange: MapRange) {\n this.mapRanges.push(mapRange);\n }\n\n /**\n * @returns index\n */\n map(index: number): { sourceFile: string; index: number } {\n let curRange: MapRange | undefined;\n for (const range of this.mapRanges) {\n const { generatedLoc } = range;\n if (PpSourceMap.rangeContains(generatedLoc, index)) {\n return range.getSourceIndex(index);\n } else if (range.generatedLoc.start < index) {\n curRange = range;\n continue;\n } else {\n break;\n }\n }\n if (!curRange) return { sourceFile: \"__main__\", index };\n return {\n index: index - curRange.generatedLoc.end + curRange.sourceLoc.rangeInBlock.end.index,\n sourceFile: curRange.sourceLoc.block.sourceFile\n };\n }\n}\n// #endif\n","import { ShaderPosition, ShaderRange } from \"../common\";\n// #if _VERBOSE\nimport PpSourceMap from \"./sourceMap\";\n// #endif\nimport { BaseLexer } from \"../common/BaseLexer\";\nimport { BaseToken, EOF } from \"../common/BaseToken\";\nimport { ShaderLab } from \"../ShaderLab\";\nimport { MacroParserKeyword, MacroParserToken } from \"./constants\";\n\nexport type OnToken = (token: BaseToken, scanner: MacroParserLexer) => void;\n\nexport default class MacroParserLexer extends BaseLexer {\n private static _isPpCharacters(charCode: number): boolean {\n return (\n charCode === 35 || // #\n BaseLexer.isAlnum(charCode) // _, A-Z, a-z, 0-9\n );\n }\n\n private static _lexemeTable = <Record<string, MacroParserKeyword>>{\n \"#define\": MacroParserKeyword.define,\n \"#undef\": MacroParserKeyword.undef,\n \"#if\": MacroParserKeyword.if,\n \"#ifdef\": MacroParserKeyword.ifdef,\n \"#ifndef\": MacroParserKeyword.ifndef,\n \"#else\": MacroParserKeyword.else,\n \"#elif\": MacroParserKeyword.elif,\n \"#endif\": MacroParserKeyword.endif,\n defined: MacroParserKeyword.defined\n };\n\n private macroLvl = 0;\n\n // #if _VERBOSE\n readonly sourceMap = new PpSourceMap();\n readonly file: string;\n readonly blockRange?: ShaderRange;\n // #endif\n\n constructor(\n source: string,\n // #if _VERBOSE\n file = \"__main__\",\n blockRange?: ShaderRange\n // #endif\n ) {\n super(source);\n // #if _VERBOSE\n this.file = file;\n this.blockRange = blockRange;\n // #endif\n }\n\n scanWordsUntilTerminator(terminatorChar: string): BaseToken[] {\n const tokens: BaseToken[] = [];\n while (true) {\n this.skipSpace(true);\n if (BaseLexer.isAlpha(this.getCurCharCode())) {\n tokens.push(this.scanWord());\n } else if (this.getCurChar() === terminatorChar) {\n this.advance(1);\n return tokens;\n } else {\n this.advance(1);\n }\n }\n }\n\n scanWord(): BaseToken {\n // Skip all non-alphabetic characters, primarily used for handling defined(MACRO) syntax\n while (!BaseLexer.isAlpha(this.getCurCharCode()) && !this.isEnd()) {\n this.advance(1);\n }\n\n if (this.isEnd()) {\n return EOF;\n }\n\n const start = this._currentIndex;\n while (BaseLexer.isAlnum(this.getCurCharCode()) && !this.isEnd()) {\n this.advance(1);\n }\n const end = this._currentIndex;\n const word = this._source.slice(start, end);\n if (end === start) {\n this.throwError(this.getShaderPosition(0), \"no word found.\");\n }\n\n const token = BaseToken.pool.get();\n const tokenType = MacroParserLexer._lexemeTable[word] ?? MacroParserToken.id;\n token.set(tokenType, word, this.getShaderPosition(word.length));\n return token;\n }\n\n override scanToken(): BaseToken | undefined {\n this.skipCommentsAndSpace();\n if (this.isEnd()) {\n return;\n }\n const source = this._source;\n let start = this._currentIndex;\n let found = false;\n for (var n = source.length; this._currentIndex < n; ) {\n if (MacroParserLexer._isPpCharacters(source.charCodeAt(this._currentIndex))) {\n this.advance(1);\n found = true;\n } else {\n if (found) {\n break;\n }\n this.advance(1);\n this.skipCommentsAndSpace();\n start = this._currentIndex;\n }\n }\n\n const lexeme = source.slice(start, this._currentIndex);\n const token = BaseToken.pool.get();\n const type = MacroParserLexer._lexemeTable[lexeme] ?? MacroParserToken.id;\n token.set(type, lexeme, this.getShaderPosition(this._currentIndex - start));\n\n if (type === MacroParserKeyword.if || type === MacroParserKeyword.ifdef || type === MacroParserKeyword.ifndef) {\n this.macroLvl++;\n } else if (type === MacroParserKeyword.endif) {\n this.macroLvl--;\n }\n\n return token;\n }\n\n scanQuotedString(): BaseToken<MacroParserToken.string_const> {\n this.skipSpace(true);\n const source = this._source;\n const sourceLength = source.length;\n const start = this.getShaderPosition(0);\n\n let index = this._currentIndex;\n\n // Check for opening quote\n if (source.charCodeAt(index) !== 34) {\n // 34 = '\"'\n this.throwError(start, \"Unexpected char, expected '\\\"'\");\n }\n\n const contentStart = ++index; // Skip opening quote and record start\n\n // Fast scan to closing quote\n while (index < sourceLength && source.charCodeAt(index) !== 34) {\n index++;\n }\n\n if (index >= sourceLength) {\n this.throwError(this.getShaderPosition(0), \"Unexpected char, expected '\\\"'\");\n }\n\n const lexeme = source.slice(contentStart, index);\n this.advance(index + 1 - this._currentIndex); // Skip to after closing quote\n\n const token = BaseToken.pool.get();\n token.set(MacroParserToken.string_const, lexeme, start);\n return token;\n }\n\n scanToChar(char: string) {\n const source = this._source;\n while (source[this._currentIndex] !== char && !this.isEnd()) {\n this.advance(1);\n }\n }\n\n scanMacroBranchBody(): {\n body: BaseToken<MacroParserToken.chunk>;\n nextDirective: BaseToken;\n } {\n const shaderPosition = this.getShaderPosition(0);\n const startLevel = this.macroLvl;\n\n let nextDirective = this.scanToken()!;\n while (true) {\n const { type } = nextDirective;\n if (type === MacroParserKeyword.endif && startLevel - 1 === this.macroLvl) {\n break;\n } else if (\n (type === MacroParserKeyword.elif || type === MacroParserKeyword.else) &&\n startLevel === this.macroLvl\n ) {\n break;\n }\n nextDirective = this.scanToken()!;\n }\n\n const lexeme = this._source.slice(shaderPosition.index, this._currentIndex - nextDirective.lexeme.length - 1);\n const body = BaseToken.pool.get();\n body.set(MacroParserToken.chunk, lexeme, shaderPosition);\n return { body, nextDirective };\n }\n\n scanPairedBlock(lc: string, rc: string): void {\n this.scanToChar(lc);\n let level = 0;\n const source = this._source;\n\n do {\n const curChar = source[this._currentIndex];\n\n if (curChar === lc) {\n level++;\n } else if (curChar === rc) {\n level--;\n }\n this.advance(1);\n } while (level > 0);\n }\n\n /**\n * @returns end ShaderPosition\n */\n scanRemainMacro(): ShaderPosition {\n const startLvl = this.macroLvl;\n let directive = this.scanToken()!;\n while (!this.isEnd() && (directive.type !== MacroParserKeyword.endif || startLvl - 1 !== this.macroLvl)) {\n directive = this.scanToken()!;\n }\n return this.getShaderPosition(0);\n }\n\n peekNonSpace() {\n let current = this._currentIndex;\n while (/\\s/.test(this._source[current])) {\n current += 1;\n }\n return this._source[current];\n }\n\n scanInteger() {\n const start = this._currentIndex;\n while (BaseLexer.isDigit(this.getCurCharCode())) {\n this.advance(1);\n }\n if (this._currentIndex === start) {\n this.throwError(this.getShaderPosition(0), \"no integer found\");\n }\n const integer = this._source.slice(start, this._currentIndex);\n\n const token = BaseToken.pool.get();\n token.set(MacroParserToken.int_constant, integer, this.getShaderPosition(0));\n return token;\n }\n\n scanMacroBody(): BaseToken<MacroParserToken.line_remain> {\n this.skipSpace(false);\n let lexeme = \"\";\n const source = this._source;\n const sourceLength = source.length;\n\n const start = this.getShaderPosition(0);\n while (this._currentIndex < sourceLength) {\n const charCode = source.charCodeAt(this._currentIndex);\n\n // Check for line break (terminates macro definition), break when encounter \"\\n\"\n if (charCode === 10) {\n break;\n }\n\n // Check for comments (both single-line and multi-line)\n if (charCode === 47) {\n const nextIndex = this._currentIndex + 1;\n if (nextIndex < sourceLength) {\n const nextCharCode = source.charCodeAt(nextIndex);\n\n // Single-line comment (terminates macro definition), break when encounter \"//\"\n if (nextCharCode === 47) {\n break;\n }\n\n // Multi-line comment (skip but don't terminate)\n if (nextCharCode === 42) {\n this.advance(2); // Skip \"/*\"\n\n // Skip until end of multi-line comment\n while (this._currentIndex + 1 < sourceLength) {\n const currentIndex = this._currentIndex;\n if (source.charCodeAt(currentIndex) === 42 && source.charCodeAt(currentIndex + 1) === 47) {\n this.advance(2); // Skip \"*/\n break;\n }\n this.advance(1);\n }\n\n lexeme += \" \"; // Replace comment with space\n continue;\n }\n }\n }\n\n // Accumulate useful character\n lexeme += source[this._currentIndex];\n this.advance(1);\n }\n\n if (lexeme === \"\") {\n return null;\n }\n\n const valueToken = BaseToken.pool.get();\n valueToken.set(MacroParserToken.line_remain, lexeme, ShaderLab.createRange(start, this.getShaderPosition(0)));\n return valueToken;\n }\n}\n","import { ExpandSegment } from \"./MacroParser\";\n// #if _VERBOSE\nimport PpSourceMap, { MapRange } from \"./sourceMap\";\n// #endif\n\nexport class PpUtils {\n static expand(\n segments: ExpandSegment[],\n source: string,\n // #if _VERBOSE\n sourceMap?: PpSourceMap\n //#endif\n ) {\n const ret: string[] = [];\n let startIdx = 0;\n let generatedIdx = 0;\n\n for (const seg of segments) {\n const originSlice = source.slice(startIdx, seg.rangeInBlock.start.index);\n ret.push(originSlice, seg.replace);\n\n const generatedIdxEnd = generatedIdx + originSlice.length + seg.replace.length;\n\n // #if _VERBOSE\n const mapRange = new MapRange(seg.block, seg.rangeInBlock, {\n start: generatedIdx + originSlice.length,\n end: generatedIdxEnd\n });\n sourceMap?.addMapRange(mapRange);\n // #endif\n\n startIdx = seg.rangeInBlock.end.index;\n generatedIdx = generatedIdxEnd;\n }\n ret.push(source.slice(startIdx));\n return ret.join(\"\");\n }\n}\n","import { ShaderMacro } from \"@galacean/engine\";\nimport { ShaderPosition, ShaderRange } from \"../common\";\nimport { BaseToken } from \"../common/BaseToken\";\nimport { GSErrorName } from \"../GSError\";\nimport { ShaderLab } from \"../ShaderLab\";\nimport { ShaderLabUtils } from \"../ShaderLabUtils\";\nimport { MacroParserConstant, MacroParserKeyword, MacroParserToken } from \"./constants\";\nimport { MacroDefine } from \"./MacroDefine\";\nimport MacroParserLexer from \"./MacroParserLexer\";\nimport { PpUtils } from \"./Utils\";\n// #if _VERBOSE\nimport PpSourceMap, { BlockInfo } from \"./sourceMap\";\n// #endif\nimport { BaseLexer } from \"../common/BaseLexer\";\n\nexport interface ExpandSegment {\n // #if _VERBOSE\n block?: BlockInfo;\n // #endif\n rangeInBlock: ShaderRange;\n replace: string;\n}\n\n/** @internal */\nexport class MacroParser {\n static lexer: MacroParserLexer;\n\n private static _definedMacros: Map<string, MacroDefine> = new Map();\n private static _expandSegmentsStack: ExpandSegment[][] = [[]];\n\n private static _expandVisitedMacros: Record<string, number> = {};\n private static _expandVersionId: number = 1;\n\n // #if _VERBOSE\n static _errors: Error[] = [];\n // #endif\n\n static parse(source: string, macros: ShaderMacro[]): string | null {\n MacroParser._reset();\n\n for (const macro of macros) {\n MacroParser._addPredefinedMacro(macro.name, macro.value);\n }\n\n this.lexer = new MacroParserLexer(source);\n return MacroParser._parseDirectives(this.lexer);\n }\n\n private static _reset() {\n this._expandSegmentsStack.length = 0;\n this._expandSegmentsStack.push([]);\n\n this._definedMacros.clear();\n this._addPredefinedMacro(\"GL_ES\");\n\n // #if _VERBOSE\n this._errors.length = 0;\n // #endif\n }\n\n private static _addPredefinedMacro(macro: string, value?: string) {\n const token = BaseToken.pool.get();\n token.set(MacroParserToken.id, macro);\n\n let macroBody: BaseToken | undefined;\n if (value != undefined) {\n macroBody = BaseToken.pool.get();\n macroBody.set(MacroParserToken.id, value);\n }\n\n this._definedMacros.set(macro, new MacroDefine(token, macroBody));\n }\n\n private static _parseDirectives(lexer: MacroParserLexer): string | null {\n let directive: BaseToken | undefined;\n while ((directive = lexer.scanToken())) {\n switch (directive.type) {\n case MacroParserToken.id:\n this._parseMacro(lexer, directive);\n break;\n case MacroParserKeyword.define:\n this._parseDefine(lexer);\n break;\n case MacroParserKeyword.undef:\n this._parseUndef(lexer);\n break;\n case MacroParserKeyword.if:\n this._parseIfDirective(lexer, MacroParserKeyword.if);\n break;\n case MacroParserKeyword.ifndef:\n this._parseIfDirective(lexer, MacroParserKeyword.ifndef);\n break;\n case MacroParserKeyword.ifdef:\n this._parseIfDirective(lexer, MacroParserKeyword.ifdef);\n break;\n }\n }\n // #if _VERBOSE\n if (this._errors.length > 0) return null;\n // #endif\n\n return PpUtils.expand(this._getExpandSegments(), lexer.source, lexer.sourceMap);\n }\n\n private static _getExpandSegments(): ExpandSegment[] {\n return this._expandSegmentsStack[this._expandSegmentsStack.length - 1];\n }\n\n private static _reportError(loc: ShaderRange | ShaderPosition, message: string, source: string, file?: string) {\n const error = ShaderLabUtils.createGSError(message, GSErrorName.PreprocessorError, source, loc, file);\n // #if _VERBOSE\n this._errors.push(error);\n // #endif\n }\n\n private static _parseIfDirective(lexer: MacroParserLexer, directiveType: MacroParserKeyword): void {\n const directiveLength =\n directiveType === MacroParserKeyword.if ? 3 : directiveType === MacroParserKeyword.ifdef ? 6 : 7; // #if = 3, #ifdef = 6, #ifndef = 7\n const start = lexer.currentIndex - directiveLength;\n let skipMacro = false;\n\n let shouldInclude: MacroParserConstant;\n if (directiveType === MacroParserKeyword.if) {\n shouldInclude = this._parseConstantExpression(lexer);\n } else {\n const macroToken = lexer.scanWord();\n const lexeme = macroToken.lexeme;\n if (lexeme.startsWith(\"GL_\")) {\n skipMacro = true;\n } else {\n const defined = this._definedMacros.get(lexeme);\n shouldInclude = directiveType === MacroParserKeyword.ifdef ? !!defined : !defined;\n }\n }\n\n lexer.skipSpace(true);\n const { body, nextDirective } = lexer.scanMacroBranchBody();\n\n if (skipMacro) return;\n\n if (shouldInclude) {\n const end =\n nextDirective.type === MacroParserKeyword.endif ? lexer.getShaderPosition(0) : lexer.scanRemainMacro();\n const expanded = this._expandMacroChunk(body.lexeme, body.location, lexer);\n this._addContentReplace(\n lexer.file,\n ShaderLab.createPosition(start),\n end,\n expanded.content,\n lexer.blockRange,\n expanded.sourceMap\n );\n } else {\n this._addEmptyReplace(lexer, start);\n this._processConditionalDirective(nextDirective.type, lexer);\n }\n }\n\n private static _processConditionalDirective(\n directive: MacroParserKeyword.elif | MacroParserKeyword.else | MacroParserKeyword.endif,\n scanner: MacroParserLexer\n ) {\n if (directive === MacroParserKeyword.endif) {\n return;\n }\n\n const start = scanner.currentIndex;\n\n if (directive === MacroParserKeyword.else) {\n const { body } = scanner.scanMacroBranchBody();\n const expanded = this._expandMacroChunk(body.lexeme, body.location, scanner);\n this._addContentReplace(\n scanner.file,\n ShaderLab.createPosition(start),\n scanner.getShaderPosition(0),\n expanded.content,\n scanner.blockRange,\n expanded.sourceMap\n );\n } else if (directive === MacroParserKeyword.elif) {\n const constantExpr = this._parseConstantExpression(scanner);\n const { body, nextDirective } = scanner.scanMacroBranchBody();\n if (constantExpr) {\n const end =\n nextDirective.type === MacroParserKeyword.endif ? scanner.currentIndex : scanner.scanRemainMacro().index;\n const expanded = this._expandMacroChunk(body.lexeme, body.location, scanner);\n this._addContentReplace(\n scanner.file,\n ShaderLab.createPosition(start),\n ShaderLab.createPosition(end),\n expanded.content,\n scanner.blockRange,\n expanded.sourceMap\n );\n } else {\n this._addContentReplace(\n scanner.file,\n ShaderLab.createPosition(start),\n ShaderLab.createPosition(scanner.currentIndex),\n \"\",\n scanner.blockRange\n );\n this._processConditionalDirective(nextDirective.type, scanner);\n }\n }\n }\n\n private static _parseConstantExpression(scanner: MacroParserLexer): MacroParserConstant {\n scanner.skipSpace(true);\n return this._parseLogicalOrExpression(scanner);\n }\n\n private static _parseLogicalOrExpression(scanner: MacroParserLexer): MacroParserConstant {\n const operand1 = this._parseLogicalAndExpression(scanner);\n const operator = scanner.peek(2);\n if (operator && operator === \"||\") {\n scanner.advance(2);\n scanner.skipSpace(false);\n const operand2 = this._parseLogicalOrExpression(scanner);\n return operand1 || operand2;\n }\n return operand1;\n }\n\n private static _parseLogicalAndExpression(scanner: MacroParserLexer): MacroParserConstant {\n const operand1 = this._parseEqualityExpression(scanner);\n const operator = scanner.peek(2);\n if (operator && operator === \"&&\") {\n scanner.advance(2);\n scanner.skipSpace(false);\n const operand2 = this._parseLogicalAndExpression(scanner);\n return operand1 && operand2;\n }\n return operand1;\n }\n\n private static _parseEqualityExpression(scanner: MacroParserLexer): MacroParserConstant {\n const operand1 = this._parseRelationalExpression(scanner);\n const operator = scanner.peek(2);\n if (operator && [\"==\", \"!=\"].includes(operator)) {\n scanner.advance(2);\n scanner.skipSpace(false);\n const operand2 = this._parseEqualityExpression(scanner);\n switch (operator) {\n case \"==\":\n return operand1 === operand2;\n case \"!=\":\n return operand1 !== operand2;\n }\n }\n return operand1;\n }\n\n private static _parseRelationalExpression(scanner: MacroParserLexer): MacroParserConstant {\n const operand1 = this._parseShiftExpression(scanner) as number;\n let operator = scanner.peek(2);\n if (operator[1] !== \"=\") operator = operator[0];\n if (operator && [\">\", \"<\", \">=\", \"<=\"].includes(operator)) {\n const opPos = scanner.getShaderPosition(0);\n scanner.advance(operator.length);\n scanner.skipSpace(false);\n const operand2 = this._parseRelationalExpression(scanner) as number;\n if (typeof operand1 !== typeof operand2 && typeof operand1 !== \"number\") {\n this._reportError(opPos, \"invalid operator in relation expression.\", scanner.source, scanner.file);\n return;\n }\n switch (operator) {\n case \">\":\n return operand1 > operand2;\n case \"<\":\n return operand1 < operand2;\n case \">=\":\n return operand1 >= operand2;\n case \"<=\":\n return operand1 <= operand2;\n }\n }\n return operand1;\n }\n\n private static _parseShiftExpression(scanner: MacroParserLexer): MacroParserConstant {\n const operand1 = this._parseAdditiveExpression(scanner) as number;\n const operator = scanner.peek(2);\n if (operator && [\">>\", \"<<\"].includes(operator)) {\n const opPos = scanner.getShaderPosition(0);\n scanner.advance(2);\n scanner.skipSpace(false);\n const operand2 = this._parseShiftExpression(scanner) as number;\n if (typeof operand1 !== typeof operand2 && typeof operand1 !== \"number\") {\n this._reportError(opPos, \"invalid operator in shift expression.\", scanner.source, scanner.file);\n return;\n }\n switch (operator) {\n case \">>\":\n return operand1 >> operand2;\n case \"<<\":\n return operand1 << operand2;\n }\n }\n\n return operand1;\n }\n\n private static _parseAdditiveExpression(scanner: MacroParserLexer): MacroParserConstant {\n const operand1 = this._parseMulticativeExpression(scanner) as number;\n if ([\">\", \"<\"].includes(scanner.getCurChar())) {\n const opPos = scanner.getShaderPosition(0);\n scanner.advance(1);\n\n const operator = scanner.getCurChar();\n scanner.skipSpace(false);\n const operand2 = this._parseAdditiveExpression(scanner) as number;\n if (typeof operand1 !== typeof operand2 && typeof operand1 !== \"number\") {\n this._reportError(opPos, \"invalid operator.\", scanner.source, scanner.file);\n return false;\n }\n switch (operator) {\n case \"+\":\n return operand1 + operand2;\n case \"-\":\n return operand1 - operand2;\n }\n }\n return operand1;\n }\n\n private static _parseMulticativeExpression(scanner: MacroParserLexer): MacroParserConstant {\n const operand1 = this._parseUnaryExpression(scanner) as number;\n scanner.skipSpace(false);\n if ([\"*\", \"/\", \"%\"].includes(scanner.getCurChar())) {\n const opPos = scanner.getShaderPosition(0);\n const operator = scanner.getCurChar();\n scanner.skipSpace(false);\n const operand2 = this._parseMulticativeExpression(scanner) as number;\n if (typeof operand1 !== typeof operand2 && typeof operand1 !== \"number\") {\n this._reportError(opPos, \"invalid operator.\", scanner.source, scanner.file);\n return;\n }\n switch (operator) {\n case \"*\":\n return operand1 * operand2;\n case \"/\":\n return operand1 / operand2;\n case \"%\":\n return operand1 % operand2;\n }\n }\n return operand1;\n }\n\n private static _parseUnaryExpression(scanner: MacroParserLexer) {\n const operator = scanner.getCurChar();\n if ([\"+\", \"-\", \"!\"].includes(operator)) {\n const opPos = scanner.getShaderPosition(0);\n scanner.advance(1);\n scanner.skipSpace(false);\n const parenExpr = this._parseParenthesisExpression(scanner);\n if ((operator === \"!\" && typeof parenExpr !== \"boolean\") || (operator !== \"!\" && typeof parenExpr !== \"number\")) {\n this._reportError(opPos, \"invalid operator.\", scanner.source, scanner.file);\n }\n\n switch (operator) {\n case \"+\":\n return parenExpr;\n case \"-\":\n return -parenExpr;\n case \"!\":\n return !parenExpr;\n }\n }\n return this._parseParenthesisExpression(scanner);\n }\n\n private static _parseParenthesisExpression(scanner: MacroParserLexer): MacroParserConstant {\n if (scanner.getCurChar() === \"(\") {\n scanner.advance(1);\n scanner.skipSpace(false);\n const ret = this._parseConstantExpression(scanner);\n scanner.scanToChar(\")\");\n scanner.advance(1);\n return ret;\n }\n return this._parseConstant(scanner);\n }\n\n private static _parseConstant(scanner: MacroParserLexer): MacroParserConstant {\n if (BaseLexer.isAlpha(scanner.getCurCharCode())) {\n const id = scanner.scanWord();\n if (id.type === MacroParserKeyword.defined) {\n const withParen = scanner.peekNonSpace() === \"(\";\n const macro = scanner.scanWord();\n if (withParen) {\n scanner.scanToChar(\")\");\n scanner.advance(1);\n }\n return !!this._definedMacros.get(macro.lexeme);\n } else {\n const macro = this._definedMacros.get(id.lexeme);\n\n if (!macro) {\n return false;\n }\n\n if (!macro.body) {\n return true;\n }\n\n if (macro.isFunction) {\n this._reportError(id.location, \"invalid function macro usage\", scanner.source, scanner.file);\n }\n const value = Number(macro.body.lexeme);\n if (!Number.isInteger(value)) {\n this._reportError(id.location, `invalid const macro: ${id.lexeme}`, scanner.source, scanner.file);\n }\n return value;\n }\n } else if (BaseLexer.isDigit(scanner.getCurCharCode())) {\n const integer = scanner.scanInteger();\n return Number(integer.lexeme);\n } else {\n this._reportError(\n scanner.getShaderPosition(0),\n `invalid token: ${scanner.getCurChar()}`,\n scanner.source,\n scanner.file\n );\n }\n }\n\n private static _parseMacroFunctionArgs(\n source: string,\n startIndex: number,\n macroName: string\n ): { args: string[]; endIndex: number } {\n const length = source.length;\n let i = startIndex + macroName.length;\n\n // Find opening parenthesis\n while (i < length && source.charCodeAt(i) !== 40) i++;\n\n // Parse function arguments\n const args: string[] = [];\n let level = 1;\n let argStart = i + 1;\n let k = argStart;\n\n while (k < length && level > 0) {\n const charCode = source.charCodeAt(k);\n if (charCode === 40) {\n level++;\n } else if (charCode === 41) {\n if (--level === 0) {\n const arg = source.substring(argStart, k).trim();\n if (arg.length > 0) args.push(arg);\n break;\n }\n } else if (charCode === 44 && level === 1) {\n const arg = source.substring(argStart, k).trim();\n if (arg.length > 0) args.push(arg);\n argStart = k + 1;\n }\n k++;\n }\n\n return { args, endIndex: k + 1 };\n }\n\n private static _expandMacroBody(body: string): string {\n const visitedMacros = this._expandVisitedMacros;\n const currentVersionId = ++this._expandVersionId;\n let expandedBody = body;\n let hasExpansion = true;\n\n while (hasExpansion) {\n hasExpansion = false;\n const length = expandedBody.length;\n let i = 0;\n\n while (i < length) {\n const charCode = expandedBody.charCodeAt(i);\n if (!BaseLexer.isAlpha(charCode)) {\n i++;\n continue;\n }\n\n const start = i;\n while (i < length && BaseLexer.isAlnum(expandedBody.charCodeAt(i))) {\n i++;\n }\n\n const macroName = expandedBody.substring(start, i);\n const macro = this._definedMacros.get(macroName);\n\n if (!macro || visitedMacros[macroName] === currentVersionId) {\n continue;\n }\n\n // Prevent circular references\n visitedMacros[macroName] = currentVersionId;\n\n let replacement: string;\n let endIndex: number;\n\n if (!macro.isFunction) {\n replacement = macro.body?.lexeme ?? \"\";\n endIndex = i;\n } else {\n const { args, endIndex: newEndIndex } = this._parseMacroFunctionArgs(expandedBody, start, macroName);\n replacement = macro.expandFunctionBody(args);\n endIndex = newEndIndex;\n }\n\n expandedBody = expandedBody.substring(0, start) + replacement + expandedBody.substring(endIndex);\n hasExpansion = true;\n break;\n }\n }\n\n return expandedBody;\n }\n\n /**\n * Recursively expand macro body and expansion.\n */\n private static _expandMacroChunk(\n chunk: string,\n loc: ShaderRange,\n parentScanner: MacroParserLexer\n ): {\n content: string;\n // #if _VERBOSE\n sourceMap: PpSourceMap;\n // #endif\n };\n private static _expandMacroChunk(\n chunk: string,\n loc: ShaderRange,\n file: string\n ): {\n content: string;\n // #if _VERBOSE\n sourceMap: PpSourceMap;\n // #endif\n };\n private static _expandMacroChunk(\n chunk: string,\n loc: ShaderRange,\n scannerOrFile: MacroParserLexer | string\n ): {\n content: string;\n // #if _VERBOSE\n sourceMap: PpSourceMap;\n // #endif\n } {\n this._expandSegmentsStack.push([]);\n let scanner: MacroParserLexer;\n if (typeof scannerOrFile === \"string\") {\n scanner = new MacroParserLexer(chunk, scannerOrFile);\n } else {\n scanner = new MacroParserLexer(chunk, scannerOrFile.file, loc);\n }\n\n const ret = this._parseDirectives(scanner);\n this._expandSegmentsStack.pop();\n return {\n content: ret,\n // #if _VERBOSE\n sourceMap: scanner.sourceMap\n // #endif\n };\n }\n\n private static _addEmptyReplace(lexer: MacroParserLexer, start: number) {\n this._addContentReplace(\n lexer.file,\n ShaderLab.createPosition(start),\n lexer.getShaderPosition(0),\n \"\",\n lexer.blockRange\n );\n }\n\n private static _addContentReplace(\n sourceFile: string,\n start: ShaderPosition,\n end: ShaderPosition,\n content: string,\n sourceRange?: ShaderRange,\n sourceMap?: PpSourceMap\n ): void {\n // #if _VERBOSE\n const block = new BlockInfo(sourceFile, sourceRange, sourceMap);\n // #endif\n\n const range = ShaderLab.createRange(start, end);\n this._getExpandSegments().push({\n // #if _VERBOSE\n block,\n // #endif\n rangeInBlock: range,\n replace: content\n });\n }\n\n private static _parseDefine(lexer: MacroParserLexer): void {\n const start = lexer.getShaderPosition(7);\n const macroName = lexer.scanWord();\n\n const { lexeme, location } = macroName;\n let { end } = location;\n if (this._definedMacros.get(lexeme) && lexeme.startsWith(\"GL_\")) {\n this._reportError(location, `Redefined macro: ${lexeme}`, lexer.source, lexer.file);\n }\n\n let macroArgs: BaseToken[] | undefined;\n if (lexer.getCurChar() === \"(\") {\n macroArgs = lexer.scanWordsUntilTerminator(\")\");\n end = lexer.getShaderPosition(0);\n }\n const macroBody = lexer.scanMacroBody();\n const range = ShaderLab.createRange(start, end);\n const macroDefine = new MacroDefine(macroName, macroBody, range, macroArgs);\n this._definedMacros.set(lexeme, macroDefine);\n\n this._addContentReplace(lexer.file, start, lexer.getShaderPosition(0), \"\", lexer.blockRange);\n }\n\n private static _parseUndef(lexer: MacroParserLexer): void {\n const start = lexer.getShaderPosition(6);\n const macroName = lexer.scanWord();\n this._definedMacros.delete(macroName.lexeme);\n\n this._addContentReplace(lexer.file, start, lexer.getShaderPosition(0), \"\", lexer.blockRange);\n }\n\n private static _parseMacro(lexer: MacroParserLexer, token: BaseToken) {\n const macro = this._definedMacros.get(token.lexeme);\n if (macro) {\n const { location } = token;\n if (macro.isFunction) {\n const { args, endIndex } = this._parseMacroFunctionArgs(lexer.source, location.start.index, token.lexeme);\n const macroBodyExpanded = macro.expandFunctionBody(args);\n const expandedContent = this._expandMacroBody(macroBodyExpanded);\n\n const remainingLength = endIndex - location.end.index;\n lexer.advance(remainingLength);\n\n this._addContentReplace(\n lexer.file,\n location.start,\n lexer.getShaderPosition(0),\n expandedContent,\n lexer.blockRange\n );\n } else {\n const macroContent = macro.body?.lexeme ?? \"\";\n const expandedContent = this._expandMacroBody(macroContent);\n\n this._addContentReplace(lexer.file, location.start, location.end, expandedContent, lexer.blockRange);\n }\n }\n }\n\n // #if _VERBOSE\n static convertSourceIndex(index: number) {\n return this.lexer.sourceMap.map(index);\n }\n // #endif\n}\n","import { Logger } from \"@galacean/engine\";\nimport { ETokenType } from \"../common\";\nimport { Keyword } from \"../common/enums/Keyword\";\nimport { Grammar } from \"../parser/Grammar\";\nimport { GrammarSymbol, NoneTerminal, Terminal } from \"../parser/GrammarSymbol\";\nimport State from \"./State\";\nimport StateItem from \"./StateItem\";\nimport { default as GrammarUtils, default as Utils } from \"./Utils\";\nimport { ActionInfo, ActionTable, EAction, GotoTable, StateActionTable, StateGotoTable } from \"./types\";\n\n/**\n * The [LALR1](https://web.stanford.edu/class/archive/cs/cs143/cs143.1128/handouts/140%20LALR%20Parsing.pdf) Parser generator\n */\nexport class LALR1 {\n readonly firstSetMap: Map<NoneTerminal, Set<Terminal>> = new Map();\n readonly followSetMap: Map<NoneTerminal, Set<Terminal>> = new Map();\n\n readonly actionTable: StateActionTable = new Map();\n readonly gotoTable: StateGotoTable = new Map();\n private grammar: Grammar;\n\n /** For circle detect */\n private _firstSetNTStack: NoneTerminal[] = [];\n\n constructor(grammar: Grammar) {\n this.grammar = grammar;\n }\n\n generate() {\n this.computeFirstSet();\n this.buildStateTable();\n }\n\n private buildStateTable() {\n const startStateItemCore = [new StateItem(this.grammar.productions[0], 0, [ETokenType.EOF])];\n const startState = State.create(startStateItemCore);\n this._extendState(startState);\n }\n\n private _extendState(state: State) {\n if (!state.needReInfer) return;\n this._closure(state);\n const newStates = this._inferNextState(state);\n for (const ns of newStates) {\n this._extendState(ns);\n }\n }\n\n private _closure(state: State) {\n for (const core of state.cores) {\n if (!core.canReduce()) {\n this._extendStateItem(state, core);\n }\n }\n state.closured = true;\n return state;\n }\n\n private _extendStateItem(state: State, item: StateItem) {\n if (GrammarUtils.isTerminal(item.curSymbol)) return;\n\n const productionList = this.grammar.getProductionList(<NoneTerminal>item.curSymbol);\n\n if (item.nextSymbol) {\n let newLookaheadSet = new Set<Terminal>();\n let lastFirstSet: Set<Terminal> | undefined;\n let terminalExist = false;\n // when A :=> a.BC, a; ==》 B :=> .xy, First(Ca)\n // newLookAhead = First(Ca)\n for (let i = 1, nextSymbol = item.symbolByOffset(1); !!nextSymbol; nextSymbol = item.symbolByOffset(++i)) {\n if (GrammarUtils.isTerminal(nextSymbol)) {\n newLookaheadSet.add(<Terminal>nextSymbol);\n terminalExist = true;\n break;\n }\n lastFirstSet = this.firstSetMap.get(<NoneTerminal>nextSymbol)!;\n for (const t of lastFirstSet) {\n newLookaheadSet.add(t);\n }\n if (!lastFirstSet.has(ETokenType.EPSILON)) break;\n }\n if (!terminalExist && lastFirstSet?.has(ETokenType.EPSILON)) {\n for (const t of item.lookaheadSet) {\n newLookaheadSet.add(t);\n }\n }\n\n for (const production of productionList) {\n const newItem = state.createStateItem(production, 0);\n if (!state.items.has(newItem) || !Utils.isSubSet(newLookaheadSet, newItem.lookaheadSet)) {\n state.items.add(newItem);\n newItem.addLookahead(newLookaheadSet);\n this._extendStateItem(state, newItem);\n }\n }\n } else {\n for (const production of productionList) {\n const newItem = state.createStateItem(production, 0);\n if (!state.items.has(newItem) || !Utils.isSubSet(item.lookaheadSet, newItem.lookaheadSet)) {\n state.items.add(newItem);\n newItem.addLookahead(item.lookaheadSet);\n this._extendStateItem(state, newItem);\n }\n }\n }\n }\n\n private _inferNextState(state: State): Set<State> {\n const coreMap: Map<GrammarSymbol, Set<StateItem>> = new Map();\n const stateActionTable: ActionTable = this.actionTable.get(state.id) ?? new Map();\n const stateGotoTable: GotoTable = this.gotoTable.get(state.id) ?? new Map();\n\n this.actionTable.set(state.id, stateActionTable);\n this.gotoTable.set(state.id, stateGotoTable);\n\n for (const stateItem of state.items) {\n if (stateItem.canReduce()) {\n let action: ActionInfo;\n if (stateItem.production.goal !== NoneTerminal.START) {\n action = {\n action: EAction.Reduce,\n target: stateItem.production.id\n };\n } else {\n action = { action: EAction.Accept };\n }\n\n for (const t of stateItem.lookaheadSet) {\n this._addAction(stateActionTable, t, action);\n }\n } else {\n const nextItem = stateItem.advance();\n Utils.addMapSetItem(coreMap, stateItem.curSymbol, nextItem);\n }\n\n stateItem.needReInfer = false;\n }\n\n const newStates = new Set<State>();\n for (const [gs, cores] of coreMap.entries()) {\n const newState = State.create(Array.from(cores));\n if (GrammarUtils.isTerminal(gs)) {\n this._addAction(stateActionTable, <Terminal>gs, {\n action: EAction.Shift,\n target: newState.id\n });\n } else {\n stateGotoTable.set(<NoneTerminal>gs, newState.id);\n }\n\n newStates.add(newState);\n }\n\n return newStates;\n }\n\n /** Resolve shift-reduce/reduce-reduce conflict detect */\n private _addAction(table: ActionTable, terminal: Terminal, action: ActionInfo) {\n const exist = table.get(terminal);\n if (exist && !Utils.isActionEqual(exist, action)) {\n // Resolve dangling else ambiguity\n if (terminal === Keyword.ELSE && exist.action === EAction.Shift && action.action === EAction.Reduce) {\n return;\n } else {\n // #if _VERBOSE\n Logger.warn(\n `conflict detect: <Terminal ${GrammarUtils.toString(terminal)}> \\n`,\n Utils.printAction(exist),\n \"\\n\",\n Utils.printAction(action)\n );\n // #endif\n }\n }\n table.set(terminal, action);\n }\n\n // https://people.cs.pitt.edu/~jmisurda/teaching/cs1622/handouts/cs1622-first_and_follow.pdf\n private computeFirstSet() {\n for (const production of this.grammar.productions.slice(1)) {\n this._computeFirstSetForNT(production.goal);\n }\n }\n\n private _computeFirstSetForNT(NT: NoneTerminal) {\n // circle detect\n const idx = this._firstSetNTStack.findIndex((item) => item === NT);\n if (idx !== -1) {\n const computingFS = this.firstSetMap.get(NT)!;\n const len = this._firstSetNTStack.length;\n for (let i = len - 1; i > idx; i--) {\n const curNT = this._firstSetNTStack[i];\n this.firstSetMap.set(curNT, computingFS);\n }\n return computingFS;\n }\n this._firstSetNTStack.push(NT);\n\n const productionList = this.grammar.getProductionList(NT);\n const firstSet = new Set<Terminal>();\n this.firstSetMap.set(NT, firstSet);\n if (this.grammar.isNullableNT(NT)) firstSet.add(ETokenType.EPSILON);\n\n for (const production of productionList) {\n let i = 0;\n for (; i < production.derivation.length; i++) {\n const gs = production.derivation[i];\n if (GrammarUtils.isTerminal(gs)) {\n firstSet.add(<Terminal>gs);\n break;\n }\n\n const succeedFirstSet = this._computeFirstSetForNT(<NoneTerminal>gs);\n\n for (const item of succeedFirstSet) {\n if (item !== ETokenType.EPSILON) firstSet.add(item);\n }\n if (!this.grammar.isNullableNT(<NoneTerminal>gs)) break;\n }\n if (i === production.derivation.length) firstSet.add(ETokenType.EPSILON);\n }\n\n this._firstSetNTStack.pop();\n return firstSet;\n }\n}\n","import { ETokenType } from \"../common\";\nimport { NoneTerminal, GrammarSymbol } from \"./GrammarSymbol\";\nimport Production from \"../lalr/Production\";\n\nexport class Grammar {\n readonly productions: Production[];\n\n readonly startSymbol: NoneTerminal;\n\n static create(start: NoneTerminal, productions: GrammarSymbol[][]) {\n const _ps = productions.map((gsl) => {\n return new Production(<NoneTerminal>gsl[0], gsl.slice(1));\n });\n return new Grammar(start, _ps);\n }\n\n constructor(start: NoneTerminal, productions: Production[]) {\n this.startSymbol = start;\n productions.unshift(new Production(NoneTerminal.START, [start]));\n this.productions = productions;\n }\n\n getProductionList(nonTerminal: NoneTerminal) {\n return this.productions.filter((item) => item.goal === nonTerminal);\n }\n\n isNullableNT(NT: NoneTerminal) {\n return this.productions.find((item) => item.goal === NT && item.derivation[0] === ETokenType.EPSILON);\n }\n\n getProductionByID(pid: number) {\n return Production.pool.get(pid);\n }\n}\n","// Context Free Grammar of Galacean ShaderLab\nimport { ETokenType } from \"../common\";\nimport { Keyword } from \"../common/enums/Keyword\";\nimport { ASTNode } from \"../parser/AST\";\nimport { Grammar } from \"../parser/Grammar\";\nimport { GrammarSymbol, NoneTerminal } from \"../parser/GrammarSymbol\";\nimport SemanticAnalyzer, { TranslationRule } from \"../parser/SemanticAnalyzer\";\nimport GrammarUtils from \"./Utils\";\n\nconst productionAndRules: [GrammarSymbol[], TranslationRule | undefined][] = [\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.gs_shader_program,\n [[NoneTerminal.global_declaration], [NoneTerminal.gs_shader_program, NoneTerminal.global_declaration]],\n ASTNode.GLShaderProgram.pool\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.global_declaration,\n [\n [NoneTerminal.precision_specifier],\n [NoneTerminal.variable_declaration_statement],\n [NoneTerminal.struct_specifier],\n [NoneTerminal.function_definition],\n [NoneTerminal.global_macro_if_statement],\n [NoneTerminal.macro_undef],\n [Keyword.MACRO_DEFINE_EXPRESSION]\n ],\n ASTNode.GlobalDeclaration.pool\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.macro_call_symbol,\n [[Keyword.MACRO_CALL]],\n ASTNode.MacroCallSymbol.pool\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.macro_call_function,\n [\n [NoneTerminal.macro_call_symbol, ETokenType.LEFT_PAREN, ETokenType.RIGHT_PAREN],\n [\n NoneTerminal.macro_call_symbol,\n ETokenType.LEFT_PAREN,\n NoneTerminal.function_call_parameter_list,\n ETokenType.RIGHT_PAREN\n ]\n ],\n ASTNode.MacroCallFunction.pool\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.macro_undef,\n [\n [Keyword.MACRO_UNDEF, ETokenType.ID],\n [Keyword.MACRO_UNDEF, Keyword.MACRO_CALL]\n ],\n ASTNode.MacroUndef.pool\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.macro_push_context,\n [\n [Keyword.MACRO_IF, Keyword.MACRO_CONDITIONAL_EXPRESSION],\n [Keyword.MACRO_IFDEF, ETokenType.ID],\n [Keyword.MACRO_IFNDEF, ETokenType.ID],\n [Keyword.MACRO_IFDEF, NoneTerminal.macro_call_symbol],\n [Keyword.MACRO_IFNDEF, NoneTerminal.macro_call_symbol]\n ],\n ASTNode.MacroPushContext.pool\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.macro_pop_context,\n [[Keyword.MACRO_ENDIF]],\n ASTNode.MacroPopContext.pool\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.macro_elif_expression,\n [[Keyword.MACRO_ELIF, Keyword.MACRO_CONDITIONAL_EXPRESSION]],\n ASTNode.MacroElifExpression.pool\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.macro_else_expression,\n [[Keyword.MACRO_ELSE]],\n ASTNode.MacroElseExpression.pool\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.global_macro_declaration,\n [[NoneTerminal.global_declaration], [NoneTerminal.global_macro_declaration, NoneTerminal.global_declaration]],\n ASTNode.GlobalMacroDeclaration.pool\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.global_macro_if_statement,\n [\n [NoneTerminal.macro_push_context, NoneTerminal.global_macro_declaration, NoneTerminal.global_macro_branch],\n [NoneTerminal.macro_push_context, NoneTerminal.global_macro_branch]\n ],\n ASTNode.GlobalMacroIfStatement.pool\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.global_macro_branch,\n [\n [NoneTerminal.macro_pop_context],\n [NoneTerminal.macro_elif_expression, NoneTerminal.global_macro_declaration, NoneTerminal.global_macro_branch],\n [NoneTerminal.macro_else_expression, NoneTerminal.global_macro_declaration, NoneTerminal.macro_pop_context],\n [NoneTerminal.macro_elif_expression, NoneTerminal.global_macro_branch],\n [NoneTerminal.macro_else_expression, NoneTerminal.macro_pop_context]\n ],\n ASTNode.GlobalMacroBranch.pool\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.variable_declaration,\n [\n [NoneTerminal.fully_specified_type, ETokenType.ID],\n [NoneTerminal.fully_specified_type, ETokenType.ID, NoneTerminal.array_specifier],\n [NoneTerminal.fully_specified_type, ETokenType.ID, ETokenType.EQUAL, NoneTerminal.initializer]\n ],\n ASTNode.VariableDeclaration.pool\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.variable_declaration_list,\n [\n [NoneTerminal.variable_declaration],\n [NoneTerminal.variable_declaration_list, ETokenType.COMMA, ETokenType.ID],\n [NoneTerminal.variable_declaration_list, ETokenType.COMMA, ETokenType.ID, NoneTerminal.array_specifier]\n ],\n ASTNode.VariableDeclarationList.pool\n ),\n\n ...GrammarUtils.createProductionWithOptions(NoneTerminal.variable_declaration_statement, [\n [NoneTerminal.variable_declaration_list, ETokenType.SEMICOLON]\n ]),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.ext_builtin_type_specifier_nonarray,\n [\n [Keyword.VOID],\n [Keyword.FLOAT],\n [Keyword.BOOL],\n [Keyword.INT],\n [Keyword.UINT],\n [Keyword.VEC2],\n [Keyword.VEC3],\n [Keyword.VEC4],\n [Keyword.BVEC2],\n [Keyword.BVEC3],\n [Keyword.BVEC4],\n [Keyword.IVEC2],\n [Keyword.IVEC3],\n [Keyword.IVEC4],\n [Keyword.UVEC2],\n [Keyword.UVEC3],\n [Keyword.UVEC4],\n [Keyword.MAT2],\n [Keyword.MAT3],\n [Keyword.MAT4],\n [Keyword.MAT2X3],\n [Keyword.MAT2X4],\n [Keyword.MAT3X2],\n [Keyword.MAT3X4],\n [Keyword.MAT4X2],\n [Keyword.MAT4X3],\n [Keyword.SAMPLER2D],\n [Keyword.SAMPLER3D],\n [Keyword.SAMPLER_CUBE],\n [Keyword.SAMPLER2D_SHADOW],\n [Keyword.SAMPLER_CUBE_SHADOW],\n [Keyword.SAMPLER2D_ARRAY],\n [Keyword.SAMPLER2D_ARRAY_SHADOW],\n [Keyword.I_SAMPLER2D],\n [Keyword.I_SAMPLER3D],\n [Keyword.I_SAMPLER_CUBE],\n [Keyword.I_SAMPLER2D_ARRAY],\n [Keyword.U_SAMPLER2D],\n [Keyword.U_SAMPLER3D],\n [Keyword.U_SAMPLER_CUBE],\n [Keyword.U_SAMPLER2D_ARRAY]\n ],\n ASTNode.ExtBuiltinTypeSpecifierNonArray.pool\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.type_specifier_nonarray,\n [[ETokenType.ID], [NoneTerminal.ext_builtin_type_specifier_nonarray]],\n ASTNode.TypeSpecifierNonArray.pool\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.fully_specified_type,\n [[NoneTerminal.type_specifier], [NoneTerminal.type_qualifier, NoneTerminal.type_specifier]],\n ASTNode.FullySpecifiedType.pool\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.type_specifier,\n [\n [NoneTerminal.type_specifier_nonarray],\n [NoneTerminal.ext_builtin_type_specifier_nonarray, NoneTerminal.array_specifier]\n ],\n ASTNode.TypeSpecifier.pool\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.type_qualifier,\n [[NoneTerminal.single_type_qualifier], [NoneTerminal.type_qualifier, NoneTerminal.single_type_qualifier]],\n ASTNode.TypeQualifier.pool\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.single_type_qualifier,\n [\n [NoneTerminal.storage_qualifier],\n [NoneTerminal.precision_qualifier],\n [NoneTerminal.interpolation_qualifier],\n [NoneTerminal.invariant_qualifier],\n [Keyword.PRECISE]\n ],\n ASTNode.SingleTypeQualifier.pool\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.storage_qualifier,\n [[Keyword.CONST], [Keyword.IN], [Keyword.INOUT], [Keyword.OUT], [Keyword.CENTROID]],\n // #if _VERBOSE\n ASTNode.StorageQualifier.pool\n // #endif\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.interpolation_qualifier,\n [[Keyword.SMOOTH], [Keyword.FLAT]],\n // #if _VERBOSE\n ASTNode.InterpolationQualifier.pool\n // #endif\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.invariant_qualifier,\n [[Keyword.INVARIANT]],\n // #if _VERBOSE\n ASTNode.InvariantQualifier.pool\n // #endif\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.precision_qualifier,\n [[Keyword.HIGHP], [Keyword.MEDIUMP], [Keyword.LOWP]],\n // #if _VERBOSE\n ASTNode.PrecisionQualifier.pool\n // #endif\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.struct_specifier,\n [\n [\n Keyword.STRUCT,\n ETokenType.ID,\n ETokenType.LEFT_BRACE,\n NoneTerminal.struct_declaration_list,\n ETokenType.RIGHT_BRACE,\n ETokenType.SEMICOLON\n ],\n [\n Keyword.STRUCT,\n ETokenType.LEFT_BRACE,\n NoneTerminal.struct_declaration_list,\n ETokenType.RIGHT_BRACE,\n ETokenType.SEMICOLON\n ]\n ],\n ASTNode.StructSpecifier.pool\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.struct_declaration_list,\n [[NoneTerminal.struct_declaration], [NoneTerminal.struct_declaration_list, NoneTerminal.struct_declaration]],\n ASTNode.StructDeclarationList.pool\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.struct_declaration,\n [\n [NoneTerminal.type_specifier, NoneTerminal.struct_declarator_list, ETokenType.SEMICOLON],\n [\n NoneTerminal.type_qualifier,\n NoneTerminal.type_specifier,\n NoneTerminal.struct_declarator_list,\n ETokenType.SEMICOLON\n ],\n [\n NoneTerminal.layout_qualifier,\n NoneTerminal.type_specifier,\n NoneTerminal.struct_declarator,\n ETokenType.SEMICOLON\n ],\n [NoneTerminal.macro_struct_declaration]\n ],\n ASTNode.StructDeclaration.pool\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.macro_struct_declaration,\n [\n [NoneTerminal.macro_push_context, NoneTerminal.struct_declaration_list, NoneTerminal.macro_struct_branch],\n [NoneTerminal.macro_push_context, NoneTerminal.macro_struct_branch]\n ],\n ASTNode.MacroStructDeclaration.pool\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.macro_struct_branch,\n [\n [NoneTerminal.macro_pop_context],\n [NoneTerminal.macro_elif_expression, NoneTerminal.struct_declaration_list, NoneTerminal.macro_struct_branch],\n [NoneTerminal.macro_else_expression, NoneTerminal.struct_declaration_list, NoneTerminal.macro_pop_context],\n [NoneTerminal.macro_elif_expression, NoneTerminal.macro_struct_branch],\n [NoneTerminal.macro_else_expression, NoneTerminal.macro_pop_context]\n ],\n ASTNode.MacroStructBranch.pool\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.layout_qualifier,\n [\n [\n Keyword.LAYOUT,\n ETokenType.LEFT_PAREN,\n Keyword.LOCATION,\n ETokenType.EQUAL,\n ETokenType.INT_CONSTANT,\n ETokenType.RIGHT_PAREN\n ]\n ],\n ASTNode.LayoutQualifier.pool\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.struct_declarator_list,\n [\n [NoneTerminal.struct_declarator],\n [NoneTerminal.struct_declarator_list, ETokenType.COMMA, NoneTerminal.struct_declarator]\n ],\n ASTNode.StructDeclaratorList.pool\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.struct_declarator,\n [[ETokenType.ID], [ETokenType.ID, NoneTerminal.array_specifier]],\n ASTNode.StructDeclarator.pool\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.array_specifier,\n [\n [ETokenType.LEFT_BRACKET, ETokenType.RIGHT_BRACKET],\n [ETokenType.LEFT_BRACKET, NoneTerminal.integer_constant_expression, ETokenType.RIGHT_BRACKET]\n ],\n ASTNode.ArraySpecifier.pool\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.integer_constant_expression_operator,\n [[ETokenType.PLUS], [ETokenType.DASH], [ETokenType.STAR], [ETokenType.SLASH], [ETokenType.PERCENT]],\n ASTNode.IntegerConstantExpressionOperator.pool\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.integer_constant_expression,\n [\n [NoneTerminal.variable_identifier],\n [ETokenType.INT_CONSTANT],\n [\n NoneTerminal.integer_constant_expression,\n NoneTerminal.integer_constant_expression_operator,\n ETokenType.INT_CONSTANT\n ],\n [\n NoneTerminal.integer_constant_expression,\n NoneTerminal.integer_constant_expression_operator,\n NoneTerminal.variable_identifier\n ]\n ],\n ASTNode.IntegerConstantExpression.pool\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.conditional_expression,\n [\n [NoneTerminal.logical_or_expression],\n [\n NoneTerminal.logical_or_expression,\n ETokenType.QUESTION,\n NoneTerminal.expression,\n ETokenType.COLON,\n NoneTerminal.assignment_expression\n ]\n ],\n // #if _VERBOSE\n ASTNode.ConditionalExpression.pool\n // #endif\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.logical_or_expression,\n [\n [NoneTerminal.logical_xor_expression],\n [NoneTerminal.logical_or_expression, ETokenType.OR_OP, NoneTerminal.logical_xor_expression]\n ],\n // #if _VERBOSE\n ASTNode.LogicalOrExpression.pool\n // #endif\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.logical_xor_expression,\n [\n [NoneTerminal.logical_and_expression],\n [NoneTerminal.logical_xor_expression, ETokenType.XOR_OP, NoneTerminal.logical_and_expression]\n ],\n // #if _VERBOSE\n ASTNode.LogicalXorExpression.pool\n // #endif\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.logical_and_expression,\n [\n [NoneTerminal.inclusive_or_expression],\n [NoneTerminal.logical_and_expression, ETokenType.AND_OP, NoneTerminal.inclusive_or_expression]\n ],\n // #if _VERBOSE\n ASTNode.LogicalAndExpression.pool\n // #endif\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.inclusive_or_expression,\n [\n [NoneTerminal.exclusive_or_expression],\n [NoneTerminal.inclusive_or_expression, ETokenType.VERTICAL_BAR, NoneTerminal.exclusive_or_expression]\n ],\n // #if _VERBOSE\n ASTNode.InclusiveOrExpression.pool\n // #endif\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.exclusive_or_expression,\n [\n [NoneTerminal.and_expression],\n [NoneTerminal.exclusive_or_expression, ETokenType.CARET, NoneTerminal.and_expression]\n ],\n // #if _VERBOSE\n ASTNode.ExclusiveOrExpression.pool\n // #endif\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.and_expression,\n [\n [NoneTerminal.equality_expression],\n [NoneTerminal.and_expression, ETokenType.AMPERSAND, NoneTerminal.equality_expression]\n ],\n // #if _VERBOSE\n ASTNode.AndExpression.pool\n // #endif\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.equality_expression,\n [\n [NoneTerminal.relational_expression],\n [NoneTerminal.equality_expression, ETokenType.EQ_OP, NoneTerminal.relational_expression],\n [NoneTerminal.equality_expression, ETokenType.NE_OP, NoneTerminal.relational_expression]\n ],\n // #if _VERBOSE\n ASTNode.EqualityExpression.pool\n // #endif\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.relational_expression,\n [\n [NoneTerminal.shift_expression],\n [NoneTerminal.relational_expression, ETokenType.LEFT_ANGLE, NoneTerminal.shift_expression],\n [NoneTerminal.relational_expression, ETokenType.RIGHT_ANGLE, NoneTerminal.shift_expression],\n [NoneTerminal.relational_expression, ETokenType.LE_OP, NoneTerminal.shift_expression],\n [NoneTerminal.relational_expression, ETokenType.GE_OP, NoneTerminal.shift_expression]\n ],\n // #if _VERBOSE\n ASTNode.RelationalExpression.pool\n // #endif\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.shift_expression,\n [\n [NoneTerminal.additive_expression],\n [NoneTerminal.shift_expression, ETokenType.LEFT_OP, NoneTerminal.additive_expression],\n [NoneTerminal.shift_expression, ETokenType.RIGHT_OP, NoneTerminal.additive_expression]\n ],\n // #if _VERBOSE\n ASTNode.ShiftExpression.pool\n // #endif\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.additive_expression,\n [\n [NoneTerminal.multiplicative_expression],\n [NoneTerminal.additive_expression, ETokenType.PLUS, NoneTerminal.multiplicative_expression],\n [NoneTerminal.additive_expression, ETokenType.DASH, NoneTerminal.multiplicative_expression]\n ],\n // #if _VERBOSE\n ASTNode.AdditiveExpression.pool\n // #endif\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.multiplicative_expression,\n [\n [NoneTerminal.unary_expression],\n [NoneTerminal.multiplicative_expression, ETokenType.STAR, NoneTerminal.unary_expression],\n [NoneTerminal.multiplicative_expression, ETokenType.SLASH, NoneTerminal.unary_expression],\n [NoneTerminal.multiplicative_expression, ETokenType.PERCENT, NoneTerminal.unary_expression]\n ],\n // #if _VERBOSE\n ASTNode.MultiplicativeExpression.pool\n // #endif\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.unary_expression,\n [\n [NoneTerminal.postfix_expression],\n [ETokenType.INC_OP, NoneTerminal.unary_expression],\n [ETokenType.DEC_OP, NoneTerminal.unary_expression],\n [NoneTerminal.unary_operator, NoneTerminal.unary_expression]\n ],\n // #if _VERBOSE\n ASTNode.UnaryExpression.pool\n // #endif\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.unary_operator,\n [[ETokenType.PLUS], [ETokenType.DASH], [ETokenType.BANG], [ETokenType.TILDE]],\n // #if _VERBOSE\n ASTNode.UnaryOperator.pool\n // #endif\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.postfix_expression,\n [\n [NoneTerminal.primary_expression],\n [NoneTerminal.postfix_expression, ETokenType.LEFT_BRACKET, NoneTerminal.expression, ETokenType.RIGHT_BRACKET],\n [NoneTerminal.function_call],\n [NoneTerminal.postfix_expression, ETokenType.DOT, ETokenType.ID],\n [NoneTerminal.postfix_expression, ETokenType.DOT, NoneTerminal.function_call],\n [NoneTerminal.postfix_expression, ETokenType.INC_OP],\n [NoneTerminal.postfix_expression, ETokenType.DEC_OP]\n ],\n ASTNode.PostfixExpression.pool\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.primary_expression,\n [\n [NoneTerminal.variable_identifier],\n [ETokenType.INT_CONSTANT],\n [ETokenType.FLOAT_CONSTANT],\n [Keyword.True],\n [Keyword.False],\n [ETokenType.LEFT_PAREN, NoneTerminal.expression, ETokenType.RIGHT_PAREN]\n ],\n ASTNode.PrimaryExpression.pool\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.expression,\n [\n [NoneTerminal.assignment_expression],\n [NoneTerminal.expression, ETokenType.COMMA, NoneTerminal.assignment_expression]\n ],\n ASTNode.Expression.pool\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.assignment_expression,\n [\n [NoneTerminal.conditional_expression],\n [NoneTerminal.unary_expression, NoneTerminal.assignment_operator, NoneTerminal.assignment_expression]\n ],\n ASTNode.AssignmentExpression.pool\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.assignment_operator,\n [\n [ETokenType.EQUAL],\n [ETokenType.MUL_ASSIGN],\n [ETokenType.DIV_ASSIGN],\n [ETokenType.MOD_ASSIGN],\n [ETokenType.ADD_ASSIGN],\n [ETokenType.SUB_ASSIGN],\n [ETokenType.LEFT_ASSIGN],\n [ETokenType.RIGHT_ASSIGN],\n [ETokenType.AND_ASSIGN],\n [ETokenType.XOR_ASSIGN],\n [ETokenType.OR_ASSIGN]\n ],\n // #if _VERBOSE\n ASTNode.AssignmentOperator.pool\n // #endif\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.function_call,\n [[NoneTerminal.function_call_generic]],\n ASTNode.FunctionCall.pool\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.function_call_generic,\n [\n [\n NoneTerminal.function_identifier,\n ETokenType.LEFT_PAREN,\n NoneTerminal.function_call_parameter_list,\n ETokenType.RIGHT_PAREN\n ],\n [NoneTerminal.function_identifier, ETokenType.LEFT_PAREN, ETokenType.RIGHT_PAREN],\n [NoneTerminal.function_identifier, Keyword.VOID, ETokenType.RIGHT_PAREN]\n ],\n ASTNode.FunctionCallGeneric.pool\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.function_call_parameter_list,\n [\n [NoneTerminal.assignment_expression],\n [NoneTerminal.function_call_parameter_list, ETokenType.COMMA, NoneTerminal.assignment_expression],\n [NoneTerminal.macro_call_arg_block],\n [NoneTerminal.function_call_parameter_list, NoneTerminal.macro_call_arg_block]\n ],\n ASTNode.FunctionCallParameterList.pool\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.macro_call_arg_case_list,\n [\n [NoneTerminal.assignment_expression],\n [ETokenType.COMMA, NoneTerminal.assignment_expression],\n [NoneTerminal.macro_call_arg_block],\n [NoneTerminal.macro_call_arg_case_list, NoneTerminal.macro_call_arg_block],\n [NoneTerminal.macro_call_arg_case_list, ETokenType.COMMA, NoneTerminal.assignment_expression]\n ],\n ASTNode.MacroCallArgCaseList.pool\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.macro_call_arg_block,\n [\n [NoneTerminal.macro_push_context, NoneTerminal.macro_call_arg_branch],\n [NoneTerminal.macro_push_context, NoneTerminal.macro_call_arg_case_list, NoneTerminal.macro_call_arg_branch]\n ],\n ASTNode.MacroCallArgBlock.pool\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.macro_call_arg_branch,\n [\n [NoneTerminal.macro_pop_context],\n [NoneTerminal.macro_elif_expression, NoneTerminal.macro_call_arg_case_list, NoneTerminal.macro_call_arg_branch],\n [NoneTerminal.macro_else_expression, NoneTerminal.macro_call_arg_case_list, NoneTerminal.macro_pop_context],\n [NoneTerminal.macro_elif_expression, NoneTerminal.macro_call_arg_branch],\n [NoneTerminal.macro_else_expression, NoneTerminal.macro_pop_context]\n ],\n ASTNode.MacroCallArgBranch.pool\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.function_identifier,\n [[NoneTerminal.type_specifier]],\n ASTNode.FunctionIdentifier.pool\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.function_definition,\n [[NoneTerminal.function_prototype, NoneTerminal.compound_statement_no_scope]],\n ASTNode.FunctionDefinition.pool\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.function_prototype,\n [[NoneTerminal.function_declarator, ETokenType.RIGHT_PAREN]],\n ASTNode.FunctionProtoType.pool\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.function_declarator,\n [[NoneTerminal.function_header], [NoneTerminal.function_header, NoneTerminal.function_parameter_list]],\n ASTNode.FunctionDeclarator.pool\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.function_header,\n [[NoneTerminal.fully_specified_type, ETokenType.ID, ETokenType.LEFT_PAREN]],\n ASTNode.FunctionHeader.pool\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.function_parameter_list,\n [\n [NoneTerminal.parameter_declaration],\n [NoneTerminal.function_parameter_list, ETokenType.COMMA, NoneTerminal.parameter_declaration],\n [NoneTerminal.macro_param_block],\n [NoneTerminal.function_parameter_list, NoneTerminal.macro_param_block]\n ],\n ASTNode.FunctionParameterList.pool\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.macro_param_case_list,\n [\n [NoneTerminal.parameter_declaration],\n [ETokenType.COMMA, NoneTerminal.parameter_declaration],\n [NoneTerminal.macro_param_block],\n [NoneTerminal.macro_param_case_list, NoneTerminal.macro_param_block],\n [NoneTerminal.macro_param_case_list, ETokenType.COMMA, NoneTerminal.parameter_declaration]\n ],\n ASTNode.MacroParamCaseList.pool\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.macro_param_block,\n [\n [NoneTerminal.macro_push_context, NoneTerminal.macro_parameter_branch],\n [NoneTerminal.macro_push_context, NoneTerminal.macro_param_case_list, NoneTerminal.macro_parameter_branch]\n ],\n ASTNode.MacroParamBlock.pool\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.macro_parameter_branch,\n [\n [NoneTerminal.macro_pop_context],\n [NoneTerminal.macro_elif_expression, NoneTerminal.macro_param_case_list, NoneTerminal.macro_parameter_branch],\n [NoneTerminal.macro_else_expression, NoneTerminal.macro_param_case_list, NoneTerminal.macro_pop_context],\n [NoneTerminal.macro_elif_expression, NoneTerminal.macro_parameter_branch],\n [NoneTerminal.macro_else_expression, NoneTerminal.macro_pop_context]\n ],\n ASTNode.MacroParameterBranch.pool\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.parameter_declaration,\n [\n [NoneTerminal.type_qualifier, NoneTerminal.parameter_declarator],\n [NoneTerminal.parameter_declarator],\n [NoneTerminal.macro_call_symbol],\n [NoneTerminal.macro_call_function]\n ],\n ASTNode.ParameterDeclaration.pool\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.parameter_declarator,\n [\n [NoneTerminal.type_specifier, ETokenType.ID],\n [NoneTerminal.type_specifier, ETokenType.ID, NoneTerminal.array_specifier]\n ],\n ASTNode.ParameterDeclarator.pool\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.statement_list,\n [[NoneTerminal.statement], [NoneTerminal.statement_list, NoneTerminal.statement]],\n ASTNode.StatementList.pool\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.statement,\n [[NoneTerminal.compound_statement], [NoneTerminal.simple_statement]],\n // #if _VERBOSE\n ASTNode.Statement.pool\n // #endif\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.compound_statement_no_scope,\n [\n [ETokenType.LEFT_BRACE, ETokenType.RIGHT_BRACE],\n [ETokenType.LEFT_BRACE, NoneTerminal.statement_list, ETokenType.RIGHT_BRACE]\n ],\n ASTNode.CompoundStatementNoScope.pool\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.compound_statement,\n [\n [ETokenType.LEFT_BRACE, ETokenType.RIGHT_BRACE],\n [NoneTerminal.scope_brace, NoneTerminal.statement_list, NoneTerminal.scope_end_brace]\n ],\n // #if _VERBOSE\n ASTNode.CompoundStatement.pool\n // #endif\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.simple_statement,\n [\n [NoneTerminal.declaration],\n [NoneTerminal.expression_statement],\n [NoneTerminal.selection_statement],\n [NoneTerminal.iteration_statement],\n [NoneTerminal.jump_statement],\n [NoneTerminal.macro_if_statement],\n [NoneTerminal.macro_undef],\n [Keyword.MACRO_DEFINE_EXPRESSION]\n ],\n // #if _VERBOSE\n ASTNode.SimpleStatement.pool\n // #endif\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.declaration,\n [\n [NoneTerminal.function_prototype, ETokenType.SEMICOLON],\n [NoneTerminal.init_declarator_list, ETokenType.SEMICOLON],\n [\n Keyword.PRECISION,\n NoneTerminal.precision_qualifier,\n NoneTerminal.ext_builtin_type_specifier_nonarray,\n ETokenType.SEMICOLON\n ],\n [NoneTerminal.type_qualifier, ETokenType.ID, ETokenType.SEMICOLON],\n [NoneTerminal.type_qualifier, ETokenType.ID, NoneTerminal.identifier_list, ETokenType.SEMICOLON]\n ],\n ASTNode.Declaration.pool\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.identifier_list,\n [\n [ETokenType.COMMA, ETokenType.ID],\n [NoneTerminal.identifier_list, ETokenType.COMMA, ETokenType.ID]\n ],\n ASTNode.IdentifierList.pool\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.init_declarator_list,\n [\n [NoneTerminal.single_declaration],\n [NoneTerminal.init_declarator_list, ETokenType.COMMA, ETokenType.ID],\n [NoneTerminal.init_declarator_list, ETokenType.COMMA, ETokenType.ID, NoneTerminal.array_specifier],\n [\n NoneTerminal.init_declarator_list,\n ETokenType.COMMA,\n ETokenType.ID,\n NoneTerminal.array_specifier,\n ETokenType.EQUAL,\n NoneTerminal.initializer\n ],\n [NoneTerminal.init_declarator_list, ETokenType.COMMA, ETokenType.ID, ETokenType.EQUAL, NoneTerminal.initializer]\n ],\n ASTNode.InitDeclaratorList.pool\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.single_declaration,\n [\n [NoneTerminal.fully_specified_type, ETokenType.ID],\n [NoneTerminal.fully_specified_type, ETokenType.ID, NoneTerminal.array_specifier],\n [\n NoneTerminal.fully_specified_type,\n ETokenType.ID,\n NoneTerminal.array_specifier,\n ETokenType.EQUAL,\n NoneTerminal.initializer\n ],\n [NoneTerminal.fully_specified_type, ETokenType.ID, ETokenType.EQUAL, NoneTerminal.initializer]\n ],\n ASTNode.SingleDeclaration.pool\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.initializer,\n [\n [NoneTerminal.assignment_expression],\n [ETokenType.LEFT_BRACE, NoneTerminal.initializer_list, ETokenType.RIGHT_BRACE]\n ],\n // #if _VERBOSE\n ASTNode.Initializer.pool\n // #endif\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.initializer_list,\n [[NoneTerminal.initializer], [NoneTerminal.initializer_list, ETokenType.COMMA, NoneTerminal.initializer]],\n // #if _VERBOSE\n ASTNode.InitializerList.pool\n // #endif\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.expression_statement,\n [[ETokenType.SEMICOLON], [NoneTerminal.expression, ETokenType.SEMICOLON]],\n // #if _VERBOSE\n ASTNode.ExpressionStatement.pool\n // #endif\n ),\n\n // dangling else ambiguity\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.selection_statement,\n [\n [Keyword.IF, ETokenType.LEFT_PAREN, NoneTerminal.expression, ETokenType.RIGHT_PAREN, NoneTerminal.statement],\n [\n Keyword.IF,\n ETokenType.LEFT_PAREN,\n NoneTerminal.expression,\n ETokenType.RIGHT_PAREN,\n NoneTerminal.statement,\n Keyword.ELSE,\n NoneTerminal.statement\n ]\n ],\n // #if _VERBOSE\n ASTNode.SelectionStatement.pool\n // #endif\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.iteration_statement,\n [\n [Keyword.WHILE, ETokenType.LEFT_PAREN, NoneTerminal.condition, ETokenType.RIGHT_PAREN, NoneTerminal.statement],\n [\n Keyword.FOR,\n ETokenType.LEFT_PAREN,\n NoneTerminal.for_init_statement,\n NoneTerminal.for_rest_statement,\n ETokenType.RIGHT_PAREN,\n NoneTerminal.statement\n ]\n ],\n // #if _VERBOSE\n ASTNode.IterationStatement.pool\n // #endif\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.precision_specifier,\n [\n [\n Keyword.PRECISION,\n NoneTerminal.precision_qualifier,\n NoneTerminal.ext_builtin_type_specifier_nonarray,\n ETokenType.SEMICOLON\n ]\n ],\n ASTNode.PrecisionSpecifier.pool\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.for_init_statement,\n [[NoneTerminal.expression_statement], [NoneTerminal.declaration]],\n // #if _VERBOSE\n ASTNode.ForInitStatement.pool\n // #endif\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.condition,\n [\n [NoneTerminal.expression],\n [NoneTerminal.fully_specified_type, ETokenType.ID, ETokenType.EQUAL, NoneTerminal.initializer]\n ],\n // #if _VERBOSE\n ASTNode.Condition.pool\n // #endif\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.for_rest_statement,\n [\n [NoneTerminal.conditionopt, ETokenType.SEMICOLON],\n [NoneTerminal.conditionopt, ETokenType.SEMICOLON, NoneTerminal.expression]\n ],\n // #if _VERBOSE\n ASTNode.ForRestStatement.pool\n // #endif\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.conditionopt,\n [[ETokenType.EPSILON], [NoneTerminal.condition]],\n // #if _VERBOSE\n ASTNode.ConditionOpt.pool\n // #endif\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.jump_statement,\n [\n [Keyword.CONTINUE, ETokenType.SEMICOLON],\n [Keyword.BREAK, ETokenType.SEMICOLON],\n [Keyword.RETURN, ETokenType.SEMICOLON],\n [Keyword.RETURN, NoneTerminal.expression, ETokenType.SEMICOLON],\n [Keyword.DISCARD, ETokenType.SEMICOLON]\n ],\n ASTNode.JumpStatement.pool\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.scope_brace,\n [[ETokenType.LEFT_BRACE]],\n ASTNode.ScopeBrace.pool\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.scope_end_brace,\n [[ETokenType.RIGHT_BRACE]],\n ASTNode.ScopeEndBrace.pool\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.variable_identifier,\n [[ETokenType.ID], [NoneTerminal.macro_call_symbol], [NoneTerminal.macro_call_function]],\n ASTNode.VariableIdentifier.pool\n ),\n\n // Macros ...\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.macro_if_statement,\n [\n [NoneTerminal.macro_push_context, NoneTerminal.statement_list, NoneTerminal.macro_branch],\n [NoneTerminal.macro_push_context, NoneTerminal.macro_branch]\n ],\n ASTNode.MacroIfStatement.pool\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.macro_branch,\n [\n [NoneTerminal.macro_pop_context],\n [NoneTerminal.macro_elif_expression, NoneTerminal.statement_list, NoneTerminal.macro_branch],\n [NoneTerminal.macro_else_expression, NoneTerminal.statement_list, NoneTerminal.macro_pop_context],\n [NoneTerminal.macro_elif_expression, NoneTerminal.macro_branch],\n [NoneTerminal.macro_else_expression, NoneTerminal.macro_pop_context]\n ],\n ASTNode.MacroBranch.pool\n )\n];\n\nconst createGrammar = () =>\n Grammar.create(\n NoneTerminal.gs_shader_program,\n productionAndRules.map((item) => item[0])\n );\n\nconst addTranslationRule = (sa: SemanticAnalyzer) => {\n for (let i = 0; i < productionAndRules.length; i++) {\n const rule = productionAndRules[i][1];\n if (rule) {\n sa.addTranslationRule(i, rule);\n }\n }\n};\n\nexport { addTranslationRule, createGrammar };\n","import { Logger } from \"@galacean/engine\";\nimport { ETokenType } from \"../common\";\nimport { BaseToken } from \"../common/BaseToken\";\nimport { GSError, GSErrorName } from \"../GSError\";\nimport { LALR1 } from \"../lalr\";\nimport { addTranslationRule, createGrammar } from \"../lalr/CFG\";\nimport { EAction, StateActionTable, StateGotoTable } from \"../lalr/types\";\nimport { MacroDefineList } from \"../Preprocessor\";\nimport { ParserUtils } from \"../ParserUtils\";\nimport { ShaderLab } from \"../ShaderLab\";\nimport { ShaderLabUtils } from \"../ShaderLabUtils\";\nimport { ASTNode, TreeNode } from \"./AST\";\nimport { Grammar } from \"./Grammar\";\nimport { GrammarSymbol, NoneTerminal } from \"./GrammarSymbol\";\nimport SematicAnalyzer from \"./SemanticAnalyzer\";\nimport { TraceStackItem } from \"./types\";\n\n/**\n * The syntax parser and sematic analyzer of `ShaderLab` compiler\n */\nexport class ShaderTargetParser {\n readonly actionTable: StateActionTable;\n readonly gotoTable: StateGotoTable;\n readonly grammar: Grammar;\n readonly sematicAnalyzer: SematicAnalyzer;\n private _traceBackStack: (TraceStackItem | number)[] = [];\n\n private get curState() {\n return this._traceBackStack[this._traceBackStack.length - 1] as number;\n }\n private get stateActionTable() {\n return this.actionTable.get(this.curState)!;\n }\n private get stateGotoTable() {\n return this.gotoTable.get(this.curState);\n }\n\n // #if _VERBOSE\n /** @internal */\n get errors() {\n return this.sematicAnalyzer.errors;\n }\n // #endif\n\n static _singleton: ShaderTargetParser;\n\n static create() {\n if (!this._singleton) {\n const grammar = createGrammar();\n const generator = new LALR1(grammar);\n generator.generate();\n this._singleton = new ShaderTargetParser(generator.actionTable, generator.gotoTable, grammar);\n addTranslationRule(this._singleton.sematicAnalyzer);\n }\n\n return this._singleton;\n }\n\n private constructor(actionTable: StateActionTable, gotoTable: StateGotoTable, grammar: Grammar) {\n this.actionTable = actionTable;\n this.gotoTable = gotoTable;\n this.grammar = grammar;\n this.sematicAnalyzer = new SematicAnalyzer();\n }\n\n parse(tokens: Generator<BaseToken, BaseToken>, macroDefineList: MacroDefineList): ASTNode.GLShaderProgram | null {\n this.sematicAnalyzer.reset(macroDefineList);\n const start = performance.now();\n const { _traceBackStack: traceBackStack, sematicAnalyzer } = this;\n traceBackStack.push(0);\n\n let nextToken = tokens.next();\n let loopCount = 0;\n while (true) {\n loopCount += 1;\n const token = nextToken.value;\n\n const actionInfo = this.stateActionTable.get(token.type);\n if (actionInfo?.action === EAction.Shift) {\n traceBackStack.push(token, actionInfo.target!);\n nextToken = tokens.next();\n } else if (actionInfo?.action === EAction.Accept) {\n Logger.info(\n `[Task - AST compilation] Accept! State automata run ${loopCount} times! cost time ${\n performance.now() - start\n }ms`\n );\n sematicAnalyzer.acceptRule?.(sematicAnalyzer);\n return sematicAnalyzer.semanticStack.pop() as ASTNode.GLShaderProgram;\n } else if (actionInfo?.action === EAction.Reduce) {\n const target = actionInfo.target!;\n const reduceProduction = this.grammar.getProductionByID(target)!;\n const translationRule = sematicAnalyzer.getTranslationRule(reduceProduction.id);\n\n const values: (TreeNode | BaseToken)[] = [];\n\n for (let i = reduceProduction.derivation.length - 1; i >= 0; i--) {\n if (reduceProduction.derivation[i] === ETokenType.EPSILON) continue;\n traceBackStack.pop();\n const token = traceBackStack.pop();\n if (token instanceof BaseToken) {\n values.unshift(token);\n } else {\n const astNode = sematicAnalyzer.semanticStack.pop()!;\n values.unshift(astNode);\n }\n }\n translationRule?.(sematicAnalyzer, ...values);\n\n const gotoTable = this.stateGotoTable;\n traceBackStack.push(reduceProduction.goal);\n\n const nextState = gotoTable?.get(reduceProduction.goal)!;\n traceBackStack.push(nextState);\n continue;\n } else {\n const error = ShaderLabUtils.createGSError(\n `Unexpected token ${token.lexeme}`,\n GSErrorName.CompilationError,\n ShaderLab._processingPassText,\n token.location\n );\n // #if _VERBOSE\n this.sematicAnalyzer.errors.push(<GSError>error);\n // #endif\n return null;\n }\n }\n }\n\n // #if _VERBOSE\n private _printStack(nextToken: BaseToken) {\n let str = \"\";\n for (let i = 0; i < this._traceBackStack.length - 1; i++) {\n const state = <NoneTerminal>this._traceBackStack[i++];\n const token = this._traceBackStack[i];\n str += `State${state} - ${(<BaseToken>token).lexeme ?? ParserUtils.toString(token as GrammarSymbol)}; `;\n }\n str += `State${this._traceBackStack[this._traceBackStack.length - 1]} --- ${nextToken.lexeme}`;\n Logger.info(str);\n }\n // #endif\n}\n","function _extends() {\n _extends = Object.assign || function assign(target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n for (var key in source) if (Object.prototype.hasOwnProperty.call(source, key)) target[key] = source[key];\n }\n\n return target;\n };\n\n return _extends.apply(this, arguments);\n}\nexport { _extends as _ };\n","import { IRenderStates, IShaderPassSource, IShaderSource, ISubShaderSource } from \"@galacean/engine-design\";\n\nexport class ShaderSourceFactory {\n static createRenderStates(): IRenderStates {\n return {\n constantMap: {},\n variableMap: {}\n };\n }\n\n static createShaderSource(name: string): IShaderSource {\n return {\n name,\n subShaders: [],\n pendingContents: [],\n renderStates: this.createRenderStates()\n };\n }\n\n static createSubShaderSource(name: string): ISubShaderSource {\n return {\n name,\n passes: [],\n pendingContents: [],\n tags: {},\n renderStates: this.createRenderStates()\n };\n }\n\n static createShaderPassSource(name: string): IShaderPassSource {\n return {\n name,\n pendingContents: [],\n tags: {},\n renderStates: this.createRenderStates()\n } as IShaderPassSource;\n }\n\n static createUsePass(name: string): IShaderPassSource {\n return {\n name,\n pendingContents: [],\n isUsePass: true,\n tags: {},\n renderStates: this.createRenderStates()\n } as IShaderPassSource;\n }\n}\n","import { IBaseSymbol } from \"../common/IBaseSymbol\";\n\nexport class ShaderSourceSymbol implements IBaseSymbol {\n public isInMacroBranch: boolean = false;\n\n constructor(\n public ident: string,\n public type: number,\n public value?: any\n ) {}\n\n set(ident: string, type: number, value?: any): void {\n this.ident = ident;\n this.type = type;\n this.value = value;\n }\n\n equal(other: ShaderSourceSymbol): boolean {\n return this.type === other.type;\n }\n}\n","import { Color } from \"@galacean/engine\";\nimport { ETokenType, ShaderPosition, ShaderRange } from \"../common\";\nimport { BaseLexer } from \"../common/BaseLexer\";\nimport { BaseToken } from \"../common/BaseToken\";\nimport { Keyword } from \"../common/enums/Keyword\";\nimport { GSErrorName } from \"../GSError\";\nimport { ShaderLab } from \"../ShaderLab\";\nimport { ShaderLabUtils } from \"../ShaderLabUtils\";\n\nexport default class SourceLexer extends BaseLexer {\n hasPendingContent = false;\n\n private static _keywordLexemeTable = <Record<string, Keyword>>{\n RenderQueueType: Keyword.GSRenderQueueType,\n BlendState: Keyword.GSBlendState,\n DepthState: Keyword.GSDepthState,\n StencilState: Keyword.GSStencilState,\n RasterState: Keyword.GSRasterState,\n EditorProperties: Keyword.GSEditorProperties,\n EditorMacros: Keyword.GSEditorMacros,\n Editor: Keyword.GSEditor,\n Tags: Keyword.GSTags,\n VertexShader: Keyword.GSVertexShader,\n FragmentShader: Keyword.GSFragmentShader,\n SubShader: Keyword.GSSubShader,\n Pass: Keyword.GSPass,\n BlendFactor: Keyword.GSBlendFactor,\n BlendOperation: Keyword.GSBlendOperation,\n Bool: Keyword.GSBool,\n Number: Keyword.GSNumber,\n Color: Keyword.GSColor,\n CompareFunction: Keyword.GSCompareFunction,\n StencilOperation: Keyword.GSStencilOperation,\n CullMode: Keyword.GSCullMode,\n UsePass: Keyword.GSUsePass,\n\n true: Keyword.True,\n false: Keyword.False\n };\n\n private static _symbolLexemeTable = <Record<string, Keyword>>{\n \"{\": Keyword.LeftBrace,\n \"}\": Keyword.RightBrace,\n \"=\": Keyword.Equal\n };\n\n private static _isWordSeparatorChar(charCode: number): boolean {\n return (\n charCode === 123 || // {\n charCode === 125 || // }\n charCode === 61 || // =\n charCode === 59 || // ;\n charCode === 46 || // . CullMode.Back\n charCode === 91 || // [ Enabled[0],\n charCode === 40 // ( Color(1.0, 1.0, 1.0, 1.0);\n );\n }\n\n private static _scanDigits(source: string, startIndex: number): number {\n let currentIndex = startIndex;\n while (currentIndex < source.length) {\n const charCode = source.charCodeAt(currentIndex);\n if (BaseLexer.isDigit(charCode)) {\n currentIndex++;\n } else {\n break;\n }\n }\n return currentIndex;\n }\n\n scanNumber(): number {\n this.skipCommentsAndSpace();\n const start = this._currentIndex;\n const source = this._source;\n let index = this._currentIndex;\n\n // Scan integer part\n index = SourceLexer._scanDigits(source, index);\n\n // Scan decimal part if present\n if (source[index] === \".\") {\n index = SourceLexer._scanDigits(source, index + 1);\n }\n\n this.advance(index - this._currentIndex);\n return Number(source.substring(start, index));\n }\n\n scanColor(): Color {\n this.scanLexeme(\"(\");\n\n let r = 0;\n let g = 0;\n let b = 0;\n let a = 1;\n\n r = this.scanNumber();\n this.skipCommentsAndSpace();\n if (this.peek(1) !== \")\") {\n this.scanLexeme(\",\");\n g = this.scanNumber();\n this.skipCommentsAndSpace();\n if (this.peek(1) !== \")\") {\n this.scanLexeme(\",\");\n b = this.scanNumber();\n this.skipCommentsAndSpace();\n if (this.peek(1) !== \")\") {\n this.scanLexeme(\",\");\n a = this.scanNumber();\n this.skipCommentsAndSpace();\n }\n }\n }\n\n this.scanLexeme(\")\");\n return new Color(r, g, b, a);\n }\n\n override scanToken(): BaseToken {\n while (true) {\n this.skipCommentsAndSpace();\n\n if (this.isEnd()) {\n return;\n }\n\n const start = this.getShaderPosition(0);\n if (BaseLexer.isAlpha(this.getCurCharCode())) {\n const wordToken = this._scanWord(start);\n if (wordToken !== null) {\n return wordToken;\n }\n this.hasPendingContent = true;\n continue; // Continue loop to scan next token if word was invalid\n }\n\n const currentChar = this.getCurChar();\n const symbolKeyword = SourceLexer._symbolLexemeTable[currentChar];\n if (symbolKeyword !== undefined) {\n this.advance(1);\n const token = BaseToken.pool.get();\n token.set(symbolKeyword, currentChar, start);\n return token;\n }\n\n // Skip unrecognized character and continue\n this.advance(1);\n }\n }\n\n // #if _VERBOSE\n scanToCharacter(char: string): void {\n while (this.getCurChar() !== char && !this.isEnd()) {\n this.advance(1);\n }\n this.advance(1);\n }\n // #endif\n\n createCompileError(message: string, location?: ShaderPosition | ShaderRange) {\n return ShaderLabUtils.createGSError(\n message,\n GSErrorName.CompilationError,\n this.source,\n location ?? this.getShaderPosition(0)\n );\n }\n\n private _scanWord(start: ShaderPosition): BaseToken | null {\n // Scan the complete word first\n while (BaseLexer.isAlnum(this.getCurCharCode()) && !this.isEnd()) {\n this.advance(1);\n }\n const end = this.getShaderPosition(0);\n\n // Validate both boundaries in one optimized call\n if (!this._validateWordBoundaries(start.index, end.index)) {\n return null; // Invalid word due to boundary violation\n }\n\n const lexeme = this._source.substring(start.index, end.index);\n const tokenType = SourceLexer._keywordLexemeTable[lexeme] ?? ETokenType.ID;\n const range = ShaderLab.createRange(start, end);\n const token = BaseToken.pool.get();\n token.set(tokenType, lexeme, range);\n return token;\n }\n\n private _validateWordBoundaries(startIndex: number, endIndex: number): boolean {\n const source = this._source;\n\n // Check previous boundary\n if (startIndex > 0) {\n const prevCharCode = source.charCodeAt(startIndex - 1);\n if (!this._isValidWordBoundary(prevCharCode)) {\n return false;\n }\n }\n\n // Check next boundary\n if (endIndex < source.length) {\n const nextCharCode = source.charCodeAt(endIndex);\n if (!this._isValidWordBoundary(nextCharCode)) {\n return false;\n }\n }\n\n return true;\n }\n\n private _isValidWordBoundary(charCode: number): boolean {\n return BaseLexer.isWhiteSpaceChar(charCode, true) || SourceLexer._isWordSeparatorChar(charCode);\n }\n}\n","import {\n BlendFactor,\n BlendOperation,\n Color,\n CompareFunction,\n CullMode,\n Logger,\n RenderQueueType,\n RenderStateElementKey,\n StencilOperation\n} from \"@galacean/engine\";\nimport { IRenderStates, IShaderPassSource, IShaderSource, IStatement, ISubShaderSource } from \"@galacean/engine-design\";\nimport { ETokenType, ShaderPosition, ShaderRange } from \"../common\";\nimport { BaseToken } from \"../common/BaseToken\";\nimport { SymbolTableStack } from \"../common/SymbolTableStack\";\nimport { GSErrorName } from \"../GSError\";\n// #if _VERBOSE\nimport { GSError } from \"../GSError\";\n// #endif\nimport { BaseLexer } from \"../common/BaseLexer\";\nimport { Keyword } from \"../common/enums/Keyword\";\nimport { SymbolTable } from \"../common/SymbolTable\";\nimport { ShaderLabUtils } from \"../ShaderLabUtils\";\nimport { ShaderSourceFactory } from \"./ShaderSourceFactory\";\nimport { ShaderSourceSymbol } from \"./ShaderSourceSymbol\";\nimport SourceLexer from \"./SourceLexer\";\n\n/**\n * @internal\n */\nexport class ShaderSourceParser {\n static readonly errors = new Array<GSError>();\n\n private static _renderStateConstMap = <Record<string, Record<string, number | string | boolean>>>{\n RenderQueueType,\n CompareFunction,\n StencilOperation,\n BlendOperation,\n BlendFactor,\n CullMode\n };\n private static _symbolTableStack = new SymbolTableStack<ShaderSourceSymbol, SymbolTable<ShaderSourceSymbol>>();\n private static _lexer = new SourceLexer();\n private static _lookupSymbol = new ShaderSourceSymbol(\"\", null);\n\n static parse(sourceCode: string): IShaderSource {\n const startTime = performance.now();\n\n // Clear previous data\n this.errors.length = 0;\n this._symbolTableStack.clear();\n this._pushScope();\n\n const lexer = this._lexer;\n lexer.setSource(sourceCode);\n\n const shaderSource = this._parseShader(lexer);\n\n const shaderPendingContents = shaderSource.pendingContents;\n const shaderRenderStates = shaderSource.renderStates;\n for (let i = 0, n = shaderSource.subShaders.length; i < n; i++) {\n const subShader = shaderSource.subShaders[i];\n const curSubShaderGlobalStatements = shaderPendingContents.concat(subShader.pendingContents);\n const constMap = { ...shaderRenderStates.constantMap, ...subShader.renderStates.constantMap };\n const variableMap = { ...shaderRenderStates.variableMap, ...subShader.renderStates.variableMap };\n\n for (let j = 0, m = subShader.passes.length; j < m; j++) {\n const pass = subShader.passes[j];\n Object.assign(pass.renderStates.constantMap, constMap);\n Object.assign(pass.renderStates.variableMap, variableMap);\n if (pass.isUsePass) continue;\n const passGlobalStatements = curSubShaderGlobalStatements.concat(pass.pendingContents);\n pass.contents = passGlobalStatements.map((item) => item.content).join(\"\\n\");\n }\n }\n\n Logger.info(`[Task - Source compilation] cost time ${performance.now() - startTime}ms`);\n return shaderSource;\n }\n\n private static _parseShader(lexer: SourceLexer): IShaderSource {\n // Parse shader header\n lexer.scanLexeme(\"Shader\");\n const name = lexer.scanPairedChar('\"', '\"', false, false);\n const shaderSource = ShaderSourceFactory.createShaderSource(name);\n lexer.scanLexeme(\"{\");\n\n let braceLevel = 1;\n lexer.skipCommentsAndSpace();\n let start = lexer.getShaderPosition(0);\n\n const { pendingContents } = shaderSource;\n while (true) {\n const token = lexer.scanToken();\n switch (token.type) {\n case Keyword.GSSubShader:\n this._addPendingContents(start, token.lexeme.length, pendingContents);\n const subShader = this._parseSubShader();\n shaderSource.subShaders.push(subShader);\n start = lexer.getShaderPosition(0);\n break;\n case Keyword.GSEditorProperties:\n case Keyword.GSEditorMacros:\n case Keyword.GSEditor:\n this._addPendingContents(start, token.lexeme.length, pendingContents);\n lexer.scanPairedChar(\"{\", \"}\", true, false);\n start = lexer.getShaderPosition(0);\n break;\n case Keyword.LeftBrace:\n ++braceLevel;\n break;\n case Keyword.RightBrace:\n if (--braceLevel === 0) {\n this._addPendingContents(start, token.lexeme.length, pendingContents);\n this._popScope();\n return shaderSource;\n }\n break;\n default:\n start = this._parseRenderState(token, start, pendingContents, shaderSource.renderStates);\n }\n }\n }\n\n private static _parseRenderStateDeclarationOrAssignment(renderStates: IRenderStates, stateToken: BaseToken): void {\n const lexer = this._lexer;\n const token = lexer.scanToken();\n if (token.type === ETokenType.ID) {\n // Declaration\n lexer.scanLexeme(\"{\");\n const renderState = this._parseRenderStateProperties(stateToken.lexeme);\n const symbol = new ShaderSourceSymbol(token.lexeme, stateToken.type, renderState);\n this._symbolTableStack.insert(symbol);\n } else if (token.lexeme === \"=\") {\n // Assignment\n const variable = lexer.scanToken();\n\n lexer.scanLexeme(\";\");\n const lookupSymbol = this._lookupSymbol;\n lookupSymbol.set(variable.lexeme, stateToken.type);\n const sm = this._symbolTableStack.lookup(lookupSymbol);\n if (!sm?.value) {\n this._createCompileError(`Invalid \"${stateToken.lexeme}\" variable: ${variable.lexeme}`, variable.location);\n // #if _VERBOSE\n return;\n // #endif\n }\n const renderState = sm.value as IRenderStates;\n Object.assign(renderStates.constantMap, renderState.constantMap);\n Object.assign(renderStates.variableMap, renderState.variableMap);\n return;\n }\n }\n\n private static _parseVariableDeclaration(): void {\n const lexer = this._lexer;\n const token = lexer.scanToken();\n lexer.scanLexeme(\";\");\n const symbol = new ShaderSourceSymbol(token.lexeme, token.type);\n this._symbolTableStack.insert(symbol);\n }\n\n private static _pushScope(): void {\n const symbolTable = new SymbolTable<ShaderSourceSymbol>();\n this._symbolTableStack.pushScope(symbolTable);\n }\n\n private static _popScope(): void {\n this._symbolTableStack.popScope();\n }\n\n private static _parseRenderStateProperties(state: string): IRenderStates {\n const lexer = this._lexer;\n const renderStates = ShaderSourceFactory.createRenderStates();\n while (lexer.getCurChar() !== \"}\") {\n this._parseRenderStateProperty(state, renderStates);\n lexer.skipCommentsAndSpace();\n }\n lexer.advance(1);\n return renderStates;\n }\n\n private static _createCompileError(message: string, location?: ShaderPosition | ShaderRange): void {\n const error = this._lexer.createCompileError(message, location);\n // #if _VERBOSE\n this.errors.push(<GSError>error);\n // #endif\n }\n\n private static _parseRenderStateProperty(stateLexeme: string, out: IRenderStates): void {\n const lexer = this._lexer;\n const propertyToken = lexer.scanToken();\n const propertyLexeme = propertyToken.lexeme;\n let stateElementKey = propertyLexeme;\n if (stateLexeme === \"BlendState\" && propertyLexeme !== \"BlendColor\" && propertyLexeme !== \"AlphaToCoverage\") {\n let keyIndex = 0;\n const scannedLexeme = lexer.scanTwoExpectedLexemes(\"[\", \"=\");\n if (scannedLexeme === \"[\") {\n keyIndex = lexer.scanNumber();\n lexer.scanLexeme(\"]\");\n lexer.scanLexeme(\"=\");\n } else if (scannedLexeme !== \"=\") {\n this._createCompileError(`Invalid syntax, expect '[' or '=', but got unexpected token`);\n // #if _VERBOSE\n lexer.scanToCharacter(\";\");\n return;\n // #endif\n }\n stateElementKey += keyIndex;\n } else {\n lexer.scanLexeme(\"=\");\n }\n\n const renderStateElementKey = RenderStateElementKey[stateLexeme + stateElementKey];\n if (renderStateElementKey === undefined) {\n this._createCompileError(`Invalid render state property ${propertyLexeme}`);\n // #if _VERBOSE\n lexer.scanToCharacter(\";\");\n return;\n // #endif\n }\n\n lexer.skipCommentsAndSpace();\n let propertyValue: number | string | boolean | Color;\n\n const curCharCode = lexer.getCurCharCode();\n if (BaseLexer.isDigit(curCharCode) || curCharCode === 46) {\n // Digit or '.'\n propertyValue = lexer.scanNumber();\n } else {\n const valueToken = lexer.scanToken();\n const valueTokenType = valueToken.type;\n\n if (valueTokenType === Keyword.True) {\n propertyValue = true;\n } else if (valueTokenType === Keyword.False) {\n propertyValue = false;\n } else if (valueTokenType === Keyword.GSColor) {\n propertyValue = lexer.scanColor();\n } else if (lexer.getCurChar() === \".\") {\n lexer.advance(1);\n const constValueToken = lexer.scanToken();\n propertyValue = this._renderStateConstMap[valueToken.lexeme]?.[constValueToken.lexeme];\n if (propertyValue == undefined) {\n this._createCompileError(\n `Invalid engine constant: ${valueToken.lexeme}.${constValueToken.lexeme}`,\n constValueToken.location\n );\n // #if _VERBOSE\n lexer.scanToCharacter(\";\");\n return;\n // #endif\n }\n } else {\n propertyValue = valueToken.lexeme;\n const lookupSymbol = this._lookupSymbol;\n lookupSymbol.set(valueToken.lexeme, ETokenType.ID);\n if (!this._symbolTableStack.lookup(lookupSymbol)) {\n this._createCompileError(`Invalid ${stateLexeme} variable: ${valueToken.lexeme}`, valueToken.location);\n // #if _VERBOSE\n lexer.scanToCharacter(\";\");\n return;\n // #endif\n }\n }\n }\n lexer.scanLexeme(\";\");\n if (typeof propertyValue === \"string\") {\n out.variableMap[renderStateElementKey] = propertyValue;\n } else {\n out.constantMap[renderStateElementKey] = propertyValue;\n }\n }\n\n private static _parseRenderQueueDeclarationOrAssignment(renderStates: IRenderStates): void {\n const lexer = this._lexer;\n const token = lexer.scanToken();\n if (token.type === ETokenType.ID) {\n // Declaration\n lexer.scanLexeme(\";\");\n const symbol = new ShaderSourceSymbol(token.lexeme, Keyword.GSRenderQueueType);\n this._symbolTableStack.insert(symbol);\n return;\n }\n\n if (token.lexeme !== \"=\") {\n this._createCompileError(`Invalid syntax, expect character '=', but got ${token.lexeme}`, token.location);\n // #if _VERBOSE\n return;\n // #endif\n }\n const word = lexer.scanToken();\n lexer.scanLexeme(\";\");\n const value = this._renderStateConstMap.RenderQueueType[word.lexeme];\n const key = RenderStateElementKey.RenderQueueType;\n if (value == undefined) {\n renderStates.variableMap[key] = word.lexeme;\n const lookupSymbol = this._lookupSymbol;\n lookupSymbol.set(word.lexeme, Keyword.GSRenderQueueType);\n const sm = this._symbolTableStack.lookup(lookupSymbol);\n if (!sm) {\n this._createCompileError(`Invalid RenderQueueType variable: ${word.lexeme}`, word.location);\n // #if _VERBOSE\n return;\n // #endif\n }\n } else {\n renderStates.constantMap[key] = value;\n }\n }\n\n private static _addPendingContents(\n start: ShaderPosition,\n backOffset: number,\n outPendingContents: IStatement[]\n ): void {\n const lexer = this._lexer;\n if (lexer.hasPendingContent) {\n const endIndex = lexer.currentIndex - backOffset;\n outPendingContents.push({\n range: { start, end: { ...lexer.getShaderPosition(0), index: endIndex - 1 } },\n content: lexer.source.substring(start.index, endIndex - 1)\n });\n lexer.hasPendingContent = false;\n }\n }\n\n private static _parseSubShader(): ISubShaderSource {\n const lexer = this._lexer;\n this._pushScope();\n\n let braceLevel = 1;\n const name = lexer.scanPairedChar('\"', '\"', false, false);\n const subShaderSource = ShaderSourceFactory.createSubShaderSource(name);\n lexer.scanLexeme(\"{\");\n\n lexer.skipCommentsAndSpace();\n let start = lexer.getShaderPosition(0);\n\n while (true) {\n const token = lexer.scanToken();\n switch (token.type) {\n case Keyword.GSPass:\n this._addPendingContents(start, token.lexeme.length, subShaderSource.pendingContents);\n const pass = this._parsePass();\n subShaderSource.passes.push(pass);\n start = lexer.getShaderPosition(0);\n break;\n case Keyword.GSUsePass:\n this._addPendingContents(start, token.lexeme.length, subShaderSource.pendingContents);\n const name = lexer.scanPairedChar('\"', '\"', false, false);\n subShaderSource.passes.push(ShaderSourceFactory.createUsePass(name));\n start = lexer.getShaderPosition(0);\n break;\n case Keyword.LeftBrace:\n ++braceLevel;\n break;\n case Keyword.RightBrace:\n if (--braceLevel === 0) {\n this._addPendingContents(start, token.lexeme.length, subShaderSource.pendingContents);\n this._popScope();\n return subShaderSource;\n }\n break;\n default:\n start = this._parseRenderStateAndTags(\n token,\n start,\n subShaderSource.pendingContents,\n subShaderSource.renderStates,\n subShaderSource.tags\n );\n }\n }\n }\n\n private static _parseTags(tags: Record<string, number | string | boolean>): void {\n const lexer = this._lexer;\n lexer.scanLexeme(\"{\");\n while (true) {\n const ident = lexer.scanToken();\n lexer.scanLexeme(\"=\");\n const value = lexer.scanPairedChar('\"', '\"', false, false);\n lexer.skipCommentsAndSpace();\n\n tags[ident.lexeme] = value;\n\n if (lexer.peek(1) === \"}\") {\n lexer.advance(1);\n return;\n }\n lexer.scanLexeme(\",\");\n }\n }\n\n private static _parsePass(): IShaderPassSource {\n this._pushScope();\n const lexer = this._lexer;\n\n const name = lexer.scanPairedChar('\"', '\"', false, false);\n const passSource = ShaderSourceFactory.createShaderPassSource(name);\n lexer.scanLexeme(\"{\");\n let braceLevel = 1;\n\n lexer.skipCommentsAndSpace();\n let start = lexer.getShaderPosition(0);\n\n while (true) {\n const token = lexer.scanToken();\n switch (token.type) {\n case Keyword.GSVertexShader:\n case Keyword.GSFragmentShader:\n this._addPendingContents(start, token.lexeme.length, passSource.pendingContents);\n lexer.scanLexeme(\"=\");\n const entry = lexer.scanToken();\n if (passSource[token.lexeme]) {\n const error = ShaderLabUtils.createGSError(\n \"Reassign main entry\",\n GSErrorName.CompilationError,\n lexer.source,\n lexer.getShaderPosition(0)\n );\n // #if _VERBOSE\n Logger.error(error.toString());\n throw error;\n // #endif\n }\n const key = token.type === Keyword.GSVertexShader ? \"vertexEntry\" : \"fragmentEntry\";\n passSource[key] = entry.lexeme;\n lexer.scanLexeme(\";\");\n start = lexer.getShaderPosition(0);\n break;\n case Keyword.LeftBrace:\n ++braceLevel;\n break;\n case Keyword.RightBrace:\n if (--braceLevel === 0) {\n this._addPendingContents(start, token.lexeme.length, passSource.pendingContents);\n this._popScope();\n return passSource;\n }\n break;\n default:\n start = this._parseRenderStateAndTags(\n token,\n start,\n passSource.pendingContents,\n passSource.renderStates,\n passSource.tags\n );\n }\n }\n }\n\n private static _parseRenderStateAndTags(\n token: BaseToken<number>,\n start: ShaderPosition,\n outGlobalContents: IStatement[],\n outRenderStates: IRenderStates,\n outTags: Record<string, number | string | boolean>\n ): ShaderPosition {\n switch (token.type) {\n case Keyword.GSTags:\n this._addPendingContents(start, token.lexeme.length, outGlobalContents);\n this._parseTags(outTags);\n start = this._lexer.getShaderPosition(0);\n break;\n default:\n start = this._parseRenderState(token, start, outGlobalContents, outRenderStates);\n }\n return start;\n }\n\n private static _parseRenderState(\n token: BaseToken<number>,\n start: ShaderPosition,\n outGlobalContents: IStatement[],\n outRenderStates: IRenderStates\n ): ShaderPosition {\n switch (token.type) {\n case Keyword.GSBlendState:\n case Keyword.GSDepthState:\n case Keyword.GSRasterState:\n case Keyword.GSStencilState:\n this._addPendingContents(start, token.lexeme.length, outGlobalContents);\n this._parseRenderStateDeclarationOrAssignment(outRenderStates, token);\n start = this._lexer.getShaderPosition(0);\n break;\n case Keyword.GSBlendFactor:\n case Keyword.GSBlendOperation:\n case Keyword.GSBool:\n case Keyword.GSNumber:\n case Keyword.GSColor:\n case Keyword.GSCompareFunction:\n case Keyword.GSStencilOperation:\n case Keyword.GSCullMode:\n this._addPendingContents(start, token.lexeme.length, outGlobalContents);\n this._parseVariableDeclaration();\n start = this._lexer.getShaderPosition(0);\n break;\n case Keyword.GSRenderQueueType:\n this._addPendingContents(start, token.lexeme.length, outGlobalContents);\n this._parseRenderQueueDeclarationOrAssignment(outRenderStates);\n start = this._lexer.getShaderPosition(0);\n break;\n default:\n // Unrecognized tokens are defined as pending content\n this._lexer.hasPendingContent = true;\n }\n return start;\n }\n}\n","import { Logger, ShaderMacro, ShaderLanguage } from \"@galacean/engine\";\nimport { IShaderLab, IShaderSource } from \"@galacean/engine-design\";\nimport { IShaderProgramSource } from \"@galacean/engine-design/types/shader-lab/IShaderProgramSource\";\nimport { GLES100Visitor, GLES300Visitor } from \"./codeGen\";\nimport { ShaderPosition, ShaderRange } from \"./common\";\nimport { Lexer } from \"./lexer\";\nimport { MacroParser } from \"./macroProcessor/MacroParser\";\nimport { ShaderTargetParser } from \"./parser\";\nimport { Preprocessor } from \"./Preprocessor\";\nimport { ShaderLabUtils } from \"./ShaderLabUtils\";\nimport { ShaderSourceParser } from \"./sourceParser/ShaderSourceParser\";\n\nexport class ShaderLab implements IShaderLab {\n private static _parser = ShaderTargetParser.create();\n private static _shaderPositionPool = ShaderLabUtils.createObjectPool(ShaderPosition);\n private static _shaderRangePool = ShaderLabUtils.createObjectPool(ShaderRange);\n\n // #if _VERBOSE\n static _processingPassText?: string;\n // #endif\n\n static createPosition(index: number, line?: number, column?: number): ShaderPosition {\n const position = this._shaderPositionPool.get();\n position.set(\n index,\n // #if _VERBOSE\n line,\n column\n // #endif\n );\n return position;\n }\n\n static createRange(start: ShaderPosition, end: ShaderPosition): ShaderRange {\n const range = this._shaderRangePool.get();\n range.set(start, end);\n return range;\n }\n\n _parseShaderSource(sourceCode: string): IShaderSource {\n ShaderLabUtils.clearAllShaderLabObjectPool();\n const shaderSource = ShaderSourceParser.parse(sourceCode);\n\n // #if _VERBOSE\n this._logErrors(ShaderSourceParser.errors);\n // #endif\n\n return shaderSource;\n }\n\n _parseShaderPass(\n source: string,\n vertexEntry: string,\n fragmentEntry: string,\n backend: ShaderLanguage,\n basePathForIncludeKey: string\n ): IShaderProgramSource | undefined {\n const totalStartTime = performance.now();\n const macroDefineList = {};\n Preprocessor._repeatIncludeSet.clear();\n const noIncludeContent = Preprocessor.parse(source, basePathForIncludeKey, macroDefineList);\n Logger.info(`[Task - Pre processor] cost time ${performance.now() - totalStartTime}ms`);\n\n const lexer = new Lexer(noIncludeContent, macroDefineList);\n\n const tokens = lexer.tokenize();\n const { _parser: parser } = ShaderLab;\n\n ShaderLab._processingPassText = noIncludeContent;\n\n const program = parser.parse(tokens, macroDefineList);\n\n // #if _VERBOSE\n this._logErrors(parser.errors);\n // #endif\n\n if (!program) {\n return undefined;\n }\n\n const codeGen = backend === ShaderLanguage.GLSLES100 ? GLES100Visitor.getVisitor() : GLES300Visitor.getVisitor();\n\n const codeGenStartTime = performance.now();\n const ret = codeGen.visitShaderProgram(program, vertexEntry, fragmentEntry);\n Logger.info(`[Task - CodeGen] cost time: ${performance.now() - codeGenStartTime}ms`);\n Logger.info(`[Task - Total compilation] cost time: ${performance.now() - totalStartTime}ms`);\n ShaderLab._processingPassText = undefined;\n\n // #if _VERBOSE\n this._logErrors(codeGen.errors);\n // #endif\n\n return ret;\n }\n\n _parseMacros(content: string, macros: ShaderMacro[]): string {\n const startTime = performance.now();\n const parsedContent = MacroParser.parse(content, macros);\n Logger.info(`[Task - parse macros] cost time: ${performance.now() - startTime}ms`);\n\n // #if _VERBOSE\n this._logErrors(MacroParser._errors);\n // #endif\n\n return parsedContent;\n }\n\n // #if _VERBOSE\n /**\n * @internal\n */\n _logErrors(errors: Error[]) {\n if (errors.length === 0 || !Logger.isEnabled) return;\n Logger.error(`${errors.length} errors occur!`);\n for (const err of errors) {\n Logger.error(err.toString());\n }\n }\n // #endif\n}\n","export { ShaderLab } from \"./ShaderLab\";\n\nexport * from \"./GSError\";\n\n//@ts-ignore\nexport const version = `__buildVersion`;\n\nlet mode = \"Release\";\n// #if _VERBOSE\nmode = \"Verbose\";\n// #endif\n\nconsole.log(`Galacean Engine ShaderLab Version: ${version} | Mode: ${mode}`);\n"],"names":["ShaderRange","set","start","end","dispose","ShaderPosition","index","line","column","ETokenType","TypeAny","Keyword","GSError","name","message","location","file","source","toString","lines","split","diagnosticMessage","lineSplit","wrappingLineCount","i","n","remarkStart","remarkEnd","length","paddingLength","remarkLength","Math","max","repeat","Error","GSErrorName","ShaderLabUtils","createObjectPool","type","pool","ClearableObjectPool","_shaderLabObjectPoolSet","push","clearAllShaderLabObjectPool","clear","createGSError","errorName","BaseToken","lexeme","arg","ShaderLab","createPosition","createRange","EOF","NoneTerminal","Production","goal","derivation","id","_id","Map","EAction","GrammarUtils","isTerminal","sm","START","createProductionWithOptions","options","astTypePool","ret","opt","sa","children","ASTNode","get","TrivialNode","addMapSetItem","map","k","v","Set","add","isSubSet","sb","item","has","isActionEqual","a","b","action","target","printAction","actionInfo","production","printProduction","deriv","gs","join","StateItem","position","lookahead","_needReInfer","lookaheadSet","la","addLookahead","ts","t","needReInfer","symbolByOffset","offset","canReduce","EPSILON","advance","coreItem","Array","from","curSymbol","nextSymbol","State","cores","closured","_stateItemPool","_items","it","itemMapKey","getStateItemMapKey","createStateItem","mapId","newItem","create","cacheKey","getMapKey","state","closureMap","core","newState","items","ParserUtils","unwrapNodeByType","node","child","Token","nt","typeCompatible","ta","tb","undefined","INT","UINT","printStatePool","logPath","output","console","log","count","values","tmp","padEnd","psItem","Preprocessor","parse","basePathForIncludeKey","outMacroDefineList","parseMacro","_parseMacroDefines","replace","_includeReg","_","includeName","_replace","getReferenceSymbolNames","macroDefineList","macroName","out","infos","info","valueType","referencedName","functionCallName","value","params","indexOf","Logger","warn","_isNumber","str","isNaN","Number","_isExist","list","some","e","isFunction","every","p","outMacroList","match","_macroRegex","lastIndex","exec","paramsGroup","paramsStr","valueRaw","trim","filter","Boolean","_symbolReg","test","callMatch","_funcCallReg","arr","_mergeMacroDefineLists","to","src","path","URL","href","substring","ShaderPass","_shaderRootPath","chunk","ShaderLib","error","_repeatIncludeSet","_macroDefineIncludeMap","chunkMacroDefineList","EShaderStage","isGenericType","BuiltinFunctionTable","BuiltinFunction","ident","returnType","scope","args","_returnType","getReturnType","fn","genType","_create","ALL","_createWithScop","getFn","parameterTypes","fnArgs","argLength","found","curFnArg","_realReturnType","isExist","realReturnType","FLOAT","VEC2","VEC3","MAT2","MAT3","MAT4","VEC4","MAT2X3","MAT3X2","MAT2X4","MAT4X2","MAT3X4","MAT4X3","BOOL","IVEC2","IVEC3","SAMPLER2D_SHADOW","SAMPLER_CUBE_SHADOW","SAMPLER2D_ARRAY_SHADOW","SAMPLER2D","SAMPLER2D_ARRAY","SAMPLER_CUBE","FRAGMENT","BuiltinVariableTable","BuiltinVariable","createVariable","getVar","VERTEX","VEC4_ARRAY","SymbolTable","_table","insert","symbol","isInMacroBranch","entry","equal","getSymbol","includeMacro","getSymbols","_getSymbols","SymbolTableStack","stack","_macroLevel","pushScope","popScope","pop","lookup","symbolTable","result","lookupAll","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","parent","GLShaderProgram","SemanticAnalyzer","semanticStack","acceptRule","symbolTableStack","curFunctionInfo","_shaderData","_translationRuleTable","errors","reset","_macroDefineList","addTranslationRule","pid","rule","getTranslationRule","reportError","loc","CompilationError","_processingPassText","reportWarning","CompilationWarn","shaderData","_lookupSymbol","SymbolType","StructProp","mrtIndex","typeInfo","ASTNodeDecorator","nonTerminal","prototype","TreeNode","_location","_children","_parent","init","setCache","code","_codeCache","getCache","codeGen","visitor","defaultCodeGen","semanticAnalyze","_unwrapToken","_ignore","ScopeBrace","scope_brace","ScopeEndBrace","scope_end_brace","JumpStatement","isFragReturnStatement","RETURN","returnStatement","visitJumpStatement","jump_statement","ConditionOpt","conditionopt","ForRestStatement","for_rest_statement","Condition","condition","ForInitStatement","for_init_statement","IterationStatement","iteration_statement","SelectionStatement","selection_statement","ExpressionStatement","expression_statement","ExpressionAstNode","_type","InitializerList","initializer_list","Initializer","initializer","SingleDeclaration","childrenLen","fullyType","visitSingleDeclaration","single_declaration","FullySpecifiedType","fully_specified_type","TypeQualifier","type_qualifier","SingleTypeQualifier","qualifier","single_type_qualifier","BasicTypeQualifier","token","StorageQualifier","storage_qualifier","PrecisionQualifier","precision_qualifier","InterpolationQualifier","interpolation_qualifier","InvariantQualifier","invariant_qualifier","TypeSpecifier","arraySize","firstChild","size","isCustom","type_specifier","ArraySpecifier","integerConstantExpr","array_specifier","IntegerConstantExpressionOperator","operator","PLUS","compute","DASH","STAR","SLASH","PERCENT","integer_constant_expression_operator","IntegerConstantExpression","integer_constant_expression","TypeSpecifierNonArray","tt","type_specifier_nonarray","ExtBuiltinTypeSpecifierNonArray","ext_builtin_type_specifier_nonarray","InitDeclaratorList","childrenLength","initDeclList","init_declarator_list","IdentifierList","idList","curIdList","listIdLength","identifier_list","Declaration","visitDeclaration","declaration","FunctionProtoType","declarator","parameterList","parameterInfoList","function_prototype","FunctionDeclarator","header","function_declarator","FunctionHeader","visitFunctionHeader","function_header","FunctionParameterList","ParameterDeclaration","decl","MacroParamBlock","visitFunctionParameterList","function_parameter_list","MacroParamCaseList","macro_param_case_list","macro_param_block","MacroParameterBranch","macro_parameter_branch","parameterDeclarator","ParameterDeclarator","varSymbol","parameter_declaration","parameter_declarator","SimpleStatement","simple_statement","CompoundStatement","compound_statement","CompoundStatementNoScope","compound_statement_no_scope","Statement","statement","StatementList","visitStatementList","statement_list","FunctionDefinition","statements","VOID","visitFunctionDefinition","function_definition","FunctionCall","visitFunctionCall","function_call","FunctionCallGeneric","fnSymbol","functionIdentifier","isBuiltin","fnIdent","paramList","FunctionCallParameterList","builtinFn","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","AssignmentOperator","assignment_operator","Expression","expression","PrimaryExpression","VariableIdentifier","INT_CONSTANT","FLOAT_CONSTANT","True","False","primary_expression","PostfixExpression","visitPostfixExpression","postfix_expression","UnaryOperator","unary_operator","UnaryExpression","unary_expression","MultiplicativeExpression","multiplicative_expression","AdditiveExpression","additive_expression","ShiftExpression","shift_expression","RelationalExpression","relational_expression","EqualityExpression","equality_expression","AndExpression","and_expression","ExclusiveOrExpression","exclusive_or_expression","InclusiveOrExpression","inclusive_or_expression","LogicalAndExpression","logical_and_expression","LogicalXorExpression","logical_xor_expression","LogicalOrExpression","logical_or_expression","ConditionalExpression","conditional_expression","StructSpecifier","propList","macroExpressions","visitStructSpecifier","struct_specifier","StructDeclarationList","props","struct_declaration_list","StructDeclaration","_typeSpecifier","_declaratorList","macroStructDeclaration","macroProps","LayoutQualifier","prop","declaratorList","declaratorListLength","struct_declaration","MacroStructDeclaration","macro_struct_declaration","MacroStructBranch","lastNode","MacroPopContext","macro_struct_branch","layout_qualifier","StructDeclaratorList","listLength","struct_declarator_list","StructDeclarator","struct_declarator","VariableDeclaration","isStatic","visitGlobalVariableDeclaration","variable_declaration","VariableDeclarationList","variableDeclarations","newVariable","variable_declaration_list","referenceGlobalSymbolNames","_symbols","symbols","needFindNames","referenceSymbolNames","builtinVar","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","VisitorContext","attributeStructs","attributeList","varyingStructs","varyingList","mrtStructs","mrtList","_referencedGlobalMacroASTs","resetAll","_referencedAttributeList","Object","_referencedVaryingList","_referencedMRTList","_referencedGlobals","isAttributeStruct","findIndex","isVaryingStruct","isMRTStruct","referenceAttribute","referenceVarying","referenceMRTProp","referenceGlobal","_passSymbolTable","_singleton","context","TempArray","array","CodeGenVisitor","_tmpArrayPool","return","derivationLength","postExpr","identNode","indexNode","identLexeme","indexLexeme","_reportError","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","macro","_visitGlobalMacroIfStatement","variableDeclaration","GLES100Visitor","propReferenced","find","getVisitor","V3_GL_FragColor","GLES300Visitor","_otherCodeArray","_fragColorVariableRegistered","_registerFragColorVariable","BaseLexer","_currentIndex","_column","_line","_source","setSource","getShaderPosition","backOffset","isEnd","getCurChar","getCurCharCode","charCodeAt","startIndex","skipSpace","includeLineBreak","isWhiteSpaceChar","skipCommentsAndSpace","nextChar","charCode","peek","scanLexeme","throwError","scanTwoExpectedLexemes","lexeme1","lexeme2","pos","msgs","ScannerError","scanPairedChar","left","right","balanced","skipLeading","sourceLength","currentIndex","level","currentChar","isDigit","isAlpha","isAlnum","isPreprocessorStartChar","includeBreak","Lexer","_needScanMacroConditionExpression","tokenize","scanToken","_scanMacroConditionExpression","curCharCode","_scanDirectives","_scanWord","_scanNum","curChar","LEFT_ASSIGN","LEFT_OP","LE_OP","LEFT_ANGLE","RIGHT_ASSIGN","RIGHT_OP","GE_OP","RIGHT_ANGLE","INC_OP","ADD_ASSIGN","DEC_OP","SUB_ASSIGN","EQ_OP","EQUAL","NE_OP","BANG","AND_OP","AMPERSAND","OR_OP","OR_ASSIGN","VERTICAL_BAR","XOR_OP","XOR_ASSIGN","CARET","MUL_ASSIGN","DIV_ASSIGN","MOD_ASSIGN","LEFT_PAREN","RIGHT_PAREN","LEFT_BRACE","RIGHT_BRACE","LEFT_BRACKET","RIGHT_BRACKET","_scanNumAfterDot","DOT","COMMA","COLON","SEMICOLON","TILDE","QUESTION","_scanStringConst","buffer","range","STRING_CONST","_scanFloatSuffix","_scanUtilBreakLine","outBuffer","word","MACRO_DEFINE_EXPRESSION","kt","_lexemeTable","ID","MACRO_CONDITIONAL_EXPRESSION","MACRO_CALL","_scanIntegerSuffix","const","CONST","bool","float","double","DOUBLE","int","uint","break","BREAK","continue","CONTINUE","do","DO","else","ELSE","for","FOR","if","IF","while","WHILE","discard","DISCARD","bvec2","BVEC2","bvec3","BVEC3","bvec4","BVEC4","ivec2","ivec3","ivec4","IVEC4","uvec2","UVEC2","uvec3","UVEC3","uvec4","UVEC4","vec2","vec3","vec4","mat2","mat3","mat4","in","IN","OUT","inout","INOUT","sampler2D","samplerCube","sampler3D","SAMPLER3D","sampler2DShadow","samplerCubeShadow","sampler2DArray","sampler2DArrayShadow","isampler2D","I_SAMPLER2D","isampler3D","I_SAMPLER3D","isamplerCube","I_SAMPLER_CUBE","isampler2DArray","I_SAMPLER2D_ARRAY","usampler2D","U_SAMPLER2D","usampler3D","U_SAMPLER3D","usamplerCube","U_SAMPLER_CUBE","usampler2DArray","U_SAMPLER2D_ARRAY","struct","void","true","false","PRECISION","precise","PRECISE","highp","HIGHP","mediump","MEDIUMP","lowp","LOWP","invariant","INVARIANT","flat","FLAT","smooth","SMOOTH","noperspective","NOPERSPECTIVE","centroid","CENTROID","layout","LAYOUT","LOCATION","MACRO_IF","MACRO_IFDEF","MACRO_IFNDEF","MACRO_ELSE","MACRO_ELIF","MACRO_ENDIF","MACRO_UNDEF","MacroParserToken","MacroParserKeyword","MacroDefine","body","_argsLexemes","_replaceRegex","RegExp","expandFunctionBody","PreprocessorError","m","BlockInfo","sourceFile","rangeInFile","sourceMap","MapRange","sourceBlock","rangeInBlock","generatedLoc","sourceLoc","block","getSourceIndex","generatedIdx","PpSourceMap","mapRanges","addMapRange","mapRange","curRange","rangeContains","MacroParserLexer","blockRange","macroLvl","scanWordsUntilTerminator","terminatorChar","tokens","scanWord","slice","tokenType","_isPpCharacters","ifdef","ifndef","endif","scanQuotedString","contentStart","string_const","scanToChar","char","scanMacroBranchBody","shaderPosition","startLevel","nextDirective","elif","scanPairedBlock","lc","rc","scanRemainMacro","startLvl","directive","peekNonSpace","current","scanInteger","integer","int_constant","scanMacroBody","nextIndex","nextCharCode","valueToken","line_remain","define","undef","defined","PpUtils","expand","segments","startIdx","seg","originSlice","generatedIdxEnd","MacroParser","_reset","_addPredefinedMacro","lexer","_parseDirectives","_expandSegmentsStack","_definedMacros","_errors","macroBody","_parseMacro","_parseDefine","_parseUndef","_parseIfDirective","_getExpandSegments","directiveType","directiveLength","skipMacro","shouldInclude","_parseConstantExpression","macroToken","startsWith","expanded","_expandMacroChunk","_addContentReplace","content","_addEmptyReplace","_processConditionalDirective","scanner","constantExpr","_parseLogicalOrExpression","operand1","_parseLogicalAndExpression","operand2","_parseEqualityExpression","_parseRelationalExpression","includes","_parseShiftExpression","opPos","_parseAdditiveExpression","_parseMulticativeExpression","_parseUnaryExpression","parenExpr","_parseParenthesisExpression","_parseConstant","withParen","isInteger","_parseMacroFunctionArgs","argStart","endIndex","_expandMacroBody","visitedMacros","_expandVisitedMacros","currentVersionId","_expandVersionId","expandedBody","hasExpansion","replacement","newEndIndex","scannerOrFile","sourceRange","macroArgs","macroDefine","delete","macroBodyExpanded","expandedContent","remainingLength","macroContent","convertSourceIndex","LALR1","grammar","firstSetMap","followSetMap","actionTable","gotoTable","_firstSetNTStack","generate","computeFirstSet","buildStateTable","startStateItemCore","productions","startState","_extendState","_closure","newStates","_inferNextState","ns","_extendStateItem","productionList","getProductionList","newLookaheadSet","lastFirstSet","terminalExist","Utils","coreMap","stateActionTable","stateGotoTable","stateItem","Reduce","Accept","_addAction","nextItem","entries","Shift","table","terminal","exist","_computeFirstSetForNT","NT","idx","computingFS","len","curNT","firstSet","isNullableNT","succeedFirstSet","Grammar","startSymbol","unshift","getProductionByID","_ps","gsl","productionAndRules","variable_declaration_statement","AND_ASSIGN","createGrammar","ShaderTargetParser","_traceBackStack","sematicAnalyzer","SematicAnalyzer","performance","now","traceBackStack","nextToken","next","loopCount","reduceProduction","translationRule","nextState","_printStack","generator","curState","ShaderSourceFactory","createRenderStates","constantMap","variableMap","createShaderSource","subShaders","pendingContents","renderStates","createSubShaderSource","passes","tags","createShaderPassSource","createUsePass","isUsePass","ShaderSourceSymbol","other","SourceLexer","hasPendingContent","scanNumber","_scanDigits","scanColor","r","g","Color","wordToken","symbolKeyword","_symbolLexemeTable","scanToCharacter","createCompileError","_validateWordBoundaries","_keywordLexemeTable","prevCharCode","_isValidWordBoundary","_isWordSeparatorChar","RenderQueueType","GSRenderQueueType","BlendState","GSBlendState","DepthState","GSDepthState","StencilState","GSStencilState","RasterState","GSRasterState","EditorProperties","GSEditorProperties","EditorMacros","GSEditorMacros","Editor","GSEditor","Tags","GSTags","VertexShader","GSVertexShader","FragmentShader","GSFragmentShader","SubShader","GSSubShader","Pass","GSPass","BlendFactor","GSBlendFactor","BlendOperation","GSBlendOperation","Bool","GSBool","GSNumber","GSColor","CompareFunction","GSCompareFunction","StencilOperation","GSStencilOperation","CullMode","GSCullMode","UsePass","GSUsePass","LeftBrace","RightBrace","Equal","ShaderSourceParser","sourceCode","startTime","_symbolTableStack","_pushScope","_lexer","shaderSource","_parseShader","shaderPendingContents","shaderRenderStates","subShader","curSubShaderGlobalStatements","concat","constMap","j","pass","assign","passGlobalStatements","contents","braceLevel","_addPendingContents","_parseSubShader","_popScope","_parseRenderState","_parseRenderStateDeclarationOrAssignment","stateToken","renderState","_parseRenderStateProperties","variable","_createCompileError","_parseVariableDeclaration","_parseRenderStateProperty","stateLexeme","propertyToken","propertyLexeme","stateElementKey","keyIndex","scannedLexeme","renderStateElementKey","RenderStateElementKey","propertyValue","valueTokenType","constValueToken","_renderStateConstMap","_parseRenderQueueDeclarationOrAssignment","key","outPendingContents","subShaderSource","_parsePass","_parseRenderStateAndTags","_parseTags","passSource","outGlobalContents","outRenderStates","outTags","_parseShaderSource","_logErrors","_parseShaderPass","backend","totalStartTime","noIncludeContent","parser","_parser","program","ShaderLanguage","GLSLES100","codeGenStartTime","_parseMacros","parsedContent","isEnabled","err","_shaderPositionPool","_shaderRangePool","version","mode"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"main.verbose.js","sources":["../../../node_modules/.pnpm/@swc+helpers@0.5.15/node_modules/@swc/helpers/esm/_array_like_to_array.js","../../../node_modules/.pnpm/@swc+helpers@0.5.15/node_modules/@swc/helpers/esm/_unsupported_iterable_to_array.js","../../../node_modules/.pnpm/@swc+helpers@0.5.15/node_modules/@swc/helpers/esm/_create_for_of_iterator_helper_loose.js","../../../node_modules/.pnpm/@swc+helpers@0.5.15/node_modules/@swc/helpers/esm/_set_prototype_of.js","../../../node_modules/.pnpm/@swc+helpers@0.5.15/node_modules/@swc/helpers/esm/_inherits.js","../../../node_modules/.pnpm/@swc+helpers@0.5.15/node_modules/@swc/helpers/esm/_instanceof.js","../../../node_modules/.pnpm/@swc+helpers@0.5.15/node_modules/@swc/helpers/esm/_create_class.js","../../../node_modules/.pnpm/tslib@2.8.1/node_modules/tslib/tslib.es6.mjs","../src/common/ShaderRange.ts","../src/common/ShaderPosition.ts","../src/common/types.ts","../src/common/enums/Keyword.ts","../../../node_modules/.pnpm/@swc+helpers@0.5.15/node_modules/@swc/helpers/esm/_is_native_reflect_construct.js","../../../node_modules/.pnpm/@swc+helpers@0.5.15/node_modules/@swc/helpers/esm/_construct.js","../../../node_modules/.pnpm/@swc+helpers@0.5.15/node_modules/@swc/helpers/esm/_get_prototype_of.js","../../../node_modules/.pnpm/@swc+helpers@0.5.15/node_modules/@swc/helpers/esm/_is_native_function.js","../../../node_modules/.pnpm/@swc+helpers@0.5.15/node_modules/@swc/helpers/esm/_wrap_native_super.js","../src/GSError.ts","../src/ShaderLabUtils.ts","../src/common/BaseToken.ts","../src/parser/GrammarSymbol.ts","../src/lalr/Production.ts","../src/lalr/types.ts","../src/lalr/Utils.ts","../src/lalr/StateItem.ts","../src/lalr/State.ts","../src/ParserUtils.ts","../src/Preprocessor.ts","../src/common/enums/ShaderStage.ts","../src/parser/builtin/functions.ts","../src/parser/builtin/variables.ts","../src/common/SymbolTable.ts","../src/common/SymbolTableStack.ts","../src/parser/symbolTable/SymbolDataType.ts","../src/parser/symbolTable/SymbolInfo.ts","../src/parser/symbolTable/FnSymbol.ts","../src/parser/symbolTable/StructSymbol.ts","../src/parser/symbolTable/VarSymbol.ts","../src/parser/ShaderInfo.ts","../src/parser/SemanticAnalyzer.ts","../src/parser/types.ts","../src/parser/AST.ts","../src/codeGen/VisitorContext.ts","../src/TempArray.ts","../src/codeGen/CodeGenVisitor.ts","../src/codeGen/GLESVisitor.ts","../src/codeGen/GLES100.ts","../src/codeGen/GLES300.ts","../src/common/BaseLexer.ts","../src/lexer/Lexer.ts","../../../node_modules/.pnpm/@swc+helpers@0.5.15/node_modules/@swc/helpers/esm/_type_of.js","../src/macroProcessor/constants.ts","../src/macroProcessor/MacroDefine.ts","../src/macroProcessor/sourceMap/index.ts","../src/macroProcessor/MacroParserLexer.ts","../src/macroProcessor/Utils.ts","../src/macroProcessor/MacroParser.ts","../src/lalr/LALR1.ts","../src/parser/Grammar.ts","../src/lalr/CFG.ts","../src/parser/ShaderTargetParser.ts","../../../node_modules/.pnpm/@swc+helpers@0.5.15/node_modules/@swc/helpers/esm/_extends.js","../src/sourceParser/ShaderSourceFactory.ts","../src/sourceParser/ShaderSourceSymbol.ts","../src/sourceParser/SourceLexer.ts","../src/sourceParser/ShaderSourceParser.ts","../src/ShaderLab.ts","../src/index.ts"],"sourcesContent":["function _array_like_to_array(arr, len) {\n if (len == null || len > arr.length) len = arr.length;\n\n for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i];\n\n return arr2;\n}\nexport { _array_like_to_array as _ };\n","import { _ as _array_like_to_array } from \"./_array_like_to_array.js\";\n\nfunction _unsupported_iterable_to_array(o, minLen) {\n if (!o) return;\n if (typeof o === \"string\") return _array_like_to_array(o, minLen);\n\n var n = Object.prototype.toString.call(o).slice(8, -1);\n\n if (n === \"Object\" && o.constructor) n = o.constructor.name;\n if (n === \"Map\" || n === \"Set\") return Array.from(n);\n if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _array_like_to_array(o, minLen);\n}\nexport { _unsupported_iterable_to_array as _ };\n","import { _ as _unsupported_iterable_to_array } from \"./_unsupported_iterable_to_array.js\";\n\nfunction _create_for_of_iterator_helper_loose(o, allowArrayLike) {\n var it = typeof Symbol !== \"undefined\" && o[Symbol.iterator] || o[\"@@iterator\"];\n\n if (it) return (it = it.call(o)).next.bind(it);\n // Fallback for engines without symbol support\n if (Array.isArray(o) || (it = _unsupported_iterable_to_array(o)) || allowArrayLike && o && typeof o.length === \"number\") {\n if (it) o = it;\n\n var i = 0;\n\n return function() {\n if (i >= o.length) return { done: true };\n\n return { done: false, value: o[i++] };\n };\n }\n\n throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}\nexport { _create_for_of_iterator_helper_loose as _ };\n","function _set_prototype_of(o, p) {\n _set_prototype_of = Object.setPrototypeOf || function setPrototypeOf(o, p) {\n o.__proto__ = p;\n\n return o;\n };\n\n return _set_prototype_of(o, p);\n}\nexport { _set_prototype_of as _ };\n","import { _ as _set_prototype_of } from \"./_set_prototype_of.js\";\n\nfunction _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function\");\n }\n\n subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } });\n\n if (superClass) _set_prototype_of(subClass, superClass);\n}\nexport { _inherits as _ };\n","function _instanceof(left, right) {\n if (right != null && typeof Symbol !== \"undefined\" && right[Symbol.hasInstance]) {\n return !!right[Symbol.hasInstance](left);\n } else return left instanceof right;\n}\nexport { _instanceof as _ };\n","function _defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n\n if (\"value\" in descriptor) descriptor.writable = true;\n\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n}\nfunction _create_class(Constructor, protoProps, staticProps) {\n if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n if (staticProps) _defineProperties(Constructor, staticProps);\n\n return Constructor;\n}\nexport { _create_class as _ };\n","/******************************************************************************\nCopyright (c) Microsoft Corporation.\n\nPermission to use, copy, modify, and/or distribute this software for any\npurpose with or without fee is hereby granted.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\nPERFORMANCE OF THIS SOFTWARE.\n***************************************************************************** */\n/* global Reflect, Promise, SuppressedError, Symbol, Iterator */\n\nvar extendStatics = function(d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n};\n\nexport function __extends(d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n}\n\nexport var __assign = function() {\n __assign = Object.assign || function __assign(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n }\n return t;\n }\n return __assign.apply(this, arguments);\n}\n\nexport function __rest(s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\n t[p[i]] = s[p[i]];\n }\n return t;\n}\n\nexport function __decorate(decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n}\n\nexport function __param(paramIndex, decorator) {\n return function (target, key) { decorator(target, key, paramIndex); }\n}\n\nexport function __esDecorate(ctor, descriptorIn, decorators, contextIn, initializers, extraInitializers) {\n function accept(f) { if (f !== void 0 && typeof f !== \"function\") throw new TypeError(\"Function expected\"); return f; }\n var kind = contextIn.kind, key = kind === \"getter\" ? \"get\" : kind === \"setter\" ? \"set\" : \"value\";\n var target = !descriptorIn && ctor ? contextIn[\"static\"] ? ctor : ctor.prototype : null;\n var descriptor = descriptorIn || (target ? Object.getOwnPropertyDescriptor(target, contextIn.name) : {});\n var _, done = false;\n for (var i = decorators.length - 1; i >= 0; i--) {\n var context = {};\n for (var p in contextIn) context[p] = p === \"access\" ? {} : contextIn[p];\n for (var p in contextIn.access) context.access[p] = contextIn.access[p];\n context.addInitializer = function (f) { if (done) throw new TypeError(\"Cannot add initializers after decoration has completed\"); extraInitializers.push(accept(f || null)); };\n var result = (0, decorators[i])(kind === \"accessor\" ? { get: descriptor.get, set: descriptor.set } : descriptor[key], context);\n if (kind === \"accessor\") {\n if (result === void 0) continue;\n if (result === null || typeof result !== \"object\") throw new TypeError(\"Object expected\");\n if (_ = accept(result.get)) descriptor.get = _;\n if (_ = accept(result.set)) descriptor.set = _;\n if (_ = accept(result.init)) initializers.unshift(_);\n }\n else if (_ = accept(result)) {\n if (kind === \"field\") initializers.unshift(_);\n else descriptor[key] = _;\n }\n }\n if (target) Object.defineProperty(target, contextIn.name, descriptor);\n done = true;\n};\n\nexport function __runInitializers(thisArg, initializers, value) {\n var useValue = arguments.length > 2;\n for (var i = 0; i < initializers.length; i++) {\n value = useValue ? initializers[i].call(thisArg, value) : initializers[i].call(thisArg);\n }\n return useValue ? value : void 0;\n};\n\nexport function __propKey(x) {\n return typeof x === \"symbol\" ? x : \"\".concat(x);\n};\n\nexport function __setFunctionName(f, name, prefix) {\n if (typeof name === \"symbol\") name = name.description ? \"[\".concat(name.description, \"]\") : \"\";\n return Object.defineProperty(f, \"name\", { configurable: true, value: prefix ? \"\".concat(prefix, \" \", name) : name });\n};\n\nexport function __metadata(metadataKey, metadataValue) {\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\n}\n\nexport function __awaiter(thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n}\n\nexport function __generator(thisArg, body) {\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g = Object.create((typeof Iterator === \"function\" ? Iterator : Object).prototype);\n return g.next = verb(0), g[\"throw\"] = verb(1), g[\"return\"] = verb(2), typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n function verb(n) { return function (v) { return step([n, v]); }; }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (g && (g = 0, op[0] && (_ = 0)), _) try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [op[0] & 2, t.value];\n switch (op[0]) {\n case 0: case 1: t = op; break;\n case 4: _.label++; return { value: op[1], done: false };\n case 5: _.label++; y = op[1]; op = [0]; continue;\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n if (t[2]) _.ops.pop();\n _.trys.pop(); continue;\n }\n op = body.call(thisArg, _);\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n }\n}\n\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n});\n\nexport function __exportStar(m, o) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\n}\n\nexport function __values(o) {\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\n if (m) return m.call(o);\n if (o && typeof o.length === \"number\") return {\n next: function () {\n if (o && i >= o.length) o = void 0;\n return { value: o && o[i++], done: !o };\n }\n };\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\n}\n\nexport function __read(o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o), r, ar = [], e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n }\n catch (error) { e = { error: error }; }\n finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n }\n finally { if (e) throw e.error; }\n }\n return ar;\n}\n\n/** @deprecated */\nexport function __spread() {\n for (var ar = [], i = 0; i < arguments.length; i++)\n ar = ar.concat(__read(arguments[i]));\n return ar;\n}\n\n/** @deprecated */\nexport function __spreadArrays() {\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\n r[k] = a[j];\n return r;\n}\n\nexport function __spreadArray(to, from, pack) {\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\n if (ar || !(i in from)) {\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\n ar[i] = from[i];\n }\n }\n return to.concat(ar || Array.prototype.slice.call(from));\n}\n\nexport function __await(v) {\n return this instanceof __await ? (this.v = v, this) : new __await(v);\n}\n\nexport function __asyncGenerator(thisArg, _arguments, generator) {\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\n return i = Object.create((typeof AsyncIterator === \"function\" ? AsyncIterator : Object).prototype), verb(\"next\"), verb(\"throw\"), verb(\"return\", awaitReturn), i[Symbol.asyncIterator] = function () { return this; }, i;\n function awaitReturn(f) { return function (v) { return Promise.resolve(v).then(f, reject); }; }\n function verb(n, f) { if (g[n]) { i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; if (f) i[n] = f(i[n]); } }\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\n function fulfill(value) { resume(\"next\", value); }\n function reject(value) { resume(\"throw\", value); }\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\n}\n\nexport function __asyncDelegator(o) {\n var i, p;\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: false } : f ? f(v) : v; } : f; }\n}\n\nexport function __asyncValues(o) {\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\n var m = o[Symbol.asyncIterator], i;\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\n}\n\nexport function __makeTemplateObject(cooked, raw) {\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\n return cooked;\n};\n\nvar __setModuleDefault = Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n};\n\nvar ownKeys = function(o) {\n ownKeys = Object.getOwnPropertyNames || function (o) {\n var ar = [];\n for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;\n return ar;\n };\n return ownKeys(o);\n};\n\nexport function __importStar(mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== \"default\") __createBinding(result, mod, k[i]);\n __setModuleDefault(result, mod);\n return result;\n}\n\nexport function __importDefault(mod) {\n return (mod && mod.__esModule) ? mod : { default: mod };\n}\n\nexport function __classPrivateFieldGet(receiver, state, kind, f) {\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\n}\n\nexport function __classPrivateFieldSet(receiver, state, value, kind, f) {\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\n}\n\nexport function __classPrivateFieldIn(state, receiver) {\n if (receiver === null || (typeof receiver !== \"object\" && typeof receiver !== \"function\")) throw new TypeError(\"Cannot use 'in' operator on non-object\");\n return typeof state === \"function\" ? receiver === state : state.has(receiver);\n}\n\nexport function __addDisposableResource(env, value, async) {\n if (value !== null && value !== void 0) {\n if (typeof value !== \"object\" && typeof value !== \"function\") throw new TypeError(\"Object expected.\");\n var dispose, inner;\n if (async) {\n if (!Symbol.asyncDispose) throw new TypeError(\"Symbol.asyncDispose is not defined.\");\n dispose = value[Symbol.asyncDispose];\n }\n if (dispose === void 0) {\n if (!Symbol.dispose) throw new TypeError(\"Symbol.dispose is not defined.\");\n dispose = value[Symbol.dispose];\n if (async) inner = dispose;\n }\n if (typeof dispose !== \"function\") throw new TypeError(\"Object not disposable.\");\n if (inner) dispose = function() { try { inner.call(this); } catch (e) { return Promise.reject(e); } };\n env.stack.push({ value: value, dispose: dispose, async: async });\n }\n else if (async) {\n env.stack.push({ async: true });\n }\n return value;\n}\n\nvar _SuppressedError = typeof SuppressedError === \"function\" ? SuppressedError : function (error, suppressed, message) {\n var e = new Error(message);\n return e.name = \"SuppressedError\", e.error = error, e.suppressed = suppressed, e;\n};\n\nexport function __disposeResources(env) {\n function fail(e) {\n env.error = env.hasError ? new _SuppressedError(e, env.error, \"An error was suppressed during disposal.\") : e;\n env.hasError = true;\n }\n var r, s = 0;\n function next() {\n while (r = env.stack.pop()) {\n try {\n if (!r.async && s === 1) return s = 0, env.stack.push(r), Promise.resolve().then(next);\n if (r.dispose) {\n var result = r.dispose.call(r.value);\n if (r.async) return s |= 2, Promise.resolve(result).then(next, function(e) { fail(e); return next(); });\n }\n else s |= 1;\n }\n catch (e) {\n fail(e);\n }\n }\n if (s === 1) return env.hasError ? Promise.reject(env.error) : Promise.resolve();\n if (env.hasError) throw env.error;\n }\n return next();\n}\n\nexport function __rewriteRelativeImportExtension(path, preserveJsx) {\n if (typeof path === \"string\" && /^\\.\\.?\\//.test(path)) {\n return path.replace(/\\.(tsx)$|((?:\\.d)?)((?:\\.[^./]+?)?)\\.([cm]?)ts$/i, function (m, tsx, d, ext, cm) {\n return tsx ? preserveJsx ? \".jsx\" : \".js\" : d && (!ext || !cm) ? m : (d + ext + \".\" + cm.toLowerCase() + \"js\");\n });\n }\n return path;\n}\n\nexport default {\n __extends,\n __assign,\n __rest,\n __decorate,\n __param,\n __esDecorate,\n __runInitializers,\n __propKey,\n __setFunctionName,\n __metadata,\n __awaiter,\n __generator,\n __createBinding,\n __exportStar,\n __values,\n __read,\n __spread,\n __spreadArrays,\n __spreadArray,\n __await,\n __asyncGenerator,\n __asyncDelegator,\n __asyncValues,\n __makeTemplateObject,\n __importStar,\n __importDefault,\n __classPrivateFieldGet,\n __classPrivateFieldSet,\n __classPrivateFieldIn,\n __addDisposableResource,\n __disposeResources,\n __rewriteRelativeImportExtension,\n};\n","import { IPoolElement } from \"@galacean/engine\";\nimport { ShaderPosition } from \"./ShaderPosition\";\n\nexport class ShaderRange implements IPoolElement {\n public start: ShaderPosition;\n public end: ShaderPosition;\n\n set(start: ShaderPosition, end: ShaderPosition) {\n this.start = start;\n this.end = end;\n }\n\n dispose(): void {\n this.start.dispose();\n this.end.dispose();\n }\n}\n","import { IPoolElement } from \"@galacean/engine\";\n\nexport class ShaderPosition implements IPoolElement {\n index: number;\n // #if _VERBOSE\n line: number;\n column: number;\n // #endif\n\n set(\n index: number,\n // #if _VERBOSE\n line: number,\n column: number\n // #endif\n ) {\n this.index = index;\n // #if _VERBOSE\n this.line = line;\n this.column = column;\n // #endif\n }\n\n dispose(): void {\n this.index = 0;\n // #if _VERBOSE\n this.line = 0;\n this.column = 0;\n // #endif\n }\n}\n","import { Keyword } from \"./enums/Keyword\";\n\nexport enum ETokenType {\n ID = 1000,\n FLOAT_CONSTANT,\n INT_CONSTANT,\n STRING_CONST,\n /** << */\n LEFT_OP,\n /** \\>> */\n RIGHT_OP,\n /** ++ */\n INC_OP,\n /** -- */\n DEC_OP,\n /** <= */\n LE_OP,\n /** \\>= */\n GE_OP,\n /** == */\n EQ_OP,\n /** != */\n NE_OP,\n /** && */\n AND_OP,\n /** || */\n OR_OP,\n /** ^^ */\n XOR_OP,\n /** *= */\n MUL_ASSIGN,\n /** /= */\n DIV_ASSIGN,\n /** += */\n ADD_ASSIGN,\n /** -= */\n SUB_ASSIGN,\n /** %= */\n MOD_ASSIGN,\n /** <<= */\n LEFT_ASSIGN,\n /** >>= */\n RIGHT_ASSIGN,\n /** &= */\n AND_ASSIGN,\n /** ^= */\n XOR_ASSIGN,\n /** |= */\n OR_ASSIGN,\n /** ( */\n LEFT_PAREN,\n /** ) */\n RIGHT_PAREN,\n /** [ */\n LEFT_BRACKET,\n /** ] */\n RIGHT_BRACKET,\n /** { */\n LEFT_BRACE,\n /** } */\n RIGHT_BRACE,\n /** . */\n DOT,\n /** , */\n COMMA,\n COLON,\n /** = */\n EQUAL,\n /** ; */\n SEMICOLON,\n /** ! */\n BANG,\n /** \\- */\n DASH,\n /** ~ */\n TILDE,\n PLUS,\n /** \\* */\n STAR,\n /** / */\n SLASH,\n /** % */\n PERCENT,\n /** < */\n LEFT_ANGLE,\n /** \\> */\n RIGHT_ANGLE,\n VERTICAL_BAR,\n /** ^ */\n CARET,\n /** & */\n AMPERSAND,\n /** ? */\n QUESTION,\n\n NotWord,\n\n /** ε */\n EPSILON = 1998,\n EOF = 1999\n}\n\nexport const TypeAny = 3000;\n\nexport type GalaceanDataType =\n | Keyword.VOID\n | Keyword.FLOAT\n | Keyword.BOOL\n | Keyword.INT\n | Keyword.UINT\n | Keyword.VEC2\n | Keyword.VEC3\n | Keyword.VEC4\n | Keyword.BVEC2\n | Keyword.BVEC3\n | Keyword.BVEC4\n | Keyword.IVEC2\n | Keyword.IVEC3\n | Keyword.IVEC4\n | Keyword.UVEC2\n | Keyword.UVEC3\n | Keyword.UVEC4\n | Keyword.MAT2\n | Keyword.MAT3\n | Keyword.MAT4\n | Keyword.MAT2X3\n | Keyword.MAT2X4\n | Keyword.MAT3X2\n | Keyword.MAT3X4\n | Keyword.MAT4X2\n | Keyword.MAT4X3\n | Keyword.SAMPLER2D\n | Keyword.SAMPLER3D\n | Keyword.SAMPLER_CUBE\n | Keyword.SAMPLER2D_SHADOW\n | Keyword.SAMPLER_CUBE_SHADOW\n | Keyword.SAMPLER2D_ARRAY\n | Keyword.SAMPLER2D_ARRAY_SHADOW\n | Keyword.I_SAMPLER2D\n | Keyword.I_SAMPLER3D\n | Keyword.I_SAMPLER_CUBE\n | Keyword.I_SAMPLER2D_ARRAY\n | Keyword.U_SAMPLER2D\n | Keyword.U_SAMPLER3D\n | Keyword.U_SAMPLER_CUBE\n | Keyword.U_SAMPLER2D_ARRAY\n | Keyword.VEC4_ARRAY\n | typeof TypeAny\n | string;\n\nexport type TokenType = ETokenType | Keyword;\n","export enum Keyword {\n CONST = 0,\n BOOL,\n FLOAT,\n DOUBLE,\n INT,\n UINT,\n BREAK,\n CONTINUE,\n DO,\n ELSE,\n FOR,\n IF,\n WHILE,\n DISCARD,\n RETURN,\n BVEC2,\n BVEC3,\n BVEC4,\n IVEC2,\n IVEC3,\n IVEC4,\n UVEC2,\n UVEC3,\n UVEC4,\n VEC2,\n VEC3,\n VEC4,\n VEC4_ARRAY,\n MAT2,\n MAT3,\n MAT4,\n MAT2X3,\n MAT2X4,\n MAT3X2,\n MAT3X4,\n MAT4X2,\n MAT4X3,\n IN,\n OUT,\n INOUT,\n CENTROID,\n SAMPLER2D,\n SAMPLER3D,\n SAMPLER_CUBE,\n SAMPLER2D_SHADOW,\n SAMPLER_CUBE_SHADOW,\n SAMPLER2D_ARRAY,\n SAMPLER2D_ARRAY_SHADOW,\n I_SAMPLER2D,\n I_SAMPLER3D,\n I_SAMPLER_CUBE,\n I_SAMPLER2D_ARRAY,\n U_SAMPLER2D,\n U_SAMPLER3D,\n U_SAMPLER_CUBE,\n U_SAMPLER2D_ARRAY,\n STRUCT,\n LAYOUT,\n LOCATION,\n VOID,\n\n PRECISION,\n PRECISE,\n HIGHP,\n MEDIUMP,\n LOWP,\n INVARIANT,\n SMOOTH,\n FLAT,\n NOPERSPECTIVE,\n\n // Common Tokens\n True,\n False,\n LeftBrace,\n RightBrace,\n Equal,\n\n // Source Parser Tokens\n GSRenderQueueType,\n GSBlendState,\n GSDepthState,\n GSStencilState,\n GSRasterState,\n GSEditorProperties,\n GSEditorMacros,\n GSEditor,\n GSTags,\n GSVertexShader,\n GSFragmentShader,\n GSSubShader,\n GSPass,\n GSBlendFactor,\n GSBlendOperation,\n GSBool,\n GSNumber,\n GSColor,\n GSCompareFunction,\n GSStencilOperation,\n GSCullMode,\n GSUsePass,\n\n // Macros\n MACRO_IF,\n MACRO_IFDEF,\n MACRO_IFNDEF,\n MACRO_ELSE,\n MACRO_ELIF,\n MACRO_ENDIF,\n MACRO_UNDEF,\n MACRO_DEFINE_EXPRESSION,\n MACRO_CONDITIONAL_EXPRESSION,\n MACRO_CALL\n}\n","function _is_native_reflect_construct() {\n // Since Reflect.construct can't be properly polyfilled, some\n // implementations (e.g. core-js@2) don't set the correct internal slots.\n // Those polyfills don't allow us to subclass built-ins, so we need to\n // use our fallback implementation.\n try {\n // If the internal slots aren't set, this throws an error similar to\n // TypeError: this is not a Boolean object.\n var result = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function() {}));\n } catch (_) {}\n return (_is_native_reflect_construct = function() {\n return !!result;\n })();\n}\n\nexport { _is_native_reflect_construct as _ };\n","import { _ as _is_native_reflect_construct } from \"./_is_native_reflect_construct.js\";\nimport { _ as _set_prototype_of } from \"./_set_prototype_of.js\";\nfunction _construct(Parent, args, Class) {\n if (_is_native_reflect_construct()) _construct = Reflect.construct;\n else {\n _construct = function construct(Parent, args, Class) {\n var a = [null];\n a.push.apply(a, args);\n var Constructor = Function.bind.apply(Parent, a);\n var instance = new Constructor();\n\n if (Class) _set_prototype_of(instance, Class.prototype);\n\n return instance;\n };\n }\n\n return _construct.apply(null, arguments);\n}\nexport { _construct as _ };\n","function _get_prototype_of(o) {\n _get_prototype_of = Object.setPrototypeOf ? Object.getPrototypeOf : function getPrototypeOf(o) {\n return o.__proto__ || Object.getPrototypeOf(o);\n };\n\n return _get_prototype_of(o);\n}\nexport { _get_prototype_of as _ };\n","function _is_native_function(fn) {\n return Function.toString.call(fn).indexOf(\"[native code]\") !== -1;\n}\nexport { _is_native_function as _ };\n","import { _ as _construct } from \"./_construct.js\";\nimport { _ as _get_prototype_of } from \"./_get_prototype_of.js\";\nimport { _ as _is_native_function } from \"./_is_native_function.js\";\nimport { _ as _set_prototype_of } from \"./_set_prototype_of.js\";\n\nfunction _wrap_native_super(Class) {\n var _cache = typeof Map === \"function\" ? new Map() : undefined;\n _wrap_native_super = function(Class) {\n if (Class === null || !_is_native_function(Class)) return Class;\n if (typeof Class !== \"function\") throw new TypeError(\"Super expression must either be null or a function\");\n if (typeof _cache !== \"undefined\") {\n if (_cache.has(Class)) return _cache.get(Class);\n _cache.set(Class, Wrapper);\n }\n\n function Wrapper() {\n return _construct(Class, arguments, _get_prototype_of(this).constructor);\n }\n Wrapper.prototype = Object.create(Class.prototype, { constructor: { value: Wrapper, enumerable: false, writable: true, configurable: true } });\n\n return _set_prototype_of(Wrapper, Class);\n };\n\n return _wrap_native_super(Class);\n}\nexport { _wrap_native_super as _ };\n","import { ShaderPosition } from \"./common/ShaderPosition\";\nimport { ShaderRange } from \"./common/ShaderRange\";\n\nexport class GSError extends Error {\n static wrappingLineCount = 2;\n\n constructor(\n name: GSErrorName,\n message: string,\n public readonly location: ShaderRange | ShaderPosition,\n public readonly source: string,\n public readonly file?: string\n ) {\n super(message);\n this.name = name;\n }\n\n override toString(): string {\n let start: ShaderPosition, end: ShaderPosition;\n const { message, location, source } = this;\n if (!source) {\n return message;\n }\n\n if (location instanceof ShaderPosition) {\n start = end = location;\n } else {\n start = location.start;\n end = location.end;\n }\n const lines = source.split(\"\\n\");\n\n let diagnosticMessage = `${this.name}: ${message}\\n\\n`;\n\n // #if _VERBOSE\n const lineSplit = \"|···\";\n\n const wrappingLineCount = GSError.wrappingLineCount;\n for (let i = start.line - wrappingLineCount, n = end.line + wrappingLineCount; i <= n; i++) {\n const line = lines[i];\n diagnosticMessage += lineSplit + `${line}\\n`;\n\n if (i < start.line || i > end.line) continue;\n\n let remarkStart = 0;\n let remarkEnd = line.length;\n let paddingLength = lineSplit.length;\n if (i === start.line) {\n remarkStart = start.column;\n paddingLength += start.column;\n }\n if (i === end.line) {\n remarkEnd = end.column;\n }\n const remarkLength = Math.max(remarkEnd - remarkStart, 1);\n\n diagnosticMessage += \" \".repeat(paddingLength) + \"^\".repeat(remarkLength) + \"\\n\";\n }\n // #endif\n\n return diagnosticMessage;\n }\n}\n\nexport enum GSErrorName {\n PreprocessorError = \"PreprocessorError\",\n CompilationError = \"CompilationError\",\n ScannerError = \"ScannerError\",\n CompilationWarn = \"CompilationWarning\"\n}\n","import { ClearableObjectPool, 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 { TokenType } from \"../common\";\n\nexport type Terminal = TokenType;\n\nexport enum NoneTerminal {\n START = 2000,\n // galacean\n gs_shader_program,\n\n // glsl\n global_declaration,\n variable_declaration,\n variable_declaration_list,\n variable_declaration_statement,\n array_specifier_list,\n array_specifier,\n ext_builtin_type_specifier_nonarray,\n precision_specifier,\n variable_identifier,\n variable_identifier_node,\n primary_expression,\n postfix_expression,\n integer_expression,\n function_call,\n function_call_generic,\n function_call_header_no_parameters,\n function_call_header_with_parameters,\n function_call_parameter_list,\n function_call_header,\n function_identifier,\n constructor_identifier,\n unary_expression,\n unary_operator,\n multiplicative_expression,\n additive_expression,\n shift_expression,\n relational_expression,\n equality_expression,\n and_expression,\n inclusive_or_expression,\n exclusive_or_expression,\n logical_and_expression,\n logical_xor_expression,\n logical_or_expression,\n conditional_expression,\n assignment_expression,\n assignment_operator,\n expression,\n integer_constant_expression,\n integer_constant_expression_operator,\n declaration,\n function_prototype,\n function_declarator,\n function_header_with_parameters,\n function_header,\n function_parameter_list,\n parameter_declarator,\n parameter_declaration,\n parameter_qualifier,\n parameter_type_specifier,\n init_declarator_list,\n single_declaration,\n fully_specified_type,\n type_qualifier,\n single_type_qualifier,\n storage_qualifier,\n precision_qualifier,\n interpolation_qualifier,\n invariant_qualifier,\n type_specifier,\n type_specifier_nonarray,\n type_specifier_no_prec,\n basic_type,\n struct_specifier,\n struct_declaration_list,\n struct_declaration,\n layout_qualifier,\n struct_declarator_list,\n struct_declarator,\n identifier_list,\n decl_identifier,\n initializer,\n initializer_list,\n declaration_statement,\n simple_statement,\n compound_statement_no_scope,\n statement_with_scope,\n compound_statement,\n statement,\n statement_list,\n iteration_statement_no_new_scope,\n expression_statement,\n selection_statement,\n selection_rest_statement,\n condition,\n conditionopt,\n iteration_statement,\n for_init_statement,\n for_rest_statement,\n jump_statement,\n external_declaration,\n function_definition,\n field_selection,\n bool_constant,\n function_identifier_node,\n typename_identifier_node,\n scope_brace,\n scope_end_brace,\n\n // Macro\n macro_undef,\n macro_push_context,\n macro_pop_context,\n macro_elif_expression,\n macro_else_expression,\n global_macro_if_statement,\n global_macro_declaration,\n global_macro_branch,\n macro_struct_declaration,\n macro_struct_branch,\n macro_if_statement,\n macro_branch,\n macro_param_case_list,\n macro_param_block,\n macro_parameter_branch,\n macro_call_arg_case_list,\n macro_call_arg_block,\n macro_call_arg_branch,\n\n // Macro call\n macro_call_symbol,\n macro_call_function,\n\n _ignore\n}\n\nexport type GrammarSymbol = Terminal | NoneTerminal;\n\nexport type Derivation = GrammarSymbol[];\n","import { NoneTerminal, GrammarSymbol } from \"../parser/GrammarSymbol\";\n\nexport default class Production {\n private static _id = 0;\n static pool: Map<number, Production> = new Map();\n\n readonly goal: NoneTerminal;\n readonly derivation: GrammarSymbol[];\n readonly id: number;\n\n constructor(goal: NoneTerminal, derivation: GrammarSymbol[]) {\n this.goal = goal;\n this.derivation = derivation;\n this.id = Production._id++;\n Production.pool.set(this.id, this);\n }\n}\n","import { NoneTerminal, Terminal } from \"../parser/GrammarSymbol\";\n\nexport type StateActionTable = Map<number /** state ID */, ActionTable>;\nexport type ActionTable = Map<Terminal, ActionInfo>;\nexport type StateGotoTable = Map<number /** state ID */, GotoTable>;\nexport type GotoTable = Map<NoneTerminal, number /** state ID */>;\n\nexport enum EAction {\n Shift = 0,\n Reduce,\n Accept\n}\n\nexport interface ActionInfo {\n action: EAction;\n target?: number;\n}\n","import { ETokenType, ShaderRange } from \"../common\";\nimport { ASTNode, TreeNode } from \"../parser/AST\";\nimport { TranslationRule } from \"../parser/SemanticAnalyzer\";\nimport { NoneTerminal, GrammarSymbol } from \"../parser/GrammarSymbol\";\nimport Production from \"./Production\";\nimport { ActionInfo, EAction } from \"./types\";\nimport { ShaderLab } from \"../ShaderLab\";\nimport { ClearableObjectPool, IPoolElement } from \"@galacean/engine\";\nimport { NodeChild } from \"../parser/types\";\nimport { Keyword } from \"../common/enums/Keyword\";\n\nexport default class GrammarUtils {\n static isTerminal(sm: GrammarSymbol) {\n return sm < NoneTerminal.START;\n }\n\n static toString(sm: GrammarSymbol) {\n if (this.isTerminal(sm)) {\n return ETokenType[sm] ?? Keyword[sm];\n }\n return NoneTerminal[sm];\n }\n\n static createProductionWithOptions(\n goal: NoneTerminal,\n options: GrammarSymbol[][],\n /** the ast node */\n astTypePool?: ClearableObjectPool<\n { set: (loc: ShaderRange, children: NodeChild[]) => void } & IPoolElement & TreeNode\n >\n ) {\n const ret: [GrammarSymbol[], TranslationRule | undefined][] = [];\n for (const opt of options) {\n ret.push([\n [goal, ...opt],\n function (sa, ...children) {\n if (!children[0]) return;\n const start = children[0].location.start;\n const end = children[children.length - 1].location.end;\n const location = ShaderLab.createRange(start, end);\n ASTNode.get(astTypePool ?? ASTNode.TrivialNode.pool, sa, location, children);\n }\n ]);\n }\n return ret;\n }\n\n static addMapSetItem<K, T>(map: Map<K, Set<T>>, k: K, v: T) {\n const set = map.get(k) ?? new Set();\n set.add(v);\n map.set(k, set);\n }\n\n static isSubSet<T>(sa: Set<T>, sb: Set<T>) {\n for (const item of sa) {\n if (!sb.has(item)) return false;\n }\n return true;\n }\n\n static isActionEqual(a: ActionInfo, b: ActionInfo) {\n return a.action === b.action && a.target === b.target;\n }\n\n // #if _VERBOSE\n static printAction(actionInfo: ActionInfo) {\n const production = Production.pool.get(actionInfo.target!);\n return `<Action: ${EAction[actionInfo.action]} -> ${this.printProduction(production)}>`;\n }\n\n static printProduction(production: Production) {\n const deriv = production.derivation.map((gs) => GrammarUtils.toString(gs)).join(\"|\");\n return `${NoneTerminal[production.goal]} :=> ${deriv}`;\n }\n // #endif\n}\n","import { ETokenType } from \"../common\";\nimport { NoneTerminal, Terminal } from \"../parser/GrammarSymbol\";\nimport Production from \"./Production\";\nimport GrammarUtils from \"./Utils\";\n\nexport default class StateItem {\n static _id = 0;\n\n readonly production: Production;\n readonly position: number;\n readonly lookaheadSet: Set<Terminal>;\n readonly id: number;\n\n _needReInfer = true;\n get needReInfer() {\n return this._needReInfer;\n }\n set needReInfer(v: boolean) {\n this._needReInfer = v;\n }\n\n get curSymbol() {\n return this.production.derivation[this.position];\n }\n get nextSymbol() {\n return this.production.derivation[this.position + 1];\n }\n\n constructor(production: Production, position: number, lookahead: Iterable<Terminal>) {\n this.production = production;\n this.position = position;\n this.lookaheadSet = new Set();\n for (const la of lookahead) {\n this.lookaheadSet.add(la);\n }\n this.id = StateItem._id++;\n }\n\n addLookahead(ts: Iterable<Terminal>) {\n for (const t of ts) {\n if (this.lookaheadSet.has(t)) continue;\n this.lookaheadSet.add(t);\n this.needReInfer = true;\n }\n }\n\n symbolByOffset(offset: number) {\n return this.production.derivation[this.position + offset];\n }\n\n canReduce() {\n if (this.position > this.production.derivation.length - 1) return true;\n else {\n for (let i = this.position; i < this.production.derivation.length; i++) {\n if (this.production.derivation[i] !== ETokenType.EPSILON) return false;\n }\n return true;\n }\n }\n\n advance() {\n // #if _VERBOSE\n if (this.canReduce()) throw `Error: advance reduce-able parsing state item`;\n // #endif\n return new StateItem(this.production, this.position + 1, this.lookaheadSet);\n }\n\n // #if _VERBOSE\n toString() {\n const coreItem = this.production.derivation.map((item) => GrammarUtils.toString(item));\n coreItem[this.position] = \".\" + (coreItem[this.position] ?? \"\");\n\n return `${NoneTerminal[this.production.goal]} :=> ${coreItem.join(\"|\")} ;${Array.from(this.lookaheadSet)\n .map((item) => GrammarUtils.toString(item))\n .join(\"/\")}`;\n }\n // #endif\n}\n","import { Terminal } from \"../parser/GrammarSymbol\";\nimport Production from \"./Production\";\nimport StateItem from \"./StateItem\";\n\nexport default class State {\n static closureMap: Map<string /** state mapKey */, State> = new Map();\n static pool: Map<number, State> = new Map();\n static _id = 0;\n\n readonly id: number;\n readonly cores: Set<StateItem>;\n private _items: Set<StateItem>;\n get items() {\n return this._items;\n }\n\n closured = false;\n get needReInfer() {\n for (const core of this.cores) {\n if (core.needReInfer) return true;\n }\n return false;\n }\n\n private _stateItemPool: Map<string /** Map ID */, StateItem> = new Map();\n\n static create(cores: StateItem[]) {\n const cacheKey = this.getMapKey(cores);\n const state = this.closureMap.get(cacheKey);\n if (state) {\n for (const core of cores) {\n // merge lookahead\n state.createStateItem(core.production, core.position, core.lookaheadSet);\n }\n return state;\n }\n\n const newState = new State(cores);\n this.closureMap.set(cacheKey, newState);\n return newState;\n }\n\n // TODO: any optimization?\n static getMapKey(cores: StateItem[]) {\n return cores.map((item) => `${item.production.id},${item.position}`).join(\";\");\n }\n\n private constructor(cores: Iterable<StateItem>) {\n this.id = State._id++;\n this._items = new Set([...cores]);\n this.cores = new Set([...cores]);\n for (const it of cores) {\n const itemMapKey = this.getStateItemMapKey(it.production, it.position);\n this._stateItemPool.set(itemMapKey, it);\n }\n State.pool.set(this.id, this);\n }\n\n // TODO: any optimization?\n getStateItemMapKey(production: Production, position: number) {\n return `${production.id},${position}`;\n }\n\n createStateItem(production: Production, position: number, lookaheadSet: Iterable<Terminal> = new Set()) {\n const mapId = this.getStateItemMapKey(production, position);\n const item = this._stateItemPool.get(mapId);\n if (item) {\n for (const la of lookaheadSet) {\n if (item.lookaheadSet.has(la)) continue;\n item.lookaheadSet.add(la);\n item.needReInfer = true;\n }\n return item;\n }\n const newItem = new StateItem(production, position, lookaheadSet);\n this._stateItemPool.set(mapId, newItem);\n return newItem;\n }\n}\n","import { ETokenType, GalaceanDataType, TypeAny } from \"./common\";\nimport { BaseToken as Token } from \"./common/BaseToken\";\nimport { TreeNode } from \"./parser/AST\";\nimport { GrammarSymbol, NoneTerminal } from \"./parser/GrammarSymbol\";\n// #if _VERBOSE\nimport { Keyword } from \"./common/enums/Keyword\";\nimport State from \"./lalr/State\";\n// #endif\n\nexport class ParserUtils {\n static unwrapNodeByType<T = TreeNode>(node: TreeNode, type: NoneTerminal): T | undefined {\n const child = node.children[0];\n if (child instanceof Token) return;\n if (child.nt === type) return child as T;\n return ParserUtils.unwrapNodeByType(child, type);\n }\n\n // #if _VERBOSE\n /**\n * Check if type `tb` is compatible with type `ta`.\n */\n static typeCompatible(ta: GalaceanDataType, tb: GalaceanDataType | undefined) {\n if (tb == undefined || tb === TypeAny) return true;\n if (ta === Keyword.INT) {\n return ta === tb || tb === Keyword.UINT;\n }\n return ta === tb;\n }\n\n static toString(sm: GrammarSymbol) {\n if (this.isTerminal(sm)) {\n return ETokenType[sm] ?? Keyword[sm];\n }\n return NoneTerminal[sm];\n }\n // #endif\n\n static isTerminal(sm: GrammarSymbol) {\n return sm < NoneTerminal.START;\n }\n\n /**\n * @internal\n */\n // #if _VERBOSE\n static printStatePool(logPath: string) {\n let output = \"\";\n\n console.log(\"========== Parser Pool ==========\");\n\n let count = 0;\n for (const state of State.pool.values()) {\n count++;\n let tmp = \"\";\n tmp += `${state.id}: \\n`.padEnd(4);\n for (const psItem of state.items) {\n tmp += \" \" + psItem.toString() + \"\\n\";\n }\n output += tmp;\n }\n\n console.log(\"state count:\", count);\n console.log(output);\n }\n // #endif\n}\n","import { Logger, ShaderPass } from \"@galacean/engine\";\n/** @ts-ignore */\nimport { ShaderLib } from \"@galacean/engine\";\n\nexport enum MacroValueType {\n Number, // 1, 1.1\n Symbol, // variable name\n FunctionCall, // function call, e.g. clamp(a, 0.0, 1.0)\n Other // shaderLab does not check this\n}\n\nexport interface MacroDefineInfo {\n isFunction: boolean;\n name: string;\n value: string;\n valueType: MacroValueType;\n params: string[];\n functionCallName: string;\n}\n\nexport interface MacroDefineList {\n [macroName: string]: MacroDefineInfo[];\n}\n\nexport class Preprocessor {\n private static readonly _includeReg = /^[ \\t]*#include +\"([\\w\\d./]+)\"/gm;\n private static readonly _macroRegex =\n /^\\s*#define\\s+(\\w+)[ ]*(\\(([^)]*)\\))?[ ]+(\\(?\\w+\\)?.*?)(?:\\/\\/.*|\\/\\*.*?\\*\\/)?\\s*$/gm;\n private static readonly _symbolReg = /^[a-zA-Z_][a-zA-Z0-9_]*$/;\n private static readonly _funcCallReg = /^([a-zA-Z_][a-zA-Z0-9_]*)\\s*\\((.*)\\)$/;\n private static readonly _macroDefineIncludeMap = new Map<string, MacroDefineList>();\n\n /**\n * @internal\n */\n static _repeatIncludeSet = new Set<string>();\n\n static parse(\n source: string,\n basePathForIncludeKey: string,\n outMacroDefineList: MacroDefineList,\n parseMacro = true\n ): string {\n if (parseMacro) {\n this._parseMacroDefines(source, outMacroDefineList);\n }\n return source.replace(this._includeReg, (_, includeName) =>\n this._replace(includeName, basePathForIncludeKey, outMacroDefineList)\n );\n }\n\n static getReferenceSymbolNames(macroDefineList: MacroDefineList, macroName: string, out: string[]): void {\n out.length = 0;\n const infos = macroDefineList[macroName];\n if (!infos) return;\n\n for (let i = 0; i < infos.length; i++) {\n const info = infos[i];\n const valueType = info.valueType;\n if (valueType === MacroValueType.FunctionCall || valueType === MacroValueType.Symbol) {\n const referencedName = valueType === MacroValueType.FunctionCall ? info.functionCallName : info.value;\n if (info.params.indexOf(referencedName) !== -1) continue;\n if (out.indexOf(referencedName) === -1) out.push(referencedName);\n } else if (valueType === MacroValueType.Other) {\n // #if _VERBOSE\n Logger.warn(\n `Warning: Macro \"${info.name}\" has an unrecognized value \"${info.value}\". ShaderLab does not validate this type.`\n );\n // #endif\n }\n }\n }\n\n private static _isNumber(str: string): boolean {\n return !isNaN(Number(str));\n }\n\n private static _isExist(list: MacroDefineInfo[], item: MacroDefineInfo): boolean {\n return list.some(\n (e) =>\n e.valueType === item.valueType &&\n e.value === item.value &&\n e.isFunction === item.isFunction &&\n e.functionCallName === item.functionCallName &&\n e.params.length === item.params.length &&\n e.params.every((p, i) => p === item.params[i])\n );\n }\n\n private static _parseMacroDefines(source: string, outMacroList: MacroDefineList): void {\n let match: RegExpExecArray | null;\n this._macroRegex.lastIndex = 0;\n\n while ((match = this._macroRegex.exec(source)) !== null) {\n const [, name, paramsGroup, paramsStr, valueRaw] = match;\n const isFunction = !!paramsGroup && !!valueRaw;\n const params =\n isFunction && paramsStr\n ? paramsStr\n .split(\",\")\n .map((p) => p.trim())\n .filter(Boolean)\n : [];\n const value = valueRaw ? valueRaw.trim() : \"\";\n\n let valueType = MacroValueType.Other;\n let functionCallName = \"\";\n\n if (this._isNumber(value)) {\n valueType = MacroValueType.Number;\n } else if (this._symbolReg.test(value)) {\n valueType = MacroValueType.Symbol;\n } else {\n const callMatch = this._funcCallReg.exec(value);\n if (callMatch) {\n valueType = MacroValueType.FunctionCall;\n functionCallName = callMatch[1];\n }\n }\n\n const info: MacroDefineInfo = {\n isFunction,\n name,\n value,\n valueType,\n params,\n functionCallName\n };\n\n const arr = outMacroList[name];\n if (arr) {\n if (!this._isExist(arr, info)) arr.push(info);\n } else {\n outMacroList[name] = [info];\n }\n }\n }\n\n private static _mergeMacroDefineLists(from: MacroDefineList, to: MacroDefineList): void {\n for (const macroName in from) {\n if (to[macroName]) {\n const target = to[macroName];\n const src = from[macroName];\n for (let i = 0; i < src.length; i++) {\n const info = src[i];\n if (!this._isExist(target, info)) target.push(info);\n }\n } else {\n to[macroName] = from[macroName];\n }\n }\n }\n\n private static _replace(\n includeName: string,\n basePathForIncludeKey: string,\n outMacroDefineList: MacroDefineList\n ): string {\n let path: string;\n if (includeName[0] === \".\") {\n // @ts-ignore\n path = new URL(includeName, basePathForIncludeKey).href.substring(ShaderPass._shaderRootPath.length);\n } else {\n path = includeName;\n }\n\n const chunk = (ShaderLib as any)[path];\n if (!chunk) {\n Logger.error(`Shader slice \"${path}\" not founded.`);\n return \"\";\n }\n\n if (this._repeatIncludeSet.has(path)) {\n Logger.warn(`Shader slice \"${path}\" is included multiple times.`);\n }\n this._repeatIncludeSet.add(path);\n\n if (this._macroDefineIncludeMap.has(path)) {\n this._mergeMacroDefineLists(this._macroDefineIncludeMap.get(path)!, outMacroDefineList);\n } else {\n const chunkMacroDefineList: MacroDefineList = {};\n this._parseMacroDefines(chunk, chunkMacroDefineList);\n this._macroDefineIncludeMap.set(path, chunkMacroDefineList);\n this._mergeMacroDefineLists(chunkMacroDefineList, outMacroDefineList);\n }\n\n return this.parse(chunk, basePathForIncludeKey, outMacroDefineList, false);\n }\n}\n","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 { Logger } from \"@galacean/engine\";\nimport { IBaseSymbol } from \"./IBaseSymbol\";\n\nexport class SymbolTable<T extends IBaseSymbol> {\n private _table: Map<string, T[]> = new Map();\n\n insert(symbol: T, isInMacroBranch = false): void {\n symbol.isInMacroBranch = isInMacroBranch;\n\n const entry = this._table.get(symbol.ident) ?? [];\n for (let i = 0, n = entry.length; i < n; i++) {\n if (entry[i].isInMacroBranch) continue;\n if (entry[i].equal(symbol)) {\n Logger.warn(\"Replace symbol:\", symbol.ident);\n entry[i] = symbol;\n return;\n }\n }\n\n entry.push(symbol);\n this._table.set(symbol.ident, entry);\n }\n\n getSymbol(symbol: T, includeMacro = false): T | undefined {\n const entry = this._table.get(symbol.ident);\n if (entry) {\n for (let i = entry.length - 1; i >= 0; i--) {\n const item = entry[i];\n if (!includeMacro && item.isInMacroBranch) continue;\n if (item.equal(symbol)) return item;\n }\n }\n }\n\n getSymbols(symbol: T, includeMacro = false, out: T[]): T[] {\n out.length = 0;\n this._getSymbols(symbol, includeMacro, out);\n\n return out;\n }\n\n /**\n * @internal\n */\n _getSymbols(symbol: T, includeMacro = false, out: T[]): T[] {\n const entry = this._table.get(symbol.ident);\n\n if (entry) {\n for (let i = entry.length - 1; i >= 0; i--) {\n const item = entry[i];\n if (!includeMacro && item.isInMacroBranch) continue;\n if (item.equal(symbol)) out.push(item);\n }\n }\n\n return out;\n }\n}\n","import { IBaseSymbol } from \"./IBaseSymbol\";\nimport { SymbolTable } from \"./SymbolTable\";\n\nexport class SymbolTableStack<S extends IBaseSymbol, T extends SymbolTable<S>> {\n stack: T[] = [];\n\n /**\n * @internal\n */\n _macroLevel = 0;\n\n get scope(): T {\n return this.stack[this.stack.length - 1];\n }\n\n get isInMacroBranch(): boolean {\n return this._macroLevel > 0;\n }\n\n pushScope(scope: T): void {\n this.stack.push(scope);\n }\n\n clear(): void {\n this.stack.length = 0;\n }\n\n popScope(): T | undefined {\n return this.stack.pop();\n }\n\n insert(symbol: S): void {\n this.scope.insert(symbol, this.isInMacroBranch);\n }\n\n lookup(symbol: S, includeMacro = false): S | undefined {\n for (let i = this.stack.length - 1; i >= 0; i--) {\n const symbolTable = this.stack[i];\n const result = symbolTable.getSymbol(symbol, includeMacro);\n if (result) return result;\n }\n return undefined;\n }\n\n lookupAll(symbol: S, includeMacro = false, out: S[]): S[] {\n out.length = 0;\n for (let i = this.stack.length - 1; i >= 0; i--) {\n const symbolTable = this.stack[i];\n symbolTable._getSymbols(symbol, includeMacro, out);\n }\n return out;\n }\n}\n","import { GalaceanDataType } from \"../../common\";\nimport { ASTNode } from \"../AST\";\n\nexport class SymbolDataType {\n constructor(\n public type: GalaceanDataType,\n public typeLexeme: string,\n public arraySpecifier?: ASTNode.ArraySpecifier\n ) {}\n}\n","import { 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 { BaseToken } from \"../common/BaseToken\";\nimport { EShaderStage } from \"../common/enums/ShaderStage\";\nimport { SymbolTable } from \"../common/SymbolTable\";\nimport { GSErrorName } from \"../GSError\";\nimport { ASTNode, TreeNode } from \"../parser/AST\";\nimport { ESymbolType, SymbolInfo } from \"../parser/symbolTable\";\nimport { StructProp } from \"../parser/types\";\nimport { ShaderLab } from \"../ShaderLab\";\nimport { ShaderLabUtils } from \"../ShaderLabUtils\";\n\n/** @internal */\nexport class VisitorContext {\n private static _lookupSymbol: SymbolInfo = new SymbolInfo(\"\", null);\n private static _singleton: VisitorContext;\n static get context() {\n return this._singleton;\n }\n\n static reset() {\n if (!this._singleton) {\n this._singleton = new VisitorContext();\n }\n this._singleton.reset();\n }\n\n attributeStructs: ASTNode.StructSpecifier[] = [];\n attributeList: StructProp[] = [];\n varyingStructs: ASTNode.StructSpecifier[] = [];\n varyingList: StructProp[] = [];\n mrtStructs: ASTNode.StructSpecifier[] = [];\n mrtList: StructProp[] = [];\n\n stage: EShaderStage;\n stageEntry: string;\n\n _referencedAttributeList: Record<string, StructProp[]>;\n _referencedVaryingList: Record<string, StructProp[]>;\n _referencedMRTList: Record<string, StructProp[]>;\n _referencedGlobals: Record<string, SymbolInfo[]>;\n _referencedGlobalMacroASTs: TreeNode[] = [];\n\n _passSymbolTable: SymbolTable<SymbolInfo>;\n\n reset(resetAll = true) {\n if (resetAll) {\n this.attributeStructs.length = 0;\n this.attributeList.length = 0;\n this.varyingStructs.length = 0;\n this.varyingList.length = 0;\n this.mrtStructs.length = 0;\n this.mrtList.length = 0;\n }\n\n this._referencedAttributeList = Object.create(null);\n this._referencedVaryingList = Object.create(null);\n this._referencedMRTList = Object.create(null);\n this._referencedGlobals = Object.create(null);\n this._referencedGlobalMacroASTs.length = 0;\n }\n\n isAttributeStruct(type: string) {\n return this.attributeStructs.findIndex((item) => item.ident!.lexeme === type) !== -1;\n }\n\n isVaryingStruct(type: string) {\n return this.varyingStructs.findIndex((item) => item.ident!.lexeme === type) !== -1;\n }\n\n isMRTStruct(type: string) {\n return this.mrtStructs.findIndex((item) => item.ident!.lexeme === type) !== -1;\n }\n\n referenceAttribute(ident: BaseToken): Error | void {\n const lexeme = ident.lexeme;\n if (this._referencedAttributeList[lexeme]) return;\n\n const props = this.attributeList.filter((item) => item.ident.lexeme === lexeme);\n if (!props.length) {\n return ShaderLabUtils.createGSError(\n `referenced attribute not found: ${lexeme}`,\n GSErrorName.CompilationError,\n ShaderLab._processingPassText,\n ident.location\n );\n }\n this._referencedAttributeList[lexeme] = props;\n }\n\n referenceVarying(ident: BaseToken): Error | void {\n const lexeme = ident.lexeme;\n if (this._referencedVaryingList[lexeme]) return;\n\n const props = this.varyingList.filter((item) => item.ident.lexeme === lexeme);\n if (!props.length) {\n return ShaderLabUtils.createGSError(\n `referenced varying not found: ${lexeme}`,\n GSErrorName.CompilationError,\n ShaderLab._processingPassText,\n ident.location\n );\n }\n this._referencedVaryingList[lexeme] = props;\n }\n\n referenceMRTProp(ident: BaseToken): Error | void {\n const lexeme = ident.lexeme;\n if (this._referencedMRTList[lexeme]) return;\n\n const props = this.mrtList.filter((item) => item.ident.lexeme === lexeme);\n if (!props.length) {\n return ShaderLabUtils.createGSError(\n `referenced mrt not found: ${lexeme}`,\n GSErrorName.CompilationError,\n ShaderLab._processingPassText,\n ident.location\n );\n }\n this._referencedMRTList[lexeme] = props;\n }\n\n referenceGlobal(ident: string, type: ESymbolType): void {\n if (this._referencedGlobals[ident]) return;\n\n this._referencedGlobals[ident] = [];\n\n const lookupSymbol = VisitorContext._lookupSymbol;\n lookupSymbol.set(ident, type);\n this._passSymbolTable.getSymbols(lookupSymbol, true, this._referencedGlobals[ident]);\n }\n}\n","import { IPoolElement } from \"@galacean/engine\";\n\nexport class TempArray<T> implements IPoolElement {\n array: Array<T> = new Array();\n\n dispose(): void {\n this.array.length = 0;\n }\n}\n","import { ShaderPosition, ShaderRange } from \"../common\";\nimport { BaseToken } from \"../common/BaseToken\";\nimport { GSErrorName } from \"../GSError\";\nimport { ASTNode, TreeNode } from \"../parser/AST\";\nimport { NoneTerminal } from \"../parser/GrammarSymbol\";\nimport { ESymbolType, FnSymbol } from \"../parser/symbolTable\";\nimport { NodeChild, StructProp } from \"../parser/types\";\nimport { ParserUtils } from \"../ParserUtils\";\nimport { ShaderLab } from \"../ShaderLab\";\nimport { VisitorContext } from \"./VisitorContext\";\n// #if _VERBOSE\nimport { GSError } from \"../GSError\";\n// #endif\nimport { Logger, ReturnableObjectPool } from \"@galacean/engine\";\nimport { Keyword } from \"../common/enums/Keyword\";\nimport { TempArray } from \"../TempArray\";\nimport { ICodeSegment } from \"./types\";\n\n/**\n * @internal\n * The code generator\n */\nexport abstract class CodeGenVisitor {\n // #if _VERBOSE\n readonly errors: Error[] = [];\n // #endif\n\n abstract getAttributeProp(prop: StructProp): string;\n abstract getVaryingProp(prop: StructProp): string;\n abstract getMRTProp(prop: StructProp): string;\n\n protected static _tmpArrayPool = new ReturnableObjectPool(TempArray<string>, 10);\n\n defaultCodeGen(children: NodeChild[]) {\n const pool = CodeGenVisitor._tmpArrayPool;\n let ret = pool.get();\n ret.dispose();\n for (const child of children) {\n if (child instanceof BaseToken) {\n ret.array.push(child.lexeme);\n } else {\n ret.array.push(child.codeGen(this));\n }\n }\n pool.return(ret);\n return ret.array.join(\" \");\n }\n\n visitPostfixExpression(node: ASTNode.PostfixExpression): string {\n const children = node.children;\n const derivationLength = children.length;\n const context = VisitorContext.context;\n\n if (derivationLength === 3) {\n const postExpr = children[0] as ASTNode.PostfixExpression;\n const prop = children[2];\n\n if (prop instanceof BaseToken) {\n if (context.isAttributeStruct(<string>postExpr.type)) {\n const error = context.referenceAttribute(prop);\n // #if _VERBOSE\n if (error) {\n this.errors.push(<GSError>error);\n }\n // #endif\n return prop.lexeme;\n } else if (context.isVaryingStruct(<string>postExpr.type)) {\n const error = context.referenceVarying(prop);\n // #if _VERBOSE\n if (error) {\n this.errors.push(<GSError>error);\n }\n // #endif\n return prop.lexeme;\n } else if (context.isMRTStruct(<string>postExpr.type)) {\n const error = context.referenceMRTProp(prop);\n // #if _VERBOSE\n if (error) {\n this.errors.push(<GSError>error);\n }\n // #endif\n return prop.lexeme;\n }\n\n return `${postExpr.codeGen(this)}.${prop.lexeme}`;\n } else {\n return `${postExpr.codeGen(this)}.${prop.codeGen(this)}`;\n }\n } else if (derivationLength === 4) {\n const identNode = children[0] as ASTNode.PostfixExpression;\n const indexNode = children[2] as ASTNode.Expression;\n const identLexeme = identNode.codeGen(this);\n const indexLexeme = indexNode.codeGen(this);\n if (identLexeme === \"gl_FragData\") {\n this._reportError(identNode.location, \"Please use MRT struct instead of gl_FragData.\");\n }\n return `${identLexeme}[${indexLexeme}]`;\n }\n\n return this.defaultCodeGen(node.children);\n }\n\n visitVariableIdentifier(node: ASTNode.VariableIdentifier): string {\n for (let name of node.referenceGlobalSymbolNames) {\n VisitorContext.context.referenceGlobal(name, ESymbolType.Any);\n }\n\n return node.getLexeme(this);\n }\n\n visitFunctionCall(node: ASTNode.FunctionCall): string {\n const call = node.children[0] as ASTNode.FunctionCallGeneric;\n if (call.fnSymbol instanceof FnSymbol) {\n VisitorContext.context.referenceGlobal(call.fnSymbol.ident, ESymbolType.FN);\n\n const paramList = call.children[2];\n if (paramList instanceof ASTNode.FunctionCallParameterList) {\n const astNodes = paramList.paramNodes;\n const paramInfoList = call.fnSymbol.astNode.protoType.parameterList;\n\n const params = astNodes.filter((_, i) => {\n const typeInfo = paramInfoList?.[i]?.typeInfo;\n return (\n !typeInfo ||\n (!VisitorContext.context.isAttributeStruct(typeInfo.typeLexeme) &&\n !VisitorContext.context.isVaryingStruct(typeInfo.typeLexeme) &&\n !VisitorContext.context.isMRTStruct(typeInfo.typeLexeme))\n );\n });\n\n let paramsCode = \"\";\n\n for (let i = 0, length = params.length; i < length; i++) {\n const astNode = params[i];\n const code = astNode.codeGen(this);\n if (astNode instanceof ASTNode.MacroCallArgBlock || i === 0) {\n paramsCode += code;\n } else {\n paramsCode += `, ${code}`;\n }\n }\n\n return `${call.fnSymbol.ident}(${paramsCode})`;\n }\n }\n\n return this.defaultCodeGen(node.children);\n }\n\n visitMacroCallFunction(node: ASTNode.MacroCallFunction): string {\n const children = node.children;\n const paramList = children[2];\n if (paramList instanceof ASTNode.FunctionCallParameterList) {\n const astNodes = paramList.paramNodes;\n\n const params = astNodes.filter((node) => {\n if (node instanceof ASTNode.AssignmentExpression) {\n const variableParam = ParserUtils.unwrapNodeByType<ASTNode.VariableIdentifier>(\n node,\n NoneTerminal.variable_identifier\n );\n if (\n variableParam &&\n typeof variableParam.typeInfo === \"string\" &&\n (VisitorContext.context.isAttributeStruct(variableParam.typeInfo) ||\n VisitorContext.context.isVaryingStruct(variableParam.typeInfo) ||\n VisitorContext.context.isMRTStruct(variableParam.typeInfo))\n ) {\n return false;\n }\n }\n\n return true;\n });\n\n let paramsCode = \"\";\n for (let i = 0, length = params.length; i < length; i++) {\n const node = params[i];\n const code = node.codeGen(this);\n\n if (node instanceof ASTNode.MacroCallArgBlock || i === 0) {\n paramsCode += code;\n } else {\n paramsCode += `, ${code}`;\n }\n }\n\n return `${node.macroName}(${paramsCode})`;\n } else {\n return this.defaultCodeGen(node.children);\n }\n }\n\n visitStatementList(node: ASTNode.StatementList): string {\n const children = node.children as TreeNode[];\n if (children.length === 1) {\n return children[0].codeGen(this);\n } else {\n return `${children[0].codeGen(this)}\\n${children[1].codeGen(this)}`;\n }\n }\n\n visitSingleDeclaration(node: ASTNode.SingleDeclaration): string {\n const type = node.typeSpecifier.type;\n if (typeof type === \"string\") {\n VisitorContext.context.referenceGlobal(type, ESymbolType.STRUCT);\n }\n return this.defaultCodeGen(node.children);\n }\n\n visitGlobalVariableDeclaration(node: ASTNode.VariableDeclaration): string {\n const children = node.children;\n const fullType = children[0];\n if (fullType instanceof ASTNode.FullySpecifiedType && fullType.typeSpecifier.isCustom) {\n VisitorContext.context.referenceGlobal(<string>fullType.type, ESymbolType.STRUCT);\n }\n return `uniform ${this.defaultCodeGen(children)}`;\n }\n\n visitDeclaration(node: ASTNode.Declaration): string {\n const { context } = VisitorContext;\n const children = node.children;\n const child = children[0];\n\n if (child instanceof ASTNode.InitDeclaratorList) {\n const typeLexeme = child.typeInfo.typeLexeme;\n if (context.isVaryingStruct(typeLexeme) || context.isMRTStruct(typeLexeme)) return \"\";\n }\n return this.defaultCodeGen(children);\n }\n\n visitFunctionParameterList(node: ASTNode.FunctionParameterList): string {\n const params = node.parameterInfoList.filter(\n (item) =>\n !item.typeInfo ||\n (!VisitorContext.context.isAttributeStruct(item.typeInfo.typeLexeme) &&\n !VisitorContext.context.isVaryingStruct(item.typeInfo.typeLexeme) &&\n !VisitorContext.context.isMRTStruct(item.typeInfo.typeLexeme))\n );\n\n let out = \"\";\n for (let i = 0, length = params.length; i < length; i++) {\n const item = params[i];\n const astNode = item.astNode;\n const code = astNode.codeGen(this);\n if (astNode instanceof ASTNode.MacroParamBlock || i === 0) {\n out += code;\n } else {\n out += `, ${code}`;\n }\n }\n\n return out;\n }\n\n visitFunctionHeader(node: ASTNode.FunctionHeader): string {\n const returnType = node.returnType.typeSpecifier.lexeme;\n if (VisitorContext.context.isVaryingStruct(returnType)) {\n return `void ${node.ident.lexeme}(`;\n }\n return this.defaultCodeGen(node.children);\n }\n\n visitJumpStatement(node: ASTNode.JumpStatement): string {\n const children = node.children;\n const cmd = children[0] as BaseToken;\n if (cmd.type === Keyword.RETURN) {\n const expr = children[1];\n if (expr instanceof ASTNode.Expression) {\n const returnVar = ParserUtils.unwrapNodeByType<ASTNode.VariableIdentifier>(\n expr,\n NoneTerminal.variable_identifier\n );\n if (VisitorContext.context.isVaryingStruct(<string>returnVar?.typeInfo)) {\n return \"\";\n }\n const returnFnCall = ParserUtils.unwrapNodeByType<ASTNode.FunctionCall>(expr, NoneTerminal.function_call);\n if (VisitorContext.context.isVaryingStruct(<string>returnFnCall?.type)) {\n return `${expr.codeGen(this)};`;\n }\n }\n }\n return this.defaultCodeGen(children);\n }\n\n visitFunctionIdentifier(node: ASTNode.FunctionIdentifier): string {\n return this.defaultCodeGen(node.children);\n }\n\n visitStructSpecifier(node: ASTNode.StructSpecifier): string {\n const context = VisitorContext.context;\n const { varyingStructs, attributeStructs, mrtStructs } = context;\n const isVaryingStruct = varyingStructs.indexOf(node) !== -1;\n const isAttributeStruct = attributeStructs.indexOf(node) !== -1;\n const isMRTStruct = mrtStructs.indexOf(node) !== -1;\n\n if (isVaryingStruct && isAttributeStruct) {\n this._reportError(node.location, \"cannot use same struct as Varying and Attribute\");\n }\n\n if (isVaryingStruct && isMRTStruct) {\n this._reportError(node.location, \"cannot use same struct as Varying and MRT\");\n }\n\n if (isAttributeStruct && isMRTStruct) {\n this._reportError(node.location, \"cannot use same struct as Attribute and MRT\");\n }\n\n if (isVaryingStruct || isAttributeStruct || isMRTStruct) {\n let result: ICodeSegment[] = [];\n\n result.push(\n ...node.macroExpressions.map((item) => ({\n text: item instanceof BaseToken ? item.lexeme : item.codeGen(this),\n index: item.location.start.index\n }))\n );\n\n for (const prop of node.propList) {\n const name = prop.ident.lexeme;\n if (isVaryingStruct && context._referencedVaryingList[name]?.indexOf(prop) >= 0) {\n result.push({\n text: `${this.getVaryingProp(prop)}\\n`,\n index: prop.ident.location.start.index\n });\n } else if (isAttributeStruct && context._referencedAttributeList[name]?.indexOf(prop) >= 0) {\n result.push({\n text: `${this.getAttributeProp(prop)}\\n`,\n index: prop.ident.location.start.index\n });\n } else if (isMRTStruct && context._referencedMRTList[name]?.indexOf(prop) >= 0) {\n result.push({\n text: `${this.getMRTProp(prop)}\\n`,\n index: prop.ident.location.start.index\n });\n }\n }\n\n const text = result\n .sort((a, b) => a.index - b.index)\n .map((item) => item.text)\n .join(\"\");\n\n return text;\n } else {\n return this.defaultCodeGen(node.children);\n }\n }\n\n visitFunctionDefinition(fnNode: ASTNode.FunctionDefinition): string {\n const fnName = fnNode.protoType.ident.lexeme;\n const context = VisitorContext.context;\n\n if (fnName == context.stageEntry) {\n const statements = fnNode.statements.codeGen(this);\n return `void main() ${statements}`;\n } else {\n return this.defaultCodeGen(fnNode.children);\n }\n }\n\n protected _reportError(loc: ShaderRange | ShaderPosition, message: string): void {\n // #if _VERBOSE\n this.errors.push(new GSError(GSErrorName.CompilationError, message, loc, ShaderLab._processingPassText));\n // #else\n Logger.error(message);\n // #endif\n }\n}\n","import { IShaderInfo } from \"@galacean/engine-design\";\nimport { BaseToken } from \"../common/BaseToken\";\nimport { EShaderStage } from \"../common/enums/ShaderStage\";\nimport { Keyword } from \"../common/enums/Keyword\";\nimport { ASTNode, TreeNode } from \"../parser/AST\";\nimport { ShaderData } from \"../parser/ShaderInfo\";\nimport { ESymbolType, FnSymbol, StructSymbol, SymbolInfo } from \"../parser/symbolTable\";\nimport { CodeGenVisitor } from \"./CodeGenVisitor\";\nimport { ICodeSegment } from \"./types\";\nimport { VisitorContext } from \"./VisitorContext\";\n\n/**\n * @internal\n */\nexport abstract class GLESVisitor extends CodeGenVisitor {\n private _globalCodeArray: ICodeSegment[] = [];\n private static _lookupSymbol: SymbolInfo = new SymbolInfo(\"\", null);\n private static _serializedGlobalKey = new Set();\n\n reset(): void {\n const { _globalCodeArray: globalCodeArray } = this;\n globalCodeArray.length = 0;\n GLESVisitor._serializedGlobalKey.clear();\n }\n\n getOtherGlobal(data: ShaderData, out: ICodeSegment[]): void {\n for (const precision of data.globalPrecisions) {\n out.push({ text: precision.codeGen(this), index: precision.location.start.index });\n }\n }\n\n visitShaderProgram(node: ASTNode.GLShaderProgram, vertexEntry: string, fragmentEntry: string): IShaderInfo {\n // #if _VERBOSE\n this.errors.length = 0;\n // #endif\n VisitorContext.reset();\n this.reset();\n\n const shaderData = node.shaderData;\n VisitorContext.context._passSymbolTable = shaderData.symbolTable;\n\n const outerGlobalMacroDeclarations = shaderData.getOuterGlobalMacroDeclarations();\n\n return {\n vertex: this._vertexMain(vertexEntry, shaderData, outerGlobalMacroDeclarations),\n fragment: this._fragmentMain(fragmentEntry, shaderData, outerGlobalMacroDeclarations)\n };\n }\n\n private _vertexMain(\n entry: string,\n data: ShaderData,\n outerGlobalMacroDeclarations: ASTNode.GlobalDeclaration[]\n ): string {\n const context = VisitorContext.context;\n context.stage = EShaderStage.VERTEX;\n context.stageEntry = entry;\n\n const lookupSymbol = GLESVisitor._lookupSymbol;\n const symbolTable = data.symbolTable;\n lookupSymbol.set(entry, ESymbolType.FN);\n const fnSymbols = <FnSymbol[]>symbolTable.getSymbols(lookupSymbol, true, []);\n if (!fnSymbols.length) throw `no entry function found: ${entry}`;\n\n const { attributeStructs, attributeList, varyingStructs, varyingList } = context;\n fnSymbols.forEach((fnSymbol) => {\n const fnNode = fnSymbol.astNode;\n const returnType = fnNode.protoType.returnType;\n\n if (typeof returnType.type === \"string\") {\n lookupSymbol.set(returnType.type, ESymbolType.STRUCT);\n const varyingSymbols = <StructSymbol[]>symbolTable.getSymbols(lookupSymbol, true, []);\n if (!varyingSymbols.length) {\n this._reportError(returnType.location, `invalid varying struct: \"${returnType.type}\".`);\n } else {\n for (let i = 0; i < varyingSymbols.length; i++) {\n const varyingSymbol = varyingSymbols[i];\n const astNode = varyingSymbol.astNode;\n varyingStructs.push(astNode);\n for (const prop of astNode.propList) {\n varyingList.push(prop);\n }\n }\n }\n } else if (returnType.type !== Keyword.VOID) {\n this._reportError(returnType.location, \"vertex main entry can only return struct or void.\");\n }\n\n const paramList = fnNode.protoType.parameterList;\n const attributeParam = paramList?.[0];\n if (attributeParam) {\n const attributeType = attributeParam.typeInfo.type;\n if (typeof attributeType === \"string\") {\n lookupSymbol.set(attributeType, ESymbolType.STRUCT);\n const attributeSymbols = <StructSymbol[]>symbolTable.getSymbols(lookupSymbol, true, []);\n if (!attributeSymbols.length) {\n this._reportError(attributeParam.astNode.location, `invalid attribute struct: \"${attributeType}\".`);\n } else {\n for (let i = 0; i < attributeSymbols.length; i++) {\n const attributeSymbol = attributeSymbols[i];\n const astNode = attributeSymbol.astNode;\n attributeStructs.push(astNode);\n for (const prop of astNode.propList) {\n attributeList.push(prop);\n }\n }\n }\n }\n }\n });\n\n const globalCodeArray = this._globalCodeArray;\n VisitorContext.context.referenceGlobal(entry, ESymbolType.FN);\n\n this._getGlobalSymbol(globalCodeArray);\n this._getCustomStruct(context.attributeStructs, globalCodeArray);\n this._getCustomStruct(context.varyingStructs, globalCodeArray);\n this._getGlobalMacroDeclarations(outerGlobalMacroDeclarations, globalCodeArray);\n this.getOtherGlobal(data, globalCodeArray);\n\n const globalCode = globalCodeArray\n .sort((a, b) => a.index - b.index)\n .map((item) => item.text)\n .join(\"\\n\");\n\n VisitorContext.context.reset(false);\n this.reset();\n\n return globalCode;\n }\n\n private _fragmentMain(\n entry: string,\n data: ShaderData,\n outerGlobalMacroStatements: ASTNode.GlobalDeclaration[]\n ): string {\n const context = VisitorContext.context;\n context.stage = EShaderStage.FRAGMENT;\n context.stageEntry = entry;\n\n const lookupSymbol = GLESVisitor._lookupSymbol;\n const { symbolTable } = data;\n lookupSymbol.set(entry, ESymbolType.FN);\n const fnSymbols = <FnSymbol[]>symbolTable.getSymbols(lookupSymbol, true, []);\n if (!fnSymbols?.length) throw `no entry function found: ${entry}`;\n\n fnSymbols.forEach((fnSymbol) => {\n const fnNode = fnSymbol.astNode;\n const { returnStatement } = fnNode;\n\n if (returnStatement) {\n returnStatement.isFragReturnStatement = true;\n }\n\n const { type: returnDataType, location: returnLocation } = fnNode.protoType.returnType;\n if (typeof returnDataType === \"string\") {\n lookupSymbol.set(returnDataType, ESymbolType.STRUCT);\n const mrtSymbols = <StructSymbol[]>symbolTable.getSymbols(lookupSymbol, true, []);\n if (!mrtSymbols.length) {\n this._reportError(returnLocation, `invalid mrt struct: ${returnDataType}`);\n } else {\n for (let i = 0; i < mrtSymbols.length; i++) {\n const mrtSymbol = mrtSymbols[i];\n const astNode = mrtSymbol.astNode;\n context.mrtStructs.push(astNode);\n for (const prop of astNode.propList) {\n context.mrtList.push(prop);\n }\n }\n }\n } else if (returnDataType !== Keyword.VOID && returnDataType !== Keyword.VEC4) {\n this._reportError(returnLocation, \"fragment main entry can only return struct or vec4.\");\n }\n });\n\n const globalCodeArray = this._globalCodeArray;\n VisitorContext.context.referenceGlobal(entry, ESymbolType.FN);\n\n this._getGlobalSymbol(globalCodeArray);\n this._getCustomStruct(context.varyingStructs, globalCodeArray);\n this._getCustomStruct(context.mrtStructs, globalCodeArray);\n this._getGlobalMacroDeclarations(outerGlobalMacroStatements, globalCodeArray);\n this.getOtherGlobal(data, globalCodeArray);\n\n const globalCode = globalCodeArray\n .sort((a, b) => a.index - b.index)\n .map((item) => item.text)\n .join(\"\\n\");\n\n context.reset();\n this.reset();\n\n return globalCode;\n }\n\n private _getGlobalSymbol(out: ICodeSegment[]): void {\n const { _referencedGlobals } = VisitorContext.context;\n\n const lastLength = Object.keys(_referencedGlobals).length;\n if (lastLength === 0) return;\n\n for (const ident in _referencedGlobals) {\n if (GLESVisitor._serializedGlobalKey.has(ident)) continue;\n GLESVisitor._serializedGlobalKey.add(ident);\n\n const symbols = _referencedGlobals[ident];\n for (let i = 0; i < symbols.length; i++) {\n const sm = symbols[i];\n const text = sm.astNode.codeGen(this) + (sm.type === ESymbolType.VAR ? \";\" : \"\");\n if (!sm.isInMacroBranch) {\n out.push({\n text,\n index: sm.astNode.location.start.index\n });\n }\n }\n }\n\n if (Object.keys(_referencedGlobals).length !== lastLength) {\n this._getGlobalSymbol(out);\n }\n }\n\n private _getCustomStruct(structNodes: ASTNode.StructSpecifier[], out: ICodeSegment[]): void {\n for (const node of structNodes) {\n const text = node.codeGen(this);\n\n if (!node.isInMacroBranch) {\n out.push({ text, index: node.location.start.index });\n }\n }\n }\n\n private _getGlobalMacroDeclarations(macros: ASTNode.GlobalDeclaration[], out: ICodeSegment[]): void {\n const context = VisitorContext.context;\n const referencedGlobals = context._referencedGlobals;\n const referencedGlobalMacroASTs = context._referencedGlobalMacroASTs;\n referencedGlobalMacroASTs.length = 0;\n\n for (const symbols of Object.values(referencedGlobals)) {\n for (const symbol of symbols) {\n if (symbol.isInMacroBranch) {\n referencedGlobalMacroASTs.push(symbol.astNode);\n }\n }\n }\n\n for (const macro of macros) {\n let text: string;\n const child = macro.children[0];\n\n if (child instanceof ASTNode.GlobalMacroIfStatement) {\n let result: ICodeSegment[] = [];\n result.push(\n ...macro.macroExpressions.map((item) => ({\n text: item instanceof BaseToken ? item.lexeme : item.codeGen(this),\n index: item.location.start.index\n }))\n );\n\n this._visitGlobalMacroIfStatement(child, result);\n\n text = result\n .sort((a, b) => a.index - b.index)\n .map((item) => item.text)\n .join(\"\\n\");\n } else {\n text = macro.codeGen(this);\n }\n\n out.push({\n text,\n index: macro.location.start.index\n });\n }\n }\n\n private _visitGlobalMacroIfStatement(node: TreeNode, out: ICodeSegment[]): void {\n const children = node.children;\n for (let i = 0; i < children.length; i++) {\n const child = children[i];\n if (child instanceof ASTNode.PrecisionSpecifier) {\n out.push({\n text: child.codeGen(this),\n index: child.location.start.index\n });\n } else if (child instanceof ASTNode.FunctionDefinition) {\n if (VisitorContext.context._referencedGlobalMacroASTs.indexOf(child) !== -1) {\n out.push({\n text: child.getCache(), // code has generated in `_getGlobalSymbol`\n index: child.location.start.index\n });\n }\n } else if (child instanceof ASTNode.StructSpecifier) {\n const context = VisitorContext.context;\n const stage = context.stage;\n if (\n VisitorContext.context._referencedGlobalMacroASTs.indexOf(child) !== -1 ||\n (stage === EShaderStage.VERTEX\n ? context.isAttributeStruct(child.ident?.lexeme) || context.isVaryingStruct(child.ident?.lexeme)\n : context.isVaryingStruct(child.ident?.lexeme) || context.isMRTStruct(child.ident?.lexeme))\n ) {\n out.push({\n text: child.getCache(), // code has generated in `_getGlobalSymbol` or `_getCustomStruct`\n index: child.location.start.index\n });\n }\n } else if (child instanceof ASTNode.VariableDeclarationList) {\n const variableDeclarations = child.variableDeclarations;\n for (let i = 0; i < variableDeclarations.length; i++) {\n const variableDeclaration = variableDeclarations[i];\n if (VisitorContext.context._referencedGlobalMacroASTs.indexOf(variableDeclaration) !== -1) {\n out.push({\n text: variableDeclaration.getCache() + \";\", // code has generated in `_getGlobalSymbol`\n index: variableDeclaration.location.start.index\n });\n }\n }\n }\n\n if (child instanceof TreeNode) {\n this._visitGlobalMacroIfStatement(child, out);\n }\n }\n }\n}\n","import { BaseToken } from \"../common/BaseToken\";\nimport { ASTNode } from \"../parser/AST\";\nimport { StructProp } from \"../parser/types\";\nimport { GLESVisitor } from \"./GLESVisitor\";\nimport { VisitorContext } from \"./VisitorContext\";\n\nexport class GLES100Visitor extends GLESVisitor {\n private static _singleton: GLES100Visitor;\n static getVisitor(): GLES100Visitor {\n if (!this._singleton) {\n this._singleton = new GLES100Visitor();\n }\n return this._singleton;\n }\n\n override getAttributeProp(prop: StructProp): string {\n return `attribute ${prop.typeInfo.typeLexeme} ${prop.ident.lexeme};`;\n }\n\n override getVaryingProp(prop: StructProp): string {\n return `varying ${prop.typeInfo.typeLexeme} ${prop.ident.lexeme};`;\n }\n\n override getMRTProp(): string {\n return null;\n }\n\n override visitPostfixExpression(node: ASTNode.PostfixExpression): string {\n const { children } = node;\n const postExpr = children[0];\n const { context } = VisitorContext;\n if (postExpr instanceof ASTNode.PostfixExpression && context.isMRTStruct(<string>postExpr.type)) {\n const propReferenced = children[2] as BaseToken;\n const prop = context.mrtList.find((item) => item.ident.lexeme === propReferenced.lexeme);\n if (!prop) {\n this._reportError(propReferenced.location, `not found mrt property: ${propReferenced.lexeme}`);\n return \"\";\n }\n return `gl_FragData[${prop.mrtIndex!}]`;\n }\n return super.visitPostfixExpression(node);\n }\n\n override visitJumpStatement(node: ASTNode.JumpStatement): string {\n if (node.isFragReturnStatement) {\n if (VisitorContext.context.mrtStructs.length) {\n return \"\";\n }\n const expression = node.children[1] as ASTNode.Expression;\n return `gl_FragColor = ${expression.codeGen(this)}`;\n }\n return super.visitJumpStatement(node);\n }\n}\n","import { EShaderStage } from \"../common/enums/ShaderStage\";\nimport { ASTNode } from \"../parser/AST\";\nimport { ShaderData } from \"../parser/ShaderInfo\";\nimport { StructProp } from \"../parser/types\";\nimport { GLESVisitor } from \"./GLESVisitor\";\nimport { ICodeSegment } from \"./types\";\nimport { VisitorContext } from \"./VisitorContext\";\n\nconst V3_GL_FragColor = \"GS_glFragColor\";\n\nexport class GLES300Visitor extends GLESVisitor {\n private static _singleton: GLES300Visitor;\n static getVisitor(): GLES300Visitor {\n if (!this._singleton) {\n this._singleton = new GLES300Visitor();\n }\n return this._singleton;\n }\n\n private _otherCodeArray: ICodeSegment[] = [];\n private _fragColorVariableRegistered = false;\n\n override reset(): void {\n super.reset();\n\n this._otherCodeArray.length = 0;\n this._fragColorVariableRegistered = false;\n }\n\n override getOtherGlobal(data: ShaderData, out: ICodeSegment[]): void {\n super.getOtherGlobal(data, out);\n\n for (let i = 0, n = this._otherCodeArray.length; i < n; i++) {\n out.push(this._otherCodeArray[i]);\n }\n }\n\n override getAttributeProp(prop: StructProp): string {\n return `in ${prop.typeInfo.typeLexeme} ${prop.ident.lexeme};`;\n }\n\n override getVaryingProp(prop: StructProp): string {\n const qualifier = VisitorContext.context.stage === EShaderStage.FRAGMENT ? \"in\" : \"out\";\n return `${qualifier} ${prop.typeInfo.typeLexeme} ${prop.ident.lexeme};`;\n }\n\n override getMRTProp(prop: StructProp): string {\n return `layout(location = ${prop.mrtIndex}) out vec4 ${prop.ident.lexeme};`;\n }\n\n override visitFunctionIdentifier(node: ASTNode.FunctionIdentifier): string {\n const children = node.children;\n const typeSpecifier = children[0] as ASTNode.TypeSpecifier;\n if (typeSpecifier.children.length !== 1) {\n return this.defaultCodeGen(children);\n }\n let ident = node.lexeme;\n switch (node.ident) {\n case \"texture2D\":\n case \"textureCube\":\n ident = \"texture\";\n break;\n case \"texture2DProj\":\n ident = \"textureProj\";\n break;\n case \"texture2DLodEXT\":\n case \"textureCubeLodEXT\":\n ident = \"textureLod\";\n break;\n case \"texture2DGradEXT\":\n case \"textureCubeGradEXT\":\n ident = \"textureGrad\";\n break;\n case \"texture2DProjLodEXT\":\n ident = \"textureProjLod\";\n break;\n case \"texture2DProjGradEXT\":\n ident = \"textureProjGrad\";\n break;\n case \"gl_FragDepthEXT\":\n ident = \"gl_FragDepth\";\n break;\n }\n return ident;\n }\n\n override visitVariableIdentifier(node: ASTNode.VariableIdentifier): string {\n const { context } = VisitorContext;\n if (context.stage === EShaderStage.FRAGMENT && node.getLexeme(this) === \"gl_FragColor\") {\n if (context.mrtStructs.length) {\n this._reportError(node.location, \"gl_FragColor cannot be used with MRT (Multiple Render Targets).\");\n return;\n }\n this._registerFragColorVariable();\n return V3_GL_FragColor;\n }\n return super.visitVariableIdentifier(node);\n }\n\n override visitJumpStatement(node: ASTNode.JumpStatement): string {\n if (node.isFragReturnStatement) {\n if (VisitorContext.context.mrtStructs.length) {\n return \"\";\n }\n this._registerFragColorVariable();\n\n const expression = node.children[1] as ASTNode.Expression;\n return `${V3_GL_FragColor} = ${expression.codeGen(this)};`;\n }\n return super.visitJumpStatement(node);\n }\n\n private _registerFragColorVariable() {\n if (this._fragColorVariableRegistered) return;\n this._otherCodeArray.push({\n text: `out vec4 ${V3_GL_FragColor};`,\n index: 0\n });\n this._fragColorVariableRegistered = true;\n }\n}\n","import { Logger } from \"@galacean/engine\";\nimport { ShaderPosition, ShaderRange } from \".\";\nimport { GSErrorName } from \"../GSError\";\nimport { ShaderLab } from \"../ShaderLab\";\nimport { ShaderLabUtils } from \"../ShaderLabUtils\";\nimport { BaseToken } from \"./BaseToken\";\n\nexport type OnToken = (token: BaseToken, scanner: BaseLexer) => void;\n\n/**\n * @internal\n */\nexport abstract class BaseLexer {\n static isDigit(charCode: number): boolean {\n return charCode >= 48 && charCode <= 57; // 0-9\n }\n\n // Check if character is alphabetic or underscore (valid word start)\n static isAlpha(charCode: number): boolean {\n return (\n charCode === 95 || // _\n (charCode >= 65 && charCode <= 90) || // A-Z\n (charCode >= 97 && charCode <= 122) // a-z\n );\n }\n\n // Check if character is alphanumeric (alpha + digit)\n static isAlnum(charCode: number): boolean {\n return BaseLexer.isAlpha(charCode) || BaseLexer.isDigit(charCode);\n }\n\n static isPreprocessorStartChar(charCode: number): boolean {\n return charCode === 35; // #\n }\n\n static isWhiteSpaceChar(charCode: number, includeBreak: boolean): boolean {\n // Space || Tab\n if (charCode === 32 || charCode === 9) {\n return true;\n }\n return includeBreak && (charCode === 10 || charCode === 13); // \\n || \\r\n }\n\n protected _currentIndex = 0;\n protected _source: string;\n\n // #if _VERBOSE\n protected _column = 0;\n protected _line = 0;\n // #endif\n\n get currentIndex(): number {\n return this._currentIndex;\n }\n\n get source(): string {\n return this._source;\n }\n\n // #if _VERBOSE\n get line() {\n return this._line;\n }\n\n get column() {\n return this._column;\n }\n // #endif\n\n constructor(source?: string) {\n this._source = source;\n }\n\n setSource(source: string): void {\n this._source = source;\n this._currentIndex = 0;\n // #if _VERBOSE\n this._line = this._column = 0;\n // #endif\n }\n\n getShaderPosition(backOffset = 0): ShaderPosition {\n return ShaderLab.createPosition(\n this._currentIndex - backOffset,\n // #if _VERBOSE\n this._line,\n this._column - backOffset\n // #endif\n );\n }\n\n isEnd(): boolean {\n return this._currentIndex >= this._source.length;\n }\n\n getCurChar(): string {\n return this._source[this._currentIndex];\n }\n\n getCurCharCode(): number {\n return this._source.charCodeAt(this._currentIndex);\n }\n\n advance(count: number): void {\n // #if _VERBOSE\n const source = this._source;\n const startIndex = this._currentIndex;\n for (let i = 0; i < count; i++) {\n if (source[startIndex + i] === \"\\n\") {\n this._line += 1;\n this._column = 0;\n } else {\n this._column += 1;\n }\n }\n // #endif\n this._currentIndex += count;\n }\n\n skipSpace(includeLineBreak: boolean): void {\n while (BaseLexer.isWhiteSpaceChar(this.getCurCharCode(), includeLineBreak)) {\n this.advance(1);\n }\n }\n\n skipCommentsAndSpace(): void {\n const source = this._source;\n const length = source.length;\n let index = this._currentIndex;\n\n while (index < length) {\n // Skip whitespace\n while (index < length && BaseLexer.isWhiteSpaceChar(source.charCodeAt(index), true)) {\n index++;\n }\n\n // Check for comments: 47 is '/'\n if (index + 1 >= length || source.charCodeAt(index) !== 47) break;\n\n const nextChar = source.charCodeAt(index + 1);\n if (nextChar === 47) {\n // Single line comment: 10 is '\\n', 13 is '\\r'\n index += 2;\n while (index < length) {\n const charCode = source.charCodeAt(index);\n if (charCode === 10 || charCode === 13) break;\n index++;\n }\n } else if (nextChar === 42) {\n // Multi-line comment: 42 is '*'\n index += 2;\n while (index + 1 < length && !(source.charCodeAt(index) === 42 && source.charCodeAt(index + 1) === 47)) {\n index++;\n }\n index += 2; // Skip '*/'\n } else {\n break; // Not a comment, stop\n }\n }\n\n this.advance(index - this._currentIndex);\n }\n\n peek(to: number): string {\n const offset = this._currentIndex;\n return this._source.substring(offset, offset + to);\n }\n\n scanLexeme(lexeme: string): void {\n this.skipCommentsAndSpace();\n const length = lexeme.length;\n const peek = this.peek(length);\n if (peek !== lexeme) {\n this.throwError(this.getShaderPosition(0), `Expect lexeme \"${lexeme}\", but got \"${peek}\"`);\n }\n this.advance(length);\n }\n\n scanTwoExpectedLexemes(lexeme1: string, lexeme2: string): string | null {\n this.skipCommentsAndSpace();\n\n // Check first lexeme\n if (this.peek(lexeme1.length) === lexeme1) {\n this.advance(lexeme1.length);\n return lexeme1;\n }\n\n // Check second lexeme\n if (this.peek(lexeme2.length) === lexeme2) {\n this.advance(lexeme2.length);\n return lexeme2;\n }\n\n return null;\n }\n\n throwError(pos: ShaderPosition | ShaderRange, ...msgs: any[]) {\n const error = ShaderLabUtils.createGSError(msgs.join(\" \"), GSErrorName.ScannerError, this._source, pos);\n // #if _VERBOSE\n Logger.error(error!.toString());\n // #endif\n throw error;\n }\n\n scanPairedChar(left: string, right: string, balanced: boolean, skipLeading: boolean): string {\n if (!skipLeading) {\n this.scanLexeme(left);\n }\n\n const start = this._currentIndex;\n const source = this._source;\n const sourceLength = source.length;\n\n let currentIndex = this._currentIndex;\n if (balanced) {\n let level = 1;\n while (currentIndex < sourceLength) {\n const currentChar = source[currentIndex];\n if (currentChar === right && --level === 0) {\n break;\n } else if (currentChar === left) {\n level++;\n }\n currentIndex++;\n }\n } else {\n while (currentIndex < sourceLength) {\n if (source[currentIndex] === right) {\n break;\n }\n currentIndex++;\n }\n }\n\n this.advance(currentIndex + 1 - this._currentIndex);\n\n return source.substring(start, currentIndex);\n }\n\n abstract scanToken(onToken?: OnToken): void;\n}\n","import { ETokenType } from \"../common\";\nimport { BaseLexer } from \"../common/BaseLexer\";\nimport { BaseToken, EOF } from \"../common/BaseToken\";\nimport { Keyword } from \"../common/enums/Keyword\";\nimport { MacroDefineList } from \"../Preprocessor\";\nimport { ShaderLab } from \"../ShaderLab\";\n\n/**\n * The Lexer of ShaderLab Compiler\n */\nexport class Lexer extends BaseLexer {\n private static _lexemeTable = <Record<string, Keyword>>{\n const: Keyword.CONST,\n bool: Keyword.BOOL,\n float: Keyword.FLOAT,\n double: Keyword.DOUBLE,\n int: Keyword.INT,\n uint: Keyword.UINT,\n break: Keyword.BREAK,\n continue: Keyword.CONTINUE,\n do: Keyword.DO,\n else: Keyword.ELSE,\n for: Keyword.FOR,\n if: Keyword.IF,\n while: Keyword.WHILE,\n discard: Keyword.DISCARD,\n return: Keyword.RETURN,\n bvec2: Keyword.BVEC2,\n bvec3: Keyword.BVEC3,\n bvec4: Keyword.BVEC4,\n ivec2: Keyword.IVEC2,\n ivec3: Keyword.IVEC3,\n ivec4: Keyword.IVEC4,\n uvec2: Keyword.UVEC2,\n uvec3: Keyword.UVEC3,\n uvec4: Keyword.UVEC4,\n vec2: Keyword.VEC2,\n vec3: Keyword.VEC3,\n vec4: Keyword.VEC4,\n mat2: Keyword.MAT2,\n mat3: Keyword.MAT3,\n mat4: Keyword.MAT4,\n in: Keyword.IN,\n out: Keyword.OUT,\n inout: Keyword.INOUT,\n sampler2D: Keyword.SAMPLER2D,\n samplerCube: Keyword.SAMPLER_CUBE,\n sampler3D: Keyword.SAMPLER3D,\n sampler2DShadow: Keyword.SAMPLER2D_SHADOW,\n samplerCubeShadow: Keyword.SAMPLER_CUBE_SHADOW,\n sampler2DArray: Keyword.SAMPLER2D_ARRAY,\n sampler2DArrayShadow: Keyword.SAMPLER2D_ARRAY_SHADOW,\n isampler2D: Keyword.I_SAMPLER2D,\n isampler3D: Keyword.I_SAMPLER3D,\n isamplerCube: Keyword.I_SAMPLER_CUBE,\n isampler2DArray: Keyword.I_SAMPLER2D_ARRAY,\n usampler2D: Keyword.U_SAMPLER2D,\n usampler3D: Keyword.U_SAMPLER3D,\n usamplerCube: Keyword.U_SAMPLER_CUBE,\n usampler2DArray: Keyword.U_SAMPLER2D_ARRAY,\n struct: Keyword.STRUCT,\n void: Keyword.VOID,\n true: Keyword.True,\n false: Keyword.False,\n precision: Keyword.PRECISION,\n precise: Keyword.PRECISE,\n highp: Keyword.HIGHP,\n mediump: Keyword.MEDIUMP,\n lowp: Keyword.LOWP,\n invariant: Keyword.INVARIANT,\n flat: Keyword.FLAT,\n smooth: Keyword.SMOOTH,\n noperspective: Keyword.NOPERSPECTIVE,\n centroid: Keyword.CENTROID,\n layout: Keyword.LAYOUT,\n location: Keyword.LOCATION,\n\n // Macros ...\n \"#if\": Keyword.MACRO_IF,\n \"#ifdef\": Keyword.MACRO_IFDEF,\n \"#ifndef\": Keyword.MACRO_IFNDEF,\n \"#else\": Keyword.MACRO_ELSE,\n \"#elif\": Keyword.MACRO_ELIF,\n \"#endif\": Keyword.MACRO_ENDIF,\n \"#undef\": Keyword.MACRO_UNDEF\n };\n\n private _needScanMacroConditionExpression = false;\n\n *tokenize() {\n while (!this.isEnd()) {\n yield this.scanToken();\n }\n return EOF;\n }\n\n constructor(\n source: string,\n public macroDefineList: MacroDefineList\n ) {\n super(source);\n }\n\n override scanToken(): BaseToken {\n this.skipCommentsAndSpace();\n if (this.isEnd()) {\n return EOF;\n }\n\n if (this._needScanMacroConditionExpression) {\n this._needScanMacroConditionExpression = false;\n return this._scanMacroConditionExpression();\n }\n\n const curCharCode = this.getCurCharCode();\n if (BaseLexer.isPreprocessorStartChar(curCharCode)) {\n return this._scanDirectives();\n }\n if (BaseLexer.isAlpha(curCharCode)) {\n return this._scanWord();\n }\n if (BaseLexer.isDigit(curCharCode)) {\n return this._scanNum();\n }\n\n const start = this.getShaderPosition();\n const token = BaseToken.pool.get();\n let curChar: string;\n\n switch (this.getCurChar()) {\n case \"<\":\n this.advance(1);\n curChar = this.getCurChar();\n if (curChar === \"<\") {\n this.advance(1);\n if (this.getCurChar() === \"=\") {\n this.advance(1);\n token.set(ETokenType.LEFT_ASSIGN, \"<<=\", start);\n break;\n }\n token.set(ETokenType.LEFT_OP, \"<<\", start);\n break;\n } else if (curChar === \"=\") {\n this.advance(1);\n token.set(ETokenType.LE_OP, \"<=\", start);\n break;\n }\n token.set(ETokenType.LEFT_ANGLE, \"<\", start);\n break;\n\n case \">\":\n this.advance(1);\n curChar = this.getCurChar();\n if (curChar === \">\") {\n this.advance(1);\n if (this.getCurChar() === \"=\") {\n this.advance(1);\n token.set(ETokenType.RIGHT_ASSIGN, \">>=\", start);\n break;\n }\n token.set(ETokenType.RIGHT_OP, \">>\", start);\n break;\n } else if (curChar === \"=\") {\n this.advance(1);\n token.set(ETokenType.GE_OP, \">=\", start);\n break;\n }\n token.set(ETokenType.RIGHT_ANGLE, \">\", start);\n break;\n\n case \"+\":\n this.advance(1);\n curChar = this.getCurChar();\n if (curChar === \"+\") {\n this.advance(1);\n token.set(ETokenType.INC_OP, \"++\", start);\n break;\n } else if (curChar === \"=\") {\n this.advance(1);\n token.set(ETokenType.ADD_ASSIGN, \"+=\", start);\n break;\n }\n token.set(ETokenType.PLUS, \"+\", start);\n break;\n\n case \"-\":\n this.advance(1);\n curChar = this.getCurChar();\n if (curChar === \"-\") {\n this.advance(1);\n token.set(ETokenType.DEC_OP, \"--\", start);\n break;\n } else if (curChar === \"=\") {\n this.advance(1);\n token.set(ETokenType.SUB_ASSIGN, \"-=\", start);\n break;\n }\n token.set(ETokenType.DASH, \"-\", start);\n break;\n\n case \"=\":\n this.advance(1);\n if (this.getCurChar() === \"=\") {\n this.advance(1);\n token.set(ETokenType.EQ_OP, \"==\", start);\n break;\n }\n token.set(ETokenType.EQUAL, \"=\", start);\n break;\n\n case \"!\":\n this.advance(1);\n if (this.getCurChar() === \"=\") {\n this.advance(1);\n token.set(ETokenType.NE_OP, \"!=\", start);\n break;\n }\n token.set(ETokenType.BANG, \"!\", start);\n break;\n\n case \"&\":\n this.advance(1);\n curChar = this.getCurChar();\n if (curChar === \"&\") {\n this.advance(1);\n token.set(ETokenType.AND_OP, \"&&\", start);\n break;\n } else if (curChar === \"=\") {\n this.advance(1);\n token.set(ETokenType.ADD_ASSIGN, \"&=\", start);\n break;\n }\n token.set(ETokenType.AMPERSAND, \"&\", start);\n break;\n\n case \"|\":\n this.advance(1);\n curChar = this.getCurChar();\n if (curChar === \"|\") {\n this.advance(1);\n token.set(ETokenType.OR_OP, \"||\", start);\n break;\n } else if (curChar === \"=\") {\n this.advance(1);\n token.set(ETokenType.OR_ASSIGN, \"|=\", start);\n break;\n }\n token.set(ETokenType.VERTICAL_BAR, \"|\", start);\n break;\n\n case \"^\":\n this.advance(1);\n curChar = this.getCurChar();\n if (curChar === \"^\") {\n this.advance(1);\n token.set(ETokenType.XOR_OP, \"^^\", start);\n break;\n } else if (curChar === \"=\") {\n this.advance(1);\n token.set(ETokenType.XOR_ASSIGN, \"^=\", start);\n break;\n }\n token.set(ETokenType.CARET, \"^\", start);\n break;\n\n case \"*\":\n this.advance(1);\n if (this.getCurChar() === \"=\") {\n this.advance(1);\n token.set(ETokenType.MUL_ASSIGN, \"*=\", start);\n break;\n }\n\n token.set(ETokenType.STAR, \"*\", start);\n break;\n\n case \"/\":\n this.advance(1);\n if (this.getCurChar() === \"=\") {\n this.advance(1);\n\n token.set(ETokenType.DIV_ASSIGN, \"/=\", start);\n break;\n }\n\n token.set(ETokenType.SLASH, \"/\", start);\n break;\n\n case \"%\":\n this.advance(1);\n if (this.getCurChar() === \"=\") {\n this.advance(1);\n\n token.set(ETokenType.MOD_ASSIGN, \"%=\", start);\n break;\n }\n\n token.set(ETokenType.PERCENT, \"%\", start);\n break;\n\n case \"(\":\n this.advance(1);\n\n token.set(ETokenType.LEFT_PAREN, \"(\", start);\n break;\n case \")\":\n this.advance(1);\n\n token.set(ETokenType.RIGHT_PAREN, \")\", start);\n break;\n case \"{\":\n this.advance(1);\n\n token.set(ETokenType.LEFT_BRACE, \"{\", start);\n break;\n case \"}\":\n this.advance(1);\n\n token.set(ETokenType.RIGHT_BRACE, \"}\", start);\n break;\n case \"[\":\n this.advance(1);\n\n token.set(ETokenType.LEFT_BRACKET, \"[\", start);\n break;\n case \"]\":\n this.advance(1);\n\n token.set(ETokenType.RIGHT_BRACKET, \"]\", start);\n break;\n case \".\":\n this.advance(1);\n if (BaseLexer.isDigit(this.getCurCharCode())) {\n return this._scanNumAfterDot();\n }\n\n token.set(ETokenType.DOT, \".\", start);\n break;\n case \",\":\n this.advance(1);\n\n token.set(ETokenType.COMMA, \",\", start);\n break;\n case \":\":\n this.advance(1);\n\n token.set(ETokenType.COLON, \":\", start);\n return token;\n case \";\":\n this.advance(1);\n\n token.set(ETokenType.SEMICOLON, \";\", start);\n break;\n case \"~\":\n this.advance(1);\n\n token.set(ETokenType.TILDE, \"~\", start);\n break;\n case \"?\":\n this.advance(1);\n\n token.set(ETokenType.QUESTION, \"?\", start);\n break;\n case '\"':\n this.advance(1);\n return this._scanStringConst();\n\n default:\n this.throwError(this.getShaderPosition(0), `Unexpected character ${this.getCurChar()}`);\n }\n return token;\n }\n\n private _scanStringConst(): BaseToken {\n const start = this.getShaderPosition();\n const buffer: string[] = [];\n while (this.getCurChar() !== '\"') {\n buffer.push(this.getCurChar());\n this.advance(1);\n }\n this.advance(1);\n const range = ShaderLab.createRange(start, this.getShaderPosition());\n\n const token = BaseToken.pool.get();\n token.set(ETokenType.STRING_CONST, buffer.join(\"\"), range);\n return token;\n }\n\n private _scanNumAfterDot(): BaseToken {\n const buffer = [\".\"];\n while (BaseLexer.isDigit(this.getCurCharCode())) {\n buffer.push(this.getCurChar());\n this.advance(1);\n }\n this._scanFloatSuffix(buffer);\n const token = BaseToken.pool.get();\n token.set(ETokenType.FLOAT_CONSTANT, buffer.join(\"\"), this.getShaderPosition(buffer.length));\n return token;\n }\n\n private _scanUtilBreakLine(outBuffer: string[]): void {\n while (this.getCurChar() !== \"\\n\" && !this.isEnd()) {\n outBuffer.push(this.getCurChar());\n this.advance(1);\n }\n }\n\n private _scanDirectives(): BaseToken {\n const buffer: string[] = [this.getCurChar()];\n const start = this.getShaderPosition();\n this.advance(1);\n while (BaseLexer.isAlpha(this.getCurCharCode())) {\n buffer.push(this.getCurChar());\n this.advance(1);\n }\n const token = BaseToken.pool.get();\n const word = buffer.join(\"\");\n\n // If it is a macro definition or conditional expression, we need to skip the rest of the line\n if (word === \"#define\") {\n this._scanUtilBreakLine(buffer);\n const word = buffer.join(\"\") + \"\\n\";\n token.set(Keyword.MACRO_DEFINE_EXPRESSION, word, start);\n } else {\n const kt = Lexer._lexemeTable[word];\n token.set(kt ?? ETokenType.ID, word, start);\n if (word === \"#if\" || word === \"#elif\") {\n this._needScanMacroConditionExpression = true;\n }\n }\n\n return token;\n }\n\n private _scanMacroConditionExpression(): BaseToken {\n const buffer = new Array<string>();\n const start = this.getShaderPosition();\n this._scanUtilBreakLine(buffer);\n const word = buffer.join(\"\");\n const token = BaseToken.pool.get();\n token.set(Keyword.MACRO_CONDITIONAL_EXPRESSION, word, start);\n return token;\n }\n\n private _scanWord(): BaseToken {\n const buffer: string[] = [this.getCurChar()];\n const start = this.getShaderPosition();\n this.advance(1);\n while (BaseLexer.isAlnum(this.getCurCharCode())) {\n buffer.push(this.getCurChar());\n this.advance(1);\n }\n const token = BaseToken.pool.get();\n const word = buffer.join(\"\");\n const kt = Lexer._lexemeTable[word];\n\n if (this.macroDefineList[word]) {\n token.set(Keyword.MACRO_CALL, word, start);\n } else {\n token.set(kt ?? ETokenType.ID, word, start);\n }\n return token;\n }\n\n private _scanNum(): BaseToken {\n const buffer: string[] = [];\n while (BaseLexer.isDigit(this.getCurCharCode())) {\n buffer.push(this.getCurChar());\n this.advance(1);\n }\n const curChar = this.getCurChar();\n if (curChar === \".\") {\n buffer.push(curChar);\n this.advance(1);\n while (BaseLexer.isDigit(this.getCurCharCode())) {\n buffer.push(this.getCurChar());\n this.advance(1);\n }\n this._scanFloatSuffix(buffer);\n\n const token = BaseToken.pool.get();\n token.set(ETokenType.FLOAT_CONSTANT, buffer.join(\"\"), this.getShaderPosition(buffer.length));\n return token;\n } else {\n if (curChar === \"e\" || curChar === \"E\") {\n this._scanFloatSuffix(buffer);\n\n const token = BaseToken.pool.get();\n token.set(ETokenType.FLOAT_CONSTANT, buffer.join(\"\"), this.getShaderPosition(buffer.length));\n return token;\n } else {\n this._scanIntegerSuffix(buffer);\n\n const token = BaseToken.pool.get();\n token.set(ETokenType.INT_CONSTANT, buffer.join(\"\"), this.getShaderPosition(buffer.length));\n return token;\n }\n }\n }\n\n private _scanFloatSuffix(buffer: string[]): void {\n let curChar = this.getCurChar();\n if (curChar === \"e\" || curChar === \"E\") {\n buffer.push(curChar);\n this.advance(1);\n curChar = this.getCurChar();\n if (curChar === \"+\" || curChar === \"-\") {\n buffer.push(curChar);\n this.advance(1);\n curChar = this.getCurChar();\n }\n if (!BaseLexer.isDigit(this.getCurCharCode()))\n this.throwError(this.getShaderPosition(0), \"lexing error, invalid exponent suffix.\");\n\n do {\n buffer.push(curChar);\n this.advance(1);\n curChar = this.getCurChar();\n } while (BaseLexer.isDigit(this.getCurCharCode()));\n }\n if (curChar === \"f\" || curChar === \"F\") {\n buffer.push(curChar);\n this.advance(1);\n }\n }\n\n private _scanIntegerSuffix(buffer: string[]): void {\n const curChar = this.getCurChar();\n if (curChar === \"u\" || curChar === \"U\") {\n buffer.push(curChar);\n this.advance(1);\n }\n }\n}\n","function _type_of(obj) {\n \"@swc/helpers - typeof\";\n\n return obj && typeof Symbol !== \"undefined\" && obj.constructor === Symbol ? \"symbol\" : typeof obj;\n}\nexport { _type_of as _ };\n","export enum MacroParserToken {\n id,\n line_remain,\n chunk,\n int_constant,\n string_const,\n /** \\>> */\n right_op,\n /** << */\n left_op,\n left_paren,\n right_paren,\n /** \\>= */\n ge,\n /** <= */\n le,\n /** == */\n eq,\n /** != */\n neq,\n /** && */\n and,\n /** || */\n or,\n /** < */\n left_angle,\n /** \\> */\n right_angle,\n /** \\* */\n star,\n /** + */\n plus,\n /** \\- */\n dash,\n /** ! */\n bang,\n /** \\/ */\n slash,\n /** % */\n percent,\n\n EOF = 100\n}\n\nexport enum MacroParserKeyword {\n define = 101,\n undef,\n if,\n ifdef,\n ifndef,\n else,\n elif,\n endif,\n\n defined\n}\n\nexport type MacroParserConstant = boolean | number;\n","import { ShaderRange } from \"../common\";\nimport { BaseToken } from \"../common/BaseToken\";\nimport { ShaderLabUtils } from \"../ShaderLabUtils\";\n// #if _VERBOSE\nimport { GSErrorName } from \"../GSError\";\n// #endif\n\nexport class MacroDefine {\n private _replaceRegex?: RegExp;\n private readonly _argsLexemes?: string[];\n\n get isFunction(): boolean {\n return !!this.args;\n }\n\n constructor(\n public readonly macro: BaseToken,\n public readonly body?: BaseToken,\n public readonly location?: ShaderRange,\n public readonly args?: BaseToken[]\n ) {\n if (args?.length > 0) {\n this._argsLexemes = this.args.map((item) => item.lexeme);\n this._replaceRegex = new RegExp(`\\\\b(${this._argsLexemes.join(\"|\")})\\\\b`, \"g\");\n }\n }\n\n expandFunctionBody(args: string[]): string {\n if (args.length !== this.args?.length) {\n throw ShaderLabUtils.createGSError(\"mismatched function macro\", GSErrorName.PreprocessorError, \"\", this.location);\n }\n\n if (args.length === 0) {\n return this.body.lexeme;\n }\n\n return this.body.lexeme.replace(this._replaceRegex, (m) => {\n return args[this._argsLexemes.indexOf(m)];\n });\n }\n}\n","import { ShaderRange } from \"../../common/ShaderRange\";\n\n// #if _VERBOSE\nexport class BlockInfo {\n readonly sourceFile: string;\n readonly rangeInFile?: ShaderRange;\n readonly sourceMap?: PpSourceMap;\n\n constructor(sourceFile?: string, rangeInFile?: ShaderRange, sourceMap?: PpSourceMap) {\n this.sourceFile = sourceFile ?? \"__main__\";\n this.rangeInFile = rangeInFile;\n this.sourceMap = sourceMap;\n }\n}\n\nexport class MapRange {\n sourceLoc: { block: BlockInfo; rangeInBlock: ShaderRange };\n generatedLoc: { start: number; end: number };\n\n constructor(sourceBlock: BlockInfo, rangeInBlock: ShaderRange, generatedLoc: { start: number; end: number }) {\n this.sourceLoc = { block: sourceBlock, rangeInBlock };\n this.generatedLoc = generatedLoc;\n }\n\n getSourceIndex(generatedIdx: number) {\n const { block, rangeInBlock } = this.sourceLoc;\n if (block.sourceMap) {\n if (block.sourceFile !== \"__main__\") return block.sourceMap.map(generatedIdx - this.generatedLoc.start);\n else if (rangeInBlock) {\n return {\n sourceFile: block.sourceFile,\n index: (block.rangeInFile?.start.index ?? 0) + rangeInBlock.start.index\n };\n }\n }\n\n return {\n index: generatedIdx - this.generatedLoc.start + rangeInBlock.start.index + (block.rangeInFile?.start.index ?? 0),\n sourceFile: this.sourceLoc.block.sourceFile\n };\n }\n}\n\nexport default class PpSourceMap {\n readonly mapRanges: MapRange[] = [];\n\n static rangeContains(range: MapRange[\"generatedLoc\"], index: number) {\n return range.start <= index && range.end > index;\n }\n\n addMapRange(mapRange: MapRange) {\n this.mapRanges.push(mapRange);\n }\n\n /**\n * @returns index\n */\n map(index: number): { sourceFile: string; index: number } {\n let curRange: MapRange | undefined;\n for (const range of this.mapRanges) {\n const { generatedLoc } = range;\n if (PpSourceMap.rangeContains(generatedLoc, index)) {\n return range.getSourceIndex(index);\n } else if (range.generatedLoc.start < index) {\n curRange = range;\n continue;\n } else {\n break;\n }\n }\n if (!curRange) return { sourceFile: \"__main__\", index };\n return {\n index: index - curRange.generatedLoc.end + curRange.sourceLoc.rangeInBlock.end.index,\n sourceFile: curRange.sourceLoc.block.sourceFile\n };\n }\n}\n// #endif\n","import { ShaderPosition, ShaderRange } from \"../common\";\n// #if _VERBOSE\nimport PpSourceMap from \"./sourceMap\";\n// #endif\nimport { BaseLexer } from \"../common/BaseLexer\";\nimport { BaseToken, EOF } from \"../common/BaseToken\";\nimport { ShaderLab } from \"../ShaderLab\";\nimport { MacroParserKeyword, MacroParserToken } from \"./constants\";\n\nexport type OnToken = (token: BaseToken, scanner: MacroParserLexer) => void;\n\nexport default class MacroParserLexer extends BaseLexer {\n private static _isPpCharacters(charCode: number): boolean {\n return (\n charCode === 35 || // #\n BaseLexer.isAlnum(charCode) // _, A-Z, a-z, 0-9\n );\n }\n\n private static _lexemeTable = <Record<string, MacroParserKeyword>>{\n \"#define\": MacroParserKeyword.define,\n \"#undef\": MacroParserKeyword.undef,\n \"#if\": MacroParserKeyword.if,\n \"#ifdef\": MacroParserKeyword.ifdef,\n \"#ifndef\": MacroParserKeyword.ifndef,\n \"#else\": MacroParserKeyword.else,\n \"#elif\": MacroParserKeyword.elif,\n \"#endif\": MacroParserKeyword.endif,\n defined: MacroParserKeyword.defined\n };\n\n private macroLvl = 0;\n\n // #if _VERBOSE\n readonly sourceMap = new PpSourceMap();\n readonly file: string;\n readonly blockRange?: ShaderRange;\n // #endif\n\n constructor(\n source: string,\n // #if _VERBOSE\n file = \"__main__\",\n blockRange?: ShaderRange\n // #endif\n ) {\n super(source);\n // #if _VERBOSE\n this.file = file;\n this.blockRange = blockRange;\n // #endif\n }\n\n scanWordsUntilTerminator(terminatorChar: string): BaseToken[] {\n const tokens: BaseToken[] = [];\n while (true) {\n this.skipSpace(true);\n if (BaseLexer.isAlpha(this.getCurCharCode())) {\n tokens.push(this.scanWord());\n } else if (this.getCurChar() === terminatorChar) {\n this.advance(1);\n return tokens;\n } else {\n this.advance(1);\n }\n }\n }\n\n scanWord(): BaseToken {\n // Skip all non-alphabetic characters, primarily used for handling defined(MACRO) syntax\n while (!BaseLexer.isAlpha(this.getCurCharCode()) && !this.isEnd()) {\n this.advance(1);\n }\n\n if (this.isEnd()) {\n return EOF;\n }\n\n const start = this._currentIndex;\n while (BaseLexer.isAlnum(this.getCurCharCode()) && !this.isEnd()) {\n this.advance(1);\n }\n const end = this._currentIndex;\n const word = this._source.slice(start, end);\n if (end === start) {\n this.throwError(this.getShaderPosition(0), \"no word found.\");\n }\n\n const token = BaseToken.pool.get();\n const tokenType = MacroParserLexer._lexemeTable[word] ?? MacroParserToken.id;\n token.set(tokenType, word, this.getShaderPosition(word.length));\n return token;\n }\n\n override scanToken(): BaseToken | undefined {\n this.skipCommentsAndSpace();\n if (this.isEnd()) {\n return;\n }\n const source = this._source;\n let start = this._currentIndex;\n let found = false;\n for (var n = source.length; this._currentIndex < n; ) {\n if (MacroParserLexer._isPpCharacters(source.charCodeAt(this._currentIndex))) {\n this.advance(1);\n found = true;\n } else {\n if (found) {\n break;\n }\n this.advance(1);\n this.skipCommentsAndSpace();\n start = this._currentIndex;\n }\n }\n\n const lexeme = source.slice(start, this._currentIndex);\n const token = BaseToken.pool.get();\n const type = MacroParserLexer._lexemeTable[lexeme] ?? MacroParserToken.id;\n token.set(type, lexeme, this.getShaderPosition(this._currentIndex - start));\n\n if (type === MacroParserKeyword.if || type === MacroParserKeyword.ifdef || type === MacroParserKeyword.ifndef) {\n this.macroLvl++;\n } else if (type === MacroParserKeyword.endif) {\n this.macroLvl--;\n }\n\n return token;\n }\n\n scanQuotedString(): BaseToken<MacroParserToken.string_const> {\n this.skipSpace(true);\n const source = this._source;\n const sourceLength = source.length;\n const start = this.getShaderPosition(0);\n\n let index = this._currentIndex;\n\n // Check for opening quote\n if (source.charCodeAt(index) !== 34) {\n // 34 = '\"'\n this.throwError(start, \"Unexpected char, expected '\\\"'\");\n }\n\n const contentStart = ++index; // Skip opening quote and record start\n\n // Fast scan to closing quote\n while (index < sourceLength && source.charCodeAt(index) !== 34) {\n index++;\n }\n\n if (index >= sourceLength) {\n this.throwError(this.getShaderPosition(0), \"Unexpected char, expected '\\\"'\");\n }\n\n const lexeme = source.slice(contentStart, index);\n this.advance(index + 1 - this._currentIndex); // Skip to after closing quote\n\n const token = BaseToken.pool.get();\n token.set(MacroParserToken.string_const, lexeme, start);\n return token;\n }\n\n scanToChar(char: string) {\n const source = this._source;\n while (source[this._currentIndex] !== char && !this.isEnd()) {\n this.advance(1);\n }\n }\n\n scanMacroBranchBody(): {\n body: BaseToken<MacroParserToken.chunk>;\n nextDirective: BaseToken;\n } {\n const shaderPosition = this.getShaderPosition(0);\n const startLevel = this.macroLvl;\n\n let nextDirective = this.scanToken()!;\n while (true) {\n const { type } = nextDirective;\n if (type === MacroParserKeyword.endif && startLevel - 1 === this.macroLvl) {\n break;\n } else if (\n (type === MacroParserKeyword.elif || type === MacroParserKeyword.else) &&\n startLevel === this.macroLvl\n ) {\n break;\n }\n nextDirective = this.scanToken()!;\n }\n\n const lexeme = this._source.slice(shaderPosition.index, this._currentIndex - nextDirective.lexeme.length - 1);\n const body = BaseToken.pool.get();\n body.set(MacroParserToken.chunk, lexeme, shaderPosition);\n return { body, nextDirective };\n }\n\n scanPairedBlock(lc: string, rc: string): void {\n this.scanToChar(lc);\n let level = 0;\n const source = this._source;\n\n do {\n const curChar = source[this._currentIndex];\n\n if (curChar === lc) {\n level++;\n } else if (curChar === rc) {\n level--;\n }\n this.advance(1);\n } while (level > 0);\n }\n\n /**\n * @returns end ShaderPosition\n */\n scanRemainMacro(): ShaderPosition {\n const startLvl = this.macroLvl;\n let directive = this.scanToken()!;\n while (!this.isEnd() && (directive.type !== MacroParserKeyword.endif || startLvl - 1 !== this.macroLvl)) {\n directive = this.scanToken()!;\n }\n return this.getShaderPosition(0);\n }\n\n peekNonSpace() {\n let current = this._currentIndex;\n while (/\\s/.test(this._source[current])) {\n current += 1;\n }\n return this._source[current];\n }\n\n scanInteger() {\n const start = this._currentIndex;\n while (BaseLexer.isDigit(this.getCurCharCode())) {\n this.advance(1);\n }\n if (this._currentIndex === start) {\n this.throwError(this.getShaderPosition(0), \"no integer found\");\n }\n const integer = this._source.slice(start, this._currentIndex);\n\n const token = BaseToken.pool.get();\n token.set(MacroParserToken.int_constant, integer, this.getShaderPosition(0));\n return token;\n }\n\n scanMacroBody(): BaseToken<MacroParserToken.line_remain> {\n this.skipSpace(false);\n let lexeme = \"\";\n const source = this._source;\n const sourceLength = source.length;\n\n const start = this.getShaderPosition(0);\n while (this._currentIndex < sourceLength) {\n const charCode = source.charCodeAt(this._currentIndex);\n\n // Check for line break (terminates macro definition), break when encounter \"\\n\"\n if (charCode === 10) {\n break;\n }\n\n // Check for comments (both single-line and multi-line)\n if (charCode === 47) {\n const nextIndex = this._currentIndex + 1;\n if (nextIndex < sourceLength) {\n const nextCharCode = source.charCodeAt(nextIndex);\n\n // Single-line comment (terminates macro definition), break when encounter \"//\"\n if (nextCharCode === 47) {\n break;\n }\n\n // Multi-line comment (skip but don't terminate)\n if (nextCharCode === 42) {\n this.advance(2); // Skip \"/*\"\n\n // Skip until end of multi-line comment\n while (this._currentIndex + 1 < sourceLength) {\n const currentIndex = this._currentIndex;\n if (source.charCodeAt(currentIndex) === 42 && source.charCodeAt(currentIndex + 1) === 47) {\n this.advance(2); // Skip \"*/\n break;\n }\n this.advance(1);\n }\n\n lexeme += \" \"; // Replace comment with space\n continue;\n }\n }\n }\n\n // Accumulate useful character\n lexeme += source[this._currentIndex];\n this.advance(1);\n }\n\n if (lexeme === \"\") {\n return null;\n }\n\n const valueToken = BaseToken.pool.get();\n valueToken.set(MacroParserToken.line_remain, lexeme, ShaderLab.createRange(start, this.getShaderPosition(0)));\n return valueToken;\n }\n}\n","import { ExpandSegment } from \"./MacroParser\";\n// #if _VERBOSE\nimport PpSourceMap, { MapRange } from \"./sourceMap\";\n// #endif\n\nexport class PpUtils {\n static expand(\n segments: ExpandSegment[],\n source: string,\n // #if _VERBOSE\n sourceMap?: PpSourceMap\n //#endif\n ) {\n const ret: string[] = [];\n let startIdx = 0;\n let generatedIdx = 0;\n\n for (const seg of segments) {\n const originSlice = source.slice(startIdx, seg.rangeInBlock.start.index);\n ret.push(originSlice, seg.replace);\n\n const generatedIdxEnd = generatedIdx + originSlice.length + seg.replace.length;\n\n // #if _VERBOSE\n const mapRange = new MapRange(seg.block, seg.rangeInBlock, {\n start: generatedIdx + originSlice.length,\n end: generatedIdxEnd\n });\n sourceMap?.addMapRange(mapRange);\n // #endif\n\n startIdx = seg.rangeInBlock.end.index;\n generatedIdx = generatedIdxEnd;\n }\n ret.push(source.slice(startIdx));\n return ret.join(\"\");\n }\n}\n","import { ShaderMacro } from \"@galacean/engine\";\nimport { ShaderPosition, ShaderRange } from \"../common\";\nimport { BaseToken } from \"../common/BaseToken\";\nimport { GSErrorName } from \"../GSError\";\nimport { ShaderLab } from \"../ShaderLab\";\nimport { ShaderLabUtils } from \"../ShaderLabUtils\";\nimport { MacroParserConstant, MacroParserKeyword, MacroParserToken } from \"./constants\";\nimport { MacroDefine } from \"./MacroDefine\";\nimport MacroParserLexer from \"./MacroParserLexer\";\nimport { PpUtils } from \"./Utils\";\n// #if _VERBOSE\nimport PpSourceMap, { BlockInfo } from \"./sourceMap\";\n// #endif\nimport { BaseLexer } from \"../common/BaseLexer\";\n\nexport interface ExpandSegment {\n // #if _VERBOSE\n block?: BlockInfo;\n // #endif\n rangeInBlock: ShaderRange;\n replace: string;\n}\n\n/** @internal */\nexport class MacroParser {\n static lexer: MacroParserLexer;\n\n private static _definedMacros: Map<string, MacroDefine> = new Map();\n private static _expandSegmentsStack: ExpandSegment[][] = [[]];\n\n private static _expandVisitedMacros: Record<string, number> = {};\n private static _expandVersionId: number = 1;\n\n // #if _VERBOSE\n static _errors: Error[] = [];\n // #endif\n\n static parse(source: string, macros: ShaderMacro[]): string | null {\n MacroParser._reset();\n\n for (const macro of macros) {\n MacroParser._addPredefinedMacro(macro.name, macro.value);\n }\n\n this.lexer = new MacroParserLexer(source);\n return MacroParser._parseDirectives(this.lexer);\n }\n\n private static _reset() {\n this._expandSegmentsStack.length = 0;\n this._expandSegmentsStack.push([]);\n\n this._definedMacros.clear();\n this._addPredefinedMacro(\"GL_ES\");\n\n // #if _VERBOSE\n this._errors.length = 0;\n // #endif\n }\n\n private static _addPredefinedMacro(macro: string, value?: string) {\n const token = BaseToken.pool.get();\n token.set(MacroParserToken.id, macro);\n\n let macroBody: BaseToken | undefined;\n if (value != undefined) {\n macroBody = BaseToken.pool.get();\n macroBody.set(MacroParserToken.id, value);\n }\n\n this._definedMacros.set(macro, new MacroDefine(token, macroBody));\n }\n\n private static _parseDirectives(lexer: MacroParserLexer): string | null {\n let directive: BaseToken | undefined;\n while ((directive = lexer.scanToken())) {\n switch (directive.type) {\n case MacroParserToken.id:\n this._parseMacro(lexer, directive);\n break;\n case MacroParserKeyword.define:\n this._parseDefine(lexer);\n break;\n case MacroParserKeyword.undef:\n this._parseUndef(lexer);\n break;\n case MacroParserKeyword.if:\n this._parseIfDirective(lexer, MacroParserKeyword.if);\n break;\n case MacroParserKeyword.ifndef:\n this._parseIfDirective(lexer, MacroParserKeyword.ifndef);\n break;\n case MacroParserKeyword.ifdef:\n this._parseIfDirective(lexer, MacroParserKeyword.ifdef);\n break;\n }\n }\n // #if _VERBOSE\n if (this._errors.length > 0) return null;\n // #endif\n\n return PpUtils.expand(this._getExpandSegments(), lexer.source, lexer.sourceMap);\n }\n\n private static _getExpandSegments(): ExpandSegment[] {\n return this._expandSegmentsStack[this._expandSegmentsStack.length - 1];\n }\n\n private static _reportError(loc: ShaderRange | ShaderPosition, message: string, source: string, file?: string) {\n const error = ShaderLabUtils.createGSError(message, GSErrorName.PreprocessorError, source, loc, file);\n // #if _VERBOSE\n this._errors.push(error);\n // #endif\n }\n\n private static _parseIfDirective(lexer: MacroParserLexer, directiveType: MacroParserKeyword): void {\n const directiveLength =\n directiveType === MacroParserKeyword.if ? 3 : directiveType === MacroParserKeyword.ifdef ? 6 : 7; // #if = 3, #ifdef = 6, #ifndef = 7\n const start = lexer.currentIndex - directiveLength;\n let skipMacro = false;\n\n let shouldInclude: MacroParserConstant;\n if (directiveType === MacroParserKeyword.if) {\n shouldInclude = this._parseConstantExpression(lexer);\n } else {\n const macroToken = lexer.scanWord();\n const lexeme = macroToken.lexeme;\n if (lexeme.startsWith(\"GL_\")) {\n skipMacro = true;\n } else {\n const defined = this._definedMacros.get(lexeme);\n shouldInclude = directiveType === MacroParserKeyword.ifdef ? !!defined : !defined;\n }\n }\n\n lexer.skipSpace(true);\n const { body, nextDirective } = lexer.scanMacroBranchBody();\n\n if (skipMacro) return;\n\n if (shouldInclude) {\n const end =\n nextDirective.type === MacroParserKeyword.endif ? lexer.getShaderPosition(0) : lexer.scanRemainMacro();\n const expanded = this._expandMacroChunk(body.lexeme, body.location, lexer);\n this._addContentReplace(\n lexer.file,\n ShaderLab.createPosition(start),\n end,\n expanded.content,\n lexer.blockRange,\n expanded.sourceMap\n );\n } else {\n this._addEmptyReplace(lexer, start);\n this._processConditionalDirective(nextDirective.type, lexer);\n }\n }\n\n private static _processConditionalDirective(\n directive: MacroParserKeyword.elif | MacroParserKeyword.else | MacroParserKeyword.endif,\n scanner: MacroParserLexer\n ) {\n if (directive === MacroParserKeyword.endif) {\n return;\n }\n\n const start = scanner.currentIndex;\n\n if (directive === MacroParserKeyword.else) {\n const { body } = scanner.scanMacroBranchBody();\n const expanded = this._expandMacroChunk(body.lexeme, body.location, scanner);\n this._addContentReplace(\n scanner.file,\n ShaderLab.createPosition(start),\n scanner.getShaderPosition(0),\n expanded.content,\n scanner.blockRange,\n expanded.sourceMap\n );\n } else if (directive === MacroParserKeyword.elif) {\n const constantExpr = this._parseConstantExpression(scanner);\n const { body, nextDirective } = scanner.scanMacroBranchBody();\n if (constantExpr) {\n const end =\n nextDirective.type === MacroParserKeyword.endif ? scanner.currentIndex : scanner.scanRemainMacro().index;\n const expanded = this._expandMacroChunk(body.lexeme, body.location, scanner);\n this._addContentReplace(\n scanner.file,\n ShaderLab.createPosition(start),\n ShaderLab.createPosition(end),\n expanded.content,\n scanner.blockRange,\n expanded.sourceMap\n );\n } else {\n this._addContentReplace(\n scanner.file,\n ShaderLab.createPosition(start),\n ShaderLab.createPosition(scanner.currentIndex),\n \"\",\n scanner.blockRange\n );\n this._processConditionalDirective(nextDirective.type, scanner);\n }\n }\n }\n\n private static _parseConstantExpression(scanner: MacroParserLexer): MacroParserConstant {\n scanner.skipSpace(true);\n return this._parseLogicalOrExpression(scanner);\n }\n\n private static _parseLogicalOrExpression(scanner: MacroParserLexer): MacroParserConstant {\n const operand1 = this._parseLogicalAndExpression(scanner);\n const operator = scanner.peek(2);\n if (operator && operator === \"||\") {\n scanner.advance(2);\n scanner.skipSpace(false);\n const operand2 = this._parseLogicalOrExpression(scanner);\n return operand1 || operand2;\n }\n return operand1;\n }\n\n private static _parseLogicalAndExpression(scanner: MacroParserLexer): MacroParserConstant {\n const operand1 = this._parseEqualityExpression(scanner);\n const operator = scanner.peek(2);\n if (operator && operator === \"&&\") {\n scanner.advance(2);\n scanner.skipSpace(false);\n const operand2 = this._parseLogicalAndExpression(scanner);\n return operand1 && operand2;\n }\n return operand1;\n }\n\n private static _parseEqualityExpression(scanner: MacroParserLexer): MacroParserConstant {\n const operand1 = this._parseRelationalExpression(scanner);\n const operator = scanner.peek(2);\n if (operator && [\"==\", \"!=\"].includes(operator)) {\n scanner.advance(2);\n scanner.skipSpace(false);\n const operand2 = this._parseEqualityExpression(scanner);\n switch (operator) {\n case \"==\":\n return operand1 === operand2;\n case \"!=\":\n return operand1 !== operand2;\n }\n }\n return operand1;\n }\n\n private static _parseRelationalExpression(scanner: MacroParserLexer): MacroParserConstant {\n const operand1 = this._parseShiftExpression(scanner) as number;\n let operator = scanner.peek(2);\n if (operator[1] !== \"=\") operator = operator[0];\n if (operator && [\">\", \"<\", \">=\", \"<=\"].includes(operator)) {\n const opPos = scanner.getShaderPosition(0);\n scanner.advance(operator.length);\n scanner.skipSpace(false);\n const operand2 = this._parseRelationalExpression(scanner) as number;\n if (typeof operand1 !== typeof operand2 && typeof operand1 !== \"number\") {\n this._reportError(opPos, \"invalid operator in relation expression.\", scanner.source, scanner.file);\n return;\n }\n switch (operator) {\n case \">\":\n return operand1 > operand2;\n case \"<\":\n return operand1 < operand2;\n case \">=\":\n return operand1 >= operand2;\n case \"<=\":\n return operand1 <= operand2;\n }\n }\n return operand1;\n }\n\n private static _parseShiftExpression(scanner: MacroParserLexer): MacroParserConstant {\n const operand1 = this._parseAdditiveExpression(scanner) as number;\n const operator = scanner.peek(2);\n if (operator && [\">>\", \"<<\"].includes(operator)) {\n const opPos = scanner.getShaderPosition(0);\n scanner.advance(2);\n scanner.skipSpace(false);\n const operand2 = this._parseShiftExpression(scanner) as number;\n if (typeof operand1 !== typeof operand2 && typeof operand1 !== \"number\") {\n this._reportError(opPos, \"invalid operator in shift expression.\", scanner.source, scanner.file);\n return;\n }\n switch (operator) {\n case \">>\":\n return operand1 >> operand2;\n case \"<<\":\n return operand1 << operand2;\n }\n }\n\n return operand1;\n }\n\n private static _parseAdditiveExpression(scanner: MacroParserLexer): MacroParserConstant {\n const operand1 = this._parseMulticativeExpression(scanner) as number;\n if ([\">\", \"<\"].includes(scanner.getCurChar())) {\n const opPos = scanner.getShaderPosition(0);\n scanner.advance(1);\n\n const operator = scanner.getCurChar();\n scanner.skipSpace(false);\n const operand2 = this._parseAdditiveExpression(scanner) as number;\n if (typeof operand1 !== typeof operand2 && typeof operand1 !== \"number\") {\n this._reportError(opPos, \"invalid operator.\", scanner.source, scanner.file);\n return false;\n }\n switch (operator) {\n case \"+\":\n return operand1 + operand2;\n case \"-\":\n return operand1 - operand2;\n }\n }\n return operand1;\n }\n\n private static _parseMulticativeExpression(scanner: MacroParserLexer): MacroParserConstant {\n const operand1 = this._parseUnaryExpression(scanner) as number;\n scanner.skipSpace(false);\n if ([\"*\", \"/\", \"%\"].includes(scanner.getCurChar())) {\n const opPos = scanner.getShaderPosition(0);\n const operator = scanner.getCurChar();\n scanner.skipSpace(false);\n const operand2 = this._parseMulticativeExpression(scanner) as number;\n if (typeof operand1 !== typeof operand2 && typeof operand1 !== \"number\") {\n this._reportError(opPos, \"invalid operator.\", scanner.source, scanner.file);\n return;\n }\n switch (operator) {\n case \"*\":\n return operand1 * operand2;\n case \"/\":\n return operand1 / operand2;\n case \"%\":\n return operand1 % operand2;\n }\n }\n return operand1;\n }\n\n private static _parseUnaryExpression(scanner: MacroParserLexer) {\n const operator = scanner.getCurChar();\n if ([\"+\", \"-\", \"!\"].includes(operator)) {\n const opPos = scanner.getShaderPosition(0);\n scanner.advance(1);\n scanner.skipSpace(false);\n const parenExpr = this._parseParenthesisExpression(scanner);\n if ((operator === \"!\" && typeof parenExpr !== \"boolean\") || (operator !== \"!\" && typeof parenExpr !== \"number\")) {\n this._reportError(opPos, \"invalid operator.\", scanner.source, scanner.file);\n }\n\n switch (operator) {\n case \"+\":\n return parenExpr;\n case \"-\":\n return -parenExpr;\n case \"!\":\n return !parenExpr;\n }\n }\n return this._parseParenthesisExpression(scanner);\n }\n\n private static _parseParenthesisExpression(scanner: MacroParserLexer): MacroParserConstant {\n if (scanner.getCurChar() === \"(\") {\n scanner.advance(1);\n scanner.skipSpace(false);\n const ret = this._parseConstantExpression(scanner);\n scanner.scanToChar(\")\");\n scanner.advance(1);\n return ret;\n }\n return this._parseConstant(scanner);\n }\n\n private static _parseConstant(scanner: MacroParserLexer): MacroParserConstant {\n if (BaseLexer.isAlpha(scanner.getCurCharCode())) {\n const id = scanner.scanWord();\n if (id.type === MacroParserKeyword.defined) {\n const withParen = scanner.peekNonSpace() === \"(\";\n const macro = scanner.scanWord();\n if (withParen) {\n scanner.scanToChar(\")\");\n scanner.advance(1);\n }\n return !!this._definedMacros.get(macro.lexeme);\n } else {\n const macro = this._definedMacros.get(id.lexeme);\n\n if (!macro) {\n return false;\n }\n\n if (!macro.body) {\n return true;\n }\n\n if (macro.isFunction) {\n this._reportError(id.location, \"invalid function macro usage\", scanner.source, scanner.file);\n }\n const value = Number(macro.body.lexeme);\n if (!Number.isInteger(value)) {\n this._reportError(id.location, `invalid const macro: ${id.lexeme}`, scanner.source, scanner.file);\n }\n return value;\n }\n } else if (BaseLexer.isDigit(scanner.getCurCharCode())) {\n const integer = scanner.scanInteger();\n return Number(integer.lexeme);\n } else {\n this._reportError(\n scanner.getShaderPosition(0),\n `invalid token: ${scanner.getCurChar()}`,\n scanner.source,\n scanner.file\n );\n }\n }\n\n private static _parseMacroFunctionArgs(\n source: string,\n startIndex: number,\n macroName: string\n ): { args: string[]; endIndex: number } {\n const length = source.length;\n let i = startIndex + macroName.length;\n\n // Find opening parenthesis\n while (i < length && source.charCodeAt(i) !== 40) i++;\n\n // Parse function arguments\n const args: string[] = [];\n let level = 1;\n let argStart = i + 1;\n let k = argStart;\n\n while (k < length && level > 0) {\n const charCode = source.charCodeAt(k);\n if (charCode === 40) {\n level++;\n } else if (charCode === 41) {\n if (--level === 0) {\n const arg = source.substring(argStart, k).trim();\n if (arg.length > 0) args.push(arg);\n break;\n }\n } else if (charCode === 44 && level === 1) {\n const arg = source.substring(argStart, k).trim();\n if (arg.length > 0) args.push(arg);\n argStart = k + 1;\n }\n k++;\n }\n\n return { args, endIndex: k + 1 };\n }\n\n private static _expandMacroBody(body: string): string {\n const visitedMacros = this._expandVisitedMacros;\n const currentVersionId = ++this._expandVersionId;\n let expandedBody = body;\n let hasExpansion = true;\n\n while (hasExpansion) {\n hasExpansion = false;\n const length = expandedBody.length;\n let i = 0;\n\n while (i < length) {\n const charCode = expandedBody.charCodeAt(i);\n if (!BaseLexer.isAlpha(charCode)) {\n i++;\n continue;\n }\n\n const start = i;\n while (i < length && BaseLexer.isAlnum(expandedBody.charCodeAt(i))) {\n i++;\n }\n\n const macroName = expandedBody.substring(start, i);\n const macro = this._definedMacros.get(macroName);\n\n if (!macro || visitedMacros[macroName] === currentVersionId) {\n continue;\n }\n\n // Prevent circular references\n visitedMacros[macroName] = currentVersionId;\n\n let replacement: string;\n let endIndex: number;\n\n if (!macro.isFunction) {\n replacement = macro.body?.lexeme ?? \"\";\n endIndex = i;\n } else {\n const { args, endIndex: newEndIndex } = this._parseMacroFunctionArgs(expandedBody, start, macroName);\n replacement = macro.expandFunctionBody(args);\n endIndex = newEndIndex;\n }\n\n expandedBody = expandedBody.substring(0, start) + replacement + expandedBody.substring(endIndex);\n hasExpansion = true;\n break;\n }\n }\n\n return expandedBody;\n }\n\n /**\n * Recursively expand macro body and expansion.\n */\n private static _expandMacroChunk(\n chunk: string,\n loc: ShaderRange,\n parentScanner: MacroParserLexer\n ): {\n content: string;\n // #if _VERBOSE\n sourceMap: PpSourceMap;\n // #endif\n };\n private static _expandMacroChunk(\n chunk: string,\n loc: ShaderRange,\n file: string\n ): {\n content: string;\n // #if _VERBOSE\n sourceMap: PpSourceMap;\n // #endif\n };\n private static _expandMacroChunk(\n chunk: string,\n loc: ShaderRange,\n scannerOrFile: MacroParserLexer | string\n ): {\n content: string;\n // #if _VERBOSE\n sourceMap: PpSourceMap;\n // #endif\n } {\n this._expandSegmentsStack.push([]);\n let scanner: MacroParserLexer;\n if (typeof scannerOrFile === \"string\") {\n scanner = new MacroParserLexer(chunk, scannerOrFile);\n } else {\n scanner = new MacroParserLexer(chunk, scannerOrFile.file, loc);\n }\n\n const ret = this._parseDirectives(scanner);\n this._expandSegmentsStack.pop();\n return {\n content: ret,\n // #if _VERBOSE\n sourceMap: scanner.sourceMap\n // #endif\n };\n }\n\n private static _addEmptyReplace(lexer: MacroParserLexer, start: number) {\n this._addContentReplace(\n lexer.file,\n ShaderLab.createPosition(start),\n lexer.getShaderPosition(0),\n \"\",\n lexer.blockRange\n );\n }\n\n private static _addContentReplace(\n sourceFile: string,\n start: ShaderPosition,\n end: ShaderPosition,\n content: string,\n sourceRange?: ShaderRange,\n sourceMap?: PpSourceMap\n ): void {\n // #if _VERBOSE\n const block = new BlockInfo(sourceFile, sourceRange, sourceMap);\n // #endif\n\n const range = ShaderLab.createRange(start, end);\n this._getExpandSegments().push({\n // #if _VERBOSE\n block,\n // #endif\n rangeInBlock: range,\n replace: content\n });\n }\n\n private static _parseDefine(lexer: MacroParserLexer): void {\n const start = lexer.getShaderPosition(7);\n const macroName = lexer.scanWord();\n\n const { lexeme, location } = macroName;\n let { end } = location;\n if (this._definedMacros.get(lexeme) && lexeme.startsWith(\"GL_\")) {\n this._reportError(location, `Redefined macro: ${lexeme}`, lexer.source, lexer.file);\n }\n\n let macroArgs: BaseToken[] | undefined;\n if (lexer.getCurChar() === \"(\") {\n macroArgs = lexer.scanWordsUntilTerminator(\")\");\n end = lexer.getShaderPosition(0);\n }\n const macroBody = lexer.scanMacroBody();\n const range = ShaderLab.createRange(start, end);\n const macroDefine = new MacroDefine(macroName, macroBody, range, macroArgs);\n this._definedMacros.set(lexeme, macroDefine);\n\n this._addContentReplace(lexer.file, start, lexer.getShaderPosition(0), \"\", lexer.blockRange);\n }\n\n private static _parseUndef(lexer: MacroParserLexer): void {\n const start = lexer.getShaderPosition(6);\n const macroName = lexer.scanWord();\n this._definedMacros.delete(macroName.lexeme);\n\n this._addContentReplace(lexer.file, start, lexer.getShaderPosition(0), \"\", lexer.blockRange);\n }\n\n private static _parseMacro(lexer: MacroParserLexer, token: BaseToken) {\n const macro = this._definedMacros.get(token.lexeme);\n if (macro) {\n const { location } = token;\n if (macro.isFunction) {\n const { args, endIndex } = this._parseMacroFunctionArgs(lexer.source, location.start.index, token.lexeme);\n const macroBodyExpanded = macro.expandFunctionBody(args);\n const expandedContent = this._expandMacroBody(macroBodyExpanded);\n\n const remainingLength = endIndex - location.end.index;\n lexer.advance(remainingLength);\n\n this._addContentReplace(\n lexer.file,\n location.start,\n lexer.getShaderPosition(0),\n expandedContent,\n lexer.blockRange\n );\n } else {\n const macroContent = macro.body?.lexeme ?? \"\";\n const expandedContent = this._expandMacroBody(macroContent);\n\n this._addContentReplace(lexer.file, location.start, location.end, expandedContent, lexer.blockRange);\n }\n }\n }\n\n // #if _VERBOSE\n static convertSourceIndex(index: number) {\n return this.lexer.sourceMap.map(index);\n }\n // #endif\n}\n","import { Logger } from \"@galacean/engine\";\nimport { ETokenType } from \"../common\";\nimport { Keyword } from \"../common/enums/Keyword\";\nimport { Grammar } from \"../parser/Grammar\";\nimport { GrammarSymbol, NoneTerminal, Terminal } from \"../parser/GrammarSymbol\";\nimport State from \"./State\";\nimport StateItem from \"./StateItem\";\nimport { default as GrammarUtils, default as Utils } from \"./Utils\";\nimport { ActionInfo, ActionTable, EAction, GotoTable, StateActionTable, StateGotoTable } from \"./types\";\n\n/**\n * The [LALR1](https://web.stanford.edu/class/archive/cs/cs143/cs143.1128/handouts/140%20LALR%20Parsing.pdf) Parser generator\n */\nexport class LALR1 {\n readonly firstSetMap: Map<NoneTerminal, Set<Terminal>> = new Map();\n readonly followSetMap: Map<NoneTerminal, Set<Terminal>> = new Map();\n\n readonly actionTable: StateActionTable = new Map();\n readonly gotoTable: StateGotoTable = new Map();\n private grammar: Grammar;\n\n /** For circle detect */\n private _firstSetNTStack: NoneTerminal[] = [];\n\n constructor(grammar: Grammar) {\n this.grammar = grammar;\n }\n\n generate() {\n this.computeFirstSet();\n this.buildStateTable();\n }\n\n private buildStateTable() {\n const startStateItemCore = [new StateItem(this.grammar.productions[0], 0, [ETokenType.EOF])];\n const startState = State.create(startStateItemCore);\n this._extendState(startState);\n }\n\n private _extendState(state: State) {\n if (!state.needReInfer) return;\n this._closure(state);\n const newStates = this._inferNextState(state);\n for (const ns of newStates) {\n this._extendState(ns);\n }\n }\n\n private _closure(state: State) {\n for (const core of state.cores) {\n if (!core.canReduce()) {\n this._extendStateItem(state, core);\n }\n }\n state.closured = true;\n return state;\n }\n\n private _extendStateItem(state: State, item: StateItem) {\n if (GrammarUtils.isTerminal(item.curSymbol)) return;\n\n const productionList = this.grammar.getProductionList(<NoneTerminal>item.curSymbol);\n\n if (item.nextSymbol) {\n let newLookaheadSet = new Set<Terminal>();\n let lastFirstSet: Set<Terminal> | undefined;\n let terminalExist = false;\n // when A :=> a.BC, a; ==》 B :=> .xy, First(Ca)\n // newLookAhead = First(Ca)\n for (let i = 1, nextSymbol = item.symbolByOffset(1); !!nextSymbol; nextSymbol = item.symbolByOffset(++i)) {\n if (GrammarUtils.isTerminal(nextSymbol)) {\n newLookaheadSet.add(<Terminal>nextSymbol);\n terminalExist = true;\n break;\n }\n lastFirstSet = this.firstSetMap.get(<NoneTerminal>nextSymbol)!;\n for (const t of lastFirstSet) {\n newLookaheadSet.add(t);\n }\n if (!lastFirstSet.has(ETokenType.EPSILON)) break;\n }\n if (!terminalExist && lastFirstSet?.has(ETokenType.EPSILON)) {\n for (const t of item.lookaheadSet) {\n newLookaheadSet.add(t);\n }\n }\n\n for (const production of productionList) {\n const newItem = state.createStateItem(production, 0);\n if (!state.items.has(newItem) || !Utils.isSubSet(newLookaheadSet, newItem.lookaheadSet)) {\n state.items.add(newItem);\n newItem.addLookahead(newLookaheadSet);\n this._extendStateItem(state, newItem);\n }\n }\n } else {\n for (const production of productionList) {\n const newItem = state.createStateItem(production, 0);\n if (!state.items.has(newItem) || !Utils.isSubSet(item.lookaheadSet, newItem.lookaheadSet)) {\n state.items.add(newItem);\n newItem.addLookahead(item.lookaheadSet);\n this._extendStateItem(state, newItem);\n }\n }\n }\n }\n\n private _inferNextState(state: State): Set<State> {\n const coreMap: Map<GrammarSymbol, Set<StateItem>> = new Map();\n const stateActionTable: ActionTable = this.actionTable.get(state.id) ?? new Map();\n const stateGotoTable: GotoTable = this.gotoTable.get(state.id) ?? new Map();\n\n this.actionTable.set(state.id, stateActionTable);\n this.gotoTable.set(state.id, stateGotoTable);\n\n for (const stateItem of state.items) {\n if (stateItem.canReduce()) {\n let action: ActionInfo;\n if (stateItem.production.goal !== NoneTerminal.START) {\n action = {\n action: EAction.Reduce,\n target: stateItem.production.id\n };\n } else {\n action = { action: EAction.Accept };\n }\n\n for (const t of stateItem.lookaheadSet) {\n this._addAction(stateActionTable, t, action);\n }\n } else {\n const nextItem = stateItem.advance();\n Utils.addMapSetItem(coreMap, stateItem.curSymbol, nextItem);\n }\n\n stateItem.needReInfer = false;\n }\n\n const newStates = new Set<State>();\n for (const [gs, cores] of coreMap.entries()) {\n const newState = State.create(Array.from(cores));\n if (GrammarUtils.isTerminal(gs)) {\n this._addAction(stateActionTable, <Terminal>gs, {\n action: EAction.Shift,\n target: newState.id\n });\n } else {\n stateGotoTable.set(<NoneTerminal>gs, newState.id);\n }\n\n newStates.add(newState);\n }\n\n return newStates;\n }\n\n /** Resolve shift-reduce/reduce-reduce conflict detect */\n private _addAction(table: ActionTable, terminal: Terminal, action: ActionInfo) {\n const exist = table.get(terminal);\n if (exist && !Utils.isActionEqual(exist, action)) {\n // Resolve dangling else ambiguity\n if (terminal === Keyword.ELSE && exist.action === EAction.Shift && action.action === EAction.Reduce) {\n return;\n } else {\n // #if _VERBOSE\n Logger.warn(\n `conflict detect: <Terminal ${GrammarUtils.toString(terminal)}> \\n`,\n Utils.printAction(exist),\n \"\\n\",\n Utils.printAction(action)\n );\n // #endif\n }\n }\n table.set(terminal, action);\n }\n\n // https://people.cs.pitt.edu/~jmisurda/teaching/cs1622/handouts/cs1622-first_and_follow.pdf\n private computeFirstSet() {\n for (const production of this.grammar.productions.slice(1)) {\n this._computeFirstSetForNT(production.goal);\n }\n }\n\n private _computeFirstSetForNT(NT: NoneTerminal) {\n // circle detect\n const idx = this._firstSetNTStack.findIndex((item) => item === NT);\n if (idx !== -1) {\n const computingFS = this.firstSetMap.get(NT)!;\n const len = this._firstSetNTStack.length;\n for (let i = len - 1; i > idx; i--) {\n const curNT = this._firstSetNTStack[i];\n this.firstSetMap.set(curNT, computingFS);\n }\n return computingFS;\n }\n this._firstSetNTStack.push(NT);\n\n const productionList = this.grammar.getProductionList(NT);\n const firstSet = new Set<Terminal>();\n this.firstSetMap.set(NT, firstSet);\n if (this.grammar.isNullableNT(NT)) firstSet.add(ETokenType.EPSILON);\n\n for (const production of productionList) {\n let i = 0;\n for (; i < production.derivation.length; i++) {\n const gs = production.derivation[i];\n if (GrammarUtils.isTerminal(gs)) {\n firstSet.add(<Terminal>gs);\n break;\n }\n\n const succeedFirstSet = this._computeFirstSetForNT(<NoneTerminal>gs);\n\n for (const item of succeedFirstSet) {\n if (item !== ETokenType.EPSILON) firstSet.add(item);\n }\n if (!this.grammar.isNullableNT(<NoneTerminal>gs)) break;\n }\n if (i === production.derivation.length) firstSet.add(ETokenType.EPSILON);\n }\n\n this._firstSetNTStack.pop();\n return firstSet;\n }\n}\n","import { ETokenType } from \"../common\";\nimport { NoneTerminal, GrammarSymbol } from \"./GrammarSymbol\";\nimport Production from \"../lalr/Production\";\n\nexport class Grammar {\n readonly productions: Production[];\n\n readonly startSymbol: NoneTerminal;\n\n static create(start: NoneTerminal, productions: GrammarSymbol[][]) {\n const _ps = productions.map((gsl) => {\n return new Production(<NoneTerminal>gsl[0], gsl.slice(1));\n });\n return new Grammar(start, _ps);\n }\n\n constructor(start: NoneTerminal, productions: Production[]) {\n this.startSymbol = start;\n productions.unshift(new Production(NoneTerminal.START, [start]));\n this.productions = productions;\n }\n\n getProductionList(nonTerminal: NoneTerminal) {\n return this.productions.filter((item) => item.goal === nonTerminal);\n }\n\n isNullableNT(NT: NoneTerminal) {\n return this.productions.find((item) => item.goal === NT && item.derivation[0] === ETokenType.EPSILON);\n }\n\n getProductionByID(pid: number) {\n return Production.pool.get(pid);\n }\n}\n","// Context Free Grammar of Galacean ShaderLab\nimport { ETokenType } from \"../common\";\nimport { Keyword } from \"../common/enums/Keyword\";\nimport { ASTNode } from \"../parser/AST\";\nimport { Grammar } from \"../parser/Grammar\";\nimport { GrammarSymbol, NoneTerminal } from \"../parser/GrammarSymbol\";\nimport SemanticAnalyzer, { TranslationRule } from \"../parser/SemanticAnalyzer\";\nimport GrammarUtils from \"./Utils\";\n\nconst productionAndRules: [GrammarSymbol[], TranslationRule | undefined][] = [\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.gs_shader_program,\n [[NoneTerminal.global_declaration], [NoneTerminal.gs_shader_program, NoneTerminal.global_declaration]],\n ASTNode.GLShaderProgram.pool\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.global_declaration,\n [\n [NoneTerminal.precision_specifier],\n [NoneTerminal.variable_declaration_statement],\n [NoneTerminal.struct_specifier],\n [NoneTerminal.function_definition],\n [NoneTerminal.global_macro_if_statement],\n [NoneTerminal.macro_undef],\n [Keyword.MACRO_DEFINE_EXPRESSION]\n ],\n ASTNode.GlobalDeclaration.pool\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.macro_call_symbol,\n [[Keyword.MACRO_CALL]],\n ASTNode.MacroCallSymbol.pool\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.macro_call_function,\n [\n [NoneTerminal.macro_call_symbol, ETokenType.LEFT_PAREN, ETokenType.RIGHT_PAREN],\n [\n NoneTerminal.macro_call_symbol,\n ETokenType.LEFT_PAREN,\n NoneTerminal.function_call_parameter_list,\n ETokenType.RIGHT_PAREN\n ]\n ],\n ASTNode.MacroCallFunction.pool\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.macro_undef,\n [\n [Keyword.MACRO_UNDEF, ETokenType.ID],\n [Keyword.MACRO_UNDEF, Keyword.MACRO_CALL]\n ],\n ASTNode.MacroUndef.pool\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.macro_push_context,\n [\n [Keyword.MACRO_IF, Keyword.MACRO_CONDITIONAL_EXPRESSION],\n [Keyword.MACRO_IFDEF, ETokenType.ID],\n [Keyword.MACRO_IFNDEF, ETokenType.ID],\n [Keyword.MACRO_IFDEF, NoneTerminal.macro_call_symbol],\n [Keyword.MACRO_IFNDEF, NoneTerminal.macro_call_symbol]\n ],\n ASTNode.MacroPushContext.pool\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.macro_pop_context,\n [[Keyword.MACRO_ENDIF]],\n ASTNode.MacroPopContext.pool\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.macro_elif_expression,\n [[Keyword.MACRO_ELIF, Keyword.MACRO_CONDITIONAL_EXPRESSION]],\n ASTNode.MacroElifExpression.pool\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.macro_else_expression,\n [[Keyword.MACRO_ELSE]],\n ASTNode.MacroElseExpression.pool\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.global_macro_declaration,\n [[NoneTerminal.global_declaration], [NoneTerminal.global_macro_declaration, NoneTerminal.global_declaration]],\n ASTNode.GlobalMacroDeclaration.pool\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.global_macro_if_statement,\n [\n [NoneTerminal.macro_push_context, NoneTerminal.global_macro_declaration, NoneTerminal.global_macro_branch],\n [NoneTerminal.macro_push_context, NoneTerminal.global_macro_branch]\n ],\n ASTNode.GlobalMacroIfStatement.pool\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.global_macro_branch,\n [\n [NoneTerminal.macro_pop_context],\n [NoneTerminal.macro_elif_expression, NoneTerminal.global_macro_declaration, NoneTerminal.global_macro_branch],\n [NoneTerminal.macro_else_expression, NoneTerminal.global_macro_declaration, NoneTerminal.macro_pop_context],\n [NoneTerminal.macro_elif_expression, NoneTerminal.global_macro_branch],\n [NoneTerminal.macro_else_expression, NoneTerminal.macro_pop_context]\n ],\n ASTNode.GlobalMacroBranch.pool\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.variable_declaration,\n [\n [NoneTerminal.fully_specified_type, ETokenType.ID],\n [NoneTerminal.fully_specified_type, ETokenType.ID, NoneTerminal.array_specifier],\n [NoneTerminal.fully_specified_type, ETokenType.ID, ETokenType.EQUAL, NoneTerminal.initializer]\n ],\n ASTNode.VariableDeclaration.pool\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.variable_declaration_list,\n [\n [NoneTerminal.variable_declaration],\n [NoneTerminal.variable_declaration_list, ETokenType.COMMA, ETokenType.ID],\n [NoneTerminal.variable_declaration_list, ETokenType.COMMA, ETokenType.ID, NoneTerminal.array_specifier]\n ],\n ASTNode.VariableDeclarationList.pool\n ),\n\n ...GrammarUtils.createProductionWithOptions(NoneTerminal.variable_declaration_statement, [\n [NoneTerminal.variable_declaration_list, ETokenType.SEMICOLON]\n ]),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.ext_builtin_type_specifier_nonarray,\n [\n [Keyword.VOID],\n [Keyword.FLOAT],\n [Keyword.BOOL],\n [Keyword.INT],\n [Keyword.UINT],\n [Keyword.VEC2],\n [Keyword.VEC3],\n [Keyword.VEC4],\n [Keyword.BVEC2],\n [Keyword.BVEC3],\n [Keyword.BVEC4],\n [Keyword.IVEC2],\n [Keyword.IVEC3],\n [Keyword.IVEC4],\n [Keyword.UVEC2],\n [Keyword.UVEC3],\n [Keyword.UVEC4],\n [Keyword.MAT2],\n [Keyword.MAT3],\n [Keyword.MAT4],\n [Keyword.MAT2X3],\n [Keyword.MAT2X4],\n [Keyword.MAT3X2],\n [Keyword.MAT3X4],\n [Keyword.MAT4X2],\n [Keyword.MAT4X3],\n [Keyword.SAMPLER2D],\n [Keyword.SAMPLER3D],\n [Keyword.SAMPLER_CUBE],\n [Keyword.SAMPLER2D_SHADOW],\n [Keyword.SAMPLER_CUBE_SHADOW],\n [Keyword.SAMPLER2D_ARRAY],\n [Keyword.SAMPLER2D_ARRAY_SHADOW],\n [Keyword.I_SAMPLER2D],\n [Keyword.I_SAMPLER3D],\n [Keyword.I_SAMPLER_CUBE],\n [Keyword.I_SAMPLER2D_ARRAY],\n [Keyword.U_SAMPLER2D],\n [Keyword.U_SAMPLER3D],\n [Keyword.U_SAMPLER_CUBE],\n [Keyword.U_SAMPLER2D_ARRAY]\n ],\n ASTNode.ExtBuiltinTypeSpecifierNonArray.pool\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.type_specifier_nonarray,\n [[ETokenType.ID], [NoneTerminal.ext_builtin_type_specifier_nonarray]],\n ASTNode.TypeSpecifierNonArray.pool\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.fully_specified_type,\n [[NoneTerminal.type_specifier], [NoneTerminal.type_qualifier, NoneTerminal.type_specifier]],\n ASTNode.FullySpecifiedType.pool\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.type_specifier,\n [\n [NoneTerminal.type_specifier_nonarray],\n [NoneTerminal.ext_builtin_type_specifier_nonarray, NoneTerminal.array_specifier]\n ],\n ASTNode.TypeSpecifier.pool\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.type_qualifier,\n [[NoneTerminal.single_type_qualifier], [NoneTerminal.type_qualifier, NoneTerminal.single_type_qualifier]],\n ASTNode.TypeQualifier.pool\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.single_type_qualifier,\n [\n [NoneTerminal.storage_qualifier],\n [NoneTerminal.precision_qualifier],\n [NoneTerminal.interpolation_qualifier],\n [NoneTerminal.invariant_qualifier],\n [Keyword.PRECISE]\n ],\n ASTNode.SingleTypeQualifier.pool\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.storage_qualifier,\n [[Keyword.CONST], [Keyword.IN], [Keyword.INOUT], [Keyword.OUT], [Keyword.CENTROID]],\n // #if _VERBOSE\n ASTNode.StorageQualifier.pool\n // #endif\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.interpolation_qualifier,\n [[Keyword.SMOOTH], [Keyword.FLAT]],\n // #if _VERBOSE\n ASTNode.InterpolationQualifier.pool\n // #endif\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.invariant_qualifier,\n [[Keyword.INVARIANT]],\n // #if _VERBOSE\n ASTNode.InvariantQualifier.pool\n // #endif\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.precision_qualifier,\n [[Keyword.HIGHP], [Keyword.MEDIUMP], [Keyword.LOWP]],\n // #if _VERBOSE\n ASTNode.PrecisionQualifier.pool\n // #endif\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.struct_specifier,\n [\n [\n Keyword.STRUCT,\n ETokenType.ID,\n ETokenType.LEFT_BRACE,\n NoneTerminal.struct_declaration_list,\n ETokenType.RIGHT_BRACE,\n ETokenType.SEMICOLON\n ],\n [\n Keyword.STRUCT,\n ETokenType.LEFT_BRACE,\n NoneTerminal.struct_declaration_list,\n ETokenType.RIGHT_BRACE,\n ETokenType.SEMICOLON\n ]\n ],\n ASTNode.StructSpecifier.pool\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.struct_declaration_list,\n [[NoneTerminal.struct_declaration], [NoneTerminal.struct_declaration_list, NoneTerminal.struct_declaration]],\n ASTNode.StructDeclarationList.pool\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.struct_declaration,\n [\n [NoneTerminal.type_specifier, NoneTerminal.struct_declarator_list, ETokenType.SEMICOLON],\n [\n NoneTerminal.type_qualifier,\n NoneTerminal.type_specifier,\n NoneTerminal.struct_declarator_list,\n ETokenType.SEMICOLON\n ],\n [\n NoneTerminal.layout_qualifier,\n NoneTerminal.type_specifier,\n NoneTerminal.struct_declarator,\n ETokenType.SEMICOLON\n ],\n [NoneTerminal.macro_struct_declaration]\n ],\n ASTNode.StructDeclaration.pool\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.macro_struct_declaration,\n [\n [NoneTerminal.macro_push_context, NoneTerminal.struct_declaration_list, NoneTerminal.macro_struct_branch],\n [NoneTerminal.macro_push_context, NoneTerminal.macro_struct_branch]\n ],\n ASTNode.MacroStructDeclaration.pool\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.macro_struct_branch,\n [\n [NoneTerminal.macro_pop_context],\n [NoneTerminal.macro_elif_expression, NoneTerminal.struct_declaration_list, NoneTerminal.macro_struct_branch],\n [NoneTerminal.macro_else_expression, NoneTerminal.struct_declaration_list, NoneTerminal.macro_pop_context],\n [NoneTerminal.macro_elif_expression, NoneTerminal.macro_struct_branch],\n [NoneTerminal.macro_else_expression, NoneTerminal.macro_pop_context]\n ],\n ASTNode.MacroStructBranch.pool\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.layout_qualifier,\n [\n [\n Keyword.LAYOUT,\n ETokenType.LEFT_PAREN,\n Keyword.LOCATION,\n ETokenType.EQUAL,\n ETokenType.INT_CONSTANT,\n ETokenType.RIGHT_PAREN\n ]\n ],\n ASTNode.LayoutQualifier.pool\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.struct_declarator_list,\n [\n [NoneTerminal.struct_declarator],\n [NoneTerminal.struct_declarator_list, ETokenType.COMMA, NoneTerminal.struct_declarator]\n ],\n ASTNode.StructDeclaratorList.pool\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.struct_declarator,\n [[ETokenType.ID], [ETokenType.ID, NoneTerminal.array_specifier]],\n ASTNode.StructDeclarator.pool\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.array_specifier,\n [\n [ETokenType.LEFT_BRACKET, ETokenType.RIGHT_BRACKET],\n [ETokenType.LEFT_BRACKET, NoneTerminal.integer_constant_expression, ETokenType.RIGHT_BRACKET]\n ],\n ASTNode.ArraySpecifier.pool\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.integer_constant_expression_operator,\n [[ETokenType.PLUS], [ETokenType.DASH], [ETokenType.STAR], [ETokenType.SLASH], [ETokenType.PERCENT]],\n ASTNode.IntegerConstantExpressionOperator.pool\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.integer_constant_expression,\n [\n [NoneTerminal.variable_identifier],\n [ETokenType.INT_CONSTANT],\n [\n NoneTerminal.integer_constant_expression,\n NoneTerminal.integer_constant_expression_operator,\n ETokenType.INT_CONSTANT\n ],\n [\n NoneTerminal.integer_constant_expression,\n NoneTerminal.integer_constant_expression_operator,\n NoneTerminal.variable_identifier\n ]\n ],\n ASTNode.IntegerConstantExpression.pool\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.conditional_expression,\n [\n [NoneTerminal.logical_or_expression],\n [\n NoneTerminal.logical_or_expression,\n ETokenType.QUESTION,\n NoneTerminal.expression,\n ETokenType.COLON,\n NoneTerminal.assignment_expression\n ]\n ],\n // #if _VERBOSE\n ASTNode.ConditionalExpression.pool\n // #endif\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.logical_or_expression,\n [\n [NoneTerminal.logical_xor_expression],\n [NoneTerminal.logical_or_expression, ETokenType.OR_OP, NoneTerminal.logical_xor_expression]\n ],\n // #if _VERBOSE\n ASTNode.LogicalOrExpression.pool\n // #endif\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.logical_xor_expression,\n [\n [NoneTerminal.logical_and_expression],\n [NoneTerminal.logical_xor_expression, ETokenType.XOR_OP, NoneTerminal.logical_and_expression]\n ],\n // #if _VERBOSE\n ASTNode.LogicalXorExpression.pool\n // #endif\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.logical_and_expression,\n [\n [NoneTerminal.inclusive_or_expression],\n [NoneTerminal.logical_and_expression, ETokenType.AND_OP, NoneTerminal.inclusive_or_expression]\n ],\n // #if _VERBOSE\n ASTNode.LogicalAndExpression.pool\n // #endif\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.inclusive_or_expression,\n [\n [NoneTerminal.exclusive_or_expression],\n [NoneTerminal.inclusive_or_expression, ETokenType.VERTICAL_BAR, NoneTerminal.exclusive_or_expression]\n ],\n // #if _VERBOSE\n ASTNode.InclusiveOrExpression.pool\n // #endif\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.exclusive_or_expression,\n [\n [NoneTerminal.and_expression],\n [NoneTerminal.exclusive_or_expression, ETokenType.CARET, NoneTerminal.and_expression]\n ],\n // #if _VERBOSE\n ASTNode.ExclusiveOrExpression.pool\n // #endif\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.and_expression,\n [\n [NoneTerminal.equality_expression],\n [NoneTerminal.and_expression, ETokenType.AMPERSAND, NoneTerminal.equality_expression]\n ],\n // #if _VERBOSE\n ASTNode.AndExpression.pool\n // #endif\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.equality_expression,\n [\n [NoneTerminal.relational_expression],\n [NoneTerminal.equality_expression, ETokenType.EQ_OP, NoneTerminal.relational_expression],\n [NoneTerminal.equality_expression, ETokenType.NE_OP, NoneTerminal.relational_expression]\n ],\n // #if _VERBOSE\n ASTNode.EqualityExpression.pool\n // #endif\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.relational_expression,\n [\n [NoneTerminal.shift_expression],\n [NoneTerminal.relational_expression, ETokenType.LEFT_ANGLE, NoneTerminal.shift_expression],\n [NoneTerminal.relational_expression, ETokenType.RIGHT_ANGLE, NoneTerminal.shift_expression],\n [NoneTerminal.relational_expression, ETokenType.LE_OP, NoneTerminal.shift_expression],\n [NoneTerminal.relational_expression, ETokenType.GE_OP, NoneTerminal.shift_expression]\n ],\n // #if _VERBOSE\n ASTNode.RelationalExpression.pool\n // #endif\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.shift_expression,\n [\n [NoneTerminal.additive_expression],\n [NoneTerminal.shift_expression, ETokenType.LEFT_OP, NoneTerminal.additive_expression],\n [NoneTerminal.shift_expression, ETokenType.RIGHT_OP, NoneTerminal.additive_expression]\n ],\n // #if _VERBOSE\n ASTNode.ShiftExpression.pool\n // #endif\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.additive_expression,\n [\n [NoneTerminal.multiplicative_expression],\n [NoneTerminal.additive_expression, ETokenType.PLUS, NoneTerminal.multiplicative_expression],\n [NoneTerminal.additive_expression, ETokenType.DASH, NoneTerminal.multiplicative_expression]\n ],\n // #if _VERBOSE\n ASTNode.AdditiveExpression.pool\n // #endif\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.multiplicative_expression,\n [\n [NoneTerminal.unary_expression],\n [NoneTerminal.multiplicative_expression, ETokenType.STAR, NoneTerminal.unary_expression],\n [NoneTerminal.multiplicative_expression, ETokenType.SLASH, NoneTerminal.unary_expression],\n [NoneTerminal.multiplicative_expression, ETokenType.PERCENT, NoneTerminal.unary_expression]\n ],\n // #if _VERBOSE\n ASTNode.MultiplicativeExpression.pool\n // #endif\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.unary_expression,\n [\n [NoneTerminal.postfix_expression],\n [ETokenType.INC_OP, NoneTerminal.unary_expression],\n [ETokenType.DEC_OP, NoneTerminal.unary_expression],\n [NoneTerminal.unary_operator, NoneTerminal.unary_expression]\n ],\n // #if _VERBOSE\n ASTNode.UnaryExpression.pool\n // #endif\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.unary_operator,\n [[ETokenType.PLUS], [ETokenType.DASH], [ETokenType.BANG], [ETokenType.TILDE]],\n // #if _VERBOSE\n ASTNode.UnaryOperator.pool\n // #endif\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.postfix_expression,\n [\n [NoneTerminal.primary_expression],\n [NoneTerminal.postfix_expression, ETokenType.LEFT_BRACKET, NoneTerminal.expression, ETokenType.RIGHT_BRACKET],\n [NoneTerminal.function_call],\n [NoneTerminal.postfix_expression, ETokenType.DOT, ETokenType.ID],\n [NoneTerminal.postfix_expression, ETokenType.DOT, NoneTerminal.function_call],\n [NoneTerminal.postfix_expression, ETokenType.INC_OP],\n [NoneTerminal.postfix_expression, ETokenType.DEC_OP]\n ],\n ASTNode.PostfixExpression.pool\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.primary_expression,\n [\n [NoneTerminal.variable_identifier],\n [ETokenType.INT_CONSTANT],\n [ETokenType.FLOAT_CONSTANT],\n [Keyword.True],\n [Keyword.False],\n [ETokenType.LEFT_PAREN, NoneTerminal.expression, ETokenType.RIGHT_PAREN]\n ],\n ASTNode.PrimaryExpression.pool\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.expression,\n [\n [NoneTerminal.assignment_expression],\n [NoneTerminal.expression, ETokenType.COMMA, NoneTerminal.assignment_expression]\n ],\n ASTNode.Expression.pool\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.assignment_expression,\n [\n [NoneTerminal.conditional_expression],\n [NoneTerminal.unary_expression, NoneTerminal.assignment_operator, NoneTerminal.assignment_expression]\n ],\n ASTNode.AssignmentExpression.pool\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.assignment_operator,\n [\n [ETokenType.EQUAL],\n [ETokenType.MUL_ASSIGN],\n [ETokenType.DIV_ASSIGN],\n [ETokenType.MOD_ASSIGN],\n [ETokenType.ADD_ASSIGN],\n [ETokenType.SUB_ASSIGN],\n [ETokenType.LEFT_ASSIGN],\n [ETokenType.RIGHT_ASSIGN],\n [ETokenType.AND_ASSIGN],\n [ETokenType.XOR_ASSIGN],\n [ETokenType.OR_ASSIGN]\n ],\n // #if _VERBOSE\n ASTNode.AssignmentOperator.pool\n // #endif\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.function_call,\n [[NoneTerminal.function_call_generic]],\n ASTNode.FunctionCall.pool\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.function_call_generic,\n [\n [\n NoneTerminal.function_identifier,\n ETokenType.LEFT_PAREN,\n NoneTerminal.function_call_parameter_list,\n ETokenType.RIGHT_PAREN\n ],\n [NoneTerminal.function_identifier, ETokenType.LEFT_PAREN, ETokenType.RIGHT_PAREN],\n [NoneTerminal.function_identifier, Keyword.VOID, ETokenType.RIGHT_PAREN]\n ],\n ASTNode.FunctionCallGeneric.pool\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.function_call_parameter_list,\n [\n [NoneTerminal.assignment_expression],\n [NoneTerminal.function_call_parameter_list, ETokenType.COMMA, NoneTerminal.assignment_expression],\n [NoneTerminal.macro_call_arg_block],\n [NoneTerminal.function_call_parameter_list, NoneTerminal.macro_call_arg_block]\n ],\n ASTNode.FunctionCallParameterList.pool\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.macro_call_arg_case_list,\n [\n [NoneTerminal.assignment_expression],\n [ETokenType.COMMA, NoneTerminal.assignment_expression],\n [NoneTerminal.macro_call_arg_block],\n [NoneTerminal.macro_call_arg_case_list, NoneTerminal.macro_call_arg_block],\n [NoneTerminal.macro_call_arg_case_list, ETokenType.COMMA, NoneTerminal.assignment_expression]\n ],\n ASTNode.MacroCallArgCaseList.pool\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.macro_call_arg_block,\n [\n [NoneTerminal.macro_push_context, NoneTerminal.macro_call_arg_branch],\n [NoneTerminal.macro_push_context, NoneTerminal.macro_call_arg_case_list, NoneTerminal.macro_call_arg_branch]\n ],\n ASTNode.MacroCallArgBlock.pool\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.macro_call_arg_branch,\n [\n [NoneTerminal.macro_pop_context],\n [NoneTerminal.macro_elif_expression, NoneTerminal.macro_call_arg_case_list, NoneTerminal.macro_call_arg_branch],\n [NoneTerminal.macro_else_expression, NoneTerminal.macro_call_arg_case_list, NoneTerminal.macro_pop_context],\n [NoneTerminal.macro_elif_expression, NoneTerminal.macro_call_arg_branch],\n [NoneTerminal.macro_else_expression, NoneTerminal.macro_pop_context]\n ],\n ASTNode.MacroCallArgBranch.pool\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.function_identifier,\n [[NoneTerminal.type_specifier]],\n ASTNode.FunctionIdentifier.pool\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.function_definition,\n [[NoneTerminal.function_prototype, NoneTerminal.compound_statement_no_scope]],\n ASTNode.FunctionDefinition.pool\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.function_prototype,\n [[NoneTerminal.function_declarator, ETokenType.RIGHT_PAREN]],\n ASTNode.FunctionProtoType.pool\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.function_declarator,\n [[NoneTerminal.function_header], [NoneTerminal.function_header, NoneTerminal.function_parameter_list]],\n ASTNode.FunctionDeclarator.pool\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.function_header,\n [[NoneTerminal.fully_specified_type, ETokenType.ID, ETokenType.LEFT_PAREN]],\n ASTNode.FunctionHeader.pool\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.function_parameter_list,\n [\n [NoneTerminal.parameter_declaration],\n [NoneTerminal.function_parameter_list, ETokenType.COMMA, NoneTerminal.parameter_declaration],\n [NoneTerminal.macro_param_block],\n [NoneTerminal.function_parameter_list, NoneTerminal.macro_param_block]\n ],\n ASTNode.FunctionParameterList.pool\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.macro_param_case_list,\n [\n [NoneTerminal.parameter_declaration],\n [ETokenType.COMMA, NoneTerminal.parameter_declaration],\n [NoneTerminal.macro_param_block],\n [NoneTerminal.macro_param_case_list, NoneTerminal.macro_param_block],\n [NoneTerminal.macro_param_case_list, ETokenType.COMMA, NoneTerminal.parameter_declaration]\n ],\n ASTNode.MacroParamCaseList.pool\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.macro_param_block,\n [\n [NoneTerminal.macro_push_context, NoneTerminal.macro_parameter_branch],\n [NoneTerminal.macro_push_context, NoneTerminal.macro_param_case_list, NoneTerminal.macro_parameter_branch]\n ],\n ASTNode.MacroParamBlock.pool\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.macro_parameter_branch,\n [\n [NoneTerminal.macro_pop_context],\n [NoneTerminal.macro_elif_expression, NoneTerminal.macro_param_case_list, NoneTerminal.macro_parameter_branch],\n [NoneTerminal.macro_else_expression, NoneTerminal.macro_param_case_list, NoneTerminal.macro_pop_context],\n [NoneTerminal.macro_elif_expression, NoneTerminal.macro_parameter_branch],\n [NoneTerminal.macro_else_expression, NoneTerminal.macro_pop_context]\n ],\n ASTNode.MacroParameterBranch.pool\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.parameter_declaration,\n [\n [NoneTerminal.type_qualifier, NoneTerminal.parameter_declarator],\n [NoneTerminal.parameter_declarator],\n [NoneTerminal.macro_call_symbol],\n [NoneTerminal.macro_call_function]\n ],\n ASTNode.ParameterDeclaration.pool\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.parameter_declarator,\n [\n [NoneTerminal.type_specifier, ETokenType.ID],\n [NoneTerminal.type_specifier, ETokenType.ID, NoneTerminal.array_specifier]\n ],\n ASTNode.ParameterDeclarator.pool\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.statement_list,\n [[NoneTerminal.statement], [NoneTerminal.statement_list, NoneTerminal.statement]],\n ASTNode.StatementList.pool\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.statement,\n [[NoneTerminal.compound_statement], [NoneTerminal.simple_statement]],\n // #if _VERBOSE\n ASTNode.Statement.pool\n // #endif\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.compound_statement_no_scope,\n [\n [ETokenType.LEFT_BRACE, ETokenType.RIGHT_BRACE],\n [ETokenType.LEFT_BRACE, NoneTerminal.statement_list, ETokenType.RIGHT_BRACE]\n ],\n ASTNode.CompoundStatementNoScope.pool\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.compound_statement,\n [\n [ETokenType.LEFT_BRACE, ETokenType.RIGHT_BRACE],\n [NoneTerminal.scope_brace, NoneTerminal.statement_list, NoneTerminal.scope_end_brace]\n ],\n // #if _VERBOSE\n ASTNode.CompoundStatement.pool\n // #endif\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.simple_statement,\n [\n [NoneTerminal.declaration],\n [NoneTerminal.expression_statement],\n [NoneTerminal.selection_statement],\n [NoneTerminal.iteration_statement],\n [NoneTerminal.jump_statement],\n [NoneTerminal.macro_if_statement],\n [NoneTerminal.macro_undef],\n [Keyword.MACRO_DEFINE_EXPRESSION]\n ],\n // #if _VERBOSE\n ASTNode.SimpleStatement.pool\n // #endif\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.declaration,\n [\n [NoneTerminal.function_prototype, ETokenType.SEMICOLON],\n [NoneTerminal.init_declarator_list, ETokenType.SEMICOLON],\n [\n Keyword.PRECISION,\n NoneTerminal.precision_qualifier,\n NoneTerminal.ext_builtin_type_specifier_nonarray,\n ETokenType.SEMICOLON\n ],\n [NoneTerminal.type_qualifier, ETokenType.ID, ETokenType.SEMICOLON],\n [NoneTerminal.type_qualifier, ETokenType.ID, NoneTerminal.identifier_list, ETokenType.SEMICOLON]\n ],\n ASTNode.Declaration.pool\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.identifier_list,\n [\n [ETokenType.COMMA, ETokenType.ID],\n [NoneTerminal.identifier_list, ETokenType.COMMA, ETokenType.ID]\n ],\n ASTNode.IdentifierList.pool\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.init_declarator_list,\n [\n [NoneTerminal.single_declaration],\n [NoneTerminal.init_declarator_list, ETokenType.COMMA, ETokenType.ID],\n [NoneTerminal.init_declarator_list, ETokenType.COMMA, ETokenType.ID, NoneTerminal.array_specifier],\n [\n NoneTerminal.init_declarator_list,\n ETokenType.COMMA,\n ETokenType.ID,\n NoneTerminal.array_specifier,\n ETokenType.EQUAL,\n NoneTerminal.initializer\n ],\n [NoneTerminal.init_declarator_list, ETokenType.COMMA, ETokenType.ID, ETokenType.EQUAL, NoneTerminal.initializer]\n ],\n ASTNode.InitDeclaratorList.pool\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.single_declaration,\n [\n [NoneTerminal.fully_specified_type, ETokenType.ID],\n [NoneTerminal.fully_specified_type, ETokenType.ID, NoneTerminal.array_specifier],\n [\n NoneTerminal.fully_specified_type,\n ETokenType.ID,\n NoneTerminal.array_specifier,\n ETokenType.EQUAL,\n NoneTerminal.initializer\n ],\n [NoneTerminal.fully_specified_type, ETokenType.ID, ETokenType.EQUAL, NoneTerminal.initializer]\n ],\n ASTNode.SingleDeclaration.pool\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.initializer,\n [\n [NoneTerminal.assignment_expression],\n [ETokenType.LEFT_BRACE, NoneTerminal.initializer_list, ETokenType.RIGHT_BRACE]\n ],\n // #if _VERBOSE\n ASTNode.Initializer.pool\n // #endif\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.initializer_list,\n [[NoneTerminal.initializer], [NoneTerminal.initializer_list, ETokenType.COMMA, NoneTerminal.initializer]],\n // #if _VERBOSE\n ASTNode.InitializerList.pool\n // #endif\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.expression_statement,\n [[ETokenType.SEMICOLON], [NoneTerminal.expression, ETokenType.SEMICOLON]],\n // #if _VERBOSE\n ASTNode.ExpressionStatement.pool\n // #endif\n ),\n\n // dangling else ambiguity\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.selection_statement,\n [\n [Keyword.IF, ETokenType.LEFT_PAREN, NoneTerminal.expression, ETokenType.RIGHT_PAREN, NoneTerminal.statement],\n [\n Keyword.IF,\n ETokenType.LEFT_PAREN,\n NoneTerminal.expression,\n ETokenType.RIGHT_PAREN,\n NoneTerminal.statement,\n Keyword.ELSE,\n NoneTerminal.statement\n ]\n ],\n // #if _VERBOSE\n ASTNode.SelectionStatement.pool\n // #endif\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.iteration_statement,\n [\n [Keyword.WHILE, ETokenType.LEFT_PAREN, NoneTerminal.condition, ETokenType.RIGHT_PAREN, NoneTerminal.statement],\n [\n Keyword.FOR,\n ETokenType.LEFT_PAREN,\n NoneTerminal.for_init_statement,\n NoneTerminal.for_rest_statement,\n ETokenType.RIGHT_PAREN,\n NoneTerminal.statement\n ]\n ],\n // #if _VERBOSE\n ASTNode.IterationStatement.pool\n // #endif\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.precision_specifier,\n [\n [\n Keyword.PRECISION,\n NoneTerminal.precision_qualifier,\n NoneTerminal.ext_builtin_type_specifier_nonarray,\n ETokenType.SEMICOLON\n ]\n ],\n ASTNode.PrecisionSpecifier.pool\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.for_init_statement,\n [[NoneTerminal.expression_statement], [NoneTerminal.declaration]],\n // #if _VERBOSE\n ASTNode.ForInitStatement.pool\n // #endif\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.condition,\n [\n [NoneTerminal.expression],\n [NoneTerminal.fully_specified_type, ETokenType.ID, ETokenType.EQUAL, NoneTerminal.initializer]\n ],\n // #if _VERBOSE\n ASTNode.Condition.pool\n // #endif\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.for_rest_statement,\n [\n [NoneTerminal.conditionopt, ETokenType.SEMICOLON],\n [NoneTerminal.conditionopt, ETokenType.SEMICOLON, NoneTerminal.expression]\n ],\n // #if _VERBOSE\n ASTNode.ForRestStatement.pool\n // #endif\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.conditionopt,\n [[ETokenType.EPSILON], [NoneTerminal.condition]],\n // #if _VERBOSE\n ASTNode.ConditionOpt.pool\n // #endif\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.jump_statement,\n [\n [Keyword.CONTINUE, ETokenType.SEMICOLON],\n [Keyword.BREAK, ETokenType.SEMICOLON],\n [Keyword.RETURN, ETokenType.SEMICOLON],\n [Keyword.RETURN, NoneTerminal.expression, ETokenType.SEMICOLON],\n [Keyword.DISCARD, ETokenType.SEMICOLON]\n ],\n ASTNode.JumpStatement.pool\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.scope_brace,\n [[ETokenType.LEFT_BRACE]],\n ASTNode.ScopeBrace.pool\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.scope_end_brace,\n [[ETokenType.RIGHT_BRACE]],\n ASTNode.ScopeEndBrace.pool\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.variable_identifier,\n [[ETokenType.ID], [NoneTerminal.macro_call_symbol], [NoneTerminal.macro_call_function]],\n ASTNode.VariableIdentifier.pool\n ),\n\n // Macros ...\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.macro_if_statement,\n [\n [NoneTerminal.macro_push_context, NoneTerminal.statement_list, NoneTerminal.macro_branch],\n [NoneTerminal.macro_push_context, NoneTerminal.macro_branch]\n ],\n ASTNode.MacroIfStatement.pool\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.macro_branch,\n [\n [NoneTerminal.macro_pop_context],\n [NoneTerminal.macro_elif_expression, NoneTerminal.statement_list, NoneTerminal.macro_branch],\n [NoneTerminal.macro_else_expression, NoneTerminal.statement_list, NoneTerminal.macro_pop_context],\n [NoneTerminal.macro_elif_expression, NoneTerminal.macro_branch],\n [NoneTerminal.macro_else_expression, NoneTerminal.macro_pop_context]\n ],\n ASTNode.MacroBranch.pool\n )\n];\n\nconst createGrammar = () =>\n Grammar.create(\n NoneTerminal.gs_shader_program,\n productionAndRules.map((item) => item[0])\n );\n\nconst addTranslationRule = (sa: SemanticAnalyzer) => {\n for (let i = 0; i < productionAndRules.length; i++) {\n const rule = productionAndRules[i][1];\n if (rule) {\n sa.addTranslationRule(i, rule);\n }\n }\n};\n\nexport { addTranslationRule, createGrammar };\n","import { Logger } from \"@galacean/engine\";\nimport { ETokenType } from \"../common\";\nimport { BaseToken } from \"../common/BaseToken\";\nimport { GSError, GSErrorName } from \"../GSError\";\nimport { LALR1 } from \"../lalr\";\nimport { addTranslationRule, createGrammar } from \"../lalr/CFG\";\nimport { EAction, StateActionTable, StateGotoTable } from \"../lalr/types\";\nimport { MacroDefineList } from \"../Preprocessor\";\nimport { ParserUtils } from \"../ParserUtils\";\nimport { ShaderLab } from \"../ShaderLab\";\nimport { ShaderLabUtils } from \"../ShaderLabUtils\";\nimport { ASTNode, TreeNode } from \"./AST\";\nimport { Grammar } from \"./Grammar\";\nimport { GrammarSymbol, NoneTerminal } from \"./GrammarSymbol\";\nimport SematicAnalyzer from \"./SemanticAnalyzer\";\nimport { TraceStackItem } from \"./types\";\n\n/**\n * The syntax parser and sematic analyzer of `ShaderLab` compiler\n */\nexport class ShaderTargetParser {\n readonly actionTable: StateActionTable;\n readonly gotoTable: StateGotoTable;\n readonly grammar: Grammar;\n readonly sematicAnalyzer: SematicAnalyzer;\n private _traceBackStack: (TraceStackItem | number)[] = [];\n\n private get curState() {\n return this._traceBackStack[this._traceBackStack.length - 1] as number;\n }\n private get stateActionTable() {\n return this.actionTable.get(this.curState)!;\n }\n private get stateGotoTable() {\n return this.gotoTable.get(this.curState);\n }\n\n // #if _VERBOSE\n /** @internal */\n get errors() {\n return this.sematicAnalyzer.errors;\n }\n // #endif\n\n static _singleton: ShaderTargetParser;\n\n static create() {\n if (!this._singleton) {\n const grammar = createGrammar();\n const generator = new LALR1(grammar);\n generator.generate();\n this._singleton = new ShaderTargetParser(generator.actionTable, generator.gotoTable, grammar);\n addTranslationRule(this._singleton.sematicAnalyzer);\n }\n\n return this._singleton;\n }\n\n private constructor(actionTable: StateActionTable, gotoTable: StateGotoTable, grammar: Grammar) {\n this.actionTable = actionTable;\n this.gotoTable = gotoTable;\n this.grammar = grammar;\n this.sematicAnalyzer = new SematicAnalyzer();\n }\n\n parse(tokens: Generator<BaseToken, BaseToken>, macroDefineList: MacroDefineList): ASTNode.GLShaderProgram | null {\n this.sematicAnalyzer.reset(macroDefineList);\n const start = performance.now();\n const { _traceBackStack: traceBackStack, sematicAnalyzer } = this;\n traceBackStack.push(0);\n\n let nextToken = tokens.next();\n let loopCount = 0;\n while (true) {\n loopCount += 1;\n const token = nextToken.value;\n\n const actionInfo = this.stateActionTable.get(token.type);\n if (actionInfo?.action === EAction.Shift) {\n traceBackStack.push(token, actionInfo.target!);\n nextToken = tokens.next();\n } else if (actionInfo?.action === EAction.Accept) {\n Logger.info(\n `[Task - AST compilation] Accept! State automata run ${loopCount} times! cost time ${\n performance.now() - start\n }ms`\n );\n sematicAnalyzer.acceptRule?.(sematicAnalyzer);\n return sematicAnalyzer.semanticStack.pop() as ASTNode.GLShaderProgram;\n } else if (actionInfo?.action === EAction.Reduce) {\n const target = actionInfo.target!;\n const reduceProduction = this.grammar.getProductionByID(target)!;\n const translationRule = sematicAnalyzer.getTranslationRule(reduceProduction.id);\n\n const values: (TreeNode | BaseToken)[] = [];\n\n for (let i = reduceProduction.derivation.length - 1; i >= 0; i--) {\n if (reduceProduction.derivation[i] === ETokenType.EPSILON) continue;\n traceBackStack.pop();\n const token = traceBackStack.pop();\n if (token instanceof BaseToken) {\n values.unshift(token);\n } else {\n const astNode = sematicAnalyzer.semanticStack.pop()!;\n values.unshift(astNode);\n }\n }\n translationRule?.(sematicAnalyzer, ...values);\n\n const gotoTable = this.stateGotoTable;\n traceBackStack.push(reduceProduction.goal);\n\n const nextState = gotoTable?.get(reduceProduction.goal)!;\n traceBackStack.push(nextState);\n continue;\n } else {\n const error = ShaderLabUtils.createGSError(\n `Unexpected token ${token.lexeme}`,\n GSErrorName.CompilationError,\n ShaderLab._processingPassText,\n token.location\n );\n // #if _VERBOSE\n this.sematicAnalyzer.errors.push(<GSError>error);\n // #endif\n return null;\n }\n }\n }\n\n // #if _VERBOSE\n private _printStack(nextToken: BaseToken) {\n let str = \"\";\n for (let i = 0; i < this._traceBackStack.length - 1; i++) {\n const state = <NoneTerminal>this._traceBackStack[i++];\n const token = this._traceBackStack[i];\n str += `State${state} - ${(<BaseToken>token).lexeme ?? ParserUtils.toString(token as GrammarSymbol)}; `;\n }\n str += `State${this._traceBackStack[this._traceBackStack.length - 1]} --- ${nextToken.lexeme}`;\n Logger.info(str);\n }\n // #endif\n}\n","function _extends() {\n _extends = Object.assign || function assign(target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n for (var key in source) if (Object.prototype.hasOwnProperty.call(source, key)) target[key] = source[key];\n }\n\n return target;\n };\n\n return _extends.apply(this, arguments);\n}\nexport { _extends as _ };\n","import { IRenderStates, IShaderPassSource, IShaderSource, ISubShaderSource } from \"@galacean/engine-design\";\n\nexport class ShaderSourceFactory {\n static createRenderStates(): IRenderStates {\n return {\n constantMap: {},\n variableMap: {}\n };\n }\n\n static createShaderSource(name: string): IShaderSource {\n return {\n name,\n subShaders: [],\n pendingContents: [],\n renderStates: this.createRenderStates()\n };\n }\n\n static createSubShaderSource(name: string): ISubShaderSource {\n return {\n name,\n passes: [],\n pendingContents: [],\n tags: {},\n renderStates: this.createRenderStates()\n };\n }\n\n static createShaderPassSource(name: string): IShaderPassSource {\n return {\n name,\n pendingContents: [],\n tags: {},\n renderStates: this.createRenderStates()\n } as IShaderPassSource;\n }\n\n static createUsePass(name: string): IShaderPassSource {\n return {\n name,\n pendingContents: [],\n isUsePass: true,\n tags: {},\n renderStates: this.createRenderStates()\n } as IShaderPassSource;\n }\n}\n","import { IBaseSymbol } from \"../common/IBaseSymbol\";\n\nexport class ShaderSourceSymbol implements IBaseSymbol {\n public isInMacroBranch: boolean = false;\n\n constructor(\n public ident: string,\n public type: number,\n public value?: any\n ) {}\n\n set(ident: string, type: number, value?: any): void {\n this.ident = ident;\n this.type = type;\n this.value = value;\n }\n\n equal(other: ShaderSourceSymbol): boolean {\n return this.type === other.type;\n }\n}\n","import { Color } from \"@galacean/engine\";\nimport { ETokenType, ShaderPosition, ShaderRange } from \"../common\";\nimport { BaseLexer } from \"../common/BaseLexer\";\nimport { BaseToken } from \"../common/BaseToken\";\nimport { Keyword } from \"../common/enums/Keyword\";\nimport { GSErrorName } from \"../GSError\";\nimport { ShaderLab } from \"../ShaderLab\";\nimport { ShaderLabUtils } from \"../ShaderLabUtils\";\n\nexport default class SourceLexer extends BaseLexer {\n hasPendingContent = false;\n\n private static _keywordLexemeTable = <Record<string, Keyword>>{\n RenderQueueType: Keyword.GSRenderQueueType,\n BlendState: Keyword.GSBlendState,\n DepthState: Keyword.GSDepthState,\n StencilState: Keyword.GSStencilState,\n RasterState: Keyword.GSRasterState,\n EditorProperties: Keyword.GSEditorProperties,\n EditorMacros: Keyword.GSEditorMacros,\n Editor: Keyword.GSEditor,\n Tags: Keyword.GSTags,\n VertexShader: Keyword.GSVertexShader,\n FragmentShader: Keyword.GSFragmentShader,\n SubShader: Keyword.GSSubShader,\n Pass: Keyword.GSPass,\n BlendFactor: Keyword.GSBlendFactor,\n BlendOperation: Keyword.GSBlendOperation,\n Bool: Keyword.GSBool,\n Number: Keyword.GSNumber,\n Color: Keyword.GSColor,\n CompareFunction: Keyword.GSCompareFunction,\n StencilOperation: Keyword.GSStencilOperation,\n CullMode: Keyword.GSCullMode,\n UsePass: Keyword.GSUsePass,\n\n true: Keyword.True,\n false: Keyword.False\n };\n\n private static _symbolLexemeTable = <Record<string, Keyword>>{\n \"{\": Keyword.LeftBrace,\n \"}\": Keyword.RightBrace,\n \"=\": Keyword.Equal\n };\n\n private static _isWordSeparatorChar(charCode: number): boolean {\n return (\n charCode === 123 || // {\n charCode === 125 || // }\n charCode === 61 || // =\n charCode === 59 || // ;\n charCode === 46 || // . CullMode.Back\n charCode === 91 || // [ Enabled[0],\n charCode === 40 // ( Color(1.0, 1.0, 1.0, 1.0);\n );\n }\n\n private static _scanDigits(source: string, startIndex: number): number {\n let currentIndex = startIndex;\n while (currentIndex < source.length) {\n const charCode = source.charCodeAt(currentIndex);\n if (BaseLexer.isDigit(charCode)) {\n currentIndex++;\n } else {\n break;\n }\n }\n return currentIndex;\n }\n\n scanNumber(): number {\n this.skipCommentsAndSpace();\n const start = this._currentIndex;\n const source = this._source;\n let index = this._currentIndex;\n\n // Scan integer part\n index = SourceLexer._scanDigits(source, index);\n\n // Scan decimal part if present\n if (source[index] === \".\") {\n index = SourceLexer._scanDigits(source, index + 1);\n }\n\n this.advance(index - this._currentIndex);\n return Number(source.substring(start, index));\n }\n\n scanColor(): Color {\n this.scanLexeme(\"(\");\n\n let r = 0;\n let g = 0;\n let b = 0;\n let a = 1;\n\n r = this.scanNumber();\n this.skipCommentsAndSpace();\n if (this.peek(1) !== \")\") {\n this.scanLexeme(\",\");\n g = this.scanNumber();\n this.skipCommentsAndSpace();\n if (this.peek(1) !== \")\") {\n this.scanLexeme(\",\");\n b = this.scanNumber();\n this.skipCommentsAndSpace();\n if (this.peek(1) !== \")\") {\n this.scanLexeme(\",\");\n a = this.scanNumber();\n this.skipCommentsAndSpace();\n }\n }\n }\n\n this.scanLexeme(\")\");\n return new Color(r, g, b, a);\n }\n\n override scanToken(): BaseToken {\n while (true) {\n this.skipCommentsAndSpace();\n\n if (this.isEnd()) {\n return;\n }\n\n const start = this.getShaderPosition(0);\n if (BaseLexer.isAlpha(this.getCurCharCode())) {\n const wordToken = this._scanWord(start);\n if (wordToken !== null) {\n return wordToken;\n }\n this.hasPendingContent = true;\n continue; // Continue loop to scan next token if word was invalid\n }\n\n const currentChar = this.getCurChar();\n const symbolKeyword = SourceLexer._symbolLexemeTable[currentChar];\n if (symbolKeyword !== undefined) {\n this.advance(1);\n const token = BaseToken.pool.get();\n token.set(symbolKeyword, currentChar, start);\n return token;\n }\n\n // Skip unrecognized character and continue\n this.advance(1);\n }\n }\n\n // #if _VERBOSE\n scanToCharacter(char: string): void {\n while (this.getCurChar() !== char && !this.isEnd()) {\n this.advance(1);\n }\n this.advance(1);\n }\n // #endif\n\n createCompileError(message: string, location?: ShaderPosition | ShaderRange) {\n return ShaderLabUtils.createGSError(\n message,\n GSErrorName.CompilationError,\n this.source,\n location ?? this.getShaderPosition(0)\n );\n }\n\n private _scanWord(start: ShaderPosition): BaseToken | null {\n // Scan the complete word first\n while (BaseLexer.isAlnum(this.getCurCharCode()) && !this.isEnd()) {\n this.advance(1);\n }\n const end = this.getShaderPosition(0);\n\n // Validate both boundaries in one optimized call\n if (!this._validateWordBoundaries(start.index, end.index)) {\n return null; // Invalid word due to boundary violation\n }\n\n const lexeme = this._source.substring(start.index, end.index);\n const tokenType = SourceLexer._keywordLexemeTable[lexeme] ?? ETokenType.ID;\n const range = ShaderLab.createRange(start, end);\n const token = BaseToken.pool.get();\n token.set(tokenType, lexeme, range);\n return token;\n }\n\n private _validateWordBoundaries(startIndex: number, endIndex: number): boolean {\n const source = this._source;\n\n // Check previous boundary\n if (startIndex > 0) {\n const prevCharCode = source.charCodeAt(startIndex - 1);\n if (!this._isValidWordBoundary(prevCharCode)) {\n return false;\n }\n }\n\n // Check next boundary\n if (endIndex < source.length) {\n const nextCharCode = source.charCodeAt(endIndex);\n if (!this._isValidWordBoundary(nextCharCode)) {\n return false;\n }\n }\n\n return true;\n }\n\n private _isValidWordBoundary(charCode: number): boolean {\n return BaseLexer.isWhiteSpaceChar(charCode, true) || SourceLexer._isWordSeparatorChar(charCode);\n }\n}\n","import {\n BlendFactor,\n BlendOperation,\n Color,\n CompareFunction,\n CullMode,\n Logger,\n RenderQueueType,\n RenderStateElementKey,\n StencilOperation\n} from \"@galacean/engine\";\nimport { IRenderStates, IShaderPassSource, IShaderSource, IStatement, ISubShaderSource } from \"@galacean/engine-design\";\nimport { ETokenType, ShaderPosition, ShaderRange } from \"../common\";\nimport { BaseToken } from \"../common/BaseToken\";\nimport { SymbolTableStack } from \"../common/SymbolTableStack\";\nimport { GSErrorName } from \"../GSError\";\n// #if _VERBOSE\nimport { GSError } from \"../GSError\";\n// #endif\nimport { BaseLexer } from \"../common/BaseLexer\";\nimport { Keyword } from \"../common/enums/Keyword\";\nimport { SymbolTable } from \"../common/SymbolTable\";\nimport { ShaderLabUtils } from \"../ShaderLabUtils\";\nimport { ShaderSourceFactory } from \"./ShaderSourceFactory\";\nimport { ShaderSourceSymbol } from \"./ShaderSourceSymbol\";\nimport SourceLexer from \"./SourceLexer\";\n\n/**\n * @internal\n */\nexport class ShaderSourceParser {\n static readonly errors = new Array<GSError>();\n\n private static _renderStateConstMap = <Record<string, Record<string, number | string | boolean>>>{\n RenderQueueType,\n CompareFunction,\n StencilOperation,\n BlendOperation,\n BlendFactor,\n CullMode\n };\n private static _symbolTableStack = new SymbolTableStack<ShaderSourceSymbol, SymbolTable<ShaderSourceSymbol>>();\n private static _lexer = new SourceLexer();\n private static _lookupSymbol = new ShaderSourceSymbol(\"\", null);\n\n static parse(sourceCode: string): IShaderSource {\n const startTime = performance.now();\n\n // Clear previous data\n this.errors.length = 0;\n this._symbolTableStack.clear();\n this._pushScope();\n\n const lexer = this._lexer;\n lexer.setSource(sourceCode);\n\n const shaderSource = this._parseShader(lexer);\n\n const shaderPendingContents = shaderSource.pendingContents;\n const shaderRenderStates = shaderSource.renderStates;\n for (let i = 0, n = shaderSource.subShaders.length; i < n; i++) {\n const subShader = shaderSource.subShaders[i];\n const curSubShaderGlobalStatements = shaderPendingContents.concat(subShader.pendingContents);\n const constMap = { ...shaderRenderStates.constantMap, ...subShader.renderStates.constantMap };\n const variableMap = { ...shaderRenderStates.variableMap, ...subShader.renderStates.variableMap };\n\n for (let j = 0, m = subShader.passes.length; j < m; j++) {\n const pass = subShader.passes[j];\n Object.assign(pass.renderStates.constantMap, constMap);\n Object.assign(pass.renderStates.variableMap, variableMap);\n if (pass.isUsePass) continue;\n const passGlobalStatements = curSubShaderGlobalStatements.concat(pass.pendingContents);\n pass.contents = passGlobalStatements.map((item) => item.content).join(\"\\n\");\n }\n }\n\n Logger.info(`[Task - Source compilation] cost time ${performance.now() - startTime}ms`);\n return shaderSource;\n }\n\n private static _parseShader(lexer: SourceLexer): IShaderSource {\n // Parse shader header\n lexer.scanLexeme(\"Shader\");\n const name = lexer.scanPairedChar('\"', '\"', false, false);\n const shaderSource = ShaderSourceFactory.createShaderSource(name);\n lexer.scanLexeme(\"{\");\n\n let braceLevel = 1;\n lexer.skipCommentsAndSpace();\n let start = lexer.getShaderPosition(0);\n\n const { pendingContents } = shaderSource;\n while (true) {\n const token = lexer.scanToken();\n switch (token.type) {\n case Keyword.GSSubShader:\n this._addPendingContents(start, token.lexeme.length, pendingContents);\n const subShader = this._parseSubShader();\n shaderSource.subShaders.push(subShader);\n start = lexer.getShaderPosition(0);\n break;\n case Keyword.GSEditorProperties:\n case Keyword.GSEditorMacros:\n case Keyword.GSEditor:\n this._addPendingContents(start, token.lexeme.length, pendingContents);\n lexer.scanPairedChar(\"{\", \"}\", true, false);\n start = lexer.getShaderPosition(0);\n break;\n case Keyword.LeftBrace:\n ++braceLevel;\n break;\n case Keyword.RightBrace:\n if (--braceLevel === 0) {\n this._addPendingContents(start, token.lexeme.length, pendingContents);\n this._popScope();\n return shaderSource;\n }\n break;\n default:\n start = this._parseRenderState(token, start, pendingContents, shaderSource.renderStates);\n }\n }\n }\n\n private static _parseRenderStateDeclarationOrAssignment(renderStates: IRenderStates, stateToken: BaseToken): void {\n const lexer = this._lexer;\n const token = lexer.scanToken();\n if (token.type === ETokenType.ID) {\n // Declaration\n lexer.scanLexeme(\"{\");\n const renderState = this._parseRenderStateProperties(stateToken.lexeme);\n const symbol = new ShaderSourceSymbol(token.lexeme, stateToken.type, renderState);\n this._symbolTableStack.insert(symbol);\n } else if (token.lexeme === \"=\") {\n // Assignment\n const variable = lexer.scanToken();\n\n lexer.scanLexeme(\";\");\n const lookupSymbol = this._lookupSymbol;\n lookupSymbol.set(variable.lexeme, stateToken.type);\n const sm = this._symbolTableStack.lookup(lookupSymbol);\n if (!sm?.value) {\n this._createCompileError(`Invalid \"${stateToken.lexeme}\" variable: ${variable.lexeme}`, variable.location);\n // #if _VERBOSE\n return;\n // #endif\n }\n const renderState = sm.value as IRenderStates;\n Object.assign(renderStates.constantMap, renderState.constantMap);\n Object.assign(renderStates.variableMap, renderState.variableMap);\n return;\n }\n }\n\n private static _parseVariableDeclaration(): void {\n const lexer = this._lexer;\n const token = lexer.scanToken();\n lexer.scanLexeme(\";\");\n const symbol = new ShaderSourceSymbol(token.lexeme, token.type);\n this._symbolTableStack.insert(symbol);\n }\n\n private static _pushScope(): void {\n const symbolTable = new SymbolTable<ShaderSourceSymbol>();\n this._symbolTableStack.pushScope(symbolTable);\n }\n\n private static _popScope(): void {\n this._symbolTableStack.popScope();\n }\n\n private static _parseRenderStateProperties(state: string): IRenderStates {\n const lexer = this._lexer;\n const renderStates = ShaderSourceFactory.createRenderStates();\n while (lexer.getCurChar() !== \"}\") {\n this._parseRenderStateProperty(state, renderStates);\n lexer.skipCommentsAndSpace();\n }\n lexer.advance(1);\n return renderStates;\n }\n\n private static _createCompileError(message: string, location?: ShaderPosition | ShaderRange): void {\n const error = this._lexer.createCompileError(message, location);\n // #if _VERBOSE\n this.errors.push(<GSError>error);\n // #endif\n }\n\n private static _parseRenderStateProperty(stateLexeme: string, out: IRenderStates): void {\n const lexer = this._lexer;\n const propertyToken = lexer.scanToken();\n const propertyLexeme = propertyToken.lexeme;\n let stateElementKey = propertyLexeme;\n if (stateLexeme === \"BlendState\" && propertyLexeme !== \"BlendColor\" && propertyLexeme !== \"AlphaToCoverage\") {\n let keyIndex = 0;\n const scannedLexeme = lexer.scanTwoExpectedLexemes(\"[\", \"=\");\n if (scannedLexeme === \"[\") {\n keyIndex = lexer.scanNumber();\n lexer.scanLexeme(\"]\");\n lexer.scanLexeme(\"=\");\n } else if (scannedLexeme !== \"=\") {\n this._createCompileError(`Invalid syntax, expect '[' or '=', but got unexpected token`);\n // #if _VERBOSE\n lexer.scanToCharacter(\";\");\n return;\n // #endif\n }\n stateElementKey += keyIndex;\n } else {\n lexer.scanLexeme(\"=\");\n }\n\n const renderStateElementKey = RenderStateElementKey[stateLexeme + stateElementKey];\n if (renderStateElementKey === undefined) {\n this._createCompileError(`Invalid render state property ${propertyLexeme}`);\n // #if _VERBOSE\n lexer.scanToCharacter(\";\");\n return;\n // #endif\n }\n\n lexer.skipCommentsAndSpace();\n let propertyValue: number | string | boolean | Color;\n\n const curCharCode = lexer.getCurCharCode();\n if (BaseLexer.isDigit(curCharCode) || curCharCode === 46) {\n // Digit or '.'\n propertyValue = lexer.scanNumber();\n } else {\n const valueToken = lexer.scanToken();\n const valueTokenType = valueToken.type;\n\n if (valueTokenType === Keyword.True) {\n propertyValue = true;\n } else if (valueTokenType === Keyword.False) {\n propertyValue = false;\n } else if (valueTokenType === Keyword.GSColor) {\n propertyValue = lexer.scanColor();\n } else if (lexer.getCurChar() === \".\") {\n lexer.advance(1);\n const constValueToken = lexer.scanToken();\n propertyValue = this._renderStateConstMap[valueToken.lexeme]?.[constValueToken.lexeme];\n if (propertyValue == undefined) {\n this._createCompileError(\n `Invalid engine constant: ${valueToken.lexeme}.${constValueToken.lexeme}`,\n constValueToken.location\n );\n // #if _VERBOSE\n lexer.scanToCharacter(\";\");\n return;\n // #endif\n }\n } else {\n propertyValue = valueToken.lexeme;\n const lookupSymbol = this._lookupSymbol;\n lookupSymbol.set(valueToken.lexeme, ETokenType.ID);\n if (!this._symbolTableStack.lookup(lookupSymbol)) {\n this._createCompileError(`Invalid ${stateLexeme} variable: ${valueToken.lexeme}`, valueToken.location);\n // #if _VERBOSE\n lexer.scanToCharacter(\";\");\n return;\n // #endif\n }\n }\n }\n lexer.scanLexeme(\";\");\n if (typeof propertyValue === \"string\") {\n out.variableMap[renderStateElementKey] = propertyValue;\n } else {\n out.constantMap[renderStateElementKey] = propertyValue;\n }\n }\n\n private static _parseRenderQueueDeclarationOrAssignment(renderStates: IRenderStates): void {\n const lexer = this._lexer;\n const token = lexer.scanToken();\n if (token.type === ETokenType.ID) {\n // Declaration\n lexer.scanLexeme(\";\");\n const symbol = new ShaderSourceSymbol(token.lexeme, Keyword.GSRenderQueueType);\n this._symbolTableStack.insert(symbol);\n return;\n }\n\n if (token.lexeme !== \"=\") {\n this._createCompileError(`Invalid syntax, expect character '=', but got ${token.lexeme}`, token.location);\n // #if _VERBOSE\n return;\n // #endif\n }\n const word = lexer.scanToken();\n lexer.scanLexeme(\";\");\n const value = this._renderStateConstMap.RenderQueueType[word.lexeme];\n const key = RenderStateElementKey.RenderQueueType;\n if (value == undefined) {\n renderStates.variableMap[key] = word.lexeme;\n const lookupSymbol = this._lookupSymbol;\n lookupSymbol.set(word.lexeme, Keyword.GSRenderQueueType);\n const sm = this._symbolTableStack.lookup(lookupSymbol);\n if (!sm) {\n this._createCompileError(`Invalid RenderQueueType variable: ${word.lexeme}`, word.location);\n // #if _VERBOSE\n return;\n // #endif\n }\n } else {\n renderStates.constantMap[key] = value;\n }\n }\n\n private static _addPendingContents(\n start: ShaderPosition,\n backOffset: number,\n outPendingContents: IStatement[]\n ): void {\n const lexer = this._lexer;\n if (lexer.hasPendingContent) {\n const endIndex = lexer.currentIndex - backOffset;\n outPendingContents.push({\n range: { start, end: { ...lexer.getShaderPosition(0), index: endIndex - 1 } },\n content: lexer.source.substring(start.index, endIndex - 1)\n });\n lexer.hasPendingContent = false;\n }\n }\n\n private static _parseSubShader(): ISubShaderSource {\n const lexer = this._lexer;\n this._pushScope();\n\n let braceLevel = 1;\n const name = lexer.scanPairedChar('\"', '\"', false, false);\n const subShaderSource = ShaderSourceFactory.createSubShaderSource(name);\n lexer.scanLexeme(\"{\");\n\n lexer.skipCommentsAndSpace();\n let start = lexer.getShaderPosition(0);\n\n while (true) {\n const token = lexer.scanToken();\n switch (token.type) {\n case Keyword.GSPass:\n this._addPendingContents(start, token.lexeme.length, subShaderSource.pendingContents);\n const pass = this._parsePass();\n subShaderSource.passes.push(pass);\n start = lexer.getShaderPosition(0);\n break;\n case Keyword.GSUsePass:\n this._addPendingContents(start, token.lexeme.length, subShaderSource.pendingContents);\n const name = lexer.scanPairedChar('\"', '\"', false, false);\n subShaderSource.passes.push(ShaderSourceFactory.createUsePass(name));\n start = lexer.getShaderPosition(0);\n break;\n case Keyword.LeftBrace:\n ++braceLevel;\n break;\n case Keyword.RightBrace:\n if (--braceLevel === 0) {\n this._addPendingContents(start, token.lexeme.length, subShaderSource.pendingContents);\n this._popScope();\n return subShaderSource;\n }\n break;\n default:\n start = this._parseRenderStateAndTags(\n token,\n start,\n subShaderSource.pendingContents,\n subShaderSource.renderStates,\n subShaderSource.tags\n );\n }\n }\n }\n\n private static _parseTags(tags: Record<string, number | string | boolean>): void {\n const lexer = this._lexer;\n lexer.scanLexeme(\"{\");\n while (true) {\n const ident = lexer.scanToken();\n lexer.scanLexeme(\"=\");\n const value = lexer.scanPairedChar('\"', '\"', false, false);\n lexer.skipCommentsAndSpace();\n\n tags[ident.lexeme] = value;\n\n if (lexer.peek(1) === \"}\") {\n lexer.advance(1);\n return;\n }\n lexer.scanLexeme(\",\");\n }\n }\n\n private static _parsePass(): IShaderPassSource {\n this._pushScope();\n const lexer = this._lexer;\n\n const name = lexer.scanPairedChar('\"', '\"', false, false);\n const passSource = ShaderSourceFactory.createShaderPassSource(name);\n lexer.scanLexeme(\"{\");\n let braceLevel = 1;\n\n lexer.skipCommentsAndSpace();\n let start = lexer.getShaderPosition(0);\n\n while (true) {\n const token = lexer.scanToken();\n switch (token.type) {\n case Keyword.GSVertexShader:\n case Keyword.GSFragmentShader:\n this._addPendingContents(start, token.lexeme.length, passSource.pendingContents);\n lexer.scanLexeme(\"=\");\n const entry = lexer.scanToken();\n if (passSource[token.lexeme]) {\n const error = ShaderLabUtils.createGSError(\n \"Reassign main entry\",\n GSErrorName.CompilationError,\n lexer.source,\n lexer.getShaderPosition(0)\n );\n // #if _VERBOSE\n Logger.error(error.toString());\n throw error;\n // #endif\n }\n const key = token.type === Keyword.GSVertexShader ? \"vertexEntry\" : \"fragmentEntry\";\n passSource[key] = entry.lexeme;\n lexer.scanLexeme(\";\");\n start = lexer.getShaderPosition(0);\n break;\n case Keyword.LeftBrace:\n ++braceLevel;\n break;\n case Keyword.RightBrace:\n if (--braceLevel === 0) {\n this._addPendingContents(start, token.lexeme.length, passSource.pendingContents);\n this._popScope();\n return passSource;\n }\n break;\n default:\n start = this._parseRenderStateAndTags(\n token,\n start,\n passSource.pendingContents,\n passSource.renderStates,\n passSource.tags\n );\n }\n }\n }\n\n private static _parseRenderStateAndTags(\n token: BaseToken<number>,\n start: ShaderPosition,\n outGlobalContents: IStatement[],\n outRenderStates: IRenderStates,\n outTags: Record<string, number | string | boolean>\n ): ShaderPosition {\n switch (token.type) {\n case Keyword.GSTags:\n this._addPendingContents(start, token.lexeme.length, outGlobalContents);\n this._parseTags(outTags);\n start = this._lexer.getShaderPosition(0);\n break;\n default:\n start = this._parseRenderState(token, start, outGlobalContents, outRenderStates);\n }\n return start;\n }\n\n private static _parseRenderState(\n token: BaseToken<number>,\n start: ShaderPosition,\n outGlobalContents: IStatement[],\n outRenderStates: IRenderStates\n ): ShaderPosition {\n switch (token.type) {\n case Keyword.GSBlendState:\n case Keyword.GSDepthState:\n case Keyword.GSRasterState:\n case Keyword.GSStencilState:\n this._addPendingContents(start, token.lexeme.length, outGlobalContents);\n this._parseRenderStateDeclarationOrAssignment(outRenderStates, token);\n start = this._lexer.getShaderPosition(0);\n break;\n case Keyword.GSBlendFactor:\n case Keyword.GSBlendOperation:\n case Keyword.GSBool:\n case Keyword.GSNumber:\n case Keyword.GSColor:\n case Keyword.GSCompareFunction:\n case Keyword.GSStencilOperation:\n case Keyword.GSCullMode:\n this._addPendingContents(start, token.lexeme.length, outGlobalContents);\n this._parseVariableDeclaration();\n start = this._lexer.getShaderPosition(0);\n break;\n case Keyword.GSRenderQueueType:\n this._addPendingContents(start, token.lexeme.length, outGlobalContents);\n this._parseRenderQueueDeclarationOrAssignment(outRenderStates);\n start = this._lexer.getShaderPosition(0);\n break;\n default:\n // Unrecognized tokens are defined as pending content\n this._lexer.hasPendingContent = true;\n }\n return start;\n }\n}\n","import { Logger, ShaderMacro, ShaderLanguage } from \"@galacean/engine\";\nimport { IShaderLab, IShaderSource } from \"@galacean/engine-design\";\nimport { IShaderProgramSource } from \"@galacean/engine-design/types/shader-lab/IShaderProgramSource\";\nimport { GLES100Visitor, GLES300Visitor } from \"./codeGen\";\nimport { ShaderPosition, ShaderRange } from \"./common\";\nimport { Lexer } from \"./lexer\";\nimport { MacroParser } from \"./macroProcessor/MacroParser\";\nimport { ShaderTargetParser } from \"./parser\";\nimport { Preprocessor } from \"./Preprocessor\";\nimport { ShaderLabUtils } from \"./ShaderLabUtils\";\nimport { ShaderSourceParser } from \"./sourceParser/ShaderSourceParser\";\n\nexport class ShaderLab implements IShaderLab {\n private static _parser = ShaderTargetParser.create();\n private static _shaderPositionPool = ShaderLabUtils.createObjectPool(ShaderPosition);\n private static _shaderRangePool = ShaderLabUtils.createObjectPool(ShaderRange);\n\n // #if _VERBOSE\n static _processingPassText?: string;\n // #endif\n\n static createPosition(index: number, line?: number, column?: number): ShaderPosition {\n const position = this._shaderPositionPool.get();\n position.set(\n index,\n // #if _VERBOSE\n line,\n column\n // #endif\n );\n return position;\n }\n\n static createRange(start: ShaderPosition, end: ShaderPosition): ShaderRange {\n const range = this._shaderRangePool.get();\n range.set(start, end);\n return range;\n }\n\n _parseShaderSource(sourceCode: string): IShaderSource {\n ShaderLabUtils.clearAllShaderLabObjectPool();\n const shaderSource = ShaderSourceParser.parse(sourceCode);\n\n // #if _VERBOSE\n this._logErrors(ShaderSourceParser.errors);\n // #endif\n\n return shaderSource;\n }\n\n _parseShaderPass(\n source: string,\n vertexEntry: string,\n fragmentEntry: string,\n backend: ShaderLanguage,\n basePathForIncludeKey: string\n ): IShaderProgramSource | undefined {\n const totalStartTime = performance.now();\n const macroDefineList = {};\n Preprocessor._repeatIncludeSet.clear();\n const noIncludeContent = Preprocessor.parse(source, basePathForIncludeKey, macroDefineList);\n Logger.info(`[Task - Pre processor] cost time ${performance.now() - totalStartTime}ms`);\n\n const lexer = new Lexer(noIncludeContent, macroDefineList);\n\n const tokens = lexer.tokenize();\n const { _parser: parser } = ShaderLab;\n\n ShaderLab._processingPassText = noIncludeContent;\n\n const program = parser.parse(tokens, macroDefineList);\n\n // #if _VERBOSE\n this._logErrors(parser.errors);\n // #endif\n\n if (!program) {\n return undefined;\n }\n\n const codeGen = backend === ShaderLanguage.GLSLES100 ? GLES100Visitor.getVisitor() : GLES300Visitor.getVisitor();\n\n const codeGenStartTime = performance.now();\n const ret = codeGen.visitShaderProgram(program, vertexEntry, fragmentEntry);\n Logger.info(`[Task - CodeGen] cost time: ${performance.now() - codeGenStartTime}ms`);\n Logger.info(`[Task - Total compilation] cost time: ${performance.now() - totalStartTime}ms`);\n ShaderLab._processingPassText = undefined;\n\n // #if _VERBOSE\n this._logErrors(codeGen.errors);\n // #endif\n\n return ret;\n }\n\n _parseMacros(content: string, macros: ShaderMacro[]): string {\n const startTime = performance.now();\n const parsedContent = MacroParser.parse(content, macros);\n Logger.info(`[Task - parse macros] cost time: ${performance.now() - startTime}ms`);\n\n // #if _VERBOSE\n this._logErrors(MacroParser._errors);\n // #endif\n\n return parsedContent;\n }\n\n // #if _VERBOSE\n /**\n * @internal\n */\n _logErrors(errors: Error[]) {\n if (errors.length === 0 || !Logger.isEnabled) return;\n Logger.error(`${errors.length} errors occur!`);\n for (const err of errors) {\n Logger.error(err.toString());\n }\n }\n // #endif\n}\n","export { ShaderLab } from \"./ShaderLab\";\n\nexport * from \"./GSError\";\n\n//@ts-ignore\nexport const version = `__buildVersion`;\n\nlet mode = \"Release\";\n// #if _VERBOSE\nmode = \"Verbose\";\n// #endif\n\nconsole.log(`Galacean Engine ShaderLab Version: ${version} | Mode: ${mode}`);\n"],"names":["ShaderRange","set","start","end","dispose","ShaderPosition","index","line","column","ETokenType","TypeAny","Keyword","GSError","name","message","location","file","source","toString","lines","split","diagnosticMessage","lineSplit","wrappingLineCount","i","n","remarkStart","remarkEnd","length","paddingLength","remarkLength","Math","max","repeat","Error","GSErrorName","ShaderLabUtils","createObjectPool","type","pool","ClearableObjectPool","_shaderLabObjectPoolSet","push","clearAllShaderLabObjectPool","clear","createGSError","errorName","BaseToken","lexeme","arg","ShaderLab","createPosition","createRange","EOF","NoneTerminal","Production","goal","derivation","id","_id","Map","EAction","GrammarUtils","isTerminal","sm","START","createProductionWithOptions","options","astTypePool","ret","opt","sa","children","ASTNode","get","TrivialNode","addMapSetItem","map","k","v","Set","add","isSubSet","sb","item","has","isActionEqual","a","b","action","target","printAction","actionInfo","production","printProduction","deriv","gs","join","StateItem","position","lookahead","_needReInfer","lookaheadSet","la","addLookahead","ts","t","needReInfer","symbolByOffset","offset","canReduce","EPSILON","advance","coreItem","Array","from","curSymbol","nextSymbol","State","cores","closured","_stateItemPool","_items","it","itemMapKey","getStateItemMapKey","createStateItem","mapId","newItem","create","cacheKey","getMapKey","state","closureMap","core","newState","items","ParserUtils","unwrapNodeByType","node","child","Token","nt","typeCompatible","ta","tb","undefined","INT","UINT","printStatePool","logPath","output","console","log","count","values","tmp","padEnd","psItem","Preprocessor","parse","basePathForIncludeKey","outMacroDefineList","parseMacro","_parseMacroDefines","replace","_includeReg","_","includeName","_replace","getReferenceSymbolNames","macroDefineList","macroName","out","infos","info","valueType","referencedName","functionCallName","value","params","indexOf","Logger","warn","_isNumber","str","isNaN","Number","_isExist","list","some","e","isFunction","every","p","outMacroList","match","_macroRegex","lastIndex","exec","paramsGroup","paramsStr","valueRaw","trim","filter","Boolean","_symbolReg","test","callMatch","_funcCallReg","arr","_mergeMacroDefineLists","to","src","path","URL","href","substring","ShaderPass","_shaderRootPath","chunk","ShaderLib","error","_repeatIncludeSet","_macroDefineIncludeMap","chunkMacroDefineList","EShaderStage","isGenericType","BuiltinFunctionTable","BuiltinFunction","ident","returnType","scope","args","_returnType","getReturnType","fn","genType","_create","ALL","_createWithScop","getFn","parameterTypes","fnArgs","argLength","found","curFnArg","_realReturnType","isExist","realReturnType","FLOAT","VEC2","VEC3","MAT2","MAT3","MAT4","VEC4","MAT2X3","MAT3X2","MAT2X4","MAT4X2","MAT3X4","MAT4X3","BOOL","IVEC2","IVEC3","SAMPLER2D_SHADOW","SAMPLER_CUBE_SHADOW","SAMPLER2D_ARRAY_SHADOW","SAMPLER2D","SAMPLER2D_ARRAY","SAMPLER_CUBE","FRAGMENT","BuiltinVariableTable","BuiltinVariable","createVariable","getVar","VERTEX","VEC4_ARRAY","SymbolTable","_table","insert","symbol","isInMacroBranch","entry","equal","getSymbol","includeMacro","getSymbols","_getSymbols","SymbolTableStack","stack","_macroLevel","pushScope","popScope","pop","lookup","symbolTable","result","lookupAll","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","parent","GLShaderProgram","SemanticAnalyzer","semanticStack","acceptRule","symbolTableStack","curFunctionInfo","_shaderData","_translationRuleTable","errors","reset","_macroDefineList","addTranslationRule","pid","rule","getTranslationRule","reportError","loc","CompilationError","_processingPassText","reportWarning","CompilationWarn","shaderData","_lookupSymbol","SymbolType","StructProp","mrtIndex","typeInfo","ASTNodeDecorator","nonTerminal","prototype","TreeNode","_location","_children","_parent","init","setCache","code","_codeCache","getCache","codeGen","visitor","defaultCodeGen","semanticAnalyze","_unwrapToken","_ignore","ScopeBrace","scope_brace","ScopeEndBrace","scope_end_brace","JumpStatement","isFragReturnStatement","RETURN","returnStatement","visitJumpStatement","jump_statement","ConditionOpt","conditionopt","ForRestStatement","for_rest_statement","Condition","condition","ForInitStatement","for_init_statement","IterationStatement","iteration_statement","SelectionStatement","selection_statement","ExpressionStatement","expression_statement","ExpressionAstNode","_type","InitializerList","initializer_list","Initializer","initializer","SingleDeclaration","childrenLen","fullyType","visitSingleDeclaration","single_declaration","FullySpecifiedType","fully_specified_type","TypeQualifier","type_qualifier","SingleTypeQualifier","qualifier","single_type_qualifier","BasicTypeQualifier","token","StorageQualifier","storage_qualifier","PrecisionQualifier","precision_qualifier","InterpolationQualifier","interpolation_qualifier","InvariantQualifier","invariant_qualifier","TypeSpecifier","arraySize","firstChild","size","isCustom","type_specifier","ArraySpecifier","integerConstantExpr","array_specifier","IntegerConstantExpressionOperator","operator","PLUS","compute","DASH","STAR","SLASH","PERCENT","integer_constant_expression_operator","IntegerConstantExpression","integer_constant_expression","TypeSpecifierNonArray","tt","type_specifier_nonarray","ExtBuiltinTypeSpecifierNonArray","ext_builtin_type_specifier_nonarray","InitDeclaratorList","childrenLength","initDeclList","init_declarator_list","IdentifierList","idList","curIdList","listIdLength","identifier_list","Declaration","visitDeclaration","declaration","FunctionProtoType","declarator","parameterList","parameterInfoList","function_prototype","FunctionDeclarator","header","function_declarator","FunctionHeader","visitFunctionHeader","function_header","FunctionParameterList","ParameterDeclaration","decl","MacroParamBlock","visitFunctionParameterList","function_parameter_list","MacroParamCaseList","macro_param_case_list","macro_param_block","MacroParameterBranch","macro_parameter_branch","parameterDeclarator","ParameterDeclarator","varSymbol","parameter_declaration","parameter_declarator","SimpleStatement","simple_statement","CompoundStatement","compound_statement","CompoundStatementNoScope","compound_statement_no_scope","Statement","statement","StatementList","visitStatementList","statement_list","FunctionDefinition","statements","VOID","visitFunctionDefinition","function_definition","FunctionCall","visitFunctionCall","function_call","FunctionCallGeneric","fnSymbol","functionIdentifier","isBuiltin","fnIdent","paramList","FunctionCallParameterList","builtinFn","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","AssignmentOperator","assignment_operator","Expression","expression","PrimaryExpression","VariableIdentifier","INT_CONSTANT","FLOAT_CONSTANT","True","False","primary_expression","PostfixExpression","visitPostfixExpression","postfix_expression","UnaryOperator","unary_operator","UnaryExpression","unary_expression","MultiplicativeExpression","multiplicative_expression","AdditiveExpression","additive_expression","ShiftExpression","shift_expression","RelationalExpression","relational_expression","EqualityExpression","equality_expression","AndExpression","and_expression","ExclusiveOrExpression","exclusive_or_expression","InclusiveOrExpression","inclusive_or_expression","LogicalAndExpression","logical_and_expression","LogicalXorExpression","logical_xor_expression","LogicalOrExpression","logical_or_expression","ConditionalExpression","conditional_expression","StructSpecifier","propList","macroExpressions","visitStructSpecifier","struct_specifier","StructDeclarationList","props","struct_declaration_list","StructDeclaration","_typeSpecifier","_declaratorList","macroStructDeclaration","macroProps","LayoutQualifier","prop","declaratorList","declaratorListLength","struct_declaration","MacroStructDeclaration","macro_struct_declaration","MacroStructBranch","lastNode","MacroPopContext","macro_struct_branch","layout_qualifier","StructDeclaratorList","listLength","struct_declarator_list","StructDeclarator","struct_declarator","VariableDeclaration","isStatic","visitGlobalVariableDeclaration","variable_declaration","VariableDeclarationList","variableDeclarations","newVariable","variable_declaration_list","referenceGlobalSymbolNames","_symbols","symbols","needFindNames","referenceSymbolNames","builtinVar","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","VisitorContext","attributeStructs","attributeList","varyingStructs","varyingList","mrtStructs","mrtList","_referencedGlobalMacroASTs","resetAll","_referencedAttributeList","Object","_referencedVaryingList","_referencedMRTList","_referencedGlobals","isAttributeStruct","findIndex","isVaryingStruct","isMRTStruct","referenceAttribute","referenceVarying","referenceMRTProp","referenceGlobal","_passSymbolTable","_singleton","context","TempArray","array","CodeGenVisitor","_tmpArrayPool","return","derivationLength","postExpr","identNode","indexNode","identLexeme","indexLexeme","_reportError","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","macro","_visitGlobalMacroIfStatement","variableDeclaration","GLES100Visitor","propReferenced","find","getVisitor","V3_GL_FragColor","GLES300Visitor","_otherCodeArray","_fragColorVariableRegistered","_registerFragColorVariable","BaseLexer","_currentIndex","_column","_line","_source","setSource","getShaderPosition","backOffset","isEnd","getCurChar","getCurCharCode","charCodeAt","startIndex","skipSpace","includeLineBreak","isWhiteSpaceChar","skipCommentsAndSpace","nextChar","charCode","peek","scanLexeme","throwError","scanTwoExpectedLexemes","lexeme1","lexeme2","pos","msgs","ScannerError","scanPairedChar","left","right","balanced","skipLeading","sourceLength","currentIndex","level","currentChar","isDigit","isAlpha","isAlnum","isPreprocessorStartChar","includeBreak","Lexer","_needScanMacroConditionExpression","tokenize","scanToken","_scanMacroConditionExpression","curCharCode","_scanDirectives","_scanWord","_scanNum","curChar","LEFT_ASSIGN","LEFT_OP","LE_OP","LEFT_ANGLE","RIGHT_ASSIGN","RIGHT_OP","GE_OP","RIGHT_ANGLE","INC_OP","ADD_ASSIGN","DEC_OP","SUB_ASSIGN","EQ_OP","EQUAL","NE_OP","BANG","AND_OP","AMPERSAND","OR_OP","OR_ASSIGN","VERTICAL_BAR","XOR_OP","XOR_ASSIGN","CARET","MUL_ASSIGN","DIV_ASSIGN","MOD_ASSIGN","LEFT_PAREN","RIGHT_PAREN","LEFT_BRACE","RIGHT_BRACE","LEFT_BRACKET","RIGHT_BRACKET","_scanNumAfterDot","DOT","COMMA","COLON","SEMICOLON","TILDE","QUESTION","_scanStringConst","buffer","range","STRING_CONST","_scanFloatSuffix","_scanUtilBreakLine","outBuffer","word","MACRO_DEFINE_EXPRESSION","kt","_lexemeTable","ID","MACRO_CONDITIONAL_EXPRESSION","MACRO_CALL","_scanIntegerSuffix","const","CONST","bool","float","double","DOUBLE","int","uint","break","BREAK","continue","CONTINUE","do","DO","else","ELSE","for","FOR","if","IF","while","WHILE","discard","DISCARD","bvec2","BVEC2","bvec3","BVEC3","bvec4","BVEC4","ivec2","ivec3","ivec4","IVEC4","uvec2","UVEC2","uvec3","UVEC3","uvec4","UVEC4","vec2","vec3","vec4","mat2","mat3","mat4","in","IN","OUT","inout","INOUT","sampler2D","samplerCube","sampler3D","SAMPLER3D","sampler2DShadow","samplerCubeShadow","sampler2DArray","sampler2DArrayShadow","isampler2D","I_SAMPLER2D","isampler3D","I_SAMPLER3D","isamplerCube","I_SAMPLER_CUBE","isampler2DArray","I_SAMPLER2D_ARRAY","usampler2D","U_SAMPLER2D","usampler3D","U_SAMPLER3D","usamplerCube","U_SAMPLER_CUBE","usampler2DArray","U_SAMPLER2D_ARRAY","struct","void","true","false","PRECISION","precise","PRECISE","highp","HIGHP","mediump","MEDIUMP","lowp","LOWP","invariant","INVARIANT","flat","FLAT","smooth","SMOOTH","noperspective","NOPERSPECTIVE","centroid","CENTROID","layout","LAYOUT","LOCATION","MACRO_IF","MACRO_IFDEF","MACRO_IFNDEF","MACRO_ELSE","MACRO_ELIF","MACRO_ENDIF","MACRO_UNDEF","MacroParserToken","MacroParserKeyword","MacroDefine","body","_argsLexemes","_replaceRegex","RegExp","expandFunctionBody","PreprocessorError","m","BlockInfo","sourceFile","rangeInFile","sourceMap","MapRange","sourceBlock","rangeInBlock","generatedLoc","sourceLoc","block","getSourceIndex","generatedIdx","PpSourceMap","mapRanges","addMapRange","mapRange","curRange","rangeContains","MacroParserLexer","blockRange","macroLvl","scanWordsUntilTerminator","terminatorChar","tokens","scanWord","slice","tokenType","_isPpCharacters","ifdef","ifndef","endif","scanQuotedString","contentStart","string_const","scanToChar","char","scanMacroBranchBody","shaderPosition","startLevel","nextDirective","elif","scanPairedBlock","lc","rc","scanRemainMacro","startLvl","directive","peekNonSpace","current","scanInteger","integer","int_constant","scanMacroBody","nextIndex","nextCharCode","valueToken","line_remain","define","undef","defined","PpUtils","expand","segments","startIdx","seg","originSlice","generatedIdxEnd","MacroParser","_reset","_addPredefinedMacro","lexer","_parseDirectives","_expandSegmentsStack","_definedMacros","_errors","macroBody","_parseMacro","_parseDefine","_parseUndef","_parseIfDirective","_getExpandSegments","directiveType","directiveLength","skipMacro","shouldInclude","_parseConstantExpression","macroToken","startsWith","expanded","_expandMacroChunk","_addContentReplace","content","_addEmptyReplace","_processConditionalDirective","scanner","constantExpr","_parseLogicalOrExpression","operand1","_parseLogicalAndExpression","operand2","_parseEqualityExpression","_parseRelationalExpression","includes","_parseShiftExpression","opPos","_parseAdditiveExpression","_parseMulticativeExpression","_parseUnaryExpression","parenExpr","_parseParenthesisExpression","_parseConstant","withParen","isInteger","_parseMacroFunctionArgs","argStart","endIndex","_expandMacroBody","visitedMacros","_expandVisitedMacros","currentVersionId","_expandVersionId","expandedBody","hasExpansion","replacement","newEndIndex","scannerOrFile","sourceRange","macroArgs","macroDefine","delete","macroBodyExpanded","expandedContent","remainingLength","macroContent","convertSourceIndex","LALR1","grammar","firstSetMap","followSetMap","actionTable","gotoTable","_firstSetNTStack","generate","computeFirstSet","buildStateTable","startStateItemCore","productions","startState","_extendState","_closure","newStates","_inferNextState","ns","_extendStateItem","productionList","getProductionList","newLookaheadSet","lastFirstSet","terminalExist","Utils","coreMap","stateActionTable","stateGotoTable","stateItem","Reduce","Accept","_addAction","nextItem","entries","Shift","table","terminal","exist","_computeFirstSetForNT","NT","idx","computingFS","len","curNT","firstSet","isNullableNT","succeedFirstSet","Grammar","startSymbol","unshift","getProductionByID","_ps","gsl","productionAndRules","variable_declaration_statement","AND_ASSIGN","createGrammar","ShaderTargetParser","_traceBackStack","sematicAnalyzer","SematicAnalyzer","performance","now","traceBackStack","nextToken","next","loopCount","reduceProduction","translationRule","nextState","_printStack","generator","curState","ShaderSourceFactory","createRenderStates","constantMap","variableMap","createShaderSource","subShaders","pendingContents","renderStates","createSubShaderSource","passes","tags","createShaderPassSource","createUsePass","isUsePass","ShaderSourceSymbol","other","SourceLexer","hasPendingContent","scanNumber","_scanDigits","scanColor","r","g","Color","wordToken","symbolKeyword","_symbolLexemeTable","scanToCharacter","createCompileError","_validateWordBoundaries","_keywordLexemeTable","prevCharCode","_isValidWordBoundary","_isWordSeparatorChar","RenderQueueType","GSRenderQueueType","BlendState","GSBlendState","DepthState","GSDepthState","StencilState","GSStencilState","RasterState","GSRasterState","EditorProperties","GSEditorProperties","EditorMacros","GSEditorMacros","Editor","GSEditor","Tags","GSTags","VertexShader","GSVertexShader","FragmentShader","GSFragmentShader","SubShader","GSSubShader","Pass","GSPass","BlendFactor","GSBlendFactor","BlendOperation","GSBlendOperation","Bool","GSBool","GSNumber","GSColor","CompareFunction","GSCompareFunction","StencilOperation","GSStencilOperation","CullMode","GSCullMode","UsePass","GSUsePass","LeftBrace","RightBrace","Equal","ShaderSourceParser","sourceCode","startTime","_symbolTableStack","_pushScope","_lexer","shaderSource","_parseShader","shaderPendingContents","shaderRenderStates","subShader","curSubShaderGlobalStatements","concat","constMap","j","pass","assign","passGlobalStatements","contents","braceLevel","_addPendingContents","_parseSubShader","_popScope","_parseRenderState","_parseRenderStateDeclarationOrAssignment","stateToken","renderState","_parseRenderStateProperties","variable","_createCompileError","_parseVariableDeclaration","_parseRenderStateProperty","stateLexeme","propertyToken","propertyLexeme","stateElementKey","keyIndex","scannedLexeme","renderStateElementKey","RenderStateElementKey","propertyValue","valueTokenType","constValueToken","_renderStateConstMap","_parseRenderQueueDeclarationOrAssignment","key","outPendingContents","subShaderSource","_parsePass","_parseRenderStateAndTags","_parseTags","passSource","outGlobalContents","outRenderStates","outTags","_parseShaderSource","_logErrors","_parseShaderPass","backend","totalStartTime","noIncludeContent","parser","_parser","program","ShaderLanguage","GLSLES100","codeGenStartTime","_parseMacros","parsedContent","isEnabled","err","_shaderPositionPool","_shaderRangePool","version","mode"],"mappings":"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"}
|