|
@@ -0,0 +1,37 @@
|
|
|
+#ifndef QLOW_SEM_TYPEVISITOR_H
|
|
|
+#define QLOW_SEM_TYPEVISITOR_H
|
|
|
+
|
|
|
+#include "Visitor.h"
|
|
|
+#include "Semantic.h"
|
|
|
+
|
|
|
+namespace qlow
|
|
|
+{
|
|
|
+ namespace sem
|
|
|
+ {
|
|
|
+ class TypeVisitor;
|
|
|
+ }
|
|
|
+}
|
|
|
+
|
|
|
+
|
|
|
+class qlow::sem::TypeVisitor :
|
|
|
+ public Visitor<
|
|
|
+ qlow::sem::Type,
|
|
|
+ const sem::SymbolTable<sem::Class>,
|
|
|
+
|
|
|
+ sem::Expression,
|
|
|
+ sem::Variable,
|
|
|
+ sem::UnaryOperation,
|
|
|
+ sem::BinaryOperation,
|
|
|
+ sem::FeatureCallExpression
|
|
|
+ >
|
|
|
+{
|
|
|
+
|
|
|
+public:
|
|
|
+ qlow::sem::Type visit(sem::Expression& expr, const sem::SymbolTable<sem::Class>& classes) override;
|
|
|
+ qlow::sem::Type visit(sem::Expression& expr, const sem::SymbolTable<sem::Class>& classes) override;
|
|
|
+ qlow::sem::Type visit(sem::Expression& expr, const sem::SymbolTable<sem::Class>& classes) override;
|
|
|
+ qlow::sem::Type visit(sem::Expression& expr, const sem::SymbolTable<sem::Class>& classes) override;
|
|
|
+ qlow::sem::Type visit(sem::Expression& expr, const sem::SymbolTable<sem::Class>& classes) override;
|
|
|
+};
|
|
|
+
|
|
|
+#endif // QLOW_SEM_TYPEVISITOR_H
|