【发布时间】:2015-05-04 15:17:11
【问题描述】:
所以标题可能有点误导,但我想不出更好的表达方式。
基本上,我正在使用 cygwin/lex 编写一个词法扫描器。代码的一部分读取一个标记 /* 。它进入预定义状态 C_COMMENT,并在 C_COMMENT"/*" 时结束。下面是实际代码
"/*" {BEGIN(C_COMMENT); printf("%d: /*", linenum++);}
<C_COMMENT>"*/" { BEGIN(INITIAL); printf("*/\n"); }
<C_COMMENT>. {printf("%s",yytext);}
当注释在单行时代码有效,例如
/* * Example of comment */
它将打印当前行号,后面带有注释。但如果评论跨越多行,它就不起作用。将第 3 行改写成
<C_COMMENT>. {printf("%s",yytext);
printf("\n");}
不起作用。它将导致为评论中的每个字母打印 \n。我猜这与 C 没有字符串有关,或者我使用的状态错误。
希望有人能帮助我:)
另外,如果您需要任何其他信息,请提出,我会提供。
【问题讨论】:
标签: comments lex lexical-analysis