编译原理-期末

news/2025/1/8 17:53:43/文章来源:https://www.cnblogs.com/ZZQ323/p/18660278

第一章

编译原理的基础问答

  1. 设 A机器 上有 语言L 的编译程序,可以用它来编制B机器上的语言'的编译程序,试用 T形图 进行表示。
  2. 通过自展完成C语言的编写,试描述这个过程。
  3. 画出编译程序的总体结构图,简要说明每个模块的功能
  4. 如何理解“单词是程序设计语言中具有独立意义的最小语法单位”这句话?
  5. ∑={aa,ab,bb,ba},求字符串 aaaaabbbba 的所有前缀的集合、后缀的集合、真前缀的集合、真后缀的
    集合。

部分答案

  • 画出编译程序的总体结构图,简要说明每个模块的功能
    alt text
  • 如何理解“单词是程序设计语言中具有独立意义的最小语法单位”这句话?
    单词是由字母所组成的,而字母往往是有限的,难以表达更加复杂和高级的含义;
    所以由字母依照一定的文法所组成的单词就承担了语义表达的作用,而在单词之上则是句子,能够表达更加复杂的语义。
    所以相较之下,单词就是具有独立意义的最小语法单位了。

第二章

  1. 设文法G有如下产生式:
G:A → B=EB → C|DC → a|b|cD → m[1]|m[2]lm[3]E → COC|COD|DOC|DODO → +|-

现有句子b=a+b,m[2]=b+m[1],试完成下列题目。
(1)分别给出每个句子的3个不同推导,要求有最左推导和最右推导。
(2)给出上面6个不同推导各自对应的归约。
(3)试画出相应的语法树。
(4)指出每个句子中的短语、简单短语和句柄。

第三章

  1. 在文法中,终结符号和非终结符号各起什么作用?各用来表示什么类型的对象?有什么不同的特点?
  2. 什么是语法制导定义?什么是属性文法?什么是翻译模式?它们之间的关系是什么?
  3. 画出有穷状态自动机的状态转换图,分别识别下列文法生成的语言。

\[\begin{align} &(1)G_1:\\ &S → +R|-R|0R|1R|2R|3R|4R\\ &R → 0R|1R|2R|3R|4R|0|1|2|3|4|0D|1D|2D|3D|4D\\ &D → .B\\ &B → 0B|1B|2B|3B|4B|0|1|2|3|4\\ &(2)G_2:\\ &S → as|aB|bB|bS\\ &B → -C|.C\\ &C → cC|dC|eC|fC|e|0E|1E|2E|3E|4E\\ &E → -A|+A\\ &A → 0A|1A|2A|3A|4A|0|1|2|3|4\\ &(3)G_3:\\ &S → Sa|Aa|Bb\\ &A → Ba|a\\ &B → Abb\\ &(4)G_4:\\ &S → aAa\\ &A → aA bB a\\ &B → bB|b\\ \end{align} \]

第四章

  1. 考虑简化了的C声明的以下文法:
<declaration><type><var_list>
<pe>→int float
<var_list>id,<var_list>id

(1)在该文法中提取左因子。
(2)为改造后文法的语法变量构造 FIRST 集和 FOLL0OW 集。
(3)说明改造后的文法是 LL(1) 文法。
(4)为改造后的文法构造 LL(1) 分析表。
(5)给出输入串 intx,y,z 所对应的 LL(1) 分析动作。

第五章

  1. 在自顶向下的分析方法中,既不允许文法中出现直接左递归,又不允许出现间接左递归,为什么在自底向上的分析方法中没有这一要求?
  2. 设有如下文法G:

\[S\rightarrow a|^|(T) T\rightarrow T,S|S \]

(1)给出 (a,(a,a))(((a,a),,(a)),a) 的最左推导和最右推导。
(2)指出 (((a,a),^,(a)),a) 的规范归约及每一步的句柄。根据该规范归约,给出“移进-归约”的过程,
并给出自底向上构造其语法树的过程。
(3)求其 FIRSTOPLASTOP
(4)计算其优先关系,并判断其是否为算符优先文法。
(5)计算其优先函数。

  1. 设有如下文法G:

\[<S>\rightarrow<S>(<S>) <S>\rightarrow a \]

(1)计算该文法的 LR(0) 项目集规范族,构造识别其所有规范句型活前缀的DFA。
(2)该文法是 LR(0) 文法吗?请说明理由。
(3)构造该文法的 SLR(1) 分析表。
(4)给出识别句子 a(a(a)) 的自底向上语法分析的过程。

  1. 设有如下文法G:

\[<S>\rightarrow <A> <A>\rightarrow <B><A>|\epsilon <B>\rightarrow a<B>|b \]

(1)试用识别活前缀的方式给出文法G的 LR(1) 项目集。
(2)构造 GLR(1) 分析表。
(3)给出输入符号串w=abab的自底向上语法分析过程。

第六章

  1. 给定如下翻译模式:
A→aB {print"0";}
A→c {print"1";}
B→Ab {print"2";}

