编译原理-高级程序语言以及语法描述
任何高级语言程序都可以看成一个特定字母表(即元素的非空有穷集合)上的一个字符串(有穷序列)。
1语法:就是指上面字母表的规则,用它可以形成和产生一个合法的程序。
词法规则:是指单词符号的形成规则(一般包括标识符、常量、保留字、界符、算符等类型)。
语法规则:就是使用单词符号构成更大的结构。一般高级语言的语法单位有:表达式、语法、函数、程序等。
字母表:元素的非空有穷集合,习惯上用∑和大写字母表示。
2.符号串的正闭包
A是符号串集合,则A+称为符号串集合A的正闭包
A+ = A+=A1∪A2∪A3 …∪An…
(和星闭包的区别就是没有空串)
符号串集合的的星闭包
A* =A0∪A1∪A2∪A3 …∪An…=A0∪A+
(这就是一个无限的信息,即由A中的元素构成任何串都在其中。)
3.文法:语言是特定字母表具有一定语法结构的符号串序列的结合。
文法就是描述语言的语法结构的一组形式规则。一个文法G是由一个四元组:G=(Vn,Vt,S,P)。
Vn:一个非空有限非终结符号的集合。(出现在左边大写字母或<>括起来表示一个字符串的就是非终结符号)
Vt:一个非空有限的终结符号的集合。
S:文法的开始符号。开始符必须在某个产生式的左部出现一次。
P:产生式的有限集合。
4.文法的分类
将文法和语言分为4大类:0型、1型、2型、3型。(每一个前面的都包含后一个,可以说后一个是前一个的特例)
0型:又可以称为无限制文法。例如:AD→AC这种一定是0型。
1型:就是规范了一下0型,提供一个上下文,所以又称上下文有关文法。xUy→xuy(x、y∈V*,U∈Vn,u∈V+)
2型:又称上下文无关文法。就是1型中的x,y均为ε。这个也是最常见的一般文法。
3型:文法G=(Vn,Vt,S,P),如果它产生形式都如下:
A→Bа或A→а:左线性文法
A→аB或A→а:右线性文法
其中A,B∈Vn,а∈Vt*.
5.短语:代替的部分是被代替的部分的短语,只是代替一个非终结符号。
简单短语:最后的直接的推到,并且代替的是一个非终结符号。、
句柄:最底层最左边的简单的短语就是句柄。
6.文法的二义性:简单的来说就是一个文法有两颗不同的语法树。
7.文法的实用限制:
有害规则:如u--->u,他会产生文法的二义性。
多余规则:在所有的推到过程中没有用到的或用于就是得到非终结符号。
8.直接左递归:U-->Ua|B;
变为:U-->BU`
U`-->aU|空串
间接左递归:?
9.提取左因子:A--->aB1|aB2|..........|r1|r2|...........
提取:A--->aA`|r1|r2|.........
A`--->B1|B2|................

浙公网安备 33010602011771号