SSブログ

オリジナル言語 題してT言語の現状 [IT]

先日紹介したオリジナル言語についてです。
名前はズバリ「T言語」です。タナーのTですw
いつかT++とかT#に進化したらいいなぁw

さて、言語仕様は大体決まりました。
というか現時点ではこれ以上思いつかない。
実際に使っていくうちに改善点も出てくるだろうから、徐々に改善していきましょう。

仕様が決まったので、次はコンパイラをどう実装するかを検討します。
コンパイラは大きく分けて以下の機能に分けられます。
字句解析
入力した文書から字句(コマンドや変数、演算子など)を切り出す
構文解析
切り出した字句を構文として解釈する
中間コード作成
構文をコード生成しやすいように一度命令文に置き換える
コード最適化
置き換えた命令文が最適になるように改良する
コード生成
命令文を実行コードやレジスタの使用方法を決めて実行オブジェクトに変換する

この中で字句解析は何となく自分の中で解法がありますし、まあ力技で何とかなると思っています。
構文解析は言語仕様の決定の際にざっくりと方針を決めたので、それに沿うように解析ロジックを組もうと思います。ここはそれなりに手間がかかると思います。
中間コードについては今の所保留にしてます。構文解析と一体化できるかもしれないので。
コード最適化はとりあえず当面は考えなくていいと思います。
で、一番難問なのが最後のコード生成。
そもそもZ80のコードを全部把握しなければならないし、以下にあげるポイントの解法がまだ見いだせていません。

文字列変数の扱い
文字列変数を定義する時にリニアにメモリ確保して、以後はアドレスの受け渡しだけで扱うのか。
例えば変数の代入をした時にシャローとディープの使い分けをどうすべきなのか。

IOCS制御の実装方法
IOCSはX1の共通I/Oルーチンだが、レジスタやアドレスのダイレクト設定が必要。
IOCSを呼び出す度に使用するレジスタを退避して値を代入する操作をしていたのでは効率が悪い。
全体的なレジスタの使い方と合わせて検討が必要である。

グラフィック関連の実装方法
X1のグラフィックRAMはI/O空間にあるため、必ずBCレジスタを使わなければならない。
これもIOCS同様にレジスタ運用の制約となってしまうので、検討が必要。

イレギュラー動作に対する対処
最新鋭言語では例外ハンドリングが当たり前のように出来るし、仮にハンドリング出来なくてもフレームワークがカバーしてくれる。
しかしT言語の場合、イレギュラーは即暴走につながる。
例えばmain処理で無限ループになるように作らなければどこかでプログラムは終了してしまう。
その時どう動作させるべきなのか。

とまぁ考えなければならないことはたくさんあります。
独自解釈で考えちゃってもいいんだけど、もう少しこの分野の勉強が必要かもしれないなぁ。
nice!(0)  コメント(0) 

nice! 0

コメント 0

コメントを書く

お名前:
URL:
コメント:
画像認証:
下の画像に表示されている文字を入力してください。

Facebook コメント

この広告は前回の更新から一定期間経過したブログに表示されています。更新すると自動で解除されます。