PvasquezF / ArchivosPruebaOLC2

Aquí se van a almacenar archivos de pruebas para los proyectos
6 stars 32 forks source link

Dudas Proyecto 1 Segundo Semestre 2020 #29

Closed erflod5 closed 3 years ago

erflod5 commented 4 years ago

Hilo en el que se manejaran las dudas sobre el proyecto.

MarioRCS commented 4 years ago

alguien tuvo problemas con el == y el ** en la parte de Exp?

@MarioRCS Tenes que ponerlas arriba del l '=' y del '*', ya que si los pones abajo te los toma como dos tokens diferentes

muchas gracias

erflod5 commented 4 years ago

Para la funcion graficar_ts();

si se hace una traduccion debe mostrar la tabla de simbolos que usamos para la traducción tambien, o solo la tabla de simbolos para la ejecución?

@WSantos35 Ambas, pero cada una en su respectiva fase, en ejecucion ya solo mostrar la tabla de simbolos de ejecucion

erflod5 commented 4 years ago

La tabla de simbolos de la traduccion debe de tener solo el nombre y el tipo(string,numero..) o tambien tiene que tener el valor?

@aragonjc en traduccion no sabes el valor, no tendrias que tener ese campo

yimmirp commented 4 years ago

Dentro de las Estructuras de control no pueden venir funciones anidadas?. Ejemplo:

function mifun(){

let numeros = [1, 2, 3];

for (let numero of numeros) {
    function f2(){

        let mivar = 1 + numero;
    } 
}

}

Guillermo-O-C commented 4 years ago

Dentro de las Estructuras de control no pueden venir funciones anidadas?. Ejemplo:

function mifun(){

let numeros = [1, 2, 3];

for (let numero of numeros) {
    function f2(){

        let mivar = 1 + numero;
    } 
}

}

No compañero, eso lo respondieron unas preguntas arriba. Esta es la respuesta : https://github.com/PvasquezF/ArchivosPruebaOLC2/issues/29#issuecomment-678805384

xvimnt commented 4 years ago

Me esta dando problemas con el operador || Al parecer jison no lo toma en cuenta, envio screenshots de mi error, no encontre ningun resultado en internet

Screenshot from 2020-08-28 22-52-20

En la parte del editor esta mi gramatica, y en la consola el error que me da.

@Xvimnt Lo pudiste arreglar?

Me dijeron que en el enunciado estaba OR en vez de || asi que lo cambié

javier3448 commented 4 years ago

Como podemos generar la imagen del arbol AST? Encontre estas dos librerias:

https://www.npmjs.com/package/graphviz https://github.com/ts-graphviz/ts-graphviz

Solo la de nodejs tiene como generar una imagen y no logro importarla a mi proyecto de angular. No se ni siquiera si es posible compilar el dot a una imagen desde el navegador.

yimmirp commented 4 years ago

Para la potencia seria asi: Math.pow(2,2) ? //resultado 4

avilatorres commented 4 years ago

Me esta dando problemas con el operador || Al parecer jison no lo toma en cuenta, envio screenshots de mi error, no encontre ningun resultado en internet

Screenshot from 2020-08-28 22-52-20

En la parte del editor esta mi gramatica, y en la consola el error que me da.

@Xvimnt Lo pudiste arreglar?

Me dijeron que en el enunciado estaba OR en vez de || asi que lo cambié

Que algun auxiliar lo confirme, porque yo lo tengo como || y &&.

PvasquezF commented 4 years ago

Me esta dando problemas con el operador || Al parecer jison no lo toma en cuenta, envio screenshots de mi error, no encontre ningun resultado en internet

Screenshot from 2020-08-28 22-52-20

En la parte del editor esta mi gramatica, y en la consola el error que me da.

@Xvimnt Lo pudiste arreglar?

Me dijeron que en el enunciado estaba OR en vez de || asi que lo cambié

Los operadores son image

PvasquezF commented 4 years ago

Dentro de las Estructuras de control no pueden venir funciones anidadas?. Ejemplo:

function mifun(){

let numeros = [1, 2, 3];

for (let numero of numeros) {
    function f2(){

        let mivar = 1 + numero;
    } 
}

}

No, eso no será válido

PvasquezF commented 4 years ago

Para la potencia seria asi: Math.pow(2,2) ? //resultado 4

Para la potencia se utiliza **

Ejemplo

let a = 4**2; 

