考虑以下语法:
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)正则表达式组中的内容?
发布于 2019-01-29 00:04:04
您确实可以标签组中的内容(下面的i:),告诉PEGJS确切返回什么({return i;}),也可以标记结果(tail:)。
list
= head:item tail:(',' i:item {return i;})*
{ return [head].concat(tail); }https://stackoverflow.com/questions/54170326
复制相似问题