tlvc.l

changeset 0
59c92fa19678
--- /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]); }
+%%

mercurial