【发布时间】:2014-12-28 12:00:32
【问题描述】:
我有这个 lex 文件:
COMMENT \#.*\n
SPACE [\x20\n\r\t]
L [a-zA-Z_]
D [0-9]
%%
{COMMENT} |
{SPACE}+ ;
{L}({L}|{D})* { printf("identifier token: %s\n", yytext); return 1; }
-?{D}* { printf("int number token: %s\n", yytext); return 1; }
.* { printf("invalid token: %s\n", yytext); return -1; }
%%
#include <stdio.h>
int yywrap() {
return 1;
}
int main() {
while(yylex() > 0) {};
return 0;
}
我有,比如说,两个文件。
案例一:
#comentario de prueba
print nestor
案例 2:
#comentario de mierda
print
使用这样的 lex 定义,我得到一个错误:“invalid token: print nestor”对于第一种情况,而第二种情况返回没有错误。
我做错了什么?这里的意图是第一种情况产生标记: (spaces)(identifier)(spaces)(identifier)
【问题讨论】:
标签: lex