Add REPL
diff --git a/PPrint.h b/PPrint.h
new file mode 100644
index 0000000..3a00379
--- /dev/null
+++ b/PPrint.h
@@ -0,0 +1,33 @@
+#pragma once
+
+#include <QString>
+#include <QList>
+
+#include "Token.h"
+#include "AstNode.h"
+
+template <typename T>
+QString pprint(T val);
+
+template <>
+QString pprint<Token>(Token val);
+
+template <>
+QString pprint<AstNode>(AstNode val);
+
+template <typename T>
+QString pprint(QList<T> val)
+{
+ QStringList out;
+
+ for (const T &v : val)
+ out.append(static_cast<QString>(v));
+
+ return out.join(" ");
+}
+
+template <typename T>
+QString pprint(T val)
+{
+ return static_cast<QString>(val);
+}