FLEX工具,FLEX电动工具
词法分析工具flex的安装及使用(Ubuntu)
在ubutu上安装 yacc的命令:
yylex()是由flex创建的扫描程序的入口点,调用yylex()启动或者重新开始扫描。Lex编写的yylex()从名为yyin的FILE *文件指针中读取字符。 如果未设置yyin,则默认为标准输入。 它输出到yyout,如果未设置默认为stdout。 还可以在yywrap()函数中修改yyin,该函数在文件末尾调用。 它允许打开另一个文件,并继续解析。如果是这种情况,将其返回0。如果要结束此文件的解析,将其返回1。一般来说,每次调用yylex()都会返回一个表示标记类型的整数值。
flex的结构如下:
一个*.l的文件里的结构大概如上,用%%分隔开来。分为三个区:
使用诸如Flex的词法生成器的好处是使得程序员可以集中考虑词法的特点;而不是具体如何实现词法分析。
参考:
Flex是什么
flex (fast lexical analyser generator) 是 Lex 的另一个替代品。它经常和自由软件 Bison语法分析器生成器 一起使用。Flex 最初由 Vern Paxson 于 1987 年用 C语言 写成。 Flex 手册里对 Flex 描述如下: “flex是一个生成扫描器的工具,能够识别文本中的词法模式。flex读入给定的输入文件,如果没有给定文件名的话,则从标准输入读取,从而获得一个关于需要生成的扫描器的描述。此描述叫做 规则,由正则表达式和 C代码对组成。flex 的输出是一个 C 代码文件--lex.yy.c--其中定义了 yylex() 函数。编译输出文件并且和 -lfl库链接生成一个可执行文件。当运行可执行文件的时候,它分析输入文件,为每一个正则表达式寻找匹配。当发现一个匹配时,它执行与此正则表达式相关的 C代码。” 一个相似的,用 C++语言 的词法分析器生成器是 flex++,包含在 flex 软件包里。 Flex 不是 GNU 工程,但是 GNU 为 Flex 写了手册。
flex是什么?说得具体点
flex通常是指Adobe Flex,是最初由Macromedia公司在2004年3月发布的,基于其专有的Macromedia Flash平台,它是涵盖了支持RIA(Rich Internet Applications)的开发和部署的一系列技术组合。flex的另一个意思是是一款生成扫描器的工具,能够识别文本中的词法模式。
Flex 是一个高效、免费的开源框架,可用于构建具有表现力的 Web 应用程序,这些应用程序利用 Adobe Flash Player和 Adobe AIR, 运行时跨浏览器、桌面和操作系统实现一致的部署。虽然只能使用 Flex 框架构建 Flex 应用程序,但Adobe Flash Builder?(之前称为 Adobe Flex? Builder?)软件可以通过智能编码、交互式遍历调试以及可视设计用户界面布局等功能加快开发。 使用 Flex 创建的 RIA 可运行于使用 Adobe Flash Player 软件的浏览器中,或在浏览器外运行于跨操作系统运行时 Adobe AIR? 上,它们可以跨所有主要浏览器、在桌面上实现一致的运行。连接到 Internet 的计算机中超过 98% 装有 Flash Player,这是一个企业级客户端运行时,它的高级矢量图形能处理要求最高、数据密集型应用程序,同时达到桌面应用程序的执行速度。通过利用 AIR,Flex 应用程序可以访问本地数据和系统资源。
Macromedia Flash是强大的矢量动画编辑工具,在做动画起家之后,Flash一直在谋求RIA(rich internet application)富客户端的霸主地位,最有影响的是,已经推出了面向对象的编程脚本ActionScript3.0,并且建立起类似于java swing的类库和相应component(组件)。Flex是通过java或者.net等非Flash途径,解释.mxml文件组织components,并生成相应的.swf文件。Flex的component和flash的component很相似,但是有所改进增强。目前Macromedia公司已经被ADOBE公司收购。当前(2011年11月)的flex版本为4.6。 运用Flash是完全可以做到flex的效果的,为什么还需要flex呢?这里面有两个原因: 1:为了迎合更多的developers(开发者)。Flash天生是为了designer(设计者)设计的,界面还有flash的动画概念和程序开发人员格格不入,为了吸引更多的jsp/asp/php等程序员,Macromedia推出了Flex,用非常简单的.mxml来描述界面给jsp/asp/php程序人员使用.(x/d)html非常相似,而且mxml更加规范化、标准化。 2:为了一个标准。大家一定听说过微软操作系统vista(后续的win7也是同一核心),在vista推出的同时微软也推出了新的语言xaml,一种界面描述语言,与之相应的就是smart client和flex非常相似的东西(即SilverLight)。Mxml和Xaml的也很相似… …这是人机交互技术的进步的重要体现,即内部逻辑与外部界面交互相分离。 Flex和j2ee/.net其实没什么关系,Macromedia用java做出来个应用把flash的技术融合到J2EE里面,再用.net的技术做出来个.net应用把flash技术融合到.net里面去;应该说flex解决了J2EE里面和.net里面最繁琐的问题那就是web 客户端的问题。
成因
传统的程序员在开发动画应用方面存在困难,Flex 平台最初就是因此而产生。Flex 试图通过提供一个程序员们已经熟知的工作流和编程模型来改善这个问题。 RIA相互之间关系
Flex 最初是作为一个J2EE(Java 2 Platform, Enterprise Edition)应用,或者可以说是JSP(JavaServer Pages)标签库而发布的。它可以把运行中的MXML(Flex标记语言)和ActionScript编译成FLASH应用程序(即二进制的SWF文件)。最新版的FLEX支持创建静态文件,该文件使用解释编译方式并且不需要购买服务器许可证就可以在线部署。 Flex的目标是让程序员更快更简单地开发RIA应用。在多层式开发模型中,Flex应用属于表现层。 Flex 采用GUI界面开发,使用基于XML的MXML语言。Flex 具有多种组件,可实现Web Services,远程对象,drag and drop,列排序,图表等功能;FLEX内建动画效果和其它简单互动界面等。相对于基于HTML的应用(如PHP、ASP、JSP、ColdFusion及CFMX等)在每个请求时都需要执行服务器端的模板,由于客户端只需要载入一次,FLEX应用程序的工作流被大大改善。FLEX的语言和文件结构也试图把应用程序的逻辑从设计中分离出来。 Flex 服务器也是客户端和XML Web Services及远程对象(Coldfusion CFCs,或Java类,等支持Action Message Format的其他对象)之间通讯的通路。 一般被认为是 Flex 替代品的是OpenLaszlo和AJAX技术。