制御構造がほぼ完成

行ポインタをグローバルにしたらいろいろな問題が一気に解決。GOTOの機能は行ポインタを書き換えることで実現。動作確認するたびに永久ループに入るのが困りもの。手ごわいんじゃないかと覚悟していたGOSUB~RETURNはGOTOの応用で思いのほか早く完成。GOSUBは行ポインタと中間コードポインタをスタックに入れて、あとはGOTOと同じ。RETURNにいたっては行ポインタと中間コードポインタをスタックから取り出すだけでいい。

GOSUBをきちんと動作確認するためにSTOPを作る。STOPの処理は行ポインタをリストの末尾まで送る。ついでにREMも作る。REMの処理は中間コードポインタを行末まで送る。行末の中間コードは38で、REMは中間コードが38でない限り中間コードポインタを進める。数字の38があると中間コードに38が含まれるので、これと行末をどう区別するかすごく悩んだが、何のことはない、行末であろうとなかろうと中間コードポインタが38を指せばその行は終了する構造になっている。愚直に頑張っているとたまにこういう幸運に恵まれる。

調子がいいのでIFにも挑戦。これも難航が予測されたが、実際の処理と向き合うと意外に単純。条件式はそのまんまC言語の条件式に置き換え、あとは条件が成立しなかったときREMの処理に流れるということで完成。コンピュータは用語のマジックだな。IFなんていわれると人間が「もし」と考えるときの複雑な状況を思い浮かべるが、処理は単純。難しそうに感じるのは人間の考えすぎ。というか、人間の「もし」だってひょっとしたら客観的に単純な状況なのかもしれない。

残る課題で難しそうなのはFOR~NEXTくらい。何だか開発に勢いがついてきたように感じる。

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

コメントを残す

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

WordPress.com ロゴ

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

Twitter 画像

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

Facebook の写真

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

Google+ フォト

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

%s と連携中