热门标签 | HotTags
当前位置:  开发笔记 > 程序员 > 正文

【编译原理】:编译原理期末复习1

1,关于文法一个文法G可以抽象的分为四元组(VN,VT,P,S)VN表示非终结符VT表示终结符P表示产生式S表示开始符2,

1,关于文法
一个文法G可以抽象的分为四元组(VN,VT,P,S)
VN表示非终结符 VT表示终结符 P表示产生式 S表示开始符

2,老师上课说的编译原理的阶段说的是:词法分析,语法分析,语义分析,中间代码生成,代码优化,目标代码生成
其中 语法分析,语义分析,中间代码生成称为 语法制导翻译
语义分析,中间代码生成称为 语义翻译

3,乔姆斯基创造了文法,克林创造了自动机,其实这两种东西是等价的

4,优化可生成“运行时间段且存储空间小的代码”

5,如何判断文法是不是二义文法
对一个串进行识别,判断其是否能够分出两个串
已知文法 G[S] 为 S → aSb|Sb|b ,试证明文法 G[S] 为二义文法。
证明:    
  由文法G[S]:S→aSb|Sb|b,对句子aabbbb对应的两棵语法树为:
这里写图片描述

6,如果文法G是无二义性的,那么它对应的最左推导和最右推导对应的语法树必定相同

7,构造编译程序应该掌握:源程序,目标语言,编译方法

8,两个正规式等价说的是两个正规式所识别的语言集相等

9,计算机执行用高级语言编写的程序主要有:解释编译

10,自上而下分析法操作 (自己想)

11,题型:消除左递归,提取公因子
解题方法:
很好想,左递归就套公式,用一个临时变量解决,提取公因子就用提取公因子,换一个新变量出来
例题:
考虑文法 G[S]:
S → (T) | a+S | a
T → T,S | S
消除文法的左递归及提取公共左因子。
解:消除文法G[S]的左递归:
S→(T) | a+S | a
T→ST′
T′→,ST′| ε
提取公共左因子:
S→(T) | aS′
S′→+S | ε
T→ST′
T′→,ST′| ε

12,几个填空题
词法分析输入:源程序 输出:单词符号
语法分析输入:单词符号 输出:语法单位
语法分析的方法大致分为:自上而下分析法 + 自下而上分析法(现在我还没看)
预测分析使用 预测分析表 + 符号栈 联合控制
最右推导 规范推导! 最右推导就是从右边开始推?哦了?
根据优化所设计的范围,可把优化分为:局部优化,循环优化,全局优化
优化的定义:对程序进行各种变换,使的从变换后的程序出发,能够产生更高效的代码
文法G含有终结符的句型成为 句子

自上而下分析法: 从开始符号开始推,推出句子 (句子为下)
自下而上分析法:从句子开始逐步归约,直到归约到开始符

目标代码的形式:机器语言,汇编语言,待装配机器语言模块
代码考虑问题:(1)生成目标代码短 (2)减少访问内存(3)考虑到计算机指令系统的特点

display表:嵌套层次显示表
作用:登记外层每个活动的最新的起始地址

13,几个填空题:
13.1编译程序首先要识别出源程序中每个(单词),然后分析每个(句子)并翻译其含义
13.2通常把分析前端和综合后端两大阶段,词法,语法和语义分析是对源程序的(分析),中间代码生成,代码优化,目标代码生成是对源程序的(综合)
13.3程序设计语言的发展带来了日渐多变的运行时存储管理方案,主要分为(静态存储分配) + (动态存储分配)
13.4对于编译程序而言,输入数据是(源程序),输出结果是(目标程序)


