大连理工大学编译原理讲义课件.pptVIP

  1. 1、本文档共38页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多

词法分析器的生成器?温故知新手工实现计算机正规式状态转换图实现用正规式语法结构来指导构造过程等价等价合并不可区别状态最简确定有限自动子集构造法确定有限自动机不确定有限自动机机状态列举法非形式化描述的语言

2.5词法分析器的生成器Lex是LEXicalcompiler的缩写,是Unix环境下非常著名的工具,主要功能是生成一个词法分析器的C源码,描述规则采用正规式。描述词法分析器的文件*.l,经过lex编译后,生成一个lex.yy.c的文件,然后由C编译器编译生成一个词法分析器。LEX源程序经过LEX处理,并经过编译,可以生成一个词法分析器。这个词法分析器的作用就好像有限自动机一样,可以用来识别和产生单词符号。

2.5词法分析器的生成器用Lex建立词法分析器的步骤Lex编译器lex.yy.ca.outLex源程序lex.lC编译器lex.yy.ca.out记号序列输入流

2.5词法分析器的生成器LEX将用户输入的表达式和动作序列转化为宿主语言的源程序,经过编译后的程序即是词法分析程序,被称为yylex。LEX不是一种完整的语言,但是它可以嵌入到其他程序设计语言的源程序中。嵌入到LEX中的程序设计语言被称为宿主语言。宿主语言用来处理LEX的输出代码,同时也可以由用户添加一些必要的代码辅以词法分析。目前,LEX支持的宿主语言通常是C语言。

2.5词法分析器的生成器Lex程序包括三个部分声明%%翻译规则%%辅助过程Lex程序的翻译规则p1{动作1}{动作2}…p2…pn{动作n}

2.5词法分析器的生成器例---声明部分%{/*常量LT,LE,EQ,NE,GT,GE,WHILE,DO,ID,NUMBER,RELOP的定义*/%}/*正规定义*/delimws[\t\n]{delim}+letterdigitid[A?Za?z][0?9]{letter}({letter}|{digit})*number{digit}++)?(E[+\?]?{digit})?+(\.{digit}

2.5词法分析器的生成器例---翻译规则部分{ws}whiledo{/*没有作,也不返回*/}{return(WHILE);}{return(DO);}{id}{yylval=install_id();return(ID);}{number}{yylval=install_num();return(NUMBER);}“”“=”{yylval=LE;return(RELOP);}“=”{yylval=EQ;return(RELOP);}“”{yylval=NE;return(RELOP);}“”{yylval=GT;return(RELOP);}“=”{yylval=GE;return(RELOP);}{yylval=LT;return(RELOP);}

2.5词法分析器的生成器例---辅助过程部分install_id(){/*把法元装入符号表并返回指。yytext指向元的第一个字符,yyleng出的它的度*/}install_num(){/*似上面的程,但法元不是符而是数*/}

用Lex定义常规表达式.匹配任意字符,除了\n指范围[A-Za-z0-9]行的结尾-${}模式可能出现的次数,例如A{1,3}表示可能出现1次或3次^(1)行的开始;(2)否定,操作符^只能出现在左中括号后的第一个字符位置处[^abc]*|?+等常用的闭包,逻辑或等操作

2.5词法分析器的生成器Lex中重要的外部变量yytext:外部字符数,其内容是当前被某个匹配的字符串yyleng:当前yytext中的字符的个数例:[a-zA-Z]+printf(“word=%s,length=%d”,yytext,yyleng);另外[a-zA-Z]+printf(“%s”,yytext);可以写成[a-zA-Z]+ECHO;

2.5词法分析器的生成器Lex中识别规则二义性处理能匹配最多字符的先能匹配相同数目的字符的写序在前的先eg:integerkeywordaction...;[a?z]+identifieraction...;当输入为integers时,匹配[a?z]+

Lex中识别规则二义性处理Lex程序分割输入流同时不有哪些信誉好的足球投注网站每个表达式的所有可能匹配。每个字符计算一次且仅一次。例如,计算she和he在输入文本中的出现次数:shes++heh++\n|/*规则同下一行*/.;在这里最后两个规则忽略除了he和she的所有东西。然而,因为she包含h

您可能关注的文档

文档评论(0)

138****9564 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档