HOBBY-BASICの仕様を考える。
趣味で簡単なBASIC言語を開発してみようという個人的な企画です。
§動機
§機能
§仕様
○データ型
○変数
○演算子(整数値,実数値)
○演算子(文字列)
○基本命令
○宣言命令
○制御命令
○組み込み関数
§最後に
趣味で簡単なBASIC言語を開発してみようという個人的な企画です。
§動機
中間言語で処理できるスクリプト・エンジンのお勉強です。
普通に作っても面白くないので後で自分でもゲームが作れるような
そこそこ使えるプログラミング言語を作りたいと思っています。
§機能
最初はコンソール画面で動くタイプを作成する予定です。
最低限サポートしたい命令はキーボード入力、画面出力、文字列操作、
算術関数、日付と時刻などを考えています。
つまり簡単な電卓ソフトの代わりとして動くように考えているのです。
基本部分が出来たらグラフィック命令をサポートする予定。多分。
§仕様
○データ型
- 整数値…2進表現(&B)、8進表現(&O)、10進表現、16進表現(&H)
- 実数値…小数表現、指数表現
- 文字列…可変長(最大65535バイト,シフトJIS表現)
○変数
- 単純変数…整数型(32Bit)、実数型(64Bit)、文字列型
- 配列変数…整数型(32Bit)、実数型(64Bit)、文字列型
- 変数名……英数字、下線文字、ピリオド(最大63文字まで)
- 変数宣言…単純変数は宣言しなくても使えるが配列は宣言が必要
- 変数種類…グローバル変数、ローカル変数の区別あり
- 変数区別…大文字、小文字を区別しない
○演算子(整数値,実数値)
- 符号…+、-
- 演算…+、-、*、/、¥(剰余)、^(べき乗)
- 比較…==、!=、<、>、<=、>=
- 論理…NOT(否定)、EQV(同値)、AND(積)、OR(和)、XOR(排他的論理和)
○演算子(文字列)
- 加算
- [文字列+文字列]…文字列同士の連結
- [文字列+整数値]…整数値を文字列に変換して連結
- [文字列+実数値]…実数値を文字列に変換して連結
- 減算
- [文字列-文字群]…文字列から文字群を削除
- [文字列-文字数]…文字列の末尾から文字数を削除
- 乗算
- [文字列*文字群]…文字列の先頭に文字群の文字を追加
- [文字列*整数値]…指定回数分の文字列を作成
- 除算
- [文字列/文字列]…文字列から文字列を削除
- [文字列/整数値]…文字列から指定した数おきに抽出
※そのほか、文字列に対して比較と論理演算が行えます。
○基本命令
- REM(コメント)
- LET(代入)
- END(終了)
※REMの代わりに(’)文字が利用できます。
※LETは省略できません。必ず指定します。
○宣言命令
- DEFINT(整数変数)、DEFDBL(実数変数)、DEFSTR(文字列変数)
- DIMINT(整数配列)、DIMDBL(実数配列)、DIMSTR(文字列配列)
○制御命令
- IF~ELSEIF~ELSE~ENDIF
- SWITCH~CASE~DEFAULT~SEND
- FOR TO STEP~NEXT
- WHILE~WEND
- DO~WHILE
- DO~LOOP
- GOSUB~RETURN
- GOTO
- BREAK、CONTINUE
○組み込み関数
- キーボード入力
- テキスト制御
- 日付と時刻
- 文字列操作
- 算術関数
- その他
§最後に
これから作成する『HOBBY-BASIC』言語は1980年代に使われていた
N88-BASIC(MS-DOS版)のパクリです。ただし、N88-BASICとの互換は
最初から考えていません。基本的な命令(名前)は同じですが引数や
演算子など細かい点で違います。元々はC言語を参考に中間言語の
スクリプト・エンジンを作ろうと思っているためC言語よりです。
最初はサブルーチンのみをサポートします。
そのうち関数定義や構造体を扱えるように改良する予定です。
まずはコンソール画面でインベーダ・ゲームが動くように目指します。
※コメント投稿者のブログIDはブログ作成者のみに通知されます