xref: /linux/tools/perf/util/pmu.l (revision 4c630f307455c06f99bdeca7f7a1ab5318604fe0)
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 
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