1 名前:デフォルトの名無しさん [03/11/29 15:59] yaccやlexの使い方やら言語仕様やらの話題。 前スレ 1 pc.2ch.net/tech/kako/981/981672957.html 2 pc2.2ch.net/test/read.cgi/tech/1021136715/ (dat落ち) 関連リンクは多分 >>2-8 あたり
562 名前:558 mailto:sage [04/03/03 02:41] いまどきのOSはスタックの割り当ては動的だからね。 最小限のサイズのみを割り当てて、スタックの次のページを さわった瞬間にメモリ未割り当てのページフォルトが発生して、 そのタイミングで実際の仮想メモリを割り当てる実装になってる。 で、そのページフォルトを判定するのが隣接ページのみってこと。 フレーム割り当てのタイミングでサイズが決まってるのなら、 sub esp, 4096; sub esp, 4096; sub esp, 200 みたいな感じで展開しちゃってもいいと思うよ。
563 名前:デフォルトの名無しさん mailto:sage [04/03/03 05:37] >>562 espの値を変えただけでは、ページを触ったことにはならないと思うが。
564 名前:デフォルトの名無しさん mailto:sage [04/03/03 06:15] つーかさー、いい加減ソース見ろよ。 ページ処理をどーすればいいのかとかもわかるし。
565 名前:デフォルトの名無しさん mailto:sage [04/03/03 07:36] >>558 ところで、自作の処理系ってアクティブ何とか?
566 名前:デフォルトの名無しさん mailto:sage [04/03/03 12:21] やっぱりMacOSXみたいにスタックもallocしたほうが分り易いよな
567 名前:デフォルトの名無しさん mailto:sage [04/03/03 18:12] >>562 名前557の間違いですか? ちなみにCRTの_chkstkを呼ぶ様にして解決しました。 おかげで既知のバグがすべて潰せました。 >>564 557氏みたいなヒントがないとソースみてもわかんなかったよ。 >>565 アクティブ何とかの話はよくわかりませんが、 目標はネイティブ実行できるLISPっぽいCみたいな感です。
568 名前:デフォルトの名無しさん [04/03/04 23:56] どーでもいいけど、 スタックとるahhocaって制限多すぎでない? 大きな自動変数は、普通process即氏けどな。
569 名前:557 mailto:sage [04/03/05 01:12] >>563 IA-32(+Win32?)の場合だとesp、ebpは明示的に参照しなくても ポインタが指し示すだけでAccess Violation飛んだはず。 かなり前の記憶なんで確証ないけど・・・ >>568 用途が違う。大きなサイズが必要ならHeapを使えばいい。 関数が呼び出されるまで厳密なサイズはわからないが、 スタック食いつぶすほどのサイズにはなりえない場合とか、 シグナルハンドラから突如longjmp()されようが、絶対に メモリリークしたくない場合などに使える。
570 名前:デフォルトの名無しさん mailto:sage [04/03/05 19:07] >>569 > かなり前の記憶なんで確証ないけど・・・ 明らかに記憶違い。 $ uname -ms CYGWIN_NT-5.0 i686 $ cat a.c #include <stdio.h> static void * badstack() { __asm__("mov %esp, %edx; sub $0x100000, %esp; mov %esp, %eax; mov %edx, %esp"); } int main() { char *p = badstack(); printf("%p\n", p); fflush(stdout); printf("%x\n", *p); return 0; } $ gcc a.c $ ./a.exe 0x12ef18 Segmentation fault (core dumped)
571 名前:デフォルトの名無しさん [04/03/05 19:40] >>570 linuxでもちょっと大きな奴渡すとすぐにsegfault!です
572 名前:558 [04/03/05 20:39] >>571 自分も最初そう思ったけど、 10分の1の0x10000にしても落ちたから違うと思う。 ポインタ変えただけじゃ駄目なんじゃないかな。 _chkstkのまわりくどいソースとあわせて考えると。
573 名前:デフォルトの名無しさん mailto:sage [04/03/05 22:14] >>571 大小は関係ない。 > esp、ebpは明示的に参照しなくても > ポインタが指し示すだけでAccess Violation飛んだはず。 というのは誤り。espを変更しただけでは落ちないで、参照したときに落ちる。 >>570 のテスト内容ちゃんと見た?
574 名前:デフォルトの名無しさん [04/03/05 22:46] >>570 つーかそれ関数すぐ戻ってるから、プログラム的に スタックが有効かどうかというテストにはならんのでは? badstack() { char baduse[0x100000]; return baduse; } と同じことだし・・
575 名前:デフォルトの名無しさん [04/03/05 23:15] あー勘違いした
576 名前:デフォルトの名無しさん [04/03/05 23:17] なので、>>571 が正解!
577 名前:545 mailto:sage [04/03/09 22:36] alloca実装でけたよ 疲れた
578 名前:デフォルトの名無しさん [04/03/20 13:15] Windowsで使えるlexってないんでしょうか? Cygwin上でうごかすのではなく、純粋にWindows用として。
579 名前:デフォルトの名無しさん mailto:sage [04/03/20 13:33] ttp://sourceforge.net/project/showfiles.php?group_id=23617
580 名前:578 [04/03/20 14:04] >579 ありがとう。 でも俺がいうのもなんだが甘やかしすぎでは。
581 名前:デフォルトの名無しさん mailto:sage [04/03/20 18:02] >>580 何だそりゃw
582 名前:デフォルトの名無しさん mailto:sage [04/03/20 19:30] >>578 こんなんもあるけどな www.vector.co.jp/soft/dos/prog/se002362.html
583 名前:デフォルトの名無しさん mailto:sage [04/03/20 20:18] 579は鉄オタに優しいNHKみたいですね<あまやかしすぎ
584 名前:デフォルトの名無しさん mailto:sage [04/03/20 21:46] おれはNHK料金払ってない
585 名前:デフォルトの名無しさん mailto:sage [04/03/20 21:53] >>584 同じく、見てないし。
586 名前:デフォルトの名無しさん mailto:sage [04/03/20 23:24] つーかNHKあまやかしすぎ
587 名前:デフォルトの名無しさん mailto:sage [04/03/23 00:12] 教育テレビで歌のお姉さんが胸もまれてたよ。
588 名前:デフォルトの名無しさん mailto:sage [04/03/23 07:16] なんと。
589 名前:デフォルトの名無しさん [04/04/07 19:36] yacc か bison のサンプル集みたいなサイトご存知ないですか? ちょっと、書籍で勉強してるんですがサンプルが少なくて困ってます。
590 名前:名無し@沢村 [04/04/07 22:06] おまいらよ、超便利マシン語エディタ「Visual E++」ができたから見ちみれ!! プログラム言語の歴史が変わった歴史的瞬間だ。 hp.vector.co.jp/authors/VA015412/
591 名前:デフォルトの名無しさん mailto:sage [04/04/08 19:16] >>590 Windoze用かよ _| ̄|○
592 名前:デフォルトの名無しさん mailto:sage [04/04/08 23:52] 逆に聞くが、Windows用以外に何があるんだ?
593 名前:デフォルトの名無しさん mailto:sage [04/04/10 01:45] >>592 (゚Д゚)ハァ?Macに決まってんだろ!
594 名前:デフォルトの名無しさん mailto:sage [04/04/10 05:25] >>592 SPARCでSolarisかLinux。PPCでMac OS X用。 これだといじれるんだけどな。Windozeなんざ動く環境がないんで試す事すらできねぇ。 あ、StrongARMなLinuxZAURUSも有るか。
595 名前:デフォルトの名無しさん mailto:sage [04/04/10 05:44] > Windoze スペルは正しく書きましょう Windows :p
596 名前:デフォルトの名無しさん mailto:sage [04/04/10 09:41] >>595 ネタだとは思うけど一応... ttp://d.hatena.ne.jp/keyword/Windoze
597 名前:デフォルトの名無しさん mailto:sage [04/04/10 10:37] ネタをネタで :D
598 名前:デフォルトの名無しさん [04/04/11 11:00] 最適化技法について分かりやすく説明してくれている HP ってありませんか?
599 名前:デフォルトの名無しさん mailto:sage [04/04/11 19:46] yacc の勉強とかはみんなどこでやったんですか? 書籍は相当限られていると思うのですが。
600 名前:デフォルトの名無しさん mailto:sage [04/04/11 21:34] yaccなんて1、2回使えばわかる気がするけど。
601 名前:デフォルトの名無しさん mailto:sage [04/04/11 21:53] >>599 みんな、yacc のソースコードを必死に読んだんだよ。 そのために bison はオープンソースになっているんじゃないか。 お前も頑張れ。 因みに yacc のスキャナ自体も yacc で書かれているが 頑張れば何とかなる。
602 名前:デフォルトの名無しさん [04/04/12 21:54] いやいや、yaccのサンプルはないの?
603 名前:デフォルトの名無しさん mailto:sage [04/04/12 22:55] >>602 >>88 見れ
604 名前:名無し@沢村 [04/04/12 23:12] ちんぽ
605 名前:デフォルトの名無しさん mailto:sage [04/04/12 23:25] それで?
606 名前:デフォルトの名無しさん [04/04/18 09:21] >>603 書籍はもってるらしいぞ。
607 名前:デフォルトの名無しさん mailto:sage [04/04/23 00:13] gcc 3.4のC++パーサは手書きなんだと。
608 名前:デフォルトの名無しさん [04/04/24 23:06] >>607 みんな手書きだろう? 口述パーサなんてあるか?
609 名前:デフォルトの名無しさん mailto:sage [04/04/24 23:27] >>608 > みんな手書きだろう? 3.3.3まではyaccに生成させてたんだよ。 これは手書きとは言わんだろう?
610 名前: [04/04/24 23:48] ところで、コンパイラの仕事ってどうやって 発生するの? どんな会社がそういった仕事の最先端を行っているの? なんとなく興味あります わたしはしがない下請けなので コンパイラ、と聞くとちょいと憧れますね
611 名前:デフォルトの名無しさん mailto:sage [04/04/25 12:35] 知ってるけど教えてあげない
612 名前:デフォルトの名無しさん [04/04/26 19:19] >>609 なるほど、そういう意味ね!
613 名前:デフォルトの名無しさん [04/04/26 19:25] >>529 ほほえましいな。レス番違うし。
614 名前:デフォルトの名無しさん [04/04/26 19:36] >>613
615 名前:デフォルトの名無しさん mailto:sage [04/04/27 04:59] ワロタ
616 名前:デフォルトの名無しさん mailto:sage [04/04/27 23:10] じわじわ来るねw
617 名前:デフォルトの名無しさん mailto:sage [04/05/08 09:26] すんません、Exceptionのthrowとcatchって、どうやって実装されてるんですか? なんとなく、setjump()とlongjump()をつかうんだろうなーとは思うんですが、いまいち自信ないです。 どう実装してるのかを紹介したサイトなりがあれば教えていただけますか。 #「例外 実装」とかでぐぐってもそれらしいのは見つからない。
618 名前:デフォルトの名無しさん mailto:sage [04/05/08 09:44] exception setjmp longjump でググってみてみれ。 www.google.co.jp/search?q=cache:qXwDJ7nZF0EJ:maborosi.kobe-du.ac.jp/sugiura/soft/super/longjmp.htm+exception+setjmp+longjump
619 名前:618 mailto:sage [04/05/08 10:24] longjmp だった。言い訳なんかするもんか・・・
620 名前:デフォルトの名無しさん mailto:sage [04/05/08 11:06] How a C++ compiler implements exception handling www.codeproject.com/cpp/Exceptionhandler.asp
621 名前:デフォルトの名無しさん mailto:sage [04/05/08 12:27] >>617 ちゃんとしたcontinuationがあれば、それを使って実装すればいい。
622 名前:デフォルトの名無しさん [04/05/09 00:19] どういう意味だ?
623 名前:!621 mailto:sage [04/05/09 00:48] >>622 exception を実装する為に continuation を実装するというのも本末転倒な感じが するけど。 ttp://www.shiro.dreamhost.com/scheme/docs/cont-j.html
624 名前:デフォルトの名無しさん [04/05/09 19:17] longjumpは制約が多すぎないか? スクリプトレベルでうまく動かすためには、相当なサポートコードが必要に なると思うが…
625 名前:デフォルトの名無しさん mailto:sage [04/05/16 12:21] Rubyはlongjmp使ってなかったっけか。
626 名前:デフォルトの名無しさん mailto:sage [04/05/17 05:33] 自分も先読みが結構必要なときの マッチしなかったときの処理にlongjmpを使ってるよ。
627 名前:デフォルトの名無しさん mailto:sage [04/05/18 09:34] >>610 ARM,MIPS,SHとかの組み込み用アーキテクチャとかなら新規開発したあとコンパイラもそれにあわせて最適化とかが必要だから仕事があるんじゃない?
628 名前:デフォルトの名無しさん mailto:sage [04/05/18 21:58] Schemeでいうcontinuationの機構を作りたいのですが、 setjmpとlongjmpの他に何が必要ですか? スタックの内容を退避しなければ駄目ってのはなんとなくわかるのですが。 インアセ使わずにC言語だけでできるものでしょうか? とりあえずi386以降で動けばいいです。
629 名前:デフォルトの名無しさん mailto:sage [04/05/19 02:28] >>628 「スタックなぞ一切使わない」というのが王道です。 すなわち、関数呼出しはCALLでなく、JMPになります。 return addressは、「次の処理の関数」として表現し、引数として渡すのです。 通常スタックフレームに置かれる変数は、ヒープに置くことになります。 関数型言語スレ(総合スレは荒れてるので、HaskellかML) で質問すると詳しい人が教えてくれるでしょう。
630 名前:デフォルトの名無しさん mailto:sage [04/05/19 19:26] ういー、むづかしそうです。 SchemeのCPSてやつですね。
631 名前:デフォルトの名無しさん mailto:sage [04/05/20 02:21] 「スタックなぞ一切使わない」という方法は、ここでいう (4) の前者だよね。 ttp://lists.sourceforge.jp/mailman/archives/gauche-devel-jp/2002-November/000018.html ttp://lists.sourceforge.jp/mailman/archives/gauche-devel-jp/2002-November/000019.html
632 名前:デフォルトの名無しさん mailto:sage [04/05/21 02:19] >>630 やりたいこととは違うと思うけど、Schemeを普通のCにコンパイルする方法。 home.pipeline.com/~hbaker1/CheneyMTA.html - 関数呼出しはCの関数呼出しとしてコンパイルされるが、CPSなのでreturnは決してしない - スタック領域をヒープとして用いる - スタックがあふれそうになったら、copying GCで新しいスタック領域に移し計算を続行する - GCのスタックを走査する部分にはCPUに依存しないので、Cだけで書ける 昔Sigplan Noticesで読んで面白いと思った。
633 名前:デフォルトの名無しさん mailto:sage [04/05/23 00:00] bison / yacc の使い方の質問です。 bison とか yacc って、みんな初めは電卓作りますよね。 3 + 5 (Return) って入力すると「画面上に」8をprintfするやつ。 これ、画面上で8を返すんじゃなくて、 yyparseの返り値とかそういう感じで yyparse の呼び出し元に 8 を何とかして知らせる方法ないですか? ただし、グローバル変数は使わないものとして。
634 名前:デフォルトの名無しさん mailto:sage [04/05/23 15:40] >>633 /usr/lib/yaccpar とか /usr/share/bison/bison.simpleを書き換える。 bisonは #define YYPARSE_PARAM foo を定義しておくと、void *fooが引数として渡されるから、アクションでその中に 答を入れて返すようにすればいいのでは。 プログラム中からyyparseを複数回呼出す場合は、先読みバッファの再初期化に注意。
635 名前:名無し@沢村 [04/05/24 21:41] おまいらよ、おれはつい最近つーか、たったいまさっきtcl/tkつーコンパイラの存在を知ったよ。 いまDLしてるところで、まだ開けて見てないんだが、Webでの説明を見た限りじゃなんか良さげだった。 つーか、GUIに関しては、Visual C++よりもちゃんとしたGUIアプリが簡単につくれるとのことだ。 ただ計算的な処理には不向きということだが、そこは何かC言語で書いて追加できるとのことだ。 おれはちょっとこのtcl/tkを調べてみるが、ホントにGUIに関して良さげだったら、いま開発中の「Vicual E++」は、 このtcl/tkで書き直してもいいな。Visual C++じゃエディタの予約語の色づけとかチョー面倒だしな… そして内部のメインの処理だけをC言語で書くようにすればいいからな… それができそうかどうかをまず調べてみようと思う。 次に調べたいことは、おれが次につくりたい高級言語に、tcl/tkはオープンソースらしいから、パクレる部分があるかどうかということだ。 ともあれ、おれのコンパイラの開発は飛躍的に前進しそうだな。 おまいらよ、おれはtcl/tkいま知ったぞ。おまいらは、tcl/tk知らなかっただろう?
636 名前:デフォルトの名無しさん mailto:sage [04/05/24 22:11] >>635 tcl/tkって「チックル・チーコ」って読むんだよね?
637 名前:デフォルトの名無しさん mailto:sage [04/05/24 23:11] >>635 お前だけ。
638 名前:名無し@沢村 [04/05/24 23:49] Tcl/Tk、DLしたが、何やこれわぁ!?スクリプトやないか? 実行ファイル作成できんのか?HSP以下か?ゴミソフト!!!
639 名前:デフォルトの名無しさん mailto:sage [04/05/25 00:46] セックル・チンコ
640 名前:デフォルトの名無しさん mailto:sage [04/05/25 01:35] >>638 tclsh, wish という位だから、tcl/tk は一種のシェルだよ。 C から system() でシェルのコマンドを実行するのと似た様な感じで使える。 まぁ、もちっと面倒だけど。 俺も以前 tcl/tk からパクれる所が無いかなとソース眺めてみたけど、 C で実装されている部分は低レベルな所だけだったような。
641 名前:デフォルトの名無しさん mailto:sage [04/05/25 10:49] TclつったらPerlと同じくらい歴史の長いスクリプトなんだが アホは知らなかったのね。
642 名前:デフォルトの名無しさん mailto:sage [04/05/25 10:54] >>641 言語で大事なのは歴史の長さよりも話者人口だよ。 歴史の短い Java をみんなが使うのはなぜだと思う? Algol や Prolog が滅びたのは?
643 名前:デフォルトの名無しさん mailto:sage [04/05/25 12:04] 今頃Tcl持ち出してくるなんて100%ネタだと思ってたんですが。 釣りだよね?親切に説明してる640が気の毒だ。
644 名前:デフォルトの名無しさん mailto:sage [04/05/25 13:29] >>642 Algolはともかく、Prologは滅びてはいないだろ。 Algolにしたって、形を変えてその思想は受け継がれているわけだし。
645 名前:デフォルトの名無しさん mailto:sage [04/05/25 13:53] >>642 知名度の話をしてるんだが。なにが言語で大事なのは、だ。 かってに妄想してチンコ膨らましてんじゃねーよキモイ。
646 名前:デフォルトの名無しさん mailto:sage [04/05/25 19:15] 642じゃないけど、 妄 想 ま で 制 限 さ れ て た ま る か 妄想でチンコ膨らそうぜ
647 名前:デフォルトの名無しさん mailto:sage [04/05/25 21:40] >>642 Tclはハード設計ツールの組込みスクリプト言語ではメジャーです。 (Tclはいやだけど、独自言語よりはましだよな) もともとTclはアプリ組込み用だし。tclshもwishも組込みのサンプル みたいなもんです。
648 名前:デフォルトの名無しさん mailto:sage [04/05/25 22:13] でも結局、Tk のほうが Tcl よりも何倍もメジャー。
649 名前:名無し@沢村 [04/05/26 21:18] Starpack Tcl/Tkでつくったスクリプトを実行ファイルに変換するツールだな。 が、わし英文読めんけん、このページのどっからDLしていいかわからんのよ。 このページの何行目の何という文字をクリックするとDLできるか、教えて〜♪ www.interq.or.jp/japan/s-imai/tcltk/tclkit.html
650 名前:デフォルトの名無しさん mailto:sage [04/05/26 21:45] 沢村師ねよ
651 名前:デフォルトの名無しさん [04/05/29 19:38] ここは沢村を呪うスレとなりました。
652 名前:デフォルトの名無しさん mailto:sage [04/05/29 22:11] -=、 ̄`―''" |\ `'''―'''" | || |ヽ、_____,へ、 ,...--、 `―‐ァ‐...::', \:::::::::::::::::::: | || |ヽ、___,ヘ、| ┌───┐ i´ ,. ' ..::....`'''‐--‐''"~...:::::::::ヽ ` 、::::::::::::::::| || | ┌─┐ i´ | | │ | -=ニ"_,...、-- ヾヽ、::::::::::::::::::::::::::::::::ヽ `、 `,::::::| || | | │ | | | .| | `''‐-`ヽ.`''‐-..._:::::::〃:::l:::l`ヽ..ノヽヾ,: | || | | │ | | |____| | ,..-‐''''‐----'":::::::`ヽ、 /l:/|::::/l:::lヾ.‐'""' i| l | || | | │ | |.┌─‐┐┌┐.| __,. ' ......:::::::::::::::::::::::::::::::::::: `''1 l! l::::i lヾ|,...-==l. l:| || | └─┘ | |ノ ,ヘ、 | | レ' `ー--‐' ̄`> ....:::::::::::::::::ノ.._,...ヾ!ノ-':::/~ ノ i | || .| | ̄ ̄|ノ / /` .| | ,.. '" ...::::::::::::::::::::::::::ヽ< ̄`>'" `ー‐‐''"ノ..| || |ノ / / | | -‐'"゛`''‐''" .......::::::::::::::::::::::::::::::::::::::{ `‐',ヘ | ,..、_ .| || / / | | /| ....__...:::::::::::::::::::::::::::::::::::::::::::::::::::::::!、 ! ,..-` ,. | || /./ .| | . / | -"--- ....___,...--- ._::::::::::::::::::::`、 `‐' _ィ' V| || ._ _/./ . | └──'´ .,) , '" ̄..::::::::::::::::::::::::::〉__,..w、ァ'"Vハノ | || `ー─‐'´ `ー───'´ ,..--- ....__,. ' ....:::::::::::::::::::::::::::::::::::::::::Vi,..ハ---'" | || ,. ' .....:::::::::::::::::::::::::::::::::::::::::::::::::::::::::'、. ― .| || -=-‐-‐'゛`''‐-.._ _,..-----==- .:::::::::::`ー.`--‐'",'| ||
653 名前:デフォルトの名無しさん mailto:sage [04/05/30 08:43] 沢村が全てを台無しにしたんだな。
654 名前:デフォルトの名無しさん mailto:sage [04/06/02 01:19] マルチスレッドが良く分からない。マルチスレッドなコードを生成するのには コンパイラ側で何かしてあげなくてはいけない事があるのでしょうか。 それともランタイム環境の問題なのかな。
655 名前:デフォルトの名無しさん mailto:sage [04/06/02 03:04] tls(thread local storage)なんてのが言語仕様として定義されていればコンパイラはそれを意識する必要があります。
656 名前:デフォルトの名無しさん mailto:sage [04/06/02 07:57] >>655 完全にライブラリレベルなのかなと思っていたのですが、そういう訳でもないんですね。 pthread ライブラリを wrap して、他のライブラリも MT-Safe に作れば良いのかと 思ってました。どうもありがとうございます。
657 名前:デフォルトの名無しさん mailto:sage [04/06/09 22:05] インタープリタなんかではスレッド作るとそのスレッド専用の VM が起動する処理系が あるみたい。コンパイルされる言語でも、スレッド毎にランタイム環境を作ってあげれ ば良いのかな。
658 名前:デフォルトの名無しさん mailto:sage [04/06/09 22:48] >>657 コンパイルされる言語の場合は、ホスト環境のpthreadライブラリを呼び出す様に すればいいのでは? 今後主流になると思われるSMP環境を考えたら、複数のCPUを有効に使えるかも
659 名前:デフォルトの名無しさん mailto:sage [04/06/10 00:20] >>658 pthread_create() が C の関数を引数に取るので、クロージャとかを渡したい場合に 何となく面倒じゃないかなと思ってました。変数部分は引数として渡してあげれば 問題無いような気がしてきました。
660 名前:デフォルトの名無しさん mailto:sage [04/06/16 10:58] bison と flex を使っています。 flex では yylval をガンガン使っています。 bison で %pure_parser したら flex が吐き出す C コードのコンパイルで氏にました。 どうすれば %pure_parser しても yylval (と同じような機能) を flex で使えるでしょうか。
661 名前:デフォルトの名無しさん mailto:sage [04/06/16 16:28] >>660 自己レス www.timeparadocs.net/bab/flex_bison/flex_bison.htm これで解決しますた。 が、flex のファイルに yylval.hoge と書いていたのを yylval->hoge と書かないと逝けないようです。
662 名前:デフォルトの名無しさん mailto:sage [04/06/17 23:22] boostのspiritっていじって遊ぶにはよいけど、 実際問題使えるものなのかな?
663 名前:デフォルトの名無しさん [04/06/18 16:14] boost::spirit便乗質問なんですがパースした後 parse_infoのfullを調べるとエラーが発生したか確認できますが エラーが発生した行番号を取得するにはどうやったら良いんでしょうか?
664 名前:デフォルトの名無しさん mailto:sage [04/06/18 21:33] position_iterator(勘
665 名前:デフォルトの名無しさん [04/06/19 22:30] うわ、みてみると確かにそれらしい気配が・・・ しかし、よく意味が分からない罠・・・
666 名前:読まずにレス mailto:sage [04/06/22 00:47] JJTreeでJVM上で起動するスクリプトを書くのはアリですか?
667 名前:デフォルトの名無しさん mailto:sage [04/06/22 10:17] だめ
668 名前:デフォルトの名無しさん [04/06/23 23:35] このようなコンパイラ誰か作ってもらえません? イメージ的にはVMを介さない.NETみたいな。 開発の形態はApacheみたいに元となるものがあって ユーザーが拡張プラグインを自由に作って公開できるようなのがいいな。 ・ネイティブコードを吐く ・OSは問わない ・VMなどを介さない ・メインとなる構文はあるが、ユーザーが自由に構文を追加・変更できる。
669 名前:デフォルトの名無しさん mailto:sage [04/06/23 23:38] >>668 D言語でええやん
670 名前:デフォルトの名無しさん mailto:sage [04/06/23 23:38] >>668 ttp://hp.vector.co.jp/authors/VA015412/
671 名前:デフォルトの名無しさん mailto:sage [04/06/23 23:42] >>669 D言語って名前くらいは聞いたことあるんですけど、 >>668 で書いたようなことを実現しているんでしょうか?
672 名前:デフォルトの名無しさん mailto:sage [04/06/24 00:03] Lisp系を使えばいいんでないかとオモタ
673 名前:デフォルトの名無しさん mailto:sage [04/06/24 00:15] >>668 このようなコンパイラ誰か作ってもらえません? というクレクレな割に > ・ネイティブコードを吐く > ・OSは問わない いきなりハードル高い
674 名前:デフォルトの名無しさん mailto:sage [04/06/24 00:25] >>673 APIの類を使わなければ大丈夫 CPUは限定されるが
675 名前:読まずにレス mailto:sage [04/06/24 00:36] ダメですか…orzガックリ こっそり作ることにします。
676 名前:デフォルトの名無しさん mailto:sage [04/06/24 00:39] .NETだから、膨大なライブラリで動的な言語で言語非依存のバイナリインターフェイスを持ってないとダメだな
677 名前:デフォルトの名無しさん mailto:sage [04/06/24 02:13] >>668 死ねボケ
678 名前:デフォルトの名無しさん mailto:sage [04/06/24 02:20] >>677 お前が死ねカス
679 名前:デフォルトの名無しさん mailto:sage [04/06/24 02:23] >>678 お前も死ねタコ
680 名前:デフォルトの名無しさん mailto:sage [04/06/24 09:50] goto 677
681 名前:デフォルトの名無しさん mailto:sage [04/06/24 09:58] nop
682 名前:デフォルトの名無しさん mailto:sage [04/06/24 10:11] lea eax, dword ptr[eax]
683 名前:673 mailto:sage [04/06/24 13:10] >>674 > APIの類を使わなければ大丈夫 画面を含む一切の入出力ができなくなりますが
684 名前:デフォルトの名無しさん mailto:sage [04/06/24 14:11] ブートから初めてVESAなり叩けば良い
685 名前:デフォルトの名無しさん mailto:sage [04/06/24 21:45] >>668 は実行可能ファイルとは一言もいってない訳だが。
686 名前:デフォルトの名無しさん mailto:sage [04/06/25 00:58] このページ挙がってないのかな? www.csg.is.titech.ac.jp/~chiba/lecture/os/
687 名前:デフォルトの名無しさん mailto:sage [04/06/26 03:09] gosub 687
688 名前:デフォルトの名無しさん mailto:sage [04/06/27 04:13] >>683 >画面を含む一切の入出力ができなくなりますが 要求事項にないから、いいんじゃない?
689 名前:デフォルトの名無しさん mailto:sage [04/06/27 05:13] >>683 GCC があるんだから自分の好きな言語のフロントエンドを書けばいいじゃん。
690 名前:デフォルトの名無しさん mailto:sage [04/06/27 08:28] 簡単に言ってくれるが、gcc難解すぎて弄る気にならん
691 名前:デフォルトの名無しさん mailto:sage [04/06/27 10:36] >>689 GCCのフロントエンド書いたときあるの?
692 名前:デフォルトの名無しさん mailto:sage [04/06/27 11:41] >>689 gcc使っても>>668 の用件に合わせるのは難しいままだろ? 無知蒙昧な人?
693 名前:デフォルトの名無しさん mailto:sage [04/06/27 17:10] >>689-692 GNU Common Lispでマクロをいじれば何とかなりそう。
694 名前:デフォルトの名無しさん mailto:sage [04/06/27 17:10] www.cminusminus.org/ cs1.cs.nyu.edu/leunga/www/MLRISC/Doc/html/INTRO.html llvm.cs.uiuc.edu/Features.html gcc.gnu.org/onlinedocs/gccint/RTL.html C--, MLRISC, LLVM, RTL... 色々在るけど、誰か使った事ある?
695 名前:デフォルトの名無しさん mailto:sage [04/06/27 23:04] >>685 まあ、ここ見てる奴は「ネイティブコード」と書いてあるからそんな疑問は浮かばんわけだが。
696 名前:デフォルトの名無しさん mailto:sage [04/06/28 00:10] ネイティブコードと、オブジェクト(実行可能)ファイルを混同して考えるのはお前くらいなものだが。
697 名前:デフォルトの名無しさん mailto:sage [04/06/28 00:28] C--は使ったことあるよ。 結構面白いけど、関数型言語とか論理型言語とか、 実装研究がまだまだ行われている言語向けだなあ。
698 名前:デフォルトの名無しさん [04/06/29 18:16] Common Lispのプリプロセッサ(マクロ)って そんなに自由度が高いの?
699 名前:デフォルトの名無しさん mailto:sage [04/06/29 20:58] >>698 自由度は高いよ。 マクロ定義とは実質的にLispコードを生成する関数だとか。 まあ、C++のtemplateもだけど自由度が高ければ高いほど解読しにくいわけで、 達人以外が使っても生産性が大して上がらない気もする。
700 名前:デフォルトの名無しさん mailto:sage [04/06/29 22:39] Lispのマクロは 評価時に展開されるから *プリ*プロセッサとは言わない
701 名前:デフォルトの名無しさん mailto:sage [04/06/30 22:18] >>700 評価に先駆けて展開しといたり、 コンパイル時にも展開できるわけだが。 まあ話を平たくすると、いつでもできるわけだ。
702 名前:700 mailto:sage [04/06/30 23:25] >>701 Lispの評価器に関する知識が必要な話を マクロ=プリプロセッサという世界のの人に 今説明しても混乱するだけかと
703 名前:デフォルトの名無しさん mailto:sage [04/07/01 00:28] >>698 S式を二回評価すると思ってね。(おおざっぱ) 一回目でプログラムの生成、二回目で生成されたプログラムの実行。 LispはデータもプログラムもS式だから、 こういうのは機構的にもプログラミング的にも簡単。 一度遊んでみると良い。
704 名前:デフォルトの名無しさん mailto:sage [04/07/01 12:02] C, C++だと MYMACRO(a,b,c) { ... } // a,b,c,..は可変個引数 から int a=0; int b=1; int c=2; ... my_macro_end(a,b,c); を生成するようなのは書けないでしょ? Lispのマクロはできます。 C++やJavaだとデザインパターンなどで似たようなコードをクラス毎にあちこち で書かないといけない(が、C++のテンプレートでは表現できない)ことがある。 そういう場合にパラメータを与えて雛形からコードを生成するスクリプトをRuby などで書くことを考えましょう。 Lispのマクロなら全部Lispだけでできます。
705 名前:デフォルトの名無しさん mailto:sage [04/07/01 12:03] 後はなんだろう。処理に必要なデータを静的に持っておきたいとしましょう。 例えば、isdigit()のために、その文字が数字かどうかを記録した1バイト文字 256個分のテーブル(文字が数字なら1、数字でなければ0)を定義したいとします。 そこで、 int isdigit_table[] = { 0, 0, 0, ...., 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, ...., 0 }; と書く代わりに int isdigit_table[] = { (eval-when-compile // コンパイル時に実行 int table[256]; char* digits="0123456789"; memset(table, 0, 256); for (char* d=digits; *d!='\0'; d++) table[*d] = 1; return table;) }; みたいなことを書けば、(eval-when-compile ...)で囲んだ処理をコンパイラが 実行して、その結果のテーブルとして同じ中身のisdigit_tableを定義できると 思ってください。 C++だとコンストラクタでもできますね(コンパイル時でなく実行時になりますが)。 要するに、C/C++のマクロ(cpp)が格段に高機能な言語になったとしましょう (C自体では嬉しくないから、RubyとかPHPとか?)。その場合のC,C++に相当する本 体の言語がLispであり、ついでにcppの言語も同じLispになったと考えればいいです。
706 名前:デフォルトの名無しさん mailto:sage [04/07/01 13:58] まあLispは面白い言語なので SICPは読んで損がない本だと思うよ
707 名前:デフォルトの名無しさん [04/07/01 23:20] まぁ、LISPやる奴で実用的なプログラム書ける奴見たこと無いんだけど?
708 名前:デフォルトの名無しさん mailto:sage [04/07/01 23:36] >>707 emacsってそんなに使い物にならない環境なのか。なるほど。 やっぱvi?(違
709 名前:デフォルトの名無しさん mailto:sage [04/07/01 23:38] xyzzyがWin emacsの筆頭?
710 名前:デフォルトの名無しさん mailto:sage [04/07/01 23:58] >>704 C++でならTypeList or boost::mpl使えば書けそう。 まあ流石に100個も200個も可変長引数を渡されると無理だろうけど。
711 名前:デフォルトの名無しさん mailto:sage [04/07/02 00:12] ECMAScriptを解析してくれて、しかも組み込み関数・オブジェクトを定義できるライブラリが欲しい 自作すると変数宣言と組み込み関数・オブジェクトのみになりそうだ
712 名前:デフォルトの名無しさん mailto:sage [04/07/02 00:38] Schemeは括弧さえ折り合いつけば最高の言語の一つだ
713 名前:デフォルトの名無しさん mailto:sage [04/07/02 14:23] >>711 クロスプラットフォームなら spidermonkey とか、 Windows だけでいいなら ActiveScript とか。 どちらでも簡単にできるよ。
714 名前:デフォルトの名無しさん mailto:sage [04/07/02 17:21] >>709 >Win emacsの筆頭 Meadowの方が広く使われてます。
715 名前:デフォルトの名無しさん mailto:sage [04/07/02 22:36] >>713 SpiderMonkeyはかなりよさげだね しかし英語だらけで組み込めるのは当分先か・・w
716 名前:デフォルトの名無しさん mailto:sage [04/07/03 10:17] >>704 そういうプリプロセサ書いて、差し替えれば済む話だと思うけど。 全部 C/C++ でできますよ。(藁
717 名前:デフォルトの名無しさん mailto:sage [04/07/03 10:38] C/C++ではたしかpreprocessor commandsも規格の一部な罠。
718 名前:デフォルトの名無しさん mailto:sage [04/07/03 11:22] プリプロセッサを差し替えるオプションなんてあるの? Visual C++とgccを見たけど見つからなかった。
719 名前:デフォルトの名無しさん mailto:sage [04/07/03 15:40] >>716 それじゃ「コンパイラ書けばできますよ」ってのと変わらないやん.
720 名前:デフォルトの名無しさん mailto:sage [04/07/03 22:50] >>718 自分のプリプロセッサから、コンパイラ呼べばイイだけじゃない?
721 名前:デフォルトの名無しさん mailto:sage [04/07/04 02:06] >>720 そりゃそうだ。でも差し替えるとは言わんな。下らないことをきいてしまった……。
722 名前:デフォルトの名無しさん mailto:sage [04/07/04 09:28] 差し換えるならspecファイルだろ。
723 名前:デフォルトの名無しさん mailto:sage [04/07/04 11:46] >>718 GCC とかならソースあるんだから、適当に修正して実行ファイル入れ替えれば良いんじゃないのか ? >>719 まあ、そりゃそうだけど、コンパイラ書くより多少難易度は低いだろ。
724 名前:デフォルトの名無しさん mailto:sage [04/07/04 16:57] 結局使い物にはならないと。 普通のアプリケーション書くのに特定のコンパイラのバージョンとそれへのパッ チ込みで保守したくはねーなあ。
725 名前:デフォルトの名無しさん mailto:sage [04/07/04 18:28] まあ、このスレ的にはコンパイラまで作ってしまえって事になるかな。 TinyC->.asm位だったら簡単だしね。 俺は#defineなどC言語準拠なプリプロセッサに アセンブラ風の複数行マクロを使えるような物を作って、 言語ごとに微調整しているよ。 ()を使わないバージョンなどね。 エラーを探知するために、##lineっていう 現在のコンパイル行をプリプロセッサ->コンパイラへ通知する命令をつくって、 デバックもしやすくしているよ。
726 名前:デフォルトの名無しさん mailto:sage [04/07/04 21:39] >>724 て言うか、普通のアプリケーション書くのに >>704 みたいなことはあまり必要ないだろ。 マクロプロセサやプリプロセサが高機能だと色々おもしろいけど、実際のところ後の保守が大変だったりするからあまり使わん。 昔使った PL/I のプリプロセサは、IF 文は当然、FOR/WHILE の制御構造や PROCEDURE/FUNCTION なんかの手続き/関数定義までできた。 だから凝った定義を書けば、ソースを短く書けたけど、プリプロセサ文をデバッグする手間を考えたら素直にソースを手で展開した方が早かったよ。(藁 MASM なんかのマクロアセンブラでも同じような経験したことある人は多いと思うよ。
727 名前:デフォルトの名無しさん mailto:sage [04/07/05 01:31] 俺はわりとしょっちゅう欲しくなる方だな。 Lispのマクロで俺言語を作ることを考えると>>726 も想像はできるけど。 >>726 とは逆に最初書くときはベタに展開したソースを書くけど後から 保守性を考えてマクロでまとめることも。あまり凝ったことはしないけどさ。 cppに変数とifとfor eachだけでもあれば世の中もうちっと良かったろうに。
728 名前:デフォルトの名無しさん [04/07/13 22:28] コンパイラとかの参考図書は、よくありますが スクリプト言語の参考図書(定番)は、ごぞんじないですか?
729 名前:デフォルトの名無しさん mailto:sage [04/07/13 22:52] 各OS毎のリソースコンパイラの作り方に触れたサイトってありますか?
730 名前:デフォルトの名無しさん mailto:sage [04/07/14 00:35] >>728 その二つに大きな違いはない。
731 名前:デフォルトの名無しさん mailto:sage [04/07/14 01:11] >>728 コンピュータアーキテクチャの本じゃないか? >>730 構文解析だけじゃなくて、実行機の話してるんじゃないの?
732 名前:デフォルトの名無しさん [04/07/14 01:26] すいませんyacc/lex初心者の質問です。 WIN XPのコンソールから GNUのFLEXとBISONとボーランドのBcc32でコンパイルしてるのですが bisonとflexは通過するのですが 最後のCコンパイラのリンク時に"yyllocが定義されてない"というエラーが出てしまいます。 bison.simpleとbison.hairを見てもよくわからないので なにがまずいのでしょうか?
733 名前:デフォルトの名無しさん mailto:sage [04/07/14 01:39] >実行機 ってなんじゃらほい?
734 名前:デフォルトの名無しさん mailto:sage [04/07/14 11:23] >>728 『インタプリタ進化論』なんかいいのでは。スクリプトに特化した内容ってわけでもないけど。
735 名前:デフォルトの名無しさん [04/07/14 19:49] このスレでよく出てくるyaccやlexってのはソフトウェアなの? それともライブラリの類? で、実際にはどのようなことをするものなの?
736 名前:デフォルトの名無しさん mailto:sage [04/07/14 20:00] >>735 ttp://www.linux.or.jp/JF/JFdocs/Lex-YACC-HOWTO.html
737 名前:735 [04/07/14 21:00] つまり、字句解析や構文解析をするソフトウェアね。 コンパイラにおけるそれらの処理を外部のソフトウェアに 頼ると言うのは有りかね?
738 名前:デフォルトの名無しさん mailto:sage [04/07/14 21:02] >>737 何を言ってるの?
739 名前:ほんたま [04/07/14 21:26] おみゃ〜らよ、おれのスリムドカンはある意味コンパイラよ。 スリムドカンはおれのページにあるから見ちみれ? hp.vector.co.jp/authors/VA015412/ おみゃ〜らよ、おれはいまリソースエディタをつくってるのよ。 スリムドカンに装備させるためよ。 おみゃ〜らよ、コンパイラをつくるのはいいが、リソースエディタのないコンパイラはコンパイラとはいわんぞ! 自分じわかるかな?
740 名前:デフォルトの名無しさん mailto:sage [04/07/15 00:53] >>737 字句解析や構文解析をするソースコードを生成してくれるソフト これ以上は自分で調べてくれ
741 名前:デフォルトの名無しさん mailto:sage [04/07/15 04:40] >>735 あなた、最高に頭悪そうですよ?
742 名前:デフォルトの名無しさん [04/07/15 18:37] 昔、OL進化論っていうのがあったなぁ〜 ちょっと思い出したw
743 名前:デフォルトの名無しさん mailto:sage [04/07/15 19:34] インタプリタ進化論って、絶版じゃなかったっけ? 読みやすい本でいい本だと思うけど、 実行環境の話はそれほど無かったような気がします。 とはいっても、字句/構文/意味解析を作るより 実行環境を作るのって、力業でできますしそんなに難しくないと思いますよ。
744 名前:デフォルトの名無しさん mailto:sage [04/07/15 23:56] My VMをレジスタマシンにするかスタックマシンにするか悩む スタックマシンにすると決めた、するとbytecodeにするかwordcodeにするかまた悩む スピードの為にwordcodeにするならそもそもレジスタマシンにするべきなのかと悩む 一向に前に進みましぇん
745 名前:ほんたま [04/07/16 00:05] おみゃ〜らよ、おみゃ〜らさーん♪ おりはよ、「Slim de Can」を使ってやっとメインウィンドウにコントロールをつけるサンプルの作成に成功したぜ。わはは♪ 「Slim de Can」ってすげ〜な〜、イベントドリブンプログラムが作成できるとこまでついに進化したよ。 おりはもう神だね♪どうよ? hp.vector.co.jp/authors/VA015412/
746 名前:デフォルトの名無しさん mailto:sage [04/07/16 01:05] 全部作れ。
747 名前:ほんたま [04/07/16 13:55] おみゃ〜らよ、おみゃ〜らさーん♪ おりはよ、「Slim de Can」を使ってあるボタンをクリックしたらある処理を行わせ、別のボタンをクリッしたら別の処理をおこなわせるプログラムの作成についに成功したよ。 つまり「Slim de Can」はすでにイブントドリブンプログラムがつくれる環境になっているということを自ら証明したという次第よ。 おい、「Slim de Can」はすでに簡単なゲームくらいはころっとつくれるぞ。誰かつくらんか? 「Slim de Can」ってすげ〜な〜。 おりはもう神だね♪どうよ? hp.vector.co.jp/authors/VA015412/
748 名前:デフォルトの名無しさん [04/07/16 22:00] コンパイラ作るならBNF記法(拡張)についての理解は必須ですか?
749 名前:デフォルトの名無しさん mailto:sage [04/07/16 22:13] 無くても作れるよ。あった方が楽だけど。
750 名前:デフォルトの名無しさん mailto:sage [04/07/17 00:00] context free grammerについては「理解」という程大変なことはない気がする。 # オートマトンを理解するにはちっと勉強が必要になるが、 # それこそ知らなくても何とかなりそう なおLL(1)文法と属性文法を学んでしまえばりっぱな「コンパイラ」が作れると思う。 # リンカとかアセンブラとかの知識は既習だとして
751 名前:デフォルトの名無しさん [04/07/17 03:09] 言語設計はともかく、コンパイラ設計となったら フロントエンドよりバックエンドのが難しいというか 面白いと思うんだが、どうしてフロントエンドの話しか出ないんだろうか?
752 名前:デフォルトの名無しさん mailto:sage [04/07/17 03:43] たぶん、そこまで行きつかない奴しかこのスレにいないから。
753 名前:デフォルトの名無しさん mailto:sage [04/07/17 09:41] バック部のトピックス ・並列化(ループ,タスク.手続き間解析は必須) ・別名解析(フロー依存はまだ重い) ・SSA(冗長コピーをどう減らす? 別名の扱いも) ・コピー伝播(非常に重要.でも語ることは余りないか) ・部分冗長性削除(やりすぎると性能悪化することも.ライブレンジを考慮) ・CPS(手続き型ではやらんか) ・レジスタ割付け(PowerPCとかなら素直だが,制約のきついCPUだと面倒) ・ソフトウェアパイプライン(最内からやらない手法が最近発表されてた) ・命令スケジューリング(コンパイル時間爆発の主犯) ・SIMD命令やDSP命令の生成(上から下までからむので大変.パターンマッチしかない?)
754 名前:デフォルトの名無しさん [04/07/17 18:50] 本日、佐々政孝氏の「プログラミング言語処理系」という本買いました。 コンパイラについてちゃんと学んでいこうかと思います。
755 名前:デフォルトの名無しさん mailto:sage [04/07/17 19:02] バック部はCにトランスレートする事で済ませちゃってるから、あんまやらないんだよな。 とはいっても、最近の仕事でそういうのをする必要もあったりして 書籍紹介とかやってもらえます?
756 名前:デフォルトの名無しさん mailto:sage [04/07/17 19:07] そういや 21st Century Compilers 読んだ人いる?
757 名前:デフォルトの名無しさん mailto:sage [04/07/17 19:57] あぁ、それね…。2005年11月15日に延びたみたい。_| ̄|○ www.aw-bc.com/catalog/academic/product/0,4096,0321131436,00.html Copyright: 2006ってなってるからもっと延びるかも…
758 名前:デフォルトの名無しさん [04/07/17 20:18] バックエンド「も」それなりに解説している本としては龍本はもちろんのこと、appel本や中田本がありますね。 龍本がバックエンド概要集だとすれば、 appel本が実践本、中田本が理論本といった感じでしょうか? バックエンドオンリーな変り種としては Robert Morgan: Building an Optimizing Compiler (ISBN 1-55558-179-X) ってのがあります。こいつは本当にバックエンドしか書いていません。
759 名前:デフォルトの名無しさん [04/07/17 20:21] いまだに龍本なの? 進歩ないね。
760 名前:デフォルトの名無しさん mailto:sage [04/07/17 20:54] 何でそんなに詳しいのに新たな言語を作ろうとしないの?
761 名前:デフォルトの名無しさん mailto:sage [04/07/17 20:57] >>760 何でそんな労力割かなきゃならぬ?
762 名前:デフォルトの名無しさん mailto:sage [04/07/17 21:05] >>757 がぁん。評判よければ夏休みにでも読もうと思ってたんだが。
763 名前:デフォルトの名無しさん mailto:sage [04/07/17 21:17] 目を通すだけで満足だから何も作らんのだろうな
764 名前:デフォルトの名無しさん mailto:sage [04/07/17 21:21] バックエンドまで作りこんだ言語を書いても、それで食ってける人はごく少数だし。 理屈を理解して普段のプログラミングに生かせれば、それで良いかと。
765 名前:デフォルトの名無しさん mailto:sage [04/07/17 21:36] >>761 本当はコンパイラの原理とかよく分かって無いんだよな?
766 名前:デフォルトの名無しさん mailto:sage [04/07/17 22:08] 原理を理解→新しい言語、でもあるまいに
767 名前:デフォルトの名無しさん mailto:sage [04/07/17 23:31] >>760 一番多い需要は新しい言語の作成ではなく、特定分野特化物だからだよ 趣味の人は確かに新しい言語って事になるんだろうけどね。
768 名前:デフォルトの名無しさん mailto:sage [04/07/18 00:44] 言語ビジネスは死々累々とはMatz氏の言
769 名前:デフォルトの名無しさん mailto:sage [04/07/18 01:01] >>768 つまり「俺ってば勝ち組w」と主張されたのですね?
770 名前:デフォルトの名無しさん mailto:sage [04/07/18 01:11] >>764 その反対でバックエンドがほとんどのお仕事もあるよ、 特殊なDSPとかの強力オプティマイザ付き簡易言語関係とか。
771 名前:デフォルトの名無しさん [04/07/18 13:04] 割込みすいません、bisonの-v出力で得られる State番号と、もとのソースの行番号を関連づける情報ってどこでしょうか? 同様に、 Rule番号と、もとのソースの行番号を関連づける情報ってどこでしょうか? bisonマニュアルやbison本(といっても古いだけですが)を見ても、載ってませんでした。
772 名前:デフォルトの名無しさん mailto:sage [04/07/18 14:25] >>771 行番号との関連? 別に行番号とは関連しないんじゃない?
773 名前:771 [04/07/18 17:10] どうも、Conflict が発生するようで、いろいろと原因を探ってるんですが、 「State何番が何番とconflictした。」とか出て来るんですが、 具体的にソースのどこがいけないのか場所を探すのに、いつも苦労しているのです。
774 名前:デフォルトの名無しさん [04/07/20 17:56] 構文解析器を作るのに正規表現が必要になりますけど、 正規表現の構文解析ってどうすりゃいいんでしょうか? ものすごく再帰してるんですけど?
775 名前:デフォルトの名無しさん mailto:sage [04/07/20 17:57] 再帰っつーか永久ループですね。
776 名前:デフォルトの名無しさん mailto:sage [04/07/20 18:22] >>774 >構文解析器を作るのに正規表現が必要になりますけど、 無くてもできます
777 名前:デフォルトの名無しさん mailto:sage [04/07/21 00:38] >>774 有限オートマトンでぐぐるか、適当な正規表現ライブラリのソースを読め。
778 名前:デフォルトの名無しさん [04/07/29 19:55] FLEXについて調べているんですが、よくわからないので質問させてください。 UNIXで書かれた字句解析ソース(moto.l)をWindows上で使いたいのですが、 これってWin用のFLEXを使用してmoto.lから、moto.cを作成して それをVisualStudio.Netなんかで、ビルドすればいいんでしょうか? Win用FLEXで吐き出されたmoto.cをビルドしてもエラー出まくりなもので・・・・ なにかうまい方法などあるんですか? (なぜか元の字句解析ソース(moto.l)も一緒にビルドしてしまいエラーになりま す。。。) わかる方がいらっしゃいましたら、 ご教授お願いします。
779 名前:デフォルトの名無しさん mailto:sage [04/07/29 20:01] >>778 なんのエラーが出てます?
780 名前:デフォルトの名無しさん mailto:sage [04/07/29 22:05] なんとなく改行コードの問題?
781 名前:>>778です [04/07/30 11:15] >>779 >>780 レスありがとうございます 改行コードは、LFからCR+LF 文字コードEUCからSJIS に変更をかけ、「bison & flex compiler for Windows GUI」を使って コンパイルをかけ、できたCソースを.NET2003でビルドかけました。 一応、エラーは 「Zsscanf:1番目の引数を'unsigned char*'から'const char*'に変換できません」 というのが、大量にでました。 (これは、Zsscanf関数を大量に使用しているんででています。) また、warningとして 「C4244 '=' _W64 int から intに変換しましたデータが失われているかもしれません」 というのが、たいりょうに出ています。 もしよかったら、ソースをお送りしますが・・・ よろしくお願いします。
782 名前:デフォルトの名無しさん mailto:sage [04/07/30 11:54] >>781 そういう場合は、ここに貼り付けて do.sakura.ne.jp/~junkroom/cgi-bin/megabbs/lounge/index.html
783 名前:> [04/07/30 12:32] >>782 さん こちらにCソースファイルを貼り付けました。 よくわからなかったので、まちがってスレを立ててしまいましたorz do.sakura.ne.jp/~junkroom/cgi-bin/megabbs/readres.cgi?bo=lounge&vi=1091157983&rm=50 すみませんが、よろしくお願いします。 これでだめでしたら、FLEXソースも貼り付けますので・・・
784 名前:デフォルトの名無しさん mailto:sage [04/07/30 13:00] >>783 あぅ、上手く行っても、変更点の説明がしにくいと思うので、ソースもよろしこ。 #なんとなく見えてますが、上手く行くかどうかは不明。
785 名前:> [04/07/30 13:09] >>784 さん 元のFLEXソースを do.sakura.ne.jp/~junkroom/cgi-bin/megabbs/readres.cgi?bo=lounge&vi=1091157983&rm=50 においておきます
786 名前:784じゃないけど mailto:sage [04/07/30 13:35] yytext は YY_CHAR* 型で,これは unsigned char * の typedef になっている. Zsscanf は Zsscanf(const char*, ...) と定義されている. Zsscanf(yytext, ....) というように呼び出しをしたい. ということで 1. Zsscanf の第1引数の型を unsigned char * にするか 2. Zsscanf の呼び出し時に毎回キャストするか のどっちかで対処できるんじゃないかと思う.
787 名前:デフォルトの名無しさん mailto:sage [04/07/30 13:55] 3. コンパイラのcharをunsignedにするオプションを指定する
788 名前:ありがとうございます!! [04/07/30 14:18] みなさん ありがとうございます。 とりあえず>>786 さんの 「1. Zsscanf の第1引数の型を unsigned char * にするか」で 対応し、エラーを回避させました。 それともう一つ基本的な質問ですが、 この作成されたCソースファイルは、 どのように動作させればいいのでしょうか? ライブラリとして動作させる場合、 どの関数をよべばよろしいのでしょうか? (main関数を作成し、それから呼ぶのもどうすればいいのでしょうか?) すみませんが、ご教授お願いします。
789 名前:デフォルトの名無しさん mailto:sage [04/07/30 14:23] >>785 とりあえず、こちらはCygwinのflexしかないので、それでのやり方を説明しておきます。 まず、この部分 int nmatch = 0; int len; const char *base; char buf[255]; va_list ap; va_start(ap, fmt); char skipflag; va_start(ap, fmt) の後に char skipflag がありますが、これはC言語の構文として許されません。 以下のように書きます。 char skipflag; int nmatch = 0; int len; const char *base; char buf[255]; va_list ap; va_start(ap, fmt); コンパイル方法 www.cygwin.com/ より "Install or update now!" をクリックして実行してください。 あとはメッセージにしたがって、インストールするのですが、パッケージの選択のところで flex を入れておく事。 flexの入っているフォルダーにパスを通したら、 flex flex_test.l cl flex_test.c 以上です、 あと、_yywrap _yylex はちゃんと定義して置いてください。 出力結果をC++としてコンパイルしたいのであれば、786氏の意見を参考すれば良いかと思います。
790 名前:デフォルトの名無しさん mailto:sage [04/07/30 14:35] >>788 yylexを呼び出します。 そのあたりは初歩の初歩部分なので、適当に参考書でも買ってきて調べてみるとよいでしょう。 入出力の特化は結構ややこしいので・・・
791 名前:>>778です [04/07/30 14:53] みなさん いろいろ教えてくださってありがとうございます。。。 >>790 さん yylex()を呼び出すというのまでは、調べたのですが これを呼び出すとDOS窓で入力待ちなのかどうかは、わかりませんが 止まったままになってしまします。 いろんなサンプルを見てみたら 単に return yylex(); としているだけなのが、あったので このように書いていたのですが・・・・ こういう呼び出し方ではいけないのでしょうか? 何度も何度もすみませんが、 ご教授お願いします。
792 名前:デフォルトの名無しさん mailto:sage [04/07/30 14:59] >>791 一番簡単な方法は yyin = fopen( ... ) ; として yylex() を呼び出します。
793 名前:>>778です [04/07/30 15:18] >>792 さん ファイルからの読み込みではなく 指定された文字列を受け取って それを変換かけてから、変換後の文字列を 返すというようなプログラムを組みたいのです。 yytextに指定文字列を入れてから yylex()を呼び出せばよろしいのでしょうか? (どこかのサンプルでこのような形のものがあったのですが・・・)
794 名前:デフォルトの名無しさん mailto:sage [04/07/30 15:22] >>793 ちがいまーす!!(^^; 実は貴方のやりたい事は、書き始めると結構ヘビーです。 素直にflexの本を買ったほうが良いかと・・・・ どうしても買いたくなげは YY_INPUT マクロを気合で読んでみるとか?
795 名前:> [04/07/30 15:32] >>794 さん では、入力したい文字列を 一度ファイルに落としてから 再度、yyin = fopen( ... ) ; で読み込むという方法だと まずいでしょうか?
796 名前:デフォルトの名無しさん mailto:sage [04/07/30 15:36] >>795 それで問題がなければ、それでも良いかと・・・・
797 名前:>>778です [04/07/30 16:27] 今のサンプルFLEXプログラムは「H16/7/16」を「平成16年7月16日」に 変換するものなんですが、ファイルに「H16/7/16」を書き込み、保存してから yyin = fopen( ... ) ; として yylex() を呼び出すと、「ヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘ」などと 文字化けが出てしまい、途中で終了してしまいます。 これって何が原因があるのでしょうか?
798 名前:デフォルトの名無しさん mailto:sage [04/07/30 17:17] cygwin でやるんだったら、ソースファイルとテスト用入力ファイルは EUC にしておく。lex(flex) はマルチバイト文字をマルチバイト文字として扱わないからDIGIT [0123456789] の書き方だとダメ。 DIGIT (0|1|2|3|4|5|6|7|8|9) だと動くみたい。
799 名前:デフォルトの名無しさん [04/07/31 00:18] すいませんが、bison.output の見方を解説しているページとか ご存知ありませんか?
800 名前:デフォルトの名無しさん mailto:sage [04/07/31 01:14] >>799 見方を理解しようとしないで、LR解析をある程度理解した方 が良いと思うよ。 そうするとbison.outputの意味が分かるようになる。
801 名前:799 [04/07/31 22:52] LR解析を理解するための、書籍とかありますか?
802 名前:デフォルトの名無しさん mailto:sage [04/07/31 22:54] はじめてのLR
803 名前:デフォルトの名無しさん [04/07/31 22:54] 1つの先読みだけしか許されないというのは、かなり不自由かも。 LR(1)を完璧に実装した yacc もどきってご存知ないですか?
804 名前:800 mailto:sage [04/08/01 00:44] 800ゴット >>799 =801 コンパイラ系の書籍ならば、大抵構文解析の説明はあるでしょ。 手元の本だと『ドラゴンブック』と『コンパイラの理論と実現』と 『コンパイラ(昭昇堂)』にLR解析の話が書いてある。 >>803 知らないけど、あまり不自由を感じたこと無いな>先読み1 たいしたもの作ってないからかな。
805 名前:デフォルトの名無しさん mailto:sage [04/08/01 01:08] Catalog of Free Compilers and Interpreters. www.idiom.com/free-compilers/
806 名前:デフォルトの名無しさん mailto:sage [04/08/01 02:53] >>803 LLだけとboost::splitを使ってみるとか。 boost.cppll.jp/HEAD/libs/spirit/index.html でも、文法を変えたほうがいいかもね LALR(1)の鬼畜パーススピードを捨てるのはもったいないべ。
807 名前:デフォルトの名無しさん mailto:sage [04/08/01 03:41] LR LL LALR ってなんの略? (1) ってのは1つ先見るってことでよい?
808 名前:デフォルトの名無しさん mailto:sage [04/08/01 04:04] manの番号
809 名前:デフォルトの名無しさん mailto:sage [04/08/01 06:21] >>807 Lonely Rotary Lonely Lolita Lolita and Lonely Rotary
810 名前:デフォルトの名無しさん mailto:sage [04/08/01 12:50] >>807 LR:左から読んで右から導出 LL:左から読んで左から導出 LALR:ルックアヘッド付きLR
811 名前:デフォルトの名無しさん mailto:sage [04/08/01 12:54] 【LR】Left-to-right scanning, Right-most derivation in reverse 【SLR】Simple LR 【LALR】LookAhead LR 括弧内は先読みのこと
812 名前:デフォルトの名無しさん [04/08/01 15:47] LALR(3) ぐらい欲しい。
813 名前:デフォルトの名無しさん mailto:sage [04/08/01 15:57] >>812 探せば GLR 使えるパーサジェネレータもあるぞ。
814 名前:デフォルトの名無しさん mailto:sage [04/08/01 16:49] >>812 漏れはむしろ「欲しい例」を出して欲しい。
815 名前:デフォルトの名無しさん mailto:sage [04/08/01 18:10] 世の中LALR(1)が圧倒的な主流。 それ以外はただの学問的な研究対象か趣味。 まぁ、炉利趣味と同レベルw
816 名前:デフォルトの名無しさん mailto:sage [04/08/01 18:11] DelphiはLALRじゃないのでは?
817 名前:デフォルトの名無しさん mailto:sage [04/08/01 18:40] >>815 C++ は LALR(1) に収まらないワケだが。
818 名前:デフォルトの名無しさん [04/08/01 21:49] >>817 それは書き方が悪いからでしょ? あんなもん、書こうとおもえばいくらでも当てはめられる。 (と思う。)
819 名前:デフォルトの名無しさん mailto:sage [04/08/01 21:59] 俺はめんどくさいから再起下降でいいよ
820 名前:デフォルトの名無しさん mailto:sage [04/08/01 22:38] 俺は再帰降下でいいや
821 名前:デフォルトの名無しさん mailto:sage [04/08/01 22:40] 抗菌加工でいいや
822 名前:>>778です [04/08/02 15:41] お礼が遅れましてもうしわけございません。 ありがとうございました。 >>794 さんがおっしゃっていた YY_INPUT のサンプルをいろいろ 探したのですが、これの他にもDOS窓から入力された文字列を 変換するなんていうマクロなどありますでしょうか?
823 名前:デフォルトの名無しさん mailto:sage [04/08/02 16:56] >>822 YY_INPUTのサンプルって例えば何? サンプルとかじゃなくて、実際のflexが生成するYY_INPUTマクロを見た方がいいよ。 さらにlexの実装によっては、どう工夫してもお望みのことができないもの もあるから、「文字列から入力」っていうのは可搬性の面ではよくない。 とりあえず、flexだったらYY_INPUTを定義し直せばOK YY_INPUTってのは YY_INPUT(buffer, result, bufsize) buffer:文字列を格納するバッファ result:実際に読み込んだ長さ bufsize:バッファの大きさ で、デフォルトではFILE *yyinから読むようになってるはずだから、それを 君が解析した文字列から読む(コピーする)コードにすれば良いね。 そのまま他の環境にコピーしても動かない可能性があるので注意。
824 名前:>>778です [04/08/02 17:55] >>823 さん レスありがとうございます。 確かにYY_INPUTは、FILE* yyinを使って処理していますね。 っということは、scanfなどで入力した文字列をYY_INPUT(buffer, result, bufsize) のbufferにコピーしてあげるようなコードを書けばよいということでしょうか? また、違う例として、DBに格納されているデータを取得してきて、 字句変換させるために FILE* yyinならぬextern char* yyin_charなるものを作成して まずはそこにDBのデータをコピーし、YY_INPUT内でbufferにyyin_charを コピーしてあげるような動きでよいのでしょうか? また、実際にmain関数などから、YY_INPUTを呼ぶには、直接呼んでも よろしいのでしょうか? 質問攻めでもうしわけございませんが よろしくお願いします。
825 名前:823 mailto:sage [04/08/02 19:18] >>842 おいおい、なんか間違えてるぞ。前半は正しい感じだけど、最後のが…? 質問に答えるのは構わないけど、その前に一つ質問させてくれ。 Q. YY_INPUTマクロとは何でしょうか? (何をするものか、誰が使うものか、どこから使うものか、yylex()と YY_INPUTの関係とかに注目。) これに適切に答えられれば、>>824 にあるような質問は無いと思う。 さらにおまけとして…、YY_UNPUTとは何? (ヒント:flexの生成するlex.yy.cにすべての答えがある。)
826 名前:デフォルトの名無しさん [04/08/02 22:21] 結局 >>815は正しいの?
827 名前:デフォルトの名無しさん [04/08/02 22:22] >>800 質問です。 Lex & Yacc (Nutshell) はいかがでしょうか? これもLRを解説してますか?
828 名前:デフォルトの名無しさん mailto:sage [04/08/02 22:31] >>826 すぐ下で答えが出てるじゃん。
829 名前:800 mailto:sage [04/08/02 22:46] >>827 解説してないね。 でも、典型的なシフト還元衝突などの説明と回避方法の解説はある。 ってかこの本もう絶版じゃない? 手に入るの?
830 名前:デフォルトの名無しさん mailto:sage [04/08/03 17:27] >>791 yyinを指定しないと入力が標準入力になるからそうなるのでしょう
831 名前:デフォルトの名無しさん mailto:sage [04/08/03 17:55] yyworld
832 名前:デフォルトの名無しさん [04/08/06 23:12] >>829 一応あるみたいです。 やはり、ドラゴンを理解しないと shift/reduce & reduce/reduce の衝突を完全回避することは難しいですかね?
833 名前:デフォルトの名無しさん [04/08/06 23:13] 在庫だと思われます。↑
834 名前:デフォルトの名無しさん [04/08/09 23:38] 注文してしまった。
835 名前:デフォルトの名無しさん [04/08/30 00:46] age!
836 名前:デフォルトの名無しさん [04/08/30 14:29] 「コンパイラ構成法」の原田賢一氏の研究室のサイトが見つかりません。 移転したんでしょうか? どなたか、ブックマークつけてらっしゃる方います? コンパイラ構成法のソースコードをゲットしたいんですが。
837 名前:デフォルトの名無しさん mailto:sage [04/09/01 10:01] う〜ん。名前空間の実装法がわからん。 だれか、参考になるサイトか書籍、知らないか? クラス定義と同じ方法で良いのかなぁ?
838 名前:デフォルトの名無しさん mailto:sage [04/09/01 10:32] >>837 シンボルテーブルのスタックを作ればいいだけじゃないか?
839 名前:デフォルトの名無しさん mailto:sage [04/09/01 13:55] >>838 >シンボルテーブルのスタックを作ればいいだけじゃないか? それってディスプレイ・・・・・だよねぇ。 ブロックを開くときに名前を覚えておくようにするんだろうか?
840 名前:デフォルトの名無しさん mailto:sage [04/09/01 19:40] 例えばC++には複数の名前空間があってややこしい キーワード 演算子 プリプロセッサ 型 変数 namespace これらは関係を持ったりするしね まあプリプロセッサを除いて基本はみな同じだけど
841 名前:デフォルトの名無しさん mailto:sage [04/09/01 19:42] 名前空間は 関数 namespace クラス だけじゃないのか?
842 名前:デフォルトの名無しさん mailto:sage [04/09/01 19:46] ::、using、export、importが絡むとさらに複雑になる
843 名前:デフォルトの名無しさん mailto:sage [04/09/01 19:57] :: using は簡単 export importはどうだろ
844 名前:デフォルトの名無しさん mailto:sage [04/09/01 20:24] >>840 何を持って基本というか知らんが、実装しようと思うと namespace は深いぞ。 ADL と関数テンプレートとか。
845 名前:デフォルトの名無しさん mailto:sage [04/09/03 18:29] 所詮 namespace は、バカ避けの機能。 優秀なコンパイラ屋が血反吐を吐きながら実装するものの、 それによって実行速度が向上する訳も無く・・・ そもそも優秀なプログラマならば、最初から namespace など 必要としない確固としたコーディングスタイルを身に着けている。 そしてバカなプログラマは、せっかく実装してもらった機能の 使い方自体が分からない。バカは所詮バカ。 namespace って、一体何の為にあるんだろう・・・
846 名前:デフォルトの名無しさん mailto:sage [04/09/03 18:50] ↑ホームラン級のバカ
847 名前:デフォルトの名無しさん mailto:sage [04/09/03 19:24] 所詮 型 は、バカ避けの機能。 優秀なコンパイラ屋が血反吐を吐きながら実装するものの、 それによって実行速度が向上する訳も無く・・・ そもそも優秀なプログラマならば、最初から 型 など 必要としない確固としたコーディングスタイルを身に着けている。 そしてバカなプログラマは、せっかく実装してもらった機能の 使い方自体が分からない。バカは所詮バカ。 型 って、一体何の為にあるんだろう・・・
848 名前:デフォルトの名無しさん mailto:sage [04/09/03 20:04] ダウト。残念ながら、型によって実行速度は上がるんだよ。
849 名前:デフォルトの名無しさん mailto:sage [04/09/03 20:15] いくらなんでも型は重要だろう。
850 名前:デフォルトの名無しさん mailto:sage [04/09/03 20:16] >>845 評価尺度が実行速度だけとは……。1960 年代の人間ですかい?
851 名前:デフォルトの名無しさん mailto:sage [04/09/03 21:23] 60年代だったら消費メモリも重要だな。
852 名前:デフォルトの名無しさん [04/09/04 01:00] 所詮「コンパイラ・スクリプトエンジン」相談室 は、バカ避けのスレ。 優秀なプログラマが血反吐を吐きながら回答するものの、 それによって理解が向上する訳も無く・・・ そもそも優秀なプログラマならば、最初からこのスレ など 必要としない確固とした技術を身に着けている。 そしてバカなプログラマは、せっかく回答してもらった説明の 内容自体が分からない。バカは所詮バカ。 このスレって、一体何の為にあるんだろう・・・
853 名前:デフォルトの名無しさん mailto:sage [04/09/04 01:01] >>852 ワラタ
854 名前:マイク ◆yrBrqfF1Ew mailto:sage [04/09/04 01:22] namespaceは最高だな。 感動もんだ。
855 名前:デフォルトの名無しさん mailto:sage [04/09/04 11:21] >>852 無理してまで回答は僕もしないし、他の人もしてないんじゃない。 コンパイラやスクリプトを作ろうという人口は少ないから過疎なのは仕方が無いが 僕は日ごろから巡回しているし、このスレ向きの質問書けば回答は帰ってくるよ。 もちろん僕もクレクレ君とOO厨房の言語論争的な話題は放置してるけどね。;-P キミには分らないかもしれないが機能しいてない掲示板ではないよ、 進行が遅いに加えて近頃アホっぽい話題が充満しているだけだ。
856 名前:デフォルトの名無しさん mailto:age [04/09/04 12:52] >>855 ( д ) ゚ ゚
857 名前:デフォルトの名無しさん mailto:sage [04/09/04 16:13] ひさびさにコピペにマジレス見た・・・
858 名前:デフォルトの名無しさん mailto:sage [04/09/04 16:48] 型の実装について教えてください。 現在 int のみのコンパイラは作れたのですが float などを追加しようとすると例えばスクリプト中の変数に型情報を持たせて 実行するときに int か float か if で判断するしか無いのでしょうか? 2つならまだしも double とか char を追加するとなると代入するとき等の型判定で 組み合わせの爆発が起きそうなのですがなにか良い方法はないでしょうか? 速度的に。
859 名前:デフォルトの名無しさん mailto:sage [04/09/04 17:02] テーブル作るか int float を別文法にしてしまうか…… てか、こんな事は自分で考えろ。
860 名前:デフォルトの名無しさん mailto:sage [04/09/04 17:07] >>858 >現在 int のみのコンパイラは作れたのですが >float などを追加しようとすると例えばスクリプト中の変数に型情報を持たせて >実行するときに int か float か if で判断するしか無いのでしょうか? って、そんなのコンパイル出来たって言えないやん。。。 何の為の型なのさ?
861 名前:デフォルトの名無しさん mailto:sage [04/09/04 17:11] 変数に型情報があってコンパイラを作っているのなら、 コンパイルの時点で型にあったコードを生成するだけだろ。 実行時じゃなくて。
862 名前:デフォルトの名無しさん mailto:sage [04/09/04 17:12] >>860 ハァ
863 名前:デフォルトの名無しさん mailto:sage [04/09/04 18:27] >>860 バカ避けの機能
864 名前:デフォルトの名無しさん mailto:sage [04/09/04 18:59] >>859-861 おぼろげながら自分の間違いが分かってきました。 どうもです。 もう少し考えてみます。
865 名前:デフォルトの名無しさん mailto:sage [04/09/04 20:09] >>858 実行時に型チェックするかコンパイル時に型チェックするかは、言語の設計に 大きく関わってくるけど、まぁどっちでも良い。 コンパイル時に型チェックしたければ、たとえば Yacc 風に書くと IDENT '=' experssion: { // まず IDENT が変数名であることを確認 // 次に experssion の型が IDENT の型に変換できることを確認 // 型変換して代入するコードを生成 } ; ってな感じ。型変換判定は素直に実装すると型の数の 2 乗のオーダーで増えるが、 テーブルにでも書いておけば大した手間ではない。ベタに if - else とかで書くと死ぬ。
866 名前:デフォルトの名無しさん [04/09/04 21:46] YACC はバカ避けのソフト。
867 名前:デフォルトの名無しさん mailto:sage [04/09/04 22:46] 作ってて楽しけりゃなんだっていい
868 名前:デフォルトの名無しさん mailto:sage [04/09/05 06:46] ( ゚д゚)、ペッ
869 名前:デフォルトの名無しさん mailto:sage [04/09/05 15:32] 型についてはシンボルテーブルで管理すれば良いでしょ。 シンボル表のエントリに型情報をもたせ、それが基本型を ポイントすることで、個々のシンボルの型を表現します。 struct や class などの基本型をまとめた型を作るときも シンボル表にそれらの新しい型のエントリを作って、基本型を リスト状にポイントしていけばよいです。
870 名前:デフォルトの名無しさん [04/09/05 17:16] 所詮 lex は、バカ避けのソフト。 (以下ry
871 名前:デフォルトの名無しさん mailto:sage [04/09/05 17:47] >>855 wrota
872 名前:デフォルトの名無しさん mailto:sage [04/09/05 19:51] >>870-871 意味の無いレスいれるの止めてくんない、近頃こんなレスばっかりで 前後の見通しが悪くてかなわないんだよ、邪魔だから適当な言語死滅スレにでもいってくれ。
873 名前:デフォルトの名無しさん mailto:sage [04/09/05 20:08] その発言は結局荒れるもとになるよ。 そして、大量に無駄な情報のなかから有用なものを抜き出すのが2chの利用法だと思う。
874 名前:デフォルトの名無しさん mailto:sage [04/09/05 20:12] 過疎スレでやってくれるなよなとは思う
875 名前:デフォルトの名無しさん mailto:sage [04/09/07 17:20] 855=872
876 名前:デフォルトの名無しさん [04/09/13 23:46:35] >>872 お前のレスこそ余計。
877 名前:デフォルトの名無しさん [04/09/13 23:47:49] >>872 wrota
878 名前:デフォルトの名無しさん mailto:sage [04/09/14 18:08:01] 876=877 wrota書くのに一分もかかってんじゃねーよ。
879 名前:デフォルトの名無しさん [04/09/14 23:04:15] >>878 != だが何か?
880 名前:デフォルトの名無しさん mailto:sage [04/09/14 23:09:55] 3日後 870 名前:デフォルトの名無しさん 投稿日:あぼーん あぼーん 871 名前:デフォルトの名無しさん 投稿日:あぼーん あぼーん 872 名前:デフォルトの名無しさん 投稿日:あぼーん あぼーん 〜略〜 879 名前:デフォルトの名無しさん 投稿日:あぼーん あぼーん 880 名前:デフォルトの名無しさん 投稿日:あぼーん あぼーん 何のためのスレなんだか
881 名前:デフォルトの名無しさん mailto:sage [04/09/14 23:28:47] なんか恐ろしく自己中なヤツがいるようですが…
882 名前:デフォルトの名無しさん [04/09/15 00:36:49] 名前もあぼーんになるはずだが
883 名前:デフォルトの名無しさん mailto:sage [04/09/15 01:04:33] このスレ869までしか表示されないな。
884 名前:デフォルトの名無しさん [04/09/15 22:07:01] まぁ、もしアボーンされるとしても、 >>880 が最初だろw
885 名前:デフォルトの名無しさん [04/09/20 01:53:27] gccの&&label(Labels as Values)みたいな機能を実現するには、 ラベルは相対じゃなくて、絶対アドレスを取得しなきゃならんのだよね。 void *ptr = &&label; goto *ptr; label: の場合は // void *ptr = &&label; mov DWORD PTR[ebp-04h], label_EA // goto *ptr; mov eax, DWORD PTR[ebp-04h] jmp eax label: こんな感じかな? でも なんで goto ptr; じゃないんだろう? ptrと *ptr は何を指すのか はて。。。
886 名前:デフォルトの名無しさん [04/09/20 03:29:47] できたできた。 どうやら型をvoid*にしたのはgccの気まぐれらしい。 ラベルの型なんてないからねえ。 int ptr = &&label; goto ptr; これだとラベルと区別つかないからvoid*にしただけか。 gccは変な構文ばっかだな。
887 名前:デフォルトの名無しさん mailto:sage [04/09/29 19:53:22] VC++でflex++/bison++でリンカエラー回避できますか?
888 名前:デフォルトの名無しさん [04/09/30 22:56:07] アフォはスルーされるという典型例だなw
889 名前:デフォルトの名無しさん [04/10/05 23:30:22] C++、Javaで同じスクリプトを動かしたいんですが、 自作するしかないでしょうか。 LuaがJavaに対応していれば一番いいんですが。
890 名前:デフォルトの名無しさん mailto:sage [04/10/06 00:42:29] >>889 Schemeとか、どっちでも使える言語も結構ある。
891 名前:デフォルトの名無しさん mailto:sage [04/10/06 00:57:17] そういう意味ではLISP系探すと強いね。 とりあえずS式が読めればなんでもいいわけだし。
892 名前:デフォルトの名無しさん mailto:sage [04/10/06 10:39:52] >>889 TCLとか
893 名前:デフォルトの名無しさん mailto:sage [04/10/06 12:59:19] >>889 JavaSript というか ECMAScript がいいんじゃない? 簡単だし。
894 名前:デフォルトの名無しさん mailto:sage [04/10/06 18:10:12] みんな自分が使っているのを薦めている予感。
895 名前:デフォルトの名無しさん [04/10/06 21:08:06] bashスクリプトがイイと思うよ。
896 名前:889 mailto:sage [04/10/06 21:33:47] どうもです。 その辺りのキーワードを頼りに探してみます。 ありがとうございました。
897 名前:デフォルトの名無しさん mailto:sage [04/10/06 22:50:27] とりあえずECMAScript(の実装)が簡単だという意見が本気でわからん
898 名前:デフォルトの名無しさん mailto:sage [04/10/06 22:53:42] LISPは1000行も書けばそこそこ使えるものができる Javaだともっと短いかも
899 名前:デフォルトの名無しさん mailto:sage [04/10/06 23:04:05] >>897 >C++、Javaで同じスクリプトを動かしたいんですが、 >自作するしかないでしょうか。 って質問だったので、C++とJava での実装が容易に利用できる ECMAScript を勧めました。
900 名前:デフォルトの名無しさん mailto:sage [04/10/06 23:14:01] ECMA Scriptだと、MozillaのSpiderMonkeyとRhinoが 良さそうだね。
901 名前:デフォルトの名無しさん mailto:sage [04/10/06 23:28:14] Pythonは?
902 名前:デフォルトの名無しさん mailto:sage [04/10/06 23:31:24] >>901 ぴちょん(・∀・)!
903 名前:デフォルトの名無しさん mailto:sage [04/10/08 08:18:15] ネイティブコンパイルする処理系を作成中です
904 名前:デフォルトの名無しさん mailto:sage [04/10/09 09:13:05] 完成です
905 名前:デフォルトの名無しさん mailto:sage [04/10/09 14:51:55] じりじり
906 名前:デフォルトの名無しさん mailto:sage [04/10/09 16:05:06] >>904 晒せ
907 名前:デフォルトの名無しさん [04/10/09 22:31:21] 処理系のテストってみなさんどうしてますか 構文、演算子ごとに全パターン網羅できてますか? ある組み合わせで不具合が出る可能性もあるから、 どうがんばっても全部網羅したとはいえませんよね 某スレのD言語なんかろくにテストされてないのがまるわかりですし ある程度テストパターンの自動作成ができればよいのですが そういうアイデアで何かありませんか?
908 名前:デフォルトの名無しさん [04/10/09 23:31:27] 例えばifが構文のキーワードならif + 1のような並びは構文エラーとなるべきですが、 こういうのはyaccを使った場合も含めてエラーとなることは予測できたとしても 実際にエラーになることの検証まではされていないのが現状だと思います。 これは言語処理系に限った話ではないですが、予測の付かないユーザーの ランダムな入力に対し、はたして適切な処理をしているのかどうか?を検証する 確立された方法はあるのでしょうか? test_if_branch() { int x; x = 0; if (x) x = 2; test_assert(x==0); x = 1; if (x) x = 2; test_assert(x==2); x = 0; if (x) x = 2; else x = 3; test_assert(x==3); x = 1; if (x) x = 2; else x = 3; test_assert(x==2); } こんなものを延々と記述していくしかないのでしょうか。
909 名前:デフォルトの名無しさん mailto:sage [04/10/10 15:30:32] >>907 全部網羅って C∞ のテストをしたいって事?
910 名前:デフォルトの名無しさん [04/10/10 19:19:42] 確立した方式など無いと思うが… なので、実績の積み上げしか無いと思われ。
911 名前:デフォルトの名無しさん mailto:sage [04/10/10 20:24:50] >>908 行カバレッジが100%になるようなテストセットを作るとか。
912 名前:デフォルトの名無しさん [04/10/11 21:40:00] Bisonでparseした時、エラーの出た行をしらべるにはどうするの?
913 名前:デフォルトの名無しさん mailto:sage [04/10/12 00:36:07] flexからbisonに渡すTokenに行番号の情報を入れといて、エラー発生時に取り出して使う、 でいいんじゃない?
914 名前:912 mailto:sage [04/10/12 23:08:03] >>913 どうもです、flexのhelpみてたらoptionでありました
915 名前:デフォルトの名無しさん [04/10/13 21:00:24] >>914 それはflexの中だけだろ? bisonとは微妙にずれる場合も多い。 >>913 が王道かも。
916 名前:デフォルトの名無しさん mailto:sage [04/10/15 20:56:20] DLLの関数呼び出しって、参照が一回挟まると思うんだけど、 ループで何べんも呼ぶと普通の関数呼び出しよりパフォーマンスに影響出る? 自分の処理系では参照をはさまない様に(つまりLoadLibraryと同じ方式) してるけどいまいち差がわからない。 それよりも配置情報テーブルのサイズ減らした方が得なのかなと思ったり。
917 名前:デフォルトの名無しさん mailto:sage [04/10/15 22:32:51] >>916 間接参照になる分だけ、パフォーマンスは落ちる。でも関数内部が 一行だけとかでない限り、あまり気にしないで良いと思うぞ。 とりあえず計ってみたら?
918 名前:デフォルトの名無しさん mailto:sage [04/10/16 11:20:18] >>917 コンテキスト切り替えとか食らうと凄く影響するけど、 間接参照が一個増えた程度ではパフォーマンスにそれほど影響しないような… 昔、C++ で virtual ありと無しのメンバ関数で速度測ったら virtual ありの方が速くてびっくりした事もあるし。
919 名前:デフォルトの名無しさん mailto:sage [04/10/16 11:38:42] それはお前の計り方が間違ってただけだろう。
920 名前:デフォルトの名無しさん mailto:sage [04/10/16 11:52:11] >>919 誤差で逆転しただけかもしれんがね。 っつか、測定前から virtualありの方が遅いと決め付けてるなら測定する意味が無いような。
921 名前:デフォルトの名無しさん mailto:sage [04/10/16 11:58:21] >>920 その測定ソース、どんな感じに作ったのか晒してみ。
922 名前:デフォルトの名無しさん mailto:sage [04/10/16 12:14:42] >>921 virtualありの関数を持つクラスとなしの関数を持つクラス作って ループでn回関数を呼び出す、ループ前とループ後の時間から かかった時間を割り出す普通のマイクロベンチだったと思うが。 関数の中身は空だったか、軽い計算させてたかは覚えてない。 あとはアセンブラの出力を見て最適化で関数呼び出しが削除されてない事と virtualありの方は間接参照を介している事を確認した。
923 名前:デフォルトの名無しさん [04/10/16 13:49:08] まぁ、システムをスタティックリンクにしてからだな
924 名前:デフォルトの名無しさん mailto:sage [04/10/16 14:15:49] >>923 それは >>916-922 と関係あるのか?
925 名前:デフォルトの名無しさん mailto:sage [04/10/28 21:26:06] 日経ソフトウェアの推薦書籍コーナーで、中田さんの本が2冊あげられていた。 取り上げていた人はどちらもすごい方なので、ちと読んでみようかなという気が沸き起こった。
926 名前:925 mailto:sage [04/10/28 21:40:42] それにしても\10000を超えるって、やっぱり高い。 コンパイラの構成と最適化 中田 育男 (著) www.amazon.co.jp/exec/obidos/ASIN/4254121393/
927 名前:デフォルトの名無しさん mailto:sage [04/10/28 22:03:22] >>926 ドラゴンブックより良い?
928 名前:デフォルトの名無しさん mailto:sage [04/10/28 22:10:24] >>927 ドラゴンブックよりも内容が新しいらしい。
929 名前:デフォルトの名無しさん mailto:sage [04/10/28 22:19:39] >>927 かなり難解ですよ。 ドラゴンブックとかプログラミング言語処理系を読んで それでも物足りない人向け。
930 名前:927 mailto:sage [04/10/28 22:43:04] 読んでみたくなったけど、高いなあ…
931 名前:デフォルトの名無しさん mailto:sage [04/10/28 23:07:51] そもそも「最適化」をタイトルに冠してる時点でかなりのレベルが予想されるわけだが... < 中田本 それにしてもドラゴンブックの改訂版(に当たる本),いつ出るんでしょうね...
932 名前:デフォルトの名無しさん mailto:sage [04/10/28 23:14:58] >>926 ドラゴンブック揃えるより安いじゃん。
933 名前:デフォルトの名無しさん mailto:sage [04/10/29 18:29:03] >>931 もう出たんじゃね? ttp://www.amazon.co.jp/exec/obidos/ASIN/0321131436/ ペーパーバック版は来年らしい。 ttp://www.amazon.co.jp/exec/obidos/ASIN/0321210913/
934 名前:デフォルトの名無しさん mailto:sage [04/10/30 00:24:51] >>933 「この商品を予約注文する」と表示されたから、まだ出てないのかも…待ちくたびれたよ。
935 名前:デフォルトの名無しさん mailto:sage [04/10/30 08:51:24] >>934 うはwwwwwwwwwwwwwww 昨日見たときはショッピングカートに入れるになってたんだがw amazonの罠だったか。
936 名前:デフォルトの名無しさん mailto:sage [04/10/31 00:42:43] i.loveruby.net/ja/rhg/index.html これってどうよ?
937 名前:デフォルトの名無しさん [04/10/31 18:50:33] >>932 そろえるって何? 1つしかないのでは?
938 名前:デフォルトの名無しさん mailto:sage [04/10/31 19:00:25] >>937 お前、現物見た事あるのか?
939 名前:デフォルトの名無しさん mailto:sage [04/10/31 19:15:08] >>938 www.amazon.com/exec/obidos/tg/detail/-/0201100886/ 洋書の方は全1巻みたいです。
940 名前:デフォルトの名無しさん mailto:sage [04/10/31 19:56:06] 揃えるといったら、グリーンとレッドでは?
941 名前:デフォルトの名無しさん mailto:sage [04/10/31 20:39:14] ポケモンみたい
942 名前:デフォルトの名無しさん mailto:sage [04/10/31 20:39:42] 21st Century Compilersが待てない人は↓がオススメ。 Modern Compiler Design / John Wiley & Sons, ltd Dic Grune / Henri E. Bal / Geriel J. H. Jacobs / Koen G. Langendoen 実装本ではなくアルゴリズム本。 ある程度のコンパイラ実装経験がある人なら買って損はないと思います。 私は「コンパイラ構成法」→「プログラミング言語処理系」→本書、の順で 学んできましたが、頭の中がすっきりまとまって、今の私にちょうど良い レベルだと思います。アルゴリズムがスードウ・コードで書かれているので 最初はちょっと戸惑いましたが、すぐに慣れるでしょう。 私の英語レベルでも、見開きに知らなかったり忘れていたりする単語が、 ひとつあるかないか、といった程度なので本書を読み進めるのは、それほど 困難ではありません。 ちなみに私の英語遍歴は、「Grammar in Use Basic/Intermediateを一通りやる」→ 「Duo 3.0丸暗記」→「TOFELテスト 英単語3800のランク3を暗記中」と いったところ。それほど高い英語力がなくても大丈夫でしょう。
943 名前:デフォルトの名無しさん mailto:sage [04/10/31 21:07:52] >>942 コンパイラの勉強をする前、した後とでなにか大きく変わったことはありますか?
944 名前:デフォルトの名無しさん mailto:sage [04/10/31 22:18:01] >>942 紹介を少しみたところ、コンパイラの(可能な限りの)自動生成に力点を置いてるようですが、 その辺りどうでしたか?
945 名前:デフォルトの名無しさん mailto:sage [04/10/31 22:18:53] >>942 pseudo codeを「スードウ・コード」と書かれているので戸惑いました。
946 名前:デフォルトの名無しさん mailto:sage [04/10/31 22:25:20] >>943 昔俺が本読んで実際うまくいった最適化と言える物は せいぜい定数畳み込みと覗き窓ぐらいだったな。 頭悪いと「それはそれ、これはこれ」って言葉の意味が実感できるぜ! コンパイラの勉強もいいけどCPUやアセンブラにも詳しくないと 速いコードにはならないぜ。 VMを作るときにも困るぜ?
947 名前:デフォルトの名無しさん [04/11/01 21:36:17] >>938 英語音痴w
948 名前:デフォルトの名無しさん mailto:sage [04/11/02 10:51:27] 次スレには>>936 もリンクに加えておいて下さい
949 名前:デフォルトの名無しさん mailto:sage [04/11/02 13:03:18] >>943 今まで努力するのが面倒で、yaccでやっていましたが、 そんな自分が嫌でコンパイラの勉強を始めました。 その甲斐あって仕事もはかどり、昇進も決まり、彼女も出来ました。 6月には結婚します。これも全てコンパイラの勉強をした成果です。 (27歳・会社員)
950 名前:デフォルトの名無しさん [04/11/02 22:20:28] おれは今まで金無し君だったけど(ry
951 名前:デフォルトの名無しさん mailto:sage [04/11/02 22:22:11] >>950 今ではすっかり能無し君か。
952 名前:デフォルトの名無しさん mailto:sage [04/11/02 23:44:04] コンパイラの勉強をしたら負け(ry
953 名前:デフォルトの名無しさん [04/11/03 09:12:07] コンパマダァ-? (・∀・ )っ/凵⌒☆チンチン
954 名前:デフォルトの名無しさん [04/11/03 12:48:01] 最近、パチンコ行っても付きまくりな訳だが、 そういえばコンパイラの勉強し始めてからだったことに気づいた。
955 名前:デフォルトの名無しさん mailto:sage [04/11/03 21:25:51] 俺もコンパイラを勉強していて出てきた数字で ロト6を買ったら2等が当たりました。2000万くらい。
956 名前:デフォルトの名無しさん mailto:sage [04/11/05 18:44:42] じゃあ俺もコンパイラの勉強していたら 株が上がったことにしよう
957 名前:デフォルトの名無しさん mailto:sage [04/11/05 22:11:26] LISP最強
958 名前:sage [04/11/06 05:48:47] スモールコンパイラの制作で学ぶプログラムのしくみ www.cbook24.com/bm_detail.asp?sku=4774121770
959 名前:デフォルトの名無しさん [04/11/06 12:31:17] >>958 おっ、新作ですかね? この分野では珍しい。 しかも、やさしそう あと安い。 すべて型破り!w
960 名前:デフォルトの名無しさん mailto:sage [04/11/06 13:42:32] 宣伝乙 借金でもできたんですか?
961 名前:959 [04/11/06 17:41:07] 著者は有名な方ですか? あと、目次とかはないんでしょうか?
962 名前:デフォルトの名無しさん mailto:sage [04/11/06 18:00:39] >>958 中身もなさそう。
963 名前:ほんたま [04/11/06 20:32:28] おみゃ〜らよ、system32フォルダにあるDLLの関数を呼び出すには、インポートセクションにDLL名と関数名を書き込んでいくだけで、呼び出せるんだが、 VC++で自分でつくったDLLの関数を同じ方法で呼び出そうとすると、「DLL何に○○のエントリーポイントが見つかりません」というメッセージが出て呼び出せないんだ… おみゃ〜らよ、自分でつくったDLLとwindows付属のDLLとは、どっか構造が違うのかな? windows付属のDLLと同じ構造のDLLを自分でつくるにはどうすればいいの? 教えてくだされ〜♪
964 名前:デフォルトの名無しさん mailto:sage [04/11/06 20:57:32] マルチにレス不要
965 名前:デフォルトの名無しさん mailto:sage [04/11/06 23:18:33] どうせstdcallつけてないだけなんだろうな
966 名前:デフォルトの名無しさん mailto:sage [04/11/07 22:44:04] >>958 プログラミング言語処理系とか買ったけどチンプンかんぷんだった俺にはちょうどいい こういう本もっとでてほしいな 安いしな・・・
967 名前:デフォルトの名無しさん mailto:sage [04/11/07 22:46:29] >>966 オレは「UNIX プログラミング環境」が初体験だったが。今はもう流行らんか。
968 名前:デフォルトの名無しさん [04/11/08 01:09:20] >>967 洩れもそれだ!w 但し英語番だけど、
969 名前:デフォルトの名無しさん mailto:sage [04/11/08 19:02:04] >>967 hocのソースにバグがあったと聞いたけど、どこか知ってる?
970 名前:デフォルトの名無しさん mailto:sage [04/11/08 20:01:57] >>969 いろいろあった気がするが、具体的に何だったかは忘れた。
971 名前:ほんたま [04/11/08 23:02:02] おみゃ〜ら〜、サンプルアップしたぞ〜♪ホームページもアップしたぞ〜♪宇宙一すげぞ〜♪ おみゃ〜らよ、なぜ宇宙一すげーかわかるかな? おみゃ〜らよ、おりはな、「Visual C++」で自作したDLLをスリムドカンでつくったプログラムから呼び出すのに成功したんだよ!わかる? おみゃ〜らよ、DLLを呼び出すプログラムを「Visual C++」」でつくるには、Libファイルをリンクに設定したり、ヘッダファイルをインクルードしたりとやるべきことは多いだろ? おみゃ〜らよ、DLLを呼び出すプログラムを「HSP」でつくるにも、やはりDLLの他に「.as」ファイルが必要だよ。 だが、「スリムドカン」の場合、DLLの他には一切何も必要ないんだな〜う〜ん、これが…自分じわかる? つまり「スリムドカン」の場合、DLLさえあればDLLを呼び出すプログラムがビルドできるってわけ♪ おみゃ〜らよ、おりは宇宙一画期的だと思わないか? おみゃ〜らよ、宇宙一すげ〜とわめいたのはそういうことよ♪ おみゃ〜らよ、自分じどうじ?
972 名前:デフォルトの名無しさん [04/11/08 23:50:12] >>969 煽りでなくて、 バグでなく仕様じゃないの? 本だし
973 名前:デフォルトの名無しさん mailto:sage [04/11/09 01:48:39] 次スレまだ〜?
974 名前:デフォルトの名無しさん mailto:sage [04/11/09 17:00:50] >>972 伝聞だけど煽りじゃないよ。 知り合いが「打ちこんで動かしたけどいくつかバグがあった」って。 もちろん打ち間違いの類いじゃなくね。
975 名前:デフォルトの名無しさん mailto:sage [04/11/10 02:14:00] ひょっとして脳内の知り合いですかぁ? そんで俺らにデバッグさせようってことですかぁ?
976 名前:デフォルトの名無しさん mailto:sage [04/11/10 04:01:03] 三銃士で、アトスが友人の身に起こったことだと言って話すけど ダルタニアンはそれは友人ではなくてアトス自身のことなのではない かと考える場面がある。
977 名前:デフォルトの名無しさん mailto:sage [04/11/10 10:24:26] 懐かしー。
978 名前:デフォルトの名無しさん mailto:sage [04/11/10 11:23:03] 俺がhocを動かせなくて困ってるとでも思ったのか?www ほらソース ttp://www.bsddiary.net/d/200012.html#15 5段目の段落をよく読め
979 名前:デフォルトの名無しさん mailto:sage [04/11/10 13:56:46] 脳内の知り合いじゃないのなら どこがどうバグってるのか聞いてくれ。
980 名前:デフォルトの名無しさん mailto:sage [04/11/10 14:31:35] わかったよ知り合いじゃないよ 一読者だよ 直接聞けないからここで聞いたんだよ
981 名前:デフォルトの名無しさん mailto:sage [04/11/10 14:42:49] 誰だお前は
982 名前:デフォルトの名無しさん mailto:sage [04/11/10 18:01:59] オレだよオレ
983 名前:デフォルトの名無しさん mailto:sage [04/11/10 19:27:26] >>958 が気になる。
984 名前:デフォルトの名無しさん mailto:sage [04/11/10 20:09:33] そろそろ新スレの季節だよ。
985 名前:デフォルトの名無しさん mailto:sage [04/11/10 20:47:19] 新テンプラどうしよう
986 名前:デフォルトの名無しさん mailto:sage [04/11/10 22:19:51] LISPスレと統合しよう つーかきみらもっとLISPを知っときなさい
987 名前:デフォルトの名無しさん mailto:sage [04/11/10 22:47:27] Mathematicaマンセー
988 名前:デフォルトの名無しさん [04/11/10 22:47:40] LISP?はぁ? 負け組言語は不要w
989 名前:デフォルトの名無しさん mailto:sage [04/11/10 23:08:54] スレ立てるよ
990 名前:スレ立てられませんでした(テンプレ1) mailto:sage [04/11/10 23:11:46] yaccやlexの使い方やら言語仕様やらの話題。 前スレ 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-8 あたり
991 名前:(テンプレ2) mailto:sage [04/11/10 23:12:21] コンパイラ等を扱ったドキュメント 色々なツールの紹介 catalog.compilertools.net/ コンパイラ関連のリンク集 www.ulis.ac.jp/~nakai/rel_web_compilers.shtml スクリプティング言語資料室(仮) (リンク) www.kt.rim.or.jp/~kbk/ Compiler Construction rananim.ie.u-ryukyu.ac.jp/~kono/lecture/2000/compiler/index.html Compiler Construction (1997) rananim.ie.u-ryukyu.ac.jp/~kono/lecture/1997/compiler/compiler.html 情報システム工学実験 III コンパイラ・コンパイラ math.cs.kitami-it.ac.jp/~fuchino/proin/experimentIII-2000/jikken.html OS/Programming 簡単な C コンパイラ www.csg.is.titech.ac.jp/~chiba/lecture/os/ 正規表現 hp.vector.co.jp/authors/VA007799/viviProg/doc_regexp.htm コンパイラ研究・開発情報の一集積所 compilers.cs.uec.ac.jp/ Links and Selected Readings www.gnu.org/software/gcc/readings.html
992 名前:Intelの資料リンク切れになってる(テンプレ3) mailto:sage [04/11/10 23:13:36] Lex(Flex) Yacc(Bison) 構文解析 UNIX板 yacc & lex pc.2ch.net/test/read.cgi/unix/1031801314/ Lex and YACC primer/HOWTO (邦訳) www.linux.or.jp/JF/JFdocs/Lex-YACC-HOWTO.html Turbo Pascal Lex/Yacc www.musikwissenschaft.uni-mainz.de/~ag/tply/tply.html Jim Roskind's LALR(1) C++ Grammar www.empathy.com/pccts/roskind.html Flexと Bisonを同時に使う guppy.eng.kagawa-u.ac.jp/~kagawa/1999/SysProg/both.html KITE_ASM (yacc,lex) www.arch.cs.kumamoto-u.ac.jp/project/kite/kiteasm/yacc/ www.arch.cs.kumamoto-u.ac.jp/project/kite/kiteasm/lex/ Cygwin www.cygwin.com/ GNU utilities for Win32 unxutils.sourceforge.net/
993 名前:(4) mailto:sage [04/11/10 23:15:40] その他のパーサジェネレータ等 ANTLR(非yaccのパーサジェネレータ) www.antlr.org/ JavaCC(Java Compiler Compiler) https://javacc.dev.java.net/ village.infoweb.ne.jp/~fwif0083/program/java/javacc/javaccgrm.html www.asahi-net.or.jp/~DP8T-ASM/java/tips/JavaCCHelloWorld.html CUP & JLEX or CUP & JFlex CUP www.cs.princeton.edu/~appel/modern/java/CUP/why.html JLEX www.cs.princeton.edu/~appel/modern/java/JLex/ JFlex www.jflex.de/ SableCC www.sablecc.org/ ¬<><∪∪ (notavacc)LALR(1) ne.cs.uec.ac.jp/~koto/notavacc/ JavaCCはLL(k)だけど、上のはANTLR以外はLALR(1) でもANTLRはC++なんかにも対応。 boost::spirit(C++のテンプレートでEBNFの構文を模倣) spirit.sourceforge.net/ boost.cppll.jp/HEAD/libs/spirit/index.html (マニュアル日本語化プロジェクト) www.fides.dti.ne.jp/~oka-t/cpplab-boost-spirit.html
994 名前:(5) mailto:sage [04/11/10 23:17:53] ガベコレ GC FAQ -- draft www.iecc.com/gclist/GC-faq.html A garbage collector for C and C++ www.hpl.hp.com/personal/Hans_Boehm/gc/ 一般教養としての Garbage Collection www.is.s.u-tokyo.ac.jp/~vu/01/jugyo/processor/process/soft/compilerresume/gc/gc.html Garbage Collection : Algorithms for Automatic Dynamic Memory Management www.amazon.com/exec/obidos/ASIN/0471941484/
995 名前:(6) mailto:sage [04/11/10 23:21:42] 参考書籍 ●コンパイラ 原理・技法・ツール 1&2 www.amazon.co.jp/exec/obidos/ASIN/4781905854/ www.amazon.co.jp/exec/obidos/ASIN/4781905862/ 通称ドラゴンブック。バイブル。 ●コンパイラ構成法 原田 賢一 www.amazon.co.jp/exec/obidos/ASIN/4320029224/ www.hara.cs.keio.ac.jp/kCompiler/ (ソース、正誤表のダウンロード) ●プログラミング言語処理系 岩波講座 ソフトウェア科学〈5〉 佐々 政孝 www.amazon.co.jp/exec/obidos/ASIN/4000103458/ 一冊で済ませたい人へ。 ●コンパイラの構成と最適化 中田 育男 www.amazon.co.jp/exec/obidos/ASIN/4254121393/ 最適化がメイン。 ●コンパイラの仕組み 渡邊 坦 www.amazon.co.jp/exec/obidos/ASIN/4254127081/ 薄い奴(185p)を読みたい人に。 ●21st Century Compilers (Alfred V. Aho, Sethi, Ravi Sethi, Jeffrey D. Ullman, Monica Lam) ペーパーバック版: www.amazon.co.jp/exec/obidos/ASIN/0321210913/ ハードカバー版: www.amazon.co.jp/exec/obidos/ASIN/0321131436/ ●スモールコンパイラの制作で学ぶプログラムのしくみ www.cbook24.com/bm_detail.asp?sku=4774121770
996 名前:デフォルトの名無しさん mailto:sage [04/11/10 23:26:12] では立ててみるか。
997 名前:(7) mailto:sage [04/11/10 23:26:28] 処理系,スクリプト kikyou.info (吉里吉里というゲームのスクリプト) kikyou.info/ tiny C コンパイラ (C) www.watalab.cs.uec.ac.jp/tinyCabs.html 6809用 Micro C コンパイラ www.axe-inc.co.jp/pds/mc09.html Portable Object Compiler (Obj-C >> C のトランスレータ?) users.pandora.be/stes/compiler.html 自作コンパイラの部屋(PL/1, Pascal等) www.tokumaru.org/ 『Rubyソースコード完全解説』サポートページ i.loveruby.net/ja/rhg/ 『やさしい Lisp の作り方』と『やさしい Java インタプリタ の作り方』見つけた。 Java と C# で実装。 ttp://www.okisoft.co.jp/esc/go.html ttp://www.okisoft.co.jp/esc/go2.html ttp://www.okisoft.co.jp/esc/go3.html ttp://www.okisoft.co.jp/esc/go4.html MSによるPEフォーマット仕様書(日本語) www.interq.or.jp/chubu/r6/reasm/PE_FORMAT/intro.html
998 名前:デフォルトの名無しさん mailto:sage [04/11/10 23:36:47] 連続投稿規制のため、テンプレ(7)は貼れなかった。 誰か頼みます。
999 名前:デフォルトの名無しさん mailto:sage [04/11/10 23:37:55] 新スレッド 「コンパイラ・スクリプトエンジン」相談室4 pc5.2ch.net/test/read.cgi/tech/1100097050/
1000 名前:デフォルトの名無しさん mailto:sage [04/11/10 23:40:47] ふと思ったのですが、新スレたちました。
1001 名前:1001 [Over 1000 Thread] このスレッドは1000を超えました。 もう書けないので、新しいスレッドを立ててくださいです。。。