You are here

Parsear archivos de configuración en C++

Llega un momento en el desarrollo de software en el cual te das cuenta de que ya tienes muchas variables hardcoded (dentro del código), esto está bien mientras estamos en una fase de pruebas pero una vez pasada esta fase te das cuenta que mucha de la información que has incorporado en las variables del código deberías trasladarla a un fichero de configuración. En ese momento uno se plantea la posibilidad de "parsear" por si mismo dichos ficheros de configuración o echar una ojeada a las diferentes librerías que nos ofrece internet en la búsqueda de un buen parser (o analizador sintáctico traduciéndolo a la lengua de Cervantes).

Como con todo en esta vida, nada es totalmente blanco ni totalmente negro y cada una de las opciones tiene sus ventajas e inconvenientes. Si bien es cierto que incorporar una librería externa ya implica generar dependencias con otro software, la otra opción implica un esfuerzo mucho mayor para llegar a obtener la misma flexibilidad y mismos resultados.

Es en este caso donde entra en acción Spirit, un potente parser que forma parte de la conocida librería Boost. Se trata de un parser que puede analizar gran variedad de sintaxis diferentes, da igual que estemos hablando de ficheros de configuración o de código C (ya que se plantea la posibilidad de usar estas librerías para crear un compilador de C propio).

Obviamente no es el único parser disponible en la red pero es cierto que cumple con todos los requisitos: necesitaba algo en C++ (orientado a objetos) y aunque no conozco Spirit en concreto si que mis experiencias con Boost han sido siempre gratas. Todo ello gracias a tres puntos concretos que siempre he valorado muy positivamente a la hora de desarrollar: robustez, sencillez y flexibilidad.

Tal vez alguien tenga una opinión diferente o crea que existe un parser mejor en la red así que para exponer su opinión puede dejar un comentario más abajo.

Aunque en un principio, es bastante probable que el honeypot enlace con Boost para que empiecen a desaparecer todos esos "strings" que hay dentro del código y pasen a cargarse desde un fichero de configuración con una sintaxis amigable.

Qué te parece: