0

現在、YACCの勉強を始めています。YACC で属性付き文法を記述する方法を知りたいだけです。例を挙げてください。ユニオンを使用できますか?

4

4 に答える 4

2

はい、解析ツリー内のノードに属性を関連付けることができます。各ノードには、「ドル指定子」という 1 つの属性があります。属性が式の値に使用される例を次に示します。

expression : expression '+' expression { $$ = $1 + $3; }
           | expression '-' expression { $$ = $1 - $3; }
           | NUMBER { $$ = $1; }
           ;

デフォルトでは、この単一の属性は整数ですが、%unionディレクティブを使用して型を変更できます。異なるタイプのノードは、異なるタイプの属性を持つことができます。(これが、 %typeのようなものではなく、%unionと呼ばれる理由です。) 複数の属性が必要な場合は、C 構造体または構造体ポインターを型として使用できます。

于 2013-10-14T08:26:55.657 に答える
1

Web には yacc 文法の例がたくさんあります。yacc の例を単純に Google 検索すると、多くのリンクが表示されます。ここにも便利なリンクがたくさんあります

于 2013-10-09T18:06:25.437 に答える