From bf3cc3a8634adaedb6ef8738c3a4e90a27f69d12 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Luis=20D=C3=ADaz?= <126299448+luisdh8@users.noreply.github.com> Date: Fri, 14 Mar 2025 19:56:49 -0600 Subject: [PATCH] A01639435-homework-04 Luis Fernando Diaz Hernandez --- labs/04/lex_analaizer.l | 43 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 43 insertions(+) create mode 100644 labs/04/lex_analaizer.l diff --git a/labs/04/lex_analaizer.l b/labs/04/lex_analaizer.l new file mode 100644 index 00000000..913712e0 --- /dev/null +++ b/labs/04/lex_analaizer.l @@ -0,0 +1,43 @@ +%option noyywrap +%{ +/*Performing lexical Analysis of a COMMENT, an INTEGER, and a FLOAT */ + +#include /*Para incluir la funcion de printf*/ + +%} + +%% +\/\/[^\/].* { printf("COMMENT\n"); } +f { printf("floatdcl "); } +i { printf("intdcl "); } += { printf("assign "); } +\+ { printf("plus "); } +[0-9]+\.[0-9]+ { printf("fnum\n"); } +[0-9]+ { printf("inum\n"); } +[a-eg-hj-oq-z] { printf("id\n"); } +p { printf("print "); } +\/ { printf("divide "); } +\* { printf("times "); } +\- { printf("minus "); } + +[ \t\n]+ ; +%% + +int main(int argc, char **argv) { + FILE *fd; + + if (argc == 2) + { + if (!(fd = fopen(argv[1], "r"))) + { + perror("Error: "); + return (-1); + } + yyset_in(fd); + yylex(); + fclose(fd); + } + else + printf("Usage: a.out filename\n"); + return (0); +}