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


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

「コンパイラ・スクリプトエンジン」相談室4



1 名前:デフォルトの名無しさん mailto:sage [04/11/10 23:30:50]
言語仕様や処理系の話題に関するスレッドです。

字句解析・構文解析から,データフロー解析,ループ並列化,タスク並列化,SSA変換,CPS変換,
レジスタ割付,命令スケジューリング,ソフトウェアパイプライン等各種最適化,それに
VM,GC,JIT,リンク時最適化,動的バイナリ変換などなど。

前スレ
1 pc.2ch.net/tech/kako/981/981672957.html
2 pc2.2ch.net/test/read.cgi/tech/1021136715/ (dat落ち)
3 pc5.2ch.net/test/read.cgi/tech/1070089173/ (前スレ)

関連リンクは多分 >>2-10 あたり

763 名前:デフォルトの名無しさん mailto:sage [05/01/03 11:29:03]
>>760
やっぱ、やるならjavaのVMでつか?

764 名前:デフォルトの名無しさん mailto:sage [05/01/03 16:44:26]
どういう目的でVMの勉強したいのかわからんが
とりあえずJavaが無難じゃない?

765 名前:デフォルトの名無しさん mailto:sage [05/01/03 17:25:44]
いきなりJVMやるならアセンブラでも覚えたほうがいい

766 名前:デフォルトの名無しさん mailto:sage [05/01/03 17:44:32]
ここはやるスレじゃなくて作るスレなんで

767 名前:デフォルトの名無しさん mailto:sage [05/01/03 18:22:40]
作る前にやらんと意味わからん

768 名前:デフォルトの名無しさん mailto:sage [05/01/03 18:23:39]
そらそうだ

769 名前:デフォルトの名無しさん mailto:sage [05/01/03 18:30:47]
ここは作るスレじゃなくて相談室なんで

770 名前:デフォルトの名無しさん mailto:sage [05/01/03 19:58:29]
おまいら会話がエロすぎます。

771 名前:デフォルトの名無しさん mailto:sage [05/01/03 21:26:12]
作っちゃった時の相談もここ?



772 名前:デフォルトの名無しさん [05/01/04 01:09:27]
VBやDelphiなどの言語のコンパイラを
勝手に作ったら特許とかに引っかかりますかね?

773 名前:デフォルトの名無しさん mailto:sage [05/01/04 01:10:53]
>>772
先ず作ってから心配しろ。


774 名前:デフォルトの名無しさん mailto:sage [05/01/04 01:11:52]
>>773
作った後に駄目だったらキツイでしょ?

775 名前:デフォルトの名無しさん mailto:sage [05/01/04 01:29:06]
>>772
A.言語仕様自体は特許にならないから大丈夫。

ただし、付属しているライブラリは特許・著作権で保護されるので
そっちの回避法を考えておかないと駄目。

776 名前:デフォルトの名無しさん [05/01/04 01:37:27]
質問です。
コンパイラ本に良く載ってる実行時環境(スタックマシンとかレジスタマシンとか)っていうのは
何のためにあるんですか?最適化をしやすくするため?
実行時環境とか用意しなくても直接構文木を記号表と照らし合わせながら
実行コードに変換していく様な事はできないんですか?

777 名前:デフォルトの名無しさん mailto:sage [05/01/04 02:16:26]
↑自己解決しました。勘違いでした。

778 名前:デフォルトの名無しさん [05/01/04 02:23:09]
HSPくらいの言語なら簡単に作れますか?

779 名前:デフォルトの名無しさん mailto:sage [05/01/04 02:24:06]
>>778
あなたには無理です

780 名前:デフォルトの名無しさん mailto:sage [05/01/04 02:24:16]
最適化をあまり気にしなければ。

781 名前:デフォルトの名無しさん mailto:sage [05/01/04 02:26:11]
>>776
ただ単純に説明を楽にするためじゃないの?
「勘違いでした」って何を?



782 名前:デフォルトの名無しさん mailto:sage [05/01/04 06:04:48]
>>781
仮想マシンのスタックマシンと、CとかPascalのスタックベースメモリ割り当てを勘違いしてました。

