- 1、本文档共34页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
编译原理课件lex-yacc使用说明
Lex软件的使用 编译原理实践课之一 Lex 与 Yacc 介绍 Lex 代表 Lexical Analyzar。 Yacc 代表 Yet Another Compiler Compiler。 Lex 和 Yacc 是 UNIX 两个非常重要的、功能 强大的工具。事实上,如果你熟练掌握 Lex 和 Yacc 的话,它们的强大功能使创建 FORTRAN 和 C 的编译器很简单。 Lex Lex 是一种用来构造词法分析器的工具。它本身也可以称为一个编译器。 Lex读入词法分析器的规格说明,根据此说明,生成一个用c语言描述的词法分析器。 把描述词法分析器的规格说明的语言称为Lex 语言或词法分析器设计语言。 用Lex 语言书写的词法分析器规格说明称为Lex 源文件。 实用程序Lex 把Lex 源程序翻译成用c语言描述的目标程序,所以通常也称为Lex 编译器。 Lex工作原理 一种匹配的常规表达式可能会包含相关的动作。这一动作可能还包括返回一个标记。 当 Lex 接收到文件或文本形式的输入时,它试图将文本与常规表达式进行匹配。它一次读入一个输入字符,直到找到一个匹配的模式。 如果能够找到一个匹配的模式,Lex 就执行相关的动作(可能包括返回一个标记)。 另一方面,如果没有可以匹配的常规表达式,将会停止进一步的处理,Lex 将显示一个错误消息。 Lex 和 C的关系 Lex 和 C 是强耦合的。一个 .lex 文件(Lex 文件具有 .lex 的扩展名)通过 lex 公用程序来传递,并生成 C 的输出文件。这些文件被编译为词法分析器的可执行版本。 Lex 编程 Lex 编程可以分为三步: 以 Lex 可以理解的格式指定模式相关的动作。 在这一文件上运行 Lex,生成扫描器的 C 代码。 编译和链接 C 代码,生成可执行的扫描器。 注意: 如果扫描器是用 Yacc 开发的解析器的一部分,只需要进行第一步和第二步。 Lex 程序 说明部分 %% 翻译规则 %% 辅助过程 课本 64,65页 Lex 程序 一个 Lex 程序分为三个段: 第一段是 C 和 Lex 的全局声明, 第二段包括模式(C 代码), 第三段是补充的 C 函数。 第三段中一般都有 main() 函数。 这些段以%%来分界。 下面是一个字数统计的程序。 程序不同段的构成 C 和 Lex 的全局声明 这一段中我们可以增加 C 变量声明。 (为字数统计程序声明一个整型变量,来保存程序统计出来的字数。) 我们还将进行 Lex 的标记声明。 字数统计程序的声明 %{ int wc = 0; /* word count */ %} %% 两个百分号标记指出了 Lex 程序中这一段的结束和三段中第二段的开始。 Lex 的模式匹配规则 让我们看一下 Lex 描述我们所要匹配的标记的规则。(我们将使用 C 来定义标记匹配后的动作。)继续看我们的字数统计程序,下面是标记匹配的规则。 字数统计程序中的 Lex 规则 [a-zA-Z]+ { wc++; } \n|. { /* gobble up */ } %% C 代码 Lex 编程的第三段,也就是最后一段覆盖了 C 的函数声明(有时是主函数)。注意这一段必须包括 yywrap() 函数。 Lex 有一套可供使用的函数和变量。 其中之一就是 yywrap。一般来说,yywrap() 的定义如下例。 字数统计程序的 C 代码段 int main(void) { int n = yylex(); return n; } int yywrap(void) { printf(word count: %d\n, wc); return 1; } Parser Generator Version 0.60 (Beta Release) Copyright (C) 1997-98 P. D. Stearns About Parser Generator Parser Generator is a Windows based YACC and Lex IDE. It is a Shareware program and can be freely distributed providing it is done so in its entirety. It includes two custom versions of YACC and Lex called AYACC and ALex respectively. Features Below are some of the features that are provided by
您可能关注的文档
- 综合英语第一册 unit3.ppt
- 综合英语第一册 unit9.ppt
- 综合英语第三册 unit1.ppt
- 综合英语第一册 unit8.ppt
- 综合英语第一册 unit6.ppt
- 综合英语第三册 unit10.ppt
- 综合英语第三册 unit11.ppt
- 综合英语第三册 unit7.ppt
- 综合评价建立职业生涯评价体系Comprehensive Assessment Building a Career Assessment System庄重商务模板.ppt
- 综合费用的核算.ppt
- 10《那一年,面包飘香》教案.docx
- 13 花钟 教学设计-2023-2024学年三年级下册语文统编版.docx
- 2024-2025学年中职学校心理健康教育与霸凌预防的设计.docx
- 2024-2025学年中职生反思与行动的反霸凌教学设计.docx
- 2023-2024学年人教版小学数学一年级上册5.docx
- 4.1.1 线段、射线、直线 教学设计 2024-2025学年北师大版七年级数学上册.docx
- 川教版(2024)三年级上册 2.2在线导航选路线 教案.docx
- Unit 8 Dolls (教学设计)-2024-2025学年译林版(三起)英语四年级上册.docx
- 高一上学期体育与健康人教版 “贪吃蛇”耐久跑 教案.docx
- 第1课时 亿以内数的认识(教学设计)-2024-2025学年四年级上册数学人教版.docx
文档评论(0)