yacc&lex-命名正则表达式

2/10/2017来源:ASP.NET技巧人气:1324

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