1
yaccの%unionと少し混乱しています。ユニークなユニオンはすべての単一のトークンに対して定義されていますか、またはグローバルユニオンが1つありますか?私は、ユニオン内のすべてをリストにして、データを適切な型に追加する必要があるかどうかを判断しようとしています。yaccの%unionの範囲は何ですか
yaccの%unionと少し混乱しています。ユニークなユニオンはすべての単一のトークンに対して定義されていますか、またはグローバルユニオンが1つありますか?私は、ユニオン内のすべてをリストにして、データを適切な型に追加する必要があるかどうかを判断しようとしています。yaccの%unionの範囲は何ですか
トークンごとに個別の%union
オブジェクトがあります。例えば、一般的なルールのようなもののようになります。この場合
expr: value '+' value: { $$ = $1 + $3; }
、$$
、$1
と$3
それぞれあなたが%union
文で定義された型の別のオブジェクトを表します。
%union {
int int_val;
/* ... */
}
と::
%type <int_val> value expr
value
とexpr
ルールはint_val
メンバーが有効な%組合のオブジェクトを生成することを意味するであろう一般的に、あなたのような何かを持っていると思います。