Как мне сопоставить токены, начиная с «?» в pegjs
-
21-12-2019 - |
Вопрос
Мне нужно сопоставить такие токены, используя 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"]
.
Не связан с StackOverflow