「コンパイラ・スクリプトエンジン」相談室16 (649レス)
「コンパイラ・スクリプトエンジン」相談室16 http://mevius.5ch.net/test/read.cgi/tech/1405822579/
上
下
前
次
1-
新
通常表示
512バイト分割
レス栞
248: デフォルトの名無しさん [sage] 2015/08/20(木) 11:31:12.43 ID:WmW0wMbd 痛い文章だ http://mevius.5ch.net/test/read.cgi/tech/1405822579/248
249: デフォルトの名無しさん [sage] 2015/08/24(月) 00:47:20.35 ID:OjRQ25eS マルチメソッドを効率よく実装するにはどのようにすればよいですか? http://mevius.5ch.net/test/read.cgi/tech/1405822579/249
250: デフォルトの名無しさん [sage] 2015/08/24(月) 01:10:40.39 ID:YG1kZeuQ マルチメソッドって何? http://mevius.5ch.net/test/read.cgi/tech/1405822579/250
251: デフォルトの名無しさん [sage] 2015/08/24(月) 01:36:14.61 ID:OjRQ25eS OOPの最も基本的な機能です 引数によって、メソッドが切り替わります 多態といいます http://mevius.5ch.net/test/read.cgi/tech/1405822579/251
252: デフォルトの名無しさん [sage] 2015/08/24(月) 02:01:55.26 ID:YG1kZeuQ オーバーロードのことですか? ではマングリング http://mevius.5ch.net/test/read.cgi/tech/1405822579/252
253: デフォルトの名無しさん [sage] 2015/08/24(月) 02:21:03.16 ID:OjRQ25eS マルチメソッドはオーバーロードでは無いです 一般にオーバーロードは静的ですが、 マルチメソッドは動的です http://mevius.5ch.net/test/read.cgi/tech/1405822579/253
254: デフォルトの名無しさん [sage] 2015/08/24(月) 08:00:36.10 ID:WVPITNbu >>251 > 引数によって、メソッドが切り替わります はい? http://mevius.5ch.net/test/read.cgi/tech/1405822579/254
255: デフォルトの名無しさん [sage] 2015/08/24(月) 08:19:25.57 ID:jJXNOMmM clojureのdefmultiみたいな奴じゃないの? http://mevius.5ch.net/test/read.cgi/tech/1405822579/255
256: デフォルトの名無しさん [sage] 2015/08/24(月) 11:49:46.23 ID:BYoao/vR 多重ディスパッチのニッチな要求に応えるものか それとも単純な動的バインディングだけの問題なのか http://mevius.5ch.net/test/read.cgi/tech/1405822579/256
257: デフォルトの名無しさん [sage] 2015/08/26(水) 18:36:02.43 ID:XR0u/yGZ マルチメソッドはC++相談室を検索すればなんなのかがわかる http://mevius.5ch.net/test/read.cgi/tech/1405822579/257
258: 片山博文MZ ◆T6xkBnTXz7B0 [sage] 2015/08/30(日) 17:45:45.69 ID:bYlp1Mb/ >>249 パターンマッチを効率よく行う http://mevius.5ch.net/test/read.cgi/tech/1405822579/258
259: デフォルトの名無しさん [] 2015/08/30(日) 19:15:42.50 ID:nhXJHOe7 型を連想配列やトライ木で管理すればO(1) http://mevius.5ch.net/test/read.cgi/tech/1405822579/259
260: デフォルトの名無しさん [sage] 2015/08/30(日) 20:08:17.93 ID:brcjELIg >>259 clojureはソレだね http://mevius.5ch.net/test/read.cgi/tech/1405822579/260
261: デフォルトの名無しさん [] 2015/09/17(木) 12:38:19.48 ID:mHCGeegj 中間言語の設計に関するノウハウとかアンチパターンとかが書かれた本誰か知ってる? LLVMとかP-codeとかJava VMとか、あるいはKnuthのMIX/MMIXみたいな機械語に近いレベルの言語を ソフトウェア実装すること前提に設計する場合について知りたい。 今言語設計してて、そろそろ構文解析できそうだから学んでおきたいんだけど。 http://mevius.5ch.net/test/read.cgi/tech/1405822579/261
262: デフォルトの名無しさん [sage] 2015/09/17(木) 19:56:34.99 ID:7ftMaB4B 最初はネイティブに落とした方がいいぞ 中間言語とか遠回りしてたらアホみたいだぞ http://mevius.5ch.net/test/read.cgi/tech/1405822579/262
263: デフォルトの名無しさん [sage] 2015/09/18(金) 15:07:01.58 ID:QAQ6VXx0 そんな物他人に教わるくらいならおとなしく既存のを使っとけ http://mevius.5ch.net/test/read.cgi/tech/1405822579/263
264: デフォルトの名無しさん [sage] 2015/09/18(金) 20:35:24.73 ID:F4ynHS7Z 本として出して需要あるか?もしかしたらサーベイ論文なら探せばあるかも http://mevius.5ch.net/test/read.cgi/tech/1405822579/264
265: 261 [sage] 2015/09/18(金) 21:16:12.07 ID:ArWsl8Ey >>262 素直にコンパイル出来ない言語を設計してるので(clispのような)、snippetの表現をx86/amd64表記にする意義が薄いんですよね。 >>263 凝り性なもので。 >>264 一応ciniiは一通り眺めたけど、中間言語の設計に関する論文って無いんですよね。 素直に「中間言語」で調べると自然言語の翻訳に使う方が大量に引っかかってつらい…… http://mevius.5ch.net/test/read.cgi/tech/1405822579/265
266: デフォルトの名無しさん [sage] 2015/09/18(金) 22:17:11.93 ID:i7DEL3du >>265 動的型付け必須系? ならErlangの論文とか資料あさるといいかも http://mevius.5ch.net/test/read.cgi/tech/1405822579/266
267: 261 [sage] 2015/09/19(土) 09:19:04.79 ID:YlOPp2hb >>266 swiftのように演算子をユーザー定義出来て、 c++のように同名異引数の関数を定義出来て、 Lispのように引数間のカンマが要らず、 Rubyのようにカッコを省ける そんな言語を設計中です。 それらの両立のために実行中に文法を書き換えて構文解析器を再構成するという手法を採ってるので、コンパイル出来ないんですよね…… clispのリードマクロを文脈依存に拡張したものだと言えば大体あってるかと。 ちょっとErlang関連の資料を見てみます。 http://mevius.5ch.net/test/read.
cgi/tech/1405822579/267
268: デフォルトの名無しさん [sage] 2015/09/19(土) 10:26:16.30 ID:7hgo9IJ4 >>267 列挙してあることはシンタックス上のことで全部コンパイル時に静的に解決出来そうに見えるけど無理なの? http://mevius.5ch.net/test/read.cgi/tech/1405822579/268
269: デフォルトの名無しさん [sage] 2015/09/19(土) 11:29:33.20 ID:I9CWDfzW >>267 コンパイル時の都合だよね? VMの設計とはなんの関係もなさげなんだけど http://mevius.5ch.net/test/read.cgi/tech/1405822579/269
270: 261 [sage] 2015/09/19(土) 12:48:32.00 ID:YlOPp2hb >>268 今考えてる言語では、演算子の扱いが関数を引数の場所に関して一般化した第一級オブジェクトなので 前置引数の個数や後置引数の個数は実行してみるまで分からないので コンパイル時の識別子を用いた構文解析は無理です。 前置演算子と一引数関数が別物って変だと思ったのでそうしました。 c++風に書くと、こんな感じのが通るイメージです。 g = [](a,b){return a - b;}; if (複雑な式) { f = [](a|b,c){return a + b + c;}; // (a|b)で前置引数としてa、後置引数としてbと示
すものとする。 } else { f = [](a,b|c){return a + b + c;}; } // gは2引数演算子、fは3引数演算子。 // ここではgの優先順位はfより低いものとする(c++での表現方法が無いので)。 // カッコやカンマを省いてある場合、上の条件のどちらが走っても構文上は受理される。 // 複雑な式の結果によって、これはg(1, f(2, 3, 4))及びg(f(1, 2, 3), 4)のどちらにもなりうる。 cout << (g 1 2 f 3 4) << endl; >>269 そういうわけで一度に全部読み込んでコンパイルしてから実行するという事が出来ないので、 折角だからVMも設計しようと
思った次第です。 ASTから中間言語に落とすとcontinuationの実装が楽になるので。 http://mevius.5ch.net/test/read.cgi/tech/1405822579/270
271: デフォルトの名無しさん [] 2015/09/19(土) 13:15:38.32 ID:hJISNbn0 g 1 2 f 3 4は構文解析後にはどういうツリーになっているの? フラットなままで構文解析終えて実行時にまたプチ構文解析をするの? http://mevius.5ch.net/test/read.cgi/tech/1405822579/271
272: 261 [sage] 2015/09/19(土) 13:24:30.87 ID:YlOPp2hb >>271 字句解析でばらばらにしてLL(1)でカッコの対応等について解いた背の低い木にして、その後実行時にLR(1)で式毎に再度解析するので > フラットなままで構文解析終えて実行時にまたプチ構文解析をするの? これであってます。 http://mevius.5ch.net/test/read.cgi/tech/1405822579/272
273: デフォルトの名無しさん [sage] 2015/09/19(土) 14:10:09.60 ID:I9CWDfzW おもしろい事かんがえてるなー ElixirとかBEAM-VMとか参考になるんじゃねぇの? http://mevius.5ch.net/test/read.cgi/tech/1405822579/273
274: 261 [sage] 2015/09/19(土) 15:18:02.65 ID:YlOPp2hb >>273 高信頼・並列分散に特化したVMのようにあちこちで言われてるみたいですね、ErlangのBEAM-VM. そう考えるとLLVMは解析容易性特化、JVMはVM自体の実装容易性特化といった所でしょうか。 VMを作るなら何かに特化させるべきなような気がしてきました。 http://mevius.5ch.net/test/read.cgi/tech/1405822579/274
275: デフォルトの名無しさん [sage] 2015/09/20(日) 00:52:44.57 ID:m4tWKm8w 演算子に限定する意味は何だろう cout << (g 1 2 f 3 4) << endl; こんなの一見して何してるのか判らないしいっそ構文ごと第一級にすればいい そもそも実行時に構文解析機まで走らせる重い処理系って必要なのかなあ クロージャじゃあかんのかね http://mevius.5ch.net/test/read.cgi/tech/1405822579/275
276: デフォルトの名無しさん [sage] 2015/09/20(日) 09:22:45.62 ID:tHziPwGz この程度のアイデアしかないようじゃ才能ないわな http://mevius.5ch.net/test/read.cgi/tech/1405822579/276
277: 261 [sage] 2015/09/20(日) 11:27:11.87 ID:oZCwg6h7 >>275 今作ってる実装だと構文はhead, body, precedence, directionをキーとするオブジェクトの配列になってるので 構文も第一級オブジェクトのインスタンスになっています。 説明不足ですんません。 コードは現在こんな感じ。もし読みたければどうぞ。 https://gist.github.com/pixie-grasper/d07388493204a5e370a2 debug-printが多かったりコメントが少なかったりしますが…… > そもそも実行時に構文解析機まで走らせる重い処理系って必要なのかなあ 必要性については私にはま
だ分かりませんが、 私は昔レキシカルスコープもクロージャもポインタも継続もマクロも無い素晴らしく酷い言語(古いBASIC)で全てを考えていたので、 その経験から、どんな機能も使い慣れると必要になってくると思っています。 >>276 私馬鹿なもんで。 いいアイデアがあったら是非とも実現してくだされ。 http://mevius.5ch.net/test/read.cgi/tech/1405822579/277
メモ帳
(0/65535文字)
上
下
前
次
1-
新
書
関
写
板
覧
索
設
栞
歴
あと 372 レスあります
スレ情報
赤レス抽出
画像レス抽出
歴の未読スレ
Google検索
Wikipedia
ぬこの手
ぬこTOP
0.012s