「コンパイラ・スクリプトエンジン」相談室16 (649レス)
1-

206: 片山博文MZ ◆T6xkBnTXz7B0 2015/02/24(火)20:45 ID:UGr8Bbp/(2/2) AAS
__declspecとか__attribute__などをパースできないと正確な構造体型のサイズ
を求めることができない。しかしattribute周りの文法がメチャクチャやなあ。
207: 片山博文MZ ◆T6xkBnTXz7B0 2015/03/03(火)01:05 ID:t6l1EelO(1) AAS
次は"typed value"の扱いだな。定数にも型がある。型付きの値を
扱えなければ、正確な定数値を求めることはできない。
208: 2015/03/03(火)04:49 ID:ZU1MaIS8(1) AAS
最適化なんてイラナイよね、何処まで処理系に依存する気なんだよw
209: 2015/03/08(日)14:52 ID:u8r5MR2m(1) AAS
初心者だがHSPって凄いね
自分でHSPみたいなの作ろうとすると途端につまづくw
内部でメッセージハンドルに登録していく言語だと思うんだけど
こんなにwinを感じさせない文法でwinと親和性高く作れるとは
210: 2015/03/08(日)17:15 ID:8c6PRT7L(1) AAS
ランタイムの機能の量で躓くならともかくあの文法でつまづくなら>>1で概要把握して本読めば
211: 2015/03/09(月)14:52 ID:MIZIuI1f(1) AAS
文法とOSに何の関係が?
212: 2015/03/09(月)16:12 ID:J8WIpDef(1) AAS
いただきジャンガリアンに辛酸をなめさせられたのだろうよ
213: 2015/03/09(月)17:25 ID:VM1FVYaf(1) AAS
うーん初心者だから言い方わかんないんだけど
コマンドプロンプトのスクリプトってコマンドに従って単に実行していくだけだよね
でもwinだと実行されるのは素直に考えるとメッセージが来たとき
cでウインアプリつくるときはメッセージ毎に処理を書くけど上から順に読むスクリプトは
それはできないわけだからどう整合性取るのかなってことで悩んでた

結局メッセージ毎にリストがあってコマンドを読んだらそのリストに関数ポインタ名で追加、
メッセージ毎に呼ばれる関数はその種別のリストを上から順に実行していく
こんな感じで作ったけどこれでいいのかな
214: 2015/03/12(木)21:28 ID:BlO2EFmA(1) AAS
そりゃ文法じゃなくて実行モデルだな。
イベント駆動ってことでしょ。
215: 2015/04/13(月)21:09 ID:qtTodoaL(1) AAS
「Cのコンパイラなら何日かかけて作っても良いが、C++は、一人で
作るのは嫌だ。文法をきちんとカバーするのに日数がかかりすぎるから」
と言われたよ。
216
(1): 2015/04/22(水)02:22 ID:eOWj6Ffd(1/3) AAS
javaに近い構文の言語をつくろうとしてるんだけど、
ようやくchar配列に変換したソースから関数の外側を構文解析できた。

山括弧<>、文字列リテラル、コメントに気をつけつつ、
なんとか関数の中を無視してクラス・変数・関数の名前や型名を取得して
関数の中身にとりかかるところ。

関数の中身は丸括弧()が難関になりそう。
AAAA bbbb = ((HHHH)cccc.dddd.eeee(ffff.gggg(), jjjj)).iiii();
bbbb.kkkk = -10/(8-3)-9/-3
217
(1): 2015/04/22(水)20:33 ID:rBARkljm(1) AAS
>>216
まるで違う言語に見えてしまうのだが。
218: 2015/04/22(水)21:30 ID:eOWj6Ffd(2/3) AAS
>>217
最初はクラス名、メンバ変数、メンバ関数を全部調べてからじゃないと
関数の中身に取り掛かれないと思ってた。

でもクラス名・変数名・関数名に区別は不要で、記号をヒントに階層を分解して、
それから型名の存在の有無・整合性を調べるという風にフェーズを分けれそう。

でも()が演算の優先順位、型キャスト、メソッド...どれに使われているのか
区別できるかは不安。for文とかは最初に予約語が入るからやりやすそうだけど。

