2011-02-05 10 views
1

yaccの%unionと少し混乱しています。ユニークなユニオンはすべての単一のトークンに対して定義されていますか、またはグローバルユニオンが1つありますか?私は、ユニオン内のすべてをリストにして、データを適切な型に追加する必要があるかどうかを判断しようとしています。yaccの%unionの範囲は何ですか

答えて

1

トークンごとに個別の%unionオブジェクトがあります。例えば、一般的なルールのようなもののようになります。この場合

expr: value '+' value:  { $$ = $1 + $3; } 

$$$1$3それぞれあなたが%union文で定義された型の別のオブジェクトを表します。

%union { 
    int int_val; 
    /* ... */ 
} 

と::

%type <int_val> value expr 

valueexprルールはint_valメンバーが有効な%組合のオブジェクトを生成することを意味するであろう一般的に、あなたのような何かを持っていると思います。

関連する問題