我寫布爾表達式的遞歸下降解析器的布爾表達式,例如:解析+和*通過遞歸下降
(1 * 0)
(0 + ~1)
(0 * (1 + c)
其中1爲「真」,0是「假」,+是'或',*是'和',〜是'不是','c'只是一些變量名(可以是任何單個字母)。我計劃使用括號而不是實施某種操作順序。
我現在的分析器可以識別表達
Expression ::= 1
| 0
| Character
| ~ Expression
以下形式,但我不能確定爲我將如何實現+和*在此之上。我是從我讀了明顯的實施
Expression ::= 1
| 0
| Character
| (Expression + Expression)
| (Expression * Expression)
,因爲它是「左遞歸」會導致一個無限循環相當肯定。我不確定如何改變這個去除這樣的無限遞歸。
看到我的答案如何編寫遞歸下降解析器:http://stackoverflow.com/questions/2245962/is-there-an-alternative-for-flex-bison-that-is-usable-on- 8位嵌入式系統/ 2336769#2336769 –