【问题标题】:Is there really a Flex++ Scanner?真的有 Flex++ 扫描仪吗?
【发布时间】:2012-07-13 22:31:27
【问题描述】:

我在 Debian Squeeze 上运行,我使用 apt-get install flex 安装了 flex/flex++。

但是我注意到 flex++ 只是 flex 的符号链接。那么,真的存在一个生成 c++ 扫描器的“程序”flex++,还是只是一个我应该切换的 flex 标志?

还有一个通病:网上很多例子都不能在 flex 或 flex++ 下“编译”。 Flex 报如下错误:

test.lex:1: invalid character: %
...

当处理输入时:

%name Test

这里有什么问题?

Flex/Flex++ 版本为 2.5.35

【问题讨论】:

  • 作为第一个猜测,我会检查 test.lex 是否保存为带有 BOM 的 UTF-8 文件。很多这样的工具都会被绊倒。
  • 这个页面中有一个很好的例子:thebinaryidiot.com/archives/2010/03/06/flex-bison-cpp-example 我在我的 Debian Squeeze 中编译并运行良好。我已经用 apt-get install bison 安装了野牛

标签: c++ bison yacc lex flex++


【解决方案1】:

其实有一个Flex++项目,但是和原来的Flex是分开的:

Flex 确实支持生成与 C++ 一起使用的扫描仪代码,但它被归类为实验性的(尽管它已经存在了很长一段时间):

符号链接的解释是,一些程序会根据它们被调用的方式修改它们的行为。出于兼容性原因,他们检查argv[0] 并查看可执行文件名称。例如,当以flex++ 运行时,它可以启用-+ 标志以支持C++。

(BusyBox 使用这种技术让一个二进制文件像许多单独的程序一样运行,从而节省空间。)

【讨论】:

猜你喜欢
  • 1970-01-01
  • 2018-06-23
  • 2020-11-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多