¿Cómo analizo un archivo yaml en c?++?

¿Cómo analizo un archivo yaml en c?++?
Yaml, o "Yaml no es un lenguaje de marcado", es un acrónimo. "La serialización de datos amigable para los humanos" es el objetivo de este estándar para todos los lenguajes de computadora. Esto significa que los archivos YAML se pueden escribir en un formato que sea legible por los humanos y prácticamente todos los idiomas tienen herramientas y paquetes que pueden analizar los archivos YAML. Dado que todo el análisis y la captura de errores son realizadas por una biblioteca en lugar de por infinitas líneas de código laborioso que escribe, es un enfoque un poco más formal para manejar archivos de argumentos y archivos de entrada para modelos. Si el yaml.La sintaxis de la org por el material dentro de YAML e YML se adhiere a. La extensión Yaml o YML no tiene sentido. Ambos ofrecen la misma estructura y capacidades de análisis de lenguaje de secuencias de comandos. Yaml es un formato de datos requerido creado para el análisis simple de la máquina y la lectura de la máquina. Mientras que JSON y XML están organizados de manera similar, el yaml es detallado. Miraremos leer archivos YAML en C ++ en este artículo.

Cómo obtener la biblioteca YAML en el idioma C ++?

Una biblioteca comparable para C ++ que puede producir y leer archivos YAML se llama YAML-CPP. Los pares de valor clave son la base de Yaml. Estos incluyen colecciones, matrices asociativas (mapas, diccionarios), escalares (enteros, flotadores, cuerdas y bools) y nodos, que son listas que contienen muchas claves: pares de valor. Además, YAML respalda la creación de alias y referencias. El emisor C ++ y el analizador Yaml que se adhiere al Yaml 1.2 La especificación se llama YAML-CPP. Cmake es utilizado por YAML-CPP para facilitar la construcción de plataformas cruzadas. Instale CMake First (Recursos -> Descargar) para continuar.

Los pasos básicos en la construcción son: asegúrese de agregar la carpeta de bin para Cmake a su ruta si elige no utilizar la instalación específica de la plataforma disponible. Ingrese el directorio de origen; hacer una carpeta de compilación, luego iniciar cmake. La carpeta Yaml-CPP \ Source \ Cmake \ Yaml-Cpp debe establecerse en el destino después de ser construida o copiada en una ruta preferida. Comencemos guardando un archivo yaml simple con los productos de nombre.Yaml, por lo que se puede leer más tarde usando scripts C ++. Nuestro producto.El archivo YAML contiene la siguiente información:

Ejemplo de análisis de YAML de análisis en un programa C ++ utilizando el módulo YAML-CPP

Para la lectura y salida de Yaml, este script utiliza la biblioteca de Libyaml. Aquí se proporciona una ilustración del código de YAML de análisis. El analizador produce una serie de eventos de un flujo de bytes de entrada. Basado en el "estilo de datos", dividimos los eventos interesantes. Establezcamos algunos archivos de encabezado para acceder a la funcionalidad de implementar el código C ++ y YAML-CPP.


En primer lugar, la declaración #include instruye al compilador que incluya los datos de stdio en esa ubicación específica. Utilizamos varias funciones en C/C ++ como Cout, Put () e printf (). Estos procedimientos no son los que el programador ha definido. Dentro de la biblioteca de idiomas, estos módulos ya están definidos. El siguiente es el yaml.H Archivo de encabezado, que proviene del paquete YAML-CPP; Podemos acceder a los eventos YAML-CPP. Entonces, el afirmación.h archivo de biblioteca donde las consideraciones del programa se pueden verificar utilizando la macro de afirmar que se encuentra en el afirmación de la biblioteca estándar.h Archivo de encabezado, que producirá un mensaje de advertencia si la suposición es incorrecta. Luego, el nodo de archivos de encabezado YAML-CPP.H y analizador.h para realizar las funcionalidades de lectura en c++. Ahora, tenemos la función principal de este código. Discutamos brevemente lo que hemos hecho en nuestro código principal.


Dentro de la función principal int (), hemos declarado alguna función, que incluye un archivo que asignó el puntero del archivo que se abrirá. Luego, desde el yaml_parser_t, hemos definido el objeto analizador. El Yaml_Parser es la arquitectura analiza en C++. Solo tiene miembros internos. La familia de yaml parser_functions se utiliza para administrar la estructura. Luego viene el yaml_document, que es la estructura para que el documento se analice. El YAML_NODE_T es la estructura de tipo de nodo que toma la variable de nodo del puntero. Después de eso, inicializamos la variable con el valor 1, que luego itera a lo largo del bucle. El archivo se abre invocando el método Fopen dentro del archivo variable, y hemos pasado los "productos.Archivo YAML "dentro del método Fopen en el modo de lectura.

La variable de archivo se pasa dentro del método Afirmar como una entrada para la operación de afirmación. Nuevamente, hemos utilizado el método Afirmar. Pero esta vez, hemos pasado la función YAML_PARSER_INICIALIZE para inicializar el analizador de objeto vacío. La entrada del archivo se establece con la función YAML_PARSER_SET_INPUT_FILE, que toma la referencia del objeto Parse y el objeto de archivo abierto para leer. Para crear una serie de documentos que componen el flujo de entrada, hemos llamado la función YAML_PARSER_LOAD. Si no existe un nodo raíz en el documento generado, se ha alcanzado la finalización del documento.


Ahora, tenemos una implementación de bucle de tiempo que itera sobre cada nodo dentro del documento. Dentro de la sección de bucle While, tenemos un nodo variable inicializado con la función YAML_DOCUMENT_GET_NODE. Esta función toma la referencia del documento y el valor de índice del nodo I. La función devolvió el nodo del documento si se encuentra en el rango del nodo. La iteración se rompe si el nodo no se encuentra. Luego, hemos anidado las declaraciones IF en la primera declaración, tenemos un tipo de nodo igual al YAML_SCALAR_NODE. En el nido, si la declaración, hemos presumido que una cadena representa la clave. Al final, liberamos la memoria por la función YAML_PARSER_DELETE y cerramos el archivo.

El código analizador anterior generó la siguiente salida, que está en el estilo de formato C ++.

Conclusión

Aquí, estamos cerrando el artículo. En general, hemos descrito el análisis de los archivos YAML en el idioma C ++. Todo lo que tenemos que hacer es descargar el módulo YAML-CPP en nuestro proyecto CMake y luego utilizar el YAML.h Archivo de encabezado dentro de nuestro programa. Hemos cubierto un ejemplo en el que hemos implementado todas las funciones posibles y sus miembros proporcionados por el módulo YAML-CPP para analizar el archivo YAML en C++.