推荐阅读
  • Final关键字的含义及用法详解
    本文详细介绍了Java中final关键字的含义和用法。final关键字可以修饰非抽象类、非抽象类成员方法和变量。final类不能被继承,final类中的方法默认是final的。final方法不能被子类的方法覆盖,但可以被继承。final成员变量表示常量,只能被赋值一次,赋值后值不再改变。文章还讨论了final类和final方法的应用场景,以及使用final方法的两个原因:锁定方法防止修改和提高执行效率。 ... [详细]
  • Android中高级面试必知必会,积累总结
    本文介绍了Android中高级面试的必知必会内容,并总结了相关经验。文章指出,如今的Android市场对开发人员的要求更高,需要更专业的人才。同时,文章还给出了针对Android岗位的职责和要求,并提供了简历突出的建议。 ... [详细]
  • 本文介绍了C函数ispunct()的用法及示例代码。ispunct()函数用于检查传递的字符是否是标点符号,如果是标点符号则返回非零值,否则返回零。示例代码演示了如何使用ispunct()函数来判断字符是否为标点符号。 ... [详细]
  • 本文介绍了RPC框架Thrift的安装环境变量配置与第一个实例,讲解了RPC的概念以及如何解决跨语言、c++客户端、web服务端、远程调用等需求。Thrift开发方便上手快,性能和稳定性也不错,适合初学者学习和使用。 ... [详细]
  • 本文介绍了计算机网络的定义和通信流程,包括客户端编译文件、二进制转换、三层路由设备等。同时,还介绍了计算机网络中常用的关键词,如MAC地址和IP地址。 ... [详细]
  • 拥抱Android Design Support Library新变化(导航视图、悬浮ActionBar)
    转载请注明明桑AndroidAndroid5.0Loollipop作为Android最重要的版本之一,为我们带来了全新的界面风格和设计语言。看起来很受欢迎࿰ ... [详细]
  • 本文介绍了作者在开发过程中遇到的问题,即播放框架内容安全策略设置不起作用的错误。作者通过使用编译时依赖注入的方式解决了这个问题,并分享了解决方案。文章详细描述了问题的出现情况、错误输出内容以及解决方案的具体步骤。如果你也遇到了类似的问题,本文可能对你有一定的参考价值。 ... [详细]
  • 本文探讨了C语言中指针的应用与价值,指针在C语言中具有灵活性和可变性,通过指针可以操作系统内存和控制外部I/O端口。文章介绍了指针变量和指针的指向变量的含义和用法,以及判断变量数据类型和指向变量或成员变量的类型的方法。还讨论了指针访问数组元素和下标法数组元素的等价关系,以及指针作为函数参数可以改变主调函数变量的值的特点。此外,文章还提到了指针在动态存储分配、链表创建和相关操作中的应用,以及类成员指针与外部变量的区分方法。通过本文的阐述,读者可以更好地理解和应用C语言中的指针。 ... [详细]
  • switch语句的一些用法及注意事项
    本文介绍了使用switch语句时的一些用法和注意事项,包括如何实现"fall through"、default语句的作用、在case语句中定义变量时可能出现的问题以及解决方法。同时也提到了C#严格控制switch分支不允许贯穿的规定。通过本文的介绍,读者可以更好地理解和使用switch语句。 ... [详细]
  • 加密世界下一个主流叙事领域:L2、跨链桥、GameFi等
    本文介绍了加密世界下一个主流叙事的七个潜力领域,包括L2、跨链桥、GameFi等。L2作为以太坊的二层解决方案,在过去一年取得了巨大成功,跨链桥和互操作性是多链Web3中最重要的因素。去中心化的数据存储领域也具有巨大潜力,未来云存储市场有望达到1500亿美元。DAO和社交代币将成为购买和控制现实世界资产的重要方式,而GameFi作为数字资产在高收入游戏中的应用有望推动数字资产走向主流。衍生品市场也在不断发展壮大。 ... [详细]
  • imx6ull开发板驱动MT7601U无线网卡的方法和步骤详解
    本文详细介绍了在imx6ull开发板上驱动MT7601U无线网卡的方法和步骤。首先介绍了开发环境和硬件平台,然后说明了MT7601U驱动已经集成在linux内核的linux-4.x.x/drivers/net/wireless/mediatek/mt7601u文件中。接着介绍了移植mt7601u驱动的过程,包括编译内核和配置设备驱动。最后,列举了关键词和相关信息供读者参考。 ... [详细]
  • 本文介绍了在Windows环境下如何配置php+apache环境,包括下载php7和apache2.4、安装vc2015运行时环境、启动php7和apache2.4等步骤。希望对需要搭建php7环境的读者有一定的参考价值。摘要长度为169字。 ... [详细]
  • Android源码深入理解JNI技术的概述和应用
    本文介绍了Android源码中的JNI技术,包括概述和应用。JNI是Java Native Interface的缩写,是一种技术,可以实现Java程序调用Native语言写的函数,以及Native程序调用Java层的函数。在Android平台上,JNI充当了连接Java世界和Native世界的桥梁。本文通过分析Android源码中的相关文件和位置,深入探讨了JNI技术在Android开发中的重要性和应用场景。 ... [详细]
  • 本文介绍了在多平台下进行条件编译的必要性,以及具体的实现方法。通过示例代码展示了如何使用条件编译来实现不同平台的功能。最后总结了只要接口相同,不同平台下的编译运行结果也会相同。 ... [详细]
  • 本文总结了AAC解码的过程,并介绍了几个解码版本,包括FAAD/2、FFmpeg自带的解码器以及opencore的opencore-aacdec。作者选择了FAAD作为解码器,并通过编译和运行测试确认解码无问题。然而,作者在输出过程中遇到了时长增加一倍的问题,通过修改代码实现了单通道输出,并解决了时长异常的问题。最终,解码后的声音质量接近无损。 ... [详细]
author-avatar
YYCC77777
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有