1

ルールの途中にセマンティック アクションを追加したい場合、次のように置き換えます。

S->AB

と:

S->AMB
M->epsilon { //do something }

なぜそれが必要なのですか?代わりに次のように書くとどうなるでしょうか。

S->A { //do something } B
4

1 に答える 1

3

パーサーとの違いはありません。アクションをルールの途中に記述することは、アクションを使用して新しいイプシロン ルールを作成するための構文糖衣です。アクションはパーサーのリダクションによってトリガーされるため、アクションに関連付けられたリダクションのルールが必要です。Bison は自動的に変換を行います。

$1唯一の違いは、アクション内の ...の意味にあります。埋め込みアクションでは、インデックスがオフに計算する値スタックのベース ポイントは異なります。つまり、イプシロン ルールではなく、包含ルールの開始に基づいています。

于 2013-03-11T16:23:14.740 に答える