- 締切済み
最近コンパイラについて勉強していたのですが、行き詰まり悩んでいます。
最近コンパイラについて勉強していたのですが、行き詰まり悩んでいます。 そこで思ったのですが、コンパイラについて相談できるようなサイトってないんでしょうか? もし知っている方いましたら教えていただけると助かります。
- みんなの回答 (6)
- 専門家の回答
みんなの回答
- siffon9
- ベストアンサー率64% (136/211)
「明快入門コンパイラ・インタプリタ開発 C処理系を作りながら学ぶ 」を参考に簡易コンパイラを作成してみた、コンパイラ初心者です。 ご質問にあるようなサイトがありましたら私も是非教えていただきたいと思います。 > インデントでブロック構造を認識したい これは字句解析の段階で、行頭のTAB(或いはスペース)数の前行との差分をみて、差分が有ったらブロック開始(終了)トークンを生成するようにすれば、BNFで表せるようは構文解析ができるのではないでしょうか? No.5さんも仰っていますが、前述の書籍は字句解析・構文解析にツールは使用していませんので参考になるのではないかと思います。
- zwi
- ベストアンサー率56% (730/1282)
>色々と本は読んでみたのですがどれもツールを使っていたのでできれば避けたいです 見もしないうちから否定されるのはなんだかなぁ。 「明快入門コンパイラ・インタプリタ開発 C処理系を作りながら学ぶ 」 http://www.amazon.co.jp/dp/4797357037 はyacc/lexを使っていませんよ。 「コンパイラ 情報処理シリーズ(7) 」 http://www.amazon.co.jp/dp/4563007870 も使っていません(古本のみ入手可能)。まぁ、難しい本ですけどね。
補足
色々と本を読んだと言うのは、少々語弊があったことはお詫びします。 ただ何にも本を読んでいないということはありません。 確かに紹介していただいた二つの本についてはまだ読んだ事ありませんでした。 また探して読んでみます。
- zwi
- ベストアンサー率56% (730/1282)
最近、コンパイラに関する書籍なら比較的簡単に入手出来ますが、これらを参考にしない理由は何かあるのでしょうか? こんな本とか↓ 「明快入門コンパイラ・インタプリタ開発 C処理系を作りながら学ぶ 」 http://www.amazon.co.jp/dp/4797357037 あるいは、こんなサイトとか。 「プログラミング言語を作る」 http://kmaebashi.com/programmer/devlang/index.html 基本的なところをすっ飛ばして作れるものではありません。
補足
色々と本は読んでみたのですがどれもツールを使っていたのでできれば避けたいです
BNFが、かけるような言語であれば、Flex/Yaccを使うのが最近は、普通です。 それらを使わない、というなら、それなりの理由がいるでしょう。 構文解析は、まだ、前半なので、先は、長いです。
補足
インデントでブロック構造を認識したいのでBNFでは表せない気がしています また仮に表せたとしても勉強も兼ねて作っているのでツールの使用は避けたいです
- t_nojiri
- ベストアンサー率28% (595/2071)
言語とフォーラムとかで、見つかる筈ですがはっきり言って初心者ではなく中上級者なので、まずはサイトとかで勉強した方が無難です。 まあ、見るのは参考で http://social.msdn.microsoft.com/Forums/ja-JP/vbgeneralja/threads http://social.msdn.microsoft.com/forums/ja-JP/vcgeneralja/threads/
はじめまして、よろしくお願い致します。 >最近コンパイラについて勉強していたのですが、行き詰まり悩んでいます。 何を行き詰まっているのですか。詳細を補足願います。 コンパイラとは、例えばコボル言語でプログラムを組むそして、コンパイルする(コンパイラプログラムソフト)と機械(アセンブル?)語となりこのような画面表示をしたりするドライバーソフトを作るわけです。(コボル言語では、ちょっときつい例ですが・・) ご参考まで。
補足
確かに説明不足でしたね。 えっと 自作言語のコンパイラを作ろうとしていて、構文解析の辺りで躓いています。 とりあえずアセンブラにする所までを目標としています。
補足
>>これは字句解析の段階で、行頭のTAB(或いはスペース)数の前行との差分をみて、差分が有ったらブロック開始(終了)トークンを生成するようにすれば すごく納得のいく方法です。 ありがとうございました。