Как реализовать AST в C++?
Мне нужно написать AST на C++ для собственного парсера. Написал примерно такую структуру:
class Node {
TokenType type;
public:
virual TokenType get_token();
};
class Statment : public Node {
Statment* stmt;
public:
virtual TokenType get_token();
};
class VarAssign : public Statment{
std::string name;
Expression* rval;;
public:
virtual TokenType get_token();
};
class Expression : public Statment{
Expression* expr1;
Expression* expr2;
ExprType t;
public:
virtual TokenType get_token();
};
class NumberConst : public Expression {
int val;
public:
void TokenType get_token();
void int get_val();
};
В main у меня такой код:
Statment* s = parseStmt();
В s->stmt у меня может быть VarAssign Expression или другие Statment классы, которые я не указал для простоты примера. В зависимости от того какой это будет класс, мне нужно вызывать разные методы. Как примерно это реализовать? И вообще я в правильном направлении иду к реализации AST, или это нужно делать по-другому?
Спасибо.