[表示 : 全て 最新50 1-99 101- 201- 301- 401- 501- 601- 701- 801- 901- 1001- 2chのread.cgiへ]
Update time : 05/09 22:36 / Filesize : 235 KB / Number-of Response : 1002
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

「コンパイラ・スクリプトエンジン」相談室9



1 名前:デフォルトの名無しさん [2005/12/20(火) 21:43:02 ]
プログラミング言語処理系の開発に興味のある人達のスレッドです。

字句解析・構文解析から,データフロー解析,ループ並列化,データ分散,SSA変換,
CPS変換,レジスタ割付,命令スケジューリング,ソフトウェアパイプライン,
SIMD命令生成,VLIW向けクラスタリング,スクラッチメモリ向け最適化,リンク時最適化,
JIT,動的バイナリ変換等の各種最適化,それにVM,GC,低消費電力化などなど。
意味論に関する話題も歓迎です。

過去スレ
1 pc.2ch.net/tech/kako/981/981672957.html
2 pc2.2ch.net/test/read.cgi/tech/1021136715/
3 pc5.2ch.net/test/read.cgi/tech/1070089173/
4 pc5.2ch.net/test/read.cgi/tech/1100097050/
5 pc8.2ch.net/test/read.cgi/tech/1106129164/
6 pc8.2ch.net/test/read.cgi/tech/1115335709/
7 pc8.2ch.net/test/read.cgi/tech/1129287390/
8 pc8.2ch.net/test/read.cgi/tech/1131273918/
関連リンクは多分 >>2-10 あたり

285 名前:269 mailto:sage [2006/01/11(水) 20:30:31 ]
>>274
例えば、皮剥き

286 名前:デフォルトの名無しさん mailto:sage [2006/01/11(水) 20:53:09 ]
パターンマッチマクロってどんな syntax の言語でも実装可能なの?

287 名前:デフォルトの名無しさん mailto:sage [2006/01/12(木) 00:51:45 ]
自分の欲しいsyntaxのマクロを人に書かせたいと見たw


288 名前:デフォルトの名無しさん mailto:sage [2006/01/12(木) 06:39:51 ]
>>286
可能か不可能かなら可能でしょう。
使いやすいとかわかりやすいものになるかどうかは別。

289 名前:デフォルトの名無しさん mailto:sage [2006/01/12(木) 08:35:55 ]
>>288
どうもありがとう。

>>287
Ruby や ECMAScript, Python は acceptable lisp と言われているけど、
マクロを追加すればもっと Lisp の強力さに近付くかなと。

290 名前:デフォルトの名無しさん mailto:sage [2006/01/12(木) 11:28:30 ]
>>287

自分は、schemeのsyntax-rulesを実装したいのだけど、
わからないので、簡単なソース付きで解説してほしいです。

自分のほしい言語をすべて書いてもらえたら幸せです。
schemeのスレとかで聞いたほうがいいのかなぁ?

>>287>>288>>289
PythonはDylanに似たマクロが入るとかいう噂がある(あった?)ようです。
どんな言語でも適用できそうなので、(よくわかってないのですが)
Dylanのマクロのアイディアはとにかく凄いような気がします。
C用のDylan風マクロとか、Java用のDylan風マクロとかあったら
そりゃもう、うれしいんじゃないかなぁと思います。


291 名前:デフォルトの名無しさん mailto:sage [2006/01/12(木) 11:40:09 ]
schemeのスレで質問してみました。

292 名前:トラックバック ★ mailto:sage [2006/01/12(木) 21:15:09 ]
【トラックバック来たよ】 (ver. 0.11)
[タイトル] 萌え言語を作ろう!
[発ブログ] プログラム技術@2ch掲示板
pc8.2ch.net/test/read.cgi/tech/1131442510/l50
[=要約=]
日本語で書ける言語では「ひまわり」なんてのがありますが
いまいち使いづらいというか、萌えないw

ということで、萌え萌えな言語を作ってみようと言う企画です。





293 名前:デフォルトの名無しさん mailto:sage [2006/01/12(木) 22:06:16 ]
萌言語案

