为什么它会给我这个错误? Python 解析器
Why does it gives me this error? Python parser
我正在用 ply 开发解析器。我有这个解析器规则:
def p_maint(p):
'maint : PROGRAMA ID declaraciones'
def p_declaraciones(p):
'''declaraciones : vacio
| declaraciones
| tipo ID definicion_vector ";"'''
def p_tipo(p):
'''tipo : ENTERO
| FLOTANTE
| CHAR'''
def p_definicion_vector(p):
'''definicion_vector : vacio
| "[" CTE_ENTERO "]" '''
def p_vacio(p):
'vacio : '
但是它给了我一个警告:
WARNING: 1 reduce/reduce conflict
WARNING: reduce/reduce conflict in state 8 resolved using rule (maint -> PROGRAMA ID declaraciones)
WARNING: rejected rule (declaraciones -> declaraciones) in state 8
WARNING: Rule (declaraciones -> declaraciones) is never reduced
如何消除这个错误?
你有生产declaraciones -> declaraciones
,这是没有意义的。 (它没有放大语言,而且使语法有歧义。)
我的猜测是,您打算连接两个右侧:
'''declaraciones : vacio
| declaraciones tipo ID definicion_vector ";"'''
我正在用 ply 开发解析器。我有这个解析器规则:
def p_maint(p):
'maint : PROGRAMA ID declaraciones'
def p_declaraciones(p):
'''declaraciones : vacio
| declaraciones
| tipo ID definicion_vector ";"'''
def p_tipo(p):
'''tipo : ENTERO
| FLOTANTE
| CHAR'''
def p_definicion_vector(p):
'''definicion_vector : vacio
| "[" CTE_ENTERO "]" '''
def p_vacio(p):
'vacio : '
但是它给了我一个警告:
WARNING: 1 reduce/reduce conflict
WARNING: reduce/reduce conflict in state 8 resolved using rule (maint -> PROGRAMA ID declaraciones)
WARNING: rejected rule (declaraciones -> declaraciones) in state 8
WARNING: Rule (declaraciones -> declaraciones) is never reduced
如何消除这个错误?
你有生产declaraciones -> declaraciones
,这是没有意义的。 (它没有放大语言,而且使语法有歧义。)
我的猜测是,您打算连接两个右侧:
'''declaraciones : vacio
| declaraciones tipo ID definicion_vector ";"'''