複製鏈接
請複製以下鏈接發送給好友

SNL

(簡單的具有嵌套過程的程序設計語言)

鎖定
Small NestedLanguage(SNL)即簡單的具有嵌套過程的程序設計語言,是一種教學用的過程式語言,最初由《編譯程序的設計與實現》一書的作者設計並實現了其編譯程序(SNLC)。該語言具有標準數據類型和結構數據類型,可以嵌套定義過程,允許遞歸調用,過程的參數可以分為值參和變參兩種形式,控制語句和Pascal語言基本相同,除指針類型外,SNL具備了過程式語言的基本特徵。SNL是自行定義的,很大程度上是一種類Pascal的“高級”程序設計語言。用其作為實例語言並構造編譯程序,可以使絕大多數編譯技術在編寫元級程序的過程中得到體現。
中文名
簡單的具有嵌套過程的程序設計語言
外文名
SNL
SNL語法
程序頭、聲明部分和程序體
字符表
包括了26個英文字母

目錄

SNLSNL詞法

1.字符
字符表包括了26個英文字母(a-Z,大小寫敏感)和10個阿拉伯數字(0-9),運算符(+ - * / < =),括號( () [] {} ),標點(. ; ’),分隔符(EOF,空白符),共79個字符。
2.單詞
標識符(ID)
巴科斯範式表示: <標識符> := 字母 { 字母 | 數字}
保留字標識符子集:if,repeat,read,write……)
無符號整數 (INTC)
字符分界符 (上文提到的所有運算符,圓括號和方括號,句號和分號,分隔符
字符分界符 (:=)
註釋 (圓括號中添加註釋,{……})
字符起始結束 (單引號,‘)
數組下標界限符 (..)

SNLSNL語法

一個合法的SNL程序是由程序頭、聲明部分和程序體組成的。
聲明部分包括類型聲明、變量聲明和過程聲明。SNL的語法規定可以聲明整型(integer)、字符類型(char)、數組類型以及記錄類型的類型標識符變量。過程聲明包括過程頭、過程內部聲明和過程體部分,過程聲明內部還可嵌套聲明內層過程。程序體由語句序列組成,可以包括空語句、條件語句、循環語句、輸入/輸出語句、過程調用和返回語句。表達式分為簡單算術表達式關係表達式
下面是一個SNL程序例子,該程序實現冒泡排序算法。
program bubble {程序頭 程序名標識符}
var integer i,j,num;
array[1..20] of integer a;
procedure q(integer num);
var integer i,j,k;
integer t;
begin
i:=1;
j:=1;
while i < num do
j:=num-i+1;
k:=1;
while k<j do
if a[k+1] < a[k]
then t:=a[k];
a[k]:=a[k+1];
a[k+1]:=t
else t:=0
fi;
k:=k+1
endwh;
i:=i+1
endwh
end
begin
read(num);
i:=1;
while i<(num+1) do
read(j);
a:=j;
i:=i+1
endwh;
q(num);
i:=1;
while i<(num+1) do
write(a);
i:=i+1
endwh
end.