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.lex import lex
from ply.yacc import yacc from ply.yacc import yacc
\ No newline at end of file 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