@galacean/engine-shaderlab 1.4.9 → 1.4.11
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/browser.js +297 -503
- package/dist/browser.js.map +1 -1
- package/dist/browser.min.js +1 -1
- package/dist/browser.min.js.map +1 -1
- package/dist/browser.verbose.js +306 -519
- package/dist/browser.verbose.js.map +1 -1
- package/dist/browser.verbose.min.js +1 -1
- package/dist/browser.verbose.min.js.map +1 -1
- package/dist/main.js +297 -503
- package/dist/main.js.map +1 -1
- package/dist/main.verbose.js +306 -519
- package/dist/main.verbose.js.map +1 -1
- package/dist/module.js +297 -503
- package/dist/module.js.map +1 -1
- package/dist/module.verbose.js +306 -519
- package/dist/module.verbose.js.map +1 -1
- package/package.json +4 -4
- package/types/lalr/CFG.d.ts +2 -2
- package/types/lexer/Utils.d.ts +1 -1
- package/types/parser/AST.d.ts +111 -95
- package/types/parser/SemanticAnalyzer.d.ts +1 -1
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@galacean/engine-shaderlab",
|
|
3
|
-
"version": "1.4.
|
|
3
|
+
"version": "1.4.11",
|
|
4
4
|
"publishConfig": {
|
|
5
5
|
"access": "public",
|
|
6
6
|
"registry": "https://registry.npmjs.org"
|
|
@@ -26,11 +26,11 @@
|
|
|
26
26
|
"verbose/package.json"
|
|
27
27
|
],
|
|
28
28
|
"devDependencies": {
|
|
29
|
-
"@galacean/engine-design": "1.4.
|
|
30
|
-
"@galacean/engine": "1.4.
|
|
29
|
+
"@galacean/engine-design": "1.4.11",
|
|
30
|
+
"@galacean/engine": "1.4.11"
|
|
31
31
|
},
|
|
32
32
|
"peerDependencies": {
|
|
33
|
-
"@galacean/engine": "1.4.
|
|
33
|
+
"@galacean/engine": "1.4.11"
|
|
34
34
|
},
|
|
35
35
|
"scripts": {
|
|
36
36
|
"b:types": "tsc"
|
package/types/lalr/CFG.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { Grammar } from "../parser/Grammar";
|
|
2
|
-
import
|
|
2
|
+
import SemanticAnalyzer from "../parser/SemanticAnalyzer";
|
|
3
3
|
declare const createGrammar: () => Grammar;
|
|
4
|
-
declare const addTranslationRule: (sa:
|
|
4
|
+
declare const addTranslationRule: (sa: SemanticAnalyzer) => void;
|
|
5
5
|
export { createGrammar, addTranslationRule };
|
package/types/lexer/Utils.d.ts
CHANGED
|
@@ -2,6 +2,6 @@ export default class LexerUtils {
|
|
|
2
2
|
static isNum(charCode: number): boolean;
|
|
3
3
|
static isLetter(charCode: number): boolean;
|
|
4
4
|
static isAlpha(charCode: number): boolean;
|
|
5
|
-
static
|
|
5
|
+
static isPpCharacters(charCode: number): boolean;
|
|
6
6
|
static isSpace(charCode: number): charCode is 9 | 10 | 13 | 32;
|
|
7
7
|
}
|
package/types/parser/AST.d.ts
CHANGED
|
@@ -4,7 +4,7 @@ import { CodeGenVisitor } from "../codeGen";
|
|
|
4
4
|
import { EKeyword, GalaceanDataType, ShaderRange, TokenType } from "../common";
|
|
5
5
|
import { BaseToken, BaseToken as Token } from "../common/BaseToken";
|
|
6
6
|
import { NoneTerminal } from "./GrammarSymbol";
|
|
7
|
-
import
|
|
7
|
+
import SemanticAnalyzer from "./SemanticAnalyzer";
|
|
8
8
|
import { ShaderData } from "./ShaderInfo";
|
|
9
9
|
import { FnSymbol, StructSymbol, VarSymbol } from "./symbolTable";
|
|
10
10
|
import { IParamInfo, NodeChild, StructProp, SymbolType } from "./types";
|
|
@@ -25,26 +25,26 @@ export declare abstract class TreeNode implements IPoolElement {
|
|
|
25
25
|
/**
|
|
26
26
|
* Do semantic analyze right after the ast node is generated.
|
|
27
27
|
*/
|
|
28
|
-
semanticAnalyze(sa:
|
|
28
|
+
semanticAnalyze(sa: SemanticAnalyzer): void;
|
|
29
29
|
}
|
|
30
30
|
export declare namespace ASTNode {
|
|
31
31
|
export type ASTNodePool = ClearableObjectPool<{
|
|
32
32
|
set: (loc: ShaderRange, children: NodeChild[]) => void;
|
|
33
33
|
} & IPoolElement & TreeNode>;
|
|
34
34
|
export function _unwrapToken(node: NodeChild): BaseToken<number>;
|
|
35
|
-
export function get(pool: ASTNodePool, sa:
|
|
35
|
+
export function get(pool: ASTNodePool, sa: SemanticAnalyzer, loc: ShaderRange, children: NodeChild[]): void;
|
|
36
36
|
export class TrivialNode extends TreeNode {
|
|
37
37
|
}
|
|
38
38
|
export class ScopeBrace extends TreeNode {
|
|
39
|
-
semanticAnalyze(sa:
|
|
39
|
+
semanticAnalyze(sa: SemanticAnalyzer): void;
|
|
40
40
|
}
|
|
41
41
|
export class ScopeEndBrace extends TreeNode {
|
|
42
|
-
semanticAnalyze(sa:
|
|
42
|
+
semanticAnalyze(sa: SemanticAnalyzer): void;
|
|
43
43
|
}
|
|
44
44
|
export class JumpStatement extends TreeNode {
|
|
45
45
|
isFragReturnStatement: boolean;
|
|
46
46
|
init(): void;
|
|
47
|
-
semanticAnalyze(sa:
|
|
47
|
+
semanticAnalyze(sa: SemanticAnalyzer): void;
|
|
48
48
|
codeGen(visitor: CodeGenVisitor): string;
|
|
49
49
|
}
|
|
50
50
|
export class ConditionOpt extends TreeNode {
|
|
@@ -68,35 +68,34 @@ export declare namespace ASTNode {
|
|
|
68
68
|
init(): void;
|
|
69
69
|
}
|
|
70
70
|
export class InitializerList extends ExpressionAstNode {
|
|
71
|
-
semanticAnalyze(sa:
|
|
71
|
+
semanticAnalyze(sa: SemanticAnalyzer): void;
|
|
72
72
|
}
|
|
73
73
|
export class Initializer extends ExpressionAstNode {
|
|
74
|
-
semanticAnalyze(sa:
|
|
74
|
+
semanticAnalyze(sa: SemanticAnalyzer): void;
|
|
75
75
|
}
|
|
76
76
|
export class SingleDeclaration extends TreeNode {
|
|
77
77
|
typeSpecifier: TypeSpecifier;
|
|
78
78
|
arraySpecifier?: ArraySpecifier;
|
|
79
79
|
init(): void;
|
|
80
|
-
semanticAnalyze(sa:
|
|
80
|
+
semanticAnalyze(sa: SemanticAnalyzer): void;
|
|
81
81
|
codeGen(visitor: CodeGenVisitor): string;
|
|
82
82
|
}
|
|
83
83
|
export class FullySpecifiedType extends TreeNode {
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
84
|
+
typeSpecifier: TypeSpecifier;
|
|
85
|
+
type: GalaceanDataType;
|
|
86
|
+
semanticAnalyze(_: SemanticAnalyzer): void;
|
|
87
87
|
}
|
|
88
88
|
export class TypeQualifier extends TreeNode {
|
|
89
|
-
qualifierList: EKeyword[];
|
|
90
|
-
semanticAnalyze(sa: SematicAnalyzer): void;
|
|
91
89
|
}
|
|
92
90
|
export class SingleTypeQualifier extends TreeNode {
|
|
93
91
|
qualifier: EKeyword;
|
|
94
92
|
lexeme: string;
|
|
95
|
-
semanticAnalyze(sa:
|
|
93
|
+
semanticAnalyze(sa: SemanticAnalyzer): void;
|
|
96
94
|
}
|
|
97
95
|
abstract class BasicTypeQualifier extends TreeNode {
|
|
98
|
-
|
|
99
|
-
|
|
96
|
+
qualifier: EKeyword;
|
|
97
|
+
lexeme: string;
|
|
98
|
+
semanticAnalyze(sa: SemanticAnalyzer): void;
|
|
100
99
|
}
|
|
101
100
|
export class StorageQualifier extends BasicTypeQualifier {
|
|
102
101
|
}
|
|
@@ -107,24 +106,27 @@ export declare namespace ASTNode {
|
|
|
107
106
|
export class InvariantQualifier extends BasicTypeQualifier {
|
|
108
107
|
}
|
|
109
108
|
export class TypeSpecifier extends TreeNode {
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
109
|
+
type: GalaceanDataType;
|
|
110
|
+
lexeme: string;
|
|
111
|
+
arraySize?: number;
|
|
112
|
+
isCustom: boolean;
|
|
113
|
+
init(): void;
|
|
113
114
|
get arraySpecifier(): ArraySpecifier;
|
|
114
|
-
|
|
115
|
+
semanticAnalyze(sa: SemanticAnalyzer): void;
|
|
115
116
|
}
|
|
116
117
|
export class ArraySpecifier extends TreeNode {
|
|
117
|
-
|
|
118
|
+
size: number | undefined;
|
|
119
|
+
semanticAnalyze(sa: SemanticAnalyzer): void;
|
|
118
120
|
}
|
|
119
121
|
export class IntegerConstantExpressionOperator extends TreeNode {
|
|
120
122
|
compute: (a: number, b: number) => number;
|
|
121
|
-
|
|
122
|
-
semanticAnalyze(sa:
|
|
123
|
+
lexeme: string;
|
|
124
|
+
semanticAnalyze(sa: SemanticAnalyzer): void;
|
|
123
125
|
}
|
|
124
126
|
export class IntegerConstantExpression extends TreeNode {
|
|
125
127
|
value?: number;
|
|
126
128
|
init(): void;
|
|
127
|
-
semanticAnalyze(sa:
|
|
129
|
+
semanticAnalyze(sa: SemanticAnalyzer): void;
|
|
128
130
|
}
|
|
129
131
|
export class TypeSpecifierNonArray extends TreeNode {
|
|
130
132
|
type: GalaceanDataType;
|
|
@@ -137,53 +139,56 @@ export declare namespace ASTNode {
|
|
|
137
139
|
init(): void;
|
|
138
140
|
}
|
|
139
141
|
export class InitDeclaratorList extends TreeNode {
|
|
140
|
-
|
|
141
|
-
semanticAnalyze(sa:
|
|
142
|
+
typeInfo: SymbolType;
|
|
143
|
+
semanticAnalyze(sa: SemanticAnalyzer): void;
|
|
142
144
|
}
|
|
143
145
|
export class IdentifierList extends TreeNode {
|
|
144
|
-
|
|
146
|
+
idList: Token[];
|
|
147
|
+
init(): void;
|
|
148
|
+
semanticAnalyze(sa: SemanticAnalyzer): void;
|
|
145
149
|
}
|
|
146
150
|
export class Declaration extends TreeNode {
|
|
147
151
|
codeGen(visitor: CodeGenVisitor): string;
|
|
148
152
|
}
|
|
149
153
|
export class FunctionProtoType extends TreeNode {
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
154
|
+
ident: Token;
|
|
155
|
+
returnType: FullySpecifiedType;
|
|
156
|
+
parameterList: IParamInfo[];
|
|
157
|
+
paramSig: GalaceanDataType[];
|
|
158
|
+
semanticAnalyze(sa: SemanticAnalyzer): void;
|
|
155
159
|
codeGen(visitor: CodeGenVisitor): string;
|
|
156
160
|
}
|
|
157
161
|
export class FunctionDeclarator extends TreeNode {
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
get paramSig(): GalaceanDataType[];
|
|
164
|
-
semanticAnalyze(sa: SematicAnalyzer): void;
|
|
162
|
+
ident: Token;
|
|
163
|
+
returnType: FullySpecifiedType;
|
|
164
|
+
parameterInfoList: IParamInfo[] | undefined;
|
|
165
|
+
paramSig: GalaceanDataType[] | undefined;
|
|
166
|
+
semanticAnalyze(sa: SemanticAnalyzer): void;
|
|
165
167
|
}
|
|
166
168
|
export class FunctionHeader extends TreeNode {
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
semanticAnalyze(sa:
|
|
169
|
+
ident: Token;
|
|
170
|
+
returnType: FullySpecifiedType;
|
|
171
|
+
semanticAnalyze(sa: SemanticAnalyzer): void;
|
|
170
172
|
codeGen(visitor: CodeGenVisitor): string;
|
|
171
173
|
}
|
|
172
174
|
export class FunctionParameterList extends TreeNode {
|
|
173
|
-
|
|
174
|
-
|
|
175
|
+
parameterInfoList: IParamInfo[];
|
|
176
|
+
paramSig: GalaceanDataType[];
|
|
177
|
+
init(): void;
|
|
178
|
+
semanticAnalyze(sa: SemanticAnalyzer): void;
|
|
175
179
|
codeGen(visitor: CodeGenVisitor): string;
|
|
176
180
|
}
|
|
177
181
|
export class ParameterDeclaration extends TreeNode {
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
semanticAnalyze(sa:
|
|
182
|
+
typeQualifier: TypeQualifier | undefined;
|
|
183
|
+
typeInfo: SymbolType;
|
|
184
|
+
ident: Token;
|
|
185
|
+
init(): void;
|
|
186
|
+
semanticAnalyze(sa: SemanticAnalyzer): void;
|
|
183
187
|
}
|
|
184
188
|
export class ParameterDeclarator extends TreeNode {
|
|
185
|
-
|
|
186
|
-
|
|
189
|
+
ident: Token;
|
|
190
|
+
typeInfo: SymbolType;
|
|
191
|
+
semanticAnalyze(sa: SemanticAnalyzer): void;
|
|
187
192
|
}
|
|
188
193
|
export class SimpleStatement extends TreeNode {
|
|
189
194
|
}
|
|
@@ -197,47 +202,48 @@ export declare namespace ASTNode {
|
|
|
197
202
|
codeGen(visitor: CodeGenVisitor): string;
|
|
198
203
|
}
|
|
199
204
|
export class FunctionDefinition extends TreeNode {
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
get statements(): CompoundStatementNoScope;
|
|
205
|
+
returnStatement?: ASTNode.JumpStatement;
|
|
206
|
+
protoType: FunctionProtoType;
|
|
207
|
+
statements: CompoundStatementNoScope;
|
|
204
208
|
init(): void;
|
|
205
|
-
semanticAnalyze(sa:
|
|
209
|
+
semanticAnalyze(sa: SemanticAnalyzer): void;
|
|
206
210
|
codeGen(visitor: CodeGenVisitor): string;
|
|
207
211
|
}
|
|
208
212
|
export class FunctionCall extends ExpressionAstNode {
|
|
209
|
-
semanticAnalyze(sa:
|
|
213
|
+
semanticAnalyze(sa: SemanticAnalyzer): void;
|
|
210
214
|
codeGen(visitor: CodeGenVisitor): string;
|
|
211
215
|
}
|
|
212
216
|
export class FunctionCallGeneric extends ExpressionAstNode {
|
|
213
217
|
fnSymbol: FnSymbol | StructSymbol | undefined;
|
|
214
218
|
init(): void;
|
|
215
|
-
semanticAnalyze(sa:
|
|
219
|
+
semanticAnalyze(sa: SemanticAnalyzer): void;
|
|
216
220
|
}
|
|
217
221
|
export class FunctionCallParameterList extends TreeNode {
|
|
218
|
-
|
|
219
|
-
|
|
222
|
+
paramSig: GalaceanDataType[];
|
|
223
|
+
paramNodes: AssignmentExpression[];
|
|
224
|
+
init(): void;
|
|
225
|
+
semanticAnalyze(sa: SemanticAnalyzer): void;
|
|
220
226
|
}
|
|
221
227
|
export class PrecisionSpecifier extends TreeNode {
|
|
222
|
-
semanticAnalyze(sa:
|
|
228
|
+
semanticAnalyze(sa: SemanticAnalyzer): void;
|
|
223
229
|
}
|
|
224
230
|
export class FunctionIdentifier extends TreeNode {
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
semanticAnalyze(sa:
|
|
231
|
+
ident: GalaceanDataType;
|
|
232
|
+
lexeme: string;
|
|
233
|
+
isBuiltin: boolean;
|
|
234
|
+
semanticAnalyze(sa: SemanticAnalyzer): void;
|
|
229
235
|
codeGen(visitor: CodeGenVisitor): string;
|
|
230
236
|
}
|
|
231
237
|
export class AssignmentExpression extends ExpressionAstNode {
|
|
232
|
-
semanticAnalyze(sa:
|
|
238
|
+
semanticAnalyze(sa: SemanticAnalyzer): void;
|
|
233
239
|
}
|
|
234
240
|
export class AssignmentOperator extends TreeNode {
|
|
235
241
|
}
|
|
236
242
|
export class Expression extends ExpressionAstNode {
|
|
237
|
-
semanticAnalyze(sa:
|
|
243
|
+
semanticAnalyze(sa: SemanticAnalyzer): void;
|
|
238
244
|
}
|
|
239
245
|
export class PrimaryExpression extends ExpressionAstNode {
|
|
240
|
-
semanticAnalyze(sa:
|
|
246
|
+
semanticAnalyze(sa: SemanticAnalyzer): void;
|
|
241
247
|
}
|
|
242
248
|
export class PostfixExpression extends ExpressionAstNode {
|
|
243
249
|
init(): void;
|
|
@@ -255,77 +261,87 @@ export declare namespace ASTNode {
|
|
|
255
261
|
init(): void;
|
|
256
262
|
}
|
|
257
263
|
export class ShiftExpression extends ExpressionAstNode {
|
|
258
|
-
semanticAnalyze(sa:
|
|
264
|
+
semanticAnalyze(sa: SemanticAnalyzer): void;
|
|
259
265
|
}
|
|
260
266
|
export class RelationalExpression extends ExpressionAstNode {
|
|
261
|
-
semanticAnalyze(sa:
|
|
267
|
+
semanticAnalyze(sa: SemanticAnalyzer): void;
|
|
262
268
|
}
|
|
263
269
|
export class EqualityExpression extends ExpressionAstNode {
|
|
264
|
-
semanticAnalyze(sa:
|
|
270
|
+
semanticAnalyze(sa: SemanticAnalyzer): void;
|
|
265
271
|
}
|
|
266
272
|
export class AndExpression extends ExpressionAstNode {
|
|
267
|
-
semanticAnalyze(sa:
|
|
273
|
+
semanticAnalyze(sa: SemanticAnalyzer): void;
|
|
268
274
|
}
|
|
269
275
|
export class ExclusiveOrExpression extends ExpressionAstNode {
|
|
270
|
-
semanticAnalyze(sa:
|
|
276
|
+
semanticAnalyze(sa: SemanticAnalyzer): void;
|
|
271
277
|
}
|
|
272
278
|
export class InclusiveOrExpression extends ExpressionAstNode {
|
|
273
|
-
semanticAnalyze(sa:
|
|
279
|
+
semanticAnalyze(sa: SemanticAnalyzer): void;
|
|
274
280
|
}
|
|
275
281
|
export class LogicalAndExpression extends ExpressionAstNode {
|
|
276
|
-
semanticAnalyze(sa:
|
|
282
|
+
semanticAnalyze(sa: SemanticAnalyzer): void;
|
|
277
283
|
}
|
|
278
284
|
export class LogicalXorExpression extends ExpressionAstNode {
|
|
279
|
-
semanticAnalyze(sa:
|
|
285
|
+
semanticAnalyze(sa: SemanticAnalyzer): void;
|
|
280
286
|
}
|
|
281
287
|
export class LogicalOrExpression extends ExpressionAstNode {
|
|
282
|
-
semanticAnalyze(sa:
|
|
288
|
+
semanticAnalyze(sa: SemanticAnalyzer): void;
|
|
283
289
|
}
|
|
284
290
|
export class ConditionalExpression extends ExpressionAstNode {
|
|
285
|
-
semanticAnalyze(sa:
|
|
291
|
+
semanticAnalyze(sa: SemanticAnalyzer): void;
|
|
286
292
|
}
|
|
287
293
|
export class StructSpecifier extends TreeNode {
|
|
288
294
|
ident?: Token;
|
|
289
|
-
|
|
290
|
-
|
|
295
|
+
propList: StructProp[];
|
|
296
|
+
init(): void;
|
|
297
|
+
semanticAnalyze(sa: SemanticAnalyzer): void;
|
|
291
298
|
}
|
|
292
299
|
export class StructDeclarationList extends TreeNode {
|
|
293
|
-
|
|
300
|
+
propList: StructProp[];
|
|
301
|
+
init(): void;
|
|
302
|
+
semanticAnalyze(sa: SemanticAnalyzer): void;
|
|
294
303
|
}
|
|
295
304
|
export class StructDeclaration extends TreeNode {
|
|
296
|
-
|
|
297
|
-
|
|
298
|
-
|
|
305
|
+
typeSpecifier: TypeSpecifier;
|
|
306
|
+
declaratorList: StructDeclaratorList;
|
|
307
|
+
props: StructProp[];
|
|
308
|
+
init(): void;
|
|
309
|
+
semanticAnalyze(sa: SemanticAnalyzer): void;
|
|
299
310
|
}
|
|
300
311
|
export class LayoutQualifier extends TreeNode {
|
|
301
|
-
|
|
312
|
+
index: number;
|
|
313
|
+
semanticAnalyze(sa: SemanticAnalyzer): void;
|
|
302
314
|
}
|
|
303
315
|
export class StructDeclaratorList extends TreeNode {
|
|
304
|
-
|
|
316
|
+
declaratorList: StructDeclarator[];
|
|
317
|
+
init(): void;
|
|
318
|
+
semanticAnalyze(sa: SemanticAnalyzer): void;
|
|
305
319
|
}
|
|
306
320
|
export class StructDeclarator extends TreeNode {
|
|
307
|
-
|
|
308
|
-
|
|
321
|
+
ident: Token;
|
|
322
|
+
arraySpecifier: ArraySpecifier | undefined;
|
|
323
|
+
init(): void;
|
|
324
|
+
semanticAnalyze(sa: SemanticAnalyzer): void;
|
|
309
325
|
}
|
|
310
326
|
export class VariableDeclaration extends TreeNode {
|
|
311
327
|
type: FullySpecifiedType;
|
|
312
|
-
semanticAnalyze(sa:
|
|
328
|
+
semanticAnalyze(sa: SemanticAnalyzer): void;
|
|
313
329
|
codeGen(visitor: CodeGenVisitor): string;
|
|
314
330
|
}
|
|
315
331
|
export class VariableDeclarationList extends TreeNode {
|
|
316
332
|
type: FullySpecifiedType;
|
|
317
|
-
semanticAnalyze(sa:
|
|
333
|
+
semanticAnalyze(sa: SemanticAnalyzer): void;
|
|
318
334
|
}
|
|
319
335
|
export class VariableIdentifier extends TreeNode {
|
|
320
336
|
symbolInfo: VarSymbol | BuiltinVariable | null;
|
|
321
|
-
|
|
322
|
-
|
|
323
|
-
semanticAnalyze(sa:
|
|
337
|
+
lexeme: string;
|
|
338
|
+
typeInfo: GalaceanDataType;
|
|
339
|
+
semanticAnalyze(sa: SemanticAnalyzer): void;
|
|
324
340
|
codeGen(visitor: CodeGenVisitor): string;
|
|
325
341
|
}
|
|
326
342
|
export class GLShaderProgram extends TreeNode {
|
|
327
343
|
shaderData: ShaderData;
|
|
328
|
-
semanticAnalyze(sa:
|
|
344
|
+
semanticAnalyze(sa: SemanticAnalyzer): void;
|
|
329
345
|
}
|
|
330
346
|
export {};
|
|
331
347
|
}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
import { NodeChild } from "./types";
|
|
2
|
-
export type TranslationRule<T = any> = (sa:
|
|
2
|
+
export type TranslationRule<T = any> = (sa: SemanticAnalyzer, ...tokens: NodeChild[]) => T;
|