程序设计语言编译原理

上下文无关文的形式化描述:

一个上下文无关文法是一个四元组,(Vt, Vn,S, P)其中,

Vt是一个非空有限集,它的每个元素称为终结符号;

Vn是一个非空有限集,它的每一个元素称为非终结符号。其中Vn与Vt的交集是空集。

S是开始符号

p是产生式的集合,产生式的形式是P->a.其中P属于Vn,a属于Vt并Vn。

最左推导和最右推导

所谓最左推导就是对推导的每一步中都对最左非终结符进行替换。

所谓最右推导就是对推导的每一步中都对最右非终结符进行替换。

 

语法分析树与二义性

语法分析树的意义:

一颗语法分析树表示了一个句型种种可能的(但是未必是全部可能)的推导过程,包括最左和最右推导。那么一个句型是否只有一棵语法分析树和一个唯一最左最右推导呢,其实不然。可能有的句型存在多个语法分析树,这样的句型叫做二义性文法。已经可以证明的是,二义性文法是不可判定的。

对于描述程序语言的文法的限制:

1)文法中不能包括任何这样形式的产生式:P->P

2)每个非终结符都必须有用处:对于任何P都不存在永不终结的回路。

我们以后讨论的文法都必须满足这样的两个条件,称为简化了的文法。

形式语言鸟瞰

形式语言是Chomsky于1956年建立的,这种理论对计算机科学有着深刻的影响,特别是在编译原理和计算复杂性理论上。Chomsky把文法分成四种类型,0型文法,1型文法,2型和3型。这几类文法的区别在于对产生式有不同的限制。

0型文法:0型文法是这样一种文法,如果它的每个产生式,a->b是中至少包含一个终结符。如果对0型文法分别施加以下的第i条限制,则我们就得到i 型文法:

1)G的任何产生式a->b均满足|a|<=|b|(其中|a|和|b|分别为a和b的长度);

2)  G的任何产生式为a->b A属于Vn,b属于Vn和Vt的并集

3)G的任何产生式为A->aB或A->a,其中a属于Vt、A、B属于Vn

1型文法属于上下文相关文法。这种文法意味着,对非终结符进行替换是必须考虑上下文,并且不允许使用空串替换非终止符。

如果非终结符替换的时候可以不考虑上下文,这就是上下文无关文法,也就是2型文法。

3型文法也叫做右线性文法。3型文法还有另外一种形式,叫做左线性文法。由于3型文法等价于正规式,所以3型文法也可以叫做正规文法。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 《程序设计语言编译原理陈火旺PDF》是一本关于程序设计语言编译原理的电子书籍,作者为陈火旺。编译原理是计算机科学中的重要领域,涉及到将高级程序设计语言转化为机器语言的过程。这本书通过详细的介绍,从理论到实践,全面地阐述了程序设计语言编译原理。 该书的内容涵盖了编译原理的基本概念、词法分析、语法分析、语义分析、中间代码生成、优化以及目标代码生成等各个方面。读者通过学习这些知识,可以深入了解程序设计语言的编译过程,并掌握相关的理论和技术。 陈火旺是该领域的专家,他在书中以简明易懂的方式解释了复杂的概念,为读者提供了一个全面而系统的学习指南。他还通过实例和实践操作,帮助读者理解和应用所学知识。 这本电子书具有很多优点。首先,它的内容涵盖了编译原理的各个方面,适合初学者入门和进阶学习。其次,书中的例子和案例分析,有助于读者更好地理解概念和原理,并应用于实践中。此外,书中还提供了大量的习题和答案,供读者巩固知识和进行自我评估。 总之,《程序设计语言编译原理陈火旺PDF》是一本权威而实用的编译原理教材,适合计算机科学相关专业的学生和从事编程开发的从业人员阅读和参考。通过学习该书,读者可以系统地学习和掌握程序设计语言编译原理,提高自己在编程领域中的技能水平。 ### 回答2: 《程序设计语言编译原理》是陈火旺教授编写的一本计算机科学与技术方面的教材。这本教材主要介绍了程序设计语言编译原理编译原理是计算机科学中的一门重要的学科,它研究的是如何将高级程序设计语言转换为可执行的机器语言。为了更好地理解编译原理,我们需要掌握一定的数学基础和计算机底层的知识。 《程序设计语言编译原理》这本教材涵盖了编译原理的基本概念和核心技术,帮助读者理解编译器的工作原理和设计方法。书中从词法分析、语法分析到中间代码生成和优化,详细介绍了编译器的各个阶段和相关算法。 陈火旺教授在编写这本教材时,注重理论与实践的结合。书中既有理论知识的讲解和数学推导,也有实际编程的案例和示例代码。这样的安排使得读者能够更好地理解编译原理的核心概念,同时也能够应用所学知识进行实际的编程工作。 《程序设计语言编译原理》的内容逻辑清晰,层次分明。每个章节都有明确的学习目标和总结,帮助读者检验自己的掌握程度和回顾所学知识。此外,书中还提供了一些习题和参考文献,供读者进一步学习和研究。 总之,陈火旺教授编写的《程序设计语言编译原理》是一本权威、全面、深入浅出的教材。通过学习这本书,读者可以全面了解编译原理的基本概念和技术,并能够应用所学知识进行实际的编程工作。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值