可以在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