为何采用token的Raku文法无法成功解析字符串aaaaabb?
Raku文法解析上下文无关文法的问题分析
上下文无关文法G的产生式
- S → aSb | A | B
- A → λ | a | aa | aaa
- B → bB | b
字符串推导示例
字符串aaaaabb(即a^5 b^2,满足5 ≤ 2+3)的推导过程如下:
S ⇒ aSb ⇒ aaSbb ⇒ aaAbb ⇒ aaaaabb
Raku文法解析问题
- 用
token定义对应Raku文法时,解析上述字符串失败。原因是token和rule都具有棘轮特性:匹配引擎匹配失败时不会回溯尝试其他路径。 - 将文法中的
token替换为regex后,解析成功,且能正确识别不属于该语言的字符串aaaaaabb。
内容的提问来源于stack exchange,提问作者user3134725
相关产品推荐
相关产品推荐

