tlvc.l

Mon, 01 Sep 2025 00:14:59 +0800

author
Gong Zhile <gongzl@stu.hebust.edu.cn>
date
Mon, 01 Sep 2025 00:14:59 +0800
changeset 0
59c92fa19678
permissions
-rw-r--r--

Initial Lexer/Parser

%{
#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