Глубокая маркировка параметров внутри группы pegjs regex - PullRequest
0 голосов
/ 13 января 2019

Рассмотрим следующую грамматику:

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 Ответ

0 голосов
/ 28 января 2019

Вы действительно можете пометить, что находится внутри группы (i: ниже), указать PEGJS, что именно нужно возвращать ({return i;}), а также пометить результат (tail:).

list
 = head:item tail:(',' i:item {return i;})*
 { return [head].concat(tail); }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...