1

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

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 意义。

<--ment: -->;comment 也是如此

显然它需要最后 3 个字符 (<--) 并将它们放在第一个 3(Com) 的顶部,但是为什么呢?

如果我只给它

;comment

输出是“评论:-->;评论<--”,只要我在其后插入新行,它就会再次混乱。我也尝试过使用 printf 和使用 ECHO,但结果是一样的。

帮助,谢谢!

4

1 回答 1

0

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

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

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

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

于 2012-05-09T20:34:52.203 回答