用`/`分隔的表达式顺序有意义吗?
Does the order of expressions separated by `/` have significance?
我正在为我的解释器编写解析器,在编写挂钩规则时,我遇到了这个令人困惑的情况。
我有这样的规则
blank -> ()
= " "*
/ "\n"*
出于某种原因,它对我来说不匹配 \n,但是当我执行相反的操作时
blank -> ()
= "\n"*
/ " "*
它匹配换行符,但不匹配空格键。
这是什么原因造成的?订单不应该只改变测试的订单表达式吗?这是我使用的挂钩实现的错误吗?
Kleene 星号 (*
) 匹配 零次或多次 重复。所以 " "*
将始终匹配;如果没有空格,它将匹配零个空格。为了尝试下一个替代方案,您需要使用 一个或多个 重复运算符,+
.
我正在为我的解释器编写解析器,在编写挂钩规则时,我遇到了这个令人困惑的情况。
我有这样的规则
blank -> ()
= " "*
/ "\n"*
出于某种原因,它对我来说不匹配 \n,但是当我执行相反的操作时
blank -> ()
= "\n"*
/ " "*
它匹配换行符,但不匹配空格键。
这是什么原因造成的?订单不应该只改变测试的订单表达式吗?这是我使用的挂钩实现的错误吗?
Kleene 星号 (*
) 匹配 零次或多次 重复。所以 " "*
将始终匹配;如果没有空格,它将匹配零个空格。为了尝试下一个替代方案,您需要使用 一个或多个 重复运算符,+
.