Lex/Flex - 扫描 EOF 字符

17

其他人曾遇到过我正在经历的下列问题,但我找不到任何人报告了解决方案...即如何让Flex识别EOF(文件结尾)。我需要Flex找到EOF并返回一个标记,以表示它已找到文件结尾,这样它可以告诉Yacc/Bison已经到达输入源文件的末尾,并报告成功的解析。

请注意,此问题与此问题不同,因为它涉及到Lex/Flex。

任何帮助都将是非常棒的。谢谢。


1
这里有些问题。通常情况下,您不需要这样做。只需将目标符号写入语法中即可解决所有问题。 - user207421
@EJP:您能否给出一个小例子?我是Flex/Bison的新手。如何用简单的语法规则实现这一点?谢谢。 - Andry
@EJP,当从真实键盘输入时,Ctrl-Z会传递给程序,导致语法错误。我无法使用/x1a之类的东西捕获它,但<<EOF>>可以起作用。 - Sam Hobbs
1个回答

34

Flex有一个<<EOF>>模式,仅匹配文件末尾。 你可以像下面这样向解析器返回某个指示文件结束的标记。

<<EOF>>     return END_OF_FILE;

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接