- 1、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
编译原理第二三章教材学习(希赛教育基础学院)
2.3 PL/0编译程序的词法分析 PL/0的词法分析程序GETSYM(图2.5)是一个独立的过程,其功能是为语法分析提供单词用的,是语法分析的基础,它把输入的字符串形式的源程序分割成一个个单词符号。为此PL/0编译程序设置了三个全程量的公用单元如下: SYM:存放每个单词的类别,用内部编码形式表示。 ID:存放用户所定义的标识符的值。即标识符字符串的机内表示。 NUM:存放用户定义的数。 单词的种类有五种。 基本字:也可称为保留字或关键字,如BEGIN,END,IF,THEN等。 运算符:如:+、-、*、/、=、#、>=、<=等。 标识符:用户定义的变量名、常数名、过程名。 常数:如:10,25,100等整数。 界符:如:,、.、;、(、)等。 如果我们把基本字、运算符、界符称为语言固有的单词,而对标识符、常数称为用户定义的单词。那么经词法分析程序分出的单词,对语言固有的单词只给出类别存放在SYM中,而对用户定义的单词(标识符或常数)既给类别又给值,其类别放在SYM中,值放在ID或NUM中,全部单词种类由编译程序定义的纯量类型SYMBOL给出,也可称为语法的词汇表。如下面提到的IFSYM,THENSYM,IDENT,NUMBER均属SYMBOL中的元素。图 2.5 词法分析过程GETSYM 词法分析过程图2.5的GETSYM框图对应程序见PL/0编译程序文本中procedure getsym,其中对标识符和关键字(保留字)的识别方式为:当识别到字母开头的字母数字串时,先查关键字表。若查不到则为标识符,查到则为关键字。PL/0编译程序文本中主程序开始对关键字表置初值如下: 关键字表为: word[1]:=begin ;word[2]:=call ; ... word[13]:=write ; 每个数组元素的字符长度为10,不满10个字符时,以空格补满。 查到时找到关键字相应的内部表示为: Wsym[1]:=beginsym; wsym[2]:=callsym; … wsym[13]:=writesym; PL/0编译程序文本中开始对类型的定义中给出单词定义为: type symbol=(nul,ident,number,plus,…,varsym,procsym); 定义单词是纯量/枚举类型,又定义了3个全程量为: sym:symbol; id:alfa; num:integer;因此词法分析程序GETSYM将完成下列任务: (1) 滤空格:空格在词法分析时是一种不可缺少的界符,而在语法分析时则是无用的,所以必须滤掉。 (2) 识别保留字:设有一张保留字表。对每个字母打头的字母、数字字符串要查此表。若查着则为保留字,将对应的类别放在SYM中。如IF对应值IFSYM,THEN对应值为THENSYM。若查不着,则认为是用户定义的标识符。 (3) 识别标识符:对用户定义的标识符将IDENT放在SYM中,标识符本身的值放在ID中。 (4) 拼数:当所取单词是数字时,将数的类别NUMBER放在SYM中,数值本身的值存放在NUM中。 (5) 拼复合词:对两个字符组成的算符 如:>=、=、<= 等单词,识别后将类别送SYM中。 (6) 输出源程序:为边读入字符边输出(可输出在文件中)。由于一个单词往往是由一个或几个字符组成的,所以在词法分析过程GETSYM中又定义了一个取字符过程GETCH(见图2.6),由词法分析需要取字符时调用。
图 2.6 取字符过程GETCH GETCH 所用单元说明: CH: 存放当前读取的字符,初值为空。 LINE: 为一维数组,其数组元素是字符,界对为180。用于读入一行字符的缓冲区。 LL和CC为计数器,初值为0。 GETSYM流程图的工作单元说明: A:一维数组,数组元素为字符,界对[110]。 ID:同A。 WORD:保留字表,一维数组,数组元素是以字符为元素的一维数组。界对为[113]。查表方式采用二分法。 单个字符对应的单词表的建立是,首先在主程序中定义了下标为字符的数组ssym,数组ssym的元素为单词,主程序开始对下标为字符的所有数组元素置初值为nul,对PL/0语言用到的单个字符为单词的,将其字符作为数组下标的元素置初值为对应的单词。如: ssym[+]:=plus; ssym[-]:=minus; … ssym[;]:=semicolon;2.4 PL/0编译程序的语法分析 PL/0编译程序语法、语义分析是整个编译程序设计与实现的核心部分,要求学员努力学习掌握实现技术和方法。现分别说明语
您可能关注的文档
最近下载
- 一年级算术题100以内加减法两位数(十).pdf VIP
- 内蒙建设检测收费标准.doc VIP
- 1--危险化学品从业单位安全生产标准化评审标准(93号文附)--国家局网站版.doc VIP
- GB51220-2017 生活垃圾卫生填埋场封场技术规范.docx VIP
- 初中化学_制取氧气教学设计学情分析教材分析课后反思.doc VIP
- T_BJSMYXYJH 0001—2021_树木医院设置规范.pdf VIP
- 河北2012土建工程定额说明及计算规则.pdf VIP
- 2023年深基坑施工安全要求(规定)与防护措施.doc VIP
- 数据库原理与技术(金仓KingbaseES版)完整版课件全套电子教案.pptx
- 严禁私拉乱接电线与消除火灾隐患.pptx VIP
文档评论(0)