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