From 07fcc7104a58b37dfcf25122b3217dba399be52a Mon Sep 17 00:00:00 2001 From: Iturbe <71788652+CakeIturbe@users.noreply.github.com> Date: Mon, 29 Jan 2024 21:34:17 -0600 Subject: [PATCH] Add files via upload --- labs/03/COMMNDSLEXYACC.txt | 3 +++ labs/03/analizer.l | 52 +++++++++++++++++++++++++++++++++++++ labs/03/analizer.y | 36 +++++++++++++++++++++++++ labs/03/analyzer | Bin 0 -> 32176 bytes labs/03/test.txt | 6 +++++ 5 files changed, 97 insertions(+) create mode 100644 labs/03/COMMNDSLEXYACC.txt create mode 100644 labs/03/analizer.l create mode 100644 labs/03/analizer.y create mode 100644 labs/03/analyzer create mode 100644 labs/03/test.txt diff --git a/labs/03/COMMNDSLEXYACC.txt b/labs/03/COMMNDSLEXYACC.txt new file mode 100644 index 0000000..de4c54d --- /dev/null +++ b/labs/03/COMMNDSLEXYACC.txt @@ -0,0 +1,3 @@ +yacc -d analizer.y +lex analizer.l +gcc y.tab.c lex.yy.c -ly -ll -o analizer diff --git a/labs/03/analizer.l b/labs/03/analizer.l new file mode 100644 index 0000000..9bafab1 --- /dev/null +++ b/labs/03/analizer.l @@ -0,0 +1,52 @@ +%{ +#include +#include "y.tab.h" +%} +%% +a|the { yylval.sval = strdup(yytext); return ARTICLE; } +boy|girl|flower { yylval.sval = strdup(yytext); return NOUN; } +touches|likes|sees { yylval.sval = strdup(yytext); return VERB; } +with { return PREP; } +[ \t] ; +\n { return 0; }; +%% + +int main(int argc, char **argv) { + FILE *fd; + + if (argc == 2) + { + if (!(fd = fopen(argv[1], "r"))) + { + perror("Error: "); + return (-1); + } + + yyin = fd; + + + char ch; + int lines = 0; + // Counting the total number of lines in the file + while ((ch = fgetc(fd)) != EOF) { + if (ch == '\n') { + lines++; + } + } + + fseek(fd, 0, SEEK_SET); + for(int i=0;i +int yylex(); +void yyerror(const char *s); +%} + +%union { + char *sval; + } + +%token ARTICLE NOUN VERB PREP +%type nounphrase verbphrase prepphrase complexnoun complexverb sentence + + +%% + +input: sentence {printf("PASS\n");} + ; +sentence: nounphrase verbphrase + ; +nounphrase: complexnoun + | complexnoun prepphrase + ; +verbphrase: complexverb + ; +prepphrase: PREP complexnoun + ; +complexnoun: ARTICLE NOUN + ; +complexverb: VERB + | VERB nounphrase + ; + +%% + + diff --git a/labs/03/analyzer b/labs/03/analyzer new file mode 100644 index 0000000000000000000000000000000000000000..eda345fc38da531bdf43ab75897650731d5c62bb GIT binary patch literal 32176 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