[1344] Re:blockの重複について
投稿者:(ぱ)こと管理人
2009/06/07 11:51:11
>下記のようなプログラムで、ただのブロックを書いた場合、diksamで構文エラー
>になります。4.01でも。これをエラーにしないように、diksam.yを修正したいの
>ですが、お暇がありましたら何かアドバイスをお願いいたします。
そういえば、Diksamはぶら下がりifの類を許していないので、複合文も
作っていませんでした。
Cと同じように文の一種としてcompound_statementを導入すればよいのでは、
とちょっと試してみたのですが、yaccでconflictが出ました。
考えてみればDiksamでは配列リテラルがあるので、「{」の後に式が来たとき
ブロックなのか配列リテラルの始まりなのかがわからないわけです。
こういう場合、構文規則を変形してreduceのタイミングを遅らせる手法が
使えることがありますが、現状のDiksamのブロックは、「{」の直後で
埋め込みアクションが動くようになっており、そのためにはreduceが必要です。
すみません、ちょっと一筋縄ではいかないようです。