谁能启发我,为什么尝试回溯产生式和(按顺序)的带有回溯的递归下降解析器不能识别语法形成的语言。小号→ 一个一个小号→ 一个小号一个| 一个一个
它似乎只能解析语言单词。
我使用具有生产规则的ABNF Parser Generator生成了这样的解析器,例如,S = "a" S "a" / "aa"
解析器无法识别单词aaaaaa
。
我希望它使用生产,直到解析树的终端节点从7左边开始串联的,然后去分析树选择生产小号→ 一个一个来代替,直到树看起来像这样:a
S
/ | \
a S a
/ | \
a S a
/ \
a a
aaaaaa
。
aaaaaa
应该解析,但不是。但是aaaa
解析。你显然对2的幂是正确的。它仅aa
与解析S = "aa" / "a" [S] "a"
。您可以追踪解析器的作用吗?