#pragma once #include "node_type.hpp" #include "type.hpp" #include #include #include class ASTNode { public: int line; int column; virtual ~ASTNode() = default; }; class ProgramNode : ASTNode { public: std::vector function_declarations; explicit ProgramNode(std::vector f) : function_declarations(f) { } }; class FunctionDeclNode : ASTNode { Type type; std::vector parameters; std::vector body; FunctionDeclNode(std::string t,std::vector p, std::vector b) : type(t), parameters(p), body(b) { } }; class ParameterNode : ASTNode { std::string name; std::string type; };