我在谷歌上看知道是否有可能使用BNF语法创建一个LL解析器,但我在维基百科上看到他们使用类似
的东西S → F
S → ( S + F )
F → a
这不是BNF语法。是否可以使用BNF语法创建LL解析器,或者您只能使用LL语法?
感谢' S
答案 0 :(得分:0)
是的,你可以。 BNF只是表示无上下文语法的符号。粗略地:: =是箭头,左边显示的<symbol>
是非终端的&#34;文字&#34;是终端符号(见here)
考虑到并非所有无上下文语法都是LL(1),有些语法没有LL解析器。
如果你使用一个解析器生成器,你会发现你的语法是LL还是LL。但如果不是,那么可能很难纠正它(特别是如果你没有语言理论的背景)。