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

北方工业大学编译原理——四、五章单元测试内容复习

四、五章单元测试内容T1常识问题。使用自上而下分析法需要先消除左递归,再消除回溯。T2显然是错的,LL(1)文法是无二义文法,二义文法

四、五章单元测试内容


T1

在这里插入图片描述
常识问题。
使用自上而下分析法需要先消除左递归,再消除回溯。


T2

在这里插入图片描述
显然是错的,LL(1)文法是无二义文法,二义文法就无法在逻辑上与LL(1)文法等价。


T3

在这里插入图片描述
显然是对的,LL(1)文法的预测分析表确实没有多重定义入口。这也是判断某文法是否为LL(1)文法的依据之一。


T4

在这里插入图片描述
没有两个相继并列的非终结符,只能算是算符文法(OG文法)。而算符优先文法(OPG文法)需要每个算符(即终结符)之间的优先关系最多只有一种(只有一种或没有,因此算符优先关系表中可以有空白)。


T5

在这里插入图片描述
算符优先分析法是自下而上分析法。


T6

在这里插入图片描述
最右推导为规范规约的逆过程,因此最右推导得到的句型为规范句型。
LR分析法中的R,指的正是最右推导的逆过程


T7

在这里插入图片描述
规范规约也称最左规约,是最右推导的逆过程。


T8

在这里插入图片描述
无二义文法的句柄一定是唯一的。


T9

在这里插入图片描述
常识问题。
在规范规约的过程中,分析栈内的符号串和扫描剩下的输入符号串构成一个规范句型。
而使用最左素短语定义可归约串,得到的中间句型不一定是规范句型,因此算符优先分析法并不等同于规范规约。


T10

在这里插入图片描述
SLR(1)文法是LR(1)文法的真子集。这个S指的是“Simple”,加了个S,可以理解为在LR(1)的基础上作出了限制。


T11

在这里插入图片描述
送分题,不解释。


T12

在这里插入图片描述
同上,略。


T13

在这里插入图片描述
同上,略。


T14

在这里插入图片描述
同上,略。


T15

在这里插入图片描述
画出该句型的语法分析树即可快速找到句柄。


T16

在这里插入图片描述
LL(1)文法、算符优先文法、SLR(1)文法和LR(k)文法都是无二义文法。


T17

在这里插入图片描述
使用FIRST集合和FOLLOW集合一个个做判断即可。


T18

在这里插入图片描述
当句柄已知时,活前缀一定不会包含句柄之后的符号。
所有活前缀:ε、a、aB、aBc。


T19

在这里插入图片描述
先判断是否为算符文法,如果是算符文法,再通过算符优先关系表来判断。


T20

在这里插入图片描述
显然,从I4状态读入e后,来到I5,此时,对于I4中的S → iS·eS,进入I5后变为S → iSe·S,·后面有非终结符S,则S的所有产生式,需要在右部头加·,加入到I5中。此外,从I4读入e之后,对于I4的第二产生式S → iS·没法继续前进了,因此不读入I5,综上,I5中的状态有上述四种。


推荐阅读
  • 本文详细介绍了Java编程语言中的核心概念和常见面试问题,包括集合类、数据结构、线程处理、Java虚拟机(JVM)、HTTP协议以及Git操作等方面的内容。通过深入分析每个主题,帮助读者更好地理解Java的关键特性和最佳实践。 ... [详细]
  • 在Ubuntu 16.04 LTS上配置Qt Creator开发环境
    本文详细介绍了如何在Ubuntu 16.04 LTS系统中安装和配置Qt Creator,涵盖了从下载到安装的全过程,并提供了常见问题的解决方案。 ... [详细]
  • Google最新推出的嵌入AI技术的便携式相机Clips现已上架,旨在通过人工智能技术自动捕捉用户生活中值得纪念的时刻,帮助人们减少照片数量过多的问题。 ... [详细]
  • 本文探讨了 C++ 中普通数组和标准库类型 vector 的初始化方法。普通数组具有固定长度,而 vector 是一种可扩展的容器,允许动态调整大小。文章详细介绍了不同初始化方式及其应用场景,并提供了代码示例以加深理解。 ... [详细]
  • 解决微信电脑版无法刷朋友圈问题:使用安卓远程投屏方案
    在工作期间想要浏览微信和朋友圈却不太方便?虽然微信电脑版目前不支持直接刷朋友圈,但通过远程投屏技术,可以轻松实现在电脑上操作安卓设备的功能。 ... [详细]
  • 本文深入探讨了 Java 编程语言的基础,特别是其跨平台特性和 JVM 的工作原理。通过介绍 Java 的发展历史和生态系统,帮助初学者理解如何编写并运行第一个 Java 程序。 ... [详细]
  • C++构造函数与初始化列表详解
    本文深入探讨了C++中构造函数的初始化列表,包括赋值与初始化的区别、初始化列表的使用规则、静态成员初始化等内容。通过实例和调试证明,详细解释了初始化列表在对象创建时的重要性。 ... [详细]
  • PHP 5.5.0rc1 发布:深入解析 Zend OPcache
    2013年5月9日,PHP官方发布了PHP 5.5.0rc1和PHP 5.4.15正式版,这两个版本均支持64位环境。本文将详细介绍Zend OPcache的功能及其在Windows环境下的配置与测试。 ... [详细]
  • 深入理解Java泛型:JDK 5的新特性
    本文详细介绍了Java泛型的概念及其在JDK 5中的应用,通过具体代码示例解释了泛型的引入、作用和优势。同时,探讨了泛型类、泛型方法和泛型接口的实现,并深入讲解了通配符的使用。 ... [详细]
  • libsodium 1.0.15 发布:引入重大不兼容更新
    最新发布的 libsodium 1.0.15 版本带来了若干不兼容的变更,其中包括默认密码散列算法的更改和其他重要调整。 ... [详细]
  • 本文介绍如何在Java项目中使用Log4j库进行日志记录。我们将详细说明Log4j库的引入、配置及简单应用,帮助开发者快速上手。 ... [详细]
  • 本文详细记录了在银河麒麟操作系统和龙芯架构上使用 Qt 5.15.2 进行项目打包时遇到的问题及解决方案,特别关注于 linuxdeployqt 工具的应用。 ... [详细]
  • 当在 Android 应用中使用 NDK 时,可能会遇到 java.lang.UnsatisfiedLinkError: Native method not found 的错误。本文将详细探讨该错误的原因及解决方案。 ... [详细]
  • Linux设备驱动程序:异步时间操作与调度机制
    本文介绍了Linux内核中的几种异步延迟操作方法,包括内核定时器、tasklet机制和工作队列。这些机制允许在未来的某个时间点执行任务,而无需阻塞当前线程,从而提高系统的响应性和效率。 ... [详细]
  • 并发编程:深入理解设计原理与优化
    本文探讨了并发编程中的关键设计原则,特别是Java内存模型(JMM)的happens-before规则及其对多线程编程的影响。文章详细介绍了DCL双重检查锁定模式的问题及解决方案,并总结了不同处理器和内存模型之间的关系,旨在为程序员提供更深入的理解和最佳实践。 ... [详细]
author-avatar
Lily賈麗
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有