• ベストアンサー

構文解析について

言語はC(C++)でコンパイラコンパイラを作っています。 自分の考えが正しいのか分からないので訂正があったらそこを指摘して、最後に聞きたいことがあるのでそれにお答えください。 自分でコードを書くと左再帰になるので、パーサージェネレーターといわれるプログラムを使わなければいけないと理解しています。Cでやるにはyacc/lexがあり今はbison/flexが主流となっています。 ただ、ネットで調べると専門的なのかこのことに触れているサイトが少ない気がします。他に有名なプログラムがあるのでしょうか。

質問者が選んだベストアンサー

  • ベストアンサー
  • MrBan
  • ベストアンサー率53% (331/615)
回答No.1

LR系だと、yaccとbisonが有名/基本なのは確かだと思います。 ただ、昨今はLLのJavaCCとかANTLRとか、 boost::spiritみたいなのも出てきてます。 # サイトという意味では、コンパイラコンパイラ自体がそれほど…

norimisa
質問者

お礼

回答ありがとうございます。 boost::spiritの存在を初めて知りました。 調べるとbison/flexよりも評価が高そうですね。 もう少し調べてみます。

その他の回答 (2)

  • uyama33
  • ベストアンサー率30% (137/450)
回答No.3

質問の文章を読んでみて、 コンパイラコンパイラを作りたいのか コンパイラを作りたいのか よく分かりません。 コンパイラコンパイラを作りたいなら、 LL(1)文法ですが コンパイラコンパイラの本がサイエンス社から出版されています。 書名は”コンパイラ・コンパイラ”です。 この本にはソースコードも載っています。 Modula2 で書かれていますが、C言語に書き直したものもネット上で 入手できます。  コンパイラを作るには いろいろなコンパイラコンパイラがありますので それを使えばよいことになります。

参考URL:
http://www.saiensu.co.jp/?page=authored_book_list&writer_id=856
norimisa
質問者

お礼

私の書いた質問に不備があることをお詫びします。 私はコンパイラコンパイラを作りたいのです。 方法はたくさんあることを知り、どれがいいもか迷いましたがとりあえずboost::spiritを使おうと思いました。 回答ありがとうございます。

  • zwi
  • ベストアンサー率56% (730/1282)
回答No.2

コンパイラやらスクリプトインタプリタのサイト自体が少ないですね。 中途半端に掲載終了しているのも多いです。 yacc/lexならこちら↓などいかがでしょう。 http://kmaebashi.com/programmer/devlang/index.html 参考になれば幸いです。

norimisa
質問者

お礼

ありがとうございます。 参考にさせていただきます。