textPattern is pattern = "text"s;
attributePattern is pattern = "attribute"S identifier S "{"s textPattern "}"s;
elementPattern is pattern = "element"S identifier S "{"s pattern "}"s;
groupPattern is pattern = pattern (S ','S pattern)+;
interlivePattern is pattern = pattern (S '&'S pattern)+;
choicePattern is pattern = pattern (S '|'S pattern)+;
Здравствуйте, Аноним, Вы писали:
А> pattern:VPattern; //ExpandableRule
А> textPattern is pattern = "text"s; А> attributePattern is pattern = "attribute"S identifier S "{"s textPattern "}"s; А> elementPattern is pattern = "element"S identifier S "{"s pattern "}"s; А> groupPattern is pattern = pattern (S ','S pattern)+; А> interlivePattern is pattern = pattern (S '&'S pattern)+; А> choicePattern is pattern = pattern (S '|'S pattern)+;
Это не PEG. Это какая-то ранняя версия грамматики N2/Nitra. Это, несомненно, левая рекурсия. В принципе в таком виде она допустима, но похоже что ее автор что-то понимает не так.
Nitra поддерживает прямую левую рекурсию для расширяемых правил. Именно таким образом в Nitra описываются операторы. Но вместа циклов (в правой части правил) нужно применять так же рекурсию и приоритеты операторов. Тогда будет появляться требуемая иерархия выражений. То как одни выражения будут вкладываться в другие определяется приоритетами.
Вот так эту грамматику можно записать на Nitra (если я правильно уловил суть):
Пробельные правила теперь вручную расставлять не надо. Они ставятся автоматически.
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[2]: Является ли данная Peg грамматика леворекурсивной
От:
Аноним
Дата:
22.10.13 15:46
Оценка:
VD>Это не PEG. Это какая-то ранняя версия грамматики N2/Nitra. Это, несомненно, левая рекурсия. В принципе в таком виде она допустима, но похоже что ее автор что-то понимает не так.
У меня нет доступа ни к N2 ни к Nitra. Пользуюсь старым добрым макросом Peg. Пытаюсь реализовать парсер для компактного синтаксиса Relax NG
Re[3]: Является ли данная Peg грамматика леворекурсивной
Здравствуйте, Аноним, Вы писали:
А>У меня нет доступа ни к N2 ни к Nitra. Пользуюсь старым добрым макросом Peg. Пытаюсь реализовать парсер для компактного синтаксиса Relax NG
Постучись на мой скайп (vc.rsdn.ru) дам тебе предварительную версию Nitra.
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[4]: Является ли данная Peg грамматика леворекурсивной
От:
Аноним
Дата:
22.10.13 18:41
Оценка:
Здравствуйте, VladD2, Вы писали:
VD>Здравствуйте, Аноним, Вы писали:
А>>У меня нет доступа ни к N2 ни к Nitra. Пользуюсь старым добрым макросом Peg. Пытаюсь реализовать парсер для компактного синтаксиса Relax NG
VD>Постучись на мой скайп (vc.rsdn.ru) дам тебе предварительную версию Nitra.
А публичный когда?
Re[5]: Является ли данная Peg грамматика леворекурсивной
Здравствуйте, Аноним, Вы писали:
А>А публичный когда?
Как убедимся, что от глюков избавились.
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[4]: Является ли данная Peg грамматика леворекурсивной
От:
Аноним
Дата:
22.10.13 20:39
Оценка:
VD>Постучись на мой скайп (vc.rsdn.ru) дам тебе предварительную версию Nitra.
Огромное спасибо. Даже и не мечтал о таком... Обязательно воспользуюсь предложением!