xref: /linux/tools/perf/util/pmu.l (revision 1ac731c529cd4d6adbce134754b51ff7d822b145)
1 %option prefix="perf_pmu_"
2 %option reentrant
3 %option bison-bridge
4 
5 %{
6 #include <stdlib.h>
7 #include <linux/bitops.h>
8 #include "pmu.h"
9 #include "pmu-bison.h"
10 
11 char *perf_pmu_get_text(yyscan_t yyscanner);
12 YYSTYPE *perf_pmu_get_lval(yyscan_t yyscanner);
13 
value(yyscan_t scanner,int base)14 static int value(yyscan_t scanner, int base)
15 {
16 	YYSTYPE *yylval = perf_pmu_get_lval(scanner);
17 	char *text = perf_pmu_get_text(scanner);
18 	long num;
19 
20 	errno = 0;
21 	num = strtoul(text, NULL, base);
22 	if (errno)
23 		return PP_ERROR;
24 
25 	yylval->num = num;
26 	return PP_VALUE;
27 }
28 
29 %}
30 
31 num_dec         [0-9]+
32 
33 %%
34 
35 {num_dec}	{ return value(yyscanner, 10); }
36 config		{ return PP_CONFIG; }
37 -		{ return '-'; }
38 :		{ return ':'; }
39 ,		{ return ','; }
40 .		{ ; }
41 \n		{ ; }
42 
43 %%
44 
45 int perf_pmu_wrap(void *scanner __maybe_unused)
46 {
47 	return 1;
48 }
49