diff --git a/lambdaparser.py b/lambdaparser.py
index 9100602beb04b2b3bfe73e394620eae22c2bcf5d..64139ef57b40ae6068274eccd9ea7563865a2cb6 100644
--- a/lambdaparser.py
+++ b/lambdaparser.py
@@ -1,2 +1,42 @@
 from ply.lex import lex
-from ply.yacc import yacc
\ No newline at end of file
+from ply.yacc import yacc
+from main import Variable, Abstraction, Application
+
+#BNF Grammar voor lambda calculus
+#TERM ::= VARIABLE
+#       |LAMBDA VARIABLE PERIOD TERM
+#       |LPAREN TERM TERM RPAREN
+
+#Tokens importen van de lexer
+from lambdalexer import tokens
+
+def p_paren(p):
+    ''' TERM : LPAREN TERM RPAREN '''
+    p[0] = p[2]
+
+def p_variable(p):
+    ''' TERM : VARIABLE '''
+    p[0] = Variable(p[1])
+
+def p_abstraction(p):
+    ''' TERM : LAMBDA VARIABLE PERIOD TERM '''
+    p[0] = Abstraction(Variable(p[2]),p[4])
+
+def p_application(p):
+    ''' TERM : TERM TERM '''
+    p[0] = Application(p[1],p[2])
+
+def p_error(p):
+     print("Syntax error in input!")
+ 
+ #Build the parser
+parser = yacc.yacc()
+
+while True:
+    try:
+        s = input('calc > ')
+    except EOFError:
+        break
+    if not s: continue
+    result = parser.parse(s)
+    print(result)
\ No newline at end of file