- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
8. 课后练习 (1) 参考教材上词法分析器LexAnalyze()对应的词法规则,编写lex文件,用lex自动生成相同功能的词法分析器。 (2) 设计一个简单语言的词法规则,编写lex文件,用lex自动生成该语言的词法分析器。 * 参考资料 Lex Yacc Tutorial /lexandyacc/index.html * * 第8章 词法分析 1. 词法分析概述 1.1 词法分析的功能 扫描源程序的字符串,按照词法规则,识别出单词符号作为输出;对识别过程中发现的词法错误,输出有关的错误信息。 * 1.2 词法分析器和语法分析器的关系 (1) 词法分析器作为单独的一遍 输入串 词法分析器 语法分析器 单词流 * (2) 词法分析器作为子程序 输入串 词法分析器 语法分析器 符号表 取下一单词 返回下一单词 * 2. 单词的类别 (1) 标识符:由用户定义,用来命名程序中出现的变量、数组、函数、过程、标号等。 (2) 关键字:也称为保留字或基本字,由语言定义,如if、while、for、do、goto等。 (3) 常数:各种类型的常数,如 1、3.14、TRUE等。 (4) 运算符:如 +、-、*、/ 等。 (5) 界符:如 ; 、: 、/* 、*/ 等。 * 3. 单词的输出形式 识别出的单词采用一种中间表示形式,以便于编译的后续阶段方便的引用。 一个单词用一个二元式来表示: (单词的编码 , 单词的属性) 区分单词所属的类别 区分具体的单词 * (1) 单词的编码 采用整数编码,编码方式为 标识符:统一一个编码 常数:一种类型一个编码 关键字、运算符、界符:一字一码 * (2) 单词的属性 与相应的编码方式对应,用于区分相同编码的不同的单词。 标识符:记录它在符号表中的位置 常数:记录常数的值 关键字、运算符、界符:可省 * 实例 字符串“A:=B50+10;”的词法分析输出为: (标识符的编码,A的位置) (:=的编码,— ) (标识符的编码,B50的位置) (+的编码,— ) (整数的编码,10) (;的编码,— ) * 4. 单词的识别方法 根据各类单词的特征,从输入字符串中识别出单词,并返回相应的二元式。 (1) 标识符的识别 字母开头,后面接若干个字母或数字。 (2) 关键字的识别 字母开头,后面接若干个字母或数字。 * (3) 常数的识别 根据具体常数的类型和格式来定。如:若干个数字字符的连接可构成一个正整数。 (4) 运算符的识别 根据具体运算符的格式来定。 (5) 界符的识别 根据具体界符的格式来定。 * 说明 1) 如何区分关键字和标识符 查关键字表 2) 符号表管理 每识别出一个新的标识符,将其加入符号表。与之关联的其它属性值,在编译的后续阶段陆续填入。 (符号表的实现方案参见教材“8.5 符号表”) * 5. 识别单词的状态转换图 (1) 状态转换图 有限方向图 结点代表状态 有向边表示状态转换 唯一初态、若干终态 边上的标记表示从输入串中读入的字符 1 2 3 x y * (2) 状态转换图识别的字符串 从初态出发到某一终态,所经过路径上的所有字符的连接。 例如,以下状态转换图可识别以字母开头,后跟若干个字母或数字的字符串。 0 1 2 字母 其它字符 字母或数字 * * (3) 识别某类单词的状态转换图 根据构成该类单词的字符串的特点,可构造出识别该类单词的状态转换图。 例如,识别标识符的状态转换图(同上例)。 * 注意 在某些情况下,为了识别出某个单词,需要读取的字符可能超出了该单词本身的范围(超前搜索)。识别完后应将这些字符退还给输入串,以备识别下一个单词时使用。 * (4) 识别全部单词的状态转换图 将识别某语言中各类单词的状态转换图合并,可构造出一个完整的,能够识别该语言全部单词的状态转换图。 * 6. 词法分析器的设计与实现 6.1 单词符号 设某语言支持的单词符号为 1) 标识符 2) 关键字:int、if、for、while、… 3) 整型常数 4) +、- 、*、/、、=、==、 … 5) ( 、)、 ;、… * 单词符号的编码 单词符号 类别编码 助记符 标识符 01 $SYMBOL 整型常数 02 $CONSTANT int 03 $INT if 04 $IF else 05 $ELSE while 06 $WHILE for 07 $FOR read 08 $READ write 09 $WRITE + 10 $ADD - 11 $SUB * 12 $MUL / 13 $DIV ? 14 $L = 15 $LE ? 16 $G = 17 $GE != 18 $NE == 19 $E =
您可能关注的文档
最近下载
- 深度学习基础及应用(人工智能、大数据技术、计算机等相关专业)全套教学课件.pptx
- 《深度学习基础及应用》教案 第9课 利用循环神经网络进行文本预测和分类(二).docx VIP
- 《深度学习基础及应用》教案 第8课 利用循环神经网络进行文本预测和分类(一).docx VIP
- 《深度学习基础及应用》教案 第6课 利用卷积神经网络进行图像处理(一).docx VIP
- 《深度学习基础及应用》教案 第10课 利用生成对抗神经网络进行图像生成.docx VIP
- 《深度学习基础及应用》教案 第8课 利用循环神经网络进行文本预测和分类(一).pdf VIP
- 《深度学习基础及应用》教案 第5课 构建神经网络(三).docx VIP
- 《深度学习基础及应用》教案 第2课 夯实深度学习开发基础.docx VIP
- 人教版五年级上册数学精品教学课件 第3单元 3.3 商的近似数.ppt VIP
- 《深度学习基础及应用》教案 第10课 利用生成对抗神经网络进行图像生成.pdf VIP
文档评论(0)