Add parser
diff --git a/AstNode.cpp b/AstNode.cpp
new file mode 100644
index 0000000..7bb84fa
--- /dev/null
+++ b/AstNode.cpp
@@ -0,0 +1,35 @@
+#include "AstNode.h"
+
+AstNode::AstNode(QString function, QList<AstNode> args)
+{
+    _type = FUNC;
+    _stringVal = function;
+    _listVal = args;
+}
+
+QList<AstNode> AstNode::funcArgs()
+{
+    return _listVal;
+}
+
+bool AstNode::isFunc() const
+{
+    return _type == FUNC;
+}
+
+AstNode::operator QString() const
+{
+    if (isFunc())
+    {
+        QStringList args;
+
+        for (const AstNode &node : _listVal)
+        {
+            args.append(static_cast<QString>(node));
+        }
+
+        return "<" + _stringVal + " " + args.join(" ") + ">";
+    }
+
+    return TokenBase<AstNode>::operator QString();
+}