下载此文档

PL0实验报告样稿.docx


文档分类:IT计算机 | 页数:约9页 举报非法文档有奖
1/9
下载提示
  • 1.该资料是网友上传的,本站提供全文预览,预览什么样,下载就什么样。
  • 2.下载该文档所得收入归上传者、原创者。
  • 3.下载的文档,不会出现我们的网址水印。
1/9 下载此文档
文档列表 文档介绍
PL_0分析汇报
一、程序整体思绪
语法分析子程序采取了自顶向下递归子程序法,语法分析同时也依据程序语意生成对应代码,并提供了犯错处理机制。语法分析关键由分程序分析过程(block)、常量定义分析过程(constdeclaration)、变量定义分析过程(vardeclaration)、语句分析过程(statement)、表示式处理过程(expression)、项处理过程(term)、因子处理过程(factor)和条件处理过程(condition)组成。这些过程在结构上组成一个嵌套层次结构。除此之外,还有犯错汇报过程(error)、代码生成过程(gen)、测试单词正当性及犯错恢复过程(test)、登录名字表过程(enter)、查询名字表函数(position)和列出类PCODE代码过程(listcode)作过语法分析辅助过程。   由PL/0语法图可知:一个完整PL/0程序是由分程序和句号组成。所以,本编译程序在运行时候,经过主程序中调用分程序处理过程block来分析分程序部分(分程序分析过程中还可能会递归调用block过程),然后,判定最终读入符号是否为句号。假如
是句号且分程序分析中未犯错,则是一个正当PL/0程序,能够运行生成代码,不然就说明源PL/0程序是不正当,输出犯错提醒即可。
二、各个子程序功效分析
1. 读入字符程序(getch)分析:
getch函数其实就是对C语言中getch()具体过程一个实现,该过程中使用了行缓冲区技术以提升程序运行效率:即定义一个line数组每次将文件一行数据存取在line数组中,方便每次高效从缓冲区读取一个字符。
2. 词法分析子程序(getsym)分析:
词法分析子程序名为getsym,功效是从源程序中读出一个单词符号(token),把它信息放入全局变量sym、id和num中,语法分析器需要单词时,直接从这三个变量中取得。不过语法分析器每次用完这三个变量值就立即调用getsym子程序获取新单词供下一次使用,而不是在需要新单词时才调用getsym过程,这么就能够显得高效。getsym过程经过反复调用getch子过程从源程序过获取字符,并把它们拼成单词。需要单词时调用getsym函数,它经过getch过程从源程序中取得一个字符。假如这个字符是字母,则继续获取字符或数字,最终能够拼成一个单词,然后查保留字表,假如查到为保留字,则把sym变量赋成对应保留字类型中枚举值;假如没有查到,则这个单词应是一个用户自定义标识符(可能是变量名、常量名或是过程名字),把sym置为ident,把这个单词存入id变量。查保留字表时使用了二分法查找以提升效率。假如getch取得字符是数字,则继续用getch获取数字,并把它们拼成一个整数,然后把sym置为number,并把拼成数值放入num变量。假如识别出其它正当符号(比如:赋值号、大于号、小于等于号等),则把sym则成对应类型。假如碰到不正当字符,把sym置成nul。
3. 语法分析子程序(block)分析:
该部分也是程序编译专题,语法分析子程序采取了自顶向下递归子程序法,语法分析同时也依据程序语意生成对应代码,并提供了犯错处理机制。语法分析关键由相关分程序分析过程反复调用完成,比如常量定义分析过程(constdeclaration

PL0实验报告样稿 来自淘豆网m.daumloan.com转载请标明出处.

非法内容举报中心
文档信息
  • 页数9
  • 收藏数0 收藏
  • 顶次数0
  • 上传人业精于勤
  • 文件大小19 KB
  • 时间2020-11-14