我已经定义了自己语言的BNF,但不知如何设计AST。
例如,以下是我BNF的前几行:
我该如何从我的AST中表达这个呢?我应该像这样设计它吗?
例如,以下是我BNF的前几行:
<program> ::= <import declarations>? <class declaration>?
<import declarations> ::= <import declaration> | <import declarations> <import declaration>
<class declaration> ::= class <identifier> <class body>
<import declaration> ::= import <type name> ';'
我该如何从我的AST中表达这个呢?我应该像这样设计它吗?
typedef vector<ImportDeclaration*> ImportDeclarationList;
class Program {
ImportDeclarationList importDeclarations;
ClassDeclaration classDeclaration;
};
class ImportDeclaration {
TypeName typeName;
};
class ClassDeclaration {
Identifier identifer;
ClassBody classbody;
};
我需要在这些类之间添加一些继承吗?
有没有关于如何从BNF设计AST的书籍?