1.梳理第二章的内容,写一篇理解与总结。
语法是指一组规则,用它可以形成和产生一个合适的程序,目前广泛使用的手段是上下文无关文法,即用上下文无关文法作为程序设计语言语法的描述工具。
使用文法作为工具,不仅为了严格地定义句子的结构,也是为了适当条数的规则的全部句子描述出来,可以说文法是以有穷的集合刻画无穷的集合的一个工具。
0型文法定义:
0型文法(PSG): α∈(VN∪VT)* ,且至少含一个VN
β∈(VN∪VT)*
1型文法:
对任一产生式α→β,都有|β|>=|α|, 仅仅 S→ε除外
产生式的形式描述:α1Aα2→α1βα2
(其中,α1、α2、β∈(VN∪VT)*,β≠ε,A∈VN)
即:A只有出现在α1α2的上下文中,才允许用β替换。
产生的语言称“上下文有关语言”但S不能出现在产生式的右部。
2型文法:对任一产生式α→β,都有α∈VN,β∈(VN∪VT)*
产生式的形式描述:A→β(A∈VN)
即β取代A时,与A所处的上下文无关。
产生的语言称“上下文无关语言”
3型文法(RG):也称正规文法
每个产生式均为 “A→aB”或“A→a” —— 右线性
“A→Ba”或“A→a” —— 左线性
其中,A、B∈VN,a∈VT*
产生的语言称“正规语言”
4个文法类的定义是逐渐增加限制的,因此每一种正规文法都是上下文无关的,每一种上下文无关文法都是上下文有关的,而每一种上下文有关文法都是0型文法。
1.语言可以看成在一个基本符号集上定义的,按一定规则构成的一切基本符号串组成的集合
2.字母表(符号集)是一个非空有穷集合
3.符号(字符)字母表中的元素
4.符号串:符号的有穷序列。注意: E 表示空符号串!5.符号串集合:字母表∑上若干个符号串组成的集合
2. 尝试写出PL/0 语言的文法。(或者你认为比较好的语言规则)
整数n->::= 0|1|2|3|4.....|8|9
标识符i-><标识符>::=<字母>{<字母>|<数字>}
表达式e-><表达式>::=[+|-]<项>{<加法运算符><项>}
条件语句-><条件语句>:=IF<条件>THEN<语句>
赋值语句-><赋值语句>::=<id>:=<表达式>
复合语句-><复合语句>::=begin<语句>{;<语句>}end
函数->?
程序->::=<分程序>.
<分程序>->::=[<常量说明部分>] [<变量说明部分>][<过程说明部分>]<语句>
...