コンパイラをかきたいんですけど・・・

このエントリーをはてなブックマークに追加
1いっちー
ひょんなことから書かなければいけないんですが、
何か注意しないといけない点とかあればご教授願います。
2いっちー:2001/04/22(日) 04:13
似たような題名のスレがありますがネタじゃなので....

察しの通りだと思いますが、学校の課題です。
そんな複雑な言語じゃないのでコード生成までの理論などは
一通り理解したつもりなんですが、コンパイラを実際に書く
となると何かいろいろと不安です。識別子テーブルの管理とか・・・

しかもあろう事か、4人で分担して作れという内容なのでさらに
不安拡大です。うまく連携できるかなぁ....
3デフォルトの名無しさん:2001/04/22(日) 04:25
卒論ですか?
普通の授業の課題だったら、たまらんなー。

ちなみに言語は何?
4デフォルトの名無しさん:2001/04/22(日) 04:26
54:2001/04/22(日) 04:27
6デフォルトの名無しさん:2001/04/22(日) 04:28
多人数での開発を教えている学校にアドバイスもらったら?
すっげーいい経験になるよ思うよ。アドバイスじゃなくて、課題の方な。
7いっちー:2001/04/22(日) 04:31
「yaccやlexを使うな」との制限もありました...

>>3
普通の授業です(泣).
言語はPascalの簡易バージョン(独自)らしいです

その言語の使用が教科書にしか載っていなくて(Webとかでも教えてくれない)
しかもその教科書がまた高い....

とりあえず、 >>5 お勉強します
8いっちー:2001/04/22(日) 04:34
>>6

今回はコンパイラという課題もさることながら、
多人数開発がさらにネックになりそうです。。

こんな私が4人の中で一番詳しいと言うことで
リーダーにさせられました

がんばって設計中です.......
9デフォルトの名無しさん:2001/04/22(日) 04:40
>>7
んじゃ再帰下降とかLL(1)で、さらにPascalつーことで1パス・・。
スタックマシンにして型定義にこだわらなければ長くても1週間程度で終りそう。
レジスタ割り付けとかあるんなら別だけど。
10デフォルトの名無しさん:2001/04/22(日) 04:46
そういやターゲットは何ですか?
つまり所謂ネイティブコンパイラですか?

#全然知らないんだけどa.outとかELFとかってのは
#フォーマット難しいんでしょうか?
11いっちー:2001/04/22(日) 04:53
>>10
ターゲットは「仮想スタックマシン」だそうです。
仮想的なアセンブリを対象にしたコードを生成
すればよいみたいなので、ネイティブなコード
あたりはあまり心配いらないみたい。
>純粋なテキストで仮想アセンブリを生成でいい

しかも、その仮想アセンブリをインタプリタのように
実行するプログラムも作れと言う、端から見て
非生産的な課題内容です・・・・・・
129>11:2001/04/22(日) 04:56
普通だろ
13いっちー:2001/04/22(日) 05:00
>>12=9

今改めて考えてみて気づきました、確かに普通ですね・・・
やはりもう少し考えをまとめ上げてから設計した方がいいのかも
149>11:2001/04/22(日) 05:02
仮想機械の手直しだけで他の環境に移植できるから汎用性は上がる
実行効率は落ちるけど。
必要なら「仮想機械→ネイティブコード」って手があるし。(参考JavaVMなど)
159:2001/04/22(日) 05:07
(ちなみにgccでも内部処理は「仮想機械→ネイティブコード」ね。)
16いっちー:2001/04/22(日) 05:13
9さんありがとうございます。。

