语法分析程序

北 京 林 业 大 学

实 验 任 务 书

北 京 林 业 大 学 11学年—12学年第 2学期 编译原理实验任务书

专业名称: 计算机科学与技术 实验学时: 4 课程名称:编译原理 任课教师: 李冬梅

实验题目:语法分析

实验环境:Paser Generator ,Visual C++ 自选另外一种高级语言

实验目的:

通过设计编制调试具体的YACC程序和有关的语法分析程序,掌握YACC源程序的基本组成,掌握语法分析程序的设计思想,加深对语法分析程序的理解。

实验内容:

1.借助自动生成工具LEX和YACC完成以下实验内容

阅读并运行所给程序:词法.l、语法.y,以理解LEX和YACC的使用和二者之间的通信机制。(分别编译后生成:词法.c、语法.c,将两个文件在VC下创建到一个project下运行即可)

下面是程序运行后的输入和输出结果示例,其中输入“cat eat mouse”后,输出“Sentence is valid”,表示可以识别此类语句,而输入“I love you”后,输出“syntax error”,表示不可识别这类语句。

修改源程序(词法.l、语法.y),使得修改后的程序能够识别类似下列语法结构的语句:

I love you.

I like apples and pears.

I wish you success.

We study compiler hard.

We study compiler hard in school.

也可以自己定义更多符合英语语法规则的句子。

2.在实验1词法分析的基础上,编写程序完成以下其中一个题目

(1)构造下面算术表达式文法的递归下降语法分析程序

∷=[+|-] {(+|-) }

∷={(*|/) }

∷= id|num| ‘(‘‘)’

输入:一个算术表达式

输出:该算术表达式是否合法

(2) 构造文法的LL(1)分析表

输入:一个文法

输出:该文法的全部FIRST集、FOLLOW集和LL(1)分析表

(3) 构造文法的算符优先分析表

输入:一个文法

输出:文法的全部FIRSTVT集、LASTVT集和算符优先分析表

(4)构造文法的LR(0)分析表

输入:一个文法

输出:文法的LR(0)分析表

选做:

1.将上述任务2中的(2)或(3)或(4)的程序进一步完善实现一种语法分析器,即 输入:一个文法和一个句子

输出:该句子是否满足该文法

2.实现窗体版的输入输出界面

实验结果提交要求:

根据实验报告模板书写实验报告

● 对于手工编写的语法分析程序,在实验报告的“实现方法”中需要写出以下两部分

内容:

1. 所用数据结构的定义及其相关说明(相关结构体或类的定义及其含义)

2. 自定义函数的名称及其功能说明

● 对于用LEX和YACC实现的句子识别程序不需要书写“实现方法”中的内容,只需

给出“实验结果”和“结论分析”即可。

将以下文件压缩成一个.rar文件(文件名为学号+姓名),上传到:ftp://202.204.125.21/lidongmei/homework/下的相应班级中

● 实验报告(实验报告2.doc)

● 手工编写的语法分析程序(整个项目文件)

● 用LEX和YACC实现的句子识别程序(整个项目文件)

北 京 林 业 大 学

实 验 任 务 书

北 京 林 业 大 学 11学年—12学年第 2学期 编译原理实验任务书

专业名称: 计算机科学与技术 实验学时: 4 课程名称:编译原理 任课教师: 李冬梅

实验题目:语法分析

实验环境:Paser Generator ,Visual C++ 自选另外一种高级语言

实验目的:

通过设计编制调试具体的YACC程序和有关的语法分析程序,掌握YACC源程序的基本组成,掌握语法分析程序的设计思想,加深对语法分析程序的理解。

实验内容:

1.借助自动生成工具LEX和YACC完成以下实验内容

阅读并运行所给程序:词法.l、语法.y,以理解LEX和YACC的使用和二者之间的通信机制。(分别编译后生成:词法.c、语法.c,将两个文件在VC下创建到一个project下运行即可)

下面是程序运行后的输入和输出结果示例,其中输入“cat eat mouse”后,输出“Sentence is valid”,表示可以识别此类语句,而输入“I love you”后,输出“syntax error”,表示不可识别这类语句。

修改源程序(词法.l、语法.y),使得修改后的程序能够识别类似下列语法结构的语句:

I love you.

I like apples and pears.

I wish you success.

We study compiler hard.

We study compiler hard in school.

也可以自己定义更多符合英语语法规则的句子。

2.在实验1词法分析的基础上,编写程序完成以下其中一个题目

(1)构造下面算术表达式文法的递归下降语法分析程序

∷=[+|-] {(+|-) }

∷={(*|/) }

∷= id|num| ‘(‘‘)’

输入:一个算术表达式

输出:该算术表达式是否合法

(2) 构造文法的LL(1)分析表

输入:一个文法

输出:该文法的全部FIRST集、FOLLOW集和LL(1)分析表

(3) 构造文法的算符优先分析表

输入:一个文法

