Remove leading underscores from identifiers directly in lexer
[babeltrace.git] / formats / ctf / metadata / ctf-lexer.l
index f5ff02f1aa17084b9b1c1e920d6317e7194b3252..322832bedc91ccdcde55af8caba7cdac43d17a2f 100644 (file)
@@ -30,6 +30,15 @@ static void yyunput (int c, register char * yy_bp , yyscan_t yyscanner)
        __attribute__((unused));
 static int input (yyscan_t yyscanner) __attribute__((unused));
 
        __attribute__((unused));
 static int input (yyscan_t yyscanner) __attribute__((unused));
 
+static inline
+const char *rem_(const char *str)
+{
+       if (str[0] == '_')
+               return &str[1];
+       else
+               return str;
+}
+
 %}
 
 %x comment_ml comment_sl string_lit char_const
 %}
 
 %x comment_ml comment_sl string_lit char_const
@@ -122,7 +131,7 @@ _Imaginary                  setstring(yyextra, yylval, yytext); return _IMAGINARY;
 [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;
 [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("<IDENTIFIER %s>\n", yytext); setstring(yyextra, yylval, yytext); if (is_type(yyextra, yytext)) return ID_TYPE; else return IDENTIFIER;
+{IDENTIFIER}                   printf_debug("<IDENTIFIER %s>\n", yytext); setstring(yyextra, yylval, rem_(yytext)); if (is_type(yyextra, yytext)) return ID_TYPE; else return IDENTIFIER;
 [ \t\n]+                       ; /* ignore */
 .                              return ERROR;
 %%
 [ \t\n]+                       ; /* ignore */
 .                              return ERROR;
 %%
This page took 0.023584 seconds and 4 git commands to generate.