Wie ordne ich Token zu, die mit "beginnen?" bei pegjs
-
21-12-2019 - |
Frage
Ich muss solche Token mit Pegjs abgleichen:
?xxx ?yyy
Ich hätte gedacht, das würde funktionieren :
variable
= str:?[a-z]+ { console.log('---->>>',str); return str.join(""); }
Wenn ich die Quelle analysiere, erhalte ich einen Fehler:
Objekt ?hat keine Methode 'join'
Dies liegt daran, dass die str
variable ist kein Array der übereinstimmenden Token...Irgendeine Idee, wie das gemacht werden soll?
Lösung
Sie können entweder Literale gruppieren:
variable
= str:("?"[a-z]+)
in welchem Fall str
wird sein ["?",["a","b","c"]]
für ?abc
, oder, wenn ?
ist nicht unbedingt das erste Zeichen, füge es einfach in die Klasse ein:
variable
= str:[?a-z]+
dann bekommst du ein normales Array ["?","a","b","c"]
.
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow