| %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; |
| } |