Я пытаюсь построить простой компилятор, используя ply. Я правильно построил выражения arithmeti c и logi c, но у меня возникают ошибки при выполнении условия if. Например, при вводе if (5> 2) в качестве ввода для программы я получил AttributeError: 'str' object has no attribute 'type'
Образцы моего кода:
def t_IF(t):
r'if'
return t.value
def p_statement_expr(t):
'''statement : expression
| comparison
| if_statement'''
print(t[1])
def p_IF(t):
'''if_statement : IF LPARENTHESES comparison RPARENTHESES'''
t[0] = t[3]
def p_expression_comparison(t):
'''comparison : expression GTH expression
| expression LTH expression
| expression GTHOREQUAL expression
| expression LTHOREQUAL expression
| expression EQUALEQUAL expression
| expression NOTEQUAL expression'''
if t[2] == '>':
if t[1] > t[3]:
t[0] = True
else:
t[0] = False
elif t[2] == '<':
if t[1] < t[3]:
t[0] = True
else:
t[0] = False
elif t[2] == '>=':
if t[1] >= t[3]:
t[0] = True
else:
t[0] = False
elif t[2] == '<=':
if t[1] <= t[3]:
t[0] = True
else:
t[0] = False
elif t[2] == '==':
if t[1] == t[3]:
t[0] = True
else:
t[0] = False
elif t[2] == '!=':
if t[1] != t[3]:
t[0] = True
else:
t[0] = False
Любая помощь будет полезна. Спасибо.