From 778df990eda2535a617ebde717530f531d64ea7e Mon Sep 17 00:00:00 2001 From: HugoGoHe Date: Tue, 29 Apr 2025 19:33:01 -0600 Subject: [PATCH] A01640856-homework-04 Signed-off-by: HugoGoHe --- labs/04/lex_analyzer.l | 41 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 41 insertions(+) create mode 100644 labs/04/lex_analyzer.l diff --git a/labs/04/lex_analyzer.l b/labs/04/lex_analyzer.l new file mode 100644 index 0000000..38b1b6f --- /dev/null +++ b/labs/04/lex_analyzer.l @@ -0,0 +1,41 @@ +%{ +#include +%} + +%option noyywrap +%% +"//".* printf("COMMENT"); +i printf("intdcl "); +f printf("floatdcl "); +p printf("print "); +[a-eg-hj-oq-z] printf("id "); +[0-9]+ printf("inum "); +[0-9]*\.[0-9]{1,5} printf("fnum "); +\= printf("assign "); +\+ printf("plus "); +\- printf("minus "); +\* printf("multiplied_by "); +\/ printf("divided_by "); +\^ printf("power "); +\*\* printf("square "); +\( printf("open_parenthesis "); +\) printf("close_parenthesis "); +\[ printf("open_square_bracket "); +\] printf("close_square_bracket "); +\{ printf("open_curly_bracket "); +\} printf("close_curly_bracket "); +\n printf("\n"); +[ \t]+ /* ignore whitespace */ +%% + +int main(int argc, char **argv) { + if (argc > 1) { + yyin = fopen(argv[1], "r"); + if (!yyin) { + perror("Error opening input file"); + return 1; + } + } + yylex(); + return 0; +}