- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */78 一、LEX源程序——3.辅助过程 对翻译规则的补充 翻译规则部分中某些动作需要调用的过程,如果不是C语言的库函数,则要在此给出具体的定义。 这些过程也可以存入另外的程序文件中,单独编译,然后和词法分析器连接装配在一起。 */78 LEX源程序举例 LEX生成的词法分析器的执行:最长匹配原则 传递单词的属性,是把属性值赋给全程变量yylval 正规定义式: if ? if then ? then else ? else relop ? | = | = | | | = id ? letter(letter|digit)* num ? digit+(.digit+)?(E(+|-)?digit+)? */78 相应的LEX规格说明 /* 说明部分 */ %{ #include stdio.h /* C语言描述的标识符常量的定义,如 LT、LE、EQ、NE、GT、GE、IF、THEN、ELSE、ID、NUMBER、RELOP */ extern yylval; %}/* 正规定义式 */ delim[ \t\n] ws{delim}+ letter [A-Za-z] digit[0-9] id{letter}({letter}|{digit})* num{digit}+(\.{digit}+)?(E[+\-]?{digit}+)? %% */78 /* 规则部分 */ {ws}{/* 没有动作,也不返回 */} if{ return(IF); } then{ return(THEN); } else{ return(ELSE); } {id}{ yylval=install_id(); return(ID); } {num}{ yylval=install_num();return(NUMBER); } “”{ yylval=LT; return(RELOP); } “=”{ yylval=LE; return(RELOP); } “=”{ yylval=EQ; return(RELOP); } “”{ yylval=NE; return(RELOP); } “”{ yylval=GT; return(RELOP); } “=”{ yylval=GE; return(RELOP); } %% 相应的LEX规格说明(续) 如果没有return语句,则,处理完整个输入之后才会返回!! */78 /* 辅助过程 */ int install_id() {/* 把单词插入符号表并返回该单词在符号表中的位置yytext指向该单词的第一个字符yyleng给出它的长度 */ } int install_num() {/* 类似于上面的过程,但单词是常数 */ } 相应的LEX规格说明(续) */78 LEX解决冲突的方式 根据规则定义的先后次序 解决了例子中关键字和标识符的冲突 最长匹配原则 解决了例子中诸如 “” 和 “=” 的冲突 */78 二、LEX的工作原理——1.工作过程 扫描每一条翻译规则Pi,为之构造一个非确定的有限自动机NFA Mi 将各条翻译规则对应的NFA Mi合并为一个新的NFA M 0 q1 q2 qn p1 p2 pn NFA M1 NFA M1 NFA M1开始 将NFA M确定化为DFA D,并生成该DFA D的状态转换矩阵和控制执行程序。 */78 二、LEX的工作原理——2.二义性处理 最长匹配原则 在识别单词符号过程中,当有几个规则看来都适用时,则实施最长匹配的那个规则 优先匹配原则 如有几条规则可以同时匹配一字符串,并且匹配的长度相同,则实施最上面的规则。 */78 二、LEX的工作原理——3.工作过程举例 %% a{ } abb{ } {a}*b{b}* { } %% */78 读LEX源程序,分别生成非确定的有限自动机 开始 1 2 a 开始 3 4 5 6 b b a 开始 7 8 b b a a abb {a}*b{b}* */78 合并为一个NFA M 1 3 7 2 4 8 5 6 a b b a b b a 开始 0*/78 将该NFA M确定化为DFA D DFA D=({a,b},{A,B,C,D,E,F},A,{B.C.E.F},?) 其中:A={0,1,3,7} B={2,4,7} C={8}D={7}E={5,8}F={6,8} A 开始 B E F C D
您可能关注的文档
最近下载
- 降钙素原抗体产品技术要求标准2024年.pdf VIP
- 2013-2022同等学历申硕学位英语真题(含答案).pdf VIP
- 2023年全国职业院校技能大赛食品安全与质量检测题库1-10.docx VIP
- 内部培训刑法知识考试题库大全及答案下载.pdf VIP
- 2025至2030全球及中国车载摄像头模块组件行业项目调研及市场前景预测评估报告.docx
- 2023-2024学年安徽省合肥重点中学九年级(上)第一次月考道德与法治试卷.pdf VIP
- 人教版(2024新版)九年级上册化学全册教案教学设计.docx
- 中国油田分布明细-含分布图.docx VIP
- 6.4 酵母菌子囊孢子的观察(原理讲解).pdf VIP
- AIGC技术在非物质文化遗产设计保护中的应用探索 .pdf VIP
文档评论(0)