所以我必须制作一个与数字,浮点数,符号和注释匹配的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”的输出像这样&lt; - bol: - &gt; another_variable? 我知道一些c / c ++,对我来说这是有道理的。
同样适用于&lt; - ment: - &gt ;;评论
显然它需要最后3个字符(&lt; - )并将它们置于前3个(Com)之上,但为什么呢?
如果我只给它
;comment
输出是“评论: - &gt ;;评论&lt; - ”,一旦我在它之后插入一个新行,它就会再次混乱。我也尝试使用printf和使用ECHO,但结果是一样的。
帮助,谢谢!
答案 0 :(得分:0)
我怀疑在识别的注释或符号后面的换行符序列的一部分被捕获到yytext中,因此在调试跟踪中回显。
尝试将\ r添加到字符类中,如下所示:
SYMBOLS [a-zA-Z][^\,\.\"\(\) \n\t\r]*
COMMENTS ";"[^\n\r]*
在任何情况下,您可能希望将调试输出传递到文件中,以便您可以使用od之类的工具以字符方式检查它。