Flex - 快速扫描仪发生器。为什么?

时间:2017-02-17 06:34:20

标签: c flex-lexer lex

我想知道,据我所知,为什么Flex一直用到现在?

如果现在没有使用它并且之前已经使用过,那么它提供的优势还在于直接编写C代码有什么优势呢?

这是我读到的关于Flex的内容

  

它包含正则表达式的文本文件以及要执行的操作       在每个表达式匹配时采用。它生成一个包含C源代码的输出文件       定义函数yylex,它是对应于的DFA的表驱动实现       输入文件的正则表达式。然后使用C编译器编译Flex输出文件       获得可执行文件。

Flex的需求是什么?它比直接编写C程序更好吗? 在执行或代码编写速度方面更好?

我指的是this作为我的来源

1 个答案:

答案 0 :(得分:4)

与手动编写状态机相比,生成带有flex的词法扫描器肯定需要更少的代码。阅读flex规范并了解其识别的令牌也更容易。

虽然可以手动优化扫描仪并在执行时间方面优化,但很少使用程序员时间。在大多数解析问题中,词法扫描不是瓶颈,并且小的性能改进将是不可见的。此外,像正则表达式库这样的工具的天真使用可能会产生更慢且更难维护的代码。

在过去20年中,C语言没有任何变化,这会影响上述任何一种陈述。

以上所有内容都取决于程序员对如何使用该工具有所了解,以及它是哪些问题并且不适合。与任何工具集一样。