lex.l 1020 B

123456789101112131415161718192021
  1. %{
  2. #include <stdio.h>
  3. #include "y.tab.h"
  4. %}
  5. reg \$[a-zA-Z0-9]+
  6. word [a-zA-Z0-9_\.]+
  7. int [1-9][0-9]*
  8. %%
  9. [\n] { return NL; } /* Newline */
  10. #.* { yylval.sval = yytext; return COMMENT; } /* Comment */
  11. \..* { yylval.sval = yytext; return DIRECTIVE; } /* Assembly directive */
  12. {word}: { yylval.sval = yytext; return LABEL; } /* Label */
  13. {reg} { yylval.sval = yytext; return REG; } /* Registry address */
  14. {int} { yylval.ival = atoi(yytext); return INT; } /* Integer */
  15. {int}(\({reg}\))? { yylval.sval = yytext; return OFFSET; } /* Registry offset */
  16. [a-z\.]+ { yylval.sval = yytext; return INSTR; } /* Instruction */
  17. {word} { yylval.sval = yytext; return REF; } /* Label reference */
  18. [,] { return COMMA; } /* Comma */
  19. [ \t]+ ; /* Ignore whitespace */