编译原理作业集

更新时间:2024-03-02 17:30:03 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

编译原理作业集

1 第二章 词法分析

1. C或Java语言的标示符是字母和数字组成的序列,第一个字符必须是字母,下划线视为字母,且大小写字母不同。请写出匹配C或Java语言标示符的正规表达式。 2. 为下边所描述的串写正规式,字母表是 {0, 1}. a) 以11 结尾的所有串 b) 只包含一个1的所有串

2 第三章 上下文无关文法

1. ________是描述程序设计语言语法结构的形式工具。 2. 设G=(VN,VT,P,S)是一文法,且 V= VN∪VT,若S =>*α,α∈V,则称α为文法G的 ,若S=>*α,α∈VT,则称α为文法G的 。

3. 给出语言L={ab|j>i>=1}的上下文无关文法。 4. 文法G[S]的产生式如下: S?SaS | SbS | cS | Sd | t 对于输入串 tbctat: (1) 给出一个推导;

(2) 画出(1)中推导对应的分析树;

ij

*

*

(3) 文法G是否是二义性的,请证明你的结论。

3 第四章 语法分析

1. 考虑文法G[S]:

S-> A︱B A->a|b B->(C) C->CS|S 1) 消除上述文法的左递归,重写该文法。

2) 求消除左递归后的文法的非终结符构造First集合和Follow集合。

3) 为消除左递归后的文法构造LL(1)分析表。 4) 并写出对句子 (ab) 的LL(1)分析过程。 2. 给定文法G[S]: S->SaSb︱c

给出句子 cacbacb 的规范推导,画出该句子的语法推导树,指出该句子的句柄。 3. 给定文法G[S]:

S->S b A︱A A->a 1) 造文法G[S]的LR(1)项目的DFA。 2) 上述文法构造LR(1)分析表。 3) 写出句子 ababa的分析过程。

4 第五章 语义分析

1.通过下面文法给出的十进制数的浮点数值,写出一个属性文法(提示:使用一个属性count计算小数点右面数字的个数)。 dnum→num.num num→num digit |digit digit→0|1|2|3|4|5|6|7|8|9

2.考虑下面简单的类Pascal 说明的文法:

? decl →var-list: type

? var- list → var- list, id | id ? type → integer | real ? 写出变量类型的一个属性文法。

3.文法符号的属性有 和 两种。

4.文法符号属性的计算方法有 和 两类。

5 第六章 中间代码生成

1. 根据本章讲解的翻译技术,写出语句(a[i+1]=2)+a[j]相应的三地址码序列:

2.

根据本章讲解的翻译技术,写出语句 while (true) if (false) a[i+1]=2 else x=x-z+3 相应的三地址码序列。

6 第七章 运行时环境

1. 什么是活动记录?请给出C语言活动记录的内容。 2. 设有c语言程序:

main() {

printf(“%d\\n”,f(3)); } f(int x) {

if(x==1) return 1; else

return x*f(x-1); }

试给出运行该程序在返回主函数之前运行栈的活动 记录示意图。

3. 论述C语言函数活动记录中的fp(frame point)(对应于x86系统的bp或ebp寄存器存储的值)指针的作用;

4. 根据C语言运行时内存组织和管理,分析下列程序中存在的问题,并提出改正的方法。

本文来源:https://www.bwwdw.com/article/xxfa.html

Top