なにやらいろいろと新しく気づく点が多くて参考になっています。
でもその分、ますますコンパイラづくりがうまくいくかどうか不安に・・・
(utc ...)
17ちょっと無理があったよぉ:2001/04/22(日) 05:46
大學学部の授業なみだな
19デフォルトの名無しさん:2001/04/22(日) 06:21
20デフォルトの名無しさん:2001/04/22(日) 07:06
21いっちー:2001/04/22(日) 21:18
みなさんありがとうございます〜
こんなけサイトがわかればもうお腹いっぱいって感じです(=/

>>2 でもちらっと書いたんですが、できればこれからは
コンパイラを作るための理論的な話より
実際にコンパイラのプログラミングをするときの実践的な
アドバイスが何かあればお願いしたいです
コンパイラソフトの設計へぼいと泥沼と化すとか....

# っとまで書いてみて、こんなのコンパイラに限った話じゃ
# ないですね... なのでsage
22いっちー:2001/04/22(日) 21:19
ちなみ、
4人で話し合って設計しているときにほかの2人が言った言葉
「設計なんて、実際にプログラムを書き始めてみないとわからない」

私としては、4人の分担している部分を1つにまとめるときに
面倒なことにあまりならないようにするため、せめて
連携するところ(他の人の作った関数を呼び出す・他の人に関数を呼び出される)
       (「インターフェース」と呼ばしてもらいます〜)
がそれなりにきっちりと設計されていないままプログラミングを始める
のが危険に感じられてしょうがなく、話し合いといえど実質私が
一人でそんなインターフェースを作っているのが不安です。

# 長文スマソ
23デフォルトの名無しさん:2001/04/23(月) 03:06
>>22
俺もプロの方々の意見を聞きたいのでage!
どうやって分担してるのかな?
24デフォルトの名無しさん:2001/04/23(月) 09:45
gccの基本部分ってストールマンが独力で設計したの?
25いっちー:2001/04/23(月) 12:10
今のところは、字句解析・構文解析・識別子管理テーブルと
全体のプログラムをまとめ上げる部分(これら以外の部分ともいえる)
の4つにわけてそれぞれを分担しようと思っています。

実際にプログラミングするにあたって、やっちゃいけない処理
(泥沼化・連携ミスを誘発しそうなこと)とかの話が聞ければ幸いです。
26いっちー:2001/04/23(月) 12:14
たとえば、文字列をわたすのに
int foo( const char* const) ;
とかするなんていうのは基本になるんだと思うんですが〜
(言い忘れましたが、Cで書くことにしてます)

>>24
力及ばなくて申し訳ない、わかりません
27デフォルトの名無しさん:2001/04/23(月) 12:35
>>22
> 「設計なんて、実際にプログラムを書き始めてみないとわからない」
詳細設計はともかく、全然設計しないと破綻する可能性が高い。

> 連携するところ(他の人の作った関数を呼び出す・他の人に関数を呼び出される)
>        (「インターフェース」と呼ばしてもらいます〜)
> がそれなりにきっちりと設計されていないままプログラミングを始める
> のが危険に感じられてしょうがなく
あなたの感覚は正しいです。
インターフェースやグローバル変数、構造体、テーブル
モジュールの分割やヘッダファイルの分割はやっといた方がいいです。

まぁ、とりあえずあなたが中心のようですからあなたが叩き台を作って
みんなの意見を聞いて、それを反映させて設計書を作ってみましょう。
28デフォルトの名無しさん:2001/04/23(月) 15:53
グループでやって泥沼化するのが嫌なら、いっそ全部一人でやる
というのはどうでしょうか?で、四人でやったことにして提出する。
一人でやる方が作業効率もいいかもしれません。
29デフォルトの名無しさん:2001/04/23(月) 18:30
>>28
チーム開発も課題に含まれてるような気がする・・・。

失敗しても良い今、チームでやることの大変さや
楽しさを味わっておくのも、また一興かと。
30いっちー:2001/04/23(月) 19:27
>>28
もちろん、そんな案も話し合いながら出しましたが、
>>29
のような立場です。

>>27
大方は、そこでおっしゃってくれたようなことを
念頭に置いて設計してます。
とにかく、あとあとみんなが困らないような設計
にできるようがんばります〜
31デフォルトの名無しさん:2001/04/23(月) 22:19
32デフォルトの名無しさん:2001/04/23(月) 22:34
基本だけど、とりあえず最低限の機能を仕上げて、
その後あーだこーだやれば破綻はしない。
33デフォルトの名無しさん:2001/04/23(月) 23:03
 関係ない話だが、そんな課題が出る学科ってうらやましいなぁ・・・。
情報系じゃないからそんなのぜってぇ出ないよおれ・・・。
応援age。

↓ここなんか参考になるかも
http://www.tokumaru.org/
34デフォルトの名無しさん:2001/04/23(月) 23:13
>>25
C だとメモリ管理に要注意。

字句解析ルーチンでトークンを切り出して(このときに、
おそらく malloc する)、それを構文解析ルーチンに渡
し、構文解析ルーチンがシンボルテーブルに登録したり、
シンボルテーブルから検索するワケですが、誰が最終的に
free() するのか、同じ文字列を複数のルーチンで共有し
て良いのか、それとも strdup() して渡すべきなのか、
設計時に良く考えておかないとハマります。

最適化や型システムを実装しだすと DAG みたいなサイク
ル有りのグラフ構造が出てくるけど、こいつも解体すると
きに無限ループしないように注意ね。

もし、使う言語に指定がなければ Java で組むことにした方
が楽だと思う。C で組む場合には xmalloc とか ccmalloc
みたいなツールを拾ってきて、メモリの使用状態をチェック
しておきましょう。
35デフォルトの名無しさん:2001/04/23(月) 23:27
>34
そうだねえ。
Cだとコンテナ系モジュールが最初から揃ってないと辛い気がする。
スタックや連想リストぐらいは用意しないとね・・
思考の妨げになるから。
C++でも良いんならそれでやればいいと思う。
36いっちー:2001/04/24(火) 00:48
>>32
>その後のあーだこーだ
で破綻しそうな気がするので、極力インターフェースを
固めてしまいたいのですが、どんなにきっちりとした
設計を作ってもやはり最終的にはあーだこーだやらないと
いけないんでしょうねぇ・・・

>>33
「マイクロコンピュータを作る」なんていう実験まであるので
ある意味つらすぎです。私は後半これをするのですが、
前半で(今)やっている人たちは、論理回路をしこしことしながら
「ぜんぜんわからん」と言ってます。実質教科書に書いてある
答えを写してレポートを完成させるのが実験内容みたいな
ものらしいです・・・・ってスレと関係ないや。
37いっちー:2001/04/24(火) 01:02
>>35
C++も考えたのですが、ほかのメンバーがわかってそうにないので
Cにしました。というか私もあまりわかってないかも・・・
(「クラスにすれば楽かな」程度しかC++はわかってません)
ちなみに、言語はなにで書いてもいいらしいです。
ジョークのつもりでJavaをあげたりしてましたが、実は
いい選択肢だったんですね・・・・

>>34
メモリ管理は今かなり悩んでいます。基本は、メモリを確保
した側が解放する、て方針が一番わかりやすいのだと思うのですが、
それが返って設計に悪影響を及ぼしてしまっている気もするんです・・

「メモリを確保した側が解放する」にはとらわれない方がいいのかな。
でもそれだと、メモリリークが怖いし・・・・

ん〜、設計てこうやって悩むんですね・・・
でみんなから「んなタコな設計つくんな」と怒られるんですね・・・(utc..)
38いっちー:2001/04/24(火) 01:29
>>22
>「設計なんて、実際にプログラムを書き始めてみないとわからない」

その2人の名誉のために書きますけど、決して
「設計が大事でない」て言ってたのではなくて
「設計大事なのはわかるが、実際にプログラムを書いてみないと
 しっかりとした設計は見えてこない(含インターフェース)」
です。

もしかしたらその2人ここ見てたら困るので....
39デフォルトの名無しさん:2001/04/24(火) 02:43
>>34
boehmGCとかいうGCライブラリを使う、ってのは
駄目人間な選択肢でしょうか?
w3mやモジラでも使っているらしい。
free()って書かなくて良いのは気楽です。
40デフォルトの名無しさん:2001/04/24(火) 02:54
インタプリタ作って遊んでいます。

>スタックや連想リストぐらいは用意しないとね

最近出た本「プログラミング作法」(だったっけ?
似た別の名前だったら御免)をベロ真似しながら、
StackやHashを最初に揃えた。
道具ない(開発言語はC)とヤッテラレナクなるのは
目に見えてたので、ボトムアップしてます。
41デフォルトの名無しさん:2001/04/24(火) 03:26
42>41:2001/04/24(火) 04:39
ヘッダしかないと思ったらマクロなんだね。
見栄えが悪くなるのは仕方ないか
43デフォルトの名無しさん:2001/04/24(火) 12:41
>>37
> メモリ管理は今かなり悩んでいます。基本は、メモリを確保
> した側が解放する、て方針が一番わかりやすいのだと思うのですが、
多分、シンボルテーブルだとそれは無理
シンボルテーブルはシンボルが出現した場合、確保を行い、
そのテーブルの寿命はプログラム終了まで続くはず。
その場合、テーブルを一気に解体する関数があった方が楽。

また、解体する時に
> 同じ文字列を複数のルーチンで共有し
の場合、リファレンスカウンタかなんか実装してないと
2重free()の危険があり、これはメモリリークよりタチが悪いです。
44デフォルトの名無しさん:2001/04/24(火) 18:23
Introduction to Compiler Construction with Unix by Schreiner and Friedman,Jr
って本があるけど、これにはlex, yacc使ってるけど具体的に疑似マシン語まで出力する方法が
サンプルプログラムで具体的に説明されています。古い本なのでまだ出版されているかは
知りません。
今調べたら85年出版で絶版でした。ごめん。俺もってるけど。
45デフォルトの名無しさん:2001/04/24(火) 18:38
>>1はもしや東京大学?
46デフォルトの名無しさん:2001/04/24(火) 23:24
>> 1

つーか完成したら見せてほしいよー

ageます
47デフォルトの名無しさん:2001/04/25(水) 00:53
コンパイラ理論の実践が目的で、使う言語が何でも良いなら、
「OOPでない(よりよいCとしての)C++」にしたら?
std::stringやSTLを使って、枝葉の部分(メモリ管理やらコンテナやら)に
労力を取られないようにするのもひとつの手かと。
48デフォルトの名無しさん:2001/04/25(水) 00:53
>>43
Pascal 風の言語だと、シンボルテーブルに登録されたシンボ
ルの寿命はブロックが終わるまでですね。

ブロックが1レベル深くなるたびにそのことを記録しておいて、
ブロックから抜けたら、まとめてそのブロックのシンボルを削
除するのが普通だと思う。予想されると思いますが、データ構
造はスタックを使うと相性が良いです。

なお、Pascal 風の関数・手続きの文法では、仮引数宣言はブ
ロック開始の前、仮引数のスコープは当然ブロック内になるの
で、それだけは注意してください(私は、これでバグを出した
経験が……)。
49紅衛兵:2001/04/25(水) 01:07
とりあえず、ドラゴンブックの上下読むことをお勧めしますが。
エイホ、ウルマン著のコンパイラ上・下だっけ……?
うろ憶えですまん。
50デフォルトの名無しさん:2001/04/25(水) 01:23
>>49
書棚から引っ張り出してきたよ。

コンパイラ I 原理・技法・ツール
A.V.エイホ, R.セシィ, J.D.ウルマン共著, 原田賢一 訳
サイエンス社
ISBN 4781905854

コンパイラ II 原理・技法・ツール
A.V.エイホ, R.セシィ, J.D.ウルマン共著, 原田賢一 訳
サイエンス社
ISBN 4781905862

この本はコンパイラ理論の古典的名著(いわゆるバイブル)
だけど、記述はかなり理論より。実際にコードを書くには、
もの足りないかも。

ま、その辺は別の情報源で補って下さい。
51いっちー:2001/04/25(水) 02:30
>>43
> リファレンスカウンタ
この言葉、初めて聞きました(この時点でだめだめかも...)
考え方自体はよくわかったのですが、今回
>>34
> 同じ文字列を複数のルーチンで共有
するようなことはなく、文字列は極力どこかの所属で
必要時に参照するのみ、にしようと思っています。
52いっちー:2001/04/25(水) 02:55
>>43
>>48
48 のおっしゃっているとおり識別子の寿命はその識別子が
ブロック宣言されたブロックが終わるまでなので、
いらなくなったら即消去とする予定です。

>>48
>データ構造はスタックを使うと相性が良いです。
スタックはブロックが深くなる・浅くなる の部分で
用いられると思うのですが、
今回データ構造に関しては、下手にいろいろと考え出すと
痛い目を見る可能性が高いと判断して(逃げてます。。)
教科書どおりのものにしようと考えています。

それによると、ブロック情報を専門に管理する部分が別にあり、
そこがスタック状になっているのでこのことだと理解してます。

識別子はハッシュ的にテーブルへ登録され、同じブロック内の
識別子がリストで結ばれ、1つの識別子へのポインタをブロック情報が
格納している・・・・ような気がする構造になっています(謎)
(授業で聞いた言葉並べて、わかった気になっているだけかも...)
53いっちー:2001/04/25(水) 03:30
>>47
そのことも考えての、
>>37
だったのですが、メモリ管理やらコンテナやらに
労力を取られない分 STL を使いこなす分に
労力を取られそうです(

STL・・・
やはり使いこなせた方がよいですね・・・
近いうち時間取れたら考えてみます。
54いっちー:2001/04/25(水) 03:31
>>45
東大ですか・・・
いろんな意味で「とおい」ところです

>>46
完成しなかったらどうしましょ(w

こちらで出してもらった本は、たいがいが図書館に
あるようです。その点では私のところは
恵まれている大学なのかも
55デフォルトの名無しさん:2001/04/25(水) 12:59
いっちー萌えage
56デフォルトの名無しさん:2001/04/25(水) 15:53
あぁ、こんな素直な奴がうちに来ないかなー(妄想)
57デフォルトの名無しさん:2001/04/25(水) 20:57
完成したら
公開してちょ >>1
58デフォルトの名無しさん:2001/04/25(水) 21:04
>>57
>>46
しつこいね。

>>1
完成したら見せてね♥
59デフォルトの名無しさん:2001/04/25(水) 21:28
>>58
「お前モナー」
って言ってホシイの?
60デフォルトの名無しさん:2001/04/25(水) 22:44
あーあ。せっかくまともに進行してたのが>>46のせいで台無しになたな
6146:2001/04/25(水) 22:52
>>58 俺は46しか書いた覚えは無い。57なんかと一緒にすんな。
>>60 ごめん。

これだけじゃなんなので、
http://www19.freeweb.ne.jp/computer/yaneurao/yaneSDK1st/
にあるyaneSDK内のyaneScriptなんてどうよ。

なんだかんだいろいろと言われてるけど、
具体的な実装の例としてはいいんじゃない?

いつぞやCマガでTurboCのソース公開してたよな・・・
どっかに無いもんかね。
62デフォルトの名無しさん:2001/04/25(水) 23:25
識別子は消す必要ないと思われ。
状況によって消す必要があるのは、「識別子と、
それを束縛する値のペア」つまりいわゆる変数であって、
識別子(=名前そのもの)にIDを持たせたりしての管理体制は、
処理系のスタートから終了までずっと万世一系でいけるはず。

つまり、アッチで出た変数名Aとコッチで出た変数名Aは
同じ識別子だと思ってよいわけです。同じ変数ではナイけど(^^;。

#ていう話でしょうか?はずしてたらごめん。

蛇足(かつInterpreter)だけどPostScript。
あれは変数(?)のScopeをユーザーProgramで明示的に制御します。
具体的にいえば、Dictオブジェクトを作成してDictStackに積めば
1つ内側の名前空間に移動し、DictStackをPOPすれば
1つ上の名前空間に戻ります。
なんかその手順はまさに普通の言語の処理系が中でやってること
そのものって感じで、いじっていて楽しい(快適かどうかは別)し、
色々処理系に教えられるものがあります。
#処理系は自作のモドキなのにも関わらず(^^;
63デフォルトの名無しさん:2001/04/25(水) 23:32
今更言ってもどうしようもないんだろうけど、
随分昔、「ポケコンジャーナル」に
結構こってりとコンパイラ(ALGOL系言語ってのかな)の作り方が
載っていたなあ。無学だった俺には超新鮮でタメになった。

#ナニがタメになったかというと、「体系立ったコンパイラの作り方」
#というものが存在するのをソレで知ったので。感謝。
64デフォルトの名無しさん:2001/04/25(水) 23:40
>>61
>いつぞやCマガでTurboCのソース公開してたよな・・
まじですか!
65デフォルトの名無しさん:2001/04/25(水) 23:55
>>64
TurboCのソースなんて欲しいか?
66デフォルトの名無しさん:2001/04/26(木) 00:09
>>65
ほしいほしい!
67デフォルトの名無しさん:2001/04/26(木) 00:21
>>61
ざっと読んでみましたが yaneScanner (字句解析), yaneParser
(構文解析), yaneVirtualCPP (仮想マシン), yaneVM2i386 (JIT
コンパイラ) とも、きわめて基本に忠実なコードになってますね。

ただし、コードの質はさほど高くありません。実用の処理系として
は論外ですが、勉強のために読むコードとしても

1. コメントが腐っている
2. ソースコードがあまり整理されてない

点はマイナス。いずれにせよ、実装の「一例」として参照する分に
は悪くないと思います。

個人的には、コンパイラの学習用に読むのでしたら lcc を勧めて
おきます。作者が lcc について書いた本もあるようですが、こち
らは読んでないのでコメントは避けます。

http://www.cs.princeton.edu/software/lcc/
6865:2001/04/26(木) 00:22
>>66
GCCでいいじゃんとか思うのですが……
69>67:2001/04/26(木) 00:22
コメントは面白いと思った
7067:2001/04/26(木) 00:30
>>69
個人的には、コメントもやね氏のページの RSP も笑わせてもらいま
した。でもまあ、技術的な話と、お笑いは別ってことで。
71デフォルトの名無しさん:2001/04/26(木) 00:32
>>68
どうやって速くしてるのが知りたい
72デフォルトの名無しさん:2001/04/26(木) 00:34
>>61
何号ですか?
73デフォルトの名無しさん:2001/04/26(木) 00:37
>>71
そうかぁ
つーかgccは100万行とかあるんだっけか?
>>67さんのいうlccはどんなもんなんですか?
74デフォルトの名無しさん:2001/04/26(木) 01:08
TurboCのソース公開してるならおれも読みたい
>>61教えてくれ
75デフォルトの名無しさん:2001/04/26(木) 01:15
自分も選択課題で出されたから気になるなぁ。

チーム制でやるなんて面白そう。やっぱり学部3年? 2年とかだったら恐ろしい…。
76デフォルトの名無しさん:2001/04/26(木) 01:16
>>72
ごめんわからない。1年前くらいだと思う。
結構話題になったんで、そこらへんの
プログラマ日記サイトの過去ログ探せばわかるかも。
77デフォルトの名無しさん:2001/04/26(木) 01:30
そんな無責任な>>76
78>76:2001/04/26(木) 01:49
情報が少なすぎるっつーの。
結構話題になったって、だったらどこで話題になったのか教えてくれ。
7961じゃないけど:2001/04/26(木) 02:24
80デフォルトの名無しさん:2001/04/26(木) 02:30
>>79を見て、どれだと思う?>>61
81Y浅:2001/04/26(木) 04:11
>>1
わからなかったら上回生のディレクトリを見なさいっ。
ただし成績は可にしますが。
82デフォルトの名無しさん:2001/04/26(木) 20:28
>>81は湯淺太一で>>1は京大生。
83デフォルトの名無しさん:2001/04/26(木) 21:16
>>82
匿名掲示板で身元を詮索するなよ……
っつーか、スレッドの趣旨と全然関係ないので sage
8482:2001/04/26(木) 21:26
>>83
いや言ってみただけで湯淺太一大先生なわけないし気にしないで。
そもそも「浅」じゃなくて「淺」だし。
でも>>81はネタじゃなくホントに>>1の先生っぽいような……。
8561:2001/04/26(木) 23:24
>>80

ごめんよう。全然わかんねー。
えーとな、かなり前なんだよ。
'99より前っぽいんだよ。
8679:2001/04/26(木) 23:32
>>85
かなり探したんだがそれらしい物はまったく見つからなかった。
君の勘違いなんてこたないよね?
8761:2001/04/27(金) 00:08
>> 86
そう言われると自信が無くなってくる・・・
すまん。こっちでも調べてみるよ。

もし勘違いだったらマジですいません。
8867:2001/04/27(金) 21:24
>>73
リンクをたどれば書いてありますが lcc は ANSI C コンパイラです。
gcc などの本格的なコンパイラに比べると最適化が弱く実用には適し
ませんが、ソースコードは非常にコンパクトかつ素直な構成になって
います。
89通りすがり:2001/04/27(金) 21:31
>>88
lccってワイド文字とかサポートしてないでしょ。
ライブラリ関数が不足しているのはROM化する分にはフリースタンディング環境
だからと割り切れるけど、wchar_tが使えないのはANSI Cとしては論外。
他にも動作が変なところがあるけど、それはまあバグということで。
90デフォルトの名無しさん:2001/04/27(金) 22:47
>>1
最近はWirthの教科書ないのか?
Pascal風コンパイラ(整数のみ)が載ってたぞ。
題名忘れたけど・・・・
相当参考になったよ。
9190:2001/04/27(金) 22:57
これだな。

[ヴィルトのコンパイラ構成法]("Compiler Construction")[10]を書いてきた。「A+D=P」から2回書き直していることになる。なんというか、教科書を書くのがすきというか。前書きでも「最近の学生どもは基本的な仕組みを理解しとらんから」云々などという文句をたれていて、ああ学生達もうるさい爺さんがいて可哀想、とも思うけど羨ましかったりもして。ちなみに単なる焼き直しではなく、分割コンパイルとか、以前はスタックマシンを想定していたのだが、RISCコードを生成するときの最適化などの現実的な(?)話題も盛り込んでいる。

[1] ニクラウス・ヴィルト『アルゴリズム+データ構造=プログラム』,マイクロソフトウェア,ISBN
[2] ニクラウス・ヴィルト『Modula-2プログラミング』,マイクロソフトウェア,1986
[3] ニクラウス・ヴィルト『データ構造とアルゴリズム』,近代科学社,1990,ISBN4-7649-0162-5
92デフォルトの名無しさん:2001/04/27(金) 23:15
93デフォルトの名無しさん:2001/04/27(金) 23:57
日本人がlccつったらふつー、LSI-Cのことでは?
別にいいけどサ。
94いっちー:2001/04/29(日) 23:12
なんかもう顔を出しづらくなっちた。

>>81
ホンニン? だとしてもそんな時間まで起きてると体に
悪いですよ〜
95デフォルトの名無しさん:2001/04/30(月) 06:20
っていうか、どう考えてもうちの大学だな。>1
おれも同じ部屋で引きこもり寸前でやってます。
湯淺は直接関係ないよね。
96デフォルトの名無しさん:2001/04/30(月) 15:10
マスでもかいとけ
97デフォルトの名無しさん:2001/04/30(月) 19:12
数年前、高校の授業中にマスかきました。
98デフォルトの名無しさん:2001/05/17(木) 23:46
ageてみる
99デフォルトの名無しさん:2001/05/18(金) 01:38
>>98
よくぞageてくれた。
100デフォルトの名無しさん:2001/05/19(土) 09:44
切り番get!
101デフォルトの名無しさん:2001/05/20(日) 01:16
age!
102デフォルトの名無しさん:2001/05/20(日) 01:18
なんであげるのん?>101のわんちゃんさん
103古本屋:2001/05/20(日) 02:42
コンパイラを作る方法 PASCAL処理系作成の理論と実装
翔泳社
1993年11月発行
259P 26cm
ISBN: 4-88135-072-2
価格: 3,107円(税別)

http://cocoa.2ch.net/test/read.cgi?bbs=linux&key=985427152
104デフォルトの名無しさん:2001/05/20(日) 07:59
こっちでがいしゅつです>103
【コンパイラ・スクリプトエンジン】相談室
http://piza.2ch.net/test/read.cgi?bbs=tech&key=981672957&ls=50
105デフォルトの名無しさん:2001/05/22(火) 13:02
昔話になっちゃうんだけど、MZ-80を使ってたころWICSという
BASICもどきのインタープリタとコンパイラがあって、
コンパイラはWICS自身で記述されていた。
当時はソース公開あたりまえの時代だったから
とても勉強になったもんだよ。
技術的には最先端ではなかったけど基本は抑えていたし。
一人で全体を読んで把握するのに無理の無い規模だったし。
106いっちー:2001/05/24(木) 07:20
他のレポート多すぎ
これにあまり時間さけない・・・

//↑グチ
107デフォルトの名無しさん:2001/06/30(土) 11:19
憂慮スレ。age
108名無しさん:2001/06/30(土) 13:05
A.T.シュライナー/H.G.フリードマンの
『Cコンパイラ設計yacc/lexの応用』は
どう?
古いけど。
109デフォルトの名無しさん:2001/06/30(土) 13:47
>>105
無理のない規模っていえば PL/0
でもyacc/lex使って作ったほうが楽。
110>>95:2001/06/30(土) 15:43
>っていうか、どう考えてもうちの大学だな。>1

ここまで聞くと、どうしても大学を知りたくなった。
111デフォルトの名無しさん:2001/06/30(土) 16:22
コンパイラだろうとマスだろうとすきなようにかけ。
112デフォルトの名無しさん:2001/07/10(火) 23:06
ところで、ちゃんできたんだろうか?
できなかったらどうなる?
1131:2001/07/11(水) 00:40
それらしい動作はするものの、まだ挙動不審
2,3日ほど集中してやればかなりまともに動きそうだけど、
他の試験&レポ関連で現状のままとりあえず課題は提出になりそうです。。
↓はコンパイルできた

PROGRAM EXAMPLE1;
 VAR N:INTEGER;
 FUNCTION F(N:INTEGER):INTEGER;
  VAR NN:INTEGER;
  BEGIN
   IF NN=0 THEN F:=1 ELSE F:=N*F(N-1)
  END;

 BEGIN
  FOR N:=1 TO 3 DO
   BEGIN
    CALL WRITELN;
    CALL WRITEI(F(N))
   END
 END.
114デフォルトの名無しさん:2001/07/30(月) 18:43
>>88
これって無料のWindowze用コンパイラ、lcc-winの原型?
115114:2001/07/30(月) 18:45
よく見たらリンクついてました。
でもlcc-winのソースは有料。
116デフォルトの名無しさん:2001/07/30(月) 23:34
>>113
世話になったついでにソースコード公開しとき
117デフォルトの名無しさん:2001/08/01(水) 16:42
俺の大学(情報学部)は3年になってもBASICでソートやってた。
バカばっか。
118name:2001/08/24(金) 12:39
あげ
119デフォルトの名無しさん
>>117
少なくともあなたがいるなら馬鹿ばっかりともいえないでしょう。自力でがんばれ!