簡易スクリプト言語「KBASIC」

Last modified: 2005/06/26 17:30:23

ダウンロード

kbasic-0.1.zip(全パッケージ)
kbasic.c(ソースのみ)

動作確認はLinuxで行っています。コンパイルはVisual C++.NETでも確認済み。

KBASICについて

KBASICは、私がプログラミング言語の構造を学ぶために作成したものです。 再帰下降構文解析や、二分探索木などの仕組みを学ぶのにも役に立つと思います。 言語仕様はBASICに似せました。 プログラミング言語は一般的にオープンソースなものが多く、 比較的学びやすいのですが、あまりにサイズが膨大なものばかりで 学び始めの初心者には少々ツライです。 実際、私が右も左も分からない状態でgccのソースコードを読んでみても サッパリ理解できませんでした。 そこで、「1000行程度の軽いもので、かつ最低限の機能は持っている スクリプト言語があればいいのになぁ」と思ったのがきっかけで、 KBASICを作成しました。 一応、読みやすさと分かりやすさを重視して作成したつもりです。

ソースコードの詳細な解説はココで行っています

KBASIC言語仕様

簡単な言語仕様を紹介します。 より詳しい内容は全パッケージ版をダウンロードしてください。

PRINT

文字列、変数、数値を出力する。 文字列の場合は「"」(ダブルクォーテーション)で囲む。 さらに出力データを連結させるために「,」(カンマ)を使用することができる。 変数や数値はそのまま使用することができる。 文字列内で使用する制御文字は「\r \n \b \f \t」に対応している。 「\」は「\\」と記入する。

-----  print.bs
PRINT "Hello World!\n"
PRINT "Hello World!", " by Kenji\n"
x = 55
PRINT "x = ", x, ".\n"
PRINT "「\\」は「\\\\」と記述する。\n"
-----

INPUT

数値を標準入力から受け取り、変数に格納する。

-----  input.bs
PRINT "Input Number: "
INPUT num
PRINT "Your Input is ", num, ".\n"
-----

IF (条件式) THEN (プログラム) ENDIF

条件式が「真」の場合にTHEN以降の処理が実行される。 条件式が「偽」の場合はENDIFへ飛ばされる。 条件式には、AND、OR、NOT命令を指定することができる。

----- if.bs
PRINT "Input Number: "
INPUT num
IF num == 5 OR num == 6 THEN
PRINT "num = 5 or 6\n"
ENDIF
IF num > 7 AND num < 9 THEN
PRINT "num = 8\n"
ENDIF
IF NOT num == 1 THEN
PRINT "num != 1\n"
ENDIF
PRINT num, "\n"
-----

LABEL (ラベル名) GOTO (ジャンプ先ラベル名)

ラベルを指定し、GOTOを使用してそのラベルの位置へ処理をジャンプする。 LABELは位置を設定するだけで、具体的な処理はしない。 GOTOはラベルの位置へジャンプする。

-----  label.bs
PRINT "Start Number: " INPUT x
PRINT "End Number: "   INPUT y
PRINT "Ans: ", x, " + ... + ", y, " = "
z = 0
LABEL LOOP
IF x > y THEN
GOTO END_OF_LOOP
ENDIF
z = z + x
x = x + 1
GOTO LOOP
LABEL END_OF_LOOP
PRINT z, "\n"
-----

END

プログラムを終了させる

-----  end.bs
PRINT "Input Number: "
INPUT num
IF num > 5 THEN
PRINT num, " > 5\n"
END
ENDIF
PRINT num, " <= 5\n"
END
-----

さいごに

このソースコードがあなたの役に立ったならば幸いです。


Copyright (C) 2003-2005 Kenji Aiko All Rights Reserved