1

может быть два производства, из которых мы можем сделать сокращение. После предоставления приоритета и ассоциаций по мере необходимости будет один дескриптор only.so это утверждение верно?Если грамматика неоднозначна, то существует ровно один дескриптор для каждой условной формы.?

+0

Вот как работают генераторы компилятора. – khachik

ответ

1

Это частично верно. Конфликт с уменьшением/уменьшением обычно разрешается путем указания приоритета или путем разрешения построителя парсеров выбирать, какое правило применять перед другим.

Это означает, что конфликт разрешен, но не тот, что парсер будет вести себя точно так, как предполагалось. Удобно изучить, что вызывает конфликт, и подумать, необходимо ли рефакторинг грамматики, чтобы выразить то, что вы пытаетесь проанализировать, или если автоматического выбора/приоритета достаточно.

1

Если у вас есть грамматика, которая имеет неоднозначные правила, вы получаете несколько интерпретаций. Вам не нужно настаивать на том, что грамматика устраняет двусмысленность; Вы можете просто договориться, что-то неоднозначное и разобрать его несколькими способами:

fruit flies like an arrow. 

Результатом разбора является несколько интерпретаций.

Теперь для такого языка должно быть полезному читателю, либо он должен быть доволен двусмысленностью, либо вам нужно дать ему способ решить эту проблему. (В примере я решил для вас, что вы довольны двусмысленностью, потому что я не дал вам способ ее решить!). Или можно предоставить читателю что-то с неоднозначной парсией, способ выбрать, какой разбор имеет смысл, и он отвергает несоответствующие анализы.

Я могу сделать это для вышеуказанного случая, сказав вам, что я имею в виду «fruit => арбуз».

Компьютерные грамматики не отличаются, но большинство программистов не хотят двусмысленного кода. Так, в общем, дизайнеры langauge как для определения однозначных грамматик. На практике они не преуспевают, и вы получаете забавные правила языка, например: «Если это можно интерпретировать неоднозначно, тогда интерпретируйте это этим способом».

 Смежные вопросы

  • Нет связанных вопросов^_^