%{
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int k;
%}
%option noyywrap
%%
0|[1-9]* {
k = atoi(yytext);
printf("Found the Number %d", k);
}
[a-zA-Z][a-zA-Z0-9]* {printf("Found the Identifier %s", yytext); }
%%
void main(int argc, char *argv[])
{
char infile[20];
strcpy(infile, argv[1]);
yyin = fopen(infile, "r");
if(yyin == NULL)
{
printf("open failed\n");
}
else
{
yylex();
}
system("pause");
}
答案 0 :(得分:1)
不属于任何图案的字符串,字符串将打印到标准输出。
所以改变如下
%%
0|[1-9]* {
k = atoi(yytext);
printf("Found the Number %d", k);
}
[a-zA-Z][a-zA-Z0-9]* {printf("Found the Identifier %s\n", yytext); }
. ;
"\n" ;
%%