- 1、本文档共13页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
《Fex简介
1.FLEX简介
???单词的描述称为模式(Lexical Pattern),模式一般用正规表达式进行精确描述。FLEX通过读取一个有规定格式的文本文件,输出一个C语言源程序。
?????FLEX的输入文件称为LEX源文件,它内含正规表达式和对相应模式处理的C语言代码。LEX源文件的扩展名习惯上用.l表示。FLEX通过对源文件的扫描自动生成相应的词法分析函数?int yylex(),并将之输出到名规定为lex.yy.c的文件中。实用时,可将其改名为lexyy.c。该文件即为LEX的输出文件或输出的词法分析器。也可将?int yylex()加入自已的工程文件中使用。
2. 模式简介
???LEX的模式的格式(也称为规则)是机器可读的正规表达式,正规表达工是用连接、并、闭包运算递归生成的。为了方便处理,LEX在此基础上增加了一些运算。下列是按运算优先级由高往低排正规表列的LEX的达式的运算符。
“\[]^-?.*+|()/${}%
???关于LEX的模式定义,可参见下表:
模 式 解 释 X 匹配单个字符x。(也可将模式写为”x”) . 匹配除换行符’\n’之外的任意字符 [xyz] 匹配x、y或z [abj-oZ] 匹配字符集:a、b、Z以及j到o之间的字母(包括j和o) [^A-Z] 匹配字符集A到Z之间字符集的补集。即除大写字母的其它字符 [^A-Z\n] 匹配除大写字母和换行符之外的其它字符 r* R是正规表达式,r*匹配0个或多个r r+ R是正规表达式,r+匹配1个或多个r r? R是正规表达式,r?匹配0个或1个r r{2,5} R是正规表达式,r{2,5}匹配2个到5个r r{2,} R是正规表达式,r{2,}匹配2个或以上r r{4} R是正规表达式,r{4}匹配4个r {name} name是在定义部份出现的模式宏名,在规则部份将之替换为模式 “[xyz]\”foo” 匹配字符串[xyz]”foo \x 如x是’a’、’b’、’f’、’n’、’r’或’t’,\x为转义字符,定义同ANSI C,否则,匹配字符x.此方法用于匹配正规表达式的运算符 \123 匹配八进制ASCII码为123的字符 \x2a 匹配十六进制ASCII码为2a的字符 (r) 匹配r,优先运算正规式r Rs 匹配正规式r和s的连接 r|s 匹配正规式r或s r/s 匹配正规式r,但是,r之后一定要出现正规式s。称s为r的尾部条件 ^r 匹配正规式r,但是,r一定要出现在行首 r$ 匹配正规式r,但是,r一定要出现在行尾 sr 匹配正规表达式r,但是一定要在开始条件s激活之后 EOF 匹配文件结束标志
???LEX对源文件的格式要求非常严格,比如若将要求顶行书写的语句变成非顶行书写就会产生致命错误。而LEX本身的查错能力很弱,所以书写时一定要注意。
???LEX的源文件由三个部份组成,每个部分之间用顶行的“%%”分割,其格式如下:
???定义部份
???%%
???规则部份
???%%
???用户附加C语言部份
3.1定义部份
???定义部份由C语言代码、模式的宏定义、条件模式的开始条件说明三部份组成。
???其中,C代码部份由顶行的%{和}%引入,LEX扫描源文件时将%{和}%之间的部分原封不动的拷贝到输出文件lex.yy.c中.???模式的宏定义部份如同C语言中的宏定义,通过宏名定义一个模式,这样,可以简化在源文件中多次出现的正规表达式的书写。格式为:
???宏名1?宏定义1
???宏名2?宏定义2
???……
???例如:
???DIGIT [0-9]
???ID [A-Za-z][A-Za-z0-9_]*
???宏名是以字母和下划线”_”开始,以字母、数字和下划线组成的字符串,且大小写敏感。宏名必须顶行写,宏名和宏定义必须写在同一行上。宏名和宏定义之间以不包括换行符的白字符(空格符、TAB符、换行符)隔开。
???条件模式的开始条件说明格式如下:
???%start s1 s2 s3
???其中,s1、s2、s3为条件名。必须为大小写敏感的标识符。关于条件模式的使用,我们将在后面作说明。
3.2?规则部份
???规则部份是LEX源文件的核心部份,它包括一组模式和在生成分析器识别相应模式后对相应模式进行处理的C语言动作(Action)。格式如下
???C语言代码
???模式1?动作1
???模式2 |
???模式3?动作3
???……
???同定义部分一样,C语言代码必须出现在第一个模式之前,包括在%{和}%之中,且%{必须顶行书写。%{和}%之间的代码部份可用来定义yylex()用到的局部变量。
???模式必须顶行书写。模式可为正规式或用{}括起且在定义部份定义过的宏名。动作
您可能关注的文档
- 《D用计算器计算.doc
- 《D详解.docx
- 《D背景颜色与图像.docx
- 《DX11代表作20款主流显卡决战DiRT2.doc
- 《E680I实用技巧.doc
- 《E71最全设置与使用技巧大全.doc
- 《E71入门贴.doc
- 《SCADA标准方案.doc
- 《EA236门禁键盘说明书.doc
- 《proteusvsm仿真.doc
- 基于人工智能教育平台的移动应用开发,探讨跨平台兼容性影响因素及优化策略教学研究课题报告.docx
- 高中生物实验:城市热岛效应对城市生态系统服务功能的影响机制教学研究课题报告.docx
- 信息技术行业信息安全法律法规研究及政策建议教学研究课题报告.docx
- 人工智能视角下区域教育评价改革:利益相关者互动与政策支持研究教学研究课题报告.docx
- 6 《垃圾填埋场渗滤液处理与土地资源化利用研究》教学研究课题报告.docx
- 小学音乐与美术教师跨学科协作模式构建:人工智能技术助力教学创新教学研究课题报告.docx
- 《航空航天3D打印技术对航空器装配工艺的创新与效率提升》教学研究课题报告.docx
- 教育扶贫精准化策略研究:人工智能技术在区域教育中的应用与创新教学研究课题报告.docx
- 《区块链技术在电子政务电子档案管理中的数据完整性保障与优化》教学研究课题报告.docx
- 《中医护理情志疗法对癌症患者心理状态和生活质量提升的长期追踪研究》教学研究课题报告.docx
最近下载
- 工程项目成本分析表(房建).xls VIP
- 道路交通标志和标线(GB5768-2009).docx VIP
- 2024年全国高级配电线路工技能考试题库及答案.docx VIP
- 颗粒级配曲线不均匀系数计算.xls VIP
- 建筑工程CAD网络课程项目申报书--.docx VIP
- 《我与地坛(节选)》同步练习 统编版高中语文必修上册.docx VIP
- 道路交通标志和标线+第1部分:总则.docx VIP
- 2025年秋季学期-2026年春季学期中小学校(幼儿园)大宗食材(肉蛋)采购及配送项目方案投标文件(技术方案).doc VIP
- 耐高压PICC置管课件.ppt VIP
- 功能性子宫出血病历模板.pdf VIP
文档评论(0)