编译原理结构框架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
重点:文法的定义与分类,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
相关文章推荐
- 编译原理结构框架6语法制导翻译与属性文法
- 编译原理结构框架4自顶向下的语法分析
- 编译原理结构框架8符号表管理
- 编译原理结构框架5自底向上的语法分析
- 编译原理(2)——高级语言及其文法
- 编译原理结构框架7语义分析与中间代码生成
- 编译原理——第二章高级语言及其语法描述总结
- 编译原理结构框架11代码生成
- [数据结构与算法]编译原理文法知识
- 编译原理结构框架9运行时的存储组织
- 编译原理学习笔记——第二章:语言及其文法
- 编译原理第二章高级语言及其语法描述内容总结
- 三大框架结构的原理及其优点
- 编译原理结构框架10代码优化
- 编译原理结构框架3词法分析
- 编译原理学习周入门教程--(5)上下文无关文法,及其语法树
- 编译原理第二章高级语言及其语法描述内容总结
- 编译原理0型到3型文法
- 分享非常漂亮的WPF界面框架源码及其实现原理
- 深入浅出编译原理-1-C语言的文法