可以在lex的definition部分为正则表达式指定名称,后续用{name}方式引用。
%{
#include <stdlib.h>
#include <stdio.h>
int count = 0;
%}
digit [0-9]
number {digit}+
%%
{number} {
int n = atoi(yytext);
printf("number: %d\n", n);
count++;
}
quit {
return 0;
}
. ;
%%
int main()
{
yylex();
printf("number count: %d\n", count);
return 0;
}
运行结果:
abc 123 def 456 789 quit
number: 123
number: 456
number: 789
number count: 3