6

セクション2.1.2 Grammar Rules for rpcalcの bison マニュアルでは、次のように書かれています。

各アクションで、疑似変数 $$ は、ルールが構築しようとしているグループ化のセマンティック値を表します。$$ に値を割り当てることは、ほとんどのアクションの主な仕事です

$$ルールからの結果を保持するために使用されるということですか? お気に入り:

exp exp '+'   { $$ = $1 + $2;      }

そして、$$begin が割り当てられた後の一般的な使用法は何ですか?

4

4 に答える 4

9

はい、$$ルールの結果を保持するために使用されます。割り当てられた後、通常は$x上位レベル (または下位の優先順位) のルールになります。

(たとえば)のような入力を考えてみましょう2 * 3 + 4。通常の優先ルールに従うと仮定すると、次のようなアクションになります{ $$ = $1 * $3; }。この場合、それは2 * 3部品に使用され、明らかに十分に、に割り当て6られ$$ます。{ $$ = $1 + $3; }次に、追加を処理する必要があります。このアクションでは、乗算ルールで割り当て$1た値が与えられます。6$$

于 2012-05-24T14:59:11.803 に答える
6

$$ルールからの結果を保持するために使用されるということですか? お気に入り:

はい。

そして、$$begin が割り当てられた後の一般的な使用法は何ですか?

通常、その値は二度と必要ありません。バイソンはそれを内部的に使用して値を伝播します。あなたの例では、$1$2は2つのプロダクションのそれぞれのセマンティック値です。つまり、それらの値は、その変数を設定することによりexp、セマンティックルールのどこかに設定されました。exp $$

于 2012-05-24T14:54:21.557 に答える
1

$$ は、現在の式の評価の結果参照を表します。つまり、その結果です。したがって、割り当て後の使用法は特にありません。

さよなら !

于 2012-05-24T14:54:54.773 に答える