由`/`分隔的表达式的顺序是否有意义?

时间:2016-06-24 00:17:13

标签: parsing text-parsing peg

我正在为我的翻译编写解析器,当我编写挂钩规则时,我遇到了这个令人困惑的案例。

我有这样的规则

MediaSizeName

出于某种原因,它对我来说并不匹配\ n但是当我做相反时

blank -> ()
    = " "*
    / "\n"*

它匹配换行符,但与空格键不匹配。

造成这种情况的原因是什么?不应该做什么,只是改变命令表达式进行测试?这是我使用的挂钩实现中的错误吗?

1 个答案:

答案 0 :(得分:1)

Kleene星(*)匹配零个或多个重复。所以" "*总会匹配;如果没有空格,它将匹配零空格。为了尝试下一个替代方案,您需要使用一个或多个重复运算符+