LEX编译系统的源语言

LEX编译系统的源语言

ID:37853575

大小:145.00 KB

页数:8页

时间:2019-06-01

LEX编译系统的源语言_第1页
LEX编译系统的源语言_第2页
LEX编译系统的源语言_第3页
LEX编译系统的源语言_第4页
LEX编译系统的源语言_第5页
资源描述:

《LEX编译系统的源语言》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、B.2lex源程序的格式LEX编译系统的源语言-LEX语言介绍LEX源程序是对一个词法分析程序的说明或描述。LEX源程序由三部分组成:说明部分;转换规则和辅助过程,用%%做间隔符。格式为:{说明部分/辅助定义/definitions}--花括号括起来的部分都不是必须的.对转换规则和用户子程序也是如此.%%--必须的,标志着识别规则的开始.{转换规则/识别规则/rules}%%{辅助过程/用户子程序/usersubroutines}例1:将输入串照原样抄到输出文件中%%例2:将小写字母转换成大写字母%%[a-z]printf("

2、%c",yytext[0]+'A'-'a');%%例3:IDENT[a-zA-Z][a-zA-Z0-9]*NUMBER[0-9][0-9]*%%"("{cc++;returnLparen;}")"{cc++;returnRparen;}"∶="{cc++;cc++;returnASGN;}";"{cc++;returnSemicolon;}{NUMBER}{ cc+=yyleng;       returnNUMBER; }{IDENT}returnIDENTIFIER;   8------------------------

3、----------------------------------------------------------------------------------------------------------------1、说明部分/辅助定义/definitions包括变量的说明、常量说明、正规定义,(1)辅助定义(正规定义)-是形式如下的一系列定义:即用一个名字代表复杂的正规式。格式:nametranslationd1→r1  d2→r2  …dn→rnü其中Σ是基本字母表,每个di是不同的名字,每个ri是在Σ∪{d1,

4、d2,…,di-1}上的正规式,即基本字母表和前面定义的名字。üri中不能含有di,di+1,…,dn,这样对任何ri可构成一个正规表达式,只要反复将式中出现的名字代以相应的正规式即可.如果允许ri中出现dj(j>=i),那么这种替换过程将有可能不能终止.(陈火旺p58)d1r1  d2r2  …dnrnü正规定义的di用做转换规则中出现的正规表达式的成分使用。ü有些LEX实现版本并不需要"→",------------------------------------------------------------------

5、----------------------------------------------------------------------2、转换规则/识别规则/rules格式:expressionactionP1{action1}  P2{action2}  ……Pn{actionn}ü其中每个Pi是一个正规式,是Σ∪{d1,d2,…,dn}上的正规式;ü由于每个di纯粹最终都可化为Σ上的正规式.因此Pi也同样如此.ü每个actioni是一段C程序代码,当然,一般应是任何实现语言的代码段。它指出在识别出Pi所描述的单词

6、之后,词法分析器所应采取的动作。这些识别规则决定了词法分析器L的功能.分析器L只能识别具有词形Pi的单词符号.ü转换规则是核心,左边是正规式,右边是相应动作.正规式和动作之间用空格隔开.integerprintf(“foundkeywordINT”);1)expression正规式(1)可以直接写出相应正规式。[a-z]+printf(“%s”,yytext);(2)可以使用辅助定义。辅助定义在识别规则中的使用方法,用{}将name括起来,lex自动调用translation去替换它.NUMBER[0-9][0-9]*%%{N

7、UMBER}{ ……}(3)一个例子,用辅助定义的手段来识别FORTRAN语言中的整数和实数的lex源程序例:p3132)action动作(1)动作部分如果只是一个简单的C表达式,则可以写在正规式右边同一行中,(2)如果动作占两行以上,需要用花括号括起来.integer{printf(“foundkeywordINT”);}这条规则的意思是在输入串中寻找词形“integer”,每当与之匹配成功,就打印出“foundkeywordINT”这句话(3)如果相邻的几条规则的动作相同,可以用

8、写成上面的形式。8------------

9、----------------------------------------------------------------------------------------------------------------------------3、辅助过程/用户子程序/u

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。