「コンパイラ・スクリプトエンジン」相談室16 (648レス)
「コンパイラ・スクリプトエンジン」相談室16 http://mevius.5ch.net/test/read.cgi/tech/1405822579/
上
下
前次
1-
新
通常表示
512バイト分割
レス栞
抽出解除
レス栞
124: 117 [sage] 2014/12/06(土) 23:06:51.00 ID:BPhK2Nlg とりあえずenzan3の定義の先頭にマイナスの記号があるかもしれないという意味合いで 以下のようなコードに変えてみました。 void enzan3() : {} { [<HIKU>]enzan4() //★ ((<TASU>|<HIKU>)enzan4())* } void enzan4() : {} { enzan5() ((<KAKERU>|<WARU>)enzan5() } void enzan5() : {} { <MOZI>|<SUUZI>|"(" enzan3() ")" } <>:トークン |:左右のどちらかの構文(||やOr演算子のようなもの) []:省略可能構文 http://mevius.5ch.net/test/read.cgi/tech/1405822579/124
202: デフォルトの名無しさん [sage] 2015/02/24(火) 17:44:49.00 ID:H95vOz7j >>199 そのテーブルに式を入れるときその式が不変かどうかを判断する部分でわからなくなってくる >>200 ほとんど読んでないドラゴンブック見たら最適化部分についても書いてるな これ読むの辛いな 頑張って読んで出直すか http://mevius.5ch.net/test/read.cgi/tech/1405822579/202
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
347: デフォルトの名無しさん [sage] 2016/01/15(金) 22:55:08.00 ID:y9x+XKWj C言語のABIは色々あるぞ 基本はcdeclかstdcallだけど スタック使わずレジスタでやりとりしたり 環境や処理系毎に異なる http://mevius.5ch.net/test/read.cgi/tech/1405822579/347
369: デフォルトの名無しさん [sage] 2016/01/23(土) 15:07:58.00 ID:0d2orZXz メモ化とテーブルルックアップw http://mevius.5ch.net/test/read.cgi/tech/1405822579/369
510: デフォルトの名無しさん [] 2016/04/23(土) 18:35:58.00 ID:vG+aKQwy 禿丸エディタを何の参考にする気だ http://mevius.5ch.net/test/read.cgi/tech/1405822579/510
610: デフォルトの名無しさん [] 2016/06/05(日) 14:53:16.00 ID:D97p9ZEl 最適化有効にしてバグるのも大抵そのプログラムのバグだから http://mevius.5ch.net/test/read.cgi/tech/1405822579/610
612: デフォルトの名無しさん [] 2016/06/11(土) 06:06:42.00 ID:MaD03lMp 今考えたら昔のN88BASICも、実は凄かったんだな。 コンパイラを作りの前の基礎教養として、価値があると思う。 知識が多いほうが有利だし。 http://mevius.5ch.net/test/read.cgi/tech/1405822579/612
上
下
前次
1-
新
書
関
写
板
覧
索
設
栞
歴
スレ情報
赤レス抽出
画像レス抽出
歴の未読スレ
AAサムネイル
Google検索
Wikipedia
ぬこの手
ぬこTOP
0.029s