ysyx-workbench/npc/utils/sdb/addrexp.l
xinyangli e828e140cd
Some checks failed
Build abstract machine with nix / build-abstract-machine (push) Successful in 2m41s
Run CTests within npc / npc-test (push) Has been cancelled
feat(sdb): support sdb
2024-04-09 17:03:21 +08:00

26 lines
740 B
Text

%{
#include <types.h>
#include <stdbool.h>
#include "addrexp.h"
static bool success = false;
void yyerror(word_t *result, const char *err);
word_t reg_str2val(const char *name, bool*);
%}
%option noyywrap
%%
0[xX][0-9a-fA-F]+ { yylval = strtoul(yytext, NULL, 16); return HEX_NUMBER; }
[0-9]+ { yylval = strtoul(yytext, NULL, 10); return NUMBER; }
$[asgprt$][0-9pa][0-9]? {
yylval = reg_str2val(yytext + 1, &success);
if(!success) {
yyerror(NULL, "Failed to convert reg to value");
return YYerror;
}
return REGISTER;
}
[+\-*/<=()] { return *yytext; }
[ \t] { }
. { printf("Unexpected character: %s\n", yytext); return YYerror; }
%%