1 名前:nanashi de fault [02/05/12 02:05] 前スレ1より >yaccやlexの使い方やら言語仕様やらの話題。 前スレ 【コンパイラ・スクリプトエンジン】相談室 pc.2ch.net/test/read.cgi/tech/981672957/ 前スレアーカイブ(かちゅ用) www.1me.jp/hp/prg_c-s_lab 前スレに張られたリンク + x >>2-6
39 名前:38 mailto:sage [02/05/21 23:33] 主旨書き忘れました。 要はHSPみたいなものを作りたいのです。
40 名前:デフォルトの名無しさん mailto:sage [02/05/21 23:38] >>39 もう少し志を高く持とう。
41 名前:38 mailto:sage [02/05/21 23:49] 志ってイってもなー コンソール感覚でGUIアプリ作れたらなとか考えてるだけだしなー 大体作ること自体面白そうだし。
42 名前:デフォルトの名無しさん mailto:sage [02/05/21 23:51] >>38 >コンソール感覚でGUIアプリ作れたら 意味がわからん。
43 名前:デフォルトの名無しさん mailto:sage [02/05/21 23:52] >>41 いや、目標(HSP)が引く杉ってこと。
44 名前:38 mailto:sage [02/05/22 00:05] >42 >>コンソール感覚でGUIアプリ作れたら >意味がわからん。 それもそうだ。 たとえば、 list = file_search("C:\My Documents\*.jpg"); foreach(list, itr){ image = image_load(itr); tile_draw(image, 48, 32); } ぐらいの記述量でフォルダ内の画像一覧を表示するアプリが書けるとか。 いや、たとえだけど。 >43 >いや、目標(HSP)が引く杉ってこと。 そうか? そうか。 うーむ。
45 名前:42 mailto:sage [02/05/22 00:12] >>44 記述量を問題にするなら、処理系でなく既存の 言語のクラスライブラリを整えた方がいいんでない? でも、HSPでクラスライブラリはやだ・・・
46 名前:42 mailto:sage [02/05/22 00:14] あ。スクリプトか。 よく見てなかった。スマソ
47 名前:デフォルトの名無しさん mailto:sage [02/05/22 00:14] >>38 LISPは構文解析いらないから楽だよ
48 名前:デフォルトの名無しさん mailto:sage [02/05/22 00:18] >>47 いらないってこたあないだろ。 たしかに構文は簡単だけどさ。
49 名前:デフォルトの名無しさん [02/05/22 00:19] DelphiやVBみたいに貼りつけ→即実行みたいな 環境を作るのってむずかしい?
50 名前:デフォルトの名無しさん mailto:sage [02/05/22 00:21] >>48 最低限の構文は必要かと。 むちゃくちゃ楽なのは確かだけど。 あとはマクロで構文唐。
51 名前:デフォルトの名無しさん mailto:sage [02/05/22 00:31] まあ下手な構文作るよりかはLISPのS式にしとく方がましだな。
52 名前:38 mailto:sage [02/05/22 00:31] >>47 構文解析とかは中田(?)氏の本を読んでできるようにはなりました。 再帰下降法だけだけど。
53 名前:デフォルトの名無しさん mailto:sage [02/05/23 03:29] >38 FORTHは? と言ってみるテスト。
54 名前:MIND mailto:sage [02/05/23 14:09] >>53 処理系を作る人にはやさしいけど、応用系を作る人にはどうかな? と呟いてしまう今日この頃。
55 名前:デフォルトの名無しさん [02/05/23 14:24] まだyaccがはやいなんていってる馬鹿いるね
56 名前:デフォルトの名無しさん [02/05/23 15:42] >>55 うっさいハゲ
57 名前:デフォルトの名無しさん mailto:sage [02/05/23 16:23] >>55 パーサー担当は君に決定!
58 名前:デフォルトの名無しさん mailto:sage [02/05/23 17:02] LISPで決まり。 ところで、GCの無いLISPって理論的に可能でしょうか。
59 名前:デフォルトの名無しさん mailto:sage [02/05/23 17:06] 可能 無限にメモリを消費し続けてください
60 名前:デフォルトの名無しさん [02/05/27 05:40] 保守age
61 名前:デフォルトの名無しさん [02/05/29 01:31] 保守しる!
62 名前:デフォルトの名無しさん [02/05/29 23:47] もりあがらないね
63 名前:デフォルトの名無しさん [02/05/29 23:49] どうやって中間言語に翻訳しなおすのですか?
64 名前:HELP!あ〜にゃにゃにゃ〜にゃ〜 mailto:あげる [02/05/30 01:04] Yaccのソースが見つからないのれす。
65 名前:逝って良しの1 [02/05/30 01:15] 構文解析器だけは作りたくないです。
66 名前:デフォルトの名無しさん mailto:sage [02/05/30 01:24] >>65 再帰下降なら楽じゃん。
67 名前:デフォルトの名無しさん [02/05/30 03:00] >>64 GNU bison ならすぐ見つかるだろ。
68 名前:デフォルトの名無しさん mailto:sage [02/05/30 04:39] >>64 森氏のkmYaccならVectorで検索すれば有るんじゃない?ソース付きで。 この人のcppとmakeは自分なりに手直しして未だに使わせてもらってる。
69 名前:デフォルトの名無しさん [02/05/30 05:06] どうしても関数の実装ができません。あとcontinueとbreakも。
70 名前:デフォルトの名無しさん mailto:sage [02/05/30 11:08] >69 Cマガの2000年5月号をよめばわかります。
71 名前:64 mailto:sage [02/05/30 12:29] >>67 GNUは生理的に嫌なので。すんまへん。 >>68 ウヲ。すごいでつなこの人。ありがとうございます。
72 名前:デフォルトの名無しさん mailto:sage [02/05/31 01:41] >>71 そういうやつは生理的に氏ね!
73 名前:デフォルトの名無しさん mailto:sage [02/05/31 22:45] >>72 GNU のソースが生理的に嫌いだってのは、分からんでもない。あのインデントは 読みたくないよ。(というわけで GNU indent 通して整形してから参照してる俺)
74 名前:デフォルトの名無しさん mailto:sage [02/05/31 23:22] >>73 むしろライセンスの方じゃないの。
75 名前:デフォルトの名無しさん mailto:sage [02/05/31 23:53] >>74 73 の皮肉と諧謔を込めた文意を読み取れ。
76 名前:デフォルトの名無しさん mailto:sage [02/06/01 00:21] 75=73
77 名前:デフォルトの名無しさん mailto:sage [02/06/01 04:16] >>68 ちなみにこの人、LSI-Cコンパイラの作者な。 yaccもcppもmakeもその一部。
78 名前:68 mailto:ssage [02/06/01 13:53] ワシは厨房なんで高度な皮肉も 宗教じみたライセンスも理解できんので 避けてるのです。生理的に。用途違うかな。 >>77 普段LSI-C試食版使ってるので、cppで気づきました。 LSI-Cは一人の天才プログラマが作ったって噂があったけど、 本当だったんですな。あこがれます。
79 名前:真68 mailto:sage [02/06/01 16:48] ↑どうでもいいけど68書いたの俺な。あんた64じゃない? >>77 知っている。今はLSI JAPANの取締役らしいな。 bisonのジェネレータが出力するソースは見にくくて吐き気がするが、 kmyaccのは綺麗で分かりやすい。実用にも問題無いし、学習用にもお勧め。 俺はbisonから完全に乗り換えたよ。テーブルの小ささに惚れた。
80 名前:64 mailto:sage [02/06/01 19:58] スマソ回線切って首吊ってきます。
81 名前:73 mailto:sage [02/06/03 16:39] >>76 はずれ(w >>78 > 宗教じみたライセンスも理解できんので GPL は理解しておいて損はないと思うよ。 俺は GPL の趣旨には賛同しないので、自分が公開するソフトのライセンスは GPL にしない。でも GPL で公開されているソフトには有用なモノも多いし、ライ センスを理解して使えば GPL に汚染されずに旨い部分だけ頂ける。 (ちなみに個人的には BSD、仕事絡みではクローズドな人です)
82 名前:デフォルトの名無しさん mailto:sage [02/06/03 17:46] >ライセンスを理解して使えば GPL に汚染されずに旨い部分だけ頂ける。 この辺のところを、もう少し詳しく教えて( ゚д゚)ホスィ
83 名前:64 mailto:sage [02/06/03 23:01] 82に禿尿。readlineとかガリガーリ使っていきたいヨー
84 名前:デフォルトの名無しさん mailto: [02/06/04 04:10] LL(1)文法の Fisrt Follow Directorの計算アルゴリズムが良くわからん。 オーム者コンパイラ(中田育男 8刷 p85) 誰かわかりやすく教えてくれ。
85 名前:. [02/06/04 04:15] www.aa.wakwak.com/~ayaka/cgi-bin/privatetalk/sank.pl
86 名前: [02/06/05 01:17] >>84 過去ログ。
87 名前:デフォルトの名無しさん [02/06/06 23:29] ageeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee
88 名前:デフォルトの名無しさん [02/06/07 11:22] 以前、Cで数十行で書かれた小さいBASICインタプリタを見たことあるん だけど、検索しても、どうしても見つかりませんでした。 知ってる人いますか?
89 名前:デフォルトの名無しさん mailto:sage [02/06/07 11:28] >>88 7行スレのことか?
90 名前:デフォルトの名無しさん mailto:sage [02/06/07 13:20] >>88 Expert Cに載ってる奴じゃない? www.ioccc.org/1990/dds.c
91 名前:デフォルトの名無しさん mailto:sage [02/06/10 16:08] >90 これ、VC6でコンパイル通らないんだけど、何だったらできる?
92 名前:デフォルトの名無しさん [02/06/11 00:42] C++の構文解析、 struct C { C (f)(); /*Cを返す関数f*/ C(); /*コンストラクタ*/ }; というので、{}のなかの 'C' まで読んだ時点でそれがclass-nameかdeclaratorかどうやって判断しているの? ひとつだけの先読みではわからないですよね。LALR(1)とかいうのとはちがうのですか?
93 名前:デフォルトの名無しさん mailto:sage [02/06/11 02:37] >>92 www.y-adagio.com/public/reports/mh_inst/1996/19.doc.htm
94 名前:デフォルトの名無しさん mailto:sage [02/06/11 02:44] >>92 読んだ時点で判断してるわけないと思うが。 そこは意味解析で判断する部分。 構文解析の段階だと C(); は「戻型が省略された関数C」とでも解析されるんだろう。 structの定義('}')が終わった段階で、 初めて意味解析が走ると考えたほうが自然。
95 名前:デフォルトの名無しさん mailto:sage [02/06/11 03:48] >>94 struct の } 終わってから解析って、そりゃ構文解析でほとんど何もやってない に等しい気が……。struct C の段階で「C」を型名としてシンボルテーブルに登 録しておいて C (f)(); → 識別子 '(' 識別子 ')' '(' 識別子 ')' ';' ぐらいにバラしてスタックに積んでおき、この段階で意味解析に掛けると思う。 構造体の宣言が終わらなくても ';' 単位でばらせば、十分に解析可能だよね。 少なくとも型名やら名前空間やら、必要な情報は事前に出てるわけだし。 (そうでもない?)
96 名前:デフォルトの名無しさん mailto:sage [02/06/11 05:05] 'C'まで読み込んだ段階では判定できないから 適当な中間の非終端記号を入れて判定を遅延させて、 十分読み込んだところで判定を確定する、という話じゃないの?
97 名前:96 mailto:sage [02/06/11 05:07] >95 と内容被ってた(鬱)
98 名前:92 mailto:sage [02/06/12 00:57] とりあえず全部identifierとして読んでおけばいいんですね。 Cの場合、構文解析の段階でtypedefとenumを辞書引きすればよさそう(試してない) だったので、C++もその延長でいけるかとおもっていたのです。 LALR(2)でならそれでもいけるかな?
99 名前:デフォルトの名無しさん mailto:sage [02/06/12 14:01] >>98 C は型名と変数名は異なる名前空間で定義されるから(型名と重複する変数名 を定義可能)、その方針でやる場合には 型名を読み込んだ → 字句解析側に、次にアルファベット列が来たら identifier を返すように設定 と、構文解析・字句解析での情報のやりとりが必要になるかと。
100 名前:92 mailto:sage [02/06/12 23:04] >>99 typedef名だけは型名と変数名の両方に登録されるようなので、 typedef t int; int t(); なんてのはエラーにしないといけない(?)のでどっちにしても 意味解析でも構文解析じみたことはしなければいけないみたいですね。
101 名前:100 mailto:sage [02/06/12 23:05] typedef t int × typedef int t ○
102 名前:デフォルトの名無しさん [02/06/16 01:17] 最適化するのにポインタって邪魔ですか?
103 名前:デフォルトの名無しさん mailto:sage [02/06/16 01:21] 邪魔。
104 名前:デフォルトの名無しさん mailto:sage [02/06/16 01:32] っですよねー。 三項になりましたサンクコ
105 名前:デフォルトの名無しさん mailto:sage [02/06/16 01:40] オブジェクトやメモリを参照することを禁止したポインタなら邪魔にならない。
106 名前:デフォルトの名無しさん [02/06/18 03:52] 1+a+2 を逆ポーランドで表現した 1a+2+ というデータだけがここに有るとして、これを 3a+ にうまく変形出来ないだろうか。
107 名前:デフォルトの名無しさん mailto:sage [02/06/18 04:00] >>106 出来る。
108 名前:デフォルトの名無しさん mailto:sage [02/06/19 00:19] >>106 buri.sfc.keio.ac.jp/~yosuke/keisan-kino-ron/koubungi.gif の図で言うと * と / が演算子の結合度が同じかつ親子なので、 a を a / d で置き換えてよい。 今考えたんで合ってるかどうか分からんけど。
109 名前:age mailto:age [02/06/20 01:05] age
110 名前:デフォルトの名無しさん [02/06/21 02:17] 保守汁
111 名前:デフォルトの名無しさん mailto:sage [02/06/24 11:39] 昨日LAOXのBOOK館でドラゴンブックの邦訳を買ったDQNを目撃した人はいませんか? それが私です。 ついでにもう一冊、と、 原田賢一『コンパイラ構成法』共立出版、374頁、1999 を買っちゃいました。こちらはDQNの私でもわかりやすく例を挙げて、 C言語ライクの言語を構築する方法を説明してありました。
112 名前:デフォルトの名無しさん mailto:sage [02/06/25 01:16] DQN がドラゴンブック買うかよチクショー。
113 名前:コンパイラ構成法 mailto:sage [02/06/25 03:49] おもわず検索してソースだけget。
114 名前:棄教者 ◆witdLTi2 mailto:sage [02/06/25 07:47] >>113 あ。ほんとだ。 正誤表とソースがげtできる! カムサハムニダ。
115 名前:デフォルトの名無しさん [02/06/30 20:21] 保守
116 名前:デフォルトの名無しさん mailto:sage [02/07/07 23:12] やっと前スレが埋まったね。
117 名前:質問 [02/07/07 23:43] どうしてこのスレはもりあがらないんですか?
118 名前:デフォルトの名無しさん mailto:age [02/07/07 23:49] kmyaccとflexを組み合わせて使うことは可能なんですか?
119 名前:デフォルトの名無しさん [02/07/08 00:24] 生理的に可能
120 名前:デフォルトの名無しさん [02/07/08 00:31] ありがとう カムサハムニダ
121 名前:デフォルトの名無しさん [02/07/08 01:12] ちうか、今の時代、構文解析なぞを勉強するのはあまり意味がない 気もするのだが... まだLALRとかが発明される前なら研究の 対象にはなっただろうが、今はyaccが使えればいいじゃん、と思う。
122 名前:デフォルトの名無しさん [02/07/08 01:13] antlrの使い方がわかればなおよい。 と言ってる俺はyaccしか使えません首吊ってきます
123 名前:棄教者 ◆witdLTi2 [02/07/08 08:21] >>121 yaccの文法はわかっても即コンパイラ・スクリプトが書けるとは限らないという罠。
124 名前:デフォルトの名無しさん mailto:sage [02/07/08 08:35] >>121 いや〜、でも憶えないとコンフリクトの理由が分からなくて困ることとかない? でも、なにも知らないところからだったら yacc 憶えた後の方が理解が早いので 手順として先に yacc は賛成。
125 名前:デフォルトの名無しさん mailto:sage [02/07/08 10:10] >>121 コンパイラ・コンパイラの段階から自作できるようになって、初めて一人前。
126 名前:デフォルトの名無しさん mailto:sage [02/07/08 10:39] コンパイラ・コンパイラ・コンパイラはどうやって作るんですか?
127 名前: mailto:sage [02/07/08 11:02] >>126 コンパイラ・コンパイラと一緒。 * (コンパイラ・コンパイラ)・コンパイラ * (YACC のコンパイラ)・コンパイラ * (C のコンパイラ)・コンパイラ
128 名前:デフォルトの名無しさん mailto:sage [02/07/08 14:19] >>126 作る必要はありません。
129 名前:デフォルトの名無しさん mailto:sage [02/07/08 16:40] >>126 コンパイラ・コンパイラ・コンパイラの段階から自作できるようになって、初めて神。
130 名前:デフォルトの名無しさん mailto:sage [02/07/09 03:40] [コンパイラ]n ・ コンパイラの段階から自作できるようになって、初めて神。
131 名前:ふわふわ名無しさん mailto:sage [02/07/09 04:16] 結局のところ、コンパイラ・コンパイラさえ作れれば神。 証明↓
132 名前:デフォルトの名無しさん mailto:sage [02/07/11 03:28] ⊂(ΦωΦ)⊃フフフ・・・・
133 名前:棄教者 ◆witdLTi2 mailto:sage [02/07/11 16:15] >>131 テユーカ、一番すごいのはダイレクトにマシンコードを吐き出すコンパイラをハックする人だと思う。
134 名前:デフォルトの名無しさん mailto:sage [02/07/11 18:45] 再帰下降ってみんなもう使ってないの?
135 名前:デフォルトの名無しさん mailto:sage [02/07/11 20:44] >>134 JavaCCが、再帰下降のパーサを生成する。 WebGainが音信不通なんでどうなることやら。
136 名前:デフォルトの名無しさん [02/07/17 00:05] 昔のインタフェースの特集記事に色々とあったな
137 名前:デフォルトの名無しさん [02/07/22 00:34] while文を使ってfor文を定義したいのですが、 for(ex1;ex2;ex3){s;} は ex1; while(ex2){ s; ex3; } と書こうと考えますた。 なんですが、前から順番に構文解析していく場合 sを先に評価してex3を評価するなんてことをどうやって実現するのでしょうか? ジャンプ命令を使ったりしてどうにかするのでしょうか? 教えてください。
138 名前: mailto:sage [02/07/22 00:38] >>137 「定義したい」とはどういう意味だ?
139 名前:デフォルトの名無しさん mailto:sage [02/07/22 00:38] ブロック終端でのjumpの前の時点でex3を評価すればいいじゃん
140 名前:デフォルトの名無しさん [02/07/22 00:55] >>139 つまりsを読んだ後、ex2の前にjumpする前にex3を評価するってことですよね? でも前から解析していく際にex3はどのようにしておけばよいのでしょう。 プログラム書くときにex3のところをどうやって書けばいいのかが・・・考えてるんですけど 分からないんです・・・
141 名前:デフォルトの名無しさん mailto:sage [02/07/22 00:59] >>140 ハァ? それじゃfor()はどうやって実現してるんだよ?
142 名前: mailto:sage [02/07/22 01:12] >>140 もしかして、構文木とか作らずに、字面のまま実行してたりする?
143 名前:デフォルトの名無しさん [02/07/22 01:16] >>142 恥ずかしながらそうです。。。
144 名前:デフォルトの名無しさん mailto:sage [02/07/22 01:18] それじゃ、構造化言語を作るのは無理だろ。
145 名前:デフォルトの名無しさん [02/07/22 01:23] >>144 そうですか。。。 出直してきます。レスくれた方ありがとうございました。
146 名前:よ mailto:sage [02/07/22 01:31] continueに対応できない罠 とかいう問題じゃなかったか…
147 名前:デフォルトの名無しさん [02/07/22 02:24] www.combo.org/ これなんかもおもしろそう.
148 名前:デフォルトの名無しさん mailto:sage [02/07/22 03:53] 別に構文木を作らなくても、構造化言語のコンパイラは作れる。 というか、作ったことがある。 出力コードの最適化は難いし、jumpの塊になるけど、breakや continueもちゃんと対応できた。
149 名前:デフォルトの名無しさん mailto:sage [02/07/22 11:00] >>148 > 別に構文木を作らなくても、構造化言語のコンパイラは作れる。 不可能じゃないだろうが、for ループがネストすることを考えると、ジャンプ用の ラベルの振り方とか面倒そうだ。(それって、結局、構文木を作ってるのと手間 変わらんのでは?)
150 名前:デフォルトの名無しさん [02/07/29 04:09] 字句解析をする際に予約語と予約語でない名前とを区別するにはどうするべきなんでしょうか? つづりを切り出し照合せよなどと本には書いてあったのですが、意味がよく分かりません。 ハッシュ法を使って何とかするのでしょうか?
151 名前:デフォルトの名無しさん mailto:sage [02/07/29 05:24] >>150 とりあえず単語切り出すところまではできてるとして、後は static const char *keywords[] = { "if", "else", "while", ..., NULL }; int is_keyword(const char *s) { int i; for (i = 0; keywords[i] != NULL; ++i) if (strcmp(s, keywords[i]) == 0) return 1; return 0; } とか。キーワード数が増えたら、ベタな線形検索やめてハッシュや二分木を 使った方が良いかもしれんが、たかだか数十程度なら気にしなくて良い。
152 名前:ろうひ男爵 [02/07/29 09:44] >>150 c言語+asmのマクロを展開するプログラムを作って、 当初は普通の検索(線形検索)で90秒かかった処理が、 ハッシュ(チェイン法)を使って15秒になったよ。 でも、そのときの登録語数が3万単語位なので、 cコンパイラ部分だけで使うくらいの語数(変数合わせて千単語ぐらい)だと、 それほど性能の差は無いと思うよ。 ちなみに、2本木の方が実装は難しいかも。
153 名前:デフォルトの名無しさん mailto:sage [02/07/29 10:36] gperfつかっとけ
154 名前:デフォルトの名無しさん mailto:sage [02/07/29 12:13] 2本木ってなに?
155 名前:ろうひ男爵 [02/07/29 12:22] すまん、2分木の事。 あと、90秒かかったのが5秒になったの間違えです。
156 名前:デフォルトの名無しさん mailto:sage [02/07/30 01:44] 2本木なんて初めて聞いたよ
157 名前:ろうひ男爵 [02/07/30 04:41] >>156 すまんのう
158 名前:デフォルトの名無しさん mailto:sage [02/07/30 04:48] >>157 ろうひ男爵、いいかんじのひとだね。
159 名前:デフォルトの名無しさん mailto:sage [02/07/30 23:38] 後学のため自前でスクリプトコンパイラを作ってみようと思い、 再起下降構文解析とかBNFとかLAL(1)等の解説されているページをみてまわっています。 a -> a b b -> c c -> X このような一直線な処理は簡単にできる気がするのですが、 a -> a b|c b -> X c -> Y のようにorが入るとたちまちパニックです。 上記の場合bの処理でfalseが帰った場合、 取得したトークンをスタック等に積んでおいて、 cでそのスタックを参照するというような仕組みになるんでしょうか? それとももっとエレガントな仕組みがあるのでしょうか? 実は全くトンチンカンな事いっちゃってるんでしょうか? つべこべ言わずYaccで仕組み覚えろモルァ!でしょうか?
160 名前:デフォルトの名無しさん mailto:sage [02/07/30 23:56] >>159 まだコードやアルゴリズムを考える段階にないと思われ。 cspt1.ict.ru.ac.za/compilers/ ここにコンパイラ作りの基礎を書いた本一冊文のドキュメントがある。 LL文法の範囲内しか扱ってないけれど最初に手を着けるにはこれぐらいでいい。
161 名前:棄教者 ◆witdLTi2 mailto:sage [02/07/31 08:42] >>159 Yaccを使いこなせるようになった方が手っ取り早いです。 yacc/lex プログラムジェネレータ on UNIX 五月女健治著 テクノプレス ISBN4-924998-14-1
162 名前:デフォルトの名無しさん mailto:sage [02/07/31 13:58] >>159 自前で作らなきゃいやなの?
163 名前:159 mailto:sage [02/07/31 14:39] >>160 もっと基礎や概念みにつけるべきということですね。 英語はかなり苦手ですが、いい機会なので昼休み等に読んでいこうと思います。 >>161 昨日Yacc/Lex関係の本を探してみたのですが、 Flaxの本しかありませんでした(買いませんでした) 教えていただいた本を探してみようと思います。 (そういえばネットで買えるとこがありましたよね) >>162 仕事には全く関係ないというか、完全に興味本位です。 あとオブジェクト指向を勉強してたとき感じたのですが、 自分の知らない技術理解すると、今までやってきたことを 違った視点で見れたりするじゃないですか。 そういうのも狙ってます。 (再起下降構文解析とかみててビビビときましたね)
164 名前:デフォルトの名無しさん mailto:sage [02/07/31 14:48] >>161 LL の方が エラー回復が楽 先読みするトークン数を容易に増やせる って利点もあるから、俺は両方やることを推奨したい。ま、お勉強としては 手書きのパーサーも悪くないっしょ。
165 名前:デフォルトの名無しさん [02/07/31 20:00] 下の文法のパーサをつくれたらLALR(2)パーサジェネレータを名乗っていいですか? //term a b c //non-term START: E; E: C a a| D a b; C: A; D: B; A: a; B: a;
166 名前:デフォルトの名無しさん mailto:sage [02/07/31 20:03] >>165 実際にLR表作ってみたら?
167 名前:デフォルトの名無しさん mailto:sage [02/07/31 20:07] >>166 できてるっぽいんですが、goto表をここに貼ってみればいいですか?
168 名前:デフォルトの名無しさん [02/07/31 21:22] 貼っていい?
169 名前:デフォルトの名無しさん mailto:sage [02/08/02 00:48] イっていい?
170 名前:高速化 [02/08/07 02:49] インテルのコンパイラでコンパイルするだけで高速化しました。 無料体験版があります。 www.xlsoft.com/jp/products/vtune/perftool.htm
171 名前:デフォルトの名無しさん [02/08/07 03:02] ハッシュはどこら辺を参考にすればいいんでしょうかねぇ。
172 名前:デフォルトの名無しさん [02/08/15 00:22] 『コンパイラ構成法』を読みながらlex/yaccを勉強しているのですが、 ttp://216.239.51.100/search?q=cache:lYpgKL5fV34C:www.hara.cs.keio.ac.jp/kCompiler/+%E3%82%B3%E3%83%B3%E3%83%91%E3%82%A4%E3%83%A9%E6%A7%8B%E6%88%90%E6%B3%95+%E6%AD%A3%E8%AA%A4%E8%A1%A8&hl=ja&lr=lang_ja&ie=UTF-8 でダウンロード出来るであろうソースコードが相手先サーバーが動いていないか何かで、ダウンロード出来ません。 正誤表はグーグルキャッシュでゲットできたのですが。 ソースコードお持ちの方、どこかのアップローダに上げていただけませんか?
173 名前:棄教者 ◆witdLTi2 [02/08/15 15:30] >>172 いま、鯖がdjみたいですね。 このまえはぼくもダウソできたので。 しばらくしたらもう一度渡来してみたらどうよ。 この本は親切で分かりやすい本です。おすすめです。 わからないところや面白い本はドラゴンブックで補充するとさらに良いでしょう。
174 名前:ろうひ男爵 [02/08/17 05:29] >>171 '0'-'9' を 0-9 '@' を 10 'A'-'Z' を 11-36 '_' を 37 'a'-'z' を 38-63 それ以外を 0 にする文字変換テーブルを作り(chartbl[256])、 ハッシュ表(hashtbl[256])を256だとすると、 hashtbl[chartbl['最初の文字']+chartbl['真ん中の文字']+hashtbk['最後から2番目の文字']+chartbl['最後の文字']] でハッシュ値が収得できるよ。
175 名前:デフォルトの名無しさん [02/08/27 16:01] インタープリターの勉強したいんですが、どこかに参考コードとか、 いい本ありませんか?
176 名前:ろうひ男爵 [02/08/27 16:38] どういった用途に使います?>>175 中間言語に落として、ゲームやツールに組み込む単純なスクリプト言語なら、 LL(1)が良いと思います。 それ以上に簡単な物の方がよいのでしたら、 構文解析もほとんど考えなくても良い言語にしたら簡単なんじゃないのでしょうか? 使用用途にもよりますが、以下ぐらいなら簡単に作れるのではないでしょうか? 命令を組み込みの物だけにする、 関数を使えなくする、構造化も出来なくする(手続き言語の古いMS-BASICみたいにする) 変数は$マークから始まるとか、特殊記号にする 算術計算式などを、別扱いにするか、専用の命令を作り、ADDとかにしする。 それでも、バックパッチぐらいは必要ですけど。 LLなら、そこまで難しくはないけど、 yaccとlexを使い、LALRって方法でも簡単に出来ますよ。
177 名前:デフォルトの名無しさん [02/08/27 16:53] >>176 用途というか、PerlやHSPを使ってるうちに、どうやってコンパイラや スクリプトが動くんだろうと思って、すごく簡単なものでもいいから作れたら 勉強がてらやるのもおもしろいかなーと漠然と思ったんです。 コンパイラに関してはぜんぜん知らなかったので、すこしWEBを見て LL(k),LR(k)について勉強しましたが、言ってる事は理解できても それをどうやってコードにしようと悩んでしまって。なにかコードがあれば みながら勉強することができるのですが・・・言語はJAVAかCかPERLか、VB くらいしか使えないので、どれかでやろうと思っています。 何かインタープリター系の本でコードが載っていて、いい本かなにかありますか? お願いします。ちなみにUNIX系使えないのでYACCとかできません・・・
178 名前: ◆JAPH9PWA mailto:sage [02/08/27 17:42] Macは知らないけど、Windowsならyaccあるよ hp.vector.co.jp/authors/VA010446/toolbox1/
179 名前:デフォルトの名無しさん [02/08/27 17:49] JavaCCで、構文と構文の隙間を埋めるような 柔軟な構文を定義する方法を教えてください。 Perlでいうところの (.*?) みたいなものが欲しいんです。お願いします。
180 名前:デフォルトの名無しさん [02/08/27 18:07] www.tokumaru.org/index.htm ここのコンパイラソースコードは参考にはならない?
181 名前:ろうひ男爵 [02/08/27 18:37] >>177 でしたら、 コンパイラ構成法 原田 賢一 共立出版株式会社 ISBN: 4320029224 6,500円 が一番分かりやすいのですが、yaccとlexが必要です。 コンパイラの仕組み 情報科学こんせぷつ〈8〉 朝倉書店 ; ISBN: 4254127081 も物量的に少ないので読みやすいですが、消化不良のところが出てきます。 しかし、1日から一週間で読めると思います。 あと、インタープリタとコンパイラの違いは大きくないので、 ここのスレッドに色々質問すると良いかもしれません。 どちらにしろ、コンパイラ関連の本は難解な物が多く、 いろいろなアルゴリズムを理解していることが前提となったりするので、 軽くアルゴリズムの本を読んでおいた方がためになりますよ。 アルゴリズムを1冊ですますには、以下の本が良いと思います。 定本Cプログラマのためのアルゴリズムとデータ構造 近藤嘉雪 技術評論社 簡単なアルゴリズムの本は C言語アルゴリズム+徹底入門 柏原正三 技術評論社 が読みやすいです。
182 名前:デフォルトの名無しさん mailto:sage [02/08/27 18:40] 金出す前にこれでも読んどけ。 www.hayalab.cs.ritsumei.ac.jp/~hayashi/materials/textbook.html
183 名前:Aoki [02/08/27 19:12] 実行速度が速いSmalltalkを実装するための技法をいろいろ教えて下さい。
184 名前:デフォルトの名無しさん mailto:sage [02/08/27 20:03] >>179 JavaCCは少し使ったことがあるんで、答えられるようなら答えますけど、 Perlは知らないんで、質問の意図がわからないです。
185 名前:179 [02/08/27 20:28] <ALL:~[]> /* Perlの(.*)相当だと思うのですが… */ void this () : {} { ( "{" this() "}" )+ )|(s = getAll() { println(s) } ) } が、期待通りの動作をしてくれません。 左の構文を優先させたいのです。お願いします。
186 名前:179 [02/08/27 20:35] 具体的には、(asdf()asdf((asdf)asdf)) みたいなのをパーズしたいと思ってます。 asdfの部分は、それが構文そのものを含む時以外は、 全ての文字を処理したいのです。
187 名前:デフォルトの名無しさん mailto:sage [02/08/27 20:46] <ALL:~[]*> すみませんこっちでした。
188 名前:184 mailto:sage [02/08/27 21:43] まだようわからんけど、{asdf{}asdf{{asdf}asdf}}が無理やりパースできるようにしてみた。 解釈が間違えてたらごめん。 TOKEN : { <ALL: (~["{","}"])+> } void Input() : {} { foo() } void foo() : { String s; } { ( LOOKAHEAD(2) "{" ( foo() )* "}" )+ | (s = getAll() { System.out.println(s); } ) } String getAll() : { Token t; } { t = <ALL> { return t.image; } }
189 名前:179 [02/08/27 21:58] ありがとうございます。参考にします。
190 名前:デフォルトの名無しさん [02/08/28 05:15] パスカルやCはLL?LR?どっちを使ってるの?最近のはやいコンパイラは みんなLRかな?
191 名前:デフォルトの名無しさん mailto:sage [02/08/28 09:24] 最近のflexはスレッドセーフなCコードを吐くようになったのか。 %option reentrant
192 名前:デフォルトの名無しさん [02/08/28 10:06] >>182 のリンクはいいリンクだ
193 名前:デフォルトの名無しさん mailto:sage [02/08/28 10:13] >>190 パスカルはLL(1)じゃないの?
194 名前:デフォルトの名無しさん mailto:sage [02/08/28 10:58] PascalはLL(1)でもパースできるように設計されているだけであって、 コンパイラがどうしているかは別。
195 名前:棄教者 ◆witdLTi2 mailto:sage [02/08/28 13:04] >>182 のリンク先にあるコンパイラのソースコードの解説、 これってWEBを使って吐き出されたのかなぁ。 スレとは関係ないのでsage そういえば TeX とか WEB とか Knuth なスレってあったっけ?
196 名前:デフォルトの名無しさん [02/08/28 13:41] Texスレはなぜかビジネスソフト板で見たような気がする。 Knuthスレはないんじゃないかな? >>182 のリンク先にある www.hayalab.cs.ritsumei.ac.jp/~hayashi/materials/SCF.pdf の元のコードってどこにあるの?ないぞ
197 名前:デフォルトの名無しさん [02/08/28 16:32] knuthが作ったWEB言語って何?気になるんだけど
198 名前:デフォルトの名無しさん mailto:sage [02/08/28 22:53] >>197 Knuthが提唱した文芸的プログラミングの実装、かな? ドキュメントの中にソースコードを埋め込む形を取ることで、ソースとドキュメントの 間の不整合や、ドキュメント無きコーディングを避けるっていうものらしい。 コンパイルのためにはドキュメントの中からソースを抜き出してコンパイラに渡す プログラムが必要になる。 で、Knuth自身が作った、TeXドキュメントからPascalプログラムを抜き出してコンパイルする システムがWEBシステムの筈。 詳しくは www.google.com/search?hl=ja&ie=UTF-8&oe=utf-8&q=Knuth+WEB&btnG=Google+%E6%A4%9C%E7%B4%A2&lr=lang_ja でも見れ。
199 名前:デフォルトの名無しさん mailto:sage [02/08/28 22:54] >>195 TeX総合スレ@数学板 science.2ch.net/test/read.cgi/math/1026634481/
200 名前:棄教者 ◆witdLTi2 [02/09/02 13:04] >>111 原田本を今読んでいるところですが、気になった箇所があるので皆さんにお伺いします。 p.164下から11行目 > $p_m$ にアドレス $m+n$ の領域を割り付ける. とあるのは > $v_m$ にアドレス $m+n$ の領域を割り付ける. ではないでしょうか。 ちなみに正誤表 www.hara.cs.keio.ac.jp/kCompiler/Errata/Errata.html で確認したところ、掲載されていませんでした。 いきなり原田先生にメールして自分が間違っていたら恥ずかしいので、 2CHのハッカーの皆さんに確認してからメールをしようと思います。
201 名前:棄教者 ◆witdLTi2 [02/09/02 13:04] テユーカ200get
202 名前:棄教者 ◆witdLTi2 mailto:sage [02/09/02 16:12] >>182 p.15 の BNF の説明 > Backus Nauer Form Backus Nauer Form (BNF) では、.... って the Jargon File には Backus-Naur Form / Backus Normal Form って書いてあるんですけど。。。 Nauer って who?
203 名前:デフォルトの名無しさん mailto:sage [02/09/02 16:33] ドイツ語綴り->Nauer 英語綴り->Naur だったと思う。
204 名前:棄教者 ◆witdLTi2 mailto:sage [02/09/02 17:15] グーグルすると backus naur form で日本語限定だと213件, 言語非限定だと約20700件ヒット。 backus nauer form で日本語限定だと9件, 言語非限定だと253件ヒット。 おまけに「スペリング修正候補 backus <b>naur</b> form」として修正を勧告される。
205 名前:棄教者 ◆witdLTi2 mailto:sage [02/09/02 17:16] ×backus naur form で日本語限定だと213件 ○backus naur form で日本語限定だと215件
206 名前:デフォルトの名無しさん [02/09/03 21:12] インタープリタの仮想機械に興味を持ち、調べています。 調べてみた JVM、CRI、Python はいずれもスタックマシンのようでしたが、レ ジスタマシンと比較して何かメリットがあるのでしょうか。
207 名前:デフォルトの名無しさん mailto:sage [02/09/03 22:29] Forthハッカーの伝統。 というのは半分冗談だけど、中間コードが簡単/短くできるからじゃないんですか。 コンパイラも作りやすいし。
208 名前:デフォルトの名無しさん mailto:sage [02/09/04 00:53] 詳しくは知らんけど、インタープリタの仮想機械では、 レジスタのアクセスがメモリをアクセスするのと同じ。 パイプラインとかハードウェアで実装する場合の利点が いかせられないからだと思う。
209 名前: mailto:sage [02/09/04 02:05] >>206 仮想マシンで最もコストが高いのが、コードのフェッチとデコード。 スタックマシンなら、コードも短いしオペランドも要らない。
210 名前:デフォルトの名無しさん mailto:sage [02/09/04 11:34] >>207-209 ありがとうございました。 まとめると、ネイティブコードまでコンパイルするのでなければ、レジスタマ シンでも結局はメモリへのアクセスを行うことになるので、スタックマシンに 対する利点はなく、むしろコードが短くなる分だけスタックマシンの方が速度 的に有利、というところですかね。
211 名前:ろうひ男爵 [02/09/04 12:20] >>210 たしかに、 ネイティブコードへ最適化する場合、レジスタマシンの方が有利ですよね。 広域レジスタとローカルレジスタを割り当てたりした方が最適化しやすいですからね。 一方、インタプリタの場合、おっしゃるとおり レジスタマシンと言っても結局メモリアクセスされるので、 スタックマシンに対するメリットはないですね。 それだったら、簡単に設計でき、 なおかつコードが短くなるスタックマシンの方が有利でしょう。 自分的には出力されたコードがレジスタマシンの方が読みやすいので、 レジスタマシンを使ってます。(インタプリタですが)
212 名前:デフォルトの名無しさん mailto:sage [02/09/04 14:39] つーかJITコンパイル等でチューニングを詰めていくと 結局どっちも速度的に大差ないという話。
213 名前:デフォルトの名無しさん mailto:sage [02/09/04 21:04] スタックの一部をレジスタにマップする最適化は比較的簡単だから ネイティブコードでも結構速くなる。 ネイティブコードのみをがりがりチューニングしたければ、中間コードは 3つ組や4つ組がわかりやすいかも。
214 名前:デフォルトの名無しさん [02/09/05 10:00] インタープリタの初歩なら、石田晴久訳のUNIXプログラミング環境の 後半のhocを一通りやってみるのが近道じゃないかな。
215 名前:デフォルトの名無しさん [02/09/05 14:22] スタックマシンでのコンパイルがよくわからない〜
216 名前:デフォルトの名無しさん [02/09/06 01:30] ちとスレ違いですが、JITの勉強にお勧めの良書教えてくれませんか?
217 名前:デフォルトの名無しさん mailto:sage [02/09/06 02:16] >>216 詳しくはないけど、良書どうこういうより、 JITについて書かれている本を探すの自体が大変だと思う。 一応、参考URLを貼り付けておく。 shuJIT www.shudo.net/jit/index-j.html
218 名前:デフォルトの名無しさん mailto:sage [02/09/07 15:01] コンパイラの理論と実現ではC--という小さなCの処理系を作ってるけど それのソースコードがわけわからんとです。 構文木の構造体が struct TREE{ int val; struct TREE *left; struct TREE *right; } で、 maketree(int a,TREE *b,TREE *c)という関数で構文木を作るんですが、 あるところでmaketree関数のパラメータのbにint型を渡してるんです。 型が合わないからエラーがでると思うのですが、なにか僕が大きな間違いをしてるんでしょうか
219 名前:デフォルトの名無しさん mailto:sage [02/09/07 19:27] >>218 sizeof(int) == sizeof(void*) を仮定していて、 int の即値を格納しようとしているとか?
220 名前:218 mailto:sage [02/09/08 11:15] >>219 構文木関係の部分だけ抜き出してコンパイルしてみると、 BCCではエラーがでました(TREE *型にint型は渡せない。と言っておられました)、 clは警告文だけでした。それにちゃんと動きました。 うーむ、やはり即値を渡しているのか。。。
221 名前:デフォルトの名無しさん mailto:sage [02/09/09 17:06] >>218 宣言してない関数の戻り値をそのまま渡してるとか? それかNULL代わりに0渡してるんじゃない? こんなんだったらどっちでも昔の名残だね。
222 名前:218 mailto:sage [02/09/09 21:26] >>221 なにしろANSIで定められる前のCなので古めかしいところは多いです たとえば、 func(a,b){ int a; int b; } とか。。。 それと、bには字句解析で得たリテラルを渡してるようです (TREE *)にキャストしてやることで問題は回避できました。
223 名前:デフォルトの名無しさん mailto:sage [02/09/11 23:39] >>222 それを書くなら、こうだろう。 func(a, b) int a; int b; { ... } > それと、bには字句解析で得たリテラルを渡してるようです 正攻法としては union 使うように書き換えちゃえ、かな。
224 名前:デフォルトの名無しさん mailto:sage [02/09/21 12:17] LALR(K)パーサジェネレータのお勧めってありますか? googleでlalr(k)てしたところいくつか見つかったのですが。
225 名前:デフォルトの名無しさん mailto:sage [02/09/21 13:28] >>224 yacc以外でってこと? といっても他はyaccの他言語用ぐらいしかしらないけど。
226 名前:デフォルトの名無しさん mailto:sage [02/09/21 14:09] >>225 いやそうでなく k >= 2 という意味でお願いします。
227 名前:デフォルトの名無しさん [02/09/22 19:47] www.cminusminus.org/ これはよいです。
228 名前:デフォルトの名無しさん [02/09/25 09:46] >>227 面白そうですね 簡単に説明してもらえませんか?
229 名前: mailto:sage [02/09/25 10:05] >>228 自分で読む気はないのか?
230 名前:デフォルトの名無しさん mailto:sage [02/09/25 11:26] Cより低級な、簡単なアセンブラとしてのC--ってことでは?
231 名前:デフォルトの名無しさん [02/09/25 21:44] 氷魚さんの作ったやつ?
232 名前:デフォルトの名無しさん mailto:sage [02/09/25 22:01] >>231 だれそれ?電波固定?
233 名前:デフォルトの名無しさん [02/09/25 22:09] コンパイラとかじゃなく、ファイルを読む道具としてyacc&lexを 使っているのですが、入力した数値で要素数が定義されてるよう な場合どうしたらよいでしょうか? 要素数 - 要素... 4 4 4 2 2 5 0 1 0 2 3 2 0 3 という形式です。 int_array : /* empty */ | integer | int_array integer ; では、全部一気に読んでしまうので・・・。(低レベルでスマン・・・。)
234 名前:デフォルトの名無しさん mailto:sage [02/09/26 03:13] >>233 int_array : /* empty */ | one integer | two integer integer | three integer integer integer (略) ; とするとか… イヤスギ
235 名前:デフォルトの名無しさん mailto:sage [02/09/26 03:43] int_list: /* カラ */ | integer | int_list integer ; int_array: integer int_list ; ダメか?
236 名前:棄教者 ◆KIKYO7cg mailto:sage [02/09/26 08:48] -----------------yacc------------ %token NUM %% lines : /* empty */ | line lines ; line : index elements '\n' ; index : number ; elements : /* empty */ | number elements ; number : NUM ; %% ------------------lex------------- [0-9]+ { yylval = atoi( yytext ); return NUM; } [ \t] { /* 空白は捨てる */ } でどうよ。
237 名前:233 [02/09/27 01:01] レス下さった方々ありがとうございます。 >>234 ちょっと無理です・・・。^^; >>235 最初の要素は良いのですが残りはすべてint_list integerに一致して しまうようです。 >>236 233の例では行けると思いますが、実はこの形式を出力するツールは 一つではなくて、それらの間で改行の位置というのは統一されていな いのです。というわけで、できれば改行フリーでなんとかしたいと 思ってるのですが・・・。 うーん、そもそも読み込んだ値を利用したり、繰り返しの回数を制限 するのはyaccで定義できる構文の概念を逸脱しているんでしょうか・ ・・。 今回はyaccの使用はやめてlexだけに留めるべきかもしれませ んね。(その辺ご存知の方いましたら後学のため教えていただきたい です。)
238 名前:デフォルトの名無しさん mailto:sage [02/09/27 01:04] >>237 atoiでいいじゃん。 「何回繰り返す」とかはセマンティクスの部類に入るから、 yacc使うのはお門違い。
239 名前:デフォルトの名無しさん mailto:sage [02/09/27 01:09] >>237 ドラゴンブックにはそういうの(個数の検査とか)は構文では解決でけん と書いてあった気がします。
240 名前:デフォルトの名無しさん mailto:sage [02/09/27 01:19] >>233 正攻法は単に数値のリストとして、リストに含まれる文字コードチェックに 利用を限ってしまうのがいいんじゃないかな? 考えてみるのは面白そうだけど、 仕事となると、むきになってやっても費用対効果がなさそうだし・・・
241 名前:デフォルトの名無しさん mailto:sage [02/09/27 22:01] ギコBasic新しく作り直してみた page.freett.com/gikob/gikob0002.zip
242 名前:241 mailto:sage [02/10/01 09:30] まだギコBasicのスレが残ってるのに気づかなかった・・・スマソ
243 名前:デフォルトの名無しさん [02/10/17 18:25] ANTLRの使い方を日本語で解説してあるウェブページありませんか?
244 名前:デフォルトの名無しさん [02/10/19 07:54] ガイツュシ
245 名前:デフォルトの名無しさん [02/10/19 21:12] STLスレから出張。 これ spirit.sourceforge.net/ どうなん?
246 名前:デフォルトの名無しさん [02/10/19 23:06] >>245 すげー。びびった。久々に驚嘆したハックだ。
247 名前:デフォルトの名無しさん [02/11/05 22:08] ふふ
248 名前:デフォルトの名無しさん [02/11/07 02:31] 以下のような構文を作ります。データを定義しているフォーマットです。xmlとかcvsみたいな物です。 ここから木の様に情報を取り出したいと思ったのですが、上手くパーサを作れません。 tokenizerは簡単に出来るのですが、どうすれば良いですか。rubyでやってます。 object hoge caption='hogehoge' val=0 object fuga caption='fugafuga' object aaa caption='aaa' end object bbb caption='bbb' end object ccc caption='ccc' end end end
249 名前:ねこま mailto:sage [02/11/07 02:39] インデントレベルだけで解釈できれば簡単そう
250 名前:デフォルトの名無しさん [02/11/07 02:46] トラバースと逆の手順。 各ノードは子供と親のリンクを持つ。 <でノードを生成、現在処理中のノードへの参照を 親への参照として新規ノードへ設定。 その後で親に子として新規ノードへの参照を設定。 処理中のノードの参照として新規ノードを指させる。 >でシングルタグか開始タグか終了タグかを判断し 親に戻るかどうかを決める。 戻る時には処理中のノードの参照として 親を指させる。 こっちにドキュメントを置いてます。 サンプルソースはC++。 ソース玉は整理してないんで乱雑にメモテキストとか テストデータが散らかっててちょっと気が引ける。 https://sourceforge.jp/projects/frogger/ こういうドキュメントが欲しいとか 掲示板に投げておけばそのうち対処するかも。
251 名前:デフォルトの名無しさん mailto:sage [02/11/07 02:55] >>248 rubyじゃできないな。
252 名前:デフォルトの名無しさん [02/11/07 03:22] 手抜き実装で考え方だけ。言語も適当。 loop token w = Tokenizer.next(); if w == 'object' then currNode := currNode.pushNewNode( Tokenizer.next()); continue; end if if w == 'end' then currNode := currNode.parent(); if currNode is null then break; continue; end if Tokenizer.skip(); currNode.pushNamedValue( w, Tokenizer.next()); end loop Node というクラスはツリーのノードを表す。 各ノードは子ノードとして、object か namedValue を持つことができる。 pushNewNode は object 子ノードとして追加して、その新規子ノードを返す。 引数はノードの名前を表す。 pushNamedValue は namedValue 子ノードとして追加する。戻り値はなし。 第一引数は値の名前、第二引数は値の中身。
253 名前:デフォルトの名無しさん [02/11/07 04:33] 今ちょっと色々調べてたんですけど、色々とヒント有り難うございます。 一週間前にはかけらすらないような事趣味でやり始めて分かったんですが構造を持つ ファイルフォーマットってコンパイラ作成のような視点が必要なんですね。 さすがにインデントでは無理だってすぐ分かりましたが、xmlに近いことは 気づきませんでした。そう言えばxmlと似てますね。 内部データ構造を持つファイルフォーマットのパーサーの解説の一般的なドキュメント 希望>250
254 名前:デフォルトの名無しさん mailto:sage [02/11/07 07:52] schemeで書くとこんな感じなんだが (define (hoge-read s) (let loop ((x s) (stack '())) (if (pair? x) (case (car x) ((object) (loop (cddr x) (cons (list (cadr x) (car x)) stack))) ((end) (if (null? stack) (error "Syntax-error - Corresponding 'object' is required :" s)) (if (pair? (cdr stack)) (loop (cdr x) (cons (cons (reverse (car stack)) (cadr stack)) (cddr stack))) (loop (cdr x) (reverse (car stack))))) (else (loop (cdddr x) (cons (cons (list (car x) (caddr x)) (car stack)) (cdr stack))))) (if (and (pair? stack) (pair? (car stack))) (error "Syntax-error - 'end' is required :" s) stack))))
255 名前:デフォルトの名無しさん mailto:sage [02/11/07 07:52] ;テスト (define hoge-read-test-data '( object hoge caption = "hogehoge" val = 0 object fuga caption = "fugafuga" object aaa caption = "aaa" end object bbb caption = "bbb" end object ccc caption = "ccc" end end end )) (hoge-read read-tag-test-data) => (object hoge (caption "hogehoge") (val 0) (object fuga (caption "fugafuga") (object aaa (caption "aaa")) (object bbb (caption "bbb")) (object ccc (caption "ccc"))))
256 名前:デフォルトの名無しさん mailto:sage [02/11/07 08:20] (中身的に変んないけど)Cに変換すると scmobj_t hoge_read(scmobj_t s) { scmobj_t x = s; scmobj_t stack = nil; tail_recursive_loop: if (pairp(x)) { if (car(x) == make_symbol("object")) { stack = cons(list2(cadr(x),car(x)),stack); x = cddr(x); goto tail_recursive_loop; } else if (car(x) == make_symbol("end")) { if (nullp(stack)) return error("Syntax-error - Corresponding 'object' is required :",s); if (pairp(cdr(stack))) { x = cdr(x); stack = cons(cons(reverse(car(stack)),cadr(stack)),cddr(stack)); goto tail_recursive_loop; } else { x = cdr(x); stack = reverse(car(stack)); goto tail_recursive_loop; } } else { stack = cons(cons(list2(car(x),caddr(x)),car(stack)),cdr(stack)); x = cdddr(x); goto tail_recursive_loop; } } else if (pairp(stack) && pairp(car(stack))) return error("Syntax-error - 'end' is required :",s); return stack; }
257 名前:デフォルトの名無しさん mailto:sage [02/11/14 06:59] >>245 Expression Templateをはじめ各種のテンプレート・メタ・プログラミングは 知ってたけどPaser Generatorにまで行きつくとは。 カ コ イ イ ! ! テンプレートらしく解析対象の列の要素型がパラメタ指定できるのもカコイイ! (char, w_charに始まってユーザー作成のクラスまで) 字句解析器も含んでるしね。 当方Java(正確にはバイトコード)のPartial Evaluationを実装中なのだが、 Javaに演算子多重定義が導入されていれば、 合わせ技で同じようなことが狙えたのになァ。惜しい。 (メソッド呼び出し式で書けば良いわけだが、カッコ良さが大いに減る。)
258 名前:デフォルトの名無しさん [02/11/17 16:17] >>257 でも、あんまり真剣な用途には使えないよね。 実行時にパーザ生成するんだったら、文字列で文法与えても良いな。
259 名前:祐一ゴン [02/11/17 19:39] やぁ、ぼく押金さん(*´∀`*)ノ 中学の時からポカリの粉を麻薬と思って鼻から吸ってたけどヽ(`Д´)ノ ウワァァン!!全然トリップできないや!最近初めてその事実を知ったよ 今部屋をテラフォーミングしたら鼠の干からびた死体が出てきたよ、あまり旨くなかったよ
260 名前:デフォルトの名無しさん [02/11/18 04:16] パスカルとベーシックってどっちが作りやすいですか?
261 名前::−) mailto:sage [02/11/18 07:12] pascal→delfy ベーシック→HSP HSPはタダの開発環境です。デルフィは10万円くらい?
262 名前:デフォルトの名無しさん [02/11/18 11:55] たとえば、関数呼び出し a(b(c(d()))); ってのをなんらかの中間コードにしてあって、 これを1パスでコード生成できるの? (最適化はどうでもいい) a(); のコード生成はできるけど、 a(b()); のようにネストするとできなくなって困ってます。
263 名前:デフォルトの名無しさん mailto:sage [02/11/18 12:01] >>262 ちょっとは考えろ つーか、お前の言う中間コードって何のためにあるのさ
264 名前:デフォルトの名無しさん mailto:sage [02/11/18 13:15] >>262 > ってのをなんらかの中間コードにしてあって、 > これを1パスでコード生成できるの? 「これ」というのが「中間コード」を指しているのなら、 どのような「中間コード」なのか示してもらわないと。 ) を検出したタイミングでコード生成すりゃいいだけの 話なんだけど。
265 名前:デフォルトの名無しさん [02/11/18 17:40] バイトコードバイトコード!
266 名前:デフォルトの名無しさん [02/11/19 00:50] >>261 デルファイじゃないのか?Delphi 嘘教えるなよ
267 名前:デフォルトの名無しさん mailto:sage [02/11/19 01:10] >>261 はどうみても無知だろ
268 名前:デフォルトの名無しさん [02/11/19 03:22] >>260 はコンパイラ作るならbasicかpascalどっちを作ったほうがいいかって いってるんだろ。どっちだろう、俺はベーシック知らないからなんとも いえん。
269 名前:デフォルトの名無しさん mailto:sage [02/11/19 03:26] コンパイラならPascalだろうが、 インタプリタならBasicの方が楽だろう。 昔のBasicインタプリタは4KBくらいだった。
270 名前:デフォルトの名無しさん [02/11/19 03:59] ベーシックインタプリタのコードってないの?
271 名前:デフォルトの名無しさん mailto:sage [02/11/19 05:11] >>271 ほれ ttp://homepage2.nifty.com/rohizuka/ka/pa_003_a.htm
272 名前:デフォルトの名無しさん mailto:sage [02/11/19 11:09] >>260-270 …この21世紀になんでその2択に拘るんだw。
273 名前:257 mailto:sage [02/11/19 11:13] >>258 使えないかねぇ…。この辺の技術には期待したいトコロなんだけどなぁ。 私も使ってみたわけではないので大丈夫と言い切れるもんではないんだが。 実行時というか、コンパイル時にテンプレートの展開動作を利用して パーザが作られるようなんだが。
274 名前:デフォルトの名無しさん mailto:sage [02/11/21 13:10] >>270 ギコBASICは参考にならないですか?
275 名前:デフォルトの名無しさん mailto:sage [02/11/21 14:05] この辺は? member.nifty.ne.jp/nakamula/recurs.htm
276 名前:デフォルトの名無しさん [02/12/03 17:38] bisonが吐き出したコードってなんでVC++でコンパイル通らないんだ? 激しく鬱… bison++/flex++に乗り換えるかのぉ。ドキュメント少なすぎだが・・・
277 名前:デフォルトの名無しさん mailto:sage [02/12/03 18:48] >276 > bisonが吐き出したコードってなんでVC++でコンパイル通らないんだ? gcc 使え、というお達しかと……。ところで byacc とか kmyacc はどう?
278 名前:276 [02/12/04 14:34] 正確にはC++ソースとしてコンパイルしようとすると、VC++には入ってない(おそらくPOSIX互換の?)インクルードファイルを要求されてコンパイルできません。 まぁ、別にオブジェクト指向な解析器が作りたいというわけではなく、ただアクション書くのにクラスとか使いたいだけなんだが… 何かいい方法あったらキボンヌ!というか、bison++/flex++の日本語ドキュメントなんか激しくほすぃかも
279 名前:デフォルトの名無しさん mailto:sage [02/12/04 14:47] >278 include 外せばいいんじゃないの?
280 名前:デフォルトの名無しさん mailto:sage [02/12/04 19:38] >279 それだと毎回 *.y からコード生成するたびに書き換えが必要になるから、 ダミーのヘッダファイルをでっち上げるに一票。 っつか、どうしても再入可能にしたいとかで bison の機能が必須でなければ、 bison 以外の yacc 互換処理系を試す方が幸せかも知れんが。
281 名前:278 [02/12/05 01:17] >>280 bison以外ならC++ソースとしてビルドできるんですか? 今日はbison++/flex++試しマスタ。今度はVC++だとエラー出まくって全然ビルドできない罠。 byaccとkmyacc試してみるかなぁ。
282 名前:デフォルトの名無しさん [02/12/05 08:55] yaccの使い方教えろや
283 名前:bloom [02/12/05 09:10] www.agemasukudasai.com/bloom/
284 名前:デフォルトの名無しさん mailto:sage [02/12/05 09:23] coco/r使えよ
285 名前:デフォルトの名無しさん [02/12/05 12:01] coco/rって何か教えろや
286 名前:デフォルトの名無しさん [02/12/05 15:39] うえーんコンパイラフレームワークキボン( ●д●)
287 名前:デフォルトの名無しさん mailto:sage [02/12/05 16:53] >>286 lex + yacc + RTL(gcc)じゃ駄目か?
288 名前:デフォルトの名無しさん [02/12/05 16:56] yaccかbisonについて優しく解説してるサイトはありませんか? または本でも。
289 名前:デフォルトの名無しさん mailto:sage [02/12/05 18:16] ちょっと聞いていいですか? このスレ、結構人が訪れているみたいなんだけれど、 実際にコンパイラレベル(変な言い方だけど)のものを作ってる、もしくは作った人っています? 自分はスクリプトぐらいなら、何とかいけそうなんだけれど、 コンパイラまでくるとかなり大変じゃないですか?
290 名前:デフォルトの名無しさん mailto:sage [02/12/05 19:34] 仮想的なスタックマシンとかのコンパイラなら 作ってる人は沢山いると思うよ。
291 名前:デフォルトの名無しさん mailto:sage [02/12/05 19:40] >288 オライリーの lex & yacc 本 >289 アセンブラを出力させるなら、そんなに面倒じゃない。実行できるバイナリを出力 しようと思うと、山のような詳細に追われて力尽きる。
292 名前:デフォルトの名無しさん mailto:sage [02/12/05 20:17] インストラクションコードへの変換が面倒だなあ。 テーブル化するのが。
293 名前:デフォルトの名無しさん mailto:sage [02/12/06 07:28] 変な聞き方してしまいました。 コンパイラといっても仮想マシンコードに変換するスクリプトコンパイラだってあるし。 ネエィテブなアセンブルや直接、実行形式を吐くコンパイラのことを聞いたつもりでした。
294 名前:ろうひ男爵 [02/12/13 20:28] >>289 自分は構造化BASICで186のDOSの.COMを出力する物を作ったよ。 今は暇を見つけて簡易的なC言語コンパイラを作ってるよ
295 名前:デフォルトの名無しさん [02/12/13 20:34] だれか僕のためにCコンパイラのソースみせてください。 Cじゃなくてもパスカルでもベーシックでもいいっす。 ( ̄人 ̄)オ・ネ・カ・゛イ♪ヽ(* ̄〓 ̄*)ノ^☆ブチュゥゥ♪
296 名前:デフォルトの名無しさん mailto:sage [02/12/13 20:41] ギャーーーーー
297 名前:デフォルトの名無しさん mailto:ネタニマジレスカコワルイ [02/12/13 20:56] >>295 gcc.gnu.org/
298 名前:デフォルトの名無しさん mailto:sage [02/12/13 21:15] >>295 ほれ #include <stdio.h> main() { printf("逝ってよし"); }
299 名前:デフォルトの名無しさん [02/12/13 21:33] ウワァァァァァァヽ(`Д´)ノァァァァァァン!
300 名前:ろうひ男爵 [02/12/14 17:55] >>295 BASICで、 [ラベル:] if 比較式 goto ラベル [ラベル:] print "メッセージ" [ラベル:] 代入式 でよかったら、構文解析もほとんどいらないし簡単じゃない? 改行で行末にして、変数の頭にRをつけてR10とかすれば、 悩むところはないと思うよ。 パスカルだとラベルを読み込むときに細工すればLL(1)だよね、 そんなに難しくないはずだよ。 Cにしろパスカルにしろなにがしらの本を読んだ方が良いんじゃない? 言語はどのレベルの物を作ろうとしてるの? それと、実行環境はスクリプトで中間言語に落としての実行環境?
301 名前:デフォルトの名無しさん mailto:sage [02/12/14 19:56] >295 どうせ渡されたところで読めない、に 1 票。 言語処理系を作るのが初めてなら、とりあえず「UNIX プログラミング環境」でも 買ってきて hoc の実装追ってみれば?
302 名前:デフォルトの名無しさん mailto:sage [02/12/14 20:38] つーかコンパイラのソースが見たいんならgccなりOpenWatcomなりがあるわけで。 それぐらい自分で探せヴォケつー。
303 名前:デフォルトの名無しさん mailto:sage [02/12/14 21:05] bccが一番読みやすいなり
304 名前:デフォルトの名無しさん mailto:sage [02/12/14 21:24] >302 いきなり gcc は厳しすぎ。 10年前だと「アルゴリズム+データ構造=プログラム」読めというところだが、 さすがに古いよな…。
305 名前:デフォルトの名無しさん mailto:sage [02/12/14 22:29] www.amazon.co.jp/exec/obidos/ASIN/4844317210/qid=1039872470 はどうよ? インタープリタだけど。
306 名前:デフォルトの名無しさん [02/12/14 22:31] たけーんだよバカ
307 名前:デフォルトの名無しさん mailto:sage [02/12/15 00:57] 専門書の類は、どれもそんなもんだ。諦めれ。
308 名前:デフォルトの名無しさん mailto:sage [02/12/15 07:18] 一応タダで読めるけどな。 i.loveruby.net/ja/rhg/index.html
309 名前:ろうひ男爵 [02/12/20 04:02] Cマガでコンパイラのことをやってますね。 演算子順位法とLL(1)をざらっと、LALRの概説です。 計12ページぐらいだったので、ここにいる方には物足りませんが、 読みやすかったので、人に聞かれた場合にはイイかも。
310 名前:デフォルトの名無しさん mailto:sage [02/12/20 04:16] tmp.2ch.net/test/read.cgi/lobby/1040147707/ これよんでみれ!
311 名前:デフォルトの名無しさん [02/12/20 04:44] えっ、bisonで生成したコードってVC++じゃ、 コンパイルできないのですか? じゃあ、かわりにVC++で通るyacc互換でお勧めってあります? 仕事でも使うかもしれないので商用OKだとありがたいのですが。
312 名前:デフォルトの名無しさん [02/12/20 04:56] GC(ガベコレ)についてちゃんと勉強してみたいのですが、 何かいい書籍はありますか?今は少しづつですが、gccに含まれている Boehmのソースで勉強してますがなかなか思うように進みません。 VMにそのようなものが書かれているものがあればそれでもOKです。 よろしくお願いします。
313 名前:デフォルトの名無しさん mailto:sage [02/12/20 06:48] >>312 とりあえず、>>305 に紹介されてる本読むとか。
314 名前:デフォルトの名無しさん mailto:sage [02/12/20 09:45] >>309 概説でしかないし、yaccはちょこっとだけしか載ってない。 作るための特集じゃなくて、基礎知識をお勉強するための記事だった。 という印象。
315 名前:デフォルトの名無しさん mailto:sage [02/12/20 09:47] >>311 VCでコンパイルできなかったっけ? まぁいいや。 ttp://www.kohsuke.org/flex++bison++/ これなんかどうよ。使った事無いけど。
316 名前:ろうひ男爵 [02/12/20 13:09] >>314 さすがにあのページ数だと、1つでも掘り下げるのは難しかったみたいですね。 その中では演算子順位法が分かりやすかったと思います。
317 名前:デフォルトの名無しさん mailto:sage [02/12/20 13:40] >>311 通るよ。 でもbisonで生成したコードにはGNUのテンプレートが含まれるので、商用はま ずかったと思う。
318 名前:デフォルトの名無しさん mailto:sage [02/12/20 22:12] >>312 書籍じゃないけど。 www.dcs.qmul.ac.uk/SEL-HPC/Articles/GeneratedHtml/comp.gc.html
319 名前:デフォルトの名無しさん mailto:sage [02/12/21 01:10] >>317 出力されたコード見れば分るけど 1.24 以降は特例として GPL 適用外になってる。
320 名前:デフォルトの名無しさん mailto:sage [02/12/21 08:09] >>319 あ、変わったんだ。サンクス。
321 名前:デフォルトの名無しさん mailto:sage [02/12/21 18:09] bisonを使った宿題が出ているのですが、 ここでそのことについて質問してもいいでしょうか?
322 名前:デフォルトの名無しさん mailto:sage [02/12/21 23:16] >>321 >yaccやlexの使い方やら言語仕様やらの話題。 だから、宿題丸投げじゃなきゃいいと思うよ。
323 名前:デフォルトの名無しさん mailto:sage [02/12/22 01:11] >>321 何か本を入手した?(購入するのも、図書館で借りるのも可。)もしまだなら、 書名:UNIX Literacy Series Vol.12 UNIX yaccとlexの使い方 発行所:HBJ出版局 著者:田中正広 ISBN:4-8337-8728-8 を入手して読んでみるといいYO!現在これ読んで某課題と格闘中(^^; で、そういった本を読んでから質問するのなら十分OKかと。>>322 に同意
324 名前:デフォルトの名無しさん [02/12/22 01:13] スクリプト言語でアセンブラ処理系は作れるのか?
325 名前:デフォルトの名無しさん mailto:sage [02/12/22 01:28] >124 作れるよ
326 名前:デフォルトの名無しさん [02/12/22 11:56] 最近、Flex&Bisonをいじり始めました。 まだ、基本概念を勉強中なのですが、Flex&Bisonを使った「C++」用の チュートリアルや簡単なサンプル実装などないでしょうか? 「C」での実装はいろいろあるんですが、自分はC++で実装したいの困ってます。 C++での解説も申し訳ない程度にはあるんですが、やっぱりサンプルがあると助かります。
327 名前:デフォルトの名無しさん [02/12/22 12:04] スクリプト言語でアセンブラ処理系ってのもいみなさそうだな。 C言語をスクリプト言語として動くように作ったことはあるが。
328 名前:デフォルトの名無しさん mailto:sage [02/12/22 14:09] >>327 意味あるよ
329 名前:デフォルトの名無しさん mailto:sage [02/12/22 14:52] >>328 新規チップの設計用とか?w
330 名前:デフォルトの名無しさん mailto:sage [02/12/22 15:38] >329 ユーザにアセンブラ処理系の機能拡張をさせる場合には、スクリプト言語を そのまま使えるのは嬉しいかも。自前でマクロ言語作るのって手間だし、マ クロの設計がダサいとユーザの不満もたまるし(w ただ、往々にしてバイナリ入出力の扱いって C, C++ の方が楽なんだよね。
331 名前:デフォルトの名無しさん mailto:sage [02/12/22 18:58] Cマガの特集見ました。 よしこれから面白くなるってところで、終わってました。 期待してたのにちょっと悲しい。
332 名前:321 mailto:sage [02/12/22 21:22] 自己解決しました。 皆さん、ご迷惑をおかけしました。
333 名前:デフォルトの名無しさん mailto:sage [02/12/23 00:22] catalog.compilertools.net/ このあたりはどうかな。
334 名前:デフォルトの名無しさん [03/01/02 18:47] RTLでいいですか?
335 名前:デフォルトの名無しさん mailto:sage [03/01/02 19:45] あははコンパイラを作るのって楽しいなぁ(´∀`)
336 名前:デフォルトの名無しさん mailto:sage [03/01/02 19:48] YACC link www2.dewa.or.jp/rock/camp/yacc/whatyacc.htm
337 名前:デフォルトの名無しさん mailto:sage [03/01/04 01:51] >336 チクショー!! まんまとだまされたぜ。
338 名前:デフォルトの名無しさん mailto:sage [03/01/04 08:38] 山形オートキャンパークラブ(´д`;)
339 名前:中卒 [03/01/04 14:37] ナカータ育男の本でわけわからん数式が出てきてるんですがどうにかなりませんか?
340 名前:ろうひ男爵 [03/01/04 20:02] >>339 頑張って、勉強するしかないのでは。 もしくは、より簡単な、今月のcマガの特集とか、 コンパイラの仕組み 渡邊 坦 著 とかはどう?
341 名前:デフォルトの名無しさん [03/01/04 20:23] 「モナーのコンパイラスレ出張所」ページでも作るか。 AAで語るFSAとか。ネタよろしこ。
342 名前:名無しさん mailto:sage [03/01/05 10:35] >>339 その本は悪魔の本なので除霊する必要があります。早急にこちらへ 送ってください。 # 一万えんもする本なんて買えねーよ。
343 名前:デフォルトの名無しさん mailto:sage [03/01/09 02:50] 名スレの予感
344 名前:デフォルトの名無しさん mailto:sage [03/01/09 03:32] >>53 いいんだよ。気にしないで。 まさゆきが嬉しそうだから。 286 名前:ひろゆき ?3SHRUNYAXA 投稿日:03/01/08 17:56 ID:MVMcp6tb ♪___ ♪ ヽ=@=ノ¶ タイーホ ヽ( ・∀・)ノ タイーホ ( へ) ミンナ タイーホ く タイーホ ♪ ___ ♪ヽ=@=ノ ¶ タイーホ イッテヨシ ヽ(・∀・ )ノ タイーホ (へ ) オマエラ モウ > ダメポ
345 名前:デフォルトの名無しさん mailto:sage [03/01/09 04:15] ID:ZBsKvw39 (゚∀゚)アヒャヒャ ID:fh6iaOXC (゚∀゚)アヒャヒャ
346 名前:デフォルトの名無しさん mailto:age [03/01/09 14:17] 荒すな
347 名前:デフォルトの名無しさん mailto:sage [03/01/09 14:21] test
348 名前:デフォルトの名無しさん [03/01/09 14:32] 自分が作るほどには2ちゃんねる掲示板は必要ないと。 まあ、遊びでしかないからね。 仕事の合間にやってるだけだろ。
349 名前:デフォルトの名無しさん mailto:sage [03/01/09 17:48] ======2==C==H====================================================== 2ちゃんねるのお勧めな話題と ネットでの面白い出来事を配送したいと思ってます。。。 ===============================読者数: 138720人 発行日:2003/1/9 年末年始ボケがそろそろ収まり始めた今日このごろのひろゆきです。 そんなわけで、年末に予告したIP記録ですが実験を開始しています。 「2ちゃんねる20030107」 こんな感じで各掲示板の最下部に日付が入ってるんですが、 20030107以降になってるところはログ記録実験中ですー。 んじゃ! ────────────────────────Age2ch─ ■この書き込みは、Age2chを使って配信されています。 ──────────────────────────── Keep your thread alive ! pc3.2ch.net/test/read.cgi/software/1041952901/l50 ────────────────────────────
350 名前:デフォルトの名無しさん [03/01/09 20:46] >>200 は原田先生に聞いてみた?
351 名前:デフォルトの名無しさん mailto:sage [03/01/09 23:03] 私はは匿名掲示板なんて無くてもいいのだが。 自分の発言に責任を持つのは当然だと思います。
352 名前:デフォルトの名無しさん mailto:sage [03/01/10 00:56] これからは、心を入れ替えて良い子にします。 よろしくお願いします。
353 名前:デフォルトの名無しさん mailto:sage [03/01/10 09:36] >>62 だれの目から見てもどうかではなく、裁判所が判断してどうかってこと なんだよね。 だから、「名誉を毀損した」ってことが確定するのは、判決した瞬間なのよ、、、
354 名前:デフォルトの名無しさん mailto:sage [03/01/10 09:57] >>62 だれの目から見てもどうかではなく、裁判所が判断してどうかってこと なんだよね。 だから、「名誉を毀損した」ってことが確定するのは、判決した瞬間なのよ、、、
355 名前:デフォルトの名無しさん mailto:sage [03/01/10 10:15] >某○○ こいつって・・・
356 名前:デフォルトの名無しさん mailto:sage [03/01/10 10:48] ひろゆきの家に一人千円位寄付って事で送りつけるって手も有る! 遊び場作ってやって遊んでる奴の為に訴えられて金払わなきゃいけ なくなったら止めたくもなる罠!
357 名前:デフォルトの名無しさん mailto:sage [03/01/10 11:30] ☆★☆ |・∀・)♪ おあよーおあよー! |⊂ ノ |` J 朝だす、みんな起きるだす!!
358 名前:デフォルトの名無しさん mailto:sage [03/01/10 11:58] 29■■■■■■■■■■■■■■□□ 28■■■■■■■■■■■■■■■■■■■■■■□□□□□□□□ 27■■■■■■■■■■■■□□□□□□□□ 26■■■■■■■■■■■■■■■□□□□□□□□□□□ 25■■■■■■■■■■■■■■■■■■■■■■■■■■□□□□□□ 24■■■■■■■■■■■■■■■■■■■■■■■■■■■□□□□□□□□□□□ 23■■■■■■■■■■■■■■■■■■■■■■■■■■■■□□□□□□ 22■■■■■■■■■■■■■■■■■□□□□□□□□ 21■■■■■■■■■■■■■■■■■■■■■□□□□□□ 20■■■■■■■■■■■■■■■■□□□□ 19■■■■■■■■■■■■■■■■■■■■■■■■■□□□□□ 18■■■■■■■■■■■■■■□□□□□□□ 17■■■■■■■■■■■■■■■■□□□□□□□□□□ 16■■■■■■■■■■■□□□□ 15■■■■■■□□□□□ 14■■■■■□□ 12■ 09■ 06■
359 名前:デフォルトの名無しさん mailto:sage [03/01/10 12:50] おい!おまいら! ttp://dailynews.yahoo.co.jp/fc/computer/2channel/ のアンケートで5を選びませんか? 目標50%
360 名前:デフォルトの名無しさん mailto:sage [03/01/10 15:15] だからあれほどかちゅにしろとっ…!
361 名前:デフォルトの名無しさん mailto:sage [03/01/10 16:41] それじゃあ匿名掲示板の長所を否定することと同義 じゃないか。俺の言ってることに賛成といいながら IP記録にも賛成とはどういうことだ。
362 名前:デフォルトの名無しさん mailto:sage [03/01/10 23:02] 質の低い書き込みを減らしたいのに 質の低い板を生かしておくのはどうしてなんでしょうか?
363 名前:デフォルトの名無しさん mailto:sage [03/01/10 23:07] 全ての板ってことっすか?
364 名前:デフォルトの名無しさん mailto:sage [03/01/11 00:25] 今回の件で言論の自由さえも脅かされることになるかも 誰も何も言えない時代が来そうな伊予柑
365 名前:デフォルトの名無しさん mailto:sage [03/01/11 00:34] 匿名掲示板の意味を履き違えてる人が多くて萎える。
366 名前:デフォルトの名無しさん mailto:sage [03/01/11 09:57] それ、なんかの話であったな。 たしか漫画だった。なんってやつだったけなぁ
367 名前:デフォルトの名無しさん mailto:sage [03/01/11 10:30] ======2==C==H====================================================== 2ちゃんねるのお勧めな話題と ネットでの面白い出来事を配送したいと思ってます。。。 ===============================読者数: 139038人 発行日:2003/1/10 なにやら、連日メルマガだしてるひろゆきです。 そんなわけで、ログ記録実験ですが、いちいちサーバ指定するのが面倒なので、 全部のサーバに入れてみました。 重くなって落ちたりしてもご愛嬌ってことで。。。 んじゃ! ────────────────────────Age2ch─ ■この書き込みは、Age2chを使って配信されています。 ──────────────────────────── Keep your thread alive ! pc3.2ch.net/test/read.cgi/software/1041952901/l50 ────────────────────────────
368 名前:デフォルトの名無しさん mailto:sage [03/01/11 11:22] ぬちゃんねる
369 名前:デフォルトの名無しさん mailto:sage [03/01/11 11:53] 事実無根で訴えます。
370 名前:デフォルトの名無しさん mailto:sage [03/01/11 13:27] 昔+にもいたぞ。 バカ丸出しだなw
371 名前:デフォルトの名無しさん mailto:sage [03/01/11 16:12] もう、マンコとかアナルとか書き込めなくなっちゃうね!
372 名前:デフォルトの名無しさん mailto:sage [03/01/12 00:20] マスコミや官僚・政治家・企業の秘密独占 そこからの権力維持 これを打ち破るのが巨大掲示板群 2ちゃんねるだ 警察は言論統制を目的に2ch攻撃の手を緩めない 個人情報保護法 当面は反米野郎を血祭りにあげるのだろう
373 名前:デフォルトの名無しさん mailto:sage [03/01/12 00:30] 6億って鯖実況?
374 名前:デフォルトの名無しさん mailto:sage [03/01/12 10:44] 判例がいっぱい出来たら もうメガサイトなど誰もやらない・やれないんじゃないか?
375 名前:デフォルトの名無しさん mailto:sage [03/01/12 15:20] >>1-343 荒らされる前までのリンク。
376 名前:デフォルトの名無しさん mailto:sage [03/01/12 21:16] www.sponichi.co.jp/society/kiji/2003/01/11/05.html もう予告は止めた方が良いだろうね。
377 名前:デフォルトの名無しさん mailto:sage [03/01/12 21:18] 法律上の「代理」の意味はスルーしたようです(w
378 名前:山崎渉 mailto:(^^)sage [03/01/13 18:56] (^^)
379 名前:山崎渉 mailto:(^^)sage [03/01/15 18:10] (^^)
380 名前:デフォルトの名無しさん mailto:sage [03/01/20 12:53] マ板にあったギコBASICスレが御亡くなりになりました。 2000年の6月からの長寿スレ なのに残念です。
381 名前:デフォルトの名無しさん [03/01/20 14:51] native compilerを作った奴いるか?
382 名前:デフォルトの名無しさん mailto:sage [03/01/20 16:21] 自分の時間で作れるのはスタックマシン中間言語インタプリタへのコンパイラまでだった
383 名前:デフォルトの名無しさん mailto:sage [03/01/20 16:47] Scheme で >>382 みたいなコンパイラ、VM を作るのに参考になる論文とかあっ たら教えてください。英語か日本語のやつで。処理系のソース見てるんだけど 難しくて。
384 名前:デフォルトの名無しさん mailto:sage [03/01/20 17:52] 処理系のソースから何かを得られないのなら、参考文献で 概要を理解することはできても永遠に「作れない」気がする。 というわけで、何のソースを見てるのか分からないけど、 ソース解析を侮らずにしっかりやるのがよいと思われ。
385 名前:デフォルトの名無しさん mailto:age [03/01/21 20:57] >>383 理論が先か実践が先か・・・
386 名前:デフォルトの名無しさん [03/01/21 22:29] コンパイラの本を読んでいると、コンパイラを変換系、高級言語で書かれた ソースコードを原始言語、コンパイラによって得られたアセンブラコードを、 目的プログラムと呼ぶ、と書かれているのですが、この3者の関係って、 変換系=アセンブラ、原始言語=アセンブラコード、目的プログラム=オブジェクトコード にも当てはまるのでしょうか?
387 名前:デフォルトの名無しさん mailto:sage [03/01/21 22:37] compilerはtranslatorの一種?
388 名前:デフォルトの名無しさん mailto:sage [03/01/21 23:45] アセンブラみたいに1:1対応に近いものは コンパイラとは呼ばないんじゃないかなあ。 よく分からんけど。
389 名前:デフォルトの名無しさん [03/01/22 01:01] HTMLのようなタグ付き文字列を解析したいんだけど、 良い方法はありますか? 例えば、 <data><name>aaaa</name><size>2000</size></data> のような文字列からaaaと200を取り出したいんですけど・・・ よろしくお願いいたします。
390 名前:デフォルトの名無しさん [03/01/22 01:02] 2000でした。申し訳ありません。
391 名前:デフォルトの名無しさん mailto:sage [03/01/22 01:08] >>389 それはXMLのDOM使った方がいいんでないの? だとするならスレ違いじゃないかねえ。
392 名前:デフォルトの名無しさん mailto:sage [03/01/22 01:11] >>389 取り出すだけなら、 1. < が現れたら > まで読み飛ばす 2. > が現れたら < までを出力とする 3. ただし、半角スペース、タブ、改行は読み飛ばす
393 名前:デフォルトの名無しさん [03/01/22 01:21] >>391 レスサンクスです。 私XMLのDOMっていうのはよく分からないんです。 下降再帰の手法でできるのかなぁ・・・とか思ったんで。 >>392 やはりそのようにやるしかないんでしょうか・・・ ファイルが複雑になったり、ファイルの形式が変わったりすると パーサを書くのが嫌になってきてるんで・・・ クラスが10種類ほどあるんですが、その種類によって全部構造が違うんです。 ファイルから読み込むと同時に、オブジェクトに値をぶち込みたいんですけど やはりこういうプリミティブなやり方しかないんですね・・・ 明日のことを考えるとちょっと鬱になってしまいました・・・
394 名前:デフォルトの名無しさん mailto:sage [03/01/22 01:26] >399 このスレの上のほうで一度でているが 上昇解析な手法がある。 https://sourceforge.jp/projects/frogger/ 再帰だと解析終わるまで戻ってこないから、 用途が限定される。こちらは一文字単位で 戻ってくるからエディタなんかでも使えそ。
395 名前:デフォルトの名無しさん mailto:sage [03/01/22 01:36] >>394 なるほど、そういうのもあるんですか・・・ でもなんか散雑な感じで、夜中の思考力ではなんだか分かりませんでした・・・ スミマセン・・・・ つまりはxmlを解析してパースツリーを構築するものですよね?
396 名前:デフォルトの名無しさん mailto:sage [03/01/22 01:41] >>395 そうでふ。 プログラム見れば分かるけどすげー短くて ボーゼンとするほど単純。
397 名前:デフォルトの名無しさん mailto:sage [03/01/22 03:08] >>394 それって上向き解析なの?オートマトンでツリー作ってるように見えるんだけど。
398 名前:デフォルトの名無しさん mailto:sage [03/01/22 03:24] >>397 プログラムの書き方が上向き解析のスタックを 使う要領でノードを操作してる上向き風味。 オートマトンは字句解析だけ。
399 名前:デフォルトの名無しさん mailto:sage [03/01/22 23:53] いや全然上向きに見えないなー。むしろ下向き? どんどん部分木作ってるわけでしょ。 あとオートマトンも字句解析の一つ上で使ってるように見える。 どうでもいいけど。
400 名前:デフォルトの名無しさん [03/01/23 00:33] 400getしたわけですが、 キリ番getするための良い入門書はありますか?
401 名前:デフォルトの名無しさん mailto:sage [03/01/23 02:15] >>400 お前が書け。
402 名前:デフォルトの名無しさん [03/01/23 18:55] bison/flexをVC++でMFCと併用していますが、どうもパーサ走らせると終了時に メモリリーク起こします。ダンプされたのを見てると、どうもyytextの中身っぽい 文字列が…。これってflexの仕様でつか? >>191 の言ってるスレッドセーフ云々っていうのも気になりますた・・・
403 名前:山崎渉 mailto:(^^)sage [03/01/23 20:01] (^^)
404 名前:デフォルトの名無しさん [03/01/25 00:08] Programming Language Processors in Java: Compilers and Interpreters www.amazon.com/exec/obidos/tg/detail/-/0130257869/ この本読んだ人はいますか?いたら感想聞かせてください。
405 名前:デフォルトの名無しさん mailto:age [03/01/31 23:19] 最適化するのにポインタって邪魔ですか?
406 名前:デフォルトの名無しさん mailto:sage [03/02/01 00:58] >>405 ポインタというか aliasing が邪魔。
407 名前:デフォルトの名無しさん mailto:sage [03/02/01 08:47] >>404 amazon のレビューを見る限り、非常に好意的だけど何か不満な点でも? 日本人で実際に読んだ人に背中を押してほしいと言うことですか?
408 名前:デフォルトの名無しさん mailto:sage [03/02/02 01:30] >405 なんの最適化か知らないけど、追跡がしにくい。 実装する側の思考をすればわかると思うけど。 アドレスの同一判定までしてるコンパイラってあるのかな。
409 名前:デフォルトの名無しさん mailto:sage [03/02/09 01:08] >408 一応、解析して指されている対象を絞り込む技法はあります。 解析コストと精度でトレードオフはありますが。 実行時のアドレスの同一性を考えるのではなく、 あるポインタ型変数についてその変数に代入するように プログラム上でメモリ割り当てた部分の集合を計算します。 なるたけ集合が小さく絞れれば精度が高いと考えます。 解析に当たっては各手法の間で 関数呼び出しをまたいでの解析をするかしないか、 関数(メソッド)内のコントロール/データ・フローにどこまで配慮するか、 オブジェクト指向言語でメソッドの呼び出しの際のオブジェクトに配慮するか、 などの様々なオプションがあります。 こうやって得られたPoints-toグラフは関数(メソッド)やスレッドなどからの Escapeを調べたりするのに使えます。 興味のある方はPoints-to analysisとかAlias analysisというキーワードで ググって見てください。
410 名前:デフォルトの名無しさん mailto:sage [03/02/11 08:25] Lex and YACC primer/HOWTO www.linux.or.jp/JF/JFdocs/Lex-YACC-HOWTO.html 訳されている。
411 名前:デフォルトの名無しさん [03/02/16 18:41] lex/yaccの初心者です。 lex/yacc使用してInterpreterパターンで計算機を作ろうと思ったんですが、コンパイルすらできません。 lexファイル内のcaseが不正だとか言ってきます。(他にもエラーがでてきますが…) どこが間違ってるのでしょうか?ちなみに"Expression.h"に間違いはないはずなので省略しています。 =========================[calc_lex.l] %{ #include "Expression.h" #include "calc_yacc.cpp.h" %} %% ([0-9]+|([0-9]*\.[0-9]+)([eE][-+]?[0-9]+)?){ yylval.exp=new Number(atof(yytext)); return NUMBER;}; [ \t] ; . {return yytext[0];}; %%
412 名前:411 mailto:sage [03/02/16 18:42] 続き ==========================[calc_yacc.y] %{ #include "Expression.h" %} %union{ Expression* exp; } %token <exp> NUMBER %left '-' '+' %type <exp> expression %% statement: expression {printf("= %g\n", $1->Evaluate());}; expression: expression '+' expression {$$=new MathExp($1, $3, MathExp::ADD);} | NUMBER {$$=$1;}; %% main(){yyparse();}
413 名前:デフォルトの名無しさん [03/02/22 14:17] 再帰下降構文解析で実験的にコンパイラを作っているのですが、 関数のオーバーロードの実現方法がわかりません。 引数だけのオーバーロードなら、再帰下降の各関数が返す関数呼出しノードがひとつに絞れそうな気もするのですが 返り値もオーバーロード可能にしようとすると、もうどうやっていいものか。 何かいい方法はありませんか? 考えている仕様: int A(); string A(); void B(int); があって B(A) としたら上のほうの Aが呼ばれるようにしたい。 もうひとつvoid B(string); があれば曖昧エラーを出す。
414 名前:デフォルトの名無しさん mailto:sage [03/02/22 14:37] >>413 それは無理じゃないの? だってさ、 void B(int); void B(string); の2つが定義されたらどうするの? つまりマッチングをどっちで取るの?
415 名前:デフォルトの名無しさん mailto:sage [03/02/22 14:43] >>414 413の最後の行に書きましたように、曖昧エラーを出したいと思います。 勿論実用的には、解決を行えるように、明示的に型を指定する構文が必要になるでしょうが…。 他の言語でも、F(int, double)とF(double, int)があったときにF(1,1)なんて呼ぶと曖昧エラーになるので 返り値でも曖昧エラーを出すことは多分許容範囲内だろう、と。
416 名前:デフォルトの名無しさん mailto:sage [03/02/22 14:55] 追記。Adaでも可能なので、無理ってことは無い筈です。
417 名前:414 mailto:sage [03/02/23 08:29] スマン 俺が間違ってた。 再帰下降という事は、 代入する変数の型 関数の型 先行演算子の型 が先に判るわけだから、それをグローバルにとってスタック上に保存しながら使ったら?
418 名前:413 mailto:sage [03/02/23 16:27] >>417 ありがとう。ええと、それですと void A(int); void A(string); int B(int); string B(string); bool B(bool); A(B("XXX")); で、Aの時点で、期待する型はintとstring Bに入ったら、boolでは無いことがわかる。しかしintとstringのどちらかは区別が付かない ということで両方を候補に入れ、Bもやはりintとstringを期待して、 で定数の解析に入ったら、定数はstring Bに戻って、B(string)が選ばれたことが確定 Aに戻って、A(string)が選ばれたことが確定 こんなイメージ…ですよね?合ってます?
419 名前:414 mailto:sage [03/02/23 16:50] >>418 それは実装上厳しいんじゃない? Aの引数を解釈してる時に、Bが出た時点で、曖昧にした方がいいと思うけどなあ
420 名前:デフォルトの名無しさん mailto:sage [03/02/23 19:25] >419 え、特に問題なさそうだけど? >Aの引数を解釈してる時に、Bが出た時点で、曖昧にした方がいいと思うけどなあ なんでそう思ったの?
421 名前:413 mailto:sage [03/02/23 19:44] まず一旦、型を特定しない構文木を作ることにしました。理由は、 string* A(); int* A(); *(A()) = 10; 再帰下降だと、A()を解析している時、その後代入されるのが整数なのか文字列なのか、 それ以前にそもそも代入されるのかどうかもわからないため。 (代入もされず値としても使われないなら曖昧エラー出さないといけませんし) 取り敢えず構文木を作るとこまで書きました。これから>>418 の実装に挑戦します。 もっと手っ取り早い方法があればいいのですけれど。
422 名前:デフォルトの名無しさん mailto:sage [03/02/24 18:11] スレ違いな質問かもしれないのですが、スクリプト言語のインタープリターを作ってみたいのですが、これを作るには、 コンパイラーの勉強が役に立つのでしょうか? なにからやればいいのかさっぱり分からないので、なにか指針でもアドバイスお願いします。
423 名前:422 mailto:sage [03/02/24 18:27] >>175 さんが同じような質問をしてた。 Perl や PHP のような大規模な言語ではないのだけど、コンパイラに関する資料が役に立つみたいですね。 まぁ、またーりとがんばってみます。
424 名前:デフォルトの名無しさん mailto:sage [03/02/25 19:03] 「UNIXプログラミング環境」で (lex + yacc を使った) 簡単な言語処理系の 作り方が紹介されてますよ。コードも web 上にありました。
425 名前:ろうひ男爵 [03/02/27 17:55] >>422 どの程度のことがやりたいんですか? バッチファイルみたいな物 ワープロなどの実用ソフトのスクリプト言語 ADVなどのシナリオスクリプト ゲームの敵移動ルーチンのスクリプト
426 名前:413 mailto:sage [03/02/27 20:45] 一応書いておくか…>>421 は無理でした。 代入の右辺と左辺のどちらを先に解釈するかという問題が残ります。 (421の例で右辺もoverloadされた関数呼び出しだったら、どちらを先に解釈することもできない) マジにやろうとすれば、後は、可能性を全部列挙してマッチングを行うぐらいしか無いかも。 Adaコンパイラのソースが見たい…(gccのAdaならもしかして見える?) まあ、自分のやりたかった範囲ではできたので、わたくし的にはOKなのですが。 元々は配列のCopy On Writeをオーバーロードで解決したかったので。 *(A(1)) = 10; // int * A(int); が呼ばれ、メモリ領域を複製する B = *(A(1)); // int const * A(int); が呼ばれ、複製はしない
427 名前:422 mailto:sage [03/02/28 11:16] >>425 > ワープロなどの実用ソフトのスクリプト言語 たぶんこのあたりかと。 マクロ記述言語の部分だけを取り出して、シェルスクリプトみたいに、 インタラクティブに遊んでみたいなぁーと思って。 実用ソフトのスクリプト言語といっても、emacs lisp や VBA みたいに大掛かりなものでもありません。 1000行くらいで言語全体を一通り説明できてしまうくらいの小規模な言語です。 というか、その前にCを勉強しないと、どうしようもないみたいですね。
428 名前:ろうひ男爵 [03/03/01 20:23] >>427 C言語でなくても書けることは書けますが、 再帰が出来る言語の方がらくですよ〜。 (全部配列でやると大変です) 昔のBASIC見たいに、 変数を宣言無し、 関数を無くしてサブルーチンのみ、 PRINTなどの実行命令は、随時追加していく、 ブロック化の為(制御命令)には、 IF-ELSEIF-ELSE-END WHILE-BREAK-END SWITCH-CASE-BREAK-DEFAULT-END {}は使わない 等のシンプルな言語なら、ベタで組んでも 1000どころか200行ぐらいで出来ますよ〜。
429 名前:デフォルトの名無しさん mailto:sage [03/03/02 14:53] ろうひ男爵さんはもしかして大学教員ですか? 初心者の質問に丁寧に答えて下さっていますが。
430 名前:デフォルトの名無しさん mailto:age [03/03/02 17:55] 札幌市立中央図書館からドラゴンブック借りてきたので age
431 名前:札幌市立中央図書館職員 mailto:sage [03/03/02 17:58] >430 ちゃんと返せよ
432 名前:デフォルトの名無しさん mailto:sage [03/03/02 18:00] >430 書き込みとかすんなよ。
433 名前:デフォルトの名無しさん mailto:sage [03/03/02 20:07] ああ北海道いきてえ
434 名前:デフォルトの名無しさん [03/03/03 01:15] >>429 いえ、単なるプログラマーの会社員です。 そういっていただけると嬉しいですが、 自分程度の知識だと、このスレの強者にはかなわないっす。 >>430 2〜3週間は借りることになるのでは? 自分は風呂場で1回読むのに2ヶ月かかりました。 がんばって読破してくださいね〜。
435 名前:430 mailto:sage [03/03/03 04:10] >>431 はい。期日までにちゃんと返します。 >>432 はい。綺麗な本なので、汚さないように気をつけます。 >>433 ぜひお越しください。 >>434 2週間の期間では、ちょっと読破できそうにないかも。 連続で借りることも出来るけれど、それをするくらいなら 自分で買う主義です。まだ、買うかどうかはわからんけど。 とにかく、勉強します。
436 名前:デフォルトの名無しさん mailto:sage [03/03/03 11:02] >>434 借りた本を風呂で読んではいけません。
437 名前:ろうひ男爵=434 [03/03/03 21:58] >>436 こりゃ失礼。 自分は自腹で買いましたよ〜。 昔、X68000の本とかでほしいときには無くなってたことが多々あったので必ず買ってます。 最近は、トッパンの本を買いあさりました。
438 名前:デフォルトの名無しさん mailto:sage [03/03/03 22:03] いいかげんsageを覚えてくれ。>ろうひ男爵その他 それとさ、ここあんたらの日記サイトじゃないんだから、 あんま関係ない話振るのもやめてくれ。
439 名前:デフォルトの名無しさん [03/03/03 22:04] 自治厨見参記念age
440 名前:デフォルトの名無しさん mailto:sage [03/03/03 22:05] 独り言は夢・独り言板でどうぞ。 life.2ch.net/yume/
441 名前:デフォルトの名無しさん mailto:sage [03/03/03 22:08] FORTHって作りが簡単だそうですが、どれぐらい小さく作れますか? 参考になりそうな比較的小さい処理系ってありませんか?
442 名前:デフォルトの名無しさん mailto:sage [03/03/03 22:14] あれ、forthスレってなかったっけ?
443 名前:デフォルトの名無しさん mailto:sage [03/03/04 00:37] >>441 昔アセンブラで作ったときはたしかコア部分は30バイトくらいだった。 もちろんそれ以外にprimitiveが必要だけど。
444 名前:ろうひ男爵 mailto:sage [03/03/04 01:24] >>438 すまんのう。 外で書いて他のでsage忘れました。
445 名前:デフォルトの名無しさん mailto:sage [03/03/06 18:24] forthって暗黙の操作みたいなのが多いから、 一目ソース見ただけでは何してるのかわかんないと思うけど、 どうよ?
446 名前:デフォルトの名無しさん mailto:sage [03/03/06 20:45] 慣れると会館なのかも試練 とりあえず、手続きの構造化というのを初めて知ったのはForthだった。 今でもかなり小さな関数に分けてしまう。
447 名前:デフォルトの名無しさん mailto:sage [03/03/07 11:37] >>445 CLikeScript -> ForceWord コンパイラとか
448 名前:デフォルトの名無しさん [03/03/09 23:12] rubyみたいなスクリプト言語で、非オブジェクト指向なやつって ありますか???
449 名前:デフォルトの名無しさん mailto:sage [03/03/09 23:21] >>448 Perl
450 名前:デフォルトの名無しさん mailto:sage [03/03/09 23:23] Luaとかは? マイナーだけど、コンパクトだから読むにはいいかも。
451 名前:デフォルトの名無しさん [03/03/09 23:54] lua って癖が強くないですか???
452 名前:デフォルトの名無しさん mailto:sage [03/03/09 23:57] >>448 bash,csh とかは? Ruby みたいかどうかは知らないけど、、、
453 名前:デフォルトの名無しさん [03/03/09 23:57] あと、開発が止まってますか? なんか新しいのが無い???
454 名前:デフォルトの名無しさん [03/03/09 23:58] >>449 ruby参照してるんだから、真珠は無いだろう〜(w
455 名前:デフォルトの名無しさん mailto:sage [03/03/10 00:20] LuaはPubyやPerlより癖がないと思うけど。 つか言語仕様が小さい。アプリ組み込み向けだし。 開発は・・・使うためでなく読むためなら別にどうでもよい(藁
456 名前:デフォルトの名無しさん [03/03/10 00:43] luaって有名なのかなぁ? なんか、時々(ほんの)聞くけど。。。
457 名前:デフォルトの名無しさん mailto:sage [03/03/10 00:57] 亜種亜流を含めて 4000 以上プログラミング言語があるらしいけど、 メジャーな言語なんてほんの一握りだからねえ。
458 名前:デフォルトの名無しさん [03/03/10 01:00] そんなにあるの〜、ビツクリ! 漏れも作ろうかなぁ。。。Uma
459 名前:デフォルトの名無しさん mailto:sage [03/03/10 01:01] 組み込みならluaみたいなの採用するよりはlisp系にするけど。
460 名前:デフォルトの名無しさん mailto:sage [03/03/10 01:29] 最近sourceforgeのgameカテゴリとかlinux game tomeとか眺めてるんですが 内部でluaやpythonを使ってるのをちょくちょく見かけます。schemeもあったな。 ちょっと前だと例えばQuake(初代)では速度の要求される3Dエンジン部分をC/ASMで、 キャラ固有動作とかダメージ計算とかのゲーム/シナリオ部分をC-likeな独自言語でやってたわけですが、 そういう局面で既存のスクリプト言語がつかわれってるぽい。
461 名前:デフォルトの名無しさん mailto:sage [03/03/10 08:56] ruby最高!
462 名前:デフォルトの名無しさん mailto:sage [03/03/10 14:10] >>461 どこがどのように?
463 名前:デフォルトの名無しさん mailto:sage [03/03/10 15:26] あまり組み込み向けにはお勧めでないところ
464 名前:デフォルトの名無しさん mailto:sage [03/03/11 01:18] >>462 日本発だから!
465 名前:デフォルトの名無しさん mailto:sage [03/03/11 08:48] C++並に仕様がでかくなると、yacc の y.output 見て error を全て潰す(yaccの エラーメッセージがでないようにする) のが大変だ。
466 名前:デフォルトの名無しさん [03/03/13 23:21] 新しいスクリプト言語を作りたいんだけど。。。 これって大変ですか?
467 名前:デフォルトの名無しさん mailto:sage [03/03/13 23:28] >>466 > これって大変ですか? 最初からそんな感想を抱いているようでは、新言語を作るのは無理だと思われ。
468 名前:デフォルトの名無しさん mailto:sage [03/03/13 23:42] 言語処理系は作るだけなら、実は大して難しくない。 式の展開さえ出来れば、あとは出来たも同然。 問題は「使える」言語にしようと思うと、ライブラリの整備が 大変な事。
469 名前:デフォルトの名無しさん [03/03/13 23:56] >>468 なるほど、参考になった。 rubyなども、結局はライブラリが揃ってるから使われるんだよねぇ。。。
470 名前:デフォルトの名無しさん mailto:sage [03/03/14 08:46] ライブラリ整備が面倒なら、 COMコントロール使えるようにしとけば VBAのコントロールそのまま使えるから楽だよ。 あるいは、ゲーム用ならHSPのDLLを使えるようにしとくとか
471 名前:デフォルトの名無しさん mailto:sage [03/03/14 10:54] >rubyなども、結局はライブラリが揃ってるから使われるんだよねぇ rubyは美しすぎる言語仕様(少なくとも日本人の感性からすれば)が大きいと思う。
472 名前:デフォルトの名無しさん mailto:sage [03/03/14 11:16] それは信じない(w 比較相手がPerlなら同意だが
473 名前:デフォルトの名無しさん mailto:sage [03/03/14 11:24] >>472 ネタニマジレスカコワルイ
474 名前:デフォルトの名無しさん mailto:sage [03/03/14 11:41] bisonが出力した y.tab.c を g++ でコンパイルすると パースエラーが出るんですが 回避方法はないのでしょうか? VCではコンパイルできるのですが( ファイル名は y.tab.cpp に替えてコンパイル)。
475 名前:デフォルトの名無しさん mailto:sage [03/03/14 11:50] どういうエラーだよ。
476 名前:デフォルトの名無しさん mailto:sage [03/03/14 12:58] >>469 rubyは愛国精神からよく使われるのです
477 名前:デフォルトの名無しさん mailto:sage [03/03/14 13:21] >>476 確かに、rubyの場合、 「まつもと?ふーん日本人がやってるんだ。ちょっといじってみよかな。」 と思って始めたっての、俺の場合はあるよ。 で、逆に思ったんだけど、アメリカ(のようなコンピュータ大国の)人が、 「ふんふんよさそう。ん?なんか変な名前の作者だな。 おぃ{スカンジナビア製,インド製,日本製,韓国製,中国製...}かよっ!」 とか感じてやめちゃうことってあるのかな?それとも多民族国家だから そんなの全然キニシナイ!のかな?
478 名前:デフォルトの名無しさん mailto:sage [03/03/14 13:55] 日本製は、自動車やソニー等のこともあって、 他の国の製品とは若干扱いが違う。 それに助けられているかも。
479 名前:デフォルトの名無しさん mailto:sage [03/03/14 15:51] そもそも、Rubyってのは真っ赤な日の丸から連想して 名付けたらしい。 大日本帝國言語ルビー万歳!
480 名前:デフォルトの名無しさん mailto:sage [03/03/14 17:36] 日本語対応の点で安心できるってのはあるなぁ
481 名前:デフォルトの名無しさん mailto:sage [03/03/14 17:46] >>479 Pearl の次の誕生石だから。 寝たに混じれ酢。
482 名前:デフォルトの名無しさん mailto:sage [03/03/14 18:00] bison (GNU Bison) 1.875をつかっているのですが、 yyerrlab1: #if defined (__GNUC_MINOR__) && 2093 <= (__GNUC__ * 1000 + __GNUC_MINOR__) __attribute__ ((__unused__)) #endif goto yyerrlab2; っていうコードを吐くのですが、g++(gcc version 3.2 20020927 (prerelease)) で コンパイルすると parse error before `goto' といってコンパイルが止まってしまいます。 ふみゅ〜ん。
483 名前:デフォルトの名無しさん [03/03/14 19:26] スクリプトエンジンってbison やlex/yacc 等が いるのですか??? 素朴な疑問でスマソ
484 名前:デフォルトの名無しさん mailto:sage [03/03/14 19:35] >>477 英語が通じそうにないから敬遠するというのはあるかも
485 名前:デフォルトの名無しさん mailto:sage [03/03/14 20:40] >>483 再帰下降でガンバレばいらないと思うよ。
486 名前:デフォルトの名無しさん mailto:sage [03/03/14 20:49] ;
487 名前:デフォルトの名無しさん mailto:sage [03/03/14 21:04] Delphi版 ギコBasicの アーカイブ一覧 www.geocities.co.jp/SiliconValley-Oakland/8522/data/059.lzh www.geocities.co.jp/SiliconValley-Oakland/8522/data/giko.ico www.geocities.co.jp/SiliconValley-Oakland/8522/data/gikob064.lzh www.geocities.co.jp/SiliconValley-Oakland/8522/data/gikobas.dcr www.geocities.co.jp/SiliconValley-Oakland/8522/data/gikobc02.lzh www.geocities.co.jp/SiliconValley-Oakland/8522/data/gikobc03.lzh www.geocities.co.jp/SiliconValley-Oakland/8522/data/gikobc04.lzh www.geocities.co.jp/SiliconValley-Oakland/8522/data/LucasTest.txt www.geocities.co.jp/SiliconValley-Oakland/8522/data/mformula.txt www.geocities.co.jp/SiliconValley-Oakland/8522/data/Script.txt www.geocities.co.jp/SiliconValley-Oakland/8522/data/ugikoscr.txt www.geocities.co.jp/SiliconValley-Oakland/8522/data/uSpliter.txt
488 名前:デフォルトの名無しさん mailto:sage [03/03/14 21:48] ギコBasicで2chブラウザ作れますか?
489 名前:デフォルトの名無しさん [03/03/15 01:23] 微妙に英文ライクで空白込みの名前も可、というオブジェクト指向言語を作りたい者です。 経験者の方にお聞きしたいのですが、下のサンプルコードのようなものですと、パーザを実装するのは難しいのでしょうか? //宣言部 private property string greeding head = "hello, ". public method say greeding (string name = "world") { output stream std out = system consore standerd out. this greeding head + arg name + "." outln to std out. } //使用する側のコードを一部抜粋 this say greeding ">>1 ".
490 名前:デフォルトの名無しさん mailto:sage [03/03/15 01:36] しるか
491 名前:デフォルトの名無しさん mailto:sage [03/03/15 01:51] (´-`).。oO(その言語でプログラムを書くのが難しいと思われます。。)
492 名前:デフォルトの名無しさん mailto:sage [03/03/15 01:53] つーか自分でBNFでも書いてみろよ。>489
493 名前:デフォルトの名無しさん mailto:sage [03/03/15 03:48] プログラムを自然言語ライクに書けるようなのが出来たとしても、 greeting を greeding と間違って書いてもちゃんと認識 してくれるようなシステムを作るのは難しい。
494 名前:デフォルトの名無しさん mailto:sage [03/03/15 09:17] C言語版、C++版ギコBasicもよろしく C言語版 page.freett.com/gikob/gikobw00047.zip C++版 page.freett.com/gikob/gbtl-beta3.zip
495 名前:デフォルトの名無しさん mailto:sage [03/03/15 09:32] >間違って書いてもちゃんと認識 勝手にそんなことされると意図と違って認識されたときにものすごく発見困難なバグの原因になりそうだ
496 名前:デフォルトの名無しさん mailto:sage [03/03/15 11:06] Ada95@gccってば、エラーメッセージ中でスペルミス指摘してくれるのだが、そういうのじゃなくて?
497 名前:デフォルトの名無しさん mailto:sage [03/03/15 11:15] >>489 例えば事前にstring nameという定義があったりすると、 private string name x. とか書かれると、「string name」「x」なのか「string」「name x」なのか曖昧なので、 識別子に空白を含められるようにするなら、区切りの記号か予約語を入れるようにしないと。 普通ならPascalっぽく ":" 使うところだけど、英文ライクということなので、isなりasなり入れれば? private property greeding head is string = "hello,". とか。 もっとも、曖昧さも含めて楽しむような仕様にするなら、それはそれで。
498 名前:デフォルトの名無しさん [03/03/15 20:57] そんな言語、情報処理にはむかんなぁ(w まぁ、曖昧な処理にはいいかも?(w
499 名前:デフォルトの名無しさん mailto:sage [03/03/15 21:00] COBOLの路線で行きたいって事でしょ
500 名前:デフォルトの名無しさん mailto:sage [03/03/15 23:21] /ノ 0ヽ _|___|_ ヽ( # ゚Д゚)ノ 下がってろウジ虫ども! 。 | 个 | 訓練教官のハートマン先任軍曹が500をgetする! ノ| ̄ ̄ヽ ∪⌒∪ >>501 貴様!俺の海兵隊をどうするつもりだ! >>502 口でクソたれる前と後に「サー」と言え! >>503 ふざけるな!大声だせ!タマ落としたか! >>504 貴様には両生動物のクソをかき集めた値打ちしかない! >>505 アカの手先のおフェラ豚め! >>506 まるでそびえ立つクソだ! >>507 タマ切り取ってグズの家系を絶ってやる! >>508 じじいのファックの方がまだ気合いが入ってる! >>509 ベトナムに行く前に戦争が終わっちまうぞ、アホ!
501 名前:デフォルトの名無しさん [03/03/18 22:28] そういえば、最近はスクリプト言語の時代らしいんだけど、 ろくな言語ないよなぁ〜、 コンパイル言語のときは、Cがあったけど なんていうかパールは暗号みたいだし、 AWKはフィルタ専門だし、(SEDも) ルビーはOOだし、 なんかみんな極端なんだよねぇ。。。
502 名前:デフォルトの名無しさん mailto:sage [03/03/18 22:30] HSPがあるよ!
503 名前:デフォルトの名無しさん mailto:sage [03/03/18 22:31] >>501 > そういえば、最近はスクリプト言語の時代らしいんだけど、 > ろくな言語ないよなぁ〜、 > コンパイル言語のときは、Cがあったけど (w > ルビーはOOだし、 これがオチですか?
504 名前:デフォルトの名無しさん mailto:sage [03/03/18 22:32] >>501 じゃあどんなのがいいんだよ
505 名前:デフォルトの名無しさん mailto:sage [03/03/18 22:33] cintがあるやん
506 名前:デフォルトの名無しさん mailto:sage [03/03/18 23:49] >>504 純粋関数型のスクリプト言語
507 名前:デフォルトの名無しさん mailto:sage [03/03/19 00:05] Haskell
508 名前:デフォルトの名無しさん mailto:sage [03/03/19 00:28] インタプリタがほしけりゃghciでいいじゃん
509 名前:デフォルトの名無しさん [03/03/19 01:08] >>502 win用じゃん(w os2用もあるらしいが。。。(w 畑違い、ハゲ稿!
510 名前:デフォルトの名無しさん [03/03/19 01:18] >>505 ヨサゲだけど、絶版ですか? ちょっと残念(本)
511 名前:デフォルトの名無しさん [03/03/19 01:23] >>507 なんか難しい論文ばかりで、学者○カ向け?
512 名前:デフォルトの名無しさん [03/03/19 01:24] >>ghci なにそれ?
513 名前:501 mailto:sage [03/03/19 01:51] やっぱりHSPが最高だね、アハハハハハ
514 名前:デフォルトの名無しさん mailto:sage [03/03/19 05:14] >>489 スペルミスの多さからしてネタだろ。
515 名前:デフォルトの名無しさん mailto:sage [03/03/19 05:20] >>482 cygwinのが1.875bで手元では一番新しかったんで試してみたけど、そんなコー ドは吐かないな。
516 名前:デフォルトの名無しさん mailto:sage [03/03/19 11:20] とりあえず付箋紙ベースのスクリプトエンジンを作成しようとおもいますた。 Basicインタープリターは別なところでできてるんだけど、アイデア暮れ。
517 名前:デフォルトの名無しさん mailto:sage [03/03/19 13:32] 付箋紙?
518 名前:デフォルトの名無しさん mailto:sage [03/03/19 14:43] >>509-512 =日下部
519 名前:デフォルトの名無しさん mailto:sage [03/03/20 01:06] 結局ライブラリをどうするかなんだよ。スクリプト作る時間よりも、 ライブラリ用意する手間の方がでかい。特にOO系言語のクラスlib なんてもうみてらんない。シコシコ使うかどうかもわからんクラス階層 作ったりしてんの。バカみたい。クソインターフェース量産したりしても 誰もつかわねえよ(ププドキュメントも用意しないとわかんねえし、 忘れるし。そんなことしてる暇あったらデバッガ作れよ。 結局クラスがクソなら誰もつかわねえって。 時間の無駄だっつうの。
520 名前:デフォルトの名無しさん mailto:sage [03/03/20 01:58] >>519 Java の仕事がメインになったけど、Cばかりを組んできたから、うまく対応できなくて困っている 老人ですか? MFC はともかく、Javaは、ライブラリーの規模を考えれば、うまく設計されていると思いますが?
521 名前:デフォルトの名無しさん mailto:sage [03/03/20 05:25] 要するに標準入出力さえきちんとしてくれれば全てオッケー 言語はどうでもいい。 その分野を最も得意とする言語で書く。
522 名前:デフォルトの名無しさん mailto:sage [03/03/20 23:26] 言っていることは正しいし、激しく同意だが、すれ違いだ。
523 名前:デフォルトの名無しさん [03/03/21 18:19] これからの主流はスクリプト言語なんだろうか? なんか、パールとルビーの宝石コンビじゃいやだなぁ〜(w
524 名前:デフォルトの名無しさん mailto:sage [03/03/21 18:37] スレと無関係ない事書くなや、ここは死滅スレじゃねぇ
525 名前:デフォルトの名無しさん mailto:sage [03/03/21 21:20] >>524 スレタイトルがわるい
526 名前:デフォルトの名無しさん mailto:sage [03/03/21 21:27] >>525 > >>524 > スレタイトルがわるい 分かりやすくていいじゃないの? 何が不満なの?
527 名前:525 mailto:sage [03/03/21 22:47] >>526 別に不満はないよ。不満があるのは>>524 さんでしょ。
528 名前:デフォルトの名無しさん [03/03/21 23:45] ☆^〜^★「探し物とくとくページ」☆^〜^★ sagatoku.fc2web.com/ あなたの探し物きっとみつかります ほぼ毎日 新着情報追加 毎日更新 新着情報メールでお知らせ
529 名前:デフォルトの名無しさん mailto:sage [03/03/22 04:29] >>527 ここは言語仕様でなく、 実装について語るスレだったはずなんだが・・・
530 名前:デフォルトの名無しさん mailto:sage [03/03/22 11:27] >>529 >前スレ1より >>yaccやlexの使い方やら言語仕様やらの話題。 って>>1 にかいてあるよ?
531 名前:デフォルトの名無しさん mailto:sage [03/03/22 12:46] >>530 529ではないが、どうにも最近は厨が来るから次スレから抜きにしないか? > all 必要なときは関連して話題になるだろうし、そういう状況なら厨が入り込む余地はないだろう。 ここで在っていいのは宗教論争ではなく実装に関連した言語仕様の話題のほうがいいと思う。
532 名前:デフォルトの名無しさん mailto:sage [03/03/22 15:56] yacc/lex の使い方の高度な話題はここでいいと思うが。 まあ、次スレまで行くのかどうか問題だが。
533 名前:デフォルトの名無しさん mailto:sage [03/03/22 21:23] flexに #include <unistd.h> を出力させない方法はないですか?
534 名前:デフォルトの名無しさん [03/03/22 21:59] 宝石兄弟と仲良くする擦れはここですか?
535 名前:デフォルトの名無しさん mailto:sage [03/03/23 07:02] (*゚ー゚) しぃ の、言語をつくろう!!(゚ー゚*) pc.2ch.net/test/read.cgi/prog/1034581899/
536 名前:int [03/03/23 09:37] ちょっと聞きたいんだけど、いわゆるスクリプトと呼ばれるインタプリタ処理系は、 (中間言語を含め)内部で事前コンパイルしてるものなのでしょうか?
537 名前:デフォルトの名無しさん mailto:sage [03/03/23 09:52] してるよ
538 名前:int [03/03/23 10:15] それは、事前に全ソース(つまり頭から尻尾まで)変換してから 実行しているってことですか?
539 名前:デフォルトの名無しさん mailto:sage [03/03/23 10:25] >>538 大抵は一括変換だけど、 ある単位(関数や変数など)ごとに変換していくのもあるよ
540 名前:デフォルトの名無しさん mailto:sage [03/03/23 10:26] ∩ ∧_∧ | | / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ( ´Д`)// < 先生!こんなのを発見シマスタ! / / | / /| / \ saitama.gasuki.com/sinagawa/ __| | .| | \ \  ̄ ̄ ̄ ̄ ̄ ̄ ̄\ \_____________ ||\ \ ||\|| ̄ ̄ ̄ ̄ ̄ ̄ ̄|| ̄ || || ̄ ̄ ̄ ̄ ̄ ̄ ̄|| .|| ||
541 名前:デフォルトの名無しさん mailto:sage [03/03/23 10:29] ↑ブラクラなので踏まない様に
542 名前:デフォルトの名無しさん mailto:sage [03/03/23 10:52] >>533 自分はあきらめて空の unistd.h をシステムインクルードディレクトリに入れてしまいました。
543 名前:int [03/03/23 17:16] >>539 文字通り1行毎に逐一変換&実行している言語はないのでしょうか? なんか、そのほうがインタプリタ(スクリプト)というイメージに ぴったりなんですが。。。
544 名前:デフォルトの名無しさん mailto:sage [03/03/23 17:17] N88BASIC?
545 名前:デフォルトの名無しさん mailto:sage [03/03/23 17:24] >>543 sh
546 名前:ろうひ男爵 mailto:sage [03/03/23 18:55] >>544 N88BASICも、入力されたときに中間コードに落とすんじゃなかったですっけ? >>543 GOTOなどのジャンプ先のアドレス解決を毎回やると、 検索だけで重くなってしまうので実用的ではないのでは?
547 名前:デフォルトの名無しさん mailto:sage [03/03/23 19:16] >>543 自分の場合は、スクリプトとして自働実行する以外に、コマンドラインのインターフェイスを 持たせたいときは、そういうことをする場合もあります。 ただ・・・ 構造化された構文がこれだと作りにくいんだ、 だからある程度派手な構文を持つ場合はパースするか、コマンドラインだけ文法限定して 別パーサーで作っていたりします。 ちなみに、古いベーシックなんかが一行入力時にそのつどパースしてるんじゃないかな。 いまどきの文法はちょっと苦しいかも。
548 名前:int [03/03/23 23:05] やはり、実行速度がもんだいのようですね。 いろいろとありがとうございました。
549 名前:デフォルトの名無しさん mailto:sage [03/03/24 09:24] >>547 だからshのソース嫁。gotoはないけどブロックはある。
550 名前:デフォルトの名無しさん mailto:sage [03/03/24 11:02] >>549 まあできんことは無いんだが・・・ たんに大変だなとか思ってね。
551 名前:デフォルトの名無しさん mailto:sage [03/03/24 12:52] >>546 実行時にsyntax errorが出るくらいだから、それはないと思う。
552 名前:デフォルトの名無しさん mailto:sage [03/03/24 12:57] >>551 たしか予約語を中間コードに置き換えるようなことはやってたと思うが。 でも構文チェックをしたり構文木を作ったりは当然しない。
553 名前:デフォルトの名無しさん mailto:sage [03/03/24 16:41] >>551 N88しか知らないけど、runした瞬間に出るエラーもあるよ。 for〜nextの対応関係だったかなぁ。
554 名前:デフォルトの名無しさん [03/03/26 22:14] その中間言語って、なにか規格みたいなものあるの? それともデファクトスタンダードな仮想マシンがあるの???
555 名前:デフォルトの名無しさん mailto:sage [03/03/26 22:19] >>554 そんなもんは無いです、当時は中間コードの利用目的は高速化とプログラムのメモリー占有サイズの削減が目的。 わずか数キロバイトにプログラムを収めるのにTEXTデータは大きすぎたのです。
556 名前:デフォルトの名無しさん [03/03/27 03:20] つまらんこと聞きますが、まぁバグはあるにせよ、VC++って異常に的確な エラーメッセージを吐き出しますよね。 LALR(1)で解析してて、あんなことってできるもんなんですか? yaccとかだと、ちょっとerrorを突っ込んだだけでconflict起こしますよねぇ。 LR(1)とかだったらそこいらじゅうに、擬似シンボル埋め込めばできなくも なさそうな気はしますが、、、 そのへんってどうなんでしょう?
557 名前:デフォルトの名無しさん [03/03/27 03:54] >>555 THANX
558 名前:デフォルトの名無しさん mailto:sage [03/03/27 11:42] >>556 「異常に的確なエラーメッセージ」の例を挙げないと、 答えづらいと思うよ。
559 名前:デフォルトの名無しさん [03/03/27 20:00] >>556 異常に典型的なミスを犯しているだけでは?(w
560 名前:デフォルトの名無しさん mailto:sage [03/03/28 17:07] VCのエラーメッセージって異常に意味不明なものが多いと思うがな。
561 名前:デフォルトの名無しさん mailto:sage [03/03/29 01:13] 「予期せぬ EOF が検出されました」 のどこが的確なメッセージなのかと、小一時間t(ry
562 名前:デフォルトの名無しさん [03/03/29 16:28] やはり、>>559だろう
563 名前:デフォルトの名無しさん mailto:sage [03/03/29 18:30] >>556 >つまらんこと聞きますが、まぁバグはあるにせよ、VC++って異常に的確な 具体的にどの辺が的確なエラーメッセージだと思ったのか、書け。
564 名前:デフォルトの名無しさん mailto:sage [03/03/29 19:04] >>559-563 煽りは死滅スレでやれや
565 名前:563 mailto:sage [03/03/29 19:24] >>564 煽りに見えてのはお前だけだと思われ。 もし>>556 =>>564 だとしたら被害妄想だよ。 死滅スレ居座りすぎて病気になったか(w 説明不足を解消せよってだけ。
566 名前:デフォルトの名無しさん mailto:sage [03/03/29 19:27] >>565 >>558 がもう指摘してるじゃん。
567 名前:563 mailto:sage [03/03/29 19:45] >>566 んなことわかってるよ。 これじゃ話が進まないから催促してるの。
568 名前:デフォルトの名無しさん mailto:sage [03/03/29 21:15] 563 は "(w" とかつけている段階で論外。 毎日見ていない人もいるだろう、そのうち書かれた時に理由を考えればいい。 ただ煽るだけで意味のないことするな。
569 名前:デフォルトの名無しさん mailto:sage [03/03/29 21:49] 結局556がアホなだけだな。
570 名前:デフォルトの名無しさん [03/03/30 20:24] インタプリタの中間コードは8ビットが普通ですか? いきなり32ビットとはしてるものはありますか?
571 名前:デフォルトの名無しさん mailto:sage [03/03/30 20:35] >>570 Java。全て4バイトがベース。
572 名前:デフォルトの名無しさん [03/03/30 20:52] 皆さんのお力でぜひぬるぽをageて下ちい。 ∧_∧ ( ´∀`)< ぬるぽ ぬるぽ 投票ヨロシク pumpkinnet.to/ranking/words/
573 名前:デフォルトの名無しさん mailto:sage [03/03/30 21:50] Javaは8bitじゃないのか?
574 名前:デフォルトの名無しさん [03/03/31 00:29] そういえば、java関係の本はそれこそ腐るほど(?)あるが、 バイトコードとか仮想マシンの説明をしてるものってある?
575 名前:デフォルトの名無しさん mailto:sage [03/03/31 00:49] >>574 オライリがバーチャルマシン仕様の解説本出してるよ。
576 名前:デフォルトの名無しさん mailto:sage [03/03/31 00:50] >>574 本屋で立ち呼んだ記憶があるからあるんじゃない?
577 名前:デフォルトの名無しさん mailto:sage [03/03/31 02:52] ソースコード読めばいんじゃないの? そこまでやるのはちょっと、、、という のなら、そもそもVMの勉強なんてしなくても いいんじゃないの?
578 名前:デフォルトの名無しさん mailto:sage [03/03/31 03:31] Structured Computer Organization by Andrew S. Tanenbaum www.amazon.com/exec/obidos/tg/detail/-/0130959901/ にちょっとだけ説明があります。 オペコードが1バイトで全体としては1〜3バイトのがほとんどだそうです。 java.sun.com/docs/books/vmspec/2nd-edition/html/VMSpecTOC.doc.html のどこかに説明あるかと思いましたが、発見できませんでした。 見落としあるかもしれません。 あとamazon.comをjava virtual machineで検索すると7冊ほどひっかかりますね。 www.amazon.com/exec/obidos/search-handle-url/index=books&field-keywords=java%20virtual%20machine&search-type=ss&bq=1
579 名前:デフォルトの名無しさん [03/03/31 04:36] WSHとかってプログラム上から使ってその結果を受け取ることは出来ないのでしょうか? MSDNを見ますと「IActiveScript」と言うのが在るのですが, いまいちサンプルが乏しくて困っています.
580 名前:デフォルトの名無しさん mailto:sage [03/03/31 04:43] 一通りの使い方ならRuby256本の邪道編に書いてあった気がするが。 スレ違いじゃないか?
581 名前:579 mailto:sage [03/03/31 19:20] IActiveScriptってWSHにRubyとかの他の言語拡張するための インターフェイスなのですか? 今考えているソフトでWSHスクリプトファイルをユーザに用意してもらい, そこに書いているスクリプトを実行することによってアプリケーションの 挙動を変化させたいと思っています. WSHあるいはJSCRIPT,VBScript等をプログラム上でロードして実行させる 方法が知りたいです. よろしくお願いします. 環境: VC++ 6.0 IE Ver 6.0.2
582 名前:デフォルトの名無しさん [03/03/31 20:09] >>577 何のソースコードを読めばいいの? VMのソースコード?それって公開されてるの?
583 名前:デフォルトの名無しさん mailto:sage [03/03/31 20:19] 良い子は検索したり、過去ログ読んだりします。
584 名前:デフォルトの名無しさん mailto:sage [03/04/01 01:40] <死ね> www.amazon.co.jp/exec/obidos/ASIN/490090063X/qid%3D1049128711/250-2465643-1535410 www.amazon.co.jp/exec/obidos/ASIN/489471356X/qid=1049128646/sr=1-1/ref=sr_1_2_1/250-2465643-1535410 VMはオープンソースのプロジェクトがいくつかあったはず。 GNUにもあった気がする。 俺が知ってるのはOSがマイナーなんで言ってもしょうがない。 </死ね>
585 名前:デフォルトの名無しさん mailto:sage [03/04/01 01:43] <死ね target=">>582 "> www.amazon.com/exec/obidos/ASIN/3540420886/qid=1049128836/sr=2-2/ref=sr_2_2/104-8886811-5842366 全部読んだわけではないが書き方が変わってるんでVMの勉強としては素直に薦められない。 www.amazon.com/exec/obidos/ASIN/0201432943/qid=1049128836/sr=2-1/ref=sr_2_1/104-8886811-5842366 は上にあげたとおり邦訳が出てるんでそっちを読め。訳に問題はない。 あとの洋書は大体到着待ち。 </死ね>
586 名前:デフォルトの名無しさん mailto:sage [03/04/01 02:32] >>582 www.kaffe.org とか…
587 名前:デフォルトの名無しさん [03/04/05 17:27] いろいろと参考になりますね、この擦れ。 ところで、JAVAのVMがやはり事実上のスタンダードになりつつあるのでしょうかね?
588 名前:デフォルトの名無しさん mailto:sage [03/04/05 17:33] 現状はそう。 でもCLRとかParrotとか、未来の可能性は閉じてはいない。
589 名前:デフォルトの名無しさん [03/04/05 17:35] >>587 なんの事実上のスタンダード? VMといえばJavaのVMってことか?
590 名前:デフォルトの名無しさん [03/04/05 17:57] >>581 やり方が分かったら連絡してくれ.
591 名前:デフォルトの名無しさん mailto:sage [03/04/06 02:48] >>587 スタンダードというか、参照・参考にするのに比較的お手軽なのは確か。
592 名前:デフォルトの名無しさん [03/04/08 21:55] VMってJAVAスクリプト自体は解釈できんのね?
593 名前:デフォルトの名無しさん mailto:sage [03/04/08 22:17] JavaとJavaScriptは何の関係も無い(たしか)
594 名前:名無し mailto:sage [03/04/09 01:24] VMが理解できるのはバイトコードだけかと
595 名前:デフォルトの名無しさん mailto:sage [03/04/09 11:34] はぁ?
596 名前:デフォルトの名無しさん mailto:sage [03/04/09 13:44] >>593 そだね最初はNetscape社のLiveScript。でJavaが現れて なんとなく名前をJavaScriptに変更。 www.howtocreate.co.uk/jshistory.html つうかこれくらいはgoogleですぐ見つかるんだが…
597 名前:デフォルトの名無しさん mailto:sage [03/04/10 11:47] Javaを意識してみたという点では、まったく無関係でもない。
598 名前:デフォルトの名無しさん mailto:sage [03/04/10 12:40] >>597 ばーか
599 名前:コンパイラを勉強するには? [03/04/10 15:41] 今まで、業務でJavaを1年半使った以外、プログラム経験はありません。そのJavaもWeb系が主です。 こんな僕でも、コンパイラの事を理解する事ができるでしょうか?JavaCCと言うのをやろうとしているのですが、 これをやるには、Java以外の知識よりもプログラム全般に詳しくないとできないですよね? 『おまえには、まだ無理だ。そんなんじゃJavaCCなんて理解できるはずはない。』なんてことは、皆さん思いませんか? それとも、私ほどの経験でもJavaCCを理解する事は可能なんでしょうか? 何年かかっても良いので、最良の道を行きたいと思っています。 それには、やはりC言語などからプログラムというものを理解し、一般のコンパイラ事情を知ってから、JavaCCに行った方が良いのでしょうか? よろしくお願いします。
600 名前:デフォルトの名無しさん mailto:sage [03/04/10 15:50] 愛さえあればできるよ。
601 名前:デフォルトの名無しさん mailto:sage [03/04/10 15:52] できちゃった♥
602 名前:デフォルトの名無しさん mailto:sage [03/04/10 16:15] >>599 個人的にゃJavaって泥臭いとこを隠してるから一回Cでそういう所を 見た方がいい気がする。 UNIX使えるならシェル書いてみるのはどうよ。
603 名前:デフォルトの名無しさん mailto:sage [03/04/10 16:17] Java慣れてるならJavaでいいじゃん。 なんで遠回りすんの?>602
604 名前:デフォルトの名無しさん mailto:sage [03/04/10 16:28] んー?別にCで全部やれっちゅうワケじゃないのよ。 ただ、作ろうとしてるモンはJavaでもCでもない「別の言語」 だから他の言語との違いを知っとった方がいいかと思う。
605 名前:デフォルトの名無しさん mailto:sage [03/04/10 16:34] あ、でもJavaってアプリ自身がJavaで書かれたコードを実行する機能を 持たれられた気がするな… マクロとかだとそっちの方が早いか?
606 名前:デフォルトの名無しさん mailto:sage [03/04/10 17:50] >>599 C yacc lex は書籍が多いから、それがいいかもね。 とりあえず C をマスターしておいて、整数だけbasicからjavaへのトランスレータとか作ってみたらどう? でき上がったものは無意味だけど、やり方は理解できると思うよ。
607 名前:デフォルトの名無しさん mailto:sage [03/04/10 18:05] (´-`).。oO(>602 コンパイラ作るのになんでシェルが関係あるんだろう?) 最終的に機械語やバイトコードに落とす必要は必ずしもないのだし、 そこまでいくには道のりは遠いので、まずは構文解析できるように なればいいのでは。 ただ、言語を作るのはただツールをいじっていればなんとかなるものでもない。 きちんとしたものを作れるようになるには知識が必要なので、しっかりした 解説を読むべし。 Java + JavaCC で書いてあるwebなり本なりが見つかればそれでもいいし、 見つからなければCを覚えて本を読む方がいい。理論がわかればツールを使うの はJavaCCだろうがyaccだろうがたいしてかわらない。 過去ログを見ればweb上の講義ノートもあったと思う。(前スレだったかも)
608 名前:デフォルトの名無しさん mailto:sage [03/04/10 18:24] シェルスクリプトあたりからってことじゃないの
609 名前:デフォルトの名無しさん mailto:sage [03/04/10 18:40] だとしてもなんでshなんだよ。 まだLISPでもやってた方がいいぞ。
610 名前:コンパイラを勉強するには? [03/04/10 19:55] どうも、皆さん幅広いご意見ありがとうございます。 大変参考になったのですが、やはり難しそうですね。しかし、生まれつき、計算とかが 好きなものですから、話しを見ているだけで、とてもわくわくしてきます。 やはり、いきなり、JavaCCに入るのではなく、他の方から入っていく事にします。 もっといろいろ読みたいので、良ければみなさん、またいろいろ書いておいてください。 よろしくお願いします。
611 名前:デフォルトの名無しさん mailto:sage [03/04/10 20:36] >>610 yacc lex なら、そんな難しいものじゃないから、習うより馴れろでガンガンいけばいいよ。 ただCは押さえて置かないと進むものも進まないから、Cはがんばってね。 多分なじみの薄い物で参考資料も少なく、yacc を使うにあたって必要不可欠なCの概念は union だと思います。 そこは気合で行ってくれ。
612 名前:コンパイラを勉強するには? [03/04/10 21:32] 気合で行くわ。
613 名前:デフォルトの名無しさん mailto:sage [03/04/10 21:38] どうも、仕事で簡易スクリプトを作ることになりそう。 基本的には、引数付の関数呼び出しと変数への値代入程度 で済ませたいけど、制御構造も作らざるを得ないかも・・・。 まあ、ちょうどよい勉強と思ってやってみるつもりです。
614 名前:デフォルトの名無しさん mailto:sage [03/04/10 23:03] 仕事なら既存のやつ使った方がいいんじゃねーの?
615 名前:デフォルトの名無しさん mailto:sage [03/04/11 00:59] この時期だし研修用でそ
616 名前:デフォルトの名無しさん mailto:sage [03/04/11 09:34] >>614 アプリケーション組み込み物のスクリプトだと既存という訳にはいかんよ、作るしかないです。 仮にソースが取得できたとしても、殆どがGPLに侵されたコードで再利用は不可能だからね。
617 名前:デフォルトの名無しさん mailto:sage [03/04/11 12:46] >>616 perlもpythonもrubyもtclもGPL以外での利用を認めてるが。
618 名前:デフォルトの名無しさん mailto:sage [03/04/11 13:17] >>617 たとえば www.ruby-lang.org/ja/LICENSE.txt とかは? 近は過激な運動家がいたりして危ないから、そういう報流すのは良くないよ〜
619 名前:デフォルトの名無しさん mailto:sage [03/04/11 13:18] 近→最近
620 名前:デフォルトの名無しさん mailto:sage [03/04/11 13:37] つーかGNU謹製のguileですら非GPLソフトへの組み込みを認めていたりするのだが。
621 名前:デフォルトの名無しさん mailto:sage [03/04/11 13:45] >>620 お仕事用というのだから、組み込みよりもソースの公開が問題なんじゃないの?
622 名前:デフォルトの名無しさん mailto:sage [03/04/11 14:16] >>621 GPLと互換性のないライセンスのソフトに組み込める==ソース公開の義務がない(スクリプトエンジン以外は)
623 名前:デフォルトの名無しさん mailto:sage [03/04/11 14:25] >>622 その解釈は結構きわどいと思うな・・・
624 名前:デフォルトの名無しさん mailto:sage [03/04/11 14:46] スクリプトエンジンに手を加えずに使うんだったらいいんじゃない? 手を加えたくなってもフィルタで済ます。
625 名前:デフォルトの名無しさん mailto:sage [03/04/11 19:46] >>618 > www.ruby-lang.org/ja/LICENSE.txt 「または以下に示す条件で」って書いてあるじゃん。 rubyに関しては何度かMLでもそういう話があるが、結論としては 「迷惑をかけないでくれ」だけのはず。 ところで過激な運動家って何だ?
626 名前:デフォルトの名無しさん mailto:sage [03/04/11 21:34] Qちゃん
627 名前:デフォルトの名無しさん mailto:sage [03/04/12 00:43] >>626 過激だったのか。中の人も(ry
628 名前:デフォルトの名無しさん mailto:sage [03/04/12 06:46] そろそろスレ違い気味なのでGPLスレでも建てて議論してくだちゃい
629 名前:デフォルトの名無しさん mailto:sage [03/04/12 12:46] ここだな? 【殺しの】ライセンス【道で拾った】 pc2.2ch.net/test/read.cgi/tech/1045006087/
630 名前:デフォルトの名無しさん mailto:sage [03/04/12 17:19] >>599 JavaCC使うなら、LL解析法だからLALR解析法を使うyaccは勉強しなくていいよ。 ちょっとした簡単な言語のインタプリタを作ったことがかなり前にあるんだけど、 簡単なインタプリタならそんなに難しくないはず。 LL文法とBNFがわかれば、JavaCCは使えるようになると思う。 言語処理系の本を1冊借りてきて、Let's Try!
631 名前:デフォルトの名無しさん mailto:sage [03/04/12 17:23] 追加。 ドキュメントが英語で分かりにくいから、 ttp://village.infoweb.ne.jp/~fwif0083/program/java/javacc/javaccgrm.html ttp://www.asahi-net.or.jp/~DP8T-ASM/java/tips/JavaCCHelloWorld.html この辺を参考に。 大量にサンプルがついてるから、それを参考にして作るといいかも。
632 名前:デフォルトの名無しさん mailto:sage [03/04/14 21:08] LL(k)らしいんだけど誰か使てる? spirit.sourceforge.net/
633 名前:デフォルトの名無しさん [03/04/16 23:30] func(); という長い関数があったとして、これを func1(); func2(); func3(); と分割するようなプログラムを作ってみたいと思ってます。 なにか参考になる情報、またはすでにそういうものがあったら教えてください。 それでは宜しくお願いします。
634 名前:デフォルトの名無しさん mailto:sage [03/04/16 23:41] >>633 リファクタリングで検索
635 名前:デフォルトの名無しさん mailto:sage [03/04/16 23:43] >>634 それは手作業でやるのでは?
636 名前:デフォルトの名無しさん mailto:sage [03/04/16 23:49] >>635 おまえは一体どう分割したいのかと(ry まさか単純にぶった切るつもりか?
637 名前:デフォルトの名無しさん [03/04/16 23:52] 単純にぶったぎりますが、ちゃんと途中経過を保存・復元する部分を付け加えたいです。
638 名前:デフォルトの名無しさん mailto:sage [03/04/17 00:11] >>633 の説明だけで何を判れと言うのか。
639 名前:デフォルトの名無しさん mailto:sage [03/04/17 00:20] >>637 ローカル変数を全部構造体に入れてfunc()で確保、 func1(),func2(),func3()にそいつのポインタを渡してアクセス。 真面目にやるならフロー解析が必要。
640 名前:山崎渉 mailto:(^^) [03/04/17 15:16] (^^)
641 名前:デフォルトの名無しさん [03/04/19 08:22] 荒したい策の保守あげ
642 名前:デフォルトの名無しさん mailto:sage [03/04/19 15:36] 荒らしたい 策
643 名前:山崎渉 mailto:(^^)sage [03/04/20 03:02] ∧_∧ ( ^^ )< ぬるぽ(^^)
644 名前:山崎渉 mailto:(^^)sage [03/04/20 03:41] ∧_∧ ( ^^ )< ぬるぽ(^^)
645 名前:デフォルトの名無しさん [03/04/23 03:52]
646 名前:棄教者 ◆egKIKYO7cg mailto:sage [03/04/24 15:18] 最近 Perl の Parse::Yapp というモジュールで遊んでいます。 Yacc の Perl 版です。 これで何かハックした神の報告を待つ。
647 名前:デフォルトの名無しさん [03/05/23 14:24] ♥
648 名前:名無し@沢村 [03/05/23 16:07] おまいらよ、コンパイラをつくっただけじゃ言語はできんぞ。 リンカの解説はないか?
649 名前:デフォルトの名無しさん [03/05/23 18:15] >>84 超遅いレスだけど、漏れも同じところで詰まっている。 P82までは何とか理解できたけど、LL(1)文法の理論説明になると急に難しくなる。 かなり前のページで定義したことが突然出てきたりするし。 コンピューター学科や数学科出身の人を前提にしているのだろう 漏れは情報学科出身ではないから読んでいてつらい・・・ しかも時間の空いているときに少しづつ読むような読み方では、前回読んだことを 覚え続けるのが困難。
650 名前:649 [03/05/23 18:26] First集合,Follow集合,Director集合は、 ある文法がLL(1)文法かどうかを調べるためだからとりあえず読み飛ばすことにします・・・
651 名前:649 [03/05/23 18:30] >>648 去年、"Linkers & Loaders" (John R.Levine著 ポジティブエッジ訳・オーム社)を読んだのですけど、 説明がかなり大雑把で実装レベルで直接役立てるのはちょっと無理な気がしました。
652 名前:デフォルトの名無しさん mailto:sage [03/05/23 18:31] 大したこと書いてないので、斜め読みで十分。 とにかく、実際に作ってみるのが○
653 名前:652 mailto:sage [03/05/23 18:34] 中田育男の「コンパイラ」本のことね。
654 名前:649 [03/05/23 18:48] >>652-653 レスありがとうございます。 私は情報工学は素人なので、斜め読みするほどの能力はありませんが、 理論から導き出される結論自体はそれほど難しいとは思っていないので なんとか最後まで読んで見ます。
655 名前:逆コンパイラ [03/05/23 20:16] EXEファイルをC言語に戻す逆コンパイラソフトを教えてもらえませんか。
656 名前:デフォルトの名無しさん mailto:sage [03/05/23 20:22] 戻す?
657 名前:デフォルトの名無しさん mailto:sage [03/05/23 20:38] >>655 www.itee.uq.edu.au/~cristina/dcc.html www.backerstreet.com/rec/rec.htm
658 名前:逆コンパイラ [03/05/23 20:47] >>657 上の一番のHPのdcc Decompiler はどこからダウンロードしますか
659 名前:デフォルトの名無しさん mailto:sage [03/05/23 22:32] >>658 Table of Contentsの中に思いっきり「配布」という単語があるわけだが。 辞書とか翻訳サイトつかってでもContentsの一覧ぐらいは一通り嫁。
660 名前:デフォルトの名無しさん mailto:sage [03/05/26 23:13] ↓VMにも色々あるようですが、どういう方式でしょうか? memory to memory SICD machine chemical abstract machine categorical abstract machine while-if machine
661 名前:649 [03/05/27 15:02] 中田育男氏のコンパイラを読み終わって、PL/0'のソースコードをざっと眺めていたのですが・・・ 字句解析と構文解析以外は普通のプログラミングですね。 結局はyacc&lexの勉強をしろということでよろしいでつか?
662 名前:棄教者 ◆egKIKYO7cg mailto:sage [03/05/27 15:51] >>661 そりゃ天下のGCCだって構文解析器はBisonを使って書かれているからね。
663 名前:デフォルトの名無しさん mailto:sage [03/05/27 16:02] >>661 >>662 若者ならyaccは無視してantlrをやったほうがいいでしょうか?
664 名前:649 [03/05/27 16:24] >>663 漏れも良く分からないけどJava環境ならANTLRになるのでは? 漏れはC言語使うのでyaccが魅力的でつ
665 名前:デフォルトの名無しさん [03/05/27 16:30] >>663 若者ならまずは手書きから始めるのが良いですよ。 言語にもよるけど、再帰的降下法はいちばん単純でわかりやすい。 パーサジェネレータを使う場合にも、一度手書きパーサを経験しておかないと なにがなんだかわからない、という人が多いようです。
666 名前:デフォルトの名無しさん mailto:sage [03/05/27 16:46] どうも。やってみます。ただ、23歳はもう若者じゃなかったかもしれません。
667 名前:デフォルトの名無しさん mailto:sage [03/05/27 17:52] あっというまに
668 名前:649 [03/05/27 17:53] >>665 手書きの経験が必要でつか? 漏れは若者じゃないからいいや・・・
669 名前:デフォルトの名無しさん mailto:sage [03/05/27 17:56] 手書きの方が速い
670 名前:デフォルトの名無しさん mailto:sage [03/05/27 18:05] 昔、手書きでCコンパイラを作るとかぶちあげて、全く後が続かず、 入院したことにして結局うやむやにした香具師がいたな。
671 名前:デフォルトの名無しさん mailto:sage [03/05/27 18:10] ただのツール使いはヘタレ。
672 名前:名無し@沢村 [03/05/27 20:29] おまいらよ、コンパイラは字句解析と構文解析だけではないぞ。 いいか、コンパイラはな、字句解析、構文解析、意味解析、最適化、リンカ、ローダとどれが欠けてもダメよ。わかるか? おまいらに、コンパイラをつくる能力があるか?
673 名前:デフォルトの名無しさん mailto:sage [03/05/27 20:53] アセンブラなら作ったことあるぞ。 コンパイラからアセンブリコード吐かせればOKだな。
674 名前:デフォルトの名無しさん mailto:sage [03/05/27 20:59] 最適化はあくまでオブションだし、ローダはOSの仕事だがなw
675 名前:デフォルトの名無しさん [03/05/27 21:14] >>672 大半の人が作りたいのはスクリプトのコンパイラでないの? それなら、字句解析、構文解析、意味解析だけで何とかなるのでは。
676 名前:デフォルトの名無しさん mailto:sage [03/05/27 21:30] >スクリプトのコンパイラ バイトコードコンパイルという意味だよね?
677 名前:デフォルトの名無しさん [03/05/27 22:40] >>676 そうっす
678 名前:デフォルトの名無しさん [03/05/27 22:50] リンカはリンカだろ・・
679 名前:デフォルトの名無しさん mailto:sage [03/05/27 23:07] >>678 Delphiのよーに、コンパイラがリンクまでやってくれると便利なときがあるよ。 同じシンボルがエクスポートされた.objも、別々のユニットから{$L}で取り込めば呼び分けられるし、 リンクエラーとか名前の衝突とかも、リンカじゃなくてコンパイラのエラーになるので 原因となるソースコード上での位置がわかるし。
680 名前:デフォルトの名無しさん mailto:sage [03/05/28 05:29] >>674 正直、最近のマシンは最適化してやらないと実力が出ないから コンパイラ/インタプリタでの最適化は重要だし、 処理系のコード的にも非常に大きな部分を占めてるんだが。
681 名前:デフォルトの名無しさん mailto:sage [03/05/28 05:36] >>680 追伸: オプションなのは最適化なんてしなくていいってコトじゃなくて 様々な最適化技法がプログラムの性質によってそれぞれ有効度があり、 あまり効かなかったり却って遅くなるような場合に外したりパラメータを調節するのが目的。 (昔はデバッグを簡単にする目的もあったけど最近のデバッガは優秀だから 最適化されていてもデバッグできたりするらしいね。)
682 名前:デフォルトの名無しさん mailto:sage [03/05/28 06:00] ほう。最近のデバッガは、最適化で消えた変数も追いかけられるようになったりするの?
683 名前:デフォルトの名無しさん mailto:sage [03/05/28 07:37] 消えたといっても、スタックローカルからレジスタに移っただけだろ? だからレジスタにある間は追いかけられる。
684 名前:デフォルトの名無しさん mailto:sage [03/05/28 10:30] 最適化について知らないなら、まず調べてから書いてください。
685 名前:デフォルトの名無しさん mailto:sage [03/05/28 11:32] 681が言ってるのはインライン展開とか実行順変更程度なら大丈夫という話 682が言ってるのは完全に消えた変数の話 683が言ってるのはレジスタ最適化の話 684が言ってるのは・・・・?
686 名前:山崎渉 mailto:(^^) [03/05/28 12:35] ∧_∧ ピュ.ー ( ^^ ) <これからも僕を応援して下さいね(^^)。 =〔~∪ ̄ ̄〕 = ◎――◎ 山崎渉
687 名前:デフォルトの名無しさん mailto:sage [03/05/28 15:24] Compiler Design in C www.amazon.com/exec/obidos/tg/detail/-/0131550454/ www.holub.com/software/compiler.design.in.c.html て読破したかたいらっしゃいますか? 古すぎますかね。
688 名前:名無し@沢村 [03/05/28 16:00] おまいら、『コンパイラ・スクリプトエンジン』について相談してみろ?
689 名前:674 mailto:sage [03/05/28 17:41] >>680 672があまりにいいかげんなこと言っていることを踏まえての内容です。 実用性から言えば、680,681に書かれたことは誰でも認める常識かと。
690 名前:デフォルトの名無しさん mailto:sage [03/05/28 17:44] だから沢村に関わるなとあれ程言ったのに
691 名前:デフォルトの名無しさん mailto:sage [03/05/29 00:33] ここには↓を解説できる者はおらんのか? memory to memory SICD machine chemical abstract machine categorical abstract machine while-if machine
692 名前:デフォルトの名無しさん mailto:sage [03/05/29 00:49] >>691 つーかどっから拾ってきたの?論文読めよ。 名前間違ってるのもあるし。
693 名前:名無し@沢村 [03/05/29 05:08] おまいらよ、ここで『コンパイラ・スクリプトエンジン』について知ったかで語ってるやつは多いが、 その割りには世に『コンパイラ・スクリプトエンジン』はそれほど多く出てないが…? みんな自分だけで使ってんの? それとも起動したと同時に終了してしまうコンソールアプリケーション?
694 名前:デフォルトの名無しさん mailto:sage [03/05/29 05:18] 自分のアプリケーション用だろ。 はじめから世に出すつもりで作っていない。
695 名前:デフォルトの名無しさん [03/05/29 07:34] 世に出してほすぃ 設計から実装まですべてさらけだしてほすぃ
696 名前:デフォルトの名無しさん mailto:sage [03/05/29 07:42] さらけ出てるじゃない >>241 >>487
697 名前:デフォルトの名無しさん mailto:sage [03/05/29 08:49] 自分のプログラムにちょっとしたマクロを実装できたらいいなあ〜 って類がこのスレの対象だろ。
698 名前:デフォルトの名無しさん mailto:sage [03/05/29 09:53] >>693 > それとも起動したと同時に終了してしまうコンソールアプリケーション? こんなやつかW? int main() {return 0;}
699 名前:デフォルトの名無しさん mailto:sage [03/05/29 14:28] >>697 最適化に拘らないならXMLとXMLパーサーを使ってみるという選択は? (APIはSAXでもDOMでもお好みで。) 文法の自由度は減るけど ちょっとしたものなら自分でパーサー書くより楽だよ。 例えばmakeと同じような仕事をするANT(だったっけ?)の プロジェクトファイル(だったっけ?)はXMLらしいぞー(じゃー、ゴボゴボゴボ)。
700 名前:デフォルトの名無しさん mailto:sage [03/05/29 14:42] >>699 続き 入力にフォーム、出力はスタイルファイル(CSSでもXSLでも)とでもすれば偽IDE環境も簡単w。 またあるいは、かつてWEB(だっけ?今文献は引越しダンボールの中なんで)という TeX+Pascalの文芸的プログラミングに憧れた人にもXMLマークアップでプログラミング言語というのは それなりに面白い選択かと。
701 名前:デフォルトの名無しさん mailto:sage [03/05/29 17:52] >>699 XMLなんてクソ
702 名前:名無し@沢村 [03/05/29 18:53] >>698 コンソールアプリケーションって、たいがい起動したと同時に終了するだろ?
703 名前:名無し@沢村 [03/05/29 18:56] >>698 てか、コンソールアプリケーションって、一応処理はするんだが、起動して処理をして終了までが、あっという間だから、起動したと同時に終了するように見えるんだな。
704 名前:デフォルトの名無しさん mailto:sage [03/05/29 19:25] 名無し@沢村はどんな『コンパイラ・スクリプトエンジン』を作っているのかな?
705 名前:デフォルトの名無しさん mailto:sage [03/05/29 19:43] >>701 何故ぇ?w
706 名前:デフォルトの名無しさん mailto:sage [03/05/29 19:47] >>702-703 ( ´_ゝ`)
707 名前:デフォルトの名無しさん mailto:sage [03/05/29 20:58] >>699 素から書いたら面倒だけどyacc/lexとかツール使うと工数はxmlと殆ど変わらないと思うけど。 むしろ切り出した後のエラーチェックとか加工とかがxmlだと面倒だなぁとか感じたりするんですけど。
708 名前:名無し@沢村 [03/05/29 21:01] >>704 おれは、起動、コンパイル、実行、終了までが一瞬のうちに終わるスクリプト言語をつくったよ。 コンソールアプリケーションでね。
709 名前:デフォルトの名無しさん mailto:sage [03/05/29 21:03] >>708 int main() {return 0;} が実行できるスクリプトか? すばらしい(藁)
710 名前:デフォルトの名無しさん mailto:sage [03/05/29 21:18] Parrotでいいじゃんよ
711 名前:デフォルトの名無しさん mailto:sage [03/05/29 21:59] >>707 エラーチェックはXML Schema + 検証機能つきパーサで。 切り出し&加工はDOMでやれば楽かも。 書ける言語がXML整形式の範囲に縛られるわけだから なにがなんでもXMLとは思わないけど、文書としても利用されるような 宣言的なスクリプト(例えばモジュールの依存関係を記述するメイク・ファイルや プロジェクトファイルみたいなのとか、環境設定とか、各種ポリシーの記述とか、 各種シーンの記述とか…。)にはいいかなと。 私自身はとあるTRPGのシナリオを記述する言語につかえる 語彙(XML世界におけるマークアップ文法のライブラリ)を 趣味で書いてみているところ。実行系はたぶんJavaで書くと思うけど。
712 名前:デフォルトの名無しさん mailto:sage [03/05/30 07:31] 行単位、スペース区切りでいいじゃん。
713 名前:デフォルトの名無しさん [03/05/30 10:57] >>712 確かにそれが一番便利w 設定ファイルの読み込みや簡単なスクリプトでバッチ処理するときは最強。 しかし、より高機能なものを求めてコンパイラが欲しいのだから そのような提案は無意味
714 名前:フォールトの名無しさん [03/05/30 11:33] オブジェクト指向言語を作ってみたいのですが、良い教科書など 無いでしょうか? 一応、ドシロウトではなくて、括弧の使える四則演算電卓を作った 実績があります(C言語を用いて3ヶ月ほどで開発しました)。 その辺を踏まえて、オブジェクト指向言語の実装に関する、標準的 な書籍なりペーパーなりを紹介していただけないでしょうか? また、このような自作言語に継続的な利用者が現れることを期待 するのですが、どのような場で、どの程度の進捗状況で発表すれ ば良いのか見当がつきません。 成功した開発プロジェクトの実施スキームについて紹介していた だけないでしょうか? せっかく開発する予定の言語なので、できれば世界中の開発者に 使ってもらいたい、プログラミングの概念を根底から覆す提案を したい、と言うのが私の願いです。
715 名前:デフォルトの名無しさん mailto:sage [03/05/30 12:06] 夢が大きくていいけどさ、まずは凝った作りじゃなくて、 もっと単純なコンパイラを練習として作ってみたら? それならこのスレに情報もたくさんあるし。
716 名前:デフォルトの名無しさん mailto:sage [03/05/30 12:09] >>714 がんがれ!!
717 名前:デフォルトの名無しさん mailto:sage [03/05/30 12:39] >>714 Tiger本じゃだめ?
718 名前:フォールトの名無しさん [03/05/30 13:05] >>717 >Tiger本じゃだめ? ISBNコードわかります?
719 名前:デフォルトの名無しさん mailto:sage [03/05/30 13:13] >>714 www.ruby-lang.org/ja/ ソース嫁
720 名前:フォールトの名無しさん [03/05/30 13:25] >>717 Webで検索したらそれらしい本「ISBN 0-521-58388-8」 が見つかりましたが、洋書のため書店での入手が難しく、 あきらめざる得ません(トイレで読むのに丁度よさそうな レベルの本なのに残念です)。 日本で入手容易な、翻訳本など無いでしょうか? >>719 このプロジェクトが終了してからじっくり読んでみたいと 思います。
721 名前:デフォルトの名無しさん mailto:sage [03/05/30 13:35] >プログラミングの概念を根底から覆す提案 って何かな?別にプログラミング言語でなくても、日本語でも表現できるはず。
722 名前:デフォルトの名無しさん mailto:sage [03/05/30 14:50] >>718 著者のページ: www.cs.princeton.edu/~appel/modern/
723 名前:デフォルトの名無しさん mailto:sage [03/05/30 14:52] >>721 ま、そりゃそうだが、コードで語るってのもカコイイ ・・・かも知れないw。
724 名前:フォールトの名無しさん [03/05/30 16:32] >>721 >>プログラミングの概念を根底から覆す提案 >って何かな?別にプログラミング言語でなくても、日本語でも表現できるはず。 まるで、具体的な計画を持たない香具師のように聞こえてしまう じゃないか(はぁ)。。。この場で核心となるアイディアや 技術を披露するのは、未だ一寸早いと思う。私の考えに基づいた 言語仕様や実装方法が世間に受け入れられるためには、この パラダイムギャップを埋めるための下地が不充分です。
725 名前:_ mailto:sage [03/05/30 16:33] homepage.mac.com/hiroyuki43/hankaku06.html
726 名前:デフォルトの名無しさん mailto:sage [03/05/30 16:40] >>724 と思うなら、まずプロトタイプでも作ってみるしかないんじゃないか。
727 名前:デフォルトの名無しさん mailto:sage [03/05/30 20:28] >>724 どうせ、他に誰か1000人くらいは考えたことがある案だから気にするな。
728 名前:デフォルトの名無しさん mailto:sage [03/05/31 01:55] FPGAの発想を応用して、VMを高速化
729 名前:デフォルトの名無しさん [03/05/31 18:20] 『システムソフトウェアプログラミング ― コンパイラの設計法と並行処理の基礎』 デイビッド クラーク (著) ってのもあるぞ。個人的にはお世話になりました。
730 名前:デフォルトの名無しさん mailto:sage [03/05/31 18:24] >>728 PS3
731 名前:ろうひ男爵 mailto:sage [03/06/05 02:06] >>721 自分的には、 今後はHTのおかげで、ディスクトップレベルででも 16CPU(物理的ではなくね)とか実装される その後、256CPUとか実装されて、 ソフトウェアによって4CPUとか使われるようになる。 オブジェクト指向でつくられたプログラムで、 オブジェクト単位でCPUが割り振られるとか。 (すでにやってそうですね)
732 名前:デフォルトの名無しさん mailto:sage [03/06/05 10:05] >>731 > オブジェクト指向でつくられたプログラムで、 > オブジェクト単位でCPUが割り振られるとか。 CPU間のスイッチが多すぎて激しく遅くなりそうな。
733 名前:ろうひ男爵 mailto:sage [03/06/05 12:17] >>732 メモリーもシェアメモリー部分だけ共有で、 1CPUあたり1GB位ずつ個別に持ってたりとか。 これ以上はすれ違いですね。スミマセン
734 名前:デフォルトの名無しさん [03/06/10 15:09] lexの勉強をしています。 入力先の切り替えをするとき、 AT&T lexの場合は、input()とunput()を再定義する必要がありますが、 flexの場合、YY_INPUTの再定義だけで切り替えができます。 これは、flexが文字の返却をしないアルゴリズムで動作しているとのことでしょうか?
735 名前:直リン [03/06/10 15:13] homepage.mac.com/yuuka20/
736 名前:デフォルトの名無しさん [03/06/10 18:34] >>734 flexの実装については知らないけど、自前で文字バッファ持っていれば unputはいらないでしょう。 lexical analyzerの本質からいって1文字先読みは避けられません。
737 名前:734 [03/06/10 19:42] >>736 そうですよね。 YY_INPUTは、flex側のバッファに文字列をコピーして渡すから、 後はflexの内部バッファの問題になるでしょうね。 確かに文字の返却なしってのは無理かw
738 名前:デフォルトの名無しさん [03/06/10 23:48] >>731 > オブジェクト指向でつくられたプログラムで、 > オブジェクト単位でCPUが割り振られるとか。 ここのJ3Cなんか近いかも? www.nk.rim.or.jp/~jun/j3w/
739 名前:デフォルトの名無しさん [03/06/11 18:33] yaccを使おうとしたら、liby.aがないことに気がつく。 どうしてyaccが入っているのにliby.aがないのかと小一時間・・・ findしてもどこにもないし・・・馬犬 目 ぽ..._〆(゚▽゚*)
740 名前:739 [03/06/11 19:01] www.yuge.ac.jp/home/~nagao/teaching/Compiler/YaccLex/ > Linuxでは liby.a(Yacc用のダミーの yyerror,main)が提供されていません。 > そのため、自分で書く必要があります。 最初からないのね・・・
741 名前:100人に1人 mailto:age [03/06/11 19:16] ◎人の嫌がることをズケッと言うのはこんな奴! <アスペルガー症候群(自閉症スペクトラム)←脳の機能的疾患(遺伝が要因)> ●変化を嫌う web.kyoto-inet.or.jp/org/atoz3/kado/book1/Williams-Asp.htm ●接し方のルールがわからず無邪気に周囲の人に対して迷惑なことをしてしまうことがある。人を傷つけるということには鈍感(相手の立場に立って考えられない)。 ●パターン的行動、生真面目すぎて融通が利かない 毎朝の通学電車では同じホームの同じ場所から、同じ時間の同じ号車に乗ることに決めていたりする。パターンを好むということは反復を厭わないことでもある。 ●アスペルガー症候群の子どもは(大人も)感覚刺激に対して敏感。敏感さは聴覚、視覚、味覚、嗅覚、温痛覚などのいずれの感覚の敏感さもありえる(特に視覚が敏感)。 ●アスペルガー症候群の子ども(大人も)は予測できないことや変化に対して苦痛を感じることが多い。 www.autism.jp/l-02-03-aspe3.htm ●独り言を言うことが多い(考えていることを口に出す) ●物事をいつまでも同じにしておこうとする欲求が強く、そうでないと非常に不安。いわゆる「こだわり」。 ●自発的に行動することが少なく、興味の幅が狭い ●物まねをしているような不自然な言語表現 ●自閉症スペクトラム全体としては一万人に91人(およそ100人に1人)。 www.ypdc.net/asuperugar.htm ★自閉症スペクトラムの考え方(アスペルガーに至らない気質の偏りもある(遺伝性)) www.imaizumi-web.com/030413.html ★アスペルガー症候群(自閉症スペクトラム)かどうかのテスト twitwi.s10.xrea.com/psy/add.htm www.geocities.co.jp/Beautycare/5917/as/marksheetmake.html
742 名前:デフォルトの名無しさん mailto:sage [03/06/11 19:46] >>740 liby.aは、あっても中身は無いも同然ですしね、昔は色々入っていたんでしょうか? 古いyaccを知っている人とかいるかな?
743 名前:名無し@沢村 [03/06/11 20:04] コンパイラやスクリプトエンジンをつくろうとしているおまいらよ、夢を見るのはいいことだぞ!! おまいらよ、いろいろコンパイラやスクリプトエンジンの構想を練ってみろ? 多いに夢を見てみろ? そしてつかの間の自己満足にひたってみろ? おまいらよ、夢を見るのはいいことだぞ!!
744 名前:デフォルトの名無しさん mailto:sage [03/06/11 20:26] RubyとかC#とかF#とかMixJuiceとか、そんなレベルじゃない、 もっとぶっ飛んだ未来の言語はありませんか?(´・ω・`)
745 名前:デフォルトの名無しさん mailto:sage [03/06/11 20:43] unlambdaとかは?<ぶっとんだ
746 名前:デフォルトの名無しさん mailto:sage [03/06/11 22:37] ということは、BrainFuckもか?
747 名前:デフォルトの名無しさん mailto:sage [03/06/11 23:44] 別に普通だが
748 名前:デフォルトの名無しさん [03/06/12 00:19] >>739 こんなもんだっけ?msgには\n含まれてたかな?忘れてしまったが。 int main(int argc, char **argv) { return yyparse(); } int yyerror(char *msg) { fprintf(stderr, "%s\n", msg); } もっともこんな手抜きのmainやyyerrorはいずれ捨てることになるんだから、 はじめからちゃんと自分で書きましょう。
749 名前:デフォルトの名無しさん mailto:sage [03/06/12 00:26] -Dyyparse=main -Dyyerror=abort
750 名前:739 [03/06/12 19:42] >>748 liby.aは、740のリンク先から作成しますた。 確かに実用上は自分で書かないとだめぽ ところで、lexにせよyaccにせよ、内部の挙動を考慮して使う必要があるのですね。 使い方を忘れると、訳が分からなくなりそう・・・
751 名前:デフォルトの名無しさん [03/06/12 19:49] >>744 CPon
752 名前:751 [03/06/13 13:45] 俺が書きこんだスレっていっつもレスが少なくなるんだけどなんでだろ?
753 名前:デフォルトの名無しさん [03/06/13 21:40] >>752 CPonって何?
754 名前:デフォルトの名無しさん mailto:sage [03/06/13 21:49] 751は妄想が過ぎるんだよ
755 名前:751 [03/06/13 23:04] >>753 宇宙のステルヴィアで使われているプログラミング言語です 多分 言語なのか怪しいけど
756 名前:デフォルトの名無しさん mailto:sage [03/06/13 23:23] >>755 ??????????????????????????????????????????????
757 名前:751 mailto:sage [03/06/13 23:33] >>756 ごめんなさい、くだらないことなんで気にしないでください
758 名前:名無し@沢村 [03/06/16 20:46] おまいらよ、脳内開発は終わったか?
759 名前:デフォルトの名無しさん mailto:sage [03/06/17 09:28] >>751 ありゃ言語というより環境だろ。 >>752 笑えないから。
760 名前:デフォルトの名無しさん [03/07/10 19:28] lex/yaccの宿題なのですが、ここで質問してもよいでしょうか?
761 名前:デフォルトの名無しさん [03/07/10 22:38] >>760 丸投げはイヤンよ。
762 名前:デフォルトの名無しさん mailto:sage [03/07/10 22:46] 自作ファイラやエディタに言語を組み込みたいんだけど どこかいい説明サイトないですか?
763 名前:デフォルトの名無しさん mailto:sage [03/07/11 00:47] emacsのソース嫁
764 名前:デフォルトの名無しさん mailto:sage [03/07/11 01:05] うーん、ここマジレスしていいとこなのか? >>763 emacsは、特定のアプリケーションにLispが組み込んであるというより、 全体がLispシステムという構成でユーザにLisp環境を与えてるんだから >>762 向きじゃないだろう。 Tclを勉強するのがいいと思う。そもそも汎用の組み込み言語を目指して 発生したものだから。ラッキーなら>>762 はTclをそのまま活用できるかも。
765 名前:764 mailto:sage [03/07/11 01:09] >>764 組み込み用言語 ↓ 言いたかったのは、券売機とか洗濯機とかNC機に組み込むソフトじゃなくて、 アプリケーションに組み込むソフトってことね。後者は何て言えばいいんだっけ?
766 名前:デフォルトの名無しさん mailto:sage [03/07/11 01:20] アプリ組み込み用言語処理系 ・・・ダサ
767 名前:760 mailto:sage [03/07/11 02:16] それではお願いします 次の条件を満たすスタックマシンのオブジェクトコードを出力するコンパイラをlex/yaccを作成せよ。 ・代入文のサポート ・if,if-else,whileのサポート ・入出力文のサポート ・ブロック構造体のサポート ・条件式のサポート ・固定変数のサポート ・int abc,xy[50];のような変数と配列の混在した宣言文が、何行でもファイルの先頭に書ける ・配列への代入、配列からの参照には、添字として数式が使える という問題なのですが、下から2つの機能を除いたものは作ることができたのですが、 下の2つを追加するのにどこをいじればいいか全くわかりません。どなたかアドバイスお願いします。
768 名前:760 mailto:sage [03/07/11 02:17] 以下プログラムです lex %% "+" return(ADDOP); "-" return(SUBOP); "*" return(MULOP); "/" return(DVIOP); "(" return(LPAR); ")" return(RPAR); "=" return(ASSIGN); ";" return(SEMI); "{" return(LLPAR); "}" return(RRPAR); "<" return(LLLPAR); ">" return(RRRPAR); "<=" return(REB); ">=" return(LEB); "==" return(EQ); "!=" return(NEQ); "if" return(IF); "put" return(PUT); "get" return(GET); "else" return(ELSE); "while" return(WHILE); "'" return(AP); "," return(CM); [0-9]+ {sscanf(yytext,"%d",&yylval);return(NUMBER);} [a-z] {yylval=yytext[0]-97;return(ALPHABET);} [ \t\n]+ ; . {yylval=yytext[0];return(CHARACTER);} %%
769 名前:760 mailto:sage [03/07/11 02:24] yacc-1 program :var_lists{kansu("INT",0,0);} lists {table[0].q=hyo[number-1].add+hyo[number-1].size; kansu("HL",0,0);for(i=0;i<codenum;i++){printf("%s %d%d\n",table[i].op,table[i].p,table[i].q);}} ; var_lists :INT arrays SEMI |var_lists KONMA INT arrays SEMI ; arrays :var_decl{A=touroku(string);} |arrays KONMA var_decl{A=touroku(string);} ; var_decl:VARIABLE|VARIABLE KAKKO5 NUMBER KAKKO6; var1 :/*empty*/{hyo[A].size=1;} |KAKKO5 NUMBER KAKKO6{hyo[A].size=$2;} ; lists :lists list |list ; list :VARIABLE{kansu("LA",0,sansyo(string));} var2 ASSIGN expression SEMI{kansu("ST",0,0);} |KAKKO3 lists KAKKO4 |if_prefix list{table[$1].q=codenum;} |if_prefix list ELSE{$$=codenum;kansu("J",0,0); table[$1].q=codenum;} list{table[$4].q=codenum;} |WHILE{$$=codenum;} KAKKO1 condition KAKKO2{$$=codenum;kansu("FJ",0,0);} list{kansu("J",0,$2); table[$6].q=codenum;}
770 名前:760 mailto:sage [03/07/11 02:25] yacc-2 |GET KAKKO1 VARIABLE{kansu("LA",0,sansyo(string));} var2{kansu("RI",0,0);} KAKKO2 SEMI |SEMI ; if_prefix:IF KAKKO1 condition KAKKO2{$$=codenum;kansu("FJ",0,0);} condition:expression YORIDAI expression{kansu("GI",0,0);} |expression IJO expression{kansu("GE",0,0);} |expression MIMAN expression{kansu("LT",0,0);} |expression IKA expression{kansu("LE",0,0);} |expression ONAJI expression{kansu("EQ",0,0);} |expression TIGAU expression{kansu("NE",0,0);} ; put_list:put_list KONMA put_parm |put_parm ; put_parm:expression {kansu("WRI",0,0);kansu("WLN",0,0);} |CHARACTER{kansu("LC",0,$1);kansu("WRC",0,0);kansu("WLN",0,0);} ; expression:expression WA expression{kansu("AD",0,0);} |expression SA expression{kansu("SB",0,0);} |expression SEKI expression{kansu("ML",0,0);} |expression SYO expression{kansu("DV",0,0);} |SA expression %prec UMINUS{kansu("NEG",0,0);} |KAKKO1 expression KAKKO2{$$=$2;} |NUMBER{kansu("LC",0,$1);} |VARIABLE{kansu("LA",0,sansyo(string));} |VARIABLE{kansu("LA",0,sansyo(string));} KAKKO5 expression KAKKO6{kansu("LI",0,0);} ;
771 名前:760 mailto:sage [03/07/11 02:28] yacc-3 %% #include "lex.yy.c" struct{int address;char op[5];int p;int q;}table[100]; struct{char name[127];int soeji;int add;int size;}hyo[128]; int codenum=0; int A,i,j; void kansu(char x[], int y, int z){ strcpy(table[codenum].op,x); table[codenum].p=y; table[codenum].q=z; codenum++;} int number =0; touroku(char a[]){ int b; /*int c; int start_add=0;*/ for(b=0;b<number;b++){ if(strcmp(hyo[b].name,a)==0){ printf("error\n"); return(NULL);}} strcpy(hyo[number].name,a); hyo[number].soeji=number; hyo[number].add=hyo[number-1].add+hyo[number-1].size; return(number++);} sansyo(char d[]){ int e; for(e=0;e<number;e++){ if(strcmp(hyo[e].name,d)==0){ return(hyo[e].add);}} printf("no name\n"); return(NULL);}
772 名前:名無し mailto:sage [03/07/12 17:58] www.experimentalstuff.com/Technologies/JavaCC/index.html ここからJavaCCをDLしようとしても The page you are looking for, /data/javacc-3.0.zip isn't here. Sorry. ってでてDLできないんですが
773 名前:デフォルトの名無しさん mailto:sage [03/07/12 22:25] >>772 zipも、tar.gzも両方落とせるけど?
774 名前:名無し mailto:sage [03/07/13 00:23] >>773 クッキーONにしたらDLできました
775 名前:デフォルトの名無しさん [03/07/13 05:23] 自己記述可能なオブジェクト指向の言語処理系で予約語や特殊記号の数が最小のものってどっかに転がってませんかね
776 名前:_ mailto:sage [03/07/13 05:25] homepage.mac.com/hiroyuki44/
777 名前:デフォルトの名無しさん mailto:sage [03/07/13 12:51] >>775 scheme
778 名前:通りすがり mailto:sage [03/07/14 07:23] 因みに何で760はスルーなんですか?
779 名前:通りすがりっていうか mailto:sage [03/07/14 07:24] 多分760をここに誘導した奴なんだけどね。
780 名前:デフォルトの名無しさん mailto:sage [03/07/14 11:45] >>778 まずインデントをどうにかしてくれんと読む気にならん。 ぱっと見、文法をどうにかしろよって感じだが。
781 名前:山崎 渉 mailto:(^^) [03/07/15 09:51] __∧_∧_ |( ^^ )| <寝るぽ(^^) |\⌒⌒⌒\ \ |⌒⌒⌒~| 山崎渉 ~ ̄ ̄ ̄ ̄
782 名前:デフォルトの名無しさん mailto:sage [03/07/17 13:25] >>767 アクションは後回しにして、まず文法だけ集中して考えてみたら。 ふつうはまず文法だけで書いて動かしてみて、正しくreductionが行なわれるかを確認 しますよね。 var_lists :INT arrays SEMI |var_lists KONMA INT arrays SEMI ; これだと int v, int x; なんていうのが通ってしまうけど… かなり混乱してます。もうちょっと整理しよう。
783 名前:760 mailto:sage [03/07/19 11:17] >>782 レスありがとうございます なんとか自分で解決できました
784 名前:デフォルトの名無しさん [03/07/19 11:51] 600番台は危険な香りがしたのであげ
785 名前:デフォルトの名無しさん [03/07/23 19:12] 初歩的な質問なんですけど字句解析の段階で 「どちらとも言えない」トークンが出てきた場合はどうすればいいのでしょうか? 例えば C の * は 1 * 2 のような乗算演算子なのか *ptr -= 4 のようなデリファレンス演算子なのか 単純に字句解析だけしていくとわからないのです。 いくつか考えたのですが。 1.構文解析や意味解析から字句解析を呼び出すようにして、それらの処理内容を字句解析に使用する 2.TOKEN_ASTERISK のように中途半端な状態にして構文解析の段階で適切な物にする 3.とりあえず OP_MULTIPLY みたいにどっちかにしておいて、後で不適切だった場合に OP_DEREFERENCE など適切な物に置き換える もしくは上記以外のもっと賢い方法があるのでしょうか? よろしくお願いします。
786 名前:デフォルトの名無しさん mailto:sage [03/07/23 20:24] >>785 1*2 の形の奴が単項演算子であるわけが無い。 *ptr の形の奴が2項演算子であるわけが無い。 よってどちらともいえないトークンではない
787 名前:デフォルトの名無しさん mailto:sage [03/07/23 20:39] >>786 例が良くないだけで、問題は依然として解決していないと思うが? MyClass::Member * a; C++のこれは宣言?それとも乗算? >>785 どれでもOK。標準はない。 俺だったら2を選ぶけど、それも参考程度にね。
788 名前:785 mailto:sage [03/07/23 22:40] >>786 & >>787 レスありがとうございます。 もしかして私の「字句解析」っていう言葉への認識って間違ってるのかなと思っちゃったのですが、 字句解析って「字面からわかる範囲で」文字列をトークンに切り出していく作業だと思っていたのですが 前後のトークンの状態などまで見るべきものなのでしょうか? つまり単項か2項かというのは前後のトークンがわからなければ決定できないと思うのですが そういう所まで見るのが普通なのでしょうか? (前のトークンはともかく、後のトークンまで判別に使うとするとかなり難しい事になりますよね) 一般論という感じでいいのですが、ご教授ください。 よろしくお願いします。
789 名前:デフォルトの名無しさん mailto:sage [03/07/23 22:55] >>788 > 字句解析って「字面からわかる範囲で」文字列をトークンに切り出していく作業だと思っていたのですが それであってる。 > 前後のトークンの状態などまで見るべきものなのでしょうか? そうする処理系もある。 ただそれは、純粋に字句解析だけでなく、一部構文解析も含んだ処理ということになる。 > つまり単項か2項かというのは前後のトークンがわからなければ決定できないと思うのですが > そういう所まで見るのが普通なのでしょうか? これも処理系によりけりで、>>785 のどれになるかはいろいろ。 字句解析と構文解析の境界は、厳密に分かれているとは限らない。 今みたいに曖昧な場合や、いっそ「字句+構文解析」をしてしまうこともある。 逆に、あらかじめ曖昧さが生じないように言語を設計する場合もある。 ・・・あんまり役に立ってないな、俺。 まぁ、生きた例を知りたいなら、解析器や言語処理系のソースを読むのが一番。
790 名前:785 mailto:sage [03/07/23 23:43] >>789 レスありがとうございます。 なるほど、厳密にパートを仕切る必要はないんですね。 >・・・あんまり役に立ってないな、俺。 そんな事ないです。日曜プログラムなので、周りに聞く人もいなくて 参考書籍とか雑誌とかもいくつか引っ張り出してきたりしてみたんですが、 疑問が出てきちゃったら正解かどうか確認する手段がないので、 こういう風に「それで間違いない」とか「それはこういう意味だよ」って答えてくれるだけで とても助かります。ありがとうございました。
791 名前:ろうひ男爵 mailto:sage [03/07/24 07:53] >>785 ラベルが AAA: の場合にも、字句解析で1文字先読みして":"まで確認するものが多いですしね。 じぶんも、2)の中途半端な物にしておきます。
792 名前:デフォルトの名無しさん mailto:sage [03/07/24 08:02] C++パーサーとかjavaパーサー用の .l .yファイルってどこかで公開されてませんか?
793 名前:デフォルトの名無しさん [03/07/24 15:44] >>785 C言語のパーサーの話なら、おたずねの * に関して字句解析が気にかける必要 はありません。それらの区別は構文解析の責任です。字句解析では'*' という トークンを返せばそれで良いのです。 では字句解析はつねに文脈を気にしないで良いのかというとそうでもありません。 たとえばC のtypedef名は TYPEDEF_NAME というトークンを返さないと正しく 構文解析ができませんので、字句解析はidentifierを見たときに記号表を見て、 それがtypedef名として登録されているかどうかを調べなくてはいけません。 typedef名であれば TYPEDEF_NAME を、そうでなければ IDENTIFIER を返す のです。 # 実はCの構文解析ではこの後さらに、TYPEDEF_NAMEを通常のidentifierとし # て解釈するという処理もしなければならないのですが、初心者が混乱すると # いけないのでこのへんでやめときます。
794 名前:デフォルトの名無しさん mailto:sage [03/07/25 02:53] なぜおまえらLISPを使わんのだ
795 名前:デフォルトの名無しさん mailto:sage [03/07/25 03:04] Lispを使うスレでないから
796 名前:デフォルトの名無しさん mailto:sage [03/07/25 06:35] Lispはクソだから
797 名前:デフォルトの名無しさん mailto:sage [03/07/25 13:57] 括弧悪いから。
798 名前:デフォルトの名無しさん mailto:sage [03/07/25 19:32] 括弧(・∀・)イイ!
799 名前:ろうひ男爵 mailto:sage [03/07/25 21:14] >>797 ワタラ。
800 名前:デフォルトの名無しさん mailto:sage [03/07/26 02:50] >>799 激しく同意
801 名前:デフォルトの名無しさん mailto:sage [03/07/26 18:27] おまえらLISPは柔軟だからコンパイラやアセンブラとかを LISP自身で書けるんだぞ。そもそも記号処理は得意分野だからな。 CやJavaで組むより簡単だろう。 実装側の言語に頼る量も最小で済むんだぞ。 なぜ使わんのだ。
802 名前:デフォルトの名無しさん mailto:sage [03/07/26 18:28] >>797 括弧悪い?アホか。 括弧の量なんて些細な事でしかない。
803 名前:デフォルトの名無しさん mailto:sage [03/07/27 08:34] >>802 通じて無いよこの人
804 名前:デフォルトの名無しさん mailto:sage [03/07/27 14:24] Lisp厨うぜぇ。 括弧読みにくいんだよ。 いつまでもマイナー言語でオナニーしてろよ、ボケ!
805 名前:デフォルトの名無しさん mailto:sage [03/07/27 15:47] Lisp厨以上に厨さを醸し出す>804 コイツ、ウザッ
806 名前:デフォルトの名無しさん mailto:sage [03/07/28 07:32] >>801 Lispじゃなくても、コンパイラやアセンブラはその言語自身でかけるが・・・
807 名前:デフォルトの名無しさん mailto:sage [03/07/28 07:32] ああ、すまん。より簡単だといいたいわけね。 本当にそうなの?
808 名前:デフォルトの名無しさん [03/07/28 09:27] 字句解析についての質問なんですが、 自前でトークンを切り出すコード (もし先頭がアルファベットならwhileで延々読み込みみたいな)の実行速度と lexで吐き出すコードの実行速度ではどちらが早いんでしょうか?
809 名前:デフォルトの名無しさん mailto:sage [03/07/28 13:51] 実装次第
810 名前:棄教者 ◆egKIKYO7cg mailto:sage [03/07/28 14:50] >>808 オートマ車とマニュアル車とどっちが燃費いいかという命題に似ている。
811 名前:デフォルトの名無しさん mailto:sage [03/07/28 18:24] >>808 のような質問をする人間にはマトモな実装が出来るわけが無い、と仮定すると lex の吐き出すコードのがマシと思われ。
812 名前:デフォルトの名無しさん mailto:sage [03/07/28 18:51] >>811 の誤りは、自明なことをあらためて仮定したこと。
813 名前:名無し@沢村 [03/07/28 20:47] おまいらよ、コンパイラやスクリプトエンジンよりも、TVウェアをつくってみないか? pc2.2ch.net/test/read.cgi/tech/1059262203/l50
814 名前:808 [03/07/28 21:53] 実装次第ですが・・・ありがとうございました。 初めてlexのコード見たんですが 移植する時間も自信も・・・なので諦めました・・・ メモリも全然使えない環境ですし・・・
815 名前:デフォルトの名無しさん [03/07/29 19:20] >>814 綴りの認識程度ならlex(というかDFA)は大袈裟な気がする。 僕だったら、連続するアルファベットと数字を連結して単語にし、事前に作っ ておいたハッシュ表を索いておしまいにします。 ハッシュ表は、完全ハッシュ関数を作成するツール(GNU gperf)を使えば、 かなり小さくできるし。
816 名前:デフォルトの名無しさん mailto:sage [03/07/29 23:49] >>808 最初で、しかも簡単な物でしたら、手で作ってみるのもいいのではないでしょうか。 それからlexを覚えた方が理解が深まりますし。
817 名前:デフォルトの名無しさん mailto:sage [03/07/30 00:31] 手作りするより、早めにlexの使い方を覚えた方が 後々楽な気がするけど。 まあ、時間に余裕があるなら。
818 名前:デフォルトの名無しさん mailto:sage [03/07/30 12:19] 801 ではないが,Lisp の場合 字句解析 -> 不要 構文解析 -> すでに終わってる なので激しく楽なのは間違いない.本の章一つで Lisp のサブセットやそのコンパイラの作成法が載るくらい.
819 名前:デフォルトの名無しさん mailto:sage [03/07/30 23:08] LISP Scheme Pert8テンプレより Lisp 言語処理系: CAMPUS LIsP, Lemon version ttp://aten.aial.hiroshima-u.ac.jp/~kakugawa/clisp/index-ja.shtml Cコードによるわずか1000行の実装 ちなみにLispのマクロは字句解析と構文解析の間に作用するので、 別の言語のインタプリタをLisp上に作ることができる。 Paul GrahamのOn Lispという本(Web公開中)ではCommon Lisp上の Prologインタプリタが解説されているし、 Richard Fateman教授のサイトには(おおっぴらには載せてないが) Common Lisp上のMathematicaサブセットのインタプリタのソースが置いてある。 いずれもマクロを活用している。 おまけ bison, flexマニュアル和訳 ftp://ftp.ascii.co.jp/pub/GNU/
820 名前:デフォルトの名無しさん mailto:sage [03/07/31 12:43] lisp厨は逝けよ。 lispのマクロで満足できるならこのスレには来るわけないんだからさ。
821 名前:デフォルトの名無しさん mailto:sage [03/07/31 18:04] >>820 このスレで無駄に時間浪費した挙句、互換性のクソもない コンパイラ・インタプリタなんぞ作って、いったい誰が使うのかな。
822 名前:デフォルトの名無しさん mailto:sage [03/07/31 19:01] >>821 スレの存在そのものに疑義があるんなら立ち入ってくるなっつの。
823 名前:デフォルトの名無しさん mailto:sage [03/08/01 02:36] >lispのマクロで満足できるならこのスレには来るわけないんだからさ。 lispのマクロを極めた人しかこんなことは言えないと思うのですが。
824 名前:デフォルトの名無しさん mailto:sage [03/08/01 03:05] >>823 馬鹿だろ? lispでマクロを極めようがどうしようが、んなことはフルスクラッチで スクリプトエンジンを組みたい奴の欲求には答えられないっていってるの。 プロトタイプだけ作って満足するならともかく。 こういう場を読めないLispスノッブが大杉。
825 名前:デフォルトの名無しさん mailto:sage [03/08/01 03:46] >>824 お前こそ馬鹿だろ? lispのマクロがプロトタイプだけしか作れなくて フルスクラッチの方がえらいみたいに考えてるところが。
826 名前:デフォルトの名無しさん mailto:sage [03/08/01 05:23] 824じゃないが >> フルスクラッチの方がえらいみたいに考えてるところが。 > スクリプトエンジンを組みたい奴の欲求には答えられないっていってるの。 Lispでどんあ言語でも作ることができる何て言ってるヤシは、 Lispしかやったこと無いヤシ。
827 名前:デフォルトの名無しさん mailto:sage [03/08/01 05:46] どんな言語でも大抵の言語は作れるよ
828 名前: mailto:sage [03/08/01 07:34] flexで最後にマッチした文字列が入るyytextには'\0'は付加されるの? guppy.eng.kagawa-u.ac.jp/~kagawa/1999/SysProg/both.html では付加されないから注意が必要と書いてるけど www.geocities.co.jp/SiliconValley-Oakland/3432/man/flex/flex-ja_4.html#SEC35 とかのサンプルみてるといきなりstrcpy(yylval.name,yytext)見たいな感じのコードがあるんだけど。 strcpyはソース側がNULL文字終端じゃないといけないよね。 それとも自分が何か勘違いしてるのかな?教えてください。
829 名前:デフォルトの名無しさん mailto:sage [03/08/01 11:39] >>827 そりゃアセンブラでも作ることはできるだろう。 ようはどれだけ簡単に作ることができるかだ
830 名前:デフォルトの名無しさん mailto:sage [03/08/01 12:21] >>828 というかこれにぶっ飛んだよ。 %union{ char name[128]; }
831 名前:デフォルトの名無しさん mailto:sage [03/08/01 13:29] >>826 Lispスノッブ大杉って,漏れには数人しか見えないが…. コンパイラやスクリプトエンジン書くのに言語やツールなんか関係ねーだろう. フルスクラッチがいいなら Lex も Yacc も使わずに全部手でかけばいいじゃん.
832 名前:デフォルトの名無しさん mailto:sage [03/08/01 14:00] 最近Schemeを勉強し始めたんだが、現時点での感想。 利点 - GCがあるので、メモリ管理が楽 - リストや木などを処理し易い - S式を入出力する手続きが用意されている 途中結果の出力や、個々の手続きの動作検証がし易い - シンボル シンボルを使うとシンボルテーブルを新たに作らなくてもよいかもしれない。 欠点 - lexやyaccのようなデファクトスタンダードなツールがない guile絡みでLanguage Implementation Toolなるものがあるらしいが、 どういう位置づけのものなのかは知らない。 - 動作が遅い ネイティブコードを吐くコンパイラもあり、速いらしい。 それでも、チューニングをし出すとCとかで組んだ方が速くなると思う。 - マクロ Schemeは処理系によってマクロの書き方が違う。 - 資料が少ない 検索しても見つかるのは、Schemeの処理系を作る話ばかり。 On Lispに載っていたPrologインタプリタは、Prologの機能を マクロとかを使って実現するという話ぽかった。 もしかしたら前の方の章にProlog→S式変換の話があったりするとか?
833 名前:832 mailto:sage [03/08/01 14:07] まだ、Schemeではプログラムをあまり書いていないので、 先入観も含んじゃっています。
834 名前:828 mailto:sage [03/08/01 14:14] >>830 すいません、まだ勉強始めたばっかりでなんでぶっ飛んだのかわかりません。 あとflexは自動的にヌル終端文字列にしてくれるんですか?
835 名前:デフォルトの名無しさん mailto:sage [03/08/01 14:21] >>821 > 互換性のクソもないコンパイラ・インタプリタなんぞ作って、いったい誰が使うのかな。 このスレで書いてはならない事を書いたね。
836 名前:デフォルトの名無しさん mailto:sage [03/08/01 18:47] ごめん
837 名前:デフォルトの名無しさん mailto:sage [03/08/01 18:55] >>836 素直だ。
838 名前:デフォルトの名無しさん mailto:sage [03/08/01 19:00] >>834 %unionってスタックの要素になるんだが、それを128byteとる豪儀(藁)さに。 終端はしないはず。
839 名前: mailto:sage [03/08/01 21:03] >>838 おお、どうもありがとう。
840 名前:デフォルトの名無しさん mailto:sage [03/08/01 21:31] すまん、されてるっぽいよ。
841 名前:デフォルトの名無しさん mailto:sage [03/08/01 23:52] >>832 なんで Lisp 厨を刺激しそうなことを書くかね・・・。 とりあえず、フォローしておこう。ちょっと検索したけど Scheme 用の LALR パーサジェネレータとかある。資料も英語なら本が何冊もオンライン で読めるみたいだし。
842 名前:デフォルトの名無しさん mailto:sage [03/08/01 23:52] >>832 なんで Lisp 厨を刺激しそうなことを書くかね・・・。 とりあえず、フォローしておこう。ちょっと検索したけど Scheme 用の LALR パーサジェネレータとかある。資料も英語なら本が何冊もオンライン で読めるみたいだし。
843 名前:841 mailto:sage [03/08/01 23:54] うげ、なぜか二重カキコに。吊ってきます。
844 名前:山崎 渉 mailto:(^^)sage [03/08/02 02:12] (^^)
845 名前:デフォルトの名無しさん [03/08/02 04:03] 逆アセンブラはスレ違いですか?
846 名前:デフォルトの名無しさん mailto:sage [03/08/07 22:30] 何でもいいからネタキボンヌ
847 名前:デフォルトの名無しさん mailto:sage [03/08/11 19:10] 七度文庫
848 名前:デフォルトの名無しさん [03/08/12 13:41] ゲームキャラのAIをスクリプトで書けるようにしようと思っています。 JavaScriptを使おうとおもうのですが、組み込んで使えるものなのでしょうか? VC6使っています。
849 名前:デフォルトの名無しさん mailto:sage [03/08/12 14:18] >>848 ちょっと探したら、こんなのみつけたけど。 MozillaのJavaScriptのページ jt.mozilla.gr.jp/js/
850 名前:デフォルトの名無しさん [03/08/12 17:20] 組み込み用途なら、JavaScriptとPerl、どっちがいいですか?
851 名前:デフォルトの名無しさん mailto:sage [03/08/12 20:28] どっちもデカ過ぎるような…。コンパクトな自作言語のがよくないか? まぁ、Python なんかは組み込まれてるの見かけるから漏れの感覚が古い のやもしれず。
852 名前:850 [03/08/12 20:42] Luaが小さくてよさげなのですが、明らかにJavaScriptやPerlと劣っている点はありますか? 小さいことは気にしないのですが、いざ使ってて大きな落とし穴に落ちたら人生いやけがさして多分漏れ自殺します。
853 名前:デフォルトの名無しさん mailto:sage [03/08/12 21:05] が ・ ん ・ ば
854 名前:デフォルトの名無しさん mailto:sage [03/08/12 21:53] LISPがいい
855 名前:デフォルトの名無しさん mailto:sage [03/08/13 04:00] >>852 Luaは最初から組み込むことを前提に考えて作ったっぽいからいいかも。 ただ小さい代わりに言語仕様もライブラリも他と比べて貧弱なので。
856 名前:850 [03/08/13 11:23] たしかに用意されているライブラリは少ない感じがします。 ただ、組み込み用途で使うのであれば、幾つかの型が扱えて ifやwhileなどの制御構文が使えればOKかなぁ。。。 スクリプト側ではフロー制御みたいなことしかやらず、どうせ アプリ側のAPI呼び出しに徹する形になるだろうから。
857 名前:デフォルトの名無しさん mailto:age [03/08/14 17:20] JavaCC使っている人いる? 久しぶりにJavaCCを使おうと思ったら、antからビルド出来なくなっていた。 もちろん、コマンドラインからはjavaccもjjtreeも普通に使えている。 COM.sun.labs.javacc.Mainという存在しないクラスを探すのが原因らしく、 そこを"org.javacc.parser.Mainに書き換えただけで動いた。 sfに移動してから結構経っているのに、誰も気付かなかったのかな。
858 名前:山崎 渉 mailto:(^^) [03/08/15 15:24] (⌒V⌒) │ ^ ^ │<これからも僕を応援して下さいね(^^)。 ⊂| |つ (_)(_) 山崎パン
859 名前:デフォルトの名無しさん [03/08/16 18:29] ほしゅっ
860 名前:デフォルトの名無しさん [03/08/19 21:52] >>764 最近アルバイト先で使ったLSI設計ツール、Tclが組み込まれていた。 もちろん商用アプリなんだけど、Tclって商用利用に使ってもいいんですね。 いや、単に不勉強で、ちまたのスクリプトの何が商用利用(商品に組み込んだ うえで販売)でき、何はだめなのか、よく知らなかったので、たまたまTclを 見つけて「へぇ、こういうふうに商品にもつかっているんだ」と、感心したという だけの話なんですが。
861 名前:デフォルトの名無しさん mailto:ege [03/08/19 23:46] おまえらの中で、boost::spiritを使ってる人いませんか? どんな感じのものなのですか?
862 名前:デフォルトの名無しさん mailto:sage [03/08/20 05:43] ガーベッジコレクションの話題はこのスレでいいのかな?
863 名前:デフォルトの名無しさん mailto:sage [03/08/20 06:19] ↑無関係ではないが、うーん、ちと違う気がするな。
864 名前:デフォルトの名無しさん mailto:sage [03/08/20 06:58] >>862 LISP Schemeスレなら受け入れてくれると思うよ。 自作派が多いから。
865 名前:デフォルトの名無しさん mailto:sage [03/08/21 13:44] >>861 下のサイト見るか、boost スレ行って訊けば? ttp://www.fides.dti.ne.jp/~oka-t/cpplab-boost-spirit.html