SNL
Small NestedLanguage(SNL)即简单的具有嵌套过程的程序设计语言,是一种教学用的过程式语言,最初由《编译程序的设计与实现》一书的作者设计并实现了其编译程序(SNLC)。该语言具有标准数据类型和结构数据类型,可以嵌套定义过程,允许递归调用,过程的参数可以分为值参和变参两种形式,控制语句和Pascal语言基本相同,除指针类型外,SNL具备了过程式语言的基本特征[1]。
SNL是自行定义的,很大程度上是一种类Pascal的“高级”程序设计语言。用其作为实例语言并构造编译程序,可以使绝大多数编译技术在编写元级程序的过程中得到体现,对掌握元级程序设计方法很有帮助。通常设计一种教学用的程序语言来简化问题是常用的一种教学方法,类似的,技术类图书的作者会设计一个简单的实例模型来阐明一套原理和一个体系。
SNL的词法1.字符表字符表包括了26个英文字母(a-Z,大小写敏感)和10个阿拉伯数字(0-9),运算符(+ - * / < =),括号( () [] {} ),标点(. ; ’),分隔符(EOF,空白符),共79个字符。2.单词标识符(ID)
巴科斯范式表示: <标识符> := 字母 { 字母 | 数字}
保留字(标识符子集:if,repeat,read,write……)
无符号整数 (INTC)
单字符分界符 (上文提到的所有运算符,圆括号和方括号,句号和分号,分隔符)
双字符分界符 (:=)
注释 (圆括号中添加注释,{……})
字符起始结束 (单引号,‘)
数组下标界限符 (..)
SNL的语法一个合法的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.
Saturday Night Live,缩写:SNL

《周六夜现场》是一个每周六深夜播出、90多分钟的美国综艺节目,以纽约市为拍摄地,自1975年10月11日由NBC播出。本节目在大西洋标准时区、北美东部时区、北美中部时区均是以现场直播的方式播出,是美国电视史上最长寿的节目之一。每周都有不同的客座主持人与音乐来宾加入,与该节目的固定卡司一同演出。
原本的节目名称为《NBC周末夜》(NBC's Saturday Night),直到NBC于1976年更动名称为止(周末夜现场这个名称与ABC同时段的短寿节目名称撞名,直到该节目被停播,NBC才使用此名称)。改名后的第一集在1977年3月26日播出。
本节目由喜剧演员Lorne Michaels创立,并在第六季到第十季间,担任制作人和编剧以及先前的执行制作的工作。在过去三十年来,已经培养出许多美国喜剧明星。