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 にのみ使うことができる.
以上は制限であるが, 拡張としては次の点が挙げられる.
Asir では次の語句がキーワードとして定められている.
break, continue, do, else, extern,
for, if, return, static, struct,
while
def, endmodule, function, global,
local, localf, module
car, cdr, getopt, newstruct, map,
pari, quote, recmap, timer
Go to the first, previous, next, last section, table of contents.