| %option prefix="perf_pmu_" | 
 | %option reentrant | 
 | %option bison-bridge | 
 |  | 
 | %{ | 
 | #include <stdlib.h> | 
 | #include <linux/bitops.h> | 
 | #include "pmu.h" | 
 | #include "pmu-bison.h" | 
 |  | 
 | char *perf_pmu_get_text(yyscan_t yyscanner); | 
 | YYSTYPE *perf_pmu_get_lval(yyscan_t yyscanner); | 
 |  | 
 | static int value(yyscan_t scanner, int base) | 
 | { | 
 | 	YYSTYPE *yylval = perf_pmu_get_lval(scanner); | 
 | 	char *text = perf_pmu_get_text(scanner); | 
 | 	long num; | 
 |  | 
 | 	errno = 0; | 
 | 	num = strtoul(text, NULL, base); | 
 | 	if (errno) | 
 | 		return PP_ERROR; | 
 |  | 
 | 	yylval->num = num; | 
 | 	return PP_VALUE; | 
 | } | 
 |  | 
 | %} | 
 |  | 
 | num_dec         [0-9]+ | 
 |  | 
 | %% | 
 |  | 
 | {num_dec}	{ return value(yyscanner, 10); } | 
 | config		{ return PP_CONFIG; } | 
 | -		{ return '-'; } | 
 | :		{ return ':'; } | 
 | ,		{ return ','; } | 
 | .		{ ; } | 
 | \n		{ ; } | 
 |  | 
 | %% | 
 |  | 
 | int perf_pmu_wrap(void *scanner __maybe_unused) | 
 | { | 
 | 	return 1; | 
 | } |