XON. Xitai Objects Notation

De Xitai-E Wiki
Saltar a: navegación, buscar


Es un conjunto de utilidades alrededor del concepto de Xitai Object (XO), que es una estructura de datos relativamente simple pero lo bastante flexible para contener una descripción de cualquier otra estructura de datos imaginable.

Un XO consta de cuatro partes, aunque algunas o todas ellas pueden estar vacías. Son las siguientes:

 - Nombre. Un texto cualquiera.
 - ‎Clase. Un texto cualquiera.
 - ‎Valor. Un texto cualquiera.
 - ‎Hijos. Un número indeterminado de objetos en un orden dado. 

La clase y el valor son interpretados por la aplicacion que los usen de cualquier forma convenida de antemano.

Existen dos específicaciónes:

 1. Archivo de objetos
 ‎2. Script ejecutable.

Archivo de objetos

Es un texto almacenado o trasmitido por cualquier medio que describe un conjunto de objetos.

Se define una sintaxis estricta para usar en tratamientos mecánicos de la información, y una sintaxis extendida, que facilita la escritura manual. Esta es reducida a la sintaxis estricta en el proceso de decodificación.

Un programa siempre generará sintaxis estricta pero podrá leer la sintaxis extendida.

Ambas formas son muy legibles y fáciles de escribir manualmente.

Sintaxis estricta.

Describe una secuencia de objetos. Cada objeto se escrbe como

 nombre = clase : valor { hijos... }

Acabado en final de línea o el carácter : (punto y coma).

Si el nombre es vacío no se escribe el =, si la clase es vacía no se escribe el :, si no contiene hijos los caracteres {} son innecesarios.

Los espacios, tabuladores y los caracteres especiales actúan como separadores. Si se necesitan usar en el nombre, clase o valor, éste debe ir encerrado entre comillas simples o dobles.

Los caracteres especiales son = : { ; La sintaxis extendida añade < $ !

El carácter \ es el escape. Antepuesto a otro fuerza a interpretarlo como un carácter sin significado especial y ante n, r, t se interpretan como salto de línea, retorno de carro y tabulador, respectivamente. Ante una x y dos dígitos hexadecimales se interpretan como el carácter de 8 bits de dicho valor.

Es factible, y recomendable que el texto esté codificado en UTF8.

Ejemplo:

 "Lista de la compra" = {
    tienda = frutería
    ‎lechuga; aguacate; melón
‎    tomates { cantidad = "1 kg." } 
‎    comentario : "Encargar vino de lichis" 
  }


Sintaxis extendida

Se amplia la sintaxis estricta con lo siguiente

 - inclusión de archivos 
 - referencias
 - formato multilínea

La inclusión de archivos se indica encerrando el nombre o camino del archivo incluido entre el par de caracteres < >

Cuando se emplea a continuación del nombre o la clase de un objeto, el efecto es la asignación del contenido del archivo al valor de dicho objeto. Es una forma válida de asignar contenido binario.

Si se utiliza en otro caso se inserta el contenido en el archivo actual y se interpreta normalmente.

Si el camino del archivo no es escrito en forma absoluta se considera relativo al directorio donde reside el archivo en curso.

Se puede hacer referencia a un objeto que previamente ha sido declarado usando el carácter $ seguido del nombre cualificado del objeto.

Si un objeto es hijo de otro se debe de hacer referencia como un camino:

 $padre/hijo/nieto

El carácter que separa los nombres para componer el camino (/ en el ejemplo) es definido por la aplicación. No puede ser un carácter especial.

Las referencias se usan en lugar del valor de un objeto. Si el objeto referido contiene hijos se añaden copias al objeto que se está defiiendo. Los hijos que se definan a continuación se superponen a ellos.

Para facilitar la escritura de valores textuales largos existe el formato multilinea. Indicado con el carácter !

Cuando el primer carácter de un texto entre comillas es !, se ignora dicho carácter y todos los que haya hasta el primer salto de linea. Así mismo se ignoran todos los espacios y tabuladores al principio de cada línea.