783 名前:デフォルトの名無しさん mailto:sage [05/01/04 11:38:53]
>>775
ありがとうございます。
とりあえず勉強を兼ねてVBコンパイラ作ってみます。

784 名前:デフォルトの名無しさん mailto:sage [05/01/04 16:17:36]
LSI C-86 試食版
で、コンパイラをつくってみよ〜

785 名前:デフォルトの名無しさん [05/01/04 20:40:08]
質問させていただきます。
bnfを使って出来ることって字句解析、構文解析までですよね?
意味解析、中間コード生成までを定義できるようなbnfにしたいのですが、
そのような拡張がされたbnfの構文というのはあるのでしょうか?

786 名前:デフォルトの名無しさん mailto:sage [05/01/04 20:54:45]
>>785
とりあえず属性文法を学ぶのが良いと思う。


787 名前:デフォルトの名無しさん mailto:sage [05/01/04 21:31:27]
>>785
わりと参考になった本を紹介しときます。(関係者じゃないですよ、念のため。)
www.amazon.co.jp/exec/obidos/ASIN/4320027981/249-0278157-3285121

788 名前:デフォルトの名無しさん mailto:sage [05/01/04 21:57:33]
Rie 属性文法
ftp://ftp.is.titech.ac.jp/pub/Rie/


789 名前:デフォルトの名無しさん mailto:sage [05/01/05 05:27:11]
なるほど属性文法ですか。
手元の本でちょっと調べてみましたが
意味解析以降は格段に難易度上がりますね。
ちょー難い!

