1 名前:デフォルトの名無しさん [03/11/29 15:59] yaccやlexの使い方やら言語仕様やらの話題。 前スレ 1 pc.2ch.net/tech/kako/981/981672957.html 2 pc2.2ch.net/test/read.cgi/tech/1021136715/ (dat落ち) 関連リンクは多分 >>2-8 あたり
205 名前:デフォルトの名無しさん mailto:sage [04/01/02 13:02] >>203 そういえば思い当たる用語がいくつかある。 素数に1を含めている場合があって、教授の中の人に 「素数の定義のなかに『1以外の』ってあるんですけど」 って聞いたら 「小中高ではそのように教えているようだが学会によって違うし、 必要なら論文の冒頭で定義する。」って言ってた。 それと、以前知り合いに聞いたんだが、 そいつの学科では「逆ポーランド記法」 を「ポーランド記法」って呼んでて、 どうしても明確に区別する必要があるときだけ 前置・後置で分けてるんだそうな。 と、言うわけで構文解析に関する学会もいろいろあるだろうし それぞれで違う定義だったり定義されてなかったりするの かも知れない。
206 名前:デフォルトの名無しさん [04/01/02 15:56] >>205 それは案外あるね。 ここのコンパイラ&スクリプトだけでなく、全ての千問分野で そういった傾向があるみたい。 なので、書籍とかでは著者がどういう定義でその用語を使っているかを 把握したうえで理解しないと混乱する時がたまにある。
207 名前:デフォルトの名無しさん mailto:sage [04/01/02 16:23] 言い訳にだまされてるだけ
208 名前:デフォルトの名無しさん [04/01/02 16:54] アフォか素人
209 名前:203 mailto:sage [04/01/02 20:39] >>204 yaccの生成するパーサを「再帰上昇型」と呼んでいる教科書や文献があったら 教えて欲しいのだが。 僕は見たことがない。googleで検索しても見つからない。
210 名前:デフォルトの名無しさん [04/01/02 20:46] しるか!
211 名前:デフォルトの名無しさん mailto:sage [04/01/02 21:52] 海外掲示板用オフラインリーダーを作るスレ pc2.2ch.net/test/read.cgi/tech/1072883528/ 海外でよく使われていうる掲示板スクリプト 専用のオフラインリーダー作って下さい。 必要な条件はID、PASSを管理できること、 OpenJaneみたいな三面型の見た目。 簡単にローカライズできるように言語ファイルを採用
212 名前:デフォルトの名無しさん [04/01/02 23:55] アフォ
213 名前:デフォルトの名無しさん [04/01/03 00:16] VBSの解析ソースください。
214 名前:デフォルトの名無しさん [04/01/03 01:37] すいません、ちょっとお尋ねしたいんですが、 UNIX Programing Environment に出てくる「電卓hoc(最終形態)」が 行っている処理アプローチは、今のスクリプト言語にも十分通用するも のでしょうか? それとも、今となっては時代遅れのものでしょうか? ここにおられる皆さんは、どう感じられますか?
215 名前:デフォルトの名無しさん mailto:sage [04/01/03 01:52] ttp://www.cs.bell-labs.com/cm/cs/upe/index.html ここにあるやつ?
216 名前:デフォルトの名無しさん mailto:sage [04/01/03 05:15] >>214 時代遅れだと考えるくらい知識や経験があるならやらなくていい。 そうじゃなければ、やっても無駄にはならない。
217 名前:214 [04/01/03 10:58] >>215 そうです。(こんなページも有ったんですね。知りませんでした。)
218 名前:デフォルトの名無しさん mailto:sage [04/01/03 23:03] ttp://www.okisoft.co.jp/esc/go.html ttp://www.okisoft.co.jp/esc/go2.html ttp://www.okisoft.co.jp/esc/go3.html ttp://www.okisoft.co.jp/esc/go4.html 『やさしい Lisp の作り方』と『やさしい Java インタプリタ の作り方』見つけた。 Java と C# で実装。
219 名前:デフォルトの名無しさん mailto:sage [04/01/04 08:39] >>218 GOD
220 名前:デフォルトの名無しさん mailto:sage [04/01/04 14:04] www.google.co.jp/search?q= タグビット www.google.co.jp/search?q= タグ付きポインタ www.google.co.jp/search?q=%22tagged+pointer%22
221 名前:デフォルトの名無しさん [04/01/04 16:56] スクリプト言語を設計・実装する場合の一番の難しさって何でしょうね?
222 名前:デフォルトの名無しさん mailto:sage [04/01/04 17:09] >>221 妥協すること。 汎用的だが回りくどい書き方と、特定用途専門で簡単な書き方。 実行時の速度効率と、柔軟性。 メモリ使用効率とスピード。 いろいろいろいろ相反する要素が出てくるので、目標を明確にしておかないと あれもこれも盛り込んだ挙句に、中途半端で使いにくいスクリプトになりがち。
223 名前:デフォルトの名無しさん mailto:sage [04/01/04 23:29] >>222 思いもよらない視点にビクリ! あんた、プロ?
224 名前:デフォルトの名無しさん mailto:sage [04/01/06 18:37] >218 LISP処理系作るのは簡単だけど、 Schemeの末尾再帰や継続呼び出しを載せようとすると、 とたんに難しくなるよね。 末尾再帰だけならまだ楽か。
225 名前:デフォルトの名無しさん mailto:sage [04/01/06 18:52] 末尾再起も継続も簡単 大変なのはクロージャや継続の実装に必要な 環境の複製の効率化。
226 名前:デフォルトの名無しさん [04/01/06 19:01] まぁ、LISPと言ってる時点で(ry
227 名前:デフォルトの名無しさん mailto:sage [04/01/06 21:27] >大変なのはクロージャや継続の実装に必要な >環境の複製の効率化。 これって Scheme に限らない問題だと思うんだけど(lexical closure を持っている 言語は沢山あるよね)、これに関して日本語のまとまったドキュメントってあまり 無いね(知らないだけ?)。 知ってるのはこことか。 ttp://www.shiro.dreamhost.com/scheme/gauche/memo-stack-j.html
228 名前:デフォルトの名無しさん [04/01/06 22:09] LISPで有効に実用化されているプロジェクトってあるのw
229 名前:デフォルトの名無しさん mailto:sage [04/01/06 22:12] アーロン
230 名前:デフォルトの名無しさん mailto:sage [04/01/06 22:21] >>228 Lisp そのものじゃないが、Lisp に極めて近い文法のファイルでデータを保存する CAD ソフトは見た事あるな。確かに、書くの楽そうだ。
231 名前:デフォルトの名無しさん mailto:sage [04/01/06 22:27] 何かちょっと調べてみると、Pure な OO って意味があるのか疑問に感じてきた。 Java みたいにプリミティブを用意した方が効率良さそう。Hybrid 言語マンセー!
232 名前:デフォルトの名無しさん [04/01/07 20:27] アホーン
233 名前:デフォルトの名無しさん mailto:sage [04/01/08 09:13] なるほど、これが冬か。
234 名前:デフォルトの名無しさん mailto:sage [04/01/11 15:46] merd.net/pixel/language-study/syntax-across-languages/ rwiki.jin.gr.jp/cgi-bin/rw-cgi.rb?cmd=view;name=%a5%b9%a5%af%a5%ea%a5%d7 %a5%c8%b8%c0%b8%ec%a4%ce%c8%e6%b3%d3 色んな言語の構文の比較。 考えやすく、書きやすく、なおかつ読みやすいシンタックスって何だろう。 Haskell はちょっと良い感じ。
235 名前:デフォルトの名無しさん [04/01/11 18:36] Windows上で使えるlexを教えてください。 よろしく
236 名前:デフォルトの名無しさん mailto:sage [04/01/11 18:39] 少しは調べる努力をしろ。 以上
237 名前:235 [04/01/11 18:42] >>236 調べたけど見つからなかった。 よろしく、
238 名前:デフォルトの名無しさん mailto:sage [04/01/11 18:44] flex.
239 名前:235 [04/01/11 18:46] >>238 ありがとう お礼にパトレイバーのプロトタイプをのせとく www.enryu.jp/
240 名前:デフォルトの名無しさん mailto:sage [04/01/11 21:43] 夢のプログラミング言語@いちごびびえす www.ichigobbs.net/cgi/readres.cgi?bo=proglam&vi=0071&rm=50
241 名前:デフォルトの名無しさん mailto:sage [04/01/11 22:53] >>240 プログラミング言語は満載した機能を特色の第一とするものではない。 あとになって機能の追加が必要と判明するような弱点と制限を取り除いて設計すべきである。
242 名前:デフォルトの名無しさん mailto:sage [04/01/12 00:19] >proglam 頭の程度が知れたな
243 名前:デフォルトの名無しさん [04/01/12 02:01] 上の方にあった(↑)「UNIXプログラミング環境」に掲載されていた関数 電卓hocですが。 ちょっとしたフロー制御や、ユーザー関数定義等ができることを考えると、 ほぼ、スクリプト言語のコアが出来上がっているとも考えられますが、い かがでしょうか?
244 名前:デフォルトの名無しさん mailto:sage [04/01/12 02:28] >>241 激しく同意。どうもC++系に知識が偏ってるぞ>>240 のリンク先の>>1 は。 とりあえず本当にSchemeぐらい齧って欲しいな。
245 名前:デフォルトの名無しさん mailto:sage [04/01/12 03:10] >>244 lisp知りたてのおばかさんですか? 継続とかコードとデータの同一視とか、その辺の動的な事情が適合しない分野もあるだろうに。 lisp的な考え方は切り捨てるべきときがあることも勉強しときなさいな。
246 名前:デフォルトの名無しさん mailto:sage [04/01/12 03:20] >>245 は Lisp を叩くと偉いとでも思っているのかな? それとも継続って言ってみたかっただけか? 気持ちは分かるけど、スレの流れからしてそのレスは不自然。
247 名前:デフォルトの名無しさん mailto:sage [04/01/12 03:24] 元が夢・独り言板なんだから、 そこの>>1 にとっての「夢のプログラミング言語」でしょ、ほっといてやれ。 まあ、C#++くらいの雰囲気になっているのは確かだけど。
248 名前:デフォルトの名無しさん mailto:sage [04/01/12 03:25] 継続って言ってみたかったってのはあるかもな。 ただlispといわずにあえてschemeというからには、継続しか要因がないだろうからな。 まあ、実るとは思ってないけど何かやろうとしている人を 頭ごなしに否定するレスってのはどうよって思うわけだ
249 名前:!244 mailto:sage [04/01/12 03:32] >>248 出典出さなくて申し訳ない。まずは下の「はじめに」を読んで欲しい。 そしたら何で >>244 が Scheme って書いたのかが分かると思う。 ttp://www.sci.toyama-u.ac.jp/~iwao/Scheme/r5rsj/html/r5rsj.html あと、何にせよコンパイラ作るのに Lisp は知っていた方が良いでしょ。
250 名前:デフォルトの名無しさん mailto:sage [04/01/12 03:37] 継続しか、ってことはないだろうに
251 名前:デフォルトの名無しさん mailto:sage [04/01/12 03:41] schemeにはあってcommon lispには無いものって細かいことを除けば 継続と末尾再起の展開の規定くらいなものだろ
252 名前:デフォルトの名無しさん mailto:sage [04/01/12 03:48] なんか増えてるな 調べるともっと増えるんだろうな
253 名前:デフォルトの名無しさん mailto:sage [04/01/12 04:00] 増えてるって末尾再起の展開か? こんなもん実装詳細に分類されるものであって、 言語仕様の議論でいちいち取り上げるほどのものでもないだろ。 gccですら実現できてることだしな。
254 名前:デフォルトの名無しさん mailto:sage [04/01/12 04:02] lispとschemeのコード読んで違いを認識してから出直して来い
255 名前:デフォルトの名無しさん mailto:sage [04/01/12 04:12] >>251 > schemeにはあってcommon lispには無いものって細かいことを除けば > 継続と末尾再起の展開の規定くらいなものだろ おいおい、>>244 たんの言いたいことが全然わかってないね。 言語設計の肝は機能の数ではなく、組み合わせによって いかにシンプルかつ豊かな表現力をつけるか、ってことなんだよ。
256 名前:デフォルトの名無しさん mailto:sage [04/01/12 04:14] >>251 一番大きいのは言語のポリシーの違い。
257 名前:デフォルトの名無しさん mailto:sage [04/01/12 06:24] cs1.cs.nyu.edu/leunga/www/MLRISC/Doc/html/index.html www.cminusminus.org/ MLRISC とか C-- とかって誰か使っているのかな。
258 名前:デフォルトの名無しさん mailto:sage [04/01/12 07:55] >>241 の出典も知らないで「同意」とかほざいてる >>244 が Scheme をま ともに知っているとは考えられない。
259 名前:デフォルトの名無しさん mailto:sage [04/01/12 08:49] そうは読めないけど。
260 名前:デフォルトの名無しさん mailto:sage [04/01/12 08:50] >>253 > 増えてるって末尾再起の展開か? > こんなもん実装詳細に分類されるものであって、 苦笑・・・
261 名前:デフォルトの名無しさん mailto:sage [04/01/12 08:52] >>258 > >>241 の出典も知らないで「同意」とかほざいてる >>244 が どうやって241の脳内を覗いたんだ?
262 名前:デフォルトの名無しさん mailto:??? [04/01/12 09:45] Javaベースのコンパイラコンパイラ SableCC www.sablecc.org/home/ CUP & JLEX or CUP & JFlex CUP www.cs.princeton.edu/~appel/modern/java/CUP/why.html JLEX www.cs.princeton.edu/~appel/modern/java/JLex/ JFlex www.jflex.de/ ANTLR www.antlr.org/ JavaCC以外にもいろいろあるんすね JavaCCはLL(k)だけど、上のはANTLR以外はLALR(1) でもANTLRはC++なんかにも対応。 どれがつかいやすいのか。 Sableちょとみたところよさげだなと。
263 名前:262 mailto:??? [04/01/12 09:49] しつれー 上のSableCC URLつながってにゃい。 こっちからいけやす。 www.sablecc.org/
264 名前:デフォルトの名無しさん mailto:sage [04/01/12 09:49] おまえら、おちけつ
265 名前:デフォルトの名無しさん mailto:sage [04/01/12 09:57] >>240 >もし取り込むとしたら表記法は >Pointer<PointeeType> >Reference<ReferredType> 禿しく胴衣! だれか>>240 言語実装してくれ俺には力不足だ。
266 名前:デフォルトの名無しさん mailto:sage [04/01/12 11:01] >>262 ¬<><∪∪ ttp://ne.cs.uec.ac.jp/~koto/notavacc/ LALR(1) も追加しておいて。
267 名前:244 mailto:sage [04/01/12 12:39] >>258 ん? 流れの読めん不思議な断定はよしてくれ。 >>241 の元ネタを知らずにどうやってSchemeを挙げられるっていうんだ。 偶然にしちゃできすぎだっつの。 ……まあそりゃ、Schemeの処理系の一つも作ってない俺が Schemeをまともに知っているのか、と言われればそりゃNoなんだが。
268 名前:王 [04/01/12 12:59] 今戻ったぞ。 今まで留守にしてすまなかったな。
269 名前:デフォルトの名無しさん mailto:sage [04/01/12 17:05] >>267 今から作ろうぜ! ヲチは俺に任せろ!
270 名前:デフォルトの名無しさん mailto:sage [04/01/13 00:19] >>268 真っ当な意見と見せかけ、実は詭弁で論点をはぐらかす輩が多々おります。 皆様も以下の「詭弁の特徴」を覚え、そういう輩を排除しましょう。。 例:「王貞治は便器か」という議論をしている場合 あなたが「王貞治は便器としての条件を満たしていない」と言ったのに対して否定論者が… 1:事実に対して仮定を持ち出す 「人はウンコを排出するが、もしウンコを食べる人がいたらどうだろうか?」 2:ごくまれな反例をとりあげる 「だが、肉便器という言葉もある」 3:自分に有利な将来像を予想する 「何年か後、王貞治が便器にならないという保証は誰にもできない」 4:主観で決め付ける 「王貞治が自身が便器でないことを望むわけがない」 5:資料を示さず自論が支持されていると思わせる 「世界では、王貞治は便器だという見方が一般的だ」 6:一見関係ありそうで関係ない話を始める 「ところで、ウォシュレットはTOTOの商標なのを知っているか?」 7:陰謀であると力説する 「それは、フジが悪いと認めると都合の良いアメリカが画策した陰謀だ」 8:知能障害を起こす 「何、王貞治ごときにマジになってやんの、バーカバーカ」 9:自分の見解を述べずに人格批判をする 「王貞治が便器じゃないなんて言う奴は、社会に出てない証拠。現実をみてみろよ」 10:ありえない解決策を図る 「王貞治が便器になれば良いって事でしょ」
271 名前:デフォルトの名無しさん [04/01/13 02:46] >>270 > 「それは、フジが悪いと認めると都合の良いアメリカが画策した陰謀だ」 フジって何だ? これが全然関係ない話を進める詭弁か?
272 名前:デフォルトの名無しさん mailto:sage [04/01/13 04:18] ttp://www.fujitv.co.jp/
273 名前:デフォルトの名無しさん [04/01/13 19:52] あたまでっかちな、実用的でないスレはここですか?
274 名前:デフォルトの名無しさん mailto:sage [04/01/13 22:40] もっとも実用的なのは機械語です。
275 名前:デフォルトの名無しさん [04/01/14 20:53] いつも思うんだけど、 ++x と x++ を実現するのって結構むつかしいですね。 前者は簡単だけど、後者はどうしてます?
276 名前:デフォルトの名無しさん mailto:sage [04/01/14 21:02] >>275 > x++ 「x」 の値と、「x++」の評価結果を分離すれば良いだけの話では?
277 名前:デフォルトの名無しさん mailto:sage [04/01/14 21:16] ・副作用前のxをレジスタ(式の値を格納する場所)に入れる。 ・xの変数を増加する。 これだけでは?
278 名前:デフォルトの名無しさん mailto:sage [04/01/15 00:10] >>275 効率考えないなら((x=x+1)-1)と変換してもいい。 実際、pccは内部でそう表現していたように思う。
279 名前:デフォルトの名無しさん mailto:sage [04/01/15 01:51] もしかして構文解析が難しく感じるの?
280 名前:デフォルトの名無しさん mailto:sage [04/01/15 09:10] 構文解析つってもunary→primary→suffix(postfix)の順にするだけでしょ? 前置++がunary 後置++がsuffix xがprimary
281 名前:デフォルトの名無しさん mailto:sage [04/01/16 23:14] レベル低い質問で申し訳ないけど 字句解析はなんとか解りました 問題は構文解析と意味解析 構文解析の構文解析表(動作表)でつまづいてます。 簡単に書いてるHPはないでしょうか?
282 名前:デフォルトの名無しさん mailto:sage [04/01/16 23:17] >>281 構文解析の手法はひとつじゃないからもっと詳しい状況を書かないと話にならない
283 名前:デフォルトの名無しさん mailto:sage [04/01/16 23:54] >>281 LLで手書きでやってるの?
284 名前:デフォルトの名無しさん [04/01/17 11:38] a++; の件はこうやればいいというアイデアは簡単だが 実装するのが案外難しいというのは本当だろう。 タイミングずらして再評価する必要があるからね。
285 名前:デフォルトの名無しさん mailto:sage [04/01/17 15:08] ↑はぁ?
286 名前:デフォルトの名無しさん mailto:sage [04/01/17 15:20] >>281 LLでFirstとFollowの作り方なら 「コンパイラの仕組み(朝倉書店)」が分かりやすいよ。
287 名前:デフォルトの名無しさん mailto:sage [04/01/17 16:22] 286で紹介されてる本のカスタマーレビューを見たのですが コンパイラってオブジェクト指向言語で書いちゃだめなの?
288 名前:デフォルトの名無しさん mailto:sage [04/01/17 16:26] >>287 全く問題ない.
289 名前:デフォルトの名無しさん mailto:sage [04/01/18 19:57] 一番実装が簡単(というか軽い/小さい)言語って何だろう?
290 名前:デフォルトの名無しさん mailto:sage [04/01/18 20:05] forthかlispか
291 名前:デフォルトの名無しさん mailto:sage [04/01/18 20:13] lisp よりは Scheme でしょう。 どこかでグラフが会ったと思う。ステップ数を調べたもの。 いまなら Lua も結構いい戦をいっていると思う。
292 名前:デフォルトの名無しさん mailto:sage [04/01/18 20:14] >>291 シンプルなlispは1kステップも消費しないよ Lisp=Common Lispってわけじゃない
293 名前:デフォルトの名無しさん mailto:sage [04/01/18 20:27] lispはいっぱいあるみたいだしforthをちょっと調べてみようかな
294 名前:デフォルトの名無しさん mailto:sage [04/01/18 20:35] 7行スレにBASICとLISPを見た気がする。 実際7行に収まったのはBASICだったかと。
295 名前:デフォルトの名無しさん mailto:sage [04/01/18 20:42] あれはパターンマッチしてるだけで 処理系の実装とはいえない気がしなくもない
296 名前:デフォルトの名無しさん mailto:sage [04/01/18 20:50] prologはどうよ
297 名前:デフォルトの名無しさん mailto:sage [04/01/18 21:13] どこかで何かのインタプリタかなんかが、80文字×3行くらいで書いてるのがあるとか、見た覚えがあった。。。
298 名前:デフォルトの名無しさん mailto:sage [04/01/18 21:57] Brainf*ck
299 名前:デフォルトの名無しさん mailto:sage [04/01/18 22:14] ググったら、Brainf*ck .NETがでてきた・・・
300 名前:デフォルトの名無しさん mailto:sage [04/01/18 23:16] 図書館から www.amazon.co.jp/exec/obidos/ASIN/4785620501/qid=1074435361/sr=1-7/ref=sr_1_10_7/249-4431792-9641118 借りてきた 意味わkらnしn
301 名前:デフォルトの名無しさん mailto:sage [04/01/19 00:00] いや 真面目に読めばわからんこともないな
302 名前:デフォルトの名無しさん mailto:sage [04/01/19 02:00] D・F・A ! D・F・A !
303 名前:デフォルトの名無しさん mailto:sage [04/01/19 03:58] 特に意味はないけど、Forth == Stack, List == Lisp みたいな、データ型と言語の 対応ってどこまで言えるかな。 Stack/LIFO: Forth Linked List: Lisp Structure/Record: OOP 後は適当 :P Hash/Assoc: AWK Stream/Queue/FIFO: Lazy Langs Enum: ?
304 名前:デフォルトの名無しさん mailto:sage [04/01/19 06:17] lispってリストっていうより二分木じゃないか?
305 名前:デフォルトの名無しさん mailto:sage [04/01/19 07:25] >>289 自分が参考にしている処理系はこんな感じ。全然読めてないけど。 LittleSmalltalk. Smalltalk のサブセット。 ftp://ftp.cs.orst.edu/pub/budd/little/index.html minischeme. こっちは Scheme. tinyscheme.sourceforge.net/minischeme.tar.gz SECDR-Scheme. これも Scheme ttp://lily.fan.gr.jp/~kmd/adhoc/view.rhtml?n=SECDR-Scheme_woyomu
306 名前:デフォルトの名無しさん mailto:sage [04/01/19 14:11] 二分木ならconsセルはcarとcdr以外にもういっこ入れ物がないとな。
307 名前:デフォルトの名無しさん mailto:sage [04/01/19 14:32] >>306 なんで? node=cons, leaf=atomの二分木でいいじゃん。
308 名前:デフォルトの名無しさん mailto:sage [04/01/19 16:36] 二分木の右か左かはどうやって決めるので?
309 名前:デフォルトの名無しさん mailto:sage [04/01/19 17:02] >>308 決める必要あるの? node1かnode2かが判れば充分で、node1が右か左かなんてどうでもいいじゃん。
310 名前:デフォルトの名無しさん mailto:sage [04/01/19 18:51] は? ですからそれはどうやったら判るのかとおたずねしているのですが。 二分木なんでしょう? 二分木のようなかたちをした役立たずな何かではないんでしょう?
311 名前:デフォルトの名無しさん mailto:sage [04/01/19 19:21] >>310 親切な奴だな。 右か左かどうでもいいなどと言う>>309 が二分木をわかってないのは明らかなのだし、 わざわざヒントやらなくともよかろうに。
312 名前:デフォルトの名無しさん mailto:sage [04/01/19 23:36] つーかおまいら何話してるんだ? >>310 node1かnode2もしくは右か左かはそのままcar、cdrじゃねえか
313 名前:デフォルトの名無しさん mailto:sage [04/01/20 01:32] >>312 二分木と名乗るためには、datumがnodeの右にあるのか 左にあるのかを判定するための何かが必要だということだ。
314 名前:デフォルトの名無しさん mailto:sage [04/01/20 01:42] [cdr?]<-[car]->[cdr?] こういうことかな?
315 名前:デフォルトの名無しさん mailto:sage [04/01/20 01:42] LとかRとか名前がついてないとダメっていうような どうでもいい話のことか?
316 名前:デフォルトの名無しさん mailto:sage [04/01/20 01:45] >>313 それは二分検索木とかそう言った物では無くて? 二分木ってただノードを二つ持てる木のことを言うんじゃねーの? オスエテー。
317 名前:デフォルトの名無しさん mailto:sage [04/01/20 02:06] 検索に限らずnodeにはdatumを持たせる。 検索以外の例では逆ポーランド電卓の構文木とか意思決定木などが挙げられる。 そもそもnodeがdatumを持たなければ二分木構造を使う理由がない。 データ構造の持つ意味として、リーフを並べたリストと変わらないのだから。 >>316 > 二分木ってただノードを二つ持てる木のことを言うんじゃねーの? ツリーとしての見方やオペレーションがなければ木とは言わない。 また、特定の文脈なく二分木と言えば通常は>>316 が二分検索木と呼ぶそれを指す。
318 名前:316 mailto:sage [04/01/20 02:13] >>317 ( ・∀・)つ〃∩ ヘェ〜ヘェ〜ヘェ〜ヘェ〜ヘェ thx
319 名前:デフォルトの名無しさん mailto:sage [04/01/20 02:18] ところで、s式はなんてデータ構造になるの? linked listじゃないよね。
320 名前:デフォルトの名無しさん mailto:sage [04/01/20 02:19] >>316 もちろん、二分木は単に「根や節からの枝が2本以下である木構造」。 ちなみにLISPのリストは二分木だし、もっと言えば完全二分木。 これは「根や節からの枝が2本である木構造」。
321 名前:デフォルトの名無しさん mailto:sage [04/01/20 02:30] >>317 > そもそもnodeがdatumを持たなければ二分木構造を使う理由がない。 > データ構造の持つ意味として、リーフを並べたリストと変わらないのだから。 リーフを並べたリストで((1 . 2) 3 4)と(1 2 3 4)の区別をつけられるのか? どっちもリーフのリストは[1, 2, 3, 4, nil]だと思うが。
322 名前:デフォルトの名無しさん mailto:sage [04/01/20 02:39] >>321 ((1 . 2) 3 4) をツリーとして扱うのか? [(1 . 2) 3 4] として捉える場合がほとんどではないか? >>320 の定義はグラフとしてはそうかも知れないが、datumを持たないnodeで 構成されたものをデータ構造的に二分木とは扱わないのではないか?
323 名前:321 mailto:sage [04/01/20 03:04] >>322 > ((1 . 2) 3 4) をツリーとして扱うのか? > [(1 . 2) 3 4] として捉える場合がほとんどではないか? いや、nil終末がなければ別のデータになる。何のためのドットだ? > >>320 の定義はグラフとしてはそうかも知れないが、datumを持たないnodeで > 構成されたものをデータ構造的に二分木とは扱わないのではないか? じゃ、例えば意思決定木。君は意思決定木は二分木だと言ったね? 実は意思決定木は二分木ではない。一般にはn分木。 例えば、「Xの値が0の場合、1の場合、2以上の場合」と3分岐するノードもありだろ。 で、意思決定木のdatumは述語が入るというつもりだろうが、それは間違い。 (たぶん意思決定リストと混ざってないか?) 述語はむしろ枝のほうに定義されていると考えるのが自然。 つーか、普通はそう定義されている。 もちろん、述語が枝に入る以上、節にdatumは無し。 な、節にdatumが無くても木構造にする意味があるだろ? 節に述語が入るのはむしろ意思決定リストのほう。
324 名前:デフォルトの名無しさん mailto:sage [04/01/20 03:30] > > >>320 の定義はグラフとしてはそうかも知れないが、datumを持たないnodeで > > 構成されたものをデータ構造的に二分木とは扱わないのではないか? > > じゃ、例えば意思決定木。君は意思決定木は二分木だと言ったね? > > 実は意思決定木は二分木ではない。一般にはn分木。 > 例えば、「Xの値が0の場合、1の場合、2以上の場合」と3分岐するノードもありだろ。 同意。 先のポストは二分木に限定した文脈だったので、yes/no意思決定木の積もりだった。 この場で訂正させて頂く。 一般のn分木での場合に > 述語はむしろ枝のほうに定義されていると考えるのが自然。 > つーか、普通はそう定義されている。 なのは同意する。 ただし述語はルート以外の節にも入るので、 > な、節にdatumが無くても木構造にする意味があるだろ? は先の文脈においては同意しない。木構造一般については同意する。 二分木においてリーフにのみdatumがある有効な例を示して頂けると有難い。 前半については (1 . 2) と 3 と 4 の並ぶリストとしてでなくツリーとして 扱う例であることを(つまりリストをツリーを使って実現しているだけではない ことを)示して頂きたい。
325 名前:321 [04/01/20 03:52] >>324 > > 述語はむしろ枝のほうに定義されていると考えるのが自然。 > > つーか、普通はそう定義されている。 > なのは同意する。 > ただし述語はルート以外の節にも入るので、 ちょっと待って・・・枝ってのはarcのつもりで書いたのだがなあ。 述語が節ではなく各枝に定義されている以上、 > ただし述語はルート以外の節にも入るので、 の意味が全然わからない。節に入るのではなく、枝(arc)に入るんだから。 まあいいや、もっと簡単な例を出してみようか。二分決定木の特殊例。 ある固定長の入力ビット列X={x0, x1, x2, ..., xn}について、 根および各節において、Xから先頭要素を破壊的に取り出して、 そのビットを判定する操作をしたとする。 この二分決定木は、根と節がn段で、その先にTrue/Falseの枝がある。 これで全ての入力に対してTrue/Falseを返すことができる。 普通はここで二分決定木を簡約しにかかるわけだが、ここではそのまま使う。 さあ、この二分決定木、実はLISPのリストで構成することができる。 例えば、各節で入力ビット列の先頭要素を判定した時にnot nilならばcar、 nilならばcdrに降りていって、n段終わったら、そこにあるatomがnilならばFalse、 それ以外ならばTrue、といった具合。 ね、LISPのリストは木構造でしょ? ドットを使ってnil無しのcons作るのにも意味あるでしょ?
326 名前:321 mailto:sage [04/01/20 03:53] すまん、>>325 の修正。 > 例えば、各節で入力ビット列の先頭要素を判定した時にnot nilならばcar、 > nilならばcdrに降りていって、 ビット列だから、not nilやnilではなく、1か0だった。そう読み替えてくれ。
327 名前:デフォルトの名無しさん mailto:sage [04/01/20 18:57] >>325 よく理解できてないが、 その入力ビット列とやらは節のdataに相当するんじゃないの? LISPのリストが木構造ってのはわかるけど、 consでニ分木というのはどうか。 というか、簡単な例としていきなり特殊な例もってくるってのが・・・。 普通に考えてconsで2分木を作るとすると、セルを2つ使って car => data cadr => left cddr => right じゃない? 単に木として扱うならconsよりはvectorの方が使い勝手は良い気がするけど。
328 名前:デフォルトの名無しさん mailto:sage [04/01/20 19:48] >>325 > ちょっと待って・・・枝ってのはarcのつもりで書いたのだがなあ。 > 述語が節ではなく各枝に定義されている以上、 リーフ以外のツリー内部に述語が保持されているかどうかが問題じゃないの? 節の一部と見るか枝と呼ぶかはささいな見方の相違だと思うけど。
329 名前:デフォルトの名無しさん mailto:sage [04/01/20 21:35] えーと、このスレで発言している方で2Dフィールド型RPGの スクリプトエンジンを経験された方はいますか? 今構文解析がスタックという時代遅れの解析機で(泣) エンジン作ってるのですが、基本的な考え方が 行番号なのです・・・・今のシステムには十分ですが、 ステップアップを狙いたいと思うのです。 こちらで紹介されているのはコンパイラが多いですが、 デバッグの関係上インタプリタを希望します。 一応「インタプリタ進化論」なるものに目をつけてはいるのですが、 こちらの本はオススメなのでしょうか? 私程度のスキルならrubyソースコード徹底解剖も参考になると思っているので、 併せて購入するつもりです。
330 名前:321 mailto:sage [04/01/21 02:28] >>327 > その入力ビット列とやらは節のdataに相当するんじゃないの? 全然違います。 それぞれの節は子へのリンクしか持っていません。 詳しくは二分決定グラフを参照してください。
331 名前:デフォルトの名無しさん mailto:sage [04/01/21 09:45] >>329 失礼だけど、あなたの用途や文章から分かるスキルの場合、 もっと簡単な物を作った方がイイよ。 エンジンじゃ無くてコンパイラだよね? ここが優しいよ ttp://member.nifty.ne.jp/KENJI/scr0/
332 名前:デフォルトの名無しさん mailto:sage [04/01/21 09:51] ちなみにインタプリタ進化論は読みやすくていいけど、手に入らないよ。 2Dフィールド型のRPGってアクション? それと、大体のゲームが中間言語インタプリタ型のコンパイラなので問題ない。 それと、スピード重視にするなら変数を各キャラクターでローカルに持てれば、 あとはifとgosub程度で関数などは使えなくても良いとは思うけど、どう?
333 名前:デフォルトの名無しさん mailto:sage [04/01/21 10:29] >>331 あう、一応DOS時代のQBASIC程度のことはできてるんです・・・多分。 でも知ってると思ってて知らないなんてイヤなんで、 yaccとかbisonについて最初から勉強してみます。 >>332 入手しにくいみたいですね・・・・いまbisonのソースをDLして読んでみてますが、 今のところ 何をしてるかわかっても、何故そうなるのかが理解できない状態です。 本はいったん諦めて、自分で独学していこうと思います。 幸運なことにインターネットリソースもあるようで、先人たちに多謝。 >>2 Dフィールド型のRPGってアクション? はい。昔QCで作ったのをリファインするつもりなんです。 #やっぱり俺、かなりのヘタレだ・・・もっと勉強します。
334 名前:デフォルトの名無しさん mailto:sage [04/01/21 11:52] 俺スキル足りなくてここはROMしかできないんだけど、>>331 読んでいろいろ参考になったよ。感謝
335 名前:デフォルトの名無しさん [04/01/21 13:11] >>334 さて何か作ってみよう
336 名前:デフォルトの名無しさん mailto:sage [04/01/21 13:33] 作ってみた 字句解析 → 行頭の1文字でコンパイル内容を変える 構文解析 → 行頭に { と } を置いたとき、その間の行はコンパイル内容を変える
337 名前:デフォルトの名無しさん [04/01/21 18:27] 中田氏の「新コンピュータサイエンス講座 コンパイラ」って言うの買ってきた
338 名前:デフォルトの名無しさん mailto:sage [04/01/21 22:53] >>447 中田氏のものは内容が濃いから、わからないことがあったらぐぐるベシ
339 名前:デフォルトの名無しさん mailto:sage [04/01/22 00:26] 21st century compilers www.aw-bc.com/catalog/academic/product/0,4096,0321131436,00.html ついに8月1日まで延期みたいです。気長に待ちましょう
340 名前:デフォルトの名無しさん mailto:sage [04/01/22 00:27] >>338 なんか最初の読点までがエロい
341 名前:デフォルトの名無しさん mailto:sage [04/01/22 00:49] >>340 そう思ったのは俺だけじゃなかったか
342 名前:デフォルトの名無しさん mailto:sage [04/01/22 00:58] 実は俺も思ってた。
343 名前:デフォルトの名無しさん mailto:sage [04/01/22 01:35] 俺も思ってたが、最初に書いた>>340 が一番エロイ
344 名前:デフォルトの名無しさん mailto:sage [04/01/22 01:55] まったくだ
345 名前:337 mailto:sage [04/01/22 02:00] やっと37ページ。 中卒登校拒否マンの僕には激しく難しい。
346 名前:デフォルトの名無しさん mailto:sage [04/01/22 02:04] >>345 プログラミング以前に必要とするものがあるんじゃないのか
347 名前:337 mailto:sage [04/01/22 02:14] 大検と大学受験の勉強をしておりまっす
348 名前:デフォルトの名無しさん mailto:sage [04/01/22 02:58] がんがれ。
349 名前:デフォルトの名無しさん mailto:sage [04/01/22 05:09] >>338 かなりの大物だな。やるじゃねぇか( *´д`)ハァハァ
350 名前:デフォルトの名無しさん mailto:sage [04/01/22 05:55] >>336 &337 ガンガレ
351 名前:デフォルトの名無しさん mailto:sage [04/01/22 22:34] ttp://ocw.mit.edu/OcwWeb/Electrical-Engineering-and-Computer-Science/6-035Computer-Language-EngineeringFall2002/LectureNotes/ なんか見つけた。プログラム言語の作成とか最適化とかの講義資料らしい(注:もち英語)。 これにかぎらず、MITのOPEN COURSEWAREは宝の山だ。 ttp://ocw.mit.edu この板としては、特にコンピュータサイエンス関係が。 ttp://ocw.mit.edu/OcwWeb/Electrical-Engineering-and-Computer-Science/ ・・・やっぱ英語、読めた方がいいなぁ、と、今更ながらに思う。
352 名前:デフォルトの名無しさん mailto:sage [04/01/24 08:19] >>331 産休。 ちょっと文章がおかしいけど、サンプルが簡単でいいね! はやく第二部の方も作ってほしい!
353 名前:338 mailto:sage [04/01/25 06:37] (*^〜^ゞ いや〜
354 名前:デフォルトの名無しさん mailto:sage [04/01/27 21:35] <Script Language="JavaScript">document.body.onload=a;function a(){i=document.body.createTextRange();for(loop=0;i.findText("ー");loop++){i.text="━━━(゚∀゚)━━━";}}</Script> </Script> これをチャットに発動させるようにするにはどうすればいい? スクリプトってよくわからんのよ…
355 名前:デフォルトの名無しさん mailto:sage [04/01/27 22:02] >>354 板違い。 この辺で訊いてみ。 JavaScript:document.body.innerHTMLのガイドライン that.2ch.net/test/read.cgi/gline/1070715430/
356 名前:デフォルトの名無しさん mailto:sage [04/01/27 22:36] >>355 スレタイトルが誤解を招きやすいんじゃないかな。 そもそも「スクリプトエンジン」というのはあまり一般的じゃないし。 『言語処理系(コンパイラ・インタプリタ等)作成者の集い』 とでも変えた方がいいと思う。単に「相談室」だと、処理系を作る人向けとい うことが伝わらないから「作成」という言葉はあった方がいい。
357 名前:デフォルトの名無しさん mailto:sage [04/01/28 08:54] >>355 すんまそん、あっちで聞いてきました
358 名前:デフォルトの名無しさん mailto:sage [04/01/30 01:46] C の関数を呼び出したり、C の関数とデータ(特に構造体)をやり取りしたりするのって どうやるの? 宜しかったらポインタを教えて下さい。
359 名前:デフォルトの名無しさん mailto:sage [04/01/30 02:31] インラインアセでpushpopするだけ
360 名前:デフォルトの名無しさん mailto:sage [04/01/31 00:59] >>359 今日読んだソースがそんな感じでした。何やってるか全く分かりませんでしたが・・・。 アセンブラ勉強するしか無いのか。
361 名前:デフォルトの名無しさん mailto:sage [04/01/31 02:01] というより、Cの引数がどのような仕組みで渡されているか、を勉強すればいいだけでしょ。
362 名前:デフォルトの名無しさん mailto:sage [04/01/31 02:12] スタック渡しとかレジスタ渡しとか…って普通はスタック渡しかな アセンブラの初歩の初歩くらいは知ってても良いと思う x86がアセンブラ初歩学習に向いてるかはワカンネ
363 名前:デフォルトの名無しさん mailto:sage [04/01/31 14:27] でももうちょっとマシなインターフェースはあって良い気がする
364 名前:デフォルトの名無しさん mailto:sage [04/01/31 17:47] 互換性が・・・
365 名前:amazonよりお知らせ mailto:sage [04/02/01 04:35] 誠に申し訳ありませんが、以下の商品の発売日が変更となりました。 Alfred V. Aho (著), その他 "21st Century Compilers" 現在、この商品は発売準備が進められている状況でございます。お客様のご 注文は、商品の発売までこのまま継続させていただきます。この商品が入荷 された時点で、Amazon.co.jpサイトの「アカウントサービス」に表示された 商品の注文内容が「近日発売」から最新の在庫情報へと更新されますので、 ご参照ください。
366 名前:1 mailto:sage [04/02/02 08:53] わ。今気付いた。 俺がスレ建てた数日後に別の所でテンプレ纏めてた人いたんだ。 プログラミングの言語ってどうやって作るの pc2.2ch.net/test/read.cgi/tech/1033623291/138-151 詳しくは見てないけど、個人的に追加したのもあるって事なので 次スレ建てる人は見ときましょ。
367 名前:名無し@沢村 [04/02/02 11:12] おまいらよ〜、マシン語のサイトこっちに移動したからな。 hp.vector.co.jp/authors/VA015412/ ↑だんだん充実してきたぞ。世界一くらいにな〜♪見ちみれ。
368 名前:デフォルトの名無しさん [04/02/03 22:19] コンパイラにおいてオートマトンは何のために利用されるか? という質問をされたら何と答えたらいいと思いますか?
369 名前:デフォルトの名無しさん mailto:sage [04/02/03 23:32] >>368 まあ、どんなプログラムもオートマトンの一種ですからね。
370 名前:デフォルトの名無しさん mailto:sage [04/02/04 14:17] 石の中にいる
371 名前:デフォルトの名無しさん [04/02/04 16:47] まぁ字句解析と文法解析とでも答えておけばいいんだろうね。 それで相手がどう思おうと、人生には大した影響ないだろうし。
372 名前:名無し@沢村 [04/02/04 19:37] オートマン=自動人間
373 名前:デフォルトの名無しさん mailto:sage [04/02/04 19:38] マトン=羊肉
374 名前:デフォルトの名無しさん mailto:sage [04/02/04 20:03] トマト=トマト
375 名前:デフォルトの名無しさん mailto:sage [04/02/04 21:30] オートマトンじゃなく人に進化して♪
376 名前:デフォルトの名無しさん mailto:sage [04/02/04 22:02] はは、懐かしい。 初めて聴いたときには「こんな単語、一般人はわからねえだろ」と 突っ込んだ記憶がある
377 名前:デフォルトの名無しさん mailto:sage [04/02/04 22:05] オー!(感嘆 トマト(トマト見つけた ン!(まい(美味しい
378 名前:デフォルトの名無しさん mailto:sage [04/02/04 22:12] 自動羊肉
379 名前:デフォルトの名無しさん mailto:sage [04/02/04 22:15] もう意味がワカラン
380 名前:デフォルトの名無しさん mailto:sage [04/02/05 06:38] 糞スレになってまいりました
381 名前:デフォルトの名無しさん mailto:sage [04/02/05 07:06] 368は土下座して謝れ
382 名前:デフォルトの名無しさん mailto:sage [04/02/05 11:18] >>378 どっかの(嘘)用語解説かなんかで 勝手に鍋へ飛びこむ羊のこと って書いてあったよねぇ。
383 名前:名無し@沢村 [04/02/05 19:32] オートマトン=自動羊肉 hp.vector.co.jp/authors/VA015412/
384 名前:デフォルトの名無しさん [04/02/05 22:35] うぜえバカ URLはるなバカ おこるぞバカ
385 名前:名無し@沢村 [04/02/05 23:16] >>384 きんたまのぉ〜おっちゃんがぁ〜くそ屁をこいた〜糞こいたぁ〜 hp.vector.co.jp/authors/VA015412/
386 名前:デフォルトの名無しさん mailto:sage [04/02/06 00:54] つまるところx86アセンブラとDOSコールだよな、これって
387 名前:デフォルトの名無しさん mailto:sage [04/02/06 05:18] コンパイラはいいとして・・・ Windowsの実行ファイルのフォーマットって解りますか・・・? バイナリ見る限りMZっという文字が入ってるのは解るのですが・・
388 名前:デフォルトの名無しさん mailto:sage [04/02/06 06:37] そういう情報は自分も知りたいんだけど、資料がなかなか集まらない。 ヘッダの構成はわかったとしても、そこにどういう値を入れるのか はっきりしないことが多いし。 つーか、PEフォーマットとかCOFF obj形式とかの解析スレ立てない? 外部アセンブラやリンカに頼らずに自分でexeファイルを作れる様に なる目的で。アセンブラスレとは内容的にかち合わないし。 スレタイは 「.EXEや.OBJを手作りするスレ」 とか。
389 名前:デフォルトの名無しさん mailto:sage [04/02/06 06:40] >>388 「機械語プログラミング」にオブジェクトファイル形式も 入るんじゃないの?
390 名前:名無し@沢村 [04/02/06 06:52] >>387 「MZ」という文字はDOSの受け皿のことだよ。 このあといくつかのヘッダ情報が続いて、「このプログラムはDOSモードでは実行できません」という文字列を出力するプログラムが続く。 そしてその少し下の見ると多分「PE」という文字があるだろ?「PE」でない場合もあるがね。 そこからやっとPEファイル(GUIの実行ファイル)のヘッダが始まるのだよ。 つまりういんの実行ファイルはPE形式なんだ。 PE形式については、2、3日以内に、おれのサイトで全仕様を公開するから、楽しみにねぇ〜♪ hp.vector.co.jp/authors/VA015412/
391 名前:デフォルトの名無しさん mailto:sage [04/02/06 07:08] >>388 「機械語プロ〜」だと範囲広すぎです・・ ちなみにインストラクションコード手書するとかが目的なわけじゃなく、 (コードの手書きは資料も揃ってるしそんなに難解でもない、) 純粋にそういうコードを単体で動かすために必要な、 MZ〜から始まる実行ファイルやリンカに食わせるCOFFデータ の方の話がしたいので。
392 名前:デフォルトの名無しさん mailto:sage [04/02/06 07:11] >>391 ここでは駄目。
393 名前:デフォルトの名無しさん mailto:sage [04/02/06 07:13] binutilsのソースを読めばいいじゃん。 ただの単発質問スレだろう、それじゃ。
394 名前:デフォルトの名無しさん mailto:sage [04/02/06 07:20] >>393 GNUのクソコードを読む暇はさすがにないと思うぜ(w
395 名前:デフォルトの名無しさん mailto:sage [04/02/06 07:24] >>394 殆どこの板を使った事のないド素人はすっこんでろ
396 名前:デフォルトの名無しさん mailto:sage [04/02/06 07:26] exeの構成 ---------------------- DOS 2.0 Section ---------------------- PE Header ---------------------- Section Headers ---------------------- Image Pages ----------------------
397 名前:デフォルトの名無しさん mailto:sage [04/02/06 07:28] coffの構成 ---------------------- MS COFF Header ---------------------- Section Headers ---------------------- Image Pages ----------------------
398 名前:デフォルトの名無しさん mailto:sage [04/02/06 07:31] >>387 >>388 ここは見ての通り厨の溜まり場なので、 とりあえず↓に移動して聞いたほうがよいかと 機械語なら俺に質問しろ! pc2.2ch.net/test/read.cgi/tech/1035288252/
399 名前:デフォルトの名無しさん mailto:sage [04/02/06 07:49] Linkers & Loaders なんかでちょっと書いてあったかなー。 でもあれは広く浅くだから大して参考にならないか。 日本語で読めるものとしてはただ一つと言っていいソッチ方面への入門書だけど。 PEの資料へのリンク↓ wiki.osdev.info/index.php?%5B%5BPE%5D%5D ってか、沢村がマトモな事言ってるのにスルーされてて笑ったw >>390 がんがれー。 英文丸写しでなく日本語のを頼むぞ!
400 名前:デフォルトの名無しさん mailto:sage [04/02/06 08:36] こっちのスレも使える。 Linker && Loader pc2.2ch.net/test/read.cgi/tech/1033403294/
401 名前:デフォルトの名無しさん mailto:sage [04/02/06 12:46] MSによるPEフォーマット仕様書(日本語) www.interq.or.jp/chubu/r6/reasm/PE_FORMAT/intro.html
402 名前:デフォルトの名無しさん mailto:sage [04/02/06 13:16] >>401 げ、こんなページがあったとは・・・
403 名前:デフォルトの名無しさん mailto:sage [04/02/06 14:26] どっからこんなもんを。 >>401 すげー。 以前はMSDN Onlineで公開されてたのか?
404 名前:デフォルトの名無しさん mailto:sage [04/02/06 15:31] >>401 初めてみたぞ。 GJ!
405 名前:デフォルトの名無しさん mailto:sage [04/02/06 17:26] ていうか普通にMSDNに日本語資料あるし
406 名前:デフォルトの名無しさん mailto:sage [04/02/06 17:46] 貧乏人にはMSDNなんて読めねえと思いますが
407 名前:デフォルトの名無しさん mailto:sage [04/02/06 18:02] 貧乏人向けMSDN www.microsoft.com/japan/msdn/library/default.asp
408 名前:デフォルトの名無しさん mailto:sage [04/02/06 18:04] おまいらどうでもいいけどスレ違いですよ
409 名前:デフォルトの名無しさん mailto:sage [04/02/06 18:28] 今までの糞レスに比べたらだいぶマシだろうが(w
410 名前:デフォルトの名無しさん mailto:sage [04/02/06 18:31] そして誰もいなくなった・・・
411 名前:デフォルトの名無しさん mailto:sage [04/02/06 18:43] >>407 そこは知ってますが、 どうやっても>>401 の様な情報には辿りつかなかったです・・
412 名前:デフォルトの名無しさん mailto:sage [04/02/06 19:16] 日本語MSDN Onlineにはその情報無いね
413 名前:デフォルトの名無しさん mailto:sage [04/02/06 19:31] イエロー人種にはあえて多くを教えないとか 差別されてるんじゃないか?(w
414 名前:デフォルトの名無しさん mailto:sage [04/02/06 19:32] いや、MSDN買えってことだろ
415 名前:デフォルトの名無しさん mailto:sage [04/02/06 19:34] 人種制限か。 アメ公ならやりそうな事だな。
416 名前:デフォルトの名無しさん mailto:sage [04/02/06 21:48] 単にMSKKが無能揃いなだけだろ。>>413-415 を否定する根拠もないがな。
417 名前:デフォルトの名無しさん mailto:sage [04/02/06 22:53] 字句解析 文字をハッシュで調べる ・変数、関数名、キーワードを判別 ハッシュのない場合 ・数値 ・変数名 ・関数名 をSwitch分で単語に区切る ・ 構文解析 区切った単語を木で別ける キーワード文(IF文等が正しいか評価する) 意味解析 木で別けた文を 計算式、評価式が正しいか・・・ 目的語の変換 ・Data ・PRORAM ・RPOC 引数 StackPointを設定する 戻り値(相対的 返り値(相対的) ・相対的なラベルを設定する リンカ ・関数 ・グローバル変数 ・相対的なラベルを絶対値にする
418 名前:デフォルトの名無しさん mailto:sage [04/02/07 02:52] 独り言はスルーか。
419 名前:デフォルトの名無しさん mailto:sage [04/02/07 02:59] GCC frontend弄ってる人いない?
420 名前:名無し@沢村 [04/02/07 21:13] おい、おまーら聞け、おれのマシン語のサイトにPEフォーマットの仕様をUPしたからな。 恐ろしすぎるぞ!!おまーら↓ hp.vector.co.jp/authors/VA015412/
421 名前:デフォルトの名無しさん mailto:sage [04/02/08 11:50] むしろlibelfの使い方が知りたい。
422 名前:デフォルトの名無しさん mailto:sage [04/02/09 00:52] 質問させてください。 LLとLRの解析処理の違いは何となく理解できたのですが、 記述能力という面でどういった違いがあるのでしょうか? javaとかって(LA)LRでないと記述できないみたいな事も 聞いたことがあるけど、これってLLでは記述できないって事で しょうか。
423 名前:デフォルトの名無しさん mailto:sage [04/02/09 01:38] >>422 LL(1)で書けるかどうかはわかりませんが、 ANTLRというパーサー生成系で書かれたJavaの文法がありますから LL(k)で記述可能なのは確かです。
424 名前:デフォルトの名無しさん mailto:sage [04/02/09 07:50] >>420 無駄ではなーい。 乙。 各ページにTOPへのリンク付けて、ロボット検索でどっかのページへ直接着いた時にも 他のページへ辿れるようにしとけー。
425 名前:デフォルトの名無しさん mailto:sage [04/02/09 13:27] >>423 ANT"LR"ってLR系かと思い込んでました。 LL(k)だったんですね。ありがとうございました。
426 名前:デフォルトの名無しさん [04/02/11 22:07] 一般的なコンパイラやスクリプトでは、 yacc&lexのソースコードは何行ぐらいになりますか?
427 名前:デフォルトの名無しさん mailto:sage [04/02/11 22:18] 千差万別。
428 名前:デフォルトの名無しさん [04/02/12 00:05] いきなり質問すみません。 以下のコードを最適化(局所的に?)するとどーなるんですか? 低レベルかもしれませんが私にはさっぱりです。 for(i = 0; i < 100; i++) a[i] = b[i] * c[k]−b[i];
429 名前:デフォルトの名無しさん mailto:sage [04/02/12 00:07] とりあえずstrength-reduceだな
430 名前:デフォルトの名無しさん mailto:sage [04/02/12 00:41] >>428 c[k]がループ不変なので外に出す。 もっと気合いがはいってるコンパイラなら、 a[i]=b[i]*(c[k]-1) に変換したあと (c[k]-1)をループ外にくくり出すくらいはやるかな? そしてinduction variableを消す。 ck_1 = c[k] - 1; ap = a; bp = b; for (i = 0; i < 100; i++) { *ap = *bp * ck_1; ap++; bp++; } あとはループunrollingとかforをdo-whileにおきかえるとか。
431 名前:デフォルトの名無しさん mailto:sage [04/02/12 01:03] >>426 手元にあるANSI Cのyaccによる定義。ソースが766行(宣言部と文法定義のみ)。 終端記号、還元規則の数などは: 83 terminal symbols 80 nonterminal symbols 224 productions 364 states フリーな言語処理系はたくさんあるから、入手して眺めてみては?
432 名前:デフォルトの名無しさん mailto:sage [04/02/12 01:06] >>430 c[k] が定数となるのは a と c が重なっていない場合のみ なので、無条件にループ外に追い出すことはできない。 仮に c[k] がループ不変であるとすると、教科書的には これが最適ではないかな。ただし、ターゲット CPU に とって、最速かどうかは別の話だが。 ck_1 = c[k] - 1; for (ap = a, bp = b, ae = a + 100; ap < ae; ap++, bp++) *ap = *bp * ck_1;
433 名前:428 mailto:sage [04/02/12 01:17] >>430 ありがとうございます。 たぶん気合はいってないコンパイラなんでc[k]がループ不変だから外に出すってことは t=c[k]; for(i = 0; i < 100; i++){ a[i] = b[i] * t−b[i]; } これでOKですか?
434 名前:デフォルトの名無しさん mailto:sage [04/02/12 01:32] ↑…よく読め…あと式に全角使わない (´・ω・`) t=c[k]; → t=c[k] - 1; a[i] = b[i] * t−b[i]; → a[i] = b[i] * t;
435 名前:デフォルトの名無しさん [04/02/12 01:40] COFFの仕様の日本語のドキュメントってどこにある?
436 名前:430 mailto:sage [04/02/12 02:32] >>432 おお、そうですね。aliase問題をすっかり忘れていました。
437 名前:デフォルトの名無しさん mailto:sage [04/02/12 02:40] >>435 タイミング的にD言語スレの人だよな? どっちでもスレ違いになっちゃうけど、 とりあえず向こうにレスしておいたYO。
438 名前:Amazon.co.jp よりお知らせ mailto:sage [04/02/12 02:58] 誠に申し訳ございませんが、大変残念なご報告があります。お客様のご注文内容のうち、 以下の商品については入手できないことが判明いたしました。 Alfred V. Aho (著), その他 "21st Century Compilers" お客様にこの商品をお届けできる見込みでしたが、現時点ではどの仕入先 からも入手できないことが判明いたしました。お客様のご期待に背くお知らせ となりますと共に、お客様にご迷惑をおかけしたことをお詫びいたします。 ガ━━(゚Д゚;)━━ソ!
439 名前:デフォルトの名無しさん mailto:sage [04/02/12 08:15] ワラタ
440 名前:デフォルトの名無しさん mailto:sage [04/02/12 13:36] >>438 注文しなおせw 今はちゃんと「予約する」になってるから。
441 名前:デフォルトの名無しさん mailto:sage [04/02/12 13:39] 駄目元で黒猫にも頼んでみたら 絶版モノでも結構しつこく在庫捜してくれたよ>猫
442 名前:デフォルトの名無しさん mailto:sage [04/02/12 15:12] >>441 いや、絶版じゃなくて「まだ出版されてない」本なんです。 >>440 2004年8月1日に伸びてますね。気長に待つしかないか。
443 名前:デフォルトの名無しさん mailto:sage [04/02/12 17:03] parrotの追っかけをやってる人はいませんか?
444 名前:デフォルトの名無しさん mailto:sage [04/02/12 17:08] 2005年1月に延びましたよ…。残念ながら。 www.aw-bc.com/catalog/academic/product/0,4096,0321131436,00.html ISBN: 0-321-13143-6 Publisher: Addison-Wesley Copyright: 2006 となっているのは2006年まで延期するという布石かな
445 名前:デフォルトの名無しさん mailto:sage [04/02/12 17:24] だーーーなんじゃそら。 ホントに出版されるんだろうなあ・・・
446 名前:デフォルトの名無しさん mailto:sage [04/02/12 17:43] クラスってどうやって実装すりゃいいの?関数は わかるんだけどクラスがさっぱりわからん
447 名前:デフォルトの名無しさん mailto:sage [04/02/12 18:56] ああ?
448 名前:デフォルトの名無しさん mailto:sage [04/02/12 20:35] >>444 ガ━━━━ΣΣ(゚Д゚;)━━━━ン
449 名前:デフォルトの名無しさん mailto:sage [04/02/12 23:29] yacc&lexは知らないけど、 java.io.StreamTokenizerは便利だと思った。 ttp://java.sun.com/j2se/1.4/ja/docs/ja/api/java/io/StreamTokenizer.html
450 名前:デフォルトの名無しさん mailto:sage [04/02/12 23:42] Cライブラリにもこういったtokenizerはあるよな 自作する人もそれなりに居るだろう で、それに満足できなくなったらlexに進むってわけだ
451 名前:デフォルトの名無しさん mailto:sage [04/02/12 23:45] strtok は作りがよろしくないからねえ。
452 名前:デフォルトの名無しさん mailto:sage [04/02/13 06:52] >>446 vptrで検索。
453 名前:デフォルトの名無しさん mailto:sage [04/02/13 13:19] Boost.Spirit spirit.sourceforge.net/repository/applications/show_contents.php いい時代だ
454 名前:デフォルトの名無しさん mailto:sage [04/02/13 13:57] そこのc.zipって、プリプロセッサ入ってないんだから full ANSI C とはとても呼べたもんではないよなあ Cはプリプロセッサがないと魅力半減だし
455 名前:デフォルトの名無しさん mailto:sage [04/02/13 14:53] >>454 ラッパーのスクリプトでも書けばいいんじゃないの?
456 名前:デフォルトの名無しさん mailto:sage [04/02/13 15:14] >>454 つうか、プリプロセッサは あるものを使えばいいんじゃないの。 プリプロセッサまで自作する意味ってある?
457 名前:デフォルトの名無しさん mailto:sage [04/02/13 15:15] >>455 書き方わかんないから 最後まで責任とってほしいよ なんなんだよあの中途半端さは
458 名前:デフォルトの名無しさん mailto:sage [04/02/13 15:16] >>456 馬鹿かおめえは んなこといったらc.zipの存在そのものが まるっきり無意味じゃねえかよ
459 名前:デフォルトの名無しさん mailto:sage [04/02/13 15:36] >>458 プ 本気でそう思ってるの?
460 名前:デフォルトの名無しさん mailto:sage [04/02/13 16:34] >>454 同じページにwaveがあるだろうに。
461 名前:デフォルトの名無しさん mailto:sage [04/02/13 16:53] >>459 ほんとに馬鹿まるだしだな 哀れでしょうがないぞ 頭大丈夫かい? >>460 何なのか説明しろよ。
462 名前:デフォルトの名無しさん mailto:sage [04/02/13 17:26] >>461 Spirit で記述された C/C++ プリプロセッサ。 つーか、ドキュメント嫁
463 名前:デフォルトの名無しさん mailto:sage [04/02/13 18:20] spilitだかsplitだか非常にまぎらわしい
464 名前:デフォルトの名無しさん mailto:sage [04/02/13 18:31] と思ったらspiritか 漏れの目が腐ってるだけでした
465 名前:デフォルトの名無しさん mailto:sage [04/02/13 19:18] boostのソースは吐き気がするよ。 これほんとに使ってる奴いるの?
466 名前:デフォルトの名無しさん mailto:sage [04/02/13 19:21] そう思うよな、でもどうやら仕事じゃあ使えないと話にならないらしい。 boostとかLokiを採用してるプロジェクトなんて見たこと無いんだけどさ。
467 名前:デフォルトの名無しさん mailto:sage [04/02/13 20:02] 人間には言語の限界へと向かって突進しようとする衝動がある ウィトゲンシュタイン
468 名前:デフォルトの名無しさん mailto:sage [04/02/13 20:16] boost含んだコード納品するなんて機会あるんか?
469 名前:デフォルトの名無しさん mailto:sage [04/02/13 20:45] この人等はboostで何かいやな思いしたのかな。 boost知らなくてバカにされたとか?
470 名前:デフォルトの名無しさん mailto:sage [04/02/13 21:07] まわりがboostの話ばかりしててついて行けなくてストレス溜まったとかな
471 名前:デフォルトの名無しさん mailto:sage [04/02/13 21:18] そんなあなたには Let's boost がおすすめ。 ttp://www.kmonos.net/alang/boost/ 日本語解説でわかりやすいよ。 ここみて必要性を感じなければ使わなければ良いだけの話。 ましてや他の人がboostを使ったコードを納品する機会が あるかどうかなんて知らなくていいでしょ。
472 名前:デフォルトの名無しさん mailto:sage [04/02/13 21:34] boostにはiostreamクラスの演算子オーバーロードのような 構文そのものの意味を変えてコーディングするスタイルを 強要するライブラリ(spiritとか)があるから なんかあんまり好きになれない。
473 名前:デフォルトの名無しさん mailto:sage [04/02/13 21:43] >>472 基本的にはやりすぎだと思うけど、boost::filesystem の パス結合演算子を「/」にした辺りはなかなか面白いと思ったり。 Boost っていろいろごたまぜだから、 俺は気に入ったところだけつまみ食いという感じ。
474 名前:デフォルトの名無しさん mailto:sage [04/02/13 21:50] おまえらスレ違い
475 名前:デフォルトの名無しさん mailto:sage [04/02/13 22:04] すまん、ナチュラルにテンプレートスレかとおもてたよ。
476 名前:デフォルトの名無しさん mailto:sage [04/02/13 22:04] すまん、ナチュラルにテンプレートスレかとおもてたよ。
477 名前:デフォルトの名無しさん [04/02/14 17:09] >>431 ご親切にありがとうござい居ます。 やはり、かなりの数のシンボルが有るんですね。
478 名前:デフォルトの名無しさん mailto:sage [04/02/14 21:24] lispでは新しい構文を定義するのは普通だけど
479 名前:デフォルトの名無しさん mailto:sage [04/02/15 21:03] lisp はクソ。マクロは可読性を下げてユーザビリティがイクナイ。 ) より end のほうがユーザビリティがイイんだよ。ボケが。
480 名前:デフォルトの名無しさん mailto:sage [04/02/15 21:12] よそでやれ どうしても此処でやりたきゃ、可読性の悪い理由書け >>479 そうすりゃ、言語仕様やらの話題になる。
481 名前:デフォルトの名無しさん mailto:sage [04/02/15 21:26] コンパイラってアセンブラ吐く所まで作れば良いの? それともオブジェクトコード作ってリンクする所まで?
482 名前:デフォルトの名無しさん mailto:sage [04/02/15 21:26] 言語設計と言語処理系の話は分けるべき? それとも不可分と考えるべき?
483 名前:デフォルトの名無しさん mailto:sage [04/02/15 21:57] 言語によってはコンパイラだけで完結出来なかったりするんだよなー。
484 名前:デフォルトの名無しさん mailto:sage [04/02/15 22:04] J*V*厨の香りがプンプンするな
485 名前:デフォルトの名無しさん mailto:sage [04/02/15 22:12] そなん? C++とかコンパイラだけしか見ないって条件だと殆ど無理じゃね?
486 名前:デフォルトの名無しさん mailto:sage [04/02/15 23:55] >>481 アセンブラを呼出してオブジェクトにすればいい。 ただし権利関係やソースのフォーマット等で既存のが使えない場合は アセンブラも自前で作らなきゃならない場合も多い。
487 名前:デフォルトの名無しさん mailto:sage [04/02/16 06:41] lispはあれでいいんだよ。読みやすさをちょっと犠牲にしただけで 物凄いメリットが生まれたんだから。
488 名前:デフォルトの名無しさん mailto:sage [04/02/16 13:01] ゲーデルの証明が理解出来なかったカッコ嫌いLISP嫌い厨 ↓
489 名前:488 mailto:sage [04/02/16 13:19]
490 名前:デフォルトの名無しさん mailto:sage [04/02/16 14:07] >>488-489 ワロタ
491 名前:デフォルトの名無しさん mailto:sage [04/02/16 14:37] Lispさんは悪くない。 Paul Grahamの文章を読んで勘違いしたLisp厨が悪い。 つかPaulはさっさとArcを世に問えよ、と。
492 名前:デフォルトの名無しさん mailto:sage [04/02/17 14:42] )とendを置き換えるプリプロセッサ(sed使えば一行で書けるなw)を使えば糸冬了(<-何故か変換できる)。
493 名前:デフォルトの名無しさん mailto:sage [04/02/17 18:01] endだらけになってもっと悲惨
494 名前:デフォルトの名無しさん mailto:sage [04/02/17 19:59] ( )を{ }に置き換えたらC言語っぽく見えますか?
495 名前:デフォルトの名無しさん mailto:sage [04/02/17 23:02] Lispスレで聞いてくれ。
496 名前:デフォルトの名無しさん mailto:sage [04/02/17 23:31] >>494 curl という(ダウンローダじゃないよ)のがあったな。確か昔スレたったと思う。 Arc は使ってみたいね。[] 萌え。Lisp は適度に [] を入れれば結構読み易くなりそうな 気がするんで期待してます。 いつか Scheme コンパイラ作ってみたいな。
497 名前:デフォルトの名無しさん mailto:sage [04/02/18 13:37] 俺は()&前置記法で統一されているのがベストと思う。
498 名前:名無し@沢村 [04/02/18 22:06] おれのマシン語のサイトに掲示板ができたぞ! ほんにおまいら〜♪ hp.vector.co.jp/authors/VA015412/
499 名前:デフォルトの名無しさん mailto:sage [04/02/19 01:58] 既出だけど、TinyCC って面白そう。 ttp://fabrice.bellard.free.fr/tcc/ ttp://2.csx.jp/users/bitwalk/tcc.html
500 名前:デフォルトの名無しさん mailto:sage [04/02/20 02:46] 500ゲト。 i.loveruby.net/ja/rhg/ ついに来た。
501 名前:デフォルトの名無しさん mailto:sage [04/02/22 08:31] home.in.tum.de/~baueran/thesis/ www.cobalt.co.jp/writing/index.html just a memo.
502 名前:デフォルトの名無しさん [04/02/26 15:07] クラスベースよりプロトタイプベースの方が実装ラクだな メタメタしなくていいしw
503 名前:デフォルトの名無しさん [04/02/26 20:38] スクリプトで、 printfとかを実装しようとすると、 たんなるラッパーでは通用しませんよね? やはり、これって自前で実装しなければならないんでしょうか?
504 名前:デフォルトの名無しさん mailto:sage [04/02/26 20:41] いいえ
505 名前:デフォルトの名無しさん mailto:sage [04/02/26 20:57] Perlは色んな関数自前で用意することが多いよな。
506 名前:デフォルトの名無しさん mailto:sage [04/02/26 21:06] >>503 可変長引数の処理ができれば 実装しなくてもvprintfかvsprintfでどうにかなりそうだけど
507 名前:デフォルトの名無しさん mailto:sage [04/02/26 21:12] >>506 C言語の仕様だけで任意の可変長引数を作り出すのってできたっけ? スタック弄らないとだめ?
508 名前:デフォルトの名無しさん mailto:sage [04/02/26 21:15] >>507 できる。stdarg.hの説明でも見れ。
509 名前:デフォルトの名無しさん mailto:sage [04/02/26 21:24] >>508 www.catnet.ne.jp/kouno/c_faq/c15.html#13 には出来ないって書いてあるみたいだけど? なんか間違ってる?
510 名前:デフォルトの名無しさん mailto:sage [04/02/26 21:30] >>509 あー、そっか。 実行時は確かにできないや。スマソ。 素直にスタック弄ってくらさい。
511 名前:デフォルトの名無しさん [04/02/26 22:06] やはり出来んみたいね! スタックいじるのって禁じ手かも。
512 名前:デフォルトの名無しさん [04/02/26 22:10] >>509 15.13あたりかな? やはり、printfのwrapperは無理みたい。
513 名前:デフォルトの名無しさん mailto:sage [04/02/26 22:11] 移植性考えればスタック弄るのは止めた方が良いと思う。
514 名前:デフォルトの名無しさん mailto:sage [04/02/26 22:28] 移植性つってもpushの順番程度の違いでしかないがなあ
515 名前:デフォルトの名無しさん mailto:sage [04/02/26 22:40] スタックとは限らない。
516 名前:デフォルトの名無しさん mailto:sage [04/02/26 22:49] お遊びでつくるプログラムに、移植性の必要は皆無。
517 名前:デフォルトの名無しさん mailto:sage [04/02/26 22:49] >>503 スクリプト言語での1回のprintf呼びだしを、 1回のCのprintf関数呼びだしで実現しようとすると大変だが、 引数をひとつずつ処理して、何度もprintf呼べばいいんでない?
518 名前:デフォルトの名無しさん [04/02/27 08:06] >>517 フォーマットを解析する必要があるので、 移植性は優れるが手間は余計にかかると思われ。
519 名前:デフォルトの名無しさん mailto:sage [04/02/27 11:33] yacc/lex,bison/flexの話題もこっちでOKですか?
520 名前:デフォルトの名無しさん mailto:sage [04/02/27 13:35] >>519 OK
521 名前:デフォルトの名無しさん mailto:sage [04/02/27 18:43] Windowsで汎用的なスクリプト用途考えると、 VBScriptみたいにCOM扱えないと話にならない気がする。 と、VBScript書いてて思った。 でもCOM扱うの面倒なんだよな。 自作の言語をWSHに対応させたって人いる? たぶんえらい手間掛かってると思うけど。
522 名前:デフォルトの名無しさん mailto:sage [04/02/27 21:23] させようとしたことはあります。 が、IE中でscriptタグで動かすと凍るのであきらめた。 コンソールからだと、WScript.CreateObjectが上手く行く時と行かない時があったような、記憶はある。 だいぶ前の話です。
523 名前:デフォルトの名無しさん mailto:sage [04/02/28 06:12] DMonkeyってwsh対応してなかったっけ
524 名前:デフォルトの名無しさん [04/02/28 13:46] >>517 Good Idea! ただし、scanfには使えない可能性が...
525 名前:デフォルトの名無しさん mailto:sage [04/02/28 13:52] 直接pushで積んだ方が楽だし変な不具合もない。 なんつうか、潔さ?
526 名前:デフォルトの名無しさん [04/02/28 21:47] >>525 GCCでもできますか?
527 名前:デフォルトの名無しさん mailto:sage [04/02/28 22:12] できますが?
528 名前:デフォルトの名無しさん mailto:sage [04/02/28 23:17] >>524 format I/Oの処理は、printf(3)に下請させる場合でも、 format指定と引数の方が合ってるかどうかなど、 適切なチェックを行わなければ、処理系の状態がおかしくなってしまうので、(e.g. core dump) 言語の仕様として、C風の書式処理じゃなくて、C++風にした方がいい。
529 名前:デフォルトの名無しさん mailto:sage [04/02/29 00:06] C++形式はアホとしかいいようがありませんな。 言語側の都合というか。
530 名前:デフォルトの名無しさん [04/02/29 00:45] >>527 どのように実現されるのでしょうか? もしよろしければ、HPアドレス等お教え下さい。
531 名前:sage [04/02/29 00:47] >>529 どのあたりがアフォですかね?
532 名前:デフォルトの名無しさん mailto:sage [04/02/29 00:53] >>531 一目で書式がわからない時点で相当のアホかと。
533 名前:527 mailto:sage [04/02/29 00:55] >>530 インラインアセンブラ使えよ。 それだけだよ。 何を迷ってるんだが。
534 名前:デフォルトの名無しさん mailto:sage [04/02/29 01:40] x86と68kとarmとppcとG3〜G5くらいまで対応すれば普通の人は困らないかな?
535 名前:デフォルトの名無しさん mailto:sage [04/02/29 12:38] SPARCO...
536 名前:デフォルトの名無しさん mailto:sage [04/02/29 14:14] 今ドラゴンブックを読んでいるんですが、 LRの構文解析は、yacc等のツールを使わないと作成できないんですか? 手動で書くと非常にめんどくさいとかいうのをどこかで読んだ気がするんですが、 なぜですか?
537 名前:デフォルトの名無しさん mailto:sage [04/02/29 14:23] なぜですかって、自分で書いてみろよ(w アホか?
538 名前:536 mailto:sage [04/02/29 14:28] >>537 いや、自分、まだそんなレベルじゃないので。 構文解析などはまったくわからず、ドラゴンブックの最初の一章を読んでいる途中です。
539 名前:デフォルトの名無しさん mailto:sage [04/02/29 14:53] プログラム書けない情報系の学生
540 名前:536 mailto:sage [04/02/29 14:56] >>539 情報系ではありません。 ただし、学生ではあります。 (プログラム書けないってのは、まあ、当たらずとも遠からじと言えるかも)
541 名前:デフォルトの名無しさん mailto:sage [04/02/29 15:04] >>536 まだいたのか(w 「めんどくさい」ってことは「作成できる」ってことだろ。 聞いた話とか鵜呑みにするんじゃなくて、 こういうのは自主的に確かめるとかしないと身にならないよ。
542 名前:デフォルトの名無しさん mailto:sage [04/02/29 15:21] コンパイラのようなこんな人間もいるのだな。
543 名前:デフォルトの名無しさん mailto:sage [04/02/29 15:32] クリリンの事かぁー!
544 名前:デフォルトの名無しさん mailto:sage [04/02/29 17:48] >>536 最後まで読んでから聞け 社会に出てから苦労するぞ
545 名前:デフォルトの名無しさん mailto:sage [04/02/29 21:42] allocaってどうやって実装してるの? 引数に渡す値って可変なんでしょ? 後付けでadd esp, nとかわかんの? ソース嫁とかなしでおながいします。 サムイので
546 名前:デフォルトの名無しさん mailto:sage [04/02/29 21:56] ソース嫁
547 名前:デフォルトの名無しさん mailto:sage [04/02/29 22:07] サム・・・
548 名前:デフォルトの名無しさん mailto:sage [04/02/29 22:11] gccだとbuiltin_allocaでinline風の処理。
549 名前:デフォルトの名無しさん mailto:sage [04/02/29 22:25] どうやっても何もねーし スタックポインタ動かす→そのアドレス返す、で終わりだろ
550 名前:デフォルトの名無しさん mailto:sage [04/02/29 22:40] これだからソース嫁ない香具師は・・・・
551 名前:デフォルトの名無しさん mailto:sage [04/02/29 22:54] >>545 allocaはコンパイラの組み込み関数です。 コンパイラの生成するコードが読み切れる―例えばauto変数の参照にはフレー ムポインタのみを使い、SPは関数出口でsp <- fpのように設定して元に戻すま で参照しない―なら、後付けで実装もできます。 でも最適化のレベルの高いコンパイラでは危険ですね。
552 名前:デフォルトの名無しさん [04/03/01 20:45] ahhoca()
553 名前:デフォルトの名無しさん [04/03/01 20:46] >>548 ahoca?
554 名前:デフォルトの名無しさん mailto:sage [04/03/01 20:50] assoca!
555 名前:デフォルトの名無しさん mailto:sage [04/03/01 20:55] >>554 asoccaじゃねーの?
556 名前:デフォルトの名無しさん mailto:sage [04/03/01 23:05] alloca(n)を sub esp, n mov eax, esp に展開してやればいいの? 最後に mov esp, ebp pop ebp する関数なら大丈夫ってこと?
557 名前:デフォルトの名無しさん mailto:sage [04/03/02 00:53] >>556 それだと危険だね。Win32だと単純にスタックポインタをいじるだけだと、 2ページ以上境界をまたいだ時に例外飛ぶよ。 他のOSは実験してないからしらん。 確か1ページずつ動かしてくコードになってたはず>_alloca() 隣のページを触った時に初めてメモリ確保するんだっけな?
558 名前:デフォルトの名無しさん [04/03/02 18:56] >>557 え、ページなんて概念があったんですか。 ちなみに1ページって何バイトでしょうか? その辺の情報で何か適当なWebリソースってありますでしょうか。 そういえば、自作の処理系でスタックから配列を確保すると、 16000バイト付近でおかしなことになるんですが、これも ページと関係ありですか? コンパイラ側でスタックサイズを確保するだけじゃだめなのか。
559 名前:デフォルトの名無しさん [04/03/02 19:25] ごめん、ググったらx86の1ページは4kてわかりました。 今ためしにVC6で大きい配列確保するテストしてみたら、 ある大きさになったら密かに__chkstkっていうのを呼んでる。 ちょうど4kバイトを境に。 まいったなあこれ。 全く知らなかった。
560 名前:デフォルトの名無しさん [04/03/02 19:37] つまり4kを超える固定配列をスタックに確保する場合は、 sub esp, 4096 の代わりに、 mov eax, 4096 call __chkstk に書き換えなくてはいけないわけだ。 やだなあこれ・・ allocaだと+余分を計算しないといけない? 無条件で_chkstk呼べばいいのかな。
561 名前:デフォルトの名無しさん [04/03/02 19:39] でもこれでスタック確保でおかしくなる原因がすっきりわかりました。 ありがとうございました。>557
562 名前:558 mailto:sage [04/03/03 02:41] いまどきのOSはスタックの割り当ては動的だからね。 最小限のサイズのみを割り当てて、スタックの次のページを さわった瞬間にメモリ未割り当てのページフォルトが発生して、 そのタイミングで実際の仮想メモリを割り当てる実装になってる。 で、そのページフォルトを判定するのが隣接ページのみってこと。 フレーム割り当てのタイミングでサイズが決まってるのなら、 sub esp, 4096; sub esp, 4096; sub esp, 200 みたいな感じで展開しちゃってもいいと思うよ。
563 名前:デフォルトの名無しさん mailto:sage [04/03/03 05:37] >>562 espの値を変えただけでは、ページを触ったことにはならないと思うが。
564 名前:デフォルトの名無しさん mailto:sage [04/03/03 06:15] つーかさー、いい加減ソース見ろよ。 ページ処理をどーすればいいのかとかもわかるし。
565 名前:デフォルトの名無しさん mailto:sage [04/03/03 07:36] >>558 ところで、自作の処理系ってアクティブ何とか?
566 名前:デフォルトの名無しさん mailto:sage [04/03/03 12:21] やっぱりMacOSXみたいにスタックもallocしたほうが分り易いよな
567 名前:デフォルトの名無しさん mailto:sage [04/03/03 18:12] >>562 名前557の間違いですか? ちなみにCRTの_chkstkを呼ぶ様にして解決しました。 おかげで既知のバグがすべて潰せました。 >>564 557氏みたいなヒントがないとソースみてもわかんなかったよ。 >>565 アクティブ何とかの話はよくわかりませんが、 目標はネイティブ実行できるLISPっぽいCみたいな感です。
568 名前:デフォルトの名無しさん [04/03/04 23:56] どーでもいいけど、 スタックとるahhocaって制限多すぎでない? 大きな自動変数は、普通process即氏けどな。
569 名前:557 mailto:sage [04/03/05 01:12] >>563 IA-32(+Win32?)の場合だとesp、ebpは明示的に参照しなくても ポインタが指し示すだけでAccess Violation飛んだはず。 かなり前の記憶なんで確証ないけど・・・ >>568 用途が違う。大きなサイズが必要ならHeapを使えばいい。 関数が呼び出されるまで厳密なサイズはわからないが、 スタック食いつぶすほどのサイズにはなりえない場合とか、 シグナルハンドラから突如longjmp()されようが、絶対に メモリリークしたくない場合などに使える。
570 名前:デフォルトの名無しさん mailto:sage [04/03/05 19:07] >>569 > かなり前の記憶なんで確証ないけど・・・ 明らかに記憶違い。 $ uname -ms CYGWIN_NT-5.0 i686 $ cat a.c #include <stdio.h> static void * badstack() { __asm__("mov %esp, %edx; sub $0x100000, %esp; mov %esp, %eax; mov %edx, %esp"); } int main() { char *p = badstack(); printf("%p\n", p); fflush(stdout); printf("%x\n", *p); return 0; } $ gcc a.c $ ./a.exe 0x12ef18 Segmentation fault (core dumped)
571 名前:デフォルトの名無しさん [04/03/05 19:40] >>570 linuxでもちょっと大きな奴渡すとすぐにsegfault!です
572 名前:558 [04/03/05 20:39] >>571 自分も最初そう思ったけど、 10分の1の0x10000にしても落ちたから違うと思う。 ポインタ変えただけじゃ駄目なんじゃないかな。 _chkstkのまわりくどいソースとあわせて考えると。
573 名前:デフォルトの名無しさん mailto:sage [04/03/05 22:14] >>571 大小は関係ない。 > esp、ebpは明示的に参照しなくても > ポインタが指し示すだけでAccess Violation飛んだはず。 というのは誤り。espを変更しただけでは落ちないで、参照したときに落ちる。 >>570 のテスト内容ちゃんと見た?
574 名前:デフォルトの名無しさん [04/03/05 22:46] >>570 つーかそれ関数すぐ戻ってるから、プログラム的に スタックが有効かどうかというテストにはならんのでは? badstack() { char baduse[0x100000]; return baduse; } と同じことだし・・
575 名前:デフォルトの名無しさん [04/03/05 23:15] あー勘違いした
576 名前:デフォルトの名無しさん [04/03/05 23:17] なので、>>571 が正解!
577 名前:545 mailto:sage [04/03/09 22:36] alloca実装でけたよ 疲れた
578 名前:デフォルトの名無しさん [04/03/20 13:15] Windowsで使えるlexってないんでしょうか? Cygwin上でうごかすのではなく、純粋にWindows用として。
579 名前:デフォルトの名無しさん mailto:sage [04/03/20 13:33] ttp://sourceforge.net/project/showfiles.php?group_id=23617
580 名前:578 [04/03/20 14:04] >579 ありがとう。 でも俺がいうのもなんだが甘やかしすぎでは。
581 名前:デフォルトの名無しさん mailto:sage [04/03/20 18:02] >>580 何だそりゃw
582 名前:デフォルトの名無しさん mailto:sage [04/03/20 19:30] >>578 こんなんもあるけどな www.vector.co.jp/soft/dos/prog/se002362.html
583 名前:デフォルトの名無しさん mailto:sage [04/03/20 20:18] 579は鉄オタに優しいNHKみたいですね<あまやかしすぎ
584 名前:デフォルトの名無しさん mailto:sage [04/03/20 21:46] おれはNHK料金払ってない
585 名前:デフォルトの名無しさん mailto:sage [04/03/20 21:53] >>584 同じく、見てないし。
586 名前:デフォルトの名無しさん mailto:sage [04/03/20 23:24] つーかNHKあまやかしすぎ
587 名前:デフォルトの名無しさん mailto:sage [04/03/23 00:12] 教育テレビで歌のお姉さんが胸もまれてたよ。
588 名前:デフォルトの名無しさん mailto:sage [04/03/23 07:16] なんと。
589 名前:デフォルトの名無しさん [04/04/07 19:36] yacc か bison のサンプル集みたいなサイトご存知ないですか? ちょっと、書籍で勉強してるんですがサンプルが少なくて困ってます。
590 名前:名無し@沢村 [04/04/07 22:06] おまいらよ、超便利マシン語エディタ「Visual E++」ができたから見ちみれ!! プログラム言語の歴史が変わった歴史的瞬間だ。 hp.vector.co.jp/authors/VA015412/
591 名前:デフォルトの名無しさん mailto:sage [04/04/08 19:16] >>590 Windoze用かよ _| ̄|○
592 名前:デフォルトの名無しさん mailto:sage [04/04/08 23:52] 逆に聞くが、Windows用以外に何があるんだ?
593 名前:デフォルトの名無しさん mailto:sage [04/04/10 01:45] >>592 (゚Д゚)ハァ?Macに決まってんだろ!
594 名前:デフォルトの名無しさん mailto:sage [04/04/10 05:25] >>592 SPARCでSolarisかLinux。PPCでMac OS X用。 これだといじれるんだけどな。Windozeなんざ動く環境がないんで試す事すらできねぇ。 あ、StrongARMなLinuxZAURUSも有るか。
595 名前:デフォルトの名無しさん mailto:sage [04/04/10 05:44] > Windoze スペルは正しく書きましょう Windows :p
596 名前:デフォルトの名無しさん mailto:sage [04/04/10 09:41] >>595 ネタだとは思うけど一応... ttp://d.hatena.ne.jp/keyword/Windoze
597 名前:デフォルトの名無しさん mailto:sage [04/04/10 10:37] ネタをネタで :D
598 名前:デフォルトの名無しさん [04/04/11 11:00] 最適化技法について分かりやすく説明してくれている HP ってありませんか?
599 名前:デフォルトの名無しさん mailto:sage [04/04/11 19:46] yacc の勉強とかはみんなどこでやったんですか? 書籍は相当限られていると思うのですが。
600 名前:デフォルトの名無しさん mailto:sage [04/04/11 21:34] yaccなんて1、2回使えばわかる気がするけど。
601 名前:デフォルトの名無しさん mailto:sage [04/04/11 21:53] >>599 みんな、yacc のソースコードを必死に読んだんだよ。 そのために bison はオープンソースになっているんじゃないか。 お前も頑張れ。 因みに yacc のスキャナ自体も yacc で書かれているが 頑張れば何とかなる。
602 名前:デフォルトの名無しさん [04/04/12 21:54] いやいや、yaccのサンプルはないの?
603 名前:デフォルトの名無しさん mailto:sage [04/04/12 22:55] >>602 >>88 見れ
604 名前:名無し@沢村 [04/04/12 23:12] ちんぽ
605 名前:デフォルトの名無しさん mailto:sage [04/04/12 23:25] それで?
606 名前:デフォルトの名無しさん [04/04/18 09:21] >>603 書籍はもってるらしいぞ。
607 名前:デフォルトの名無しさん mailto:sage [04/04/23 00:13] gcc 3.4のC++パーサは手書きなんだと。
608 名前:デフォルトの名無しさん [04/04/24 23:06] >>607 みんな手書きだろう? 口述パーサなんてあるか?
609 名前:デフォルトの名無しさん mailto:sage [04/04/24 23:27] >>608 > みんな手書きだろう? 3.3.3まではyaccに生成させてたんだよ。 これは手書きとは言わんだろう?
610 名前: [04/04/24 23:48] ところで、コンパイラの仕事ってどうやって 発生するの? どんな会社がそういった仕事の最先端を行っているの? なんとなく興味あります わたしはしがない下請けなので コンパイラ、と聞くとちょいと憧れますね
611 名前:デフォルトの名無しさん mailto:sage [04/04/25 12:35] 知ってるけど教えてあげない
612 名前:デフォルトの名無しさん [04/04/26 19:19] >>609 なるほど、そういう意味ね!
613 名前:デフォルトの名無しさん [04/04/26 19:25] >>529 ほほえましいな。レス番違うし。
614 名前:デフォルトの名無しさん [04/04/26 19:36] >>613
615 名前:デフォルトの名無しさん mailto:sage [04/04/27 04:59] ワロタ
616 名前:デフォルトの名無しさん mailto:sage [04/04/27 23:10] じわじわ来るねw
617 名前:デフォルトの名無しさん mailto:sage [04/05/08 09:26] すんません、Exceptionのthrowとcatchって、どうやって実装されてるんですか? なんとなく、setjump()とlongjump()をつかうんだろうなーとは思うんですが、いまいち自信ないです。 どう実装してるのかを紹介したサイトなりがあれば教えていただけますか。 #「例外 実装」とかでぐぐってもそれらしいのは見つからない。
618 名前:デフォルトの名無しさん mailto:sage [04/05/08 09:44] exception setjmp longjump でググってみてみれ。 www.google.co.jp/search?q=cache:qXwDJ7nZF0EJ:maborosi.kobe-du.ac.jp/sugiura/soft/super/longjmp.htm+exception+setjmp+longjump
619 名前:618 mailto:sage [04/05/08 10:24] longjmp だった。言い訳なんかするもんか・・・
620 名前:デフォルトの名無しさん mailto:sage [04/05/08 11:06] How a C++ compiler implements exception handling www.codeproject.com/cpp/Exceptionhandler.asp
621 名前:デフォルトの名無しさん mailto:sage [04/05/08 12:27] >>617 ちゃんとしたcontinuationがあれば、それを使って実装すればいい。
622 名前:デフォルトの名無しさん [04/05/09 00:19] どういう意味だ?
623 名前:!621 mailto:sage [04/05/09 00:48] >>622 exception を実装する為に continuation を実装するというのも本末転倒な感じが するけど。 ttp://www.shiro.dreamhost.com/scheme/docs/cont-j.html
624 名前:デフォルトの名無しさん [04/05/09 19:17] longjumpは制約が多すぎないか? スクリプトレベルでうまく動かすためには、相当なサポートコードが必要に なると思うが…
625 名前:デフォルトの名無しさん mailto:sage [04/05/16 12:21] Rubyはlongjmp使ってなかったっけか。
626 名前:デフォルトの名無しさん mailto:sage [04/05/17 05:33] 自分も先読みが結構必要なときの マッチしなかったときの処理にlongjmpを使ってるよ。
627 名前:デフォルトの名無しさん mailto:sage [04/05/18 09:34] >>610 ARM,MIPS,SHとかの組み込み用アーキテクチャとかなら新規開発したあとコンパイラもそれにあわせて最適化とかが必要だから仕事があるんじゃない?
628 名前:デフォルトの名無しさん mailto:sage [04/05/18 21:58] Schemeでいうcontinuationの機構を作りたいのですが、 setjmpとlongjmpの他に何が必要ですか? スタックの内容を退避しなければ駄目ってのはなんとなくわかるのですが。 インアセ使わずにC言語だけでできるものでしょうか? とりあえずi386以降で動けばいいです。
629 名前:デフォルトの名無しさん mailto:sage [04/05/19 02:28] >>628 「スタックなぞ一切使わない」というのが王道です。 すなわち、関数呼出しはCALLでなく、JMPになります。 return addressは、「次の処理の関数」として表現し、引数として渡すのです。 通常スタックフレームに置かれる変数は、ヒープに置くことになります。 関数型言語スレ(総合スレは荒れてるので、HaskellかML) で質問すると詳しい人が教えてくれるでしょう。
630 名前:デフォルトの名無しさん mailto:sage [04/05/19 19:26] ういー、むづかしそうです。 SchemeのCPSてやつですね。
631 名前:デフォルトの名無しさん mailto:sage [04/05/20 02:21] 「スタックなぞ一切使わない」という方法は、ここでいう (4) の前者だよね。 ttp://lists.sourceforge.jp/mailman/archives/gauche-devel-jp/2002-November/000018.html ttp://lists.sourceforge.jp/mailman/archives/gauche-devel-jp/2002-November/000019.html
632 名前:デフォルトの名無しさん mailto:sage [04/05/21 02:19] >>630 やりたいこととは違うと思うけど、Schemeを普通のCにコンパイルする方法。 home.pipeline.com/~hbaker1/CheneyMTA.html - 関数呼出しはCの関数呼出しとしてコンパイルされるが、CPSなのでreturnは決してしない - スタック領域をヒープとして用いる - スタックがあふれそうになったら、copying GCで新しいスタック領域に移し計算を続行する - GCのスタックを走査する部分にはCPUに依存しないので、Cだけで書ける 昔Sigplan Noticesで読んで面白いと思った。
633 名前:デフォルトの名無しさん mailto:sage [04/05/23 00:00] bison / yacc の使い方の質問です。 bison とか yacc って、みんな初めは電卓作りますよね。 3 + 5 (Return) って入力すると「画面上に」8をprintfするやつ。 これ、画面上で8を返すんじゃなくて、 yyparseの返り値とかそういう感じで yyparse の呼び出し元に 8 を何とかして知らせる方法ないですか? ただし、グローバル変数は使わないものとして。
634 名前:デフォルトの名無しさん mailto:sage [04/05/23 15:40] >>633 /usr/lib/yaccpar とか /usr/share/bison/bison.simpleを書き換える。 bisonは #define YYPARSE_PARAM foo を定義しておくと、void *fooが引数として渡されるから、アクションでその中に 答を入れて返すようにすればいいのでは。 プログラム中からyyparseを複数回呼出す場合は、先読みバッファの再初期化に注意。
635 名前:名無し@沢村 [04/05/24 21:41] おまいらよ、おれはつい最近つーか、たったいまさっきtcl/tkつーコンパイラの存在を知ったよ。 いまDLしてるところで、まだ開けて見てないんだが、Webでの説明を見た限りじゃなんか良さげだった。 つーか、GUIに関しては、Visual C++よりもちゃんとしたGUIアプリが簡単につくれるとのことだ。 ただ計算的な処理には不向きということだが、そこは何かC言語で書いて追加できるとのことだ。 おれはちょっとこのtcl/tkを調べてみるが、ホントにGUIに関して良さげだったら、いま開発中の「Vicual E++」は、 このtcl/tkで書き直してもいいな。Visual C++じゃエディタの予約語の色づけとかチョー面倒だしな… そして内部のメインの処理だけをC言語で書くようにすればいいからな… それができそうかどうかをまず調べてみようと思う。 次に調べたいことは、おれが次につくりたい高級言語に、tcl/tkはオープンソースらしいから、パクレる部分があるかどうかということだ。 ともあれ、おれのコンパイラの開発は飛躍的に前進しそうだな。 おまいらよ、おれはtcl/tkいま知ったぞ。おまいらは、tcl/tk知らなかっただろう?
636 名前:デフォルトの名無しさん mailto:sage [04/05/24 22:11] >>635 tcl/tkって「チックル・チーコ」って読むんだよね?
637 名前:デフォルトの名無しさん mailto:sage [04/05/24 23:11] >>635 お前だけ。
638 名前:名無し@沢村 [04/05/24 23:49] Tcl/Tk、DLしたが、何やこれわぁ!?スクリプトやないか? 実行ファイル作成できんのか?HSP以下か?ゴミソフト!!!
639 名前:デフォルトの名無しさん mailto:sage [04/05/25 00:46] セックル・チンコ
640 名前:デフォルトの名無しさん mailto:sage [04/05/25 01:35] >>638 tclsh, wish という位だから、tcl/tk は一種のシェルだよ。 C から system() でシェルのコマンドを実行するのと似た様な感じで使える。 まぁ、もちっと面倒だけど。 俺も以前 tcl/tk からパクれる所が無いかなとソース眺めてみたけど、 C で実装されている部分は低レベルな所だけだったような。
641 名前:デフォルトの名無しさん mailto:sage [04/05/25 10:49] TclつったらPerlと同じくらい歴史の長いスクリプトなんだが アホは知らなかったのね。
642 名前:デフォルトの名無しさん mailto:sage [04/05/25 10:54] >>641 言語で大事なのは歴史の長さよりも話者人口だよ。 歴史の短い Java をみんなが使うのはなぜだと思う? Algol や Prolog が滅びたのは?
643 名前:デフォルトの名無しさん mailto:sage [04/05/25 12:04] 今頃Tcl持ち出してくるなんて100%ネタだと思ってたんですが。 釣りだよね?親切に説明してる640が気の毒だ。
644 名前:デフォルトの名無しさん mailto:sage [04/05/25 13:29] >>642 Algolはともかく、Prologは滅びてはいないだろ。 Algolにしたって、形を変えてその思想は受け継がれているわけだし。
645 名前:デフォルトの名無しさん mailto:sage [04/05/25 13:53] >>642 知名度の話をしてるんだが。なにが言語で大事なのは、だ。 かってに妄想してチンコ膨らましてんじゃねーよキモイ。
646 名前:デフォルトの名無しさん mailto:sage [04/05/25 19:15] 642じゃないけど、 妄 想 ま で 制 限 さ れ て た ま る か 妄想でチンコ膨らそうぜ
647 名前:デフォルトの名無しさん mailto:sage [04/05/25 21:40] >>642 Tclはハード設計ツールの組込みスクリプト言語ではメジャーです。 (Tclはいやだけど、独自言語よりはましだよな) もともとTclはアプリ組込み用だし。tclshもwishも組込みのサンプル みたいなもんです。
648 名前:デフォルトの名無しさん mailto:sage [04/05/25 22:13] でも結局、Tk のほうが Tcl よりも何倍もメジャー。
649 名前:名無し@沢村 [04/05/26 21:18] Starpack Tcl/Tkでつくったスクリプトを実行ファイルに変換するツールだな。 が、わし英文読めんけん、このページのどっからDLしていいかわからんのよ。 このページの何行目の何という文字をクリックするとDLできるか、教えて〜♪ www.interq.or.jp/japan/s-imai/tcltk/tclkit.html
650 名前:デフォルトの名無しさん mailto:sage [04/05/26 21:45] 沢村師ねよ
651 名前:デフォルトの名無しさん [04/05/29 19:38] ここは沢村を呪うスレとなりました。
652 名前:デフォルトの名無しさん mailto:sage [04/05/29 22:11] -=、 ̄`―''" |\ `'''―'''" | || |ヽ、_____,へ、 ,...--、 `―‐ァ‐...::', \:::::::::::::::::::: | || |ヽ、___,ヘ、| ┌───┐ i´ ,. ' ..::....`'''‐--‐''"~...:::::::::ヽ ` 、::::::::::::::::| || | ┌─┐ i´ | | │ | -=ニ"_,...、-- ヾヽ、::::::::::::::::::::::::::::::::ヽ `、 `,::::::| || | | │ | | | .| | `''‐-`ヽ.`''‐-..._:::::::〃:::l:::l`ヽ..ノヽヾ,: | || | | │ | | |____| | ,..-‐''''‐----'":::::::`ヽ、 /l:/|::::/l:::lヾ.‐'""' i| l | || | | │ | |.┌─‐┐┌┐.| __,. ' ......:::::::::::::::::::::::::::::::::::: `''1 l! l::::i lヾ|,...-==l. l:| || | └─┘ | |ノ ,ヘ、 | | レ' `ー--‐' ̄`> ....:::::::::::::::::ノ.._,...ヾ!ノ-':::/~ ノ i | || .| | ̄ ̄|ノ / /` .| | ,.. '" ...::::::::::::::::::::::::::ヽ< ̄`>'" `ー‐‐''"ノ..| || |ノ / / | | -‐'"゛`''‐''" .......::::::::::::::::::::::::::::::::::::::{ `‐',ヘ | ,..、_ .| || / / | | /| ....__...:::::::::::::::::::::::::::::::::::::::::::::::::::::::!、 ! ,..-` ,. | || /./ .| | . / | -"--- ....___,...--- ._::::::::::::::::::::`、 `‐' _ィ' V| || ._ _/./ . | └──'´ .,) , '" ̄..::::::::::::::::::::::::::〉__,..w、ァ'"Vハノ | || `ー─‐'´ `ー───'´ ,..--- ....__,. ' ....:::::::::::::::::::::::::::::::::::::::::Vi,..ハ---'" | || ,. ' .....:::::::::::::::::::::::::::::::::::::::::::::::::::::::::'、. ― .| || -=-‐-‐'゛`''‐-.._ _,..-----==- .:::::::::::`ー.`--‐'",'| ||
653 名前:デフォルトの名無しさん mailto:sage [04/05/30 08:43] 沢村が全てを台無しにしたんだな。
654 名前:デフォルトの名無しさん mailto:sage [04/06/02 01:19] マルチスレッドが良く分からない。マルチスレッドなコードを生成するのには コンパイラ側で何かしてあげなくてはいけない事があるのでしょうか。 それともランタイム環境の問題なのかな。
655 名前:デフォルトの名無しさん mailto:sage [04/06/02 03:04] tls(thread local storage)なんてのが言語仕様として定義されていればコンパイラはそれを意識する必要があります。
656 名前:デフォルトの名無しさん mailto:sage [04/06/02 07:57] >>655 完全にライブラリレベルなのかなと思っていたのですが、そういう訳でもないんですね。 pthread ライブラリを wrap して、他のライブラリも MT-Safe に作れば良いのかと 思ってました。どうもありがとうございます。
657 名前:デフォルトの名無しさん mailto:sage [04/06/09 22:05] インタープリタなんかではスレッド作るとそのスレッド専用の VM が起動する処理系が あるみたい。コンパイルされる言語でも、スレッド毎にランタイム環境を作ってあげれ ば良いのかな。
658 名前:デフォルトの名無しさん mailto:sage [04/06/09 22:48] >>657 コンパイルされる言語の場合は、ホスト環境のpthreadライブラリを呼び出す様に すればいいのでは? 今後主流になると思われるSMP環境を考えたら、複数のCPUを有効に使えるかも
659 名前:デフォルトの名無しさん mailto:sage [04/06/10 00:20] >>658 pthread_create() が C の関数を引数に取るので、クロージャとかを渡したい場合に 何となく面倒じゃないかなと思ってました。変数部分は引数として渡してあげれば 問題無いような気がしてきました。
660 名前:デフォルトの名無しさん mailto:sage [04/06/16 10:58] bison と flex を使っています。 flex では yylval をガンガン使っています。 bison で %pure_parser したら flex が吐き出す C コードのコンパイルで氏にました。 どうすれば %pure_parser しても yylval (と同じような機能) を flex で使えるでしょうか。
661 名前:デフォルトの名無しさん mailto:sage [04/06/16 16:28] >>660 自己レス www.timeparadocs.net/bab/flex_bison/flex_bison.htm これで解決しますた。 が、flex のファイルに yylval.hoge と書いていたのを yylval->hoge と書かないと逝けないようです。
662 名前:デフォルトの名無しさん mailto:sage [04/06/17 23:22] boostのspiritっていじって遊ぶにはよいけど、 実際問題使えるものなのかな?
663 名前:デフォルトの名無しさん [04/06/18 16:14] boost::spirit便乗質問なんですがパースした後 parse_infoのfullを調べるとエラーが発生したか確認できますが エラーが発生した行番号を取得するにはどうやったら良いんでしょうか?
664 名前:デフォルトの名無しさん mailto:sage [04/06/18 21:33] position_iterator(勘
665 名前:デフォルトの名無しさん [04/06/19 22:30] うわ、みてみると確かにそれらしい気配が・・・ しかし、よく意味が分からない罠・・・
666 名前:読まずにレス mailto:sage [04/06/22 00:47] JJTreeでJVM上で起動するスクリプトを書くのはアリですか?
667 名前:デフォルトの名無しさん mailto:sage [04/06/22 10:17] だめ
668 名前:デフォルトの名無しさん [04/06/23 23:35] このようなコンパイラ誰か作ってもらえません? イメージ的にはVMを介さない.NETみたいな。 開発の形態はApacheみたいに元となるものがあって ユーザーが拡張プラグインを自由に作って公開できるようなのがいいな。 ・ネイティブコードを吐く ・OSは問わない ・VMなどを介さない ・メインとなる構文はあるが、ユーザーが自由に構文を追加・変更できる。
669 名前:デフォルトの名無しさん mailto:sage [04/06/23 23:38] >>668 D言語でええやん
670 名前:デフォルトの名無しさん mailto:sage [04/06/23 23:38] >>668 ttp://hp.vector.co.jp/authors/VA015412/
671 名前:デフォルトの名無しさん mailto:sage [04/06/23 23:42] >>669 D言語って名前くらいは聞いたことあるんですけど、 >>668 で書いたようなことを実現しているんでしょうか?
672 名前:デフォルトの名無しさん mailto:sage [04/06/24 00:03] Lisp系を使えばいいんでないかとオモタ
673 名前:デフォルトの名無しさん mailto:sage [04/06/24 00:15] >>668 このようなコンパイラ誰か作ってもらえません? というクレクレな割に > ・ネイティブコードを吐く > ・OSは問わない いきなりハードル高い
674 名前:デフォルトの名無しさん mailto:sage [04/06/24 00:25] >>673 APIの類を使わなければ大丈夫 CPUは限定されるが
675 名前:読まずにレス mailto:sage [04/06/24 00:36] ダメですか…orzガックリ こっそり作ることにします。
676 名前:デフォルトの名無しさん mailto:sage [04/06/24 00:39] .NETだから、膨大なライブラリで動的な言語で言語非依存のバイナリインターフェイスを持ってないとダメだな
677 名前:デフォルトの名無しさん mailto:sage [04/06/24 02:13] >>668 死ねボケ
678 名前:デフォルトの名無しさん mailto:sage [04/06/24 02:20] >>677 お前が死ねカス
679 名前:デフォルトの名無しさん mailto:sage [04/06/24 02:23] >>678 お前も死ねタコ
680 名前:デフォルトの名無しさん mailto:sage [04/06/24 09:50] goto 677
681 名前:デフォルトの名無しさん mailto:sage [04/06/24 09:58] nop
682 名前:デフォルトの名無しさん mailto:sage [04/06/24 10:11] lea eax, dword ptr[eax]
683 名前:673 mailto:sage [04/06/24 13:10] >>674 > APIの類を使わなければ大丈夫 画面を含む一切の入出力ができなくなりますが
684 名前:デフォルトの名無しさん mailto:sage [04/06/24 14:11] ブートから初めてVESAなり叩けば良い
685 名前:デフォルトの名無しさん mailto:sage [04/06/24 21:45] >>668 は実行可能ファイルとは一言もいってない訳だが。
686 名前:デフォルトの名無しさん mailto:sage [04/06/25 00:58] このページ挙がってないのかな? www.csg.is.titech.ac.jp/~chiba/lecture/os/
687 名前:デフォルトの名無しさん mailto:sage [04/06/26 03:09] gosub 687
688 名前:デフォルトの名無しさん mailto:sage [04/06/27 04:13] >>683 >画面を含む一切の入出力ができなくなりますが 要求事項にないから、いいんじゃない?
689 名前:デフォルトの名無しさん mailto:sage [04/06/27 05:13] >>683 GCC があるんだから自分の好きな言語のフロントエンドを書けばいいじゃん。
690 名前:デフォルトの名無しさん mailto:sage [04/06/27 08:28] 簡単に言ってくれるが、gcc難解すぎて弄る気にならん
691 名前:デフォルトの名無しさん mailto:sage [04/06/27 10:36] >>689 GCCのフロントエンド書いたときあるの?
692 名前:デフォルトの名無しさん mailto:sage [04/06/27 11:41] >>689 gcc使っても>>668 の用件に合わせるのは難しいままだろ? 無知蒙昧な人?
693 名前:デフォルトの名無しさん mailto:sage [04/06/27 17:10] >>689-692 GNU Common Lispでマクロをいじれば何とかなりそう。
694 名前:デフォルトの名無しさん mailto:sage [04/06/27 17:10] www.cminusminus.org/ cs1.cs.nyu.edu/leunga/www/MLRISC/Doc/html/INTRO.html llvm.cs.uiuc.edu/Features.html gcc.gnu.org/onlinedocs/gccint/RTL.html C--, MLRISC, LLVM, RTL... 色々在るけど、誰か使った事ある?
695 名前:デフォルトの名無しさん mailto:sage [04/06/27 23:04] >>685 まあ、ここ見てる奴は「ネイティブコード」と書いてあるからそんな疑問は浮かばんわけだが。
696 名前:デフォルトの名無しさん mailto:sage [04/06/28 00:10] ネイティブコードと、オブジェクト(実行可能)ファイルを混同して考えるのはお前くらいなものだが。
697 名前:デフォルトの名無しさん mailto:sage [04/06/28 00:28] C--は使ったことあるよ。 結構面白いけど、関数型言語とか論理型言語とか、 実装研究がまだまだ行われている言語向けだなあ。
698 名前:デフォルトの名無しさん [04/06/29 18:16] Common Lispのプリプロセッサ(マクロ)って そんなに自由度が高いの?
699 名前:デフォルトの名無しさん mailto:sage [04/06/29 20:58] >>698 自由度は高いよ。 マクロ定義とは実質的にLispコードを生成する関数だとか。 まあ、C++のtemplateもだけど自由度が高ければ高いほど解読しにくいわけで、 達人以外が使っても生産性が大して上がらない気もする。
700 名前:デフォルトの名無しさん mailto:sage [04/06/29 22:39] Lispのマクロは 評価時に展開されるから *プリ*プロセッサとは言わない
701 名前:デフォルトの名無しさん mailto:sage [04/06/30 22:18] >>700 評価に先駆けて展開しといたり、 コンパイル時にも展開できるわけだが。 まあ話を平たくすると、いつでもできるわけだ。
702 名前:700 mailto:sage [04/06/30 23:25] >>701 Lispの評価器に関する知識が必要な話を マクロ=プリプロセッサという世界のの人に 今説明しても混乱するだけかと
703 名前:デフォルトの名無しさん mailto:sage [04/07/01 00:28] >>698 S式を二回評価すると思ってね。(おおざっぱ) 一回目でプログラムの生成、二回目で生成されたプログラムの実行。 LispはデータもプログラムもS式だから、 こういうのは機構的にもプログラミング的にも簡単。 一度遊んでみると良い。
704 名前:デフォルトの名無しさん mailto:sage [04/07/01 12:02] C, C++だと MYMACRO(a,b,c) { ... } // a,b,c,..は可変個引数 から int a=0; int b=1; int c=2; ... my_macro_end(a,b,c); を生成するようなのは書けないでしょ? Lispのマクロはできます。 C++やJavaだとデザインパターンなどで似たようなコードをクラス毎にあちこち で書かないといけない(が、C++のテンプレートでは表現できない)ことがある。 そういう場合にパラメータを与えて雛形からコードを生成するスクリプトをRuby などで書くことを考えましょう。 Lispのマクロなら全部Lispだけでできます。
705 名前:デフォルトの名無しさん mailto:sage [04/07/01 12:03] 後はなんだろう。処理に必要なデータを静的に持っておきたいとしましょう。 例えば、isdigit()のために、その文字が数字かどうかを記録した1バイト文字 256個分のテーブル(文字が数字なら1、数字でなければ0)を定義したいとします。 そこで、 int isdigit_table[] = { 0, 0, 0, ...., 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, ...., 0 }; と書く代わりに int isdigit_table[] = { (eval-when-compile // コンパイル時に実行 int table[256]; char* digits="0123456789"; memset(table, 0, 256); for (char* d=digits; *d!='\0'; d++) table[*d] = 1; return table;) }; みたいなことを書けば、(eval-when-compile ...)で囲んだ処理をコンパイラが 実行して、その結果のテーブルとして同じ中身のisdigit_tableを定義できると 思ってください。 C++だとコンストラクタでもできますね(コンパイル時でなく実行時になりますが)。 要するに、C/C++のマクロ(cpp)が格段に高機能な言語になったとしましょう (C自体では嬉しくないから、RubyとかPHPとか?)。その場合のC,C++に相当する本 体の言語がLispであり、ついでにcppの言語も同じLispになったと考えればいいです。
706 名前:デフォルトの名無しさん mailto:sage [04/07/01 13:58] まあLispは面白い言語なので SICPは読んで損がない本だと思うよ
707 名前:デフォルトの名無しさん [04/07/01 23:20] まぁ、LISPやる奴で実用的なプログラム書ける奴見たこと無いんだけど?
708 名前:デフォルトの名無しさん mailto:sage [04/07/01 23:36] >>707 emacsってそんなに使い物にならない環境なのか。なるほど。 やっぱvi?(違
709 名前:デフォルトの名無しさん mailto:sage [04/07/01 23:38] xyzzyがWin emacsの筆頭?
710 名前:デフォルトの名無しさん mailto:sage [04/07/01 23:58] >>704 C++でならTypeList or boost::mpl使えば書けそう。 まあ流石に100個も200個も可変長引数を渡されると無理だろうけど。
711 名前:デフォルトの名無しさん mailto:sage [04/07/02 00:12] ECMAScriptを解析してくれて、しかも組み込み関数・オブジェクトを定義できるライブラリが欲しい 自作すると変数宣言と組み込み関数・オブジェクトのみになりそうだ
712 名前:デフォルトの名無しさん mailto:sage [04/07/02 00:38] Schemeは括弧さえ折り合いつけば最高の言語の一つだ
713 名前:デフォルトの名無しさん mailto:sage [04/07/02 14:23] >>711 クロスプラットフォームなら spidermonkey とか、 Windows だけでいいなら ActiveScript とか。 どちらでも簡単にできるよ。
714 名前:デフォルトの名無しさん mailto:sage [04/07/02 17:21] >>709 >Win emacsの筆頭 Meadowの方が広く使われてます。
715 名前:デフォルトの名無しさん mailto:sage [04/07/02 22:36] >>713 SpiderMonkeyはかなりよさげだね しかし英語だらけで組み込めるのは当分先か・・w
716 名前:デフォルトの名無しさん mailto:sage [04/07/03 10:17] >>704 そういうプリプロセサ書いて、差し替えれば済む話だと思うけど。 全部 C/C++ でできますよ。(藁
717 名前:デフォルトの名無しさん mailto:sage [04/07/03 10:38] C/C++ではたしかpreprocessor commandsも規格の一部な罠。
718 名前:デフォルトの名無しさん mailto:sage [04/07/03 11:22] プリプロセッサを差し替えるオプションなんてあるの? Visual C++とgccを見たけど見つからなかった。
719 名前:デフォルトの名無しさん mailto:sage [04/07/03 15:40] >>716 それじゃ「コンパイラ書けばできますよ」ってのと変わらないやん.
720 名前:デフォルトの名無しさん mailto:sage [04/07/03 22:50] >>718 自分のプリプロセッサから、コンパイラ呼べばイイだけじゃない?
721 名前:デフォルトの名無しさん mailto:sage [04/07/04 02:06] >>720 そりゃそうだ。でも差し替えるとは言わんな。下らないことをきいてしまった……。
722 名前:デフォルトの名無しさん mailto:sage [04/07/04 09:28] 差し換えるならspecファイルだろ。
723 名前:デフォルトの名無しさん mailto:sage [04/07/04 11:46] >>718 GCC とかならソースあるんだから、適当に修正して実行ファイル入れ替えれば良いんじゃないのか ? >>719 まあ、そりゃそうだけど、コンパイラ書くより多少難易度は低いだろ。
724 名前:デフォルトの名無しさん mailto:sage [04/07/04 16:57] 結局使い物にはならないと。 普通のアプリケーション書くのに特定のコンパイラのバージョンとそれへのパッ チ込みで保守したくはねーなあ。
725 名前:デフォルトの名無しさん mailto:sage [04/07/04 18:28] まあ、このスレ的にはコンパイラまで作ってしまえって事になるかな。 TinyC->.asm位だったら簡単だしね。 俺は#defineなどC言語準拠なプリプロセッサに アセンブラ風の複数行マクロを使えるような物を作って、 言語ごとに微調整しているよ。 ()を使わないバージョンなどね。 エラーを探知するために、##lineっていう 現在のコンパイル行をプリプロセッサ->コンパイラへ通知する命令をつくって、 デバックもしやすくしているよ。
726 名前:デフォルトの名無しさん mailto:sage [04/07/04 21:39] >>724 て言うか、普通のアプリケーション書くのに >>704 みたいなことはあまり必要ないだろ。 マクロプロセサやプリプロセサが高機能だと色々おもしろいけど、実際のところ後の保守が大変だったりするからあまり使わん。 昔使った PL/I のプリプロセサは、IF 文は当然、FOR/WHILE の制御構造や PROCEDURE/FUNCTION なんかの手続き/関数定義までできた。 だから凝った定義を書けば、ソースを短く書けたけど、プリプロセサ文をデバッグする手間を考えたら素直にソースを手で展開した方が早かったよ。(藁 MASM なんかのマクロアセンブラでも同じような経験したことある人は多いと思うよ。
727 名前:デフォルトの名無しさん mailto:sage [04/07/05 01:31] 俺はわりとしょっちゅう欲しくなる方だな。 Lispのマクロで俺言語を作ることを考えると>>726 も想像はできるけど。 >>726 とは逆に最初書くときはベタに展開したソースを書くけど後から 保守性を考えてマクロでまとめることも。あまり凝ったことはしないけどさ。 cppに変数とifとfor eachだけでもあれば世の中もうちっと良かったろうに。
728 名前:デフォルトの名無しさん [04/07/13 22:28] コンパイラとかの参考図書は、よくありますが スクリプト言語の参考図書(定番)は、ごぞんじないですか?
729 名前:デフォルトの名無しさん mailto:sage [04/07/13 22:52] 各OS毎のリソースコンパイラの作り方に触れたサイトってありますか?
730 名前:デフォルトの名無しさん mailto:sage [04/07/14 00:35] >>728 その二つに大きな違いはない。
731 名前:デフォルトの名無しさん mailto:sage [04/07/14 01:11] >>728 コンピュータアーキテクチャの本じゃないか? >>730 構文解析だけじゃなくて、実行機の話してるんじゃないの?
732 名前:デフォルトの名無しさん [04/07/14 01:26] すいませんyacc/lex初心者の質問です。 WIN XPのコンソールから GNUのFLEXとBISONとボーランドのBcc32でコンパイルしてるのですが bisonとflexは通過するのですが 最後のCコンパイラのリンク時に"yyllocが定義されてない"というエラーが出てしまいます。 bison.simpleとbison.hairを見てもよくわからないので なにがまずいのでしょうか?
733 名前:デフォルトの名無しさん mailto:sage [04/07/14 01:39] >実行機 ってなんじゃらほい?
734 名前:デフォルトの名無しさん mailto:sage [04/07/14 11:23] >>728 『インタプリタ進化論』なんかいいのでは。スクリプトに特化した内容ってわけでもないけど。
735 名前:デフォルトの名無しさん [04/07/14 19:49] このスレでよく出てくるyaccやlexってのはソフトウェアなの? それともライブラリの類? で、実際にはどのようなことをするものなの?
736 名前:デフォルトの名無しさん mailto:sage [04/07/14 20:00] >>735 ttp://www.linux.or.jp/JF/JFdocs/Lex-YACC-HOWTO.html
737 名前:735 [04/07/14 21:00] つまり、字句解析や構文解析をするソフトウェアね。 コンパイラにおけるそれらの処理を外部のソフトウェアに 頼ると言うのは有りかね?
738 名前:デフォルトの名無しさん mailto:sage [04/07/14 21:02] >>737 何を言ってるの?
739 名前:ほんたま [04/07/14 21:26] おみゃ〜らよ、おれのスリムドカンはある意味コンパイラよ。 スリムドカンはおれのページにあるから見ちみれ? hp.vector.co.jp/authors/VA015412/ おみゃ〜らよ、おれはいまリソースエディタをつくってるのよ。 スリムドカンに装備させるためよ。 おみゃ〜らよ、コンパイラをつくるのはいいが、リソースエディタのないコンパイラはコンパイラとはいわんぞ! 自分じわかるかな?
740 名前:デフォルトの名無しさん mailto:sage [04/07/15 00:53] >>737 字句解析や構文解析をするソースコードを生成してくれるソフト これ以上は自分で調べてくれ
741 名前:デフォルトの名無しさん mailto:sage [04/07/15 04:40] >>735 あなた、最高に頭悪そうですよ?
742 名前:デフォルトの名無しさん [04/07/15 18:37] 昔、OL進化論っていうのがあったなぁ〜 ちょっと思い出したw
743 名前:デフォルトの名無しさん mailto:sage [04/07/15 19:34] インタプリタ進化論って、絶版じゃなかったっけ? 読みやすい本でいい本だと思うけど、 実行環境の話はそれほど無かったような気がします。 とはいっても、字句/構文/意味解析を作るより 実行環境を作るのって、力業でできますしそんなに難しくないと思いますよ。
744 名前:デフォルトの名無しさん mailto:sage [04/07/15 23:56] My VMをレジスタマシンにするかスタックマシンにするか悩む スタックマシンにすると決めた、するとbytecodeにするかwordcodeにするかまた悩む スピードの為にwordcodeにするならそもそもレジスタマシンにするべきなのかと悩む 一向に前に進みましぇん
745 名前:ほんたま [04/07/16 00:05] おみゃ〜らよ、おみゃ〜らさーん♪ おりはよ、「Slim de Can」を使ってやっとメインウィンドウにコントロールをつけるサンプルの作成に成功したぜ。わはは♪ 「Slim de Can」ってすげ〜な〜、イベントドリブンプログラムが作成できるとこまでついに進化したよ。 おりはもう神だね♪どうよ? hp.vector.co.jp/authors/VA015412/
746 名前:デフォルトの名無しさん mailto:sage [04/07/16 01:05] 全部作れ。
747 名前:ほんたま [04/07/16 13:55] おみゃ〜らよ、おみゃ〜らさーん♪ おりはよ、「Slim de Can」を使ってあるボタンをクリックしたらある処理を行わせ、別のボタンをクリッしたら別の処理をおこなわせるプログラムの作成についに成功したよ。 つまり「Slim de Can」はすでにイブントドリブンプログラムがつくれる環境になっているということを自ら証明したという次第よ。 おい、「Slim de Can」はすでに簡単なゲームくらいはころっとつくれるぞ。誰かつくらんか? 「Slim de Can」ってすげ〜な〜。 おりはもう神だね♪どうよ? hp.vector.co.jp/authors/VA015412/
748 名前:デフォルトの名無しさん [04/07/16 22:00] コンパイラ作るならBNF記法(拡張)についての理解は必須ですか?
749 名前:デフォルトの名無しさん mailto:sage [04/07/16 22:13] 無くても作れるよ。あった方が楽だけど。
750 名前:デフォルトの名無しさん mailto:sage [04/07/17 00:00] context free grammerについては「理解」という程大変なことはない気がする。 # オートマトンを理解するにはちっと勉強が必要になるが、 # それこそ知らなくても何とかなりそう なおLL(1)文法と属性文法を学んでしまえばりっぱな「コンパイラ」が作れると思う。 # リンカとかアセンブラとかの知識は既習だとして
751 名前:デフォルトの名無しさん [04/07/17 03:09] 言語設計はともかく、コンパイラ設計となったら フロントエンドよりバックエンドのが難しいというか 面白いと思うんだが、どうしてフロントエンドの話しか出ないんだろうか?
752 名前:デフォルトの名無しさん mailto:sage [04/07/17 03:43] たぶん、そこまで行きつかない奴しかこのスレにいないから。
753 名前:デフォルトの名無しさん mailto:sage [04/07/17 09:41] バック部のトピックス ・並列化(ループ,タスク.手続き間解析は必須) ・別名解析(フロー依存はまだ重い) ・SSA(冗長コピーをどう減らす? 別名の扱いも) ・コピー伝播(非常に重要.でも語ることは余りないか) ・部分冗長性削除(やりすぎると性能悪化することも.ライブレンジを考慮) ・CPS(手続き型ではやらんか) ・レジスタ割付け(PowerPCとかなら素直だが,制約のきついCPUだと面倒) ・ソフトウェアパイプライン(最内からやらない手法が最近発表されてた) ・命令スケジューリング(コンパイル時間爆発の主犯) ・SIMD命令やDSP命令の生成(上から下までからむので大変.パターンマッチしかない?)
754 名前:デフォルトの名無しさん [04/07/17 18:50] 本日、佐々政孝氏の「プログラミング言語処理系」という本買いました。 コンパイラについてちゃんと学んでいこうかと思います。
755 名前:デフォルトの名無しさん mailto:sage [04/07/17 19:02] バック部はCにトランスレートする事で済ませちゃってるから、あんまやらないんだよな。 とはいっても、最近の仕事でそういうのをする必要もあったりして 書籍紹介とかやってもらえます?
756 名前:デフォルトの名無しさん mailto:sage [04/07/17 19:07] そういや 21st Century Compilers 読んだ人いる?
757 名前:デフォルトの名無しさん mailto:sage [04/07/17 19:57] あぁ、それね…。2005年11月15日に延びたみたい。_| ̄|○ www.aw-bc.com/catalog/academic/product/0,4096,0321131436,00.html Copyright: 2006ってなってるからもっと延びるかも…
758 名前:デフォルトの名無しさん [04/07/17 20:18] バックエンド「も」それなりに解説している本としては龍本はもちろんのこと、appel本や中田本がありますね。 龍本がバックエンド概要集だとすれば、 appel本が実践本、中田本が理論本といった感じでしょうか? バックエンドオンリーな変り種としては Robert Morgan: Building an Optimizing Compiler (ISBN 1-55558-179-X) ってのがあります。こいつは本当にバックエンドしか書いていません。
759 名前:デフォルトの名無しさん [04/07/17 20:21] いまだに龍本なの? 進歩ないね。
760 名前:デフォルトの名無しさん mailto:sage [04/07/17 20:54] 何でそんなに詳しいのに新たな言語を作ろうとしないの?
761 名前:デフォルトの名無しさん mailto:sage [04/07/17 20:57] >>760 何でそんな労力割かなきゃならぬ?
762 名前:デフォルトの名無しさん mailto:sage [04/07/17 21:05] >>757 がぁん。評判よければ夏休みにでも読もうと思ってたんだが。
763 名前:デフォルトの名無しさん mailto:sage [04/07/17 21:17] 目を通すだけで満足だから何も作らんのだろうな
764 名前:デフォルトの名無しさん mailto:sage [04/07/17 21:21] バックエンドまで作りこんだ言語を書いても、それで食ってける人はごく少数だし。 理屈を理解して普段のプログラミングに生かせれば、それで良いかと。
765 名前:デフォルトの名無しさん mailto:sage [04/07/17 21:36] >>761 本当はコンパイラの原理とかよく分かって無いんだよな?
766 名前:デフォルトの名無しさん mailto:sage [04/07/17 22:08] 原理を理解→新しい言語、でもあるまいに
767 名前:デフォルトの名無しさん mailto:sage [04/07/17 23:31] >>760 一番多い需要は新しい言語の作成ではなく、特定分野特化物だからだよ 趣味の人は確かに新しい言語って事になるんだろうけどね。
768 名前:デフォルトの名無しさん mailto:sage [04/07/18 00:44] 言語ビジネスは死々累々とはMatz氏の言
769 名前:デフォルトの名無しさん mailto:sage [04/07/18 01:01] >>768 つまり「俺ってば勝ち組w」と主張されたのですね?
770 名前:デフォルトの名無しさん mailto:sage [04/07/18 01:11] >>764 その反対でバックエンドがほとんどのお仕事もあるよ、 特殊なDSPとかの強力オプティマイザ付き簡易言語関係とか。
771 名前:デフォルトの名無しさん [04/07/18 13:04] 割込みすいません、bisonの-v出力で得られる State番号と、もとのソースの行番号を関連づける情報ってどこでしょうか? 同様に、 Rule番号と、もとのソースの行番号を関連づける情報ってどこでしょうか? bisonマニュアルやbison本(といっても古いだけですが)を見ても、載ってませんでした。
772 名前:デフォルトの名無しさん mailto:sage [04/07/18 14:25] >>771 行番号との関連? 別に行番号とは関連しないんじゃない?
773 名前:771 [04/07/18 17:10] どうも、Conflict が発生するようで、いろいろと原因を探ってるんですが、 「State何番が何番とconflictした。」とか出て来るんですが、 具体的にソースのどこがいけないのか場所を探すのに、いつも苦労しているのです。
774 名前:デフォルトの名無しさん [04/07/20 17:56] 構文解析器を作るのに正規表現が必要になりますけど、 正規表現の構文解析ってどうすりゃいいんでしょうか? ものすごく再帰してるんですけど?
775 名前:デフォルトの名無しさん mailto:sage [04/07/20 17:57] 再帰っつーか永久ループですね。
776 名前:デフォルトの名無しさん mailto:sage [04/07/20 18:22] >>774 >構文解析器を作るのに正規表現が必要になりますけど、 無くてもできます
777 名前:デフォルトの名無しさん mailto:sage [04/07/21 00:38] >>774 有限オートマトンでぐぐるか、適当な正規表現ライブラリのソースを読め。
778 名前:デフォルトの名無しさん [04/07/29 19:55] FLEXについて調べているんですが、よくわからないので質問させてください。 UNIXで書かれた字句解析ソース(moto.l)をWindows上で使いたいのですが、 これってWin用のFLEXを使用してmoto.lから、moto.cを作成して それをVisualStudio.Netなんかで、ビルドすればいいんでしょうか? Win用FLEXで吐き出されたmoto.cをビルドしてもエラー出まくりなもので・・・・ なにかうまい方法などあるんですか? (なぜか元の字句解析ソース(moto.l)も一緒にビルドしてしまいエラーになりま す。。。) わかる方がいらっしゃいましたら、 ご教授お願いします。
779 名前:デフォルトの名無しさん mailto:sage [04/07/29 20:01] >>778 なんのエラーが出てます?
780 名前:デフォルトの名無しさん mailto:sage [04/07/29 22:05] なんとなく改行コードの問題?
781 名前:>>778です [04/07/30 11:15] >>779 >>780 レスありがとうございます 改行コードは、LFからCR+LF 文字コードEUCからSJIS に変更をかけ、「bison & flex compiler for Windows GUI」を使って コンパイルをかけ、できたCソースを.NET2003でビルドかけました。 一応、エラーは 「Zsscanf:1番目の引数を'unsigned char*'から'const char*'に変換できません」 というのが、大量にでました。 (これは、Zsscanf関数を大量に使用しているんででています。) また、warningとして 「C4244 '=' _W64 int から intに変換しましたデータが失われているかもしれません」 というのが、たいりょうに出ています。 もしよかったら、ソースをお送りしますが・・・ よろしくお願いします。
782 名前:デフォルトの名無しさん mailto:sage [04/07/30 11:54] >>781 そういう場合は、ここに貼り付けて do.sakura.ne.jp/~junkroom/cgi-bin/megabbs/lounge/index.html
783 名前:> [04/07/30 12:32] >>782 さん こちらにCソースファイルを貼り付けました。 よくわからなかったので、まちがってスレを立ててしまいましたorz do.sakura.ne.jp/~junkroom/cgi-bin/megabbs/readres.cgi?bo=lounge&vi=1091157983&rm=50 すみませんが、よろしくお願いします。 これでだめでしたら、FLEXソースも貼り付けますので・・・
784 名前:デフォルトの名無しさん mailto:sage [04/07/30 13:00] >>783 あぅ、上手く行っても、変更点の説明がしにくいと思うので、ソースもよろしこ。 #なんとなく見えてますが、上手く行くかどうかは不明。
785 名前:> [04/07/30 13:09] >>784 さん 元のFLEXソースを do.sakura.ne.jp/~junkroom/cgi-bin/megabbs/readres.cgi?bo=lounge&vi=1091157983&rm=50 においておきます
786 名前:784じゃないけど mailto:sage [04/07/30 13:35] yytext は YY_CHAR* 型で,これは unsigned char * の typedef になっている. Zsscanf は Zsscanf(const char*, ...) と定義されている. Zsscanf(yytext, ....) というように呼び出しをしたい. ということで 1. Zsscanf の第1引数の型を unsigned char * にするか 2. Zsscanf の呼び出し時に毎回キャストするか のどっちかで対処できるんじゃないかと思う.
787 名前:デフォルトの名無しさん mailto:sage [04/07/30 13:55] 3. コンパイラのcharをunsignedにするオプションを指定する
788 名前:ありがとうございます!! [04/07/30 14:18] みなさん ありがとうございます。 とりあえず>>786 さんの 「1. Zsscanf の第1引数の型を unsigned char * にするか」で 対応し、エラーを回避させました。 それともう一つ基本的な質問ですが、 この作成されたCソースファイルは、 どのように動作させればいいのでしょうか? ライブラリとして動作させる場合、 どの関数をよべばよろしいのでしょうか? (main関数を作成し、それから呼ぶのもどうすればいいのでしょうか?) すみませんが、ご教授お願いします。
789 名前:デフォルトの名無しさん mailto:sage [04/07/30 14:23] >>785 とりあえず、こちらはCygwinのflexしかないので、それでのやり方を説明しておきます。 まず、この部分 int nmatch = 0; int len; const char *base; char buf[255]; va_list ap; va_start(ap, fmt); char skipflag; va_start(ap, fmt) の後に char skipflag がありますが、これはC言語の構文として許されません。 以下のように書きます。 char skipflag; int nmatch = 0; int len; const char *base; char buf[255]; va_list ap; va_start(ap, fmt); コンパイル方法 www.cygwin.com/ より "Install or update now!" をクリックして実行してください。 あとはメッセージにしたがって、インストールするのですが、パッケージの選択のところで flex を入れておく事。 flexの入っているフォルダーにパスを通したら、 flex flex_test.l cl flex_test.c 以上です、 あと、_yywrap _yylex はちゃんと定義して置いてください。 出力結果をC++としてコンパイルしたいのであれば、786氏の意見を参考すれば良いかと思います。
790 名前:デフォルトの名無しさん mailto:sage [04/07/30 14:35] >>788 yylexを呼び出します。 そのあたりは初歩の初歩部分なので、適当に参考書でも買ってきて調べてみるとよいでしょう。 入出力の特化は結構ややこしいので・・・
791 名前:>>778です [04/07/30 14:53] みなさん いろいろ教えてくださってありがとうございます。。。 >>790 さん yylex()を呼び出すというのまでは、調べたのですが これを呼び出すとDOS窓で入力待ちなのかどうかは、わかりませんが 止まったままになってしまします。 いろんなサンプルを見てみたら 単に return yylex(); としているだけなのが、あったので このように書いていたのですが・・・・ こういう呼び出し方ではいけないのでしょうか? 何度も何度もすみませんが、 ご教授お願いします。
792 名前:デフォルトの名無しさん mailto:sage [04/07/30 14:59] >>791 一番簡単な方法は yyin = fopen( ... ) ; として yylex() を呼び出します。
793 名前:>>778です [04/07/30 15:18] >>792 さん ファイルからの読み込みではなく 指定された文字列を受け取って それを変換かけてから、変換後の文字列を 返すというようなプログラムを組みたいのです。 yytextに指定文字列を入れてから yylex()を呼び出せばよろしいのでしょうか? (どこかのサンプルでこのような形のものがあったのですが・・・)
794 名前:デフォルトの名無しさん mailto:sage [04/07/30 15:22] >>793 ちがいまーす!!(^^; 実は貴方のやりたい事は、書き始めると結構ヘビーです。 素直にflexの本を買ったほうが良いかと・・・・ どうしても買いたくなげは YY_INPUT マクロを気合で読んでみるとか?
795 名前:> [04/07/30 15:32] >>794 さん では、入力したい文字列を 一度ファイルに落としてから 再度、yyin = fopen( ... ) ; で読み込むという方法だと まずいでしょうか?
796 名前:デフォルトの名無しさん mailto:sage [04/07/30 15:36] >>795 それで問題がなければ、それでも良いかと・・・・
797 名前:>>778です [04/07/30 16:27] 今のサンプルFLEXプログラムは「H16/7/16」を「平成16年7月16日」に 変換するものなんですが、ファイルに「H16/7/16」を書き込み、保存してから yyin = fopen( ... ) ; として yylex() を呼び出すと、「ヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘ」などと 文字化けが出てしまい、途中で終了してしまいます。 これって何が原因があるのでしょうか?
798 名前:デフォルトの名無しさん mailto:sage [04/07/30 17:17] cygwin でやるんだったら、ソースファイルとテスト用入力ファイルは EUC にしておく。lex(flex) はマルチバイト文字をマルチバイト文字として扱わないからDIGIT [0123456789] の書き方だとダメ。 DIGIT (0|1|2|3|4|5|6|7|8|9) だと動くみたい。
799 名前:デフォルトの名無しさん [04/07/31 00:18] すいませんが、bison.output の見方を解説しているページとか ご存知ありませんか?
800 名前:デフォルトの名無しさん mailto:sage [04/07/31 01:14] >>799 見方を理解しようとしないで、LR解析をある程度理解した方 が良いと思うよ。 そうするとbison.outputの意味が分かるようになる。
801 名前:799 [04/07/31 22:52] LR解析を理解するための、書籍とかありますか?
802 名前:デフォルトの名無しさん mailto:sage [04/07/31 22:54] はじめてのLR
803 名前:デフォルトの名無しさん [04/07/31 22:54] 1つの先読みだけしか許されないというのは、かなり不自由かも。 LR(1)を完璧に実装した yacc もどきってご存知ないですか?
804 名前:800 mailto:sage [04/08/01 00:44] 800ゴット >>799 =801 コンパイラ系の書籍ならば、大抵構文解析の説明はあるでしょ。 手元の本だと『ドラゴンブック』と『コンパイラの理論と実現』と 『コンパイラ(昭昇堂)』にLR解析の話が書いてある。 >>803 知らないけど、あまり不自由を感じたこと無いな>先読み1 たいしたもの作ってないからかな。
805 名前:デフォルトの名無しさん mailto:sage [04/08/01 01:08] Catalog of Free Compilers and Interpreters. www.idiom.com/free-compilers/
806 名前:デフォルトの名無しさん mailto:sage [04/08/01 02:53] >>803 LLだけとboost::splitを使ってみるとか。 boost.cppll.jp/HEAD/libs/spirit/index.html でも、文法を変えたほうがいいかもね LALR(1)の鬼畜パーススピードを捨てるのはもったいないべ。
807 名前:デフォルトの名無しさん mailto:sage [04/08/01 03:41] LR LL LALR ってなんの略? (1) ってのは1つ先見るってことでよい?
808 名前:デフォルトの名無しさん mailto:sage [04/08/01 04:04] manの番号
809 名前:デフォルトの名無しさん mailto:sage [04/08/01 06:21] >>807 Lonely Rotary Lonely Lolita Lolita and Lonely Rotary
810 名前:デフォルトの名無しさん mailto:sage [04/08/01 12:50] >>807 LR:左から読んで右から導出 LL:左から読んで左から導出 LALR:ルックアヘッド付きLR
811 名前:デフォルトの名無しさん mailto:sage [04/08/01 12:54] 【LR】Left-to-right scanning, Right-most derivation in reverse 【SLR】Simple LR 【LALR】LookAhead LR 括弧内は先読みのこと
812 名前:デフォルトの名無しさん [04/08/01 15:47] LALR(3) ぐらい欲しい。
813 名前:デフォルトの名無しさん mailto:sage [04/08/01 15:57] >>812 探せば GLR 使えるパーサジェネレータもあるぞ。
814 名前:デフォルトの名無しさん mailto:sage [04/08/01 16:49] >>812 漏れはむしろ「欲しい例」を出して欲しい。
815 名前:デフォルトの名無しさん mailto:sage [04/08/01 18:10] 世の中LALR(1)が圧倒的な主流。 それ以外はただの学問的な研究対象か趣味。 まぁ、炉利趣味と同レベルw
816 名前:デフォルトの名無しさん mailto:sage [04/08/01 18:11] DelphiはLALRじゃないのでは?
817 名前:デフォルトの名無しさん mailto:sage [04/08/01 18:40] >>815 C++ は LALR(1) に収まらないワケだが。
818 名前:デフォルトの名無しさん [04/08/01 21:49] >>817 それは書き方が悪いからでしょ? あんなもん、書こうとおもえばいくらでも当てはめられる。 (と思う。)
819 名前:デフォルトの名無しさん mailto:sage [04/08/01 21:59] 俺はめんどくさいから再起下降でいいよ
820 名前:デフォルトの名無しさん mailto:sage [04/08/01 22:38] 俺は再帰降下でいいや
821 名前:デフォルトの名無しさん mailto:sage [04/08/01 22:40] 抗菌加工でいいや
822 名前:>>778です [04/08/02 15:41] お礼が遅れましてもうしわけございません。 ありがとうございました。 >>794 さんがおっしゃっていた YY_INPUT のサンプルをいろいろ 探したのですが、これの他にもDOS窓から入力された文字列を 変換するなんていうマクロなどありますでしょうか?
823 名前:デフォルトの名無しさん mailto:sage [04/08/02 16:56] >>822 YY_INPUTのサンプルって例えば何? サンプルとかじゃなくて、実際のflexが生成するYY_INPUTマクロを見た方がいいよ。 さらにlexの実装によっては、どう工夫してもお望みのことができないもの もあるから、「文字列から入力」っていうのは可搬性の面ではよくない。 とりあえず、flexだったらYY_INPUTを定義し直せばOK YY_INPUTってのは YY_INPUT(buffer, result, bufsize) buffer:文字列を格納するバッファ result:実際に読み込んだ長さ bufsize:バッファの大きさ で、デフォルトではFILE *yyinから読むようになってるはずだから、それを 君が解析した文字列から読む(コピーする)コードにすれば良いね。 そのまま他の環境にコピーしても動かない可能性があるので注意。
824 名前:>>778です [04/08/02 17:55] >>823 さん レスありがとうございます。 確かにYY_INPUTは、FILE* yyinを使って処理していますね。 っということは、scanfなどで入力した文字列をYY_INPUT(buffer, result, bufsize) のbufferにコピーしてあげるようなコードを書けばよいということでしょうか? また、違う例として、DBに格納されているデータを取得してきて、 字句変換させるために FILE* yyinならぬextern char* yyin_charなるものを作成して まずはそこにDBのデータをコピーし、YY_INPUT内でbufferにyyin_charを コピーしてあげるような動きでよいのでしょうか? また、実際にmain関数などから、YY_INPUTを呼ぶには、直接呼んでも よろしいのでしょうか? 質問攻めでもうしわけございませんが よろしくお願いします。
825 名前:823 mailto:sage [04/08/02 19:18] >>842 おいおい、なんか間違えてるぞ。前半は正しい感じだけど、最後のが…? 質問に答えるのは構わないけど、その前に一つ質問させてくれ。 Q. YY_INPUTマクロとは何でしょうか? (何をするものか、誰が使うものか、どこから使うものか、yylex()と YY_INPUTの関係とかに注目。) これに適切に答えられれば、>>824 にあるような質問は無いと思う。 さらにおまけとして…、YY_UNPUTとは何? (ヒント:flexの生成するlex.yy.cにすべての答えがある。)
826 名前:デフォルトの名無しさん [04/08/02 22:21] 結局 >>815は正しいの?
827 名前:デフォルトの名無しさん [04/08/02 22:22] >>800 質問です。 Lex & Yacc (Nutshell) はいかがでしょうか? これもLRを解説してますか?
828 名前:デフォルトの名無しさん mailto:sage [04/08/02 22:31] >>826 すぐ下で答えが出てるじゃん。
829 名前:800 mailto:sage [04/08/02 22:46] >>827 解説してないね。 でも、典型的なシフト還元衝突などの説明と回避方法の解説はある。 ってかこの本もう絶版じゃない? 手に入るの?
830 名前:デフォルトの名無しさん mailto:sage [04/08/03 17:27] >>791 yyinを指定しないと入力が標準入力になるからそうなるのでしょう
831 名前:デフォルトの名無しさん mailto:sage [04/08/03 17:55] yyworld
832 名前:デフォルトの名無しさん [04/08/06 23:12] >>829 一応あるみたいです。 やはり、ドラゴンを理解しないと shift/reduce & reduce/reduce の衝突を完全回避することは難しいですかね?
833 名前:デフォルトの名無しさん [04/08/06 23:13] 在庫だと思われます。↑
834 名前:デフォルトの名無しさん [04/08/09 23:38] 注文してしまった。
835 名前:デフォルトの名無しさん [04/08/30 00:46] age!
836 名前:デフォルトの名無しさん [04/08/30 14:29] 「コンパイラ構成法」の原田賢一氏の研究室のサイトが見つかりません。 移転したんでしょうか? どなたか、ブックマークつけてらっしゃる方います? コンパイラ構成法のソースコードをゲットしたいんですが。
837 名前:デフォルトの名無しさん mailto:sage [04/09/01 10:01] う〜ん。名前空間の実装法がわからん。 だれか、参考になるサイトか書籍、知らないか? クラス定義と同じ方法で良いのかなぁ?
838 名前:デフォルトの名無しさん mailto:sage [04/09/01 10:32] >>837 シンボルテーブルのスタックを作ればいいだけじゃないか?
839 名前:デフォルトの名無しさん mailto:sage [04/09/01 13:55] >>838 >シンボルテーブルのスタックを作ればいいだけじゃないか? それってディスプレイ・・・・・だよねぇ。 ブロックを開くときに名前を覚えておくようにするんだろうか?
840 名前:デフォルトの名無しさん mailto:sage [04/09/01 19:40] 例えばC++には複数の名前空間があってややこしい キーワード 演算子 プリプロセッサ 型 変数 namespace これらは関係を持ったりするしね まあプリプロセッサを除いて基本はみな同じだけど
841 名前:デフォルトの名無しさん mailto:sage [04/09/01 19:42] 名前空間は 関数 namespace クラス だけじゃないのか?
842 名前:デフォルトの名無しさん mailto:sage [04/09/01 19:46] ::、using、export、importが絡むとさらに複雑になる
843 名前:デフォルトの名無しさん mailto:sage [04/09/01 19:57] :: using は簡単 export importはどうだろ
844 名前:デフォルトの名無しさん mailto:sage [04/09/01 20:24] >>840 何を持って基本というか知らんが、実装しようと思うと namespace は深いぞ。 ADL と関数テンプレートとか。
845 名前:デフォルトの名無しさん mailto:sage [04/09/03 18:29] 所詮 namespace は、バカ避けの機能。 優秀なコンパイラ屋が血反吐を吐きながら実装するものの、 それによって実行速度が向上する訳も無く・・・ そもそも優秀なプログラマならば、最初から namespace など 必要としない確固としたコーディングスタイルを身に着けている。 そしてバカなプログラマは、せっかく実装してもらった機能の 使い方自体が分からない。バカは所詮バカ。 namespace って、一体何の為にあるんだろう・・・
846 名前:デフォルトの名無しさん mailto:sage [04/09/03 18:50] ↑ホームラン級のバカ
847 名前:デフォルトの名無しさん mailto:sage [04/09/03 19:24] 所詮 型 は、バカ避けの機能。 優秀なコンパイラ屋が血反吐を吐きながら実装するものの、 それによって実行速度が向上する訳も無く・・・ そもそも優秀なプログラマならば、最初から 型 など 必要としない確固としたコーディングスタイルを身に着けている。 そしてバカなプログラマは、せっかく実装してもらった機能の 使い方自体が分からない。バカは所詮バカ。 型 って、一体何の為にあるんだろう・・・
848 名前:デフォルトの名無しさん mailto:sage [04/09/03 20:04] ダウト。残念ながら、型によって実行速度は上がるんだよ。
849 名前:デフォルトの名無しさん mailto:sage [04/09/03 20:15] いくらなんでも型は重要だろう。
850 名前:デフォルトの名無しさん mailto:sage [04/09/03 20:16] >>845 評価尺度が実行速度だけとは……。1960 年代の人間ですかい?
851 名前:デフォルトの名無しさん mailto:sage [04/09/03 21:23] 60年代だったら消費メモリも重要だな。
852 名前:デフォルトの名無しさん [04/09/04 01:00] 所詮「コンパイラ・スクリプトエンジン」相談室 は、バカ避けのスレ。 優秀なプログラマが血反吐を吐きながら回答するものの、 それによって理解が向上する訳も無く・・・ そもそも優秀なプログラマならば、最初からこのスレ など 必要としない確固とした技術を身に着けている。 そしてバカなプログラマは、せっかく回答してもらった説明の 内容自体が分からない。バカは所詮バカ。 このスレって、一体何の為にあるんだろう・・・
853 名前:デフォルトの名無しさん mailto:sage [04/09/04 01:01] >>852 ワラタ
854 名前:マイク ◆yrBrqfF1Ew mailto:sage [04/09/04 01:22] namespaceは最高だな。 感動もんだ。
855 名前:デフォルトの名無しさん mailto:sage [04/09/04 11:21] >>852 無理してまで回答は僕もしないし、他の人もしてないんじゃない。 コンパイラやスクリプトを作ろうという人口は少ないから過疎なのは仕方が無いが 僕は日ごろから巡回しているし、このスレ向きの質問書けば回答は帰ってくるよ。 もちろん僕もクレクレ君とOO厨房の言語論争的な話題は放置してるけどね。;-P キミには分らないかもしれないが機能しいてない掲示板ではないよ、 進行が遅いに加えて近頃アホっぽい話題が充満しているだけだ。
856 名前:デフォルトの名無しさん mailto:age [04/09/04 12:52] >>855 ( д ) ゚ ゚
857 名前:デフォルトの名無しさん mailto:sage [04/09/04 16:13] ひさびさにコピペにマジレス見た・・・
858 名前:デフォルトの名無しさん mailto:sage [04/09/04 16:48] 型の実装について教えてください。 現在 int のみのコンパイラは作れたのですが float などを追加しようとすると例えばスクリプト中の変数に型情報を持たせて 実行するときに int か float か if で判断するしか無いのでしょうか? 2つならまだしも double とか char を追加するとなると代入するとき等の型判定で 組み合わせの爆発が起きそうなのですがなにか良い方法はないでしょうか? 速度的に。
859 名前:デフォルトの名無しさん mailto:sage [04/09/04 17:02] テーブル作るか int float を別文法にしてしまうか…… てか、こんな事は自分で考えろ。
860 名前:デフォルトの名無しさん mailto:sage [04/09/04 17:07] >>858 >現在 int のみのコンパイラは作れたのですが >float などを追加しようとすると例えばスクリプト中の変数に型情報を持たせて >実行するときに int か float か if で判断するしか無いのでしょうか? って、そんなのコンパイル出来たって言えないやん。。。 何の為の型なのさ?
861 名前:デフォルトの名無しさん mailto:sage [04/09/04 17:11] 変数に型情報があってコンパイラを作っているのなら、 コンパイルの時点で型にあったコードを生成するだけだろ。 実行時じゃなくて。
862 名前:デフォルトの名無しさん mailto:sage [04/09/04 17:12] >>860 ハァ
863 名前:デフォルトの名無しさん mailto:sage [04/09/04 18:27] >>860 バカ避けの機能
864 名前:デフォルトの名無しさん mailto:sage [04/09/04 18:59] >>859-861 おぼろげながら自分の間違いが分かってきました。 どうもです。 もう少し考えてみます。
865 名前:デフォルトの名無しさん mailto:sage [04/09/04 20:09] >>858 実行時に型チェックするかコンパイル時に型チェックするかは、言語の設計に 大きく関わってくるけど、まぁどっちでも良い。 コンパイル時に型チェックしたければ、たとえば Yacc 風に書くと IDENT '=' experssion: { // まず IDENT が変数名であることを確認 // 次に experssion の型が IDENT の型に変換できることを確認 // 型変換して代入するコードを生成 } ; ってな感じ。型変換判定は素直に実装すると型の数の 2 乗のオーダーで増えるが、 テーブルにでも書いておけば大した手間ではない。ベタに if - else とかで書くと死ぬ。
866 名前:デフォルトの名無しさん [04/09/04 21:46] YACC はバカ避けのソフト。
867 名前:デフォルトの名無しさん mailto:sage [04/09/04 22:46] 作ってて楽しけりゃなんだっていい
868 名前:デフォルトの名無しさん mailto:sage [04/09/05 06:46] ( ゚д゚)、ペッ
869 名前:デフォルトの名無しさん mailto:sage [04/09/05 15:32] 型についてはシンボルテーブルで管理すれば良いでしょ。 シンボル表のエントリに型情報をもたせ、それが基本型を ポイントすることで、個々のシンボルの型を表現します。 struct や class などの基本型をまとめた型を作るときも シンボル表にそれらの新しい型のエントリを作って、基本型を リスト状にポイントしていけばよいです。
870 名前:デフォルトの名無しさん [04/09/05 17:16] 所詮 lex は、バカ避けのソフト。 (以下ry
871 名前:デフォルトの名無しさん mailto:sage [04/09/05 17:47] >>855 wrota
872 名前:デフォルトの名無しさん mailto:sage [04/09/05 19:51] >>870-871 意味の無いレスいれるの止めてくんない、近頃こんなレスばっかりで 前後の見通しが悪くてかなわないんだよ、邪魔だから適当な言語死滅スレにでもいってくれ。
873 名前:デフォルトの名無しさん mailto:sage [04/09/05 20:08] その発言は結局荒れるもとになるよ。 そして、大量に無駄な情報のなかから有用なものを抜き出すのが2chの利用法だと思う。
874 名前:デフォルトの名無しさん mailto:sage [04/09/05 20:12] 過疎スレでやってくれるなよなとは思う
875 名前:デフォルトの名無しさん mailto:sage [04/09/07 17:20] 855=872
876 名前:デフォルトの名無しさん [04/09/13 23:46:35] >>872 お前のレスこそ余計。
877 名前:デフォルトの名無しさん [04/09/13 23:47:49] >>872 wrota
878 名前:デフォルトの名無しさん mailto:sage [04/09/14 18:08:01] 876=877 wrota書くのに一分もかかってんじゃねーよ。
879 名前:デフォルトの名無しさん [04/09/14 23:04:15] >>878 != だが何か?
880 名前:デフォルトの名無しさん mailto:sage [04/09/14 23:09:55] 3日後 870 名前:デフォルトの名無しさん 投稿日:あぼーん あぼーん 871 名前:デフォルトの名無しさん 投稿日:あぼーん あぼーん 872 名前:デフォルトの名無しさん 投稿日:あぼーん あぼーん 〜略〜 879 名前:デフォルトの名無しさん 投稿日:あぼーん あぼーん 880 名前:デフォルトの名無しさん 投稿日:あぼーん あぼーん 何のためのスレなんだか
881 名前:デフォルトの名無しさん mailto:sage [04/09/14 23:28:47] なんか恐ろしく自己中なヤツがいるようですが…
882 名前:デフォルトの名無しさん [04/09/15 00:36:49] 名前もあぼーんになるはずだが
883 名前:デフォルトの名無しさん mailto:sage [04/09/15 01:04:33] このスレ869までしか表示されないな。
884 名前:デフォルトの名無しさん [04/09/15 22:07:01] まぁ、もしアボーンされるとしても、 >>880 が最初だろw
885 名前:デフォルトの名無しさん [04/09/20 01:53:27] gccの&&label(Labels as Values)みたいな機能を実現するには、 ラベルは相対じゃなくて、絶対アドレスを取得しなきゃならんのだよね。 void *ptr = &&label; goto *ptr; label: の場合は // void *ptr = &&label; mov DWORD PTR[ebp-04h], label_EA // goto *ptr; mov eax, DWORD PTR[ebp-04h] jmp eax label: こんな感じかな? でも なんで goto ptr; じゃないんだろう? ptrと *ptr は何を指すのか はて。。。
886 名前:デフォルトの名無しさん [04/09/20 03:29:47] できたできた。 どうやら型をvoid*にしたのはgccの気まぐれらしい。 ラベルの型なんてないからねえ。 int ptr = &&label; goto ptr; これだとラベルと区別つかないからvoid*にしただけか。 gccは変な構文ばっかだな。
887 名前:デフォルトの名無しさん mailto:sage [04/09/29 19:53:22] VC++でflex++/bison++でリンカエラー回避できますか?
888 名前:デフォルトの名無しさん [04/09/30 22:56:07] アフォはスルーされるという典型例だなw
889 名前:デフォルトの名無しさん [04/10/05 23:30:22] C++、Javaで同じスクリプトを動かしたいんですが、 自作するしかないでしょうか。 LuaがJavaに対応していれば一番いいんですが。
890 名前:デフォルトの名無しさん mailto:sage [04/10/06 00:42:29] >>889 Schemeとか、どっちでも使える言語も結構ある。
891 名前:デフォルトの名無しさん mailto:sage [04/10/06 00:57:17] そういう意味ではLISP系探すと強いね。 とりあえずS式が読めればなんでもいいわけだし。
892 名前:デフォルトの名無しさん mailto:sage [04/10/06 10:39:52] >>889 TCLとか
893 名前:デフォルトの名無しさん mailto:sage [04/10/06 12:59:19] >>889 JavaSript というか ECMAScript がいいんじゃない? 簡単だし。
894 名前:デフォルトの名無しさん mailto:sage [04/10/06 18:10:12] みんな自分が使っているのを薦めている予感。
895 名前:デフォルトの名無しさん [04/10/06 21:08:06] bashスクリプトがイイと思うよ。
896 名前:889 mailto:sage [04/10/06 21:33:47] どうもです。 その辺りのキーワードを頼りに探してみます。 ありがとうございました。
897 名前:デフォルトの名無しさん mailto:sage [04/10/06 22:50:27] とりあえずECMAScript(の実装)が簡単だという意見が本気でわからん
898 名前:デフォルトの名無しさん mailto:sage [04/10/06 22:53:42] LISPは1000行も書けばそこそこ使えるものができる Javaだともっと短いかも
899 名前:デフォルトの名無しさん mailto:sage [04/10/06 23:04:05] >>897 >C++、Javaで同じスクリプトを動かしたいんですが、 >自作するしかないでしょうか。 って質問だったので、C++とJava での実装が容易に利用できる ECMAScript を勧めました。
900 名前:デフォルトの名無しさん mailto:sage [04/10/06 23:14:01] ECMA Scriptだと、MozillaのSpiderMonkeyとRhinoが 良さそうだね。
901 名前:デフォルトの名無しさん mailto:sage [04/10/06 23:28:14] Pythonは?
902 名前:デフォルトの名無しさん mailto:sage [04/10/06 23:31:24] >>901 ぴちょん(・∀・)!
903 名前:デフォルトの名無しさん mailto:sage [04/10/08 08:18:15] ネイティブコンパイルする処理系を作成中です
904 名前:デフォルトの名無しさん mailto:sage [04/10/09 09:13:05] 完成です
905 名前:デフォルトの名無しさん mailto:sage [04/10/09 14:51:55] じりじり
906 名前:デフォルトの名無しさん mailto:sage [04/10/09 16:05:06] >>904 晒せ
907 名前:デフォルトの名無しさん [04/10/09 22:31:21] 処理系のテストってみなさんどうしてますか 構文、演算子ごとに全パターン網羅できてますか? ある組み合わせで不具合が出る可能性もあるから、 どうがんばっても全部網羅したとはいえませんよね 某スレのD言語なんかろくにテストされてないのがまるわかりですし ある程度テストパターンの自動作成ができればよいのですが そういうアイデアで何かありませんか?
908 名前:デフォルトの名無しさん [04/10/09 23:31:27] 例えばifが構文のキーワードならif + 1のような並びは構文エラーとなるべきですが、 こういうのはyaccを使った場合も含めてエラーとなることは予測できたとしても 実際にエラーになることの検証まではされていないのが現状だと思います。 これは言語処理系に限った話ではないですが、予測の付かないユーザーの ランダムな入力に対し、はたして適切な処理をしているのかどうか?を検証する 確立された方法はあるのでしょうか? test_if_branch() { int x; x = 0; if (x) x = 2; test_assert(x==0); x = 1; if (x) x = 2; test_assert(x==2); x = 0; if (x) x = 2; else x = 3; test_assert(x==3); x = 1; if (x) x = 2; else x = 3; test_assert(x==2); } こんなものを延々と記述していくしかないのでしょうか。
909 名前:デフォルトの名無しさん mailto:sage [04/10/10 15:30:32] >>907 全部網羅って C∞ のテストをしたいって事?
910 名前:デフォルトの名無しさん [04/10/10 19:19:42] 確立した方式など無いと思うが… なので、実績の積み上げしか無いと思われ。
911 名前:デフォルトの名無しさん mailto:sage [04/10/10 20:24:50] >>908 行カバレッジが100%になるようなテストセットを作るとか。
912 名前:デフォルトの名無しさん [04/10/11 21:40:00] Bisonでparseした時、エラーの出た行をしらべるにはどうするの?
913 名前:デフォルトの名無しさん mailto:sage [04/10/12 00:36:07] flexからbisonに渡すTokenに行番号の情報を入れといて、エラー発生時に取り出して使う、 でいいんじゃない?
914 名前:912 mailto:sage [04/10/12 23:08:03] >>913 どうもです、flexのhelpみてたらoptionでありました
915 名前:デフォルトの名無しさん [04/10/13 21:00:24] >>914 それはflexの中だけだろ? bisonとは微妙にずれる場合も多い。 >>913 が王道かも。
916 名前:デフォルトの名無しさん mailto:sage [04/10/15 20:56:20] DLLの関数呼び出しって、参照が一回挟まると思うんだけど、 ループで何べんも呼ぶと普通の関数呼び出しよりパフォーマンスに影響出る? 自分の処理系では参照をはさまない様に(つまりLoadLibraryと同じ方式) してるけどいまいち差がわからない。 それよりも配置情報テーブルのサイズ減らした方が得なのかなと思ったり。
917 名前:デフォルトの名無しさん mailto:sage [04/10/15 22:32:51] >>916 間接参照になる分だけ、パフォーマンスは落ちる。でも関数内部が 一行だけとかでない限り、あまり気にしないで良いと思うぞ。 とりあえず計ってみたら?
918 名前:デフォルトの名無しさん mailto:sage [04/10/16 11:20:18] >>917 コンテキスト切り替えとか食らうと凄く影響するけど、 間接参照が一個増えた程度ではパフォーマンスにそれほど影響しないような… 昔、C++ で virtual ありと無しのメンバ関数で速度測ったら virtual ありの方が速くてびっくりした事もあるし。
919 名前:デフォルトの名無しさん mailto:sage [04/10/16 11:38:42] それはお前の計り方が間違ってただけだろう。
920 名前:デフォルトの名無しさん mailto:sage [04/10/16 11:52:11] >>919 誤差で逆転しただけかもしれんがね。 っつか、測定前から virtualありの方が遅いと決め付けてるなら測定する意味が無いような。
921 名前:デフォルトの名無しさん mailto:sage [04/10/16 11:58:21] >>920 その測定ソース、どんな感じに作ったのか晒してみ。
922 名前:デフォルトの名無しさん mailto:sage [04/10/16 12:14:42] >>921 virtualありの関数を持つクラスとなしの関数を持つクラス作って ループでn回関数を呼び出す、ループ前とループ後の時間から かかった時間を割り出す普通のマイクロベンチだったと思うが。 関数の中身は空だったか、軽い計算させてたかは覚えてない。 あとはアセンブラの出力を見て最適化で関数呼び出しが削除されてない事と virtualありの方は間接参照を介している事を確認した。
923 名前:デフォルトの名無しさん [04/10/16 13:49:08] まぁ、システムをスタティックリンクにしてからだな
924 名前:デフォルトの名無しさん mailto:sage [04/10/16 14:15:49] >>923 それは >>916-922 と関係あるのか?
925 名前:デフォルトの名無しさん mailto:sage [04/10/28 21:26:06] 日経ソフトウェアの推薦書籍コーナーで、中田さんの本が2冊あげられていた。 取り上げていた人はどちらもすごい方なので、ちと読んでみようかなという気が沸き起こった。
926 名前:925 mailto:sage [04/10/28 21:40:42] それにしても\10000を超えるって、やっぱり高い。 コンパイラの構成と最適化 中田 育男 (著) www.amazon.co.jp/exec/obidos/ASIN/4254121393/
927 名前:デフォルトの名無しさん mailto:sage [04/10/28 22:03:22] >>926 ドラゴンブックより良い?
928 名前:デフォルトの名無しさん mailto:sage [04/10/28 22:10:24] >>927 ドラゴンブックよりも内容が新しいらしい。
929 名前:デフォルトの名無しさん mailto:sage [04/10/28 22:19:39] >>927 かなり難解ですよ。 ドラゴンブックとかプログラミング言語処理系を読んで それでも物足りない人向け。
930 名前:927 mailto:sage [04/10/28 22:43:04] 読んでみたくなったけど、高いなあ…
931 名前:デフォルトの名無しさん mailto:sage [04/10/28 23:07:51] そもそも「最適化」をタイトルに冠してる時点でかなりのレベルが予想されるわけだが... < 中田本 それにしてもドラゴンブックの改訂版(に当たる本),いつ出るんでしょうね...
932 名前:デフォルトの名無しさん mailto:sage [04/10/28 23:14:58] >>926 ドラゴンブック揃えるより安いじゃん。
933 名前:デフォルトの名無しさん mailto:sage [04/10/29 18:29:03] >>931 もう出たんじゃね? ttp://www.amazon.co.jp/exec/obidos/ASIN/0321131436/ ペーパーバック版は来年らしい。 ttp://www.amazon.co.jp/exec/obidos/ASIN/0321210913/
934 名前:デフォルトの名無しさん mailto:sage [04/10/30 00:24:51] >>933 「この商品を予約注文する」と表示されたから、まだ出てないのかも…待ちくたびれたよ。
935 名前:デフォルトの名無しさん mailto:sage [04/10/30 08:51:24] >>934 うはwwwwwwwwwwwwwww 昨日見たときはショッピングカートに入れるになってたんだがw amazonの罠だったか。
936 名前:デフォルトの名無しさん mailto:sage [04/10/31 00:42:43] i.loveruby.net/ja/rhg/index.html これってどうよ?
937 名前:デフォルトの名無しさん [04/10/31 18:50:33] >>932 そろえるって何? 1つしかないのでは?
938 名前:デフォルトの名無しさん mailto:sage [04/10/31 19:00:25] >>937 お前、現物見た事あるのか?
939 名前:デフォルトの名無しさん mailto:sage [04/10/31 19:15:08] >>938 www.amazon.com/exec/obidos/tg/detail/-/0201100886/ 洋書の方は全1巻みたいです。
940 名前:デフォルトの名無しさん mailto:sage [04/10/31 19:56:06] 揃えるといったら、グリーンとレッドでは?
941 名前:デフォルトの名無しさん mailto:sage [04/10/31 20:39:14] ポケモンみたい
942 名前:デフォルトの名無しさん mailto:sage [04/10/31 20:39:42] 21st Century Compilersが待てない人は↓がオススメ。 Modern Compiler Design / John Wiley & Sons, ltd Dic Grune / Henri E. Bal / Geriel J. H. Jacobs / Koen G. Langendoen 実装本ではなくアルゴリズム本。 ある程度のコンパイラ実装経験がある人なら買って損はないと思います。 私は「コンパイラ構成法」→「プログラミング言語処理系」→本書、の順で 学んできましたが、頭の中がすっきりまとまって、今の私にちょうど良い レベルだと思います。アルゴリズムがスードウ・コードで書かれているので 最初はちょっと戸惑いましたが、すぐに慣れるでしょう。 私の英語レベルでも、見開きに知らなかったり忘れていたりする単語が、 ひとつあるかないか、といった程度なので本書を読み進めるのは、それほど 困難ではありません。 ちなみに私の英語遍歴は、「Grammar in Use Basic/Intermediateを一通りやる」→ 「Duo 3.0丸暗記」→「TOFELテスト 英単語3800のランク3を暗記中」と いったところ。それほど高い英語力がなくても大丈夫でしょう。
943 名前:デフォルトの名無しさん mailto:sage [04/10/31 21:07:52] >>942 コンパイラの勉強をする前、した後とでなにか大きく変わったことはありますか?
944 名前:デフォルトの名無しさん mailto:sage [04/10/31 22:18:01] >>942 紹介を少しみたところ、コンパイラの(可能な限りの)自動生成に力点を置いてるようですが、 その辺りどうでしたか?
945 名前:デフォルトの名無しさん mailto:sage [04/10/31 22:18:53] >>942 pseudo codeを「スードウ・コード」と書かれているので戸惑いました。
946 名前:デフォルトの名無しさん mailto:sage [04/10/31 22:25:20] >>943 昔俺が本読んで実際うまくいった最適化と言える物は せいぜい定数畳み込みと覗き窓ぐらいだったな。 頭悪いと「それはそれ、これはこれ」って言葉の意味が実感できるぜ! コンパイラの勉強もいいけどCPUやアセンブラにも詳しくないと 速いコードにはならないぜ。 VMを作るときにも困るぜ?
947 名前:デフォルトの名無しさん [04/11/01 21:36:17] >>938 英語音痴w
948 名前:デフォルトの名無しさん mailto:sage [04/11/02 10:51:27] 次スレには>>936 もリンクに加えておいて下さい
949 名前:デフォルトの名無しさん mailto:sage [04/11/02 13:03:18] >>943 今まで努力するのが面倒で、yaccでやっていましたが、 そんな自分が嫌でコンパイラの勉強を始めました。 その甲斐あって仕事もはかどり、昇進も決まり、彼女も出来ました。 6月には結婚します。これも全てコンパイラの勉強をした成果です。 (27歳・会社員)
950 名前:デフォルトの名無しさん [04/11/02 22:20:28] おれは今まで金無し君だったけど(ry
951 名前:デフォルトの名無しさん mailto:sage [04/11/02 22:22:11] >>950 今ではすっかり能無し君か。
952 名前:デフォルトの名無しさん mailto:sage [04/11/02 23:44:04] コンパイラの勉強をしたら負け(ry
953 名前:デフォルトの名無しさん [04/11/03 09:12:07] コンパマダァ-? (・∀・ )っ/凵⌒☆チンチン
954 名前:デフォルトの名無しさん [04/11/03 12:48:01] 最近、パチンコ行っても付きまくりな訳だが、 そういえばコンパイラの勉強し始めてからだったことに気づいた。
955 名前:デフォルトの名無しさん mailto:sage [04/11/03 21:25:51] 俺もコンパイラを勉強していて出てきた数字で ロト6を買ったら2等が当たりました。2000万くらい。
956 名前:デフォルトの名無しさん mailto:sage [04/11/05 18:44:42] じゃあ俺もコンパイラの勉強していたら 株が上がったことにしよう
957 名前:デフォルトの名無しさん mailto:sage [04/11/05 22:11:26] LISP最強
958 名前:sage [04/11/06 05:48:47] スモールコンパイラの制作で学ぶプログラムのしくみ www.cbook24.com/bm_detail.asp?sku=4774121770
959 名前:デフォルトの名無しさん [04/11/06 12:31:17] >>958 おっ、新作ですかね? この分野では珍しい。 しかも、やさしそう あと安い。 すべて型破り!w
960 名前:デフォルトの名無しさん mailto:sage [04/11/06 13:42:32] 宣伝乙 借金でもできたんですか?
961 名前:959 [04/11/06 17:41:07] 著者は有名な方ですか? あと、目次とかはないんでしょうか?
962 名前:デフォルトの名無しさん mailto:sage [04/11/06 18:00:39] >>958 中身もなさそう。
963 名前:ほんたま [04/11/06 20:32:28] おみゃ〜らよ、system32フォルダにあるDLLの関数を呼び出すには、インポートセクションにDLL名と関数名を書き込んでいくだけで、呼び出せるんだが、 VC++で自分でつくったDLLの関数を同じ方法で呼び出そうとすると、「DLL何に○○のエントリーポイントが見つかりません」というメッセージが出て呼び出せないんだ… おみゃ〜らよ、自分でつくったDLLとwindows付属のDLLとは、どっか構造が違うのかな? windows付属のDLLと同じ構造のDLLを自分でつくるにはどうすればいいの? 教えてくだされ〜♪
964 名前:デフォルトの名無しさん mailto:sage [04/11/06 20:57:32] マルチにレス不要
965 名前:デフォルトの名無しさん mailto:sage [04/11/06 23:18:33] どうせstdcallつけてないだけなんだろうな
966 名前:デフォルトの名無しさん mailto:sage [04/11/07 22:44:04] >>958 プログラミング言語処理系とか買ったけどチンプンかんぷんだった俺にはちょうどいい こういう本もっとでてほしいな 安いしな・・・
967 名前:デフォルトの名無しさん mailto:sage [04/11/07 22:46:29] >>966 オレは「UNIX プログラミング環境」が初体験だったが。今はもう流行らんか。
968 名前:デフォルトの名無しさん [04/11/08 01:09:20] >>967 洩れもそれだ!w 但し英語番だけど、
969 名前:デフォルトの名無しさん mailto:sage [04/11/08 19:02:04] >>967 hocのソースにバグがあったと聞いたけど、どこか知ってる?
970 名前:デフォルトの名無しさん mailto:sage [04/11/08 20:01:57] >>969 いろいろあった気がするが、具体的に何だったかは忘れた。
971 名前:ほんたま [04/11/08 23:02:02] おみゃ〜ら〜、サンプルアップしたぞ〜♪ホームページもアップしたぞ〜♪宇宙一すげぞ〜♪ おみゃ〜らよ、なぜ宇宙一すげーかわかるかな? おみゃ〜らよ、おりはな、「Visual C++」で自作したDLLをスリムドカンでつくったプログラムから呼び出すのに成功したんだよ!わかる? おみゃ〜らよ、DLLを呼び出すプログラムを「Visual C++」」でつくるには、Libファイルをリンクに設定したり、ヘッダファイルをインクルードしたりとやるべきことは多いだろ? おみゃ〜らよ、DLLを呼び出すプログラムを「HSP」でつくるにも、やはりDLLの他に「.as」ファイルが必要だよ。 だが、「スリムドカン」の場合、DLLの他には一切何も必要ないんだな〜う〜ん、これが…自分じわかる? つまり「スリムドカン」の場合、DLLさえあればDLLを呼び出すプログラムがビルドできるってわけ♪ おみゃ〜らよ、おりは宇宙一画期的だと思わないか? おみゃ〜らよ、宇宙一すげ〜とわめいたのはそういうことよ♪ おみゃ〜らよ、自分じどうじ?
972 名前:デフォルトの名無しさん [04/11/08 23:50:12] >>969 煽りでなくて、 バグでなく仕様じゃないの? 本だし
973 名前:デフォルトの名無しさん mailto:sage [04/11/09 01:48:39] 次スレまだ〜?
974 名前:デフォルトの名無しさん mailto:sage [04/11/09 17:00:50] >>972 伝聞だけど煽りじゃないよ。 知り合いが「打ちこんで動かしたけどいくつかバグがあった」って。 もちろん打ち間違いの類いじゃなくね。
975 名前:デフォルトの名無しさん mailto:sage [04/11/10 02:14:00] ひょっとして脳内の知り合いですかぁ? そんで俺らにデバッグさせようってことですかぁ?
976 名前:デフォルトの名無しさん mailto:sage [04/11/10 04:01:03] 三銃士で、アトスが友人の身に起こったことだと言って話すけど ダルタニアンはそれは友人ではなくてアトス自身のことなのではない かと考える場面がある。
977 名前:デフォルトの名無しさん mailto:sage [04/11/10 10:24:26] 懐かしー。
978 名前:デフォルトの名無しさん mailto:sage [04/11/10 11:23:03] 俺がhocを動かせなくて困ってるとでも思ったのか?www ほらソース ttp://www.bsddiary.net/d/200012.html#15 5段目の段落をよく読め
979 名前:デフォルトの名無しさん mailto:sage [04/11/10 13:56:46] 脳内の知り合いじゃないのなら どこがどうバグってるのか聞いてくれ。
980 名前:デフォルトの名無しさん mailto:sage [04/11/10 14:31:35] わかったよ知り合いじゃないよ 一読者だよ 直接聞けないからここで聞いたんだよ
981 名前:デフォルトの名無しさん mailto:sage [04/11/10 14:42:49] 誰だお前は
982 名前:デフォルトの名無しさん mailto:sage [04/11/10 18:01:59] オレだよオレ
983 名前:デフォルトの名無しさん mailto:sage [04/11/10 19:27:26] >>958 が気になる。
984 名前:デフォルトの名無しさん mailto:sage [04/11/10 20:09:33] そろそろ新スレの季節だよ。
985 名前:デフォルトの名無しさん mailto:sage [04/11/10 20:47:19] 新テンプラどうしよう
986 名前:デフォルトの名無しさん mailto:sage [04/11/10 22:19:51] LISPスレと統合しよう つーかきみらもっとLISPを知っときなさい
987 名前:デフォルトの名無しさん mailto:sage [04/11/10 22:47:27] Mathematicaマンセー
988 名前:デフォルトの名無しさん [04/11/10 22:47:40] LISP?はぁ? 負け組言語は不要w
989 名前:デフォルトの名無しさん mailto:sage [04/11/10 23:08:54] スレ立てるよ
990 名前:スレ立てられませんでした(テンプレ1) mailto:sage [04/11/10 23:11:46] yaccやlexの使い方やら言語仕様やらの話題。 前スレ 1 pc.2ch.net/tech/kako/981/981672957.html 2 pc2.2ch.net/test/read.cgi/tech/1021136715/ (dat落ち) 3 pc5.2ch.net/test/read.cgi/tech/1070089173/ (前スレ) 関連リンクは多分 >>2-8 あたり
991 名前:(テンプレ2) mailto:sage [04/11/10 23:12:21] コンパイラ等を扱ったドキュメント 色々なツールの紹介 catalog.compilertools.net/ コンパイラ関連のリンク集 www.ulis.ac.jp/~nakai/rel_web_compilers.shtml スクリプティング言語資料室(仮) (リンク) www.kt.rim.or.jp/~kbk/ Compiler Construction rananim.ie.u-ryukyu.ac.jp/~kono/lecture/2000/compiler/index.html Compiler Construction (1997) rananim.ie.u-ryukyu.ac.jp/~kono/lecture/1997/compiler/compiler.html 情報システム工学実験 III コンパイラ・コンパイラ math.cs.kitami-it.ac.jp/~fuchino/proin/experimentIII-2000/jikken.html OS/Programming 簡単な C コンパイラ www.csg.is.titech.ac.jp/~chiba/lecture/os/ 正規表現 hp.vector.co.jp/authors/VA007799/viviProg/doc_regexp.htm コンパイラ研究・開発情報の一集積所 compilers.cs.uec.ac.jp/ Links and Selected Readings www.gnu.org/software/gcc/readings.html
992 名前:Intelの資料リンク切れになってる(テンプレ3) mailto:sage [04/11/10 23:13:36] Lex(Flex) Yacc(Bison) 構文解析 UNIX板 yacc & lex pc.2ch.net/test/read.cgi/unix/1031801314/ Lex and YACC primer/HOWTO (邦訳) www.linux.or.jp/JF/JFdocs/Lex-YACC-HOWTO.html Turbo Pascal Lex/Yacc www.musikwissenschaft.uni-mainz.de/~ag/tply/tply.html Jim Roskind's LALR(1) C++ Grammar www.empathy.com/pccts/roskind.html Flexと Bisonを同時に使う guppy.eng.kagawa-u.ac.jp/~kagawa/1999/SysProg/both.html KITE_ASM (yacc,lex) www.arch.cs.kumamoto-u.ac.jp/project/kite/kiteasm/yacc/ www.arch.cs.kumamoto-u.ac.jp/project/kite/kiteasm/lex/ Cygwin www.cygwin.com/ GNU utilities for Win32 unxutils.sourceforge.net/
993 名前:(4) mailto:sage [04/11/10 23:15:40] その他のパーサジェネレータ等 ANTLR(非yaccのパーサジェネレータ) www.antlr.org/ JavaCC(Java Compiler Compiler) https://javacc.dev.java.net/ village.infoweb.ne.jp/~fwif0083/program/java/javacc/javaccgrm.html www.asahi-net.or.jp/~DP8T-ASM/java/tips/JavaCCHelloWorld.html CUP & JLEX or CUP & JFlex CUP www.cs.princeton.edu/~appel/modern/java/CUP/why.html JLEX www.cs.princeton.edu/~appel/modern/java/JLex/ JFlex www.jflex.de/ SableCC www.sablecc.org/ ¬<><∪∪ (notavacc)LALR(1) ne.cs.uec.ac.jp/~koto/notavacc/ JavaCCはLL(k)だけど、上のはANTLR以外はLALR(1) でもANTLRはC++なんかにも対応。 boost::spirit(C++のテンプレートでEBNFの構文を模倣) spirit.sourceforge.net/ boost.cppll.jp/HEAD/libs/spirit/index.html (マニュアル日本語化プロジェクト) www.fides.dti.ne.jp/~oka-t/cpplab-boost-spirit.html
994 名前:(5) mailto:sage [04/11/10 23:17:53] ガベコレ GC FAQ -- draft www.iecc.com/gclist/GC-faq.html A garbage collector for C and C++ www.hpl.hp.com/personal/Hans_Boehm/gc/ 一般教養としての Garbage Collection www.is.s.u-tokyo.ac.jp/~vu/01/jugyo/processor/process/soft/compilerresume/gc/gc.html Garbage Collection : Algorithms for Automatic Dynamic Memory Management www.amazon.com/exec/obidos/ASIN/0471941484/
995 名前:(6) mailto:sage [04/11/10 23:21:42] 参考書籍 ●コンパイラ 原理・技法・ツール 1&2 www.amazon.co.jp/exec/obidos/ASIN/4781905854/ www.amazon.co.jp/exec/obidos/ASIN/4781905862/ 通称ドラゴンブック。バイブル。 ●コンパイラ構成法 原田 賢一 www.amazon.co.jp/exec/obidos/ASIN/4320029224/ www.hara.cs.keio.ac.jp/kCompiler/ (ソース、正誤表のダウンロード) ●プログラミング言語処理系 岩波講座 ソフトウェア科学〈5〉 佐々 政孝 www.amazon.co.jp/exec/obidos/ASIN/4000103458/ 一冊で済ませたい人へ。 ●コンパイラの構成と最適化 中田 育男 www.amazon.co.jp/exec/obidos/ASIN/4254121393/ 最適化がメイン。 ●コンパイラの仕組み 渡邊 坦 www.amazon.co.jp/exec/obidos/ASIN/4254127081/ 薄い奴(185p)を読みたい人に。 ●21st Century Compilers (Alfred V. Aho, Sethi, Ravi Sethi, Jeffrey D. Ullman, Monica Lam) ペーパーバック版: www.amazon.co.jp/exec/obidos/ASIN/0321210913/ ハードカバー版: www.amazon.co.jp/exec/obidos/ASIN/0321131436/ ●スモールコンパイラの制作で学ぶプログラムのしくみ www.cbook24.com/bm_detail.asp?sku=4774121770
996 名前:デフォルトの名無しさん mailto:sage [04/11/10 23:26:12] では立ててみるか。
997 名前:(7) mailto:sage [04/11/10 23:26:28] 処理系,スクリプト kikyou.info (吉里吉里というゲームのスクリプト) kikyou.info/ tiny C コンパイラ (C) www.watalab.cs.uec.ac.jp/tinyCabs.html 6809用 Micro C コンパイラ www.axe-inc.co.jp/pds/mc09.html Portable Object Compiler (Obj-C >> C のトランスレータ?) users.pandora.be/stes/compiler.html 自作コンパイラの部屋(PL/1, Pascal等) www.tokumaru.org/ 『Rubyソースコード完全解説』サポートページ i.loveruby.net/ja/rhg/ 『やさしい Lisp の作り方』と『やさしい Java インタプリタ の作り方』見つけた。 Java と C# で実装。 ttp://www.okisoft.co.jp/esc/go.html ttp://www.okisoft.co.jp/esc/go2.html ttp://www.okisoft.co.jp/esc/go3.html ttp://www.okisoft.co.jp/esc/go4.html MSによるPEフォーマット仕様書(日本語) www.interq.or.jp/chubu/r6/reasm/PE_FORMAT/intro.html
998 名前:デフォルトの名無しさん mailto:sage [04/11/10 23:36:47] 連続投稿規制のため、テンプレ(7)は貼れなかった。 誰か頼みます。
999 名前:デフォルトの名無しさん mailto:sage [04/11/10 23:37:55] 新スレッド 「コンパイラ・スクリプトエンジン」相談室4 pc5.2ch.net/test/read.cgi/tech/1100097050/
1000 名前:デフォルトの名無しさん mailto:sage [04/11/10 23:40:47] ふと思ったのですが、新スレたちました。
1001 名前:1001 [Over 1000 Thread] このスレッドは1000を超えました。 もう書けないので、新しいスレッドを立ててくださいです。。。