- 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 あたり
- 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を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。
|

|