TinyBASICできたかも

とりあえず関数と変数の名前を整理。いまさら何だという話になるが現在の開発環境Visual C++ 2010 ExpressがCではなくてC++だということがわかった。したがって標準ライブラリと同じ名前の関数が存在してもオーバライドして正しく動作してしまう。MPLAB C30やSmall Cだとそういうわけにいかないので、標準ライブラリと同じ名前の関数は先頭にc_を追加。ほかの関数は、中間コードを実行するものは先頭がi、データを得るものはget、出力するものはputというように、お馴染みの慣習にしたがう。BOOL型の戻り値はcharに統一。ローカルの変数も役割が同じなら名前も同じにするという方針で整理した。

名前を整理する過程でプログラムの流れを整理することができた。思い切って中間コードポインタをグローバルに変更。この作業は記述を少し書き換えては動かしてみるという方法がとれないので全体を書き直したあとぶっつけ本番になる。運良くだいたい動く。ぜんぜん動かないとどうしようもないが少しでも動けば修正できる。2~3の問題を解決して完成。ときどき暴走する症状があったが原因を突き止める前に自然と消えてしまいラッキー、ではなくてすごく不安。現状では何をやっても暴走しないので、これでよしとするほかない。

保留している機能がふたつある。ひとつは[Ctrl]+[c]で停止させること。これがないとGOTOで永久ループを作ってしまったとき対処のしようがない。ただし、ほとんどのOSは[Ctrl]+[c]を自身の特別な処理に割り当てていてTinyBASICに届かない。そのため[ESC]で停止することにした。保留しているもうひとつはエラーの表示。アセンブリ言語だとエラーを生じた位置から直接ホットスタートへ戻れるが、C言語だと呼び出し順に戻ることになり、その途中で同じエラーを拾って表示が重複するおそれがある。クロスリファレンスを作って整理しなければならない。

エラーの表示ができあがるのはまだ先になりそう。もっともそれは傍らの機能。本筋はもう完成していると思う。

広告
カテゴリー: TinyBASIC パーマリンク

コメントを残す

以下に詳細を記入するか、アイコンをクリックしてログインしてください。

WordPress.com ロゴ

WordPress.com アカウントを使ってコメントしています。 ログアウト / 変更 )

Twitter 画像

Twitter アカウントを使ってコメントしています。 ログアウト / 変更 )

Facebook の写真

Facebook アカウントを使ってコメントしています。 ログアウト / 変更 )

Google+ フォト

Google+ アカウントを使ってコメントしています。 ログアウト / 変更 )

%s と連携中