treegen: Add type definitions for treegen-AST

This commit is contained in:
Sam Vervaeck 2020-05-09 22:18:13 +02:00
parent d3c5079af1
commit 852a9d11a6

49
treegen/src/ast.ts Normal file
View file

@ -0,0 +1,49 @@
export interface ReferenceTypeNode {
type: 'ReferenceTypeNode';
name: string;
typeArgs: TypeNode[];
}
export interface UnionTypeNode {
type: 'UnionTypeNode';
elements: TypeNode[];
}
export type TypeNode
= ReferenceTypeNode
| UnionTypeNode
export interface NodeField {
name: string;
typeNode: TypeNode;
}
export interface NodeDeclaration {
type: 'NodeDeclaration';
name: string;
fields: NodeField[];
}
export interface EnumField {
name: string;
value: number | null;
}
export interface EnumDeclaration {
type: 'EnumDeclaration';
name: string;
fields: EnumField[];
}
export interface TypeDeclaration {
type: 'TypeDeclaration';
name: string;
typeNode: TypeNode;
}
export type Declaration
= NodeDeclaration
| TypeDeclaration
| EnumDeclaration