From 6efa242fb52945ec70c3e35f1ed3a6231710ac8a Mon Sep 17 00:00:00 2001 From: joalgueflo <114319054+joalgueflo@users.noreply.github.com> Date: Mon, 8 Jan 2024 23:42:36 -0600 Subject: [PATCH 1/3] Tarea1_A01285612_JoseGuerrero --- labs/01/example_graph.png | Bin 0 -> 10028 bytes labs/01/practica1.py | 74 ++++++++++++++++++++++++++++++++++++++ 2 files changed, 74 insertions(+) create mode 100644 labs/01/example_graph.png create mode 100644 labs/01/practica1.py diff --git a/labs/01/example_graph.png b/labs/01/example_graph.png new file mode 100644 index 0000000000000000000000000000000000000000..36abdd9ab0cf8bd4a67f47d7323a153a17304d3a GIT binary patch literal 10028 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 A3jhEB literal 0 HcmV?d00001 diff --git a/labs/01/practica1.py b/labs/01/practica1.py new file mode 100644 index 0000000..73908db --- /dev/null +++ b/labs/01/practica1.py @@ -0,0 +1,74 @@ +#José Guerrero A01285612 +#8 de enero del 2024 + +from graphviz import Digraph + +# Creamos el objeto de Graphviz +dot = Digraph() + +#Funcion para verificar si el set es reflexivo +def is_reflexive(set): + for element in set: + #Por elemento(secuencia) en el set, creamos una secuencia con el elemento 0 y el elemento 0 para buscar los pares + #en el set ej.- (0,0) (1,1) (2,2) (3,3) + if (element[0], element[0]) not in set: #Si no se encuentra el par, regresa False + return False + else: + pass + #Si sale del loop, regresa True + return True + + +#Funcion para verificar si el set es simetrico +def is_symmetric(set): + for element in set: #Por cada secuencia en el set + #Creamos una secuencia para buscar el opuesto del elemento + if (element[1], element[0]) not in set: + #Si no se encuentra el opuesto, regresa False + return False + else: + #Si se encuentra, pasa al siguiente elemento + pass + #Si sale del loop, regresa True + return True + + +#Funcion para verificar si el set es transitivo +def is_transitive(set): + #Por cada secuencia en el set + for element in set: + #Agarramos una segunda secuencia para buscar el opuesto del elemento + for element2 in set: + #Si el segundo elemento de la primera secuencia es igual al primer elemento de la segunda secuencia + if element[1] == element2[0]: + #Creamos secuencia de elemento[0] y elemento2[1] para buscar si esta en el set + if (element[0], element2[1]) not in set: + return False + return True + +# Set a verificar +set = {(0,0), (0,1), (0,3), (1,0), (1,1), (2,2), (3,0), (3,3)} + +# Llamamos a las funciones y las imprimimos +print("Reflexive:", is_reflexive(set)) +print("Symmetric:", is_symmetric(set)) +print("Transitive:", is_transitive(set)) + +#-------------------------GRAPHVIZ-------------------------# + +# Metodos para usar Graphviz +dot.attr(rankdir='LR') +dot.attr('node', shape='circle') + +#Creamos los nodos +dot.edge('0', '0') +dot.edge('0', '1') +dot.edge('0', '3') +dot.edge('1', '0') +dot.edge('1', '1') +dot.edge('2', '2') +dot.edge('3', '0') +dot.edge('3', '3') + +#Renderizamos la imagen +dot.render('example_graph', format='png', cleanup=True) From 7b488e50f0df1dddba59018ee12eb0ccf6138033 Mon Sep 17 00:00:00 2001 From: joalgueflo <114319054+joalgueflo@users.noreply.github.com> Date: Mon, 29 Jan 2024 23:04:45 -0600 Subject: [PATCH 2/3] Act3_Hw --- labs/03/act3.l | 23 +++++++++++++++++ labs/03/act3.y | 66 ++++++++++++++++++++++++++++++++++++++++++++++++ labs/03/test.txt | 4 +++ 3 files changed, 93 insertions(+) create mode 100644 labs/03/act3.l create mode 100644 labs/03/act3.y create mode 100644 labs/03/test.txt diff --git a/labs/03/act3.l b/labs/03/act3.l new file mode 100644 index 0000000..561f586 --- /dev/null +++ b/labs/03/act3.l @@ -0,0 +1,23 @@ +%{ +#include "y.tab.h" +#include +#include +#include +%} + + + +%% + +a|the {return ARTICLE;} +boy|girl|flower {return NOUN;} +touches|likes|sees {return VERB;} +with {return PREP;} + +[ \t]+ +<> { return 0; } +\n + +. + +%% \ No newline at end of file diff --git a/labs/03/act3.y b/labs/03/act3.y new file mode 100644 index 0000000..137af41 --- /dev/null +++ b/labs/03/act3.y @@ -0,0 +1,66 @@ +%{ +#include +#include +#include +#include "y.tab.h" + +extern int wwlex(); /* Use wwlex instead of yylex */ +extern void yyerror(const char* s); + +int line_number = 1; + +%} + +%token ARTICLE NOUN VERB PREP + +%type ARTICLE NOUN VERB PREP /* Declare the type of the attribute for each terminal */ +%type sentence noun_phrase verb_phrase prep_phrase cmplx_noun cmplx_verb /* Declare the type of the attribute for each non-terminal */ + +%% +sentence : noun_phrase verb_phrase { printf("PASS\n"); } + ; + +noun_phrase : cmplx_noun { } + | cmplx_noun prep_phrase { } + ; + +verb_phrase : cmplx_verb { } + | cmplx_verb prep_phrase { } + ; + +prep_phrase : PREP cmplx_noun { } + ; + +cmplx_noun : ARTICLE NOUN { } + ; + +cmplx_verb : VERB { } + | VERB noun_phrase { } + ; + + + +%% + +void yyerror(const char* s) { + fprintf(stderr, "Error at line %d: %s\n", line_number, s); +} + +int main(int argc, char **argv) { + if (argc == 2) { + FILE *yyin = fopen(argv[1], "r"); + if (!yyin) { + fprintf(stderr, "Error opening file: %s\n", strerror(errno)); // File opening error + return 1; // Return non-zero, indicates an error + } + + yyparse(); // Parse the input file + fclose(yyin); // Closes the file + + } else { + fprintf(stderr, "Usage: %s filename\n", argv[0]); // Display usage information for incorrect command-line arguments + return 1; // Return non-zero, indicates an error + } + + return 0; // Return 0, successful execution +} \ No newline at end of file diff --git a/labs/03/test.txt b/labs/03/test.txt new file mode 100644 index 0000000..eaa9082 --- /dev/null +++ b/labs/03/test.txt @@ -0,0 +1,4 @@ +a boy sees +the boy sees a flower +a girl with a flower likes the boy +a flower sees a flower \ No newline at end of file From cacac748b955356c77b7eb3bf28fef406df392db Mon Sep 17 00:00:00 2001 From: joalgueflo <114319054+joalgueflo@users.noreply.github.com> Date: Mon, 29 Jan 2024 23:11:16 -0600 Subject: [PATCH 3/3] Modified file act3.y --- labs/03/act3.y | 3 --- 1 file changed, 3 deletions(-) diff --git a/labs/03/act3.y b/labs/03/act3.y index 137af41..c8b89ee 100644 --- a/labs/03/act3.y +++ b/labs/03/act3.y @@ -13,9 +13,6 @@ int line_number = 1; %token ARTICLE NOUN VERB PREP -%type ARTICLE NOUN VERB PREP /* Declare the type of the attribute for each terminal */ -%type sentence noun_phrase verb_phrase prep_phrase cmplx_noun cmplx_verb /* Declare the type of the attribute for each non-terminal */ - %% sentence : noun_phrase verb_phrase { printf("PASS\n"); } ;