|
|
Inicio Noticias Ver Todas Tutoriales Parseando las escenas
|
Written by Javier Loureiro
|
|
Tuesday, 12 February 2008 |
|
Estos días estoy haciendo unos pequeños cambios en las definiciones ascii de escena. Basicamente estoy incluyendo los datos de las mallas en formato uuencode, con una compresión sencilla usando la zlib. Pero esto me ha obligado a cambiar cómo está organizado el parser. - Uso el flex y el bison para todo esto. Muchos direis que están obsoletos y todo eso, que probablemente sea cierto, pero tiene ciertas ventajas el trabajar con estos generadores de gramática.
- Leen de forma secuencial, lo cual es muy interesante para cualquier tipo de definición de escena con proporciones considerables. Por ejemplo, leer xml en forma secunecial se vuelve un poco complicado, con push/pops para estados, etc. Con un parser de este tipo, van llegando los "comandos" que van generando las definiciones.
- flex++ y bison++ no usan ninguna lib adicional ni nada parecido. Tienen un cpp/h que usan de plantilla para generar el verdadero cpp/h que va a parsear nuestro código. Está orientado a c++, con lo que te genera una clase que despues podemos extender como deseemos, facilitando mucho la inclusión de nuestro parser en la arquitectura.
- Hay muchisima documentación para estos formatos, especialmente en comp.compilers
- Si nuestra escena es sencilla, los ficheros para generar el parser son realmente pequeños. Realmente todo lo que hace el parser es generar un arbol en memoria con las entidades, y en esto no se diferencia de otro sistema. Lo bueno es que un parseador de este tipo es muy robusto una vez definido. Por ejemplo, no defino palabras clave, simplemente se genera un diccionario de "keywords" que el arbol trata como parámetros para la posterior creación ( objeto = Factory(keyname) )
- Podemos realizar cálculos en el mismo parser, como evaluar operaciones matemáticas, etc, abriendo paso a poder optimziar la escena según la vamos leyendo.
Y la gran ventaja es que siempre puedes ir complicando cuanto desees la gramática (cosa que los informaticos siempre deseamos hacer), para admitir nuevas reglas, que por desgracia, suelen ir apareciendo. El parser te da la abstracción necesaria para que las reglas sean lo suficientemenete genericas para que podamos insertarlas donde deseemos.
|
|
Last Updated ( Tuesday, 12 February 2008 )
|
|
Lista de Correo
visita la lista de correo de codepixel. Es una lista abierta, asi que podrás subscribirte y preguntar tus dudas de programación, compartir tus opiniones, aportar ideas, y formar parte de la comunidad codepixelera.
|