console.log(a); // Imprime 16
PvasquezF commented 4 years ago

Como podemos generar la imagen del arbol AST? Encontre estas dos librerias:

https://www.npmjs.com/package/graphviz https://github.com/ts-graphviz/ts-graphviz

Solo la de nodejs tiene como generar una imagen y no logro importarla a mi proyecto de angular. No se ni siquiera si es posible compilar el dot a una imagen desde el navegador.

Podes intentar con lo siguiente

<!DOCTYPE html>
<meta charset="utf-8">
<body>
<script src="https://d3js.org/d3.v5.min.js"></script>
<script src="https://unpkg.com/@hpcc-js/wasm@0.3.11/dist/index.min.js"></script>
<script src="https://unpkg.com/d3-graphviz@3.0.5/build/d3-graphviz.js"></script>
<div id="graph" style="text-align: center;"></div>
<script>

d3.select("#graph").graphviz()
    .renderDot('digraph  {a -> b}');

</script>

image

Aqui podes encontrar otros ejemplos

WSantos35 commented 4 years ago

Como podemos generar la imagen del arbol AST? Encontre estas dos librerias:

https://www.npmjs.com/package/graphviz https://github.com/ts-graphviz/ts-graphviz

Solo la de nodejs tiene como generar una imagen y no logro importarla a mi proyecto de angular. No se ni siquiera si es posible compilar el dot a una imagen desde el navegador.

Para los que esten trabajando con angular una buena libreria a utilizar para trabajar con graphviz es d3-graphviz

documentacion e intalacion: https://www.npmjs.com/package/d3-graphviz#examples

repositorio del creador: https://github.com/magjac/d3-graphviz

Ejemplo implementando la libreria en un proyecto simple de angular (tambien realizado por el creador de la libreria): https://github.com/magjac/d3-graphviz-angular

marckomatic commented 4 years ago

Buenas tardes. Con una consulta. Los arboles que se graficaran seran muy grandes? Es que, estaba probando graficar los archivos de entrada que se encuentran aqui. El archivo del AVL no da ningun problema, pero el de matriz me tira un mensaje de que se quedo sin memoria el compilador dot.

El error que me tira es el siguiente:

abort("Cannot enlarge memory arrays. Either (1) compile with -s TOTAL_MEMORY=X with X higher than the current value 16777216, (2) compile with -s ALLOW_MEMORY_GROWTH=1 which allows increasing the size at runtime but prevents some optimizations, (3) set Module.TOTAL_MEMORY to a higher value before the program runs, or (4) if you want malloc to return NULL (0) instead of this abort, compile with -s ABORTING_MALLOC=0 "). Build with -s ASSERTIONS=1 for more info.

He estado tratando de buscar en el archivo que compila el dot las opciones, pero no logro identificar debido a que el archivo es demasiado grande. Supongo que al graficar con la memoria del navegador, se queda corto. Por si alguien tiene el mismo problema, y logro solucionarlo, le agradeceria que me ayudara.

Estoy utilizando Angular en su version 10 y la libreria viz.js.

MarioRCS commented 4 years ago

como resolvieron la parte de caracteres de escape en las cadenas?

erflod5 commented 4 years ago

como resolvieron la parte de caracteres de escape en las cadenas?

@MarioRCS con expresiones regulares

MarioRCS commented 4 years ago

@erflod5 gracias así lo haré

yimmirp commented 4 years ago

No importa el orden de la desanidacion? por ejemplo: pregunta

o tendria que ir primero padre y luego padre_hijo?

erflod5 commented 4 years ago

No importa el orden de la desanidacion? por ejemplo: pregunta

o tendria que ir primero padre y luego padre_hijo?

@ypernilloo no, no importa

erflod5 commented 4 years ago

Como podemos generar la imagen del arbol AST? Encontre estas dos librerias: https://www.npmjs.com/package/graphviz https://github.com/ts-graphviz/ts-graphviz Solo la de nodejs tiene como generar una imagen y no logro importarla a mi proyecto de angular. No se ni siquiera si es posible compilar el dot a una imagen desde el navegador.

Para los que esten trabajando con angular una buena libreria a utilizar para trabajar con graphviz es d3-graphviz

documentacion e intalacion: https://www.npmjs.com/package/d3-graphviz#examples

repositorio del creador: https://github.com/magjac/d3-graphviz

Ejemplo implementando la libreria en un proyecto simple de angular (tambien realizado por el creador de la libreria): https://github.com/magjac/d3-graphviz-angular