790 名前:デフォルトの名無しさん mailto:sage [05/01/05 06:15:19]
属性文法(((( ;゚Д゚)))

791 名前:デフォルトの名無しさん mailto:sage [05/01/05 22:42:48]
普通は、構文解析以降は手書きじゃ???



792 名前:デフォルトの名無しさん mailto:sage [05/01/05 22:57:49]
何が普通なんだか…

793 名前:デフォルトの名無しさん mailto:sage [05/01/05 23:24:54]
>>791
つまり、bnfのような定義ファイルにはできないってこと?

794 名前:デフォルトの名無しさん mailto:sage [05/01/05 23:33:32]
すぐ上にあんじゃねーか

795 名前:デフォルトの名無しさん [05/01/05 23:45:45]
YACCに限界を感じて、そろそろというプロジェクトはいくつかあるが、
パーサ手書きというのは、実用的なソフトではほとんどナイ。


796 名前:デフォルトの名無しさん mailto:sage [05/01/05 23:55:10]
>>794
属性文法の書式を例を踏まえて教えれ。

797 名前:デフォルトの名無しさん mailto:sage [05/01/06 00:05:13]
>>795
最近のgccは手書き。
次期rubyも手書きの予定。

798 名前:デフォルトの名無しさん mailto:sage [05/01/06 00:16:18]
>>794
ftp://ftp.is.titech.ac.jp/pub/Rie/more-examples/pascal-S/pascal-S.rie

799 名前:デフォルトの名無しさん mailto:sage [05/01/06 00:39:55]
属性文法使ってる処理系なんて聞いたことないぞ。
lexやyaccまでなら聞くけど。
構文解析以降は手書きじゃないか?

800 名前:デフォルトの名無しさん mailto:sage [05/01/06 00:48:02]
日本語の不自由な方がおらっしゃられるようです

801 名前:デフォルトの名無しさん mailto:sage [05/01/06 01:02:19]
Rieくらいは聞いたことあるんじゃないか?市販の製品に使われたって
言うのは聞かないけれども。



802 名前:デフォルトの名無しさん mailto:sage [05/01/06 01:04:04]
藻前らはコンパイラ作って市販するつもりなのか?

803 名前:デフォルトの名無しさん mailto:sage [05/01/06 01:05:07]
コンパイラ屋くらいだろうな、そんなことするの。

804 名前:デフォルトの名無しさん mailto:sage [05/01/06 01:05:50]
理恵タソ(;´Д`)ハァハァ

805 名前:デフォルトの名無しさん mailto:sage [05/01/06 08:04:07]
現場ではどうなのかわからないけれども、最適化ステージと
コードジェネレータを全部手書きってのは無いんじゃないかなあ。

最適化とコードジェネレーションについては、
Muchnick: Advanced Compiler Design & Implementation,
Morgan Kaufmann, 1997 が実践的で参考になった。


806 名前:デフォルトの名無しさん mailto:sage [05/01/06 09:29:25]
カウフマンつーとサイレントヒルだな
医者。仮眠明けで起きると誰も居ないでモンスターだらけと説明。

807 名前:デフォルトの名無しさん mailto:sage [05/01/06 10:46:42]
コンパイラ作る時のお勧めの中間コードは何ですか?

808 名前:デフォルトの名無しさん mailto:sage [05/01/06 11:00:29]
中間コード?
1パスにそんなもん必要ない

809 名前:デフォルトの名無しさん mailto:sage [05/01/06 11:04:20]
1パスでレジスタ割り当てとかの最適化まで出来るのですか?

810 名前:デフォルトの名無しさん mailto:sage [05/01/06 14:17:14]
どんな最適化を実装するつもりか自分でわかっているなら、
おのずと適切な中間コードもわかるはず。それが分かっていない
>>807にはどうせ非最適化コンパイラも作れない罠。

811 名前:デフォルトの名無しさん [05/01/06 22:54:47]
上の張ってある書籍ですが、読む順番はあるんですか?
ちなみに私は、Cをはじめてまだ1ヶ月です。



812 名前:デフォルトの名無しさん mailto:sage [05/01/06 22:56:16]
>>811
プログラミングを初めて1ヶ月?

813 名前:デフォルトの名無しさん mailto:sage [05/01/06 22:57:10]
先にCを完全にマスターして下さい。
どの本も何らかのプログラミング言語をマスターしている事を前提に書かれてます。

814 名前:デフォルトの名無しさん [05/01/06 23:15:09]
Cマガでコンパイラの特集が組まれてたのって何年何月号だか
ご存知の方いらっしゃいますか?

815 名前:デフォルトの名無しさん [05/01/06 23:33:05]
>812
そうです。

>813
マスターですか。。。。
K&Rがスラスラ読めるレベルでしょうか?
頑張ります。



816 名前:デフォルトの名無しさん mailto:sage [05/01/06 23:44:02]
>>814
手持ちでは…2003年8月号に
「コンパイラの仕組みを理解しよう」って特集があるけど、
そこまで突っ込んでは書いてない。

817 名前:デフォルトの名無しさん mailto:sage [05/01/07 00:05:22]
>>816
情報ありがとうございます。
私の手持ちで2003年1月号に「コンパイラの作成」
というそのものズバリの物がありました。

818 名前:デフォルトの名無しさん mailto:sage [05/01/07 00:07:54]
>>817
見事にその号が抜けてる orz
どのあたりまで書いてありますか?

819 名前:デフォルトの名無しさん mailto:sage [05/01/07 00:52:08]
Cマガの特集レベルなんてたかが知れてる
昔のインターフェース誌は濃かったなあ

820 名前:デフォルトの名無しさん mailto:sage [05/01/07 00:55:04]
インターフェースもCマガみたくバックナンバーをPDFにして売ってくれたりしないのかなぁ

821 名前:デフォルトの名無しさん mailto:sage [05/01/07 01:02:21]
>>820
しているじゃないか。



822 名前:デフォルトの名無しさん mailto:sage [05/01/07 01:12:37]
>>821
うお、知らなかった…_| ̄|○
01年までですか…。90年代のやつがもう一度読みたいんだけどなぁ

823 名前:デフォルトの名無しさん mailto:sage [05/01/07 12:44:16]
>>818
字句解析、構文解析、意味解析、コード生成までが
非常に分かりやすく書かれてます。
20ページくらいでソース付きです。

824 名前:デフォルトの名無しさん mailto:sage [05/01/07 14:43:10]
>822
ttp://www.sbpnet.jp/shop/art.asp?newsid=1403

825 名前:824 mailto:sage [05/01/07 14:44:52]
ごめん、インタフェースも、か。読み間違えた。

826 名前:デフォルトの名無しさん mailto:sage [05/01/07 17:31:22]
www.csg.is.titech.ac.jp/~chiba/lecture/os/index.html

827 名前:デフォルトの名無しさん [05/01/08 03:28:16]
●プログラミング言語処理系 岩波講座 ソフトウェア科学〈5〉 佐々 政孝
上記の本を買おうと思ったら、中身パスカルだったぞ。
他のコンパイラの本もパスカル+Cって内容だった。

Cのみの本はないのか?

828 名前:デフォルトの名無しさん mailto:sage [05/01/08 03:32:21]
>>827
その本俺も持ってるし、俺はCしか書けないけど、大体読めるから自分で
書き直せるっしょ。元々そういう意図があるから複数の言語で書いてないん
じゃないの?

829 名前:デフォルトの名無しさん mailto:sage [05/01/08 07:40:38]
>827
なぜCのみである必要が?
パスカルのみでも読めるでしょ
逆に読めないなら問題

830 名前:デフォルトの名無しさん mailto:sage [05/01/08 16:25:31]
今の人には読めない読めない
無理も無い
パシカル本は今の本屋にどこにも置いてないからね
もしCより簡単だと言われても敬遠するだろう
パスカルで書かれているという事は大抵古い本で、
ポインタ記法とか本ごとに違ってたりするし
構文なのか演算子なのかわからない物もある
.の置き方に一貫性ないし
読んでもただ、混乱するだけである

831 名前:デフォルトの名無しさん mailto:sage [05/01/08 16:31:00]
Pascalの方が綺麗でしょ。
Cみたいにメモリ周りの汚さはなくて、純粋にアルゴリズムを記述しやすい。



832 名前:デフォルトの名無しさん mailto:sage [05/01/08 16:39:23]
綺麗・汚いの話をしてるわけではない


833 名前:デフォルトの名無しさん mailto:sage [05/01/08 16:43:55]
>>832
綺麗なら読みやすいだろう。
言語を覚えるコストよりもソースを読み解いたり書いたりするコストの方が遥かに高い。

834 名前:デフォルトの名無しさん mailto:sage [05/01/08 17:13:11]
読みやすさの話をしてるわけではない
綺麗ならSchemeの方が良い

835 名前:デフォルトの名無しさん mailto:sage [05/01/08 17:17:09]
>>834
では何の話なの?わかりやすく教えて。

836 名前:デフォルトの名無しさん mailto:sage [05/01/08 17:18:18]
本がないという理由なら、WEB上のリソースでも十分だけど。

837 名前:デフォルトの名無しさん mailto:sage [05/01/08 17:32:26]
なぞなぞです

838 名前:デフォルトの名無しさん mailto:sage [05/01/08 17:36:59]
>>834
関数型言語と手続き型言語では、さすがにプログラミングの定石からして
全く違うだろ。

記法が書籍毎に異なるなんてのは、良くある話。コンパイラ系の書籍だと
BNF 記法が良く出てくるが、あれも書籍毎に微妙に違ったりするし。その
あたりを自分で吸収できないようだと、専門書と取り組むのは難しい。

839 名前:デフォルトの名無しさん mailto:sage [05/01/08 18:10:28]
記法が多少違うなんてのはコンピュータに限らず、
大学で勉強すれば大抵でくわす話。


840 名前:デフォルトの名無しさん mailto:sage [05/01/09 09:13:32]
>>829
それはあんたはすでにパスカルを知っているから。
またはあんたが十分かしこいから。
よのなかの人間はあんたほど賢くないんだよ。

>>830
はげどう。
Javaが広まった理由のひとつが、「CやC++と見た目が似てるから」。
そのくらい、自分の知ってる言語に似ているかどうかは重要。かしこくない人間にとっては。


841 名前:デフォルトの名無しさん mailto:sage [05/01/09 09:53:52]
pascalライクな擬似コードくらい読めるだろ普通。
ま、おまいが読めなかったとしても
CSを志すような人間は大抵おまいより賢いから心配ご無用。
少なくともそんなつまらん理由で萎縮しない程度にはな。




842 名前:デフォルトの名無しさん mailto:sage [05/01/09 10:25:49]
>>840のように賢くない人間はコンパイラなんか書くなということだな。

843 名前:デフォルトの名無しさん mailto:sage [05/01/09 10:43:32]
大丈夫、そんな人間に自力でコンパイラなんて書けない。
時間の無駄を省けていいじゃん。
大学入試の足切りみたいなもんだと思え(入ったってついてけない奴もいるが)。


844 名前:デフォルトの名無しさん mailto:sage [05/01/09 11:46:44]
真面目な話の途中で申し訳ないんだけど、parrot って結構良いね。
これをターゲットにコンパイラ書いたら面白そう(楽出来そう)。

www.parrotcode.org/docs/

845 名前:デフォルトの名無しさん mailto:sage [05/01/09 11:50:24]
Javaの二番煎じ

846 名前:デフォルトの名無しさん mailto:sage [05/01/09 11:59:39]
JVM や CLR の系列だろうけど、ベンダーフリーでライセンスも緩いから使い易いと思う。

847 名前:デフォルトの名無しさん mailto:sage [05/01/09 12:31:33]
結構早いしな

848 名前:デフォルトの名無しさん mailto:sage [05/01/09 12:34:28]
てかParrot自体はちゃんと動くのか?
作ってもParrotのバグのせいでまともに動かなかったら悲しいぞ。

849 名前:デフォルトの名無しさん mailto:sage [05/01/09 13:31:32]
Ruby >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> Parrot
でかい顔するなぼけ
糞ぺrぇrはしね

850 名前:デフォルトの名無しさん [05/01/09 20:42:58]
字句解析でコードをトークン列にする際に、
if、forなどのキーワードは「keyword」という大きな
括りにするのと、それぞれ「keyword_if」、「keyword_for」
などのように細かく分けるのとどちらがよろしいでしょうか?

851 名前:デフォルトの名無しさん mailto:sage [05/01/09 20:49:53]
構文解析で必要な方。




852 名前:デフォルトの名無しさん mailto:sage [05/01/09 21:45:12]
>>850
作りたい言語似よるが、C や Pascal ライクな言語を作りたければ
後者の方が楽。

853 名前:デフォルトの名無しさん [05/01/10 02:02:26]
洗練されたPerl: Perl 6文法と正規表現
www-6.ibm.com/jp/developerworks/linux/041203/j_l-cpregex.html

854 名前:デフォルトの名無しさん [05/01/10 02:08:04]
Win32コンソール形式の実行ファイルを作りたいのですが
参考になるページはありませんか?
A := B + C
GOTO(L)
のような3番地文の中間コード形式の出力までは出来ています。

855 名前:デフォルトの名無しさん mailto:sage [05/01/10 02:39:22]
>>854
>>826

856 名前:デフォルトの名無しさん [05/01/10 09:03:09]
>854
x86ならnasmのinfoやIntelのwebサイト、
exeならPE形式、
実際の実装方法はgccのソース
を見ろよ

857 名前:デフォルトの名無しさん [05/01/10 23:52:39]
スモールコンパイラ買って着た。
結構美人


858 名前:デフォルトの名無しさん mailto:sage [05/01/11 19:31:43]
オライリyacc本が初売り在庫処分で100円だったので買ってしまった。
かなりすすけてるよ(´・ω・`)
読んでみますか。

859 名前:デフォルトの名無しさん mailto:sage [05/01/11 23:06:22]
ほ、欲しかった

860 名前:デフォルトの名無しさん [05/01/13 20:23:21]
構文解析ではよく構文木を作るって言うけど、
プログラムのデータとしてはどのように持てばいいのでしょうか?

861 名前:デフォルトの名無しさん mailto:sage [05/01/13 20:36:53]
リスト(木のノードも含む)とか配列じゃないかね。
LISPの場合はコードがそのまんま構文木なんだよな。
LISPに慣れてるならLISPと同じ構造を目指すとよい。
でもLISPのセルは普通の言語だとGCないから扱いにくい。




862 名前:デフォルトの名無しさん mailto:sage [05/01/13 20:48:38]
a = (b[0] + 2) * 3;

だったら、

       root
       |
      assign
      /  \
      a    |
          mul
         /  \
        |    3
        add
       /  \
      |    1
      |
      array_ref
     /  \
     b    0

LISPのS式で表現すると
(assign a (mul (add (array_ref b 0) 1) 3))
S式は木のデバッグに都合がいい
gccの内部表現もそうだったかと

863 名前:デフォルトの名無しさん mailto:sage [05/01/13 20:52:15]
型やシンボルの属性情報はどうしてます?







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

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

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