编译原理-高级程序语言以及语法描述

任何高级语言程序都可以看成一个特定字母表(即元素的非空有穷集合)上的一个字符串(有穷序列)。

1语法:就是指上面字母表的规则,用它可以形成和产生一个合法的程序。

词法规则:是指单词符号的形成规则(一般包括标识符、常量、保留字、界符、算符等类型)。

语法规则:就是使用单词符号构成更大的结构。一般高级语言的语法单位有:表达式、语法、函数、程序等。

字母表:元素的非空有穷集合,习惯上用∑和大写字母表示。

 

2.符号串的正闭包

A是符号串集合,则A+称为符号串集合A的正闭包

A+ = A+=A1A2A3 …An…

(和星闭包的区别就是没有空串)

符号串集合的的星闭包

A* =A0A1A2A3 …An…=A0A+

(这就是一个无限的信息,即由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|................

 

posted @ 2017-04-25 09:17  freeflying  阅读(423)  评论(0)    收藏  举报