rampelstinskin/ParserGenerator — Issue #6: Оператор генерации списковр
Author: VladD2
Created: 2012-01-28 08:03:11+00:00
State: open

Оператор позволяющий описать грамматику описывающую список разделенный некоторыми элементами (подправилами)

Синтаксис:

```nemerle
"(" ElementRule "," SeperatorRule ")" (*|+)
```

На выходе должно формироваться два списка (list[T]). Один состоящий АСТ отпарсенного по правилу ElementRule, второй по SeperatorRule.

Пример использования:

```nemerle
[Ast(Identifier, Separators)]
QualifiedIdentifier : QualifiedIdentifier = (Identifier "."s)*;
```

Так же желательно иметь возможность кроме поле соответствующим правилам добавлять определяемые пользователем поля. Для их определения можно задавать некую функцию (метод или лябду) которая сформирует значение для нового поля. Этой функции должны быть доступны значения полей ветки АСТ. Пример использования:

```nemerle
[Ast(Identifier, Separators, Path = MakePath(Identifier, Separators))]
QualifiedIdentifier : QualifiedIdentifier = (Identifier "."s)*;
```

Здесь:
Path - это дополнительное, определяемое пользователем поле.
MakePath(Identifier, Separators) - функция формирующая значение для этого поля. Тип поля выводится из определения функции.