我如何以“?”开头匹配令牌在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