【编译原理·总复习】第二章||文法语言||语法树||最左最右推导归约||句柄直接短语||例题+知识点

step by step.

目录

一、 程序设计语言的精确定义和描述

1、语法:语言结构的定义。

2、语义:描述语言的含义。

3、语用:从使用的角度描述语言。

二、 字母表与符号串

1、 字母表

例题: 

2、 符号:字母表里的元素。

例题:

3、 符号串:符号的有穷序列。

例题:

三、 符号串的运算

1、 符号串的连接

例题:

2、 符号串的乘积

3、 符号串的幂运算

 例题:

4、 集合的幂运算

例题:

5、 集合的正闭包和闭包

例题:

6、 例题

例题: 

四、 文法的形式定义

1、 规则-BNF

2、 文法

例题:

 例题:

五、 语言的形式定义 

1、句子

例题:

2、 语言

3、 规范推导

 4、 规范归约

例题:

5、 短语和句柄

例题:

六、 语法树

1、 语法树的生成 

例题:

例题:

2、 子树

3、 简单子树 

4、 短语、直接短语、句柄

5、 二义性(没有优先性的)

七、 2型文法、3型文法

1、 2型文法

2、 3型文法(正规文法)

 3、 例题

例题:

八、 例题练习


 光看不练没有效果


一、 程序设计语言的精确定义和描述

1、语法:语言结构的定义。

(eg. 赋值语句由一个变量、一个后随赋值号“=”、一个表达式构成。)

2、语义:描述语言的含义。

(eg. 先计算右部表达式的值,然后把所得结果送入左部变量中)

3、语用:从使用的角度描述语言。

(eg. 赋值语句用于计算和保存表达式的值)


二、 字母表与符号串

1、 字母表

字母表是元素的非空又穷集合。(不是26个字母表)

例题: 

机器语言的字母表:0、1——    \sum (0 ,1)    

字母表里的元素可以是数字、字母或其他符号

2、 符号:字母表里的元素。

例题:

机器语言的字母表中的符号为0和1

3、 符号串:符号的有穷序列。

例题:

  \sum a,b,c 的符符号串为:a,b,ab,ba,cba,abc,...

:符号串中符号的顺序很重要。

符号串总是建立在某个特定字母表上的且只能由字母表上的有穷多个符号组成。

\varepsilon:不包含任何符号的序列

\varphi:不含任何元素的空集  


三、 符号串的运算

 \varepsilon:不包含任何符号的序列;

\phi:不包含任何元素的空集。

1、 符号串的连接

串a和串b的连接,ab即,串b写在a串之后得到的字符串。 

例题:

x=abc, y=10a; xy=abc10a, yx=10aabc

2、 符号串的乘积

串a和串b的乘积,ab即,满足的所有构成的集合。 

:任意符号串x:

\varepsilon x=x\varepsilon =x

3、 符号串的幂运算

x^{0}=\varepsilon

x^{1}=x

x^{2}=xx   

 例题:

x=abc,


x^{2} = abcabc

注意顺序

4、 集合的幂运算

        A^{0}=\left \{ \varepsilon \right \}

例题:

A={a,b} 


 A^{2} =AA={aa,ab,bb,ba}

5、 集合的正闭包和闭包

正闭包: A^{+}A^{1}\cup A^{2}\cup A^{3}\cup …

闭包A^{*}  = { \varepsilon } \cup A^{+}

例题:

A={a,b}


正闭包A^{+}:{a,b,aa,ab,bb,ba,aaa,aab,...}

闭包:    A^{*}:{\varepsilon,a,b,aabab,bb,ba,aaa,aab,...}

6、 例题

例题: 

【编译原理·总复习】第二章||文法语言||语法树||最左最右推导归约||句柄直接短语||例题+知识点_第1张图片

 光看不练没有效果。。


四、 文法的形式定义

有穷集合的语言描述:枚举法。

无穷集合的语言描述:文法(含递归) 。

文法的组成:文法终结符集合;文法非终结符集合;文法规则的集合。

