Asir の文法は C 言語に準拠している. おもな相違点は次の通りである. 以下で, 変数とは Asir における プログラム用の変数, すなわち大文字で始まる文字列を意味することとする.
[0] A = 1; 1 [1] type(A); 1 [2] A = [1,2,3]; [1,2,3] [3] type(A); 4
extern 宣言された変数は, トップレベルにおける大域変数となる.
すなわち, 変数のスコープは大域変数と局所変数の 2 種類に単純化されている.
トップレベル, すなわちプロンプトに対して入力された変数は全て大域変数
として登録される. また函数内では次のいずれかとなる.
extern 宣言されている場合, 函数内のその変数も大域変数
として扱われる.
extern 宣言されていない変数はその函数に局所的となる.
% cat afo
def afo() { return A;}
extern A$
def bfo() { return A;}
end$
% asir
[0] load("afo")$
[5] A = 1;
1
[6] afo();
0
[7] bfo();
1
switch 文, goto がない.
goto がないため, 多重ループを一度に抜けるのがやや複雑になる場合がある.
for (A;B;C) または, while(A) の A,
B, C にのみ使うことができる.
以上は制限であるが, 拡張としては次の点が挙げられる.
Go to the first, previous, next, last section, table of contents.