X-Git-Url: http://git.efficios.com/?p=babeltrace.git;a=blobdiff_plain;f=formats%2Fctf%2Fmetadata%2Fctf-lexer.l;h=21e5efa415bac5151c45f1cb46cf7b95dcd18527;hp=d2151a72e1e9fb2218c027ab99f4c914d2d6ff0e;hb=34d3acc4fc9f020b0e2616a29a339b5c546a05c1;hpb=c455f9d583959ff7a8181d216c26ff1f1cab52aa diff --git a/formats/ctf/metadata/ctf-lexer.l b/formats/ctf/metadata/ctf-lexer.l index d2151a72..21e5efa4 100644 --- a/formats/ctf/metadata/ctf-lexer.l +++ b/formats/ctf/metadata/ctf-lexer.l @@ -1,13 +1,20 @@ %{ #include +#include "ctf-scanner.h" #include "ctf-parser.h" #include "ctf-ast.h" -extern YYSTYPE yylval; -extern void setstring(const char *src); +extern void setstring(struct ctf_scanner *scanner, YYSTYPE *lvalp, const char *src); + +#define printf_dbg(fmt, args...) fprintf(stderr, "%s: " fmt, __func__, args) +#define printf_dbg_noarg(fmt) fprintf(stderr, "%s: " fmt, __func__) + %} %x comment_ml comment_sl string_lit char_const +%option reentrant yylineno noyywrap bison-bridge +%option extra-type="struct ctf_scanner *" + /* bison-locations */ 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_] @@ -92,7 +99,7 @@ _Imaginary return _IMAGINARY; [1-9]{DIGIT}*{INTEGER_SUFFIX}? return DECIMAL_CONSTANT; 0{OCTALDIGIT}*{INTEGER_SUFFIX}? return OCTAL_CONSTANT; 0[xX]{HEXDIGIT}+{INTEGER_SUFFIX}? return HEXADECIMAL_CONSTANT; -{IDENTIFIER} printf_dbg("\n", yytext); setstring(yytext); if (is_type(yytext)) return ID_TYPE; else return IDENTIFIER; +{IDENTIFIER} printf_dbg("\n", yytext); setstring(yyextra, yylval, yytext); if (is_type(yyextra, yytext)) return ID_TYPE; else return IDENTIFIER; [ \t\n]+ ; /* ignore */ . return ERROR; %%