Add output and fix two bugs.

This commit is contained in:
2019-08-26 21:05:44 -07:00
parent 7e40af4830
commit 2dd81cf07a
7 changed files with 116 additions and 3 deletions

View File

@@ -2,8 +2,12 @@
#include <memory>
#include <map>
struct type_mgr;
struct type {
virtual ~type() = default;
virtual void print(const type_mgr& mgr, std::ostream& to) const = 0;
};
using type_ptr = std::shared_ptr<type>;
@@ -13,6 +17,8 @@ struct type_var : public type {
type_var(std::string n)
: name(std::move(n)) {}
void print(const type_mgr& mgr, std::ostream& to) const;
};
struct type_base : public type {
@@ -20,6 +26,8 @@ struct type_base : public type {
type_base(std::string n)
: name(std::move(n)) {}
void print(const type_mgr& mgr, std::ostream& to) const;
};
struct type_arr : public type {
@@ -28,6 +36,8 @@ struct type_arr : public type {
type_arr(type_ptr l, type_ptr r)
: left(std::move(l)), right(std::move(r)) {}
void print(const type_mgr& mgr, std::ostream& to) const;
};
struct type_mgr {