输出:文法的全部FIRSTVT集、LASTVT集和算符优先分析表

(4)构造文法的LR(0)分析表

输入:一个文法

输出:文法的LR(0)分析表

选做:

1.将上述任务2中的(2)或(3)或(4)的程序进一步完善实现一种语法分析器,即 输入:一个文法和一个句子

输出:该句子是否满足该文法

2.实现窗体版的输入输出界面

实验结果提交要求:

根据实验报告模板书写实验报告

● 对于手工编写的语法分析程序,在实验报告的“实现方法”中需要写出以下两部分

内容:

1. 所用数据结构的定义及其相关说明(相关结构体或类的定义及其含义)

2. 自定义函数的名称及其功能说明

● 对于用LEX和YACC实现的句子识别程序不需要书写“实现方法”中的内容,只需

给出“实验结果”和“结论分析”即可。

将以下文件压缩成一个.rar文件(文件名为学号+姓名),上传到:ftp://202.204.125.21/lidongmei/homework/下的相应班级中

● 实验报告(实验报告2.doc)

● 手工编写的语法分析程序(整个项目文件)

● 用LEX和YACC实现的句子识别程序(整个项目文件)


相关内容

  • 合肥工业大学编译原理课程设计
  • 关于<编译原理>课程设计的有关说明 <编译原理>是计算机专业的一门重要的专业课程,其中包含大量软件设计思想.大家通过课程设计,实现一些重要的算法,或设计一个完整的编译程序模型,能够进一步加深理解和掌握所学知识,对提高自己的软件设计水平具有十分重要的意义.大家在进行课程设计时, ...

  • 编译原理--教学大纲
  • <计算机编译原理>课程大纲 一.适用对象 本课程适用于计算机科学与技术以及相关专业的网络教育.成人教育学生. 二.课程性质 本课程是计算机科学与技术专业学生的专业基础课. 编译原理课程是计算机专业的一门主干课程.课程介绍程序设计语言编译程序构造的一般原理.基本设计方法.主要实现技术和一些 ...

  • 基于符号执行的软件静态测试研究
  • 第23卷第6期2013年6月 计算机技术与发展 COMPUTER TECHNOLOGY AND DEVELOPMENT Vol.23No.6June 2013 基于符号执行的软件静态测试研究 梁娟娟,刘久富,朱丹丹,陈 柯 (南京航空航天大学自动化学院,江苏南京210016) 摘 要:文中基于符号执 ...

  • 编译原理名词解释
  • .名词解释: 1)前缀 答:前缀--是指符号串任意首部. 2)可归前缀 答:可归前缀--是指规范句型的一个前缀,这种前缀包含句柄且不含句柄之后的任何符号. 3)活前缀 答:活前缀--规范句型的一个前缀,这种前缀不含句柄之后的任何符号. 或给定文法规范句型的可归前缀的任意首部. 4)简单短语 答:简单 ...

  • 简单的C语言编译器
  • 中国好资料 一个简单的C 语言编译器 一.小组成员 朱嘉俊(3991102161) 王筱(3991102168) 朱杭(3991102162) 朱林(3991102094)计算机996计算机996计算机996计算机994 二.运行方式 在DOS 环境下运行: Cminus.exe -h 三.概述 经 ...

  • 张瑞编译原理实验报告
  • 黑龙江大学 "编译原理课程设计"读书报告 学院 年级 专业 学号 姓名 报告日期 成绩 软件学院 2012级 软件工程 20122515 张瑞 2014年6月28日 黑龙江大学计算机科学技术学院 黑龙江大学软件学院 概述 "编译原理"课程是计算机专业中一门重要 ...

  • 编译原理大作业(哈工大)
  • 编译原理大作业 论文 学号:1093710411 姓名:周国栋 哈尔滨工业大学软件学院 2012年1月 第一章 综述 第1章 综述 1.1 语法分析概述 语法分析是编译过程的一个逻辑阶段.语法分析的任务是在词法分析的基础上将单词序列组合成各类语法短语 1.2 分析方法 语法分析主要有两种:自顶向下的 ...

  • 语法分析器的设 计与实现
  • 编译原理 语法分析器的设计与实现 小组信息:计算机14-2班第7组 小组成员: 姓名学号 一. 实验目的与要求 目的:在词法分析的基础上,理解和掌握LL (1)文法的基本原理和方法,设计.编写和调试出语法分析程序. 要求:练习构造语法分析程序的方法,进一步加深对知识的理解和实际运用能力,与此同时体会 ...

  • 语法分析实验报告
  • 语法分析实验报告 2013312055 王洁 一.实验目的 编制一个递归下降分析程序,实现对词法分析程序所提供的单词序列的语法检查和结构分析. 二.实验要求 利用C语言编制递归下降分析程序,并对简单语言进行语法分析. 2.1 待分析的简单语言的语法 用扩充的BNF表示如下: ⑴::=beginend ...