Глубокая маркировка параметров внутри группы pegjs regex
Рассмотрим следующую грамматику:
list
= head:item (',' tail:item)*
{ return [head].concat(tail); }
item
= $ ([0-9]*)
Следует описать списки натуральных чисел.
Проблема в том, что tail
не определено, как внутри паренсов.
Поэтому я вынужден сделать следующее:
list
= head:item tail:tail*
{ return [head].concat(tail); }
tail
= ',' item:item
{ return item; }
item
= $ ([0-9]*)
Это может быть довольно громоздким в более длинных грамматиках.
Есть ли способ обозначить, что внутри (',' item)
регулярное выражение группы?
1 ответ
Вы действительно можете пометить, что внутри группы (i:
ниже), расскажите PEGJS, что именно нужно вернуть ({return i;}
), а также пометить результат (tail:
).
list
= head:item tail:(',' i:item {return i;})*
{ return [head].concat(tail); }