您的位置:首页 > 其它

编译原理结构框架2高级语言及其文法

2014-12-02 08:06 218 查看
第二章 高级语言及其文法

重点:文法的定义与分类,CFG的语法树及二义性、程序设计语言的定义。

难点:程序设计语言的语义。

基本概念:

字母表,乘积,N次幂,正闭包,克林闭包,

句子,空句子,字符在句子中的一个出现(长度:次数),并置(连接),

前缀,真前缀,后缀,真后缀,

公共前缀,最大公共前缀,公共后缀,最大公共后缀,

子串,公共子串,最大公共子串,

语言,句子,乘积,

非终结符号集V ={<赋值语句>,<左部量>,<右部表达式>,<简单变量>,<下标变量>,<运算符>}

终结符号集T ={a,b, c,m[1], m[2], m[3], +, -}

语法规则集P ={<赋值语句> -> <左部量>=<右部表达式>,……}

开始符号S= <赋值语句>

PS:

每个非终结符号对应一个元素集合

每个终结符号对应一个元素

每个语法规则表示产生句子的过程

约定:用大写字母表示语法变量,小写字母表示终结符号

直接推导,推导,派生

直接规约,规约

句子w和句型α的区别在于句子满足w∈T*,而句型满足α∈(V∪T)*

n句子w是从S开始,在G中可以推导出来的终结符号行,它不含语法变量;
n句型α是从S开始,在G中可以推导出来的符号行,它可能含有语法变量;
n句子一定是句型;但句型不一定是句子

2.4文法的分类

0型文法:PSL 短语结构文法:包含 S -> ε 的产生式

1型文法:CSL上下文有关文法:产生式左边可以有终结符号

2型文法:CFL上下文无关文法:产生式左边不能有终结符号

3型文法:RL正则文法:A -> w 或 A -> Bw 或 A -> wB

短语:$α, β, γ∈(V∪T)*,S
=>(*) γAβ,A =>(*)
α,则称α是句型γαβ的相对于变量A的短语(phrase);

直接短语: A =>α

句柄:最左直接短语

用树的观点来解释:

n短语:一棵子树的所有叶子自左至右排列起来形成一个相对于子树根的短语。
n直接短语:仅有父子两代的一棵子树,它的

所有叶子自左至右排列起来所形成的符号串。

n句柄:一个句型的分析树中最左那棵只有父子两代的子树的所有叶子的自左至右排列。

测试:

给定文法G有如下产生式
G: E -> E + T | E – T | T

T -> T * F | T / F | F

F -> F^P | P

P -> c | id | (E)

问题:现有句子id + id * (id - id)
n1) 分别给出该句子的最左推导和最左归约
n2) 画出相应的语法树
n3) 指出该句子的短语、直接短语和句柄

1. E -> E + T

-> T + T

-> F + T

-> P + T
-> id + T

-> id + T * F

-> id + F * F

-> id + P * F

-> id + id * F

-> id + id * P

-> id + id * (E)

-> id + id * (E - T)

-> id + id * (T - T)

-> id + id * ( F - T)

-> id + id * (P - T)

-> id + id * (id - T)

-> id + id * (id - F)

-> id + id * (id - P)

-> id + id * (id - id)

id + id * (id - id)

<- P + id * (id - id)

<- F + id * (id - id)

<- T + id * (id - id)

<- E + id * (id - id)

<- E + P * (id - id)

<- E + F * (id - id)

<- E + T * (id - id)
<- E + T * (P - id)

<- E + T * (F - id)

<- E + T * (T - id)

<- E + T * (E - id)

<- E + T * (E - P)

<- E + T * (E - F)

<- E + T * (E - T)

<- E + T * (E)

<- E + T * P

<- E + T * F

<- E + T

<- E

3.短语:id, id, id, id, id - id, (id - id), id * (id - id), id + id * (id - id)

直接短语:id, id, id, id

句柄:id
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: