プログラミングユーティリティ

囲み規則の中の値へのアクセス

あるアクションは、左側に記述された規則のアクションによって返された値を参照できます。メカニズムは通常のアクションと同じで、$ の後に数字が 1 つ続きます。

sent     : adj noun verb adj noun 
          { 
              look at the sentence ...  
          } 
          ; 
adj       : THE 
          { 
              $$ = THE; 
          } 
          | YOUNG 
          { 
              $$ = YOUNG; 
          } 
             ...  
              ; 
noun      : DOG 
          { 
              $$ = DOG; 
          } 
          | CRONE 
          { 
              if ( $0 = = YOUNG ) 
              { 
                  (void) printf( "what?¥n" ); 
              } 
              $$ = CRONE; 
          } 
          ; 
...

この例では、その数字は 0 または 負の値にできます。ワード CRONE の後のアクションでは、シフトされた前のトークンが YOUNG かどうかを検査します。ただし、この検査は、入力内のシンボル noun の前のシンボルについて詳しい情報が得られている場合にのみ可能です。場合によっては、このメカニズムによって多くの問題が回避できます。特に、他の標準構造から結合をいくつか除外するときに役立ちます。