Format types as well

This commit is contained in:
Sofia 2026-04-02 16:17:01 +03:00
parent 87dceb5b7c
commit 316c3aece6
2 changed files with 19 additions and 2 deletions

View File

@ -19,7 +19,10 @@ namespace AST {
std::string Function::formatted() { std::string Function::formatted() {
std::stringstream out{ "" }; std::stringstream out{ "" };
out << "Function() {\n"; out << this->m_name;
out << "() -> ";
out << this->m_return_ty->formatted();
out << " {\n";
for (auto& statement : this->m_statements) { for (auto& statement : this->m_statements) {
out << " " << statement->formatted() << "\n"; out << " " << statement->formatted() << "\n";
} }
@ -27,4 +30,14 @@ namespace AST {
out << "}"; out << "}";
return out.str(); return out.str();
} }
std::string FundamentalType::formatted() {
switch (this->m_ty) {
case FundamentalTypeKind::Int:
return "Int";
default:
return "Unknown";
}
}
} }

View File

@ -12,7 +12,10 @@ namespace AST {
}; };
class Expression : public Node {}; class Expression : public Node {};
class Type {}; class Type {
public:
virtual std::string formatted() = 0;
};
class Statement : public Node {}; class Statement : public Node {};
class IntLiteralExpression : public Expression { class IntLiteralExpression : public Expression {
@ -63,6 +66,7 @@ namespace AST {
FundamentalTypeKind m_ty; FundamentalTypeKind m_ty;
public: public:
FundamentalType(FundamentalTypeKind kind) : m_ty{ kind } {} FundamentalType(FundamentalTypeKind kind) : m_ty{ kind } {}
virtual std::string formatted() override;
}; };
} }