[表示 : 全て 最新50 1-99 101- 201- 301- 401- 501- 601- 701- 801- 2chのread.cgiへ]
Update time : 06/07 23:41 / Filesize : 200 KB / Number-of Response : 866
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

『コンパイラ・スクリプトエンジン』 相談室 2



1 名前:nanashi de fault [02/05/12 02:05]
前スレ1より
>yaccやlexの使い方やら言語仕様やらの話題。

前スレ

【コンパイラ・スクリプトエンジン】相談室
pc.2ch.net/test/read.cgi/tech/981672957/

前スレアーカイブ(かちゅ用)
www.1me.jp/hp/prg_c-s_lab

前スレに張られたリンク + x
>>2-6

633 名前:デフォルトの名無しさん [03/04/16 23:30]
func();
という長い関数があったとして、これを
func1();
func2();
func3();
と分割するようなプログラムを作ってみたいと思ってます。

なにか参考になる情報、またはすでにそういうものがあったら教えてください。
それでは宜しくお願いします。


634 名前:デフォルトの名無しさん mailto:sage [03/04/16 23:41]
>>633
リファクタリングで検索

635 名前:デフォルトの名無しさん mailto:sage [03/04/16 23:43]
>>634
それは手作業でやるのでは?

636 名前:デフォルトの名無しさん mailto:sage [03/04/16 23:49]
>>635
おまえは一体どう分割したいのかと(ry
まさか単純にぶった切るつもりか?


637 名前:デフォルトの名無しさん [03/04/16 23:52]
単純にぶったぎりますが、ちゃんと途中経過を保存・復元する部分を付け加えたいです。


638 名前:デフォルトの名無しさん mailto:sage [03/04/17 00:11]
>>633の説明だけで何を判れと言うのか。

639 名前:デフォルトの名無しさん mailto:sage [03/04/17 00:20]
>>637
ローカル変数を全部構造体に入れてfunc()で確保、
func1(),func2(),func3()にそいつのポインタを渡してアクセス。

真面目にやるならフロー解析が必要。

640 名前:山崎渉 mailto:(^^) [03/04/17 15:16]
(^^)

641 名前:デフォルトの名無しさん [03/04/19 08:22]
荒したい策の保守あげ



642 名前:デフォルトの名無しさん mailto:sage [03/04/19 15:36]
荒らしたい 策

643 名前:山崎渉 mailto:(^^)sage [03/04/20 03:02]
   ∧_∧
  (  ^^ )< ぬるぽ(^^)

644 名前:山崎渉 mailto:(^^)sage [03/04/20 03:41]
   ∧_∧
  (  ^^ )< ぬるぽ(^^)

645 名前:デフォルトの名無しさん [03/04/23 03:52]


646 名前:棄教者 ◆egKIKYO7cg mailto:sage [03/04/24 15:18]
最近 Perl の Parse::Yapp というモジュールで遊んでいます。
Yacc の Perl 版です。
これで何かハックした神の報告を待つ。

647 名前:デフォルトの名無しさん [03/05/23 14:24]
♥ 

648 名前:名無し@沢村 [03/05/23 16:07]
おまいらよ、コンパイラをつくっただけじゃ言語はできんぞ。
リンカの解説はないか?

649 名前:デフォルトの名無しさん [03/05/23 18:15]
>>84
超遅いレスだけど、漏れも同じところで詰まっている。
P82までは何とか理解できたけど、LL(1)文法の理論説明になると急に難しくなる。
かなり前のページで定義したことが突然出てきたりするし。

コンピューター学科や数学科出身の人を前提にしているのだろう
漏れは情報学科出身ではないから読んでいてつらい・・・

しかも時間の空いているときに少しづつ読むような読み方では、前回読んだことを
覚え続けるのが困難。

650 名前:649 [03/05/23 18:26]
First集合,Follow集合,Director集合は、
ある文法がLL(1)文法かどうかを調べるためだからとりあえず読み飛ばすことにします・・・

651 名前:649 [03/05/23 18:30]
>>648
去年、"Linkers & Loaders" (John R.Levine著 ポジティブエッジ訳・オーム社)を読んだのですけど、
説明がかなり大雑把で実装レベルで直接役立てるのはちょっと無理な気がしました。



652 名前:デフォルトの名無しさん mailto:sage [03/05/23 18:31]
大したこと書いてないので、斜め読みで十分。
とにかく、実際に作ってみるのが○

653 名前:652 mailto:sage [03/05/23 18:34]
中田育男の「コンパイラ」本のことね。

654 名前:649 [03/05/23 18:48]
>>652-653
レスありがとうございます。
私は情報工学は素人なので、斜め読みするほどの能力はありませんが、
理論から導き出される結論自体はそれほど難しいとは思っていないので
なんとか最後まで読んで見ます。

655 名前:逆コンパイラ [03/05/23 20:16]
EXEファイルをC言語に戻す逆コンパイラソフトを教えてもらえませんか。

656 名前:デフォルトの名無しさん mailto:sage [03/05/23 20:22]
戻す?

657 名前:デフォルトの名無しさん mailto:sage [03/05/23 20:38]
>>655
www.itee.uq.edu.au/~cristina/dcc.html
www.backerstreet.com/rec/rec.htm

658 名前:逆コンパイラ [03/05/23 20:47]
>>657
上の一番のHPのdcc Decompiler はどこからダウンロードしますか

659 名前:デフォルトの名無しさん mailto:sage [03/05/23 22:32]
>>658
Table of Contentsの中に思いっきり「配布」という単語があるわけだが。
辞書とか翻訳サイトつかってでもContentsの一覧ぐらいは一通り嫁。

660 名前:デフォルトの名無しさん mailto:sage [03/05/26 23:13]
↓VMにも色々あるようですが、どういう方式でしょうか?
memory to memory
SICD machine
chemical abstract machine
categorical abstract machine
while-if machine

661 名前:649 [03/05/27 15:02]
中田育男氏のコンパイラを読み終わって、PL/0'のソースコードをざっと眺めていたのですが・・・
字句解析と構文解析以外は普通のプログラミングですね。
結局はyacc&lexの勉強をしろということでよろしいでつか?



662 名前:棄教者 ◆egKIKYO7cg mailto:sage [03/05/27 15:51]
>>661
そりゃ天下のGCCだって構文解析器はBisonを使って書かれているからね。


663 名前:デフォルトの名無しさん mailto:sage [03/05/27 16:02]
>>661>>662
若者ならyaccは無視してantlrをやったほうがいいでしょうか?


664 名前:649 [03/05/27 16:24]
>>663
漏れも良く分からないけどJava環境ならANTLRになるのでは?
漏れはC言語使うのでyaccが魅力的でつ

665 名前:デフォルトの名無しさん [03/05/27 16:30]
>>663
若者ならまずは手書きから始めるのが良いですよ。
言語にもよるけど、再帰的降下法はいちばん単純でわかりやすい。

パーサジェネレータを使う場合にも、一度手書きパーサを経験しておかないと
なにがなんだかわからない、という人が多いようです。


666 名前:デフォルトの名無しさん mailto:sage [03/05/27 16:46]
どうも。やってみます。ただ、23歳はもう若者じゃなかったかもしれません。

667 名前:デフォルトの名無しさん mailto:sage [03/05/27 17:52]
あっというまに

668 名前:649 [03/05/27 17:53]
>>665
手書きの経験が必要でつか?
漏れは若者じゃないからいいや・・・

669 名前:デフォルトの名無しさん mailto:sage [03/05/27 17:56]
手書きの方が速い

670 名前:デフォルトの名無しさん mailto:sage [03/05/27 18:05]
昔、手書きでCコンパイラを作るとかぶちあげて、全く後が続かず、
入院したことにして結局うやむやにした香具師がいたな。


671 名前:デフォルトの名無しさん mailto:sage [03/05/27 18:10]
ただのツール使いはヘタレ。



672 名前:名無し@沢村 [03/05/27 20:29]
おまいらよ、コンパイラは字句解析と構文解析だけではないぞ。
いいか、コンパイラはな、字句解析、構文解析、意味解析、最適化、リンカ、ローダとどれが欠けてもダメよ。わかるか?
おまいらに、コンパイラをつくる能力があるか?

673 名前:デフォルトの名無しさん mailto:sage [03/05/27 20:53]
アセンブラなら作ったことあるぞ。
コンパイラからアセンブリコード吐かせればOKだな。

674 名前:デフォルトの名無しさん mailto:sage [03/05/27 20:59]
最適化はあくまでオブションだし、ローダはOSの仕事だがなw

675 名前:デフォルトの名無しさん [03/05/27 21:14]
>>672
大半の人が作りたいのはスクリプトのコンパイラでないの?
それなら、字句解析、構文解析、意味解析だけで何とかなるのでは。

676 名前:デフォルトの名無しさん mailto:sage [03/05/27 21:30]
>スクリプトのコンパイラ
バイトコードコンパイルという意味だよね?


677 名前:デフォルトの名無しさん [03/05/27 22:40]
>>676
そうっす

678 名前:デフォルトの名無しさん [03/05/27 22:50]
リンカはリンカだろ・・

679 名前:デフォルトの名無しさん mailto:sage [03/05/27 23:07]
>>678
Delphiのよーに、コンパイラがリンクまでやってくれると便利なときがあるよ。
同じシンボルがエクスポートされた.objも、別々のユニットから{$L}で取り込めば呼び分けられるし、
リンクエラーとか名前の衝突とかも、リンカじゃなくてコンパイラのエラーになるので
原因となるソースコード上での位置がわかるし。

680 名前:デフォルトの名無しさん mailto:sage [03/05/28 05:29]
>>674
正直、最近のマシンは最適化してやらないと実力が出ないから
コンパイラ/インタプリタでの最適化は重要だし、
処理系のコード的にも非常に大きな部分を占めてるんだが。

681 名前:デフォルトの名無しさん mailto:sage [03/05/28 05:36]
>>680
追伸:
オプションなのは最適化なんてしなくていいってコトじゃなくて
様々な最適化技法がプログラムの性質によってそれぞれ有効度があり、
あまり効かなかったり却って遅くなるような場合に外したりパラメータを調節するのが目的。
(昔はデバッグを簡単にする目的もあったけど最近のデバッガは優秀だから
最適化されていてもデバッグできたりするらしいね。)



682 名前:デフォルトの名無しさん mailto:sage [03/05/28 06:00]
ほう。最近のデバッガは、最適化で消えた変数も追いかけられるようになったりするの?

683 名前:デフォルトの名無しさん mailto:sage [03/05/28 07:37]
消えたといっても、スタックローカルからレジスタに移っただけだろ? だからレジスタにある間は追いかけられる。

684 名前:デフォルトの名無しさん mailto:sage [03/05/28 10:30]
最適化について知らないなら、まず調べてから書いてください。

685 名前:デフォルトの名無しさん mailto:sage [03/05/28 11:32]
681が言ってるのはインライン展開とか実行順変更程度なら大丈夫という話
682が言ってるのは完全に消えた変数の話
683が言ってるのはレジスタ最適化の話
684が言ってるのは・・・・?

686 名前:山崎渉 mailto:(^^) [03/05/28 12:35]
     ∧_∧
ピュ.ー (  ^^ ) <これからも僕を応援して下さいね(^^)。
  =〔~∪ ̄ ̄〕
  = ◎――◎                      山崎渉

687 名前:デフォルトの名無しさん mailto:sage [03/05/28 15:24]
Compiler Design in C
www.amazon.com/exec/obidos/tg/detail/-/0131550454/
www.holub.com/software/compiler.design.in.c.html

て読破したかたいらっしゃいますか?
古すぎますかね。

688 名前:名無し@沢村 [03/05/28 16:00]
おまいら、『コンパイラ・スクリプトエンジン』について相談してみろ?

689 名前:674 mailto:sage [03/05/28 17:41]
>>680
672があまりにいいかげんなこと言っていることを踏まえての内容です。
実用性から言えば、680,681に書かれたことは誰でも認める常識かと。

690 名前:デフォルトの名無しさん mailto:sage [03/05/28 17:44]
だから沢村に関わるなとあれ程言ったのに

691 名前:デフォルトの名無しさん mailto:sage [03/05/29 00:33]
ここには↓を解説できる者はおらんのか?
memory to memory
SICD machine
chemical abstract machine
categorical abstract machine
while-if machine



692 名前:デフォルトの名無しさん mailto:sage [03/05/29 00:49]
>>691
つーかどっから拾ってきたの?論文読めよ。
名前間違ってるのもあるし。

693 名前:名無し@沢村 [03/05/29 05:08]
おまいらよ、ここで『コンパイラ・スクリプトエンジン』について知ったかで語ってるやつは多いが、
その割りには世に『コンパイラ・スクリプトエンジン』はそれほど多く出てないが…?
みんな自分だけで使ってんの?
それとも起動したと同時に終了してしまうコンソールアプリケーション?

694 名前:デフォルトの名無しさん mailto:sage [03/05/29 05:18]
自分のアプリケーション用だろ。
はじめから世に出すつもりで作っていない。

695 名前:デフォルトの名無しさん [03/05/29 07:34]
世に出してほすぃ
設計から実装まですべてさらけだしてほすぃ

696 名前:デフォルトの名無しさん mailto:sage [03/05/29 07:42]
さらけ出てるじゃない >>241 >>487


697 名前:デフォルトの名無しさん mailto:sage [03/05/29 08:49]
自分のプログラムにちょっとしたマクロを実装できたらいいなあ〜
って類がこのスレの対象だろ。

698 名前:デフォルトの名無しさん mailto:sage [03/05/29 09:53]
>>693
> それとも起動したと同時に終了してしまうコンソールアプリケーション?
こんなやつかW?

int main() {return 0;}

699 名前:デフォルトの名無しさん mailto:sage [03/05/29 14:28]
>>697
最適化に拘らないならXMLとXMLパーサーを使ってみるという選択は?
(APIはSAXでもDOMでもお好みで。)
文法の自由度は減るけど
ちょっとしたものなら自分でパーサー書くより楽だよ。

例えばmakeと同じような仕事をするANT(だったっけ?)の
プロジェクトファイル(だったっけ?)はXMLらしいぞー(じゃー、ゴボゴボゴボ)。

700 名前:デフォルトの名無しさん mailto:sage [03/05/29 14:42]
>>699続き
入力にフォーム、出力はスタイルファイル(CSSでもXSLでも)とでもすれば偽IDE環境も簡単w。

またあるいは、かつてWEB(だっけ?今文献は引越しダンボールの中なんで)という
TeX+Pascalの文芸的プログラミングに憧れた人にもXMLマークアップでプログラミング言語というのは
それなりに面白い選択かと。

701 名前:デフォルトの名無しさん mailto:sage [03/05/29 17:52]
>>699
XMLなんてクソ



702 名前:名無し@沢村 [03/05/29 18:53]
>>698
コンソールアプリケーションって、たいがい起動したと同時に終了するだろ?

703 名前:名無し@沢村 [03/05/29 18:56]
>>698
てか、コンソールアプリケーションって、一応処理はするんだが、起動して処理をして終了までが、あっという間だから、起動したと同時に終了するように見えるんだな。

704 名前:デフォルトの名無しさん mailto:sage [03/05/29 19:25]
名無し@沢村はどんな『コンパイラ・スクリプトエンジン』を作っているのかな?

705 名前:デフォルトの名無しさん mailto:sage [03/05/29 19:43]
>>701
何故ぇ?w

706 名前:デフォルトの名無しさん mailto:sage [03/05/29 19:47]
>>702-703
( ´_ゝ`)


707 名前:デフォルトの名無しさん mailto:sage [03/05/29 20:58]
>>699
素から書いたら面倒だけどyacc/lexとかツール使うと工数はxmlと殆ど変わらないと思うけど。
むしろ切り出した後のエラーチェックとか加工とかがxmlだと面倒だなぁとか感じたりするんですけど。


708 名前:名無し@沢村 [03/05/29 21:01]
>>704
おれは、起動、コンパイル、実行、終了までが一瞬のうちに終わるスクリプト言語をつくったよ。
コンソールアプリケーションでね。

709 名前:デフォルトの名無しさん mailto:sage [03/05/29 21:03]
>>708
int main() {return 0;}
が実行できるスクリプトか?
すばらしい(藁)

710 名前:デフォルトの名無しさん mailto:sage [03/05/29 21:18]
Parrotでいいじゃんよ

711 名前:デフォルトの名無しさん mailto:sage [03/05/29 21:59]
>>707
エラーチェックはXML Schema + 検証機能つきパーサで。
切り出し&加工はDOMでやれば楽かも。

書ける言語がXML整形式の範囲に縛られるわけだから
なにがなんでもXMLとは思わないけど、文書としても利用されるような
宣言的なスクリプト(例えばモジュールの依存関係を記述するメイク・ファイルや
プロジェクトファイルみたいなのとか、環境設定とか、各種ポリシーの記述とか、
各種シーンの記述とか…。)にはいいかなと。

私自身はとあるTRPGのシナリオを記述する言語につかえる
語彙(XML世界におけるマークアップ文法のライブラリ)を
趣味で書いてみているところ。実行系はたぶんJavaで書くと思うけど。



712 名前:デフォルトの名無しさん mailto:sage [03/05/30 07:31]
行単位、スペース区切りでいいじゃん。


713 名前:デフォルトの名無しさん [03/05/30 10:57]
>>712
確かにそれが一番便利w
設定ファイルの読み込みや簡単なスクリプトでバッチ処理するときは最強。
しかし、より高機能なものを求めてコンパイラが欲しいのだから
そのような提案は無意味

714 名前:フォールトの名無しさん [03/05/30 11:33]
オブジェクト指向言語を作ってみたいのですが、良い教科書など
無いでしょうか?

一応、ドシロウトではなくて、括弧の使える四則演算電卓を作った
実績があります(C言語を用いて3ヶ月ほどで開発しました)。

その辺を踏まえて、オブジェクト指向言語の実装に関する、標準的
な書籍なりペーパーなりを紹介していただけないでしょうか?

また、このような自作言語に継続的な利用者が現れることを期待
するのですが、どのような場で、どの程度の進捗状況で発表すれ
ば良いのか見当がつきません。

成功した開発プロジェクトの実施スキームについて紹介していた
だけないでしょうか?

せっかく開発する予定の言語なので、できれば世界中の開発者に
使ってもらいたい、プログラミングの概念を根底から覆す提案を
したい、と言うのが私の願いです。


715 名前:デフォルトの名無しさん mailto:sage [03/05/30 12:06]
夢が大きくていいけどさ、まずは凝った作りじゃなくて、
もっと単純なコンパイラを練習として作ってみたら?
それならこのスレに情報もたくさんあるし。

716 名前:デフォルトの名無しさん mailto:sage [03/05/30 12:09]
>>714
がんがれ!!

717 名前:デフォルトの名無しさん mailto:sage [03/05/30 12:39]
>>714
Tiger本じゃだめ?

718 名前:フォールトの名無しさん [03/05/30 13:05]
>>717
>Tiger本じゃだめ?
ISBNコードわかります?


719 名前:デフォルトの名無しさん mailto:sage [03/05/30 13:13]
>>714
www.ruby-lang.org/ja/
ソース嫁

720 名前:フォールトの名無しさん [03/05/30 13:25]
>>717
Webで検索したらそれらしい本「ISBN 0-521-58388-8」
が見つかりましたが、洋書のため書店での入手が難しく、
あきらめざる得ません(トイレで読むのに丁度よさそうな
レベルの本なのに残念です)。

日本で入手容易な、翻訳本など無いでしょうか?

>>719
このプロジェクトが終了してからじっくり読んでみたいと
思います。


721 名前:デフォルトの名無しさん mailto:sage [03/05/30 13:35]
>プログラミングの概念を根底から覆す提案
って何かな?別にプログラミング言語でなくても、日本語でも表現できるはず。



722 名前:デフォルトの名無しさん mailto:sage [03/05/30 14:50]
>>718
著者のページ:
www.cs.princeton.edu/~appel/modern/

723 名前:デフォルトの名無しさん mailto:sage [03/05/30 14:52]
>>721
ま、そりゃそうだが、コードで語るってのもカコイイ


・・・かも知れないw。

724 名前:フォールトの名無しさん [03/05/30 16:32]
>>721

>>プログラミングの概念を根底から覆す提案
>って何かな?別にプログラミング言語でなくても、日本語でも表現できるはず。

まるで、具体的な計画を持たない香具師のように聞こえてしまう
じゃないか(はぁ)。。。この場で核心となるアイディアや
技術を披露するのは、未だ一寸早いと思う。私の考えに基づいた
言語仕様や実装方法が世間に受け入れられるためには、この
パラダイムギャップを埋めるための下地が不充分です。


725 名前:_ mailto:sage [03/05/30 16:33]
homepage.mac.com/hiroyuki43/hankaku06.html

726 名前:デフォルトの名無しさん mailto:sage [03/05/30 16:40]
>>724
と思うなら、まずプロトタイプでも作ってみるしかないんじゃないか。

727 名前:デフォルトの名無しさん mailto:sage [03/05/30 20:28]
>>724
どうせ、他に誰か1000人くらいは考えたことがある案だから気にするな。

728 名前:デフォルトの名無しさん mailto:sage [03/05/31 01:55]
FPGAの発想を応用して、VMを高速化

729 名前:デフォルトの名無しさん [03/05/31 18:20]
『システムソフトウェアプログラミング ― コンパイラの設計法と並行処理の基礎』
                         デイビッド クラーク (著)
ってのもあるぞ。個人的にはお世話になりました。

730 名前:デフォルトの名無しさん mailto:sage [03/05/31 18:24]
>>728
PS3

731 名前:ろうひ男爵 mailto:sage [03/06/05 02:06]
>>721
自分的には、
今後はHTのおかげで、ディスクトップレベルででも
16CPU(物理的ではなくね)とか実装される

その後、256CPUとか実装されて、
ソフトウェアによって4CPUとか使われるようになる。

オブジェクト指向でつくられたプログラムで、
オブジェクト単位でCPUが割り振られるとか。
(すでにやってそうですね)



732 名前:デフォルトの名無しさん mailto:sage [03/06/05 10:05]
>>731
> オブジェクト指向でつくられたプログラムで、
> オブジェクト単位でCPUが割り振られるとか。
CPU間のスイッチが多すぎて激しく遅くなりそうな。

733 名前:ろうひ男爵 mailto:sage [03/06/05 12:17]
>>732
メモリーもシェアメモリー部分だけ共有で、
1CPUあたり1GB位ずつ個別に持ってたりとか。
これ以上はすれ違いですね。スミマセン






[ 続きを読む ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧]( ´∀`)<200KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef