- 1 名前:デフォルトの名無しさん [2005/12/20(火) 21:43:02 ]
- プログラミング言語処理系の開発に興味のある人達のスレッドです。
字句解析・構文解析から,データフロー解析,ループ並列化,データ分散,SSA変換, CPS変換,レジスタ割付,命令スケジューリング,ソフトウェアパイプライン, SIMD命令生成,VLIW向けクラスタリング,スクラッチメモリ向け最適化,リンク時最適化, JIT,動的バイナリ変換等の各種最適化,それにVM,GC,低消費電力化などなど。 意味論に関する話題も歓迎です。 過去スレ 1 pc.2ch.net/tech/kako/981/981672957.html 2 pc2.2ch.net/test/read.cgi/tech/1021136715/ 3 pc5.2ch.net/test/read.cgi/tech/1070089173/ 4 pc5.2ch.net/test/read.cgi/tech/1100097050/ 5 pc8.2ch.net/test/read.cgi/tech/1106129164/ 6 pc8.2ch.net/test/read.cgi/tech/1115335709/ 7 pc8.2ch.net/test/read.cgi/tech/1129287390/ 8 pc8.2ch.net/test/read.cgi/tech/1131273918/ 関連リンクは多分 >>2-10 あたり
- 799 名前:デフォルトの名無しさん mailto:sage [2006/03/31(金) 23:42:34 ]
- むむ、アセンブラですか!
orz
- 800 名前:デフォルトの名無しさん mailto:sage [2006/03/32(土) 00:22:44 ]
- いや、単なる例として出しただけだから...
- 801 名前:デフォルトの名無しさん mailto:sage [2006/03/32(土) 02:40:22 ]
- 引数の積み上げ方と呼出し後の処置さえ合ってればいんだから
簡単だろ
- 802 名前:デフォルトの名無しさん mailto:3/32 [2006/03/32(土) 06:02:31 ]
- >>796
規則を増やして左再帰を消去して左括り出しするとか地道な方法しかなさそう(自動化するツールもあるのかな?)。 それで衝突が起こるならその文法がそもそもLLじゃない可能性もあるので、文法自体を修正する。 ちなみにLL文法ってLALR文法のサブセットだっけ? LL(∞)⊂LR(1)は確かだったと思うけど、LR(0)は微妙だったような気が。 誰か教えて。
- 803 名前:デフォルトの名無しさん mailto:sage [2006/03/32(土) 14:03:32 ]
- >>790,799
その言語のソースを読んでみようとは思わないのかな。 xyzzyのdefine-dll-entryとかRubyのdlモジュールはC++/Cだった。
- 804 名前:デフォルトの名無しさん [2006/04/03(月) 21:46:49 ]
- コンパイラを書くのにオススメな言語を教えてください。
最近は、海外では関数型言語で書くのがはやっているみたいですが・・・ OCamlとか。 自分の一番慣れている言語!というのはなしの方向で。
- 805 名前:デフォルトの名無しさん mailto:sage [2006/04/03(月) 23:54:21 ]
- >>804
yaccがあるからC! とか、JavaCCがあるからJava! ってのもなしの方向で?
- 806 名前:デフォルトの名無しさん mailto:sage [2006/04/03(月) 23:57:15 ]
- ある程度以上メヂャーな言語なら、hogeCCの類いは存在するからねえ。
- 807 名前:デフォルトの名無しさん mailto:sage [2006/04/03(月) 23:58:13 ]
- >>804
自分で作った言語でコンパイラ書くのがおすすめ
- 808 名前:デフォルトの名無しさん mailto:sage [2006/04/04(火) 00:26:28 ]
- 誰も使わないけどな。
- 809 名前:デフォルトの名無しさん mailto:sage [2006/04/04(火) 00:46:06 ]
- elisp みたいな組み込み言語にすればオケ
emacs 程の神アプリじゃなくても、ちょっと気の利いたツールの拡張言語にすれば それなりにユーザを獲得出来るんじゃない。
- 810 名前:デフォルトの名無しさん mailto:sage [2006/04/04(火) 00:59:31 ]
- そういえば、情報処理学会の会誌でコンパイラの連載始まるみたいね。
COINS使うらしい。
- 811 名前:デフォルトの名無しさん mailto:sage [2006/04/04(火) 01:17:00 ]
- >>809
設計思想による
- 812 名前:デフォルトの名無しさん [2006/04/04(火) 01:28:00 ]
- >>807
そこまでいければ苦労しないw と思ったけど、それもいいな。 GCCみたいに、最初はどこでもコンパイルできるミニマムなCでコンパイラを生成して、 そのコンパイラで自分自身をまたコンパイルして・・・と。 そういえば、マルチプラットフォームなコンパイラつくりたいと思ったら、 やっぱり、GCCのフロントエンド作るのが正解なんかね。 最初見たとき、中間言語がわけわかめだった。 他に方法ないすか?
- 813 名前:デフォルトの名無しさん mailto:sage [2006/04/04(火) 08:29:54 ]
- >>812
>他に方法ないすか? お前の知能じゃドレもムリ。 大人しくHSP使ってろ
- 814 名前:デフォルトの名無しさん mailto:sage [2006/04/04(火) 11:20:41 ]
- HSPならできるんですか?
- 815 名前:デフォルトの名無しさん mailto:sage [2006/04/04(火) 15:35:54 ]
- つまり、HSP最強
- 816 名前:デフォルトの名無しさん mailto:sage [2006/04/04(火) 17:24:17 ]
- はいはいわろすわろす
- 817 名前:デフォルトの名無しさん mailto:sage [2006/04/04(火) 18:56:18 ]
- >810
COINSはいつJavaに対応するのでしょうか? 図には書かれているのに…
- 818 名前:デフォルトの名無しさん mailto:sage [2006/04/05(水) 13:09:14 ]
- >>817
一応あるみたい。 www.coins-project.org/COINSdoc/frontend/index.html#i-5-1-3 これ以上まともにJavaに対応することには、 苦労に見合うだけの学術的な意味がないからなあ。
- 819 名前:デフォルトの名無しさん mailto:sage [2006/04/05(水) 18:50:53 ]
- >818
> Javaのフロントエンドは以下の方針で開発しているが、デバッグ中であるので、 > リリース版にはまだ入っていない。 だから公開はされてないんですね。いつからデバッグしてるのかちょっと不安…
- 820 名前:デフォルトの名無しさん [2006/04/11(火) 18:25:41 ]
- >>818
参考になります。 ただ、自分の目指しているのは型なし&プロトタイプ指向ですので、やっぱりちょっと ポイントが違うようですね。まあ、その違いを見るのも楽しいですが。
- 821 名前:デフォルトの名無しさん mailto:sage [2006/04/11(火) 18:54:36 ]
- なぜ>383
- 822 名前:デフォルトの名無しさん mailto:sage [2006/04/16(日) 21:51:35 ]
- どこかにJavaでかかれたCの処理系とかない?
自分で作ろうかと思ってるんだけど、結構大変そうだし。 自作するならSableCCあたりで作ろうと思ってる。 ASTを作るまでは楽だろうけど、その後が...。
- 823 名前:デフォルトの名無しさん mailto:sage [2006/04/17(月) 01:13:49 ]
- www.coins-project.org/
- 824 名前:デフォルトの名無しさん mailto:sage [2006/04/17(月) 12:07:17 ]
- >>823
どうもありがとう。学習支援用にインタープリタでも作ろうかと思って。
- 825 名前:デフォルトの名無しさん mailto:sage [2006/04/17(月) 20:22:45 ]
- >>823
情報処理学会誌、今日家に届いたよ。
- 826 名前:デフォルトの名無しさん mailto:sage [2006/04/17(月) 21:48:30 ]
- >>825
家にも来た。 情処会員相手ということで 初心者本や教科書なら必要な噛み砕いた説明がないから 読むほうとしては面白いことだけさらっと読めていいね。 3月までの連載は www.ipsj.or.jp/07editj/promenade/index.html で見れるから、コンパイラの連載も誰でもダウンロードできるようになるかもね。
- 827 名前:デフォルトの名無しさん mailto:sage [2006/04/17(月) 22:43:38 ]
- 学会誌見るまでCOINSなんて知らなかった。
- 828 名前:デフォルトの名無しさん mailto:sage [2006/04/18(火) 12:14:03 ]
- >>822
構文解析だけなら、JavaCCやANTLRなら有志によってCの文法定義ファイルが用意されている。 Cだけじゃなくて、JavaやXMLも用意されている。 JavaCCやANTLRのサイトをのぞいてみて。
- 829 名前:デフォルトの名無しさん mailto:sage [2006/04/18(火) 12:26:48 ]
- どんなに遅くてもいいから、実装まで作った処理系のサンプルがほしい
- 830 名前:デフォルトの名無しさん mailto:sage [2006/04/18(火) 14:23:00 ]
- >>828
感謝。実はSableCC用のgrammarを発見しました。 あとはASTを上からなめるようなものを書けばいいと思う。 あとプリプロセッサがないから手で書くか、IPAのを借りようかと思う。 >>829 完成したらソース公開するから期待しないで待ってて。 Javaで作るつもり。ライブラリはアドオン形式で。 C89も結構複雑だよねぇ。これがC99になったらと思うと・・・。
- 831 名前:デフォルトの名無しさん mailto:sage [2006/04/18(火) 14:31:21 ]
- 今公式サイト見たけどCOINSって錚々たるメンバー参加してるんだね。
国内のコンパイラの書籍で見かける人ばっかり・・・。
- 832 名前:デフォルトの名無しさん mailto:sage [2006/04/18(火) 15:45:54 ]
- >>830
それを言うならC++0xになったらと思うと…
- 833 名前:デフォルトの名無しさん mailto:sage [2006/04/18(火) 16:07:22 ]
- >>832
仰る通り。言語が複雑化すると処理系作る人は大変だね。 LL(1)で解析できる言語(Pascalとか)は素晴らしいなあ。 もっともそのせいで":="あたりで賛否両論になるわけだが...。
- 834 名前:デフォルトの名無しさん mailto:sage [2006/04/18(火) 16:08:48 ]
- > もっともそのせいで":="あたりで賛否両論になるわけだが...。
どういうことですか?kwsk 代入演算子が = で、比較演算子が ==なら済む話?
- 835 名前:デフォルトの名無しさん mailto:sage [2006/04/18(火) 16:59:55 ]
- >>834
ごめんごめん、深い意味はないのよ。個人的な感想。 個人的には":="が"="で、"<>"が"!="で、"="が"=="だったら もっと好きになってたかもってことで。 #自分が最初に使った言語にもよるんだろうけど
- 836 名前:デフォルトの名無しさん mailto:sage [2006/04/18(火) 18:09:40 ]
- >>835
それは、ホントに個人によるな。 俺の場合、= が代入なのはキモく感じる。 今は慣れたが、最初に言語を習うときに、既存の教育(数学)の常識と違うから。 代入は、:= とか <- とかの方がしっくりくる。
- 837 名前:デフォルトの名無しさん mailto:sage [2006/04/18(火) 20:23:17 ]
- >>836
確かに。a = a + 1 なんて絶対成立しないもんね。 そういう意味では := や <- が支持されるのはわかるなぁ。 ただ、<> が等しくないというのはちょっと違和感? 後輩で「<>って大なりでも小なりでもないから等しいってことですか」って マジで言ってる奴がいた(w ...なるほど深読みするとそうとも取れるのかと思ったよ。
- 838 名前:デフォルトの名無しさん mailto:sage [2006/04/18(火) 21:06:01 ]
- <>と!=は好みがでそう。
個人的には!=という記号の対称性のなさが少し嫌かも。 それだったらprologのように=\=の方が好きだ。
- 839 名前:デフォルトの名無しさん mailto:sage [2006/04/18(火) 21:16:39 ]
- <and>か<or>か、確かにどっちにも取れるよなぁ。
- 840 名前:デフォルトの名無しさん mailto:sage [2006/04/18(火) 21:26:26 ]
- 昔は"#"が不等号って時代もチョロットだけあったよね。
- 841 名前:デフォルトの名無しさん mailto:sage [2006/04/18(火) 21:38:37 ]
- a := 3 は a: int = 3 の略だったりするのはちょっと萌え。
- 842 名前:デフォルトの名無しさん mailto:sage [2006/04/18(火) 22:28:55 ]
- 俺の知人がアドレスバーにあった
://www.com/?1=1+2 なよーなURL見て、 このサイト足し算もできないとんでもねー馬鹿だなって言ってたの思い出した この業界はとりあえず普通じゃないよね
- 843 名前:デフォルトの名無しさん mailto:sage [2006/04/18(火) 22:31:35 ]
- >>842
というかURLの意味がわからないんだけど。 俺のプログラマでない友人も、x=x/3というのを見て、x==0と思い込んでた
- 844 名前:デフォルトの名無しさん [2006/04/18(火) 23:17:02 ]
- 洩れは if .. elsif を見て英語音痴だとおもたよw
- 845 名前:デフォルトの名無しさん mailto:sage [2006/04/18(火) 23:19:15 ]
- "=="を定義の意味にすべきだと思う。
- 846 名前:デフォルトの名無しさん mailto:sage [2006/04/19(水) 01:05:41 ]
- ウゼー、言語初心者が2,3人迷い込んでガタガタ騒いでやがる
- 847 名前:デフォルトの名無しさん mailto:sage [2006/04/19(水) 01:14:13 ]
- 自称熟練者さんは理論にもさぞお詳しいのでしょう。
- 848 名前:デフォルトの名無しさん mailto:sage [2006/04/19(水) 01:25:27 ]
- 演算子の記号の意味なんか言語の仕様書読めば済む話
スレ違い
- 849 名前:デフォルトの名無しさん mailto:sage [2006/04/19(水) 01:29:00 ]
- 自称熟練者さんは「演算子の記号の意味」が理論だと思っていらっしゃるようです。
- 850 名前:デフォルトの名無しさん mailto:sage [2006/04/19(水) 01:44:17 ]
- つーか何で = が代入なんだよ
- 851 名前:デフォルトの名無しさん mailto:sage [2006/04/19(水) 01:50:13 ]
- 代入要らない。
- 852 名前:デフォルトの名無しさん mailto:sage [2006/04/19(水) 02:31:05 ]
- >>851
関数型言語?
- 853 名前:デフォルトの名無しさん mailto:sage [2006/04/19(水) 02:38:57 ]
- 代入って古いんだよね ダサい きもい
- 854 名前:デフォルトの名無しさん mailto:sage [2006/04/19(水) 02:47:10 ]
- そっか。
- 855 名前:デフォルトの名無しさん mailto:sage [2006/04/19(水) 08:55:35 ]
- >>850
BASICの頃に作られた定石でつね
- 856 名前:デフォルトの名無しさん mailto:sage [2006/04/19(水) 09:04:53 ]
- 知り合いに「Pascalの代入演算子が:=なのは文法をLL(1)にするためだ」って
力説してるヤツがいたなぁ。 つーか、トークンの切り出しは字句解析の仕事で、 LL(1)は構文解析の話だと思うのだが。
- 857 名前:デフォルトの名無しさん mailto:sage [2006/04/19(水) 20:48:54 ]
- 本によるとLALR(1)文法は手書きには向かないって書いてあるんだけど
Rubyとかの言語がコンパイラコンパイラで作られてるのはその為?
- 858 名前:デフォルトの名無しさん mailto:sage [2006/04/19(水) 20:53:30 ]
- >>857
その本によるとなんで手書きに向いていないか書いてある?
- 859 名前:デフォルトの名無しさん mailto:sage [2006/04/20(木) 02:33:51 ]
- >>855
FORTRANの頃だろう。
- 860 名前:デフォルトの名無しさん mailto:sage [2006/04/20(木) 17:53:43 ]
- >>857
LALR(1)を手で書こうとすると地獄を見るよ。 再帰下降の文法がどれだけ簡単か感謝するようになる(w
- 861 名前:デフォルトの名無しさん mailto:sage [2006/04/20(木) 20:15:23 ]
- LL(1)は適用範囲が狭いけど書きやすい。
LALR(1)は適用範囲が広いけど書きにくい。 すげージレンマです!
- 862 名前:デフォルトの名無しさん [2006/04/20(木) 21:58:00 ]
- flex 使ってると、このようなメッセージが出るんだけど、
この関数を定義しないようにするにはどうすればいいでしょうか? lex.yy.c: warning: 'yy_flex_realloc' defined but not used
- 863 名前:デフォルトの名無しさん mailto:sage [2006/04/21(金) 00:40:11 ]
- #undef yy_flex_realloc
- 864 名前:デフォルトの名無しさん mailto:sage [2006/04/22(土) 10:06:33 ]
- 一般教養としての Garbage Collection
ttp://www.logos.t.u-tokyo.ac.jp/~endo/gc/gc.pdf
- 865 名前:デフォルトの名無しさん [2006/04/22(土) 10:56:10 ]
- >>863
違うだろ?
- 866 名前:デフォルトの名無しさん mailto:sage [2006/04/22(土) 22:41:57 ]
- hiraikenji@t.vodafone.ne.jp
- 867 名前:デフォルトの名無しさん mailto:sage [2006/04/25(火) 21:58:09 ]
- HSPもyaccとか使ってんのかね?
- 868 名前:デフォルトの名無しさん mailto:sage [2006/04/27(木) 11:58:47 ]
- >>867
どうでしょう。HSPって文法は何?LALR(1)?
- 869 名前:デフォルトの名無しさん mailto:sage [2006/04/27(木) 23:41:05 ]
- HSPは字句解析とか構文解析みたいな、まともな理論使ってなさそうな雰囲気
例えるなら紙芝居エロゲのシナリオスクリプト
- 870 名前:デフォルトの名無しさん mailto:sage [2006/04/29(土) 18:18:30 ]
- エロゲスクリプタもbisonで書いてるの多いと思うが
- 871 名前:デフォルトの名無しさん mailto:sage [2006/04/30(日) 13:00:49 ]
- コンパイラを書くのに最も適した言語って何ですかね?
- 872 名前:デフォルトの名無しさん mailto:sage [2006/04/30(日) 13:08:48 ]
- 最初の立ち上げの言語のことか?
それともツール込みの事か? おいらは最後には自己記述するから自分自身とかって事になるもんだと思ってるんだけど。
- 873 名前:デフォルトの名無しさん mailto:sage [2006/04/30(日) 14:31:34 ]
- コンパイラの仕事ってのは、大半がツリーからツリーへの変換だから、
ツリーを弄りやすく、静的な強い型検査をし、メモリ管理がらくちんな 言語が向く。ML系かHaskellでどうぞ。
- 874 名前:デフォルトの名無しさん mailto:sage [2006/04/30(日) 15:34:17 ]
- コンパイラの仕事ってのは、大半がツリーからツリーへの変換だから、
ツリーを弄りやすく、強力なマクロを持ち、メモリ管理がらくちんな 言語が向く。LispかSchemeでどうぞ。
- 875 名前:デフォルトの名無しさん mailto:sage [2006/04/30(日) 15:52:58 ]
- コンパイラの仕事ってのは、大半がツリーからツリーへの変換だから、
ツリーを弄りやすく、すべてがオブジェクトで、メモリ管理がらくちんな 言語が向く。Ruby でどうぞ。
- 876 名前:デフォルトの名無しさん mailto:sage [2006/04/30(日) 16:01:31 ]
- コンパイラの仕事ってのは、大半がツリーからツリーへの変換だから、
ツリーを弄りにくく、貧弱なマクロを持ち、メモリ管理がたいへんな 言語は向かない。CかC++はやめとけ。
- 877 名前:デフォルトの名無しさん mailto:sage [2006/04/30(日) 16:10:52 ]
- >>876
・・・orz
- 878 名前:デフォルトの名無しさん mailto:sage [2006/04/30(日) 16:24:16 ]
- でも結局yaccとc使うんでしょ
- 879 名前:デフォルトの名無しさん mailto:sage [2006/04/30(日) 16:25:33 ]
- yaccとCをつかうと何が有利なのでしょう?
- 880 名前:デフォルトの名無しさん mailto:sage [2006/04/30(日) 16:28:07 ]
- なにも。
- 881 名前:デフォルトの名無しさん mailto:sage [2006/04/30(日) 16:30:19 ]
- あれを使えばいい、とか、これを使えばいい、とか言ってるだけのやつはいなくなってもいいよ。
- 882 名前:デフォルトの名無しさん [2006/04/30(日) 16:31:29 ]
- そもそも、ここで具体的なことを質問に来るやつなんていないじゃない?
スレもここで終了してもいいんじゃないかな? というわけで ======= 終 了 =========
- 883 名前:デフォルトの名無しさん mailto:sage [2006/04/30(日) 18:27:01 ]
- 久しぶりに終了厨を見たな
- 884 名前:デフォルトの名無しさん mailto:sage [2006/04/30(日) 19:54:42 ]
- 時代的にはHaskellですかね?
でも習得が簡単なのはLisp? うーん迷う。
- 885 名前:デフォルトの名無しさん mailto:sage [2006/04/30(日) 19:59:03 ]
- >>884
お前が言いたいのはLispじゃなくてSchemeだろ?
- 886 名前:デフォルトの名無しさん mailto:sage [2006/04/30(日) 22:30:19 ]
- >>875
では、何故Rubyは、Rubyで書かれていないのですか?
- 887 名前:デフォルトの名無しさん mailto:sage [2006/04/30(日) 23:22:40 ]
- コンパイラはブートストラップできるけど、スクリプタは出来ない希ガス
- 888 名前:名無しさん@Linuxザウルス mailto:sage [2006/05/01(月) 07:38:23 ]
- ほとんどの速いLISP/Schemeはそれ自身で書かれてるけど
コア部分はCだったりする。 移植考えた場合gccでミニ言語構築してからブートストラップかな。 開発者はELFとかPEまで面倒見たくないのが本音。
- 889 名前:デフォルトの名無しさん [2006/05/01(月) 08:26:55 ]
- >>886
こういう馬鹿がたまに湧いてでてくるようだが、 おっとそろそろ連休かぁw 言語にはそれぞれの目的があるのも分からんの? アセンブラからベン教しなおしたら?
- 890 名前:デフォルトの名無しさん mailto:sage [2006/05/01(月) 09:22:19 ]
- .o0(下らない煽りを入れるだけなら、書き込まなきゃ良いのに・・・)
- 891 名前:デフォルトの名無しさん mailto:sage [2006/05/01(月) 09:45:36 ]
- 886じゃないけど、ブートストラップする目的の一つには言語の記述力の高さを証明するって意味合いもあるんじゃまいか。
rubyのことはよく知らないけど、もしパフォーマンスに関して考慮しないとしたら、rubyは自己記述できるだけの記述力はあるの?
- 892 名前:デフォルトの名無しさん mailto:sage [2006/05/01(月) 10:53:53 ]
- ruby で ruby を記述することはできるっしょ。
- 893 名前:デフォルトの名無しさん [2006/05/01(月) 19:54:21 ]
- ruby を用いれば(理論上は)なんでも記述できる。
ただ、パフォーマンスが問題なだけ。
- 894 名前:デフォルトの名無しさん mailto:sage [2006/05/01(月) 19:58:44 ]
- >>893
>ruby を用いれば(理論上は)なんでも記述できる。 証明は?
- 895 名前:デフォルトの名無しさん mailto:sage [2006/05/01(月) 20:07:02 ]
- 遅いってのは、それだけで罪だと思う
- 896 名前:デフォルトの名無しさん [2006/05/01(月) 20:09:17 ]
- 早漏よりはましだと思うけどね
- 897 名前:デフォルトの名無しさん mailto:sage [2006/05/01(月) 22:55:01 ]
- >>893
あまり良い例じゃないかもしれないけど、GC は Ruby で書けないんじゃない?
- 898 名前:デフォルトの名無しさん mailto:sage [2006/05/01(月) 23:46:15 ]
- GCも書けないんじゃチューリング完全といえるのか?
- 899 名前:デフォルトの名無しさん mailto:sage [2006/05/01(月) 23:49:02 ]
- 書けるよ^^;
|

|