diff --git a/src/ast/declaration/index.ts b/src/ast/declaration/index.ts index 0a8bc1d..36094aa 100644 --- a/src/ast/declaration/index.ts +++ b/src/ast/declaration/index.ts @@ -4,6 +4,7 @@ import { UnionSyntaxNode, UnionSyntaxNodeType } from '../base'; export type DeclarationNode = UnionSyntaxNode; export type DeclarationNodeType = UnionSyntaxNodeType; +export const declarationNodeTypes = Object.keys(nodeMap) as DeclarationNodeType[]; export * from './contract-body-element'; export * from './contract-definition'; export * from './enum-definition'; diff --git a/src/ast/expression/index.ts b/src/ast/expression/index.ts index a91f44a..896d2d4 100644 --- a/src/ast/expression/index.ts +++ b/src/ast/expression/index.ts @@ -4,6 +4,7 @@ import { UnionSyntaxNode, UnionSyntaxNodeType } from '../base'; export type ExpressionNode = UnionSyntaxNode; export type ExpressionNodeType = UnionSyntaxNodeType; +export const expressionNodeTypes = Object.keys(nodeMap) as ExpressionNodeType[]; export * from './assign-op'; export * from './assignment'; export * from './binary-operation'; diff --git a/src/ast/index.ts b/src/ast/index.ts index c58a7bb..1116239 100644 --- a/src/ast/index.ts +++ b/src/ast/index.ts @@ -1,3 +1,4 @@ +import * as nodeMap from './index.node'; import { DeclarationNode } from './declaration'; import { ExpressionNode } from './expression'; import { MetaNode } from './meta'; @@ -15,6 +16,8 @@ export type SyntaxNode = export type SyntaxNodeType = SyntaxNode['type']; +export const syntaxNodeTypes = Object.keys(nodeMap) as SyntaxNodeType[]; + export * from './declaration'; export * from './expression'; export * from './meta'; diff --git a/src/ast/meta/index.ts b/src/ast/meta/index.ts index 5464b18..9de37ab 100644 --- a/src/ast/meta/index.ts +++ b/src/ast/meta/index.ts @@ -4,6 +4,7 @@ import { UnionSyntaxNode, UnionSyntaxNodeType } from '../base'; export type MetaNode = UnionSyntaxNode; export type MetaNodeType = UnionSyntaxNodeType; +export const metaNodeTypes = Object.keys(nodeMap) as MetaNodeType[]; export * from './data-location'; export * from './identifier-path'; export * from './import-aliases'; diff --git a/src/ast/statement/index.ts b/src/ast/statement/index.ts index 231e0ad..d92bae4 100644 --- a/src/ast/statement/index.ts +++ b/src/ast/statement/index.ts @@ -4,6 +4,7 @@ import { UnionSyntaxNode, UnionSyntaxNodeType } from '../base'; export type StatementNode = UnionSyntaxNode; export type StatementNodeType = UnionSyntaxNodeType; +export const statementNodeTypes = Object.keys(nodeMap) as StatementNodeType[]; export * from './assembly-flags'; export * from './assembly-statement'; export * from './block'; diff --git a/src/ast/type/index.ts b/src/ast/type/index.ts index 4ad9d59..04b6ef8 100644 --- a/src/ast/type/index.ts +++ b/src/ast/type/index.ts @@ -4,6 +4,7 @@ import { UnionSyntaxNode, UnionSyntaxNodeType } from '../base'; export type TypeNode = UnionSyntaxNode; export type TypeNodeType = UnionSyntaxNodeType; +export const typeNodeTypes = Object.keys(nodeMap) as TypeNodeType[]; export * from './elementary-type-name'; export * from './function-type-name'; export * from './mapping-key-type'; diff --git a/src/ast/yul/index.ts b/src/ast/yul/index.ts index 245670d..71f4436 100644 --- a/src/ast/yul/index.ts +++ b/src/ast/yul/index.ts @@ -4,6 +4,7 @@ import { UnionSyntaxNode, UnionSyntaxNodeType } from '../base'; export type YulNode = UnionSyntaxNode; export type YulNodeType = UnionSyntaxNodeType; +export const yulNodeTypes = Object.keys(nodeMap) as YulNodeType[]; export * from './yul-assignment'; export * from './yul-block'; export * from './yul-boolean';