@galacean/engine-shaderlab 1.4.0-alpha.3 → 1.4.0-beta.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +1 @@
1
- {"version":3,"file":"browser.verbose.min.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/_create_for_of_iterator_helper_loose.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/_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/Keywords.ts","../src/common/types.ts","../src/GSError.ts","../src/lalr/types.ts","../src/parser/symbolTable/SymbolInfo.ts","../src/parser/GrammarSymbol.ts","../src/common/Enums.ts","../src/parser/AST.ts","../src/preprocessor/constants.ts","../src/common/ShaderPosition.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/_wrap_native_super.js","../../../node_modules/.pnpm/@swc+helpers@0.5.15/node_modules/@swc/helpers/esm/_is_native_function.js","../src/ShaderLabUtils.ts","../src/common/BaseToken.ts","../src/lexer/Utils.ts","../../../node_modules/.pnpm/@swc+helpers@0.5.15/node_modules/@swc/helpers/esm/_create_class.js","../src/common/BaseScanner.ts","../src/lexer/Lexer.ts","../src/parser/ShaderInfo.ts","../src/parser/symbolTable/SymbolDataType.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/lalr/Production.ts","../src/parser/Grammar.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/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/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 _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","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","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","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 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","// #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 { 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 { 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 { 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 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","export enum EShaderStage {\n VERTEX,\n FRAGMENT,\n ALL\n}\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 SematicAnalyzer 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 semanticAnalyze(sa: SematicAnalyzer) {}\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: SematicAnalyzer, 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: SematicAnalyzer): void {\n sa.newScope();\n }\n }\n\n @ASTNodeDecorator(NoneTerminal.scope_end_brace)\n export class ScopeEndBrace extends TreeNode {\n override semanticAnalyze(sa: SematicAnalyzer): 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: SematicAnalyzer): 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: SematicAnalyzer): 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: SematicAnalyzer): 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: SematicAnalyzer): void {\n const fullyType = this.children[0] as FullySpecifiedType;\n const id = this.children[1] as Token;\n this.typeSpecifier = fullyType.typeSpecifier;\n\n let sm: VarSymbol;\n if (this.children.length === 2 || this.children.length === 4) {\n const symbolType = new SymbolType(fullyType.type, fullyType.typeSpecifier.lexeme);\n const initializer = this.children[3] as Initializer;\n\n sm = new VarSymbol(id.lexeme, symbolType, false, initializer);\n } else {\n const arraySpecifier = this.children[2] as ArraySpecifier;\n this.arraySpecifier = arraySpecifier;\n const symbolType = new SymbolType(fullyType.type, fullyType.typeSpecifier.lexeme, arraySpecifier);\n const initializer = this.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 get qualifierList() {\n if (this.children.length > 1) {\n return (<TypeQualifier>this.children[0]).qualifierList;\n }\n }\n\n get typeSpecifier() {\n return (this.children.length === 1 ? this.children[0] : this.children[1]) as TypeSpecifier;\n }\n\n get type() {\n return this.typeSpecifier.type;\n }\n }\n\n @ASTNodeDecorator(NoneTerminal.type_qualifier)\n export class TypeQualifier extends TreeNode {\n qualifierList: EKeyword[];\n\n override semanticAnalyze(sa: SematicAnalyzer): void {\n if (this.children.length > 1) {\n this.qualifierList = [\n ...(<TypeQualifier>this.children[0]).qualifierList,\n (<SingleTypeQualifier>this.children[1]).qualifier\n ];\n } else {\n this.qualifierList = [(<SingleTypeQualifier>this.children[0]).qualifier];\n }\n }\n }\n\n @ASTNodeDecorator(NoneTerminal.single_type_qualifier)\n export class SingleTypeQualifier extends TreeNode {\n qualifier: EKeyword;\n lexeme: string;\n\n override semanticAnalyze(sa: SematicAnalyzer): 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 get qualifier(): EKeyword {\n return (<Token>this.children[0]).type as EKeyword;\n }\n get lexeme(): string {\n return (<Token>this.children[0]).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 get type(): GalaceanDataType {\n return (this.children![0] as TypeSpecifierNonArray).type;\n }\n get lexeme(): string {\n return (this.children![0] as TypeSpecifierNonArray).lexeme;\n }\n get arraySize(): number {\n return (this.children?.[1] as ArraySpecifier)?.size;\n }\n\n get isCustom() {\n return typeof this.type === \"string\";\n }\n }\n\n @ASTNodeDecorator(NoneTerminal.array_specifier)\n export class ArraySpecifier extends TreeNode {\n get size(): number | undefined {\n const integerConstantExpr = this.children[1] as IntegerConstantExpression;\n return 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 get lexeme(): string {\n return (this.children[0] as Token).lexeme;\n }\n\n override semanticAnalyze(sa: SematicAnalyzer): void {\n const operator = this.children[0] as Token;\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: SematicAnalyzer): 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 get typeInfo(): SymbolType {\n if (this.children.length === 1) {\n const singleDecl = this.children[0] as SingleDeclaration;\n return new SymbolType(\n singleDecl.typeSpecifier.type,\n singleDecl.typeSpecifier.lexeme,\n singleDecl.arraySpecifier\n );\n }\n\n const initDeclList = this.children[0] as InitDeclaratorList;\n return initDeclList.typeInfo;\n }\n\n override semanticAnalyze(sa: SematicAnalyzer): void {\n let sm: VarSymbol;\n if (this.children.length === 3 || this.children.length === 5) {\n const id = this.children[2] as Token;\n sm = new VarSymbol(id.lexeme, this.typeInfo, false, this);\n sa.symbolTableStack.insert(sm);\n } else if (this.children.length === 4 || this.children.length === 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 = this.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 get idList(): Token[] {\n if (this.children.length === 2) {\n return [this.children[1] as Token];\n }\n return [...(<IdentifierList>this.children[0]).idList, this.children[2] as Token];\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 private get declarator() {\n return this.children[0] as FunctionDeclarator;\n }\n\n get ident() {\n return this.declarator.ident;\n }\n\n get returnType() {\n return this.declarator.returnType;\n }\n\n get parameterList() {\n return this.declarator.parameterInfoList;\n }\n\n get paramSig() {\n return this.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 private get header() {\n return this.children[0] as FunctionHeader;\n }\n\n private get parameterList() {\n return this.children[1] as FunctionParameterList | undefined;\n }\n\n get ident() {\n return this.header.ident;\n }\n\n get returnType() {\n return this.header.returnType;\n }\n\n get parameterInfoList() {\n return this.parameterList?.parameterInfoList;\n }\n\n get paramSig() {\n return this.parameterList?.paramSig;\n }\n\n override semanticAnalyze(sa: SematicAnalyzer): void {\n sa.curFunctionInfo.returnStatement = null;\n sa.curFunctionInfo.header = this;\n }\n }\n\n @ASTNodeDecorator(NoneTerminal.function_header)\n export class FunctionHeader extends TreeNode {\n get ident() {\n return this.children[1] as Token;\n }\n get returnType() {\n return this.children[0] as FullySpecifiedType;\n }\n\n override semanticAnalyze(sa: SematicAnalyzer): void {\n sa.newScope();\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 get parameterInfoList(): IParamInfo[] {\n if (this.children.length === 1) {\n const decl = this.children[0] as ParameterDeclaration;\n return [{ ident: decl.ident, typeInfo: decl.typeInfo, astNode: decl }];\n }\n const list = this.children[0] as FunctionParameterList;\n const decl = this.children[2] as ParameterDeclaration;\n return [...list.parameterInfoList, { ident: decl.ident, typeInfo: decl.typeInfo, astNode: decl }];\n }\n\n get paramSig(): GalaceanDataType[] {\n if (this.children.length === 1) {\n const decl = this.children[0] as ParameterDeclaration;\n return [decl.typeInfo.type];\n } else {\n const list = this.children[0] as FunctionParameterList;\n const decl = this.children[2] as ParameterDeclaration;\n return list.paramSig.concat([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 get typeQualifier() {\n if (this.children.length === 2) return this.children[0] as TypeQualifier;\n }\n\n private get parameterDeclarator() {\n if (this.children.length === 1) return this.children[0] as ParameterDeclarator;\n return this.children[1] as ParameterDeclarator;\n }\n\n get typeInfo() {\n return this.parameterDeclarator.typeInfo;\n }\n\n get ident() {\n return this.parameterDeclarator.ident;\n }\n\n override semanticAnalyze(sa: SematicAnalyzer): void {\n let declarator: ParameterDeclarator;\n if (this.children.length === 1) {\n declarator = this.children[0] as ParameterDeclarator;\n } else {\n declarator = this.children[1] as ParameterDeclarator;\n }\n const varSymbol = new VarSymbol(declarator.ident.lexeme, declarator.typeInfo, false, this);\n sa.symbolTableStack.insert(varSymbol);\n }\n }\n\n @ASTNodeDecorator(NoneTerminal.parameter_declarator)\n export class ParameterDeclarator extends TreeNode {\n get ident() {\n return this.children[1] as Token;\n }\n\n get typeInfo(): SymbolType {\n const typeSpecifier = this.children[0] as TypeSpecifier;\n const arraySpecifier = this.children[2] as ArraySpecifier;\n return 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 private _returnStatement?: ASTNode.JumpStatement;\n\n get returnStatement(): ASTNode.JumpStatement | undefined {\n return this._returnStatement;\n }\n\n get protoType() {\n return this.children[0] as FunctionProtoType;\n }\n\n get statements() {\n return this.children[1] as CompoundStatementNoScope;\n }\n\n override init(): void {\n this._returnStatement = undefined;\n }\n\n override semanticAnalyze(sa: SematicAnalyzer): void {\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: SematicAnalyzer): 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: SematicAnalyzer): 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 = BuiltinFunction.getReturnType(builtinFn.fun, builtinFn.genType);\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 get paramSig(): GalaceanDataType[] | undefined {\n if (this.children.length === 1) {\n const expr = this.children[0] as AssignmentExpression;\n if (expr.type == undefined) return [TypeAny];\n return [expr.type];\n } else {\n const list = this.children[0] as FunctionCallParameterList;\n const decl = this.children[2] as AssignmentExpression;\n if (list.paramSig == undefined || decl.type == undefined) {\n return [TypeAny];\n } else {\n return list.paramSig.concat([decl.type]);\n }\n }\n }\n\n get paramNodes(): AssignmentExpression[] {\n if (this.children.length === 1) {\n return [this.children[0] as AssignmentExpression];\n } else {\n const list = this.children[0] as FunctionCallParameterList;\n const decl = this.children[2] as AssignmentExpression;\n\n return list.paramNodes.concat([decl]);\n }\n }\n }\n\n @ASTNodeDecorator(NoneTerminal.precision_specifier)\n export class PrecisionSpecifier extends TreeNode {\n override semanticAnalyze(sa: SematicAnalyzer): void {\n sa.shaderData.globalPrecisions.push(this);\n }\n }\n\n @ASTNodeDecorator(NoneTerminal.function_identifier)\n export class FunctionIdentifier extends TreeNode {\n get ident() {\n const ty = this.children[0] as TypeSpecifier;\n return ty.type;\n }\n\n get lexeme() {\n const ty = this.children[0] as TypeSpecifier;\n return ty.lexeme;\n }\n\n get isBuiltin() {\n return typeof this.ident !== \"string\";\n }\n\n override semanticAnalyze(sa: SematicAnalyzer): void {}\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: SematicAnalyzer): 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: SematicAnalyzer): 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: SematicAnalyzer): 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 } 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 } 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: SematicAnalyzer): 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: SematicAnalyzer): 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: SematicAnalyzer): 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: SematicAnalyzer): 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: SematicAnalyzer): 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: SematicAnalyzer): 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: SematicAnalyzer): 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: SematicAnalyzer): 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: SematicAnalyzer): 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: SematicAnalyzer): 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\n get propList(): StructProp[] {\n const declList = (this.children.length === 6 ? this.children[3] : this.children[2]) as StructDeclarationList;\n return declList.propList;\n }\n\n override semanticAnalyze(sa: SematicAnalyzer): void {\n if (this.children.length === 6) {\n this.ident = this.children[1] as Token;\n sa.symbolTableStack.insert(new StructSymbol(this.ident.lexeme, this));\n }\n }\n }\n\n @ASTNodeDecorator(NoneTerminal.struct_declaration_list)\n export class StructDeclarationList extends TreeNode {\n get propList(): StructProp[] {\n if (this.children.length === 1) {\n return (<StructDeclaration>this.children[0]).propList;\n }\n const list = this.children[0] as StructDeclarationList;\n const decl = this.children[1] as StructDeclaration;\n return [list.propList, decl.propList].flat();\n }\n }\n\n @ASTNodeDecorator(NoneTerminal.struct_declaration)\n export class StructDeclaration extends TreeNode {\n get typeSpecifier() {\n if (this.children.length === 3) {\n return this.children[0] as TypeSpecifier;\n }\n return this.children[1] as TypeSpecifier;\n }\n\n get declaratorList() {\n if (this.children.length === 3) {\n return this.children[1] as StructDeclaratorList;\n }\n return this.children[2] as StructDeclaratorList;\n }\n\n get propList(): StructProp[] {\n const ret: StructProp[] = [];\n const firstChild = this.children[0];\n if (firstChild instanceof LayoutQualifier) {\n const typeSpecifier = this.children[1] as TypeSpecifier;\n const declarator = this.children[2] as StructDeclarator;\n const typeInfo = new SymbolType(typeSpecifier.type, typeSpecifier.lexeme);\n const prop = new StructProp(typeInfo, declarator.ident, firstChild.index);\n ret.push(prop);\n } else {\n for (let i = 0; i < this.declaratorList.declaratorList.length; i++) {\n const declarator = this.declaratorList.declaratorList[i];\n const typeInfo = new SymbolType(\n this.typeSpecifier.type,\n this.typeSpecifier.lexeme,\n declarator.arraySpecifier\n );\n const prop = new StructProp(typeInfo, declarator.ident);\n ret.push(prop);\n }\n }\n return ret;\n }\n }\n\n @ASTNodeDecorator(NoneTerminal.layout_qualifier)\n export class LayoutQualifier extends TreeNode {\n get index(): number {\n return Number((<BaseToken>this.children[4]).lexeme);\n }\n }\n\n @ASTNodeDecorator(NoneTerminal.struct_declarator_list)\n export class StructDeclaratorList extends TreeNode {\n get declaratorList(): StructDeclarator[] {\n if (this.children.length === 1) {\n return [this.children[0] as StructDeclarator];\n } else {\n const list = this.children[0] as StructDeclaratorList;\n return [...list.declaratorList, <StructDeclarator>this.children[1]];\n }\n }\n }\n\n @ASTNodeDecorator(NoneTerminal.struct_declarator)\n export class StructDeclarator extends TreeNode {\n get ident() {\n return this.children[0] as Token;\n }\n\n get arraySpecifier(): ArraySpecifier | undefined {\n return this.children[1] as ArraySpecifier;\n }\n }\n\n @ASTNodeDecorator(NoneTerminal.variable_declaration)\n export class VariableDeclaration extends TreeNode {\n override semanticAnalyze(sa: SematicAnalyzer): void {\n const type = this.children[0] as FullySpecifiedType;\n const ident = this.children[1] as Token;\n let sm: VarSymbol;\n 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_identifier)\n export class VariableIdentifier extends TreeNode {\n symbolInfo:\n | VarSymbol\n // #if _VERBOSE\n | BuiltinVariable\n // #endif\n | null;\n\n get lexeme(): string {\n return (<Token>this.children[0]).lexeme;\n }\n\n get typeInfo(): GalaceanDataType {\n if (this.symbolInfo instanceof VarSymbol) return this.symbolInfo.dataType.type;\n return this.symbolInfo?.type;\n }\n\n override semanticAnalyze(sa: SematicAnalyzer): void {\n const token = this.children[0] as Token;\n\n // #if _VERBOSE\n const builtinVar = BuiltinVariable.getVar(token.lexeme);\n if (builtinVar) {\n this.symbolInfo = builtinVar;\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 }\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: SematicAnalyzer): void {\n this.shaderData = sa.shaderData;\n this.shaderData.symbolTable = sa.symbolTableStack._scope;\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 { 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","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","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","function _is_native_function(fn) {\n return Function.toString.call(fn).indexOf(\"[native code]\") !== -1;\n}\nexport { _is_native_function as _ };\n","import { ClearableObjectPool, IPoolElement, Logger } from \"@galacean/engine\";\nimport { GSErrorName } from \"./GSError\";\nimport { ShaderRange } from \"./common/ShaderRange\";\nimport { ShaderPosition } from \"./common/ShaderPosition\";\n// #if _VERBOSE\nimport { GSError } from \"./GSError\";\n// #endif\n\nexport class ShaderLabUtils {\n private static _shaderLabObjectPoolSet: ClearableObjectPool<IPoolElement>[] = [];\n\n static createObjectPool<T extends IPoolElement>(type: new () => T) {\n const pool = new ClearableObjectPool<T>(type);\n ShaderLabUtils._shaderLabObjectPoolSet.push(pool);\n return pool;\n }\n\n static clearAllShaderLabObjectPool() {\n for (let i = 0, n = ShaderLabUtils._shaderLabObjectPoolSet.length; i < n; i++) {\n ShaderLabUtils._shaderLabObjectPoolSet[i].clear();\n }\n }\n\n static createGSError(\n message: string,\n errorName: GSErrorName,\n source: string,\n location: ShaderRange | ShaderPosition,\n file?: string\n ): Error | undefined {\n // #if _VERBOSE\n return new GSError(errorName, message, location, source, file);\n // #else\n Logger.error(message);\n // #endif\n }\n}\n","import { ETokenType } from \"./types\";\nimport { ShaderRange, ShaderPosition } from \".\";\nimport { ShaderLab } from \"../ShaderLab\";\nimport { IPoolElement } from \"@galacean/engine\";\nimport { ShaderLabUtils } from \"../ShaderLabUtils\";\n\nexport class BaseToken<T extends number = number> implements IPoolElement {\n static pool = ShaderLabUtils.createObjectPool(BaseToken);\n\n type: T;\n lexeme: string;\n location: ShaderRange;\n\n set(type: T, lexeme: string, start?: ShaderPosition);\n set(type: T, lexeme: string, location?: ShaderRange);\n set(type: T, lexeme: string, arg?: ShaderRange | ShaderPosition) {\n this.type = type;\n this.lexeme = lexeme;\n if (arg) {\n if (arg instanceof ShaderRange) {\n this.location = arg as ShaderRange;\n } else {\n const end = ShaderLab.createPosition(\n arg.index + lexeme.length,\n // #if _VERBOSE\n arg.line,\n arg.column + lexeme.length\n // #endif\n );\n this.location = ShaderLab.createRange(arg, end);\n }\n }\n }\n\n dispose(): void {}\n}\n\nexport const EOF = new BaseToken();\nEOF.set(ETokenType.EOF, \"/EOF\");\n","export default class LexerUtils {\n static isNum(charCode: number) {\n return charCode >= 48 && charCode <= 57;\n }\n\n static isLetter(charCode: number) {\n return (\n charCode === 95 || // _\n (charCode >= 48 && charCode <= 57) || // 0 - 9\n (charCode >= 65 && charCode <= 90) || // A - Z\n (charCode >= 97 && charCode <= 122) // a - z\n );\n }\n\n static isAlpha(charCode: number) {\n return (\n charCode === 95 || // _\n (charCode >= 65 && charCode <= 90) || // A - Z\n (charCode >= 97 && charCode <= 122) // a - z\n );\n }\n\n static isPpCharactors(charCode: number) {\n return (\n charCode === 35 || // #\n charCode === 46 || // .\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 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\"];\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 while (this.getCurChar() !== \"\\n\") this._advance();\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 { 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 { 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: SematicAnalyzer, ...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 SematicAnalyzer {\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 { NoneTerminal, GrammarSymbol } from \"../parser/GrammarSymbol\";\n\nexport default class Production {\n private static _id = 0;\n static pool: Map<number, Production> = new Map();\n\n readonly goal: NoneTerminal;\n readonly derivation: GrammarSymbol[];\n readonly id: number;\n\n constructor(goal: NoneTerminal, derivation: GrammarSymbol[]) {\n this.goal = goal;\n this.derivation = derivation;\n this.id = Production._id++;\n Production.pool.set(this.id, this);\n }\n}\n","import { ETokenType } from \"../common\";\nimport { NoneTerminal, GrammarSymbol } from \"./GrammarSymbol\";\nimport Production from \"../lalr/Production\";\n\nexport class Grammar {\n readonly productions: Production[];\n\n readonly startSymbol: NoneTerminal;\n\n static create(start: NoneTerminal, productions: GrammarSymbol[][]) {\n const _ps = productions.map((gsl) => {\n return new Production(<NoneTerminal>gsl[0], gsl.slice(1));\n });\n return new Grammar(start, _ps);\n }\n\n constructor(start: NoneTerminal, productions: Production[]) {\n this.startSymbol = start;\n productions.unshift(new Production(NoneTerminal.START, [start]));\n this.productions = productions;\n }\n\n getProductionList(nonTerminal: NoneTerminal) {\n return this.productions.filter((item) => item.goal === nonTerminal);\n }\n\n isNullableNT(NT: NoneTerminal) {\n return this.productions.find((item) => item.goal === NT && item.derivation[0] === ETokenType.EPSILON);\n }\n\n getProductionByID(pid: number) {\n return Production.pool.get(pid);\n }\n}\n","import { 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 private _returnType: BuiltinType;\n ident: string;\n readonly args: BuiltinType[];\n readonly scope: EShaderStage;\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 static getFn(\n ident: string,\n ...args: BuiltinType[]\n ): { fun: BuiltinFunction; genType: Exclude<GalaceanDataType, string> } | undefined {\n const list = BuiltinFunctionTable.get(ident);\n let realType = TypeAny;\n if (list?.length) {\n const fun = list.find((item) => {\n if (item.args.length !== args.length) return false;\n let genType = 0;\n for (let i = 0; i < args.length; i++) {\n if (args[i] === TypeAny) continue;\n realType = args[i];\n if (isGenericType(item.args[i])) {\n if (genType === 0) {\n genType = args[i];\n continue;\n } else {\n realType = genType;\n }\n }\n if (args[i] === TypeAny) continue;\n if (args[i] !== realType) return false;\n }\n return true;\n });\n if (fun) return { fun, genType: realType };\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.SAMPLER2D, EKeyword.VEC2);\nBuiltinFunction._create(\"texture2D\", 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);\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);\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","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 SematicAnalyzer, { 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],\n [NoneTerminal.struct_specifier],\n [NoneTerminal.function_definition]\n ]),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.variable_declaration,\n [\n [EKeyword.GS_RenderQueueType, ETokenType.ID, ETokenType.SEMICOLON],\n [NoneTerminal.fully_specified_type, ETokenType.ID, ETokenType.SEMICOLON],\n [NoneTerminal.fully_specified_type, ETokenType.ID, NoneTerminal.array_specifier, ETokenType.SEMICOLON]\n ],\n ASTNode.VariableDeclaration.pool\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: SematicAnalyzer) => {\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","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.isPpCharactors(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) {\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 ShaderLab version: ${version}. mode: ${mode}`);\n"],"names":["_array_like_to_array","arr","len","length","i","arr2","Array","_create_for_of_iterator_helper_loose","o","allowArrayLike","it","Symbol","iterator","call","next","bind","isArray","_unsupported_iterable_to_array","minLen","n","Object","prototype","toString","slice","constructor","name","from","test","done","value","TypeError","_set_prototype_of","p","setPrototypeOf","__proto__","_inherits","subClass","superClass","create","writable","configurable","__decorate","decorators","target","key","desc","d","c","arguments","r","getOwnPropertyDescriptor","Reflect","decorate","defineProperty","SuppressedError","EKeyword","ETokenType","GSErrorName","EAction","ESymbolType","NoneTerminal","EShaderStage","ASTNode","TrivialNode","ScopeBrace","ScopeEndBrace","JumpStatement","ConditionOpt","ForRestStatement","Condition","ForInitStatement","IterationStatement","SelectionStatement","ExpressionStatement","ExpressionAstNode","InitializerList","Initializer","SingleDeclaration","FullySpecifiedType","TypeQualifier","SingleTypeQualifier","BasicTypeQualifier","StorageQualifier","PrecisionQualifier","InterpolationQualifier","InvariantQualifier","TypeSpecifier","ArraySpecifier","IntegerConstantExpressionOperator","IntegerConstantExpression","TypeSpecifierNonArray","ExtBuiltinTypeSpecifierNonArray","InitDeclaratorList","IdentifierList","Declaration","FunctionProtoType","FunctionDeclarator","FunctionHeader","FunctionParameterList","ParameterDeclaration","ParameterDeclarator","SimpleStatement","CompoundStatement","CompoundStatementNoScope","Statement","StatementList","FunctionDefinition","FunctionCall","FunctionCallGeneric","FunctionCallParameterList","PrecisionSpecifier","FunctionIdentifier","AssignmentExpression","AssignmentOperator","Expression","PrimaryExpression","PostfixExpression","UnaryOperator","UnaryExpression","MultiplicativeExpression","AdditiveExpression","ShiftExpression","RelationalExpression","EqualityExpression","AndExpression","ExclusiveOrExpression","InclusiveOrExpression","LogicalAndExpression","LogicalXorExpression","LogicalOrExpression","ConditionalExpression","StructSpecifier","StructDeclarationList","StructDeclaration","LayoutQualifier","StructDeclaratorList","StructDeclarator","VariableDeclaration","VariableIdentifier","GLShaderProgram","EPpToken","EPpKeyword","ShaderRange","set","start","end","dispose","ShaderPosition","index","line","column","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","_instanceof","left","right","hasInstance","_is_native_reflect_construct","result","Boolean","valueOf","construct","_","_construct","Parent","args","Class","a","push","apply","instance","Function","_get_prototype_of","getPrototypeOf","_wrap_native_super","_cache","undefined","indexOf","has","get","Wrapper","enumerable","GSError","Error1","message","location","source","file","_this","_proto","lines","split","diagnosticMessage","lineSplit","wrappingLineCount","remarkStart","remarkEnd","paddingLength","remarkLength","Math","max","repeat","Error","ShaderLabUtils","createObjectPool","type","pool","ClearableObjectPool","_shaderLabObjectPoolSet","clearAllShaderLabObjectPool","clear","createGSError","errorName","BaseToken","lexeme","arg","ShaderLab","createPosition","createRange","EOF","LexerUtils","isNum","charCode","isLetter","isAlpha","isPpCharactors","isSpace","_defineProperties","props","descriptor","_create_class","Constructor","protoProps","staticProps","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","_len","msgs","_key","error","join","ScannerError","Logger","scanPairedText","balanced","skipLeading","level","scanToken","onToken","splitCharRegex","_this__keywordsMap_get","token","NOT_WORD","tokenType","ID","range","checked","chars","current","Lexer","reset","tokenize","thisArg","body","f","y","t","label","sent","trys","ops","g","Iterator","verb","v","step","op","pop","e","_state","_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","ShaderData","globalPrecisions","SymbolDataType","typeLexeme","arraySpecifier","SymbolInfo","ident","symbolType","astNode","dataType","signature","FnSymbol","protoType","returnType","typeSpecifier","FN","StructSymbol","BaseSymbolTable","_table","SymbolTableStack","stack","newScope","scope","dropScope","insert","sm","_scope","TargetSymbolTable","_this__table_get","entry","_compareWith","warn","lookup","item","getAllFnSymbols","fnIdent","entries","filter","params","paramSig","comparedParams","t1","t2","VarSymbol","isGlobalVariable","initAst","VAR","SematicAnalyzer","semanticStack","acceptRule","symbolTableStack","curFunctionInfo","_shaderData","_translationRuleTable","errors","addTranslationRule","pid","rule","getTranslationRule","lookupSymbolBy","ret","symbolTable","reportError","loc","CompilationError","_processingPassText","shaderData","Production","goal","derivation","id","_id","Grammar","productions","startSymbol","unshift","START","getProductionList","nonTerminal","isNullableNT","NT","find","EPSILON","getProductionByID","map","gsl","isGenericType","BuiltinFunctionTable","BuiltinFunction","_returnType","getReturnType","fn","genType","_create","ALL","list","_createWithScop","getFn","realType","fun","MAT2X3","MAT3X2","MAT2X4","MAT4X2","MAT3X4","MAT4X3","FRAGMENT","BuiltinVariableTable","BuiltinVariable","createVariable","getVar","VERTEX","VEC4_ARRAY","StateItem","production","position","lookahead","_needReInfer","lookaheadSet","Set","_step","_iterator","la","add","addLookahead","ts","needReInfer","symbolByOffset","canReduce","coreItem","GrammarUtils","curSymbol","nextSymbol","State","cores","closured","_stateItemPool","_items","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","_step1","_iterator1","psItem","SymbolType","StructProp","typeInfo","mrtIndex","ASTNodeDecorator","TreeNode","_location","_children","init","codeGen","visitor","defaultCodeGen","semanticAnalyze","sa","_unwrapToken","_ignore","scope_brace","scope_end_brace","isFragReturnStatement","returnStatement","visitJumpStatement","jump_statement","conditionopt","for_rest_statement","condition","for_init_statement","iteration_statement","selection_statement","expression_statement","_type","_this__type","initializer_list","initializer","fullyType","visitSingleDeclaration","single_declaration","qualifierList","fully_specified_type","concat","qualifier","type_qualifier","single_type_qualifier","storage_qualifier","precision_qualifier","interpolation_qualifier","invariant_qualifier","arraySize","_this_children_","_this_children","size","isCustom","type_specifier","integerConstantExpr","array_specifier","operator","compute","b","integer_constant_expression_operator","Number","symbolInfo","integer_constant_expression","tt","type_specifier_nonarray","ext_builtin_type_specifier_nonarray","singleDecl","initDeclList","init_declarator_list","idList","identifier_list","visitDeclaration","declaration","visitFunctionProtoType","declarator","parameterList","parameterInfoList","function_prototype","header","_this_parameterList","function_declarator","visitFunctionHeader","function_header","visitFunctionParameterList","decl","function_parameter_list","varSymbol","typeQualifier","parameterDeclarator","parameter_declaration","parameter_declarator","simple_statement","compound_statement","compound_statement_no_scope","statement","visitStatementList","statement_list","_returnStatement","visitFunctionDefinition","statements","function_definition","visitFunctionCall","function_call","fnSymbol","functionIdentifier","isBuiltin","paramList","builtinFn","function_call_generic","expr","paramNodes","function_call_parameter_list","precision_specifier","visitFunctionIdentifier","ty","function_identifier","assignment_expression","assignment_operator","expression","primary_expression","visitPostfixExpression","postfix_expression","unary_operator","unary_expression","exp1","exp2","multiplicative_expression","additive_expression","shift_expression","relational_expression","equality_expression","and_expression","exclusive_or_expression","inclusive_or_expression","logical_and_expression","logical_xor_expression","logical_or_expression","conditional_expression","propList","declList","struct_specifier","flat","struct_declaration_list","declaratorList","firstChild","prop","struct_declaration","layout_qualifier","struct_declarator_list","struct_declarator","visitGlobalVariableDeclaration","variable_declaration","builtinVar","visitVariableIdentifier","_this_symbolInfo","variable_identifier","gs_shader_program","createProductionWithOptions","options","astTypePool","opt","addMapSetItem","k","isSubSet","sb","isActionEqual","action","printAction","actionInfo","Reduce","printProduction","deriv","gs","productionAndRules","global_declaration","GS_RenderQueueType","AND_ASSIGN","LALR1","grammar","firstSetMap","followSetMap","actionTable","gotoTable","_firstSetNTStack","generate","computeFirstSet","buildStateTable","startStateItemCore","startState","_extendState","_closure","newStates","_inferNextState","ns","_extendStateItem","productionList","newLookaheadSet","terminalExist","lastFirstSet","_step2","_iterator2","Utils","_step3","_iterator3","coreMap","stateActionTable","_this_actionTable_get","stateGotoTable","_this_gotoTable_get","stateItem","Accept","_addAction","nextItem","Shift","table","terminal","exist","_computeFirstSetForNT","idx","findIndex","computingFS","curNT","firstSet","succeedFirstSet","ShaderTargetParser","_traceBackStack","sematicAnalyzer","parse","tokens","performance","now","traceBackStack","nextToken","loopCount","info","reduceProduction","translationRule","nextState","_printStack","str","_token_lexeme","_singleton","generator","curState","_type_of","obj","MacroDefine","macro","_argsLexemes","_replaceRegex","RegExp","expandFunctionBody","_this_args","PreprocessorError","replace","m","isFunction","PpKeyword","BlockInfo","sourceFile","rangeInFile","sourceMap","MapRange","sourceBlock","rangeInBlock","generatedLoc","sourceLoc","block","getSourceIndex","generatedIdx","_this_sourceLoc","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","found","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","macroBody","tk","scanner","_onToken","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","_referencedGlobals","_referencedVaryingList","_referencedMRTList","mrtStruct","isAttributeStruct","isVaryingStruct","_this_varyingStruct_ident","_this_varyingStruct","varyingStruct","isMRTStruct","_this_mrtStruct_ident","_this_mrtStruct","referenceAttribute","referenceVarying","referenceMRTProp","referenceGlobal","fnEntries","_passSymbolTable","passSymbolTable","context","TempArray","array","V3_GL_FragColor","CodeGenVisitor","_tmpArrayPool","return","derivationLength","postExpr","identNode","indexNode","identLexeme","indexLexeme","_reportError","mrtLexeme","getFragDataCodeGen","getReferencedMRTPropText","paramInfoList","plainParams","fullType","_curFn","cmd","returnVar","returnFnCall","ReturnableObjectPool","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","out","propReferenced","getVisitor","GLES300Visitor","V3_GL_FragData","referencedMRTList","MAX_SAFE_INTEGER","_registerFragColorVariable","_extends","assign","hasOwnProperty","KeywordMap","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","constMap","passes","pass","isUsePass","passGlobalStatements","contents","_isRenderStateDeclarator","_isEngineType","_lookupSymbolByType","braceLevel","_addGlobalStatement","_parseSubShader","_parseRenderQueueAssignment","_parseRenderStateDeclarationOrAssignment","_parseVariableDeclaration","stateToken","isDeclaration","variable","renderState","_parseRenderStatePropList","_dropScope","_parseRenderStatePropItem","renderStateProp","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"],"mappings":"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"}
1
+ {"version":3,"file":"browser.verbose.min.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/_create_for_of_iterator_helper_loose.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/_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/Keywords.ts","../src/common/types.ts","../src/GSError.ts","../src/lalr/types.ts","../src/parser/symbolTable/SymbolInfo.ts","../src/parser/GrammarSymbol.ts","../src/common/Enums.ts","../src/parser/AST.ts","../src/preprocessor/constants.ts","../src/common/ShaderPosition.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/_wrap_native_super.js","../../../node_modules/.pnpm/@swc+helpers@0.5.15/node_modules/@swc/helpers/esm/_is_native_function.js","../src/ShaderLabUtils.ts","../src/common/BaseToken.ts","../src/lexer/Utils.ts","../../../node_modules/.pnpm/@swc+helpers@0.5.15/node_modules/@swc/helpers/esm/_create_class.js","../src/common/BaseScanner.ts","../src/lexer/Lexer.ts","../src/parser/ShaderInfo.ts","../src/parser/symbolTable/SymbolDataType.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/lalr/Production.ts","../src/parser/Grammar.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/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/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 _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","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","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","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","// #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 { 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 { 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 { 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","export enum EShaderStage {\n VERTEX,\n FRAGMENT,\n ALL\n}\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 SematicAnalyzer 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: SematicAnalyzer) {}\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: SematicAnalyzer, 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: SematicAnalyzer): void {\n sa.newScope();\n }\n }\n\n @ASTNodeDecorator(NoneTerminal.scope_end_brace)\n export class ScopeEndBrace extends TreeNode {\n override semanticAnalyze(sa: SematicAnalyzer): 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: SematicAnalyzer): 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: SematicAnalyzer): 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: SematicAnalyzer): 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: SematicAnalyzer): 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 get qualifierList() {\n if (this.children.length > 1) {\n return (<TypeQualifier>this.children[0]).qualifierList;\n }\n }\n\n get typeSpecifier() {\n return (this.children.length === 1 ? this.children[0] : this.children[1]) as TypeSpecifier;\n }\n\n get type() {\n return this.typeSpecifier.type;\n }\n }\n\n @ASTNodeDecorator(NoneTerminal.type_qualifier)\n export class TypeQualifier extends TreeNode {\n qualifierList: EKeyword[];\n\n override semanticAnalyze(sa: SematicAnalyzer): void {\n if (this.children.length > 1) {\n this.qualifierList = [\n ...(<TypeQualifier>this.children[0]).qualifierList,\n (<SingleTypeQualifier>this.children[1]).qualifier\n ];\n } else {\n this.qualifierList = [(<SingleTypeQualifier>this.children[0]).qualifier];\n }\n }\n }\n\n @ASTNodeDecorator(NoneTerminal.single_type_qualifier)\n export class SingleTypeQualifier extends TreeNode {\n qualifier: EKeyword;\n lexeme: string;\n\n override semanticAnalyze(sa: SematicAnalyzer): 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 get qualifier(): EKeyword {\n return (<Token>this.children[0]).type as EKeyword;\n }\n get lexeme(): string {\n return (<Token>this.children[0]).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 get type(): GalaceanDataType {\n return (this.children![0] as TypeSpecifierNonArray).type;\n }\n get lexeme(): string {\n return (this.children![0] as TypeSpecifierNonArray).lexeme;\n }\n get arraySize(): number {\n return (this.children?.[1] as ArraySpecifier)?.size;\n }\n get arraySpecifier(): ArraySpecifier {\n return this.children[1] as ArraySpecifier;\n }\n\n get isCustom() {\n return typeof this.type === \"string\";\n }\n }\n\n @ASTNodeDecorator(NoneTerminal.array_specifier)\n export class ArraySpecifier extends TreeNode {\n get size(): number | undefined {\n const integerConstantExpr = this.children[1] as IntegerConstantExpression;\n return 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 get lexeme(): string {\n return (this.children[0] as Token).lexeme;\n }\n\n override semanticAnalyze(sa: SematicAnalyzer): void {\n const operator = this.children[0] as Token;\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: SematicAnalyzer): 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 get typeInfo(): SymbolType {\n if (this.children.length === 1) {\n const singleDecl = this.children[0] as SingleDeclaration;\n return new SymbolType(\n singleDecl.typeSpecifier.type,\n singleDecl.typeSpecifier.lexeme,\n singleDecl.arraySpecifier\n );\n }\n\n const initDeclList = this.children[0] as InitDeclaratorList;\n return initDeclList.typeInfo;\n }\n\n override semanticAnalyze(sa: SematicAnalyzer): void {\n let sm: VarSymbol;\n if (this.children.length === 3 || this.children.length === 5) {\n const id = this.children[2] as Token;\n sm = new VarSymbol(id.lexeme, this.typeInfo, false, this);\n sa.symbolTableStack.insert(sm);\n } else if (this.children.length === 4 || this.children.length === 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 = this.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 get idList(): Token[] {\n if (this.children.length === 2) {\n return [this.children[1] as Token];\n }\n return [...(<IdentifierList>this.children[0]).idList, this.children[2] as Token];\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 private get declarator() {\n return this.children[0] as FunctionDeclarator;\n }\n\n get ident() {\n return this.declarator.ident;\n }\n\n get returnType() {\n return this.declarator.returnType;\n }\n\n get parameterList() {\n return this.declarator.parameterInfoList;\n }\n\n get paramSig() {\n return this.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 private get header() {\n return this.children[0] as FunctionHeader;\n }\n\n private get parameterList() {\n return this.children[1] as FunctionParameterList | undefined;\n }\n\n get ident() {\n return this.header.ident;\n }\n\n get returnType() {\n return this.header.returnType;\n }\n\n get parameterInfoList() {\n return this.parameterList?.parameterInfoList;\n }\n\n get paramSig() {\n return this.parameterList?.paramSig;\n }\n\n override semanticAnalyze(sa: SematicAnalyzer): void {\n sa.curFunctionInfo.returnStatement = null;\n sa.curFunctionInfo.header = this;\n }\n }\n\n @ASTNodeDecorator(NoneTerminal.function_header)\n export class FunctionHeader extends TreeNode {\n get ident() {\n return this.children[1] as Token;\n }\n get returnType() {\n return this.children[0] as FullySpecifiedType;\n }\n\n override semanticAnalyze(sa: SematicAnalyzer): void {\n sa.newScope();\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 get parameterInfoList(): IParamInfo[] {\n if (this.children.length === 1) {\n const decl = this.children[0] as ParameterDeclaration;\n return [{ ident: decl.ident, typeInfo: decl.typeInfo, astNode: decl }];\n }\n const list = this.children[0] as FunctionParameterList;\n const decl = this.children[2] as ParameterDeclaration;\n return [...list.parameterInfoList, { ident: decl.ident, typeInfo: decl.typeInfo, astNode: decl }];\n }\n\n get paramSig(): GalaceanDataType[] {\n if (this.children.length === 1) {\n const decl = this.children[0] as ParameterDeclaration;\n return [decl.typeInfo.type];\n } else {\n const list = this.children[0] as FunctionParameterList;\n const decl = this.children[2] as ParameterDeclaration;\n return list.paramSig.concat([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 get typeQualifier() {\n if (this.children.length === 2) return this.children[0] as TypeQualifier;\n }\n\n private get parameterDeclarator() {\n if (this.children.length === 1) return this.children[0] as ParameterDeclarator;\n return this.children[1] as ParameterDeclarator;\n }\n\n get typeInfo() {\n return this.parameterDeclarator.typeInfo;\n }\n\n get ident() {\n return this.parameterDeclarator.ident;\n }\n\n override semanticAnalyze(sa: SematicAnalyzer): void {\n let declarator: ParameterDeclarator;\n if (this.children.length === 1) {\n declarator = this.children[0] as ParameterDeclarator;\n } else {\n declarator = this.children[1] as ParameterDeclarator;\n }\n const varSymbol = new VarSymbol(declarator.ident.lexeme, declarator.typeInfo, false, this);\n sa.symbolTableStack.insert(varSymbol);\n }\n }\n\n @ASTNodeDecorator(NoneTerminal.parameter_declarator)\n export class ParameterDeclarator extends TreeNode {\n get ident() {\n return this.children[1] as Token;\n }\n\n get typeInfo(): SymbolType {\n const typeSpecifier = this.children[0] as TypeSpecifier;\n const arraySpecifier = this.children[2] as ArraySpecifier;\n return 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 private _returnStatement?: ASTNode.JumpStatement;\n\n get returnStatement(): ASTNode.JumpStatement | undefined {\n return this._returnStatement;\n }\n\n get protoType() {\n return this.children[0] as FunctionProtoType;\n }\n\n get statements() {\n return this.children[1] as CompoundStatementNoScope;\n }\n\n override init(): void {\n this._returnStatement = undefined;\n }\n\n override semanticAnalyze(sa: SematicAnalyzer): void {\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: SematicAnalyzer): 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: SematicAnalyzer): 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 get paramSig(): GalaceanDataType[] | undefined {\n if (this.children.length === 1) {\n const expr = this.children[0] as AssignmentExpression;\n if (expr.type == undefined) return [TypeAny];\n return [expr.type];\n } else {\n const list = this.children[0] as FunctionCallParameterList;\n const decl = this.children[2] as AssignmentExpression;\n if (list.paramSig == undefined || decl.type == undefined) {\n return [TypeAny];\n } else {\n return list.paramSig.concat([decl.type]);\n }\n }\n }\n\n get paramNodes(): AssignmentExpression[] {\n if (this.children.length === 1) {\n return [this.children[0] as AssignmentExpression];\n } else {\n const list = this.children[0] as FunctionCallParameterList;\n const decl = this.children[2] as AssignmentExpression;\n\n return list.paramNodes.concat([decl]);\n }\n }\n }\n\n @ASTNodeDecorator(NoneTerminal.precision_specifier)\n export class PrecisionSpecifier extends TreeNode {\n override semanticAnalyze(sa: SematicAnalyzer): void {\n sa.shaderData.globalPrecisions.push(this);\n }\n }\n\n @ASTNodeDecorator(NoneTerminal.function_identifier)\n export class FunctionIdentifier extends TreeNode {\n get ident() {\n const ty = this.children[0] as TypeSpecifier;\n return ty.type;\n }\n\n get lexeme() {\n const ty = this.children[0] as TypeSpecifier;\n return ty.lexeme;\n }\n\n get isBuiltin() {\n return typeof this.ident !== \"string\";\n }\n\n override semanticAnalyze(sa: SematicAnalyzer): void {}\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: SematicAnalyzer): 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: SematicAnalyzer): 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: SematicAnalyzer): 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 } 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 } 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: SematicAnalyzer): 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: SematicAnalyzer): 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: SematicAnalyzer): 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: SematicAnalyzer): 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: SematicAnalyzer): 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: SematicAnalyzer): 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: SematicAnalyzer): 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: SematicAnalyzer): 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: SematicAnalyzer): 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: SematicAnalyzer): 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\n get propList(): StructProp[] {\n const declList = (this.children.length === 6 ? this.children[3] : this.children[2]) as StructDeclarationList;\n return declList.propList;\n }\n\n override semanticAnalyze(sa: SematicAnalyzer): void {\n if (this.children.length === 6) {\n this.ident = this.children[1] as Token;\n sa.symbolTableStack.insert(new StructSymbol(this.ident.lexeme, this));\n }\n }\n }\n\n @ASTNodeDecorator(NoneTerminal.struct_declaration_list)\n export class StructDeclarationList extends TreeNode {\n get propList(): StructProp[] {\n if (this.children.length === 1) {\n return (<StructDeclaration>this.children[0]).propList;\n }\n const list = this.children[0] as StructDeclarationList;\n const decl = this.children[1] as StructDeclaration;\n return [list.propList, decl.propList].flat();\n }\n }\n\n @ASTNodeDecorator(NoneTerminal.struct_declaration)\n export class StructDeclaration extends TreeNode {\n get typeSpecifier() {\n if (this.children.length === 3) {\n return this.children[0] as TypeSpecifier;\n }\n return this.children[1] as TypeSpecifier;\n }\n\n get declaratorList() {\n if (this.children.length === 3) {\n return this.children[1] as StructDeclaratorList;\n }\n return this.children[2] as StructDeclaratorList;\n }\n\n get propList(): StructProp[] {\n const ret: StructProp[] = [];\n const firstChild = this.children[0];\n if (firstChild instanceof LayoutQualifier) {\n const typeSpecifier = this.children[1] as TypeSpecifier;\n const declarator = this.children[2] as StructDeclarator;\n const typeInfo = new SymbolType(typeSpecifier.type, typeSpecifier.lexeme);\n const prop = new StructProp(typeInfo, declarator.ident, firstChild.index);\n ret.push(prop);\n } else {\n for (let i = 0; i < this.declaratorList.declaratorList.length; i++) {\n const declarator = this.declaratorList.declaratorList[i];\n const typeInfo = new SymbolType(\n this.typeSpecifier.type,\n this.typeSpecifier.lexeme,\n declarator.arraySpecifier\n );\n const prop = new StructProp(typeInfo, declarator.ident);\n ret.push(prop);\n }\n }\n return ret;\n }\n }\n\n @ASTNodeDecorator(NoneTerminal.layout_qualifier)\n export class LayoutQualifier extends TreeNode {\n get index(): number {\n return Number((<BaseToken>this.children[4]).lexeme);\n }\n }\n\n @ASTNodeDecorator(NoneTerminal.struct_declarator_list)\n export class StructDeclaratorList extends TreeNode {\n get declaratorList(): StructDeclarator[] {\n if (this.children.length === 1) {\n return [this.children[0] as StructDeclarator];\n } else {\n const list = this.children[0] as StructDeclaratorList;\n return [...list.declaratorList, <StructDeclarator>this.children[1]];\n }\n }\n }\n\n @ASTNodeDecorator(NoneTerminal.struct_declarator)\n export class StructDeclarator extends TreeNode {\n get ident() {\n return this.children[0] as Token;\n }\n\n get arraySpecifier(): ArraySpecifier | undefined {\n return this.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: SematicAnalyzer): 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: SematicAnalyzer): 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 get lexeme(): string {\n return (<Token>this.children[0]).lexeme;\n }\n\n get typeInfo(): GalaceanDataType {\n if (this.symbolInfo instanceof VarSymbol) return this.symbolInfo.dataType.type;\n return this.symbolInfo?.type;\n }\n\n override semanticAnalyze(sa: SematicAnalyzer): void {\n const token = this.children[0] as Token;\n\n // #if _VERBOSE\n const builtinVar = BuiltinVariable.getVar(token.lexeme);\n if (builtinVar) {\n this.symbolInfo = builtinVar;\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 }\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: SematicAnalyzer): void {\n this.shaderData = sa.shaderData;\n this.shaderData.symbolTable = sa.symbolTableStack._scope;\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 { 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","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","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","function _is_native_function(fn) {\n return Function.toString.call(fn).indexOf(\"[native code]\") !== -1;\n}\nexport { _is_native_function as _ };\n","import { ClearableObjectPool, IPoolElement, Logger } from \"@galacean/engine\";\nimport { GSErrorName } from \"./GSError\";\nimport { ShaderRange } from \"./common/ShaderRange\";\nimport { ShaderPosition } from \"./common/ShaderPosition\";\n// #if _VERBOSE\nimport { GSError } from \"./GSError\";\n// #endif\n\nexport class ShaderLabUtils {\n private static _shaderLabObjectPoolSet: ClearableObjectPool<IPoolElement>[] = [];\n\n static createObjectPool<T extends IPoolElement>(type: new () => T) {\n const pool = new ClearableObjectPool<T>(type);\n ShaderLabUtils._shaderLabObjectPoolSet.push(pool);\n return pool;\n }\n\n static clearAllShaderLabObjectPool() {\n for (let i = 0, n = ShaderLabUtils._shaderLabObjectPoolSet.length; i < n; i++) {\n ShaderLabUtils._shaderLabObjectPoolSet[i].clear();\n }\n }\n\n static createGSError(\n message: string,\n errorName: GSErrorName,\n source: string,\n location: ShaderRange | ShaderPosition,\n file?: string\n ): Error | undefined {\n // #if _VERBOSE\n return new GSError(errorName, message, location, source, file);\n // #else\n Logger.error(message);\n // #endif\n }\n}\n","import { ETokenType } from \"./types\";\nimport { ShaderRange, ShaderPosition } from \".\";\nimport { ShaderLab } from \"../ShaderLab\";\nimport { IPoolElement } from \"@galacean/engine\";\nimport { ShaderLabUtils } from \"../ShaderLabUtils\";\n\nexport class BaseToken<T extends number = number> implements IPoolElement {\n static pool = ShaderLabUtils.createObjectPool(BaseToken);\n\n type: T;\n lexeme: string;\n location: ShaderRange;\n\n set(type: T, lexeme: string, start?: ShaderPosition);\n set(type: T, lexeme: string, location?: ShaderRange);\n set(type: T, lexeme: string, arg?: ShaderRange | ShaderPosition) {\n this.type = type;\n this.lexeme = lexeme;\n if (arg) {\n if (arg instanceof ShaderRange) {\n this.location = arg as ShaderRange;\n } else {\n const end = ShaderLab.createPosition(\n arg.index + lexeme.length,\n // #if _VERBOSE\n arg.line,\n arg.column + lexeme.length\n // #endif\n );\n this.location = ShaderLab.createRange(arg, end);\n }\n }\n }\n\n dispose(): void {}\n}\n\nexport const EOF = new BaseToken();\nEOF.set(ETokenType.EOF, \"/EOF\");\n","export default class LexerUtils {\n static isNum(charCode: number) {\n return charCode >= 48 && charCode <= 57;\n }\n\n static isLetter(charCode: number) {\n return (\n charCode === 95 || // _\n (charCode >= 48 && charCode <= 57) || // 0 - 9\n (charCode >= 65 && charCode <= 90) || // A - Z\n (charCode >= 97 && charCode <= 122) // a - z\n );\n }\n\n static isAlpha(charCode: number) {\n return (\n charCode === 95 || // _\n (charCode >= 65 && charCode <= 90) || // A - Z\n (charCode >= 97 && charCode <= 122) // a - z\n );\n }\n\n static isPpCharactors(charCode: number) {\n return (\n charCode === 35 || // #\n charCode === 46 || // .\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 { 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 { 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: SematicAnalyzer, ...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 SematicAnalyzer {\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 { NoneTerminal, GrammarSymbol } from \"../parser/GrammarSymbol\";\n\nexport default class Production {\n private static _id = 0;\n static pool: Map<number, Production> = new Map();\n\n readonly goal: NoneTerminal;\n readonly derivation: GrammarSymbol[];\n readonly id: number;\n\n constructor(goal: NoneTerminal, derivation: GrammarSymbol[]) {\n this.goal = goal;\n this.derivation = derivation;\n this.id = Production._id++;\n Production.pool.set(this.id, this);\n }\n}\n","import { ETokenType } from \"../common\";\nimport { NoneTerminal, GrammarSymbol } from \"./GrammarSymbol\";\nimport Production from \"../lalr/Production\";\n\nexport class Grammar {\n readonly productions: Production[];\n\n readonly startSymbol: NoneTerminal;\n\n static create(start: NoneTerminal, productions: GrammarSymbol[][]) {\n const _ps = productions.map((gsl) => {\n return new Production(<NoneTerminal>gsl[0], gsl.slice(1));\n });\n return new Grammar(start, _ps);\n }\n\n constructor(start: NoneTerminal, productions: Production[]) {\n this.startSymbol = start;\n productions.unshift(new Production(NoneTerminal.START, [start]));\n this.productions = productions;\n }\n\n getProductionList(nonTerminal: NoneTerminal) {\n return this.productions.filter((item) => item.goal === nonTerminal);\n }\n\n isNullableNT(NT: NoneTerminal) {\n return this.productions.find((item) => item.goal === NT && item.derivation[0] === ETokenType.EPSILON);\n }\n\n getProductionByID(pid: number) {\n return Production.pool.get(pid);\n }\n}\n","import { 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 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","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 SematicAnalyzer, { 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: SematicAnalyzer) => {\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","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.isPpCharactors(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 ShaderLab version: ${version}. mode: ${mode}`);\n"],"names":["_array_like_to_array","arr","len","length","i","arr2","Array","_create_for_of_iterator_helper_loose","o","allowArrayLike","it","Symbol","iterator","call","next","bind","isArray","_unsupported_iterable_to_array","minLen","n","Object","prototype","toString","slice","constructor","name","from","test","done","value","TypeError","_set_prototype_of","p","setPrototypeOf","__proto__","_inherits","subClass","superClass","create","writable","configurable","__decorate","decorators","target","key","desc","d","c","arguments","r","getOwnPropertyDescriptor","Reflect","decorate","defineProperty","SuppressedError","EKeyword","ETokenType","GSErrorName","EAction","ESymbolType","NoneTerminal","EShaderStage","ASTNode","TrivialNode","ScopeBrace","ScopeEndBrace","JumpStatement","ConditionOpt","ForRestStatement","Condition","ForInitStatement","IterationStatement","SelectionStatement","ExpressionStatement","ExpressionAstNode","InitializerList","Initializer","SingleDeclaration","FullySpecifiedType","TypeQualifier","SingleTypeQualifier","BasicTypeQualifier","StorageQualifier","PrecisionQualifier","InterpolationQualifier","InvariantQualifier","TypeSpecifier","ArraySpecifier","IntegerConstantExpressionOperator","IntegerConstantExpression","TypeSpecifierNonArray","ExtBuiltinTypeSpecifierNonArray","InitDeclaratorList","IdentifierList","Declaration","FunctionProtoType","FunctionDeclarator","FunctionHeader","FunctionParameterList","ParameterDeclaration","ParameterDeclarator","SimpleStatement","CompoundStatement","CompoundStatementNoScope","Statement","StatementList","FunctionDefinition","FunctionCall","FunctionCallGeneric","FunctionCallParameterList","PrecisionSpecifier","FunctionIdentifier","AssignmentExpression","AssignmentOperator","Expression","PrimaryExpression","PostfixExpression","UnaryOperator","UnaryExpression","MultiplicativeExpression","AdditiveExpression","ShiftExpression","RelationalExpression","EqualityExpression","AndExpression","ExclusiveOrExpression","InclusiveOrExpression","LogicalAndExpression","LogicalXorExpression","LogicalOrExpression","ConditionalExpression","StructSpecifier","StructDeclarationList","StructDeclaration","LayoutQualifier","StructDeclaratorList","StructDeclarator","VariableDeclaration","VariableDeclarationList","VariableIdentifier","GLShaderProgram","EPpToken","EPpKeyword","ShaderRange","set","start","end","dispose","ShaderPosition","index","line","column","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","_instanceof","left","right","hasInstance","_is_native_reflect_construct","result","Boolean","valueOf","construct","_","_construct","Parent","args","Class","a","push","apply","instance","Function","_get_prototype_of","getPrototypeOf","_wrap_native_super","_cache","undefined","indexOf","has","get","Wrapper","enumerable","GSError","Error1","message","location","source","file","_this","_proto","lines","split","diagnosticMessage","lineSplit","wrappingLineCount","remarkStart","remarkEnd","paddingLength","remarkLength","Math","max","repeat","Error","ShaderLabUtils","createObjectPool","type","pool","ClearableObjectPool","_shaderLabObjectPoolSet","clearAllShaderLabObjectPool","clear","createGSError","errorName","BaseToken","lexeme","arg","ShaderLab","createPosition","createRange","EOF","LexerUtils","isNum","charCode","isLetter","isAlpha","isPpCharactors","isSpace","_defineProperties","props","descriptor","_create_class","Constructor","protoProps","staticProps","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","_len","msgs","_key","error","join","ScannerError","Logger","scanPairedText","balanced","skipLeading","level","scanToken","onToken","splitCharRegex","_this__keywordsMap_get","token","NOT_WORD","tokenType","ID","range","checked","chars","current","Lexer","reset","tokenize","thisArg","body","f","y","t","label","sent","trys","ops","g","Iterator","verb","v","step","op","pop","e","_state","_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","ShaderData","globalPrecisions","SymbolDataType","typeLexeme","arraySpecifier","SymbolInfo","ident","symbolType","astNode","dataType","signature","FnSymbol","protoType","returnType","typeSpecifier","FN","StructSymbol","BaseSymbolTable","_table","SymbolTableStack","stack","newScope","scope","dropScope","insert","sm","_scope","TargetSymbolTable","_this__table_get","entry","_compareWith","warn","lookup","item","getAllFnSymbols","fnIdent","entries","filter","params","paramSig","comparedParams","t1","t2","VarSymbol","isGlobalVariable","initAst","VAR","SematicAnalyzer","semanticStack","acceptRule","symbolTableStack","curFunctionInfo","_shaderData","_translationRuleTable","errors","addTranslationRule","pid","rule","getTranslationRule","lookupSymbolBy","ret","symbolTable","reportError","loc","CompilationError","_processingPassText","shaderData","Production","goal","derivation","id","_id","Grammar","productions","startSymbol","unshift","START","getProductionList","nonTerminal","isNullableNT","NT","find","EPSILON","getProductionByID","map","gsl","isGenericType","BuiltinFunctionTable","BuiltinFunction","_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","_step","_iterator","la","add","addLookahead","ts","needReInfer","symbolByOffset","canReduce","coreItem","GrammarUtils","curSymbol","nextSymbol","State","cores","closured","_stateItemPool","_items","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","_step1","_iterator1","psItem","SymbolType","StructProp","typeInfo","mrtIndex","ASTNodeDecorator","TreeNode","_location","_children","init","codeGen","visitor","defaultCodeGen","semanticAnalyze","sa","_unwrapToken","_ignore","scope_brace","scope_end_brace","isFragReturnStatement","returnStatement","visitJumpStatement","jump_statement","conditionopt","for_rest_statement","condition","for_init_statement","iteration_statement","selection_statement","expression_statement","_type","_this__type","initializer_list","initializer","childrenLen","fullyType","visitSingleDeclaration","single_declaration","qualifierList","fully_specified_type","concat","qualifier","type_qualifier","single_type_qualifier","storage_qualifier","precision_qualifier","interpolation_qualifier","invariant_qualifier","arraySize","_this_children_","_this_children","size","isCustom","type_specifier","integerConstantExpr","array_specifier","operator","compute","b","integer_constant_expression_operator","Number","symbolInfo","integer_constant_expression","tt","type_specifier_nonarray","ext_builtin_type_specifier_nonarray","singleDecl","initDeclList","init_declarator_list","idList","identifier_list","visitDeclaration","declaration","visitFunctionProtoType","declarator","parameterList","parameterInfoList","function_prototype","header","_this_parameterList","function_declarator","visitFunctionHeader","function_header","visitFunctionParameterList","decl","function_parameter_list","varSymbol","typeQualifier","parameterDeclarator","parameter_declaration","parameter_declarator","simple_statement","compound_statement","compound_statement_no_scope","statement","visitStatementList","statement_list","_returnStatement","visitFunctionDefinition","statements","function_definition","visitFunctionCall","function_call","fnSymbol","functionIdentifier","isBuiltin","paramList","builtinFn","function_call_generic","expr","paramNodes","function_call_parameter_list","precision_specifier","visitFunctionIdentifier","ty","function_identifier","assignment_expression","assignment_operator","expression","primary_expression","visitPostfixExpression","postfix_expression","unary_operator","unary_expression","exp1","exp2","multiplicative_expression","additive_expression","shift_expression","relational_expression","equality_expression","and_expression","exclusive_or_expression","inclusive_or_expression","logical_and_expression","logical_xor_expression","logical_or_expression","conditional_expression","propList","declList","struct_specifier","flat","struct_declaration_list","declaratorList","firstChild","prop","struct_declaration","layout_qualifier","struct_declarator_list","struct_declarator","visitGlobalVariableDeclaration","variable_declaration","variableDeclaration","newVariable","variable_declaration_list","builtinVar","visitVariableIdentifier","_this_symbolInfo","variable_identifier","gs_shader_program","createProductionWithOptions","options","astTypePool","opt","addMapSetItem","k","isSubSet","sb","isActionEqual","action","printAction","actionInfo","Reduce","printProduction","deriv","gs","productionAndRules","global_declaration","variable_declaration_statement","AND_ASSIGN","LALR1","grammar","firstSetMap","followSetMap","actionTable","gotoTable","_firstSetNTStack","generate","computeFirstSet","buildStateTable","startStateItemCore","startState","_extendState","_closure","newStates","_inferNextState","ns","_extendStateItem","productionList","newLookaheadSet","terminalExist","lastFirstSet","_step2","_iterator2","Utils","_step3","_iterator3","coreMap","stateActionTable","_this_actionTable_get","stateGotoTable","_this_gotoTable_get","stateItem","Accept","_addAction","nextItem","Shift","table","terminal","exist","_computeFirstSetForNT","idx","findIndex","computingFS","curNT","firstSet","succeedFirstSet","ShaderTargetParser","_traceBackStack","sematicAnalyzer","parse","tokens","performance","now","traceBackStack","nextToken","loopCount","info","reduceProduction","translationRule","nextState","_printStack","str","_token_lexeme","_singleton","generator","curState","_type_of","obj","MacroDefine","macro","_argsLexemes","_replaceRegex","RegExp","expandFunctionBody","_this_args","PreprocessorError","replace","m","isFunction","PpKeyword","BlockInfo","sourceFile","rangeInFile","sourceMap","MapRange","sourceBlock","rangeInBlock","generatedLoc","sourceLoc","block","getSourceIndex","generatedIdx","_this_sourceLoc","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","macroBody","tk","scanner","_onToken","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","_referencedGlobals","_referencedVaryingList","_referencedMRTList","mrtStruct","isAttributeStruct","isVaryingStruct","_this_varyingStruct_ident","_this_varyingStruct","varyingStruct","isMRTStruct","_this_mrtStruct_ident","_this_mrtStruct","referenceAttribute","referenceVarying","referenceMRTProp","referenceGlobal","fnEntries","_passSymbolTable","passSymbolTable","context","TempArray","array","V3_GL_FragColor","CodeGenVisitor","_tmpArrayPool","return","derivationLength","postExpr","identNode","indexNode","identLexeme","indexLexeme","_reportError","mrtLexeme","getFragDataCodeGen","getReferencedMRTPropText","paramInfoList","plainParams","fullType","_curFn","cmd","returnVar","returnFnCall","ReturnableObjectPool","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","out","propReferenced","getVisitor","GLES300Visitor","V3_GL_FragData","referencedMRTList","MAX_SAFE_INTEGER","_registerFragColorVariable","_extends","assign","hasOwnProperty","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","constMap","passes","pass","isUsePass","passGlobalStatements","contents","_isRenderStateDeclarator","_isEngineType","_lookupSymbolByType","braceLevel","_addGlobalStatement","_parseSubShader","_parseRenderQueueAssignment","_parseRenderStateDeclarationOrAssignment","_parseVariableDeclaration","stateToken","isDeclaration","variable","renderState","_parseRenderStatePropList","_dropScope","_parseRenderStatePropItem","renderStateProp","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"],"mappings":"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"}