Вопрос

Мне нужно сопоставить такие токены, используя pegjs:

?xxx ?yyy

Я думал, что это сработает:

variable 
   = str:?[a-z]+ {  console.log('---->>>',str); return str.join(""); } 

Когда я анализирую источник, я получаю ошибку:

Объект ?не имеет метода «присоединиться»

Это потому, что str переменная не является массивом совпадающих токенов...Есть идеи, как это сделать?

Это было полезно?

Решение

Вы можете сгруппировать литералы вместе:

variable 
    = str:("?"[a-z]+)

в таком случае str будет ["?",["a","b","c"]] для ?abc, или если ? не обязательно первый символ, просто включите его в класс:

variable 
    = str:[?a-z]+

тогда вы получите нормальный массив ["?","a","b","c"].

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top