- 1、本文档共15页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
编译原理实验教大纲2
《编译原理》课程实验教学大纲
【编 写】 朱少林 【审 核】
【课程类别】 专业选修 【课程学时】 51
【开课学期】 【实验学时】 16 - 34
【授课专业】计算机科学与技术
课程简介
编译程序是现代计算机系统的基本组成部分之一。“编译原理”是计算机专业的一门重要专业课,同时也是一门实践性很强的课程,只有通过实践,才能真正掌握。
要求在掌握理论知识的基础上,设计有关算法,编写程序,调试程序。编程语言可为C、C++或Java。
1
2) 理解符号表的作用及符号表组织和使用方法,了解名字的作用范围,了解符号表中一般应包含的内容。
3) 理解词法分析器功能及形式;熟练掌握词法分析器设计的原理,掌握运用状态转换图进行词法分析器设计。
4) 正确理解自下而上语法分析的基本思想,以及归约、短语、句柄、分析树等概念;根据预先由文法规则建立的LR(k)分析表,对输入串进行语法分析。
3、对先修课的基本要求
C语言及程序设计、离散数学、数据结构、操作系统、面向对象程序设计等。
4、实验方式及要求
1) 了解编译程序工作的基本过程及其各阶段的基本任务;熟悉编译程序的组成结构;了解编译程序的生成过程和构造工具。
2) 理解程序语言词法、语法和语义等概念;熟悉高级程序语言一般结构和主要共同特征。
3) 熟练使用Java或C/C++语言,编程实现词法分析、符号表管理、中间代码生成和语法分析等程序,理解和掌握编译系统的工作原理。
5、主要仪器设备
微型计算机实验平台:
操作系统:Windows 2000/XP
语言平台
选用Visual C++:
VC++6.0或以上兼容版本
选用C:
Turbo C 2.0或以上兼容版本
选用Java:
J2SDK1.5.0_06或兼容版本、Eclipse3.1或TextPad 4.7或其它兼容编辑器
7、实验教材及参考书
《编译原理(第2版)》,陈意云、张昱,高等教育出版社
《编译原理》,吕映芝,清华大学出版社
《编译原理》 侯文永,电子工业出版社
《编译原理学习辅导》 张伟,清华大学出版社
《编译原理(第2版)》 蒋立源 西北工业大学出版社
实验 1 查填符号表
1、实验目的:运用所学知识,选择语言、选择算法(数据结构),编程实现符号表管理程序。熟悉编译过程,训练编写程序的能力,为后续实验积累经验。
2、实验的基本原理
基于一种有哪些信誉好的足球投注网站算法,建立表示符表;利用界符进行单词解析;运用文法(自动机)进行标识符识别。
实验内容及要求
运用所学知识,编程实现符号表管理程序。读出源程序中与C语言词法规定相一致的标识符,并在符号表中进行查找,若存在则输出该标识符及其编号和位置;否则将其填入符号表,并分配编号,确定位置,输出该标识符。
输出标识符表。
实验步骤
建立简单的符号表,可以只包含标识符和编号;
编写单词解析子程序,从源程序中分离出单词;
编写查找标识符的子程序(应考虑查找算法),插入新的标识符;
程序调试,输出标识符表。
实验数据的处理与实验报告要求
写出报告。报告包括程序设计时考虑的算法和方法;调试过程中出现的问题和解决的措施;打印出程序清单和调试时所用的源程序。实验 2 简单词法分析
1、实验目的:通过设计调试词法分析程序,实现从源程序中分出各种单词的方法;加深对课堂教学的理解;提高词法分析方法的实践能力。掌握从源程序文件中读取有效字符的方法和产生源程序的内部表示文件的方法掌握词法分析的实现方法上机调试编出的词法分析程序。
⑴ 掌握从源程序文件中读取有效字符的方法和产生源程序的内部表示文件的方法。
⑵ 掌握词法分析的实现方法。
⑶ 上机调试编出的词法分析程序。C_minus。该词法分析器要求至少能够识别C_minus中的以下几类单词:
a. 关键字:else if int return void while共6个,所有的关键字都是保留字,并且必须是小写;
b. 标识符:识别与C语言词法规定相一致的标识符,通过下列正则表达式定义:ID = letter (letter | digit)*;
c. 常数:NUM=(+ | - |ε)digit digit*(.digit digit* |ε)(e(+ | - |ε) digit digit* |ε),letter = a|..|z|A|..|Z|,digit = 0|..|9,包括整数,如123, -123, +123等;小数,如123.45, +123.45, -123.45;科学计数法表示的常数,如+1.23e3,-2.3e-9;
d. 专用符号:+ - * / = = == != = ; , ( ) [ ] { } /* *
文档评论(0)