@WSantos35 gracias por tu aporte compañero.

echicasprado2 commented 4 years ago

Hola tengo unas dudas con respecto a la declaración 1) Todas la variables deben de tener su tipo? let id : tipo; let id;

2) De lo que estoy tomando en cuenta, hay algo mas que tenga que considerar? (let | const) id : tipo ; (let | const) id : tipo [] ; (let | const) id : tipo [] [] ... ; (let | const) id : tipo = valor; (let | const) id : tipo [] = [valor,valor,...] ; (let | const) id : tipo [] [] ... = [[valor,valor,...],[valor,valor,...],[valor,valor,...],...];

wjosuep13 commented 4 years ago

Disculpen una pregunta como pueden venir sentencias de control afuera de los métodos entonces para comenzar a ejecutar lo hacemos con la primera instrucción o método que leamos en la entrada verdad?

WSantos35 commented 4 years ago

Disculpen solo para confirmar tengo dos dudas respecto a las variables y sus tipo de datos 1. let dato; let dato2:null;

// se aceptan ya que ambas variables tiene valores null dato=5; dato2="texto";

//acepta esto ya que su tipo de dato de las variables es null o debe tirar error ya que primero se deben asignar valores null como //en las instrucciones de bajo dato=3>2; dato2=3; //---------- dato=null; dato2=null; dato=3>2; dato2=3;

2. // ya que a estos a diferencia del anterior se les coloca un tipo diferente de null let dato:number; let dato2:string; // deberia dar error o aceptar estas instrucciones? dato=null; dato2=null; dato=true; dato2=false;

echicasprado2 commented 4 years ago

image con esto se refieren que toda función debe traer un tipo? porque typescript si soporta las funciones sin especificar el tipo que retorna.

Abner-Hernandez commented 4 years ago

Para la declaracion y asignacion variables de typos es necesario que venga de ultimo punto y coma o sera sin punto y coma node = { left: null, right: null, height: 0, value: value }

let tree : AVLTree = { root: null };

PvasquezF commented 4 years ago

Hola tengo unas dudas con respecto a la declaración

  1. Todas la variables deben de tener su tipo? let id : tipo; let id;
  2. De lo que estoy tomando en cuenta, hay algo mas que tenga que considerar? (let | const) id : tipo ; (let | const) id : tipo [] ; (let | const) id : tipo [] [] ... ; (let | const) id : tipo = valor; (let | const) id : tipo [] = [valor,valor,...] ; (let | const) id : tipo [] [] ... = [[valor,valor,...],[valor,valor,...],[valor,valor,...],...];
  1. Se pueden o no declarar con tipo.
  2. Las variables solo pueden tener un tipo, eso se especificó en una pregunta anterior.
PvasquezF commented 4 years ago

Disculpen una pregunta cómo pueden venir sentencias de control afuera de los métodos entonces para comenzar a ejecutar lo hacemos con la primera instrucción o método que leamos en la entrada verdad?

Como se mencionó el dia de la explicación del proyecto, deben hacer las pasadas que consideren necesarias para obtener información de métodos, variables globales y demas cosas que consideren necesarias antes de iniciar la ejecución, luego de esto ya pueden ejecutar desde la primera instrucción.

PvasquezF commented 4 years ago

Disculpen solo para confirmar tengo dos dudas respecto a las variables y sus tipo de datos 1. let dato; let dato2:null;

// se aceptan ya que ambas variables tiene valores null dato=5; dato2="texto";

//acepta esto ya que su tipo de dato de las variables es null o debe tirar error ya que primero se deben asignar valores null como //en las instrucciones de bajo dato=3>2; dato2=3; //---------- dato=null; dato2=null; dato=3>2; dato2=3;

// ya que a estos a diferencia del anterior se les coloca un tipo diferente de null let dato:number; let dato2:string; // deberia dar error o aceptar estas instrucciones? dato=null; dato2=null; dato=true; dato2=false;

Disculpen solo para confirmar tengo dos dudas respecto a las variables y sus tipo de datos 1. let dato; let dato2:null;

// se aceptan ya que ambas variables tiene valores null dato=5; dato2="texto";

//acepta esto ya que su tipo de dato de las variables es null o debe tirar error ya que primero se deben asignar valores null como //en las instrucciones de bajo dato=3>2; dato2=3; //---------- dato=null; dato2=null; dato=3>2; dato2=3;

