04/09/04 20:09
>>858
実行時に型チェックするかコンパイル時に型チェックするかは、言語の設計に
大きく関わってくるけど、まぁどっちでも良い。
コンパイル時に型チェックしたければ、たとえば Yacc 風に書くと
IDENT '=' experssion:
{
// まず IDENT が変数名であることを確認
// 次に experssion の型が IDENT の型に変換できることを確認
// 型変換して代入するコードを生成
}
;
ってな感じ。型変換判定は素直に実装すると型の数の 2 乗のオーダーで増えるが、
テーブルにでも書いておけば大した手間ではない。ベタに if - else とかで書くと死ぬ。