K.Maebashi's BBS 投稿フォーム
ハンドル名
件名
Link
> yacc,lecの修正とプリプロセッサの作成が終わりました。ファイルの多重#includeと >多重の#define宣言を処理できるようになりました。 > 次の3つのファイルをt001.dkmで起動すると。 > >--ファイルt001.dkm--------------------------- >// aaaaaaaa >#include "t001-01.dkm" >#define DEF1 DEF2 + "def1 " // aa >int main() >{ > string str; > str = DEF1; > str = DEF2; > str = DEF3; >} > >--ファイルt001-01.dkm------------------------ >//ssssssssssss >#define DEF2 DEF3 + "def2 " // bb >#include "t001-02.dkm" //aaaa >int print (string str); > >--ファイルt001-02.dkm------------------------ >//ssssssssssss >#define DEF3 "def3 " // cc >int printnl(string str) >{ > print(str + "\n"); >} >------------------------------------- > ↓ > プリプロセッサ > ↓ >------------------------------------- >int printnl (string str ) >{ >print (str +"\n"); >} >int print (string str ); > >int main () >{ >string str ; >str ="def3 "+"def2 "+"def1 " ; >str ="def3 "+"def2 " ; >str ="def3 " ; >} >------------------------------------- > になってコンパイラに渡されます。もちろんメモリ渡し、エラーもファイル名+行番号で出さ >れます。コメントやインデントは内部的に不要なので無くなっています。 > 最上位の制御構造がマルチスレッドを意識した構造を作りこみ、コンパイラは単独で動作する >構造になりつつあります。ジェネレータは関数単位で実行される予定です。 > これでようやく中断前に戻れます。 > 関数のリンクは総て動的リンクにする予定です。最初の1回だけ動的リンクが行われ、その後 >コンパイラが起動されるか、中間コードが破棄された時のみ再度動的リンク試験が行われます。 >これでほとんどの関数コールは、直接起動されることになり。スピード的に問題ないと思って >います。 >
spamよけのため、ここに「ほげぴよ」と入力してください。
削除パスワード :
クリック!