1、 规则-BNF

一个符号与一个符号串的有序对——

A\rightarrow \beta

2、 文法

文法:描述语言的语法结构的形式规则。文法是规则的非空有穷集合。

上下文无关文法:文法所定义的语法范畴完全独立于这种范畴可能出现的环境。

例题:

【编译原理·总复习】第二章||文法语言||语法树||最左最右推导归约||句柄直接短语||例题+知识点_第2张图片


 例题:

∑={0,1} , 则集合 ∑+表示为递归文法:

解:

A→0        A →1

A→A0       A →A1


五、 语言的形式定义 

1、句子

仅含终结符号的句型是一个句子。

例题:

对: S→01| S01

有: S=>01

        S=>0S1

        S=>00S11

        S=>000111


句型:01,0S1,00S11,000111

句子:01,000111

2、 语言

由文法G产生的所有句子所组成的集合就是语言L(G)。 (P16)

3、 规范推导

最左推导:每一步都替换最左边的非终结符号。

最右推导(规范推导):每一步都替换最右边的非终结符号。

 4、 规范归约

规约:推导的逆过程。

例题:

【编译原理·总复习】第二章||文法语言||语法树||最左最右推导归约||句柄直接短语||例题+知识点_第3张图片

5、 短语和句柄

句柄:一个句型的最左直接短语。

例题:

【编译原理·总复习】第二章||文法语言||语法树||最左最右推导归约||句柄直接短语||例题+知识点_第4张图片


六、 语法树

1、 语法树的生成 

例题:

E→ T|E+T|E-T     T→  F|T*F|T/F      F→  (E)|i


【编译原理·总复习】第二章||文法语言||语法树||最左最右推导归约||句柄直接短语||例题+知识点_第5张图片

例题:

G=(VT,VN,S,P),   其中

P:    S→aAS | a     A →SbA | SS | ba


【编译原理·总复习】第二章||文法语言||语法树||最左最右推导归约||句柄直接短语||例题+知识点_第6张图片

2、 子树

自己也是自己的子树。

3、 简单子树 

简单子树:只有单层分支的子树。

4、 短语、直接短语、句柄

短语——子树的叶子形成的符号串。

直接短语——简单子树的叶子形成的符号串。

句柄——最左简单子树的叶子形成的符号串。

5、 二义性(没有优先性的)

如果一个文法存在某个句子对应两棵不同的语法树,则称这个文法是二义的。


七、 2型文法、3型文法

1、 2型文法

2型文法也称上下文无关文法,非终结符的替换不考虑上下文。 

【编译原理·总复习】第二章||文法语言||语法树||最左最右推导归约||句柄直接短语||例题+知识点_第7张图片

2、 3型文法(正规文法)

3型文法等价于正规式,也称正规文法。  

【编译原理·总复习】第二章||文法语言||语法树||最左最右推导归约||句柄直接短语||例题+知识点_第8张图片

 3、 例题

例题:

考虑文法G[S]:

  S → AB     A → aA|a      B → bB|b

定义的语言为:L(G[S])= {a^{n}b^{m} | n,m³1}


是2型文法。

但这个是线性问题,所以也可以写3型文法:

S → aA     A → aA| bB          B → bB| e

八、 例题练习

1. “→” 符号表示:_____

定义为;


2. 设有文法G[E]:

E → E+T | E-T | T

T → T*F | T/F | F

F  → (E) | i

该文法句型E+T*F的句柄是:______

T*F;

【编译原理·总复习】第二章||文法语言||语法树||最左最右推导归约||句柄直接短语||例题+知识点_第9张图片


3. 设有文法G[T]:

T → T*F | F

F → F↑P | P

P → (T) | a

该文法句型T*P↑(T*F)的直接短语是:_____

P; T*F

【编译原理·总复习】第二章||文法语言||语法树||最左最右推导归约||句柄直接短语||例题+知识点_第10张图片


 !考试加油  !


你可能感兴趣的:(scau,编译原理,笔记,p2p,网络协议,网络)