ハァハァ{



の機能

while(1){
...
}



294 名前:デフォルトの名無しさん mailto:sage [2006/01/12(木) 23:04:56 ]
萌えとハァハァは別だよ派
萌えもハァハァも一緒だよ派


295 名前:デフォルトの名無しさん mailto:sage [2006/01/13(金) 00:30:47 ]
#define _ 1

とかやると、

for (;_;) 仕事;

となるわなw

萌えないが、実感はむしろこっちのほうが(泣)


296 名前:デフォルトの名無しさん mailto:sage [2006/01/13(金) 00:42:10 ]
#define T_T 1

while (T_T) 仕事;

297 名前:デフォルトの名無しさん mailto:sage [2006/01/13(金) 18:49:31 ]
#define ハァハァ 999

while(ハァハァ) 言語スレ

298 名前:デフォルトの名無しさん mailto:sage [2006/01/13(金) 23:33:15 ]
変な用語の例(その2)

・せわしない。。。
・なまけた。。。

299 名前:デフォルトの名無しさん mailto:sage [2006/01/14(土) 00:03:57 ]
bool A = ture;
bool T_T = true;

for(;A;) wile(T_T) int y=-(T_T);

300 名前:デフォルトの名無しさん mailto:sage [2006/01/14(土) 10:39:00 ]
assert マクロって must って名前にしたほうがよくない?

assert ( a == b ) → must( a == b )


301 名前:デフォルトの名無しさん mailto:sage [2006/01/14(土) 11:31:50 ]
assert that a equals b (thatは略可)
はそのまま読めるけど、mustはどう読んだらいいんだ?

302 名前:デフォルトの名無しさん mailto:sage [2006/01/14(土) 13:16:28 ]
a == b で「なければならない」
should ( a == b ) とか must( a == b )


303 名前:デフォルトの名無しさん mailto:sage [2006/01/14(土) 15:18:27 ]
must(a == b) を a == b でなければならないと読むのは
英語的におかしくないか。
! 演算子みたいに must が演算子だとして a must== b ならわかるが。



304 名前:デフォルトの名無しさん mailto:sage [2006/01/14(土) 15:25:59 ]
must be (a is equal to b)
なんじゃないの。

305 名前:デフォルトの名無しさん mailto:sage [2006/01/14(土) 15:42:50 ]
だから、それが英語的におかしいといっている。

306 名前:デフォルトの名無しさん mailto:sage [2006/01/14(土) 15:50:52 ]
じゃ、 must be a condition of (a == b) は?

307 名前:300 mailto:sage [2006/01/14(土) 16:14:15 ]
いや、まあそんなに深い意味で発言したわけじゃないけど
英語的にどうこうというか、
自分的にはこっちのほうが直感的かなと思っただけ
初心者に assert を教えたらピンとこなさそうな顔してたもんだから

308 名前:デフォルトの名無しさん mailto:sage [2006/01/14(土) 16:24:42 ]
個人的には ensure が良いと思う。ちょっと意味合いが変わって来ちゃうけど。

309 名前:デフォルトの名無しさん mailto:sage [2006/01/14(土) 18:15:19 ]
>>307
assertって単語になじみが無いだけだ、辞書引かせてからassertを使った例文を毎日一個5営業日続ければ覚える。


310 名前:デフォルトの名無しさん [2006/01/14(土) 18:37:19 ]
俺なら、

must.be.A.eq.B

が一番すんなりと入るかな?


311 名前:デフォルトの名無しさん mailto:sage [2006/01/14(土) 19:04:13 ]
俺なら、

zettai(a == b)

が一番すんなりと入るわ。

312 名前:デフォルトの名無しさん mailto:sage [2006/01/14(土) 19:05:53 ]
(a == b)じゃなきゃいやん

313 名前:300 mailto:sage [2006/01/14(土) 19:41:09 ]
assert だけだと、どっちの場合に警告するのかよくわかんなくない?
a == b 「だったら」警告するのか
a == b 「でなければ」警告するのか。
must とか(あるいは311,312 でもいいけど)だと、
明らかに後者が連想されるんじゃないかなと思った



314 名前:デフォルトの名無しさん mailto:sage [2006/01/14(土) 19:57:21 ]
「ここでは(a == b)になると断言する」と日本語で言っても?

315 名前:デフォルトの名無しさん mailto:sage [2006/01/14(土) 20:01:06 ]
assert に 『警告する』 って意味は無いんだよなぁ……。

316 名前:デフォルトの名無しさん mailto:sage [2006/01/14(土) 20:01:45 ]
assert false の場合はどーやって解釈すりゃいい?

317 名前:デフォルトの名無しさん mailto:sage [2006/01/14(土) 20:03:01 ]
『常に偽であると表明する』

prolog の fail みたいな。

318 名前:300 mailto:sage [2006/01/14(土) 20:37:49 ]
>>315
あ、ホントだ、やべえ!長いこと勘違いしとった!!
「断言する」で問題ないじゃん!
てことは、assert でも問題ナスorz

319 名前:デフォルトの名無しさん mailto:sage [2006/01/14(土) 20:43:02 ]
ドンマイ

320 名前:デフォルトの名無しさん mailto:sage [2006/01/14(土) 20:43:14 ]
>>316
正確には「もしここに来たら(a == b)がtrueであると断言する」と思えばいい。
assert falseは「もしここに来たらfalseがtrueであると断言する」、
つまり「ここには来ることはありえないと断言する」。

321 名前:デフォルトの名無しさん mailto:sage [2006/01/14(土) 20:59:13 ]
#define assert 断言する

断言する(a == b)

322 名前:デフォルトの名無しさん mailto:sage [2006/01/14(土) 21:02:32 ]
スキャナとパーザって、マルチバイト文字を通せるのですか?

323 名前:デフォルトの名無しさん mailto:sage [2006/01/14(土) 21:12:13 ]
通すように作れば通る。



324 名前:デフォルトの名無しさん mailto:sage [2006/01/14(土) 21:56:47 ]
シングルバイト文字の8バイトの連続だよ?
たまたま 0x80 より大きいだけ

325 名前:デフォルトの名無しさん mailto:sage [2006/01/14(土) 22:15:08 ]
>>324
アフォ来た〜〜〜!!

326 名前:デフォルトの名無しさん mailto:sage [2006/01/15(日) 01:00:21 ]
>>324
8バイトって何だ8バイトって。

実際には322の言うように、通るように作れば通るし、今時flexもbisonも
8bitは通す。マルチバイト文字というと、SJISだと0x5c問題が出てくる
可能性は歩けど、それはlexerのつくりの問題だよな。


327 名前:デフォルトの名無しさん mailto:sage [2006/01/15(日) 23:35:26 ]
変な用語その3

マトン

328 名前:デフォルトの名無しさん mailto:sage [2006/01/15(日) 23:41:00 ]
羊肉?

329 名前:デフォルトの名無しさん mailto:sage [2006/01/15(日) 23:41:51 ]
自動羊肉

330 名前:デフォルトの名無しさん mailto:sage [2006/01/15(日) 23:57:17 ]
オートマタ。

331 名前:デフォルトの名無しさん mailto:sage [2006/01/16(月) 00:59:16 ]
オート マトン
というよりは
オー トマトン
何だが。

332 名前:デフォルトの名無しさん mailto:sage [2006/01/16(月) 04:17:47 ]
Oh! Tomato! n?

333 名前:デフォルトの名無しさん mailto:sage [2006/01/16(月) 05:17:47 ]
コンピュータ関係の変な用語ってのはKILLとかZOMBIEとかENTITYとかじゃねぇのか?




334 名前:デフォルトの名無しさん mailto:sage [2006/01/16(月) 07:13:02 ]
デムパな単語が、そんなに嫌か?

335 名前:デフォルトの名無しさん mailto:sage [2006/01/16(月) 22:02:30 ]
>>327
automate(自動)+ton(〜風)、「自動っぽいもの」くらいの意味。

336 名前:デフォルトの名無しさん mailto:sage [2006/01/16(月) 23:15:29 ]
>>335
こらこら。だますんじゃない。

337 名前:デフォルトの名無しさん mailto:sage [2006/01/16(月) 23:29:55 ]
自動人形

338 名前:デフォルトの名無しさん mailto:sage [2006/01/17(火) 01:33:13 ]
ギリシャ語のautomatos(自立して動くもの)が語源だっけか。
別にどうでもいいけど。

339 名前:デフォルトの名無しさん mailto:sage [2006/01/17(火) 23:22:03 ]
>>329
昔食肉工場の機械が、簡易プログラムのような物で動いていて
たまたま羊毛の盛んな時期と重なった

340 名前:デフォルトの名無しさん mailto:sage [2006/01/18(水) 00:58:17 ]
>>339
ツマンネ

しかしあれだな、Lisp叩きやRuby叩きの話が出て来ると、すぐ「実装の話をしろよ!」という
主張が出て来るが、実装の話が好きな人達は、スレが閑散としてても実装の話はしないんだよな。

341 名前:デフォルトの名無しさん mailto:sage [2006/01/18(水) 01:14:52 ]
assertやらオートマータやらの話をしている輩が何を偉そうに

342 名前:デフォルトの名無しさん mailto:sage [2006/01/18(水) 01:26:06 ]
>>341
何一つ自分からネタ振れない輩が何を偉そうに。

つか、俺はassertやオートマータの話なんかしてないし。
だいたい、ここじゃちょくちょく構文解析+αのレベルで「間違い」が書き込まれる
ことがあるんだが、自称凄い人達はその訂正もしてくれないのな。

343 名前:デフォルトの名無しさん mailto:sage [2006/01/18(水) 08:54:41 ]
まず、自称このスレの間違いをわかってる君が、具体的に間違いを指摘してみては?



344 名前:260 mailto:sage [2006/01/18(水) 23:33:35 ]
>>342
詳しい人らしいんで返答を乞うてみます。


345 名前:デフォルトの名無しさん mailto:sage [2006/01/19(木) 06:52:05 ]
342が「自分に何がわかっているのかを書かなくていい理由」を考えつくまで
もう少しお待ち下さい。

346 名前:342ではないけれど mailto:sage [2006/01/19(木) 21:35:50 ]
なぜこんな流れに。。。

俺はレベルの低い実装の質問を書き込んでいたものですが
342の人は多分質問に答えてくれた人なんじゃないかという
気がしています。

逆に意地悪な感じで初心者を馬鹿にしている人達は
初心者の質問が書かれるたびに
「このスレ〜以外は意味ない」とかそんなんばかりでしょう。
そういうのはレベルが低くはないんですか?

347 名前:デフォルトの名無しさん mailto:sage [2006/01/19(木) 22:39:30 ]
エスパー光臨

348 名前:デフォルトの名無しさん [2006/01/19(木) 22:59:51 ]
マシンのネイティブコードを吐き出すための情報(命令セットってやつ?)はどこから入手したらいいのですか?
VMや構文木直辿りのインタプリタしかやったことないのでそろそろコンパイラにチャレンジです。

349 名前:デフォルトの名無しさん mailto:sage [2006/01/19(木) 23:16:32 ]
>>348
えーと、ギャグで言ってるんだよね?


350 名前:デフォルトの名無しさん mailto:sage [2006/01/19(木) 23:23:56 ]
前からテンプラにその情報源がないのは、
ひどく片手落ちな気がしてたよ

351 名前:デフォルトの名無しさん mailto:sage [2006/01/19(木) 23:35:30 ]
>>350
どのマシンがターゲットなんだかワカランのじゃ話にもならないし、少しだけ乗せるとアンチとか出てきて喧嘩になるし
ろくな事ないからじゃないの?


352 名前:デフォルトの名無しさん mailto:sage [2006/01/19(木) 23:42:03 ]
IA32だけならば、誰も文句いわねえと思うが・・・
マカーでさえもう文句いわねえ

とおもったが、このスレの二大言語(笑)の信者は
蚊帳の外に置かれてしまうかw

353 名前:デフォルトの名無しさん mailto:sage [2006/01/19(木) 23:47:30 ]
>>352
でIA32の場合インテルに資料請求するか秋葉あたりでデータシート買うって言う選択肢な訳だけど。




354 名前:デフォルトの名無しさん mailto:sage [2006/01/19(木) 23:51:23 ]
>>352 の意味が分からん。

355 名前:デフォルトの名無しさん mailto:sage [2006/01/19(木) 23:52:08 ]
lisp原理主義者はcarをeaxに、cdrをedxに。

>>353
例のpdfじゃ不足?

356 名前:デフォルトの名無しさん mailto:sage [2006/01/20(金) 02:46:07 ]
ttp://wiki.osdev.info/index.php?Pentium
でどうでしょう

357 名前:デフォルトの名無しさん mailto:sage [2006/01/20(金) 02:53:46 ]
PowerPC
opensolaris.org/os/community/power_pc/powerpc_doc_library/

358 名前:デフォルトの名無しさん mailto:sage [2006/01/20(金) 05:00:59 ]
> でIA32の場合インテルに資料請求するか秋葉あたりでデータシート買うって言う選
> 択肢な訳だけど。

それ、いつの時代の話?
ほとんどのCPUの命令セットはWebから落せる。
しかも IA32 の場合、日本語に訳されてる。

www.intel.com/jp/developer/download/
にある
IA-32 インテル アーキテクチャ・ソフトウェア・デベロッパーズ・マニュアル
からどうぞ。

359 名前:デフォルトの名無しさん mailto:sage [2006/01/20(金) 05:29:13 ]
>>358
紙のマニュアルの方が扱いが楽だからなぁ。
プリントすると紙質の関係でつらいからね。


360 名前:デフォルトの名無しさん mailto:sage [2006/01/20(金) 07:49:40 ]
そんなの選択肢からはずす理由にはならんだろ。
知らなかっただけなのに、言い訳苦しすぎですよ先輩。

361 名前:デフォルトの名無しさん [2006/01/22(日) 12:39:02 ]
新しい言語本がでてるな。
リンゴに続けるか?




362 名前:デフォルトの名無しさん mailto:sage [2006/01/22(日) 13:30:05 ]
>>361
どれ?

363 名前:デフォルトの名無しさん mailto:sage [2006/01/22(日) 14:24:41 ]
>>361
KWSK



364 名前:デフォルトの名無しさん mailto:sage [2006/01/22(日) 14:25:30 ]
っていうかリンゴってどれだw
スモールコンパイラの制作で学ぶプログラムのしくみ?

365 名前:デフォルトの名無しさん mailto:sage [2006/01/22(日) 19:48:58 ]
>>364
リンゴ本はその通り。
別名綾タソ本


366 名前:デフォルトの名無しさん mailto:sage [2006/01/22(日) 23:16:51 ]
手続き呼び出し/呼び出されの制御はどうするのが一番簡単だと思います?
一時変数・局所データとか考えると色々と面倒……

一時変数については呼び出し側にスタック作っといて、呼び出され側が
勝手に取り出すようにするのが簡単かな?スタックマシンにすると構文木
を解釈するのが面倒臭そうだし……


367 名前:デフォルトの名無しさん mailto:sage [2006/01/24(火) 00:04:05 ]
>>366
作ろうとしているのが機械語吐くコンパイラなのか、バイトコード吐くのか、
Rubyみたいに解析木を実行するタイプなのかもわからんでは何も言えんわな。

>一時変数については呼び出し側にスタック作っといて、呼び出され側が
>勝手に取り出すようにするのが簡単かな?

呼び出し側と呼び出され側でスタックが違うの?

>スタックマシンにすると構文木を解釈するのが面倒臭そうだし……

意味わかんねえっす。どっちみち構文木は解釈しなきゃいけないのでは。

368 名前:366 mailto:sage [2006/01/24(火) 00:46:10 ]
>367
おお、すみませぬ。インタープリタ作ろうとしています。
まずの目標はRubyみたいな解析木を実行するタイプですね。

>呼び出し側と呼び出され側でスタックが違うの?
一時変数の管理責任と、手続呼び出しの動作主体をどのように割り振ろうかな……
と思いまして。前述の例だと
 一時変数の管理責任:呼出側 -> スタック作って管理
 動作主体:呼び出され側 -> 駆動はこちら
とかを考えています。

>意味わかんねえっす。どっちみち構文木は解釈しなきゃいけないのでは。
確かにそうですな……知恵が回らなかった……


結局、
今日一日考えた結果、スタックマシンの連鎖みたいなのを作ってみることにしました。

369 名前:デフォルトの名無しさん mailto:sage [2006/01/24(火) 01:29:56 ]
>>368
実行環境フレームとか言う奴の事さしてんの?>>スタックマシンの連鎖


370 名前:366 mailto:sage [2006/01/24(火) 02:47:12 ]
どっちかっていうと、駆動レコード+スタックマシンといった感じですかね。
(実装の手を抜くために)駆動ごとにスタックマシンを付けた感じ。

371 名前:デフォルトの名無しさん mailto:sage [2006/01/24(火) 20:35:38 ]
お手本がRubyだと、この擦れ的には受けが悪いかもw
おれは第三世

372 名前:デフォルトの名無しさん [2006/01/25(水) 01:20:34 ]
LISP最高!

373 名前:デフォルトの名無しさん mailto:sage [2006/01/25(水) 01:42:38 ]
>>372
なんでそこでLupinと言ってぼけないだよ



374 名前:366 mailto:sage [2006/01/25(水) 22:18:52 ]
そういや、単純なスタックマシンだと(いくつ実引数を渡すかは関数側で決まるから)
オーバーロードでひどい目に会いそうですな……

取りあえずはスタックのリストを作って回避しようかと考えていますが、他にどんな
アイディアがあります?


375 名前:デフォルトの名無しさん mailto:sage [2006/01/25(水) 22:24:52 ]
オーバーロードを何時解決するかによる。コンパイル時に全部解決するなら問題あるまい。

376 名前:デフォルトの名無しさん mailto:sage [2006/01/25(水) 23:18:18 ]
>>375
メソッド名とシグニチャが結びついてれば実行時解釈でも問題ないしね。


377 名前:366 mailto:sage [2006/01/25(水) 23:20:36 ]
そういやそうですな。

でも、折角だから多値戻しを実装してみたい気もするんですよね……
Rubyみたいに配列を戻す手もありますが。


378 名前:デフォルトの名無しさん mailto:sage [2006/01/25(水) 23:37:20 ]
あまり欲張らない方がいいよ。複雑にしすぎると作ってて嫌になる。

379 名前:366 mailto:sage [2006/01/26(木) 00:06:21 ]
ははは、ご心配なく。かれこれ1年以上弄んでいますので、嫌んなるのは慣れっこです。
仕事だったら素直にC++使いますし。

まあ、未だに駆動が回んなくて鬱ですが…… “1+1”ができるのはいつになることやら……


380 名前:デフォルトの名無しさん mailto:sage [2006/01/26(木) 18:25:17 ]
ルビーに学べ

381 名前:(ぱ) mailto:sage [2006/01/26(木) 21:14:22 ]
どうもです。上のほうで出ていた「ライターのM」です(たぶん)。

Rubyのような解析木実行タイプの言語を作ろうとしていて、かつ、独自スタックも
使うつもりなら、うちのcrowbarなんかは参考になりませんか?

kmaebashi.com/programmer/devlang/

>>368
>一時変数の管理責任:呼出側 -> スタック作って管理
>動作主体:呼び出され側 -> 駆動はこちら

ここで言っている「一時変数」がローカル変数のことであれば、管理責任は
呼び出され側にあるのでは。呼び出し側は呼び出され側のローカル変数を
知らないからです。

引数についてであれば、呼び出し側で領域を確保するにしても、別段それを
スタックに積む必要はないように思います。
crowbarの場合、駆動レコードごとに、変数名と値の対応表を持っています
(ver.0.3以降は、クロージャの実現のためにスコープチェーンを持っているので
ちょっとややこしいですが)。関数呼び出しでは、呼び出し時に、呼び出され側の
駆動レコード(CRB_LocalEnvironment)を作成し、その中に、ローカル変数として、
実引数の値を突っ込んでいるだけです。

引数やローカル変数の領域をスタックに確保するという実装ももちろん考えられますが
(crowbarでは代入により実行時にローカル変数が作られるのでそれはできなかった)、
その場合、引数は呼び出し側で積むことになるのでは。

いずれにしても、関数呼出しごとにスタックを持つ必要なないと思うのですが、
どうでしょうか。crowbarは演算用の独自スタックを持っていますが、スタックは1本です。
まあ、crowbarのスタックは足りなくなるとrealloc()するので、そのへんの効率低下を
嫌って関数呼び出しごとに持つ、というのならわかりますけど。

382 名前:(ぱ) mailto:sage [2006/01/26(木) 21:22:58 ]
ついでに上の方の質問に。

>>91
>ライターのM氏のページで、Cでの実装だと型そのものはUNIONにまとめてる感じでした。
>やっぱり処理系が扱う変数型をまとめてUNIONにしてしまってフラグ変数で型を見分けて扱うというのが一般的なんでしょうか?

一般的かどうかは知りませんが、crowbarでは値を保持するために2箇所で共用体を使っています。
変数の値を直接保持するCRB_Valueと、変数から指された先のヒープ中にある、
CRB_Objectです。

>そのときに、たとえばWinapiに対する拡張とか、製作時点で未知のオブジェクトに対応する場合はどういう方向になるんでしょうか?

Winapiに対する拡張とかを狙って、ネイティブポインタ型というのを導入しています。
luaのユーザデータ型も同じようなもののように見えます。

>>96
>C言語的構造体指向OO風味だと、メモリの配置さえあってれば問題なく下位の構造体にアクセスできるから、
>なんとか構造体EXとかは可能だと思う。関数ポインタつければ仮想関数もどきとかもできますぜ。

これは、crowbarで言うところのCRB_Objectについては可能でも、CRB_Valueについては
不可能ですよね。

383 名前:366 mailto:sage [2006/01/27(金) 00:10:43 ]
>381
情報サンクスです。考え方のところとか色々と参考になります。

ただ、自分の目指しているのは型なし&プロトタイプ指向ですので、やっぱりちょっと
ポイントが違うようですね。まあ、その違いを見るのも楽しいですが。

>ここで言っている「一時変数」がローカル変数のことであれば、
いえ、関数の戻り値ですね。最初は関数の戻り値を次の継続に直接渡そうかと
考えていたのですが、そうすると今の自分のアイディアだと(継続のずっと先にある)
ブロックのローカル変数から実引数を取ってくるのが面倒にだったので、少し悩んでました。
スコープチェーン作って管理するのもいいのですが、もっと簡単な方法が無いかな……と
いうことで、取りあえずはスタックマシンを利用する方法でトライすることにします。

>いずれにしても、関数呼出しごとにスタックを持つ必要なないと思うのですが、
call/ccを実装したいと思っているのですが、その都度スタックを保存するのも面倒だし
いっそのこと全部の継続にスタック持たせちまえ、という乱暴なアイディアから来ています。
……まだ実装できていないので、本当にうまくいくのか不明ですが……




384 名前:デフォルトの名無しさん mailto:sage [2006/01/27(金) 00:27:50 ]
アイデアだけではなぁ、
なぜ既にあるものを使わん?
アフォ?

385 名前:366 mailto:sage [2006/01/27(金) 00:37:09 ]
>384

既にある言語では無いから作っているんだけど……Schemeは近いものを感じるけどね。

あと、勉強という意味では車輪の再発明も重要だよ。







[ 続きを読む ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧]( ´∀`)<235KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef