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