Closed erflod5 closed 3 years ago
Disculpa tengo dos dudas
respecto a los arrays //se pueden declarar e inicializar let a: number=[10,20,15]; //o solo se pueden declarar para luego hacer uso de push, pop y length let a: number=[];
respecto a si puede venir algo como lo siguiente referiendome a los types
type hijo={ Nombre:string };
type mytype={ valor1:hijo }; // Se debe especificar a que tipo de type pertenece asi como el type de abajo, o se puede de las dos formas? let nuevo_hijo={ Nombre:"hijo1" }
let padre:mytype={ valor1:nuevo_hijo } //la forma de acceder a los atributos puede venir asi, o solo se hara como el segundo console? console.log(padre.valor1.Nombre);
console.log(padre);
Disculpa tengo dos dudas
- respecto a los arrays //se pueden declarar e inicializar let a: number=[10,20,15]; //o solo se pueden declarar para luego hacer uso de push, pop y length let a: number=[];
- respecto a si puede venir algo como lo siguiente referiendome a los types
type hijo={ Nombre:string };
type mytype={ valor1:hijo }; // Se debe especificar a que tipo de type pertenece asi como el type de abajo, o se puede de las dos formas? let nuevo_hijo={ Nombre:"hijo1" }
let padre:mytype={ valor1:nuevo_hijo } //la forma de acceder a los atributos puede venir asi, o solo se hará como el segundo console? console.log(padre.valor1.Nombre);
console.log(padre);
@WSantos35
Si se puede inicializar con varios valores o vacío, los métodos pop, push y length aplican para cualquier array, a menos que el array no este inicializado (que solo esté declarado sin valor).
Para la segunda duda
Mi duda es como utilizas la funcion execute en el codigo que nos pasaste de ejemplo, ya que esta heredada de una clase abstracta y veo que desde ahi se hacen las validaciones semanticas
@Xvimnt Que tal companero con respecto a tu duda, como cada clase hereda de la clase abstracta, estas implementan los métodos que definís como abstractos, entonces al momento de llamar a la función execute en este caso, ejecutara el codigo que programes en cada clase que se implemente, entonces prácticamente allí programas lo que tu interprete tiene que hacer y haces tus validaciones.
Disculpa tenia una duda, para simular el analisis Descendente, la gramatica estaria escrita para un analisis ascendente, solo con la diferencia que al operar, en vez de sintetizar un valor ,este va a ser heredado verdad?, asi como en la imagen de este arbol , haciendo uso de la Pila, guardaria el primer 2 que esta hasta abajo en la pila , subiria por num , subiria a "E / E" , guardaria "/", luego bajaria en "num" , y ahi sacaria de la pila"/" y "2" , haria la division con 4 , operaria en ese nodo , guardaria en la pila el valor que dio , y de ahi subiria y asi haria con los demas nodos? ,y si no es asi entonces como lo analizaria , gracias
Como se hace para tener tu repositorio privado y usar github pages?
Como se hace para tener tu repositorio privado y usar github pages?
Para usar github pages y el repositorio privado debes usar tu correo institucional (para tener la cuenta pro) y con esto ya se te permite eso.
Disculpa tenia una duda, para simular el analisis Descendente, la gramatica estaria escrita para un analisis ascendente, solo con la diferencia que al operar, en vez de sintetizar un valor ,este va a ser heredado verdad?, asi como en la imagen de este arbol , haciendo uso de la Pila, guardaria el primer 2 que esta hasta abajo en la pila , subiria por num , subiria a "E / E" , guardaria "/", luego bajaria en "num" , y ahi sacaria de la pila"/" y "2" , haria la division con 4 , operaria en ese nodo , guardaria en la pila el valor que dio , y de ahi subiria y asi haria con los demas nodos? ,y si no es asi entonces como lo analizaria , gracias
La gramática (de las funciones) va a estar escrita para un análisis descendente. Para tu ejemplo debería ser un árbol como este
Disculpa los arreglos van a permitir Multitype ? como estos ? let values: (string | number)[] = ['Apple', 2, 'Orange', 3, 4, 'Banana']; // or let values: Array<string | number> = ['Apple', 2, 'Orange', 3, 4, 'Banana'];
o en el caso que no se defina un tipo al inicio pero si se le haga una asignacion let arr = [1, 3, 'Apple', 'Orange', 'Banana', true, false];
y con lo de los types entonces como dijieron que si debe tener el tipo entonces se puede de estas 2 formas ? type mytype={ valor1:hijo };
const padre:mytype={ valor1:nuevo_hijo } o solo de la primera como habian dado el ejemplo en la explicacion ?
Disculpa los arreglos van a permitir Multitype ? como estos ? let values: (string | number)[] = ['Apple', 2, 'Orange', 3, 4, 'Banana']; // or let values: Array<string | number> = ['Apple', 2, 'Orange', 3, 4, 'Banana'];
o en el caso que no se defina un tipo al inicio pero si se le haga una asignacion let arr = [1, 3, 'Apple', 'Orange', 'Banana', true, false];
y con lo de los types entonces como dijieron que si debe tener el tipo entonces se puede de estas 2 formas ? type mytype={ valor1:hijo };
const padre:mytype={ valor1:nuevo_hijo } o solo de la primera como habian dado el ejemplo en la explicacion ?
type hijo = {
valor : number;
}
type mytype = { valor1 : hijo; }
const hijo1 : hijo = {valor : 10}; const padre : mytype = {valor1 : hijo1}; const padre2 : mytype = {valor1: {valor : 10}}
type MyTypeA = {
nombre: string;
}
let a: MyTypeA = {nombre: "Javier"};
let b: MyTypeA = a;
a = null;
console.log(b);
Que pasa ahi?
Como hago para ponerle label a mi pregunta?
type MyTypeA = { nombre: string; } let a: MyTypeA = {nombre: "Javier"}; let b: MyTypeA = a; a = null; console.log(b);
Que pasa ahi?
Como hago para ponerle label a mi pregunta?
@javier3448 si lo vemos a bajo nivel pasaria lo siguiente
//Se declara e inicializa la variable "a", esta apunta a un espacio de memoria donde estan almacenados sus atributos
//En este caso el atributo nombre
let a: MyTypeA = {nombre: "Javier"};
//La variable b apunta al espacio de memoria que apunta "a"
let b: MyTypeA = a;
//Ahora "a" apunta a null, pero "b" aun tiene la referencia al espacio de memoria
a = null;
//Imprime {nombre: "Javier"}
console.log(b);
Entiendo que los objetos y arreglos se pasan por referencia pero como se retornan? En los ejemplos se entiende mejor mi pregunta
type MyTypeA = {
nombre: string;
}
let foo: MyTypeA = { nombre: "viejo" };
function getObj():MyTypeA{
return foo;
}
function ejemplo1():void{
let a = getObj();
a.nombre = "Nuevo";
let b = getObj();
console.log(b.nombre);//imprime "Nuevo", cierto?
}
function ejemplo2():void{
let a = getObj();
a = null;
let b = getObj();
console.log(b);//aqui no imprimiria null cierto?
}
ejemplo1();
ejemplo2();
`// Respecto a los array y los type que contienen arrays...
type nuevo={
nombre1: string,
hijos:nuevo[]
}
// Se va a utilizar las dos formas permitidas de un array para typescript o solo la segunda forma?
let lista_nuevos:Array
let hijotmp:nuevo={
nombre1:"hijo",
hijos:Array
let tmp:nuevo={ nombre1:"padre", hijos:[] }
hijotmp.hijos.push({nombre1:"nieto"});//Esta forma esta permitida para hacer un push de un type?`
Para definir un type se puede de dos manera //Separado por coma cada attrib type myType ={ attrib1:number, attrib2:number, attrib3:string, } // Y separado por punto y coma type myType ={ attrib1:number; attrib2:number,; attrib3:string; }
¿Se va usar una en especifico o incluimos ambas ?
`// Respecto a los array y los type que contienen arrays...
type nuevo={ nombre1: string, hijos:nuevo[] } // Se va a utilizar las dos formas permitidas de un array para typescript o solo la segunda forma? let lista_nuevos:Array;// 1era. let lista2_nuevos:[]; // 2da.
let hijotmp:nuevo={ nombre1:"hijo", hijos:Array }
let tmp:nuevo={ nombre1:"padre", hijos:[] }
hijotmp.hijos.push({nombre1:"nieto"});//Esta forma esta permitida para hacer un push de un type?`
Para definir un type se puede de dos manera //Separado por coma cada attrib type myType ={ attrib1:number, attrib2:number, attrib3:string, } // Y separado por punto y coma type myType ={ attrib1:number; attrib2:number,; attrib3:string; }
¿Se va usar una en especifico o incluimos ambas ?
Incluyan ambas
Con respecto a la escritura de funciones anidadas
function fun1() : void{ function fun2() : number{ return x * 10; } let x = 100; let y = fun2(); console.log(y); }
¿La declaracion de funciones siempre es inmediatamente después de apertura de llaves o se puede poner de esta manera ?
function fun1() : void{ let x = 100; let y = fun2(); console.log(y); function fun2() : number{ return x * 10; } }
¿De si poderse lo anterior , es posible anidar mas de una función es una sola ?
Buenos dias, compañeros. Con dos dudas:
1) ¿Las funciones anidadas pueden estar definidas dentro de sentencias de control, por ejemplo podría venir esto?
function funcion1(a, b){ if(true){ function funcion2(){
}
}
}
2) ¿Los arreglos pueden tener más de una dimensión?
Muchas gracias.
Con respecto a la escritura de funciones anidadas
function fun1() : void{ function fun2() : number{ return x * 10; } let x = 100; let y = fun2(); console.log(y); }
¿La declaracion de funciones siempre es inmediatamente después de apertura de llaves o se puede poner de esta manera ?
function fun1() : void{ let x = 100; let y = fun2(); console.log(y); function fun2() : number{ return x * 10; } }
¿De si poderse lo anterior , es posible anidar mas de una función es una sola ?
@CristianFrancisco85 Puede venir en cualquier lado y puede tener 0 o mas funciones anidadas.
Buenos dias, compañeros. Con dos dudas:
- ¿Las funciones anidadas pueden estar definidas dentro de sentencias de control, por ejemplo podría venir esto?
function funcion1(a, b){ if(true){ function funcion2(){
} }
}
- ¿Los arreglos pueden tener más de una dimensión?
Muchas gracias.
Las sentencias de control pueden venir fuera de las funciones, ya que en typescript si se puede ejemplo: let d : string = "test"; let m = undefined;
function example():string { return "Hello"; }
if(d != m) { console.log("this is correct in typescript"); }
Ademas de eso las llamadas a funcion como el print pueden ser usados fueras de las funciones
tengo esta duda, para el ejemplo: el type Name={ dato:String; Mismo:Name; } yo entiendo que variable:Name=null, se puede hacer, asignarle null a una variable Name, pero en el typescript online que dieron de prueba, dice que no se le puede asignar null ni undefine, que se puede hacer al respecto?
Para los datos primitivos (palabras reservadas) los tipos, String, NUmber y Boolean, van al inicio con mayúscula? ya que entiendo que el intérprete es case-sensitive. Gracias
Las sentencias de control pueden venir fuera de las funciones, ya que en typescript si se puede ejemplo: let d : string = "test"; let m = undefined;
function example():string { return "Hello"; }
if(d != m) { console.log("this is correct in typescript"); }
Ademas de eso las llamadas a funcion como el print pueden ser usados fueras de las funciones
@Abner-Hernandez
- tengo esta duda, para el ejemplo: el type Name={ dato:String; Mismo:Name; } yo entiendo que variable:Name=null, se puede hacer, asignarle null a una variable Name, pero en el typescript online que dieron de prueba, dice que no se le puede asignar null ni undefine, que se puede hacer al respecto?
- Para los datos primitivos (palabras reservadas) los tipos, String, NUmber y Boolean, van al inicio con mayúscula? ya que entiendo que el intérprete es case-sensitive. Gracias
@MarioRCS
1.La palabra Array tambien seria en minusculas?
Una consulta rápida, a como se plantea en el enunciado, las tres propiedades de los arreglos son push, pop y length, adicional a eso debemos contemplar tambien el acceso a los elementos por medio de un indice?
1.La palabra Array tambien seria en minusculas?
- el | y & vienen dobles o simples?
- en los types todos los atributos vienen separados ya sea con punto y coma, pero el ultimo tambien?, vi unos ejemplos donde el ultimo ya no tiene. 4.Los types y arreglos declarados como constantes pueden cambiar su valor/tamaño durante la ejecución? Gracias.
const x = [1,2,3,4]; //Declaras una constante con arreglo de numeros
x.push(5); //El tamaño del arreglo ahora es 5, la operacion es permitida
x = [1,2]; //Error, una constante no puede ser modificada,
Lo mismo para los types.
Una consulta rápida, a como se plantea en el enunciado, las tres propiedades de los arreglos son push, pop y length, adicional a eso debemos contemplar tambien el acceso a los elementos por medio de un indice?
@einjunge99 Si
Vengo a fregar de nuevo. Por lo que leí, Typescript maneja un concepto de truthiness, por lo cual dentro de la evaluación de sentencias como el if se aceptan cosas como esta:
if (123) { // Will be treated like
true console.log('Any number other than 0 is truthy'); }
donde si bien, 123 no es booleano, pero es clasificado como truthy como se indica y así muchas cosas más, por lo que en el proyecto debemos evaluar conforme a su truthiness o esperar booleanos y reportar ese 123 como error?
Buenos dias! Me surgió la siguiente duda con la declaración de arreglos:
Si declaramos una variable y teniendo en cuenta que puede ser de multiples dimensiones (arreglos dentro de arreglos), seria necesario poner esta sintaxis?
let arreglo: number [][][]...;
o simplemente se puede dejar como:
let arreglo: number [];
?
Puesto que a primera notacion seria una mera cosa de sintaxis ya que se podria seguir manejando arreglos dentro de arreglos si lo declaramos como la segunda sintaxis. Muchas gracias, espero su respuesta!
Buenos dias! Me surgió la siguiente duda con la declaración de arreglos: Si declaramos una variable y teniendo en cuenta que puede ser de multiples dimensiones (arreglos dentro de arreglos), seria necesario poner esta sintaxis?
let arreglo: number [][][]...;
o simplemente se puede dejar como:let arreglo: number [];
? Puesto que a primera notacion seria una mera cosa de sintaxis ya que se podria seguir manejando arreglos dentro de arreglos si lo declaramos como la segunda sintaxis. Muchas gracias, espero su respuesta!
que buena pregunta porque yo lo tome de otra forma
let arreglo[] : number ....;
Buenos dias! Me surgió la siguiente duda con la declaración de arreglos: Si declaramos una variable y teniendo en cuenta que puede ser de multiples dimensiones (arreglos dentro de arreglos), seria necesario poner esta sintaxis?
let arreglo: number [][][]...;
o simplemente se puede dejar como:let arreglo: number [];
? Puesto que a primera notacion seria una mera cosa de sintaxis ya que se podria seguir manejando arreglos dentro de arreglos si lo declaramos como la segunda sintaxis. Muchas gracias, espero su respuesta!
@marckomatic ambas formas, la segunda es un arreglo de numeros, no es un arreglo de arreglos
Cualquier objeto que instancie en jison no le sirven los métodos.
//[..]
//En jison:
Expr
: Expr '+' Expr
{
$$ = new Expression(ExpressionKind.ADDITION, [$1, $3], @1.first_line, @1.first_column, @3.last_line, @3.last_column);
$$.getNodeId();//Tira error de TypeError: this.$.getNodeId is not a function
}
//[...]
Pero cuando instancio desde typescript si puedo usar los metodos:
//en index.ts
//[...]
let expr = new Expression(ExpressionKind.ADDITION, [1,2], 1,3,4,5);
console.log(expr.getNodeId());//esto NO tira error
//[...]
Algo más para considerar es que todos los objetos que me retorna el parser tienen este problema entonces estoy totalmente estancado. Ayuda porfa :(
Cualquier objeto que instancie en jison no le sirven los métodos.
//[..] //En jison: Expr : Expr '+' Expr { $$ = new Expression(ExpressionKind.ADDITION, [$1, $3], @1.first_line, @1.first_column, @3.last_line, @3.last_column); $$.getNodeId(); } //[...]
Pero cuando instancio desde typescript si puedo usar los metodos:
//en index.ts //[...] let expr = new Expression(ExpressionKind.ADDITION, [1,2], 1,3,4,5); console.log(expr.getNodeId());//esto NO tira error //[...]
Algo más para considerar es que todos los objetos que me retorna el parser tienen este problema entonces estoy totalmente estancado. Ayuda porfa :(
@javier3448 escribime a mi correo
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 En la parte del editor esta mi gramatica, y en la consola el error que me da.
Disculpen una duda a todas las instrucciones les debemos poner punto y coma al final, porque type script permite no ponerlas por ejemplo // aqui algunas declaraciones tienen ; al final y otras no y no da error let age: number = 32; const naom: string = "John" let isUpdated: boolean = true; let fruits: string[] = ['Apple', 'Orange', 'Banana'] let employee: [number, string] = [1, "Steve"];
// con los types igual puedo o no poner el ; despues del } y no da error type myTypo ={ attrib1:number, attrib2:number; attrib3:string };
type myType ={ attrib1:number, attrib2:number; attrib3:string; } como lo manejamos todo debe tener punto y coma al final ? exceptuando los metodos o hay alguna otra sentencia donde si se pueda omitir
Recuerdo que en un laboratorio mencionaron un par de paquetes para hacer un editor de texto con resaltado de syntaxis. Alguien tiene el nombre de esos paquetes o librerias?
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?
Con un problema que no logro conseguir arreglar estoy trabajando con react, este problema me da en mi pagina publicada en git pages, localmente no me da problema y funciona bien, tiene que ver con mi parser cuando le doy analizar me lanza este error Uncaught TypeError: s(...).parse is not a function, ya hasta cambien la forma de importación pero lo mismo no me realizar el parser cosa que reitero localmente si funciona no me da ningun error.
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?
Con un problema que no logro conseguir arreglar estoy trabajando con react, este problema me da en mi pagina publicada en git pages, localmente no me da problema y funciona bien, tiene que ver con mi parser cuando le doy analizar me lanza este error Uncaught TypeError: s(...).parse is not a function, ya hasta cambien la forma de importación pero lo mismo no me realizar el parser cosa que reitero localmente si funciona no me da ningun error.
@Abner-Hernandez No sé como lo exportas pero quizá esto te puede servir: En el archivo.js al principio del todo en la variable con el nombre de tu archivo, antes de esa yo le coloco export. Ej: export var gramatica = (function(){... Y cuando importas el archivo sería: import {gramatica} from '[direccion de tu archivo]'; Luego ya puedes acceder a gramatica.parse(); A mi no me dio problema de esa forma.
Recuerdo que en un laboratorio mencionaron un par de paquetes para hacer un editor de texto con resaltado de syntaxis. Alguien tiene el nombre de esos paquetes o librerias?
Codemirror y si estas trabajando con angular ya hay un paquete que lo facilita aun mas https://www.npmjs.com/package/@ctrl/ngx-codemirror
Buenos dias.
Con esta pregunta: Al definir los tipos puedo asignar un valor por defecto? Es decir:
type tipo = {edad:number = 14, nombre:string}
Muchas gracias.
alguien tuvo problemas con el == y el ** en la parte de Exp?
Disculpen, tengo la duda de si puedo declarar tipos adentro de sentencias de control y funciones. Algo como:
if(true) { type estudiante = {nombre:string, edad:number}; }
function nombre(){ type estudiante = {nombre:string, edad:number}; }
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
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
Disculpen, tengo la duda de si puedo declarar tipos adentro de sentencias de control y funciones. Algo como:
if(true) { type estudiante = {nombre:string, edad:number}; }
function nombre(){ type estudiante = {nombre:string, edad:number}; }
@marckomatic No, solo globales
Buenos dias. Con esta pregunta: Al definir los tipos puedo asignar un valor por defecto? Es decir:
type tipo = {edad:number = 14, nombre:string}
Muchas gracias.
@marckomatic No, solo id y tipo de dato.
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 En la parte del editor esta mi gramatica, y en la consola el error que me da.
@Xvimnt Lo pudiste arreglar?
Disculpen una duda a todas las instrucciones les debemos poner punto y coma al final, porque type script permite no ponerlas por ejemplo // aqui algunas declaraciones tienen ; al final y otras no y no da error let age: number = 32; const naom: string = "John" let isUpdated: boolean = true; let fruits: string[] = ['Apple', 'Orange', 'Banana'] let employee: [number, string] = [1, "Steve"];
// con los types igual puedo o no poner el ; despues del } y no da error type myTypo ={ attrib1:number, attrib2:number; attrib3:string };
type myType ={ attrib1:number, attrib2:number; attrib3:string; } como lo manejamos todo debe tener punto y coma al final ? exceptuando los metodos o hay alguna otra sentencia donde si se pueda omitir
Que si traiga ; al final
Hilo en el que se manejaran las dudas sobre el proyecto.