Clean-up: consumer: consumer_metadata_cache_write is not const-correct
[lttng-tools.git] / src / lib / lttng-ctl / filter / filter-lexer.l
CommitLineData
953192ba
MD
1%{
2/*
3 * filter-lexer.l
4 *
5 * LTTng filter lexer
6 *
ab5be9fa 7 * Copyright 2012 Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
953192ba 8 *
ab5be9fa 9 * SPDX-License-Identifier: LGPL-2.1-only
953192ba 10 *
953192ba
MD
11 */
12
13#include <stdio.h>
14#include "filter-ast.h"
15#include "filter-parser.h"
16
953192ba
MD
17static void yyunput (int c, register char * yy_bp , yyscan_t yyscanner)
18 __attribute__((unused));
19static int input (yyscan_t yyscanner) __attribute__((unused));
20
21%}
22
23%x comment_ml comment_sl string_lit char_const
24%option reentrant yylineno noyywrap bison-bridge
25%option extra-type="struct filter_parser_ctx *"
26 /* bison-locations */
e90d8561
MD
27
28D [0-9]
29L [a-zA-Z_]
30H [a-fA-F0-9]
31E ([Ee][+-]?{D}+)
32P ([Pp][+-]?{D}+)
33FS (f|F|l|L)
34IS ((u|U)|(u|U)?(l|L|ll|LL)|(l|L|ll|LL)(u|U))
35
953192ba
MD
36INTEGER_SUFFIX [ \n\t]*(U|UL|ULL|LU|LLU|Ul|Ull|lU|llU|u|uL|uLL|Lu|LLu|ul|ull|lu|llu)
37DIGIT [0-9]
38NONDIGIT [a-zA-Z_]
39HEXDIGIT [0-9A-Fa-f]
40OCTALDIGIT [0-7]
41UCHARLOWERCASE \\u{HEXDIGIT}{4}
42UCHARUPPERCASE \\U{HEXDIGIT}{8}
bff988fa 43ID_EXTRA_CHAR (":")
a1f68b22 44ID_NONDIGIT {NONDIGIT}|{UCHARLOWERCASE}|{UCHARUPPERCASE}|{ID_EXTRA_CHAR}
953192ba
MD
45IDENTIFIER {ID_NONDIGIT}({ID_NONDIGIT}|{DIGIT})*
46ESCSEQ \\(\'|\"|\?|\\|a|b|f|n|r|t|v|{OCTALDIGIT}{1,3}|u{HEXDIGIT}{4}|U{HEXDIGIT}{8}|x{HEXDIGIT}+)
47%%
48
49 /*
50 * Using start conditions to deal with comments
51 * and strings.
52 */
53
54"/*" BEGIN(comment_ml);
55<comment_ml>[^*\n]* /* eat anything that's not a '*' */
56<comment_ml>"*"+[^*/\n]* /* eat up '*'s not followed by '/'s */
57<comment_ml>\n ++yylineno;
58<comment_ml>"*"+"/" BEGIN(INITIAL);
59
60"//" BEGIN(comment_sl);
61<comment_sl>[^\n]*\n ++yylineno; BEGIN(INITIAL);
62
63L\' BEGIN(char_const); return CHARACTER_CONSTANT_START;
64\' BEGIN(char_const); return CHARACTER_CONSTANT_START;
65<char_const>\' BEGIN(INITIAL); return SQUOTE;
66
67L\" BEGIN(string_lit); return STRING_LITERAL_START;
68\" BEGIN(string_lit); return STRING_LITERAL_START;
69<string_lit>\" BEGIN(INITIAL); return DQUOTE;
70
71<char_const,string_lit>ESCSEQ return ESCSEQ;
72<char_const,string_lit>\n ; /* ignore */
73<char_const,string_lit>. setstring(yyextra, yylval, yytext); return CHAR_STRING_TOKEN;
74
e90d8561
MD
75
760[xX]{H}+{IS}? setstring(yyextra, yylval, yytext); return HEXADECIMAL_CONSTANT;
770[0-7]*{IS}? setstring(yyextra, yylval, yytext); return OCTAL_CONSTANT;
78[1-9]{D}*{IS}? setstring(yyextra, yylval, yytext); return DECIMAL_CONSTANT;
79
80{D}+{E}{FS}? setstring(yyextra, yylval, yytext); return FLOAT_CONSTANT;
81{D}*"."{D}+{E}?{FS}? setstring(yyextra, yylval, yytext); return FLOAT_CONSTANT;
82{D}+"."{D}*{E}?{FS}? setstring(yyextra, yylval, yytext); return FLOAT_CONSTANT;
830[xX]{H}+{P}{FS}? setstring(yyextra, yylval, yytext); return FLOAT_CONSTANT;
840[xX]{H}*"."{H}+{P}?{FS}? setstring(yyextra, yylval, yytext); return FLOAT_CONSTANT;
850[xX]{H}+"."{H}*{P}?{FS}? setstring(yyextra, yylval, yytext); return FLOAT_CONSTANT;
86
953192ba
MD
87"[" return LSBRAC;
88"]" return RSBRAC;
89"(" return LPAREN;
90")" return RPAREN;
91"{" return LBRAC;
92"}" return RBRAC;
93"->" return RARROW;
94
95"*" return STAR;
96"+" return PLUS;
97"-" return MINUS;
98
99"%" return MOD_OP;
100"/" return DIV_OP;
101">>" return RIGHT_OP;
102"<<" return LEFT_OP;
103
104"==" return EQ_OP;
105"!=" return NE_OP;
106"<=" return LE_OP;
107">=" return GE_OP;
108"<" return LT_OP;
109">" return GT_OP;
110"&&" return AND_OP;
111"||" return OR_OP;
112"!" return NOT_OP;
113
114":=" return ASSIGN;
115":" return COLON;
116";" return SEMICOLON;
117"..." return DOTDOTDOT;
118"." return DOT;
119"=" return EQUAL;
120"," return COMMA;
121"^" return XOR_BIN;
122"&" return AND_BIN;
123"|" return OR_BIN;
124"~" return NOT_BIN;
586dc72f 125"$"{IDENTIFIER} printf_debug("<GLOBAL_IDENTIFIER %s>\n", yytext); setstring(yyextra, yylval, yytext); return GLOBAL_IDENTIFIER;
953192ba
MD
126{IDENTIFIER} printf_debug("<IDENTIFIER %s>\n", yytext); setstring(yyextra, yylval, yytext); return IDENTIFIER;
127[ \t\n]+ ; /* ignore */
128. return ERROR;
129%%
This page took 0.0473 seconds and 4 git commands to generate.