用`/`分隔的表达式顺序有意义吗?

Does the order of expressions separated by `/` have significance?

我正在为我的解释器编写解析器,在编写挂钩规则时,我遇到了这个令人困惑的情况。

我有这样的规则

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

出于某种原因,它对我来说不匹配 \n,但是当我执行相反的操作时

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

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

这是什么原因造成的?订单不应该只改变测试的订单表达式吗?这是我使用的挂钩实现的错误吗?

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