- 「コンパイラ・スクリプトエンジン」相談室16
216 :デフォルトの名無しさん[sage]:2015/04/22(水) 02:22:50.19 ID:eOWj6Ffd - javaに近い構文の言語をつくろうとしてるんだけど、
ようやくchar配列に変換したソースから関数の外側を構文解析できた。 山括弧<>、文字列リテラル、コメントに気をつけつつ、 なんとか関数の中を無視してクラス・変数・関数の名前や型名を取得して 関数の中身にとりかかるところ。 関数の中身は丸括弧()が難関になりそう。 AAAA bbbb = ((HHHH)cccc.dddd.eeee(ffff.gggg(), jjjj)).iiii(); bbbb.kkkk = -10/(8-3)-9/-3
|
- 「コンパイラ・スクリプトエンジン」相談室16
218 :デフォルトの名無しさん[sage]:2015/04/22(水) 21:30:55.14 ID:eOWj6Ffd - >>217
最初はクラス名、メンバ変数、メンバ関数を全部調べてからじゃないと 関数の中身に取り掛かれないと思ってた。 でもクラス名・変数名・関数名に区別は不要で、記号をヒントに階層を分解して、 それから型名の存在の有無・整合性を調べるという風にフェーズを分けれそう。 でも()が演算の優先順位、型キャスト、メソッド...どれに使われているのか 区別できるかは不安。for文とかは最初に予約語が入るからやりやすそうだけど。 Person person = ((Factory)group.cache.getFactory(provider.getResource(), url)).create(); person.id = -10/(8-3)-9/-3;
|
- 「コンパイラ・スクリプトエンジン」相談室16
220 :デフォルトの名無しさん[sage]:2015/04/22(水) 23:28:51.38 ID:eOWj6Ffd - いけるか分からない。とりあえずやってみるってところ
|