Moved parser to typescript
This commit is contained in:
28
app/imports/parser/parseTree/NodeFactory.ts
Normal file
28
app/imports/parser/parseTree/NodeFactory.ts
Normal file
@@ -0,0 +1,28 @@
|
||||
import { ParseNode } from '/imports/parser/parser';
|
||||
import { ResolvedResult, Context } from '/imports/parser/resolve';
|
||||
|
||||
export type ResolveLevel = 'compile' | 'roll' | 'reduce';
|
||||
|
||||
export default interface NodeFactory {
|
||||
create(node: Partial<ParseNode>): ParseNode;
|
||||
|
||||
compile?(
|
||||
node: ParseNode, scope: Record<string, any>, context: Context
|
||||
): ResolvedResult;
|
||||
|
||||
roll?(
|
||||
node: ParseNode, scope: Record<string, any>, context: Context
|
||||
): ResolvedResult;
|
||||
|
||||
reduce?(
|
||||
node: ParseNode, scope: Record<string, any>, context: Context
|
||||
): ResolvedResult;
|
||||
|
||||
resolve?(
|
||||
fn: ResolveLevel, node: ParseNode, scope: Record<string, any>, context: Context
|
||||
): ResolvedResult;
|
||||
|
||||
toString(node: ParseNode): string;
|
||||
traverse?(node: ParseNode, fn: (node: ParseNode) => any): ReturnType<typeof fn>;
|
||||
map?(node: ParseNode, fn: (node: ParseNode) => any): ReturnType<typeof fn>;
|
||||
}
|
||||
Reference in New Issue
Block a user