Comment puis-je match jetons de départ avec un “?” dans pegjs
-
21-12-2019 - |
Question
J'ai pour correspondre à jetons comme ceci en utilisant pegjs:
?xxx ?yyy
J'aurais pensé que ce serait le travail :
variable
= str:?[a-z]+ { console.log('---->>>',str); return str.join(""); }
Quand j'ai analyser la source je reçois et d'erreur:
L'objet ?n'a pas de méthode "rejoindre"
C'est parce que l' str
la variable n'est pas un tableau de la correspondance des jetons...Une idée de comment cela doit être fait?
La solution
Vous pouvez soit le groupe de littéraux ensemble:
variable
= str:("?"[a-z]+)
auquel cas str
sera ["?",["a","b","c"]]
pour ?abc
, ou, si ?
n'est pas nécessairement le premier char, il suffit de l'inclure dans la classe:
variable
= str:[?a-z]+
ensuite, vous aurez un tableau normal ["?","a","b","c"]
.
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow