使用flex制作这样一个程序: 输入:给出一段C语言代码 输出:对其中每行代码进行分析,识别出其中的关键字KEY和标识符MARK (变量名与函数名),分隔符SEP ,常量NUM
示例:
代码:
%{
#include <stdio.h>
int yylineno = 1; // 记录行号
%}
ALPHA [a-zA-Z]
MARK {ALPHA}+[a-zA-Z0-9_]*
KEY if|else|int|double|return
DIGIT [1-9]+[0-9]*
SIGN "+"|"-"|"*"|"/"|"="
SEP "("|")"|"{"|"}"|";"|","
%%
{KEY} { printf("(%s, %s)\n", "KEY", yytext); }
{MARK} { printf("(%s, %s)\n", "MARK", yytext); }
{SEP} { printf("(%s, %s)\n", "SEP", yytext); }
{SIGN} { printf("(%s, %s)\n", "SIGN", yytext); }
{DIGIT} { printf("(%s, %s)\n", "DIGIT", yytext); }
\n { yylineno++; }
[ \t] ; // 忽略空格和制表符
. ; // 忽略其他字符
%%
int main() {
yylex();
return 0;
}
int yywrap()
{
return 1;
}