gpt4 book ai didi

c++ - Flex(Lex) 输出不正确

转载 作者:太空宇宙 更新时间:2023-11-04 14:16:43 24 4
gpt4 key购买 nike

所以我必须制作一个匹配数字、 float 、符号和注释的 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++,对我来说这毫无意义。

同样适用于 <--ment: -->;comment

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

只要我给它

;comment

输出是“Comment: -->;comment<--”,当我在它后面插入一个新行时,它又搞砸了。我也对 printf 和使用 ECHO 进行了相同的尝试,但结果是一样的。

帮忙,谢谢!

最佳答案

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

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

SYMBOLS         [a-zA-Z][^\,\.\"\(\) \n\t\r]*
COMMENTS ";"[^\n\r]*

无论如何,您可能希望将调试输出通过管道传输到一个文件中,以便您可以使用像 od 这样的工具按字符检查它。

关于c++ - Flex(Lex) 输出不正确,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10521696/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com