`
mixer_a
  • 浏览: 357172 次
社区版块
存档分类
最新评论

Windows下使用Flex入门

 
阅读更多

LEX是UNIX的工具,因此我们需要使用FLEX代替,使得在windows下使用;

LEX是词法分析器,主要作用类似于扫描器,输入为源代码(当然我们现在写的示例不一定是源代码),输出为词法单元(泛化的东西,比如1,2,3都可以被称为NUM);

当然中间匹配的过程很复杂,比如匹配正则表达式,并输出;使用LEX就不需要考虑这些,我们只需要定义以下几点:

(1)正则表达式,怎么样才算匹配,比如我们定义的语言中INTEGER才是整数,则输入为INTEGER时匹配正则表达式;

(2)返回的词法单元,当匹配时要返回什么需要自己定义;

下载地址:http://download.csdn.net/detail/loseblue/283175#comment

 

二、使用LEX



下载的文件如下图:





我们写一个统计文本单词个数、空白个数、数字个数;

步骤1:定义*.L文件


一开始要定义一个*.L文件,模板解释如下:

 

[java] view plaincopy
  1. %{  
  2. //声明一些变量或函数  
  3. %}  
  4. //定义正则表达式  
  5. //比如:  
  6. //num ([0-9])+   //左边为符号,右边为正则表达式  
  7. %%  
  8. //定义一系列的动作,即如果匹配了上面定义的某个正则表达式之后的动作,此动作是C语言的语句  
  9. //比如:  
  10. //{num} {printf("num");} //左边为{模式},右边为{C语句};  
  11. %%  
  12. void main() //执行主函数  
  13. {  
  14.     yylex();  //开始解析语句,内置函数  
  15.     //定义C语言语句  
  16. }  
  17. int yywrap()  
  18. {  
  19.     return 1;  
  20. }  

 

 

真实代码如下:

 

[java] view plaincopy
  1. %{  
  2. int wordCount = 0;  
  3. int whiteCount = 0;  
  4. int numCount = 0;  
  5. %}  
  6. letter [a-zA-Z]  
  7. letters {letter}+  
  8. numbers ([0-9])+  
  9. whitespaces ([\t\n ])+  
  10. %%  
  11. {letters} {wordCount++;}   //当匹配letters的正则表达式时执行的动作,一般动作都是结合yacc并返回给语法分析器一个词法单元和属性值,此处把lex作为一个独立的工具使用  
  12. {numbers} {numCount++;}  
  13. {whitespaces} {whiteCount++;}  
  14. %%  
  15. void main()  
  16. {  
  17.     yylex();  //开始解析语句,内置函数  
  18.     printf("单词数:%d\n",wordCount);  
  19.     printf("空白数:%d\n",whiteCount);  
  20.     printf("数字数:%d\n",numCount);  
  21. }  
  22. int yywrap()  
  23. {  
  24.     return 1;  
  25. }  

 

 

步骤2:使用flex命令

 

输入命令:flex 1.L

注意:此处的命令行为lexyacc.bat 打开的命令行;


flex 1.L 生成 lex.yy.c,此时的C文件可以被gcc编译,并可以使用;

 

步骤3:使用gcc编译C程序


Windows平台 的GCC主要是MinGW编译器:http://www.mingw.org/

配置环境变量: path=mingw/bin;


输入命令:gcc -o output.exe lex.yy.c


此时生成output.exe;

 

步骤4:在命令行中输入output执行exe

 

此时简单的lex 程序就完成了;

最后总共文件如下:

 

 

 

分享到:
评论

相关推荐

    flex与bison入门,编译原理:flex编写词法分析器(使用windows环境)

    本文将详细介绍在Windows环境下如何使用Flex编写词法分析器,并通过Bison进行语法分析。 Flex是一个灵活的词法分析器生成器,它能够根据正则表达式定义生成C代码,该代码可以读取输入流并识别出符合这些表达式的...

    SuperMap iClient for Flex从入门到精通 第1章

    《SuperMap iClient for Flex从入门到精通》第一章节主要介绍了如何使用SuperMap iClient for Flex构建Web GIS应用,这是基于Apache Flex技术的客户端开发包,适用于创建跨浏览器、跨平台的富客户端GIS应用程序。...

    flex入门简介

    Flex入门简介 Flex是一种用于构建富互联网应用(RIA,Rich Internet Applications)的开发框架,它为Web应用程序提供了桌面应用级别的互动性和用户体验。Flex的核心优势在于它能够创建具有高交互性、快速响应和丰富...

    Flex从入门到精通

    通过这个“Flex从入门到精通”的教程,你可以系统学习Flex的基础知识,包括环境配置、组件使用、数据处理、网络通信等,进一步深入到高级主题,如动画效果、自定义组件和企业级应用开发。无论你是Web开发者还是希望...

    Flex 技术开发入门介绍

    ### Flex技术开发入门知识点 #### 一、Flex技术概述 Flex是一种开源的软件框架,用于构建高质量的桌面和移动应用程序。它由Adobe Systems在2004年发布,并且随着时间的发展逐渐成为创建富互联网应用(RIA)的标准...

    win+vs+flex+bison+demos+flex与bison中文版.pdf.zip

    Visual Studio中创建Flex+Bison项目,源码中包含多个vs2010可编译通过的demo,用win_flex_bison-2.5.18 其中包含《Visual Studio中创建Flex+Bison项目.pdf》学习flex bison入门资料《flex与bison中文版.pdf》

    Matrikon-FLEX_DemoServer_Windows.zip

    总之,“Matrikon-FLEX_DemoServer_Windows.zip”是一个宝贵的资源,无论你是想入门OPC UA技术,还是寻求开发经验,都能从中受益。通过学习和实践,你可以掌握OPC UA服务器的开发,从而在工业自动化领域中发挥更大的...

    flex4之语法入门.doc

    综上所述,Flex 4的语法入门涉及了Flex的基本概念、技术优势、新特性以及开发环境Flash Builder的下载和安装。掌握这些内容,开发者可以开始创建具有先进交互性和视觉吸引力的富互联网应用程序。

    blazeDS war包及Flex结合blazeDS的入门程序

    ### BlazeDS War包及Flex结合BlazeDS的入门程序 #### 一、BlazeDS简介与功能 BlazeDS是一款由Adobe开发的开源服务器端软件,主要用来支持远程调用和消息传递服务。它能够实现Java应用服务器和Flex客户端之间的通信...

    win_flex_bison-latest (1).zip

    4. UNISTD_ERROR.readme:可能包含了关于在Windows环境下使用UNIX标准库可能出现的问题及其解决方法的说明。 5. README.txt:通常提供有关压缩包内容、安装和使用方法的基本指南。 6. ~flex_temp_out_main_a19908:...

    flash+flex+air移动开发入门经典(1)源码

    《Flash + Flex + Air 移动开发入门经典》是一本旨在引导初学者进入移动应用开发领域的书籍,尤其针对使用Adobe的Flash、Flex和Air技术。本资源提供了书中的部分源码,帮助读者通过实践理解理论知识。源码分为三个...

    Flex4权威指南英文原版高清晰

    通过以上内容可以看出,《Adobe Flex4:Training from the Source, Volume 1》是一本非常适合初学者入门和进阶学习Flex4技术的专业书籍。它不仅涵盖了基本原理和实践技巧,还提供了大量实用示例和项目案例,帮助读者...

Global site tag (gtag.js) - Google Analytics