Person person = ((Factory)group.cache.getFactory(provider.getResource(), url)).create();
person.id = -10/(8-3)-9/-3;
219
(1): 2015/04/22(水)22:59 ID:LKLiXgla(1) AAS
いまいち分からないけど、識別子の次にあったら関数呼び出しで
それ以外は式とかでいけないの
220: 2015/04/22(水)23:28 ID:eOWj6Ffd(3/3) AAS
いけるか分からない。とりあえずやってみるってところ
221: 2015/04/23(木)08:14 ID:+O6VWDUu(1) AAS
>>219
構文次第
てか、普通識別子に続くカッコを見て初めて関数/メソッドってわかるわけだし
222: 2015/04/27(月)01:02 ID:RiYFohCl(1/2) AAS
メソッドの中が上手くいかんというか何から始めたら良いのか分からん
コンパイル速度が遅くなるけど、分解フェーズを何層にも分けて
何度もループで調べていけば良いのかな
223: 2015/04/27(月)06:59 ID:EFAP6joI(1) AAS
コンパイラの教科書の一冊でも読んで構文解析を勉強してみ
224
(1): 2015/04/27(月)09:38 ID:ZDDsb7dY(1) AAS
C系のクソみたいな構文ルールをそのまま真似てどうすんの
自作なら作りやすいようにキーワード追加すればいいのよ

キャスト式にキーワード付けなかったのは最大の誤りの一つ
225: 2015/04/27(月)09:56 ID:qDIHhHi0(1) AAS
SSA形式からスタックマシンのコード生成の最適化みたいなのに参考になる文献ってないかな?
226: 2015/04/27(月)14:22 ID:RiYFohCl(2/2) AAS
>>224
そうだね。HaxeとかFlashからぱくって、C形式のキャストは無くしてみるわ
int i = cast Integer ( 0.005f );
int i = 0.005f as Integer;
227: 2015/04/28(火)18:20 ID:PlNb5vya(1) AAS
最終的に何を目指そうかしら

1)LLVMで動かす 
→ 超難しそう

2)Luaのように組み込みスクリプトとして動かす 
→ 重そう。メモリ管理は全部ウィークポインタで良いのかな
(C/C++組み込みならnew&deleteするようなスクリプトでも良さそう)

3)JavaScriptなどに変換 
→ たぶん例外のバックトレースとかを変換するデバッグ環境が必須
228: 片山博文MZ ◆T6xkBnTXz7B0 2015/05/05(火)23:02 ID:p1RbtT4Y(1) AAS
コンパイラーの品質保証は、数学で証明する時代だ!!!
Coqと数学でコンパイラーが作れる!!!
外部リンク[html]:compcert.inria.fr
229
(1): 2015/05/09(土)18:57 ID:SYpntI8c(1/3) AAS
バイトコードインタプリタつくっているんだけど
スタックマシンのコンパイラについて
パラメータスタック(データスタック)はヒープ上におくべき?
それともネイティブの領域におくべき?
230
(1): 2015/05/09(土)19:41 ID:SYpntI8c(2/3) AAS
>>229
訂正
コンパイラー>仮想機械
231
(1): 2015/05/09(土)20:41 ID:DhZyBtDK(1) AAS
>>230
ネイティブスタックにデータも置くって事だよね?
データスタックは分けておいた方がイロイロ楽だったので列挙
たしかこんなの

GC使う様な実装の時の仕分け
実行パスがJITでコンパイルコードと非コンパイルVMコードの行ったり来たりするとき
例外のスタックトレース(これもJIT時のアレコレあり)
チープマシンにVM仕込むときアセンブラで書くのが楽しい

最後はちげぇけど
232
(1): 2015/05/09(土)21:02 ID:SYpntI8c(3/3) AAS
>>231
自分のVMは典型的なスタックマシンで
パラメータスタック(データスタック)とコールスタックは別です。
そのうちデータスタックをヒープ内におくか
アセンブリでかかれたほうのネイティブの領域におくかってことです。
ネイティブ領域においたほうが実際のアドレスとVM上でのアドレスの変換がないので
速度としては速いのですが
欠点としてバイトコードからスタックを参照することができません
焦点とてしてはそもそもバイトコードからスタックを参照することがあるのかということで、
基本的になければネイティブ領域におこうかとおもっています
これまでつくった経験がないので設計としてどちらがよいかわからずお聞きしました
233
(1): 2015/05/10(日)09:31 ID:ZQGgJB6p(1) AAS
>>232
> 焦点とてしてはそもそもバイトコードからスタックを参照することがあるのかということで、
バイトコードの設計は終わってるんじゃないのか?
バイトコードの設計終わってりゃ参照の必要があるかどうかはわかってるだろうし、バイトコードの設計終わってないのに VM の構成考えてるならお前が終わってる
234: 2015/05/10(日)09:50 ID:YKkUWNQO(1) AAS
>>233
その通りわ
出直して来ます
235: 2015/05/19(火)18:50 ID:a+aajTcz(1) AAS
番兵の文字は
utf-8でも16でも32でも-1でいいんですか?
1-
あと 414 レスあります
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ

ぬこの手 ぬこTOP 0.031s