Как реализовать 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, или это нужно делать по-другому?

Спасибо.


Ответы (0 шт):