--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/tlvc.l Mon Sep 01 00:14:59 2025 +0800 @@ -0,0 +1,30 @@ +%{ +#include <string.h> +#include <stdlib.h> +#include "tlvast.h" +#include "tlvc.tab.h" +%} + +%option noyywrap +%option yylineno + +%% +"message" { return MESSAGE; } + +"u8" { yylval.num = TLV_TYPE_U8; return TYPE; } +"u16" { yylval.num = TLV_TYPE_U16; return TYPE; } +"u32" { yylval.num = TLV_TYPE_U32; return TYPE; } +"u64" { yylval.num = TLV_TYPE_U64; return TYPE; } + +"STRING" { yylval.num = TLV_TYPE_STRING; return TYPE; } + +0x[0-9a-fA-F]+ { yylval.num = (int)strtol(yytext,NULL,16); return NUMBER; } + +[a-zA-Z_][a-zA-Z0-9_]* { yylval.str = strdup(yytext); return IDENT; } + +[ \t\r\n]+ ; // skip whitespace +"{" { return '{'; } +"}" { return '}'; } +";" { return ';'; } +. { fprintf(stderr,"Unexpected char: %c\n", yytext[0]); } +%%