From c44bfe6712a27df7684114886625f2657c800cd0 Mon Sep 17 00:00:00 2001 From: elunac19 Date: Sun, 27 Apr 2025 13:23:15 -0600 Subject: [PATCH 1/3] =?UTF-8?q?A01635367-ErickLuna=20Lab04-Actividad3.1.?= =?UTF-8?q?=20Analizador=20L=C3=A9xico?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- labs/04/lexic_analyzer.l | 30 ++++++++++++++++++++++++++++++ 1 file changed, 30 insertions(+) create mode 100644 labs/04/lexic_analyzer.l diff --git a/labs/04/lexic_analyzer.l b/labs/04/lexic_analyzer.l new file mode 100644 index 0000000..4e88cd8 --- /dev/null +++ b/labs/04/lexic_analyzer.l @@ -0,0 +1,30 @@ +%{ +#include +%} + +letter [A-Za-z] +digit [0-9] +integer {digit}+ +float (0|[1-9]{digit}*)\.({digit}*[1-9]|0) +comment \/{2}.* +id {letter}({letter}|{digit})* + +%% +^i {printf("INT_DEC ");} +^f {printf("FLOAT_DEC ");} +^p {printf("PRINT ");} +\= {printf("ASSIGN ");} +\- {printf("MINUS ");} +\+ {printf("PLUS ");} +\/ {printf("DIVI ");} +\* {printf("MULTI ");} +{id} {printf("ID ");} +{integer} {printf("INT ");} +{float} {printf("FLOAT ");} +{comment} {printf("COMMENT ");} +%% + +int main(){ + yylex(); + return 0; +} From e3fe44e866a9a5b2ad8245dd21e1332479459035 Mon Sep 17 00:00:00 2001 From: elunac19 Date: Tue, 29 Apr 2025 16:12:30 -0600 Subject: [PATCH 2/3] Adding Makefile and adding %noyywrap --- labs/04/Makefile | 20 ++++++++++++++++++++ labs/04/lexic_analyzer.l | 2 ++ 2 files changed, 22 insertions(+) create mode 100644 labs/04/Makefile diff --git a/labs/04/Makefile b/labs/04/Makefile new file mode 100644 index 0000000..e63cf85 --- /dev/null +++ b/labs/04/Makefile @@ -0,0 +1,20 @@ +LDFLAGS="-L/opt/homebrew/opt/flex/lib" +CPPFLAGS="-I/opt/homebrew/opt/flex/include" + +python: + rm -f example.ac + python3 code_generator.py > example.ac + +stress: + python3 code_generator.py --stress + lex lexic_analyzer.l + gcc $(CPPFLAGS) $(LDFLAGS) lex.yy.c -o lexical_scan -lfl + ./lexical_scan < random_code.ac + +run: + lex lexic_analyzer.l + gcc $(CPPFLAGS) $(LDFLAGS) lex.yy.c -o lexical_scan -lfl + ./lexical_scan < example.ac + +clean: + rm -f lex.yy.c lexical_scan diff --git a/labs/04/lexic_analyzer.l b/labs/04/lexic_analyzer.l index 4e88cd8..a6dae1c 100644 --- a/labs/04/lexic_analyzer.l +++ b/labs/04/lexic_analyzer.l @@ -2,6 +2,8 @@ #include %} +%option noyywrap + letter [A-Za-z] digit [0-9] integer {digit}+ From b06482f1df9f4ca4aace13338ed796fb24cd0869 Mon Sep 17 00:00:00 2001 From: elunac19 Date: Tue, 29 Apr 2025 20:18:40 -0600 Subject: [PATCH 3/3] Eliminating i and f --- labs/04/lexic_analyzer.l | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/labs/04/lexic_analyzer.l b/labs/04/lexic_analyzer.l index a6dae1c..9506435 100644 --- a/labs/04/lexic_analyzer.l +++ b/labs/04/lexic_analyzer.l @@ -4,7 +4,7 @@ %option noyywrap -letter [A-Za-z] +letter [a-eg-hj-opq-z] digit [0-9] integer {digit}+ float (0|[1-9]{digit}*)\.({digit}*[1-9]|0)