假设在按某一产生式进行归约时将立即执行括号中的动作,试问当输人为aabb时,打印出的字符串是什么?

  1. 综合属性和继承属性有什么区别?为什么将固有属性归入综合属性,这样归类的依据是什么?

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/865979.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

ESP8266及继电器电路图解析

ESP8266及继电器介绍 ESP8266概述:ESP8266 是一款低成本、低功耗的 Wi-Fi 芯片,由乐鑫信息科技(Espressif Systems)开发。它集成了 TCP/IP 协议栈,能够实现串口与 Wi-Fi 之间的转换,广泛应用于物联网(IoT)领域,如智能家居、智能穿戴、工业控制等。 特点:低功耗:在睡…

docker-compose部署下Fastapi中使用sqlalchemy和Alembic

本篇介绍使用Fastapi + sqlalchemy + alembic 来完成后端服务的数据库管理,并且通过docker-compose来部署后端服务和数据库Mysql。包括:1. 数据库创建,数据库用户创建 2. 数据库服务发现 3. Fastapi 连接数据库 4. Alembic 连接数据库 5. 服务健康检查本篇介绍使用Fastapi +…

误删除了表?PolarDB MySQL帮你恢复!完成就送2025蛇年春联!

由于DDL语句无法回滚,如果误删除了表(例如DROP TABLE),可能会导致数据丢失。PolarDB MySQL提供表回收站的功能,删除的表会被临时转移到表回收站。 通过本次操作,带您体验如何使用PolarDB MySQL提供表回收站的功能,从表回收站恢复误删的表。 完成任务赢奖励,活动火热进行…

《墨香古韵:传统与现代的完美融合》——传世经典的美,划破时空的风格和型

《墨香古韵:传统与现代的完美融合》 由“解锁AI超能”的邦林AIGC出品 一直叹服古人用那样少的笔墨,就可以塑造一个让人无限联想、余味无穷的作品。 而上帝造人,诸多完美,唯独留下一个大大的Bug, 那就是人想象不出自己没见闻过的东西,而有大师也曾说过,人的想象力总是先于…

学习 - Linux - Centos安装jdk8

Centos安装jdk8 安装包下载地址: 通过网盘分享的文件:jdk 链接: https://pan.baidu.com/s/1dQTMZk7foPZhOcw55QM_lQ?pwd=sky1 提取码: sky1 二、上传至Centos系统解压文件并移动到usr/local目录下 解压 tar zxvf jdk-8u181-linux-x64.tar.gz 移动 mv jdk1.8.0_181 /usr/loca…

CICD Day7、Jenkins Pipeline 常用指令及Pipeline快捷生成方式(片段生成器)

1、常用指令 在编写Pipeline脚本时,会涉及各种指令,这些指令用于实现构建过程中的不同功能。熟悉这些指令后,编写一个完整的Pipeline脚本将变得十分简单 1.1 shsh指令用于执行shell命令,配置示例如下stage(Build) {stage {sh hostname} }在上述配置中,在构建的过程中,执行…

DC-6 靶场通关小记

wordpress用户枚举、暴力破解得密码、CVE-2018-15877 plainview_activity_monitor RCE漏洞、水平权限提示、nmap --interative失效时 提权地址 https://www.vulnhub.com/entry/dc-6,315/环境配置 略,有问题可参考 https://www.cnblogs.com/lrui1/p/18655388 需要向hosts文件添…

【Java编程】一个高性能、支持百万级多任务重试框架:Fast-Retry

前言 假设你的系统里有100万个用户,然后你要轮询重试的获取每个用户的身份信息, 如果你还在使用SpringRetry和GuavaRetry 之类的这种单任务的同步重试框架,那你可能到猴年马月也处理不完,即使加再多的机器和线程也是杯水车薪,而Fast-Retry正是为这种场景而生。 Fast-Retry …

mac m1 安装ffmpeg,配置环境变量

1 首先要安装brew 2 git clone https://git.ffmpeg.org/ffmpeg.git ffmpeg 3 cd ffmpeg 4 执行脚本 ./configure --prefix=/opt/local 5 编译 sudo make ,需要提权,要不系统目录无法创建文件夹 6 安装 make install 7 安装成功,查看 ffmpeg版本 /opt/local/bin/ffmpeg -ve…

如何在 LobeChat 中使用 Ollama

本文介绍了如何在LobeChat中使用Ollama框架运行本地大型语言模型。文章详细说明了在macOS、Windows和Linux操作系统下安装和配置Ollama的步骤,并指导用户如何通过Docker容器部署Ollama。此外,文章还介绍了如何在LobeChat中安装和选择Ollama模型进行对话。Ollama 是一款强大的…

密码综合实战

这种加密本质上是换汤不换药的,我们需要有所创新,下面是我的想法(key{A}和key{B}表示的是A和B独有的秘钥): 假设现在有服务器192.168.1.1,本机扮演角色A,服务器扮演角色B,进行如下逻辑:A拥有A的专属秘钥(汉字秘钥)进行一次加密发送给B,B接受到后再用B的专属秘钥再次加…