現在、YACCの勉強を始めています。YACC で属性付き文法を記述する方法を知りたいだけです。例を挙げてください。ユニオンを使用できますか?
1586 次
4 に答える
2
はい、解析ツリー内のノードに属性を関連付けることができます。各ノードには、「ドル指定子」という 1 つの属性があります。属性が式の値に使用される例を次に示します。
expression : expression '+' expression { $$ = $1 + $3; }
| expression '-' expression { $$ = $1 - $3; }
| NUMBER { $$ = $1; }
;
デフォルトでは、この単一の属性は整数ですが、%unionディレクティブを使用して型を変更できます。異なるタイプのノードは、異なるタイプの属性を持つことができます。(これが、 %typeのようなものではなく、%unionと呼ばれる理由です。) 複数の属性が必要な場合は、C 構造体または構造体ポインターを型として使用できます。
于 2013-10-14T08:26:55.657 に答える