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();
+}