Hola gente, bueno, antes de empezar, mis deseos de pronta recuperacion y no mas victimas en nuestro pais vecino y hermano Chile.
Muchas gracias a todos por los aportes, la idea inicial era hacer algo de lo que propuso Angel y Claudio, la idea no era hacer un parser compiler que evalue sintaxis ni esas cosas... pero me parecio interesante, lo unico que no entiendo de ese tema es como se termina convirtiendo mi lenguaje en lenguaje smalltalk que ejecute haga cosas con colecciones y objetos. Es muy probable que opte por extender alguna coleccion, probablemente SortedCollection y que le agregue metodos como #select: from: where:, pero de todos modos me gustaria, en una futura implementacion defenir un lenguaje para estas cosas. Mas ideas son bienvenidas!, Saludos, JM On 28 feb, 21:42, Claudio <[email protected]> wrote: > Hola Angel (Tanto tiempo!!), Hola Guillermo (De todo corazón espero > que estén lo mejor posible de tu lado de la cordillera) > Los métodos que necesitás, ya están todos: > - - aColl select: [....projection....] "un bloque que tome un > element de la > - - colección y devuelva el elemento de la colección nueva que se > esta formando" > eso hace el #collect: aBlock (En realidad te devuelve una collection > nueva, que es el resultado de aplicar el bloque a cada elemento de la > receptora) > > - - aColl selectFirst: [....projection....] > #first (Hagamos la salvedad de que se trate de una coleccion con > orden) > > - - aColl where: [... critera...] "un bloque que tome un element de > la coleccion > - - y devuelva verdadero o falso" > > es el famoso #select: aBlock > > . . aColl orderBy: [.... order criteria ...] > #asSortedCollection: aSortBlock (el sortBlock especifica el criterio > de orden) > - - aColl skip: 10 take: 20 "para saltear 10 elementos, y tomar los > proximos 20" > Te lo dejo como ejercicio para hacer en el desayuno > > Guillermo, con respecto a lo del Stream cursor: > La principal ventaja de los cursores cuando usamos SQL, es la de no > traer a memoria todos los objetos (registros, perdón), y en cambio, > recorrerlos en la misma base de datos, el cursor sólo "recuerda" la > posición del próximo elemento y sabe como avanzar y eventualmente > retroceder. > Si la collection ya está en memoria, como es el caso para una > collection standar de un Smalltalk standar, no hay razones para que > estos métodos creen cursores, si se crea una nueva collection, solo > tendrá referencias a los objetos de la original, y esto no es muy > costoso. > Ahora, si realmente querés un "cursor", no por una cuestión de > "economía" de espacio sino porque lo que querés es que realmente opere > sobre esa collection (y no sobre sus elementos) los Streams de > Smalltalk cumplen ese rol perfectamente, el protocolo no es el mismo > que el de Collection pero no es tan costoso "adaptarlo". > Saludos, > Claudio > > On 26 feb, 01:23, Guillermo Schwarz <[email protected]> > wrote: > > > La idea de Angel está interesante. > > > aColl select: [....projection....] "un bloque que tome un element de la > > colección y devuelva el elemento de la colección nueva que se esta formando" > > aColl selectFirst: [....projection....] > > aColl where: [... critera...] "un bloque que tome un element de la coleccion > > y devuelva verdadero o falso" > > aColl orderBy: [.... order criteria ...] > > aColl skip: 10 take: 20 "para saltear 10 elementos, y tomar los proximos 20" > > > Cada uno de esos debe retornar un collectionStream que sea algo así como un > > cursor, pero que tenga el mismo protocolo de un collection de modo que sea > > un drop in replacement de collection y que permita operar como si fuera un > > pipe a un collection. > > > Entonces si collectionStream implementa el mismo protocolo de collection > > descrito arriba, se puede armar sentencias SQL sin necesidad de escribir > > SQL, y hacer un interprete de SQL se volvería trivial... > > > Saludos, > > Guillermo. > > > 2010/2/25 Mariano Martinez Peck <[email protected]> > > > > Perdón que me vaya un poco offtopic, pero justo hoy Lukas hizo un post > > > interesante: > > > >http://www.lukas-renggli.ch/blog/petitparser-1 > > > > saludos > > > > Mariano > > > > 2010/2/25 Angel "Java" Lopez <[email protected]> > > > > Hola gente! > > > >> Gracias por los enlaces, ya agregados a > > >>http://delicious.com/ajlopez/smalltalk > > > >> Hay varios Object Query Language en otras tecnologías, y son bastante > > >> usados. Uno de los mas populares es Linq, de .NET, que a veces se > > >> extrania > > >> en Java. > > > >> Una estrategia a seguir: permitir que cada query definida en el lenguaje > > >> de > > >> consulta, se pueda ejecutar con métodos agregados a colecciones de > > >> objetos, > > >> tipo (imagino en el aire) > > > >> aColl select: [....projection....] "un bloque que tome un element de la > > >> colección y devuelva el elemento de la colección nueva que se esta > > >> formando" > > >> aColl selectFirst: [....projection....] > > >> aColl where: [... critera...] "un bloque que tome un element de la > > >> coleccion > > >> y devuelva verdadero o falso" > > >> aColl orderBy: [.... order criteria ...] > > >> aColl skip: 10 take: 20 "para saltear 10 elementos, y tomar los proximos > > >> 20" > > > >> Supongo que debe haber algo asi ya escrito en librerías de Smalltalk, y > > >> en > > >> la propia librería base, cuales eran? Hmm... me patina la neurona... :-) > > > >> Y luego recién ahí, implementar una gramatica para otro lenguaje mas OQL, > > >> SQL > > > >> Nos leemos! > > > >> Angel "Java" Lopez > > >>http://www.ajlopez.com/ > > >>http://twitter.com/ajlopez > > > >> -----Mensaje original----- > > >> De: [email protected] [mailto:[email protected] > > >> ] > > >> En nombre de GallegO > > >> Enviado el: jueves, 25 de febrero de 2010 12:49 > > >> Para: [email protected] > > >> Asunto: Re: [clubSmalltalk] ATParserCompiler > > > >> Hola: > > > >> No te olvides de ver la página de SmaCC > > > >>http://www.refactory.com/Software/SmaCC/index.html > > > >> Un compañero que entiende como definir la gramatica usa el de Dolphin > > >> y anda perfecto. > > > >> Ahora, escribir SQL para consultar colecciones de objetos???? Cada > > >> loco con su tema jaja :) > > > >> Saludos > > >> GallegO > > > >> -- > > >> To post to this group, send email to [email protected] > > >> To unsubscribe from this group, send email to > > >> [email protected]<clubsmalltalk%2bunsubscr...@googlegroups.com> > > > >>http://www.clubSmalltalk.org > > >> No virus found in this incoming message. > > >> Checked by AVG -www.avg.com > > >> Version: 8.5.435 / Virus Database: 271.1.1/2707 - Release Date: 02/24/10 > > >> 07:34:00 > > > >> -- > > >> To post to this group, send email to [email protected] > > >> To unsubscribe from this group, send email to > > >> [email protected]<clubsmalltalk%2bunsubscr...@googlegroups.com> > > > >>http://www.clubSmalltalk.org > > > > -- > > > To post to this group, send email to [email protected] > > > To unsubscribe from this group, send email to > > > [email protected]<clubsmalltalk%2bunsubscr...@googlegroups.com> > > > >http://www.clubSmalltalk.org > > > -- > > Saludos cordiales, > > > Guillermo Schwarz > > Sun Certified Enterprise Architect- Ocultar texto de la cita - > > > - Mostrar texto de la cita - -- To post to this group, send email to [email protected] To unsubscribe from this group, send email to [email protected] http://www.clubSmalltalk.org
