X-Git-Url: https://git.lttng.org/?a=blobdiff_plain;f=src%2Flib%2Flttng-ctl%2Ffilter%2Ffilter-parser.y;h=29e2866a7b0990979703ad5bc0a7434786e20c91;hb=9039edd4983b46fc45dae7ed42396ef7f7e5635a;hp=6250054a0eb788a59f7dbffe42bf9e32d0f9ffa4;hpb=a187da1ab55a90f95fed8a29ed232b344f0d32b2;p=lttng-tools.git diff --git a/src/lib/lttng-ctl/filter/filter-parser.y b/src/lib/lttng-ctl/filter/filter-parser.y index 6250054a0..29e2866a7 100644 --- a/src/lib/lttng-ctl/filter/filter-parser.y +++ b/src/lib/lttng-ctl/filter/filter-parser.y @@ -40,9 +40,9 @@ LTTNG_HIDDEN int filter_parser_debug = 0; LTTNG_HIDDEN -int yyparse(struct filter_parser_ctx *parser_ctx); +int yyparse(struct filter_parser_ctx *parser_ctx, yyscan_t scanner); LTTNG_HIDDEN -int yylex(union YYSTYPE *yyval, struct filter_parser_ctx *parser_ctx); +int yylex(union YYSTYPE *yyval, yyscan_t scanner); LTTNG_HIDDEN int yylex_init_extra(struct filter_parser_ctx *parser_ctx, yyscan_t * ptr_yy_globals); LTTNG_HIDDEN @@ -188,7 +188,7 @@ static struct filter_node *make_op_node(struct filter_parser_ctx *scanner, } LTTNG_HIDDEN -void yyerror(struct filter_parser_ctx *parser_ctx, const char *str) +void yyerror(struct filter_parser_ctx *parser_ctx, yyscan_t scanner, const char *str) { fprintf(stderr, "error %s\n", str); } @@ -201,7 +201,7 @@ int yywrap(void) #define parse_error(parser_ctx, str) \ do { \ - yyerror(parser_ctx, YY_("parse error: " str "\n")); \ + yyerror(parser_ctx, parser_ctx->scanner, YY_("parse error: " str "\n")); \ YYERROR; \ } while (0) @@ -238,7 +238,7 @@ static void filter_ast_free(struct filter_ast *ast) LTTNG_HIDDEN int filter_parser_ctx_append_ast(struct filter_parser_ctx *parser_ctx) { - return yyparse(parser_ctx); + return yyparse(parser_ctx, parser_ctx->scanner); } LTTNG_HIDDEN @@ -301,7 +301,8 @@ void filter_parser_ctx_free(struct filter_parser_ctx *parser_ctx) %define api.pure /* %locations */ %parse-param {struct filter_parser_ctx *parser_ctx} -%lex-param {struct filter_parser_ctx *parser_ctx} +%parse-param {yyscan_t scanner} +%lex-param {yyscan_t scanner} %start translation_unit %token CHARACTER_CONSTANT_START SQUOTE STRING_LITERAL_START DQUOTE %token ESCSEQ CHAR_STRING_TOKEN @@ -313,7 +314,7 @@ void filter_parser_ctx_free(struct filter_parser_ctx *parser_ctx) %token ASSIGN COLON SEMICOLON DOTDOTDOT DOT EQUAL COMMA %token XOR_BIN AND_BIN OR_BIN NOT_BIN -%token IDENTIFIER +%token IDENTIFIER GLOBAL_IDENTIFIER %token ERROR %union { @@ -387,6 +388,13 @@ primary_expression $$->u.expression.type = AST_EXP_IDENTIFIER; $$->u.expression.u.identifier = yylval.gs->s; } + | GLOBAL_IDENTIFIER + { + $$ = make_node(parser_ctx, NODE_EXPRESSION); + $$->u.expression.type = AST_EXP_GLOBAL_IDENTIFIER; + $$->u.expression.u.identifier = yylval.gs->s; + } + | DECIMAL_CONSTANT { $$ = make_node(parser_ctx, NODE_EXPRESSION);