2012-07-13 69 views
2

我在Debian Squeeze上运行,使用apt-get install flex安装flex/flex ++。真的有一个Flex ++扫描仪吗?

但是我注意到flex ++只是flex的一个sym链接。所以,真的存在一个“程序”flex ++生成c + +扫描仪,或者只是一个flex标志,我会切换?

另外,常见问题:互联网上的很多例子不能在flex或flex ++下“编译”。处理与刚刚输入的时候

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

%name Test 

这里有什么问题的Flex提供以下错误?

的Flex/Flex的++版本是2.5.35

+0

作为第一个猜测,我会检查,看看是否test.lex保存为一个一个UTF-8文件BOM。这绊倒了很多这些工具。 – 2012-07-14 01:12:09

+0

已经尝试过。 – JohnTortugo 2012-07-15 03:57:10

+1

本页有一个很好的例子:http://www.thebinaryidiot.com/archives/2010/03/06/flex-bison-cpp-example/我编译并在我的Debian Squeeze中运行良好。我已经安装了野牛apt-get install bison – JohnTortugo 2012-07-18 17:13:09

回答

4

其实是有一个Flex ++项目,但它是独立于原来的软硬度:

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

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

(BusyBox的使用这种技术有一个二进制表现为许多单独的程序,节省了空间。)

+0

你如何解释“无效字符”错误? – JohnTortugo 2012-07-15 03:58:03

+1

根据http://packages.debian.org/squeeze/flex上的软件包规范,flex in squeeze绝对是通常的http://flex.sf.net/。尝试使用%选项yyclass =“测试”而不是%名称。 – gavinb 2012-07-17 00:22:06