假设我有一个包含以下标记的语法
token paragraph {
(
|| <header>
|| <regular>
)
\n
}
token header { ^^ '---' '+'**1..5 ' ' \N+ }
token regular { \N+ }
Run Code Online (Sandbox Code Playgroud)
问题是,以 开头的行将---++Foo被解析为常规段落,因为“Foo”之前没有空格。在这种情况下,我想使解析失败,即以某种方式“提交”到该交替分支,例如在看到---我想要成功解析标头或完全失败匹配之后。
我怎样才能做到这一点?我看到的唯一方法是在之前使用否定先行断言来<regular>检查它是否不以 开头---,但这看起来相当丑陋且不切实际,考虑到我的实际语法不仅仅只有这两个分支。有更好的办法吗?提前致谢!
如果我正确理解你的问题,你可以这样做:
token header {
^^ '---' [
|| '+'**1..5 ' ' \N+
|| { die "match failed near position $/.pos()" }
]
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
133 次 |
| 最近记录: |