- 126
- 0
- 约2.23万字
- 约 26页
- 2018-08-19 发布于湖北
- 举报
【2017年整理】编译原理实验报告(pl_0语言功能扩充)
《编译原理》课程
实验报告
题目 PL/0编译程序的C语言扩充
专业 化学工程与工艺
班级
学号
姓名
任课教师
华东理工大学信息学院
一.实验题目
PL/0编译程序的C语言扩充
二.实验目的
在分析理解PL/0编译程序的基础上,对其词法分析程序、语法分析程序和语义处理程序进行部分修改扩充。
三.实验内容
在PL/0语言的基础上增加对整型一维数组的支持、扩充IF-THEN-ELSE条件语句、增加REPEAT语句、支持带参数的过程和增加注释等,如下所示:
整型一维数组,数组的定义格式为:
VAR数组标识名(下界:上界)
其中上界和下界可以是整数或者常量标识名。
访问数组元素的时候,数组下表是整型的表达式,包括整数、常量或者变量和他们的组合。
扩充条件语句,格式为:
条件语句?::=?条件语句 语句(3)增加REPEAT语句,格式为:
复合语句?::=?REPEAT语句条件
case IFSYM:
GetSym();
CONDITION(SymSetUnion(SymSetNew(THENSYM,DOSYM),FSYS),LEV,TX);
if (SYM==THENSYM) GetSym();
else Error(16);
CX1=CX; GEN(JPC,0,0);
STATEMENT(FSYS,LEV,TX);
CX2=CX; GEN(JMP,0,CX+1);
CODE[CX1].A=CX;
if (SYM==SEMICOLON) GetSym();
if(SYM==ELSESYM)
{
GetSym();
STATEMENT(FSYS,LEV,TX);
CODE[CX2].A=CX;
} //add the statement of ELSE
else STATEMENT(FSYS,LEV,TX);
break;
(4)修改单词:不等号# 改为
if (CH==)
{
GetCh();
if (CH===) { SYM=LEQ; GetCh(); }
else
if(CH==) { SYM=NEQ; GetCh(); }
else SYM=LSS;
六.实验设计思想
1.设计说明
PL/0语言是Pascal语言的一个子集,这里分析的PL/0的编译程序包括了对PL/0语言源程序进行分析处理、编译生成类PCODE代码,并在虚拟机上解释运行生成的类PCODE代码的功能。 PL/0语言编译程序采用以语法分析为核心、一遍扫描的编译方法。词法分析和代码生成作为独立的子程序供语法分析程序调用。语法分析的同时,提供了出错报告和出错恢复的功能。在源程序没有错误编译通过的情况下,调用类PCODE解释程序解释执行生成的类PCODE代码。词法分析子程序分析: 词法分析子程序名为,功能是从源程序中读出一个单词符号(),把它的信息放入全局变量 、和NUM中,语法分析器需要单词时,直接从这三个变量中获得。Getch过程通过反复调用Getch子过程从源程序过获取字符,并把它们拼成单词。过程中使用了行缓冲区技术以提高程序运行效率。 词法分析器的分析过程:调用时,它通过过程从源程序中获得一个字符。如果这个字符是字母,则继续获取字符或数字,最终可以拼成一个单词,查保留字表,如果查到为保留字,则把变量赋成相应的保留字类型值;如果没有查到,则这个单词应是一个用户自定义的标识符(可能是变量名、常量名或是过程的名字),把置为,把这个单词存入变量。查保留字表时使用了二分法查找以提高效率。如果etch获得的字符是数字,则继续用Getch获取数字,并把它们拼成一个整数,然后把SYM置为 INTEGER,并把拼成的数值放入NUM变量。如果识别出其它合法的符号(比如:赋值号、大于号、小于等于号等),则把则成相应的类型。如果遇到不合法的字符,把置成。语法分析子程序分析: 语法分析子程序采用了自顶向下的递归子程序法,语法分析同时也根据程序的语生成相应代码,并提供了出错处理的机制。语法分析主要由分程序分析过程()、ParaDeclaration)、参数变量处理过程(ParaGetSub)、数组处理过程(ParaGetSub)、常量定义分析过程(ConstDeclaration)、变量定
您可能关注的文档
- [整理版]小学语文苏教版二年级下册单元知识点.doc
- 2918.a密钥分散管理系统——密钥确认算法实现 毕业设计论文.doc
- [工作]商丘师范学院本科教学工作水平评估知.doc
- 【 首发】吉林省吉林一中2013-2014学年高一上学期九月月考历史试题 word版含答案( 2013高考).doc
- 【电气施工组织】区住宅楼和地下车库二期电气施组.doc
- [研究生入学考试]2012年1月至2013年1月时事政治.doc
- (精华资料)电大基础会计小抄(拼音排序整理).doc
- 【施工组织设计】云南某二级公路1-130米箱形拱桥施工组织设计方案.doc
- [说明]3.高一历史必修三学业水平考试复习资料.doc
- [试题]商丘师范学院本科教学工作水平评估知.doc
- 2026福建省福州市闽侯县教育局招聘44人备考题库附答案详解.docx
- 2026福建省福清市向阳幼儿园招聘备考试题附答案详解.docx
- AI时代的中国外语教育:认知、社会和情感维度的再建构.docx
- 2026福建省福州市闽侯县教育局招聘44人备考试题附答案详解.docx
- 2026福建省福州市润楼教育科技集团有限公司招聘1人备考题库附答案详解.docx
- 2025年高中一年级地理期中考试试卷.docx
- (11页PPT)反比例函数征丽.ppt
- 2026福建省电子口岸运营服务有限公司社会招聘1人(Java全栈工程师)备考题库附答案详解.docx
- 2025年苏州泰裕橡胶有限公司介绍企业发展分析报告模板.docx
- 2025年高中历史必修三专题检测试卷.docx
原创力文档

文档评论(0)