热门标签 | HotTags
当前位置:  开发笔记 > 后端 > 正文

急求-关于flex的问题

最近课题遇到麻烦,不是要把flex作为一个工具来用,而是要写一个完整的词法分析器,从读入正则表达式,到DFA的转换,到状态图,在到最后的识别,,,,都需要重新写,因为我需要识别的数据帧格式不固定,,,
最近课题遇到麻烦,不是要把flex作为一个工具来用,而是要写一个完整的词法分析器,从读入正则表达式,到DFA的转换,到状态图,在到最后的识别,,,,都需要重新写,因为我需要识别的数据帧格式不固定,,,,
但是如果自己手工完全编写的话,太困难了,所以,如果有flex的源程序,就可以读懂后在上面修改,,,,,,
问题一:从那里可以找到flex的源程序,可以供我修改?最好有各个函数的详细说明?
问题二:那位大侠写过词法分析器,有源代码借小弟参考一下,定会感激涕零!

谢谢了啊!!!!!!!!!!!!!!1

6 个解决方案

#1


啊,在说明一下,,,一般flex是作为一个词法分析器的生成器适用,也就是说,用户按照flex的源文件(可称为配置文件)的格式写好,执行flex,就可以读入改配置文件,生成相应的词法分析器,问题在于,如果配置文件改变,就得重新用flex生成一次,所以,,,想找到flex的源程序,修改后可以动态读入配置文件,动态生成词法分析器?????????
各位大虾,,,,尽快出手吧,,,,
谢谢,,,,
如有不便,请直接联系我luhw@grad.buct.edu.cn

#2


1.http://www.gnu.org/software/flex/
2.用flex写lexical analyzer,好像是编译器课必修的。flex的manual蛮容易懂得:http://www.gnu.org/software/flex/manual/

#3


哦,anyway,蛮复杂的,那么就等高手吧,我不行。

#4


楼主的目标就错了,FLex是词法分析器的生成工具,相当于一个把词法规则文件翻译成C程序的编译器.你要改它,就不是一天两天的事了.
词法分析器是用来分析源程序的,它把源程序识别为不同的TOKENS.正则表达式只是我们在构建词法分析器时用的一种手段(工具),词法分析器本身并不用读什么正则表达式,除非你想写的不是一个词法分析器,而是一个像FLex一样的词法分析器生成工具.
一般,手工写词法分析器的步骤是这样的:先写出你的词法规则(正则表达式),再手工分析规则,建立有限自动机,然后就可以编码实现有限自动机,这样就完成了一个词法分析器.
FLex只是把这些手工要做的工作自动化了.

#5


to:redleaves
其实我的目的就是这样,我要把手工写词法分析器的步骤自动化,就跟flex差不多,flex不就是读入形如“正则表达式       动作“这样的原文件么?
我也是要读入不同的正则表达式,,,然后自动建立有限自动机,,,,

不知道有何高见?

#6


哦,那是我理解错你的意思了.
不过无论如何,你还是要先手工做一个词法分析器,用来分析正则表达式.
改Flex不是很现实,如果你要的东西不是太复杂,还是自己写得好.
为了简化正则表达式分析的工作,你最好设计一套简化的,方便分析的正则表达式的语法.只要够用就行了,因为分析工作的复杂度是程几何级数上升的.
祝你成功啦!

推荐阅读
  • 本文详细介绍了Java编程语言中的核心概念和常见面试问题,包括集合类、数据结构、线程处理、Java虚拟机(JVM)、HTTP协议以及Git操作等方面的内容。通过深入分析每个主题,帮助读者更好地理解Java的关键特性和最佳实践。 ... [详细]
  • 本文详细介绍了如何在Linux系统上安装和配置Smokeping,以实现对网络链路质量的实时监控。通过详细的步骤和必要的依赖包安装,确保用户能够顺利完成部署并优化其网络性能监控。 ... [详细]
  • 在当前众多持久层框架中,MyBatis(前身为iBatis)凭借其轻量级、易用性和对SQL的直接支持,成为许多开发者的首选。本文将详细探讨MyBatis的核心概念、设计理念及其优势。 ... [详细]
  • 360SRC安全应急响应:从漏洞提交到修复的全过程
    本文详细介绍了360SRC平台处理一起关键安全事件的过程,涵盖从漏洞提交、验证、排查到最终修复的各个环节。通过这一案例,展示了360在安全应急响应方面的专业能力和严谨态度。 ... [详细]
  • 本文深入探讨了Linux系统中网卡绑定(bonding)的七种工作模式。网卡绑定技术通过将多个物理网卡组合成一个逻辑网卡,实现网络冗余、带宽聚合和负载均衡,在生产环境中广泛应用。文章详细介绍了每种模式的特点、适用场景及配置方法。 ... [详细]
  • PyCharm下载与安装指南
    本文详细介绍如何从官方渠道下载并安装PyCharm集成开发环境(IDE),涵盖Windows、macOS和Linux系统,同时提供详细的安装步骤及配置建议。 ... [详细]
  • Explore a common issue encountered when implementing an OAuth 1.0a API, specifically the inability to encode null objects and how to resolve it. ... [详细]
  • 本文详细介绍了如何解决Uploadify插件在Internet Explorer(IE)9和10版本中遇到的点击失效及JQuery运行时错误问题。通过修改相关JavaScript代码,确保上传功能在不同浏览器环境中的一致性和稳定性。 ... [详细]
  • 本文将介绍如何使用 Go 语言编写和运行一个简单的“Hello, World!”程序。内容涵盖开发环境配置、代码结构解析及执行步骤。 ... [详细]
  • PHP 5.2.5 安装与配置指南
    本文详细介绍了 PHP 5.2.5 的安装和配置步骤,帮助开发者解决常见的环境配置问题,特别是上传图片时遇到的错误。通过本教程,您可以顺利搭建并优化 PHP 运行环境。 ... [详细]
  • 本文介绍了在使用Visual Studio 2015进行项目开发时,遇到类向导弹出“异常来自 HRESULT:0x8CE0000B”错误的解决方案。通过具体步骤和实践经验,帮助开发者快速排查并解决问题。 ... [详细]
  • CentOS7源码编译安装MySQL5.6
    2019独角兽企业重金招聘Python工程师标准一、先在cmake官网下个最新的cmake源码包cmake官网:https:www.cmake.org如此时最新 ... [详细]
  • 本文介绍了如何使用JQuery实现省市二级联动和表单验证。首先,通过change事件监听用户选择的省份,并动态加载对应的城市列表。其次,详细讲解了使用Validation插件进行表单验证的方法,包括内置规则、自定义规则及实时验证功能。 ... [详细]
  • 使用 Azure Service Principal 和 Microsoft Graph API 获取 AAD 用户列表
    本文介绍了一段通用代码示例,该代码不仅能够操作 Azure Active Directory (AAD),还可以通过 Azure Service Principal 的授权访问和管理 Azure 订阅资源。Azure 的架构可以分为两个层级:AAD 和 Subscription。 ... [详细]
  • 在Ubuntu 16.04 LTS上配置Qt Creator开发环境
    本文详细介绍了如何在Ubuntu 16.04 LTS系统中安装和配置Qt Creator,涵盖了从下载到安装的全过程,并提供了常见问题的解决方案。 ... [详细]
author-avatar
荣鼎投资_379
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有