作者:荣鼎投资_379 | 来源:互联网 | 2023-07-01 11:37
最近课题遇到麻烦,不是要把flex作为一个工具来用,而是要写一个完整的词法分析器,从读入正则表达式,到DFA的转换,到状态图,在到最后的识别,,,,都需要重新写,因为我需要识别的数据帧格式不固定,,,
最近课题遇到麻烦,不是要把flex作为一个工具来用,而是要写一个完整的词法分析器,从读入正则表达式,到DFA的转换,到状态图,在到最后的识别,,,,都需要重新写,因为我需要识别的数据帧格式不固定,,,,
但是如果自己手工完全编写的话,太困难了,所以,如果有flex的源程序,就可以读懂后在上面修改,,,,,,
问题一:从那里可以找到flex的源程序,可以供我修改?最好有各个函数的详细说明?
问题二:那位大侠写过词法分析器,有源代码借小弟参考一下,定会感激涕零!
谢谢了啊!!!!!!!!!!!!!!1
6 个解决方案
啊,在说明一下,,,一般flex是作为一个词法分析器的生成器适用,也就是说,用户按照flex的源文件(可称为配置文件)的格式写好,执行flex,就可以读入改配置文件,生成相应的词法分析器,问题在于,如果配置文件改变,就得重新用flex生成一次,所以,,,想找到flex的源程序,修改后可以动态读入配置文件,动态生成词法分析器?????????
各位大虾,,,,尽快出手吧,,,,
谢谢,,,,
如有不便,请直接联系我luhw@grad.buct.edu.cn
1.http://www.gnu.org/software/flex/
2.用flex写lexical analyzer,好像是编译器课必修的。flex的manual蛮容易懂得:http://www.gnu.org/software/flex/manual/
哦,anyway,蛮复杂的,那么就等高手吧,我不行。
楼主的目标就错了,FLex是词法分析器的生成工具,相当于一个把词法规则文件翻译成C程序的编译器.你要改它,就不是一天两天的事了.
词法分析器是用来分析源程序的,它把源程序识别为不同的TOKENS.正则表达式只是我们在构建词法分析器时用的一种手段(工具),词法分析器本身并不用读什么正则表达式,除非你想写的不是一个词法分析器,而是一个像FLex一样的词法分析器生成工具.
一般,手工写词法分析器的步骤是这样的:先写出你的词法规则(正则表达式),再手工分析规则,建立有限自动机,然后就可以编码实现有限自动机,这样就完成了一个词法分析器.
FLex只是把这些手工要做的工作自动化了.
哦,那是我理解错你的意思了.
不过无论如何,你还是要先手工做一个词法分析器,用来分析正则表达式.
改Flex不是很现实,如果你要的东西不是太复杂,还是自己写得好.
为了简化正则表达式分析的工作,你最好设计一套简化的,方便分析的正则表达式的语法.只要够用就行了,因为分析工作的复杂度是程几何级数上升的.
祝你成功啦!