@galacean/engine-shaderlab 1.6.0-alpha.2 → 1.6.0-beta.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 +6325 -4885
- 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 +5956 -4985
- 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 +6325 -4885
- package/dist/main.js.map +1 -1
- package/dist/main.verbose.js +5956 -4985
- package/dist/main.verbose.js.map +1 -1
- package/dist/module.js +6325 -4887
- package/dist/module.js.map +1 -1
- package/dist/module.verbose.js +5958 -4986
- package/dist/module.verbose.js.map +1 -1
- package/package.json +4 -4
- package/types/GSError.d.ts +2 -1
- package/types/ParserUtils.d.ts +1 -1
- package/types/Preprocessor.d.ts +31 -0
- package/types/ShaderLab.d.ts +15 -1
- package/types/codeGen/CodeGenVisitor.d.ts +1 -2
- package/types/codeGen/GLES100.d.ts +4 -8
- package/types/codeGen/GLES300.d.ts +9 -6
- package/types/codeGen/types.d.ts +2 -2
- package/types/common/BaseLexer.d.ts +2 -0
- package/types/common/IBaseSymbol.d.ts +5 -0
- package/types/common/SymbolTable.d.ts +7 -0
- package/types/common/SymbolTableStack.d.ts +13 -0
- package/types/common/enums/Keyword.d.ts +108 -0
- package/types/common/index.d.ts +1 -1
- package/types/common/types.d.ts +4 -5
- package/types/index.d.ts +0 -1
- package/types/lalr/CFG.d.ts +1 -1
- package/types/lexer/Lexer.d.ts +10 -5
- package/types/{preprocessor → macroProcessor}/MacroDefine.d.ts +2 -2
- package/types/macroProcessor/MacroParserLexer.d.ts +32 -0
- package/types/macroProcessor/Utils.d.ts +5 -0
- package/types/{preprocessor → macroProcessor}/constants.d.ts +4 -6
- package/types/macroProcessor/index.d.ts +1 -0
- package/types/parser/AST.d.ts +124 -23
- package/types/parser/GrammarSymbol.d.ts +21 -1
- package/types/parser/ShaderInfo.d.ts +4 -2
- package/types/parser/ShaderTargetParser.d.ts +3 -2
- package/types/parser/builtin/functions.d.ts +2 -1
- package/types/parser/builtin/variables.d.ts +1 -1
- package/types/parser/symbolTable/SymbolInfo.d.ts +12 -8
- package/types/parser/symbolTable/index.d.ts +1 -1
- package/types/parser/types.d.ts +7 -6
- package/types/sourceParser/ShaderSourceFactory.d.ts +8 -0
- package/types/sourceParser/ShaderSourceSymbol.d.ts +10 -0
- package/types/sourceParser/SourceLexer.d.ts +19 -0
- package/types/sourceParser/index.d.ts +1 -0
- package/types/common/BaseScanner.d.ts +0 -2
- package/types/common/BaseSymbolTable.d.ts +0 -18
- package/types/common/Keywords.d.ts +0 -99
- package/types/contentParser/ContentSymbolTable.d.ts +0 -10
- package/types/contentParser/KeywordMap.d.ts +0 -2
- package/types/contentParser/Scanner.d.ts +0 -10
- package/types/contentParser/index.d.ts +0 -1
- package/types/lexer/Utils.d.ts +0 -7
- package/types/parser/symbolTable/TargetSymbolTable.d.ts +0 -13
- package/types/preprocessor/PpScanner.d.ts +0 -51
- package/types/preprocessor/Preprocessor.d.ts +0 -1
- package/types/preprocessor/Utils.d.ts +0 -10
- package/types/preprocessor/index.d.ts +0 -1
- /package/types/common/{Enums.d.ts → enums/ShaderStage.d.ts} +0 -0
- /package/types/{preprocessor/PpParser.d.ts → macroProcessor/MacroParser.d.ts} +0 -0
- /package/types/{preprocessor → macroProcessor}/sourceMap/index.d.ts +0 -0
- /package/types/{contentParser/ShaderContentParser.d.ts → sourceParser/ShaderSourceParser.d.ts} +0 -0
package/dist/browser.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"browser.js","sources":["../../../node_modules/.pnpm/@swc+helpers@0.5.15/node_modules/@swc/helpers/esm/_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/tslib@2.8.1/node_modules/tslib/tslib.es6.mjs","../src/common/ShaderRange.ts","../src/common/ShaderPosition.ts","../src/common/Keywords.ts","../src/common/types.ts","../../../node_modules/.pnpm/@swc+helpers@0.5.15/node_modules/@swc/helpers/esm/_instanceof.js","../src/ShaderLabUtils.ts","../src/common/BaseToken.ts","../src/lexer/Utils.ts","../../../node_modules/.pnpm/@swc+helpers@0.5.15/node_modules/@swc/helpers/esm/_create_class.js","../src/GSError.ts","../src/common/BaseScanner.ts","../src/lexer/Lexer.ts","../src/lalr/types.ts","../src/parser/ShaderInfo.ts","../src/parser/symbolTable/SymbolDataType.ts","../src/parser/symbolTable/SymbolInfo.ts","../src/parser/symbolTable/FnSymbol.ts","../src/parser/symbolTable/StructSymbol.ts","../src/common/BaseSymbolTable.ts","../src/parser/symbolTable/TargetSymbolTable.ts","../src/parser/symbolTable/VarSymbol.ts","../src/parser/SemanticAnalyzer.ts","../src/parser/GrammarSymbol.ts","../src/lalr/Production.ts","../src/parser/Grammar.ts","../src/parser/types.ts","../src/parser/AST.ts","../src/lalr/Utils.ts","../src/lalr/CFG.ts","../src/lalr/StateItem.ts","../src/lalr/State.ts","../src/lalr/LALR1.ts","../src/parser/ShaderTargetParser.ts","../../../node_modules/.pnpm/@swc+helpers@0.5.15/node_modules/@swc/helpers/esm/_type_of.js","../src/preprocessor/MacroDefine.ts","../src/preprocessor/constants.ts","../src/preprocessor/Utils.ts","../src/preprocessor/PpScanner.ts","../src/preprocessor/PpParser.ts","../src/preprocessor/Preprocessor.ts","../src/ParserUtils.ts","../src/codeGen/VisitorContext.ts","../src/TempArray.ts","../src/codeGen/CodeGenVisitor.ts","../src/common/Enums.ts","../src/codeGen/GLESVisitor.ts","../src/codeGen/GLES100.ts","../src/codeGen/GLES300.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/_extends.js","../src/contentParser/KeywordMap.ts","../src/contentParser/Scanner.ts","../src/contentParser/ContentSymbolTable.ts","../src/contentParser/ShaderContentParser.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","/******************************************************************************\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","export enum EKeyword {\n ATTRIBUTE = 0,\n CONST,\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 TRUE,\n FALSE,\n PRECISION,\n PRECISE,\n HIGHP,\n MEDIUMP,\n LOWP,\n INVARIANT,\n SMOOTH,\n FLAT,\n NOPERSPECTIVE,\n\n // galacean internals\n GS_RenderQueueType,\n GS_BlendState,\n GS_DepthState,\n GS_StencilState,\n GS_RasterState,\n GS_EditorProperties,\n GS_EditorMacros,\n GS_Editor,\n GS_Tags,\n GS_ReplacementTag,\n GS_LightMode,\n GS_PipelineStage,\n GS_VertexShader,\n GS_FragmentShader,\n GS_SubShader,\n GS_Pass,\n GS_BlendFactor,\n GS_BlendOperation,\n GS_Bool,\n GS_Number,\n GS_Color,\n GS_CompareFunction,\n GS_StencilOperation,\n GS_CullMode,\n GS_UsePass\n}\n","import { EKeyword } from \"./Keywords\";\n\nexport const KeywordTable = new Map<string, EKeyword>([\n [\"attribute\", EKeyword.ATTRIBUTE],\n [\"const\", EKeyword.CONST],\n [\"bool\", EKeyword.BOOL],\n [\"float\", EKeyword.FLOAT],\n [\"double\", EKeyword.DOUBLE],\n [\"int\", EKeyword.INT],\n [\"uint\", EKeyword.UINT],\n [\"break\", EKeyword.BREAK],\n [\"continue\", EKeyword.CONTINUE],\n [\"do\", EKeyword.DO],\n [\"else\", EKeyword.ELSE],\n [\"for\", EKeyword.FOR],\n [\"if\", EKeyword.IF],\n [\"while\", EKeyword.WHILE],\n [\"discard\", EKeyword.DISCARD],\n [\"return\", EKeyword.RETURN],\n [\"bvec2\", EKeyword.BVEC2],\n [\"bvec3\", EKeyword.BVEC3],\n [\"bvec4\", EKeyword.BVEC4],\n [\"ivec2\", EKeyword.IVEC2],\n [\"ivec3\", EKeyword.IVEC3],\n [\"ivec4\", EKeyword.IVEC4],\n [\"uvec2\", EKeyword.UVEC2],\n [\"uvec3\", EKeyword.UVEC3],\n [\"uvec4\", EKeyword.UVEC4],\n [\"vec2\", EKeyword.VEC2],\n [\"vec3\", EKeyword.VEC3],\n [\"vec4\", EKeyword.VEC4],\n [\"mat2\", EKeyword.MAT2],\n [\"mat3\", EKeyword.MAT3],\n [\"mat4\", EKeyword.MAT4],\n [\"in\", EKeyword.IN],\n [\"out\", EKeyword.OUT],\n [\"inout\", EKeyword.INOUT],\n [\"sampler2D\", EKeyword.SAMPLER2D],\n [\"samplerCube\", EKeyword.SAMPLER_CUBE],\n [\"sampler3D\", EKeyword.SAMPLER3D],\n [\"sampler2DShadow\", EKeyword.SAMPLER2D_SHADOW],\n [\"samplerCubeShadow\", EKeyword.SAMPLER_CUBE_SHADOW],\n [\"sampler2DArray\", EKeyword.SAMPLER2D_ARRAY],\n [\"sampler2DArrayShadow\", EKeyword.SAMPLER2D_ARRAY_SHADOW],\n [\"isampler2D\", EKeyword.I_SAMPLER2D],\n [\"isampler3D\", EKeyword.I_SAMPLER3D],\n [\"isamplerCube\", EKeyword.I_SAMPLER_CUBE],\n [\"isampler2DArray\", EKeyword.I_SAMPLER2D_ARRAY],\n [\"usampler2D\", EKeyword.U_SAMPLER2D],\n [\"usampler3D\", EKeyword.U_SAMPLER3D],\n [\"usamplerCube\", EKeyword.U_SAMPLER_CUBE],\n [\"usampler2DArray\", EKeyword.U_SAMPLER2D_ARRAY],\n [\"struct\", EKeyword.STRUCT],\n [\"void\", EKeyword.VOID],\n [\"true\", EKeyword.TRUE],\n [\"false\", EKeyword.FALSE],\n [\"precision\", EKeyword.PRECISION],\n [\"precise\", EKeyword.PRECISE],\n [\"highp\", EKeyword.HIGHP],\n [\"mediump\", EKeyword.MEDIUMP],\n [\"lowp\", EKeyword.LOWP],\n [\"invariant\", EKeyword.INVARIANT],\n [\"flat\", EKeyword.FLAT],\n [\"smooth\", EKeyword.SMOOTH],\n [\"noperspective\", EKeyword.NOPERSPECTIVE],\n [\"centroid\", EKeyword.CENTROID],\n [\"layout\", EKeyword.LAYOUT],\n [\"location\", EKeyword.LOCATION]\n]);\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 NOT_WORD,\n\n /** ε */\n EPSILON = 1998,\n EOF = 1999\n}\n\nexport const TypeAny = 3000;\n\nexport type GalaceanDataType =\n | EKeyword.VOID\n | EKeyword.FLOAT\n | EKeyword.BOOL\n | EKeyword.INT\n | EKeyword.UINT\n | EKeyword.VEC2\n | EKeyword.VEC3\n | EKeyword.VEC4\n | EKeyword.BVEC2\n | EKeyword.BVEC3\n | EKeyword.BVEC4\n | EKeyword.IVEC2\n | EKeyword.IVEC3\n | EKeyword.IVEC4\n | EKeyword.UVEC2\n | EKeyword.UVEC3\n | EKeyword.UVEC4\n | EKeyword.MAT2\n | EKeyword.MAT3\n | EKeyword.MAT4\n | EKeyword.MAT2X3\n | EKeyword.MAT2X4\n | EKeyword.MAT3X2\n | EKeyword.MAT3X4\n | EKeyword.MAT4X2\n | EKeyword.MAT4X3\n | EKeyword.SAMPLER2D\n | EKeyword.SAMPLER3D\n | EKeyword.SAMPLER_CUBE\n | EKeyword.SAMPLER2D_SHADOW\n | EKeyword.SAMPLER_CUBE_SHADOW\n | EKeyword.SAMPLER2D_ARRAY\n | EKeyword.SAMPLER2D_ARRAY_SHADOW\n | EKeyword.I_SAMPLER2D\n | EKeyword.I_SAMPLER3D\n | EKeyword.I_SAMPLER_CUBE\n | EKeyword.I_SAMPLER2D_ARRAY\n | EKeyword.U_SAMPLER2D\n | EKeyword.U_SAMPLER3D\n | EKeyword.U_SAMPLER_CUBE\n | EKeyword.U_SAMPLER2D_ARRAY\n | EKeyword.VEC4_ARRAY\n | typeof TypeAny\n | string;\n\nexport type TokenType = ETokenType | EKeyword;\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","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","export default class LexerUtils {\n static isNum(charCode: number) {\n return charCode >= 48 && charCode <= 57;\n }\n\n static isLetter(charCode: number) {\n return (\n charCode === 95 || // _\n (charCode >= 48 && charCode <= 57) || // 0 - 9\n (charCode >= 65 && charCode <= 90) || // A - Z\n (charCode >= 97 && charCode <= 122) // a - z\n );\n }\n\n static isAlpha(charCode: number) {\n return (\n charCode === 95 || // _\n (charCode >= 65 && charCode <= 90) || // A - Z\n (charCode >= 97 && charCode <= 122) // a - z\n );\n }\n\n static isPpCharacters(charCode: number) {\n return (\n charCode === 35 || // #\n charCode === 95 || // _\n (charCode >= 48 && charCode <= 57) || // 0 - 9\n (charCode >= 65 && charCode <= 90) || // A - Z\n (charCode >= 97 && charCode <= 122) // a - z\n );\n }\n\n static isSpace(charCode: number) {\n return (\n charCode === 9 || // Tab\n charCode === 10 || // Line break - /n\n charCode === 13 || // Carriage return -/r\n charCode === 32 // Space\n );\n }\n}\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","// #if _VERBOSE\nimport { 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 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\n return diagnosticMessage;\n }\n}\n\n// #endif\nexport enum GSErrorName {\n PreprocessorError = \"PreprocessorError\",\n CompilationError = \"CompilationError\",\n ScannerError = \"ScannerError\"\n}\n","import { ETokenType, ShaderRange, ShaderPosition } from \".\";\nimport { GSErrorName } from \"../GSError\";\nimport { ShaderLab } from \"../ShaderLab\";\nimport { BaseToken } from \"./BaseToken\";\nimport { ShaderLabUtils } from \"../ShaderLabUtils\";\nimport { Logger } from \"@galacean/engine\";\n\nexport type OnToken = (token: BaseToken, scanner: BaseScanner) => void;\n\n/**\n * @internal\n */\nexport default class BaseScanner {\n private static _spaceCharsWithBreak = [\" \", \"\\t\", \"\\n\", \"\\r\"];\n private static _spaceChars = [\" \", \"\\t\"];\n private static _checkIsIn(checked: string, chars: string[]): boolean {\n for (let i = 0; i < chars.length; i++) {\n if (checked === chars[i]) {\n return true;\n }\n continue;\n }\n return false;\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 current(): number {\n return this._currentIndex;\n }\n\n get source(): string {\n return this._source;\n }\n\n getCurPosition(): ShaderPosition {\n return ShaderLab.createPosition(\n this._currentIndex,\n // #if _VERBOSE\n this._line,\n this._column\n // #endif\n );\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 protected readonly _keywordsMap: Map<string, number>;\n\n constructor(source: string, kws: Map<string, number> = new Map()) {\n this._source = source;\n this._keywordsMap = kws;\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 = 1): void {\n // #if _VERBOSE\n for (let i = 0; i < count; i++) {\n this._advance();\n }\n // #else\n this._currentIndex += count;\n // #endif\n }\n\n _advance(): void {\n // #if _VERBOSE\n if (this.getCurChar() === \"\\n\") {\n this._line += 1;\n this._column = 0;\n } else {\n this._column += 1;\n }\n // #endif\n\n this._currentIndex++;\n }\n\n skipSpace(includeLineBreak: boolean): void {\n const spaceChars = includeLineBreak ? BaseScanner._spaceCharsWithBreak : BaseScanner._spaceChars;\n let curChar = this.getCurChar();\n\n while (BaseScanner._checkIsIn(curChar, spaceChars)) {\n this._advance();\n curChar = this.getCurChar();\n }\n }\n\n skipCommentsAndSpace(): ShaderRange | undefined {\n this.skipSpace(true);\n if (this.peek(2) === \"//\") {\n const start = this.getCurPosition();\n this.advance(2);\n // single line comments\n let curChar = this.getCurChar();\n while (curChar !== \"\\n\" && curChar !== \"\\r\" && !this.isEnd()) {\n this._advance();\n curChar = this.getCurChar();\n }\n this.skipCommentsAndSpace();\n return ShaderLab.createRange(start, this.getCurPosition());\n } else if (this.peek(2) === \"/*\") {\n const start = this.getCurPosition();\n this.advance(2);\n // multi-line comments\n while (this.peek(2) !== \"*/\" && !this.isEnd()) this._advance();\n this.advance(2);\n this.skipCommentsAndSpace();\n return ShaderLab.createRange(start, this.getCurPosition());\n }\n }\n\n peek(to: number): string {\n const offset = this._currentIndex;\n return this._source.substring(offset, offset + to);\n }\n\n scanText(text: string) {\n this.skipCommentsAndSpace();\n const peek = this.peek(text.length);\n if (peek !== text) {\n this.throwError(this.getCurPosition(), `Expect text \"${text}\", but got \"${peek}\"`);\n }\n this.advance(text.length);\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 scanPairedText(left: string, right: string, balanced = false, skipLeading = false) {\n if (!skipLeading) {\n this.scanText(left);\n }\n const start = this._currentIndex;\n let level = balanced ? 1 : 0;\n while (this.peek(right.length) !== right || level !== 0) {\n if (this.isEnd()) return;\n if (balanced) {\n if (this.peek(left.length) === left) {\n level += 1;\n this.advance(left.length);\n continue;\n } else if (this.peek(right.length) === right) {\n level -= 1;\n if (level === 0) break;\n this.advance(right.length);\n continue;\n }\n }\n this.advance(right.length);\n }\n this.advance(right.length);\n return this._source.substring(start, this._currentIndex - right.length);\n }\n\n scanToken(onToken?: OnToken, splitCharRegex = /\\w/) {\n this.skipCommentsAndSpace();\n const start = this.getCurPosition();\n if (this.isEnd()) return;\n while (splitCharRegex.test(this.getCurChar()) && !this.isEnd()) this._advance();\n const end = this.getCurPosition();\n\n if (start.index === end.index) {\n this._advance();\n const token = BaseToken.pool.get();\n token.set(ETokenType.NOT_WORD, this._source[start.index], start);\n onToken?.(token, this);\n return token;\n }\n\n const lexeme = this._source.substring(start.index, end.index);\n const tokenType = this._keywordsMap.get(lexeme) ?? ETokenType.ID;\n const range = ShaderLab.createRange(start, end);\n const token = BaseToken.pool.get();\n token.set(tokenType, lexeme, range);\n onToken?.(token, this);\n return token;\n }\n}\n","import { ETokenType, KeywordTable } from \"../common\";\nimport { EOF, BaseToken } from \"../common/BaseToken\";\nimport LexerUtils from \"./Utils\";\nimport BaseScanner from \"../common/BaseScanner\";\nimport { ShaderLab } from \"../ShaderLab\";\n\n/**\n * The Lexer of ShaderLab Compiler\n */\nexport class Lexer extends BaseScanner {\n reset(source: string) {\n this._source = source;\n this._currentIndex = 0;\n // #if _VERBOSE\n this._line = this._column = 0;\n // #endif\n }\n\n *tokenize() {\n while (!this.isEnd()) {\n yield this.scanToken();\n }\n return EOF;\n }\n\n override skipSpace() {\n while (LexerUtils.isSpace(this.getCurCharCode())) {\n this._advance();\n }\n }\n\n override scanToken(): BaseToken {\n this.skipCommentsAndSpace();\n if (this.isEnd()) {\n return EOF;\n }\n\n if (LexerUtils.isAlpha(this.getCurCharCode())) {\n return this._scanWord();\n }\n if (LexerUtils.isNum(this.getCurCharCode())) {\n return this._scanNum();\n }\n\n const start = this._getPosition();\n const token = BaseToken.pool.get();\n let curChar: string;\n\n switch (this.getCurChar()) {\n case \"<\":\n this._advance();\n curChar = this.getCurChar();\n if (curChar === \"<\") {\n this._advance();\n if (this.getCurChar() === \"=\") {\n this._advance();\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();\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();\n curChar = this.getCurChar();\n if (curChar === \">\") {\n this._advance();\n if (this.getCurChar() === \"=\") {\n this._advance();\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();\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();\n curChar = this.getCurChar();\n if (curChar === \"+\") {\n this._advance();\n token.set(ETokenType.INC_OP, \"++\", start);\n break;\n } else if (curChar === \"=\") {\n this._advance();\n token.set(ETokenType.ADD_ASSIGN, \"+=\", start);\n break;\n }\n token.set(ETokenType.PLUS, \"+\", start);\n break;\n\n case \"-\":\n this._advance();\n curChar = this.getCurChar();\n if (curChar === \"-\") {\n this._advance();\n token.set(ETokenType.DEC_OP, \"--\", start);\n break;\n } else if (curChar === \"=\") {\n this._advance();\n token.set(ETokenType.SUB_ASSIGN, \"-=\", start);\n break;\n }\n token.set(ETokenType.DASH, \"-\", start);\n break;\n\n case \"=\":\n this._advance();\n if (this.getCurChar() === \"=\") {\n this._advance();\n token.set(ETokenType.EQ_OP, \"==\", start);\n break;\n }\n token.set(ETokenType.EQUAL, \"=\", start);\n break;\n\n case \"!\":\n this._advance();\n if (this.getCurChar() === \"=\") {\n this._advance();\n token.set(ETokenType.NE_OP, \"!=\", start);\n break;\n }\n token.set(ETokenType.BANG, \"!\", start);\n break;\n\n case \"&\":\n this._advance();\n curChar = this.getCurChar();\n if (curChar === \"&\") {\n this._advance();\n token.set(ETokenType.AND_OP, \"&&\", start);\n break;\n } else if (curChar === \"=\") {\n this._advance();\n token.set(ETokenType.ADD_ASSIGN, \"&=\", start);\n break;\n }\n token.set(ETokenType.AMPERSAND, \"&\", start);\n break;\n\n case \"|\":\n this._advance();\n curChar = this.getCurChar();\n if (curChar === \"|\") {\n this._advance();\n token.set(ETokenType.OR_OP, \"||\", start);\n break;\n } else if (curChar === \"=\") {\n this._advance();\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();\n curChar = this.getCurChar();\n if (curChar === \"^\") {\n this._advance();\n token.set(ETokenType.XOR_OP, \"^^\", start);\n break;\n } else if (curChar === \"=\") {\n this._advance();\n token.set(ETokenType.XOR_ASSIGN, \"^=\", start);\n break;\n }\n token.set(ETokenType.CARET, \"^\", start);\n break;\n\n case \"*\":\n this._advance();\n if (this.getCurChar() === \"=\") {\n this._advance();\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();\n if (this.getCurChar() === \"=\") {\n this._advance();\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();\n if (this.getCurChar() === \"=\") {\n this._advance();\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();\n\n token.set(ETokenType.LEFT_PAREN, \"(\", start);\n break;\n case \")\":\n this._advance();\n\n token.set(ETokenType.RIGHT_PAREN, \")\", start);\n break;\n case \"{\":\n this._advance();\n\n token.set(ETokenType.LEFT_BRACE, \"{\", start);\n break;\n case \"}\":\n this._advance();\n\n token.set(ETokenType.RIGHT_BRACE, \"}\", start);\n break;\n case \"[\":\n this._advance();\n\n token.set(ETokenType.LEFT_BRACKET, \"[\", start);\n break;\n case \"]\":\n this._advance();\n\n token.set(ETokenType.RIGHT_BRACKET, \"]\", start);\n break;\n case \".\":\n this._advance();\n if (LexerUtils.isNum(this.getCurCharCode())) {\n return this._scanNumAfterDot();\n }\n\n token.set(ETokenType.DOT, \".\", start);\n break;\n case \",\":\n this._advance();\n\n token.set(ETokenType.COMMA, \",\", start);\n break;\n case \":\":\n this._advance();\n\n token.set(ETokenType.COLON, \":\", start);\n return token;\n case \";\":\n this._advance();\n\n token.set(ETokenType.SEMICOLON, \";\", start);\n break;\n case \"~\":\n this._advance();\n\n token.set(ETokenType.TILDE, \"~\", start);\n break;\n case \"?\":\n this._advance();\n\n token.set(ETokenType.QUESTION, \"?\", start);\n break;\n case '\"':\n this._advance();\n return this._scanStringConst();\n\n default:\n this.throwError(this.getCurPosition(), `Unexpected character ${this.getCurChar()}`);\n }\n return token;\n }\n\n private _scanStringConst() {\n const start = this._getPosition();\n const buffer: string[] = [];\n while (this.getCurChar() !== '\"') {\n buffer.push(this.getCurChar());\n this._advance();\n }\n this._advance();\n const range = ShaderLab.createRange(start, this._getPosition());\n\n const token = BaseToken.pool.get();\n token.set(ETokenType.STRING_CONST, buffer.join(\"\"), range);\n return token;\n }\n\n private _scanNumAfterDot() {\n const buffer = [\".\"];\n while (LexerUtils.isNum(this.getCurCharCode())) {\n buffer.push(this.getCurChar());\n this._advance();\n }\n\n const token = BaseToken.pool.get();\n token.set(ETokenType.FLOAT_CONSTANT, buffer.join(\"\"), this._getPosition(1));\n return token;\n }\n\n private _getPosition(offset /** offset from starting point */ = 0) {\n return ShaderLab.createPosition(\n this.current - offset,\n // #if _VERBOSE\n this._line,\n this._column - offset\n // #endif\n );\n }\n\n private _scanWord() {\n const buffer: string[] = [this.getCurChar()];\n const start = this._getPosition();\n this._advance();\n while (LexerUtils.isLetter(this.getCurCharCode())) {\n buffer.push(this.getCurChar());\n this._advance();\n }\n const word = buffer.join(\"\");\n const kt = KeywordTable.get(word);\n if (kt) {\n const token = BaseToken.pool.get();\n token.set(kt, word, start);\n return token;\n }\n\n const token = BaseToken.pool.get();\n token.set(ETokenType.ID, word, start);\n return token;\n }\n\n private _scanNum() {\n const buffer: string[] = [];\n while (LexerUtils.isNum(this.getCurCharCode())) {\n buffer.push(this.getCurChar());\n this._advance();\n }\n if (this.getCurChar() === \".\") {\n buffer.push(this.getCurChar());\n this._advance();\n while (LexerUtils.isNum(this.getCurCharCode())) {\n buffer.push(this.getCurChar());\n this._advance();\n }\n this._scanFloatSuffix(buffer);\n\n const token = BaseToken.pool.get();\n token.set(ETokenType.FLOAT_CONSTANT, buffer.join(\"\"), this._getPosition(buffer.length));\n return token;\n } else {\n if (this.getCurChar() === \"e\" || this.getCurChar() === \"E\") {\n this._scanFloatSuffix(buffer);\n\n const token = BaseToken.pool.get();\n token.set(ETokenType.FLOAT_CONSTANT, buffer.join(\"\"), this._getPosition(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._getPosition(buffer.length));\n return token;\n }\n }\n }\n\n private _scanFloatSuffix(buffer: string[]) {\n if (this.getCurChar() === \"e\" || this.getCurChar() === \"E\") {\n buffer.push(this.getCurChar());\n this._advance();\n if (this.getCurChar() === \"+\" || this.getCurChar() === \"-\") {\n buffer.push(this.getCurChar());\n this._advance();\n }\n if (!LexerUtils.isNum(this.getCurCharCode()))\n this.throwError(this.getCurPosition(), \"lexing error, invalid exponent suffix.\");\n while (LexerUtils.isNum(this.getCurCharCode())) {\n buffer.push(this.getCurChar());\n this._advance();\n }\n }\n if (this.getCurChar() === \"f\" || this.getCurChar() === \"F\") {\n buffer.push(this.getCurChar());\n this._advance();\n }\n }\n\n private _scanIntegerSuffix(buffer: string[]) {\n if (this.getCurChar() === \"u\" || this.getCurChar() === \"U\") {\n buffer.push(this.getCurChar());\n this._advance();\n }\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 { ASTNode } from \"./AST\";\nimport { TargetSymbolTable } from \"../parser/symbolTable\";\n\nexport class ShaderData {\n symbolTable: TargetSymbolTable;\n\n vertexMain: ASTNode.FunctionDefinition;\n fragmentMain: ASTNode.FunctionDefinition;\n\n globalPrecisions: ASTNode.PrecisionSpecifier[] = [];\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/BaseSymbolTable\";\nimport { GalaceanDataType } from \"../../common/types\";\nimport { ASTNode } from \"../AST\";\nimport { SymbolDataType } from \"./SymbolDataType\";\n\nexport enum ESymbolType {\n VAR,\n FN,\n STRUCT\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 readonly ident: string,\n public readonly symbolType: ESymbolType,\n public readonly astNode?: SymbolAstNode,\n public readonly dataType?: SymbolDataType,\n public readonly signature?: GalaceanDataType[]\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 { Logger } from \"@galacean/engine\";\n\nexport interface IBaseSymbol {\n readonly ident: string;\n}\n\n/**\n * The base class of `SymbolTable`\n */\nexport abstract class BaseSymbolTable<T extends IBaseSymbol = IBaseSymbol> {\n protected _table: Map<string, T[]> = new Map();\n\n abstract insert(sm: T): void;\n}\n\nexport class SymbolTableStack<S extends IBaseSymbol, T extends BaseSymbolTable<S>> {\n stack: T[] = [];\n\n get _scope() {\n return this.stack[this.stack.length - 1];\n }\n\n newScope(scope: T) {\n this.stack.push(scope);\n }\n\n clear() {\n this.stack.length = 0;\n }\n\n dropScope() {\n this.stack.pop();\n }\n\n insert(sm: S) {\n this._scope.insert(sm);\n }\n}\n","import { Logger } from \"@galacean/engine\";\nimport { GalaceanDataType, TypeAny } from \"../../common\";\nimport { BaseSymbolTable } from \"../../common/BaseSymbolTable\";\nimport { ASTNode } from \"../AST\";\nimport { FnSymbol } from \"./FnSymbol\";\nimport { StructSymbol } from \"./StructSymbol\";\nimport { ESymbolType, SymbolAstNode, SymbolInfo } from \"./SymbolInfo\";\nimport { VarSymbol } from \"./VarSymbol\";\n\nexport class TargetSymbolTable extends BaseSymbolTable<SymbolInfo> {\n override insert(sm: SymbolInfo): void {\n const entry = this._table.get(sm.ident) ?? [];\n for (let i = 0; i < entry.length; i++) {\n if (this._compareWith(entry[i], sm.symbolType, sm.signature, sm.astNode)) {\n Logger.warn(\"replace symbol:\", sm.ident);\n entry[i] = sm;\n return;\n }\n }\n entry.push(sm);\n this._table.set(sm.ident, entry);\n }\n\n lookup<T extends ESymbolType>(\n ident: string,\n symbolType: T,\n signature?: GalaceanDataType[],\n astNode?: ASTNode.FunctionDefinition\n ): T extends ESymbolType.FN\n ? FnSymbol\n : T extends ESymbolType.STRUCT\n ? StructSymbol\n : T extends ESymbolType.VAR\n ? VarSymbol\n : SymbolInfo {\n const entry = this._table.get(ident);\n if (entry) {\n for (let length = entry.length, i = 0; i < length; i++) {\n const item = entry[i];\n if (this._compareWith(item, symbolType, signature, astNode)) return <any>item;\n }\n }\n }\n\n getAllFnSymbols(fnIdent: string): FnSymbol[] {\n const entries = this._table.get(fnIdent) ?? [];\n return entries.filter((item) => item.symbolType === ESymbolType.FN) as FnSymbol[];\n }\n\n private _compareWith(\n item: SymbolInfo,\n symbolType: ESymbolType,\n signature?: GalaceanDataType[],\n astNode?: SymbolAstNode\n ): boolean {\n if (item.symbolType !== symbolType) return false;\n if (item.symbolType === ESymbolType.FN) {\n if (!astNode && !signature) return true;\n\n const params = (<ASTNode.FunctionDefinition>item.astNode).protoType.paramSig;\n const comparedParams = signature ?? (<ASTNode.FunctionDefinition>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 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 { ShaderRange } from \"../common\";\nimport { ASTNode, TreeNode } from \"./AST\";\nimport { GSErrorName } from \"../GSError\";\nimport { ShaderData } from \"./ShaderInfo\";\nimport { ESymbolType, SymbolInfo, TargetSymbolTable } from \"../parser/symbolTable\";\nimport { NodeChild } from \"./types\";\nimport { SymbolTableStack } from \"../common/BaseSymbolTable\";\nimport { ShaderLab } from \"../ShaderLab\";\nimport { NonGenericGalaceanType } from \"./builtin\";\n// #if _VERBOSE\nimport { GSError } from \"../GSError\";\n// #else\nimport { Logger } from \"@galacean/engine\";\n// #endif\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 semanticStack: TreeNode[] = [];\n acceptRule?: TranslationRule = undefined;\n symbolTableStack: SymbolTableStack<SymbolInfo, TargetSymbolTable> = 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 // #if _VERBOSE\n readonly errors: Error[] = [];\n // #endif\n\n get shaderData() {\n return this._shaderData;\n }\n\n constructor() {\n this.newScope();\n }\n\n reset() {\n this.semanticStack.length = 0;\n this._shaderData = new ShaderData();\n this.symbolTableStack.clear();\n this.newScope();\n // #if _VERBOSE\n this.errors.length = 0;\n // #endif\n }\n\n newScope() {\n const scope = new TargetSymbolTable();\n this.symbolTableStack.newScope(scope);\n }\n\n dropScope() {\n return this.symbolTableStack.dropScope();\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 lookupSymbolBy(\n ident: string,\n symbolType: ESymbolType,\n signature?: NonGenericGalaceanType[],\n astNode?: ASTNode.FunctionDefinition\n ): SymbolInfo | undefined {\n const stack = this.symbolTableStack.stack;\n for (let length = stack.length, i = length - 1; i >= 0; i--) {\n const symbolTable = stack[i];\n const ret = symbolTable.lookup(ident, symbolType, signature, astNode);\n if (ret) return ret;\n }\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","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 _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 { 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","import { NoneTerminal } from \"./GrammarSymbol\";\nimport { BaseToken } from \"../common/BaseToken\";\nimport { GalaceanDataType, ShaderRange } from \"../common\";\nimport { ASTNode, TreeNode } from \"./AST\";\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 ) {}\n}\n\nexport type NodeChild = TreeNode | BaseToken;\n\nexport type IParamInfo = { ident: BaseToken; typeInfo: SymbolType; astNode?: TreeNode };\n","// #if _VERBOSE\nimport { BuiltinFunction, BuiltinVariable, NonGenericGalaceanType } from \"./builtin\";\n// #endif\nimport { ClearableObjectPool, IPoolElement } from \"@galacean/engine\";\nimport { CodeGenVisitor } from \"../codeGen\";\nimport { EKeyword, ETokenType, GalaceanDataType, ShaderRange, TokenType, TypeAny } from \"../common\";\nimport { BaseToken, BaseToken as Token } from \"../common/BaseToken\";\nimport { ParserUtils } from \"../ParserUtils\";\nimport { ShaderLabUtils } from \"../ShaderLabUtils\";\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 _location: ShaderRange;\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 this.init();\n }\n\n init() {}\n\n dispose(): void {}\n\n // Visitor pattern interface for code generation\n codeGen(visitor: CodeGenVisitor) {\n return visitor.defaultCodeGen(this.children);\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 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 Token) {\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.newScope();\n }\n }\n\n @ASTNodeDecorator(NoneTerminal.scope_end_brace)\n export class ScopeEndBrace extends TreeNode {\n override semanticAnalyze(sa: SemanticAnalyzer): void {\n sa.dropScope();\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 === EKeyword.RETURN) {\n sa.curFunctionInfo.returnStatement = this;\n }\n }\n\n override codeGen(visitor: CodeGenVisitor): string {\n return 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 Token;\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 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: EKeyword;\n lexeme: string;\n\n override semanticAnalyze(sa: SemanticAnalyzer): void {\n const child = this.children[0];\n if (child instanceof Token) {\n this.qualifier = child.type as EKeyword;\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: EKeyword;\n lexeme: string;\n\n override semanticAnalyze(sa: SemanticAnalyzer): void {\n const token = this.children[0] as Token;\n this.qualifier = token.type as EKeyword;\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 Token;\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 Token) {\n this.value = Number(child.lexeme);\n }\n // #if _VERBOSE\n else {\n const id = child as VariableIdentifier;\n if (!id.symbolInfo) {\n sa.reportError(id.location, `Undeclared symbol: ${id.lexeme}`);\n }\n if (!ParserUtils.typeCompatible(EKeyword.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 Token) {\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 Token;\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 Token;\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 Token;\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: Token[] = [];\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 Token);\n } else {\n const list = children[0] as IdentifierList;\n const id = children[2] as Token;\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 visitor.visitDeclaration(this);\n }\n }\n\n @ASTNodeDecorator(NoneTerminal.function_prototype)\n export class FunctionProtoType extends TreeNode {\n ident: Token;\n returnType: FullySpecifiedType;\n parameterList: IParamInfo[];\n paramSig: GalaceanDataType[];\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 override codeGen(visitor: CodeGenVisitor): string {\n return visitor.visitFunctionProtoType(this);\n }\n }\n\n @ASTNodeDecorator(NoneTerminal.function_declarator)\n export class FunctionDeclarator extends TreeNode {\n ident: Token;\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: Token;\n returnType: FullySpecifiedType;\n\n override semanticAnalyze(sa: SemanticAnalyzer): void {\n sa.newScope();\n const children = this.children;\n this.ident = children[1] as Token;\n this.returnType = children[0] as FullySpecifiedType;\n }\n\n override codeGen(visitor: CodeGenVisitor): string {\n return 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 childrenLength = children.length;\n const { parameterInfoList, paramSig } = this;\n if (childrenLength === 1) {\n const decl = children[0] as ParameterDeclaration;\n parameterInfoList.push({ ident: decl.ident, typeInfo: decl.typeInfo, astNode: decl });\n paramSig.push(decl.typeInfo.type);\n } else {\n const list = children[0] as FunctionParameterList;\n const decl = children[2] as ParameterDeclaration;\n const listParamLength = list.parameterInfoList.length;\n parameterInfoList.length = listParamLength + 1;\n paramSig.length = listParamLength + 1;\n\n for (let i = 0; i < listParamLength; i++) {\n parameterInfoList[i] = list.parameterInfoList[i];\n paramSig[i] = list.paramSig[i];\n }\n parameterInfoList[listParamLength] = { ident: decl.ident, typeInfo: decl.typeInfo, astNode: decl };\n paramSig[listParamLength] = decl.typeInfo.type;\n }\n }\n\n override codeGen(visitor: CodeGenVisitor): string {\n return visitor.visitFunctionParameterList(this);\n }\n }\n\n @ASTNodeDecorator(NoneTerminal.parameter_declaration)\n export class ParameterDeclaration extends TreeNode {\n typeQualifier: TypeQualifier | undefined;\n typeInfo: SymbolType;\n ident: Token;\n\n override init(): void {\n this.typeQualifier = undefined;\n }\n\n override semanticAnalyze(sa: SemanticAnalyzer): void {\n const children = this.children;\n const childrenLength = children.length;\n let parameterDeclarator: ParameterDeclarator;\n if (childrenLength === 1) {\n parameterDeclarator = children[0] as ParameterDeclarator;\n } else {\n parameterDeclarator = children[1] as ParameterDeclarator;\n }\n if (childrenLength === 2) {\n this.typeQualifier = children[0] as TypeQualifier;\n }\n this.typeInfo = parameterDeclarator.typeInfo;\n this.ident = parameterDeclarator.ident;\n\n const varSymbol = new VarSymbol(parameterDeclarator.ident.lexeme, parameterDeclarator.typeInfo, false, this);\n sa.symbolTableStack.insert(varSymbol);\n }\n }\n\n @ASTNodeDecorator(NoneTerminal.parameter_declarator)\n export class ParameterDeclarator extends TreeNode {\n ident: Token;\n typeInfo: SymbolType;\n\n override semanticAnalyze(sa: SemanticAnalyzer): void {\n const children = this.children;\n this.ident = children[1] as Token;\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 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\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.dropScope();\n const sm = new FnSymbol(this.protoType.ident.lexeme, this);\n sa.symbolTableStack.insert(sm);\n\n const { curFunctionInfo } = sa;\n const { header, returnStatement } = curFunctionInfo;\n if (header.returnType.type === EKeyword.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 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 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 fnSymbol = sa.lookupSymbolBy(fnIdent, ESymbolType.FN, paramSig);\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 as FnSymbol;\n }\n }\n }\n\n @ASTNodeDecorator(NoneTerminal.function_call_parameter_list)\n export class FunctionCallParameterList extends TreeNode {\n paramSig: GalaceanDataType[] = [];\n paramNodes: AssignmentExpression[] = [];\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.length === 1) {\n const expr = children[0] as AssignmentExpression;\n if (expr.type == undefined) {\n paramSig.push(TypeAny);\n } else {\n paramSig.push(expr.type);\n }\n\n this.paramNodes.push(expr);\n } else {\n const list = children[0] as FunctionCallParameterList;\n const decl = children[2] as AssignmentExpression;\n if (list.paramSig.length === 0 || decl.type == undefined) {\n this.paramSig.push(TypeAny);\n } else {\n const listParamLength = list.paramSig.length;\n paramSig.length = listParamLength + 1;\n paramNodes.length = listParamLength + 1;\n\n for (let i = 0; i < listParamLength; i++) {\n paramSig[i] = list.paramSig[i];\n paramNodes[i] = list.paramNodes[i];\n }\n paramSig[listParamLength] = decl.type;\n paramNodes[listParamLength] = decl;\n }\n }\n }\n }\n\n @ASTNodeDecorator(NoneTerminal.precision_specifier)\n export class PrecisionSpecifier extends TreeNode {\n override semanticAnalyze(sa: SemanticAnalyzer): void {\n sa.shaderData.globalPrecisions.push(this);\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 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 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 ((<Token>id).type) {\n case ETokenType.INT_CONSTANT:\n this._type = EKeyword.INT;\n break;\n case ETokenType.FLOAT_CONSTANT:\n this.type = EKeyword.FLOAT;\n break;\n case EKeyword.TRUE:\n case EKeyword.FALSE:\n this.type = EKeyword.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 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 = EKeyword.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 = EKeyword.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 = EKeyword.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 = EKeyword.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 = EKeyword.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 = EKeyword.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 = EKeyword.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 = EKeyword.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?: Token;\n propList: StructProp[];\n\n override init(): void {\n this.ident = undefined;\n }\n\n override semanticAnalyze(sa: SemanticAnalyzer): void {\n const children = this.children;\n if (children.length === 6) {\n this.ident = children[1] as Token;\n sa.symbolTableStack.insert(new StructSymbol(this.ident.lexeme, this));\n\n this.propList = (children[3] as StructDeclarationList).propList;\n } else {\n this.propList = (children[2] as StructDeclarationList).propList;\n }\n }\n }\n\n @ASTNodeDecorator(NoneTerminal.struct_declaration_list)\n export class StructDeclarationList extends TreeNode {\n propList: StructProp[] = [];\n\n override init(): void {\n this.propList.length = 0;\n }\n\n override semanticAnalyze(sa: SemanticAnalyzer): void {\n const { children, propList } = this;\n\n if (children.length === 1) {\n const props = (children[0] as StructDeclaration).props;\n const propsLength = props.length;\n propList.length = propsLength;\n for (let i = 0; i < propsLength; i++) {\n propList[i] = props[i];\n }\n } else {\n const listProps = (children[0] as StructDeclarationList).propList;\n const declProps = (children[1] as StructDeclaration).props;\n const listPropLength = listProps.length;\n const declPropLength = declProps.length;\n propList.length = listPropLength + declPropLength;\n\n for (let i = 0; i < listPropLength; i++) {\n propList[i] = listProps[i];\n }\n for (let i = 0; i < declPropLength; i++) {\n propList[i + listPropLength] = declProps[i];\n }\n }\n }\n }\n\n @ASTNodeDecorator(NoneTerminal.struct_declaration)\n export class StructDeclaration extends TreeNode {\n typeSpecifier: TypeSpecifier;\n declaratorList: StructDeclaratorList;\n props: StructProp[] = [];\n\n override init(): void {\n this.typeSpecifier = undefined;\n this.declaratorList = undefined;\n this.props.length = 0;\n }\n\n override semanticAnalyze(sa: SemanticAnalyzer): void {\n const { children, props } = this;\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 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);\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);\n props[i] = prop;\n }\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: Token;\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 Token;\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\n override semanticAnalyze(sa: SemanticAnalyzer): void {\n const children = this.children;\n const type = children[0] as FullySpecifiedType;\n const ident = children[1] as Token;\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\n override codeGen(visitor: CodeGenVisitor): string {\n return visitor.visitGlobalVariableDeclaration(this) + \";\";\n }\n }\n\n @ASTNodeDecorator(NoneTerminal.variable_declaration_list)\n export class VariableDeclarationList extends TreeNode {\n type: FullySpecifiedType;\n\n override semanticAnalyze(sa: SemanticAnalyzer): void {\n const { children } = this;\n const length = children.length;\n const variableDeclaration = children[0] as VariableDeclaration;\n const type = variableDeclaration.type;\n this.type = type;\n\n if (length === 1) {\n return;\n }\n\n const ident = children[2] as Token;\n\n const newVariable = VariableDeclaration.pool.get();\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 }\n }\n\n @ASTNodeDecorator(NoneTerminal.variable_identifier)\n export class VariableIdentifier extends TreeNode {\n symbolInfo:\n | VarSymbol\n // #if _VERBOSE\n | BuiltinVariable\n // #endif\n | null;\n\n lexeme: string;\n typeInfo: GalaceanDataType;\n\n override semanticAnalyze(sa: SemanticAnalyzer): void {\n const token = this.children[0] as Token;\n this.lexeme = token.lexeme;\n\n // #if _VERBOSE\n const builtinVar = BuiltinVariable.getVar(token.lexeme);\n if (builtinVar) {\n this.symbolInfo = builtinVar;\n this.typeInfo = builtinVar.type;\n return;\n }\n // #endif\n\n this.symbolInfo = sa.lookupSymbolBy(token.lexeme, ESymbolType.VAR) as VarSymbol;\n // #if _VERBOSE\n if (!this.symbolInfo) {\n sa.reportError(this.location, `undeclared identifier: ${token.lexeme}`);\n }\n // #endif\n this.typeInfo = this.symbolInfo?.dataType?.type;\n }\n\n override codeGen(visitor: CodeGenVisitor): string {\n return visitor.visitVariableIdentifier(this);\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","import { EKeyword, 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\";\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] ?? EKeyword[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 return `<Action: ${EAction[actionInfo.action]} -> ${\n actionInfo.action === EAction.Reduce ? Production.pool.get(actionInfo.target!) : `State ${actionInfo.target!}`\n }>`;\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","// Context Free Grammar of Galacean ShaderLab\n\nimport { Grammar } from \"../parser/Grammar\";\nimport { NoneTerminal, GrammarSymbol } from \"../parser/GrammarSymbol\";\nimport GrammarUtils from \"./Utils\";\nimport { EKeyword, ETokenType } from \"../common\";\nimport SemanticAnalyzer, { TranslationRule } from \"../parser/SemanticAnalyzer\";\nimport { ASTNode } from \"../parser/AST\";\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(NoneTerminal.global_declaration, [\n [NoneTerminal.precision_specifier],\n [NoneTerminal.variable_declaration_statement],\n [NoneTerminal.struct_specifier],\n [NoneTerminal.function_definition]\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 ],\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 [EKeyword.VOID],\n [EKeyword.FLOAT],\n [EKeyword.BOOL],\n [EKeyword.INT],\n [EKeyword.UINT],\n [EKeyword.VEC2],\n [EKeyword.VEC3],\n [EKeyword.VEC4],\n [EKeyword.BVEC2],\n [EKeyword.BVEC3],\n [EKeyword.BVEC4],\n [EKeyword.IVEC2],\n [EKeyword.IVEC3],\n [EKeyword.IVEC4],\n [EKeyword.UVEC2],\n [EKeyword.UVEC3],\n [EKeyword.UVEC4],\n [EKeyword.MAT2],\n [EKeyword.MAT3],\n [EKeyword.MAT4],\n [EKeyword.MAT2X3],\n [EKeyword.MAT2X4],\n [EKeyword.MAT3X2],\n [EKeyword.MAT3X4],\n [EKeyword.MAT4X2],\n [EKeyword.MAT4X3],\n [EKeyword.SAMPLER2D],\n [EKeyword.SAMPLER3D],\n [EKeyword.SAMPLER_CUBE],\n [EKeyword.SAMPLER2D_SHADOW],\n [EKeyword.SAMPLER_CUBE_SHADOW],\n [EKeyword.SAMPLER2D_ARRAY],\n [EKeyword.SAMPLER2D_ARRAY_SHADOW],\n [EKeyword.I_SAMPLER2D],\n [EKeyword.I_SAMPLER3D],\n [EKeyword.I_SAMPLER_CUBE],\n [EKeyword.I_SAMPLER2D_ARRAY],\n [EKeyword.U_SAMPLER2D],\n [EKeyword.U_SAMPLER3D],\n [EKeyword.U_SAMPLER_CUBE],\n [EKeyword.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 [EKeyword.PRECISE]\n ],\n ASTNode.SingleTypeQualifier.pool\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.storage_qualifier,\n [[EKeyword.CONST], [EKeyword.IN], [EKeyword.INOUT], [EKeyword.OUT], [EKeyword.CENTROID]],\n // #if _VERBOSE\n ASTNode.StorageQualifier.pool\n // #endif\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.interpolation_qualifier,\n [[EKeyword.SMOOTH], [EKeyword.FLAT]],\n // #if _VERBOSE\n ASTNode.InterpolationQualifier.pool\n // #endif\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.invariant_qualifier,\n [[EKeyword.INVARIANT]],\n // #if _VERBOSE\n ASTNode.InvariantQualifier.pool\n // #endif\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.precision_qualifier,\n [[EKeyword.HIGHP], [EKeyword.MEDIUMP], [EKeyword.LOWP]],\n // #if _VERBOSE\n ASTNode.PrecisionQualifier.pool\n // #endif\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.struct_specifier,\n [\n [\n EKeyword.STRUCT,\n ETokenType.ID,\n ETokenType.LEFT_BRACE,\n NoneTerminal.struct_declaration_list,\n ETokenType.RIGHT_BRACE,\n ETokenType.SEMICOLON\n ],\n [\n EKeyword.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 [NoneTerminal.layout_qualifier, NoneTerminal.type_specifier, NoneTerminal.struct_declarator, ETokenType.SEMICOLON]\n ],\n ASTNode.StructDeclaration.pool\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.layout_qualifier,\n [\n [\n EKeyword.LAYOUT,\n ETokenType.LEFT_PAREN,\n EKeyword.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 [EKeyword.TRUE],\n [EKeyword.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, EKeyword.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 ],\n ASTNode.FunctionCallParameterList.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 ],\n ASTNode.FunctionParameterList.pool\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.parameter_declaration,\n [[NoneTerminal.type_qualifier, NoneTerminal.parameter_declarator], [NoneTerminal.parameter_declarator]],\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 ],\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 EKeyword.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 [EKeyword.IF, ETokenType.LEFT_PAREN, NoneTerminal.expression, ETokenType.RIGHT_PAREN, NoneTerminal.statement],\n [\n EKeyword.IF,\n ETokenType.LEFT_PAREN,\n NoneTerminal.expression,\n ETokenType.RIGHT_PAREN,\n NoneTerminal.statement,\n EKeyword.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 [EKeyword.WHILE, ETokenType.LEFT_PAREN, NoneTerminal.condition, ETokenType.RIGHT_PAREN, NoneTerminal.statement],\n [\n EKeyword.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 EKeyword.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 [EKeyword.CONTINUE, ETokenType.SEMICOLON],\n [EKeyword.BREAK, ETokenType.SEMICOLON],\n [EKeyword.RETURN, ETokenType.SEMICOLON],\n [EKeyword.RETURN, NoneTerminal.expression, ETokenType.SEMICOLON],\n [EKeyword.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]],\n ASTNode.VariableIdentifier.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 { createGrammar, addTranslationRule };\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 { Grammar } from \"../parser/Grammar\";\nimport { NoneTerminal, GrammarSymbol, Terminal } from \"../parser/GrammarSymbol\";\nimport State from \"./State\";\nimport StateItem from \"./StateItem\";\nimport GrammarUtils from \"./Utils\";\nimport { EKeyword, ETokenType } from \"../common\";\nimport 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 === EKeyword.ELSE && exist.action === EAction.Shift && action.action === EAction.Reduce) {\n return;\n } else {\n // #if _VERBOSE\n console.warn(\n `conflict detect: <Terminal ${GrammarUtils.toString(terminal)}>`,\n Utils.printAction(exist),\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 { Grammar } from \"./Grammar\";\nimport { NoneTerminal, GrammarSymbol } from \"./GrammarSymbol\";\nimport { BaseToken } from \"../common/BaseToken\";\nimport { ETokenType } from \"../common\";\nimport { EAction, StateActionTable, StateGotoTable } from \"../lalr/types\";\nimport { ASTNode, TreeNode } from \"./AST\";\nimport SematicAnalyzer from \"./SemanticAnalyzer\";\nimport { TraceStackItem } from \"./types\";\nimport { addTranslationRule, createGrammar } from \"../lalr/CFG\";\nimport { LALR1 } from \"../lalr\";\nimport { ParserUtils } from \"../ParserUtils\";\nimport { Logger } from \"@galacean/engine\";\nimport { GSError, GSErrorName } from \"../GSError\";\nimport { ShaderLab } from \"../ShaderLab\";\nimport { ShaderLabUtils } from \"../ShaderLabUtils\";\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>): ASTNode.GLShaderProgram | null {\n this.sematicAnalyzer.reset();\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 `[pass compilation - parser] 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 _type_of(obj) {\n \"@swc/helpers - typeof\";\n\n return obj && typeof Symbol !== \"undefined\" && obj.constructor === Symbol ? \"symbol\" : typeof obj;\n}\nexport { _type_of as _ };\n","import { BaseToken } from \"../common/BaseToken\";\nimport { ShaderRange } from \"../common\";\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?.length;\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) {\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 return this.body.lexeme.replace(this._replaceRegex, (m) => {\n return args[this._argsLexemes.indexOf(m)];\n });\n }\n}\n","export enum EPpToken {\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 EPpKeyword {\n define = 101,\n undef,\n if,\n ifdef,\n ifndef,\n else,\n elif,\n endif,\n include,\n\n defined\n}\n\nexport const PpKeyword = new Map<string, EPpKeyword>([\n [\"#define\", EPpKeyword.define],\n [\"#undef\", EPpKeyword.undef],\n [\"#if\", EPpKeyword.if],\n [\"#ifdef\", EPpKeyword.ifdef],\n [\"#ifndef\", EPpKeyword.ifndef],\n [\"#else\", EPpKeyword.else],\n [\"#elif\", EPpKeyword.elif],\n [\"#endif\", EPpKeyword.endif],\n [\"#include\", EPpKeyword.include],\n [\"defined\", EPpKeyword.defined]\n]);\n\nexport type PpConstant = boolean | number;\n","import { ShaderRange } from \"../common\";\nimport { ExpandSegment } from \"./PpParser\";\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 static assembleSegments(\n segments: {\n range: ShaderRange;\n replace: string;\n }[],\n source: string\n ) {\n const ret: string[] = [];\n let startIdx = 0;\n for (const seg of segments) {\n const originSlice = source.slice(startIdx, seg.range.start.index);\n ret.push(originSlice, seg.replace);\n startIdx = seg.range.end.index;\n }\n ret.push(source.slice(startIdx));\n return ret.join(\"\");\n }\n}\n","import { ShaderRange, ShaderPosition } from \"../common\";\nimport LexerUtils from \"../lexer/Utils\";\n// #if _VERBOSE\nimport PpSourceMap from \"./sourceMap\";\n// #endif\nimport BaseScanner from \"../common/BaseScanner\";\nimport { BaseToken, EOF } from \"../common/BaseToken\";\nimport { EPpKeyword, EPpToken, PpKeyword } from \"./constants\";\nimport { PpUtils } from \"./Utils\";\nimport { ShaderLab } from \"../ShaderLab\";\n\nexport type OnToken = (token: BaseToken, scanner: PpScanner) => void;\n\nexport default class PpScanner extends BaseScanner {\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 /**\n * Advance to directive\n * @param expandOnToken callback on encountering token.\n */\n scanDirective(expandOnToken?: OnToken): BaseToken<number> {\n const directive = this._advanceToDirective(expandOnToken);\n if ([EPpKeyword.if, EPpKeyword.ifdef, EPpKeyword.ifndef].includes(<any>directive?.type)) {\n this.macroLvl += 1;\n } else if (<any>directive?.type === EPpKeyword.endif) {\n this.macroLvl -= 1;\n }\n return directive;\n }\n\n /**\n * @param nonLetterChar should not be space\n */\n scanWordsUntilChar(nonLetterChar: string): BaseToken[] {\n const ret: BaseToken[] = [];\n while (true) {\n this.skipSpace(true);\n if (LexerUtils.isLetter(this.getCurCharCode())) {\n ret.push(this.scanWord());\n } else if (this.getCurChar() === nonLetterChar) {\n this._advance();\n return ret;\n } else {\n this._advance();\n }\n }\n }\n\n scanWord(skipNonLetter = false): BaseToken {\n if (skipNonLetter) {\n while (!LexerUtils.isLetter(this.getCurCharCode()) && !this.isEnd()) {\n this._advance();\n }\n } else {\n this.skipSpace(true);\n }\n\n if (this.isEnd()) return EOF;\n\n const start = this._currentIndex;\n while (LexerUtils.isLetter(this.getCurCharCode()) && !this.isEnd()) {\n this._advance();\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 const kw = PpKeyword.get(word);\n if (kw) {\n const token = BaseToken.pool.get();\n token.set(kw, word, this.getShaderPosition(0));\n return token;\n }\n\n const token = BaseToken.pool.get();\n token.set(EPpToken.id, word, this.getShaderPosition(word.length));\n return token;\n }\n\n /**\n * @param offset - Offset from starting point\n */\n getShaderPosition(offset: number) {\n return ShaderLab.createPosition(\n this._currentIndex - offset,\n // #if _VERBOSE\n this.line,\n this.column - offset\n // #endif\n );\n }\n\n /**\n * @param onToken callback when encounter a token\n * @returns token split by space\n */\n override scanToken(onToken?: OnToken): BaseToken | undefined {\n this.skipCommentsAndSpace();\n if (this.isEnd()) {\n return;\n }\n const { _source: source } = this;\n let start = this._currentIndex;\n let found = false;\n for (var n = source.length; this._currentIndex < n; ) {\n if (LexerUtils.isPpCharacters(source.charCodeAt(this._currentIndex))) {\n this._advance();\n found = true;\n } else {\n if (found) {\n break;\n }\n this._advance();\n this.skipCommentsAndSpace();\n start = this._currentIndex;\n }\n }\n\n const lexeme = source.slice(start, this._currentIndex);\n const ret = BaseToken.pool.get();\n const tokenType = PpKeyword.get(lexeme);\n ret.set(tokenType ?? EPpToken.id, lexeme, this.getShaderPosition(this._currentIndex - start));\n onToken?.(ret, this);\n return ret;\n }\n\n scanQuotedString(): BaseToken<EPpToken.string_const> {\n this.skipSpace(true);\n if (this.getCurChar() !== '\"') {\n this.throwError(this.getShaderPosition(0), \"unexpected char, expected '\\\"'\");\n }\n const ShaderPosition = this.getShaderPosition(0);\n this._advance();\n const start = this._currentIndex;\n while (this.getCurChar() !== '\"' && !this.isEnd()) this._advance();\n if (this.isEnd()) {\n this.throwError(this.getShaderPosition(0), \"unexpected char, expected '\\\"'\");\n }\n const word = this._source.slice(start, this._currentIndex);\n\n const token = BaseToken.pool.get();\n token.set(EPpToken.string_const, word, ShaderPosition);\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();\n }\n }\n\n scanMacroBranchChunk(): {\n token: BaseToken<EPpToken.chunk>;\n nextDirective: BaseToken;\n } {\n const start = this._currentIndex;\n const ShaderPosition = this.getShaderPosition(0);\n\n const startLvl = this.macroLvl;\n let directive = this.scanDirective()!;\n\n while (true) {\n if (directive.type === EPpKeyword.endif && startLvl - 1 === this.macroLvl) break;\n else if ([EPpKeyword.elif, EPpKeyword.else].includes(<EPpKeyword>directive.type) && startLvl === this.macroLvl)\n break;\n directive = this.scanDirective()!;\n }\n\n const chunk = this._source.slice(start, this._currentIndex - directive.lexeme.length - 1);\n const token = BaseToken.pool.get();\n token.set(EPpToken.chunk, chunk, ShaderPosition);\n return { token, nextDirective: directive };\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();\n } while (level > 0);\n }\n\n /**\n * @returns end ShaderPosition\n */\n scanRemainMacro(): ShaderPosition {\n const startLvl = this.macroLvl;\n let directive = this.scanDirective()!;\n while (!this.isEnd() && (directive.type !== EPpKeyword.endif || startLvl - 1 !== this.macroLvl)) {\n directive = this.scanDirective()!;\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 (LexerUtils.isNum(this.getCurCharCode())) {\n this._advance();\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(EPpToken.int_constant, integer, this.getShaderPosition(0));\n return token;\n }\n\n /**\n * Skip comments\n */\n scanLineRemain() {\n this.skipSpace(false);\n const start = this._currentIndex;\n\n const comments: ShaderRange[] = [];\n\n while (this.getCurChar() !== \"\\n\") {\n if (this.isEnd()) {\n const line = this._source.slice(start, this._currentIndex);\n\n const token = BaseToken.pool.get();\n token.set(EPpToken.line_remain, line, this.getShaderPosition(line.length));\n return token;\n }\n this._advance();\n const commentRange = this._skipComments();\n if (commentRange) {\n commentRange.start.index -= start;\n commentRange.end.index -= start;\n comments.push(commentRange);\n }\n }\n let line = this._source.slice(start, this._currentIndex);\n if (comments.length) {\n // filter comments\n line = PpUtils.assembleSegments(\n comments.map((item) => ({ range: item, replace: \"\" })),\n line\n );\n }\n\n const token = BaseToken.pool.get();\n token.set(EPpToken.line_remain, line, this.getShaderPosition(line.length));\n return token;\n }\n\n private _advanceToDirective(onToken?: OnToken): BaseToken | undefined {\n while (true) {\n const token = this.scanToken(onToken);\n if (token?.lexeme.startsWith(\"#\")) return token;\n if (this.isEnd()) return;\n }\n }\n\n private _skipComments(): ShaderRange | undefined {\n if (this.peek(2) === \"//\") {\n const start = this.getShaderPosition(0);\n // single line comments\n while (this.getCurChar() !== \"\\n\" && !this.isEnd()) {\n this._advance();\n }\n return ShaderLab.createRange(start, this.getCurPosition());\n } else if (this.peek(2) === \"/*\") {\n const start = this.getShaderPosition(0);\n // multi-line comments\n this.advance(2);\n while (this.peek(2) !== \"*/\" && !this.isEnd()) {\n this._advance();\n }\n this.advance(2);\n return ShaderLab.createRange(start, this.getShaderPosition(0));\n }\n }\n}\n","import { ShaderPosition, ShaderRange } from \"../common\";\nimport LexerUtils from \"../lexer/Utils\";\nimport { MacroDefine } from \"./MacroDefine\";\nimport { BaseToken } from \"../common/BaseToken\";\nimport { EPpKeyword, EPpToken, PpConstant } from \"./constants\";\nimport PpScanner from \"./PpScanner\";\nimport { PpUtils } from \"./Utils\";\nimport { ShaderLab } from \"../ShaderLab\";\nimport { ShaderPass } from \"@galacean/engine\";\nimport { ShaderLabUtils } from \"../ShaderLabUtils\";\nimport { GSErrorName } from \"../GSError\";\n// #if _VERBOSE\nimport PpSourceMap, { BlockInfo } from \"./sourceMap\";\n// #endif\n\nexport interface ExpandSegment {\n // #if _VERBOSE\n block?: BlockInfo;\n // #endif\n rangeInBlock: ShaderRange;\n replace: string;\n}\n\n/** @internal */\nexport class PpParser {\n private static _definedMacros: Map<string, MacroDefine> = new Map();\n private static _expandSegmentsStack: ExpandSegment[][] = [[]];\n\n /** Referenced by branch macro or defined operator */\n private static _branchMacros: Set<string> = new Set();\n\n private static _includeMap: Record<string, string>;\n private static _basePathForIncludeKey: string;\n\n // #if _VERBOSE\n static _errors: Error[] = [];\n // #endif\n\n static reset(includeMap: Record<string, string>, basePathForIncludeKey: string) {\n this._definedMacros.clear();\n this._expandSegmentsStack.length = 0;\n this._expandSegmentsStack.push([]);\n this._branchMacros.clear();\n this.addPredefinedMacro(\"GL_ES\");\n this._includeMap = includeMap;\n this._basePathForIncludeKey = basePathForIncludeKey;\n // #if _VERBOSE\n this._errors.length = 0;\n // #endif\n }\n\n static addPredefinedMacro(macro: string, value?: string) {\n const tk = BaseToken.pool.get();\n tk.set(EPpToken.id, macro);\n\n let macroBody: BaseToken | undefined;\n if (value) {\n macroBody = BaseToken.pool.get();\n macroBody.set(EPpToken.id, value);\n }\n\n this._definedMacros.set(macro, new MacroDefine(tk, macroBody));\n }\n\n static parse(scanner: PpScanner): string | null {\n while (!scanner.isEnd()) {\n const directive = scanner.scanDirective(this._onToken.bind(this))!;\n if (scanner.isEnd()) break;\n switch (directive.type) {\n case EPpKeyword.define:\n this._parseDefine(scanner);\n break;\n\n case EPpKeyword.undef:\n this._parseUndef(scanner);\n break;\n\n case EPpKeyword.if:\n this._parseIf(scanner);\n break;\n\n case EPpKeyword.ifndef:\n this._parseIfNdef(scanner);\n break;\n\n case EPpKeyword.ifdef:\n this._parseIfDef(scanner);\n break;\n\n case EPpKeyword.include:\n this._parseInclude(scanner);\n break;\n }\n }\n // #if _VERBOSE\n if (this._errors.length > 0) return null;\n // #endif\n\n return PpUtils.expand(this.expandSegments, scanner.source, scanner.sourceMap);\n }\n\n private static get expandSegments() {\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 _parseInclude(scanner: PpScanner) {\n const start = scanner.getShaderPosition(8);\n\n scanner.skipSpace(true);\n const id = scanner.scanQuotedString();\n let includedPath: string;\n // builtin path\n if (id.lexeme[0] !== \".\") {\n includedPath = id.lexeme;\n } else {\n // relative path\n // @ts-ignore\n includedPath = new URL(id.lexeme, this._basePathForIncludeKey).href.substring(ShaderPass._shaderRootPath.length);\n }\n\n scanner.scanToChar(\"\\n\");\n const end = scanner.getShaderPosition(0);\n const chunk = this._includeMap[includedPath];\n if (!chunk) {\n this.reportError(id.location, `Shader slice \"${includedPath}\" not founded.`, scanner.source, scanner.file);\n return;\n }\n\n const range = ShaderLab.createRange(start, end);\n const expanded = this._expandMacroChunk(chunk, range, id.lexeme);\n // #if _VERBOSE\n const block = new BlockInfo(id.lexeme, undefined, expanded.sourceMap);\n // #endif\n this.expandSegments.push({\n // #if _VERBOSE\n block,\n // #endif\n rangeInBlock: range,\n replace: expanded.content\n });\n }\n\n private static _parseIfDef(scanner: PpScanner) {\n const start = scanner.current - 6;\n\n const id = scanner.scanWord();\n this._addEmptyReplace(scanner, start);\n this._branchMacros.add(id.lexeme);\n\n const macro = this._definedMacros.get(id.lexeme);\n scanner.skipSpace(true);\n\n const { token: bodyChunk, nextDirective } = scanner.scanMacroBranchChunk();\n if (!!macro) {\n const end = nextDirective.type === EPpKeyword.endif ? scanner.getShaderPosition(0) : scanner.scanRemainMacro();\n\n const expanded = this._expandMacroChunk(bodyChunk.lexeme, bodyChunk.location, scanner);\n\n // #if _VERBOSE\n const block = new BlockInfo(scanner.file, scanner.blockRange, expanded.sourceMap);\n // #endif\n const range = ShaderLab.createRange(bodyChunk.location.start, end);\n\n this.expandSegments.push({\n // #if _VERBOSE\n block,\n // #endif\n rangeInBlock: range,\n replace: expanded.content\n });\n\n return;\n }\n\n this.expandSegments.pop();\n this._addEmptyReplace(scanner, start);\n\n this._parseMacroBranch(<any>nextDirective.type, scanner);\n }\n\n private static _parseMacroBranch(\n directive: EPpKeyword.elif | EPpKeyword.else | EPpKeyword.endif,\n scanner: PpScanner\n ) {\n if (directive === EPpKeyword.endif) {\n return;\n }\n\n const start = scanner.current;\n\n if (directive === EPpKeyword.else) {\n const { token: elseChunk } = scanner.scanMacroBranchChunk();\n const expanded = this._expandMacroChunk(elseChunk.lexeme, elseChunk.location, scanner);\n // #if _VERBOSE\n const block = new BlockInfo(scanner.file, scanner.blockRange, expanded.sourceMap);\n // #endif\n const startPosition = ShaderLab.createPosition(start);\n const range = ShaderLab.createRange(startPosition, scanner.getShaderPosition(0));\n this.expandSegments.push({\n // #if _VERBOSE\n block,\n // #endif\n rangeInBlock: range,\n replace: expanded.content\n });\n } else if (directive === EPpKeyword.elif) {\n const constantExpr = this._parseConstantExpression(scanner);\n const { token: bodyChunk, nextDirective } = scanner.scanMacroBranchChunk();\n if (!!constantExpr) {\n const end = nextDirective.type === EPpKeyword.endif ? scanner.current : scanner.scanRemainMacro().index;\n const expanded = this._expandMacroChunk(bodyChunk.lexeme, bodyChunk.location, scanner);\n // #if _VERBOSE\n const block = new BlockInfo(scanner.file, scanner.blockRange, expanded.sourceMap);\n // #endif\n const startPosition = ShaderLab.createPosition(start);\n const endPosition = ShaderLab.createPosition(end);\n const range = ShaderLab.createRange(startPosition, endPosition);\n this.expandSegments.push({\n // #if _VERBOSE\n block,\n // #endif\n rangeInBlock: range,\n replace: expanded.content\n });\n } else {\n // #if _VERBOSE\n const block = new BlockInfo(scanner.file, scanner.blockRange);\n // #endif\n const startPosition = ShaderLab.createPosition(start);\n const endPosition = ShaderLab.createPosition(scanner.current);\n const range = ShaderLab.createRange(startPosition, endPosition);\n this.expandSegments.push({\n // #if _VERBOSE\n block,\n // #endif\n rangeInBlock: range,\n replace: \"\"\n });\n this._parseMacroBranch(<any>nextDirective.type, scanner);\n }\n }\n }\n\n private static _parseConstantExpression(scanner: PpScanner) {\n scanner.skipSpace(true);\n return this._parseLogicalOrExpression(scanner);\n }\n\n private static _parseLogicalOrExpression(scanner: PpScanner): PpConstant {\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: PpScanner): PpConstant {\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: PpScanner): PpConstant {\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: PpScanner): PpConstant {\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: PpScanner): PpConstant {\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: PpScanner): PpConstant {\n const operand1 = this._parseMulticativeExpression(scanner) as number;\n if ([\">\", \"<\"].includes(scanner.getCurChar())) {\n const opPos = scanner.getShaderPosition(0);\n scanner.advance();\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: PpScanner): PpConstant {\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: PpScanner) {\n const operator = scanner.getCurChar();\n if ([\"+\", \"-\", \"!\"].includes(operator)) {\n scanner.advance();\n const opPos = scanner.getShaderPosition(0);\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: PpScanner): PpConstant {\n if (scanner.getCurChar() === \"(\") {\n scanner._advance();\n scanner.skipSpace(false);\n const ret = this._parseConstantExpression(scanner);\n scanner.scanToChar(\")\");\n scanner._advance();\n return ret;\n }\n return this._parseConstant(scanner);\n }\n\n private static _parseConstant(scanner: PpScanner): PpConstant {\n if (LexerUtils.isAlpha(scanner.getCurCharCode())) {\n const id = scanner.scanWord();\n if (id.type === EPpKeyword.defined) {\n const withParen = scanner.peekNonSpace() === \"(\";\n const macro = scanner.scanWord(true);\n if (withParen) {\n scanner.scanToChar(\")\");\n scanner._advance();\n }\n this._branchMacros.add(macro.lexeme);\n return !!this._definedMacros.get(macro.lexeme);\n } else {\n const macro = this._definedMacros.get(id.lexeme);\n if (!macro || !macro.body) {\n return false;\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 this._branchMacros.add(id.lexeme);\n return value;\n }\n } else if (LexerUtils.isNum(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 /**\n * Recursively expand macro body and expansion.\n */\n private static _expandMacroChunk(\n chunk: string,\n loc: ShaderRange,\n parentScanner: PpScanner\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: PpScanner | string\n ): {\n content: string;\n // #if _VERBOSE\n sourceMap: PpSourceMap;\n // #endif\n } {\n this._expandSegmentsStack.push([]);\n let scanner: PpScanner;\n if (typeof scannerOrFile === \"string\") {\n scanner = new PpScanner(chunk, scannerOrFile);\n } else {\n scanner = new PpScanner(chunk, scannerOrFile.file, loc);\n }\n const ret = this.parse(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 _parseIfNdef(scanner: PpScanner) {\n const start = scanner.current - 7;\n\n const id = scanner.scanWord();\n this._addEmptyReplace(scanner, start);\n this._branchMacros.add(id.lexeme);\n\n const macro = this._definedMacros.get(id.lexeme);\n const { token: bodyChunk, nextDirective } = scanner.scanMacroBranchChunk();\n if (!macro) {\n const end = nextDirective.type === EPpKeyword.endif ? scanner.getShaderPosition(0) : scanner.scanRemainMacro();\n\n const expanded = this._expandMacroChunk(bodyChunk.lexeme, bodyChunk.location, scanner);\n // #if _VERBOSE\n const blockInfo = new BlockInfo(scanner.file, scanner.blockRange, expanded.sourceMap);\n // #endif\n const range = ShaderLab.createRange(bodyChunk.location.start, end);\n this.expandSegments.push({\n // #if _VERBOSE\n block: blockInfo,\n // #endif\n rangeInBlock: range,\n replace: expanded.content\n });\n return;\n }\n\n this.expandSegments.pop();\n this._addEmptyReplace(scanner, start);\n this._parseMacroBranch(<any>nextDirective.type, scanner);\n }\n\n private static _addEmptyReplace(scanner: PpScanner, start: number) {\n // #if _VERBOSE\n const block = new BlockInfo(scanner.file, scanner.blockRange);\n // #endif\n const startPosition = ShaderLab.createPosition(start);\n const endPosition = scanner.getCurPosition();\n const range = ShaderLab.createRange(startPosition, endPosition);\n this.expandSegments.push({\n // #if _VERBOSE\n block,\n // #endif\n rangeInBlock: range,\n replace: \"\"\n });\n }\n\n private static _parseIf(scanner: PpScanner) {\n const start = scanner.current - 3;\n\n const constantExpr = this._parseConstantExpression(scanner);\n this._addEmptyReplace(scanner, start);\n\n const { token: bodyChunk, nextDirective } = scanner.scanMacroBranchChunk();\n if (!!constantExpr) {\n const end = nextDirective.type === EPpKeyword.endif ? scanner.getShaderPosition(0) : scanner.scanRemainMacro();\n const expanded = this._expandMacroChunk(bodyChunk.lexeme, bodyChunk.location, scanner);\n // #if _VERBOSE\n const block = new BlockInfo(scanner.file, scanner.blockRange, expanded.sourceMap);\n // #endif\n const range = ShaderLab.createRange(bodyChunk.location.start, end);\n this.expandSegments.push({\n // #if _VERBOSE\n block,\n // #endif\n rangeInBlock: range,\n replace: expanded.content\n });\n return;\n }\n\n this.expandSegments.pop();\n this._addEmptyReplace(scanner, start);\n this._parseMacroBranch(<any>nextDirective.type, scanner);\n }\n\n private static _parseDefine(scanner: PpScanner) {\n const start = scanner.getShaderPosition(7);\n const macro = scanner.scanWord();\n\n let end = macro.location.end;\n if (this._definedMacros.get(macro.lexeme) && macro.lexeme.startsWith(\"GL_\")) {\n this.reportError(macro.location, `redefined macro: ${macro.lexeme}`, scanner.source, scanner.file);\n }\n\n let macroArgs: BaseToken[] | undefined;\n if (scanner.getCurChar() === \"(\") {\n macroArgs = scanner.scanWordsUntilChar(\")\");\n end = scanner.getShaderPosition(0);\n }\n const macroBody = scanner.scanLineRemain();\n const range = ShaderLab.createRange(start, end);\n const macroDefine = new MacroDefine(macro, macroBody, range, macroArgs);\n this._definedMacros.set(macro.lexeme, macroDefine);\n\n // #if _VERBOSE\n const block = new BlockInfo(scanner.file, scanner.blockRange);\n // #endif\n\n this.expandSegments.push({\n // #if _VERBOSE\n block,\n // #endif\n rangeInBlock: ShaderLab.createRange(start, scanner.getCurPosition()),\n replace: \"\"\n });\n }\n\n private static _parseUndef(scanner: PpScanner) {\n const start = scanner.current - 6;\n const macro = scanner.scanWord();\n\n // #if _VERBOSE\n const block = new BlockInfo(scanner.file, scanner.blockRange);\n // #endif\n const startPosition = ShaderLab.createPosition(start);\n const range = ShaderLab.createRange(startPosition, scanner.getCurPosition());\n this.expandSegments.push({\n // #if _VERBOSE\n block,\n // #endif\n rangeInBlock: range,\n replace: \"\"\n });\n this._definedMacros.delete(macro.lexeme);\n }\n\n private static _onToken(token: BaseToken, scanner: PpScanner) {\n const macro = this._definedMacros.get(token.lexeme);\n if (macro) {\n let replace = macro.body.lexeme;\n if (macro.isFunction) {\n scanner.scanToChar(\"(\");\n scanner._advance();\n\n // extract parameters\n const args: string[] = [];\n let curLvl = 1;\n let curIdx = scanner.current;\n while (true) {\n if (scanner.getCurChar() === \"(\") curLvl += 1;\n else if (scanner.getCurChar() === \")\") {\n curLvl -= 1;\n if (curLvl === 0) break;\n } else if (scanner.getCurChar() === \",\" && curLvl === 1) {\n args.push(scanner.source.slice(curIdx, scanner.current));\n curIdx = scanner.current + 1;\n }\n scanner._advance();\n }\n args.push(scanner.source.slice(curIdx, scanner.current));\n\n scanner._advance();\n const range = ShaderLab.createRange(token.location!.start, scanner.getCurPosition());\n replace = macro.expandFunctionBody(args);\n const expanded = this._expandMacroChunk(replace, range, scanner);\n // #if _VERBOSE\n const block = new BlockInfo(scanner.file, scanner.blockRange, expanded.sourceMap);\n // #endif\n const blockRange = ShaderLab.createRange(token.location!.start, scanner.getCurPosition());\n this.expandSegments.push({\n // #if _VERBOSE\n block,\n // #endif\n rangeInBlock: blockRange,\n replace: expanded.content\n });\n } else {\n const expanded = this._expandMacroChunk(replace, token.location, scanner);\n // #if _VERBOSE\n const block = new BlockInfo(scanner.file, scanner.blockRange, expanded.sourceMap);\n // #endif\n const range = ShaderLab.createRange(token.location.start, token.location.end);\n this.expandSegments.push({\n // #if _VERBOSE\n block,\n // #endif\n rangeInBlock: range,\n replace: expanded.content\n });\n }\n }\n }\n}\n","import { PpParser } from \"./PpParser\";\nimport PpScanner from \"./PpScanner\";\n\n/** @internal */\nexport class Preprocessor {\n static baseScanner: PpScanner;\n\n /**\n * Reset the parser of `Preprocessor`\n * @param basePathForIncludeKey - the base path to resolve the relative path of `#include` directive\n */\n static reset(includeMap: Record<string, string>, basePathForIncludeKey: string): void {\n PpParser.reset(includeMap, basePathForIncludeKey);\n }\n\n /**\n * Should call it after reset.\n */\n static process(source: string): string | null {\n this.baseScanner = new PpScanner(source);\n return PpParser.parse(this.baseScanner);\n }\n\n static addPredefinedMacro(macro: string, value?: string): void {\n PpParser.addPredefinedMacro(macro, value);\n }\n\n // #if _VERBOSE\n static convertSourceIndex(index: number) {\n return this.baseScanner.sourceMap.map(index);\n }\n // #endif\n}\n","import { NoneTerminal, GrammarSymbol } from \"./parser/GrammarSymbol\";\nimport { BaseToken as Token } from \"./common/BaseToken\";\nimport { EKeyword, ETokenType, GalaceanDataType } from \"./common\";\nimport { TreeNode } from \"./parser/AST\";\n// #if _VERBOSE\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) return true;\n if (ta === EKeyword.INT) {\n return ta === tb || tb === EKeyword.UINT;\n }\n return ta === tb;\n }\n\n static toString(sm: GrammarSymbol) {\n if (this.isTerminal(sm)) {\n return ETokenType[sm] ?? EKeyword[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 { EShaderStage } from \"../common/Enums\";\nimport { ASTNode } from \"../parser/AST\";\nimport { ESymbolType, TargetSymbolTable, SymbolInfo } from \"../parser/symbolTable\";\nimport { IParamInfo, StructProp } from \"../parser/types\";\nimport { GSErrorName } from \"../GSError\";\nimport { BaseToken } from \"../common/BaseToken\";\nimport { ShaderLab } from \"../ShaderLab\";\nimport { ShaderLabUtils } from \"../ShaderLabUtils\";\n\n/** @internal */\nexport class VisitorContext {\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 attributeList: IParamInfo[] = [];\n attributeStructs: ASTNode.StructSpecifier[] = [];\n varyingStruct?: ASTNode.StructSpecifier;\n mrtStruct?: ASTNode.StructSpecifier;\n\n stage: EShaderStage;\n\n _referencedAttributeList: Record<string, IParamInfo & { qualifier?: string }> = Object.create(null);\n _referencedGlobals: Record<string, SymbolInfo | ASTNode.PrecisionSpecifier> = Object.create(null);\n _referencedVaryingList: Record<string, IParamInfo & { qualifier?: string }> = Object.create(null);\n _referencedMRTList: Record<string, StructProp | string> = Object.create(null);\n\n _curFn?: ASTNode.FunctionProtoType;\n\n _passSymbolTable: TargetSymbolTable;\n\n private constructor() {}\n\n get passSymbolTable() {\n return this._passSymbolTable;\n }\n\n reset() {\n this.attributeList.length = 0;\n this.attributeStructs.length = 0;\n this._referencedAttributeList = Object.create(null);\n this._referencedGlobals = Object.create(null);\n this._referencedVaryingList = Object.create(null);\n this._referencedMRTList = Object.create(null);\n this.mrtStruct = undefined;\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.varyingStruct?.ident?.lexeme === type;\n }\n\n isMRTStruct(type: string) {\n return this.mrtStruct?.ident?.lexeme === type;\n }\n\n referenceAttribute(ident: BaseToken): Error | void {\n if (this._referencedAttributeList[ident.lexeme]) return;\n\n const prop = this.attributeList.find((item) => item.ident.lexeme === ident.lexeme);\n if (!prop) {\n return ShaderLabUtils.createGSError(\n `referenced attribute not found: ${ident.lexeme}`,\n GSErrorName.CompilationError,\n ShaderLab._processingPassText,\n ident.location\n );\n }\n this._referencedAttributeList[ident.lexeme] = prop;\n }\n\n referenceVarying(ident: BaseToken): Error | void {\n if (this._referencedVaryingList[ident.lexeme]) return;\n\n const prop = this.varyingStruct?.propList.find((item) => item.ident.lexeme === ident.lexeme);\n if (!prop) {\n return ShaderLabUtils.createGSError(\n `referenced varying not found: ${ident.lexeme}`,\n GSErrorName.CompilationError,\n ShaderLab._processingPassText,\n ident.location\n );\n }\n this._referencedVaryingList[ident.lexeme] = prop;\n }\n\n referenceMRTProp(ident: BaseToken): Error | void {\n if (this._referencedMRTList[ident.lexeme]) return;\n\n const prop = this.mrtStruct?.propList.find((item) => item.ident.lexeme === ident.lexeme);\n if (!prop) {\n return ShaderLabUtils.createGSError(\n `referenced mrt not found: ${ident.lexeme}`,\n GSErrorName.CompilationError,\n ShaderLab._processingPassText,\n ident.location\n );\n }\n this._referencedMRTList[ident.lexeme] = prop;\n }\n\n referenceGlobal(ident: string, type: ESymbolType) {\n if (this._referencedGlobals[ident]) return;\n\n if (type === ESymbolType.FN) {\n const fnEntries = this._passSymbolTable.getAllFnSymbols(ident);\n for (let i = 0; i < fnEntries.length; i++) {\n const key = i === 0 ? ident : ident + i;\n this._referencedGlobals[key] = fnEntries[i];\n }\n return;\n }\n const sm = this._passSymbolTable.lookup(ident, type);\n if (sm) {\n this._referencedGlobals[ident] = sm;\n }\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 { NoneTerminal } from \"../parser/GrammarSymbol\";\nimport { BaseToken as Token } from \"../common/BaseToken\";\nimport { EKeyword, ShaderPosition, ShaderRange } from \"../common\";\nimport { ASTNode, TreeNode } from \"../parser/AST\";\nimport { ESymbolType, FnSymbol, VarSymbol } from \"../parser/symbolTable\";\nimport { ParserUtils } from \"../ParserUtils\";\nimport { NodeChild } from \"../parser/types\";\nimport { VisitorContext } from \"./VisitorContext\";\nimport { ShaderLab } from \"../ShaderLab\";\nimport { GSErrorName } from \"../GSError\";\n// #if _VERBOSE\nimport { GSError } from \"../GSError\";\n// #endif\nimport { Logger, ReturnableObjectPool } from \"@galacean/engine\";\nimport { TempArray } from \"../TempArray\";\n\nexport const V3_GL_FragColor = \"GS_glFragColor\";\nexport const V3_GL_FragData = \"GS_glFragData\";\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 getFragDataCodeGen(index: string | number): string;\n abstract getReferencedMRTPropText(index: string | number, ident: string): 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 Token) {\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) {\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 Token) {\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 // #if _VERBOSE\n if (context._referencedVaryingList[V3_GL_FragColor]) {\n this._reportError(identNode.location, \"cannot use both gl_FragData and gl_FragColor\");\n }\n // #endif\n const mrtLexeme = this.getFragDataCodeGen(indexLexeme);\n context._referencedMRTList[mrtLexeme] = this.getReferencedMRTPropText(indexLexeme, mrtLexeme);\n return mrtLexeme;\n }\n return `${identLexeme}[${indexLexeme}]`;\n }\n return this.defaultCodeGen(node.children);\n }\n\n visitVariableIdentifier(node: ASTNode.VariableIdentifier): string {\n if (node.symbolInfo instanceof VarSymbol && node.symbolInfo.isGlobalVariable) {\n VisitorContext.context.referenceGlobal(node.lexeme, ESymbolType.VAR);\n }\n return node.lexeme;\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 const paramInfoList = call.fnSymbol.astNode.protoType.parameterList;\n\n if (paramList instanceof ASTNode.FunctionCallParameterList) {\n const plainParams: string[] = [];\n const params = paramList.paramNodes;\n\n for (let i = 0; i < params.length; i++) {\n if (\n !VisitorContext.context.isAttributeStruct(paramInfoList[i].typeInfo.typeLexeme) &&\n !VisitorContext.context.isVaryingStruct(paramInfoList[i].typeInfo.typeLexeme)\n ) {\n plainParams.push(params[i].codeGen(this));\n }\n }\n return `${call.fnSymbol.ident}(${plainParams.join(\", \")})`;\n }\n }\n return this.defaultCodeGen(node.children);\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 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 visitFunctionProtoType(node: ASTNode.FunctionProtoType): string {\n VisitorContext.context._curFn = node;\n return this.defaultCodeGen(node.children);\n }\n\n visitFunctionDefinition(node: ASTNode.FunctionDefinition): string {\n VisitorContext.context._curFn = undefined;\n return this.defaultCodeGen(node.children);\n }\n\n visitFunctionParameterList(node: ASTNode.FunctionParameterList): string {\n const params = node.parameterInfoList;\n return params\n .filter(\n (item) =>\n !VisitorContext.context.isAttributeStruct(item.typeInfo.typeLexeme) &&\n !VisitorContext.context.isVaryingStruct(item.typeInfo.typeLexeme)\n )\n .map((item) => item.astNode.codeGen(this))\n .join(\", \");\n }\n\n visitFunctionHeader(node: ASTNode.FunctionHeader): string {\n const returnType = node.returnType.typeSpecifier.lexeme;\n if (VisitorContext.context.isAttributeStruct(returnType) || VisitorContext.context.isVaryingStruct(returnType))\n return `void ${node.ident.lexeme}(`;\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 Token;\n if (cmd.type === EKeyword.RETURN) {\n const expr = children[1];\n if (expr instanceof ASTNode.Expression) {\n const returnVar = ParserUtils.unwrapNodeByType<ASTNode.VariableIdentifier>(\n expr,\n NoneTerminal.variable_identifier\n );\n if (returnVar?.typeInfo === VisitorContext.context.varyingStruct?.ident?.lexeme) {\n return \"\";\n }\n const returnFnCall = ParserUtils.unwrapNodeByType<ASTNode.FunctionCall>(expr, NoneTerminal.function_call);\n if (returnFnCall?.type === VisitorContext.context.varyingStruct?.ident?.lexeme) {\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 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","export enum EShaderStage {\n VERTEX,\n FRAGMENT,\n ALL\n}\n","import { CodeGenVisitor } from \"./CodeGenVisitor\";\nimport { ASTNode } from \"../parser/AST\";\nimport { ShaderData } from \"../parser/ShaderInfo\";\nimport { ESymbolType, FnSymbol, StructSymbol, SymbolInfo } from \"../parser/symbolTable\";\nimport { EShaderStage } from \"../common/Enums\";\nimport { IShaderInfo } from \"@galacean/engine-design\";\nimport { ICodeSegment } from \"./types\";\nimport { VisitorContext } from \"./VisitorContext\";\nimport { EKeyword } from \"../common\";\n\nconst defaultPrecision = `\n#ifdef GL_FRAGMENT_PRECISION_HIGH\n precision highp float;\n precision highp int;\n#else\n precision mediump float;\n precision mediump int;\n#endif\n`;\n\n/**\n * @internal\n */\nexport abstract class GLESVisitor extends CodeGenVisitor {\n protected _versionText: string = \"\";\n protected _extensions: string = \"\";\n private _globalCodeArray: ICodeSegment[] = [];\n\n abstract getAttributeDeclare(out: ICodeSegment[]): void;\n abstract getVaryingDeclare(out: ICodeSegment[]): void;\n abstract getMRTDeclare(out: ICodeSegment[]): void;\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 VisitorContext.context._passSymbolTable = node.shaderData.symbolTable;\n\n return {\n vertex: this.vertexMain(vertexEntry, node.shaderData),\n fragment: this._fragmentMain(fragmentEntry, node.shaderData)\n };\n }\n\n vertexMain(entry: string, data: ShaderData): string {\n const { symbolTable } = data;\n const fnSymbol = symbolTable.lookup(entry, ESymbolType.FN);\n if (!fnSymbol?.astNode) throw `no entry function found: ${entry}`;\n\n const fnNode = fnSymbol.astNode;\n VisitorContext.context.stage = EShaderStage.VERTEX;\n\n const returnType = fnNode.protoType.returnType;\n if (typeof returnType.type === \"string\") {\n const varyStruct = symbolTable.lookup(returnType.type, ESymbolType.STRUCT);\n if (!varyStruct) {\n this._reportError(returnType.location, `invalid varying struct: ${returnType.type}`);\n } else {\n VisitorContext.context.varyingStruct = varyStruct.astNode;\n }\n } else if (returnType.type !== EKeyword.VOID) {\n this._reportError(returnType.location, \"vertex main entry can only return struct or void.\");\n }\n\n const paramList = fnNode.protoType.parameterList;\n if (paramList?.length) {\n for (const paramInfo of paramList) {\n if (typeof paramInfo.typeInfo.type === \"string\") {\n const structSymbol = symbolTable.lookup(paramInfo.typeInfo.type, ESymbolType.STRUCT);\n if (!structSymbol) {\n this._reportError(paramInfo.astNode.location, `Not found attribute struct \"${paramInfo.typeInfo.type}\".`);\n continue;\n }\n VisitorContext.context.attributeStructs.push(structSymbol.astNode);\n for (const prop of structSymbol.astNode.propList) {\n VisitorContext.context.attributeList.push(prop);\n }\n } else {\n VisitorContext.context.attributeList.push(paramInfo);\n }\n }\n }\n\n const statements = fnNode.statements.codeGen(this);\n\n const { _globalCodeArray: globalCodeArray } = this;\n globalCodeArray.length = 0;\n\n this._getGlobalText(data, globalCodeArray);\n this.getAttributeDeclare(globalCodeArray);\n this.getVaryingDeclare(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();\n\n return `${this._versionText}\\n${globalCode}\\n\\nvoid main() ${statements}`;\n }\n\n private _fragmentMain(entry: string, data: ShaderData): string {\n const { symbolTable } = data;\n const fnSymbol = symbolTable.lookup(entry, ESymbolType.FN);\n if (!fnSymbol?.astNode) throw `no entry function found: ${entry}`;\n const fnNode = fnSymbol.astNode;\n\n const { returnStatement } = fnNode;\n if (returnStatement) {\n returnStatement.isFragReturnStatement = true;\n }\n\n const { context } = VisitorContext;\n context.stage = EShaderStage.FRAGMENT;\n\n const { type: returnDataType, location: returnLocation } = fnNode.protoType.returnType;\n if (typeof returnDataType === \"string\") {\n const mrtStruct = symbolTable.lookup(returnDataType, ESymbolType.STRUCT);\n if (!mrtStruct) {\n this._reportError(returnLocation, `invalid mrt struct: ${returnDataType}`);\n } else {\n context.mrtStruct = mrtStruct.astNode;\n }\n } else if (returnDataType !== EKeyword.VOID && returnDataType !== EKeyword.VEC4) {\n this._reportError(returnLocation, \"fragment main entry can only return struct or vec4.\");\n }\n\n const statements = fnNode.statements.codeGen(this);\n const { _globalCodeArray: globalCodeArray } = this;\n globalCodeArray.length = 0;\n\n this._getGlobalText(data, globalCodeArray);\n this.getVaryingDeclare(globalCodeArray);\n this.getMRTDeclare(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 return `${this._versionText}\\n${this._extensions}\\n${defaultPrecision}\\n${globalCode}\\n\\nvoid main() ${statements}`;\n }\n\n private _getGlobalText(\n data: ShaderData,\n textList: ICodeSegment[],\n lastLength: number = 0,\n _serialized: Set<string> = new Set()\n ): ICodeSegment[] {\n const { _referencedGlobals } = VisitorContext.context;\n\n if (lastLength === Object.keys(_referencedGlobals).length) {\n for (const precision of data.globalPrecisions) {\n textList.push({ text: precision.codeGen(this), index: precision.location.start.index });\n }\n return textList;\n }\n\n lastLength = Object.keys(_referencedGlobals).length;\n for (const ident in _referencedGlobals) {\n const sm = _referencedGlobals[ident];\n\n if (_serialized.has(ident)) continue;\n _serialized.add(ident);\n\n if (sm instanceof SymbolInfo) {\n if (sm.symbolType === ESymbolType.VAR) {\n textList.push({ text: `uniform ${sm.astNode.codeGen(this)}`, index: sm.astNode.location.start.index });\n } else {\n textList.push({ text: sm.astNode!.codeGen(this), index: sm.astNode!.location.start.index });\n }\n } else {\n textList.push({ text: sm.codeGen(this), index: sm.location.start.index });\n }\n }\n return this._getGlobalText(data, textList, lastLength, _serialized);\n }\n}\n","import { BaseToken } from \"../common/BaseToken\";\nimport { ASTNode } from \"../parser/AST\";\nimport { GLESVisitor } from \"./GLESVisitor\";\nimport { VisitorContext } from \"./VisitorContext\";\nimport { ICodeSegment } from \"./types\";\n\nexport class GLES100Visitor extends GLESVisitor {\n override _versionText: string = `#version 100`;\n override _extensions: string = [\n \"GL_EXT_shader_texture_lod\",\n \"GL_OES_standard_derivatives\",\n \"GL_EXT_draw_buffers\",\n \"GL_EXT_frag_depth\"\n ]\n .map((e) => `#extension ${e} : enable\\n`)\n .join(\"\");\n\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 getFragDataCodeGen(index: string | number): string {\n return `gl_FragData[${index}]`;\n }\n\n override getReferencedMRTPropText(index: string | number, ident: string): string {\n return \"\";\n }\n\n override getAttributeDeclare(out: ICodeSegment[]): void {\n for (const item of Object.values(VisitorContext.context._referencedAttributeList)) {\n out.push({\n text: `attribute ${item.typeInfo.typeLexeme} ${item.ident.lexeme};`,\n index: item.ident.location.start.index\n });\n }\n }\n\n override getVaryingDeclare(out: ICodeSegment[]): void {\n for (const item of Object.values(VisitorContext.context._referencedVaryingList)) {\n out.push({\n text: `varying ${item.typeInfo.typeLexeme} ${item.ident.lexeme};`,\n index: item.ident.location.start.index\n });\n }\n }\n\n override getMRTDeclare(out: ICodeSegment[]): void {\n return;\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.mrtStruct!.propList.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 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 { ASTNode, TreeNode } from \"../parser/AST\";\nimport { SymbolType } from \"../parser/types\";\nimport { BaseToken as Token } from \"../common/BaseToken\";\nimport { EKeyword, ETokenType } from \"../common\";\nimport { GLESVisitor } from \"./GLESVisitor\";\nimport { EShaderStage } from \"../common/Enums\";\nimport { ICodeSegment } from \"./types\";\nimport { VisitorContext } from \"./VisitorContext\";\nimport { ShaderLab } from \"../ShaderLab\";\nimport { V3_GL_FragColor, V3_GL_FragData } from \"./CodeGenVisitor\";\n\nexport class GLES300Visitor extends GLESVisitor {\n override _versionText: string = \"#version 300 es\";\n\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 override getFragDataCodeGen(index: string | number): string {\n return `${V3_GL_FragData}_${index}`;\n }\n\n override getReferencedMRTPropText(index: string | number, ident: string): string {\n return `layout(location = ${index}) out vec4 ${ident};`;\n }\n\n override getAttributeDeclare(out: ICodeSegment[]): void {\n for (const item of Object.values(VisitorContext.context._referencedAttributeList)) {\n out.push({\n text: `in ${item.typeInfo.typeLexeme} ${item.ident.lexeme};`,\n index: item.ident.location.start.index\n });\n }\n }\n\n override getVaryingDeclare(out: ICodeSegment[]): void {\n const qualifier = VisitorContext.context.stage === EShaderStage.FRAGMENT ? \"in\" : \"out\";\n const values = Object.values(VisitorContext.context._referencedVaryingList);\n for (let i = 0; i < values.length; i++) {\n const item = values[i];\n out.push({\n text: `${item.qualifier ?? qualifier} ${item.typeInfo.typeLexeme} ${item.ident.lexeme};`,\n index: item.ident.location.start.index\n });\n }\n }\n\n override getMRTDeclare(out: ICodeSegment[]): void {\n const referencedMRTList = VisitorContext.context._referencedMRTList;\n for (let ident in referencedMRTList) {\n const info = referencedMRTList[ident];\n if (typeof info === \"string\") {\n out.push({\n text: info,\n index: Number.MAX_SAFE_INTEGER\n });\n } else {\n out.push({\n text: this.getReferencedMRTPropText(info.mrtIndex, ident),\n index: info.ident.location.start.index\n });\n }\n }\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 if (node.ident === \"texture2D\" || node.ident === \"textureCube\") {\n ident = \"texture\";\n } else if (node.ident === \"texture2DProj\") {\n ident = \"textureProj\";\n } else if (VisitorContext.context.stage === EShaderStage.FRAGMENT) {\n switch (node.ident) {\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 }\n return ident;\n }\n\n override visitVariableIdentifier(node: ASTNode.VariableIdentifier): string {\n const { context } = VisitorContext;\n if (context.stage === EShaderStage.FRAGMENT && node.lexeme === \"gl_FragColor\") {\n // #if _VERBOSE\n if (context._referencedMRTList[\"gl_FragData\"]) {\n this._reportError(node.location, \"cannot use both gl_FragData and gl_FragColor\");\n }\n if (context.mrtStruct) {\n this._reportError(node.location, \"gl_FragColor cannot be used with MRT (Multiple Render Targets).\");\n }\n // #endif\n this._registerFragColorVariable(node);\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 const { mrtStruct } = VisitorContext.context;\n if (mrtStruct) {\n return \"\";\n }\n this._registerFragColorVariable(node);\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(node: TreeNode) {\n const { _referencedVaryingList } = VisitorContext.context;\n if (!_referencedVaryingList[V3_GL_FragColor]) {\n const token = Token.pool.get();\n token.set(ETokenType.ID, V3_GL_FragColor, ShaderLab.createPosition(0, 0, 0));\n _referencedVaryingList[V3_GL_FragColor] = {\n ident: token,\n typeInfo: new SymbolType(EKeyword.VEC4, \"vec4\"),\n qualifier: \"out\",\n astNode: node\n };\n }\n }\n}\n","function _is_native_reflect_construct() {\n // Since Reflect.construct can't be properly polyfilled, some\n // implementations (e.g. core-js@2) don't set the correct internal slots.\n // Those polyfills don't allow us to subclass built-ins, so we need to\n // use our fallback implementation.\n try {\n // If the internal slots aren't set, this throws an error similar to\n // TypeError: this is not a Boolean object.\n var result = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function() {}));\n } catch (_) {}\n return (_is_native_reflect_construct = function() {\n return !!result;\n })();\n}\n\nexport { _is_native_reflect_construct as _ };\n","import { _ as _is_native_reflect_construct } from \"./_is_native_reflect_construct.js\";\nimport { _ as _set_prototype_of } from \"./_set_prototype_of.js\";\nfunction _construct(Parent, args, Class) {\n if (_is_native_reflect_construct()) _construct = Reflect.construct;\n else {\n _construct = function construct(Parent, args, Class) {\n var a = [null];\n a.push.apply(a, args);\n var Constructor = Function.bind.apply(Parent, a);\n var instance = new Constructor();\n\n if (Class) _set_prototype_of(instance, Class.prototype);\n\n return instance;\n };\n }\n\n return _construct.apply(null, arguments);\n}\nexport { _construct as _ };\n","function _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 { EKeyword } from \"../common\";\n\nexport const KeywordMap = new Map([\n [\"RenderQueueType\", EKeyword.GS_RenderQueueType],\n [\"BlendState\", EKeyword.GS_BlendState],\n [\"DepthState\", EKeyword.GS_DepthState],\n [\"StencilState\", EKeyword.GS_StencilState],\n [\"RasterState\", EKeyword.GS_RasterState],\n [\"EditorProperties\", EKeyword.GS_EditorProperties],\n [\"EditorMacros\", EKeyword.GS_EditorMacros],\n [\"Editor\", EKeyword.GS_Editor],\n [\"Tags\", EKeyword.GS_Tags],\n [\"VertexShader\", EKeyword.GS_VertexShader],\n [\"FragmentShader\", EKeyword.GS_FragmentShader],\n [\"SubShader\", EKeyword.GS_SubShader],\n [\"Pass\", EKeyword.GS_Pass],\n [\"BlendFactor\", EKeyword.GS_BlendFactor],\n [\"BlendOperation\", EKeyword.GS_BlendOperation],\n [\"Bool\", EKeyword.GS_Bool],\n [\"Number\", EKeyword.GS_Number],\n [\"CompareFunction\", EKeyword.GS_CompareFunction],\n [\"StencilOperation\", EKeyword.GS_StencilOperation],\n [\"CullMode\", EKeyword.GS_CullMode],\n [\"true\", EKeyword.TRUE],\n [\"false\", EKeyword.FALSE],\n [\"UsePass\", EKeyword.GS_UsePass],\n [\"Color\", EKeyword.GS_Color]\n]);\n","import BaseScanner from \"../common/BaseScanner\";\n\nexport default class Scanner extends BaseScanner {\n constructor(source: string, kws: Map<string, number> = new Map()) {\n super(source, kws);\n }\n\n /**\n * split by space\n */\n scanWord(): string {\n this.skipCommentsAndSpace();\n const start = this._currentIndex;\n while (/\\S/.test(this.getCurChar()) && !this.isEnd()) this._advance();\n return this._source.substring(start, this._currentIndex);\n }\n\n scanNumber(): number {\n this.skipCommentsAndSpace();\n const start = this._currentIndex;\n while (/[0-9]/.test(this.getCurChar())) this._advance();\n if (this.getCurChar() === \".\") {\n this._advance();\n while (/[0-9]/.test(this.getCurChar())) this._advance();\n }\n return Number(this._source.substring(start, this._currentIndex));\n }\n\n // #if _VERBOSE\n scanToCharacter(char: string): void {\n while (this.getCurChar() !== char && !this.isEnd()) {\n this._advance();\n }\n this._advance();\n }\n // #endif\n}\n","import { Logger } from \"@galacean/engine\";\nimport { TokenType } from \"../common\";\nimport { BaseSymbolTable, IBaseSymbol } from \"../common/BaseSymbolTable\";\n\nexport interface ISymbol extends IBaseSymbol {\n type: number;\n value?: any;\n}\n\nexport default class ContentSymbolTable extends BaseSymbolTable<ISymbol> {\n override insert(sm: ISymbol): void {\n const entry = this._table.get(sm.ident) ?? [];\n for (let i = 0; i < entry.length; i++) {\n if (entry[i].type === sm.type) {\n Logger.warn(\"replace symbol:\", sm.ident);\n entry[i] = sm;\n return;\n }\n }\n entry.push(sm);\n this._table.set(sm.ident, entry);\n }\n\n lookup(ident: string, type: TokenType): ISymbol | undefined {\n const entry = this._table.get(ident);\n if (entry) {\n for (let length = entry.length, i = 0; i < length; i++) {\n const item = entry[i];\n if (item.type === type) return item;\n }\n }\n }\n}\n","import { SymbolTableStack } from \"../common/BaseSymbolTable\";\nimport { BaseToken } from \"../common/BaseToken\";\nimport { EKeyword, ETokenType, TokenType } from \"../common\";\nimport { ShaderPosition } from \"../common\";\nimport { KeywordMap } from \"./KeywordMap\";\nimport Scanner from \"./Scanner\";\nimport ContentSymbolTable, { ISymbol } from \"./ContentSymbolTable\";\nimport {\n RenderStateDataKey,\n Color,\n RenderQueueType,\n CompareFunction,\n StencilOperation,\n BlendOperation,\n BlendFactor,\n CullMode,\n Logger\n} from \"@galacean/engine\";\nimport {\n IStatement,\n IShaderContent,\n ISubShaderContent,\n IShaderPassContent,\n IRenderStates\n} from \"@galacean/engine-design\";\nimport { GSErrorName } from \"../GSError\";\n// #if _VERBOSE\nimport { GSError } from \"../GSError\";\n// #endif\nimport { ShaderLabUtils } from \"../ShaderLabUtils\";\n\nconst EngineType = [\n EKeyword.GS_RenderQueueType,\n EKeyword.GS_BlendFactor,\n EKeyword.GS_BlendOperation,\n EKeyword.GS_Bool,\n EKeyword.GS_Number,\n EKeyword.GS_Color,\n EKeyword.GS_CompareFunction,\n EKeyword.GS_StencilOperation,\n EKeyword.GS_CullMode\n];\n\nconst RenderStateType = [\n EKeyword.GS_BlendState,\n EKeyword.GS_DepthState,\n EKeyword.GS_RasterState,\n EKeyword.GS_StencilState\n];\n\n/**\n * @internal\n */\nexport class ShaderContentParser {\n static _engineType = { RenderQueueType, CompareFunction, StencilOperation, BlendOperation, BlendFactor, CullMode };\n\n static _errors: GSError[] = [];\n\n private static _symbolTableStack: SymbolTableStack<ISymbol, ContentSymbolTable> = new SymbolTableStack();\n\n static reset() {\n this._errors.length = 0;\n this._symbolTableStack.clear();\n this._newScope();\n }\n\n static parse(source: string): IShaderContent {\n const start = performance.now();\n\n const scanner = new Scanner(source, KeywordMap);\n const ret = {\n subShaders: [],\n globalContents: [],\n renderStates: { constantMap: {}, variableMap: {} }\n } as IShaderContent;\n\n scanner.scanText(\"Shader\");\n ret.name = scanner.scanPairedText('\"', '\"');\n scanner.scanText(\"{\");\n\n scanner.skipCommentsAndSpace();\n this._parseShaderStatements(ret, scanner);\n\n const shaderGlobalStatements = ret.globalContents;\n const shaderRenderStates = ret.renderStates;\n for (let i = 0; i < ret.subShaders.length; i++) {\n const subShader = ret.subShaders[i];\n const curSubShaderGlobalStatements = shaderGlobalStatements.concat(subShader.globalContents);\n const constMap = { ...shaderRenderStates.constantMap, ...subShader.renderStates.constantMap };\n const variableMap = { ...shaderRenderStates.variableMap, ...subShader.renderStates.variableMap };\n\n for (let i = 0; i < subShader.passes.length; i++) {\n const pass = subShader.passes[i];\n Object.assign(pass.renderStates.constantMap, constMap);\n Object.assign(pass.renderStates.variableMap, variableMap);\n if (pass.isUsePass) continue;\n // @ts-ignore\n const passGlobalStatements = curSubShaderGlobalStatements.concat(pass.globalContents);\n pass.contents = passGlobalStatements.map((item) => item.content).join(\"\\n\");\n }\n }\n\n Logger.info(`[content compilation] cost time ${performance.now() - start}ms`);\n\n return ret;\n }\n\n private static _isRenderStateDeclarator(token: BaseToken) {\n return RenderStateType.includes(token.type);\n }\n\n private static _isEngineType(token: BaseToken) {\n return EngineType.includes(token.type);\n }\n\n private static _lookupSymbolByType(ident: string, type: TokenType): ISymbol | undefined {\n const stack = ShaderContentParser._symbolTableStack.stack;\n for (let length = stack.length, i = length - 1; i >= 0; i--) {\n const symbolTable = stack[i];\n const ret = symbolTable.lookup(ident, type);\n if (ret) return ret;\n }\n }\n\n private static _parseShaderStatements(ret: IShaderContent, scanner: Scanner) {\n let braceLevel = 1;\n let start = scanner.getCurPosition();\n\n while (true) {\n const word = scanner.scanToken();\n switch (word.type) {\n case EKeyword.GS_SubShader:\n this._addGlobalStatement(ret, scanner, start, word.lexeme.length);\n const subShader = this._parseSubShader(scanner);\n ret.subShaders.push(subShader);\n start = scanner.getCurPosition();\n break;\n\n case EKeyword.GS_EditorProperties:\n case EKeyword.GS_EditorMacros:\n case EKeyword.GS_Editor:\n this._addGlobalStatement(ret, scanner, start, word.lexeme.length);\n scanner.scanPairedText(\"{\", \"}\", true);\n start = scanner.getCurPosition();\n break;\n\n case EKeyword.GS_RenderQueueType:\n this._addGlobalStatement(ret, scanner, start, word.lexeme.length);\n this._parseRenderQueueAssignment(ret, scanner);\n start = scanner.getCurPosition();\n break;\n\n case ETokenType.NOT_WORD:\n if (word.lexeme === \"{\") braceLevel += 1;\n else if (word.lexeme === \"}\") {\n braceLevel -= 1;\n if (braceLevel === 0) {\n this._addGlobalStatement(ret, scanner, start, word.lexeme.length);\n this._symbolTableStack.dropScope();\n return;\n }\n }\n\n default:\n if (ShaderContentParser._isRenderStateDeclarator(word)) {\n this._addGlobalStatement(ret, scanner, start, word.lexeme.length);\n this._parseRenderStateDeclarationOrAssignment(ret, word, scanner);\n start = scanner.getCurPosition();\n break;\n } else if (ShaderContentParser._isEngineType(word)) {\n this._addGlobalStatement(ret, scanner, start, word.lexeme.length);\n this._parseVariableDeclaration(word.type, scanner);\n start = scanner.getCurPosition();\n break;\n }\n }\n }\n }\n\n private static _parseRenderStateDeclarationOrAssignment(\n ret: { renderStates: IRenderStates },\n stateToken: BaseToken,\n scanner: Scanner\n ) {\n const ident = scanner.scanToken();\n let isDeclaration: boolean;\n if (ident.type === ETokenType.ID) {\n isDeclaration = true;\n scanner.scanText(\"{\");\n } else if (ident.lexeme === \"{\") {\n isDeclaration = false;\n } else if (ident.lexeme === \"=\") {\n const variable = scanner.scanToken();\n scanner.scanText(\";\");\n const sm = ShaderContentParser._lookupSymbolByType(variable.lexeme, stateToken.type);\n if (!sm?.value) {\n const error = ShaderLabUtils.createGSError(\n `Invalid \"${stateToken.lexeme}\" variable: ${variable.lexeme}`,\n GSErrorName.CompilationError,\n scanner.source,\n variable.location\n );\n // #if _VERBOSE\n this._errors.push(<GSError>error);\n return;\n // #endif\n }\n const renderState = sm.value as IRenderStates;\n Object.assign(ret.renderStates.constantMap, renderState.constantMap);\n Object.assign(ret.renderStates.variableMap, renderState.variableMap);\n return;\n }\n\n const renderState = this._parseRenderStatePropList(stateToken.lexeme, scanner);\n if (isDeclaration) {\n this._symbolTableStack.insert({ ident: ident.lexeme, type: stateToken.type, value: renderState });\n } else {\n Object.assign(ret.renderStates.constantMap, renderState.constantMap);\n Object.assign(ret.renderStates.variableMap, renderState.variableMap);\n }\n }\n\n private static _parseVariableDeclaration(type: number, scanner: Scanner) {\n const token = scanner.scanToken();\n scanner.scanText(\";\");\n this._symbolTableStack.insert({ type: token.type, ident: token.lexeme });\n }\n\n private static _newScope() {\n const symbolTable = new ContentSymbolTable();\n this._symbolTableStack.newScope(symbolTable);\n }\n\n private static _dropScope() {\n this._symbolTableStack.dropScope();\n }\n\n private static _parseRenderStatePropList(state: string, scanner: Scanner): IRenderStates {\n const ret: IRenderStates = { constantMap: {}, variableMap: {} };\n while (scanner.getCurChar() !== \"}\") {\n this._parseRenderStatePropItem(ret, state, scanner);\n scanner.skipCommentsAndSpace();\n }\n scanner._advance();\n return ret;\n }\n\n private static _parseRenderStatePropItem(ret: IRenderStates, state: string, scanner: Scanner) {\n let renderStateProp = scanner.scanToken().lexeme;\n const op = scanner.scanToken();\n if (state === \"BlendState\" && renderStateProp !== \"BlendColor\" && renderStateProp !== \"AlphaToCoverage\") {\n let idx = 0;\n if (op.lexeme === \"[\") {\n idx = scanner.scanNumber();\n scanner.scanText(\"]\");\n scanner.scanText(\"=\");\n } else if (op.lexeme !== \"=\") {\n const error = ShaderLabUtils.createGSError(\n `Invalid syntax, expect character '=', but got ${op.lexeme}`,\n GSErrorName.CompilationError,\n scanner.source,\n scanner.getCurPosition()\n );\n // #if _VERBOSE\n this._errors.push(<GSError>error);\n scanner.scanToCharacter(\";\");\n return;\n // #endif\n }\n renderStateProp += idx;\n }\n\n renderStateProp = state + renderStateProp;\n const renderStateElementKey = RenderStateDataKey[renderStateProp];\n if (renderStateElementKey == undefined) {\n const error = ShaderLabUtils.createGSError(\n `Invalid render state element ${renderStateProp}`,\n GSErrorName.CompilationError,\n scanner.source,\n scanner.getCurPosition()\n );\n // #if _VERBOSE\n this._errors.push(<GSError>error);\n scanner.scanToCharacter(\";\");\n return;\n // #endif\n }\n\n scanner.skipCommentsAndSpace();\n let value: any;\n if (/[0-9.]/.test(scanner.getCurChar())) {\n value = scanner.scanNumber();\n } else {\n const token = scanner.scanToken();\n if (token.type === EKeyword.TRUE) value = true;\n else if (token.type === EKeyword.FALSE) value = false;\n else if (token.type === EKeyword.GS_Color) {\n scanner.scanText(\"(\");\n const args: number[] = [];\n while (true) {\n args.push(scanner.scanNumber());\n scanner.skipCommentsAndSpace();\n const peek = scanner.peek(1);\n if (peek === \")\") {\n scanner._advance();\n break;\n }\n scanner.scanText(\",\");\n }\n value = new Color(...args);\n } else if (scanner.getCurChar() === \".\") {\n scanner._advance();\n const engineTypeProp = scanner.scanToken();\n value = ShaderContentParser._engineType[token.lexeme]?.[engineTypeProp.lexeme];\n if (value == undefined) {\n const error = ShaderLabUtils.createGSError(\n `Invalid engine constant: ${token.lexeme}.${engineTypeProp.lexeme}`,\n GSErrorName.CompilationError,\n scanner.source,\n engineTypeProp.location\n );\n // #if _VERBOSE\n this._errors.push(<GSError>error);\n scanner.scanToCharacter(\";\");\n return;\n // #endif\n }\n } else {\n value = token.lexeme;\n }\n }\n scanner.scanText(\";\");\n if (typeof value === \"string\") {\n ret.variableMap[renderStateElementKey] = value;\n } else {\n ret.constantMap[renderStateElementKey] = value;\n }\n }\n\n private static _parseRenderQueueAssignment(ret: { renderStates: IRenderStates }, scanner: Scanner) {\n scanner.scanText(\"=\");\n const word = scanner.scanToken();\n scanner.scanText(\";\");\n const value = ShaderContentParser._engineType.RenderQueueType[word.lexeme];\n const key = RenderStateDataKey.RenderQueueType;\n if (value == undefined) {\n ret.renderStates.variableMap[key] = word.lexeme;\n } else {\n ret.renderStates.constantMap[key] = value;\n }\n }\n\n private static _addGlobalStatement(\n ret: { globalContents: IStatement[] },\n scanner: Scanner,\n start: ShaderPosition,\n offset: number\n ) {\n if (scanner.current > start.index + offset) {\n ret.globalContents.push({\n range: { start, end: { ...scanner.getCurPosition(), index: scanner.current - offset - 1 } },\n content: scanner.source.substring(start.index, scanner.current - offset - 1)\n });\n }\n }\n\n private static _parseSubShader(scanner: Scanner): ISubShaderContent {\n this._newScope();\n const ret = {\n passes: [],\n globalContents: [],\n renderStates: { constantMap: {}, variableMap: {} },\n tags: {}\n } as ISubShaderContent;\n let braceLevel = 1;\n ret.name = scanner.scanPairedText('\"', '\"');\n scanner.scanText(\"{\");\n\n scanner.skipCommentsAndSpace();\n let start = scanner.getCurPosition();\n\n while (true) {\n const word = scanner.scanToken();\n switch (word.type) {\n case EKeyword.GS_Pass:\n this._addGlobalStatement(ret, scanner, start, word.lexeme.length);\n const pass = this._parsePass(scanner);\n ret.passes.push(pass);\n start = scanner.getCurPosition();\n break;\n\n case EKeyword.GS_RenderQueueType:\n this._addGlobalStatement(ret, scanner, start, word.lexeme.length);\n this._parseRenderQueueAssignment(ret, scanner);\n start = scanner.getCurPosition();\n break;\n\n case EKeyword.GS_UsePass:\n this._addGlobalStatement(ret, scanner, start, word.lexeme.length);\n const name = scanner.scanPairedText('\"', '\"');\n // @ts-ignore\n ret.passes.push({ name, isUsePass: true, renderStates: { constantMap: {}, variableMap: {} }, tags: {} });\n start = scanner.getCurPosition();\n break;\n\n case EKeyword.GS_Tags:\n this._addGlobalStatement(ret, scanner, start, word.lexeme.length);\n this._parseTags(ret, scanner);\n start = scanner.getCurPosition();\n break;\n\n case ETokenType.NOT_WORD:\n if (word.lexeme === \"{\") braceLevel += 1;\n else if (word.lexeme === \"}\") {\n braceLevel -= 1;\n if (braceLevel === 0) {\n this._addGlobalStatement(ret, scanner, start, word.lexeme.length);\n this._dropScope();\n return ret;\n }\n }\n\n default:\n if (ShaderContentParser._isRenderStateDeclarator(word)) {\n this._addGlobalStatement(ret, scanner, start, word.lexeme.length);\n this._parseRenderStateDeclarationOrAssignment(ret, word, scanner);\n start = scanner.getCurPosition();\n break;\n } else if (ShaderContentParser._isEngineType(word)) {\n this._addGlobalStatement(ret, scanner, start, word.lexeme.length);\n this._parseVariableDeclaration(word.type, scanner);\n start = scanner.getCurPosition();\n break;\n }\n }\n }\n }\n\n private static _parseTags(ret: { tags?: Record<string, number | string | boolean> }, scanner: Scanner) {\n scanner.scanText(\"{\");\n while (true) {\n const ident = scanner.scanToken();\n scanner.scanText(\"=\");\n const value = scanner.scanPairedText('\"', '\"');\n scanner.skipCommentsAndSpace();\n\n ret.tags[ident.lexeme] = value;\n\n if (scanner.peek(1) === \"}\") {\n scanner._advance();\n return;\n }\n scanner.scanText(\",\");\n }\n }\n\n private static _parsePass(scanner: Scanner): IShaderPassContent {\n this._newScope();\n const ret = {\n globalContents: [],\n renderStates: { constantMap: {}, variableMap: {} },\n tags: {}\n } as IShaderPassContent & {\n globalContents: IStatement[];\n };\n ret.name = scanner.scanPairedText('\"', '\"');\n scanner.scanText(\"{\");\n let braceLevel = 1;\n\n scanner.skipCommentsAndSpace();\n let start = scanner.getCurPosition();\n\n while (true) {\n const word = scanner.scanToken();\n switch (word.type) {\n case EKeyword.GS_RenderQueueType:\n this._addGlobalStatement(ret, scanner, start, word.lexeme.length);\n this._parseRenderQueueAssignment(ret, scanner);\n start = scanner.getCurPosition();\n break;\n\n case EKeyword.GS_Tags:\n this._addGlobalStatement(ret, scanner, start, word.lexeme.length);\n this._parseTags(ret, scanner);\n start = scanner.getCurPosition();\n break;\n\n case EKeyword.GS_VertexShader:\n case EKeyword.GS_FragmentShader:\n this._addGlobalStatement(ret, scanner, start, word.lexeme.length);\n scanner.scanText(\"=\");\n const entry = scanner.scanToken();\n if (ret[word.lexeme]) {\n const error = ShaderLabUtils.createGSError(\n \"reassign main entry\",\n GSErrorName.CompilationError,\n scanner.source,\n scanner.getCurPosition()\n );\n // #if _VERBOSE\n Logger.error(error.toString());\n throw error;\n // #endif\n }\n const key = word.type === EKeyword.GS_VertexShader ? \"vertexEntry\" : \"fragmentEntry\";\n ret[key] = entry.lexeme;\n scanner.scanText(\";\");\n start = scanner.getCurPosition();\n break;\n\n case ETokenType.NOT_WORD:\n if (word.lexeme === \"{\") braceLevel += 1;\n else if (word.lexeme === \"}\") {\n braceLevel -= 1;\n if (braceLevel === 0) {\n this._addGlobalStatement(ret, scanner, start, word.lexeme.length);\n this._dropScope();\n return ret;\n }\n }\n\n default:\n if (ShaderContentParser._isRenderStateDeclarator(word)) {\n this._addGlobalStatement(ret, scanner, start, word.lexeme.length);\n this._parseRenderStateDeclarationOrAssignment(ret, word, scanner);\n start = scanner.getCurPosition();\n break;\n } else if (ShaderContentParser._isEngineType(word)) {\n this._addGlobalStatement(ret, scanner, start, word.lexeme.length);\n this._parseVariableDeclaration(word.type, scanner);\n start = scanner.getCurPosition();\n break;\n }\n }\n }\n }\n}\n","import { Lexer } from \"./lexer\";\nimport { ShaderTargetParser } from \"./parser\";\nimport { Preprocessor } from \"./preprocessor\";\nimport { GLES100Visitor, GLES300Visitor } from \"./codeGen\";\nimport { IShaderContent, IShaderLab } from \"@galacean/engine-design\";\nimport { ShaderContentParser } from \"./contentParser\";\n// @ts-ignore\nimport { Logger, ShaderLib, ShaderMacro, ShaderPlatformTarget } from \"@galacean/engine\";\nimport { ShaderPosition, ShaderRange } from \"./common\";\n// #if _VERBOSE\nimport { GSError } from \"./GSError\";\n// #endif\nimport { PpParser } from \"./preprocessor/PpParser\";\nimport { ShaderLabUtils } from \"./ShaderLabUtils\";\nimport { IShaderProgramSource } from \"@galacean/engine-design/types/shader-lab/IShaderProgramSource\";\n\n/** @internal */\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 // #if _VERBOSE\n /** Retrieve the compilation errors */\n readonly errors: Error[] = [];\n // #endif\n\n _parseShaderPass(\n source: string,\n vertexEntry: string,\n fragmentEntry: string,\n macros: ShaderMacro[],\n backend: ShaderPlatformTarget,\n platformMacros: string[],\n basePathForIncludeKey: string\n ): IShaderProgramSource | undefined {\n Preprocessor.reset(ShaderLib, basePathForIncludeKey);\n for (const macro of macros) {\n Preprocessor.addPredefinedMacro(macro.name, macro.value);\n }\n\n for (let i = 0; i < platformMacros.length; i++) {\n Preprocessor.addPredefinedMacro(platformMacros[i]);\n }\n\n const preprocessorStart = performance.now();\n const ppdContent = Preprocessor.process(source);\n // #if _VERBOSE\n if (PpParser._errors.length > 0) {\n for (const err of PpParser._errors) {\n this.errors.push(<GSError>err);\n }\n this._logErrors();\n return undefined;\n }\n // #endif\n\n Logger.info(`[pass compilation - preprocessor] cost time ${performance.now() - preprocessorStart}ms`);\n\n const lexer = new Lexer(ppdContent);\n const tokens = lexer.tokenize();\n\n const { _parser: parser } = ShaderLab;\n\n ShaderLab._processingPassText = ppdContent;\n const program = parser.parse(tokens);\n\n // #if _VERBOSE\n for (const err of parser.errors) {\n this.errors.push(err);\n }\n // #endif\n if (!program) {\n // #if _VERBOSE\n this._logErrors();\n // #endif\n return undefined;\n }\n\n const codeGen =\n backend === ShaderPlatformTarget.GLES100 ? GLES100Visitor.getVisitor() : GLES300Visitor.getVisitor();\n\n const start = performance.now();\n const ret = codeGen.visitShaderProgram(program, vertexEntry, fragmentEntry);\n Logger.info(`[CodeGen] cost time: ${performance.now() - start}ms`);\n ShaderLab._processingPassText = undefined;\n\n // #if _VERBOSE\n for (const err of codeGen.errors) {\n this.errors.push(err);\n }\n this._logErrors();\n // #endif\n\n return ret;\n }\n\n _parseShaderContent(shaderSource: string): IShaderContent {\n ShaderLabUtils.clearAllShaderLabObjectPool();\n ShaderContentParser.reset();\n const ret = ShaderContentParser.parse(shaderSource);\n\n // #if _VERBOSE\n this.errors.length = 0;\n for (const error of ShaderContentParser._errors) {\n this.errors.push(error);\n }\n // #endif\n\n return ret;\n }\n\n // #if _VERBOSE\n /**\n * @internal\n */\n _logErrors() {\n const errors = this.errors;\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\n// #if _VERBOSE\nexport { Preprocessor } from \"./preprocessor\";\nexport * from \"./GSError\";\n// #endif\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","EKeyword","KeywordTable","Map","ATTRIBUTE","CONST","BOOL","FLOAT","DOUBLE","INT","UINT","BREAK","CONTINUE","DO","ELSE","FOR","IF","WHILE","DISCARD","RETURN","BVEC2","BVEC3","BVEC4","IVEC2","IVEC3","IVEC4","UVEC2","UVEC3","UVEC4","VEC2","VEC3","VEC4","MAT2","MAT3","MAT4","IN","OUT","INOUT","SAMPLER2D","SAMPLER_CUBE","SAMPLER3D","SAMPLER2D_SHADOW","SAMPLER_CUBE_SHADOW","SAMPLER2D_ARRAY","SAMPLER2D_ARRAY_SHADOW","I_SAMPLER2D","I_SAMPLER3D","I_SAMPLER_CUBE","I_SAMPLER2D_ARRAY","U_SAMPLER2D","U_SAMPLER3D","U_SAMPLER_CUBE","U_SAMPLER2D_ARRAY","STRUCT","VOID","TRUE","FALSE","PRECISION","PRECISE","HIGHP","MEDIUMP","LOWP","INVARIANT","FLAT","SMOOTH","NOPERSPECTIVE","CENTROID","LAYOUT","LOCATION","ETokenType","TypeAny","ShaderLabUtils","createObjectPool","type","pool","ClearableObjectPool","_shaderLabObjectPoolSet","push","clearAllShaderLabObjectPool","i","n","length","clear","createGSError","message","errorName","source","location","file","Logger","error","BaseToken","lexeme","arg","ShaderLab","createPosition","createRange","EOF","LexerUtils","isNum","charCode","isLetter","isAlpha","isPpCharacters","isSpace","GSErrorName","BaseScanner","kws","_currentIndex","_source","_keywordsMap","getCurPosition","isEnd","getCurChar","getCurCharCode","charCodeAt","advance","count","_advance","skipSpace","includeLineBreak","spaceChars","_spaceCharsWithBreak","_spaceChars","curChar","_checkIsIn","skipCommentsAndSpace","peek","to","offset","substring","scanText","text","throwError","pos","msgs","join","ScannerError","scanPairedText","left","right","balanced","skipLeading","level","scanToken","onToken","splitCharRegex","test","token","get","NOT_WORD","tokenType","ID","range","checked","chars","current","Lexer","reset","tokenize","_scanWord","_scanNum","_getPosition","LEFT_ASSIGN","LEFT_OP","LE_OP","LEFT_ANGLE","RIGHT_ASSIGN","RIGHT_OP","GE_OP","RIGHT_ANGLE","INC_OP","ADD_ASSIGN","PLUS","DEC_OP","SUB_ASSIGN","DASH","EQ_OP","EQUAL","NE_OP","BANG","AND_OP","AMPERSAND","OR_OP","OR_ASSIGN","VERTICAL_BAR","XOR_OP","XOR_ASSIGN","CARET","MUL_ASSIGN","STAR","DIV_ASSIGN","SLASH","MOD_ASSIGN","PERCENT","LEFT_PAREN","RIGHT_PAREN","LEFT_BRACE","RIGHT_BRACE","LEFT_BRACKET","RIGHT_BRACKET","_scanNumAfterDot","DOT","COMMA","COLON","SEMICOLON","TILDE","QUESTION","_scanStringConst","buffer","STRING_CONST","FLOAT_CONSTANT","word","kt","_scanFloatSuffix","_scanIntegerSuffix","INT_CONSTANT","EAction","ShaderData","globalPrecisions","SymbolDataType","arraySpecifier","typeLexeme","ESymbolType","SymbolInfo","ident","symbolType","astNode","dataType","signature","FnSymbol","protoType","returnType","typeSpecifier","FN","StructSymbol","BaseSymbolTable","_table","SymbolTableStack","stack","newScope","scope","dropScope","pop","insert","sm","_scope","TargetSymbolTable","entry","_compareWith","warn","lookup","item","getAllFnSymbols","fnIdent","entries","filter","params","paramSig","comparedParams","t1","t2","VarSymbol","isGlobalVariable","initAst","VAR","SemanticAnalyzer","semanticStack","acceptRule","undefined","symbolTableStack","curFunctionInfo","_shaderData","_translationRuleTable","addTranslationRule","pid","rule","getTranslationRule","lookupSymbolBy","symbolTable","ret","reportError","loc","shaderData","NoneTerminal","Production","goal","derivation","id","_id","Grammar","productions","startSymbol","unshift","START","getProductionList","nonTerminal","isNullableNT","NT","find","EPSILON","getProductionByID","create","_ps","map","gsl","slice","SymbolType","StructProp","typeInfo","mrtIndex","ASTNodeDecorator","ASTNode","prototype","nt","TreeNode","children","_location","_children","init","codeGen","visitor","defaultCodeGen","semanticAnalyze","sa","_unwrapToken","node","Token","TrivialNode","_ignore","ScopeBrace","scope_brace","ScopeEndBrace","scope_end_brace","JumpStatement","isFragReturnStatement","returnStatement","visitJumpStatement","jump_statement","ExpressionAstNode","_type","t","SingleDeclaration","childrenLen","fullyType","initializer","visitSingleDeclaration","single_declaration","FullySpecifiedType","_","fully_specified_type","TypeQualifier","type_qualifier","SingleTypeQualifier","child","qualifier","single_type_qualifier","TypeSpecifier","arraySize","firstChild","size","isCustom","type_specifier","ArraySpecifier","integerConstantExpr","value","array_specifier","IntegerConstantExpressionOperator","operator","compute","a","b","integer_constant_expression_operator","IntegerConstantExpression","Number","integer_constant_expression","TypeSpecifierNonArray","tt","type_specifier_nonarray","ExtBuiltinTypeSpecifierNonArray","ext_builtin_type_specifier_nonarray","InitDeclaratorList","childrenLength","initDeclList","init_declarator_list","IdentifierList","idList","curIdList","list","listIdLength","identifier_list","Declaration","visitDeclaration","declaration","FunctionProtoType","declarator","parameterList","parameterInfoList","visitFunctionProtoType","function_prototype","FunctionDeclarator","header","function_declarator","FunctionHeader","visitFunctionHeader","function_header","FunctionParameterList","decl","listParamLength","visitFunctionParameterList","function_parameter_list","ParameterDeclaration","typeQualifier","parameterDeclarator","varSymbol","parameter_declaration","ParameterDeclarator","parameter_declarator","CompoundStatementNoScope","compound_statement_no_scope","StatementList","visitStatementList","statement_list","FunctionDefinition","statements","visitFunctionDefinition","function_definition","FunctionCall","visitFunctionCall","function_call","FunctionCallGeneric","fnSymbol","functionIdentifier","isBuiltin","paramList","FunctionCallParameterList","function_call_generic","paramNodes","expr","function_call_parameter_list","PrecisionSpecifier","precision_specifier","FunctionIdentifier","visitFunctionIdentifier","function_identifier","AssignmentExpression","assignment_expression","Expression","expression","PrimaryExpression","VariableIdentifier","primary_expression","PostfixExpression","visitPostfixExpression","postfix_expression","StructSpecifier","propList","struct_specifier","StructDeclarationList","props","propsLength","listProps","declProps","listPropLength","declPropLength","struct_declaration_list","StructDeclaration","declaratorList","LayoutQualifier","prop","declaratorListLength","struct_declaration","layout_qualifier","StructDeclaratorList","listLength","struct_declarator_list","StructDeclarator","struct_declarator","VariableDeclaration","visitGlobalVariableDeclaration","variable_declaration","VariableDeclarationList","variableDeclaration","newVariable","variable_declaration_list","symbolInfo","visitVariableIdentifier","variable_identifier","GLShaderProgram","gs_shader_program","GrammarUtils","isTerminal","toString","createProductionWithOptions","options","astTypePool","opt","addMapSetItem","k","v","Set","add","isSubSet","sb","has","isActionEqual","action","target","productionAndRules","global_declaration","variable_declaration_statement","MAT2X3","MAT2X4","MAT3X2","MAT3X4","MAT4X2","MAT4X3","storage_qualifier","precision_qualifier","interpolation_qualifier","invariant_qualifier","conditional_expression","logical_or_expression","logical_xor_expression","logical_and_expression","inclusive_or_expression","exclusive_or_expression","and_expression","equality_expression","relational_expression","shift_expression","additive_expression","multiplicative_expression","unary_expression","unary_operator","assignment_operator","AND_ASSIGN","statement","compound_statement","simple_statement","expression_statement","selection_statement","iteration_statement","initializer_list","condition","for_init_statement","for_rest_statement","conditionopt","createGrammar","StateItem","production","position","lookahead","_needReInfer","lookaheadSet","la","addLookahead","ts","needReInfer","symbolByOffset","canReduce","curSymbol","nextSymbol","State","cores","closured","_stateItemPool","_items","it","itemMapKey","getStateItemMapKey","createStateItem","mapId","newItem","cacheKey","getMapKey","state","closureMap","core","newState","items","LALR1","grammar","firstSetMap","followSetMap","actionTable","gotoTable","_firstSetNTStack","generate","computeFirstSet","buildStateTable","startStateItemCore","startState","_extendState","_closure","newStates","_inferNextState","ns","_extendStateItem","productionList","newLookaheadSet","lastFirstSet","terminalExist","Utils","coreMap","stateActionTable","stateGotoTable","stateItem","Reduce","Accept","_addAction","nextItem","gs","Array","from","Shift","table","terminal","exist","_computeFirstSetForNT","idx","findIndex","computingFS","len","curNT","firstSet","succeedFirstSet","ShaderTargetParser","_traceBackStack","sematicAnalyzer","SematicAnalyzer","parse","tokens","performance","now","traceBackStack","nextToken","next","loopCount","actionInfo","info","reduceProduction","translationRule","values","nextState","CompilationError","_processingPassText","_singleton","generator","curState","MacroDefine","macro","args","body","_argsLexemes","_replaceRegex","RegExp","expandFunctionBody","PreprocessorError","replace","m","indexOf","isFunction","EPpToken","EPpKeyword","PpKeyword","PpUtils","expand","segments","startIdx","generatedIdx","seg","originSlice","rangeInBlock","generatedIdxEnd","assembleSegments","PpScanner","macroLvl","scanDirective","expandOnToken","directive","_advanceToDirective","if","ifdef","ifndef","includes","endif","scanWordsUntilChar","nonLetterChar","scanWord","skipNonLetter","getShaderPosition","kw","found","scanQuotedString","string_const","scanToChar","char","scanMacroBranchChunk","startLvl","elif","else","chunk","nextDirective","scanPairedBlock","lc","rc","scanRemainMacro","peekNonSpace","scanInteger","integer","int_constant","scanLineRemain","comments","line","line_remain","commentRange","_skipComments","startsWith","PpParser","includeMap","basePathForIncludeKey","_definedMacros","_expandSegmentsStack","_branchMacros","addPredefinedMacro","_includeMap","_basePathForIncludeKey","tk","macroBody","scanner","_onToken","bind","define","_parseDefine","undef","_parseUndef","_parseIf","_parseIfNdef","_parseIfDef","include","_parseInclude","expandSegments","sourceMap","includedPath","URL","href","ShaderPass","_shaderRootPath","expanded","_expandMacroChunk","content","_addEmptyReplace","bodyChunk","_parseMacroBranch","elseChunk","startPosition","constantExpr","_parseConstantExpression","endPosition","_parseLogicalOrExpression","operand1","_parseLogicalAndExpression","operand2","_parseEqualityExpression","_parseRelationalExpression","_parseShiftExpression","opPos","_parseAdditiveExpression","_parseMulticativeExpression","_parseUnaryExpression","parenExpr","_parseParenthesisExpression","_parseConstant","defined","withParen","isInteger","scannerOrFile","macroArgs","macroDefine","delete","curLvl","curIdx","blockRange","Preprocessor","process","baseScanner","ParserUtils","unwrapNodeByType","VisitorContext","attributeList","attributeStructs","_referencedAttributeList","Object","_referencedGlobals","_referencedVaryingList","_referencedMRTList","mrtStruct","isAttributeStruct","isVaryingStruct","varyingStruct","isMRTStruct","referenceAttribute","referenceVarying","referenceMRTProp","referenceGlobal","fnEntries","_passSymbolTable","key","passSymbolTable","context","TempArray","array","V3_GL_FragColor","V3_GL_FragData","CodeGenVisitor","_tmpArrayPool","return","derivationLength","postExpr","identNode","indexNode","identLexeme","indexLexeme","mrtLexeme","getFragDataCodeGen","getReferencedMRTPropText","call","paramInfoList","plainParams","fullType","_curFn","cmd","returnVar","returnFnCall","_reportError","ReturnableObjectPool","EShaderStage","defaultPrecision","GLESVisitor","_versionText","_extensions","_globalCodeArray","visitShaderProgram","vertexEntry","fragmentEntry","vertex","vertexMain","fragment","_fragmentMain","data","fnNode","stage","VERTEX","varyStruct","paramInfo","structSymbol","globalCodeArray","_getGlobalText","getAttributeDeclare","getVaryingDeclare","globalCode","sort","FRAGMENT","returnDataType","returnLocation","getMRTDeclare","textList","lastLength","_serialized","keys","precision","GLES100Visitor","e","out","propReferenced","getVisitor","GLES300Visitor","referencedMRTList","MAX_SAFE_INTEGER","_registerFragColorVariable","KeywordMap","GS_RenderQueueType","GS_BlendState","GS_DepthState","GS_StencilState","GS_RasterState","GS_EditorProperties","GS_EditorMacros","GS_Editor","GS_Tags","GS_VertexShader","GS_FragmentShader","GS_SubShader","GS_Pass","GS_BlendFactor","GS_BlendOperation","GS_Bool","GS_Number","GS_CompareFunction","GS_StencilOperation","GS_CullMode","GS_UsePass","GS_Color","Scanner","scanNumber","ContentSymbolTable","EngineType","RenderStateType","ShaderContentParser","_errors","_symbolTableStack","_newScope","subShaders","globalContents","renderStates","constantMap","variableMap","name","_parseShaderStatements","shaderGlobalStatements","shaderRenderStates","subShader","curSubShaderGlobalStatements","concat","constMap","passes","pass","assign","isUsePass","passGlobalStatements","contents","_isRenderStateDeclarator","_isEngineType","_lookupSymbolByType","braceLevel","_addGlobalStatement","_parseSubShader","_parseRenderQueueAssignment","_parseRenderStateDeclarationOrAssignment","_parseVariableDeclaration","stateToken","isDeclaration","variable","renderState","_parseRenderStatePropList","_dropScope","_parseRenderStatePropItem","renderStateProp","op","renderStateElementKey","RenderStateDataKey","Color","engineTypeProp","_engineType","RenderQueueType","tags","_parsePass","_parseTags","CompareFunction","StencilOperation","BlendOperation","BlendFactor","CullMode","_parseShaderPass","macros","backend","platformMacros","ShaderLib","preprocessorStart","ppdContent","lexer","parser","_parser","program","ShaderPlatformTarget","GLES100","_parseShaderContent","shaderSource","column","_shaderPositionPool","_shaderRangePool","version","mode","console","log"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"browser.js","sources":["../../../node_modules/.pnpm/@swc+helpers@0.5.15/node_modules/@swc/helpers/esm/_set_prototype_of.js","../../../node_modules/.pnpm/@swc+helpers@0.5.15/node_modules/@swc/helpers/esm/_inherits.js","../../../node_modules/.pnpm/@swc+helpers@0.5.15/node_modules/@swc/helpers/esm/_instanceof.js","../../../node_modules/.pnpm/@swc+helpers@0.5.15/node_modules/@swc/helpers/esm/_create_class.js","../../../node_modules/.pnpm/@swc+helpers@0.5.15/node_modules/@swc/helpers/esm/_array_like_to_array.js","../../../node_modules/.pnpm/@swc+helpers@0.5.15/node_modules/@swc/helpers/esm/_unsupported_iterable_to_array.js","../../../node_modules/.pnpm/@swc+helpers@0.5.15/node_modules/@swc/helpers/esm/_create_for_of_iterator_helper_loose.js","../../../node_modules/.pnpm/tslib@2.8.1/node_modules/tslib/tslib.es6.mjs","../src/common/ShaderRange.ts","../src/common/ShaderPosition.ts","../src/common/types.ts","../src/common/enums/Keyword.ts","../src/ShaderLabUtils.ts","../src/common/BaseToken.ts","../src/Preprocessor.ts","../../../node_modules/.pnpm/@swc+helpers@0.5.15/node_modules/@swc/helpers/esm/_is_native_reflect_construct.js","../../../node_modules/.pnpm/@swc+helpers@0.5.15/node_modules/@swc/helpers/esm/_construct.js","../src/common/enums/ShaderStage.ts","../src/parser/builtin/functions.ts","../src/parser/builtin/variables.ts","../src/parser/GrammarSymbol.ts","../src/common/SymbolTable.ts","../src/common/SymbolTableStack.ts","../../../node_modules/.pnpm/@swc+helpers@0.5.15/node_modules/@swc/helpers/esm/_get_prototype_of.js","../../../node_modules/.pnpm/@swc+helpers@0.5.15/node_modules/@swc/helpers/esm/_is_native_function.js","../../../node_modules/.pnpm/@swc+helpers@0.5.15/node_modules/@swc/helpers/esm/_wrap_native_super.js","../src/GSError.ts","../src/parser/symbolTable/SymbolDataType.ts","../src/parser/symbolTable/SymbolInfo.ts","../src/parser/symbolTable/FnSymbol.ts","../src/parser/symbolTable/StructSymbol.ts","../src/parser/symbolTable/VarSymbol.ts","../src/parser/ShaderInfo.ts","../src/parser/SemanticAnalyzer.ts","../src/parser/types.ts","../src/parser/AST.ts","../src/ParserUtils.ts","../src/codeGen/VisitorContext.ts","../src/TempArray.ts","../src/codeGen/CodeGenVisitor.ts","../src/codeGen/GLESVisitor.ts","../src/codeGen/GLES100.ts","../src/codeGen/GLES300.ts","../src/common/BaseLexer.ts","../src/lexer/Lexer.ts","../../../node_modules/.pnpm/@swc+helpers@0.5.15/node_modules/@swc/helpers/esm/_type_of.js","../src/macroProcessor/constants.ts","../src/macroProcessor/MacroDefine.ts","../src/macroProcessor/MacroParserLexer.ts","../src/macroProcessor/Utils.ts","../src/macroProcessor/MacroParser.ts","../src/lalr/StateItem.ts","../src/lalr/State.ts","../src/lalr/Utils.ts","../src/lalr/types.ts","../src/lalr/LALR1.ts","../src/lalr/Production.ts","../src/parser/Grammar.ts","../src/lalr/CFG.ts","../src/parser/ShaderTargetParser.ts","../../../node_modules/.pnpm/@swc+helpers@0.5.15/node_modules/@swc/helpers/esm/_extends.js","../src/sourceParser/ShaderSourceFactory.ts","../src/sourceParser/ShaderSourceSymbol.ts","../src/sourceParser/SourceLexer.ts","../src/sourceParser/ShaderSourceParser.ts","../src/ShaderLab.ts","../src/index.ts"],"sourcesContent":["function _set_prototype_of(o, p) {\n _set_prototype_of = Object.setPrototypeOf || function setPrototypeOf(o, p) {\n o.__proto__ = p;\n\n return o;\n };\n\n return _set_prototype_of(o, p);\n}\nexport { _set_prototype_of as _ };\n","import { _ as _set_prototype_of } from \"./_set_prototype_of.js\";\n\nfunction _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function\");\n }\n\n subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } });\n\n if (superClass) _set_prototype_of(subClass, superClass);\n}\nexport { _inherits as _ };\n","function _instanceof(left, right) {\n if (right != null && typeof Symbol !== \"undefined\" && right[Symbol.hasInstance]) {\n return !!right[Symbol.hasInstance](left);\n } else return left instanceof right;\n}\nexport { _instanceof as _ };\n","function _defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n\n if (\"value\" in descriptor) descriptor.writable = true;\n\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n}\nfunction _create_class(Constructor, protoProps, staticProps) {\n if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n if (staticProps) _defineProperties(Constructor, staticProps);\n\n return Constructor;\n}\nexport { _create_class as _ };\n","function _array_like_to_array(arr, len) {\n if (len == null || len > arr.length) len = arr.length;\n\n for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i];\n\n return arr2;\n}\nexport { _array_like_to_array as _ };\n","import { _ as _array_like_to_array } from \"./_array_like_to_array.js\";\n\nfunction _unsupported_iterable_to_array(o, minLen) {\n if (!o) return;\n if (typeof o === \"string\") return _array_like_to_array(o, minLen);\n\n var n = Object.prototype.toString.call(o).slice(8, -1);\n\n if (n === \"Object\" && o.constructor) n = o.constructor.name;\n if (n === \"Map\" || n === \"Set\") return Array.from(n);\n if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _array_like_to_array(o, minLen);\n}\nexport { _unsupported_iterable_to_array as _ };\n","import { _ as _unsupported_iterable_to_array } from \"./_unsupported_iterable_to_array.js\";\n\nfunction _create_for_of_iterator_helper_loose(o, allowArrayLike) {\n var it = typeof Symbol !== \"undefined\" && o[Symbol.iterator] || o[\"@@iterator\"];\n\n if (it) return (it = it.call(o)).next.bind(it);\n // Fallback for engines without symbol support\n if (Array.isArray(o) || (it = _unsupported_iterable_to_array(o)) || allowArrayLike && o && typeof o.length === \"number\") {\n if (it) o = it;\n\n var i = 0;\n\n return function() {\n if (i >= o.length) return { done: true };\n\n return { done: false, value: o[i++] };\n };\n }\n\n throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}\nexport { _create_for_of_iterator_helper_loose as _ };\n","/******************************************************************************\nCopyright (c) Microsoft Corporation.\n\nPermission to use, copy, modify, and/or distribute this software for any\npurpose with or without fee is hereby granted.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\nPERFORMANCE OF THIS SOFTWARE.\n***************************************************************************** */\n/* global Reflect, Promise, SuppressedError, Symbol, Iterator */\n\nvar extendStatics = function(d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n};\n\nexport function __extends(d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n}\n\nexport var __assign = function() {\n __assign = Object.assign || function __assign(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n }\n return t;\n }\n return __assign.apply(this, arguments);\n}\n\nexport function __rest(s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\n t[p[i]] = s[p[i]];\n }\n return t;\n}\n\nexport function __decorate(decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n}\n\nexport function __param(paramIndex, decorator) {\n return function (target, key) { decorator(target, key, paramIndex); }\n}\n\nexport function __esDecorate(ctor, descriptorIn, decorators, contextIn, initializers, extraInitializers) {\n function accept(f) { if (f !== void 0 && typeof f !== \"function\") throw new TypeError(\"Function expected\"); return f; }\n var kind = contextIn.kind, key = kind === \"getter\" ? \"get\" : kind === \"setter\" ? \"set\" : \"value\";\n var target = !descriptorIn && ctor ? contextIn[\"static\"] ? ctor : ctor.prototype : null;\n var descriptor = descriptorIn || (target ? Object.getOwnPropertyDescriptor(target, contextIn.name) : {});\n var _, done = false;\n for (var i = decorators.length - 1; i >= 0; i--) {\n var context = {};\n for (var p in contextIn) context[p] = p === \"access\" ? {} : contextIn[p];\n for (var p in contextIn.access) context.access[p] = contextIn.access[p];\n context.addInitializer = function (f) { if (done) throw new TypeError(\"Cannot add initializers after decoration has completed\"); extraInitializers.push(accept(f || null)); };\n var result = (0, decorators[i])(kind === \"accessor\" ? { get: descriptor.get, set: descriptor.set } : descriptor[key], context);\n if (kind === \"accessor\") {\n if (result === void 0) continue;\n if (result === null || typeof result !== \"object\") throw new TypeError(\"Object expected\");\n if (_ = accept(result.get)) descriptor.get = _;\n if (_ = accept(result.set)) descriptor.set = _;\n if (_ = accept(result.init)) initializers.unshift(_);\n }\n else if (_ = accept(result)) {\n if (kind === \"field\") initializers.unshift(_);\n else descriptor[key] = _;\n }\n }\n if (target) Object.defineProperty(target, contextIn.name, descriptor);\n done = true;\n};\n\nexport function __runInitializers(thisArg, initializers, value) {\n var useValue = arguments.length > 2;\n for (var i = 0; i < initializers.length; i++) {\n value = useValue ? initializers[i].call(thisArg, value) : initializers[i].call(thisArg);\n }\n return useValue ? value : void 0;\n};\n\nexport function __propKey(x) {\n return typeof x === \"symbol\" ? x : \"\".concat(x);\n};\n\nexport function __setFunctionName(f, name, prefix) {\n if (typeof name === \"symbol\") name = name.description ? \"[\".concat(name.description, \"]\") : \"\";\n return Object.defineProperty(f, \"name\", { configurable: true, value: prefix ? \"\".concat(prefix, \" \", name) : name });\n};\n\nexport function __metadata(metadataKey, metadataValue) {\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\n}\n\nexport function __awaiter(thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n}\n\nexport function __generator(thisArg, body) {\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g = Object.create((typeof Iterator === \"function\" ? Iterator : Object).prototype);\n return g.next = verb(0), g[\"throw\"] = verb(1), g[\"return\"] = verb(2), typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n function verb(n) { return function (v) { return step([n, v]); }; }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (g && (g = 0, op[0] && (_ = 0)), _) try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [op[0] & 2, t.value];\n switch (op[0]) {\n case 0: case 1: t = op; break;\n case 4: _.label++; return { value: op[1], done: false };\n case 5: _.label++; y = op[1]; op = [0]; continue;\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n if (t[2]) _.ops.pop();\n _.trys.pop(); continue;\n }\n op = body.call(thisArg, _);\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n }\n}\n\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n});\n\nexport function __exportStar(m, o) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\n}\n\nexport function __values(o) {\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\n if (m) return m.call(o);\n if (o && typeof o.length === \"number\") return {\n next: function () {\n if (o && i >= o.length) o = void 0;\n return { value: o && o[i++], done: !o };\n }\n };\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\n}\n\nexport function __read(o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o), r, ar = [], e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n }\n catch (error) { e = { error: error }; }\n finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n }\n finally { if (e) throw e.error; }\n }\n return ar;\n}\n\n/** @deprecated */\nexport function __spread() {\n for (var ar = [], i = 0; i < arguments.length; i++)\n ar = ar.concat(__read(arguments[i]));\n return ar;\n}\n\n/** @deprecated */\nexport function __spreadArrays() {\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\n r[k] = a[j];\n return r;\n}\n\nexport function __spreadArray(to, from, pack) {\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\n if (ar || !(i in from)) {\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\n ar[i] = from[i];\n }\n }\n return to.concat(ar || Array.prototype.slice.call(from));\n}\n\nexport function __await(v) {\n return this instanceof __await ? (this.v = v, this) : new __await(v);\n}\n\nexport function __asyncGenerator(thisArg, _arguments, generator) {\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\n return i = Object.create((typeof AsyncIterator === \"function\" ? AsyncIterator : Object).prototype), verb(\"next\"), verb(\"throw\"), verb(\"return\", awaitReturn), i[Symbol.asyncIterator] = function () { return this; }, i;\n function awaitReturn(f) { return function (v) { return Promise.resolve(v).then(f, reject); }; }\n function verb(n, f) { if (g[n]) { i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; if (f) i[n] = f(i[n]); } }\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\n function fulfill(value) { resume(\"next\", value); }\n function reject(value) { resume(\"throw\", value); }\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\n}\n\nexport function __asyncDelegator(o) {\n var i, p;\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: false } : f ? f(v) : v; } : f; }\n}\n\nexport function __asyncValues(o) {\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\n var m = o[Symbol.asyncIterator], i;\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\n}\n\nexport function __makeTemplateObject(cooked, raw) {\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\n return cooked;\n};\n\nvar __setModuleDefault = Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n};\n\nvar ownKeys = function(o) {\n ownKeys = Object.getOwnPropertyNames || function (o) {\n var ar = [];\n for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;\n return ar;\n };\n return ownKeys(o);\n};\n\nexport function __importStar(mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== \"default\") __createBinding(result, mod, k[i]);\n __setModuleDefault(result, mod);\n return result;\n}\n\nexport function __importDefault(mod) {\n return (mod && mod.__esModule) ? mod : { default: mod };\n}\n\nexport function __classPrivateFieldGet(receiver, state, kind, f) {\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\n}\n\nexport function __classPrivateFieldSet(receiver, state, value, kind, f) {\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\n}\n\nexport function __classPrivateFieldIn(state, receiver) {\n if (receiver === null || (typeof receiver !== \"object\" && typeof receiver !== \"function\")) throw new TypeError(\"Cannot use 'in' operator on non-object\");\n return typeof state === \"function\" ? receiver === state : state.has(receiver);\n}\n\nexport function __addDisposableResource(env, value, async) {\n if (value !== null && value !== void 0) {\n if (typeof value !== \"object\" && typeof value !== \"function\") throw new TypeError(\"Object expected.\");\n var dispose, inner;\n if (async) {\n if (!Symbol.asyncDispose) throw new TypeError(\"Symbol.asyncDispose is not defined.\");\n dispose = value[Symbol.asyncDispose];\n }\n if (dispose === void 0) {\n if (!Symbol.dispose) throw new TypeError(\"Symbol.dispose is not defined.\");\n dispose = value[Symbol.dispose];\n if (async) inner = dispose;\n }\n if (typeof dispose !== \"function\") throw new TypeError(\"Object not disposable.\");\n if (inner) dispose = function() { try { inner.call(this); } catch (e) { return Promise.reject(e); } };\n env.stack.push({ value: value, dispose: dispose, async: async });\n }\n else if (async) {\n env.stack.push({ async: true });\n }\n return value;\n}\n\nvar _SuppressedError = typeof SuppressedError === \"function\" ? SuppressedError : function (error, suppressed, message) {\n var e = new Error(message);\n return e.name = \"SuppressedError\", e.error = error, e.suppressed = suppressed, e;\n};\n\nexport function __disposeResources(env) {\n function fail(e) {\n env.error = env.hasError ? new _SuppressedError(e, env.error, \"An error was suppressed during disposal.\") : e;\n env.hasError = true;\n }\n var r, s = 0;\n function next() {\n while (r = env.stack.pop()) {\n try {\n if (!r.async && s === 1) return s = 0, env.stack.push(r), Promise.resolve().then(next);\n if (r.dispose) {\n var result = r.dispose.call(r.value);\n if (r.async) return s |= 2, Promise.resolve(result).then(next, function(e) { fail(e); return next(); });\n }\n else s |= 1;\n }\n catch (e) {\n fail(e);\n }\n }\n if (s === 1) return env.hasError ? Promise.reject(env.error) : Promise.resolve();\n if (env.hasError) throw env.error;\n }\n return next();\n}\n\nexport function __rewriteRelativeImportExtension(path, preserveJsx) {\n if (typeof path === \"string\" && /^\\.\\.?\\//.test(path)) {\n return path.replace(/\\.(tsx)$|((?:\\.d)?)((?:\\.[^./]+?)?)\\.([cm]?)ts$/i, function (m, tsx, d, ext, cm) {\n return tsx ? preserveJsx ? \".jsx\" : \".js\" : d && (!ext || !cm) ? m : (d + ext + \".\" + cm.toLowerCase() + \"js\");\n });\n }\n return path;\n}\n\nexport default {\n __extends,\n __assign,\n __rest,\n __decorate,\n __param,\n __esDecorate,\n __runInitializers,\n __propKey,\n __setFunctionName,\n __metadata,\n __awaiter,\n __generator,\n __createBinding,\n __exportStar,\n __values,\n __read,\n __spread,\n __spreadArrays,\n __spreadArray,\n __await,\n __asyncGenerator,\n __asyncDelegator,\n __asyncValues,\n __makeTemplateObject,\n __importStar,\n __importDefault,\n __classPrivateFieldGet,\n __classPrivateFieldSet,\n __classPrivateFieldIn,\n __addDisposableResource,\n __disposeResources,\n __rewriteRelativeImportExtension,\n};\n","import { IPoolElement } from \"@galacean/engine\";\nimport { ShaderPosition } from \"./ShaderPosition\";\n\nexport class ShaderRange implements IPoolElement {\n public start: ShaderPosition;\n public end: ShaderPosition;\n\n set(start: ShaderPosition, end: ShaderPosition) {\n this.start = start;\n this.end = end;\n }\n\n dispose(): void {\n this.start.dispose();\n this.end.dispose();\n }\n}\n","import { IPoolElement } from \"@galacean/engine\";\n\nexport class ShaderPosition implements IPoolElement {\n index: number;\n // #if _VERBOSE\n line: number;\n column: number;\n // #endif\n\n set(\n index: number,\n // #if _VERBOSE\n line: number,\n column: number\n // #endif\n ) {\n this.index = index;\n // #if _VERBOSE\n this.line = line;\n this.column = column;\n // #endif\n }\n\n dispose(): void {\n this.index = 0;\n // #if _VERBOSE\n this.line = 0;\n this.column = 0;\n // #endif\n }\n}\n","import { Keyword } from \"./enums/Keyword\";\n\nexport enum ETokenType {\n ID = 1000,\n FLOAT_CONSTANT,\n INT_CONSTANT,\n STRING_CONST,\n /** << */\n LEFT_OP,\n /** \\>> */\n RIGHT_OP,\n /** ++ */\n INC_OP,\n /** -- */\n DEC_OP,\n /** <= */\n LE_OP,\n /** \\>= */\n GE_OP,\n /** == */\n EQ_OP,\n /** != */\n NE_OP,\n /** && */\n AND_OP,\n /** || */\n OR_OP,\n /** ^^ */\n XOR_OP,\n /** *= */\n MUL_ASSIGN,\n /** /= */\n DIV_ASSIGN,\n /** += */\n ADD_ASSIGN,\n /** -= */\n SUB_ASSIGN,\n /** %= */\n MOD_ASSIGN,\n /** <<= */\n LEFT_ASSIGN,\n /** >>= */\n RIGHT_ASSIGN,\n /** &= */\n AND_ASSIGN,\n /** ^= */\n XOR_ASSIGN,\n /** |= */\n OR_ASSIGN,\n /** ( */\n LEFT_PAREN,\n /** ) */\n RIGHT_PAREN,\n /** [ */\n LEFT_BRACKET,\n /** ] */\n RIGHT_BRACKET,\n /** { */\n LEFT_BRACE,\n /** } */\n RIGHT_BRACE,\n /** . */\n DOT,\n /** , */\n COMMA,\n COLON,\n /** = */\n EQUAL,\n /** ; */\n SEMICOLON,\n /** ! */\n BANG,\n /** \\- */\n DASH,\n /** ~ */\n TILDE,\n PLUS,\n /** \\* */\n STAR,\n /** / */\n SLASH,\n /** % */\n PERCENT,\n /** < */\n LEFT_ANGLE,\n /** \\> */\n RIGHT_ANGLE,\n VERTICAL_BAR,\n /** ^ */\n CARET,\n /** & */\n AMPERSAND,\n /** ? */\n QUESTION,\n\n NotWord,\n\n /** ε */\n EPSILON = 1998,\n EOF = 1999\n}\n\nexport const TypeAny = 3000;\n\nexport type GalaceanDataType =\n | Keyword.VOID\n | Keyword.FLOAT\n | Keyword.BOOL\n | Keyword.INT\n | Keyword.UINT\n | Keyword.VEC2\n | Keyword.VEC3\n | Keyword.VEC4\n | Keyword.BVEC2\n | Keyword.BVEC3\n | Keyword.BVEC4\n | Keyword.IVEC2\n | Keyword.IVEC3\n | Keyword.IVEC4\n | Keyword.UVEC2\n | Keyword.UVEC3\n | Keyword.UVEC4\n | Keyword.MAT2\n | Keyword.MAT3\n | Keyword.MAT4\n | Keyword.MAT2X3\n | Keyword.MAT2X4\n | Keyword.MAT3X2\n | Keyword.MAT3X4\n | Keyword.MAT4X2\n | Keyword.MAT4X3\n | Keyword.SAMPLER2D\n | Keyword.SAMPLER3D\n | Keyword.SAMPLER_CUBE\n | Keyword.SAMPLER2D_SHADOW\n | Keyword.SAMPLER_CUBE_SHADOW\n | Keyword.SAMPLER2D_ARRAY\n | Keyword.SAMPLER2D_ARRAY_SHADOW\n | Keyword.I_SAMPLER2D\n | Keyword.I_SAMPLER3D\n | Keyword.I_SAMPLER_CUBE\n | Keyword.I_SAMPLER2D_ARRAY\n | Keyword.U_SAMPLER2D\n | Keyword.U_SAMPLER3D\n | Keyword.U_SAMPLER_CUBE\n | Keyword.U_SAMPLER2D_ARRAY\n | Keyword.VEC4_ARRAY\n | typeof TypeAny\n | string;\n\nexport type TokenType = ETokenType | Keyword;\n","export enum Keyword {\n CONST = 0,\n BOOL,\n FLOAT,\n DOUBLE,\n INT,\n UINT,\n BREAK,\n CONTINUE,\n DO,\n ELSE,\n FOR,\n IF,\n WHILE,\n DISCARD,\n RETURN,\n BVEC2,\n BVEC3,\n BVEC4,\n IVEC2,\n IVEC3,\n IVEC4,\n UVEC2,\n UVEC3,\n UVEC4,\n VEC2,\n VEC3,\n VEC4,\n VEC4_ARRAY,\n MAT2,\n MAT3,\n MAT4,\n MAT2X3,\n MAT2X4,\n MAT3X2,\n MAT3X4,\n MAT4X2,\n MAT4X3,\n IN,\n OUT,\n INOUT,\n CENTROID,\n SAMPLER2D,\n SAMPLER3D,\n SAMPLER_CUBE,\n SAMPLER2D_SHADOW,\n SAMPLER_CUBE_SHADOW,\n SAMPLER2D_ARRAY,\n SAMPLER2D_ARRAY_SHADOW,\n I_SAMPLER2D,\n I_SAMPLER3D,\n I_SAMPLER_CUBE,\n I_SAMPLER2D_ARRAY,\n U_SAMPLER2D,\n U_SAMPLER3D,\n U_SAMPLER_CUBE,\n U_SAMPLER2D_ARRAY,\n STRUCT,\n LAYOUT,\n LOCATION,\n VOID,\n\n PRECISION,\n PRECISE,\n HIGHP,\n MEDIUMP,\n LOWP,\n INVARIANT,\n SMOOTH,\n FLAT,\n NOPERSPECTIVE,\n\n // Common Tokens\n True,\n False,\n LeftBrace,\n RightBrace,\n Equal,\n\n // Source Parser Tokens\n GSRenderQueueType,\n GSBlendState,\n GSDepthState,\n GSStencilState,\n GSRasterState,\n GSEditorProperties,\n GSEditorMacros,\n GSEditor,\n GSTags,\n GSVertexShader,\n GSFragmentShader,\n GSSubShader,\n GSPass,\n GSBlendFactor,\n GSBlendOperation,\n GSBool,\n GSNumber,\n GSColor,\n GSCompareFunction,\n GSStencilOperation,\n GSCullMode,\n GSUsePass,\n\n // Macros\n MACRO_IF,\n MACRO_IFDEF,\n MACRO_IFNDEF,\n MACRO_ELSE,\n MACRO_ELIF,\n MACRO_ENDIF,\n MACRO_UNDEF,\n MACRO_DEFINE_EXPRESSION,\n MACRO_CONDITIONAL_EXPRESSION,\n MACRO_CALL\n}\n","import { ClearableObjectPool, IPoolElement, Logger } from \"@galacean/engine\";\nimport { GSErrorName } from \"./GSError\";\nimport { ShaderRange } from \"./common/ShaderRange\";\nimport { ShaderPosition } from \"./common/ShaderPosition\";\n// #if _VERBOSE\nimport { GSError } from \"./GSError\";\n// #endif\n\nexport class ShaderLabUtils {\n private static _shaderLabObjectPoolSet: ClearableObjectPool<IPoolElement>[] = [];\n\n static createObjectPool<T extends IPoolElement>(type: new () => T) {\n const pool = new ClearableObjectPool<T>(type);\n ShaderLabUtils._shaderLabObjectPoolSet.push(pool);\n return pool;\n }\n\n static clearAllShaderLabObjectPool() {\n for (let i = 0, n = ShaderLabUtils._shaderLabObjectPoolSet.length; i < n; i++) {\n ShaderLabUtils._shaderLabObjectPoolSet[i].clear();\n }\n }\n\n static createGSError(\n message: string,\n errorName: GSErrorName,\n source: string,\n location: ShaderRange | ShaderPosition,\n file?: string\n ): Error | undefined {\n // #if _VERBOSE\n return new GSError(errorName, message, location, source, file);\n // #else\n Logger.error(message);\n // #endif\n }\n}\n","import { ETokenType } from \"./types\";\nimport { ShaderRange, ShaderPosition } from \".\";\nimport { ShaderLab } from \"../ShaderLab\";\nimport { IPoolElement } from \"@galacean/engine\";\nimport { ShaderLabUtils } from \"../ShaderLabUtils\";\n\nexport class BaseToken<T extends number = number> implements IPoolElement {\n static pool = ShaderLabUtils.createObjectPool(BaseToken);\n\n type: T;\n lexeme: string;\n location: ShaderRange;\n\n set(type: T, lexeme: string, start?: ShaderPosition);\n set(type: T, lexeme: string, location?: ShaderRange);\n set(type: T, lexeme: string, arg?: ShaderRange | ShaderPosition) {\n this.type = type;\n this.lexeme = lexeme;\n if (arg) {\n if (arg instanceof ShaderRange) {\n this.location = arg as ShaderRange;\n } else {\n const end = ShaderLab.createPosition(\n arg.index + lexeme.length,\n // #if _VERBOSE\n arg.line,\n arg.column + lexeme.length\n // #endif\n );\n this.location = ShaderLab.createRange(arg, end);\n }\n }\n }\n\n dispose(): void {}\n}\n\nexport const EOF = new BaseToken();\nEOF.set(ETokenType.EOF, \"/EOF\");\n","import { Logger, ShaderPass } from \"@galacean/engine\";\n/** @ts-ignore */\nimport { ShaderLib } from \"@galacean/engine\";\n\nexport enum MacroValueType {\n Number, // 1, 1.1\n Symbol, // variable name\n FunctionCall, // function call, e.g. clamp(a, 0.0, 1.0)\n Other // shaderLab does not check this\n}\n\nexport interface MacroDefineInfo {\n isFunction: boolean;\n name: string;\n value: string;\n valueType: MacroValueType;\n params: string[];\n functionCallName: string;\n}\n\nexport interface MacroDefineList {\n [macroName: string]: MacroDefineInfo[];\n}\n\nexport class Preprocessor {\n private static readonly _includeReg = /^[ \\t]*#include +\"([\\w\\d./]+)\"/gm;\n private static readonly _macroRegex =\n /^\\s*#define\\s+(\\w+)[ ]*(\\(([^)]*)\\))?[ ]+(\\(?\\w+\\)?.*?)(?:\\/\\/.*|\\/\\*.*?\\*\\/)?\\s*$/gm;\n private static readonly _symbolReg = /^[a-zA-Z_][a-zA-Z0-9_]*$/;\n private static readonly _funcCallReg = /^([a-zA-Z_][a-zA-Z0-9_]*)\\s*\\((.*)\\)$/;\n private static readonly _macroDefineIncludeMap = new Map<string, MacroDefineList>();\n\n /**\n * @internal\n */\n static _repeatIncludeSet = new Set<string>();\n\n static parse(\n source: string,\n basePathForIncludeKey: string,\n outMacroDefineList: MacroDefineList,\n parseMacro = true\n ): string {\n if (parseMacro) {\n this._parseMacroDefines(source, outMacroDefineList);\n }\n return source.replace(this._includeReg, (_, includeName) =>\n this._replace(includeName, basePathForIncludeKey, outMacroDefineList)\n );\n }\n\n static getReferenceSymbolNames(macroDefineList: MacroDefineList, macroName: string, out: string[]): void {\n out.length = 0;\n const infos = macroDefineList[macroName];\n if (!infos) return;\n\n for (let i = 0; i < infos.length; i++) {\n const info = infos[i];\n const valueType = info.valueType;\n if (valueType === MacroValueType.FunctionCall || valueType === MacroValueType.Symbol) {\n const referencedName = valueType === MacroValueType.FunctionCall ? info.functionCallName : info.value;\n if (info.params.indexOf(referencedName) !== -1) continue;\n if (out.indexOf(referencedName) === -1) out.push(referencedName);\n } else if (valueType === MacroValueType.Other) {\n // #if _VERBOSE\n Logger.warn(\n `Warning: Macro \"${info.name}\" has an unrecognized value \"${info.value}\". ShaderLab does not validate this type.`\n );\n // #endif\n }\n }\n }\n\n private static _isNumber(str: string): boolean {\n return !isNaN(Number(str));\n }\n\n private static _isExist(list: MacroDefineInfo[], item: MacroDefineInfo): boolean {\n return list.some(\n (e) =>\n e.valueType === item.valueType &&\n e.value === item.value &&\n e.isFunction === item.isFunction &&\n e.functionCallName === item.functionCallName &&\n e.params.length === item.params.length &&\n e.params.every((p, i) => p === item.params[i])\n );\n }\n\n private static _parseMacroDefines(source: string, outMacroList: MacroDefineList): void {\n let match: RegExpExecArray | null;\n this._macroRegex.lastIndex = 0;\n\n while ((match = this._macroRegex.exec(source)) !== null) {\n const [, name, paramsGroup, paramsStr, valueRaw] = match;\n const isFunction = !!paramsGroup && !!valueRaw;\n const params =\n isFunction && paramsStr\n ? paramsStr\n .split(\",\")\n .map((p) => p.trim())\n .filter(Boolean)\n : [];\n const value = valueRaw ? valueRaw.trim() : \"\";\n\n let valueType = MacroValueType.Other;\n let functionCallName = \"\";\n\n if (this._isNumber(value)) {\n valueType = MacroValueType.Number;\n } else if (this._symbolReg.test(value)) {\n valueType = MacroValueType.Symbol;\n } else {\n const callMatch = this._funcCallReg.exec(value);\n if (callMatch) {\n valueType = MacroValueType.FunctionCall;\n functionCallName = callMatch[1];\n }\n }\n\n const info: MacroDefineInfo = {\n isFunction,\n name,\n value,\n valueType,\n params,\n functionCallName\n };\n\n const arr = outMacroList[name];\n if (arr) {\n if (!this._isExist(arr, info)) arr.push(info);\n } else {\n outMacroList[name] = [info];\n }\n }\n }\n\n private static _mergeMacroDefineLists(from: MacroDefineList, to: MacroDefineList): void {\n for (const macroName in from) {\n if (to[macroName]) {\n const target = to[macroName];\n const src = from[macroName];\n for (let i = 0; i < src.length; i++) {\n const info = src[i];\n if (!this._isExist(target, info)) target.push(info);\n }\n } else {\n to[macroName] = from[macroName];\n }\n }\n }\n\n private static _replace(\n includeName: string,\n basePathForIncludeKey: string,\n outMacroDefineList: MacroDefineList\n ): string {\n let path: string;\n if (includeName[0] === \".\") {\n // @ts-ignore\n path = new URL(includeName, basePathForIncludeKey).href.substring(ShaderPass._shaderRootPath.length);\n } else {\n path = includeName;\n }\n\n const chunk = (ShaderLib as any)[path];\n if (!chunk) {\n Logger.error(`Shader slice \"${path}\" not founded.`);\n return \"\";\n }\n\n if (this._repeatIncludeSet.has(path)) {\n Logger.warn(`Shader slice \"${path}\" is included multiple times.`);\n }\n this._repeatIncludeSet.add(path);\n\n if (this._macroDefineIncludeMap.has(path)) {\n this._mergeMacroDefineLists(this._macroDefineIncludeMap.get(path)!, outMacroDefineList);\n } else {\n const chunkMacroDefineList: MacroDefineList = {};\n this._parseMacroDefines(chunk, chunkMacroDefineList);\n this._macroDefineIncludeMap.set(path, chunkMacroDefineList);\n this._mergeMacroDefineLists(chunkMacroDefineList, outMacroDefineList);\n }\n\n return this.parse(chunk, basePathForIncludeKey, outMacroDefineList, false);\n }\n}\n","function _is_native_reflect_construct() {\n // Since Reflect.construct can't be properly polyfilled, some\n // implementations (e.g. core-js@2) don't set the correct internal slots.\n // Those polyfills don't allow us to subclass built-ins, so we need to\n // use our fallback implementation.\n try {\n // If the internal slots aren't set, this throws an error similar to\n // TypeError: this is not a Boolean object.\n var result = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function() {}));\n } catch (_) {}\n return (_is_native_reflect_construct = function() {\n return !!result;\n })();\n}\n\nexport { _is_native_reflect_construct as _ };\n","import { _ as _is_native_reflect_construct } from \"./_is_native_reflect_construct.js\";\nimport { _ as _set_prototype_of } from \"./_set_prototype_of.js\";\nfunction _construct(Parent, args, Class) {\n if (_is_native_reflect_construct()) _construct = Reflect.construct;\n else {\n _construct = function construct(Parent, args, Class) {\n var a = [null];\n a.push.apply(a, args);\n var Constructor = Function.bind.apply(Parent, a);\n var instance = new Constructor();\n\n if (Class) _set_prototype_of(instance, Class.prototype);\n\n return instance;\n };\n }\n\n return _construct.apply(null, arguments);\n}\nexport { _construct as _ };\n","export enum EShaderStage {\n VERTEX,\n FRAGMENT,\n ALL\n}\n","import { GalaceanDataType, TypeAny } from \"../../common\";\nimport { Keyword } from \"../../common/enums/Keyword\";\nimport { EShaderStage } from \"../../common/enums/ShaderStage\";\n\nexport enum EGenType {\n GenType = 200,\n GenIntType,\n GenUintType,\n GenBoolType,\n Mat,\n BoolVec,\n IntVec,\n UintVec,\n Vec,\n GVec4,\n GSampler2D,\n GSampler3D,\n GSamplerCube,\n GSampler2DArray\n}\n\nexport type NonGenericGalaceanType = Exclude<GalaceanDataType, string>;\ntype BuiltinType = NonGenericGalaceanType | EGenType;\n\nfunction isGenericType(t: BuiltinType) {\n return t >= EGenType.GenType && t <= EGenType.GSampler2DArray;\n}\n\nconst BuiltinFunctionTable: Map<string, BuiltinFunction[]> = new Map();\n\nexport class BuiltinFunction {\n ident: string;\n readonly args: BuiltinType[];\n readonly scope: EShaderStage;\n\n private _returnType: BuiltinType;\n private _realReturnType: NonGenericGalaceanType;\n\n get realReturnType(): NonGenericGalaceanType {\n return this._realReturnType;\n }\n\n private constructor(ident: string, returnType: BuiltinType, scope: EShaderStage, ...args: BuiltinType[]) {\n this.ident = ident;\n this._returnType = returnType;\n this.args = args;\n this.scope = scope;\n }\n\n static getReturnType(fn: BuiltinFunction, genType?: NonGenericGalaceanType) {\n if (!isGenericType(fn._returnType)) return fn._returnType as NonGenericGalaceanType;\n return genType;\n }\n\n static _create(ident: string, returnType: BuiltinType, ...args: BuiltinType[]) {\n const fn = new BuiltinFunction(ident, returnType, EShaderStage.ALL, ...args);\n const list = BuiltinFunctionTable.get(ident) ?? [];\n list.push(fn);\n BuiltinFunctionTable.set(ident, list);\n }\n\n static _createWithScop(ident: string, returnType: BuiltinType, scope: EShaderStage, ...args: BuiltinType[]) {\n const fn = new BuiltinFunction(ident, returnType, scope, ...args);\n const list = BuiltinFunctionTable.get(ident) ?? [];\n list.push(fn);\n BuiltinFunctionTable.set(ident, list);\n }\n\n // TODO: correct the type deduce, consider the following case:\n // It incorrectly inferred the type of the following expression as float, which should be vec3.\n // max(scatterAmt.xyz,0.0001)\n static getFn(ident: string, parameterTypes: NonGenericGalaceanType[]): BuiltinFunction | undefined {\n const list = BuiltinFunctionTable.get(ident);\n if (list) {\n for (let length = list.length, i = 0; i < length; i++) {\n const fn = list[i];\n const fnArgs = fn.args;\n const argLength = fnArgs.length;\n if (argLength !== parameterTypes.length) continue;\n // Try to match generic parameter type.\n let returnType = TypeAny;\n let found = true;\n for (let i = 0; i < argLength; i++) {\n const curFnArg = fnArgs[i];\n if (isGenericType(curFnArg)) {\n if (returnType === TypeAny) returnType = parameterTypes[i];\n } else {\n if (curFnArg !== parameterTypes[i] && parameterTypes[i] !== TypeAny) {\n found = false;\n break;\n }\n }\n }\n if (found) {\n fn._realReturnType = returnType;\n return fn;\n }\n }\n }\n }\n\n static isExist(ident: string) {\n return !!BuiltinFunctionTable.get(ident);\n }\n}\n\nBuiltinFunction._create(\"radians\", EGenType.GenType, EGenType.GenType);\nBuiltinFunction._create(\"degrees\", EGenType.GenType, EGenType.GenType);\nBuiltinFunction._create(\"sin\", EGenType.GenType, EGenType.GenType);\nBuiltinFunction._create(\"cos\", EGenType.GenType, EGenType.GenType);\nBuiltinFunction._create(\"tan\", EGenType.GenType, EGenType.GenType);\nBuiltinFunction._create(\"asin\", EGenType.GenType, EGenType.GenType);\nBuiltinFunction._create(\"acos\", EGenType.GenType, EGenType.GenType);\nBuiltinFunction._create(\"atan\", EGenType.GenType, EGenType.GenType, EGenType.GenType);\nBuiltinFunction._create(\"atan\", EGenType.GenType, EGenType.GenType);\nBuiltinFunction._create(\"sinh\", EGenType.GenType, EGenType.GenType);\nBuiltinFunction._create(\"cosh\", EGenType.GenType, EGenType.GenType);\nBuiltinFunction._create(\"tanh\", EGenType.GenType, EGenType.GenType);\nBuiltinFunction._create(\"asinh\", EGenType.GenType, EGenType.GenType);\nBuiltinFunction._create(\"acosh\", EGenType.GenType, EGenType.GenType);\nBuiltinFunction._create(\"atanh\", EGenType.GenType, EGenType.GenType);\n\nBuiltinFunction._create(\"pow\", EGenType.GenType, EGenType.GenType, EGenType.GenType);\nBuiltinFunction._create(\"exp\", EGenType.GenType, EGenType.GenType);\nBuiltinFunction._create(\"log\", EGenType.GenType, EGenType.GenType);\nBuiltinFunction._create(\"exp2\", EGenType.GenType, EGenType.GenType);\nBuiltinFunction._create(\"log2\", EGenType.GenType, EGenType.GenType);\nBuiltinFunction._create(\"sqrt\", EGenType.GenType, EGenType.GenType);\nBuiltinFunction._create(\"inversesqrt\", EGenType.GenType, EGenType.GenType);\n\nBuiltinFunction._create(\"abs\", EGenType.GenType, EGenType.GenType);\nBuiltinFunction._create(\"abs\", EGenType.GenIntType, EGenType.GenIntType);\nBuiltinFunction._create(\"sign\", EGenType.GenType, EGenType.GenType);\nBuiltinFunction._create(\"sign\", EGenType.GenIntType, EGenType.GenIntType);\nBuiltinFunction._create(\"floor\", EGenType.GenType, EGenType.GenType);\nBuiltinFunction._create(\"trunc\", EGenType.GenType, EGenType.GenType);\nBuiltinFunction._create(\"round\", EGenType.GenType, EGenType.GenType);\nBuiltinFunction._create(\"roundEven\", EGenType.GenType, EGenType.GenType);\nBuiltinFunction._create(\"ceil\", EGenType.GenType, EGenType.GenType);\nBuiltinFunction._create(\"fract\", EGenType.GenType, EGenType.GenType);\nBuiltinFunction._create(\"mod\", EGenType.GenType, EGenType.GenType, Keyword.FLOAT);\nBuiltinFunction._create(\"mod\", EGenType.GenType, EGenType.GenType, EGenType.GenType);\nBuiltinFunction._create(\"min\", EGenType.GenType, EGenType.GenType, EGenType.GenType);\nBuiltinFunction._create(\"min\", EGenType.GenType, EGenType.GenType, Keyword.FLOAT);\nBuiltinFunction._create(\"min\", EGenType.GenIntType, EGenType.GenIntType, EGenType.GenIntType);\nBuiltinFunction._create(\"min\", EGenType.GenIntType, EGenType.GenIntType, Keyword.INT);\nBuiltinFunction._create(\"min\", EGenType.GenUintType, EGenType.GenUintType, EGenType.GenUintType);\nBuiltinFunction._create(\"min\", EGenType.GenUintType, EGenType.GenUintType, Keyword.UINT);\nBuiltinFunction._create(\"max\", EGenType.GenType, EGenType.GenType, EGenType.GenType);\nBuiltinFunction._create(\"max\", EGenType.GenType, EGenType.GenType, Keyword.FLOAT);\nBuiltinFunction._create(\"max\", EGenType.GenIntType, EGenType.GenIntType, EGenType.GenIntType);\nBuiltinFunction._create(\"max\", EGenType.GenIntType, EGenType.GenIntType, Keyword.INT);\nBuiltinFunction._create(\"clamp\", EGenType.GenType, EGenType.GenType, EGenType.GenType, EGenType.GenType);\nBuiltinFunction._create(\"clamp\", EGenType.GenType, EGenType.GenType, Keyword.FLOAT, Keyword.FLOAT);\nBuiltinFunction._create(\"clamp\", EGenType.GenIntType, EGenType.GenIntType, EGenType.GenIntType, EGenType.GenIntType);\nBuiltinFunction._create(\"clamp\", EGenType.GenIntType, EGenType.GenIntType, Keyword.INT, Keyword.INT);\nBuiltinFunction._create(\n \"clamp\",\n EGenType.GenUintType,\n EGenType.GenUintType,\n EGenType.GenUintType,\n EGenType.GenUintType\n);\nBuiltinFunction._create(\"clamp\", EGenType.GenUintType, EGenType.GenUintType, Keyword.UINT, Keyword.UINT);\nBuiltinFunction._create(\"mix\", EGenType.GenType, EGenType.GenType, EGenType.GenType, EGenType.GenType);\nBuiltinFunction._create(\"mix\", EGenType.GenType, EGenType.GenType, EGenType.GenType, Keyword.FLOAT);\nBuiltinFunction._create(\"mix\", EGenType.GenType, EGenType.GenType, EGenType.GenType, EGenType.GenBoolType);\nBuiltinFunction._create(\"step\", EGenType.GenType, EGenType.GenType, EGenType.GenType);\nBuiltinFunction._create(\"step\", EGenType.GenType, Keyword.FLOAT, EGenType.GenType);\nBuiltinFunction._create(\"smoothstep\", EGenType.GenType, EGenType.GenType, EGenType.GenType, EGenType.GenType);\nBuiltinFunction._create(\"smoothstep\", EGenType.GenType, Keyword.FLOAT, Keyword.FLOAT, EGenType.GenType);\nBuiltinFunction._create(\"isnan\", EGenType.GenBoolType, EGenType.GenType);\nBuiltinFunction._create(\"isinf\", EGenType.GenBoolType, EGenType.GenType);\nBuiltinFunction._create(\"floatBitsToInt\", EGenType.GenType, EGenType.GenType);\nBuiltinFunction._create(\"floatBitsToUint\", EGenType.GenUintType, EGenType.GenType);\nBuiltinFunction._create(\"intBitsToFloat\", EGenType.GenType, EGenType.GenIntType);\nBuiltinFunction._create(\"uintBitsToFloat\", EGenType.GenType, EGenType.GenUintType);\n\nBuiltinFunction._create(\"packSnorm2x16\", Keyword.UINT, Keyword.VEC2);\nBuiltinFunction._create(\"unpackSnorm2x16\", Keyword.VEC2, Keyword.UINT);\nBuiltinFunction._create(\"packUnorm2x16\", Keyword.UINT, Keyword.VEC2);\nBuiltinFunction._create(\"unpackUnorm2x16\", Keyword.VEC2, Keyword.UINT);\nBuiltinFunction._create(\"packHalf2x16\", Keyword.UINT, Keyword.VEC2);\nBuiltinFunction._create(\"unpackHalf2x16\", Keyword.VEC2, Keyword.UINT);\n\nBuiltinFunction._create(\"length\", Keyword.FLOAT, EGenType.GenType);\nBuiltinFunction._create(\"distance\", Keyword.FLOAT, EGenType.GenType, EGenType.GenType);\nBuiltinFunction._create(\"dot\", Keyword.FLOAT, EGenType.GenType, EGenType.GenType);\nBuiltinFunction._create(\"cross\", Keyword.VEC3, Keyword.VEC3, Keyword.VEC3);\nBuiltinFunction._create(\"normalize\", EGenType.GenType, EGenType.GenType);\nBuiltinFunction._create(\"faceforward\", EGenType.GenType, EGenType.GenType, EGenType.GenType, EGenType.GenType);\nBuiltinFunction._create(\"reflect\", EGenType.GenType, EGenType.GenType, EGenType.GenType);\nBuiltinFunction._create(\"refract\", EGenType.GenType, EGenType.GenType, EGenType.GenType, Keyword.FLOAT);\nBuiltinFunction._create(\"matrixCompMult\", EGenType.Mat, EGenType.Mat, EGenType.Mat);\nBuiltinFunction._create(\"outerProduct\", Keyword.MAT2, Keyword.VEC2, Keyword.VEC2);\nBuiltinFunction._create(\"outerProduct\", Keyword.MAT3, Keyword.VEC3, Keyword.VEC3);\nBuiltinFunction._create(\"outerProduct\", Keyword.MAT4, Keyword.VEC4, Keyword.VEC4);\n\nBuiltinFunction._create(\"outerProduct\", Keyword.MAT2X3, Keyword.VEC3, Keyword.VEC2);\nBuiltinFunction._create(\"outerProduct\", Keyword.MAT3X2, Keyword.VEC2, Keyword.VEC3);\n\nBuiltinFunction._create(\"outerProduct\", Keyword.MAT2X4, Keyword.VEC4, Keyword.VEC2);\nBuiltinFunction._create(\"outerProduct\", Keyword.MAT4X2, Keyword.VEC2, Keyword.VEC4);\n\nBuiltinFunction._create(\"outerProduct\", Keyword.MAT3X4, Keyword.VEC4, Keyword.VEC3);\nBuiltinFunction._create(\"outerProduct\", Keyword.MAT4X3, Keyword.VEC3, Keyword.VEC4);\n\nBuiltinFunction._create(\"transpose\", Keyword.MAT2, Keyword.MAT2);\nBuiltinFunction._create(\"transpose\", Keyword.MAT3, Keyword.MAT3);\nBuiltinFunction._create(\"transpose\", Keyword.MAT4, Keyword.MAT4);\nBuiltinFunction._create(\"transpose\", Keyword.MAT2X3, Keyword.MAT3X2);\nBuiltinFunction._create(\"transpose\", Keyword.MAT3X2, Keyword.MAT2X3);\nBuiltinFunction._create(\"transpose\", Keyword.MAT4X2, Keyword.MAT2X4);\nBuiltinFunction._create(\"transpose\", Keyword.MAT2X4, Keyword.MAT4X2);\nBuiltinFunction._create(\"transpose\", Keyword.MAT3X4, Keyword.MAT4X3);\nBuiltinFunction._create(\"transpose\", Keyword.MAT4X3, Keyword.MAT3X4);\n\nBuiltinFunction._create(\"determinant\", Keyword.FLOAT, Keyword.MAT2);\nBuiltinFunction._create(\"determinant\", Keyword.FLOAT, Keyword.MAT3);\nBuiltinFunction._create(\"determinant\", Keyword.FLOAT, Keyword.MAT4);\n\nBuiltinFunction._create(\"inverse\", Keyword.MAT2, Keyword.MAT2);\nBuiltinFunction._create(\"inverse\", Keyword.MAT3, Keyword.MAT3);\nBuiltinFunction._create(\"inverse\", Keyword.MAT4, Keyword.MAT4);\n\nBuiltinFunction._create(\"lessThan\", EGenType.BoolVec, EGenType.Vec, EGenType.Vec);\nBuiltinFunction._create(\"lessThan\", EGenType.BoolVec, EGenType.IntVec, EGenType.IntVec);\nBuiltinFunction._create(\"lessThan\", EGenType.BoolVec, EGenType.UintVec, EGenType.UintVec);\n\nBuiltinFunction._create(\"lessThanEqual\", EGenType.BoolVec, EGenType.Vec, EGenType.Vec);\nBuiltinFunction._create(\"lessThanEqual\", EGenType.BoolVec, EGenType.IntVec, EGenType.IntVec);\nBuiltinFunction._create(\"lessThanEqual\", EGenType.BoolVec, EGenType.UintVec, EGenType.UintVec);\n\nBuiltinFunction._create(\"greaterThan\", EGenType.BoolVec, EGenType.Vec, EGenType.Vec);\nBuiltinFunction._create(\"greaterThan\", EGenType.BoolVec, EGenType.IntVec, EGenType.IntVec);\nBuiltinFunction._create(\"greaterThan\", EGenType.BoolVec, EGenType.UintVec, EGenType.UintVec);\n\nBuiltinFunction._create(\"greaterThanEqual\", EGenType.BoolVec, EGenType.Vec, EGenType.Vec);\nBuiltinFunction._create(\"greaterThanEqual\", EGenType.BoolVec, EGenType.IntVec, EGenType.IntVec);\nBuiltinFunction._create(\"greaterThanEqual\", EGenType.BoolVec, EGenType.UintVec, EGenType.UintVec);\n\nBuiltinFunction._create(\"equal\", EGenType.BoolVec, EGenType.Vec, EGenType.Vec);\nBuiltinFunction._create(\"equal\", EGenType.BoolVec, EGenType.IntVec, EGenType.IntVec);\nBuiltinFunction._create(\"equal\", EGenType.BoolVec, EGenType.UintVec, EGenType.UintVec);\nBuiltinFunction._create(\"equal\", EGenType.BoolVec, EGenType.BoolVec, EGenType.BoolVec);\n\nBuiltinFunction._create(\"notEqual\", EGenType.BoolVec, EGenType.Vec, EGenType.Vec);\nBuiltinFunction._create(\"notEqual\", EGenType.BoolVec, EGenType.IntVec, EGenType.IntVec);\nBuiltinFunction._create(\"notEqual\", EGenType.BoolVec, EGenType.UintVec, EGenType.UintVec);\nBuiltinFunction._create(\"notEqual\", EGenType.BoolVec, EGenType.BoolVec, EGenType.BoolVec);\n\nBuiltinFunction._create(\"any\", Keyword.BOOL, EGenType.BoolVec);\nBuiltinFunction._create(\"all\", Keyword.BOOL, EGenType.BoolVec);\nBuiltinFunction._create(\"not\", EGenType.BoolVec, EGenType.BoolVec);\n\nBuiltinFunction._create(\"textureSize\", Keyword.IVEC2, EGenType.GSampler2D, Keyword.INT);\nBuiltinFunction._create(\"textureSize\", Keyword.IVEC3, EGenType.GSampler3D, Keyword.INT);\nBuiltinFunction._create(\"textureSize\", Keyword.IVEC2, EGenType.GSamplerCube, Keyword.INT);\n\nBuiltinFunction._create(\"textureSize\", Keyword.IVEC2, Keyword.SAMPLER2D_SHADOW, Keyword.INT);\nBuiltinFunction._create(\"textureSize\", Keyword.IVEC2, Keyword.SAMPLER_CUBE_SHADOW, Keyword.INT);\n\nBuiltinFunction._create(\"textureSize\", Keyword.IVEC3, EGenType.GSampler2DArray, Keyword.INT);\nBuiltinFunction._create(\"textureSize\", Keyword.IVEC3, Keyword.SAMPLER2D_ARRAY_SHADOW, Keyword.INT);\n\nBuiltinFunction._create(\"texture2D\", Keyword.VEC4, Keyword.SAMPLER2D, Keyword.VEC2);\nBuiltinFunction._create(\"texture2D\", Keyword.VEC4, Keyword.SAMPLER2D, Keyword.VEC2, Keyword.FLOAT);\n\nBuiltinFunction._create(\"texture\", EGenType.GVec4, EGenType.GSampler2D, Keyword.VEC2, Keyword.FLOAT);\nBuiltinFunction._create(\"texture\", EGenType.GVec4, EGenType.GSampler2D, Keyword.VEC2);\nBuiltinFunction._create(\"texture\", EGenType.GVec4, EGenType.GSampler3D, Keyword.VEC3, Keyword.FLOAT);\nBuiltinFunction._create(\"texture\", EGenType.GVec4, EGenType.GSampler3D, Keyword.VEC3);\n\nBuiltinFunction._create(\"texture\", EGenType.GVec4, EGenType.GSamplerCube, Keyword.VEC3, Keyword.FLOAT);\nBuiltinFunction._create(\"texture\", EGenType.GVec4, EGenType.GSamplerCube, Keyword.VEC3);\n\nBuiltinFunction._create(\"texture\", Keyword.FLOAT, Keyword.SAMPLER2D_SHADOW, Keyword.VEC3, Keyword.FLOAT);\nBuiltinFunction._create(\"texture\", Keyword.FLOAT, Keyword.SAMPLER2D_SHADOW, Keyword.VEC3);\n\nBuiltinFunction._create(\"texture\", Keyword.FLOAT, Keyword.SAMPLER_CUBE_SHADOW, Keyword.VEC4, Keyword.FLOAT);\nBuiltinFunction._create(\"texture\", Keyword.FLOAT, Keyword.SAMPLER_CUBE_SHADOW, Keyword.VEC4);\n\nBuiltinFunction._create(\"texture\", EGenType.GVec4, Keyword.SAMPLER2D_ARRAY, Keyword.VEC3, Keyword.FLOAT);\nBuiltinFunction._create(\"texture\", EGenType.GVec4, Keyword.SAMPLER2D_ARRAY, Keyword.VEC3);\n\nBuiltinFunction._create(\"texture\", Keyword.FLOAT, Keyword.SAMPLER2D_ARRAY_SHADOW, Keyword.VEC4);\n\nBuiltinFunction._create(\"textureProj\", EGenType.GVec4, EGenType.GSampler2D, Keyword.VEC3, Keyword.FLOAT);\nBuiltinFunction._create(\"textureProj\", EGenType.GVec4, EGenType.GSampler2D, Keyword.VEC3);\nBuiltinFunction._create(\"textureProj\", EGenType.GVec4, EGenType.GSampler2D, Keyword.VEC4, Keyword.FLOAT);\nBuiltinFunction._create(\"textureProj\", EGenType.GVec4, EGenType.GSampler2D, Keyword.VEC4);\nBuiltinFunction._create(\"textureProj\", EGenType.GVec4, EGenType.GSampler3D, Keyword.VEC4, Keyword.FLOAT);\nBuiltinFunction._create(\"textureProj\", EGenType.GVec4, EGenType.GSampler3D, Keyword.VEC4);\n\nBuiltinFunction._create(\"textureProj\", Keyword.FLOAT, Keyword.SAMPLER2D_SHADOW, Keyword.VEC4, Keyword.FLOAT);\nBuiltinFunction._create(\"textureProj\", Keyword.FLOAT, Keyword.SAMPLER2D_SHADOW, Keyword.VEC4);\n\nBuiltinFunction._create(\"textureLod\", EGenType.GVec4, EGenType.GSampler2D, Keyword.VEC2, Keyword.FLOAT);\nBuiltinFunction._create(\"textureLod\", EGenType.GVec4, EGenType.GSampler3D, Keyword.VEC3, Keyword.FLOAT);\nBuiltinFunction._create(\"textureLod\", EGenType.GVec4, EGenType.GSamplerCube, Keyword.VEC3, Keyword.FLOAT);\nBuiltinFunction._create(\"textureLod\", Keyword.FLOAT, Keyword.SAMPLER2D_SHADOW, Keyword.VEC3, Keyword.FLOAT);\nBuiltinFunction._create(\"textureLod\", EGenType.GVec4, EGenType.GSampler2DArray, Keyword.VEC3, Keyword.FLOAT);\nBuiltinFunction._create(\"texture2DLodEXT\", EGenType.GVec4, EGenType.GSampler2D, Keyword.VEC2, Keyword.FLOAT);\nBuiltinFunction._create(\"texture2DLodEXT\", EGenType.GVec4, EGenType.GSampler3D, Keyword.VEC3, Keyword.FLOAT);\n\nBuiltinFunction._create(\"textureCube\", Keyword.SAMPLER_CUBE, Keyword.VEC3);\nBuiltinFunction._create(\"textureCube\", Keyword.SAMPLER_CUBE, Keyword.VEC3, Keyword.FLOAT);\nBuiltinFunction._create(\"textureCube\", EGenType.GVec4, EGenType.GSamplerCube, Keyword.VEC3, Keyword.FLOAT);\nBuiltinFunction._create(\"textureCubeLod\", Keyword.SAMPLER_CUBE, Keyword.VEC3, Keyword.FLOAT);\nBuiltinFunction._create(\"textureCubeLodEXT\", EGenType.GVec4, EGenType.GSamplerCube, Keyword.VEC3, Keyword.FLOAT);\n\nBuiltinFunction._create(\n \"textureOffset\",\n EGenType.GVec4,\n EGenType.GSampler2D,\n Keyword.VEC2,\n Keyword.IVEC2,\n Keyword.FLOAT\n);\nBuiltinFunction._create(\"textureOffset\", EGenType.GVec4, EGenType.GSampler2D, Keyword.VEC2, Keyword.IVEC2);\n\nBuiltinFunction._create(\n \"textureOffset\",\n EGenType.GVec4,\n EGenType.GSampler3D,\n Keyword.VEC3,\n Keyword.IVEC3,\n Keyword.FLOAT\n);\nBuiltinFunction._create(\"textureOffset\", EGenType.GVec4, EGenType.GSampler3D, Keyword.VEC3, Keyword.IVEC3);\n\nBuiltinFunction._create(\n \"textureOffset\",\n Keyword.FLOAT,\n Keyword.SAMPLER2D_SHADOW,\n Keyword.VEC3,\n Keyword.IVEC2,\n Keyword.FLOAT\n);\nBuiltinFunction._create(\"textureOffset\", Keyword.FLOAT, Keyword.SAMPLER2D_SHADOW, Keyword.VEC3, Keyword.IVEC2);\nBuiltinFunction._create(\n \"textureOffset\",\n EGenType.GVec4,\n EGenType.GSampler2DArray,\n Keyword.VEC3,\n Keyword.IVEC2,\n Keyword.FLOAT\n);\nBuiltinFunction._create(\"textureOffset\", EGenType.GVec4, EGenType.GSampler2DArray, Keyword.VEC3, Keyword.IVEC2);\n\nBuiltinFunction._create(\"texelFetch\", EGenType.GVec4, EGenType.GSampler2D, Keyword.IVEC2, Keyword.INT);\nBuiltinFunction._create(\"texelFetch\", EGenType.GVec4, EGenType.GSampler3D, Keyword.IVEC3, Keyword.INT);\nBuiltinFunction._create(\"texelFetch\", EGenType.GVec4, EGenType.GSampler2DArray, Keyword.IVEC3, Keyword.INT);\n\nBuiltinFunction._create(\n \"texelFetchOffset\",\n EGenType.GVec4,\n EGenType.GSampler2D,\n Keyword.IVEC2,\n Keyword.INT,\n Keyword.IVEC2\n);\nBuiltinFunction._create(\n \"texelFetchOffset\",\n EGenType.GVec4,\n EGenType.GSampler3D,\n Keyword.IVEC3,\n Keyword.INT,\n Keyword.IVEC3\n);\nBuiltinFunction._create(\n \"texelFetchOffset\",\n EGenType.GVec4,\n EGenType.GSampler2DArray,\n Keyword.IVEC3,\n Keyword.INT,\n Keyword.IVEC2\n);\n\nBuiltinFunction._create(\n \"textureProjOffset\",\n EGenType.GVec4,\n EGenType.GSampler2D,\n Keyword.VEC3,\n Keyword.IVEC2,\n Keyword.FLOAT\n);\nBuiltinFunction._create(\"textureProjOffset\", EGenType.GVec4, EGenType.GSampler2D, Keyword.VEC3, Keyword.IVEC2);\n\nBuiltinFunction._create(\n \"textureProjOffset\",\n EGenType.GVec4,\n EGenType.GSampler2D,\n Keyword.VEC4,\n Keyword.IVEC2,\n Keyword.FLOAT\n);\nBuiltinFunction._create(\"textureProjOffset\", EGenType.GVec4, EGenType.GSampler2D, Keyword.VEC4, Keyword.IVEC2);\n\nBuiltinFunction._create(\n \"textureProjOffset\",\n EGenType.GVec4,\n EGenType.GSampler3D,\n Keyword.VEC4,\n Keyword.IVEC3,\n Keyword.FLOAT\n);\nBuiltinFunction._create(\"textureProjOffset\", EGenType.GVec4, EGenType.GSampler3D, Keyword.VEC4, Keyword.IVEC3);\n\nBuiltinFunction._create(\n \"textureProjOffset\",\n Keyword.FLOAT,\n Keyword.SAMPLER2D_SHADOW,\n Keyword.VEC4,\n Keyword.IVEC2,\n Keyword.FLOAT\n);\nBuiltinFunction._create(\"textureProjOffset\", Keyword.FLOAT, Keyword.SAMPLER2D_SHADOW, Keyword.VEC4, Keyword.IVEC2);\n\nBuiltinFunction._create(\n \"textureLodOffset\",\n EGenType.GVec4,\n EGenType.GSampler2D,\n Keyword.VEC2,\n Keyword.FLOAT,\n Keyword.IVEC2\n);\nBuiltinFunction._create(\n \"textureLodOffset\",\n EGenType.GVec4,\n EGenType.GSampler3D,\n Keyword.VEC3,\n Keyword.FLOAT,\n Keyword.IVEC3\n);\n\nBuiltinFunction._create(\n \"textureLodOffset\",\n Keyword.FLOAT,\n Keyword.SAMPLER2D_SHADOW,\n Keyword.VEC3,\n Keyword.FLOAT,\n Keyword.IVEC2\n);\nBuiltinFunction._create(\n \"textureLodOffset\",\n EGenType.GVec4,\n EGenType.GSampler2DArray,\n Keyword.VEC3,\n Keyword.FLOAT,\n Keyword.IVEC2\n);\n\nBuiltinFunction._create(\"textureProjLod\", EGenType.GVec4, EGenType.GSampler2D, Keyword.VEC3, Keyword.FLOAT);\nBuiltinFunction._create(\"textureProjLod\", EGenType.GVec4, EGenType.GSampler2D, Keyword.VEC4, Keyword.FLOAT);\nBuiltinFunction._create(\"textureProjLod\", EGenType.GVec4, EGenType.GSampler3D, Keyword.VEC4, Keyword.FLOAT);\nBuiltinFunction._create(\"textureProjLod\", Keyword.FLOAT, Keyword.SAMPLER2D_SHADOW, Keyword.VEC4, Keyword.FLOAT);\n\nBuiltinFunction._create(\n \"textureProjLodOffset\",\n EGenType.GVec4,\n EGenType.GSampler2D,\n Keyword.VEC3,\n Keyword.FLOAT,\n Keyword.IVEC2\n);\nBuiltinFunction._create(\n \"textureProjLodOffset\",\n EGenType.GVec4,\n EGenType.GSampler2D,\n Keyword.VEC4,\n Keyword.FLOAT,\n Keyword.IVEC2\n);\nBuiltinFunction._create(\n \"textureProjLodOffset\",\n EGenType.GVec4,\n EGenType.GSampler3D,\n Keyword.VEC4,\n Keyword.FLOAT,\n Keyword.IVEC3\n);\nBuiltinFunction._create(\n \"textureProjLodOffset\",\n Keyword.FLOAT,\n Keyword.SAMPLER2D_SHADOW,\n Keyword.VEC4,\n Keyword.FLOAT,\n Keyword.IVEC2\n);\n\nBuiltinFunction._create(\"textureGrad\", EGenType.GVec4, EGenType.GSampler2D, Keyword.VEC2, Keyword.VEC2, Keyword.VEC2);\nBuiltinFunction._create(\"textureGrad\", EGenType.GVec4, EGenType.GSampler3D, Keyword.VEC3, Keyword.VEC3, Keyword.VEC3);\nBuiltinFunction._create(\"textureGrad\", EGenType.GVec4, EGenType.GSamplerCube, Keyword.VEC3, Keyword.VEC3, Keyword.VEC3);\n\nBuiltinFunction._create(\n \"textureGrad\",\n Keyword.FLOAT,\n Keyword.SAMPLER2D_SHADOW,\n Keyword.VEC3,\n Keyword.VEC2,\n Keyword.VEC2\n);\nBuiltinFunction._create(\n \"textureGrad\",\n Keyword.FLOAT,\n Keyword.SAMPLER_CUBE_SHADOW,\n Keyword.VEC4,\n Keyword.VEC3,\n Keyword.VEC3\n);\n\nBuiltinFunction._create(\n \"textureGrad\",\n EGenType.GVec4,\n EGenType.GSampler2DArray,\n Keyword.VEC3,\n Keyword.VEC2,\n Keyword.VEC2\n);\nBuiltinFunction._create(\n \"textureGrad\",\n Keyword.FLOAT,\n Keyword.SAMPLER2D_ARRAY_SHADOW,\n Keyword.VEC4,\n Keyword.VEC2,\n Keyword.VEC2\n);\n\nBuiltinFunction._create(\n \"textureGradOffset\",\n EGenType.GVec4,\n EGenType.GSampler2D,\n Keyword.VEC2,\n Keyword.VEC2,\n Keyword.VEC2,\n Keyword.IVEC2\n);\nBuiltinFunction._create(\n \"textureGradOffset\",\n EGenType.GVec4,\n EGenType.GSampler3D,\n Keyword.VEC3,\n Keyword.VEC3,\n Keyword.VEC3,\n Keyword.IVEC3\n);\nBuiltinFunction._create(\n \"textureGradOffset\",\n Keyword.FLOAT,\n Keyword.SAMPLER2D_SHADOW,\n Keyword.VEC3,\n Keyword.VEC2,\n Keyword.VEC2,\n Keyword.IVEC2\n);\nBuiltinFunction._create(\n \"textureGradOffset\",\n EGenType.GVec4,\n EGenType.GSampler2DArray,\n Keyword.VEC3,\n Keyword.VEC2,\n Keyword.VEC2,\n Keyword.IVEC2\n);\nBuiltinFunction._create(\n \"textureGradOffset\",\n Keyword.FLOAT,\n Keyword.SAMPLER2D_ARRAY_SHADOW,\n Keyword.VEC3,\n Keyword.VEC2,\n Keyword.VEC2,\n Keyword.IVEC2\n);\n\nBuiltinFunction._create(\n \"textureProjGrad\",\n EGenType.GVec4,\n EGenType.GSampler2D,\n Keyword.VEC3,\n Keyword.VEC2,\n Keyword.VEC2\n);\nBuiltinFunction._create(\n \"textureProjGrad\",\n EGenType.GVec4,\n EGenType.GSampler2D,\n Keyword.VEC4,\n Keyword.VEC2,\n Keyword.VEC2\n);\nBuiltinFunction._create(\n \"textureProjGrad\",\n EGenType.GVec4,\n EGenType.GSampler3D,\n Keyword.VEC4,\n Keyword.VEC3,\n Keyword.VEC3\n);\nBuiltinFunction._create(\n \"textureProjGrad\",\n Keyword.FLOAT,\n Keyword.SAMPLER2D_SHADOW,\n Keyword.VEC4,\n Keyword.VEC2,\n Keyword.VEC2\n);\n\nBuiltinFunction._create(\n \"textureProjGradOffset\",\n EGenType.GVec4,\n EGenType.GSampler2D,\n Keyword.VEC3,\n Keyword.VEC2,\n Keyword.VEC2,\n Keyword.IVEC2\n);\nBuiltinFunction._create(\n \"textureProjGradOffset\",\n EGenType.GVec4,\n EGenType.GSampler2D,\n Keyword.VEC4,\n Keyword.VEC2,\n Keyword.VEC2,\n Keyword.IVEC2\n);\nBuiltinFunction._create(\n \"textureProjGradOffset\",\n EGenType.GVec4,\n EGenType.GSampler3D,\n Keyword.VEC4,\n Keyword.VEC3,\n Keyword.VEC3,\n Keyword.IVEC3\n);\nBuiltinFunction._create(\n \"textureProjGradOffset\",\n Keyword.FLOAT,\n Keyword.SAMPLER2D_SHADOW,\n Keyword.VEC4,\n Keyword.VEC2,\n Keyword.VEC2,\n Keyword.IVEC2\n);\nBuiltinFunction._createWithScop(\"dFdx\", EGenType.GenType, EShaderStage.FRAGMENT, EGenType.GenType);\nBuiltinFunction._createWithScop(\"dFdy\", EGenType.GenType, EShaderStage.FRAGMENT, EGenType.GenType);\nBuiltinFunction._createWithScop(\"fwidth\", EGenType.GenType, EShaderStage.FRAGMENT, EGenType.GenType);\n","import { GalaceanDataType } from \"../../common\";\nimport { Keyword } from \"../../common/enums/Keyword\";\nimport { EShaderStage } from \"../../common/enums/ShaderStage\";\n\nexport const BuiltinVariableTable: Map<string, BuiltinVariable> = new Map();\n\nexport class BuiltinVariable {\n type: GalaceanDataType;\n lexeme: string;\n scope: EShaderStage;\n\n private constructor(type: GalaceanDataType, lexeme: string, scope: EShaderStage) {\n this.type = type;\n this.lexeme = lexeme;\n this.scope = scope;\n }\n\n static createVariable(lexeme: string, type: GalaceanDataType, scope = EShaderStage.ALL) {\n const item = new BuiltinVariable(type, lexeme, scope);\n BuiltinVariableTable.set(lexeme, item);\n }\n\n static getVar(ident: string): BuiltinVariable {\n return BuiltinVariableTable.get(ident);\n }\n}\n\nBuiltinVariable.createVariable(\"gl_VertexID\", Keyword.INT, EShaderStage.VERTEX);\nBuiltinVariable.createVariable(\"gl_InstanceID\", Keyword.INT, EShaderStage.VERTEX);\nBuiltinVariable.createVariable(\"gl_Position\", Keyword.VEC4, EShaderStage.VERTEX);\nBuiltinVariable.createVariable(\"gl_PointSize\", Keyword.FLOAT, EShaderStage.VERTEX);\n\nBuiltinVariable.createVariable(\"gl_FragCoord\", Keyword.VEC4, EShaderStage.FRAGMENT);\nBuiltinVariable.createVariable(\"gl_FrontFacing\", Keyword.BOOL, EShaderStage.FRAGMENT);\nBuiltinVariable.createVariable(\"gl_FragDepth\", Keyword.FLOAT, EShaderStage.FRAGMENT);\nBuiltinVariable.createVariable(\"gl_PointCoord\", Keyword.VEC2, EShaderStage.FRAGMENT);\nBuiltinVariable.createVariable(\"gl_FragColor\", Keyword.VEC4, EShaderStage.FRAGMENT);\nBuiltinVariable.createVariable(\"gl_FragData\", Keyword.VEC4_ARRAY, EShaderStage.FRAGMENT);\n\nBuiltinVariable.createVariable(\"gl_MaxVertexAttribs\", Keyword.INT);\nBuiltinVariable.createVariable(\"gl_MaxVertexUniformVectors\", Keyword.INT);\nBuiltinVariable.createVariable(\"gl_MaxVertexOutputVectors\", Keyword.INT);\nBuiltinVariable.createVariable(\"gl_MaxFragmentInputVectors\", Keyword.INT);\nBuiltinVariable.createVariable(\"gl_MaxVertexTextureImageUnits\", Keyword.INT);\nBuiltinVariable.createVariable(\"gl_MaxCombinedTextureImageUnits\", Keyword.INT);\nBuiltinVariable.createVariable(\"gl_MaxTextureImageUnits\", Keyword.INT);\nBuiltinVariable.createVariable(\"gl_MaxFragmentUniformVectors\", Keyword.INT);\nBuiltinVariable.createVariable(\"gl_MaxDrawBuffers\", Keyword.INT);\nBuiltinVariable.createVariable(\"gl_MinProgramTexelOffset\", Keyword.INT);\nBuiltinVariable.createVariable(\"gl_MaxProgramTexelOffset\", Keyword.INT);\n","import { TokenType } from \"../common\";\n\nexport type Terminal = TokenType;\n\nexport enum NoneTerminal {\n START = 2000,\n // galacean\n gs_shader_program,\n\n // glsl\n global_declaration,\n variable_declaration,\n variable_declaration_list,\n variable_declaration_statement,\n array_specifier_list,\n array_specifier,\n ext_builtin_type_specifier_nonarray,\n precision_specifier,\n variable_identifier,\n variable_identifier_node,\n primary_expression,\n postfix_expression,\n integer_expression,\n function_call,\n function_call_generic,\n function_call_header_no_parameters,\n function_call_header_with_parameters,\n function_call_parameter_list,\n function_call_header,\n function_identifier,\n constructor_identifier,\n unary_expression,\n unary_operator,\n multiplicative_expression,\n additive_expression,\n shift_expression,\n relational_expression,\n equality_expression,\n and_expression,\n inclusive_or_expression,\n exclusive_or_expression,\n logical_and_expression,\n logical_xor_expression,\n logical_or_expression,\n conditional_expression,\n assignment_expression,\n assignment_operator,\n expression,\n integer_constant_expression,\n integer_constant_expression_operator,\n declaration,\n function_prototype,\n function_declarator,\n function_header_with_parameters,\n function_header,\n function_parameter_list,\n parameter_declarator,\n parameter_declaration,\n parameter_qualifier,\n parameter_type_specifier,\n init_declarator_list,\n single_declaration,\n fully_specified_type,\n type_qualifier,\n single_type_qualifier,\n storage_qualifier,\n precision_qualifier,\n interpolation_qualifier,\n invariant_qualifier,\n type_specifier,\n type_specifier_nonarray,\n type_specifier_no_prec,\n basic_type,\n struct_specifier,\n struct_declaration_list,\n struct_declaration,\n layout_qualifier,\n struct_declarator_list,\n struct_declarator,\n identifier_list,\n decl_identifier,\n initializer,\n initializer_list,\n declaration_statement,\n simple_statement,\n compound_statement_no_scope,\n statement_with_scope,\n compound_statement,\n statement,\n statement_list,\n iteration_statement_no_new_scope,\n expression_statement,\n selection_statement,\n selection_rest_statement,\n condition,\n conditionopt,\n iteration_statement,\n for_init_statement,\n for_rest_statement,\n jump_statement,\n external_declaration,\n function_definition,\n field_selection,\n bool_constant,\n function_identifier_node,\n typename_identifier_node,\n scope_brace,\n scope_end_brace,\n\n // Macro\n macro_undef,\n macro_push_context,\n macro_pop_context,\n macro_elif_expression,\n macro_else_expression,\n global_macro_if_statement,\n global_macro_declaration,\n global_macro_branch,\n macro_struct_declaration,\n macro_struct_branch,\n macro_if_statement,\n macro_branch,\n macro_param_case_list,\n macro_param_block,\n macro_parameter_branch,\n macro_call_arg_case_list,\n macro_call_arg_block,\n macro_call_arg_branch,\n\n // Macro call\n macro_call_symbol,\n macro_call_function,\n\n _ignore\n}\n\nexport type GrammarSymbol = Terminal | NoneTerminal;\n\nexport type Derivation = GrammarSymbol[];\n","import { Logger } from \"@galacean/engine\";\nimport { IBaseSymbol } from \"./IBaseSymbol\";\n\nexport class SymbolTable<T extends IBaseSymbol> {\n private _table: Map<string, T[]> = new Map();\n\n insert(symbol: T, isInMacroBranch = false): void {\n symbol.isInMacroBranch = isInMacroBranch;\n\n const entry = this._table.get(symbol.ident) ?? [];\n for (let i = 0, n = entry.length; i < n; i++) {\n if (entry[i].isInMacroBranch) continue;\n if (entry[i].equal(symbol)) {\n Logger.warn(\"Replace symbol:\", symbol.ident);\n entry[i] = symbol;\n return;\n }\n }\n\n entry.push(symbol);\n this._table.set(symbol.ident, entry);\n }\n\n getSymbol(symbol: T, includeMacro = false): T | undefined {\n const entry = this._table.get(symbol.ident);\n if (entry) {\n for (let i = entry.length - 1; i >= 0; i--) {\n const item = entry[i];\n if (!includeMacro && item.isInMacroBranch) continue;\n if (item.equal(symbol)) return item;\n }\n }\n }\n\n getSymbols(symbol: T, includeMacro = false, out: T[]): T[] {\n out.length = 0;\n this._getSymbols(symbol, includeMacro, out);\n\n return out;\n }\n\n /**\n * @internal\n */\n _getSymbols(symbol: T, includeMacro = false, out: T[]): T[] {\n const entry = this._table.get(symbol.ident);\n\n if (entry) {\n for (let i = entry.length - 1; i >= 0; i--) {\n const item = entry[i];\n if (!includeMacro && item.isInMacroBranch) continue;\n if (item.equal(symbol)) out.push(item);\n }\n }\n\n return out;\n }\n}\n","import { IBaseSymbol } from \"./IBaseSymbol\";\nimport { SymbolTable } from \"./SymbolTable\";\n\nexport class SymbolTableStack<S extends IBaseSymbol, T extends SymbolTable<S>> {\n stack: T[] = [];\n\n /**\n * @internal\n */\n _macroLevel = 0;\n\n get scope(): T {\n return this.stack[this.stack.length - 1];\n }\n\n get isInMacroBranch(): boolean {\n return this._macroLevel > 0;\n }\n\n pushScope(scope: T): void {\n this.stack.push(scope);\n }\n\n clear(): void {\n this.stack.length = 0;\n }\n\n popScope(): T | undefined {\n return this.stack.pop();\n }\n\n insert(symbol: S): void {\n this.scope.insert(symbol, this.isInMacroBranch);\n }\n\n lookup(symbol: S, includeMacro = false): S | undefined {\n for (let i = this.stack.length - 1; i >= 0; i--) {\n const symbolTable = this.stack[i];\n const result = symbolTable.getSymbol(symbol, includeMacro);\n if (result) return result;\n }\n return undefined;\n }\n\n lookupAll(symbol: S, includeMacro = false, out: S[]): S[] {\n out.length = 0;\n for (let i = this.stack.length - 1; i >= 0; i--) {\n const symbolTable = this.stack[i];\n symbolTable._getSymbols(symbol, includeMacro, out);\n }\n return out;\n }\n}\n","function _get_prototype_of(o) {\n _get_prototype_of = Object.setPrototypeOf ? Object.getPrototypeOf : function getPrototypeOf(o) {\n return o.__proto__ || Object.getPrototypeOf(o);\n };\n\n return _get_prototype_of(o);\n}\nexport { _get_prototype_of as _ };\n","function _is_native_function(fn) {\n return Function.toString.call(fn).indexOf(\"[native code]\") !== -1;\n}\nexport { _is_native_function as _ };\n","import { _ as _construct } from \"./_construct.js\";\nimport { _ as _get_prototype_of } from \"./_get_prototype_of.js\";\nimport { _ as _is_native_function } from \"./_is_native_function.js\";\nimport { _ as _set_prototype_of } from \"./_set_prototype_of.js\";\n\nfunction _wrap_native_super(Class) {\n var _cache = typeof Map === \"function\" ? new Map() : undefined;\n _wrap_native_super = function(Class) {\n if (Class === null || !_is_native_function(Class)) return Class;\n if (typeof Class !== \"function\") throw new TypeError(\"Super expression must either be null or a function\");\n if (typeof _cache !== \"undefined\") {\n if (_cache.has(Class)) return _cache.get(Class);\n _cache.set(Class, Wrapper);\n }\n\n function Wrapper() {\n return _construct(Class, arguments, _get_prototype_of(this).constructor);\n }\n Wrapper.prototype = Object.create(Class.prototype, { constructor: { value: Wrapper, enumerable: false, writable: true, configurable: true } });\n\n return _set_prototype_of(Wrapper, Class);\n };\n\n return _wrap_native_super(Class);\n}\nexport { _wrap_native_super as _ };\n","import { ShaderPosition } from \"./common/ShaderPosition\";\nimport { ShaderRange } from \"./common/ShaderRange\";\n\nexport class GSError extends Error {\n static wrappingLineCount = 2;\n\n constructor(\n name: GSErrorName,\n message: string,\n public readonly location: ShaderRange | ShaderPosition,\n public readonly source: string,\n public readonly file?: string\n ) {\n super(message);\n this.name = name;\n }\n\n override toString(): string {\n let start: ShaderPosition, end: ShaderPosition;\n const { message, location, source } = this;\n if (!source) {\n return message;\n }\n\n if (location instanceof ShaderPosition) {\n start = end = location;\n } else {\n start = location.start;\n end = location.end;\n }\n const lines = source.split(\"\\n\");\n\n let diagnosticMessage = `${this.name}: ${message}\\n\\n`;\n\n // #if _VERBOSE\n const lineSplit = \"|···\";\n\n const wrappingLineCount = GSError.wrappingLineCount;\n for (let i = start.line - wrappingLineCount, n = end.line + wrappingLineCount; i <= n; i++) {\n const line = lines[i];\n diagnosticMessage += lineSplit + `${line}\\n`;\n\n if (i < start.line || i > end.line) continue;\n\n let remarkStart = 0;\n let remarkEnd = line.length;\n let paddingLength = lineSplit.length;\n if (i === start.line) {\n remarkStart = start.column;\n paddingLength += start.column;\n }\n if (i === end.line) {\n remarkEnd = end.column;\n }\n const remarkLength = Math.max(remarkEnd - remarkStart, 1);\n\n diagnosticMessage += \" \".repeat(paddingLength) + \"^\".repeat(remarkLength) + \"\\n\";\n }\n // #endif\n\n return diagnosticMessage;\n }\n}\n\nexport enum GSErrorName {\n PreprocessorError = \"PreprocessorError\",\n CompilationError = \"CompilationError\",\n ScannerError = \"ScannerError\",\n CompilationWarn = \"CompilationWarning\"\n}\n","import { GalaceanDataType } from \"../../common\";\nimport { ASTNode } from \"../AST\";\n\nexport class SymbolDataType {\n constructor(\n public type: GalaceanDataType,\n public typeLexeme: string,\n public arraySpecifier?: ASTNode.ArraySpecifier\n ) {}\n}\n","import { IBaseSymbol } from \"../../common/IBaseSymbol\";\nimport { GalaceanDataType, TypeAny } from \"../../common/types\";\nimport { ASTNode } from \"../AST\";\nimport { SymbolDataType } from \"./SymbolDataType\";\n\nexport enum ESymbolType {\n VAR,\n FN,\n STRUCT,\n Any\n}\n\nexport type SymbolAstNode =\n | ASTNode.Initializer\n | ASTNode.StructSpecifier\n | ASTNode.FunctionDefinition\n | ASTNode.ParameterDeclarator\n | ASTNode.InitDeclaratorList\n | ASTNode.VariableDeclaration;\n\nexport class SymbolInfo implements IBaseSymbol {\n constructor(\n public ident: string,\n public type: ESymbolType,\n public astNode?: SymbolAstNode,\n public dataType?: SymbolDataType,\n public paramSignature?: GalaceanDataType[],\n public isInMacroBranch = false\n ) {}\n\n set(\n ident: string,\n symbolType: ESymbolType,\n astNode?: SymbolAstNode,\n dataType?: SymbolDataType,\n paramSignature?: GalaceanDataType[]\n ) {\n this.ident = ident;\n this.type = symbolType;\n this.astNode = astNode;\n this.dataType = dataType;\n this.paramSignature = paramSignature;\n }\n\n equal(symbol: SymbolInfo): boolean {\n if (symbol.type !== ESymbolType.Any && this.type !== symbol.type) return false;\n if (this.type === ESymbolType.FN) {\n if (!symbol.astNode && !symbol.paramSignature) return true;\n\n const params = (<ASTNode.FunctionDefinition>this.astNode).protoType.paramSig;\n const comparedParams = symbol.paramSignature ?? (<ASTNode.FunctionDefinition>symbol.astNode).protoType.paramSig;\n const length = params?.length;\n if (length !== comparedParams?.length) return false;\n for (let i = 0; i < length; i++) {\n const t1 = params[i],\n t2 = comparedParams[i];\n if (t1 === TypeAny || t2 === TypeAny) continue;\n if (t1 !== t2) return false;\n }\n return true;\n }\n return true;\n }\n}\n","import { ASTNode } from \"../AST\";\nimport { SymbolDataType } from \"./SymbolDataType\";\nimport { ESymbolType, SymbolInfo } from \"./SymbolInfo\";\n\nexport class FnSymbol extends SymbolInfo {\n declare astNode: ASTNode.FunctionDefinition;\n\n constructor(lexeme: string, astNode: ASTNode.FunctionDefinition) {\n const type = new SymbolDataType(\n astNode.protoType.returnType.type,\n astNode.protoType.returnType.typeSpecifier.lexeme\n );\n super(lexeme, ESymbolType.FN, astNode, type);\n }\n}\n","import { ASTNode } from \"../AST\";\nimport { ESymbolType, SymbolInfo } from \"./SymbolInfo\";\n\nexport class StructSymbol extends SymbolInfo {\n declare astNode: ASTNode.StructSpecifier;\n\n constructor(lexeme: string, astNode: ASTNode.StructSpecifier) {\n super(lexeme, ESymbolType.STRUCT, astNode);\n }\n}\n","import { ASTNode } from \"../AST\";\nimport { SymbolDataType } from \"./SymbolDataType\";\nimport { ESymbolType, SymbolInfo } from \"./SymbolInfo\";\n\nexport class VarSymbol extends SymbolInfo {\n declare astNode:\n | ASTNode.Initializer\n | ASTNode.ParameterDeclarator\n | ASTNode.InitDeclaratorList\n | ASTNode.VariableDeclaration;\n\n readonly isGlobalVariable: boolean;\n\n constructor(\n ident: string,\n dataType: SymbolDataType,\n isGlobalVariable: boolean,\n initAst:\n | ASTNode.Initializer\n | ASTNode.ParameterDeclarator\n | ASTNode.InitDeclaratorList\n | ASTNode.VariableDeclaration\n ) {\n super(ident, ESymbolType.VAR, initAst, dataType);\n this.isGlobalVariable = isGlobalVariable;\n }\n}\n","import { SymbolInfo, SymbolTable } from \"../parser/symbolTable\";\nimport { ASTNode } from \"./AST\";\n\nexport class ShaderData {\n symbolTable: SymbolTable<SymbolInfo>;\n\n vertexMain: ASTNode.FunctionDefinition;\n fragmentMain: ASTNode.FunctionDefinition;\n\n globalPrecisions: ASTNode.PrecisionSpecifier[] = [];\n\n globalMacroDeclarations: ASTNode.GlobalDeclaration[] = [];\n\n getOuterGlobalMacroDeclarations(): ASTNode.GlobalDeclaration[] {\n return this.globalMacroDeclarations.filter((node) => node.parent instanceof ASTNode.GLShaderProgram);\n }\n}\n","import { ShaderRange } from \"../common\";\nimport { SymbolTable } from \"../common/SymbolTable\";\nimport { SymbolTableStack } from \"../common/SymbolTableStack\";\nimport { GSError, GSErrorName } from \"../GSError\";\nimport { SymbolInfo } from \"../parser/symbolTable\";\nimport { ShaderLab } from \"../ShaderLab\";\nimport { ASTNode, TreeNode } from \"./AST\";\nimport { ShaderData } from \"./ShaderInfo\";\nimport { NodeChild } from \"./types\";\n\nimport { Logger } from \"@galacean/engine\";\nimport { MacroDefineList } from \"../Preprocessor\";\n\nexport type TranslationRule<T = any> = (sa: SemanticAnalyzer, ...tokens: NodeChild[]) => T;\n\n/**\n * @internal\n * The semantic analyzer of `ShaderLab` compiler.\n * - Build symbol table\n * - Static analysis\n */\nexport default class SemanticAnalyzer {\n /**\n * @internal\n */\n static _lookupSymbol: SymbolInfo = new SymbolInfo(\"\", null);\n\n semanticStack: TreeNode[] = [];\n acceptRule?: TranslationRule = undefined;\n symbolTableStack: SymbolTableStack<SymbolInfo, SymbolTable<SymbolInfo>> = new SymbolTableStack();\n curFunctionInfo: {\n header?: ASTNode.FunctionDeclarator;\n returnStatement?: ASTNode.JumpStatement;\n } = {};\n private _shaderData = new ShaderData();\n private _translationRuleTable: Map<number /** production id */, TranslationRule> = new Map();\n\n private _macroDefineList: MacroDefineList;\n\n // #if _VERBOSE\n readonly errors: Error[] = [];\n // #endif\n\n get shaderData() {\n return this._shaderData;\n }\n\n get macroDefineList(): MacroDefineList {\n return this._macroDefineList;\n }\n\n constructor() {\n this.pushScope();\n }\n\n reset(macroDefineList: MacroDefineList) {\n this._macroDefineList = macroDefineList;\n this.semanticStack.length = 0;\n this._shaderData = new ShaderData();\n this.symbolTableStack.clear();\n this.pushScope();\n // #if _VERBOSE\n this.errors.length = 0;\n // #endif\n }\n\n pushScope() {\n this.symbolTableStack.pushScope(new SymbolTable<SymbolInfo>());\n }\n\n popScope() {\n return this.symbolTableStack.popScope();\n }\n\n addTranslationRule(pid: number, rule: TranslationRule) {\n this._translationRuleTable.set(pid, rule);\n }\n\n getTranslationRule(pid: number) {\n return this._translationRuleTable.get(pid);\n }\n\n reportError(loc: ShaderRange, message: string): void {\n // #if _VERBOSE\n this.errors.push(new GSError(GSErrorName.CompilationError, message, loc, ShaderLab._processingPassText));\n // #else\n Logger.error(message);\n // #endif\n }\n\n reportWarning(loc: ShaderRange, message: string): void {\n Logger.warn(new GSError(GSErrorName.CompilationWarn, message, loc, ShaderLab._processingPassText).toString());\n }\n}\n","import { GalaceanDataType } from \"../common\";\nimport { BaseToken } from \"../common/BaseToken\";\nimport { ASTNode, TreeNode } from \"./AST\";\nimport { NoneTerminal } from \"./GrammarSymbol\";\n\nexport type TraceStackItem = NoneTerminal | BaseToken;\n\nexport class SymbolType {\n constructor(\n public type: GalaceanDataType,\n public typeLexeme: string,\n public arraySpecifier?: ASTNode.ArraySpecifier\n ) {}\n}\n\nexport class StructProp implements IParamInfo {\n constructor(\n public typeInfo: SymbolType,\n public ident: BaseToken,\n public mrtIndex?: number,\n public isInMacroBranch = false\n ) {}\n}\n\nexport type NodeChild = TreeNode | BaseToken;\n\nexport type IParamInfo = {\n ident?: BaseToken;\n typeInfo?: SymbolType;\n astNode?: ASTNode.ParameterDeclaration | ASTNode.MacroParamBlock;\n};\n","import { ClearableObjectPool, IPoolElement } from \"@galacean/engine\";\nimport { CodeGenVisitor } from \"../codeGen\";\nimport { ETokenType, GalaceanDataType, ShaderRange, TokenType, TypeAny } from \"../common\";\nimport { BaseToken } from \"../common/BaseToken\";\nimport { Keyword } from \"../common/enums/Keyword\";\nimport { ParserUtils } from \"../ParserUtils\";\nimport { Preprocessor } from \"../Preprocessor\";\nimport { ShaderLabUtils } from \"../ShaderLabUtils\";\nimport { BuiltinFunction, BuiltinVariable, NonGenericGalaceanType } from \"./builtin\";\nimport { NoneTerminal } from \"./GrammarSymbol\";\nimport SemanticAnalyzer from \"./SemanticAnalyzer\";\nimport { ShaderData } from \"./ShaderInfo\";\nimport { ESymbolType, FnSymbol, StructSymbol, VarSymbol } from \"./symbolTable\";\nimport { IParamInfo, NodeChild, StructProp, SymbolType } from \"./types\";\n\nfunction ASTNodeDecorator(nonTerminal: NoneTerminal) {\n return function <T extends { new (): TreeNode }>(ASTNode: T) {\n ASTNode.prototype.nt = nonTerminal;\n (<any>ASTNode).pool = ShaderLabUtils.createObjectPool(ASTNode);\n };\n}\n\nexport abstract class TreeNode implements IPoolElement {\n static pool: ClearableObjectPool<TreeNode & { set: (loc: ShaderRange, children: NodeChild[]) => void }>;\n\n /** The non-terminal in grammar. */\n nt: NoneTerminal;\n private _children: NodeChild[];\n private _parent: TreeNode;\n private _location: ShaderRange;\n private _codeCache: string;\n\n /**\n * Parent pointer for AST traversal.\n * @remarks\n * The parent pointer is only reliable after the entire AST has been constructed.\n * DO NOT rely on `parent` during the `semanticAnalyze` phase, as the AST may still be under construction.\n * It is safe to use `parent` during code generation or any phase after AST construction.\n */\n get parent(): TreeNode {\n return this._parent;\n }\n\n get children() {\n return this._children;\n }\n\n get location() {\n return this._location;\n }\n\n set(loc: ShaderRange, children: NodeChild[]): void {\n this._location = loc;\n this._children = children;\n for (const child of children) {\n if (child instanceof TreeNode) {\n child._parent = this;\n }\n }\n\n this.init();\n }\n\n init() {}\n\n dispose(): void {}\n\n setCache(code: string): string {\n this._codeCache = code;\n return code;\n }\n\n getCache(): string {\n return this._codeCache;\n }\n\n // Visitor pattern interface for code generation\n codeGen(visitor: CodeGenVisitor) {\n const code = visitor.defaultCodeGen(this.children);\n this.setCache(code);\n return code;\n }\n\n /**\n * Do semantic analyze right after the ast node is generated.\n */\n semanticAnalyze(sa: SemanticAnalyzer) {}\n}\n\nexport namespace ASTNode {\n type MacroExpression =\n | MacroPushContext\n | MacroPopContext\n | MacroElseExpression\n | MacroElifExpression\n | MacroUndef\n | BaseToken;\n\n export type ASTNodePool = ClearableObjectPool<\n { set: (loc: ShaderRange, children: NodeChild[]) => void } & IPoolElement & TreeNode\n >;\n\n export function _unwrapToken(node: NodeChild) {\n if (node instanceof BaseToken) {\n return node;\n }\n throw \"not token\";\n }\n\n export function get(pool: ASTNodePool, sa: SemanticAnalyzer, loc: ShaderRange, children: NodeChild[]) {\n const node = pool.get();\n node.set(loc, children);\n node.semanticAnalyze(sa);\n sa.semanticStack.push(node);\n }\n\n @ASTNodeDecorator(NoneTerminal._ignore)\n export class TrivialNode extends TreeNode {}\n\n @ASTNodeDecorator(NoneTerminal.scope_brace)\n export class ScopeBrace extends TreeNode {\n override semanticAnalyze(sa: SemanticAnalyzer): void {\n sa.pushScope();\n }\n }\n\n @ASTNodeDecorator(NoneTerminal.scope_end_brace)\n export class ScopeEndBrace extends TreeNode {\n override semanticAnalyze(sa: SemanticAnalyzer): void {\n sa.popScope();\n }\n }\n\n @ASTNodeDecorator(NoneTerminal.jump_statement)\n export class JumpStatement extends TreeNode {\n isFragReturnStatement: boolean;\n\n override init(): void {\n this.isFragReturnStatement = false;\n }\n\n override semanticAnalyze(sa: SemanticAnalyzer): void {\n if (ASTNode._unwrapToken(this.children![0]).type === Keyword.RETURN) {\n sa.curFunctionInfo.returnStatement = this;\n }\n }\n\n override codeGen(visitor: CodeGenVisitor): string {\n return this.setCache(visitor.visitJumpStatement(this));\n }\n }\n\n // #if _VERBOSE\n @ASTNodeDecorator(NoneTerminal.conditionopt)\n export class ConditionOpt extends TreeNode {}\n\n @ASTNodeDecorator(NoneTerminal.for_rest_statement)\n export class ForRestStatement extends TreeNode {}\n\n @ASTNodeDecorator(NoneTerminal.condition)\n export class Condition extends TreeNode {}\n\n @ASTNodeDecorator(NoneTerminal.for_init_statement)\n export class ForInitStatement extends TreeNode {}\n\n @ASTNodeDecorator(NoneTerminal.iteration_statement)\n export class IterationStatement extends TreeNode {}\n\n @ASTNodeDecorator(NoneTerminal.selection_statement)\n export class SelectionStatement extends TreeNode {}\n\n @ASTNodeDecorator(NoneTerminal.expression_statement)\n export class ExpressionStatement extends TreeNode {}\n // #endif\n\n export abstract class ExpressionAstNode extends TreeNode {\n protected _type?: GalaceanDataType;\n set type(t: GalaceanDataType | undefined) {\n this._type = t;\n }\n get type() {\n return this._type ?? TypeAny;\n }\n\n override init(): void {\n this._type = undefined;\n }\n }\n\n // #if _VERBOSE\n @ASTNodeDecorator(NoneTerminal.initializer_list)\n export class InitializerList extends ExpressionAstNode {\n override semanticAnalyze(sa: SemanticAnalyzer): void {\n const init = this.children[0] as Initializer | InitializerList;\n this.type = init.type;\n }\n }\n\n @ASTNodeDecorator(NoneTerminal.initializer)\n export class Initializer extends ExpressionAstNode {\n override semanticAnalyze(sa: SemanticAnalyzer): void {\n if (this.children.length === 1) {\n this.type = (<AssignmentExpression>this.children[0]).type;\n } else {\n this.type = (<InitializerList>this.children[1]).type;\n }\n }\n }\n // #endif\n\n @ASTNodeDecorator(NoneTerminal.single_declaration)\n export class SingleDeclaration extends TreeNode {\n typeSpecifier: TypeSpecifier;\n arraySpecifier?: ArraySpecifier;\n\n override init(): void {\n this.typeSpecifier = undefined;\n this.arraySpecifier = undefined;\n }\n\n override semanticAnalyze(sa: SemanticAnalyzer): void {\n const children = this.children;\n const childrenLen = children.length;\n const fullyType = children[0] as FullySpecifiedType;\n const typeSpecifier = fullyType.typeSpecifier;\n this.typeSpecifier = typeSpecifier;\n this.arraySpecifier = typeSpecifier.arraySpecifier;\n\n const id = children[1] as BaseToken;\n\n let sm: VarSymbol;\n if (childrenLen === 2 || childrenLen === 4) {\n const symbolType = new SymbolType(fullyType.type, typeSpecifier.lexeme, this.arraySpecifier);\n const initializer = children[3] as Initializer;\n\n sm = new VarSymbol(id.lexeme, symbolType, false, initializer);\n } else {\n const arraySpecifier = children[2] as ArraySpecifier;\n // #if _VERBOSE\n if (arraySpecifier && this.arraySpecifier) {\n sa.reportError(arraySpecifier.location, \"Array of array is not supported.\");\n }\n // #endif\n this.arraySpecifier = arraySpecifier;\n const symbolType = new SymbolType(fullyType.type, typeSpecifier.lexeme, this.arraySpecifier);\n const initializer = children[4] as Initializer;\n\n sm = new VarSymbol(id.lexeme, symbolType, false, initializer);\n }\n sa.symbolTableStack.insert(sm);\n }\n\n override codeGen(visitor: CodeGenVisitor): string {\n return this.setCache(visitor.visitSingleDeclaration(this));\n }\n }\n\n @ASTNodeDecorator(NoneTerminal.fully_specified_type)\n export class FullySpecifiedType extends TreeNode {\n typeSpecifier: TypeSpecifier;\n type: GalaceanDataType;\n\n override semanticAnalyze(_: SemanticAnalyzer): void {\n const children = this.children;\n this.typeSpecifier = (children.length === 1 ? children[0] : children[1]) as TypeSpecifier;\n this.type = this.typeSpecifier.type;\n }\n }\n\n @ASTNodeDecorator(NoneTerminal.type_qualifier)\n export class TypeQualifier extends TreeNode {}\n\n @ASTNodeDecorator(NoneTerminal.single_type_qualifier)\n export class SingleTypeQualifier extends TreeNode {\n qualifier: Keyword;\n lexeme: string;\n\n override semanticAnalyze(sa: SemanticAnalyzer): void {\n const child = this.children[0];\n if (child instanceof BaseToken) {\n this.qualifier = child.type as Keyword;\n this.lexeme = child.lexeme;\n } else {\n this.qualifier = (<BasicTypeQualifier>child).qualifier;\n this.lexeme = (<BasicTypeQualifier>child).lexeme;\n }\n }\n }\n\n abstract class BasicTypeQualifier extends TreeNode {\n qualifier: Keyword;\n lexeme: string;\n\n override semanticAnalyze(sa: SemanticAnalyzer): void {\n const token = this.children[0] as BaseToken;\n this.qualifier = token.type as Keyword;\n this.lexeme = token.lexeme;\n }\n }\n\n // #if _VERBOSE\n @ASTNodeDecorator(NoneTerminal.storage_qualifier)\n export class StorageQualifier extends BasicTypeQualifier {}\n\n @ASTNodeDecorator(NoneTerminal.precision_qualifier)\n export class PrecisionQualifier extends BasicTypeQualifier {}\n\n @ASTNodeDecorator(NoneTerminal.interpolation_qualifier)\n export class InterpolationQualifier extends BasicTypeQualifier {}\n\n @ASTNodeDecorator(NoneTerminal.invariant_qualifier)\n export class InvariantQualifier extends BasicTypeQualifier {}\n // #endif\n\n @ASTNodeDecorator(NoneTerminal.type_specifier)\n export class TypeSpecifier extends TreeNode {\n type: GalaceanDataType;\n lexeme: string;\n arraySize?: number;\n isCustom: boolean;\n\n override init(): void {\n this.arraySize = undefined;\n }\n get arraySpecifier(): ArraySpecifier {\n return this.children[1] as ArraySpecifier;\n }\n\n override semanticAnalyze(sa: SemanticAnalyzer): void {\n const children = this.children;\n const firstChild = children[0] as TypeSpecifierNonArray;\n this.type = firstChild.type;\n this.lexeme = firstChild.lexeme;\n this.arraySize = (children?.[1] as ArraySpecifier)?.size;\n this.isCustom = typeof this.type === \"string\";\n }\n }\n\n @ASTNodeDecorator(NoneTerminal.array_specifier)\n export class ArraySpecifier extends TreeNode {\n size: number | undefined;\n override semanticAnalyze(sa: SemanticAnalyzer): void {\n const integerConstantExpr = this.children[1] as IntegerConstantExpression;\n this.size = integerConstantExpr.value;\n }\n }\n\n @ASTNodeDecorator(NoneTerminal.integer_constant_expression_operator)\n export class IntegerConstantExpressionOperator extends TreeNode {\n compute: (a: number, b: number) => number;\n lexeme: string;\n\n override semanticAnalyze(sa: SemanticAnalyzer): void {\n const operator = this.children[0] as BaseToken;\n this.lexeme = operator.lexeme;\n switch (operator.type) {\n case ETokenType.PLUS:\n this.compute = (a, b) => a + b;\n break;\n case ETokenType.DASH:\n this.compute = (a, b) => a - b;\n break;\n case ETokenType.STAR:\n this.compute = (a, b) => a * b;\n break;\n case ETokenType.SLASH:\n this.compute = (a, b) => a / b;\n break;\n case ETokenType.PERCENT:\n this.compute = (a, b) => a % b;\n break;\n default:\n sa.reportError(operator.location, `not implemented operator ${operator.lexeme}`);\n }\n }\n }\n\n @ASTNodeDecorator(NoneTerminal.integer_constant_expression)\n export class IntegerConstantExpression extends TreeNode {\n value?: number;\n\n override init(): void {\n this.value = undefined;\n }\n\n override semanticAnalyze(sa: SemanticAnalyzer): void {\n if (this.children.length === 1) {\n const child = this.children[0];\n if (child instanceof BaseToken) {\n this.value = Number(child.lexeme);\n }\n // #if _VERBOSE\n else {\n const id = child as VariableIdentifier;\n if (!ParserUtils.typeCompatible(Keyword.INT, id.typeInfo)) {\n sa.reportError(id.location, \"Invalid integer.\");\n return;\n }\n }\n // #endif\n }\n }\n }\n\n @ASTNodeDecorator(NoneTerminal.type_specifier_nonarray)\n export class TypeSpecifierNonArray extends TreeNode {\n type: GalaceanDataType;\n lexeme: string;\n\n override init(): void {\n const tt = this.children[0];\n if (tt instanceof BaseToken) {\n this.type = tt.lexeme;\n this.lexeme = tt.lexeme;\n } else {\n this.type = (tt as ExtBuiltinTypeSpecifierNonArray).type as GalaceanDataType;\n this.lexeme = (tt as ExtBuiltinTypeSpecifierNonArray).lexeme;\n }\n }\n }\n\n @ASTNodeDecorator(NoneTerminal.ext_builtin_type_specifier_nonarray)\n export class ExtBuiltinTypeSpecifierNonArray extends TreeNode {\n type: TokenType;\n lexeme: string;\n\n override init(): void {\n const token = this.children[0] as BaseToken;\n this.type = token.type;\n this.lexeme = token.lexeme;\n }\n }\n\n @ASTNodeDecorator(NoneTerminal.init_declarator_list)\n export class InitDeclaratorList extends TreeNode {\n typeInfo: SymbolType;\n\n override semanticAnalyze(sa: SemanticAnalyzer): void {\n let sm: VarSymbol;\n const children = this.children;\n const childrenLength = children.length;\n if (childrenLength === 1) {\n const { typeSpecifier, arraySpecifier } = children[0] as SingleDeclaration;\n this.typeInfo = new SymbolType(typeSpecifier.type, typeSpecifier.lexeme, arraySpecifier);\n } else {\n const initDeclList = children[0] as InitDeclaratorList;\n this.typeInfo = initDeclList.typeInfo;\n }\n\n if (childrenLength === 3 || childrenLength === 5) {\n const id = children[2] as BaseToken;\n sm = new VarSymbol(id.lexeme, this.typeInfo, false, this);\n sa.symbolTableStack.insert(sm);\n } else if (childrenLength === 4 || childrenLength === 6) {\n const typeInfo = this.typeInfo;\n const arraySpecifier = this.children[3] as ArraySpecifier;\n // #if _VERBOSE\n if (typeInfo.arraySpecifier && arraySpecifier) {\n sa.reportError(arraySpecifier.location, \"Array of array is not supported.\");\n }\n // #endif\n typeInfo.arraySpecifier = arraySpecifier;\n const id = children[2] as BaseToken;\n sm = new VarSymbol(id.lexeme, typeInfo, false, this);\n sa.symbolTableStack.insert(sm);\n }\n }\n }\n\n @ASTNodeDecorator(NoneTerminal.identifier_list)\n export class IdentifierList extends TreeNode {\n idList: BaseToken[] = [];\n\n override init(): void {\n this.idList.length = 0;\n }\n\n override semanticAnalyze(sa: SemanticAnalyzer): void {\n const { children, idList: curIdList } = this;\n if (children.length === 2) {\n curIdList.push(children[1] as BaseToken);\n } else {\n const list = children[0] as IdentifierList;\n const id = children[2] as BaseToken;\n const listIdLength = list.idList.length;\n curIdList.length = listIdLength + 1;\n\n for (let i = 0; i < listIdLength; i++) {\n curIdList[i] = list.idList[i];\n }\n curIdList[listIdLength] = id;\n }\n }\n }\n\n @ASTNodeDecorator(NoneTerminal.declaration)\n export class Declaration extends TreeNode {\n override codeGen(visitor: CodeGenVisitor): string {\n return this.setCache(visitor.visitDeclaration(this));\n }\n }\n\n @ASTNodeDecorator(NoneTerminal.function_prototype)\n export class FunctionProtoType extends TreeNode {\n ident: BaseToken;\n returnType: FullySpecifiedType;\n parameterList: IParamInfo[];\n paramSig: GalaceanDataType[] | undefined;\n\n override semanticAnalyze(sa: SemanticAnalyzer): void {\n const declarator = this.children[0] as FunctionDeclarator;\n this.ident = declarator.ident;\n this.returnType = declarator.returnType;\n this.parameterList = declarator.parameterInfoList;\n this.paramSig = declarator.paramSig;\n }\n }\n\n @ASTNodeDecorator(NoneTerminal.function_declarator)\n export class FunctionDeclarator extends TreeNode {\n ident: BaseToken;\n returnType: FullySpecifiedType;\n parameterInfoList: IParamInfo[] | undefined;\n paramSig: GalaceanDataType[] | undefined;\n\n override semanticAnalyze(sa: SemanticAnalyzer): void {\n sa.curFunctionInfo.returnStatement = null;\n sa.curFunctionInfo.header = this;\n\n const children = this.children;\n const header = children[0] as FunctionHeader;\n const parameterList = children[1] as FunctionParameterList | undefined;\n this.ident = header.ident;\n this.returnType = header.returnType;\n this.parameterInfoList = parameterList?.parameterInfoList;\n this.paramSig = parameterList?.paramSig;\n }\n }\n\n @ASTNodeDecorator(NoneTerminal.function_header)\n export class FunctionHeader extends TreeNode {\n ident: BaseToken;\n returnType: FullySpecifiedType;\n\n override semanticAnalyze(sa: SemanticAnalyzer): void {\n sa.pushScope();\n const children = this.children;\n this.ident = children[1] as BaseToken;\n this.returnType = children[0] as FullySpecifiedType;\n }\n\n override codeGen(visitor: CodeGenVisitor): string {\n return this.setCache(visitor.visitFunctionHeader(this));\n }\n }\n\n @ASTNodeDecorator(NoneTerminal.function_parameter_list)\n export class FunctionParameterList extends TreeNode {\n parameterInfoList: IParamInfo[] = [];\n paramSig: GalaceanDataType[] = [];\n\n override init(): void {\n this.parameterInfoList.length = 0;\n this.paramSig.length = 0;\n }\n\n override semanticAnalyze(sa: SemanticAnalyzer): void {\n const children = this.children;\n const { parameterInfoList, paramSig } = this;\n\n if (children[0] instanceof ParameterDeclaration) {\n const decl = children[0];\n parameterInfoList.push({ ident: decl.ident, typeInfo: decl.typeInfo, astNode: decl });\n paramSig.push(decl.typeInfo?.type ?? TypeAny);\n } else if (children[2] instanceof ParameterDeclaration) {\n const list = children[0] as FunctionParameterList;\n const decl = children[2];\n\n parameterInfoList.push(...list.parameterInfoList, {\n ident: decl.ident,\n typeInfo: decl.typeInfo,\n astNode: decl\n });\n paramSig.push(...list.paramSig, decl.typeInfo?.type ?? TypeAny);\n } else if (children[0] instanceof FunctionParameterList && children[1] instanceof MacroParamBlock) {\n parameterInfoList.push(...children[0].parameterInfoList, { astNode: children[1] });\n paramSig.push(...children[0].paramSig, TypeAny);\n } else if (children[0] instanceof MacroParamBlock) {\n parameterInfoList.push({ astNode: children[0] });\n paramSig.push(TypeAny);\n }\n }\n\n override codeGen(visitor: CodeGenVisitor): string {\n return this.setCache(visitor.visitFunctionParameterList(this));\n }\n }\n\n @ASTNodeDecorator(NoneTerminal.macro_param_case_list)\n export class MacroParamCaseList extends TreeNode {}\n\n @ASTNodeDecorator(NoneTerminal.macro_param_block)\n export class MacroParamBlock extends TreeNode {}\n\n @ASTNodeDecorator(NoneTerminal.macro_parameter_branch)\n export class MacroParameterBranch extends TreeNode {}\n\n @ASTNodeDecorator(NoneTerminal.parameter_declaration)\n export class ParameterDeclaration extends TreeNode {\n // Some syntax is not recognized, eg.\n // `#define TEXTURE2D_SHADOW_PARAM(shadowMap) mediump sampler2D shadowMap`\n typeInfo?: SymbolType;\n ident?: BaseToken;\n\n override init(): void {\n this.typeInfo = undefined;\n this.ident = undefined;\n }\n\n override semanticAnalyze(sa: SemanticAnalyzer): void {\n const children = this.children;\n let parameterDeclarator: ParameterDeclarator | undefined;\n\n if (children[0] instanceof ParameterDeclarator) {\n parameterDeclarator = children[0];\n } else if (children[1] instanceof ParameterDeclarator) {\n parameterDeclarator = children[1];\n }\n\n if (parameterDeclarator) {\n this.typeInfo = parameterDeclarator.typeInfo;\n this.ident = parameterDeclarator.ident;\n const varSymbol = new VarSymbol(\n parameterDeclarator.ident.lexeme,\n parameterDeclarator.typeInfo,\n false,\n parameterDeclarator\n );\n sa.symbolTableStack.insert(varSymbol);\n }\n }\n }\n\n @ASTNodeDecorator(NoneTerminal.parameter_declarator)\n export class ParameterDeclarator extends TreeNode {\n ident: BaseToken;\n typeInfo: SymbolType;\n\n override semanticAnalyze(sa: SemanticAnalyzer): void {\n const children = this.children;\n this.ident = children[1] as BaseToken;\n const typeSpecifier = children[0] as TypeSpecifier;\n const arraySpecifier = children[2] as ArraySpecifier;\n this.typeInfo = new SymbolType(typeSpecifier.type, typeSpecifier.lexeme, arraySpecifier);\n }\n }\n\n // #if _VERBOSE\n @ASTNodeDecorator(NoneTerminal.simple_statement)\n export class SimpleStatement extends TreeNode {}\n\n @ASTNodeDecorator(NoneTerminal.compound_statement)\n export class CompoundStatement extends TreeNode {}\n // #endif\n\n @ASTNodeDecorator(NoneTerminal.compound_statement_no_scope)\n export class CompoundStatementNoScope extends TreeNode {}\n\n // #if _VERBOSE\n @ASTNodeDecorator(NoneTerminal.statement)\n export class Statement extends TreeNode {}\n // #endif\n\n @ASTNodeDecorator(NoneTerminal.statement_list)\n export class StatementList extends TreeNode {\n override codeGen(visitor: CodeGenVisitor): string {\n return this.setCache(visitor.visitStatementList(this));\n }\n }\n\n @ASTNodeDecorator(NoneTerminal.function_definition)\n export class FunctionDefinition extends TreeNode {\n returnStatement?: ASTNode.JumpStatement;\n protoType: FunctionProtoType;\n statements: CompoundStatementNoScope;\n isInMacroBranch: boolean;\n\n override init(): void {\n this.returnStatement = undefined;\n }\n\n override semanticAnalyze(sa: SemanticAnalyzer): void {\n const children = this.children;\n this.protoType = children[0] as FunctionProtoType;\n this.statements = children[1] as CompoundStatementNoScope;\n\n sa.popScope();\n const sm = new FnSymbol(this.protoType.ident.lexeme, this);\n sa.symbolTableStack.insert(sm);\n this.isInMacroBranch = sa.symbolTableStack.isInMacroBranch;\n\n const { curFunctionInfo } = sa;\n const { header, returnStatement } = curFunctionInfo;\n if (header.returnType.type === Keyword.VOID) {\n if (returnStatement) {\n sa.reportError(header.returnType.location, \"Return in void function.\");\n }\n } else {\n if (!returnStatement) {\n sa.reportError(header.returnType.location, `No return statement found.`);\n } else {\n this.returnStatement = returnStatement;\n }\n }\n curFunctionInfo.header = undefined;\n curFunctionInfo.returnStatement = undefined;\n }\n\n override codeGen(visitor: CodeGenVisitor): string {\n return this.setCache(visitor.visitFunctionDefinition(this));\n }\n }\n\n @ASTNodeDecorator(NoneTerminal.function_call)\n export class FunctionCall extends ExpressionAstNode {\n override semanticAnalyze(sa: SemanticAnalyzer): void {\n this.type = (this.children[0] as FunctionCallGeneric).type;\n }\n\n override codeGen(visitor: CodeGenVisitor): string {\n return this.setCache(visitor.visitFunctionCall(this));\n }\n }\n\n @ASTNodeDecorator(NoneTerminal.function_call_generic)\n export class FunctionCallGeneric extends ExpressionAstNode {\n fnSymbol: FnSymbol | StructSymbol | undefined;\n\n override init(): void {\n super.init();\n this.fnSymbol = undefined;\n }\n\n override semanticAnalyze(sa: SemanticAnalyzer): void {\n const functionIdentifier = this.children[0] as FunctionIdentifier;\n if (functionIdentifier.isBuiltin) {\n this.type = functionIdentifier.ident;\n } else {\n const fnIdent = <string>functionIdentifier.ident;\n\n let paramSig: NonGenericGalaceanType[] | undefined;\n if (this.children.length === 4) {\n const paramList = this.children[2];\n if (paramList instanceof FunctionCallParameterList) {\n paramSig = paramList.paramSig as any;\n }\n }\n // #if _VERBOSE\n const builtinFn = BuiltinFunction.getFn(fnIdent, paramSig);\n if (builtinFn) {\n this.type = builtinFn.realReturnType;\n return;\n }\n // #endif\n\n const lookupSymbol = SemanticAnalyzer._lookupSymbol;\n lookupSymbol.set(fnIdent, ESymbolType.FN, undefined, undefined, paramSig);\n\n const fnSymbol = sa.symbolTableStack.lookup(lookupSymbol, true) as FnSymbol;\n\n if (!fnSymbol) {\n // #if _VERBOSE\n sa.reportError(this.location, `No overload function type found: ${functionIdentifier.ident}`);\n // #endif\n return;\n }\n this.type = fnSymbol?.dataType?.type;\n this.fnSymbol = fnSymbol;\n }\n }\n }\n\n @ASTNodeDecorator(NoneTerminal.function_call_parameter_list)\n export class FunctionCallParameterList extends TreeNode {\n paramSig: GalaceanDataType[] = [];\n paramNodes: Array<AssignmentExpression | MacroCallArgBlock> = [];\n\n override init(): void {\n this.paramSig.length = 0;\n this.paramNodes.length = 0;\n }\n\n override semanticAnalyze(sa: SemanticAnalyzer): void {\n const { children, paramSig, paramNodes } = this;\n if (children[0] instanceof AssignmentExpression) {\n const expr = children[0];\n paramSig.push(expr.type);\n paramNodes.push(expr);\n } else if (children[2] instanceof AssignmentExpression) {\n const list = children[0] as FunctionCallParameterList;\n const decl = children[2] as AssignmentExpression;\n paramSig.push(...list.paramSig, decl.type);\n paramNodes.push(...list.paramNodes, decl);\n } else if (children[0] instanceof FunctionCallParameterList && children[1] instanceof MacroCallArgBlock) {\n paramSig.push(...children[0].paramSig, TypeAny);\n paramNodes.push(...children[0].paramNodes, children[1]);\n } else if (children[0] instanceof MacroCallArgBlock) {\n paramSig.push(TypeAny);\n paramNodes.push(children[0]);\n }\n }\n }\n\n @ASTNodeDecorator(NoneTerminal.macro_call_arg_case_list)\n export class MacroCallArgCaseList extends TreeNode {}\n @ASTNodeDecorator(NoneTerminal.macro_call_arg_block)\n export class MacroCallArgBlock extends TreeNode {}\n @ASTNodeDecorator(NoneTerminal.macro_call_arg_branch)\n export class MacroCallArgBranch extends TreeNode {}\n\n @ASTNodeDecorator(NoneTerminal.precision_specifier)\n export class PrecisionSpecifier extends TreeNode {\n override semanticAnalyze(sa: SemanticAnalyzer): void {\n if (!sa.symbolTableStack.isInMacroBranch) {\n sa.shaderData.globalPrecisions.push(this);\n }\n }\n }\n\n @ASTNodeDecorator(NoneTerminal.function_identifier)\n export class FunctionIdentifier extends TreeNode {\n ident: GalaceanDataType;\n lexeme: string;\n isBuiltin: boolean;\n\n override semanticAnalyze(sa: SemanticAnalyzer): void {\n const typeSpecifier = this.children[0] as TypeSpecifier;\n\n this.ident = typeSpecifier.type;\n this.lexeme = typeSpecifier.lexeme;\n this.isBuiltin = typeof this.ident !== \"string\";\n }\n\n override codeGen(visitor: CodeGenVisitor): string {\n return this.setCache(visitor.visitFunctionIdentifier(this));\n }\n }\n\n @ASTNodeDecorator(NoneTerminal.assignment_expression)\n export class AssignmentExpression extends ExpressionAstNode {\n // #if _VERBOSE\n override semanticAnalyze(sa: SemanticAnalyzer): void {\n if (this.children.length === 1) {\n const expr = this.children[0] as ConditionalExpression;\n this.type = expr.type ?? TypeAny;\n } else {\n const expr = this.children[2] as AssignmentExpression;\n this.type = expr.type ?? TypeAny;\n }\n }\n // #endif\n }\n\n // #if _VERBOSE\n @ASTNodeDecorator(NoneTerminal.assignment_operator)\n export class AssignmentOperator extends TreeNode {}\n // #endif\n\n @ASTNodeDecorator(NoneTerminal.expression)\n export class Expression extends ExpressionAstNode {\n // #if _VERBOSE\n override semanticAnalyze(sa: SemanticAnalyzer): void {\n if (this.children.length === 1) {\n const expr = this.children[0] as AssignmentExpression;\n this.type = expr.type;\n } else {\n const expr = this.children[2] as AssignmentExpression;\n this.type = expr.type;\n }\n }\n // #endif\n }\n\n @ASTNodeDecorator(NoneTerminal.primary_expression)\n export class PrimaryExpression extends ExpressionAstNode {\n override semanticAnalyze(sa: SemanticAnalyzer): void {\n if (this.children.length === 1) {\n const id = this.children[0];\n if (id instanceof VariableIdentifier) {\n this.type = id.typeInfo ?? TypeAny;\n } else {\n switch ((<BaseToken>id).type) {\n case ETokenType.INT_CONSTANT:\n this._type = Keyword.INT;\n break;\n case ETokenType.FLOAT_CONSTANT:\n this.type = Keyword.FLOAT;\n break;\n case Keyword.True:\n case Keyword.False:\n this.type = Keyword.BOOL;\n break;\n }\n }\n } else {\n const expression = this.children[1] as Expression;\n this.type = expression.type;\n }\n }\n }\n\n @ASTNodeDecorator(NoneTerminal.postfix_expression)\n export class PostfixExpression extends ExpressionAstNode {\n override init(): void {\n super.init();\n if (this.children.length === 1) {\n const child = this.children[0] as PrimaryExpression | FunctionCall;\n this.type = child.type;\n }\n }\n\n override codeGen(visitor: CodeGenVisitor): string {\n return this.setCache(visitor.visitPostfixExpression(this));\n }\n }\n\n // #if _VERBOSE\n @ASTNodeDecorator(NoneTerminal.unary_operator)\n export class UnaryOperator extends TreeNode {}\n\n @ASTNodeDecorator(NoneTerminal.unary_expression)\n export class UnaryExpression extends ExpressionAstNode {\n override init(): void {\n this.type = (this.children[0] as PostfixExpression).type;\n }\n }\n\n @ASTNodeDecorator(NoneTerminal.multiplicative_expression)\n export class MultiplicativeExpression extends ExpressionAstNode {\n override init(): void {\n super.init();\n if (this.children.length === 1) {\n this.type = (this.children[0] as UnaryExpression).type;\n // TODO: Temporarily remove type deduce due to generic function type issue.\n // } else {\n // const exp1 = this.children[0] as MultiplicativeExpression;\n // const exp2 = this.children[2] as UnaryExpression;\n // if (exp1.type === exp2.type) {\n // this.type = exp1.type;\n // }\n }\n }\n }\n\n @ASTNodeDecorator(NoneTerminal.additive_expression)\n export class AdditiveExpression extends ExpressionAstNode {\n override init(): void {\n super.init();\n if (this.children.length === 1) {\n this.type = (this.children[0] as MultiplicativeExpression).type;\n // TODO: Temporarily remove type deduce due to generic function type issue.\n // } else {\n // const exp1 = this.children[0] as AdditiveExpression;\n // const exp2 = this.children[2] as MultiplicativeExpression;\n // if (exp1.type === exp2.type) {\n // this.type = exp1.type;\n // }\n }\n }\n }\n\n @ASTNodeDecorator(NoneTerminal.shift_expression)\n export class ShiftExpression extends ExpressionAstNode {\n override semanticAnalyze(sa: SemanticAnalyzer): void {\n const expr = this.children[0] as ExpressionAstNode;\n this.type = expr.type;\n }\n }\n\n @ASTNodeDecorator(NoneTerminal.relational_expression)\n export class RelationalExpression extends ExpressionAstNode {\n override semanticAnalyze(sa: SemanticAnalyzer): void {\n if (this.children.length === 1) {\n this.type = (<ShiftExpression>this.children[0]).type;\n } else {\n this.type = Keyword.BOOL;\n }\n }\n }\n\n @ASTNodeDecorator(NoneTerminal.equality_expression)\n export class EqualityExpression extends ExpressionAstNode {\n override semanticAnalyze(sa: SemanticAnalyzer): void {\n if (this.children.length === 1) {\n this.type = (<RelationalExpression>this.children[0]).type;\n } else {\n this.type = Keyword.BOOL;\n }\n }\n }\n\n @ASTNodeDecorator(NoneTerminal.and_expression)\n export class AndExpression extends ExpressionAstNode {\n override semanticAnalyze(sa: SemanticAnalyzer): void {\n if (this.children.length === 1) {\n this.type = (<AndExpression>this.children[0]).type;\n } else {\n this.type = Keyword.UINT;\n }\n }\n }\n\n @ASTNodeDecorator(NoneTerminal.exclusive_or_expression)\n export class ExclusiveOrExpression extends ExpressionAstNode {\n override semanticAnalyze(sa: SemanticAnalyzer): void {\n if (this.children.length === 1) {\n this.type = (<AndExpression>this.children[0]).type;\n } else {\n this.type = Keyword.UINT;\n }\n }\n }\n\n @ASTNodeDecorator(NoneTerminal.inclusive_or_expression)\n export class InclusiveOrExpression extends ExpressionAstNode {\n override semanticAnalyze(sa: SemanticAnalyzer): void {\n if (this.children.length === 1) {\n this.type = (<ExclusiveOrExpression>this.children[0]).type;\n } else {\n this.type = Keyword.UINT;\n }\n }\n }\n\n @ASTNodeDecorator(NoneTerminal.logical_and_expression)\n export class LogicalAndExpression extends ExpressionAstNode {\n override semanticAnalyze(sa: SemanticAnalyzer): void {\n if (this.children.length === 1) {\n this.type = (<InclusiveOrExpression>this.children[0]).type;\n } else {\n this.type = Keyword.BOOL;\n }\n }\n }\n\n @ASTNodeDecorator(NoneTerminal.logical_xor_expression)\n export class LogicalXorExpression extends ExpressionAstNode {\n override semanticAnalyze(sa: SemanticAnalyzer): void {\n if (this.children.length === 1) {\n this.type = (<LogicalAndExpression>this.children[0]).type;\n } else {\n this.type = Keyword.BOOL;\n }\n }\n }\n\n @ASTNodeDecorator(NoneTerminal.logical_or_expression)\n export class LogicalOrExpression extends ExpressionAstNode {\n override semanticAnalyze(sa: SemanticAnalyzer): void {\n if (this.children.length === 1) {\n this.type = (<LogicalXorExpression>this.children[0]).type;\n } else {\n this.type = Keyword.BOOL;\n }\n }\n }\n\n @ASTNodeDecorator(NoneTerminal.conditional_expression)\n export class ConditionalExpression extends ExpressionAstNode {\n override semanticAnalyze(sa: SemanticAnalyzer): void {\n if (this.children.length === 1) {\n this.type = (<LogicalOrExpression>this.children[0]).type;\n }\n }\n }\n // #endif\n\n @ASTNodeDecorator(NoneTerminal.struct_specifier)\n export class StructSpecifier extends TreeNode {\n ident?: BaseToken;\n propList: StructProp[];\n macroExpressions: MacroExpression[];\n isInMacroBranch: boolean;\n\n override init(): void {\n this.ident = undefined;\n }\n\n override semanticAnalyze(sa: SemanticAnalyzer): void {\n const children = this.children;\n this.isInMacroBranch = sa.symbolTableStack.isInMacroBranch;\n if (children.length === 6) {\n this.ident = children[1] as BaseToken;\n sa.symbolTableStack.insert(new StructSymbol(this.ident.lexeme, this));\n\n this.propList = (children[3] as StructDeclarationList).propList;\n this.macroExpressions = (children[3] as StructDeclarationList).macroExpressions;\n } else {\n this.propList = (children[2] as StructDeclarationList).propList;\n this.macroExpressions = (children[2] as StructDeclarationList).macroExpressions;\n }\n }\n\n override codeGen(visitor: CodeGenVisitor) {\n return this.setCache(visitor.visitStructSpecifier(this));\n }\n }\n\n @ASTNodeDecorator(NoneTerminal.struct_declaration_list)\n export class StructDeclarationList extends TreeNode {\n propList: StructProp[] = [];\n macroExpressions: MacroExpression[] = [];\n\n override init(): void {\n this.propList.length = 0;\n this.macroExpressions.length = 0;\n }\n\n override semanticAnalyze(sa: SemanticAnalyzer): void {\n const { children, propList, macroExpressions } = this;\n\n if (children.length === 1) {\n propList.push(...(children[0] as StructDeclaration).props);\n macroExpressions.push(...(children[0] as StructDeclaration).macroExpressions);\n } else {\n propList.push(...(children[0] as StructDeclarationList).propList);\n propList.push(...(children[1] as StructDeclaration).props);\n macroExpressions.push(...(children[0] as StructDeclarationList).macroExpressions);\n macroExpressions.push(...(children[1] as StructDeclaration).macroExpressions);\n }\n }\n }\n\n @ASTNodeDecorator(NoneTerminal.struct_declaration)\n export class StructDeclaration extends TreeNode {\n props: StructProp[] = [];\n macroExpressions: MacroExpression[] = [];\n\n private _typeSpecifier?: TypeSpecifier;\n private _declaratorList?: StructDeclaratorList;\n\n override init(): void {\n this._typeSpecifier = undefined;\n this._declaratorList = undefined;\n this.props.length = 0;\n this.macroExpressions.length = 0;\n }\n\n override semanticAnalyze(sa: SemanticAnalyzer): void {\n const { children, props, macroExpressions } = this;\n\n if (children.length === 1) {\n const macroStructDeclaration = children[0] as MacroStructDeclaration;\n const macroProps = macroStructDeclaration.props;\n\n for (let i = 0, length = macroProps.length; i < length; i++) {\n macroProps[i].isInMacroBranch = true;\n props.push(macroProps[i]);\n }\n\n macroExpressions.push(...macroStructDeclaration.macroExpressions);\n\n return;\n }\n\n if (children.length === 3) {\n this._typeSpecifier = children[0] as TypeSpecifier;\n this._declaratorList = children[1] as StructDeclaratorList;\n } else {\n this._typeSpecifier = children[1] as TypeSpecifier;\n this._declaratorList = children[2] as StructDeclaratorList;\n }\n\n const firstChild = children[0];\n const { type, lexeme } = this._typeSpecifier;\n const isInMacroBranch = sa.symbolTableStack.isInMacroBranch;\n if (firstChild instanceof LayoutQualifier) {\n const declarator = children[2] as StructDeclarator;\n const typeInfo = new SymbolType(type, lexeme);\n const prop = new StructProp(typeInfo, declarator.ident, firstChild.index, isInMacroBranch);\n props.push(prop);\n } else {\n const declaratorList = this._declaratorList.declaratorList;\n const declaratorListLength = declaratorList.length;\n props.length = declaratorListLength;\n for (let i = 0; i < declaratorListLength; i++) {\n const declarator = declaratorList[i];\n const typeInfo = new SymbolType(type, lexeme, declarator.arraySpecifier);\n const prop = new StructProp(typeInfo, declarator.ident, undefined, isInMacroBranch);\n props[i] = prop;\n }\n }\n }\n }\n\n @ASTNodeDecorator(NoneTerminal.macro_struct_declaration)\n export class MacroStructDeclaration extends TreeNode {\n props: StructProp[] = [];\n macroExpressions: MacroExpression[] = [];\n\n override init(): void {\n this.props.length = 0;\n this.macroExpressions.length = 0;\n }\n\n override semanticAnalyze(): void {\n const children = this.children;\n\n this.macroExpressions.push(children[0] as MacroPushContext);\n\n if (children.length === 3) {\n this.props.push(...(children[1] as StructDeclarationList).propList);\n this.props.push(...(children[2] as MacroStructBranch).props);\n this.macroExpressions.push(...(children[1] as StructDeclarationList).macroExpressions);\n this.macroExpressions.push(...(children[2] as MacroStructBranch).macroExpressions);\n } else {\n this.props.push(...(children[1] as MacroStructBranch).props);\n this.macroExpressions.push(...(children[1] as MacroStructBranch).macroExpressions);\n }\n }\n }\n\n @ASTNodeDecorator(NoneTerminal.macro_struct_branch)\n export class MacroStructBranch extends TreeNode {\n props: StructProp[] = [];\n macroExpressions: MacroExpression[] = [];\n\n override init(): void {\n this.props.length = 0;\n this.macroExpressions.length = 0;\n }\n\n override semanticAnalyze(): void {\n const children = this.children;\n const lastNode = children[children.length - 1];\n\n this.macroExpressions.push(children[0] as MacroPopContext | MacroElseExpression | MacroElifExpression);\n\n if (children[1] instanceof StructDeclarationList) {\n this.props.push(...children[1].propList);\n this.macroExpressions.push(...children[1].macroExpressions);\n }\n\n if (lastNode instanceof MacroStructBranch) {\n this.props.push(...lastNode.props);\n this.macroExpressions.push(...lastNode.macroExpressions);\n }\n\n if (children.length > 1 && lastNode instanceof MacroPopContext) {\n this.macroExpressions.push(lastNode);\n }\n }\n }\n\n @ASTNodeDecorator(NoneTerminal.layout_qualifier)\n export class LayoutQualifier extends TreeNode {\n index: number;\n\n override semanticAnalyze(sa: SemanticAnalyzer): void {\n this.index = Number((<BaseToken>this.children[4]).lexeme);\n }\n }\n\n @ASTNodeDecorator(NoneTerminal.struct_declarator_list)\n export class StructDeclaratorList extends TreeNode {\n declaratorList: StructDeclarator[] = [];\n\n override init(): void {\n this.declaratorList.length = 0;\n }\n\n override semanticAnalyze(sa: SemanticAnalyzer): void {\n const { children, declaratorList } = this;\n if (children.length === 1) {\n declaratorList.push(children[0] as StructDeclarator);\n } else {\n const list = children[0] as StructDeclaratorList;\n const declarator = children[1] as StructDeclarator;\n const listLength = list.declaratorList.length;\n declaratorList.length = listLength + 1;\n for (let i = 0; i < listLength; i++) {\n declaratorList[i] = list.declaratorList[i];\n }\n declaratorList[listLength] = declarator;\n }\n }\n }\n\n @ASTNodeDecorator(NoneTerminal.struct_declarator)\n export class StructDeclarator extends TreeNode {\n ident: BaseToken;\n arraySpecifier: ArraySpecifier | undefined;\n\n override init(): void {\n this.arraySpecifier = undefined;\n }\n\n override semanticAnalyze(sa: SemanticAnalyzer): void {\n const children = this.children;\n this.ident = children[0] as BaseToken;\n this.arraySpecifier = children[1] as ArraySpecifier;\n }\n }\n\n @ASTNodeDecorator(NoneTerminal.variable_declaration)\n export class VariableDeclaration extends TreeNode {\n type: FullySpecifiedType;\n isStatic: boolean;\n\n override init(): void {\n this.isStatic = false;\n }\n\n override semanticAnalyze(sa: SemanticAnalyzer): void {\n const children = this.children;\n const type = children[0] as FullySpecifiedType;\n const ident = children[1] as BaseToken;\n this.type = type;\n const sm = new VarSymbol(ident.lexeme, new SymbolType(type.type, type.typeSpecifier.lexeme), true, this);\n\n sa.symbolTableStack.insert(sm);\n\n if (children.length === 4) {\n this.isStatic = true;\n }\n }\n\n override codeGen(visitor: CodeGenVisitor): string {\n if (this.isStatic) {\n return super.codeGen(visitor);\n } else {\n return this.setCache(visitor.visitGlobalVariableDeclaration(this));\n }\n }\n }\n\n @ASTNodeDecorator(NoneTerminal.variable_declaration_list)\n export class VariableDeclarationList extends TreeNode {\n type: FullySpecifiedType;\n variableDeclarations: VariableDeclaration[] = [];\n\n override init(): void {\n this.variableDeclarations.length = 0;\n }\n\n override semanticAnalyze(sa: SemanticAnalyzer): void {\n const { children } = this;\n const length = children.length;\n const child = children[0] as VariableDeclaration | VariableDeclarationList;\n const type = child.type;\n this.type = type;\n\n if (child instanceof VariableDeclaration) {\n this.variableDeclarations.push(child);\n } else {\n this.variableDeclarations.push(...child.variableDeclarations);\n\n const ident = children[2] as BaseToken;\n\n const newVariable = VariableDeclaration.pool.get() as VariableDeclaration;\n if (length === 3) {\n // variable_declaration_list ',' id\n newVariable.set(ident.location, [type, ident]);\n } else {\n // variable_declaration_list ',' id array_specifier\n newVariable.set(ident.location, [type, ident, children[3] as ArraySpecifier]);\n }\n newVariable.semanticAnalyze(sa);\n this.variableDeclarations.push(newVariable);\n }\n }\n }\n\n @ASTNodeDecorator(NoneTerminal.variable_identifier)\n export class VariableIdentifier extends TreeNode {\n // @todo: typeInfo may be multiple types\n typeInfo: GalaceanDataType;\n referenceGlobalSymbolNames: string[] = [];\n\n private _symbols: Array<VarSymbol | FnSymbol> = [];\n\n override init(): void {\n this.typeInfo = TypeAny;\n this.referenceGlobalSymbolNames.length = 0;\n this._symbols.length = 0;\n }\n\n override semanticAnalyze(sa: SemanticAnalyzer): void {\n const child = this.children[0] as BaseToken | MacroCallSymbol | MacroCallFunction;\n const referenceGlobalSymbolNames = this.referenceGlobalSymbolNames;\n const symbols = this._symbols;\n const lookupSymbol = SemanticAnalyzer._lookupSymbol;\n let needFindNames: string[];\n\n if (child instanceof BaseToken) {\n needFindNames = [child.lexeme];\n } else {\n needFindNames = (child as MacroCallSymbol | MacroCallFunction).referenceSymbolNames;\n }\n\n for (let i = 0; i < needFindNames.length; i++) {\n const name = needFindNames[i];\n\n if (sa.macroDefineList[name]) {\n continue;\n }\n\n // only `macro_call` CFG can reference fnSymbols, others fnSymbols are referenced in `function_call_generic` CFG\n if (!(child instanceof BaseToken) && BuiltinFunction.isExist(name)) {\n continue;\n }\n\n const builtinVar = BuiltinVariable.getVar(name);\n if (builtinVar) {\n this.typeInfo = builtinVar.type;\n continue;\n }\n\n lookupSymbol.set(name, ESymbolType.Any);\n sa.symbolTableStack.lookupAll(lookupSymbol, true, symbols);\n\n if (!symbols.length) {\n // #if _VERBOSE\n sa.reportWarning(this.location, `Please sure the identifier \"${name}\" will be declared before used.`);\n // #endif\n } else {\n this.typeInfo = symbols[0].dataType?.type;\n const currentScopeSymbol = <VarSymbol | FnSymbol>sa.symbolTableStack.scope.getSymbol(lookupSymbol, true);\n if (currentScopeSymbol) {\n if (\n (currentScopeSymbol instanceof FnSymbol || currentScopeSymbol.isGlobalVariable) &&\n referenceGlobalSymbolNames.indexOf(name) === -1\n ) {\n referenceGlobalSymbolNames.push(name);\n }\n } else if (\n symbols.some((s) => s instanceof FnSymbol || s.isGlobalVariable) &&\n referenceGlobalSymbolNames.indexOf(name) === -1\n ) {\n referenceGlobalSymbolNames.push(name);\n }\n }\n }\n }\n\n override codeGen(visitor: CodeGenVisitor): string {\n return this.setCache(visitor.visitVariableIdentifier(this));\n }\n\n getLexeme(visitor: CodeGenVisitor): string {\n const child = this.children[0] as BaseToken | MacroCallSymbol | MacroCallFunction;\n if (child instanceof BaseToken) {\n return child.lexeme;\n } else {\n return child.codeGen(visitor);\n }\n }\n }\n\n @ASTNodeDecorator(NoneTerminal.gs_shader_program)\n export class GLShaderProgram extends TreeNode {\n shaderData: ShaderData;\n\n override semanticAnalyze(sa: SemanticAnalyzer): void {\n this.shaderData = sa.shaderData;\n this.shaderData.symbolTable = sa.symbolTableStack.scope;\n }\n }\n\n @ASTNodeDecorator(NoneTerminal.global_declaration)\n export class GlobalDeclaration extends TreeNode {\n macroExpressions: Array<MacroExpression | MacroUndef | BaseToken> = [];\n\n override init(): void {\n this.macroExpressions.length = 0;\n }\n\n override semanticAnalyze(sa: SemanticAnalyzer): void {\n const child = this.children[0];\n\n if (child instanceof MacroUndef || child instanceof GlobalMacroIfStatement || child instanceof BaseToken) {\n sa.shaderData.globalMacroDeclarations.push(this);\n\n if (child instanceof GlobalMacroIfStatement) {\n this.macroExpressions.push(...child.macroExpressions);\n } else {\n this.macroExpressions.push(child);\n }\n }\n }\n }\n\n @ASTNodeDecorator(NoneTerminal.macro_undef)\n export class MacroUndef extends TreeNode {\n override codeGen(visitor: CodeGenVisitor) {\n return this.setCache(super.codeGen(visitor) + \"\\n\");\n }\n }\n\n @ASTNodeDecorator(NoneTerminal.macro_push_context)\n export class MacroPushContext extends TreeNode {\n override semanticAnalyze(sa: SemanticAnalyzer): void {\n sa.symbolTableStack._macroLevel++;\n }\n\n override codeGen(visitor: CodeGenVisitor) {\n return this.setCache(\"\\n\" + super.codeGen(visitor) + \"\\n\");\n }\n }\n\n @ASTNodeDecorator(NoneTerminal.macro_pop_context)\n export class MacroPopContext extends TreeNode {\n override semanticAnalyze(sa: SemanticAnalyzer): void {\n sa.symbolTableStack._macroLevel--;\n }\n\n override codeGen(visitor: CodeGenVisitor) {\n return this.setCache(\"\\n\" + super.codeGen(visitor) + \"\\n\");\n }\n }\n\n @ASTNodeDecorator(NoneTerminal.macro_elif_expression)\n export class MacroElifExpression extends TreeNode {\n override codeGen(visitor: CodeGenVisitor) {\n return this.setCache(\"\\n\" + super.codeGen(visitor) + \"\\n\");\n }\n }\n\n @ASTNodeDecorator(NoneTerminal.macro_else_expression)\n export class MacroElseExpression extends TreeNode {\n override codeGen(visitor: CodeGenVisitor) {\n return this.setCache(\"\\n\" + super.codeGen(visitor) + \"\\n\");\n }\n }\n\n @ASTNodeDecorator(NoneTerminal.global_macro_declaration)\n export class GlobalMacroDeclaration extends TreeNode {\n macroExpressions: MacroExpression[] = [];\n\n override init(): void {\n this.macroExpressions.length = 0;\n }\n\n override semanticAnalyze(sa: SemanticAnalyzer): void {\n const children = this.children;\n const macroExpressions = this.macroExpressions;\n\n if (children.length === 1) {\n macroExpressions.push(...(children[0] as GlobalDeclaration).macroExpressions);\n } else {\n macroExpressions.push(...(children[0] as GlobalMacroDeclaration).macroExpressions);\n macroExpressions.push(...(children[1] as GlobalDeclaration).macroExpressions);\n }\n }\n\n override codeGen(visitor: CodeGenVisitor) {\n const children = this.children as TreeNode[];\n if (children.length === 1) {\n return this.setCache(children[0].codeGen(visitor));\n } else {\n return this.setCache(`${children[0].codeGen(visitor)}\\n${children[1].codeGen(visitor)}`);\n }\n }\n }\n\n @ASTNodeDecorator(NoneTerminal.global_macro_if_statement)\n export class GlobalMacroIfStatement extends TreeNode {\n macroExpressions: MacroExpression[] = [];\n\n override init(): void {\n this.macroExpressions.length = 0;\n }\n\n override semanticAnalyze(sa: SemanticAnalyzer): void {\n const children = this.children;\n const macroExpressions = this.macroExpressions;\n\n if (children.length === 3) {\n macroExpressions.push(children[0] as MacroPushContext);\n macroExpressions.push(...(children[1] as GlobalMacroDeclaration).macroExpressions);\n macroExpressions.push(...(children[2] as GlobalMacroBranch).macroExpressions);\n } else {\n macroExpressions.push(children[0] as MacroPushContext);\n macroExpressions.push(...(children[1] as GlobalMacroBranch).macroExpressions);\n }\n }\n }\n\n @ASTNodeDecorator(NoneTerminal.global_macro_branch)\n export class GlobalMacroBranch extends TreeNode {\n macroExpressions: MacroExpression[] = [];\n\n override init(): void {\n this.macroExpressions.length = 0;\n }\n\n override semanticAnalyze(sa: SemanticAnalyzer): void {\n const children = this.children;\n const lastNode = children[children.length - 1];\n\n const macroExpressions = this.macroExpressions;\n macroExpressions.push(children[0] as MacroPopContext | MacroElseExpression | MacroElifExpression);\n\n if (children[1] instanceof GlobalMacroDeclaration) {\n macroExpressions.push(...children[1].macroExpressions);\n }\n\n if (lastNode instanceof GlobalMacroBranch) {\n macroExpressions.push(...lastNode.macroExpressions);\n }\n\n if (children.length > 1 && lastNode instanceof MacroPopContext) {\n macroExpressions.push(lastNode);\n }\n }\n }\n\n @ASTNodeDecorator(NoneTerminal.macro_if_statement)\n export class MacroIfStatement extends TreeNode {}\n\n @ASTNodeDecorator(NoneTerminal.macro_branch)\n export class MacroBranch extends TreeNode {}\n\n @ASTNodeDecorator(NoneTerminal.macro_call_symbol)\n export class MacroCallSymbol extends TreeNode {\n referenceSymbolNames: string[] = [];\n macroName: string;\n\n override init(): void {\n this.referenceSymbolNames.length = 0;\n }\n\n override semanticAnalyze(sa: SemanticAnalyzer): void {\n const children = this.children;\n const macroName = (children[0] as BaseToken).lexeme;\n\n this.macroName = macroName;\n\n Preprocessor.getReferenceSymbolNames(sa.macroDefineList, macroName, this.referenceSymbolNames);\n }\n }\n\n @ASTNodeDecorator(NoneTerminal.macro_call_function)\n export class MacroCallFunction extends TreeNode {\n referenceSymbolNames: string[];\n macroName: string;\n\n override semanticAnalyze(sa: SemanticAnalyzer): void {\n const child = this.children[0] as MacroCallSymbol;\n\n this.referenceSymbolNames = child.referenceSymbolNames;\n this.macroName = child.macroName;\n }\n\n override codeGen(visitor: CodeGenVisitor) {\n return this.setCache(visitor.visitMacroCallFunction(this));\n }\n }\n}\n","import { ETokenType, GalaceanDataType, TypeAny } from \"./common\";\nimport { BaseToken as Token } from \"./common/BaseToken\";\nimport { TreeNode } from \"./parser/AST\";\nimport { GrammarSymbol, NoneTerminal } from \"./parser/GrammarSymbol\";\n// #if _VERBOSE\nimport { Keyword } from \"./common/enums/Keyword\";\nimport State from \"./lalr/State\";\n// #endif\n\nexport class ParserUtils {\n static unwrapNodeByType<T = TreeNode>(node: TreeNode, type: NoneTerminal): T | undefined {\n const child = node.children[0];\n if (child instanceof Token) return;\n if (child.nt === type) return child as T;\n return ParserUtils.unwrapNodeByType(child, type);\n }\n\n // #if _VERBOSE\n /**\n * Check if type `tb` is compatible with type `ta`.\n */\n static typeCompatible(ta: GalaceanDataType, tb: GalaceanDataType | undefined) {\n if (tb == undefined || tb === TypeAny) return true;\n if (ta === Keyword.INT) {\n return ta === tb || tb === Keyword.UINT;\n }\n return ta === tb;\n }\n\n static toString(sm: GrammarSymbol) {\n if (this.isTerminal(sm)) {\n return ETokenType[sm] ?? Keyword[sm];\n }\n return NoneTerminal[sm];\n }\n // #endif\n\n static isTerminal(sm: GrammarSymbol) {\n return sm < NoneTerminal.START;\n }\n\n /**\n * @internal\n */\n // #if _VERBOSE\n static printStatePool(logPath: string) {\n let output = \"\";\n\n console.log(\"========== Parser Pool ==========\");\n\n let count = 0;\n for (const state of State.pool.values()) {\n count++;\n let tmp = \"\";\n tmp += `${state.id}: \\n`.padEnd(4);\n for (const psItem of state.items) {\n tmp += \" \" + psItem.toString() + \"\\n\";\n }\n output += tmp;\n }\n\n console.log(\"state count:\", count);\n console.log(output);\n }\n // #endif\n}\n","import { BaseToken } from \"../common/BaseToken\";\nimport { EShaderStage } from \"../common/enums/ShaderStage\";\nimport { SymbolTable } from \"../common/SymbolTable\";\nimport { GSErrorName } from \"../GSError\";\nimport { ASTNode, TreeNode } from \"../parser/AST\";\nimport { ESymbolType, SymbolInfo } from \"../parser/symbolTable\";\nimport { StructProp } from \"../parser/types\";\nimport { ShaderLab } from \"../ShaderLab\";\nimport { ShaderLabUtils } from \"../ShaderLabUtils\";\n\n/** @internal */\nexport class VisitorContext {\n private static _lookupSymbol: SymbolInfo = new SymbolInfo(\"\", null);\n private static _singleton: VisitorContext;\n static get context() {\n return this._singleton;\n }\n\n static reset() {\n if (!this._singleton) {\n this._singleton = new VisitorContext();\n }\n this._singleton.reset();\n }\n\n attributeStructs: ASTNode.StructSpecifier[] = [];\n attributeList: StructProp[] = [];\n varyingStructs: ASTNode.StructSpecifier[] = [];\n varyingList: StructProp[] = [];\n mrtStructs: ASTNode.StructSpecifier[] = [];\n mrtList: StructProp[] = [];\n\n stage: EShaderStage;\n stageEntry: string;\n\n _referencedAttributeList: Record<string, StructProp[]>;\n _referencedVaryingList: Record<string, StructProp[]>;\n _referencedMRTList: Record<string, StructProp[]>;\n _referencedGlobals: Record<string, SymbolInfo[]>;\n _referencedGlobalMacroASTs: TreeNode[] = [];\n\n _passSymbolTable: SymbolTable<SymbolInfo>;\n\n reset(resetAll = true) {\n if (resetAll) {\n this.attributeStructs.length = 0;\n this.attributeList.length = 0;\n this.varyingStructs.length = 0;\n this.varyingList.length = 0;\n this.mrtStructs.length = 0;\n this.mrtList.length = 0;\n }\n\n this._referencedAttributeList = Object.create(null);\n this._referencedVaryingList = Object.create(null);\n this._referencedMRTList = Object.create(null);\n this._referencedGlobals = Object.create(null);\n this._referencedGlobalMacroASTs.length = 0;\n }\n\n isAttributeStruct(type: string) {\n return this.attributeStructs.findIndex((item) => item.ident!.lexeme === type) !== -1;\n }\n\n isVaryingStruct(type: string) {\n return this.varyingStructs.findIndex((item) => item.ident!.lexeme === type) !== -1;\n }\n\n isMRTStruct(type: string) {\n return this.mrtStructs.findIndex((item) => item.ident!.lexeme === type) !== -1;\n }\n\n referenceAttribute(ident: BaseToken): Error | void {\n const lexeme = ident.lexeme;\n if (this._referencedAttributeList[lexeme]) return;\n\n const props = this.attributeList.filter((item) => item.ident.lexeme === lexeme);\n if (!props.length) {\n return ShaderLabUtils.createGSError(\n `referenced attribute not found: ${lexeme}`,\n GSErrorName.CompilationError,\n ShaderLab._processingPassText,\n ident.location\n );\n }\n this._referencedAttributeList[lexeme] = props;\n }\n\n referenceVarying(ident: BaseToken): Error | void {\n const lexeme = ident.lexeme;\n if (this._referencedVaryingList[lexeme]) return;\n\n const props = this.varyingList.filter((item) => item.ident.lexeme === lexeme);\n if (!props.length) {\n return ShaderLabUtils.createGSError(\n `referenced varying not found: ${lexeme}`,\n GSErrorName.CompilationError,\n ShaderLab._processingPassText,\n ident.location\n );\n }\n this._referencedVaryingList[lexeme] = props;\n }\n\n referenceMRTProp(ident: BaseToken): Error | void {\n const lexeme = ident.lexeme;\n if (this._referencedMRTList[lexeme]) return;\n\n const props = this.mrtList.filter((item) => item.ident.lexeme === lexeme);\n if (!props.length) {\n return ShaderLabUtils.createGSError(\n `referenced mrt not found: ${lexeme}`,\n GSErrorName.CompilationError,\n ShaderLab._processingPassText,\n ident.location\n );\n }\n this._referencedMRTList[lexeme] = props;\n }\n\n referenceGlobal(ident: string, type: ESymbolType): void {\n if (this._referencedGlobals[ident]) return;\n\n this._referencedGlobals[ident] = [];\n\n const lookupSymbol = VisitorContext._lookupSymbol;\n lookupSymbol.set(ident, type);\n this._passSymbolTable.getSymbols(lookupSymbol, true, this._referencedGlobals[ident]);\n }\n}\n","import { IPoolElement } from \"@galacean/engine\";\n\nexport class TempArray<T> implements IPoolElement {\n array: Array<T> = new Array();\n\n dispose(): void {\n this.array.length = 0;\n }\n}\n","import { ShaderPosition, ShaderRange } from \"../common\";\nimport { BaseToken } from \"../common/BaseToken\";\nimport { GSErrorName } from \"../GSError\";\nimport { ASTNode, TreeNode } from \"../parser/AST\";\nimport { NoneTerminal } from \"../parser/GrammarSymbol\";\nimport { ESymbolType, FnSymbol } from \"../parser/symbolTable\";\nimport { NodeChild, StructProp } from \"../parser/types\";\nimport { ParserUtils } from \"../ParserUtils\";\nimport { ShaderLab } from \"../ShaderLab\";\nimport { VisitorContext } from \"./VisitorContext\";\n// #if _VERBOSE\nimport { GSError } from \"../GSError\";\n// #endif\nimport { Logger, ReturnableObjectPool } from \"@galacean/engine\";\nimport { Keyword } from \"../common/enums/Keyword\";\nimport { TempArray } from \"../TempArray\";\nimport { ICodeSegment } from \"./types\";\n\n/**\n * @internal\n * The code generator\n */\nexport abstract class CodeGenVisitor {\n // #if _VERBOSE\n readonly errors: Error[] = [];\n // #endif\n\n abstract getAttributeProp(prop: StructProp): string;\n abstract getVaryingProp(prop: StructProp): string;\n abstract getMRTProp(prop: StructProp): string;\n\n protected static _tmpArrayPool = new ReturnableObjectPool(TempArray<string>, 10);\n\n defaultCodeGen(children: NodeChild[]) {\n const pool = CodeGenVisitor._tmpArrayPool;\n let ret = pool.get();\n ret.dispose();\n for (const child of children) {\n if (child instanceof BaseToken) {\n ret.array.push(child.lexeme);\n } else {\n ret.array.push(child.codeGen(this));\n }\n }\n pool.return(ret);\n return ret.array.join(\" \");\n }\n\n visitPostfixExpression(node: ASTNode.PostfixExpression): string {\n const children = node.children;\n const derivationLength = children.length;\n const context = VisitorContext.context;\n\n if (derivationLength === 3) {\n const postExpr = children[0] as ASTNode.PostfixExpression;\n const prop = children[2];\n\n if (prop instanceof BaseToken) {\n if (context.isAttributeStruct(<string>postExpr.type)) {\n const error = context.referenceAttribute(prop);\n // #if _VERBOSE\n if (error) {\n this.errors.push(<GSError>error);\n }\n // #endif\n return prop.lexeme;\n } else if (context.isVaryingStruct(<string>postExpr.type)) {\n const error = context.referenceVarying(prop);\n // #if _VERBOSE\n if (error) {\n this.errors.push(<GSError>error);\n }\n // #endif\n return prop.lexeme;\n } else if (context.isMRTStruct(<string>postExpr.type)) {\n const error = context.referenceMRTProp(prop);\n // #if _VERBOSE\n if (error) {\n this.errors.push(<GSError>error);\n }\n // #endif\n return prop.lexeme;\n }\n\n return `${postExpr.codeGen(this)}.${prop.lexeme}`;\n } else {\n return `${postExpr.codeGen(this)}.${prop.codeGen(this)}`;\n }\n } else if (derivationLength === 4) {\n const identNode = children[0] as ASTNode.PostfixExpression;\n const indexNode = children[2] as ASTNode.Expression;\n const identLexeme = identNode.codeGen(this);\n const indexLexeme = indexNode.codeGen(this);\n if (identLexeme === \"gl_FragData\") {\n this._reportError(identNode.location, \"Please use MRT struct instead of gl_FragData.\");\n }\n return `${identLexeme}[${indexLexeme}]`;\n }\n\n return this.defaultCodeGen(node.children);\n }\n\n visitVariableIdentifier(node: ASTNode.VariableIdentifier): string {\n for (let name of node.referenceGlobalSymbolNames) {\n VisitorContext.context.referenceGlobal(name, ESymbolType.Any);\n }\n\n return node.getLexeme(this);\n }\n\n visitFunctionCall(node: ASTNode.FunctionCall): string {\n const call = node.children[0] as ASTNode.FunctionCallGeneric;\n if (call.fnSymbol instanceof FnSymbol) {\n VisitorContext.context.referenceGlobal(call.fnSymbol.ident, ESymbolType.FN);\n\n const paramList = call.children[2];\n if (paramList instanceof ASTNode.FunctionCallParameterList) {\n const astNodes = paramList.paramNodes;\n const paramInfoList = call.fnSymbol.astNode.protoType.parameterList;\n\n const params = astNodes.filter((_, i) => {\n const typeInfo = paramInfoList?.[i]?.typeInfo;\n return (\n !typeInfo ||\n (!VisitorContext.context.isAttributeStruct(typeInfo.typeLexeme) &&\n !VisitorContext.context.isVaryingStruct(typeInfo.typeLexeme) &&\n !VisitorContext.context.isMRTStruct(typeInfo.typeLexeme))\n );\n });\n\n let paramsCode = \"\";\n\n for (let i = 0, length = params.length; i < length; i++) {\n const astNode = params[i];\n const code = astNode.codeGen(this);\n if (astNode instanceof ASTNode.MacroCallArgBlock || i === 0) {\n paramsCode += code;\n } else {\n paramsCode += `, ${code}`;\n }\n }\n\n return `${call.fnSymbol.ident}(${paramsCode})`;\n }\n }\n\n return this.defaultCodeGen(node.children);\n }\n\n visitMacroCallFunction(node: ASTNode.MacroCallFunction): string {\n const children = node.children;\n const paramList = children[2];\n if (paramList instanceof ASTNode.FunctionCallParameterList) {\n const astNodes = paramList.paramNodes;\n\n const params = astNodes.filter((node) => {\n if (node instanceof ASTNode.AssignmentExpression) {\n const variableParam = ParserUtils.unwrapNodeByType<ASTNode.VariableIdentifier>(\n node,\n NoneTerminal.variable_identifier\n );\n if (\n variableParam &&\n typeof variableParam.typeInfo === \"string\" &&\n (VisitorContext.context.isAttributeStruct(variableParam.typeInfo) ||\n VisitorContext.context.isVaryingStruct(variableParam.typeInfo) ||\n VisitorContext.context.isMRTStruct(variableParam.typeInfo))\n ) {\n return false;\n }\n }\n\n return true;\n });\n\n let paramsCode = \"\";\n for (let i = 0, length = params.length; i < length; i++) {\n const node = params[i];\n const code = node.codeGen(this);\n\n if (node instanceof ASTNode.MacroCallArgBlock || i === 0) {\n paramsCode += code;\n } else {\n paramsCode += `, ${code}`;\n }\n }\n\n return `${node.macroName}(${paramsCode})`;\n } else {\n return this.defaultCodeGen(node.children);\n }\n }\n\n visitStatementList(node: ASTNode.StatementList): string {\n const children = node.children as TreeNode[];\n if (children.length === 1) {\n return children[0].codeGen(this);\n } else {\n return `${children[0].codeGen(this)}\\n${children[1].codeGen(this)}`;\n }\n }\n\n visitSingleDeclaration(node: ASTNode.SingleDeclaration): string {\n const type = node.typeSpecifier.type;\n if (typeof type === \"string\") {\n VisitorContext.context.referenceGlobal(type, ESymbolType.STRUCT);\n }\n return this.defaultCodeGen(node.children);\n }\n\n visitGlobalVariableDeclaration(node: ASTNode.VariableDeclaration): string {\n const children = node.children;\n const fullType = children[0];\n if (fullType instanceof ASTNode.FullySpecifiedType && fullType.typeSpecifier.isCustom) {\n VisitorContext.context.referenceGlobal(<string>fullType.type, ESymbolType.STRUCT);\n }\n return `uniform ${this.defaultCodeGen(children)}`;\n }\n\n visitDeclaration(node: ASTNode.Declaration): string {\n const { context } = VisitorContext;\n const children = node.children;\n const child = children[0];\n\n if (child instanceof ASTNode.InitDeclaratorList) {\n const typeLexeme = child.typeInfo.typeLexeme;\n if (context.isVaryingStruct(typeLexeme) || context.isMRTStruct(typeLexeme)) return \"\";\n }\n return this.defaultCodeGen(children);\n }\n\n visitFunctionParameterList(node: ASTNode.FunctionParameterList): string {\n const params = node.parameterInfoList.filter(\n (item) =>\n !item.typeInfo ||\n (!VisitorContext.context.isAttributeStruct(item.typeInfo.typeLexeme) &&\n !VisitorContext.context.isVaryingStruct(item.typeInfo.typeLexeme) &&\n !VisitorContext.context.isMRTStruct(item.typeInfo.typeLexeme))\n );\n\n let out = \"\";\n for (let i = 0, length = params.length; i < length; i++) {\n const item = params[i];\n const astNode = item.astNode;\n const code = astNode.codeGen(this);\n if (astNode instanceof ASTNode.MacroParamBlock || i === 0) {\n out += code;\n } else {\n out += `, ${code}`;\n }\n }\n\n return out;\n }\n\n visitFunctionHeader(node: ASTNode.FunctionHeader): string {\n const returnType = node.returnType.typeSpecifier.lexeme;\n if (VisitorContext.context.isVaryingStruct(returnType)) {\n return `void ${node.ident.lexeme}(`;\n }\n return this.defaultCodeGen(node.children);\n }\n\n visitJumpStatement(node: ASTNode.JumpStatement): string {\n const children = node.children;\n const cmd = children[0] as BaseToken;\n if (cmd.type === Keyword.RETURN) {\n const expr = children[1];\n if (expr instanceof ASTNode.Expression) {\n const returnVar = ParserUtils.unwrapNodeByType<ASTNode.VariableIdentifier>(\n expr,\n NoneTerminal.variable_identifier\n );\n if (VisitorContext.context.isVaryingStruct(<string>returnVar?.typeInfo)) {\n return \"\";\n }\n const returnFnCall = ParserUtils.unwrapNodeByType<ASTNode.FunctionCall>(expr, NoneTerminal.function_call);\n if (VisitorContext.context.isVaryingStruct(<string>returnFnCall?.type)) {\n return `${expr.codeGen(this)};`;\n }\n }\n }\n return this.defaultCodeGen(children);\n }\n\n visitFunctionIdentifier(node: ASTNode.FunctionIdentifier): string {\n return this.defaultCodeGen(node.children);\n }\n\n visitStructSpecifier(node: ASTNode.StructSpecifier): string {\n const context = VisitorContext.context;\n const { varyingStructs, attributeStructs, mrtStructs } = context;\n const isVaryingStruct = varyingStructs.indexOf(node) !== -1;\n const isAttributeStruct = attributeStructs.indexOf(node) !== -1;\n const isMRTStruct = mrtStructs.indexOf(node) !== -1;\n\n if (isVaryingStruct && isAttributeStruct) {\n this._reportError(node.location, \"cannot use same struct as Varying and Attribute\");\n }\n\n if (isVaryingStruct && isMRTStruct) {\n this._reportError(node.location, \"cannot use same struct as Varying and MRT\");\n }\n\n if (isAttributeStruct && isMRTStruct) {\n this._reportError(node.location, \"cannot use same struct as Attribute and MRT\");\n }\n\n if (isVaryingStruct || isAttributeStruct || isMRTStruct) {\n let result: ICodeSegment[] = [];\n\n result.push(\n ...node.macroExpressions.map((item) => ({\n text: item instanceof BaseToken ? item.lexeme : item.codeGen(this),\n index: item.location.start.index\n }))\n );\n\n for (const prop of node.propList) {\n const name = prop.ident.lexeme;\n if (isVaryingStruct && context._referencedVaryingList[name]?.indexOf(prop) >= 0) {\n result.push({\n text: `${this.getVaryingProp(prop)}\\n`,\n index: prop.ident.location.start.index\n });\n } else if (isAttributeStruct && context._referencedAttributeList[name]?.indexOf(prop) >= 0) {\n result.push({\n text: `${this.getAttributeProp(prop)}\\n`,\n index: prop.ident.location.start.index\n });\n } else if (isMRTStruct && context._referencedMRTList[name]?.indexOf(prop) >= 0) {\n result.push({\n text: `${this.getMRTProp(prop)}\\n`,\n index: prop.ident.location.start.index\n });\n }\n }\n\n const text = result\n .sort((a, b) => a.index - b.index)\n .map((item) => item.text)\n .join(\"\");\n\n return text;\n } else {\n return this.defaultCodeGen(node.children);\n }\n }\n\n visitFunctionDefinition(fnNode: ASTNode.FunctionDefinition): string {\n const fnName = fnNode.protoType.ident.lexeme;\n const context = VisitorContext.context;\n\n if (fnName == context.stageEntry) {\n const statements = fnNode.statements.codeGen(this);\n return `void main() ${statements}`;\n } else {\n return this.defaultCodeGen(fnNode.children);\n }\n }\n\n protected _reportError(loc: ShaderRange | ShaderPosition, message: string): void {\n // #if _VERBOSE\n this.errors.push(new GSError(GSErrorName.CompilationError, message, loc, ShaderLab._processingPassText));\n // #else\n Logger.error(message);\n // #endif\n }\n}\n","import { IShaderInfo } from \"@galacean/engine-design\";\nimport { BaseToken } from \"../common/BaseToken\";\nimport { EShaderStage } from \"../common/enums/ShaderStage\";\nimport { Keyword } from \"../common/enums/Keyword\";\nimport { ASTNode, TreeNode } from \"../parser/AST\";\nimport { ShaderData } from \"../parser/ShaderInfo\";\nimport { ESymbolType, FnSymbol, StructSymbol, SymbolInfo } from \"../parser/symbolTable\";\nimport { CodeGenVisitor } from \"./CodeGenVisitor\";\nimport { ICodeSegment } from \"./types\";\nimport { VisitorContext } from \"./VisitorContext\";\n\n/**\n * @internal\n */\nexport abstract class GLESVisitor extends CodeGenVisitor {\n private _globalCodeArray: ICodeSegment[] = [];\n private static _lookupSymbol: SymbolInfo = new SymbolInfo(\"\", null);\n private static _serializedGlobalKey = new Set();\n\n reset(): void {\n const { _globalCodeArray: globalCodeArray } = this;\n globalCodeArray.length = 0;\n GLESVisitor._serializedGlobalKey.clear();\n }\n\n getOtherGlobal(data: ShaderData, out: ICodeSegment[]): void {\n for (const precision of data.globalPrecisions) {\n out.push({ text: precision.codeGen(this), index: precision.location.start.index });\n }\n }\n\n visitShaderProgram(node: ASTNode.GLShaderProgram, vertexEntry: string, fragmentEntry: string): IShaderInfo {\n // #if _VERBOSE\n this.errors.length = 0;\n // #endif\n VisitorContext.reset();\n this.reset();\n\n const shaderData = node.shaderData;\n VisitorContext.context._passSymbolTable = shaderData.symbolTable;\n\n const outerGlobalMacroDeclarations = shaderData.getOuterGlobalMacroDeclarations();\n\n return {\n vertex: this._vertexMain(vertexEntry, shaderData, outerGlobalMacroDeclarations),\n fragment: this._fragmentMain(fragmentEntry, shaderData, outerGlobalMacroDeclarations)\n };\n }\n\n private _vertexMain(\n entry: string,\n data: ShaderData,\n outerGlobalMacroDeclarations: ASTNode.GlobalDeclaration[]\n ): string {\n const context = VisitorContext.context;\n context.stage = EShaderStage.VERTEX;\n context.stageEntry = entry;\n\n const lookupSymbol = GLESVisitor._lookupSymbol;\n const symbolTable = data.symbolTable;\n lookupSymbol.set(entry, ESymbolType.FN);\n const fnSymbols = <FnSymbol[]>symbolTable.getSymbols(lookupSymbol, true, []);\n if (!fnSymbols.length) throw `no entry function found: ${entry}`;\n\n const { attributeStructs, attributeList, varyingStructs, varyingList } = context;\n fnSymbols.forEach((fnSymbol) => {\n const fnNode = fnSymbol.astNode;\n const returnType = fnNode.protoType.returnType;\n\n if (typeof returnType.type === \"string\") {\n lookupSymbol.set(returnType.type, ESymbolType.STRUCT);\n const varyingSymbols = <StructSymbol[]>symbolTable.getSymbols(lookupSymbol, true, []);\n if (!varyingSymbols.length) {\n this._reportError(returnType.location, `invalid varying struct: \"${returnType.type}\".`);\n } else {\n for (let i = 0; i < varyingSymbols.length; i++) {\n const varyingSymbol = varyingSymbols[i];\n const astNode = varyingSymbol.astNode;\n varyingStructs.push(astNode);\n for (const prop of astNode.propList) {\n varyingList.push(prop);\n }\n }\n }\n } else if (returnType.type !== Keyword.VOID) {\n this._reportError(returnType.location, \"vertex main entry can only return struct or void.\");\n }\n\n const paramList = fnNode.protoType.parameterList;\n const attributeParam = paramList?.[0];\n if (attributeParam) {\n const attributeType = attributeParam.typeInfo.type;\n if (typeof attributeType === \"string\") {\n lookupSymbol.set(attributeType, ESymbolType.STRUCT);\n const attributeSymbols = <StructSymbol[]>symbolTable.getSymbols(lookupSymbol, true, []);\n if (!attributeSymbols.length) {\n this._reportError(attributeParam.astNode.location, `invalid attribute struct: \"${attributeType}\".`);\n } else {\n for (let i = 0; i < attributeSymbols.length; i++) {\n const attributeSymbol = attributeSymbols[i];\n const astNode = attributeSymbol.astNode;\n attributeStructs.push(astNode);\n for (const prop of astNode.propList) {\n attributeList.push(prop);\n }\n }\n }\n }\n }\n });\n\n const globalCodeArray = this._globalCodeArray;\n VisitorContext.context.referenceGlobal(entry, ESymbolType.FN);\n\n this._getGlobalSymbol(globalCodeArray);\n this._getCustomStruct(context.attributeStructs, globalCodeArray);\n this._getCustomStruct(context.varyingStructs, globalCodeArray);\n this._getGlobalMacroDeclarations(outerGlobalMacroDeclarations, globalCodeArray);\n this.getOtherGlobal(data, globalCodeArray);\n\n const globalCode = globalCodeArray\n .sort((a, b) => a.index - b.index)\n .map((item) => item.text)\n .join(\"\\n\");\n\n VisitorContext.context.reset(false);\n this.reset();\n\n return globalCode;\n }\n\n private _fragmentMain(\n entry: string,\n data: ShaderData,\n outerGlobalMacroStatements: ASTNode.GlobalDeclaration[]\n ): string {\n const context = VisitorContext.context;\n context.stage = EShaderStage.FRAGMENT;\n context.stageEntry = entry;\n\n const lookupSymbol = GLESVisitor._lookupSymbol;\n const { symbolTable } = data;\n lookupSymbol.set(entry, ESymbolType.FN);\n const fnSymbols = <FnSymbol[]>symbolTable.getSymbols(lookupSymbol, true, []);\n if (!fnSymbols?.length) throw `no entry function found: ${entry}`;\n\n fnSymbols.forEach((fnSymbol) => {\n const fnNode = fnSymbol.astNode;\n const { returnStatement } = fnNode;\n\n if (returnStatement) {\n returnStatement.isFragReturnStatement = true;\n }\n\n const { type: returnDataType, location: returnLocation } = fnNode.protoType.returnType;\n if (typeof returnDataType === \"string\") {\n lookupSymbol.set(returnDataType, ESymbolType.STRUCT);\n const mrtSymbols = <StructSymbol[]>symbolTable.getSymbols(lookupSymbol, true, []);\n if (!mrtSymbols.length) {\n this._reportError(returnLocation, `invalid mrt struct: ${returnDataType}`);\n } else {\n for (let i = 0; i < mrtSymbols.length; i++) {\n const mrtSymbol = mrtSymbols[i];\n const astNode = mrtSymbol.astNode;\n context.mrtStructs.push(astNode);\n for (const prop of astNode.propList) {\n context.mrtList.push(prop);\n }\n }\n }\n } else if (returnDataType !== Keyword.VOID && returnDataType !== Keyword.VEC4) {\n this._reportError(returnLocation, \"fragment main entry can only return struct or vec4.\");\n }\n });\n\n const globalCodeArray = this._globalCodeArray;\n VisitorContext.context.referenceGlobal(entry, ESymbolType.FN);\n\n this._getGlobalSymbol(globalCodeArray);\n this._getCustomStruct(context.varyingStructs, globalCodeArray);\n this._getCustomStruct(context.mrtStructs, globalCodeArray);\n this._getGlobalMacroDeclarations(outerGlobalMacroStatements, globalCodeArray);\n this.getOtherGlobal(data, globalCodeArray);\n\n const globalCode = globalCodeArray\n .sort((a, b) => a.index - b.index)\n .map((item) => item.text)\n .join(\"\\n\");\n\n context.reset();\n this.reset();\n\n return globalCode;\n }\n\n private _getGlobalSymbol(out: ICodeSegment[]): void {\n const { _referencedGlobals } = VisitorContext.context;\n\n const lastLength = Object.keys(_referencedGlobals).length;\n if (lastLength === 0) return;\n\n for (const ident in _referencedGlobals) {\n if (GLESVisitor._serializedGlobalKey.has(ident)) continue;\n GLESVisitor._serializedGlobalKey.add(ident);\n\n const symbols = _referencedGlobals[ident];\n for (let i = 0; i < symbols.length; i++) {\n const sm = symbols[i];\n const text = sm.astNode.codeGen(this) + (sm.type === ESymbolType.VAR ? \";\" : \"\");\n if (!sm.isInMacroBranch) {\n out.push({\n text,\n index: sm.astNode.location.start.index\n });\n }\n }\n }\n\n if (Object.keys(_referencedGlobals).length !== lastLength) {\n this._getGlobalSymbol(out);\n }\n }\n\n private _getCustomStruct(structNodes: ASTNode.StructSpecifier[], out: ICodeSegment[]): void {\n for (const node of structNodes) {\n const text = node.codeGen(this);\n\n if (!node.isInMacroBranch) {\n out.push({ text, index: node.location.start.index });\n }\n }\n }\n\n private _getGlobalMacroDeclarations(macros: ASTNode.GlobalDeclaration[], out: ICodeSegment[]): void {\n const context = VisitorContext.context;\n const referencedGlobals = context._referencedGlobals;\n const referencedGlobalMacroASTs = context._referencedGlobalMacroASTs;\n referencedGlobalMacroASTs.length = 0;\n\n for (const symbols of Object.values(referencedGlobals)) {\n for (const symbol of symbols) {\n if (symbol.isInMacroBranch) {\n referencedGlobalMacroASTs.push(symbol.astNode);\n }\n }\n }\n\n for (const macro of macros) {\n let text: string;\n const child = macro.children[0];\n\n if (child instanceof ASTNode.GlobalMacroIfStatement) {\n let result: ICodeSegment[] = [];\n result.push(\n ...macro.macroExpressions.map((item) => ({\n text: item instanceof BaseToken ? item.lexeme : item.codeGen(this),\n index: item.location.start.index\n }))\n );\n\n this._visitGlobalMacroIfStatement(child, result);\n\n text = result\n .sort((a, b) => a.index - b.index)\n .map((item) => item.text)\n .join(\"\\n\");\n } else {\n text = macro.codeGen(this);\n }\n\n out.push({\n text,\n index: macro.location.start.index\n });\n }\n }\n\n private _visitGlobalMacroIfStatement(node: TreeNode, out: ICodeSegment[]): void {\n const children = node.children;\n for (let i = 0; i < children.length; i++) {\n const child = children[i];\n if (child instanceof ASTNode.PrecisionSpecifier) {\n out.push({\n text: child.codeGen(this),\n index: child.location.start.index\n });\n } else if (child instanceof ASTNode.FunctionDefinition) {\n if (VisitorContext.context._referencedGlobalMacroASTs.indexOf(child) !== -1) {\n out.push({\n text: child.getCache(), // code has generated in `_getGlobalSymbol`\n index: child.location.start.index\n });\n }\n } else if (child instanceof ASTNode.StructSpecifier) {\n const context = VisitorContext.context;\n const stage = context.stage;\n if (\n VisitorContext.context._referencedGlobalMacroASTs.indexOf(child) !== -1 ||\n (stage === EShaderStage.VERTEX\n ? context.isAttributeStruct(child.ident?.lexeme) || context.isVaryingStruct(child.ident?.lexeme)\n : context.isVaryingStruct(child.ident?.lexeme) || context.isMRTStruct(child.ident?.lexeme))\n ) {\n out.push({\n text: child.getCache(), // code has generated in `_getGlobalSymbol` or `_getCustomStruct`\n index: child.location.start.index\n });\n }\n } else if (child instanceof ASTNode.VariableDeclarationList) {\n const variableDeclarations = child.variableDeclarations;\n for (let i = 0; i < variableDeclarations.length; i++) {\n const variableDeclaration = variableDeclarations[i];\n if (VisitorContext.context._referencedGlobalMacroASTs.indexOf(variableDeclaration) !== -1) {\n out.push({\n text: variableDeclaration.getCache() + \";\", // code has generated in `_getGlobalSymbol`\n index: variableDeclaration.location.start.index\n });\n }\n }\n }\n\n if (child instanceof TreeNode) {\n this._visitGlobalMacroIfStatement(child, out);\n }\n }\n }\n}\n","import { BaseToken } from \"../common/BaseToken\";\nimport { ASTNode } from \"../parser/AST\";\nimport { StructProp } from \"../parser/types\";\nimport { GLESVisitor } from \"./GLESVisitor\";\nimport { VisitorContext } from \"./VisitorContext\";\n\nexport class GLES100Visitor extends GLESVisitor {\n private static _singleton: GLES100Visitor;\n static getVisitor(): GLES100Visitor {\n if (!this._singleton) {\n this._singleton = new GLES100Visitor();\n }\n return this._singleton;\n }\n\n override getAttributeProp(prop: StructProp): string {\n return `attribute ${prop.typeInfo.typeLexeme} ${prop.ident.lexeme};`;\n }\n\n override getVaryingProp(prop: StructProp): string {\n return `varying ${prop.typeInfo.typeLexeme} ${prop.ident.lexeme};`;\n }\n\n override getMRTProp(): string {\n return null;\n }\n\n override visitPostfixExpression(node: ASTNode.PostfixExpression): string {\n const { children } = node;\n const postExpr = children[0];\n const { context } = VisitorContext;\n if (postExpr instanceof ASTNode.PostfixExpression && context.isMRTStruct(<string>postExpr.type)) {\n const propReferenced = children[2] as BaseToken;\n const prop = context.mrtList.find((item) => item.ident.lexeme === propReferenced.lexeme);\n if (!prop) {\n this._reportError(propReferenced.location, `not found mrt property: ${propReferenced.lexeme}`);\n return \"\";\n }\n return `gl_FragData[${prop.mrtIndex!}]`;\n }\n return super.visitPostfixExpression(node);\n }\n\n override visitJumpStatement(node: ASTNode.JumpStatement): string {\n if (node.isFragReturnStatement) {\n if (VisitorContext.context.mrtStructs.length) {\n return \"\";\n }\n const expression = node.children[1] as ASTNode.Expression;\n return `gl_FragColor = ${expression.codeGen(this)}`;\n }\n return super.visitJumpStatement(node);\n }\n}\n","import { EShaderStage } from \"../common/enums/ShaderStage\";\nimport { ASTNode } from \"../parser/AST\";\nimport { ShaderData } from \"../parser/ShaderInfo\";\nimport { StructProp } from \"../parser/types\";\nimport { GLESVisitor } from \"./GLESVisitor\";\nimport { ICodeSegment } from \"./types\";\nimport { VisitorContext } from \"./VisitorContext\";\n\nconst V3_GL_FragColor = \"GS_glFragColor\";\n\nexport class GLES300Visitor extends GLESVisitor {\n private static _singleton: GLES300Visitor;\n static getVisitor(): GLES300Visitor {\n if (!this._singleton) {\n this._singleton = new GLES300Visitor();\n }\n return this._singleton;\n }\n\n private _otherCodeArray: ICodeSegment[] = [];\n private _fragColorVariableRegistered = false;\n\n override reset(): void {\n super.reset();\n\n this._otherCodeArray.length = 0;\n this._fragColorVariableRegistered = false;\n }\n\n override getOtherGlobal(data: ShaderData, out: ICodeSegment[]): void {\n super.getOtherGlobal(data, out);\n\n for (let i = 0, n = this._otherCodeArray.length; i < n; i++) {\n out.push(this._otherCodeArray[i]);\n }\n }\n\n override getAttributeProp(prop: StructProp): string {\n return `in ${prop.typeInfo.typeLexeme} ${prop.ident.lexeme};`;\n }\n\n override getVaryingProp(prop: StructProp): string {\n const qualifier = VisitorContext.context.stage === EShaderStage.FRAGMENT ? \"in\" : \"out\";\n return `${qualifier} ${prop.typeInfo.typeLexeme} ${prop.ident.lexeme};`;\n }\n\n override getMRTProp(prop: StructProp): string {\n return `layout(location = ${prop.mrtIndex}) out vec4 ${prop.ident.lexeme};`;\n }\n\n override visitFunctionIdentifier(node: ASTNode.FunctionIdentifier): string {\n const children = node.children;\n const typeSpecifier = children[0] as ASTNode.TypeSpecifier;\n if (typeSpecifier.children.length !== 1) {\n return this.defaultCodeGen(children);\n }\n let ident = node.lexeme;\n switch (node.ident) {\n case \"texture2D\":\n case \"textureCube\":\n ident = \"texture\";\n break;\n case \"texture2DProj\":\n ident = \"textureProj\";\n break;\n case \"texture2DLodEXT\":\n case \"textureCubeLodEXT\":\n ident = \"textureLod\";\n break;\n case \"texture2DGradEXT\":\n case \"textureCubeGradEXT\":\n ident = \"textureGrad\";\n break;\n case \"texture2DProjLodEXT\":\n ident = \"textureProjLod\";\n break;\n case \"texture2DProjGradEXT\":\n ident = \"textureProjGrad\";\n break;\n case \"gl_FragDepthEXT\":\n ident = \"gl_FragDepth\";\n break;\n }\n return ident;\n }\n\n override visitVariableIdentifier(node: ASTNode.VariableIdentifier): string {\n const { context } = VisitorContext;\n if (context.stage === EShaderStage.FRAGMENT && node.getLexeme(this) === \"gl_FragColor\") {\n if (context.mrtStructs.length) {\n this._reportError(node.location, \"gl_FragColor cannot be used with MRT (Multiple Render Targets).\");\n return;\n }\n this._registerFragColorVariable();\n return V3_GL_FragColor;\n }\n return super.visitVariableIdentifier(node);\n }\n\n override visitJumpStatement(node: ASTNode.JumpStatement): string {\n if (node.isFragReturnStatement) {\n if (VisitorContext.context.mrtStructs.length) {\n return \"\";\n }\n this._registerFragColorVariable();\n\n const expression = node.children[1] as ASTNode.Expression;\n return `${V3_GL_FragColor} = ${expression.codeGen(this)};`;\n }\n return super.visitJumpStatement(node);\n }\n\n private _registerFragColorVariable() {\n if (this._fragColorVariableRegistered) return;\n this._otherCodeArray.push({\n text: `out vec4 ${V3_GL_FragColor};`,\n index: 0\n });\n this._fragColorVariableRegistered = true;\n }\n}\n","import { Logger } from \"@galacean/engine\";\nimport { ShaderPosition, ShaderRange } from \".\";\nimport { GSErrorName } from \"../GSError\";\nimport { ShaderLab } from \"../ShaderLab\";\nimport { ShaderLabUtils } from \"../ShaderLabUtils\";\nimport { BaseToken } from \"./BaseToken\";\n\nexport type OnToken = (token: BaseToken, scanner: BaseLexer) => void;\n\n/**\n * @internal\n */\nexport abstract class BaseLexer {\n static isDigit(charCode: number): boolean {\n return charCode >= 48 && charCode <= 57; // 0-9\n }\n\n // Check if character is alphabetic or underscore (valid word start)\n static isAlpha(charCode: number): boolean {\n return (\n charCode === 95 || // _\n (charCode >= 65 && charCode <= 90) || // A-Z\n (charCode >= 97 && charCode <= 122) // a-z\n );\n }\n\n // Check if character is alphanumeric (alpha + digit)\n static isAlnum(charCode: number): boolean {\n return BaseLexer.isAlpha(charCode) || BaseLexer.isDigit(charCode);\n }\n\n static isPreprocessorStartChar(charCode: number): boolean {\n return charCode === 35; // #\n }\n\n static isWhiteSpaceChar(charCode: number, includeBreak: boolean): boolean {\n // Space || Tab\n if (charCode === 32 || charCode === 9) {\n return true;\n }\n return includeBreak && (charCode === 10 || charCode === 13); // \\n || \\r\n }\n\n protected _currentIndex = 0;\n protected _source: string;\n\n // #if _VERBOSE\n protected _column = 0;\n protected _line = 0;\n // #endif\n\n get currentIndex(): number {\n return this._currentIndex;\n }\n\n get source(): string {\n return this._source;\n }\n\n // #if _VERBOSE\n get line() {\n return this._line;\n }\n\n get column() {\n return this._column;\n }\n // #endif\n\n constructor(source?: string) {\n this._source = source;\n }\n\n setSource(source: string): void {\n this._source = source;\n this._currentIndex = 0;\n // #if _VERBOSE\n this._line = this._column = 0;\n // #endif\n }\n\n getShaderPosition(backOffset = 0): ShaderPosition {\n return ShaderLab.createPosition(\n this._currentIndex - backOffset,\n // #if _VERBOSE\n this._line,\n this._column - backOffset\n // #endif\n );\n }\n\n isEnd(): boolean {\n return this._currentIndex >= this._source.length;\n }\n\n getCurChar(): string {\n return this._source[this._currentIndex];\n }\n\n getCurCharCode(): number {\n return this._source.charCodeAt(this._currentIndex);\n }\n\n advance(count: number): void {\n // #if _VERBOSE\n const source = this._source;\n const startIndex = this._currentIndex;\n for (let i = 0; i < count; i++) {\n if (source[startIndex + i] === \"\\n\") {\n this._line += 1;\n this._column = 0;\n } else {\n this._column += 1;\n }\n }\n // #endif\n this._currentIndex += count;\n }\n\n skipSpace(includeLineBreak: boolean): void {\n while (BaseLexer.isWhiteSpaceChar(this.getCurCharCode(), includeLineBreak)) {\n this.advance(1);\n }\n }\n\n skipCommentsAndSpace(): void {\n const source = this._source;\n const length = source.length;\n let index = this._currentIndex;\n\n while (index < length) {\n // Skip whitespace\n while (index < length && BaseLexer.isWhiteSpaceChar(source.charCodeAt(index), true)) {\n index++;\n }\n\n // Check for comments: 47 is '/'\n if (index + 1 >= length || source.charCodeAt(index) !== 47) break;\n\n const nextChar = source.charCodeAt(index + 1);\n if (nextChar === 47) {\n // Single line comment: 10 is '\\n', 13 is '\\r'\n index += 2;\n while (index < length) {\n const charCode = source.charCodeAt(index);\n if (charCode === 10 || charCode === 13) break;\n index++;\n }\n } else if (nextChar === 42) {\n // Multi-line comment: 42 is '*'\n index += 2;\n while (index + 1 < length && !(source.charCodeAt(index) === 42 && source.charCodeAt(index + 1) === 47)) {\n index++;\n }\n index += 2; // Skip '*/'\n } else {\n break; // Not a comment, stop\n }\n }\n\n this.advance(index - this._currentIndex);\n }\n\n peek(to: number): string {\n const offset = this._currentIndex;\n return this._source.substring(offset, offset + to);\n }\n\n scanLexeme(lexeme: string): void {\n this.skipCommentsAndSpace();\n const length = lexeme.length;\n const peek = this.peek(length);\n if (peek !== lexeme) {\n this.throwError(this.getShaderPosition(0), `Expect lexeme \"${lexeme}\", but got \"${peek}\"`);\n }\n this.advance(length);\n }\n\n scanTwoExpectedLexemes(lexeme1: string, lexeme2: string): string | null {\n this.skipCommentsAndSpace();\n\n // Check first lexeme\n if (this.peek(lexeme1.length) === lexeme1) {\n this.advance(lexeme1.length);\n return lexeme1;\n }\n\n // Check second lexeme\n if (this.peek(lexeme2.length) === lexeme2) {\n this.advance(lexeme2.length);\n return lexeme2;\n }\n\n return null;\n }\n\n throwError(pos: ShaderPosition | ShaderRange, ...msgs: any[]) {\n const error = ShaderLabUtils.createGSError(msgs.join(\" \"), GSErrorName.ScannerError, this._source, pos);\n // #if _VERBOSE\n Logger.error(error!.toString());\n // #endif\n throw error;\n }\n\n scanPairedChar(left: string, right: string, balanced: boolean, skipLeading: boolean): string {\n if (!skipLeading) {\n this.scanLexeme(left);\n }\n\n const start = this._currentIndex;\n const source = this._source;\n const sourceLength = source.length;\n\n let currentIndex = this._currentIndex;\n if (balanced) {\n let level = 1;\n while (currentIndex < sourceLength) {\n const currentChar = source[currentIndex];\n if (currentChar === right && --level === 0) {\n break;\n } else if (currentChar === left) {\n level++;\n }\n currentIndex++;\n }\n } else {\n while (currentIndex < sourceLength) {\n if (source[currentIndex] === right) {\n break;\n }\n currentIndex++;\n }\n }\n\n this.advance(currentIndex + 1 - this._currentIndex);\n\n return source.substring(start, currentIndex);\n }\n\n abstract scanToken(onToken?: OnToken): void;\n}\n","import { ETokenType } from \"../common\";\nimport { BaseLexer } from \"../common/BaseLexer\";\nimport { BaseToken, EOF } from \"../common/BaseToken\";\nimport { Keyword } from \"../common/enums/Keyword\";\nimport { MacroDefineList } from \"../Preprocessor\";\nimport { ShaderLab } from \"../ShaderLab\";\n\n/**\n * The Lexer of ShaderLab Compiler\n */\nexport class Lexer extends BaseLexer {\n private static _lexemeTable = <Record<string, Keyword>>{\n const: Keyword.CONST,\n bool: Keyword.BOOL,\n float: Keyword.FLOAT,\n double: Keyword.DOUBLE,\n int: Keyword.INT,\n uint: Keyword.UINT,\n break: Keyword.BREAK,\n continue: Keyword.CONTINUE,\n do: Keyword.DO,\n else: Keyword.ELSE,\n for: Keyword.FOR,\n if: Keyword.IF,\n while: Keyword.WHILE,\n discard: Keyword.DISCARD,\n return: Keyword.RETURN,\n bvec2: Keyword.BVEC2,\n bvec3: Keyword.BVEC3,\n bvec4: Keyword.BVEC4,\n ivec2: Keyword.IVEC2,\n ivec3: Keyword.IVEC3,\n ivec4: Keyword.IVEC4,\n uvec2: Keyword.UVEC2,\n uvec3: Keyword.UVEC3,\n uvec4: Keyword.UVEC4,\n vec2: Keyword.VEC2,\n vec3: Keyword.VEC3,\n vec4: Keyword.VEC4,\n mat2: Keyword.MAT2,\n mat3: Keyword.MAT3,\n mat4: Keyword.MAT4,\n in: Keyword.IN,\n out: Keyword.OUT,\n inout: Keyword.INOUT,\n sampler2D: Keyword.SAMPLER2D,\n samplerCube: Keyword.SAMPLER_CUBE,\n sampler3D: Keyword.SAMPLER3D,\n sampler2DShadow: Keyword.SAMPLER2D_SHADOW,\n samplerCubeShadow: Keyword.SAMPLER_CUBE_SHADOW,\n sampler2DArray: Keyword.SAMPLER2D_ARRAY,\n sampler2DArrayShadow: Keyword.SAMPLER2D_ARRAY_SHADOW,\n isampler2D: Keyword.I_SAMPLER2D,\n isampler3D: Keyword.I_SAMPLER3D,\n isamplerCube: Keyword.I_SAMPLER_CUBE,\n isampler2DArray: Keyword.I_SAMPLER2D_ARRAY,\n usampler2D: Keyword.U_SAMPLER2D,\n usampler3D: Keyword.U_SAMPLER3D,\n usamplerCube: Keyword.U_SAMPLER_CUBE,\n usampler2DArray: Keyword.U_SAMPLER2D_ARRAY,\n struct: Keyword.STRUCT,\n void: Keyword.VOID,\n true: Keyword.True,\n false: Keyword.False,\n precision: Keyword.PRECISION,\n precise: Keyword.PRECISE,\n highp: Keyword.HIGHP,\n mediump: Keyword.MEDIUMP,\n lowp: Keyword.LOWP,\n invariant: Keyword.INVARIANT,\n flat: Keyword.FLAT,\n smooth: Keyword.SMOOTH,\n noperspective: Keyword.NOPERSPECTIVE,\n centroid: Keyword.CENTROID,\n layout: Keyword.LAYOUT,\n location: Keyword.LOCATION,\n\n // Macros ...\n \"#if\": Keyword.MACRO_IF,\n \"#ifdef\": Keyword.MACRO_IFDEF,\n \"#ifndef\": Keyword.MACRO_IFNDEF,\n \"#else\": Keyword.MACRO_ELSE,\n \"#elif\": Keyword.MACRO_ELIF,\n \"#endif\": Keyword.MACRO_ENDIF,\n \"#undef\": Keyword.MACRO_UNDEF\n };\n\n private _needScanMacroConditionExpression = false;\n\n *tokenize() {\n while (!this.isEnd()) {\n yield this.scanToken();\n }\n return EOF;\n }\n\n constructor(\n source: string,\n public macroDefineList: MacroDefineList\n ) {\n super(source);\n }\n\n override scanToken(): BaseToken {\n this.skipCommentsAndSpace();\n if (this.isEnd()) {\n return EOF;\n }\n\n if (this._needScanMacroConditionExpression) {\n this._needScanMacroConditionExpression = false;\n return this._scanMacroConditionExpression();\n }\n\n const curCharCode = this.getCurCharCode();\n if (BaseLexer.isPreprocessorStartChar(curCharCode)) {\n return this._scanDirectives();\n }\n if (BaseLexer.isAlpha(curCharCode)) {\n return this._scanWord();\n }\n if (BaseLexer.isDigit(curCharCode)) {\n return this._scanNum();\n }\n\n const start = this.getShaderPosition();\n const token = BaseToken.pool.get();\n let curChar: string;\n\n switch (this.getCurChar()) {\n case \"<\":\n this.advance(1);\n curChar = this.getCurChar();\n if (curChar === \"<\") {\n this.advance(1);\n if (this.getCurChar() === \"=\") {\n this.advance(1);\n token.set(ETokenType.LEFT_ASSIGN, \"<<=\", start);\n break;\n }\n token.set(ETokenType.LEFT_OP, \"<<\", start);\n break;\n } else if (curChar === \"=\") {\n this.advance(1);\n token.set(ETokenType.LE_OP, \"<=\", start);\n break;\n }\n token.set(ETokenType.LEFT_ANGLE, \"<\", start);\n break;\n\n case \">\":\n this.advance(1);\n curChar = this.getCurChar();\n if (curChar === \">\") {\n this.advance(1);\n if (this.getCurChar() === \"=\") {\n this.advance(1);\n token.set(ETokenType.RIGHT_ASSIGN, \">>=\", start);\n break;\n }\n token.set(ETokenType.RIGHT_OP, \">>\", start);\n break;\n } else if (curChar === \"=\") {\n this.advance(1);\n token.set(ETokenType.GE_OP, \">=\", start);\n break;\n }\n token.set(ETokenType.RIGHT_ANGLE, \">\", start);\n break;\n\n case \"+\":\n this.advance(1);\n curChar = this.getCurChar();\n if (curChar === \"+\") {\n this.advance(1);\n token.set(ETokenType.INC_OP, \"++\", start);\n break;\n } else if (curChar === \"=\") {\n this.advance(1);\n token.set(ETokenType.ADD_ASSIGN, \"+=\", start);\n break;\n }\n token.set(ETokenType.PLUS, \"+\", start);\n break;\n\n case \"-\":\n this.advance(1);\n curChar = this.getCurChar();\n if (curChar === \"-\") {\n this.advance(1);\n token.set(ETokenType.DEC_OP, \"--\", start);\n break;\n } else if (curChar === \"=\") {\n this.advance(1);\n token.set(ETokenType.SUB_ASSIGN, \"-=\", start);\n break;\n }\n token.set(ETokenType.DASH, \"-\", start);\n break;\n\n case \"=\":\n this.advance(1);\n if (this.getCurChar() === \"=\") {\n this.advance(1);\n token.set(ETokenType.EQ_OP, \"==\", start);\n break;\n }\n token.set(ETokenType.EQUAL, \"=\", start);\n break;\n\n case \"!\":\n this.advance(1);\n if (this.getCurChar() === \"=\") {\n this.advance(1);\n token.set(ETokenType.NE_OP, \"!=\", start);\n break;\n }\n token.set(ETokenType.BANG, \"!\", start);\n break;\n\n case \"&\":\n this.advance(1);\n curChar = this.getCurChar();\n if (curChar === \"&\") {\n this.advance(1);\n token.set(ETokenType.AND_OP, \"&&\", start);\n break;\n } else if (curChar === \"=\") {\n this.advance(1);\n token.set(ETokenType.ADD_ASSIGN, \"&=\", start);\n break;\n }\n token.set(ETokenType.AMPERSAND, \"&\", start);\n break;\n\n case \"|\":\n this.advance(1);\n curChar = this.getCurChar();\n if (curChar === \"|\") {\n this.advance(1);\n token.set(ETokenType.OR_OP, \"||\", start);\n break;\n } else if (curChar === \"=\") {\n this.advance(1);\n token.set(ETokenType.OR_ASSIGN, \"|=\", start);\n break;\n }\n token.set(ETokenType.VERTICAL_BAR, \"|\", start);\n break;\n\n case \"^\":\n this.advance(1);\n curChar = this.getCurChar();\n if (curChar === \"^\") {\n this.advance(1);\n token.set(ETokenType.XOR_OP, \"^^\", start);\n break;\n } else if (curChar === \"=\") {\n this.advance(1);\n token.set(ETokenType.XOR_ASSIGN, \"^=\", start);\n break;\n }\n token.set(ETokenType.CARET, \"^\", start);\n break;\n\n case \"*\":\n this.advance(1);\n if (this.getCurChar() === \"=\") {\n this.advance(1);\n token.set(ETokenType.MUL_ASSIGN, \"*=\", start);\n break;\n }\n\n token.set(ETokenType.STAR, \"*\", start);\n break;\n\n case \"/\":\n this.advance(1);\n if (this.getCurChar() === \"=\") {\n this.advance(1);\n\n token.set(ETokenType.DIV_ASSIGN, \"/=\", start);\n break;\n }\n\n token.set(ETokenType.SLASH, \"/\", start);\n break;\n\n case \"%\":\n this.advance(1);\n if (this.getCurChar() === \"=\") {\n this.advance(1);\n\n token.set(ETokenType.MOD_ASSIGN, \"%=\", start);\n break;\n }\n\n token.set(ETokenType.PERCENT, \"%\", start);\n break;\n\n case \"(\":\n this.advance(1);\n\n token.set(ETokenType.LEFT_PAREN, \"(\", start);\n break;\n case \")\":\n this.advance(1);\n\n token.set(ETokenType.RIGHT_PAREN, \")\", start);\n break;\n case \"{\":\n this.advance(1);\n\n token.set(ETokenType.LEFT_BRACE, \"{\", start);\n break;\n case \"}\":\n this.advance(1);\n\n token.set(ETokenType.RIGHT_BRACE, \"}\", start);\n break;\n case \"[\":\n this.advance(1);\n\n token.set(ETokenType.LEFT_BRACKET, \"[\", start);\n break;\n case \"]\":\n this.advance(1);\n\n token.set(ETokenType.RIGHT_BRACKET, \"]\", start);\n break;\n case \".\":\n this.advance(1);\n if (BaseLexer.isDigit(this.getCurCharCode())) {\n return this._scanNumAfterDot();\n }\n\n token.set(ETokenType.DOT, \".\", start);\n break;\n case \",\":\n this.advance(1);\n\n token.set(ETokenType.COMMA, \",\", start);\n break;\n case \":\":\n this.advance(1);\n\n token.set(ETokenType.COLON, \":\", start);\n return token;\n case \";\":\n this.advance(1);\n\n token.set(ETokenType.SEMICOLON, \";\", start);\n break;\n case \"~\":\n this.advance(1);\n\n token.set(ETokenType.TILDE, \"~\", start);\n break;\n case \"?\":\n this.advance(1);\n\n token.set(ETokenType.QUESTION, \"?\", start);\n break;\n case '\"':\n this.advance(1);\n return this._scanStringConst();\n\n default:\n this.throwError(this.getShaderPosition(0), `Unexpected character ${this.getCurChar()}`);\n }\n return token;\n }\n\n private _scanStringConst(): BaseToken {\n const start = this.getShaderPosition();\n const buffer: string[] = [];\n while (this.getCurChar() !== '\"') {\n buffer.push(this.getCurChar());\n this.advance(1);\n }\n this.advance(1);\n const range = ShaderLab.createRange(start, this.getShaderPosition());\n\n const token = BaseToken.pool.get();\n token.set(ETokenType.STRING_CONST, buffer.join(\"\"), range);\n return token;\n }\n\n private _scanNumAfterDot(): BaseToken {\n const buffer = [\".\"];\n while (BaseLexer.isDigit(this.getCurCharCode())) {\n buffer.push(this.getCurChar());\n this.advance(1);\n }\n this._scanFloatSuffix(buffer);\n const token = BaseToken.pool.get();\n token.set(ETokenType.FLOAT_CONSTANT, buffer.join(\"\"), this.getShaderPosition(buffer.length));\n return token;\n }\n\n private _scanUtilBreakLine(outBuffer: string[]): void {\n while (this.getCurChar() !== \"\\n\" && !this.isEnd()) {\n outBuffer.push(this.getCurChar());\n this.advance(1);\n }\n }\n\n private _scanDirectives(): BaseToken {\n const buffer: string[] = [this.getCurChar()];\n const start = this.getShaderPosition();\n this.advance(1);\n while (BaseLexer.isAlpha(this.getCurCharCode())) {\n buffer.push(this.getCurChar());\n this.advance(1);\n }\n const token = BaseToken.pool.get();\n const word = buffer.join(\"\");\n\n // If it is a macro definition or conditional expression, we need to skip the rest of the line\n if (word === \"#define\") {\n this._scanUtilBreakLine(buffer);\n const word = buffer.join(\"\") + \"\\n\";\n token.set(Keyword.MACRO_DEFINE_EXPRESSION, word, start);\n } else {\n const kt = Lexer._lexemeTable[word];\n token.set(kt ?? ETokenType.ID, word, start);\n if (word === \"#if\" || word === \"#elif\") {\n this._needScanMacroConditionExpression = true;\n }\n }\n\n return token;\n }\n\n private _scanMacroConditionExpression(): BaseToken {\n const buffer = new Array<string>();\n const start = this.getShaderPosition();\n this._scanUtilBreakLine(buffer);\n const word = buffer.join(\"\");\n const token = BaseToken.pool.get();\n token.set(Keyword.MACRO_CONDITIONAL_EXPRESSION, word, start);\n return token;\n }\n\n private _scanWord(): BaseToken {\n const buffer: string[] = [this.getCurChar()];\n const start = this.getShaderPosition();\n this.advance(1);\n while (BaseLexer.isAlnum(this.getCurCharCode())) {\n buffer.push(this.getCurChar());\n this.advance(1);\n }\n const token = BaseToken.pool.get();\n const word = buffer.join(\"\");\n const kt = Lexer._lexemeTable[word];\n\n if (this.macroDefineList[word]) {\n token.set(Keyword.MACRO_CALL, word, start);\n } else {\n token.set(kt ?? ETokenType.ID, word, start);\n }\n return token;\n }\n\n private _scanNum(): BaseToken {\n const buffer: string[] = [];\n while (BaseLexer.isDigit(this.getCurCharCode())) {\n buffer.push(this.getCurChar());\n this.advance(1);\n }\n const curChar = this.getCurChar();\n if (curChar === \".\") {\n buffer.push(curChar);\n this.advance(1);\n while (BaseLexer.isDigit(this.getCurCharCode())) {\n buffer.push(this.getCurChar());\n this.advance(1);\n }\n this._scanFloatSuffix(buffer);\n\n const token = BaseToken.pool.get();\n token.set(ETokenType.FLOAT_CONSTANT, buffer.join(\"\"), this.getShaderPosition(buffer.length));\n return token;\n } else {\n if (curChar === \"e\" || curChar === \"E\") {\n this._scanFloatSuffix(buffer);\n\n const token = BaseToken.pool.get();\n token.set(ETokenType.FLOAT_CONSTANT, buffer.join(\"\"), this.getShaderPosition(buffer.length));\n return token;\n } else {\n this._scanIntegerSuffix(buffer);\n\n const token = BaseToken.pool.get();\n token.set(ETokenType.INT_CONSTANT, buffer.join(\"\"), this.getShaderPosition(buffer.length));\n return token;\n }\n }\n }\n\n private _scanFloatSuffix(buffer: string[]): void {\n let curChar = this.getCurChar();\n if (curChar === \"e\" || curChar === \"E\") {\n buffer.push(curChar);\n this.advance(1);\n curChar = this.getCurChar();\n if (curChar === \"+\" || curChar === \"-\") {\n buffer.push(curChar);\n this.advance(1);\n curChar = this.getCurChar();\n }\n if (!BaseLexer.isDigit(this.getCurCharCode()))\n this.throwError(this.getShaderPosition(0), \"lexing error, invalid exponent suffix.\");\n\n do {\n buffer.push(curChar);\n this.advance(1);\n curChar = this.getCurChar();\n } while (BaseLexer.isDigit(this.getCurCharCode()));\n }\n if (curChar === \"f\" || curChar === \"F\") {\n buffer.push(curChar);\n this.advance(1);\n }\n }\n\n private _scanIntegerSuffix(buffer: string[]): void {\n const curChar = this.getCurChar();\n if (curChar === \"u\" || curChar === \"U\") {\n buffer.push(curChar);\n this.advance(1);\n }\n }\n}\n","function _type_of(obj) {\n \"@swc/helpers - typeof\";\n\n return obj && typeof Symbol !== \"undefined\" && obj.constructor === Symbol ? \"symbol\" : typeof obj;\n}\nexport { _type_of as _ };\n","export enum MacroParserToken {\n id,\n line_remain,\n chunk,\n int_constant,\n string_const,\n /** \\>> */\n right_op,\n /** << */\n left_op,\n left_paren,\n right_paren,\n /** \\>= */\n ge,\n /** <= */\n le,\n /** == */\n eq,\n /** != */\n neq,\n /** && */\n and,\n /** || */\n or,\n /** < */\n left_angle,\n /** \\> */\n right_angle,\n /** \\* */\n star,\n /** + */\n plus,\n /** \\- */\n dash,\n /** ! */\n bang,\n /** \\/ */\n slash,\n /** % */\n percent,\n\n EOF = 100\n}\n\nexport enum MacroParserKeyword {\n define = 101,\n undef,\n if,\n ifdef,\n ifndef,\n else,\n elif,\n endif,\n\n defined\n}\n\nexport type MacroParserConstant = boolean | number;\n","import { ShaderRange } from \"../common\";\nimport { BaseToken } from \"../common/BaseToken\";\nimport { ShaderLabUtils } from \"../ShaderLabUtils\";\n// #if _VERBOSE\nimport { GSErrorName } from \"../GSError\";\n// #endif\n\nexport class MacroDefine {\n private _replaceRegex?: RegExp;\n private readonly _argsLexemes?: string[];\n\n get isFunction(): boolean {\n return !!this.args;\n }\n\n constructor(\n public readonly macro: BaseToken,\n public readonly body?: BaseToken,\n public readonly location?: ShaderRange,\n public readonly args?: BaseToken[]\n ) {\n if (args?.length > 0) {\n this._argsLexemes = this.args.map((item) => item.lexeme);\n this._replaceRegex = new RegExp(`\\\\b(${this._argsLexemes.join(\"|\")})\\\\b`, \"g\");\n }\n }\n\n expandFunctionBody(args: string[]): string {\n if (args.length !== this.args?.length) {\n throw ShaderLabUtils.createGSError(\"mismatched function macro\", GSErrorName.PreprocessorError, \"\", this.location);\n }\n\n if (args.length === 0) {\n return this.body.lexeme;\n }\n\n return this.body.lexeme.replace(this._replaceRegex, (m) => {\n return args[this._argsLexemes.indexOf(m)];\n });\n }\n}\n","import { ShaderPosition, ShaderRange } from \"../common\";\n// #if _VERBOSE\nimport PpSourceMap from \"./sourceMap\";\n// #endif\nimport { BaseLexer } from \"../common/BaseLexer\";\nimport { BaseToken, EOF } from \"../common/BaseToken\";\nimport { ShaderLab } from \"../ShaderLab\";\nimport { MacroParserKeyword, MacroParserToken } from \"./constants\";\n\nexport type OnToken = (token: BaseToken, scanner: MacroParserLexer) => void;\n\nexport default class MacroParserLexer extends BaseLexer {\n private static _isPpCharacters(charCode: number): boolean {\n return (\n charCode === 35 || // #\n BaseLexer.isAlnum(charCode) // _, A-Z, a-z, 0-9\n );\n }\n\n private static _lexemeTable = <Record<string, MacroParserKeyword>>{\n \"#define\": MacroParserKeyword.define,\n \"#undef\": MacroParserKeyword.undef,\n \"#if\": MacroParserKeyword.if,\n \"#ifdef\": MacroParserKeyword.ifdef,\n \"#ifndef\": MacroParserKeyword.ifndef,\n \"#else\": MacroParserKeyword.else,\n \"#elif\": MacroParserKeyword.elif,\n \"#endif\": MacroParserKeyword.endif,\n defined: MacroParserKeyword.defined\n };\n\n private macroLvl = 0;\n\n // #if _VERBOSE\n readonly sourceMap = new PpSourceMap();\n readonly file: string;\n readonly blockRange?: ShaderRange;\n // #endif\n\n constructor(\n source: string,\n // #if _VERBOSE\n file = \"__main__\",\n blockRange?: ShaderRange\n // #endif\n ) {\n super(source);\n // #if _VERBOSE\n this.file = file;\n this.blockRange = blockRange;\n // #endif\n }\n\n scanWordsUntilTerminator(terminatorChar: string): BaseToken[] {\n const tokens: BaseToken[] = [];\n while (true) {\n this.skipSpace(true);\n if (BaseLexer.isAlpha(this.getCurCharCode())) {\n tokens.push(this.scanWord());\n } else if (this.getCurChar() === terminatorChar) {\n this.advance(1);\n return tokens;\n } else {\n this.advance(1);\n }\n }\n }\n\n scanWord(): BaseToken {\n // Skip all non-alphabetic characters, primarily used for handling defined(MACRO) syntax\n while (!BaseLexer.isAlpha(this.getCurCharCode()) && !this.isEnd()) {\n this.advance(1);\n }\n\n if (this.isEnd()) {\n return EOF;\n }\n\n const start = this._currentIndex;\n while (BaseLexer.isAlnum(this.getCurCharCode()) && !this.isEnd()) {\n this.advance(1);\n }\n const end = this._currentIndex;\n const word = this._source.slice(start, end);\n if (end === start) {\n this.throwError(this.getShaderPosition(0), \"no word found.\");\n }\n\n const token = BaseToken.pool.get();\n const tokenType = MacroParserLexer._lexemeTable[word] ?? MacroParserToken.id;\n token.set(tokenType, word, this.getShaderPosition(word.length));\n return token;\n }\n\n override scanToken(): BaseToken | undefined {\n this.skipCommentsAndSpace();\n if (this.isEnd()) {\n return;\n }\n const source = this._source;\n let start = this._currentIndex;\n let found = false;\n for (var n = source.length; this._currentIndex < n; ) {\n if (MacroParserLexer._isPpCharacters(source.charCodeAt(this._currentIndex))) {\n this.advance(1);\n found = true;\n } else {\n if (found) {\n break;\n }\n this.advance(1);\n this.skipCommentsAndSpace();\n start = this._currentIndex;\n }\n }\n\n const lexeme = source.slice(start, this._currentIndex);\n const token = BaseToken.pool.get();\n const type = MacroParserLexer._lexemeTable[lexeme] ?? MacroParserToken.id;\n token.set(type, lexeme, this.getShaderPosition(this._currentIndex - start));\n\n if (type === MacroParserKeyword.if || type === MacroParserKeyword.ifdef || type === MacroParserKeyword.ifndef) {\n this.macroLvl++;\n } else if (type === MacroParserKeyword.endif) {\n this.macroLvl--;\n }\n\n return token;\n }\n\n scanQuotedString(): BaseToken<MacroParserToken.string_const> {\n this.skipSpace(true);\n const source = this._source;\n const sourceLength = source.length;\n const start = this.getShaderPosition(0);\n\n let index = this._currentIndex;\n\n // Check for opening quote\n if (source.charCodeAt(index) !== 34) {\n // 34 = '\"'\n this.throwError(start, \"Unexpected char, expected '\\\"'\");\n }\n\n const contentStart = ++index; // Skip opening quote and record start\n\n // Fast scan to closing quote\n while (index < sourceLength && source.charCodeAt(index) !== 34) {\n index++;\n }\n\n if (index >= sourceLength) {\n this.throwError(this.getShaderPosition(0), \"Unexpected char, expected '\\\"'\");\n }\n\n const lexeme = source.slice(contentStart, index);\n this.advance(index + 1 - this._currentIndex); // Skip to after closing quote\n\n const token = BaseToken.pool.get();\n token.set(MacroParserToken.string_const, lexeme, start);\n return token;\n }\n\n scanToChar(char: string) {\n const source = this._source;\n while (source[this._currentIndex] !== char && !this.isEnd()) {\n this.advance(1);\n }\n }\n\n scanMacroBranchBody(): {\n body: BaseToken<MacroParserToken.chunk>;\n nextDirective: BaseToken;\n } {\n const shaderPosition = this.getShaderPosition(0);\n const startLevel = this.macroLvl;\n\n let nextDirective = this.scanToken()!;\n while (true) {\n const { type } = nextDirective;\n if (type === MacroParserKeyword.endif && startLevel - 1 === this.macroLvl) {\n break;\n } else if (\n (type === MacroParserKeyword.elif || type === MacroParserKeyword.else) &&\n startLevel === this.macroLvl\n ) {\n break;\n }\n nextDirective = this.scanToken()!;\n }\n\n const lexeme = this._source.slice(shaderPosition.index, this._currentIndex - nextDirective.lexeme.length - 1);\n const body = BaseToken.pool.get();\n body.set(MacroParserToken.chunk, lexeme, shaderPosition);\n return { body, nextDirective };\n }\n\n scanPairedBlock(lc: string, rc: string): void {\n this.scanToChar(lc);\n let level = 0;\n const source = this._source;\n\n do {\n const curChar = source[this._currentIndex];\n\n if (curChar === lc) {\n level++;\n } else if (curChar === rc) {\n level--;\n }\n this.advance(1);\n } while (level > 0);\n }\n\n /**\n * @returns end ShaderPosition\n */\n scanRemainMacro(): ShaderPosition {\n const startLvl = this.macroLvl;\n let directive = this.scanToken()!;\n while (!this.isEnd() && (directive.type !== MacroParserKeyword.endif || startLvl - 1 !== this.macroLvl)) {\n directive = this.scanToken()!;\n }\n return this.getShaderPosition(0);\n }\n\n peekNonSpace() {\n let current = this._currentIndex;\n while (/\\s/.test(this._source[current])) {\n current += 1;\n }\n return this._source[current];\n }\n\n scanInteger() {\n const start = this._currentIndex;\n while (BaseLexer.isDigit(this.getCurCharCode())) {\n this.advance(1);\n }\n if (this._currentIndex === start) {\n this.throwError(this.getShaderPosition(0), \"no integer found\");\n }\n const integer = this._source.slice(start, this._currentIndex);\n\n const token = BaseToken.pool.get();\n token.set(MacroParserToken.int_constant, integer, this.getShaderPosition(0));\n return token;\n }\n\n scanMacroBody(): BaseToken<MacroParserToken.line_remain> {\n this.skipSpace(false);\n let lexeme = \"\";\n const source = this._source;\n const sourceLength = source.length;\n\n const start = this.getShaderPosition(0);\n while (this._currentIndex < sourceLength) {\n const charCode = source.charCodeAt(this._currentIndex);\n\n // Check for line break (terminates macro definition), break when encounter \"\\n\"\n if (charCode === 10) {\n break;\n }\n\n // Check for comments (both single-line and multi-line)\n if (charCode === 47) {\n const nextIndex = this._currentIndex + 1;\n if (nextIndex < sourceLength) {\n const nextCharCode = source.charCodeAt(nextIndex);\n\n // Single-line comment (terminates macro definition), break when encounter \"//\"\n if (nextCharCode === 47) {\n break;\n }\n\n // Multi-line comment (skip but don't terminate)\n if (nextCharCode === 42) {\n this.advance(2); // Skip \"/*\"\n\n // Skip until end of multi-line comment\n while (this._currentIndex + 1 < sourceLength) {\n const currentIndex = this._currentIndex;\n if (source.charCodeAt(currentIndex) === 42 && source.charCodeAt(currentIndex + 1) === 47) {\n this.advance(2); // Skip \"*/\n break;\n }\n this.advance(1);\n }\n\n lexeme += \" \"; // Replace comment with space\n continue;\n }\n }\n }\n\n // Accumulate useful character\n lexeme += source[this._currentIndex];\n this.advance(1);\n }\n\n if (lexeme === \"\") {\n return null;\n }\n\n const valueToken = BaseToken.pool.get();\n valueToken.set(MacroParserToken.line_remain, lexeme, ShaderLab.createRange(start, this.getShaderPosition(0)));\n return valueToken;\n }\n}\n","import { ExpandSegment } from \"./MacroParser\";\n// #if _VERBOSE\nimport PpSourceMap, { MapRange } from \"./sourceMap\";\n// #endif\n\nexport class PpUtils {\n static expand(\n segments: ExpandSegment[],\n source: string,\n // #if _VERBOSE\n sourceMap?: PpSourceMap\n //#endif\n ) {\n const ret: string[] = [];\n let startIdx = 0;\n let generatedIdx = 0;\n\n for (const seg of segments) {\n const originSlice = source.slice(startIdx, seg.rangeInBlock.start.index);\n ret.push(originSlice, seg.replace);\n\n const generatedIdxEnd = generatedIdx + originSlice.length + seg.replace.length;\n\n // #if _VERBOSE\n const mapRange = new MapRange(seg.block, seg.rangeInBlock, {\n start: generatedIdx + originSlice.length,\n end: generatedIdxEnd\n });\n sourceMap?.addMapRange(mapRange);\n // #endif\n\n startIdx = seg.rangeInBlock.end.index;\n generatedIdx = generatedIdxEnd;\n }\n ret.push(source.slice(startIdx));\n 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 { ETokenType } from \"../common\";\nimport { NoneTerminal, Terminal } from \"../parser/GrammarSymbol\";\nimport Production from \"./Production\";\nimport GrammarUtils from \"./Utils\";\n\nexport default class StateItem {\n static _id = 0;\n\n readonly production: Production;\n readonly position: number;\n readonly lookaheadSet: Set<Terminal>;\n readonly id: number;\n\n _needReInfer = true;\n get needReInfer() {\n return this._needReInfer;\n }\n set needReInfer(v: boolean) {\n this._needReInfer = v;\n }\n\n get curSymbol() {\n return this.production.derivation[this.position];\n }\n get nextSymbol() {\n return this.production.derivation[this.position + 1];\n }\n\n constructor(production: Production, position: number, lookahead: Iterable<Terminal>) {\n this.production = production;\n this.position = position;\n this.lookaheadSet = new Set();\n for (const la of lookahead) {\n this.lookaheadSet.add(la);\n }\n this.id = StateItem._id++;\n }\n\n addLookahead(ts: Iterable<Terminal>) {\n for (const t of ts) {\n if (this.lookaheadSet.has(t)) continue;\n this.lookaheadSet.add(t);\n this.needReInfer = true;\n }\n }\n\n symbolByOffset(offset: number) {\n return this.production.derivation[this.position + offset];\n }\n\n canReduce() {\n if (this.position > this.production.derivation.length - 1) return true;\n else {\n for (let i = this.position; i < this.production.derivation.length; i++) {\n if (this.production.derivation[i] !== ETokenType.EPSILON) return false;\n }\n return true;\n }\n }\n\n advance() {\n // #if _VERBOSE\n if (this.canReduce()) throw `Error: advance reduce-able parsing state item`;\n // #endif\n return new StateItem(this.production, this.position + 1, this.lookaheadSet);\n }\n\n // #if _VERBOSE\n toString() {\n const coreItem = this.production.derivation.map((item) => GrammarUtils.toString(item));\n coreItem[this.position] = \".\" + (coreItem[this.position] ?? \"\");\n\n return `${NoneTerminal[this.production.goal]} :=> ${coreItem.join(\"|\")} ;${Array.from(this.lookaheadSet)\n .map((item) => GrammarUtils.toString(item))\n .join(\"/\")}`;\n }\n // #endif\n}\n","import { Terminal } from \"../parser/GrammarSymbol\";\nimport Production from \"./Production\";\nimport StateItem from \"./StateItem\";\n\nexport default class State {\n static closureMap: Map<string /** state mapKey */, State> = new Map();\n static pool: Map<number, State> = new Map();\n static _id = 0;\n\n readonly id: number;\n readonly cores: Set<StateItem>;\n private _items: Set<StateItem>;\n get items() {\n return this._items;\n }\n\n closured = false;\n get needReInfer() {\n for (const core of this.cores) {\n if (core.needReInfer) return true;\n }\n return false;\n }\n\n private _stateItemPool: Map<string /** Map ID */, StateItem> = new Map();\n\n static create(cores: StateItem[]) {\n const cacheKey = this.getMapKey(cores);\n const state = this.closureMap.get(cacheKey);\n if (state) {\n for (const core of cores) {\n // merge lookahead\n state.createStateItem(core.production, core.position, core.lookaheadSet);\n }\n return state;\n }\n\n const newState = new State(cores);\n this.closureMap.set(cacheKey, newState);\n return newState;\n }\n\n // TODO: any optimization?\n static getMapKey(cores: StateItem[]) {\n return cores.map((item) => `${item.production.id},${item.position}`).join(\";\");\n }\n\n private constructor(cores: Iterable<StateItem>) {\n this.id = State._id++;\n this._items = new Set([...cores]);\n this.cores = new Set([...cores]);\n for (const it of cores) {\n const itemMapKey = this.getStateItemMapKey(it.production, it.position);\n this._stateItemPool.set(itemMapKey, it);\n }\n State.pool.set(this.id, this);\n }\n\n // TODO: any optimization?\n getStateItemMapKey(production: Production, position: number) {\n return `${production.id},${position}`;\n }\n\n createStateItem(production: Production, position: number, lookaheadSet: Iterable<Terminal> = new Set()) {\n const mapId = this.getStateItemMapKey(production, position);\n const item = this._stateItemPool.get(mapId);\n if (item) {\n for (const la of lookaheadSet) {\n if (item.lookaheadSet.has(la)) continue;\n item.lookaheadSet.add(la);\n item.needReInfer = true;\n }\n return item;\n }\n const newItem = new StateItem(production, position, lookaheadSet);\n this._stateItemPool.set(mapId, newItem);\n return newItem;\n }\n}\n","import { ETokenType, ShaderRange } from \"../common\";\nimport { ASTNode, TreeNode } from \"../parser/AST\";\nimport { TranslationRule } from \"../parser/SemanticAnalyzer\";\nimport { NoneTerminal, GrammarSymbol } from \"../parser/GrammarSymbol\";\nimport Production from \"./Production\";\nimport { ActionInfo, EAction } from \"./types\";\nimport { ShaderLab } from \"../ShaderLab\";\nimport { ClearableObjectPool, IPoolElement } from \"@galacean/engine\";\nimport { NodeChild } from \"../parser/types\";\nimport { Keyword } from \"../common/enums/Keyword\";\n\nexport default class GrammarUtils {\n static isTerminal(sm: GrammarSymbol) {\n return sm < NoneTerminal.START;\n }\n\n static toString(sm: GrammarSymbol) {\n if (this.isTerminal(sm)) {\n return ETokenType[sm] ?? Keyword[sm];\n }\n return NoneTerminal[sm];\n }\n\n static createProductionWithOptions(\n goal: NoneTerminal,\n options: GrammarSymbol[][],\n /** the ast node */\n astTypePool?: ClearableObjectPool<\n { set: (loc: ShaderRange, children: NodeChild[]) => void } & IPoolElement & TreeNode\n >\n ) {\n const ret: [GrammarSymbol[], TranslationRule | undefined][] = [];\n for (const opt of options) {\n ret.push([\n [goal, ...opt],\n function (sa, ...children) {\n if (!children[0]) return;\n const start = children[0].location.start;\n const end = children[children.length - 1].location.end;\n const location = ShaderLab.createRange(start, end);\n ASTNode.get(astTypePool ?? ASTNode.TrivialNode.pool, sa, location, children);\n }\n ]);\n }\n return ret;\n }\n\n static addMapSetItem<K, T>(map: Map<K, Set<T>>, k: K, v: T) {\n const set = map.get(k) ?? new Set();\n set.add(v);\n map.set(k, set);\n }\n\n static isSubSet<T>(sa: Set<T>, sb: Set<T>) {\n for (const item of sa) {\n if (!sb.has(item)) return false;\n }\n return true;\n }\n\n static isActionEqual(a: ActionInfo, b: ActionInfo) {\n return a.action === b.action && a.target === b.target;\n }\n\n // #if _VERBOSE\n static printAction(actionInfo: ActionInfo) {\n const production = Production.pool.get(actionInfo.target!);\n return `<Action: ${EAction[actionInfo.action]} -> ${this.printProduction(production)}>`;\n }\n\n static printProduction(production: Production) {\n const deriv = production.derivation.map((gs) => GrammarUtils.toString(gs)).join(\"|\");\n return `${NoneTerminal[production.goal]} :=> ${deriv}`;\n }\n // #endif\n}\n","import { NoneTerminal, Terminal } from \"../parser/GrammarSymbol\";\n\nexport type StateActionTable = Map<number /** state ID */, ActionTable>;\nexport type ActionTable = Map<Terminal, ActionInfo>;\nexport type StateGotoTable = Map<number /** state ID */, GotoTable>;\nexport type GotoTable = Map<NoneTerminal, number /** state ID */>;\n\nexport enum EAction {\n Shift = 0,\n Reduce,\n Accept\n}\n\nexport interface ActionInfo {\n action: EAction;\n target?: number;\n}\n","import { Logger } from \"@galacean/engine\";\nimport { ETokenType } from \"../common\";\nimport { Keyword } from \"../common/enums/Keyword\";\nimport { Grammar } from \"../parser/Grammar\";\nimport { GrammarSymbol, NoneTerminal, Terminal } from \"../parser/GrammarSymbol\";\nimport State from \"./State\";\nimport StateItem from \"./StateItem\";\nimport { default as GrammarUtils, default as Utils } from \"./Utils\";\nimport { ActionInfo, ActionTable, EAction, GotoTable, StateActionTable, StateGotoTable } from \"./types\";\n\n/**\n * The [LALR1](https://web.stanford.edu/class/archive/cs/cs143/cs143.1128/handouts/140%20LALR%20Parsing.pdf) Parser generator\n */\nexport class LALR1 {\n readonly firstSetMap: Map<NoneTerminal, Set<Terminal>> = new Map();\n readonly followSetMap: Map<NoneTerminal, Set<Terminal>> = new Map();\n\n readonly actionTable: StateActionTable = new Map();\n readonly gotoTable: StateGotoTable = new Map();\n private grammar: Grammar;\n\n /** For circle detect */\n private _firstSetNTStack: NoneTerminal[] = [];\n\n constructor(grammar: Grammar) {\n this.grammar = grammar;\n }\n\n generate() {\n this.computeFirstSet();\n this.buildStateTable();\n }\n\n private buildStateTable() {\n const startStateItemCore = [new StateItem(this.grammar.productions[0], 0, [ETokenType.EOF])];\n const startState = State.create(startStateItemCore);\n this._extendState(startState);\n }\n\n private _extendState(state: State) {\n if (!state.needReInfer) return;\n this._closure(state);\n const newStates = this._inferNextState(state);\n for (const ns of newStates) {\n this._extendState(ns);\n }\n }\n\n private _closure(state: State) {\n for (const core of state.cores) {\n if (!core.canReduce()) {\n this._extendStateItem(state, core);\n }\n }\n state.closured = true;\n return state;\n }\n\n private _extendStateItem(state: State, item: StateItem) {\n if (GrammarUtils.isTerminal(item.curSymbol)) return;\n\n const productionList = this.grammar.getProductionList(<NoneTerminal>item.curSymbol);\n\n if (item.nextSymbol) {\n let newLookaheadSet = new Set<Terminal>();\n let lastFirstSet: Set<Terminal> | undefined;\n let terminalExist = false;\n // when A :=> a.BC, a; ==》 B :=> .xy, First(Ca)\n // newLookAhead = First(Ca)\n for (let i = 1, nextSymbol = item.symbolByOffset(1); !!nextSymbol; nextSymbol = item.symbolByOffset(++i)) {\n if (GrammarUtils.isTerminal(nextSymbol)) {\n newLookaheadSet.add(<Terminal>nextSymbol);\n terminalExist = true;\n break;\n }\n lastFirstSet = this.firstSetMap.get(<NoneTerminal>nextSymbol)!;\n for (const t of lastFirstSet) {\n newLookaheadSet.add(t);\n }\n if (!lastFirstSet.has(ETokenType.EPSILON)) break;\n }\n if (!terminalExist && lastFirstSet?.has(ETokenType.EPSILON)) {\n for (const t of item.lookaheadSet) {\n newLookaheadSet.add(t);\n }\n }\n\n for (const production of productionList) {\n const newItem = state.createStateItem(production, 0);\n if (!state.items.has(newItem) || !Utils.isSubSet(newLookaheadSet, newItem.lookaheadSet)) {\n state.items.add(newItem);\n newItem.addLookahead(newLookaheadSet);\n this._extendStateItem(state, newItem);\n }\n }\n } else {\n for (const production of productionList) {\n const newItem = state.createStateItem(production, 0);\n if (!state.items.has(newItem) || !Utils.isSubSet(item.lookaheadSet, newItem.lookaheadSet)) {\n state.items.add(newItem);\n newItem.addLookahead(item.lookaheadSet);\n this._extendStateItem(state, newItem);\n }\n }\n }\n }\n\n private _inferNextState(state: State): Set<State> {\n const coreMap: Map<GrammarSymbol, Set<StateItem>> = new Map();\n const stateActionTable: ActionTable = this.actionTable.get(state.id) ?? new Map();\n const stateGotoTable: GotoTable = this.gotoTable.get(state.id) ?? new Map();\n\n this.actionTable.set(state.id, stateActionTable);\n this.gotoTable.set(state.id, stateGotoTable);\n\n for (const stateItem of state.items) {\n if (stateItem.canReduce()) {\n let action: ActionInfo;\n if (stateItem.production.goal !== NoneTerminal.START) {\n action = {\n action: EAction.Reduce,\n target: stateItem.production.id\n };\n } else {\n action = { action: EAction.Accept };\n }\n\n for (const t of stateItem.lookaheadSet) {\n this._addAction(stateActionTable, t, action);\n }\n } else {\n const nextItem = stateItem.advance();\n Utils.addMapSetItem(coreMap, stateItem.curSymbol, nextItem);\n }\n\n stateItem.needReInfer = false;\n }\n\n const newStates = new Set<State>();\n for (const [gs, cores] of coreMap.entries()) {\n const newState = State.create(Array.from(cores));\n if (GrammarUtils.isTerminal(gs)) {\n this._addAction(stateActionTable, <Terminal>gs, {\n action: EAction.Shift,\n target: newState.id\n });\n } else {\n stateGotoTable.set(<NoneTerminal>gs, newState.id);\n }\n\n newStates.add(newState);\n }\n\n return newStates;\n }\n\n /** Resolve shift-reduce/reduce-reduce conflict detect */\n private _addAction(table: ActionTable, terminal: Terminal, action: ActionInfo) {\n const exist = table.get(terminal);\n if (exist && !Utils.isActionEqual(exist, action)) {\n // Resolve dangling else ambiguity\n if (terminal === Keyword.ELSE && exist.action === EAction.Shift && action.action === EAction.Reduce) {\n return;\n } else {\n // #if _VERBOSE\n Logger.warn(\n `conflict detect: <Terminal ${GrammarUtils.toString(terminal)}> \\n`,\n Utils.printAction(exist),\n \"\\n\",\n Utils.printAction(action)\n );\n // #endif\n }\n }\n table.set(terminal, action);\n }\n\n // https://people.cs.pitt.edu/~jmisurda/teaching/cs1622/handouts/cs1622-first_and_follow.pdf\n private computeFirstSet() {\n for (const production of this.grammar.productions.slice(1)) {\n this._computeFirstSetForNT(production.goal);\n }\n }\n\n private _computeFirstSetForNT(NT: NoneTerminal) {\n // circle detect\n const idx = this._firstSetNTStack.findIndex((item) => item === NT);\n if (idx !== -1) {\n const computingFS = this.firstSetMap.get(NT)!;\n const len = this._firstSetNTStack.length;\n for (let i = len - 1; i > idx; i--) {\n const curNT = this._firstSetNTStack[i];\n this.firstSetMap.set(curNT, computingFS);\n }\n return computingFS;\n }\n this._firstSetNTStack.push(NT);\n\n const productionList = this.grammar.getProductionList(NT);\n const firstSet = new Set<Terminal>();\n this.firstSetMap.set(NT, firstSet);\n if (this.grammar.isNullableNT(NT)) firstSet.add(ETokenType.EPSILON);\n\n for (const production of productionList) {\n let i = 0;\n for (; i < production.derivation.length; i++) {\n const gs = production.derivation[i];\n if (GrammarUtils.isTerminal(gs)) {\n firstSet.add(<Terminal>gs);\n break;\n }\n\n const succeedFirstSet = this._computeFirstSetForNT(<NoneTerminal>gs);\n\n for (const item of succeedFirstSet) {\n if (item !== ETokenType.EPSILON) firstSet.add(item);\n }\n if (!this.grammar.isNullableNT(<NoneTerminal>gs)) break;\n }\n if (i === production.derivation.length) firstSet.add(ETokenType.EPSILON);\n }\n\n this._firstSetNTStack.pop();\n return firstSet;\n }\n}\n","import { NoneTerminal, GrammarSymbol } from \"../parser/GrammarSymbol\";\n\nexport default class Production {\n private static _id = 0;\n static pool: Map<number, Production> = new Map();\n\n readonly goal: NoneTerminal;\n readonly derivation: GrammarSymbol[];\n readonly id: number;\n\n constructor(goal: NoneTerminal, derivation: GrammarSymbol[]) {\n this.goal = goal;\n this.derivation = derivation;\n this.id = Production._id++;\n Production.pool.set(this.id, this);\n }\n}\n","import { ETokenType } from \"../common\";\nimport { NoneTerminal, GrammarSymbol } from \"./GrammarSymbol\";\nimport Production from \"../lalr/Production\";\n\nexport class Grammar {\n readonly productions: Production[];\n\n readonly startSymbol: NoneTerminal;\n\n static create(start: NoneTerminal, productions: GrammarSymbol[][]) {\n const _ps = productions.map((gsl) => {\n return new Production(<NoneTerminal>gsl[0], gsl.slice(1));\n });\n return new Grammar(start, _ps);\n }\n\n constructor(start: NoneTerminal, productions: Production[]) {\n this.startSymbol = start;\n productions.unshift(new Production(NoneTerminal.START, [start]));\n this.productions = productions;\n }\n\n getProductionList(nonTerminal: NoneTerminal) {\n return this.productions.filter((item) => item.goal === nonTerminal);\n }\n\n isNullableNT(NT: NoneTerminal) {\n return this.productions.find((item) => item.goal === NT && item.derivation[0] === ETokenType.EPSILON);\n }\n\n getProductionByID(pid: number) {\n return Production.pool.get(pid);\n }\n}\n","// Context Free Grammar of Galacean ShaderLab\nimport { ETokenType } from \"../common\";\nimport { Keyword } from \"../common/enums/Keyword\";\nimport { ASTNode } from \"../parser/AST\";\nimport { Grammar } from \"../parser/Grammar\";\nimport { GrammarSymbol, NoneTerminal } from \"../parser/GrammarSymbol\";\nimport SemanticAnalyzer, { TranslationRule } from \"../parser/SemanticAnalyzer\";\nimport GrammarUtils from \"./Utils\";\n\nconst productionAndRules: [GrammarSymbol[], TranslationRule | undefined][] = [\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.gs_shader_program,\n [[NoneTerminal.global_declaration], [NoneTerminal.gs_shader_program, NoneTerminal.global_declaration]],\n ASTNode.GLShaderProgram.pool\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.global_declaration,\n [\n [NoneTerminal.precision_specifier],\n [NoneTerminal.variable_declaration_statement],\n [NoneTerminal.struct_specifier],\n [NoneTerminal.function_definition],\n [NoneTerminal.global_macro_if_statement],\n [NoneTerminal.macro_undef],\n [Keyword.MACRO_DEFINE_EXPRESSION]\n ],\n ASTNode.GlobalDeclaration.pool\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.macro_call_symbol,\n [[Keyword.MACRO_CALL]],\n ASTNode.MacroCallSymbol.pool\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.macro_call_function,\n [\n [NoneTerminal.macro_call_symbol, ETokenType.LEFT_PAREN, ETokenType.RIGHT_PAREN],\n [\n NoneTerminal.macro_call_symbol,\n ETokenType.LEFT_PAREN,\n NoneTerminal.function_call_parameter_list,\n ETokenType.RIGHT_PAREN\n ]\n ],\n ASTNode.MacroCallFunction.pool\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.macro_undef,\n [\n [Keyword.MACRO_UNDEF, ETokenType.ID],\n [Keyword.MACRO_UNDEF, Keyword.MACRO_CALL]\n ],\n ASTNode.MacroUndef.pool\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.macro_push_context,\n [\n [Keyword.MACRO_IF, Keyword.MACRO_CONDITIONAL_EXPRESSION],\n [Keyword.MACRO_IFDEF, ETokenType.ID],\n [Keyword.MACRO_IFNDEF, ETokenType.ID],\n [Keyword.MACRO_IFDEF, NoneTerminal.macro_call_symbol],\n [Keyword.MACRO_IFNDEF, NoneTerminal.macro_call_symbol]\n ],\n ASTNode.MacroPushContext.pool\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.macro_pop_context,\n [[Keyword.MACRO_ENDIF]],\n ASTNode.MacroPopContext.pool\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.macro_elif_expression,\n [[Keyword.MACRO_ELIF, Keyword.MACRO_CONDITIONAL_EXPRESSION]],\n ASTNode.MacroElifExpression.pool\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.macro_else_expression,\n [[Keyword.MACRO_ELSE]],\n ASTNode.MacroElseExpression.pool\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.global_macro_declaration,\n [[NoneTerminal.global_declaration], [NoneTerminal.global_macro_declaration, NoneTerminal.global_declaration]],\n ASTNode.GlobalMacroDeclaration.pool\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.global_macro_if_statement,\n [\n [NoneTerminal.macro_push_context, NoneTerminal.global_macro_declaration, NoneTerminal.global_macro_branch],\n [NoneTerminal.macro_push_context, NoneTerminal.global_macro_branch]\n ],\n ASTNode.GlobalMacroIfStatement.pool\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.global_macro_branch,\n [\n [NoneTerminal.macro_pop_context],\n [NoneTerminal.macro_elif_expression, NoneTerminal.global_macro_declaration, NoneTerminal.global_macro_branch],\n [NoneTerminal.macro_else_expression, NoneTerminal.global_macro_declaration, NoneTerminal.macro_pop_context],\n [NoneTerminal.macro_elif_expression, NoneTerminal.global_macro_branch],\n [NoneTerminal.macro_else_expression, NoneTerminal.macro_pop_context]\n ],\n ASTNode.GlobalMacroBranch.pool\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.variable_declaration,\n [\n [NoneTerminal.fully_specified_type, ETokenType.ID],\n [NoneTerminal.fully_specified_type, ETokenType.ID, NoneTerminal.array_specifier],\n [NoneTerminal.fully_specified_type, ETokenType.ID, ETokenType.EQUAL, NoneTerminal.initializer]\n ],\n ASTNode.VariableDeclaration.pool\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.variable_declaration_list,\n [\n [NoneTerminal.variable_declaration],\n [NoneTerminal.variable_declaration_list, ETokenType.COMMA, ETokenType.ID],\n [NoneTerminal.variable_declaration_list, ETokenType.COMMA, ETokenType.ID, NoneTerminal.array_specifier]\n ],\n ASTNode.VariableDeclarationList.pool\n ),\n\n ...GrammarUtils.createProductionWithOptions(NoneTerminal.variable_declaration_statement, [\n [NoneTerminal.variable_declaration_list, ETokenType.SEMICOLON]\n ]),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.ext_builtin_type_specifier_nonarray,\n [\n [Keyword.VOID],\n [Keyword.FLOAT],\n [Keyword.BOOL],\n [Keyword.INT],\n [Keyword.UINT],\n [Keyword.VEC2],\n [Keyword.VEC3],\n [Keyword.VEC4],\n [Keyword.BVEC2],\n [Keyword.BVEC3],\n [Keyword.BVEC4],\n [Keyword.IVEC2],\n [Keyword.IVEC3],\n [Keyword.IVEC4],\n [Keyword.UVEC2],\n [Keyword.UVEC3],\n [Keyword.UVEC4],\n [Keyword.MAT2],\n [Keyword.MAT3],\n [Keyword.MAT4],\n [Keyword.MAT2X3],\n [Keyword.MAT2X4],\n [Keyword.MAT3X2],\n [Keyword.MAT3X4],\n [Keyword.MAT4X2],\n [Keyword.MAT4X3],\n [Keyword.SAMPLER2D],\n [Keyword.SAMPLER3D],\n [Keyword.SAMPLER_CUBE],\n [Keyword.SAMPLER2D_SHADOW],\n [Keyword.SAMPLER_CUBE_SHADOW],\n [Keyword.SAMPLER2D_ARRAY],\n [Keyword.SAMPLER2D_ARRAY_SHADOW],\n [Keyword.I_SAMPLER2D],\n [Keyword.I_SAMPLER3D],\n [Keyword.I_SAMPLER_CUBE],\n [Keyword.I_SAMPLER2D_ARRAY],\n [Keyword.U_SAMPLER2D],\n [Keyword.U_SAMPLER3D],\n [Keyword.U_SAMPLER_CUBE],\n [Keyword.U_SAMPLER2D_ARRAY]\n ],\n ASTNode.ExtBuiltinTypeSpecifierNonArray.pool\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.type_specifier_nonarray,\n [[ETokenType.ID], [NoneTerminal.ext_builtin_type_specifier_nonarray]],\n ASTNode.TypeSpecifierNonArray.pool\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.fully_specified_type,\n [[NoneTerminal.type_specifier], [NoneTerminal.type_qualifier, NoneTerminal.type_specifier]],\n ASTNode.FullySpecifiedType.pool\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.type_specifier,\n [\n [NoneTerminal.type_specifier_nonarray],\n [NoneTerminal.ext_builtin_type_specifier_nonarray, NoneTerminal.array_specifier]\n ],\n ASTNode.TypeSpecifier.pool\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.type_qualifier,\n [[NoneTerminal.single_type_qualifier], [NoneTerminal.type_qualifier, NoneTerminal.single_type_qualifier]],\n ASTNode.TypeQualifier.pool\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.single_type_qualifier,\n [\n [NoneTerminal.storage_qualifier],\n [NoneTerminal.precision_qualifier],\n [NoneTerminal.interpolation_qualifier],\n [NoneTerminal.invariant_qualifier],\n [Keyword.PRECISE]\n ],\n ASTNode.SingleTypeQualifier.pool\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.storage_qualifier,\n [[Keyword.CONST], [Keyword.IN], [Keyword.INOUT], [Keyword.OUT], [Keyword.CENTROID]],\n // #if _VERBOSE\n ASTNode.StorageQualifier.pool\n // #endif\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.interpolation_qualifier,\n [[Keyword.SMOOTH], [Keyword.FLAT]],\n // #if _VERBOSE\n ASTNode.InterpolationQualifier.pool\n // #endif\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.invariant_qualifier,\n [[Keyword.INVARIANT]],\n // #if _VERBOSE\n ASTNode.InvariantQualifier.pool\n // #endif\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.precision_qualifier,\n [[Keyword.HIGHP], [Keyword.MEDIUMP], [Keyword.LOWP]],\n // #if _VERBOSE\n ASTNode.PrecisionQualifier.pool\n // #endif\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.struct_specifier,\n [\n [\n Keyword.STRUCT,\n ETokenType.ID,\n ETokenType.LEFT_BRACE,\n NoneTerminal.struct_declaration_list,\n ETokenType.RIGHT_BRACE,\n ETokenType.SEMICOLON\n ],\n [\n Keyword.STRUCT,\n ETokenType.LEFT_BRACE,\n NoneTerminal.struct_declaration_list,\n ETokenType.RIGHT_BRACE,\n ETokenType.SEMICOLON\n ]\n ],\n ASTNode.StructSpecifier.pool\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.struct_declaration_list,\n [[NoneTerminal.struct_declaration], [NoneTerminal.struct_declaration_list, NoneTerminal.struct_declaration]],\n ASTNode.StructDeclarationList.pool\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.struct_declaration,\n [\n [NoneTerminal.type_specifier, NoneTerminal.struct_declarator_list, ETokenType.SEMICOLON],\n [\n NoneTerminal.type_qualifier,\n NoneTerminal.type_specifier,\n NoneTerminal.struct_declarator_list,\n ETokenType.SEMICOLON\n ],\n [\n NoneTerminal.layout_qualifier,\n NoneTerminal.type_specifier,\n NoneTerminal.struct_declarator,\n ETokenType.SEMICOLON\n ],\n [NoneTerminal.macro_struct_declaration]\n ],\n ASTNode.StructDeclaration.pool\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.macro_struct_declaration,\n [\n [NoneTerminal.macro_push_context, NoneTerminal.struct_declaration_list, NoneTerminal.macro_struct_branch],\n [NoneTerminal.macro_push_context, NoneTerminal.macro_struct_branch]\n ],\n ASTNode.MacroStructDeclaration.pool\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.macro_struct_branch,\n [\n [NoneTerminal.macro_pop_context],\n [NoneTerminal.macro_elif_expression, NoneTerminal.struct_declaration_list, NoneTerminal.macro_struct_branch],\n [NoneTerminal.macro_else_expression, NoneTerminal.struct_declaration_list, NoneTerminal.macro_pop_context],\n [NoneTerminal.macro_elif_expression, NoneTerminal.macro_struct_branch],\n [NoneTerminal.macro_else_expression, NoneTerminal.macro_pop_context]\n ],\n ASTNode.MacroStructBranch.pool\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.layout_qualifier,\n [\n [\n Keyword.LAYOUT,\n ETokenType.LEFT_PAREN,\n Keyword.LOCATION,\n ETokenType.EQUAL,\n ETokenType.INT_CONSTANT,\n ETokenType.RIGHT_PAREN\n ]\n ],\n ASTNode.LayoutQualifier.pool\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.struct_declarator_list,\n [\n [NoneTerminal.struct_declarator],\n [NoneTerminal.struct_declarator_list, ETokenType.COMMA, NoneTerminal.struct_declarator]\n ],\n ASTNode.StructDeclaratorList.pool\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.struct_declarator,\n [[ETokenType.ID], [ETokenType.ID, NoneTerminal.array_specifier]],\n ASTNode.StructDeclarator.pool\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.array_specifier,\n [\n [ETokenType.LEFT_BRACKET, ETokenType.RIGHT_BRACKET],\n [ETokenType.LEFT_BRACKET, NoneTerminal.integer_constant_expression, ETokenType.RIGHT_BRACKET]\n ],\n ASTNode.ArraySpecifier.pool\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.integer_constant_expression_operator,\n [[ETokenType.PLUS], [ETokenType.DASH], [ETokenType.STAR], [ETokenType.SLASH], [ETokenType.PERCENT]],\n ASTNode.IntegerConstantExpressionOperator.pool\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.integer_constant_expression,\n [\n [NoneTerminal.variable_identifier],\n [ETokenType.INT_CONSTANT],\n [\n NoneTerminal.integer_constant_expression,\n NoneTerminal.integer_constant_expression_operator,\n ETokenType.INT_CONSTANT\n ],\n [\n NoneTerminal.integer_constant_expression,\n NoneTerminal.integer_constant_expression_operator,\n NoneTerminal.variable_identifier\n ]\n ],\n ASTNode.IntegerConstantExpression.pool\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.conditional_expression,\n [\n [NoneTerminal.logical_or_expression],\n [\n NoneTerminal.logical_or_expression,\n ETokenType.QUESTION,\n NoneTerminal.expression,\n ETokenType.COLON,\n NoneTerminal.assignment_expression\n ]\n ],\n // #if _VERBOSE\n ASTNode.ConditionalExpression.pool\n // #endif\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.logical_or_expression,\n [\n [NoneTerminal.logical_xor_expression],\n [NoneTerminal.logical_or_expression, ETokenType.OR_OP, NoneTerminal.logical_xor_expression]\n ],\n // #if _VERBOSE\n ASTNode.LogicalOrExpression.pool\n // #endif\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.logical_xor_expression,\n [\n [NoneTerminal.logical_and_expression],\n [NoneTerminal.logical_xor_expression, ETokenType.XOR_OP, NoneTerminal.logical_and_expression]\n ],\n // #if _VERBOSE\n ASTNode.LogicalXorExpression.pool\n // #endif\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.logical_and_expression,\n [\n [NoneTerminal.inclusive_or_expression],\n [NoneTerminal.logical_and_expression, ETokenType.AND_OP, NoneTerminal.inclusive_or_expression]\n ],\n // #if _VERBOSE\n ASTNode.LogicalAndExpression.pool\n // #endif\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.inclusive_or_expression,\n [\n [NoneTerminal.exclusive_or_expression],\n [NoneTerminal.inclusive_or_expression, ETokenType.VERTICAL_BAR, NoneTerminal.exclusive_or_expression]\n ],\n // #if _VERBOSE\n ASTNode.InclusiveOrExpression.pool\n // #endif\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.exclusive_or_expression,\n [\n [NoneTerminal.and_expression],\n [NoneTerminal.exclusive_or_expression, ETokenType.CARET, NoneTerminal.and_expression]\n ],\n // #if _VERBOSE\n ASTNode.ExclusiveOrExpression.pool\n // #endif\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.and_expression,\n [\n [NoneTerminal.equality_expression],\n [NoneTerminal.and_expression, ETokenType.AMPERSAND, NoneTerminal.equality_expression]\n ],\n // #if _VERBOSE\n ASTNode.AndExpression.pool\n // #endif\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.equality_expression,\n [\n [NoneTerminal.relational_expression],\n [NoneTerminal.equality_expression, ETokenType.EQ_OP, NoneTerminal.relational_expression],\n [NoneTerminal.equality_expression, ETokenType.NE_OP, NoneTerminal.relational_expression]\n ],\n // #if _VERBOSE\n ASTNode.EqualityExpression.pool\n // #endif\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.relational_expression,\n [\n [NoneTerminal.shift_expression],\n [NoneTerminal.relational_expression, ETokenType.LEFT_ANGLE, NoneTerminal.shift_expression],\n [NoneTerminal.relational_expression, ETokenType.RIGHT_ANGLE, NoneTerminal.shift_expression],\n [NoneTerminal.relational_expression, ETokenType.LE_OP, NoneTerminal.shift_expression],\n [NoneTerminal.relational_expression, ETokenType.GE_OP, NoneTerminal.shift_expression]\n ],\n // #if _VERBOSE\n ASTNode.RelationalExpression.pool\n // #endif\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.shift_expression,\n [\n [NoneTerminal.additive_expression],\n [NoneTerminal.shift_expression, ETokenType.LEFT_OP, NoneTerminal.additive_expression],\n [NoneTerminal.shift_expression, ETokenType.RIGHT_OP, NoneTerminal.additive_expression]\n ],\n // #if _VERBOSE\n ASTNode.ShiftExpression.pool\n // #endif\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.additive_expression,\n [\n [NoneTerminal.multiplicative_expression],\n [NoneTerminal.additive_expression, ETokenType.PLUS, NoneTerminal.multiplicative_expression],\n [NoneTerminal.additive_expression, ETokenType.DASH, NoneTerminal.multiplicative_expression]\n ],\n // #if _VERBOSE\n ASTNode.AdditiveExpression.pool\n // #endif\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.multiplicative_expression,\n [\n [NoneTerminal.unary_expression],\n [NoneTerminal.multiplicative_expression, ETokenType.STAR, NoneTerminal.unary_expression],\n [NoneTerminal.multiplicative_expression, ETokenType.SLASH, NoneTerminal.unary_expression],\n [NoneTerminal.multiplicative_expression, ETokenType.PERCENT, NoneTerminal.unary_expression]\n ],\n // #if _VERBOSE\n ASTNode.MultiplicativeExpression.pool\n // #endif\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.unary_expression,\n [\n [NoneTerminal.postfix_expression],\n [ETokenType.INC_OP, NoneTerminal.unary_expression],\n [ETokenType.DEC_OP, NoneTerminal.unary_expression],\n [NoneTerminal.unary_operator, NoneTerminal.unary_expression]\n ],\n // #if _VERBOSE\n ASTNode.UnaryExpression.pool\n // #endif\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.unary_operator,\n [[ETokenType.PLUS], [ETokenType.DASH], [ETokenType.BANG], [ETokenType.TILDE]],\n // #if _VERBOSE\n ASTNode.UnaryOperator.pool\n // #endif\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.postfix_expression,\n [\n [NoneTerminal.primary_expression],\n [NoneTerminal.postfix_expression, ETokenType.LEFT_BRACKET, NoneTerminal.expression, ETokenType.RIGHT_BRACKET],\n [NoneTerminal.function_call],\n [NoneTerminal.postfix_expression, ETokenType.DOT, ETokenType.ID],\n [NoneTerminal.postfix_expression, ETokenType.DOT, NoneTerminal.function_call],\n [NoneTerminal.postfix_expression, ETokenType.INC_OP],\n [NoneTerminal.postfix_expression, ETokenType.DEC_OP]\n ],\n ASTNode.PostfixExpression.pool\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.primary_expression,\n [\n [NoneTerminal.variable_identifier],\n [ETokenType.INT_CONSTANT],\n [ETokenType.FLOAT_CONSTANT],\n [Keyword.True],\n [Keyword.False],\n [ETokenType.LEFT_PAREN, NoneTerminal.expression, ETokenType.RIGHT_PAREN]\n ],\n ASTNode.PrimaryExpression.pool\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.expression,\n [\n [NoneTerminal.assignment_expression],\n [NoneTerminal.expression, ETokenType.COMMA, NoneTerminal.assignment_expression]\n ],\n ASTNode.Expression.pool\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.assignment_expression,\n [\n [NoneTerminal.conditional_expression],\n [NoneTerminal.unary_expression, NoneTerminal.assignment_operator, NoneTerminal.assignment_expression]\n ],\n ASTNode.AssignmentExpression.pool\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.assignment_operator,\n [\n [ETokenType.EQUAL],\n [ETokenType.MUL_ASSIGN],\n [ETokenType.DIV_ASSIGN],\n [ETokenType.MOD_ASSIGN],\n [ETokenType.ADD_ASSIGN],\n [ETokenType.SUB_ASSIGN],\n [ETokenType.LEFT_ASSIGN],\n [ETokenType.RIGHT_ASSIGN],\n [ETokenType.AND_ASSIGN],\n [ETokenType.XOR_ASSIGN],\n [ETokenType.OR_ASSIGN]\n ],\n // #if _VERBOSE\n ASTNode.AssignmentOperator.pool\n // #endif\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.function_call,\n [[NoneTerminal.function_call_generic]],\n ASTNode.FunctionCall.pool\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.function_call_generic,\n [\n [\n NoneTerminal.function_identifier,\n ETokenType.LEFT_PAREN,\n NoneTerminal.function_call_parameter_list,\n ETokenType.RIGHT_PAREN\n ],\n [NoneTerminal.function_identifier, ETokenType.LEFT_PAREN, ETokenType.RIGHT_PAREN],\n [NoneTerminal.function_identifier, Keyword.VOID, ETokenType.RIGHT_PAREN]\n ],\n ASTNode.FunctionCallGeneric.pool\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.function_call_parameter_list,\n [\n [NoneTerminal.assignment_expression],\n [NoneTerminal.function_call_parameter_list, ETokenType.COMMA, NoneTerminal.assignment_expression],\n [NoneTerminal.macro_call_arg_block],\n [NoneTerminal.function_call_parameter_list, NoneTerminal.macro_call_arg_block]\n ],\n ASTNode.FunctionCallParameterList.pool\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.macro_call_arg_case_list,\n [\n [NoneTerminal.assignment_expression],\n [ETokenType.COMMA, NoneTerminal.assignment_expression],\n [NoneTerminal.macro_call_arg_block],\n [NoneTerminal.macro_call_arg_case_list, NoneTerminal.macro_call_arg_block],\n [NoneTerminal.macro_call_arg_case_list, ETokenType.COMMA, NoneTerminal.assignment_expression]\n ],\n ASTNode.MacroCallArgCaseList.pool\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.macro_call_arg_block,\n [\n [NoneTerminal.macro_push_context, NoneTerminal.macro_call_arg_branch],\n [NoneTerminal.macro_push_context, NoneTerminal.macro_call_arg_case_list, NoneTerminal.macro_call_arg_branch]\n ],\n ASTNode.MacroCallArgBlock.pool\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.macro_call_arg_branch,\n [\n [NoneTerminal.macro_pop_context],\n [NoneTerminal.macro_elif_expression, NoneTerminal.macro_call_arg_case_list, NoneTerminal.macro_call_arg_branch],\n [NoneTerminal.macro_else_expression, NoneTerminal.macro_call_arg_case_list, NoneTerminal.macro_pop_context],\n [NoneTerminal.macro_elif_expression, NoneTerminal.macro_call_arg_branch],\n [NoneTerminal.macro_else_expression, NoneTerminal.macro_pop_context]\n ],\n ASTNode.MacroCallArgBranch.pool\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.function_identifier,\n [[NoneTerminal.type_specifier]],\n ASTNode.FunctionIdentifier.pool\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.function_definition,\n [[NoneTerminal.function_prototype, NoneTerminal.compound_statement_no_scope]],\n ASTNode.FunctionDefinition.pool\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.function_prototype,\n [[NoneTerminal.function_declarator, ETokenType.RIGHT_PAREN]],\n ASTNode.FunctionProtoType.pool\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.function_declarator,\n [[NoneTerminal.function_header], [NoneTerminal.function_header, NoneTerminal.function_parameter_list]],\n ASTNode.FunctionDeclarator.pool\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.function_header,\n [[NoneTerminal.fully_specified_type, ETokenType.ID, ETokenType.LEFT_PAREN]],\n ASTNode.FunctionHeader.pool\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.function_parameter_list,\n [\n [NoneTerminal.parameter_declaration],\n [NoneTerminal.function_parameter_list, ETokenType.COMMA, NoneTerminal.parameter_declaration],\n [NoneTerminal.macro_param_block],\n [NoneTerminal.function_parameter_list, NoneTerminal.macro_param_block]\n ],\n ASTNode.FunctionParameterList.pool\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.macro_param_case_list,\n [\n [NoneTerminal.parameter_declaration],\n [ETokenType.COMMA, NoneTerminal.parameter_declaration],\n [NoneTerminal.macro_param_block],\n [NoneTerminal.macro_param_case_list, NoneTerminal.macro_param_block],\n [NoneTerminal.macro_param_case_list, ETokenType.COMMA, NoneTerminal.parameter_declaration]\n ],\n ASTNode.MacroParamCaseList.pool\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.macro_param_block,\n [\n [NoneTerminal.macro_push_context, NoneTerminal.macro_parameter_branch],\n [NoneTerminal.macro_push_context, NoneTerminal.macro_param_case_list, NoneTerminal.macro_parameter_branch]\n ],\n ASTNode.MacroParamBlock.pool\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.macro_parameter_branch,\n [\n [NoneTerminal.macro_pop_context],\n [NoneTerminal.macro_elif_expression, NoneTerminal.macro_param_case_list, NoneTerminal.macro_parameter_branch],\n [NoneTerminal.macro_else_expression, NoneTerminal.macro_param_case_list, NoneTerminal.macro_pop_context],\n [NoneTerminal.macro_elif_expression, NoneTerminal.macro_parameter_branch],\n [NoneTerminal.macro_else_expression, NoneTerminal.macro_pop_context]\n ],\n ASTNode.MacroParameterBranch.pool\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.parameter_declaration,\n [\n [NoneTerminal.type_qualifier, NoneTerminal.parameter_declarator],\n [NoneTerminal.parameter_declarator],\n [NoneTerminal.macro_call_symbol],\n [NoneTerminal.macro_call_function]\n ],\n ASTNode.ParameterDeclaration.pool\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.parameter_declarator,\n [\n [NoneTerminal.type_specifier, ETokenType.ID],\n [NoneTerminal.type_specifier, ETokenType.ID, NoneTerminal.array_specifier]\n ],\n ASTNode.ParameterDeclarator.pool\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.statement_list,\n [[NoneTerminal.statement], [NoneTerminal.statement_list, NoneTerminal.statement]],\n ASTNode.StatementList.pool\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.statement,\n [[NoneTerminal.compound_statement], [NoneTerminal.simple_statement]],\n // #if _VERBOSE\n ASTNode.Statement.pool\n // #endif\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.compound_statement_no_scope,\n [\n [ETokenType.LEFT_BRACE, ETokenType.RIGHT_BRACE],\n [ETokenType.LEFT_BRACE, NoneTerminal.statement_list, ETokenType.RIGHT_BRACE]\n ],\n ASTNode.CompoundStatementNoScope.pool\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.compound_statement,\n [\n [ETokenType.LEFT_BRACE, ETokenType.RIGHT_BRACE],\n [NoneTerminal.scope_brace, NoneTerminal.statement_list, NoneTerminal.scope_end_brace]\n ],\n // #if _VERBOSE\n ASTNode.CompoundStatement.pool\n // #endif\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.simple_statement,\n [\n [NoneTerminal.declaration],\n [NoneTerminal.expression_statement],\n [NoneTerminal.selection_statement],\n [NoneTerminal.iteration_statement],\n [NoneTerminal.jump_statement],\n [NoneTerminal.macro_if_statement],\n [NoneTerminal.macro_undef],\n [Keyword.MACRO_DEFINE_EXPRESSION]\n ],\n // #if _VERBOSE\n ASTNode.SimpleStatement.pool\n // #endif\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.declaration,\n [\n [NoneTerminal.function_prototype, ETokenType.SEMICOLON],\n [NoneTerminal.init_declarator_list, ETokenType.SEMICOLON],\n [\n Keyword.PRECISION,\n NoneTerminal.precision_qualifier,\n NoneTerminal.ext_builtin_type_specifier_nonarray,\n ETokenType.SEMICOLON\n ],\n [NoneTerminal.type_qualifier, ETokenType.ID, ETokenType.SEMICOLON],\n [NoneTerminal.type_qualifier, ETokenType.ID, NoneTerminal.identifier_list, ETokenType.SEMICOLON]\n ],\n ASTNode.Declaration.pool\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.identifier_list,\n [\n [ETokenType.COMMA, ETokenType.ID],\n [NoneTerminal.identifier_list, ETokenType.COMMA, ETokenType.ID]\n ],\n ASTNode.IdentifierList.pool\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.init_declarator_list,\n [\n [NoneTerminal.single_declaration],\n [NoneTerminal.init_declarator_list, ETokenType.COMMA, ETokenType.ID],\n [NoneTerminal.init_declarator_list, ETokenType.COMMA, ETokenType.ID, NoneTerminal.array_specifier],\n [\n NoneTerminal.init_declarator_list,\n ETokenType.COMMA,\n ETokenType.ID,\n NoneTerminal.array_specifier,\n ETokenType.EQUAL,\n NoneTerminal.initializer\n ],\n [NoneTerminal.init_declarator_list, ETokenType.COMMA, ETokenType.ID, ETokenType.EQUAL, NoneTerminal.initializer]\n ],\n ASTNode.InitDeclaratorList.pool\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.single_declaration,\n [\n [NoneTerminal.fully_specified_type, ETokenType.ID],\n [NoneTerminal.fully_specified_type, ETokenType.ID, NoneTerminal.array_specifier],\n [\n NoneTerminal.fully_specified_type,\n ETokenType.ID,\n NoneTerminal.array_specifier,\n ETokenType.EQUAL,\n NoneTerminal.initializer\n ],\n [NoneTerminal.fully_specified_type, ETokenType.ID, ETokenType.EQUAL, NoneTerminal.initializer]\n ],\n ASTNode.SingleDeclaration.pool\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.initializer,\n [\n [NoneTerminal.assignment_expression],\n [ETokenType.LEFT_BRACE, NoneTerminal.initializer_list, ETokenType.RIGHT_BRACE]\n ],\n // #if _VERBOSE\n ASTNode.Initializer.pool\n // #endif\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.initializer_list,\n [[NoneTerminal.initializer], [NoneTerminal.initializer_list, ETokenType.COMMA, NoneTerminal.initializer]],\n // #if _VERBOSE\n ASTNode.InitializerList.pool\n // #endif\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.expression_statement,\n [[ETokenType.SEMICOLON], [NoneTerminal.expression, ETokenType.SEMICOLON]],\n // #if _VERBOSE\n ASTNode.ExpressionStatement.pool\n // #endif\n ),\n\n // dangling else ambiguity\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.selection_statement,\n [\n [Keyword.IF, ETokenType.LEFT_PAREN, NoneTerminal.expression, ETokenType.RIGHT_PAREN, NoneTerminal.statement],\n [\n Keyword.IF,\n ETokenType.LEFT_PAREN,\n NoneTerminal.expression,\n ETokenType.RIGHT_PAREN,\n NoneTerminal.statement,\n Keyword.ELSE,\n NoneTerminal.statement\n ]\n ],\n // #if _VERBOSE\n ASTNode.SelectionStatement.pool\n // #endif\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.iteration_statement,\n [\n [Keyword.WHILE, ETokenType.LEFT_PAREN, NoneTerminal.condition, ETokenType.RIGHT_PAREN, NoneTerminal.statement],\n [\n Keyword.FOR,\n ETokenType.LEFT_PAREN,\n NoneTerminal.for_init_statement,\n NoneTerminal.for_rest_statement,\n ETokenType.RIGHT_PAREN,\n NoneTerminal.statement\n ]\n ],\n // #if _VERBOSE\n ASTNode.IterationStatement.pool\n // #endif\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.precision_specifier,\n [\n [\n Keyword.PRECISION,\n NoneTerminal.precision_qualifier,\n NoneTerminal.ext_builtin_type_specifier_nonarray,\n ETokenType.SEMICOLON\n ]\n ],\n ASTNode.PrecisionSpecifier.pool\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.for_init_statement,\n [[NoneTerminal.expression_statement], [NoneTerminal.declaration]],\n // #if _VERBOSE\n ASTNode.ForInitStatement.pool\n // #endif\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.condition,\n [\n [NoneTerminal.expression],\n [NoneTerminal.fully_specified_type, ETokenType.ID, ETokenType.EQUAL, NoneTerminal.initializer]\n ],\n // #if _VERBOSE\n ASTNode.Condition.pool\n // #endif\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.for_rest_statement,\n [\n [NoneTerminal.conditionopt, ETokenType.SEMICOLON],\n [NoneTerminal.conditionopt, ETokenType.SEMICOLON, NoneTerminal.expression]\n ],\n // #if _VERBOSE\n ASTNode.ForRestStatement.pool\n // #endif\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.conditionopt,\n [[ETokenType.EPSILON], [NoneTerminal.condition]],\n // #if _VERBOSE\n ASTNode.ConditionOpt.pool\n // #endif\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.jump_statement,\n [\n [Keyword.CONTINUE, ETokenType.SEMICOLON],\n [Keyword.BREAK, ETokenType.SEMICOLON],\n [Keyword.RETURN, ETokenType.SEMICOLON],\n [Keyword.RETURN, NoneTerminal.expression, ETokenType.SEMICOLON],\n [Keyword.DISCARD, ETokenType.SEMICOLON]\n ],\n ASTNode.JumpStatement.pool\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.scope_brace,\n [[ETokenType.LEFT_BRACE]],\n ASTNode.ScopeBrace.pool\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.scope_end_brace,\n [[ETokenType.RIGHT_BRACE]],\n ASTNode.ScopeEndBrace.pool\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.variable_identifier,\n [[ETokenType.ID], [NoneTerminal.macro_call_symbol], [NoneTerminal.macro_call_function]],\n ASTNode.VariableIdentifier.pool\n ),\n\n // Macros ...\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.macro_if_statement,\n [\n [NoneTerminal.macro_push_context, NoneTerminal.statement_list, NoneTerminal.macro_branch],\n [NoneTerminal.macro_push_context, NoneTerminal.macro_branch]\n ],\n ASTNode.MacroIfStatement.pool\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.macro_branch,\n [\n [NoneTerminal.macro_pop_context],\n [NoneTerminal.macro_elif_expression, NoneTerminal.statement_list, NoneTerminal.macro_branch],\n [NoneTerminal.macro_else_expression, NoneTerminal.statement_list, NoneTerminal.macro_pop_context],\n [NoneTerminal.macro_elif_expression, NoneTerminal.macro_branch],\n [NoneTerminal.macro_else_expression, NoneTerminal.macro_pop_context]\n ],\n ASTNode.MacroBranch.pool\n )\n];\n\nconst createGrammar = () =>\n Grammar.create(\n NoneTerminal.gs_shader_program,\n productionAndRules.map((item) => item[0])\n );\n\nconst addTranslationRule = (sa: SemanticAnalyzer) => {\n for (let i = 0; i < productionAndRules.length; i++) {\n const rule = productionAndRules[i][1];\n if (rule) {\n sa.addTranslationRule(i, rule);\n }\n }\n};\n\nexport { addTranslationRule, createGrammar };\n","import { Logger } from \"@galacean/engine\";\nimport { ETokenType } from \"../common\";\nimport { BaseToken } from \"../common/BaseToken\";\nimport { GSError, GSErrorName } from \"../GSError\";\nimport { LALR1 } from \"../lalr\";\nimport { addTranslationRule, createGrammar } from \"../lalr/CFG\";\nimport { EAction, StateActionTable, StateGotoTable } from \"../lalr/types\";\nimport { MacroDefineList } from \"../Preprocessor\";\nimport { ParserUtils } from \"../ParserUtils\";\nimport { ShaderLab } from \"../ShaderLab\";\nimport { ShaderLabUtils } from \"../ShaderLabUtils\";\nimport { ASTNode, TreeNode } from \"./AST\";\nimport { Grammar } from \"./Grammar\";\nimport { GrammarSymbol, NoneTerminal } from \"./GrammarSymbol\";\nimport SematicAnalyzer from \"./SemanticAnalyzer\";\nimport { TraceStackItem } from \"./types\";\n\n/**\n * The syntax parser and sematic analyzer of `ShaderLab` compiler\n */\nexport class ShaderTargetParser {\n readonly actionTable: StateActionTable;\n readonly gotoTable: StateGotoTable;\n readonly grammar: Grammar;\n readonly sematicAnalyzer: SematicAnalyzer;\n private _traceBackStack: (TraceStackItem | number)[] = [];\n\n private get curState() {\n return this._traceBackStack[this._traceBackStack.length - 1] as number;\n }\n private get stateActionTable() {\n return this.actionTable.get(this.curState)!;\n }\n private get stateGotoTable() {\n return this.gotoTable.get(this.curState);\n }\n\n // #if _VERBOSE\n /** @internal */\n get errors() {\n return this.sematicAnalyzer.errors;\n }\n // #endif\n\n static _singleton: ShaderTargetParser;\n\n static create() {\n if (!this._singleton) {\n const grammar = createGrammar();\n const generator = new LALR1(grammar);\n generator.generate();\n this._singleton = new ShaderTargetParser(generator.actionTable, generator.gotoTable, grammar);\n addTranslationRule(this._singleton.sematicAnalyzer);\n }\n\n return this._singleton;\n }\n\n private constructor(actionTable: StateActionTable, gotoTable: StateGotoTable, grammar: Grammar) {\n this.actionTable = actionTable;\n this.gotoTable = gotoTable;\n this.grammar = grammar;\n this.sematicAnalyzer = new SematicAnalyzer();\n }\n\n parse(tokens: Generator<BaseToken, BaseToken>, macroDefineList: MacroDefineList): ASTNode.GLShaderProgram | null {\n this.sematicAnalyzer.reset(macroDefineList);\n const start = performance.now();\n const { _traceBackStack: traceBackStack, sematicAnalyzer } = this;\n traceBackStack.push(0);\n\n let nextToken = tokens.next();\n let loopCount = 0;\n while (true) {\n loopCount += 1;\n const token = nextToken.value;\n\n const actionInfo = this.stateActionTable.get(token.type);\n if (actionInfo?.action === EAction.Shift) {\n traceBackStack.push(token, actionInfo.target!);\n nextToken = tokens.next();\n } else if (actionInfo?.action === EAction.Accept) {\n Logger.info(\n `[Task - AST compilation] Accept! State automata run ${loopCount} times! cost time ${\n performance.now() - start\n }ms`\n );\n sematicAnalyzer.acceptRule?.(sematicAnalyzer);\n return sematicAnalyzer.semanticStack.pop() as ASTNode.GLShaderProgram;\n } else if (actionInfo?.action === EAction.Reduce) {\n const target = actionInfo.target!;\n const reduceProduction = this.grammar.getProductionByID(target)!;\n const translationRule = sematicAnalyzer.getTranslationRule(reduceProduction.id);\n\n const values: (TreeNode | BaseToken)[] = [];\n\n for (let i = reduceProduction.derivation.length - 1; i >= 0; i--) {\n if (reduceProduction.derivation[i] === ETokenType.EPSILON) continue;\n traceBackStack.pop();\n const token = traceBackStack.pop();\n if (token instanceof BaseToken) {\n values.unshift(token);\n } else {\n const astNode = sematicAnalyzer.semanticStack.pop()!;\n values.unshift(astNode);\n }\n }\n translationRule?.(sematicAnalyzer, ...values);\n\n const gotoTable = this.stateGotoTable;\n traceBackStack.push(reduceProduction.goal);\n\n const nextState = gotoTable?.get(reduceProduction.goal)!;\n traceBackStack.push(nextState);\n continue;\n } else {\n const error = ShaderLabUtils.createGSError(\n `Unexpected token ${token.lexeme}`,\n GSErrorName.CompilationError,\n ShaderLab._processingPassText,\n token.location\n );\n // #if _VERBOSE\n this.sematicAnalyzer.errors.push(<GSError>error);\n // #endif\n return null;\n }\n }\n }\n\n // #if _VERBOSE\n private _printStack(nextToken: BaseToken) {\n let str = \"\";\n for (let i = 0; i < this._traceBackStack.length - 1; i++) {\n const state = <NoneTerminal>this._traceBackStack[i++];\n const token = this._traceBackStack[i];\n str += `State${state} - ${(<BaseToken>token).lexeme ?? ParserUtils.toString(token as GrammarSymbol)}; `;\n }\n str += `State${this._traceBackStack[this._traceBackStack.length - 1]} --- ${nextToken.lexeme}`;\n Logger.info(str);\n }\n // #endif\n}\n","function _extends() {\n _extends = Object.assign || function assign(target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n for (var key in source) if (Object.prototype.hasOwnProperty.call(source, key)) target[key] = source[key];\n }\n\n return target;\n };\n\n return _extends.apply(this, arguments);\n}\nexport { _extends as _ };\n","import { IRenderStates, IShaderPassSource, IShaderSource, ISubShaderSource } from \"@galacean/engine-design\";\n\nexport class ShaderSourceFactory {\n static createRenderStates(): IRenderStates {\n return {\n constantMap: {},\n variableMap: {}\n };\n }\n\n static createShaderSource(name: string): IShaderSource {\n return {\n name,\n subShaders: [],\n pendingContents: [],\n renderStates: this.createRenderStates()\n };\n }\n\n static createSubShaderSource(name: string): ISubShaderSource {\n return {\n name,\n passes: [],\n pendingContents: [],\n tags: {},\n renderStates: this.createRenderStates()\n };\n }\n\n static createShaderPassSource(name: string): IShaderPassSource {\n return {\n name,\n pendingContents: [],\n tags: {},\n renderStates: this.createRenderStates()\n } as IShaderPassSource;\n }\n\n static createUsePass(name: string): IShaderPassSource {\n return {\n name,\n pendingContents: [],\n isUsePass: true,\n tags: {},\n renderStates: this.createRenderStates()\n } as IShaderPassSource;\n }\n}\n","import { IBaseSymbol } from \"../common/IBaseSymbol\";\n\nexport class ShaderSourceSymbol implements IBaseSymbol {\n public isInMacroBranch: boolean = false;\n\n constructor(\n public ident: string,\n public type: number,\n public value?: any\n ) {}\n\n set(ident: string, type: number, value?: any): void {\n this.ident = ident;\n this.type = type;\n this.value = value;\n }\n\n equal(other: ShaderSourceSymbol): boolean {\n return this.type === other.type;\n }\n}\n","import { Color } from \"@galacean/engine\";\nimport { ETokenType, ShaderPosition, ShaderRange } from \"../common\";\nimport { BaseLexer } from \"../common/BaseLexer\";\nimport { BaseToken } from \"../common/BaseToken\";\nimport { Keyword } from \"../common/enums/Keyword\";\nimport { GSErrorName } from \"../GSError\";\nimport { ShaderLab } from \"../ShaderLab\";\nimport { ShaderLabUtils } from \"../ShaderLabUtils\";\n\nexport default class SourceLexer extends BaseLexer {\n hasPendingContent = false;\n\n private static _keywordLexemeTable = <Record<string, Keyword>>{\n RenderQueueType: Keyword.GSRenderQueueType,\n BlendState: Keyword.GSBlendState,\n DepthState: Keyword.GSDepthState,\n StencilState: Keyword.GSStencilState,\n RasterState: Keyword.GSRasterState,\n EditorProperties: Keyword.GSEditorProperties,\n EditorMacros: Keyword.GSEditorMacros,\n Editor: Keyword.GSEditor,\n Tags: Keyword.GSTags,\n VertexShader: Keyword.GSVertexShader,\n FragmentShader: Keyword.GSFragmentShader,\n SubShader: Keyword.GSSubShader,\n Pass: Keyword.GSPass,\n BlendFactor: Keyword.GSBlendFactor,\n BlendOperation: Keyword.GSBlendOperation,\n Bool: Keyword.GSBool,\n Number: Keyword.GSNumber,\n Color: Keyword.GSColor,\n CompareFunction: Keyword.GSCompareFunction,\n StencilOperation: Keyword.GSStencilOperation,\n CullMode: Keyword.GSCullMode,\n UsePass: Keyword.GSUsePass,\n\n true: Keyword.True,\n false: Keyword.False\n };\n\n private static _symbolLexemeTable = <Record<string, Keyword>>{\n \"{\": Keyword.LeftBrace,\n \"}\": Keyword.RightBrace,\n \"=\": Keyword.Equal\n };\n\n private static _isWordSeparatorChar(charCode: number): boolean {\n return (\n charCode === 123 || // {\n charCode === 125 || // }\n charCode === 61 || // =\n charCode === 59 || // ;\n charCode === 46 || // . CullMode.Back\n charCode === 91 || // [ Enabled[0],\n charCode === 40 // ( Color(1.0, 1.0, 1.0, 1.0);\n );\n }\n\n private static _scanDigits(source: string, startIndex: number): number {\n let currentIndex = startIndex;\n while (currentIndex < source.length) {\n const charCode = source.charCodeAt(currentIndex);\n if (BaseLexer.isDigit(charCode)) {\n currentIndex++;\n } else {\n break;\n }\n }\n return currentIndex;\n }\n\n scanNumber(): number {\n this.skipCommentsAndSpace();\n const start = this._currentIndex;\n const source = this._source;\n let index = this._currentIndex;\n\n // Scan integer part\n index = SourceLexer._scanDigits(source, index);\n\n // Scan decimal part if present\n if (source[index] === \".\") {\n index = SourceLexer._scanDigits(source, index + 1);\n }\n\n this.advance(index - this._currentIndex);\n return Number(source.substring(start, index));\n }\n\n scanColor(): Color {\n this.scanLexeme(\"(\");\n\n let r = 0;\n let g = 0;\n let b = 0;\n let a = 1;\n\n r = this.scanNumber();\n this.skipCommentsAndSpace();\n if (this.peek(1) !== \")\") {\n this.scanLexeme(\",\");\n g = this.scanNumber();\n this.skipCommentsAndSpace();\n if (this.peek(1) !== \")\") {\n this.scanLexeme(\",\");\n b = this.scanNumber();\n this.skipCommentsAndSpace();\n if (this.peek(1) !== \")\") {\n this.scanLexeme(\",\");\n a = this.scanNumber();\n this.skipCommentsAndSpace();\n }\n }\n }\n\n this.scanLexeme(\")\");\n return new Color(r, g, b, a);\n }\n\n override scanToken(): BaseToken {\n while (true) {\n this.skipCommentsAndSpace();\n\n if (this.isEnd()) {\n return;\n }\n\n const start = this.getShaderPosition(0);\n if (BaseLexer.isAlpha(this.getCurCharCode())) {\n const wordToken = this._scanWord(start);\n if (wordToken !== null) {\n return wordToken;\n }\n this.hasPendingContent = true;\n continue; // Continue loop to scan next token if word was invalid\n }\n\n const currentChar = this.getCurChar();\n const symbolKeyword = SourceLexer._symbolLexemeTable[currentChar];\n if (symbolKeyword !== undefined) {\n this.advance(1);\n const token = BaseToken.pool.get();\n token.set(symbolKeyword, currentChar, start);\n return token;\n }\n\n // Skip unrecognized character and continue\n this.advance(1);\n }\n }\n\n // #if _VERBOSE\n scanToCharacter(char: string): void {\n while (this.getCurChar() !== char && !this.isEnd()) {\n this.advance(1);\n }\n this.advance(1);\n }\n // #endif\n\n createCompileError(message: string, location?: ShaderPosition | ShaderRange) {\n return ShaderLabUtils.createGSError(\n message,\n GSErrorName.CompilationError,\n this.source,\n location ?? this.getShaderPosition(0)\n );\n }\n\n private _scanWord(start: ShaderPosition): BaseToken | null {\n // Scan the complete word first\n while (BaseLexer.isAlnum(this.getCurCharCode()) && !this.isEnd()) {\n this.advance(1);\n }\n const end = this.getShaderPosition(0);\n\n // Validate both boundaries in one optimized call\n if (!this._validateWordBoundaries(start.index, end.index)) {\n return null; // Invalid word due to boundary violation\n }\n\n const lexeme = this._source.substring(start.index, end.index);\n const tokenType = SourceLexer._keywordLexemeTable[lexeme] ?? ETokenType.ID;\n const range = ShaderLab.createRange(start, end);\n const token = BaseToken.pool.get();\n token.set(tokenType, lexeme, range);\n return token;\n }\n\n private _validateWordBoundaries(startIndex: number, endIndex: number): boolean {\n const source = this._source;\n\n // Check previous boundary\n if (startIndex > 0) {\n const prevCharCode = source.charCodeAt(startIndex - 1);\n if (!this._isValidWordBoundary(prevCharCode)) {\n return false;\n }\n }\n\n // Check next boundary\n if (endIndex < source.length) {\n const nextCharCode = source.charCodeAt(endIndex);\n if (!this._isValidWordBoundary(nextCharCode)) {\n return false;\n }\n }\n\n return true;\n }\n\n private _isValidWordBoundary(charCode: number): boolean {\n return BaseLexer.isWhiteSpaceChar(charCode, true) || SourceLexer._isWordSeparatorChar(charCode);\n }\n}\n","import {\n BlendFactor,\n BlendOperation,\n Color,\n CompareFunction,\n CullMode,\n Logger,\n RenderQueueType,\n RenderStateElementKey,\n StencilOperation\n} from \"@galacean/engine\";\nimport { IRenderStates, IShaderPassSource, IShaderSource, IStatement, ISubShaderSource } from \"@galacean/engine-design\";\nimport { ETokenType, ShaderPosition, ShaderRange } from \"../common\";\nimport { BaseToken } from \"../common/BaseToken\";\nimport { SymbolTableStack } from \"../common/SymbolTableStack\";\nimport { GSErrorName } from \"../GSError\";\n// #if _VERBOSE\nimport { GSError } from \"../GSError\";\n// #endif\nimport { BaseLexer } from \"../common/BaseLexer\";\nimport { Keyword } from \"../common/enums/Keyword\";\nimport { SymbolTable } from \"../common/SymbolTable\";\nimport { ShaderLabUtils } from \"../ShaderLabUtils\";\nimport { ShaderSourceFactory } from \"./ShaderSourceFactory\";\nimport { ShaderSourceSymbol } from \"./ShaderSourceSymbol\";\nimport SourceLexer from \"./SourceLexer\";\n\n/**\n * @internal\n */\nexport class ShaderSourceParser {\n static readonly errors = new Array<GSError>();\n\n private static _renderStateConstMap = <Record<string, Record<string, number | string | boolean>>>{\n RenderQueueType,\n CompareFunction,\n StencilOperation,\n BlendOperation,\n BlendFactor,\n CullMode\n };\n private static _symbolTableStack = new SymbolTableStack<ShaderSourceSymbol, SymbolTable<ShaderSourceSymbol>>();\n private static _lexer = new SourceLexer();\n private static _lookupSymbol = new ShaderSourceSymbol(\"\", null);\n\n static parse(sourceCode: string): IShaderSource {\n const startTime = performance.now();\n\n // Clear previous data\n this.errors.length = 0;\n this._symbolTableStack.clear();\n this._pushScope();\n\n const lexer = this._lexer;\n lexer.setSource(sourceCode);\n\n const shaderSource = this._parseShader(lexer);\n\n const shaderPendingContents = shaderSource.pendingContents;\n const shaderRenderStates = shaderSource.renderStates;\n for (let i = 0, n = shaderSource.subShaders.length; i < n; i++) {\n const subShader = shaderSource.subShaders[i];\n const curSubShaderGlobalStatements = shaderPendingContents.concat(subShader.pendingContents);\n const 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","ETokenType","TypeAny","Keyword","ShaderLabUtils","createObjectPool","type","pool","ClearableObjectPool","_shaderLabObjectPoolSet","push","clearAllShaderLabObjectPool","i","n","length","clear","createGSError","message","errorName","source","location","file","Logger","error","BaseToken","lexeme","arg","ShaderLab","createPosition","createRange","EOF","Preprocessor","parse","basePathForIncludeKey","outMacroDefineList","parseMacro","_parseMacroDefines","replace","_includeReg","_","includeName","_replace","getReferenceSymbolNames","macroDefineList","macroName","out","infos","info","valueType","referencedName","functionCallName","value","params","indexOf","_isNumber","str","isNaN","Number","_isExist","list","item","some","e","isFunction","every","p","outMacroList","match","_macroRegex","lastIndex","exec","name","paramsGroup","paramsStr","valueRaw","split","map","trim","filter","Boolean","_symbolReg","test","callMatch","_funcCallReg","arr","_mergeMacroDefineLists","from","to","target","src","path","URL","href","substring","ShaderPass","_shaderRootPath","chunk","ShaderLib","_repeatIncludeSet","has","warn","add","_macroDefineIncludeMap","get","chunkMacroDefineList","Map","Set","EShaderStage","isGenericType","t","BuiltinFunctionTable","BuiltinFunction","ident","returnType","scope","args","_returnType","getReturnType","fn","genType","_create","ALL","_createWithScop","getFn","parameterTypes","fnArgs","argLength","found","curFnArg","_realReturnType","isExist","realReturnType","FLOAT","INT","UINT","VEC2","VEC3","MAT2","MAT3","MAT4","VEC4","MAT2X3","MAT3X2","MAT2X4","MAT4X2","MAT3X4","MAT4X3","BOOL","IVEC2","IVEC3","SAMPLER2D_SHADOW","SAMPLER_CUBE_SHADOW","SAMPLER2D_ARRAY_SHADOW","SAMPLER2D","SAMPLER2D_ARRAY","SAMPLER_CUBE","FRAGMENT","BuiltinVariableTable","BuiltinVariable","createVariable","getVar","VERTEX","VEC4_ARRAY","NoneTerminal","SymbolTable","_table","insert","symbol","isInMacroBranch","entry","equal","getSymbol","includeMacro","getSymbols","_getSymbols","SymbolTableStack","stack","_macroLevel","pushScope","popScope","pop","lookup","symbolTable","result","undefined","lookupAll","GSError","toString","diagnosticMessage","Error","wrappingLineCount","GSErrorName","SymbolDataType","arraySpecifier","typeLexeme","ESymbolType","SymbolInfo","dataType","paramSignature","astNode","symbolType","protoType","paramSig","comparedParams","t1","t2","FnSymbol","typeSpecifier","FN","StructSymbol","STRUCT","VarSymbol","isGlobalVariable","initAst","VAR","ShaderData","globalPrecisions","globalMacroDeclarations","getOuterGlobalMacroDeclarations","node","parent","ASTNode","GLShaderProgram","SemanticAnalyzer","semanticStack","acceptRule","symbolTableStack","curFunctionInfo","_shaderData","_translationRuleTable","reset","_macroDefineList","addTranslationRule","pid","rule","getTranslationRule","reportError","loc","reportWarning","CompilationWarn","_processingPassText","shaderData","_lookupSymbol","SymbolType","StructProp","mrtIndex","typeInfo","ASTNodeDecorator","nonTerminal","prototype","nt","TreeNode","children","_location","_children","child","_parent","init","setCache","code","_codeCache","getCache","codeGen","visitor","defaultCodeGen","semanticAnalyze","sa","_unwrapToken","TrivialNode","_ignore","ScopeBrace","scope_brace","ScopeEndBrace","scope_end_brace","JumpStatement","isFragReturnStatement","RETURN","returnStatement","visitJumpStatement","jump_statement","ExpressionAstNode","_type","SingleDeclaration","childrenLen","fullyType","id","sm","initializer","visitSingleDeclaration","single_declaration","FullySpecifiedType","fully_specified_type","TypeQualifier","type_qualifier","SingleTypeQualifier","qualifier","single_type_qualifier","TypeSpecifier","arraySize","firstChild","size","isCustom","type_specifier","ArraySpecifier","integerConstantExpr","array_specifier","IntegerConstantExpressionOperator","operator","PLUS","compute","a","b","DASH","STAR","SLASH","PERCENT","integer_constant_expression_operator","IntegerConstantExpression","integer_constant_expression","TypeSpecifierNonArray","tt","type_specifier_nonarray","ExtBuiltinTypeSpecifierNonArray","token","ext_builtin_type_specifier_nonarray","InitDeclaratorList","childrenLength","initDeclList","init_declarator_list","IdentifierList","idList","curIdList","listIdLength","identifier_list","Declaration","visitDeclaration","declaration","FunctionProtoType","declarator","parameterList","parameterInfoList","function_prototype","FunctionDeclarator","header","function_declarator","FunctionHeader","visitFunctionHeader","function_header","FunctionParameterList","ParameterDeclaration","decl","MacroParamBlock","visitFunctionParameterList","function_parameter_list","MacroParamCaseList","macro_param_case_list","macro_param_block","MacroParameterBranch","macro_parameter_branch","parameterDeclarator","ParameterDeclarator","varSymbol","parameter_declaration","parameter_declarator","CompoundStatementNoScope","compound_statement_no_scope","StatementList","visitStatementList","statement_list","FunctionDefinition","statements","VOID","visitFunctionDefinition","function_definition","FunctionCall","visitFunctionCall","function_call","FunctionCallGeneric","fnSymbol","functionIdentifier","isBuiltin","fnIdent","paramList","FunctionCallParameterList","lookupSymbol","function_call_generic","paramNodes","AssignmentExpression","expr","MacroCallArgBlock","function_call_parameter_list","MacroCallArgCaseList","macro_call_arg_case_list","macro_call_arg_block","MacroCallArgBranch","macro_call_arg_branch","PrecisionSpecifier","precision_specifier","FunctionIdentifier","visitFunctionIdentifier","function_identifier","assignment_expression","Expression","expression","PrimaryExpression","VariableIdentifier","INT_CONSTANT","FLOAT_CONSTANT","True","False","primary_expression","PostfixExpression","visitPostfixExpression","postfix_expression","StructSpecifier","propList","macroExpressions","visitStructSpecifier","struct_specifier","StructDeclarationList","props","struct_declaration_list","StructDeclaration","_typeSpecifier","_declaratorList","macroStructDeclaration","macroProps","LayoutQualifier","prop","declaratorList","declaratorListLength","struct_declaration","MacroStructDeclaration","macro_struct_declaration","MacroStructBranch","lastNode","MacroPopContext","macro_struct_branch","layout_qualifier","StructDeclaratorList","listLength","struct_declarator_list","StructDeclarator","struct_declarator","VariableDeclaration","isStatic","visitGlobalVariableDeclaration","variable_declaration","VariableDeclarationList","variableDeclarations","newVariable","variable_declaration_list","referenceGlobalSymbolNames","_symbols","symbols","needFindNames","referenceSymbolNames","builtinVar","Any","currentScopeSymbol","s","visitVariableIdentifier","getLexeme","variable_identifier","gs_shader_program","GlobalDeclaration","MacroUndef","GlobalMacroIfStatement","global_declaration","macro_undef","MacroPushContext","macro_push_context","macro_pop_context","MacroElifExpression","macro_elif_expression","MacroElseExpression","macro_else_expression","GlobalMacroDeclaration","global_macro_declaration","global_macro_if_statement","GlobalMacroBranch","global_macro_branch","MacroIfStatement","macro_if_statement","MacroBranch","macro_branch","MacroCallSymbol","macro_call_symbol","MacroCallFunction","visitMacroCallFunction","macro_call_function","ParserUtils","unwrapNodeByType","Token","isTerminal","START","VisitorContext","attributeStructs","attributeList","varyingStructs","varyingList","mrtStructs","mrtList","_referencedGlobalMacroASTs","resetAll","_referencedAttributeList","Object","create","_referencedVaryingList","_referencedMRTList","_referencedGlobals","isAttributeStruct","findIndex","isVaryingStruct","isMRTStruct","referenceAttribute","CompilationError","referenceVarying","referenceMRTProp","referenceGlobal","_passSymbolTable","_singleton","context","TempArray","array","Array","CodeGenVisitor","_tmpArrayPool","ret","return","join","derivationLength","postExpr","identNode","indexNode","identLexeme","indexLexeme","_reportError","call","astNodes","paramInfoList","paramsCode","variableParam","fullType","cmd","returnVar","returnFnCall","text","getVaryingProp","getAttributeProp","getMRTProp","sort","fnNode","fnName","stageEntry","ReturnableObjectPool","GLESVisitor","_globalCodeArray","globalCodeArray","_serializedGlobalKey","getOtherGlobal","data","precision","visitShaderProgram","vertexEntry","fragmentEntry","outerGlobalMacroDeclarations","vertex","_vertexMain","fragment","_fragmentMain","stage","fnSymbols","forEach","varyingSymbols","varyingSymbol","attributeParam","attributeType","attributeSymbols","attributeSymbol","_getGlobalSymbol","_getCustomStruct","_getGlobalMacroDeclarations","globalCode","outerGlobalMacroStatements","returnDataType","returnLocation","mrtSymbols","mrtSymbol","lastLength","keys","structNodes","macros","referencedGlobals","referencedGlobalMacroASTs","values","macro","_visitGlobalMacroIfStatement","variableDeclaration","GLES100Visitor","propReferenced","find","getVisitor","V3_GL_FragColor","GLES300Visitor","_otherCodeArray","_fragColorVariableRegistered","_registerFragColorVariable","BaseLexer","_currentIndex","_source","setSource","getShaderPosition","backOffset","isEnd","getCurChar","getCurCharCode","charCodeAt","advance","count","skipSpace","includeLineBreak","isWhiteSpaceChar","skipCommentsAndSpace","nextChar","charCode","peek","offset","scanLexeme","throwError","scanTwoExpectedLexemes","lexeme1","lexeme2","pos","msgs","ScannerError","scanPairedChar","left","right","balanced","skipLeading","sourceLength","currentIndex","level","currentChar","isDigit","isAlpha","isAlnum","isPreprocessorStartChar","includeBreak","Lexer","_needScanMacroConditionExpression","tokenize","scanToken","_scanMacroConditionExpression","curCharCode","_scanDirectives","_scanWord","_scanNum","curChar","LEFT_ASSIGN","LEFT_OP","LE_OP","LEFT_ANGLE","RIGHT_ASSIGN","RIGHT_OP","GE_OP","RIGHT_ANGLE","INC_OP","ADD_ASSIGN","DEC_OP","SUB_ASSIGN","EQ_OP","EQUAL","NE_OP","BANG","AND_OP","AMPERSAND","OR_OP","OR_ASSIGN","VERTICAL_BAR","XOR_OP","XOR_ASSIGN","CARET","MUL_ASSIGN","DIV_ASSIGN","MOD_ASSIGN","LEFT_PAREN","RIGHT_PAREN","LEFT_BRACE","RIGHT_BRACE","LEFT_BRACKET","RIGHT_BRACKET","_scanNumAfterDot","DOT","COMMA","COLON","SEMICOLON","TILDE","QUESTION","_scanStringConst","buffer","range","STRING_CONST","_scanFloatSuffix","_scanUtilBreakLine","outBuffer","word","MACRO_DEFINE_EXPRESSION","kt","_lexemeTable","ID","MACRO_CONDITIONAL_EXPRESSION","MACRO_CALL","_scanIntegerSuffix","const","CONST","bool","float","double","DOUBLE","int","uint","break","BREAK","continue","CONTINUE","do","DO","else","ELSE","for","FOR","if","IF","while","WHILE","discard","DISCARD","bvec2","BVEC2","bvec3","BVEC3","bvec4","BVEC4","ivec2","ivec3","ivec4","IVEC4","uvec2","UVEC2","uvec3","UVEC3","uvec4","UVEC4","vec2","vec3","vec4","mat2","mat3","mat4","in","IN","OUT","inout","INOUT","sampler2D","samplerCube","sampler3D","SAMPLER3D","sampler2DShadow","samplerCubeShadow","sampler2DArray","sampler2DArrayShadow","isampler2D","I_SAMPLER2D","isampler3D","I_SAMPLER3D","isamplerCube","I_SAMPLER_CUBE","isampler2DArray","I_SAMPLER2D_ARRAY","usampler2D","U_SAMPLER2D","usampler3D","U_SAMPLER3D","usamplerCube","U_SAMPLER_CUBE","usampler2DArray","U_SAMPLER2D_ARRAY","struct","void","true","false","PRECISION","precise","PRECISE","highp","HIGHP","mediump","MEDIUMP","lowp","LOWP","invariant","INVARIANT","flat","FLAT","smooth","SMOOTH","noperspective","NOPERSPECTIVE","centroid","CENTROID","layout","LAYOUT","LOCATION","MACRO_IF","MACRO_IFDEF","MACRO_IFNDEF","MACRO_ELSE","MACRO_ELIF","MACRO_ENDIF","MACRO_UNDEF","MacroParserToken","MacroParserKeyword","MacroDefine","body","_argsLexemes","_replaceRegex","RegExp","expandFunctionBody","PreprocessorError","m","MacroParserLexer","macroLvl","scanWordsUntilTerminator","terminatorChar","tokens","scanWord","slice","tokenType","_isPpCharacters","ifdef","ifndef","endif","scanQuotedString","contentStart","string_const","scanToChar","char","scanMacroBranchBody","shaderPosition","startLevel","nextDirective","elif","scanPairedBlock","lc","rc","scanRemainMacro","startLvl","directive","peekNonSpace","current","scanInteger","integer","int_constant","scanMacroBody","nextIndex","nextCharCode","valueToken","line_remain","define","undef","defined","PpUtils","expand","segments","startIdx","generatedIdx","seg","originSlice","rangeInBlock","generatedIdxEnd","MacroParser","_reset","_addPredefinedMacro","lexer","_parseDirectives","_expandSegmentsStack","_definedMacros","macroBody","_parseMacro","_parseDefine","_parseUndef","_parseIfDirective","_getExpandSegments","sourceMap","directiveType","directiveLength","skipMacro","shouldInclude","_parseConstantExpression","macroToken","startsWith","expanded","_expandMacroChunk","_addContentReplace","content","blockRange","_addEmptyReplace","_processConditionalDirective","scanner","constantExpr","_parseLogicalOrExpression","operand1","_parseLogicalAndExpression","operand2","_parseEqualityExpression","_parseRelationalExpression","includes","_parseShiftExpression","opPos","_parseAdditiveExpression","_parseMulticativeExpression","_parseUnaryExpression","parenExpr","_parseParenthesisExpression","_parseConstant","withParen","isInteger","_parseMacroFunctionArgs","startIndex","argStart","k","endIndex","_expandMacroBody","visitedMacros","_expandVisitedMacros","currentVersionId","_expandVersionId","expandedBody","hasExpansion","replacement","newEndIndex","scannerOrFile","sourceFile","sourceRange","macroArgs","macroDefine","delete","macroBodyExpanded","expandedContent","remainingLength","macroContent","StateItem","production","position","lookahead","_needReInfer","lookaheadSet","la","_id","addLookahead","ts","needReInfer","symbolByOffset","derivation","canReduce","EPSILON","v","curSymbol","nextSymbol","State","cores","closured","_stateItemPool","_items","it","itemMapKey","getStateItemMapKey","createStateItem","mapId","newItem","cacheKey","getMapKey","state","closureMap","core","newState","items","GrammarUtils","createProductionWithOptions","goal","options","astTypePool","opt","addMapSetItem","isSubSet","sb","isActionEqual","action","EAction","LALR1","grammar","firstSetMap","followSetMap","actionTable","gotoTable","_firstSetNTStack","generate","computeFirstSet","buildStateTable","startStateItemCore","productions","startState","_extendState","_closure","newStates","_inferNextState","ns","_extendStateItem","productionList","getProductionList","newLookaheadSet","lastFirstSet","terminalExist","Utils","coreMap","stateActionTable","stateGotoTable","stateItem","Reduce","Accept","_addAction","nextItem","entries","gs","Shift","table","terminal","exist","_computeFirstSetForNT","NT","idx","computingFS","len","curNT","firstSet","isNullableNT","succeedFirstSet","Production","Grammar","startSymbol","unshift","getProductionByID","_ps","gsl","productionAndRules","variable_declaration_statement","storage_qualifier","precision_qualifier","interpolation_qualifier","invariant_qualifier","conditional_expression","logical_or_expression","logical_xor_expression","logical_and_expression","inclusive_or_expression","exclusive_or_expression","and_expression","equality_expression","relational_expression","shift_expression","additive_expression","multiplicative_expression","unary_expression","unary_operator","assignment_operator","AND_ASSIGN","statement","compound_statement","simple_statement","expression_statement","selection_statement","iteration_statement","initializer_list","condition","for_init_statement","for_rest_statement","conditionopt","createGrammar","ShaderTargetParser","_traceBackStack","sematicAnalyzer","SematicAnalyzer","performance","now","traceBackStack","nextToken","next","loopCount","actionInfo","reduceProduction","translationRule","nextState","generator","curState","ShaderSourceFactory","createRenderStates","constantMap","variableMap","createShaderSource","subShaders","pendingContents","renderStates","createSubShaderSource","passes","tags","createShaderPassSource","createUsePass","isUsePass","ShaderSourceSymbol","other","SourceLexer","hasPendingContent","scanNumber","_scanDigits","scanColor","r","g","Color","wordToken","symbolKeyword","_symbolLexemeTable","createCompileError","_validateWordBoundaries","_keywordLexemeTable","prevCharCode","_isValidWordBoundary","_isWordSeparatorChar","RenderQueueType","GSRenderQueueType","BlendState","GSBlendState","DepthState","GSDepthState","StencilState","GSStencilState","RasterState","GSRasterState","EditorProperties","GSEditorProperties","EditorMacros","GSEditorMacros","Editor","GSEditor","Tags","GSTags","VertexShader","GSVertexShader","FragmentShader","GSFragmentShader","SubShader","GSSubShader","Pass","GSPass","BlendFactor","GSBlendFactor","BlendOperation","GSBlendOperation","Bool","GSBool","GSNumber","GSColor","CompareFunction","GSCompareFunction","StencilOperation","GSStencilOperation","CullMode","GSCullMode","UsePass","GSUsePass","LeftBrace","RightBrace","Equal","ShaderSourceParser","sourceCode","startTime","errors","_symbolTableStack","_pushScope","_lexer","shaderSource","_parseShader","shaderPendingContents","shaderRenderStates","subShader","curSubShaderGlobalStatements","concat","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","_parseShaderPass","backend","totalStartTime","noIncludeContent","parser","_parser","program","ShaderLanguage","GLSLES100","codeGenStartTime","_parseMacros","parsedContent","line","column","_shaderPositionPool","_shaderRangePool","version","mode","console","log"],"mappings":"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"}
|