![]() |
1
2
1.LL(1)语法
你已经到了这一步:
您有两种可能的产品:
第一个(F)是
2.运算符优先解析你技术上是对的。您的原始语法不是运算符语法。然而,用一个小的状态机扩充操作符优先解析器是正常的(否则,包括一元减号在内的代数表达式就不能被正确解析),一旦完成了,隐式连接操作符必须去哪里就很清楚了。
状态机在逻辑上相当于对输入进行预处理,以便在必要时插入显式连接运算符,即
您应该注意,除非您使用显式原语来表示空字符串,否则您的原始语法不会真正处理正则表达式。否则,您将无法表示可选的选项,这些选项通常在正则表达式中表示为隐式表达式
操作数
(例如
|
![]() |
2
0
我觉得只要跟踪上一个角色就足够了。所以如果我们有
我们知道
完整的解决方案可能包括为每个可能的问题构建一个表
如果不想弄乱循环,可以进行预处理,使用类似的逻辑插入自己的连接字符。不能告诉你这是好是坏,但这是个主意。 |