言語の 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;
};
thess クラス間で継承を追加する必要がありますか?
BNF から AST を設計する方法についての本はありますか?