Почему это дает мне эту ошибку?Анализатор Python - PullRequest
0 голосов
/ 21 сентября 2018

Я разрабатываю парсер с 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

Как я могу удалить эти ошибки?

1 Ответ

0 голосов
/ 22 сентября 2018

У вас есть производство declaraciones -> declaraciones, что бессмысленно.(Это не расширяет язык, и это делает грамматику неоднозначной.)

Полагаю, вы хотели объединить две правые части: '''declaraciones : vacio | declaraciones tipo ID definicion_vector ";"'''

...