Cleanup help menu
[emu8051.git] / src / cli / scanner.l
index 757376e..e88773f 100644 (file)
@@ -2,10 +2,25 @@
 %option noinput
 %option nounput
 %{
+  #include "menu.h"
   #include "parser.h"
+  #include "hexfile.h"
+
+#undef YY_INPUT
+#define YY_INPUT(buf,result,max_size) result = menu_get_input(buf, max_size);
+
 %}
+
+digit          [0-9]
+alpha          [a-fA-F]
+hextail                ({digit}|{alpha}){1,8}
+hex1           0[xX]{hextail}
+hex2           ${hextail}
+
 %%
-[0-9]+      { yylval = atoi(yytext); return NUMBER;}
+{hex1}      { yylval.number = asciihex2int(yytext); return NUMBER; }
+{hex2}      { yylval.number = asciihex2int(&yytext[1]); return NUMBER; }
+[0-9]+      { yylval.number = atoi(yytext); return NUMBER; }
 [h?]        return TOK_HELP;
 sb          return TOK_SB;
 rb          return TOK_RB;
@@ -15,18 +30,18 @@ di          return TOK_DI;
 dp          return TOK_DP;
 dr          return TOK_DR;
 r           return TOK_RUN;
-pc          return TOK_PC;
-all         return TOK_ALL;
-me          return TOK_MOD_EXT;
-mi          return TOK_MOD_INT;
-mp          return TOK_MOD_PROG;
-mr          return TOK_MOD_REG;
 q           return TOK_QUIT;
 s           return TOK_STEP;
 u           return TOK_UNASM;
+we          return TOK_MOD_EXT;
+wi          return TOK_MOD_INT;
+wp          return TOK_MOD_PROG;
+wr          return TOK_MOD_REG;
 z           return TOK_RST;
 zt          return TOK_RST_TIMER;
+all         return TOK_ALL;
+[a-z0-9]+   { yylval.string = strdup(yytext); return WORD; }
 [\n]        return TOK_ENTER;
 [ \t]+      { /* ignore whitespace */ }
-.           { return yytext[0];}
+.           { return yytext[0]; }
 %%