ウィキペディアからの次の引用に混乱しています。
言い換えれば、言語が効率的なワンパスパーサーを許可するのに十分合理的である場合、LR(k) 文法で記述できます。そして、その文法は常に同等の (しかしより大きな) LR(1) 文法に機械的に変換できます。したがって、理論的には、LR(1) 解析メソッドは、合理的な言語を処理するのに十分強力でした。実際には、多くのプログラミング言語の自然文法は LR(1) に近いものです。[要出典]
これは、文法を文法に変換できる場合、 のようなパーサー ジェネレーターbison
が非常に強力であることを意味します (文法を処理できるため) 。これのいくつかの例、またはこれを行う方法に関するレシピはありますか? 文法にシフト/リデュースの競合があるのでこれを知りたいのですが、これは文法であり、文法に変換したいからだと思います。副次的な質問: は理不尽な言語です。LR(k)
LR(k)
LR(1)
LR(2)
LR(1)
C++
bison