- 1、本文档共46页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第三章 词法分析 (Lexical Analysis) 主要内容: 词法分析程序的功能; 单词分类及内部表示; 词法分析程序的设计与实现步骤。 3.1 词法分析介绍 3.1.1 词法分析程序的功能 单词是字符的序列,是指语言中那些具有独立含义的最小语义单位。 单词不是程序设计语言中的语法概念,是编译程序中引进的一个概念。 编译程序的翻译工作 为提高效率,编译应该在单词一级上进行; 词法分析的主要任务:词法分析是编译的第一阶段,它的的主要任务是按语言的词法规则,从左至右逐个字符地对原程序进行扫描,从源程序中识别出每个单词,并把每个单词转换成它们的内部表示,即所谓的TOKEN,同时进行词法检查。 词法分析程序:执行词法分析的程序称为词法分析程序,有时也称为词法分析器(Lexical Analyzer)或者扫描器(Scanner)。 3.1.2 词法分析程序的接口 词法分析程序与语法分析程序的接口有两种形式: 词法分析程序作为编译器的独立一遍 遍(Pass):所谓“遍”就是对源程序或源程序的中间表示形式从头到尾扫描一次,并作加工处理,生成新的中间结果或目标程序。 词法分析程序作为独立的一遍:读入源程序字符序列,识别出每一个单词并将其转换成相应的内部表示,形成一个TOKEN序列,这个TOKEN序列将作为语法分析程序的输入; 词法分析程序作为语法分析程序的一个子程序 语法分析程序每调用一次词法分析程序,词法分析程序就从源程序的字符序列中拼出一个单词,并将其TOKEN值返回给语法分析程序。 这种方式的好处是,它不需要存储源程序的内部表示。 词法分析器的接口 CharList 3.2 词法分析程序的设计3.2.1 单词分类 一般常用程序设计语言的单词可以分为以下几类: 保留字:保留字一般是由语言系统自身定义的,通常是由字母组成的字符串。如C语言中的int, if, for, do等等。这些字在语言中具有固定的意义,是编译程序识别各类语法成分的依据。 标识符:用来标识程序中各个对象的名称。它们由用户定义,用来表示变量名、常量名、数组名和函数名等。 常量:主要包括整数常数、实数常数、字符常量、字符串常量等。 特殊符号:包括运算符和界限符。 运算符表示程序中算术运算、逻辑运算、 字符运算、赋值运算的确定的字符或字符串。 如各类语言通用的+、-、*、/、、=、=等。 界限符在语言中是作为语法上的分界符号使用的。 如逗号、分号、单引号等。 3.2.2 单词的内部表示 TOKEN结构图 单词的内部表示TOKEN的结构一般由两部分组成:单词类别和语义信息。 单词类别,又称词法信息,用来区分单词的不同种类,通常可以用整数编码来表示。 单词的语义信息,应该是唯一确定其本身内容的编码。 一、标识符和常量的TOKEN结构 给出标识符和常量类别编码; 给出标识符和常量的语义信息。 关于语义信息可以有两种处理方法: 一种是在其TOKEN的语义信息部分直接存储这些值; 另外一种是设置标识符表和常量表来存储其值,这时TOKEN的语义信息部分就是一个指向相应表项的一个指针。 第一种方法处理起来比较简单,但是TOKEN的空间大小不好确定,可能造成空间浪费。因此,我们采取第二种策略。 二、保留字、界限符和运算符的处理 可以有两种处理方法: 一种是保留字、界限符和运算符分别算作一类,除了要给出其类别外,还需在其TOKEN的语义信息部分直接存储这些值的串或整数编码;如: 另外一种是保留字、界限符和运算符采用一符一类的方法,不输出单词的值(其TOKEN的语义信息部分为空),只输出其类别码即可。如: 不设置标识符表和常量表,词法分析程序扫描该程序段的字符序列,生成下列TOKEN序列: 1.( 15, ) 2. ( 1, sum ) 3. ( 30, ) 4. ( 1, first ) 5. ( 30, ) 6. ( 1, count ) 7. ( 35, ) 8. ( 20, ) 9. ( 31, ) 10. (37, ) 11. ( 23, ) 12. (37, ) 13. ( 1, sum ) 14. ( 32, ) 15. ( 1, first ) 16. ( 33, ) 17. ( 1, count ) 18. ( 36, ) 19. ( 2, 10 ) 20.
您可能关注的文档
- 闭区间上连续函数的性质摘要.ppt
- 黑Black_Humor摘要.ppt
- 高考地理三轮能力专题----获取和信息摘要.ppt
- 臂丛神经全方位学习--科室学习摘要.ppt
- 高考地理专题复习:旅游资源摘要.ppt
- 黑龙江医药卫生职业学校生物碱第三节生物碱理化性质摘要.ppt
- 臂丛神经损伤摘要.ppt
- 高考第一轮复习--氮及其重要的化合物摘要.ppt
- 黑色的三月八号摘要.ppt
- 第四章_食用香精的应用摘要.ppt
- 北京体育大学2024年秋季公开招聘笔试备考题库及参考答案详解.docx
- 北京体育大学2024年公开招聘笔试高频难、易错点备考题库附答案详解.docx
- 美国溢价合同.docx
- 美和活动策划文案.docx
- 北京体育大学2024年公开招聘笔试高频难、易错点备考题库及答案详解1套.docx
- 企业服务培训PPT课件.pptx
- 北京体育大学2024年公开招聘笔试高频难、易错点备考题库及完整答案详解1套.docx
- 北京体育大学2024年公开招聘笔试高频难、易错点备考题库及参考答案详解一套.docx
- 北京体育大学2025年公开招聘笔试备考题库及参考答案详解.docx
- 北京体育大学2024年第二批公开招聘笔试高频难、易错点备考题库含答案详解.docx
文档评论(0)