Ответы пользователя по тегу Алгоритмы
  • Как локализовать ошибку в LR-парсере?

    middle
    @middle
    LR-парсер состоит из стека и конечного автомата. В конечном автомате дуги помечены двумя типами меток: SHIFT либо REDUCE <правило>. В приведённом вами примере при первом '+' будет произведён SHIFT (с переходом в соответствующее состояние), при последующем "b" будет произведён REDUCE по приведённому вами правилу с переходом в какое-то состояние.

    Если же после первого '+' придёт второй '+', то это будет ошибкой, т.к. для текущего состояния не будет исходящей дуги для второго '+', ни SHIFT, ни REDUCE (дуга будет только для IDENTIFIER, если других правил нет).
    Ответ написан
    5 комментариев