From c6b60e6eac20ac3867efccc3f6938905d532ca73 Mon Sep 17 00:00:00 2001 From: YahirRivera04 Date: Tue, 29 Apr 2025 22:06:36 -0600 Subject: [PATCH] A00572029-homework-04 Signed-off-by: YahirRivera04 --- labs/04/lex.l | 53 +++++++++++++++++++++++++++++++++++++++++ labs/04/lex_analaizer.l | 53 +++++++++++++++++++++++++++++++++++++++++ 2 files changed, 106 insertions(+) create mode 100644 labs/04/lex.l create mode 100644 labs/04/lex_analaizer.l diff --git a/labs/04/lex.l b/labs/04/lex.l new file mode 100644 index 0000000..0d64fa6 --- /dev/null +++ b/labs/04/lex.l @@ -0,0 +1,53 @@ +%{ +#include +%} + +%% +if printf("if "); +else printf("else "); +elif printf("elif "); +while printf("while "); +for printf("for "); +return printf("return "); +def printf("def "); +class printf("class "); +import printf("import"); +[False|FALSE] printf("false"); +[True|TRUE] printf("true"); +in printf("in"); +range printf("range"); +not printf("not"); +\[ printf("OPENBRACKET "); +\] printf("CLOSEBRACKET "); +\< printf("GREATER_THAN "); +\> printf("LOWER_THAN "); +\, printf("COMMA "); +\: printf("COLON "); +\" printf("QUOTE "); +\( printf("OPENPARENTHESIS "); +\) printf("COLSEPARENTHESIS "); +\+ printf("PLUS "); +\= printf("EQUAL "); +\' printf("SIMPLEQUOTE "); +\n printf("\n"); +\* printf("MULTIPLICATION "); +\/ printf("DIVISION "); +\- printf("MINUS "); +\# printf("COMMENT "); +[0-9]+ printf("NUMBER "); +[a-zA-Z]+ printf("VARIABLE "); +[a-zA-Z0-9\/.-]* printf("FILENAME "); +%% + +int main(int argc, char **argv) { + if (argc > 1) { + FILE *file = fopen(argv[1], "r"); + if (!file) { + fprintf(stderr, "Could not open %s\n", argv[1]); + return 1; + } + yyin = file; + } + yylex(); +    return 0; +} \ No newline at end of file diff --git a/labs/04/lex_analaizer.l b/labs/04/lex_analaizer.l new file mode 100644 index 0000000..0d64fa6 --- /dev/null +++ b/labs/04/lex_analaizer.l @@ -0,0 +1,53 @@ +%{ +#include +%} + +%% +if printf("if "); +else printf("else "); +elif printf("elif "); +while printf("while "); +for printf("for "); +return printf("return "); +def printf("def "); +class printf("class "); +import printf("import"); +[False|FALSE] printf("false"); +[True|TRUE] printf("true"); +in printf("in"); +range printf("range"); +not printf("not"); +\[ printf("OPENBRACKET "); +\] printf("CLOSEBRACKET "); +\< printf("GREATER_THAN "); +\> printf("LOWER_THAN "); +\, printf("COMMA "); +\: printf("COLON "); +\" printf("QUOTE "); +\( printf("OPENPARENTHESIS "); +\) printf("COLSEPARENTHESIS "); +\+ printf("PLUS "); +\= printf("EQUAL "); +\' printf("SIMPLEQUOTE "); +\n printf("\n"); +\* printf("MULTIPLICATION "); +\/ printf("DIVISION "); +\- printf("MINUS "); +\# printf("COMMENT "); +[0-9]+ printf("NUMBER "); +[a-zA-Z]+ printf("VARIABLE "); +[a-zA-Z0-9\/.-]* printf("FILENAME "); +%% + +int main(int argc, char **argv) { + if (argc > 1) { + FILE *file = fopen(argv[1], "r"); + if (!file) { + fprintf(stderr, "Could not open %s\n", argv[1]); + return 1; + } + yyin = file; + } + yylex(); +    return 0; +} \ No newline at end of file