2011-07-07 54 views
10

其他人遇到以下问题,但我无法找到任何已报告解决方案的人..让Flex找到EOF(文件末尾)。我需要Flex来查找EOF并返回一个表明它已经找到它的标记,这样它可以告诉Yacc/Bison它已经到达输入源文件的末尾并且可以报告成功的解析。Lex/Flex - 扫描EOF字符

请注意,this question是不一样的,因为这是关于Lex/Flex。

任何帮助都会很棒。谢谢。

+1

这里有点问题。你通常不需要这样做。只要在你的语法中写入一个目标符号,这一切都会被照顾到。 – EJP

+0

@EJP:你能举个小例子吗?我是Flex/Bison的新手。如何实现这个作为一个简单的语法规则? Thankyou – Andry

+0

@EJP,当从真正的键盘输入时,Ctrl-Z被传递给程序,导致语法错误。我无法使用/ x1a,但使用<>作品。 – user34660

回答

21

Flex有 <<EOF>> 只匹配文件结束的模式。 可能你可以返回一些表示文件结束的令牌给解析器 ,如下所示。

<<EOF>>  return END_OF_FILE;