弹性(Lex)输出不正确

Flex(Lex) output not right

本文关键字:输出 不正确 Lex 弹性      更新时间:2023-10-16

所以我必须制作一个匹配数字、浮点数、符号和注释的 flex 程序。正则表达式位于文件中。

flex.l 文件 http://pastebin.com/iuJ8WW6m

奇怪的部分是输出。

假设我给它:

0 0.0 323 323.4 1.3.4
variable another_variable
"string"
;comment
69

这是输出:

Number: -->0<--
Float: -->0.0<--
Number: -->323<--
Float: -->323.4<--
Float: -->1.3<--
Number: -->4<--
Symbol: -->variable<--
<--bol: -->another_variable
String: -->"string"<--
<--ment: -->;comment
Number: -->69<--

为什么"another_variable"处的输出是这样的<--bol: -->another_variable ?我知道一些c/c ++,对我来说这是0有意义的。

<也是如此:>;评论

显然,它采用最后 3 个字符 (<--) 并将它们放在前 3(Com) 的顶部,但为什么呢?

如果我只给它

;comment

输出是"注释:-->;注释<--",一旦我在它后面插入一个新行,它就会再次搞砸。我也尝试了相同的printf和使用ECHO,但结果是一样的。

救命,谢谢!

我怀疑识别的注释或符号后面的换行符序列的一部分正在被捕获到 yytext 中,因此在您的调试跟踪中回显。

尝试将 \r 添加到字符类中,如下所示:

SYMBOLS         [a-zA-Z][^,."() ntr]*
COMMENTS        ";"[^nr]*

在任何情况下,您可能希望将调试输出通过管道传输到文件中,以便可以使用 od 等工具按字符检查它。