7

次のような式を含む解析ツリーを作成しています

3 - 4 * 8

また

8 * -5

また

-(10 * 1)

単項マイナスとバイナリマイナスを区別する方法が必要です。私の文法の進め方は、最初に2進数のマイナスに到達しますが、それを変更して、最後の変数を保持するフラグ変数を追加することを考えています。

例:もしそうなら5 - 6

フラグは5を保持しており、マイナスが表示され、フラグが数値の場合は、単項をスキップして2進数になります。

ただし、これをC++で実装する方法が正確にはわかりません。

どんな助けでも大歓迎です。

ありがとう

4

1 に答える 1

8

パーサーを実装する最も簡単な方法は、再帰下降の方法です。参照サイトのように、バイナリマイナスに単項マイナスよりも高い優先度を与えるようにしてください。

 E -->  | E "+" E
        | E "-" E
        | "-" E
        | E "*" E
        | E "/" E
        | E "^" E
        | "(" E ")"
        | v
于 2012-05-11T18:13:15.370 に答える