1

我在 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

4

1 回答 1

4

实际上有一个 Flex++ 项目,但它与原来的 Flex 是分开的:

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

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

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

于 2012-07-14T01:07:23.513 回答