Skip to content
Snippets Groups Projects
Commit a3de540f authored by 9691448's avatar 9691448
Browse files

Parser voor lambda-calculus

parent 4c65fc09
No related branches found
No related tags found
No related merge requests found
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
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment