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 あたり
655 名前:デフォルトの名無しさん mailto:sage [2006/03/05(日) 22:09:08 ] 議論に勝った所で何があるわけじゃないんだけどね 俺の知らないところで何かあるのかな?w
656 名前:デフォルトの名無しさん mailto:sage [2006/03/05(日) 22:13:50 ] >>654 議論に勝つためというより、物知らずというか ものの評価基準が幼稚なだけだと思われる。
657 名前:デフォルトの名無しさん mailto:sage [2006/03/05(日) 22:21:31 ] えーと、どこで笑えばいいのかな?
658 名前:デフォルトの名無しさん mailto:sage [2006/03/05(日) 22:24:05 ] >>657 の頭の弱さ。
659 名前:デフォルトの名無しさん mailto:sage [2006/03/05(日) 22:25:21 ] ふーん。
660 名前:デフォルトの名無しさん mailto:sage [2006/03/05(日) 22:25:56 ] >>656 コンサバティブ GC を初めて知ったレベルなら仕方が無いんじゃないの。 まだ当たりが付けられないだけだと思う。
661 名前:デフォルトの名無しさん mailto:sage [2006/03/05(日) 22:26:56 ] あのー >>642 の時点で分解って書いてるんですけど
662 名前:デフォルトの名無しさん mailto:sage [2006/03/05(日) 22:30:00 ] >>652 651じゃないが、わざわざポインタを整数として扱おうとするなら、 その後なんらかの演算を行うんじゃないかってのは 容易に想像つきそうなものだが。 ま、演算は演算させておいて、ポインタはポインタのまま 別に持っておくとか手はありそうだけど。
663 名前:デフォルトの名無しさん mailto:sage [2006/03/05(日) 22:30:14 ] 元々の命題は >>637 だろ。
664 名前:デフォルトの名無しさん mailto:sage [2006/03/05(日) 22:33:40 ] 重箱の済みつつき過ぎ、話も出来やしないよ。 >>662 はまともな人だね
665 名前:デフォルトの名無しさん mailto:sage [2006/03/05(日) 22:35:08 ] いや、>>631 なんじゃないの。 631を無視して637だけなら対応したGCを書けばいいだけの話。
666 名前:デフォルトの名無しさん mailto:sage [2006/03/05(日) 22:35:43 ] >>662 演算をするかどうかじゃなくて、再代入するかどうかが問題でしょ。 コード辺だけでそこまでケアしろと?
667 名前:デフォルトの名無しさん mailto:sage [2006/03/05(日) 22:42:04 ] 再代入というか、計算で合成した任意の値をアドレスとして アクセスできるかどうかだね。 GCはプログラム中のデータからトレースできるものを残して それ以外を回収するってことだから、 可能な演算の集合を定義してルートとなる即値だけでなく その集合に含まれる演算で計算可能な値もアドレスとして コンサバティブに扱うことをトレースとすればいいだけの話。 だから、むしろ「原理的には」GCは設計可能。「原理的には」だけど。
668 名前:デフォルトの名無しさん mailto:sage [2006/03/05(日) 22:48:20 ] ちょっと修正 ルートとなる→アドレスとなる 「原理的には」GCは設計可能→「原理的には」完全に汎用なGCは設計可能
669 名前:デフォルトの名無しさん mailto:sage [2006/03/05(日) 23:35:17 ] そのGC、何一つヒープを開放してくれなさそう
670 名前:デフォルトの名無しさん mailto:sage [2006/03/05(日) 23:42:56 ] >>666 想像しろよ。書いてるもんが100%だと決めなきゃ話できないようじゃ CPUと一緒じゃないか。人間だろ? >>662 は十分想像可能な範囲。 現に出来てる者が居る以上、それが出来なかった奴は気がまわら ないということ。 なんで整数に持ってきたいのか用途は色々あるだろ。まあ想像でき ないかもしれないがな。
671 名前:デフォルトの名無しさん [2006/03/05(日) 23:47:32 ] まぁなんらかのお約束は必要だよ
672 名前:デフォルトの名無しさん mailto:sage [2006/03/05(日) 23:48:31 ] >>669 コンサバだからねw 演算の集合は全域で同一である必要はないわけで、 適当にヒントを与えて限定してもいいし、GCがコードを解析してもいい。 普通はそこまでやってらんないから演算は値をそのまま使う という一択だと考えるだけで。
673 名前:デフォルトの名無しさん mailto:sage [2006/03/06(月) 00:34:34 ] >>670 幾らでも拡大解釈しようはあると思うけど、GC の仕組みを知っていれば そちらには振れないんじゃないかというのが俺の解釈だっただけだよ。 ま、GC の仕組みを知っていれば、最初からこんな質問も出なかった だろうけど。
674 名前:デフォルトの名無しさん [2006/03/06(月) 00:36:57 ] なんか理論の飛躍が Ruby vs Lisp の時と似ているなぁ
675 名前:デフォルトの名無しさん mailto:sage [2006/03/06(月) 01:06:36 ] 同じ面子でグルグル回してるだけだから
676 名前:デフォルトの名無しさん mailto:sage [2006/03/06(月) 07:47:45 ] >〜俺の解釈だっただけだよ 後から言うなよ
677 名前:デフォルトの名無しさん mailto:sage [2006/03/06(月) 08:30:12 ] 後から想像しろとか言ってきたのアンタじゃん。俺にどうしろと?? もうこの話は終わったんだから絡んで来るなよ。
678 名前:デフォルトの名無しさん mailto:sage [2006/03/06(月) 10:17:54 ] >>677 > 俺にどうしろと?? 恐らく謝罪を要求してるのでしょう :-) あなたをやり込めたい一心であらゆる論理を適時付け替えて頑張っているのですから、 彼のプライドを満たすためにも謝ってあげてはどうかと思います。
679 名前:デフォルトの名無しさん mailto:sage [2006/03/06(月) 10:40:02 ] >>678 >>657
680 名前:デフォルトの名無しさん mailto:sage [2006/03/06(月) 10:47:47 ] >>679 笑えない現実に対する対処の話ですから、笑う箇所などありませんよ。 そんなことも読み取れないのですね :-)
681 名前:デフォルトの名無しさん mailto:sage [2006/03/06(月) 10:54:51 ] >>680 ふーん?
682 名前:デフォルトの名無しさん mailto:sage [2006/03/06(月) 13:07:06 ] >>680 よし、じゃ俺のプライドを満たすためにおまいが謝れ。
683 名前:デフォルトの名無しさん mailto:sage [2006/03/06(月) 13:28:21 ] >>682 ごめんください。
684 名前:デフォルトの名無しさん mailto:sage [2006/03/06(月) 13:52:59 ] エェェェェェェ(;´Д`)ェェェェェェェエ
685 名前:デフォルトの名無しさん mailto:sage [2006/03/06(月) 14:23:03 ] >>684 ごめんくさい。
686 名前:デフォルトの名無しさん mailto:sage [2006/03/06(月) 15:32:11 ] /\___/\ / / ヽ ::: \ | (●), 、(●)、 | / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ | ,,ノ(、_, )ヽ、,, | < まーた始まって、終わった。 | ,;‐=‐ヽ .:::::| \___________ \ `ニニ´ .:::/ /`ー‐--‐‐―´´\
687 名前:デフォルトの名無しさん mailto:sage [2006/03/07(火) 00:21:33 ] まけず嫌いで粘着なキチガイが暴れているスレはここですか
688 名前:デフォルトの名無しさん mailto:sage [2006/03/07(火) 00:31:35 ] ぶるんぶるん体操 ぶるんぶるんと僕は言う ぷるんぷるんとあなたは笑う そんな2人は、フォーエバー 世界の端から今日は そんなあなたはお毎度さん 今日もぶるんぶるん体操始まるよ ぶるんぶるん、ぷるんぷるん ぷるんぶるん ぶぷぷぷぷぷ *四谷街道繰り返し
689 名前:デフォルトの名無しさん mailto:sage [2006/03/07(火) 23:02:33 ] このスレでオリジナル言語作って公開してる人って何人ぐらいいるの?
690 名前:デフォルトの名無しさん mailto:sage [2006/03/07(火) 23:22:00 ] 俺的には、スクリプトはあくまで手段。目的は別にある。 だからスクリプトだけを公開する事は、俺にはありえん。
691 名前:デフォルトの名無しさん mailto:sage [2006/03/08(水) 09:09:50 ] 現在の人数=0 >>690 ところで、目的って何ですか?
692 名前:デフォルトの名無しさん mailto:sage [2006/03/08(水) 09:15:09 ] 現在の人数=1 ←どういうカウントだこれは? >>690 ぼくちんも知りたい。その手の業界ってけっこうあるのかな?
693 名前:デフォルトの名無しさん mailto:sage [2006/03/08(水) 10:22:21 ] >>692 >>689
694 名前:デフォルトの名無しさん mailto:sage [2006/03/08(水) 10:29:08 ] >>693 あーそういう意味だったのか。 じゃリセット。 現在の人数=0
695 名前:デフォルトの名無しさん mailto:sage [2006/03/08(水) 12:58:30 ] 現在の人数=1 でもどこだかは教えない(w
696 名前:デフォルトの名無しさん mailto:sage [2006/03/08(水) 13:19:30 ] 現在の人数=2 ……まあ、趣味の領域ですが。
697 名前:デフォルトの名無しさん mailto:sage [2006/03/08(水) 19:53:28 ] >>691-692 単に自分の作りたいソフトを作るために、 下ごしらえでスクリプトを作ってるだけだよ。
698 名前:デフォルトの名無しさん mailto:sage [2006/03/08(水) 20:06:51 ] 現在の人数=3 ……自分専用ツールとしてはじめたのがきっかけです。 私も、どこかは内緒w
699 名前:デフォルトの名無しさん mailto:sage [2006/03/08(水) 20:17:47 ] >>697 マクロみたいなの搭載してるって意味だよね。 それとも何か目的のソフトを作るための言語を作ってるって意味?
700 名前:デフォルトの名無しさん mailto:sage [2006/03/08(水) 21:05:27 ] >>699 後者。
701 名前:デフォルトの名無しさん mailto:sage [2006/03/08(水) 21:19:45 ] >>700 マジで?言語作ってる間に既存の言語でソフト作っちゃったほうが早いんじゃないの?
702 名前:デフォルトの名無しさん mailto:sage [2006/03/08(水) 22:16:53 ] >>701 プログラマの癖に手段と目的を取り違えたことがないの?
703 名前:デフォルトの名無しさん mailto:sage [2006/03/08(水) 22:33:03 ] >>702 くせにとは何だ!くせにとは! お前こそ●●のくせに、いい気になるなよ。
704 名前:デフォルトの名無しさん mailto:sage [2006/03/08(水) 22:54:10 ] >>702 ●2つも使ってるのか?なんて贅沢な。
705 名前:デフォルトの名無しさん mailto:sage [2006/03/08(水) 23:05:44 ] >>703 なんだとこの●●●! お前だって●●●の●●●だろうに!●●●●!
706 名前:デフォルトの名無しさん mailto:sage [2006/03/08(水) 23:22:18 ] >>705 うるさい、この●●のろ!
707 名前:デフォルトの名無しさん mailto:sage [2006/03/08(水) 23:41:49 ] の●●の ↑鼻と目に見えた orz 以下、何事も無かったかのように再開。・゚・(ノД`)・゚・。↓
708 名前:デフォルトの名無しさん mailto:sage [2006/03/08(水) 23:53:37 ] >>702 こいつは、真性の●●●●。 つまり、●●w あるいみ、●●●●●● ruby ● lisp ●●w
709 名前:デフォルトの名無しさん mailto:sage [2006/03/09(木) 00:08:50 ] >>701 理想が高すぎる事と、自分自身の能力不足が原因なんだよ。 オブジェクトが多くなりすぎると、内容を追い切れなくなる。 つか、状態変位やイベントトリブンは、漏れには理解しづらい‥‥orz で、主に、個々の処理を独立させて、別個にまとめて見られる ようにするためにスクリプトを使ってる。
710 名前:デフォルトの名無しさん mailto:sage [2006/03/09(木) 00:40:15 ] >>709 一言で言い表すと、 「グローバルオブジェクトなんて嫌いだぁ・・・ 全部ローカライズ化してやるぅ・・・・」 ってな感じでつ。orz
711 名前:デフォルトの名無しさん mailto:sage [2006/03/09(木) 01:50:58 ] ローカライズ化? 頭痛が痛いだな。
712 名前:デフォルトの名無しさん mailto:sage [2006/03/09(木) 02:16:15 ] 英語は嫌いだぁ・・・w
713 名前:デフォルトの名無しさん mailto:sage [2006/03/09(木) 11:44:40 ] >>709 >つか、状態変位やイベントトリブンは、漏れには理解しづらい‥‥orz >で、主に、個々の処理を独立させて、別個にまとめて見られる >ようにするためにスクリプトを使ってる。 ちなみに、エミュレータのレジューム機能が元ネタ。 つ〜か、スレッドの場合は同期の管理が面倒なんだよな。
714 名前:デフォルトの名無しさん mailto:sage [2006/03/09(木) 12:44:30 ] OSとエミュレータと、エミュレートされるソフトの動作を、 全部一つの実装で実現させたい、ってな所。
715 名前:デフォルトの名無しさん mailto:sage [2006/03/09(木) 14:07:36 ] ネタが特許級に見えるのは気のせいか? 出願前に公開すると無効なはずだが・・・
716 名前:デフォルトの名無しさん mailto:sage [2006/03/09(木) 14:54:39 ] レジューム機能付きのエミュレータが出る前なら、可能だったかもね。
717 名前:デフォルトの名無しさん mailto:sage [2006/03/09(木) 20:09:47 ] >>714-715 似たようなネタのスクリプトなら実在するから探して味噌。 扱いやすいかどうかは別だが。w
718 名前:デフォルトの名無しさん mailto:sage [2006/03/09(木) 20:50:04 ] 構文規則で、よくこんな表記つかってるけど A → B,C 矢印逆じゃないの? なんか、すげ〜違和感あり。
719 名前:デフォルトの名無しさん mailto:sage [2006/03/09(木) 21:07:28 ] なにゆえ
720 名前:デフォルトの名無しさん mailto:sage [2006/03/09(木) 22:33:32 ] 「生成」規則だからね。もともとのオートマトン理論では 規則によりどういった文章が生成されるかを考えていたから。 構文解析は、逆に与えられた文章がどういう生成規則を たどって作られたかを求める問題だ。その過程で生成規則を 逆向きに使って還元を行う。 だから構文解析だけを考えていたら、矢印が逆だと思うかも しれんね。
721 名前:デフォルトの名無しさん mailto:sage [2006/03/09(木) 22:36:21 ] >>718 別に逆でもいいけど、たぶんおまいは逆にすると今度はそっちに違和感を感じるんだろ。 A → BC | DE ってのは A is defined as BC or DE A expands to BC or DE A generates BC or DE A is rewritten as BC or DE 逆方向には BC or DE can constitute A BC or DE can be reduced to be A などなど、色々な読み方ができる。
722 名前:デフォルトの名無しさん mailto:sage [2006/03/09(木) 22:39:38 ] A ← BC | DE を A is defined as BC or DE と読んじゃいけないのかよ。
723 名前:デフォルトの名無しさん mailto:sage [2006/03/09(木) 22:42:22 ] >>722 いいよ別に。咎めはしないけど真似してくれる人は少なそうだね。
724 名前:デフォルトの名無しさん mailto:sage [2006/03/09(木) 22:43:50 ] >>722 それを流行らせてくれ!!
725 名前:デフォルトの名無しさん mailto:sage [2006/03/09(木) 22:50:30 ] っていうか矢印の向きなんてどーでもいいし。 矢印以外の記号だって使われるわけだし、勝手にしろとしかいいようがない。
726 名前:デフォルトの名無しさん mailto:sage [2006/03/09(木) 23:04:18 ] そんなに揉めるくらいならこっちを指せばいい A m9(^Д^) BC | DE
727 名前:デフォルトの名無しさん mailto:sage [2006/03/09(木) 23:11:11 ] >>726 ワロタw でも、確かに代入文とかも A=B+C は A->B+C とは書かんな どうみても A<-B+C だな。
728 名前:デフォルトの名無しさん mailto:sage [2006/03/09(木) 23:12:03 ] A ブギャー BC or DE と読むのか。勢いがあって好いな。
729 名前:デフォルトの名無しさん mailto:sage [2006/03/10(金) 00:23:11 ] A pgr BC or DE なんかよく分からんが格好良いぞ
730 名前:デフォルトの名無しさん mailto:sage [2006/03/10(金) 12:21:57 ] yaccやbisonでは、演算子の順位を指定することができますが、これもLALR(1)で必要なのでしょうか。 コンパイラの本を読むと、LALR(1)の説明では生成規則しか使わず、演算子の順位を含めたaction表やgoto表の作り方は特に書いてないように思います。 もしかして、yaccやbisonではLALR(1)と演算子順位解析法との併用なのかなと思ったりするんですけど、どうなんでしょうか? なお、やりたいことは自前で簡単なパーサジェネレータを作ることです。LALR(1)のアルゴリズムを勉強しているんですが、演算子の順位がまるででてこないので、どうやるんだろうと疑問に思ってます。
731 名前:デフォルトの名無しさん mailto:sage [2006/03/10(金) 12:30:17 ] >>730 コンフリクト時にシフト/還元のどれを選択するかでうまいことやっている。 ドラゴンブックに説明があったかもしれない。
732 名前:デフォルトの名無しさん mailto:sage [2006/03/10(金) 20:02:39 ] >>730 > もしかして、yaccやbisonではLALR(1)と演算子順位解析法との併用なのかなと思ったりするんですけど、どうなんでしょうか? そうです。 expr → expr + expr | expr * expr っていう生成規則はLALR文法ではないけど使えた方が便利でしょ。
733 名前:デフォルトの名無しさん mailto:sage [2006/03/10(金) 23:20:04 ] >>726
734 名前:デフォルトの名無しさん mailto:sage [2006/03/10(金) 23:52:42 ] bisonってGLRにならなかったっけ?
735 名前:デフォルトの名無しさん mailto:sage [2006/03/11(土) 09:18:24 ] bisonの入力になりえる文法はGLRだろうけど(自信なし)、あいまいさを解決するアルゴリズムが違うからパースした結果が変わっちゃうんじゃないの? GLRはshift/reduceコンフリクトでreduceを優先するから、あいまいなぶらさがりelseが遠い方のifにくっついちゃう。
736 名前:デフォルトの名無しさん mailto:sage [2006/03/11(土) 10:42:50 ] >GLRはshift/reduceコンフリクトでreduceを優先 ちがうよー。 コンフリクトでshiftとreduceの両方追いかけるのがGLR。 >>734 GLRもできるけど>>732 をGLRで扱うと +の優先度が高い場合の構文木と*の優先度が高い場合の構文木の 両方を解析結果として得る話になるから、 演算子の順位指定の話とはからまないと思われ。
737 名前:730 mailto:sage [2006/03/11(土) 22:13:54 ] >>731 ,732 どうもありがとうございます。 けっこう複雑なことやってるんですね。 作るの自信なくなってきたな。。。
738 名前:デフォルトの名無しさん mailto:sage [2006/03/12(日) 01:08:18 ] がんがってくれい なせばなるよ
739 名前:デフォルトの名無しさん mailto:sage [2006/03/12(日) 23:28:26 ] 既に慣れてしまってる方ばかりだろうが、 還元ということばに違和感を感じる自分。 どうせなら、還元よりも換言だとおもう。
740 名前:デフォルトの名無しさん mailto:sage [2006/03/13(月) 02:55:26 ] それだと向きを含意しないから、reduceの語感が出ないなあ。
741 名前:デフォルトの名無しさん mailto:sage [2006/03/13(月) 03:37:22 ] これはなかなか面白い (厭味じゃなくて) >>739 は明治時代辺りに生れてればよかったのに
742 名前:デフォルトの名無しさん mailto:sage [2006/03/13(月) 03:58:25 ] コンサバって何?
743 名前:デフォルトの名無しさん mailto:sage [2006/03/13(月) 04:00:45 ] 松平健が歌ってるヤツだろ。
744 名前: mailto:sage [2006/03/13(月) 08:44:18 ] しってる言語はJavaなんでJavaのバイトコードに変換する本当に簡単なコンパイラ?つくりたいんですが、古い本でも大丈夫ですか? Programming for the Java(TM) Virtual Machineって本見つけたんですが1999年出版なんです。バーチャルマシンの仕様とかは変わってないのですか?
745 名前:デフォルトの名無しさん mailto:sage [2006/03/13(月) 09:32:08 ] 検索すれ。 The JavaTM Virtual Machine Specification, Second Edition java.sun.com/docs/books/vmspec/ 同 Maintenance Page java.sun.com/docs/books/vmspec/2nd-edition/jvms-maintenance.html
746 名前: mailto:sage [2006/03/13(月) 22:17:19 ] >>745 どうもありがとう。
747 名前:デフォルトの名無しさん [2006/03/17(金) 23:50:51 ] >>726 1から見てみたが、お前のレスが一番ワロタw
748 名前:730 mailto:sage [2006/03/18(土) 08:20:23 ] C言語とかで、'*' や '&' がポインタ演算だったり四則演算だったりビット演算だったりするけど、 このように1つの記号が複数の意味を持つ場合、字句解析で別のトークンを返さないといけないのでしょうか。 それとも構文解析時に判断できるものなのでしょうか。 例えば仮引数に *p とあれば、これはポインタを意味するための * であり、四則演算ではないとすぐにわかります。 しかし、*p1 * *p2 などとあった場合、ひとつの式の中でポインタを表す * と四則演算を表す * とが混じってるんですけど、こういったものはどうやって別物であると判断しているのか不思議です。
749 名前:デフォルトの名無しさん mailto:sage [2006/03/18(土) 11:05:59 ] >>748 字句解析では区別せず、構文解析で判定する。 教科書で、-1 - -2 のような式を扱う例を探してみて。
750 名前:デフォルトの名無しさん mailto:sage [2006/03/18(土) 13:14:58 ] 前置子やね
751 名前:デフォルトの名無しさん mailto:sage [2006/03/18(土) 13:27:13 ] そういうやり方をするから、vector<vector<int>>がコンパイルできなかったりするw
752 名前:http://www.vector.co.jp/soft/win95/util/se072729.html [2006/03/18(土) 19:03:18 ] TextSS のWindowsXP(Professional)64bit化おながいします もしくは64bitにネイティブ対応したテキスト置換ソフトありますか?
753 名前:デフォルトの名無しさん [2006/03/18(土) 19:50:35 ] なぜ、関係演算子は結合を持たない例が多いんだろうか? 単純に 3<=x<99 とか書けてもいいとは思うんだが、
754 名前:デフォルトの名無しさん mailto:sage [2006/03/18(土) 19:58:12 ] C がそうやってるから右に習えだと思う
755 名前:デフォルトの名無しさん mailto:sage [2006/03/18(土) 20:00:44 ] 10 < x >= y < 20 <= z > 0 とかあったら何なんだか困るじゃん Lispだと (< 10 x 20) とか書けるけどね