C言語でのコンパイラの作成方法(1/2)

解決済みの質問

C言語でのコンパイラの作成方法

C言語初心者のため、稚拙な文章になる可能性があることを最初にお詫びします。

現在Microsoft社のMicrosoft Visual C++ 6.0を用いてCドライブのルートにある「temp.c」というソースファイルをコンパイルするアプリケーションを作ろうと思っているのですが、ネット上で「C言語 コンパイラ 作成」等と検索しても、既にコンパイラがあることを前提としたホームページしか見つけることができず、肝心のコンパイラをどのように作ったらよいのかということが載ったホームページが見つかりません。

というわけで、今回はコンパイラをどのように作ったらよいのかというヒントだけでもいいので教えて頂けないかと思い投稿させて頂きました。
ちなみに「temp.c」はそこまで複雑なソースではなく、DOS上のアプリで、リソースやアイコンなどは用いないものです。


そもそも「コンパイラを作る」ということ自体が愚かな行為なのかと思ったりもします。
私が所持しているBcpadやMicrosoft Visual C++ 6.0に付属している既存のコンパイラを利用するということも考えたのですが、BcpadやMicrosoft Visual C++ 6.0の本体以外からコンパイラをどのように利用していいのかもわかりません。

どうぞ忌憚の無い意見をよろしくお願いします。
ちなみにOSはXPのSP3です。

投稿日時 - 2009-01-08 16:46:39

QNo.4613966

すぐに回答ほしいです

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

あの・・・水を差すようで恐縮しますが

それって「コンパイラを作る」ではなくて
「コンパイラを呼び出す」だけでは?

ボタンを押したら
外部プログラムとして cc コマンドを実行するだけ…。
最近 C++ やってないんで忘れましたが WinExecとか CreateProcess とか使って…。もちろん環境変数や実行パラメータはきちんとセットした上でですけど…。Microsoft Visual C++ 6.0でもコマンドプロンプトだけでコンパイルできますから。

投稿日時 - 2009-01-09 00:59:22

お礼

恥ずかしい話ですが、正にその通りでした。
コマンドプロンプトでコンパイラを呼び出すという初歩的な方法を忘れていました。
コマンドを打ち込んでコンパイルするということをしばらくの間やっていなかったせいですっぽりとその考えがぬけていました。

おかげさまで、Microsoft Visual C++ 6.0のバッチファイルを呼び出して、コマンドプロンプト上で「cl C:\temp.c」を実行するプログラムを組むことにより疑問は完全に解決致しました。
本当にありがとうございました。

投稿日時 - 2009-01-09 14:10:07

ANo.8

1人が「このQ&Aが役に立った」と投票しています

[  前へ  |  ]

ベストアンサー以外の回答(7件中 1~5件目)

ANo.7

「自称」初心者のかたにgccのコードが読めるとは、
あまり思えません。

投稿日時 - 2009-01-08 22:57:05

お礼

その通りですね。
アドバイスありがとうございました。

投稿日時 - 2009-01-08 23:22:32

ANo.6

いきなり C言語のフルセットを作ろうとは考えない事。
第一歩は超サブセット。
main(){} のみ。
使える関数はputs()のみ。
変数は無し。

なんか簡単そうでしょう。
それが出来たら(きっとできます)
次は関数の追加、 戻り値を判定して呼び出す関数を変える機能。
まだ変数は無し。

非常に単純処理系から思わぬ大きな収穫を得る事でしょう。

投稿日時 - 2009-01-08 21:41:54

お礼

なるほど、いきなりソースファイルならばなんでもコンパイルできるものを考えるのではなく、いたって単純なソースからコンパイルする方法を考えるということですね。
コンパイラを1から作るということになったら参考にさせて頂きたいと思います。
アドバイスありがとうございました。

投稿日時 - 2009-01-08 23:22:13

ANo.5

アマゾンで「コンパイラ」で検索すればコンパイラの作り方を解説した書籍が各種見つかります。
実行効率を考えずANSIに準拠しようとか思わなければ作る事自体はそれほど「無謀」では無いと思います。

分かりやすかったのは
http://www.amazon.co.jp/dp/4839919232
Javaで書いてるのでC言語しか読めないとつらいかも。

ネイティブでなくても良ければ
http://www.amazon.co.jp/dp/4839919232
とかは良いかもしれません。

投稿日時 - 2009-01-08 21:04:23

お礼

アドバイスありがとうございます。
とりあえず他の方のアドバイス等も参考にさせて頂いて、1からコンパイラを作るというのはやめようと思います。
いつか必要な時からきたら参照させていただきたいと思います。

投稿日時 - 2009-01-08 23:20:35

ANo.4

GCCのソースを見てみたらいいのではないですか。

投稿日時 - 2009-01-08 20:54:33

お礼

GCCに関して参照してみたのですが、ちょっと今の私には難しいようです。
やはり1からコンパイラを作るのではなく、元々あるコンパイラを利用したアプリケーションを作った方がよさそうですね。
アドバイスありがとうございました。

投稿日時 - 2009-01-08 23:19:42

ANo.3

C言語の初心者を自認されているのであれば、
悪いことは言いませんから
コンパイラを作るなどとは
お考えにならないことです。
無謀すぎます。

投稿日時 - 2009-01-08 20:04:53

お礼

やはりコンパイラを作るというのはそれだけ難しいことなのですね。
アドバイスありがとうございました。

投稿日時 - 2009-01-08 23:17:53

あわせてチェックしたい
  • bcpad ...
  • Visual Studio のコンパイラがアプリケーションエラー ...
  • Javaのコンパイラ!! ...
PR
【回答募集中】花粉にひと言、物申す![ 詳細 ]

OKWaveのオススメ

教えて弁護士さん!

お金の悩みQ&A特集はこちら