Fix test regression: incomplete errors no longer cause var parsing to fail
diff --git a/Function.cpp b/Function.cpp
index 6974fa6..39ac957 100644
--- a/Function.cpp
+++ b/Function.cpp
@@ -1,4 +1,6 @@
 #include "Function.h"
+#include "Parser.h"
+#include <QDebug>
 
 template <typename T>
 QString join(QList<T> list, QString sep)
@@ -13,12 +15,32 @@
 	return strings.join(sep);
 }
 
+Sentence::~Sentence()
+{
+}
+
 Sentence::Sentence(QList<Token> pattern, QList<AstNode> result)
 {
 	_pattern = pattern;
 	_result = result;
 }
 
+Sentence::Sentence(QList<Token> pattern, SentenceResultFn result)
+{
+	_pattern = pattern;
+	_native = result;
+}
+
+bool Sentence::isExternal() const
+{
+	return _native != nullptr;
+}
+
+QList<Token> Sentence::externResult(QList<Token> args) const
+{
+	return _native(std::move(args));
+}
+
 QList<Token> Sentence::pattern() const
 {
 	return _pattern;
@@ -50,6 +72,22 @@
 	_sentences.append(sentence);
 }
 
+void Function::addNativeSentence(QString pattern, SentenceResultFn fn)
+{
+	Parser parser(std::move(pattern));
+	QList<Token> parsedPattern;
+
+	ParseResult res = parser.parseMany(&parsedPattern);
+	if (!res)
+	{
+		qDebug() << "Failed to parse pattern for native sentence";
+		qDebug() << res.message();
+	}
+	else
+	{
+		addSentence(Sentence(parsedPattern, std::move(fn)));
+	}
+}
 
 QString Function::name() const
 {