@galacean/engine-shaderlab 1.5.14 → 1.6.0-alpha.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +1 @@
1
- {"version":3,"file":"browser.verbose.js","sources":["../../../node_modules/.pnpm/@swc+helpers@0.5.15/node_modules/@swc/helpers/esm/_array_like_to_array.js","../../../node_modules/.pnpm/@swc+helpers@0.5.15/node_modules/@swc/helpers/esm/_unsupported_iterable_to_array.js","../../../node_modules/.pnpm/@swc+helpers@0.5.15/node_modules/@swc/helpers/esm/_create_for_of_iterator_helper_loose.js","../../../node_modules/.pnpm/@swc+helpers@0.5.15/node_modules/@swc/helpers/esm/_set_prototype_of.js","../../../node_modules/.pnpm/@swc+helpers@0.5.15/node_modules/@swc/helpers/esm/_inherits.js","../../../node_modules/.pnpm/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","../../../node_modules/.pnpm/@swc+helpers@0.5.15/node_modules/@swc/helpers/esm/_is_native_reflect_construct.js","../../../node_modules/.pnpm/@swc+helpers@0.5.15/node_modules/@swc/helpers/esm/_construct.js","../../../node_modules/.pnpm/@swc+helpers@0.5.15/node_modules/@swc/helpers/esm/_get_prototype_of.js","../../../node_modules/.pnpm/@swc+helpers@0.5.15/node_modules/@swc/helpers/esm/_is_native_function.js","../../../node_modules/.pnpm/@swc+helpers@0.5.15/node_modules/@swc/helpers/esm/_wrap_native_super.js","../src/GSError.ts","../src/ShaderLabUtils.ts","../src/common/BaseToken.ts","../src/lexer/Utils.ts","../../../node_modules/.pnpm/@swc+helpers@0.5.15/node_modules/@swc/helpers/esm/_create_class.js","../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/common/Enums.ts","../src/parser/builtin/functions.ts","../src/parser/builtin/variables.ts","../src/lalr/StateItem.ts","../src/lalr/State.ts","../src/ParserUtils.ts","../src/parser/types.ts","../src/parser/AST.ts","../src/lalr/Utils.ts","../src/lalr/CFG.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/sourceMap/index.ts","../src/preprocessor/Utils.ts","../src/preprocessor/PpScanner.ts","../src/preprocessor/PpParser.ts","../src/preprocessor/Preprocessor.ts","../src/codeGen/VisitorContext.ts","../src/TempArray.ts","../src/codeGen/CodeGenVisitor.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/_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","function _is_native_reflect_construct() {\n // Since Reflect.construct can't be properly polyfilled, some\n // implementations (e.g. core-js@2) don't set the correct internal slots.\n // Those polyfills don't allow us to subclass built-ins, so we need to\n // use our fallback implementation.\n try {\n // If the internal slots aren't set, this throws an error similar to\n // TypeError: this is not a Boolean object.\n var result = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function() {}));\n } catch (_) {}\n return (_is_native_reflect_construct = function() {\n return !!result;\n })();\n}\n\nexport { _is_native_reflect_construct as _ };\n","import { _ as _is_native_reflect_construct } from \"./_is_native_reflect_construct.js\";\nimport { _ as _set_prototype_of } from \"./_set_prototype_of.js\";\nfunction _construct(Parent, args, Class) {\n if (_is_native_reflect_construct()) _construct = Reflect.construct;\n else {\n _construct = function construct(Parent, args, Class) {\n var a = [null];\n a.push.apply(a, args);\n var Constructor = Function.bind.apply(Parent, a);\n var instance = new Constructor();\n\n if (Class) _set_prototype_of(instance, Class.prototype);\n\n return instance;\n };\n }\n\n return _construct.apply(null, arguments);\n}\nexport { _construct as _ };\n","function _get_prototype_of(o) {\n _get_prototype_of = Object.setPrototypeOf ? Object.getPrototypeOf : function getPrototypeOf(o) {\n return o.__proto__ || Object.getPrototypeOf(o);\n };\n\n return _get_prototype_of(o);\n}\nexport { _get_prototype_of as _ };\n","function _is_native_function(fn) {\n return Function.toString.call(fn).indexOf(\"[native code]\") !== -1;\n}\nexport { _is_native_function as _ };\n","import { _ as _construct } from \"./_construct.js\";\nimport { _ as _get_prototype_of } from \"./_get_prototype_of.js\";\nimport { _ as _is_native_function } from \"./_is_native_function.js\";\nimport { _ as _set_prototype_of } from \"./_set_prototype_of.js\";\n\nfunction _wrap_native_super(Class) {\n var _cache = typeof Map === \"function\" ? new Map() : undefined;\n _wrap_native_super = function(Class) {\n if (Class === null || !_is_native_function(Class)) return Class;\n if (typeof Class !== \"function\") throw new TypeError(\"Super expression must either be null or a function\");\n if (typeof _cache !== \"undefined\") {\n if (_cache.has(Class)) return _cache.get(Class);\n _cache.set(Class, Wrapper);\n }\n\n function Wrapper() {\n return _construct(Class, arguments, _get_prototype_of(this).constructor);\n }\n Wrapper.prototype = Object.create(Class.prototype, { constructor: { value: Wrapper, enumerable: false, writable: true, configurable: true } });\n\n return _set_prototype_of(Wrapper, Class);\n };\n\n return _wrap_native_super(Class);\n}\nexport { _wrap_native_super as _ };\n","// #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 { 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","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","export enum EShaderStage {\n VERTEX,\n FRAGMENT,\n ALL\n}\n","import { EKeyword, GalaceanDataType, TypeAny } from \"../../common\";\nimport { EShaderStage } from \"../../common/Enums\";\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\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, EKeyword.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, EKeyword.FLOAT);\nBuiltinFunction._create(\"min\", EGenType.GenIntType, EGenType.GenIntType, EGenType.GenIntType);\nBuiltinFunction._create(\"min\", EGenType.GenIntType, EGenType.GenIntType, EKeyword.INT);\nBuiltinFunction._create(\"min\", EGenType.GenUintType, EGenType.GenUintType, EGenType.GenUintType);\nBuiltinFunction._create(\"min\", EGenType.GenUintType, EGenType.GenUintType, EKeyword.UINT);\nBuiltinFunction._create(\"max\", EGenType.GenType, EGenType.GenType, EGenType.GenType);\nBuiltinFunction._create(\"max\", EGenType.GenType, EGenType.GenType, EKeyword.FLOAT);\nBuiltinFunction._create(\"max\", EGenType.GenIntType, EGenType.GenIntType, EGenType.GenIntType);\nBuiltinFunction._create(\"max\", EGenType.GenIntType, EGenType.GenIntType, EKeyword.INT);\nBuiltinFunction._create(\"clamp\", EGenType.GenType, EGenType.GenType, EGenType.GenType, EGenType.GenType);\nBuiltinFunction._create(\"clamp\", EGenType.GenType, EGenType.GenType, EKeyword.FLOAT, EKeyword.FLOAT);\nBuiltinFunction._create(\"clamp\", EGenType.GenIntType, EGenType.GenIntType, EGenType.GenIntType, EGenType.GenIntType);\nBuiltinFunction._create(\"clamp\", EGenType.GenIntType, EGenType.GenIntType, EKeyword.INT, EKeyword.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, EKeyword.UINT, EKeyword.UINT);\nBuiltinFunction._create(\"mix\", EGenType.GenType, EGenType.GenType, EGenType.GenType, EGenType.GenType);\nBuiltinFunction._create(\"mix\", EGenType.GenType, EGenType.GenType, EGenType.GenType, EKeyword.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, EKeyword.FLOAT, EGenType.GenType);\nBuiltinFunction._create(\"smoothstep\", EGenType.GenType, EGenType.GenType, EGenType.GenType, EGenType.GenType);\nBuiltinFunction._create(\"smoothstep\", EGenType.GenType, EKeyword.FLOAT, EKeyword.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\", EKeyword.UINT, EKeyword.VEC2);\nBuiltinFunction._create(\"unpackSnorm2x16\", EKeyword.VEC2, EKeyword.UINT);\nBuiltinFunction._create(\"packUnorm2x16\", EKeyword.UINT, EKeyword.VEC2);\nBuiltinFunction._create(\"unpackUnorm2x16\", EKeyword.VEC2, EKeyword.UINT);\nBuiltinFunction._create(\"packHalf2x16\", EKeyword.UINT, EKeyword.VEC2);\nBuiltinFunction._create(\"unpackHalf2x16\", EKeyword.VEC2, EKeyword.UINT);\n\nBuiltinFunction._create(\"length\", EKeyword.FLOAT, EGenType.GenType);\nBuiltinFunction._create(\"distance\", EKeyword.FLOAT, EGenType.GenType, EGenType.GenType);\nBuiltinFunction._create(\"dot\", EKeyword.FLOAT, EGenType.GenType, EGenType.GenType);\nBuiltinFunction._create(\"cross\", EKeyword.VEC3, EKeyword.VEC3, EKeyword.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, EKeyword.FLOAT);\nBuiltinFunction._create(\"matrixCompMult\", EGenType.Mat, EGenType.Mat, EGenType.Mat);\nBuiltinFunction._create(\"outerProduct\", EKeyword.MAT2, EKeyword.VEC2, EKeyword.VEC2);\nBuiltinFunction._create(\"outerProduct\", EKeyword.MAT3, EKeyword.VEC3, EKeyword.VEC3);\nBuiltinFunction._create(\"outerProduct\", EKeyword.MAT4, EKeyword.VEC4, EKeyword.VEC4);\n\nBuiltinFunction._create(\"outerProduct\", EKeyword.MAT2X3, EKeyword.VEC3, EKeyword.VEC2);\nBuiltinFunction._create(\"outerProduct\", EKeyword.MAT3X2, EKeyword.VEC2, EKeyword.VEC3);\n\nBuiltinFunction._create(\"outerProduct\", EKeyword.MAT2X4, EKeyword.VEC4, EKeyword.VEC2);\nBuiltinFunction._create(\"outerProduct\", EKeyword.MAT4X2, EKeyword.VEC2, EKeyword.VEC4);\n\nBuiltinFunction._create(\"outerProduct\", EKeyword.MAT3X4, EKeyword.VEC4, EKeyword.VEC3);\nBuiltinFunction._create(\"outerProduct\", EKeyword.MAT4X3, EKeyword.VEC3, EKeyword.VEC4);\n\nBuiltinFunction._create(\"transpose\", EKeyword.MAT2, EKeyword.MAT2);\nBuiltinFunction._create(\"transpose\", EKeyword.MAT3, EKeyword.MAT3);\nBuiltinFunction._create(\"transpose\", EKeyword.MAT4, EKeyword.MAT4);\nBuiltinFunction._create(\"transpose\", EKeyword.MAT2X3, EKeyword.MAT3X2);\nBuiltinFunction._create(\"transpose\", EKeyword.MAT3X2, EKeyword.MAT2X3);\nBuiltinFunction._create(\"transpose\", EKeyword.MAT4X2, EKeyword.MAT2X4);\nBuiltinFunction._create(\"transpose\", EKeyword.MAT2X4, EKeyword.MAT4X2);\nBuiltinFunction._create(\"transpose\", EKeyword.MAT3X4, EKeyword.MAT4X3);\nBuiltinFunction._create(\"transpose\", EKeyword.MAT4X3, EKeyword.MAT3X4);\n\nBuiltinFunction._create(\"determinant\", EKeyword.FLOAT, EKeyword.MAT2);\nBuiltinFunction._create(\"determinant\", EKeyword.FLOAT, EKeyword.MAT3);\nBuiltinFunction._create(\"determinant\", EKeyword.FLOAT, EKeyword.MAT4);\n\nBuiltinFunction._create(\"inverse\", EKeyword.MAT2, EKeyword.MAT2);\nBuiltinFunction._create(\"inverse\", EKeyword.MAT3, EKeyword.MAT3);\nBuiltinFunction._create(\"inverse\", EKeyword.MAT4, EKeyword.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\", EKeyword.BOOL, EGenType.BoolVec);\nBuiltinFunction._create(\"all\", EKeyword.BOOL, EGenType.BoolVec);\nBuiltinFunction._create(\"not\", EGenType.BoolVec, EGenType.BoolVec);\n\nBuiltinFunction._create(\"textureSize\", EKeyword.IVEC2, EGenType.GSampler2D, EKeyword.INT);\nBuiltinFunction._create(\"textureSize\", EKeyword.IVEC3, EGenType.GSampler3D, EKeyword.INT);\nBuiltinFunction._create(\"textureSize\", EKeyword.IVEC2, EGenType.GSamplerCube, EKeyword.INT);\n\nBuiltinFunction._create(\"textureSize\", EKeyword.IVEC2, EKeyword.SAMPLER2D_SHADOW, EKeyword.INT);\nBuiltinFunction._create(\"textureSize\", EKeyword.IVEC2, EKeyword.SAMPLER_CUBE_SHADOW, EKeyword.INT);\n\nBuiltinFunction._create(\"textureSize\", EKeyword.IVEC3, EGenType.GSampler2DArray, EKeyword.INT);\nBuiltinFunction._create(\"textureSize\", EKeyword.IVEC3, EKeyword.SAMPLER2D_ARRAY_SHADOW, EKeyword.INT);\n\nBuiltinFunction._create(\"texture2D\", EKeyword.VEC4, EKeyword.SAMPLER2D, EKeyword.VEC2);\nBuiltinFunction._create(\"texture2D\", EKeyword.VEC4, EKeyword.SAMPLER2D, EKeyword.VEC2, EKeyword.FLOAT);\n\nBuiltinFunction._create(\"texture\", EGenType.GVec4, EGenType.GSampler2D, EKeyword.VEC2, EKeyword.FLOAT);\nBuiltinFunction._create(\"texture\", EGenType.GVec4, EGenType.GSampler2D, EKeyword.VEC2);\nBuiltinFunction._create(\"texture\", EGenType.GVec4, EGenType.GSampler3D, EKeyword.VEC3, EKeyword.FLOAT);\nBuiltinFunction._create(\"texture\", EGenType.GVec4, EGenType.GSampler3D, EKeyword.VEC3);\n\nBuiltinFunction._create(\"texture\", EGenType.GVec4, EGenType.GSamplerCube, EKeyword.VEC3, EKeyword.FLOAT);\nBuiltinFunction._create(\"texture\", EGenType.GVec4, EGenType.GSamplerCube, EKeyword.VEC3);\n\nBuiltinFunction._create(\"texture\", EKeyword.FLOAT, EKeyword.SAMPLER2D_SHADOW, EKeyword.VEC3, EKeyword.FLOAT);\nBuiltinFunction._create(\"texture\", EKeyword.FLOAT, EKeyword.SAMPLER2D_SHADOW, EKeyword.VEC3);\n\nBuiltinFunction._create(\"texture\", EKeyword.FLOAT, EKeyword.SAMPLER_CUBE_SHADOW, EKeyword.VEC4, EKeyword.FLOAT);\nBuiltinFunction._create(\"texture\", EKeyword.FLOAT, EKeyword.SAMPLER_CUBE_SHADOW, EKeyword.VEC4);\n\nBuiltinFunction._create(\"texture\", EGenType.GVec4, EKeyword.SAMPLER2D_ARRAY, EKeyword.VEC3, EKeyword.FLOAT);\nBuiltinFunction._create(\"texture\", EGenType.GVec4, EKeyword.SAMPLER2D_ARRAY, EKeyword.VEC3);\n\nBuiltinFunction._create(\"texture\", EKeyword.FLOAT, EKeyword.SAMPLER2D_ARRAY_SHADOW, EKeyword.VEC4);\n\nBuiltinFunction._create(\"textureProj\", EGenType.GVec4, EGenType.GSampler2D, EKeyword.VEC3, EKeyword.FLOAT);\nBuiltinFunction._create(\"textureProj\", EGenType.GVec4, EGenType.GSampler2D, EKeyword.VEC3);\nBuiltinFunction._create(\"textureProj\", EGenType.GVec4, EGenType.GSampler2D, EKeyword.VEC4, EKeyword.FLOAT);\nBuiltinFunction._create(\"textureProj\", EGenType.GVec4, EGenType.GSampler2D, EKeyword.VEC4);\nBuiltinFunction._create(\"textureProj\", EGenType.GVec4, EGenType.GSampler3D, EKeyword.VEC4, EKeyword.FLOAT);\nBuiltinFunction._create(\"textureProj\", EGenType.GVec4, EGenType.GSampler3D, EKeyword.VEC4);\n\nBuiltinFunction._create(\"textureProj\", EKeyword.FLOAT, EKeyword.SAMPLER2D_SHADOW, EKeyword.VEC4, EKeyword.FLOAT);\nBuiltinFunction._create(\"textureProj\", EKeyword.FLOAT, EKeyword.SAMPLER2D_SHADOW, EKeyword.VEC4);\n\nBuiltinFunction._create(\"textureLod\", EGenType.GVec4, EGenType.GSampler2D, EKeyword.VEC2, EKeyword.FLOAT);\nBuiltinFunction._create(\"textureLod\", EGenType.GVec4, EGenType.GSampler3D, EKeyword.VEC3, EKeyword.FLOAT);\nBuiltinFunction._create(\"textureLod\", EGenType.GVec4, EGenType.GSamplerCube, EKeyword.VEC3, EKeyword.FLOAT);\nBuiltinFunction._create(\"textureLod\", EKeyword.FLOAT, EKeyword.SAMPLER2D_SHADOW, EKeyword.VEC3, EKeyword.FLOAT);\nBuiltinFunction._create(\"textureLod\", EGenType.GVec4, EGenType.GSampler2DArray, EKeyword.VEC3, EKeyword.FLOAT);\nBuiltinFunction._create(\"texture2DLodEXT\", EGenType.GVec4, EGenType.GSampler2D, EKeyword.VEC2, EKeyword.FLOAT);\nBuiltinFunction._create(\"texture2DLodEXT\", EGenType.GVec4, EGenType.GSampler3D, EKeyword.VEC3, EKeyword.FLOAT);\n\nBuiltinFunction._create(\"textureCube\", EKeyword.SAMPLER_CUBE, EKeyword.VEC3);\nBuiltinFunction._create(\"textureCube\", EKeyword.SAMPLER_CUBE, EKeyword.VEC3, EKeyword.FLOAT);\nBuiltinFunction._create(\"textureCubeLod\", EKeyword.SAMPLER_CUBE, EKeyword.VEC3, EKeyword.FLOAT);\nBuiltinFunction._create(\"textureCubeLodEXT\", EGenType.GVec4, EGenType.GSamplerCube, EKeyword.VEC3, EKeyword.FLOAT);\n\nBuiltinFunction._create(\n \"textureOffset\",\n EGenType.GVec4,\n EGenType.GSampler2D,\n EKeyword.VEC2,\n EKeyword.IVEC2,\n EKeyword.FLOAT\n);\nBuiltinFunction._create(\"textureOffset\", EGenType.GVec4, EGenType.GSampler2D, EKeyword.VEC2, EKeyword.IVEC2);\n\nBuiltinFunction._create(\n \"textureOffset\",\n EGenType.GVec4,\n EGenType.GSampler3D,\n EKeyword.VEC3,\n EKeyword.IVEC3,\n EKeyword.FLOAT\n);\nBuiltinFunction._create(\"textureOffset\", EGenType.GVec4, EGenType.GSampler3D, EKeyword.VEC3, EKeyword.IVEC3);\n\nBuiltinFunction._create(\n \"textureOffset\",\n EKeyword.FLOAT,\n EKeyword.SAMPLER2D_SHADOW,\n EKeyword.VEC3,\n EKeyword.IVEC2,\n EKeyword.FLOAT\n);\nBuiltinFunction._create(\"textureOffset\", EKeyword.FLOAT, EKeyword.SAMPLER2D_SHADOW, EKeyword.VEC3, EKeyword.IVEC2);\nBuiltinFunction._create(\n \"textureOffset\",\n EGenType.GVec4,\n EGenType.GSampler2DArray,\n EKeyword.VEC3,\n EKeyword.IVEC2,\n EKeyword.FLOAT\n);\nBuiltinFunction._create(\"textureOffset\", EGenType.GVec4, EGenType.GSampler2DArray, EKeyword.VEC3, EKeyword.IVEC2);\n\nBuiltinFunction._create(\"texelFetch\", EGenType.GVec4, EGenType.GSampler2D, EKeyword.IVEC2, EKeyword.INT);\nBuiltinFunction._create(\"texelFetch\", EGenType.GVec4, EGenType.GSampler3D, EKeyword.IVEC3, EKeyword.INT);\nBuiltinFunction._create(\"texelFetch\", EGenType.GVec4, EGenType.GSampler2DArray, EKeyword.IVEC3, EKeyword.INT);\n\nBuiltinFunction._create(\n \"texelFetchOffset\",\n EGenType.GVec4,\n EGenType.GSampler2D,\n EKeyword.IVEC2,\n EKeyword.INT,\n EKeyword.IVEC2\n);\nBuiltinFunction._create(\n \"texelFetchOffset\",\n EGenType.GVec4,\n EGenType.GSampler3D,\n EKeyword.IVEC3,\n EKeyword.INT,\n EKeyword.IVEC3\n);\nBuiltinFunction._create(\n \"texelFetchOffset\",\n EGenType.GVec4,\n EGenType.GSampler2DArray,\n EKeyword.IVEC3,\n EKeyword.INT,\n EKeyword.IVEC2\n);\n\nBuiltinFunction._create(\n \"textureProjOffset\",\n EGenType.GVec4,\n EGenType.GSampler2D,\n EKeyword.VEC3,\n EKeyword.IVEC2,\n EKeyword.FLOAT\n);\nBuiltinFunction._create(\"textureProjOffset\", EGenType.GVec4, EGenType.GSampler2D, EKeyword.VEC3, EKeyword.IVEC2);\n\nBuiltinFunction._create(\n \"textureProjOffset\",\n EGenType.GVec4,\n EGenType.GSampler2D,\n EKeyword.VEC4,\n EKeyword.IVEC2,\n EKeyword.FLOAT\n);\nBuiltinFunction._create(\"textureProjOffset\", EGenType.GVec4, EGenType.GSampler2D, EKeyword.VEC4, EKeyword.IVEC2);\n\nBuiltinFunction._create(\n \"textureProjOffset\",\n EGenType.GVec4,\n EGenType.GSampler3D,\n EKeyword.VEC4,\n EKeyword.IVEC3,\n EKeyword.FLOAT\n);\nBuiltinFunction._create(\"textureProjOffset\", EGenType.GVec4, EGenType.GSampler3D, EKeyword.VEC4, EKeyword.IVEC3);\n\nBuiltinFunction._create(\n \"textureProjOffset\",\n EKeyword.FLOAT,\n EKeyword.SAMPLER2D_SHADOW,\n EKeyword.VEC4,\n EKeyword.IVEC2,\n EKeyword.FLOAT\n);\nBuiltinFunction._create(\"textureProjOffset\", EKeyword.FLOAT, EKeyword.SAMPLER2D_SHADOW, EKeyword.VEC4, EKeyword.IVEC2);\n\nBuiltinFunction._create(\n \"textureLodOffset\",\n EGenType.GVec4,\n EGenType.GSampler2D,\n EKeyword.VEC2,\n EKeyword.FLOAT,\n EKeyword.IVEC2\n);\nBuiltinFunction._create(\n \"textureLodOffset\",\n EGenType.GVec4,\n EGenType.GSampler3D,\n EKeyword.VEC3,\n EKeyword.FLOAT,\n EKeyword.IVEC3\n);\n\nBuiltinFunction._create(\n \"textureLodOffset\",\n EKeyword.FLOAT,\n EKeyword.SAMPLER2D_SHADOW,\n EKeyword.VEC3,\n EKeyword.FLOAT,\n EKeyword.IVEC2\n);\nBuiltinFunction._create(\n \"textureLodOffset\",\n EGenType.GVec4,\n EGenType.GSampler2DArray,\n EKeyword.VEC3,\n EKeyword.FLOAT,\n EKeyword.IVEC2\n);\n\nBuiltinFunction._create(\"textureProjLod\", EGenType.GVec4, EGenType.GSampler2D, EKeyword.VEC3, EKeyword.FLOAT);\nBuiltinFunction._create(\"textureProjLod\", EGenType.GVec4, EGenType.GSampler2D, EKeyword.VEC4, EKeyword.FLOAT);\nBuiltinFunction._create(\"textureProjLod\", EGenType.GVec4, EGenType.GSampler3D, EKeyword.VEC4, EKeyword.FLOAT);\nBuiltinFunction._create(\"textureProjLod\", EKeyword.FLOAT, EKeyword.SAMPLER2D_SHADOW, EKeyword.VEC4, EKeyword.FLOAT);\n\nBuiltinFunction._create(\n \"textureProjLodOffset\",\n EGenType.GVec4,\n EGenType.GSampler2D,\n EKeyword.VEC3,\n EKeyword.FLOAT,\n EKeyword.IVEC2\n);\nBuiltinFunction._create(\n \"textureProjLodOffset\",\n EGenType.GVec4,\n EGenType.GSampler2D,\n EKeyword.VEC4,\n EKeyword.FLOAT,\n EKeyword.IVEC2\n);\nBuiltinFunction._create(\n \"textureProjLodOffset\",\n EGenType.GVec4,\n EGenType.GSampler3D,\n EKeyword.VEC4,\n EKeyword.FLOAT,\n EKeyword.IVEC3\n);\nBuiltinFunction._create(\n \"textureProjLodOffset\",\n EKeyword.FLOAT,\n EKeyword.SAMPLER2D_SHADOW,\n EKeyword.VEC4,\n EKeyword.FLOAT,\n EKeyword.IVEC2\n);\n\nBuiltinFunction._create(\n \"textureGrad\",\n EGenType.GVec4,\n EGenType.GSampler2D,\n EKeyword.VEC2,\n EKeyword.VEC2,\n EKeyword.VEC2\n);\nBuiltinFunction._create(\n \"textureGrad\",\n EGenType.GVec4,\n EGenType.GSampler3D,\n EKeyword.VEC3,\n EKeyword.VEC3,\n EKeyword.VEC3\n);\nBuiltinFunction._create(\n \"textureGrad\",\n EGenType.GVec4,\n EGenType.GSamplerCube,\n EKeyword.VEC3,\n EKeyword.VEC3,\n EKeyword.VEC3\n);\n\nBuiltinFunction._create(\n \"textureGrad\",\n EKeyword.FLOAT,\n EKeyword.SAMPLER2D_SHADOW,\n EKeyword.VEC3,\n EKeyword.VEC2,\n EKeyword.VEC2\n);\nBuiltinFunction._create(\n \"textureGrad\",\n EKeyword.FLOAT,\n EKeyword.SAMPLER_CUBE_SHADOW,\n EKeyword.VEC4,\n EKeyword.VEC3,\n EKeyword.VEC3\n);\n\nBuiltinFunction._create(\n \"textureGrad\",\n EGenType.GVec4,\n EGenType.GSampler2DArray,\n EKeyword.VEC3,\n EKeyword.VEC2,\n EKeyword.VEC2\n);\nBuiltinFunction._create(\n \"textureGrad\",\n EKeyword.FLOAT,\n EKeyword.SAMPLER2D_ARRAY_SHADOW,\n EKeyword.VEC4,\n EKeyword.VEC2,\n EKeyword.VEC2\n);\n\nBuiltinFunction._create(\n \"textureGradOffset\",\n EGenType.GVec4,\n EGenType.GSampler2D,\n EKeyword.VEC2,\n EKeyword.VEC2,\n EKeyword.VEC2,\n EKeyword.IVEC2\n);\nBuiltinFunction._create(\n \"textureGradOffset\",\n EGenType.GVec4,\n EGenType.GSampler3D,\n EKeyword.VEC3,\n EKeyword.VEC3,\n EKeyword.VEC3,\n EKeyword.IVEC3\n);\nBuiltinFunction._create(\n \"textureGradOffset\",\n EKeyword.FLOAT,\n EKeyword.SAMPLER2D_SHADOW,\n EKeyword.VEC3,\n EKeyword.VEC2,\n EKeyword.VEC2,\n EKeyword.IVEC2\n);\nBuiltinFunction._create(\n \"textureGradOffset\",\n EGenType.GVec4,\n EGenType.GSampler2DArray,\n EKeyword.VEC3,\n EKeyword.VEC2,\n EKeyword.VEC2,\n EKeyword.IVEC2\n);\nBuiltinFunction._create(\n \"textureGradOffset\",\n EKeyword.FLOAT,\n EKeyword.SAMPLER2D_ARRAY_SHADOW,\n EKeyword.VEC3,\n EKeyword.VEC2,\n EKeyword.VEC2,\n EKeyword.IVEC2\n);\n\nBuiltinFunction._create(\n \"textureProjGrad\",\n EGenType.GVec4,\n EGenType.GSampler2D,\n EKeyword.VEC3,\n EKeyword.VEC2,\n EKeyword.VEC2\n);\nBuiltinFunction._create(\n \"textureProjGrad\",\n EGenType.GVec4,\n EGenType.GSampler2D,\n EKeyword.VEC4,\n EKeyword.VEC2,\n EKeyword.VEC2\n);\nBuiltinFunction._create(\n \"textureProjGrad\",\n EGenType.GVec4,\n EGenType.GSampler3D,\n EKeyword.VEC4,\n EKeyword.VEC3,\n EKeyword.VEC3\n);\nBuiltinFunction._create(\n \"textureProjGrad\",\n EKeyword.FLOAT,\n EKeyword.SAMPLER2D_SHADOW,\n EKeyword.VEC4,\n EKeyword.VEC2,\n EKeyword.VEC2\n);\n\nBuiltinFunction._create(\n \"textureProjGradOffset\",\n EGenType.GVec4,\n EGenType.GSampler2D,\n EKeyword.VEC3,\n EKeyword.VEC2,\n EKeyword.VEC2,\n EKeyword.IVEC2\n);\nBuiltinFunction._create(\n \"textureProjGradOffset\",\n EGenType.GVec4,\n EGenType.GSampler2D,\n EKeyword.VEC4,\n EKeyword.VEC2,\n EKeyword.VEC2,\n EKeyword.IVEC2\n);\nBuiltinFunction._create(\n \"textureProjGradOffset\",\n EGenType.GVec4,\n EGenType.GSampler3D,\n EKeyword.VEC4,\n EKeyword.VEC3,\n EKeyword.VEC3,\n EKeyword.IVEC3\n);\nBuiltinFunction._create(\n \"textureProjGradOffset\",\n EKeyword.FLOAT,\n EKeyword.SAMPLER2D_SHADOW,\n EKeyword.VEC4,\n EKeyword.VEC2,\n EKeyword.VEC2,\n EKeyword.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 { EKeyword, GalaceanDataType, TypeAny } from \"../../common\";\nimport { EShaderStage } from \"../../common/Enums\";\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) {\n return BuiltinVariableTable.get(ident);\n }\n}\n\nBuiltinVariable.createVariable(\"gl_VertexID\", EKeyword.INT, EShaderStage.VERTEX);\nBuiltinVariable.createVariable(\"gl_InstanceID\", EKeyword.INT, EShaderStage.VERTEX);\nBuiltinVariable.createVariable(\"gl_Position\", EKeyword.VEC4, EShaderStage.VERTEX);\nBuiltinVariable.createVariable(\"gl_PointSize\", EKeyword.FLOAT, EShaderStage.VERTEX);\n\nBuiltinVariable.createVariable(\"gl_FragCoord\", EKeyword.VEC4, EShaderStage.FRAGMENT);\nBuiltinVariable.createVariable(\"gl_FrontFacing\", EKeyword.BOOL, EShaderStage.FRAGMENT);\nBuiltinVariable.createVariable(\"gl_FragDepth\", EKeyword.FLOAT, EShaderStage.FRAGMENT);\nBuiltinVariable.createVariable(\"gl_PointCoord\", EKeyword.VEC2, EShaderStage.FRAGMENT);\nBuiltinVariable.createVariable(\"gl_FragColor\", EKeyword.VEC4, EShaderStage.FRAGMENT);\nBuiltinVariable.createVariable(\"gl_FragData\", EKeyword.VEC4_ARRAY, EShaderStage.FRAGMENT);\n\nBuiltinVariable.createVariable(\"gl_MaxVertexAttribs\", EKeyword.INT);\nBuiltinVariable.createVariable(\"gl_MaxVertexUniformVectors\", EKeyword.INT);\nBuiltinVariable.createVariable(\"gl_MaxVertexOutputVectors\", EKeyword.INT);\nBuiltinVariable.createVariable(\"gl_MaxFragmentInputVectors\", EKeyword.INT);\nBuiltinVariable.createVariable(\"gl_MaxVertexTextureImageUnits\", EKeyword.INT);\nBuiltinVariable.createVariable(\"gl_MaxCombinedTextureImageUnits\", EKeyword.INT);\nBuiltinVariable.createVariable(\"gl_MaxTextureImageUnits\", EKeyword.INT);\nBuiltinVariable.createVariable(\"gl_MaxFragmentUniformVectors\", EKeyword.INT);\nBuiltinVariable.createVariable(\"gl_MaxDrawBuffers\", EKeyword.INT);\nBuiltinVariable.createVariable(\"gl_MinProgramTexelOffset\", EKeyword.INT);\nBuiltinVariable.createVariable(\"gl_MaxProgramTexelOffset\", EKeyword.INT);\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 { 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 { 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 { 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/ShaderRange\";\n\n// #if _VERBOSE\nexport class BlockInfo {\n readonly sourceFile: string;\n readonly rangeInFile?: ShaderRange;\n readonly sourceMap?: PpSourceMap;\n\n constructor(sourceFile?: string, rangeInFile?: ShaderRange, sourceMap?: PpSourceMap) {\n this.sourceFile = sourceFile ?? \"__main__\";\n this.rangeInFile = rangeInFile;\n this.sourceMap = sourceMap;\n }\n}\n\nexport class MapRange {\n sourceLoc: { block: BlockInfo; rangeInBlock: ShaderRange };\n generatedLoc: { start: number; end: number };\n\n constructor(sourceBlock: BlockInfo, rangeInBlock: ShaderRange, generatedLoc: { start: number; end: number }) {\n this.sourceLoc = { block: sourceBlock, rangeInBlock };\n this.generatedLoc = generatedLoc;\n }\n\n getSourceIndex(generatedIdx: number) {\n const { block, rangeInBlock } = this.sourceLoc;\n if (block.sourceMap) {\n if (block.sourceFile !== \"__main__\") return block.sourceMap.map(generatedIdx - this.generatedLoc.start);\n else if (rangeInBlock) {\n return {\n sourceFile: block.sourceFile,\n index: (block.rangeInFile?.start.index ?? 0) + rangeInBlock.start.index\n };\n }\n }\n\n return {\n index: generatedIdx - this.generatedLoc.start + rangeInBlock.start.index + (block.rangeInFile?.start.index ?? 0),\n sourceFile: this.sourceLoc.block.sourceFile\n };\n }\n}\n\nexport default class PpSourceMap {\n readonly mapRanges: MapRange[] = [];\n\n static rangeContains(range: MapRange[\"generatedLoc\"], index: number) {\n return range.start <= index && range.end > index;\n }\n\n addMapRange(mapRange: MapRange) {\n this.mapRanges.push(mapRange);\n }\n\n /**\n * @returns index\n */\n map(index: number): { sourceFile: string; index: number } {\n let curRange: MapRange | undefined;\n for (const range of this.mapRanges) {\n const { generatedLoc } = range;\n if (PpSourceMap.rangeContains(generatedLoc, index)) {\n return range.getSourceIndex(index);\n } else if (range.generatedLoc.start < index) {\n curRange = range;\n continue;\n } else {\n break;\n }\n }\n if (!curRange) return { sourceFile: \"__main__\", index };\n return {\n index: index - curRange.generatedLoc.end + curRange.sourceLoc.rangeInBlock.end.index,\n sourceFile: curRange.sourceLoc.block.sourceFile\n };\n }\n}\n// #endif\n","import { 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 { 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","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 _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","line","column","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","GSError","name","message","location","file","source","toString","lines","split","diagnosticMessage","lineSplit","wrappingLineCount","i","n","remarkStart","remarkEnd","length","paddingLength","remarkLength","Math","max","repeat","Error","GSErrorName","ShaderLabUtils","createObjectPool","type","pool","ClearableObjectPool","_shaderLabObjectPoolSet","push","clearAllShaderLabObjectPool","clear","createGSError","errorName","BaseToken","lexeme","arg","ShaderLab","createPosition","createRange","EOF","LexerUtils","isNum","charCode","isLetter","isAlpha","isPpCharacters","isSpace","BaseScanner","kws","_currentIndex","_column","_line","_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","error","join","ScannerError","Logger","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","errors","addTranslationRule","pid","rule","getTranslationRule","lookupSymbolBy","symbolTable","ret","reportError","loc","CompilationError","_processingPassText","shaderData","NoneTerminal","Production","goal","derivation","id","_id","Grammar","productions","startSymbol","unshift","START","getProductionList","nonTerminal","isNullableNT","NT","find","EPSILON","getProductionByID","create","_ps","map","gsl","slice","EShaderStage","isGenericType","t","BuiltinFunctionTable","BuiltinFunction","args","_returnType","getReturnType","fn","genType","_create","ALL","list","_createWithScop","getFn","parameterTypes","fnArgs","argLength","found","curFnArg","_realReturnType","realReturnType","MAT2X3","MAT3X2","MAT2X4","MAT4X2","MAT3X4","MAT4X3","FRAGMENT","BuiltinVariableTable","BuiltinVariable","createVariable","getVar","VERTEX","VEC4_ARRAY","StateItem","production","position","lookahead","_needReInfer","lookaheadSet","Set","la","add","addLookahead","ts","has","needReInfer","symbolByOffset","canReduce","coreItem","GrammarUtils","Array","from","v","curSymbol","nextSymbol","State","cores","closured","_stateItemPool","_items","it","itemMapKey","getStateItemMapKey","createStateItem","mapId","newItem","cacheKey","getMapKey","state","closureMap","core","newState","items","ParserUtils","unwrapNodeByType","node","child","children","Token","nt","typeCompatible","ta","tb","isTerminal","printStatePool","logPath","output","console","log","values","tmp","padEnd","psItem","SymbolType","StructProp","typeInfo","mrtIndex","ASTNodeDecorator","ASTNode","prototype","TreeNode","_location","_children","init","codeGen","visitor","defaultCodeGen","semanticAnalyze","sa","_unwrapToken","TrivialNode","_ignore","ScopeBrace","scope_brace","ScopeEndBrace","scope_end_brace","JumpStatement","isFragReturnStatement","returnStatement","visitJumpStatement","jump_statement","ConditionOpt","conditionopt","ForRestStatement","for_rest_statement","Condition","condition","ForInitStatement","for_init_statement","IterationStatement","iteration_statement","SelectionStatement","selection_statement","ExpressionStatement","expression_statement","ExpressionAstNode","_type","InitializerList","initializer_list","Initializer","initializer","SingleDeclaration","childrenLen","fullyType","visitSingleDeclaration","single_declaration","FullySpecifiedType","_","fully_specified_type","TypeQualifier","type_qualifier","SingleTypeQualifier","qualifier","single_type_qualifier","BasicTypeQualifier","StorageQualifier","storage_qualifier","PrecisionQualifier","precision_qualifier","InterpolationQualifier","interpolation_qualifier","InvariantQualifier","invariant_qualifier","TypeSpecifier","arraySize","firstChild","size","isCustom","type_specifier","ArraySpecifier","integerConstantExpr","value","array_specifier","IntegerConstantExpressionOperator","operator","compute","a","b","integer_constant_expression_operator","IntegerConstantExpression","Number","symbolInfo","integer_constant_expression","TypeSpecifierNonArray","tt","type_specifier_nonarray","ExtBuiltinTypeSpecifierNonArray","ext_builtin_type_specifier_nonarray","InitDeclaratorList","childrenLength","initDeclList","init_declarator_list","IdentifierList","idList","curIdList","listIdLength","identifier_list","Declaration","visitDeclaration","declaration","FunctionProtoType","declarator","parameterList","parameterInfoList","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","SimpleStatement","simple_statement","CompoundStatement","compound_statement","CompoundStatementNoScope","compound_statement_no_scope","Statement","statement","StatementList","visitStatementList","statement_list","FunctionDefinition","statements","visitFunctionDefinition","function_definition","FunctionCall","visitFunctionCall","function_call","FunctionCallGeneric","fnSymbol","functionIdentifier","isBuiltin","paramList","FunctionCallParameterList","builtinFn","function_call_generic","paramNodes","expr","function_call_parameter_list","PrecisionSpecifier","precision_specifier","FunctionIdentifier","visitFunctionIdentifier","function_identifier","AssignmentExpression","assignment_expression","AssignmentOperator","assignment_operator","Expression","expression","PrimaryExpression","VariableIdentifier","primary_expression","PostfixExpression","visitPostfixExpression","postfix_expression","UnaryOperator","unary_operator","UnaryExpression","unary_expression","MultiplicativeExpression","multiplicative_expression","AdditiveExpression","additive_expression","ShiftExpression","shift_expression","RelationalExpression","relational_expression","EqualityExpression","equality_expression","AndExpression","and_expression","ExclusiveOrExpression","exclusive_or_expression","InclusiveOrExpression","inclusive_or_expression","LogicalAndExpression","logical_and_expression","LogicalXorExpression","logical_xor_expression","LogicalOrExpression","logical_or_expression","ConditionalExpression","conditional_expression","StructSpecifier","propList","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","builtinVar","visitVariableIdentifier","variable_identifier","GLShaderProgram","gs_shader_program","createProductionWithOptions","options","astTypePool","opt","addMapSetItem","k","isSubSet","sb","isActionEqual","action","target","printAction","actionInfo","Reduce","printProduction","deriv","gs","productionAndRules","global_declaration","variable_declaration_statement","AND_ASSIGN","createGrammar","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","Accept","_addAction","nextItem","Shift","table","terminal","exist","_computeFirstSetForNT","idx","findIndex","computingFS","len","curNT","firstSet","succeedFirstSet","ShaderTargetParser","_traceBackStack","sematicAnalyzer","SematicAnalyzer","parse","tokens","performance","now","traceBackStack","nextToken","next","loopCount","info","reduceProduction","translationRule","nextState","_printStack","str","_singleton","generator","curState","MacroDefine","macro","body","_argsLexemes","_replaceRegex","RegExp","expandFunctionBody","PreprocessorError","replace","m","indexOf","isFunction","EPpToken","EPpKeyword","PpKeyword","BlockInfo","sourceFile","rangeInFile","sourceMap","MapRange","sourceBlock","rangeInBlock","generatedLoc","sourceLoc","block","getSourceIndex","generatedIdx","PpSourceMap","mapRanges","addMapRange","mapRange","curRange","rangeContains","PpUtils","expand","segments","startIdx","seg","originSlice","generatedIdxEnd","assembleSegments","PpScanner","blockRange","macroLvl","scanDirective","expandOnToken","directive","_advanceToDirective","if","ifdef","ifndef","includes","endif","scanWordsUntilChar","nonLetterChar","scanWord","skipNonLetter","getShaderPosition","kw","scanQuotedString","string_const","scanToChar","char","scanMacroBranchChunk","startLvl","elif","else","chunk","nextDirective","scanPairedBlock","lc","rc","scanRemainMacro","peekNonSpace","scanInteger","integer","int_constant","scanLineRemain","comments","line_remain","commentRange","_skipComments","startsWith","PpParser","includeMap","basePathForIncludeKey","_definedMacros","_expandSegmentsStack","_branchMacros","addPredefinedMacro","_includeMap","_basePathForIncludeKey","_errors","tk","macroBody","scanner","_onToken","bind","define","_parseDefine","undef","_parseUndef","_parseIf","_parseIfNdef","_parseIfDef","include","_parseInclude","expandSegments","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","blockInfo","macroArgs","macroDefine","delete","curLvl","curIdx","Preprocessor","process","baseScanner","convertSourceIndex","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","_reportError","mrtLexeme","getFragDataCodeGen","getReferencedMRTPropText","call","paramInfoList","plainParams","fullType","_curFn","cmd","returnVar","returnFnCall","ReturnableObjectPool","defaultPrecision","GLESVisitor","_versionText","_extensions","_globalCodeArray","visitShaderProgram","vertexEntry","fragmentEntry","vertex","vertexMain","fragment","_fragmentMain","data","fnNode","stage","varyStruct","paramInfo","structSymbol","globalCodeArray","_getGlobalText","getAttributeDeclare","getVaryingDeclare","globalCode","sort","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","scanToCharacter","ContentSymbolTable","EngineType","RenderStateType","ShaderContentParser","_symbolTableStack","_newScope","subShaders","globalContents","renderStates","constantMap","variableMap","_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","err","_logErrors","lexer","parser","_parser","program","ShaderPlatformTarget","GLES100","_parseShaderContent","shaderSource","isEnabled","_shaderPositionPool","_shaderRangePool","version","mode"],"mappings":"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"}
1
+ {"version":3,"file":"browser.verbose.js","sources":["../../../node_modules/.pnpm/@swc+helpers@0.5.15/node_modules/@swc/helpers/esm/_array_like_to_array.js","../../../node_modules/.pnpm/@swc+helpers@0.5.15/node_modules/@swc/helpers/esm/_unsupported_iterable_to_array.js","../../../node_modules/.pnpm/@swc+helpers@0.5.15/node_modules/@swc/helpers/esm/_create_for_of_iterator_helper_loose.js","../../../node_modules/.pnpm/@swc+helpers@0.5.15/node_modules/@swc/helpers/esm/_set_prototype_of.js","../../../node_modules/.pnpm/@swc+helpers@0.5.15/node_modules/@swc/helpers/esm/_inherits.js","../../../node_modules/.pnpm/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","../../../node_modules/.pnpm/@swc+helpers@0.5.15/node_modules/@swc/helpers/esm/_is_native_reflect_construct.js","../../../node_modules/.pnpm/@swc+helpers@0.5.15/node_modules/@swc/helpers/esm/_construct.js","../../../node_modules/.pnpm/@swc+helpers@0.5.15/node_modules/@swc/helpers/esm/_get_prototype_of.js","../../../node_modules/.pnpm/@swc+helpers@0.5.15/node_modules/@swc/helpers/esm/_is_native_function.js","../../../node_modules/.pnpm/@swc+helpers@0.5.15/node_modules/@swc/helpers/esm/_wrap_native_super.js","../src/GSError.ts","../src/ShaderLabUtils.ts","../src/common/BaseToken.ts","../src/lexer/Utils.ts","../../../node_modules/.pnpm/@swc+helpers@0.5.15/node_modules/@swc/helpers/esm/_create_class.js","../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/common/Enums.ts","../src/parser/builtin/functions.ts","../src/parser/builtin/variables.ts","../src/lalr/StateItem.ts","../src/lalr/State.ts","../src/ParserUtils.ts","../src/parser/types.ts","../src/parser/AST.ts","../src/lalr/Utils.ts","../src/lalr/CFG.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/sourceMap/index.ts","../src/preprocessor/Utils.ts","../src/preprocessor/PpScanner.ts","../src/preprocessor/PpParser.ts","../src/preprocessor/Preprocessor.ts","../src/codeGen/VisitorContext.ts","../src/TempArray.ts","../src/codeGen/CodeGenVisitor.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/_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","function _is_native_reflect_construct() {\n // Since Reflect.construct can't be properly polyfilled, some\n // implementations (e.g. core-js@2) don't set the correct internal slots.\n // Those polyfills don't allow us to subclass built-ins, so we need to\n // use our fallback implementation.\n try {\n // If the internal slots aren't set, this throws an error similar to\n // TypeError: this is not a Boolean object.\n var result = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function() {}));\n } catch (_) {}\n return (_is_native_reflect_construct = function() {\n return !!result;\n })();\n}\n\nexport { _is_native_reflect_construct as _ };\n","import { _ as _is_native_reflect_construct } from \"./_is_native_reflect_construct.js\";\nimport { _ as _set_prototype_of } from \"./_set_prototype_of.js\";\nfunction _construct(Parent, args, Class) {\n if (_is_native_reflect_construct()) _construct = Reflect.construct;\n else {\n _construct = function construct(Parent, args, Class) {\n var a = [null];\n a.push.apply(a, args);\n var Constructor = Function.bind.apply(Parent, a);\n var instance = new Constructor();\n\n if (Class) _set_prototype_of(instance, Class.prototype);\n\n return instance;\n };\n }\n\n return _construct.apply(null, arguments);\n}\nexport { _construct as _ };\n","function _get_prototype_of(o) {\n _get_prototype_of = Object.setPrototypeOf ? Object.getPrototypeOf : function getPrototypeOf(o) {\n return o.__proto__ || Object.getPrototypeOf(o);\n };\n\n return _get_prototype_of(o);\n}\nexport { _get_prototype_of as _ };\n","function _is_native_function(fn) {\n return Function.toString.call(fn).indexOf(\"[native code]\") !== -1;\n}\nexport { _is_native_function as _ };\n","import { _ as _construct } from \"./_construct.js\";\nimport { _ as _get_prototype_of } from \"./_get_prototype_of.js\";\nimport { _ as _is_native_function } from \"./_is_native_function.js\";\nimport { _ as _set_prototype_of } from \"./_set_prototype_of.js\";\n\nfunction _wrap_native_super(Class) {\n var _cache = typeof Map === \"function\" ? new Map() : undefined;\n _wrap_native_super = function(Class) {\n if (Class === null || !_is_native_function(Class)) return Class;\n if (typeof Class !== \"function\") throw new TypeError(\"Super expression must either be null or a function\");\n if (typeof _cache !== \"undefined\") {\n if (_cache.has(Class)) return _cache.get(Class);\n _cache.set(Class, Wrapper);\n }\n\n function Wrapper() {\n return _construct(Class, arguments, _get_prototype_of(this).constructor);\n }\n Wrapper.prototype = Object.create(Class.prototype, { constructor: { value: Wrapper, enumerable: false, writable: true, configurable: true } });\n\n return _set_prototype_of(Wrapper, Class);\n };\n\n return _wrap_native_super(Class);\n}\nexport { _wrap_native_super as _ };\n","// #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 { 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","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","export enum EShaderStage {\n VERTEX,\n FRAGMENT,\n ALL\n}\n","import { EKeyword, GalaceanDataType, TypeAny } from \"../../common\";\nimport { EShaderStage } from \"../../common/Enums\";\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\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, EKeyword.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, EKeyword.FLOAT);\nBuiltinFunction._create(\"min\", EGenType.GenIntType, EGenType.GenIntType, EGenType.GenIntType);\nBuiltinFunction._create(\"min\", EGenType.GenIntType, EGenType.GenIntType, EKeyword.INT);\nBuiltinFunction._create(\"min\", EGenType.GenUintType, EGenType.GenUintType, EGenType.GenUintType);\nBuiltinFunction._create(\"min\", EGenType.GenUintType, EGenType.GenUintType, EKeyword.UINT);\nBuiltinFunction._create(\"max\", EGenType.GenType, EGenType.GenType, EGenType.GenType);\nBuiltinFunction._create(\"max\", EGenType.GenType, EGenType.GenType, EKeyword.FLOAT);\nBuiltinFunction._create(\"max\", EGenType.GenIntType, EGenType.GenIntType, EGenType.GenIntType);\nBuiltinFunction._create(\"max\", EGenType.GenIntType, EGenType.GenIntType, EKeyword.INT);\nBuiltinFunction._create(\"clamp\", EGenType.GenType, EGenType.GenType, EGenType.GenType, EGenType.GenType);\nBuiltinFunction._create(\"clamp\", EGenType.GenType, EGenType.GenType, EKeyword.FLOAT, EKeyword.FLOAT);\nBuiltinFunction._create(\"clamp\", EGenType.GenIntType, EGenType.GenIntType, EGenType.GenIntType, EGenType.GenIntType);\nBuiltinFunction._create(\"clamp\", EGenType.GenIntType, EGenType.GenIntType, EKeyword.INT, EKeyword.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, EKeyword.UINT, EKeyword.UINT);\nBuiltinFunction._create(\"mix\", EGenType.GenType, EGenType.GenType, EGenType.GenType, EGenType.GenType);\nBuiltinFunction._create(\"mix\", EGenType.GenType, EGenType.GenType, EGenType.GenType, EKeyword.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, EKeyword.FLOAT, EGenType.GenType);\nBuiltinFunction._create(\"smoothstep\", EGenType.GenType, EGenType.GenType, EGenType.GenType, EGenType.GenType);\nBuiltinFunction._create(\"smoothstep\", EGenType.GenType, EKeyword.FLOAT, EKeyword.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\", EKeyword.UINT, EKeyword.VEC2);\nBuiltinFunction._create(\"unpackSnorm2x16\", EKeyword.VEC2, EKeyword.UINT);\nBuiltinFunction._create(\"packUnorm2x16\", EKeyword.UINT, EKeyword.VEC2);\nBuiltinFunction._create(\"unpackUnorm2x16\", EKeyword.VEC2, EKeyword.UINT);\nBuiltinFunction._create(\"packHalf2x16\", EKeyword.UINT, EKeyword.VEC2);\nBuiltinFunction._create(\"unpackHalf2x16\", EKeyword.VEC2, EKeyword.UINT);\n\nBuiltinFunction._create(\"length\", EKeyword.FLOAT, EGenType.GenType);\nBuiltinFunction._create(\"distance\", EKeyword.FLOAT, EGenType.GenType, EGenType.GenType);\nBuiltinFunction._create(\"dot\", EKeyword.FLOAT, EGenType.GenType, EGenType.GenType);\nBuiltinFunction._create(\"cross\", EKeyword.VEC3, EKeyword.VEC3, EKeyword.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, EKeyword.FLOAT);\nBuiltinFunction._create(\"matrixCompMult\", EGenType.Mat, EGenType.Mat, EGenType.Mat);\nBuiltinFunction._create(\"outerProduct\", EKeyword.MAT2, EKeyword.VEC2, EKeyword.VEC2);\nBuiltinFunction._create(\"outerProduct\", EKeyword.MAT3, EKeyword.VEC3, EKeyword.VEC3);\nBuiltinFunction._create(\"outerProduct\", EKeyword.MAT4, EKeyword.VEC4, EKeyword.VEC4);\n\nBuiltinFunction._create(\"outerProduct\", EKeyword.MAT2X3, EKeyword.VEC3, EKeyword.VEC2);\nBuiltinFunction._create(\"outerProduct\", EKeyword.MAT3X2, EKeyword.VEC2, EKeyword.VEC3);\n\nBuiltinFunction._create(\"outerProduct\", EKeyword.MAT2X4, EKeyword.VEC4, EKeyword.VEC2);\nBuiltinFunction._create(\"outerProduct\", EKeyword.MAT4X2, EKeyword.VEC2, EKeyword.VEC4);\n\nBuiltinFunction._create(\"outerProduct\", EKeyword.MAT3X4, EKeyword.VEC4, EKeyword.VEC3);\nBuiltinFunction._create(\"outerProduct\", EKeyword.MAT4X3, EKeyword.VEC3, EKeyword.VEC4);\n\nBuiltinFunction._create(\"transpose\", EKeyword.MAT2, EKeyword.MAT2);\nBuiltinFunction._create(\"transpose\", EKeyword.MAT3, EKeyword.MAT3);\nBuiltinFunction._create(\"transpose\", EKeyword.MAT4, EKeyword.MAT4);\nBuiltinFunction._create(\"transpose\", EKeyword.MAT2X3, EKeyword.MAT3X2);\nBuiltinFunction._create(\"transpose\", EKeyword.MAT3X2, EKeyword.MAT2X3);\nBuiltinFunction._create(\"transpose\", EKeyword.MAT4X2, EKeyword.MAT2X4);\nBuiltinFunction._create(\"transpose\", EKeyword.MAT2X4, EKeyword.MAT4X2);\nBuiltinFunction._create(\"transpose\", EKeyword.MAT3X4, EKeyword.MAT4X3);\nBuiltinFunction._create(\"transpose\", EKeyword.MAT4X3, EKeyword.MAT3X4);\n\nBuiltinFunction._create(\"determinant\", EKeyword.FLOAT, EKeyword.MAT2);\nBuiltinFunction._create(\"determinant\", EKeyword.FLOAT, EKeyword.MAT3);\nBuiltinFunction._create(\"determinant\", EKeyword.FLOAT, EKeyword.MAT4);\n\nBuiltinFunction._create(\"inverse\", EKeyword.MAT2, EKeyword.MAT2);\nBuiltinFunction._create(\"inverse\", EKeyword.MAT3, EKeyword.MAT3);\nBuiltinFunction._create(\"inverse\", EKeyword.MAT4, EKeyword.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\", EKeyword.BOOL, EGenType.BoolVec);\nBuiltinFunction._create(\"all\", EKeyword.BOOL, EGenType.BoolVec);\nBuiltinFunction._create(\"not\", EGenType.BoolVec, EGenType.BoolVec);\n\nBuiltinFunction._create(\"textureSize\", EKeyword.IVEC2, EGenType.GSampler2D, EKeyword.INT);\nBuiltinFunction._create(\"textureSize\", EKeyword.IVEC3, EGenType.GSampler3D, EKeyword.INT);\nBuiltinFunction._create(\"textureSize\", EKeyword.IVEC2, EGenType.GSamplerCube, EKeyword.INT);\n\nBuiltinFunction._create(\"textureSize\", EKeyword.IVEC2, EKeyword.SAMPLER2D_SHADOW, EKeyword.INT);\nBuiltinFunction._create(\"textureSize\", EKeyword.IVEC2, EKeyword.SAMPLER_CUBE_SHADOW, EKeyword.INT);\n\nBuiltinFunction._create(\"textureSize\", EKeyword.IVEC3, EGenType.GSampler2DArray, EKeyword.INT);\nBuiltinFunction._create(\"textureSize\", EKeyword.IVEC3, EKeyword.SAMPLER2D_ARRAY_SHADOW, EKeyword.INT);\n\nBuiltinFunction._create(\"texture2D\", EKeyword.VEC4, EKeyword.SAMPLER2D, EKeyword.VEC2);\nBuiltinFunction._create(\"texture2D\", EKeyword.VEC4, EKeyword.SAMPLER2D, EKeyword.VEC2, EKeyword.FLOAT);\n\nBuiltinFunction._create(\"texture\", EGenType.GVec4, EGenType.GSampler2D, EKeyword.VEC2, EKeyword.FLOAT);\nBuiltinFunction._create(\"texture\", EGenType.GVec4, EGenType.GSampler2D, EKeyword.VEC2);\nBuiltinFunction._create(\"texture\", EGenType.GVec4, EGenType.GSampler3D, EKeyword.VEC3, EKeyword.FLOAT);\nBuiltinFunction._create(\"texture\", EGenType.GVec4, EGenType.GSampler3D, EKeyword.VEC3);\n\nBuiltinFunction._create(\"texture\", EGenType.GVec4, EGenType.GSamplerCube, EKeyword.VEC3, EKeyword.FLOAT);\nBuiltinFunction._create(\"texture\", EGenType.GVec4, EGenType.GSamplerCube, EKeyword.VEC3);\n\nBuiltinFunction._create(\"texture\", EKeyword.FLOAT, EKeyword.SAMPLER2D_SHADOW, EKeyword.VEC3, EKeyword.FLOAT);\nBuiltinFunction._create(\"texture\", EKeyword.FLOAT, EKeyword.SAMPLER2D_SHADOW, EKeyword.VEC3);\n\nBuiltinFunction._create(\"texture\", EKeyword.FLOAT, EKeyword.SAMPLER_CUBE_SHADOW, EKeyword.VEC4, EKeyword.FLOAT);\nBuiltinFunction._create(\"texture\", EKeyword.FLOAT, EKeyword.SAMPLER_CUBE_SHADOW, EKeyword.VEC4);\n\nBuiltinFunction._create(\"texture\", EGenType.GVec4, EKeyword.SAMPLER2D_ARRAY, EKeyword.VEC3, EKeyword.FLOAT);\nBuiltinFunction._create(\"texture\", EGenType.GVec4, EKeyword.SAMPLER2D_ARRAY, EKeyword.VEC3);\n\nBuiltinFunction._create(\"texture\", EKeyword.FLOAT, EKeyword.SAMPLER2D_ARRAY_SHADOW, EKeyword.VEC4);\n\nBuiltinFunction._create(\"textureProj\", EGenType.GVec4, EGenType.GSampler2D, EKeyword.VEC3, EKeyword.FLOAT);\nBuiltinFunction._create(\"textureProj\", EGenType.GVec4, EGenType.GSampler2D, EKeyword.VEC3);\nBuiltinFunction._create(\"textureProj\", EGenType.GVec4, EGenType.GSampler2D, EKeyword.VEC4, EKeyword.FLOAT);\nBuiltinFunction._create(\"textureProj\", EGenType.GVec4, EGenType.GSampler2D, EKeyword.VEC4);\nBuiltinFunction._create(\"textureProj\", EGenType.GVec4, EGenType.GSampler3D, EKeyword.VEC4, EKeyword.FLOAT);\nBuiltinFunction._create(\"textureProj\", EGenType.GVec4, EGenType.GSampler3D, EKeyword.VEC4);\n\nBuiltinFunction._create(\"textureProj\", EKeyword.FLOAT, EKeyword.SAMPLER2D_SHADOW, EKeyword.VEC4, EKeyword.FLOAT);\nBuiltinFunction._create(\"textureProj\", EKeyword.FLOAT, EKeyword.SAMPLER2D_SHADOW, EKeyword.VEC4);\n\nBuiltinFunction._create(\"textureLod\", EGenType.GVec4, EGenType.GSampler2D, EKeyword.VEC2, EKeyword.FLOAT);\nBuiltinFunction._create(\"textureLod\", EGenType.GVec4, EGenType.GSampler3D, EKeyword.VEC3, EKeyword.FLOAT);\nBuiltinFunction._create(\"textureLod\", EGenType.GVec4, EGenType.GSamplerCube, EKeyword.VEC3, EKeyword.FLOAT);\nBuiltinFunction._create(\"textureLod\", EKeyword.FLOAT, EKeyword.SAMPLER2D_SHADOW, EKeyword.VEC3, EKeyword.FLOAT);\nBuiltinFunction._create(\"textureLod\", EGenType.GVec4, EGenType.GSampler2DArray, EKeyword.VEC3, EKeyword.FLOAT);\nBuiltinFunction._create(\"texture2DLodEXT\", EGenType.GVec4, EGenType.GSampler2D, EKeyword.VEC2, EKeyword.FLOAT);\nBuiltinFunction._create(\"texture2DLodEXT\", EGenType.GVec4, EGenType.GSampler3D, EKeyword.VEC3, EKeyword.FLOAT);\n\nBuiltinFunction._create(\"textureCube\", EKeyword.SAMPLER_CUBE, EKeyword.VEC3);\nBuiltinFunction._create(\"textureCube\", EKeyword.SAMPLER_CUBE, EKeyword.VEC3, EKeyword.FLOAT);\nBuiltinFunction._create(\"textureCubeLod\", EKeyword.SAMPLER_CUBE, EKeyword.VEC3, EKeyword.FLOAT);\nBuiltinFunction._create(\"textureCubeLodEXT\", EGenType.GVec4, EGenType.GSamplerCube, EKeyword.VEC3, EKeyword.FLOAT);\n\nBuiltinFunction._create(\n \"textureOffset\",\n EGenType.GVec4,\n EGenType.GSampler2D,\n EKeyword.VEC2,\n EKeyword.IVEC2,\n EKeyword.FLOAT\n);\nBuiltinFunction._create(\"textureOffset\", EGenType.GVec4, EGenType.GSampler2D, EKeyword.VEC2, EKeyword.IVEC2);\n\nBuiltinFunction._create(\n \"textureOffset\",\n EGenType.GVec4,\n EGenType.GSampler3D,\n EKeyword.VEC3,\n EKeyword.IVEC3,\n EKeyword.FLOAT\n);\nBuiltinFunction._create(\"textureOffset\", EGenType.GVec4, EGenType.GSampler3D, EKeyword.VEC3, EKeyword.IVEC3);\n\nBuiltinFunction._create(\n \"textureOffset\",\n EKeyword.FLOAT,\n EKeyword.SAMPLER2D_SHADOW,\n EKeyword.VEC3,\n EKeyword.IVEC2,\n EKeyword.FLOAT\n);\nBuiltinFunction._create(\"textureOffset\", EKeyword.FLOAT, EKeyword.SAMPLER2D_SHADOW, EKeyword.VEC3, EKeyword.IVEC2);\nBuiltinFunction._create(\n \"textureOffset\",\n EGenType.GVec4,\n EGenType.GSampler2DArray,\n EKeyword.VEC3,\n EKeyword.IVEC2,\n EKeyword.FLOAT\n);\nBuiltinFunction._create(\"textureOffset\", EGenType.GVec4, EGenType.GSampler2DArray, EKeyword.VEC3, EKeyword.IVEC2);\n\nBuiltinFunction._create(\"texelFetch\", EGenType.GVec4, EGenType.GSampler2D, EKeyword.IVEC2, EKeyword.INT);\nBuiltinFunction._create(\"texelFetch\", EGenType.GVec4, EGenType.GSampler3D, EKeyword.IVEC3, EKeyword.INT);\nBuiltinFunction._create(\"texelFetch\", EGenType.GVec4, EGenType.GSampler2DArray, EKeyword.IVEC3, EKeyword.INT);\n\nBuiltinFunction._create(\n \"texelFetchOffset\",\n EGenType.GVec4,\n EGenType.GSampler2D,\n EKeyword.IVEC2,\n EKeyword.INT,\n EKeyword.IVEC2\n);\nBuiltinFunction._create(\n \"texelFetchOffset\",\n EGenType.GVec4,\n EGenType.GSampler3D,\n EKeyword.IVEC3,\n EKeyword.INT,\n EKeyword.IVEC3\n);\nBuiltinFunction._create(\n \"texelFetchOffset\",\n EGenType.GVec4,\n EGenType.GSampler2DArray,\n EKeyword.IVEC3,\n EKeyword.INT,\n EKeyword.IVEC2\n);\n\nBuiltinFunction._create(\n \"textureProjOffset\",\n EGenType.GVec4,\n EGenType.GSampler2D,\n EKeyword.VEC3,\n EKeyword.IVEC2,\n EKeyword.FLOAT\n);\nBuiltinFunction._create(\"textureProjOffset\", EGenType.GVec4, EGenType.GSampler2D, EKeyword.VEC3, EKeyword.IVEC2);\n\nBuiltinFunction._create(\n \"textureProjOffset\",\n EGenType.GVec4,\n EGenType.GSampler2D,\n EKeyword.VEC4,\n EKeyword.IVEC2,\n EKeyword.FLOAT\n);\nBuiltinFunction._create(\"textureProjOffset\", EGenType.GVec4, EGenType.GSampler2D, EKeyword.VEC4, EKeyword.IVEC2);\n\nBuiltinFunction._create(\n \"textureProjOffset\",\n EGenType.GVec4,\n EGenType.GSampler3D,\n EKeyword.VEC4,\n EKeyword.IVEC3,\n EKeyword.FLOAT\n);\nBuiltinFunction._create(\"textureProjOffset\", EGenType.GVec4, EGenType.GSampler3D, EKeyword.VEC4, EKeyword.IVEC3);\n\nBuiltinFunction._create(\n \"textureProjOffset\",\n EKeyword.FLOAT,\n EKeyword.SAMPLER2D_SHADOW,\n EKeyword.VEC4,\n EKeyword.IVEC2,\n EKeyword.FLOAT\n);\nBuiltinFunction._create(\"textureProjOffset\", EKeyword.FLOAT, EKeyword.SAMPLER2D_SHADOW, EKeyword.VEC4, EKeyword.IVEC2);\n\nBuiltinFunction._create(\n \"textureLodOffset\",\n EGenType.GVec4,\n EGenType.GSampler2D,\n EKeyword.VEC2,\n EKeyword.FLOAT,\n EKeyword.IVEC2\n);\nBuiltinFunction._create(\n \"textureLodOffset\",\n EGenType.GVec4,\n EGenType.GSampler3D,\n EKeyword.VEC3,\n EKeyword.FLOAT,\n EKeyword.IVEC3\n);\n\nBuiltinFunction._create(\n \"textureLodOffset\",\n EKeyword.FLOAT,\n EKeyword.SAMPLER2D_SHADOW,\n EKeyword.VEC3,\n EKeyword.FLOAT,\n EKeyword.IVEC2\n);\nBuiltinFunction._create(\n \"textureLodOffset\",\n EGenType.GVec4,\n EGenType.GSampler2DArray,\n EKeyword.VEC3,\n EKeyword.FLOAT,\n EKeyword.IVEC2\n);\n\nBuiltinFunction._create(\"textureProjLod\", EGenType.GVec4, EGenType.GSampler2D, EKeyword.VEC3, EKeyword.FLOAT);\nBuiltinFunction._create(\"textureProjLod\", EGenType.GVec4, EGenType.GSampler2D, EKeyword.VEC4, EKeyword.FLOAT);\nBuiltinFunction._create(\"textureProjLod\", EGenType.GVec4, EGenType.GSampler3D, EKeyword.VEC4, EKeyword.FLOAT);\nBuiltinFunction._create(\"textureProjLod\", EKeyword.FLOAT, EKeyword.SAMPLER2D_SHADOW, EKeyword.VEC4, EKeyword.FLOAT);\n\nBuiltinFunction._create(\n \"textureProjLodOffset\",\n EGenType.GVec4,\n EGenType.GSampler2D,\n EKeyword.VEC3,\n EKeyword.FLOAT,\n EKeyword.IVEC2\n);\nBuiltinFunction._create(\n \"textureProjLodOffset\",\n EGenType.GVec4,\n EGenType.GSampler2D,\n EKeyword.VEC4,\n EKeyword.FLOAT,\n EKeyword.IVEC2\n);\nBuiltinFunction._create(\n \"textureProjLodOffset\",\n EGenType.GVec4,\n EGenType.GSampler3D,\n EKeyword.VEC4,\n EKeyword.FLOAT,\n EKeyword.IVEC3\n);\nBuiltinFunction._create(\n \"textureProjLodOffset\",\n EKeyword.FLOAT,\n EKeyword.SAMPLER2D_SHADOW,\n EKeyword.VEC4,\n EKeyword.FLOAT,\n EKeyword.IVEC2\n);\n\nBuiltinFunction._create(\n \"textureGrad\",\n EGenType.GVec4,\n EGenType.GSampler2D,\n EKeyword.VEC2,\n EKeyword.VEC2,\n EKeyword.VEC2\n);\nBuiltinFunction._create(\n \"textureGrad\",\n EGenType.GVec4,\n EGenType.GSampler3D,\n EKeyword.VEC3,\n EKeyword.VEC3,\n EKeyword.VEC3\n);\nBuiltinFunction._create(\n \"textureGrad\",\n EGenType.GVec4,\n EGenType.GSamplerCube,\n EKeyword.VEC3,\n EKeyword.VEC3,\n EKeyword.VEC3\n);\n\nBuiltinFunction._create(\n \"textureGrad\",\n EKeyword.FLOAT,\n EKeyword.SAMPLER2D_SHADOW,\n EKeyword.VEC3,\n EKeyword.VEC2,\n EKeyword.VEC2\n);\nBuiltinFunction._create(\n \"textureGrad\",\n EKeyword.FLOAT,\n EKeyword.SAMPLER_CUBE_SHADOW,\n EKeyword.VEC4,\n EKeyword.VEC3,\n EKeyword.VEC3\n);\n\nBuiltinFunction._create(\n \"textureGrad\",\n EGenType.GVec4,\n EGenType.GSampler2DArray,\n EKeyword.VEC3,\n EKeyword.VEC2,\n EKeyword.VEC2\n);\nBuiltinFunction._create(\n \"textureGrad\",\n EKeyword.FLOAT,\n EKeyword.SAMPLER2D_ARRAY_SHADOW,\n EKeyword.VEC4,\n EKeyword.VEC2,\n EKeyword.VEC2\n);\n\nBuiltinFunction._create(\n \"textureGradOffset\",\n EGenType.GVec4,\n EGenType.GSampler2D,\n EKeyword.VEC2,\n EKeyword.VEC2,\n EKeyword.VEC2,\n EKeyword.IVEC2\n);\nBuiltinFunction._create(\n \"textureGradOffset\",\n EGenType.GVec4,\n EGenType.GSampler3D,\n EKeyword.VEC3,\n EKeyword.VEC3,\n EKeyword.VEC3,\n EKeyword.IVEC3\n);\nBuiltinFunction._create(\n \"textureGradOffset\",\n EKeyword.FLOAT,\n EKeyword.SAMPLER2D_SHADOW,\n EKeyword.VEC3,\n EKeyword.VEC2,\n EKeyword.VEC2,\n EKeyword.IVEC2\n);\nBuiltinFunction._create(\n \"textureGradOffset\",\n EGenType.GVec4,\n EGenType.GSampler2DArray,\n EKeyword.VEC3,\n EKeyword.VEC2,\n EKeyword.VEC2,\n EKeyword.IVEC2\n);\nBuiltinFunction._create(\n \"textureGradOffset\",\n EKeyword.FLOAT,\n EKeyword.SAMPLER2D_ARRAY_SHADOW,\n EKeyword.VEC3,\n EKeyword.VEC2,\n EKeyword.VEC2,\n EKeyword.IVEC2\n);\n\nBuiltinFunction._create(\n \"textureProjGrad\",\n EGenType.GVec4,\n EGenType.GSampler2D,\n EKeyword.VEC3,\n EKeyword.VEC2,\n EKeyword.VEC2\n);\nBuiltinFunction._create(\n \"textureProjGrad\",\n EGenType.GVec4,\n EGenType.GSampler2D,\n EKeyword.VEC4,\n EKeyword.VEC2,\n EKeyword.VEC2\n);\nBuiltinFunction._create(\n \"textureProjGrad\",\n EGenType.GVec4,\n EGenType.GSampler3D,\n EKeyword.VEC4,\n EKeyword.VEC3,\n EKeyword.VEC3\n);\nBuiltinFunction._create(\n \"textureProjGrad\",\n EKeyword.FLOAT,\n EKeyword.SAMPLER2D_SHADOW,\n EKeyword.VEC4,\n EKeyword.VEC2,\n EKeyword.VEC2\n);\n\nBuiltinFunction._create(\n \"textureProjGradOffset\",\n EGenType.GVec4,\n EGenType.GSampler2D,\n EKeyword.VEC3,\n EKeyword.VEC2,\n EKeyword.VEC2,\n EKeyword.IVEC2\n);\nBuiltinFunction._create(\n \"textureProjGradOffset\",\n EGenType.GVec4,\n EGenType.GSampler2D,\n EKeyword.VEC4,\n EKeyword.VEC2,\n EKeyword.VEC2,\n EKeyword.IVEC2\n);\nBuiltinFunction._create(\n \"textureProjGradOffset\",\n EGenType.GVec4,\n EGenType.GSampler3D,\n EKeyword.VEC4,\n EKeyword.VEC3,\n EKeyword.VEC3,\n EKeyword.IVEC3\n);\nBuiltinFunction._create(\n \"textureProjGradOffset\",\n EKeyword.FLOAT,\n EKeyword.SAMPLER2D_SHADOW,\n EKeyword.VEC4,\n EKeyword.VEC2,\n EKeyword.VEC2,\n EKeyword.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 { EKeyword, GalaceanDataType, TypeAny } from \"../../common\";\nimport { EShaderStage } from \"../../common/Enums\";\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) {\n return BuiltinVariableTable.get(ident);\n }\n}\n\nBuiltinVariable.createVariable(\"gl_VertexID\", EKeyword.INT, EShaderStage.VERTEX);\nBuiltinVariable.createVariable(\"gl_InstanceID\", EKeyword.INT, EShaderStage.VERTEX);\nBuiltinVariable.createVariable(\"gl_Position\", EKeyword.VEC4, EShaderStage.VERTEX);\nBuiltinVariable.createVariable(\"gl_PointSize\", EKeyword.FLOAT, EShaderStage.VERTEX);\n\nBuiltinVariable.createVariable(\"gl_FragCoord\", EKeyword.VEC4, EShaderStage.FRAGMENT);\nBuiltinVariable.createVariable(\"gl_FrontFacing\", EKeyword.BOOL, EShaderStage.FRAGMENT);\nBuiltinVariable.createVariable(\"gl_FragDepth\", EKeyword.FLOAT, EShaderStage.FRAGMENT);\nBuiltinVariable.createVariable(\"gl_PointCoord\", EKeyword.VEC2, EShaderStage.FRAGMENT);\nBuiltinVariable.createVariable(\"gl_FragColor\", EKeyword.VEC4, EShaderStage.FRAGMENT);\nBuiltinVariable.createVariable(\"gl_FragData\", EKeyword.VEC4_ARRAY, EShaderStage.FRAGMENT);\n\nBuiltinVariable.createVariable(\"gl_MaxVertexAttribs\", EKeyword.INT);\nBuiltinVariable.createVariable(\"gl_MaxVertexUniformVectors\", EKeyword.INT);\nBuiltinVariable.createVariable(\"gl_MaxVertexOutputVectors\", EKeyword.INT);\nBuiltinVariable.createVariable(\"gl_MaxFragmentInputVectors\", EKeyword.INT);\nBuiltinVariable.createVariable(\"gl_MaxVertexTextureImageUnits\", EKeyword.INT);\nBuiltinVariable.createVariable(\"gl_MaxCombinedTextureImageUnits\", EKeyword.INT);\nBuiltinVariable.createVariable(\"gl_MaxTextureImageUnits\", EKeyword.INT);\nBuiltinVariable.createVariable(\"gl_MaxFragmentUniformVectors\", EKeyword.INT);\nBuiltinVariable.createVariable(\"gl_MaxDrawBuffers\", EKeyword.INT);\nBuiltinVariable.createVariable(\"gl_MinProgramTexelOffset\", EKeyword.INT);\nBuiltinVariable.createVariable(\"gl_MaxProgramTexelOffset\", EKeyword.INT);\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 { 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 { 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 { 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/ShaderRange\";\n\n// #if _VERBOSE\nexport class BlockInfo {\n readonly sourceFile: string;\n readonly rangeInFile?: ShaderRange;\n readonly sourceMap?: PpSourceMap;\n\n constructor(sourceFile?: string, rangeInFile?: ShaderRange, sourceMap?: PpSourceMap) {\n this.sourceFile = sourceFile ?? \"__main__\";\n this.rangeInFile = rangeInFile;\n this.sourceMap = sourceMap;\n }\n}\n\nexport class MapRange {\n sourceLoc: { block: BlockInfo; rangeInBlock: ShaderRange };\n generatedLoc: { start: number; end: number };\n\n constructor(sourceBlock: BlockInfo, rangeInBlock: ShaderRange, generatedLoc: { start: number; end: number }) {\n this.sourceLoc = { block: sourceBlock, rangeInBlock };\n this.generatedLoc = generatedLoc;\n }\n\n getSourceIndex(generatedIdx: number) {\n const { block, rangeInBlock } = this.sourceLoc;\n if (block.sourceMap) {\n if (block.sourceFile !== \"__main__\") return block.sourceMap.map(generatedIdx - this.generatedLoc.start);\n else if (rangeInBlock) {\n return {\n sourceFile: block.sourceFile,\n index: (block.rangeInFile?.start.index ?? 0) + rangeInBlock.start.index\n };\n }\n }\n\n return {\n index: generatedIdx - this.generatedLoc.start + rangeInBlock.start.index + (block.rangeInFile?.start.index ?? 0),\n sourceFile: this.sourceLoc.block.sourceFile\n };\n }\n}\n\nexport default class PpSourceMap {\n readonly mapRanges: MapRange[] = [];\n\n static rangeContains(range: MapRange[\"generatedLoc\"], index: number) {\n return range.start <= index && range.end > index;\n }\n\n addMapRange(mapRange: MapRange) {\n this.mapRanges.push(mapRange);\n }\n\n /**\n * @returns index\n */\n map(index: number): { sourceFile: string; index: number } {\n let curRange: MapRange | undefined;\n for (const range of this.mapRanges) {\n const { generatedLoc } = range;\n if (PpSourceMap.rangeContains(generatedLoc, index)) {\n return range.getSourceIndex(index);\n } else if (range.generatedLoc.start < index) {\n curRange = range;\n continue;\n } else {\n break;\n }\n }\n if (!curRange) return { sourceFile: \"__main__\", index };\n return {\n index: index - curRange.generatedLoc.end + curRange.sourceLoc.rangeInBlock.end.index,\n sourceFile: curRange.sourceLoc.block.sourceFile\n };\n }\n}\n// #endif\n","import { 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 { 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","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 _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","line","column","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","GSError","name","message","location","file","source","toString","lines","split","diagnosticMessage","lineSplit","wrappingLineCount","i","n","remarkStart","remarkEnd","length","paddingLength","remarkLength","Math","max","repeat","Error","GSErrorName","ShaderLabUtils","createObjectPool","type","pool","ClearableObjectPool","_shaderLabObjectPoolSet","push","clearAllShaderLabObjectPool","clear","createGSError","errorName","BaseToken","lexeme","arg","ShaderLab","createPosition","createRange","EOF","LexerUtils","isNum","charCode","isLetter","isAlpha","isPpCharacters","isSpace","BaseScanner","kws","_currentIndex","_column","_line","_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","error","join","ScannerError","Logger","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","errors","addTranslationRule","pid","rule","getTranslationRule","lookupSymbolBy","symbolTable","ret","reportError","loc","CompilationError","_processingPassText","shaderData","NoneTerminal","Production","goal","derivation","id","_id","Grammar","productions","startSymbol","unshift","START","getProductionList","nonTerminal","isNullableNT","NT","find","EPSILON","getProductionByID","create","_ps","map","gsl","slice","EShaderStage","isGenericType","t","BuiltinFunctionTable","BuiltinFunction","args","_returnType","getReturnType","fn","genType","_create","ALL","list","_createWithScop","getFn","parameterTypes","fnArgs","argLength","found","curFnArg","_realReturnType","realReturnType","MAT2X3","MAT3X2","MAT2X4","MAT4X2","MAT3X4","MAT4X3","FRAGMENT","BuiltinVariableTable","BuiltinVariable","createVariable","getVar","VERTEX","VEC4_ARRAY","StateItem","production","position","lookahead","_needReInfer","lookaheadSet","Set","la","add","addLookahead","ts","has","needReInfer","symbolByOffset","canReduce","coreItem","GrammarUtils","Array","from","v","curSymbol","nextSymbol","State","cores","closured","_stateItemPool","_items","it","itemMapKey","getStateItemMapKey","createStateItem","mapId","newItem","cacheKey","getMapKey","state","closureMap","core","newState","items","ParserUtils","unwrapNodeByType","node","child","children","Token","nt","typeCompatible","ta","tb","isTerminal","printStatePool","logPath","output","console","log","values","tmp","padEnd","psItem","SymbolType","StructProp","typeInfo","mrtIndex","ASTNodeDecorator","ASTNode","prototype","TreeNode","_location","_children","init","codeGen","visitor","defaultCodeGen","semanticAnalyze","sa","_unwrapToken","TrivialNode","_ignore","ScopeBrace","scope_brace","ScopeEndBrace","scope_end_brace","JumpStatement","isFragReturnStatement","returnStatement","visitJumpStatement","jump_statement","ConditionOpt","conditionopt","ForRestStatement","for_rest_statement","Condition","condition","ForInitStatement","for_init_statement","IterationStatement","iteration_statement","SelectionStatement","selection_statement","ExpressionStatement","expression_statement","ExpressionAstNode","_type","InitializerList","initializer_list","Initializer","initializer","SingleDeclaration","childrenLen","fullyType","visitSingleDeclaration","single_declaration","FullySpecifiedType","_","fully_specified_type","TypeQualifier","type_qualifier","SingleTypeQualifier","qualifier","single_type_qualifier","BasicTypeQualifier","StorageQualifier","storage_qualifier","PrecisionQualifier","precision_qualifier","InterpolationQualifier","interpolation_qualifier","InvariantQualifier","invariant_qualifier","TypeSpecifier","arraySize","firstChild","size","isCustom","type_specifier","ArraySpecifier","integerConstantExpr","value","array_specifier","IntegerConstantExpressionOperator","operator","compute","a","b","integer_constant_expression_operator","IntegerConstantExpression","Number","symbolInfo","integer_constant_expression","TypeSpecifierNonArray","tt","type_specifier_nonarray","ExtBuiltinTypeSpecifierNonArray","ext_builtin_type_specifier_nonarray","InitDeclaratorList","childrenLength","initDeclList","init_declarator_list","IdentifierList","idList","curIdList","listIdLength","identifier_list","Declaration","visitDeclaration","declaration","FunctionProtoType","declarator","parameterList","parameterInfoList","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","SimpleStatement","simple_statement","CompoundStatement","compound_statement","CompoundStatementNoScope","compound_statement_no_scope","Statement","statement","StatementList","visitStatementList","statement_list","FunctionDefinition","statements","visitFunctionDefinition","function_definition","FunctionCall","visitFunctionCall","function_call","FunctionCallGeneric","fnSymbol","functionIdentifier","isBuiltin","paramList","FunctionCallParameterList","builtinFn","function_call_generic","paramNodes","expr","function_call_parameter_list","PrecisionSpecifier","precision_specifier","FunctionIdentifier","visitFunctionIdentifier","function_identifier","AssignmentExpression","assignment_expression","AssignmentOperator","assignment_operator","Expression","expression","PrimaryExpression","VariableIdentifier","primary_expression","PostfixExpression","visitPostfixExpression","postfix_expression","UnaryOperator","unary_operator","UnaryExpression","unary_expression","MultiplicativeExpression","multiplicative_expression","AdditiveExpression","additive_expression","ShiftExpression","shift_expression","RelationalExpression","relational_expression","EqualityExpression","equality_expression","AndExpression","and_expression","ExclusiveOrExpression","exclusive_or_expression","InclusiveOrExpression","inclusive_or_expression","LogicalAndExpression","logical_and_expression","LogicalXorExpression","logical_xor_expression","LogicalOrExpression","logical_or_expression","ConditionalExpression","conditional_expression","StructSpecifier","propList","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","builtinVar","visitVariableIdentifier","variable_identifier","GLShaderProgram","gs_shader_program","createProductionWithOptions","options","astTypePool","opt","addMapSetItem","k","isSubSet","sb","isActionEqual","action","target","printAction","actionInfo","Reduce","printProduction","deriv","gs","productionAndRules","global_declaration","variable_declaration_statement","AND_ASSIGN","createGrammar","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","Accept","_addAction","nextItem","Shift","table","terminal","exist","_computeFirstSetForNT","idx","findIndex","computingFS","len","curNT","firstSet","succeedFirstSet","ShaderTargetParser","_traceBackStack","sematicAnalyzer","SematicAnalyzer","parse","tokens","performance","now","traceBackStack","nextToken","next","loopCount","info","reduceProduction","translationRule","nextState","_printStack","str","_singleton","generator","curState","MacroDefine","macro","body","_argsLexemes","_replaceRegex","RegExp","expandFunctionBody","PreprocessorError","replace","m","indexOf","isFunction","EPpToken","EPpKeyword","PpKeyword","BlockInfo","sourceFile","rangeInFile","sourceMap","MapRange","sourceBlock","rangeInBlock","generatedLoc","sourceLoc","block","getSourceIndex","generatedIdx","PpSourceMap","mapRanges","addMapRange","mapRange","curRange","rangeContains","PpUtils","expand","segments","startIdx","seg","originSlice","generatedIdxEnd","assembleSegments","PpScanner","blockRange","macroLvl","scanDirective","expandOnToken","directive","_advanceToDirective","if","ifdef","ifndef","includes","endif","scanWordsUntilChar","nonLetterChar","scanWord","skipNonLetter","getShaderPosition","kw","scanQuotedString","string_const","scanToChar","char","scanMacroBranchChunk","startLvl","elif","else","chunk","nextDirective","scanPairedBlock","lc","rc","scanRemainMacro","peekNonSpace","scanInteger","integer","int_constant","scanLineRemain","comments","line_remain","commentRange","_skipComments","startsWith","PpParser","includeMap","basePathForIncludeKey","_definedMacros","_expandSegmentsStack","_branchMacros","addPredefinedMacro","_includeMap","_basePathForIncludeKey","_errors","tk","macroBody","scanner","_onToken","bind","define","_parseDefine","undef","_parseUndef","_parseIf","_parseIfNdef","_parseIfDef","include","_parseInclude","expandSegments","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","blockInfo","macroArgs","macroDefine","delete","curLvl","curIdx","Preprocessor","process","baseScanner","convertSourceIndex","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","_reportError","mrtLexeme","getFragDataCodeGen","getReferencedMRTPropText","call","paramInfoList","plainParams","fullType","_curFn","cmd","returnVar","returnFnCall","ReturnableObjectPool","defaultPrecision","GLESVisitor","_versionText","_extensions","_globalCodeArray","visitShaderProgram","vertexEntry","fragmentEntry","vertex","vertexMain","fragment","_fragmentMain","data","fnNode","stage","varyStruct","paramInfo","structSymbol","globalCodeArray","_getGlobalText","getAttributeDeclare","getVaryingDeclare","globalCode","sort","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","scanToCharacter","ContentSymbolTable","EngineType","RenderStateType","ShaderContentParser","_symbolTableStack","_newScope","subShaders","globalContents","renderStates","constantMap","variableMap","_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","err","_logErrors","lexer","parser","_parser","program","ShaderPlatformTarget","GLES100","_parseShaderContent","shaderSource","isEnabled","_shaderPositionPool","_shaderRangePool","version","mode"],"mappings":"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"}