X-Git-Url: https://git.lttng.org/?p=lttng-tools.git;a=blobdiff_plain;f=src%2Flib%2Flttng-ctl%2Ffilter-lexer.l;h=de74e7a09715c11206d207b519f3c3e0dfcc53c0;hp=5853b000380ab23c69418152fa38d4ef3c67c556;hb=e90d856165cc1110ac0d4c657a001c47236d6de8;hpb=53a80697a772bc2e260e3dff006f910be6709f04 diff --git a/src/lib/lttng-ctl/filter-lexer.l b/src/lib/lttng-ctl/filter-lexer.l index 5853b0003..de74e7a09 100644 --- a/src/lib/lttng-ctl/filter-lexer.l +++ b/src/lib/lttng-ctl/filter-lexer.l @@ -33,6 +33,15 @@ static int input (yyscan_t yyscanner) __attribute__((unused)); %option reentrant yylineno noyywrap bison-bridge %option extra-type="struct filter_parser_ctx *" /* bison-locations */ + +D [0-9] +L [a-zA-Z_] +H [a-fA-F0-9] +E ([Ee][+-]?{D}+) +P ([Pp][+-]?{D}+) +FS (f|F|l|L) +IS ((u|U)|(u|U)?(l|L|ll|LL)|(l|L|ll|LL)(u|U)) + INTEGER_SUFFIX [ \n\t]*(U|UL|ULL|LU|LLU|Ul|Ull|lU|llU|u|uL|uLL|Lu|LLu|ul|ull|lu|llu) DIGIT [0-9] NONDIGIT [a-zA-Z_] @@ -71,6 +80,18 @@ L\" BEGIN(string_lit); return STRING_LITERAL_START; \n ; /* ignore */ . setstring(yyextra, yylval, yytext); return CHAR_STRING_TOKEN; + +0[xX]{H}+{IS}? setstring(yyextra, yylval, yytext); return HEXADECIMAL_CONSTANT; +0[0-7]*{IS}? setstring(yyextra, yylval, yytext); return OCTAL_CONSTANT; +[1-9]{D}*{IS}? setstring(yyextra, yylval, yytext); return DECIMAL_CONSTANT; + +{D}+{E}{FS}? setstring(yyextra, yylval, yytext); return FLOAT_CONSTANT; +{D}*"."{D}+{E}?{FS}? setstring(yyextra, yylval, yytext); return FLOAT_CONSTANT; +{D}+"."{D}*{E}?{FS}? setstring(yyextra, yylval, yytext); return FLOAT_CONSTANT; +0[xX]{H}+{P}{FS}? setstring(yyextra, yylval, yytext); return FLOAT_CONSTANT; +0[xX]{H}*"."{H}+{P}?{FS}? setstring(yyextra, yylval, yytext); return FLOAT_CONSTANT; +0[xX]{H}+"."{H}*{P}?{FS}? setstring(yyextra, yylval, yytext); return FLOAT_CONSTANT; + "[" return LSBRAC; "]" return RSBRAC; "(" return LPAREN; @@ -109,9 +130,6 @@ L\" BEGIN(string_lit); return STRING_LITERAL_START; "&" return AND_BIN; "|" return OR_BIN; "~" return NOT_BIN; -[1-9]{DIGIT}*{INTEGER_SUFFIX}? setstring(yyextra, yylval, yytext); return DECIMAL_CONSTANT; -0{OCTALDIGIT}*{INTEGER_SUFFIX}? setstring(yyextra, yylval, yytext); return OCTAL_CONSTANT; -0[xX]{HEXDIGIT}+{INTEGER_SUFFIX}? setstring(yyextra, yylval, yytext); return HEXADECIMAL_CONSTANT; {IDENTIFIER} printf_debug("\n", yytext); setstring(yyextra, yylval, yytext); return IDENTIFIER; [ \t\n]+ ; /* ignore */ . return ERROR;