Если грамматика неоднозначно, то существует ровно одну ручку для каждой сомнительной формы.?

StackOverflow https://stackoverflow.com/questions/4174713

Вопрос

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

Это было полезно?

Решение

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

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

Другие советы

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

fruit flies like an arrow.

Результат анализа - это несколько интерпретаций.

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

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top