我有以下 PEGjs 作品:
NameStartChar = ":" / [A-Z] / "_" / [a-z] / [\u00C0-\u00D6] / [\u00D8-\u00F6] / [\u00F8-\u02FF] / [\u0370-\u037D] /
[\u037F-\u1FFF] / [\u200C-\u200D] / [\u2070-\u218F] / [\u2C00-\u2FEF] / [\u3001-\uD7FF] /
[\uF900-\uFDCF] / [\uFDF0-\uFFFD] / [\uD800-\uDB7F][\uDC00-\uDFFF]
NameChar = NameStartChar / "-" / "." / [0-9] / "\u00B7" / [\u0300-\u036F] / [\u203F-\u2040]
Name = NameStartChar NameChar*
true
如果我的输入字符串匹配Name
,我想以某种方式得到,false
否则。我也不关心解析出组件。
但是,如果匹配失败,PEGjs 确实想抛出异常。
我当然可以将它包装在 try/catch 中,但我更愿意避免这种情况。而且我也想避免收集已解析的组件(即,["a", ["b", "c", "d"]]
匹配"abcd"
时我不需要,我只需要true
)。
是否有一些隐藏的 PEGjs 功能可以使这项工作?也许是一个聪明的动作,或者是对组合器的创新使用?
或者也许我应该使用完全不同的工具,而不是解析器生成器?如果是这样,有人知道我应该使用什么吗?