私は例えば、ブール式の再帰下降パーサを書いています:ブール式で解析+と*
1が「本当」である(1 * 0)
(0 + ~1)
(0 * (1 + c)
、0は「偽」である、+ 'ですまたは '、* is' and '、〜は' not 'であり、' c 'は変数名です(アルファベットは一文字でも構いません)。何らかの操作順序を実装するのではなく、かっこを使用することを計画しています。
私の現在のパーサは表現
Expression ::= 1
| 0
| Character
| ~ Expression
次の形式を認識することができますしかし、私はこの上に* +を実装してしまう方法としてわからないと思います。私はそれが左再帰的」であるとして
Expression ::= 1
| 0
| Character
| (Expression + Expression)
| (Expression * Expression)
の明白な実装が無限ループを引き起こす読んだものから、かなり確信しています。私はこのような無限の再帰を取り除くためにこれをどのように変更するのか不明です。
再帰的な降下パーサーを記述する方法に関する私のSOの答えを参照してください:http://stackoverflow.com/questions/2245962/is-there-an-alternative-for-flex-bison-that-is-usable-on- 8ビットエンベデッドシステム/ 2336769#2336769 –