|
@@ -2,6 +2,7 @@
|
|
|
#define QLOW_SEMANTIC_H
|
|
|
|
|
|
#include <string>
|
|
|
+#include <map>
|
|
|
#include "Util.h"
|
|
|
|
|
|
namespace qlow
|
|
@@ -9,6 +10,9 @@ namespace qlow
|
|
|
namespace sem
|
|
|
{
|
|
|
|
|
|
+ template<typename T>
|
|
|
+ using std::map<std::string, std::unique_ptr<T>> SymbolTable;
|
|
|
+
|
|
|
struct Class;
|
|
|
|
|
|
struct Field;
|
|
@@ -20,14 +24,16 @@ namespace qlow
|
|
|
struct Class
|
|
|
{
|
|
|
std::string name;
|
|
|
- util::OwningList<Field> fields;
|
|
|
- util::OwningList<Method> methods;
|
|
|
+ SymbolTable<Field> fields;
|
|
|
+ SymbolTable<Method> methods;
|
|
|
};
|
|
|
|
|
|
|
|
|
struct Field
|
|
|
{
|
|
|
Class* type;
|
|
|
+
|
|
|
+
|
|
|
}
|
|
|
|
|
|
|