// ya que a estos a diferencia del anterior se les coloca un tipo diferente de null let dato:number; let dato2:string; // deberia dar error o aceptar estas instrucciones? dato=null; dato2=null; dato=true; dato2=false;

Al asignarle un tipo este ya no se podrá cambiar, esto para facilitar el desarrollo, así que te aconsejo aceptar el valor de null y mantener el tipo de dato.

PvasquezF commented 4 years ago

image con esto se refieren que toda función debe traer un tipo? porque typescript si soporta las funciones sin especificar el tipo que retorna.

Si, deben tener el tipo de dato explícito.

PvasquezF commented 4 years ago

Para la declaracion y asignacion variables de typos es necesario que venga de ultimo punto y coma o sera sin punto y coma node = { left: null, right: null, height: 0, value: value }

let tree : AVLTree = { root: null };

Para este caso como es una declaración o asignación si deberia llevar, en la calificación le vamos a agregar el punto y coma

juarezbarneond44 commented 4 years ago

buenas tengo una duda con los types y los arrays vendran instrucciones y expresiones de este estilo ?

id.id.id.areglo[3]=valor; arreglo[3].id.id.id=valor; dato=d.id.arreglo[3].id ;

marckomatic commented 4 years ago

Disculpen, estaba investigando diferencias en Typescript entre null y undefined. Quisiera saber si en el proyecto necesitamos aplicar estas diferencias o tanto null como undefined tendran el mismo comportamiento para nosotros. Gracias!

marckomatic commented 4 years ago

Buenas tardes! Tenia una duda con el manejo de los types. Supongan que yo llamo a esta funcion pasandole como parametro un type:

anotarAlumno({nombre: 'juanito', edad:13});

Pero en la definicion de la funcion, no esta estipulado el tipo que se tiene que pasar como parametro. En ese caso que tipo le asignaria ese objeto? Buscaria el primer type que encaje con los nombre y tipos de los campos? O le asignaria el typo any en este caso? Y aprovechando la duda, se va a manejar el tipo any para las variables? Muchas gracias.

erflod5 commented 4 years ago

buenas tengo una duda con los types y los arrays vendran instrucciones y expresiones de este estilo ?

id.id.id.areglo[3]=valor; arreglo[3].id.id.id=valor; dato=d.id.arreglo[3].id ;

Si

erflod5 commented 4 years ago

En ese caso que tipo le asignaria ese objeto? Buscaria el primer type que encaje con los nombre y tipos de los campos?

@marckomatic el primer type, por facilidad no vamos a poner dos types iguales, asi no hay ambigüedad en que si encontraron primero uno u otro.

No hay tipo any

marckomatic commented 4 years ago

Disculpen, puedo concatenar strings con tipos que no sean primitivos? En el typescript online el resultado de hacer: console.log('cadena: ' + {nombre: juan, edad:25} es: cadena: [Object, object] (1)

El unico caso cuando se muestra la informacion del objeto es cuando se le imprime solo a el y no concatenado.

Quisiera saber si es necesario que nuestro lenguaje imprima esa concatenacion en el formatio de (1). Mi pregunta es porque no veo muy fundamental que lo haga, y la validacion de operandos se vuelve un poco mas complicada aceptando tipos no primitivos. Espero su respuesta, y disculpen las molestias.

Edit: Aprovechando que aun no sea ha resuelto esta duda, quisiera tambien preguntar por los tipos aceptados por los operadores. En el typescript online, detecta errores cuando, por ejemplo, multiplicamos un boolean por un entero, sin embargo, cuando le damos a run, el archivo corre. Supongo que es porque lo traspila a javascript. Nosotros a quien debemos hacerle caso?

Por otro lado, los operadores logicos pueden trabajar con expresiones que NO sean booleanas. Sigue las mismas reglas que javascript en este caso, debemos nosotros tambien apegarnos a las reglas de javascript?

Parobacal commented 4 years ago

Una consulta, tratando de pasar los archivos locales al hosting de github pages con angular, he tenido el problema de que el navegador (a falta de un servidor), no es capaz de reconocer directivas propias del common JS para el uso de modulos, específicamente "require()". Aún no he probado, pero creo que, el resultado de usar el "import {}" para TS, que es casi lo mismo en su versión transpilada de es2015 para JS, dará el error de que, el archivo que use imports, tiene que ser llamado en el index.html como Githubissues.

  • Githubissues is a development platform for aggregating issues.