我必须使用 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