これは、学生がOSSで作成しているインタプリタ型言語(スクリプト言語)です。改変、配布など自由ですがその際は出典を明記してください。 不具合や、改善点などあればissueまでお願いいたします。
この言語では、関数、四則演算、標準出力が可能です。これらの機能は増えていくと予定されます。
x = "OK";
y = 12;
文字リテラルでも、ナンバーでも型宣言は入りません。
x = 12;
y = x + 1;
z = x + y;
なお、
n = 12;
n = n - 1;
n = n + 1;
はそれぞれ
n++;
n--;
とも表せます。
@include main.ph
print(OK);
または、
put(OK);
put("\n");
と表せます。 これは、includeされたmain.ph内で
fn print(print_word):
put(print_word);
put("\n");
return True;
end;
と定義されているからです。
vall = input(arg1);
inputは、コンソールから文字列を入力する際に使用する文法です。引数には、文字列を受け取る際に表示する文字列を指定します。
fn function(arg1,arg2):
return 0;
end;
関数はfnで定義されます。他の言語と違い、インデントを機にする必要はありません。 その代わり、関数の終わりにはreturnとendが必要です。 引数はコンマで区切る必要があります。その際、変数に型をつける必要はありません。
return 0;
return文は、関数が戻り値を渡す際に使われる文法です。変数、文字列、数字などを指定することができます。 関数内でしか使えません。
funcname(arg1,arg2);
関数呼び出しでは、引数を指定して関数を呼び出して実行することができます。 その際、引数は変数でないといけません。引数が二つ以上ある場合、それぞれをコンマで区切らなければなりません。
x = 12;
word = "word";
if x > 0:
end;
if x < 16:
end;
if x == 12:
end;
if word == "word":
end;
これらは、実行結果がTrueになるif文です。 Trueの場合、比較文とendの間の式が実行されます。 比較文とは、その名の通り主に条件式に使われる文法です。 例えば、
val1 > val2
val1 < val2
val1 == val2
など不等号・等号がふくまれる特別な文体です。今のところ比較目的のif文でしか用途をしていませんが、応用が可能であると考えています。 また、Trueが返される場合も同様です。たとえば、
fn boolif():
return True;
end;
とした場合の
if boolif:
は、boolif == Trueが短縮され、if文の結果がTrueとみなされ、以降の文が実行されます。 includeディレクトリの中にある戻り値のない標準関数は、基本的にTrueを返すようになっています。
x = "True";
while x:
print(x);
end;
指定の条件の場合endまでの処理を繰り返し行います。 こちらも、比較文によって制御されます。
実行させたいファイルをprotoの後につけて実行するだけです。 開発環境ではpython3.8.2でテストしています。 main.prを実行する例です。
(windows)
$ python proto.py main.pr
or
$ proto main.pr
(mac/Linux)
$ python3 proto.py main.pr
or
$ ./proto main.pr