- ベストアンサー
インデントのEBNFについて
今、bison+flexでミニ言語を製作しようとしています。 Pythonのようなブロックをインデントで表す方式にしたいのですが、 どうもきれいにEBNFで書けないので迷っています。 スマートな書き方がありましたら、どなたかご教授ください。
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
インデントをパーサー側で処理するのではなくて、レキサーでインデントをブロックをあらわす記号に変換してしまうほうが楽だと思います。
今、bison+flexでミニ言語を製作しようとしています。 Pythonのようなブロックをインデントで表す方式にしたいのですが、 どうもきれいにEBNFで書けないので迷っています。 スマートな書き方がありましたら、どなたかご教授ください。
インデントをパーサー側で処理するのではなくて、レキサーでインデントをブロックをあらわす記号に変換してしまうほうが楽だと思います。
お礼
そうですね。 初めの試作(boost/spirit)では 前処理で{}に変換していたのですが、bisonだったら BNFでできないかなとか思っていたのですが… あきらめることにしました。 回答ありがとうございました。