Image logo-doc

Diseño de comunicaciones
Fco. Javier Bohórquez Ogalla



Índice General

Visión general

OMI puede ser ejecutado de forma que guarde en un fichero una estructura de datos que representa el proceso de interpretación seguido. Esta estructura de datos tiene un formato JSON. En esta sección se presenta la estructura de estos ficheros mediante el esquema de json-schema.org.

Cuando el intérprete se ejecuta en modo servidor se vale de esta misma estructura para devolver el estado del proceso. Otros sistemas que hagan de cliente pueden interpretar esta estrucutra de datos para operar con los mismos.

Esquema JSON

Nodos ejecutables

La primera estructura de datos JSON que es guardada representa el árbol fruto del análisis léxico y sintáctico. Esta estructura de datos tiene como elemento base un nodo que mantendrá relaciones con otros nodos. A partir del nodo raíz se puede obtener todo el árbol de nodos.

{
   "$schema": "http://omi-project.com/json-schema/node",
   "title": "Nodos del |{\color{red}\emph{á}}|rbol sint|{\color{red}\emph{á}}|ctico"
   "type": "object",
   "properties": {
      "id": {
        "description": "Posici|{\color{red}\emph{ó}}|n de memoria del nodo",
        "type" : "string", 
      },
      "name": {
         "description": "Nombre del nodo",
         "type": "string",
      },
      "type": {
         "description": "Tipo del nodo",
         "type": "string",
      },
      "size": {
         "description": "Tama|{\color{red}\emph{ñ}}|o del nodo en Bytes",
         "type": "string",
      },
      "rel": {
         "description": "Relaciones con otros nodos",
         "type": "array",
         "items": {
            "ref":  "http://omi-project.com/json-schema/node"
         }
      },
      "relname": {
         "description": "Nombre de las relaciones con otros nodos",
         "type": "array",
         "items": {
            "type":  "string",
         }
      },
   }
}

Acciones

Para representar el proceso de interpretación se precisa de una estructura de datos que indique las acciones llevadas a cabo en el proceso.

{
   "$schema": "http://omi-project.com/json-schema/process",
   "title": "Proceso de interpretaci|{\color{red}\emph{ó}}|n",
   "type": "array",
   "items": {
      "type": "object",
        "properties": { 
            "action": {
               "description": "Acci|{\color{red}\emph{ó}}|n que se corresponde con un paso",
               "type": "enum",
            },
            "id": {
               "description": "Id del nodo sobre el que se lleva a cabo la acci|{\color{red}\emph{ó}}|n",
               "type": "string",
            },
            "attrs": {
               "description": "Atributos de la acci|{\color{red}\emph{ó}}|n. Dependen de la acci|{\color{red}\emph{ó}}|n".
               "type": "object",
            }
      }
   }
}

Los tipos de acciones son los siguientes:

run:
Ejecución de un nodo.
runClass:
Ejecución de un nodo clase.
endClass:
Finaliza la ejecuición de una clase.
setParent:
Establece el padre de un nodo clase.
setValue:
Establece el valor de un nodo.
setRef:
Establece el valor de una referencia.
accessVar:
Accede al valor de una variable.
accessFunc:
Accede al valor de una funcion.
accessClass:
Accede al valor de una clase.
clone:
Clona un nodo.
newNode:
Crea un nuevo nodo.
changeRef:
Cambia el valor de una referencia.
changeValue:
Cambia el valor de un nodo.
delete:
Elimina un nodo.
print:
Imprime en la salida estándar.
input:
Toma valores de la entrada estándar.
toSymbols:
Añade elementos a la tabla de símbolos interna de un nodo.
removeLevel:
Elimina un nivel de la tabla de símbolos.
return:
Se devuelve un valor.
error:
Se ha producido un error.
sleep:
Se espera un evento.
runStatic:
Comienza la ejecución de un elemento estático.
endStatic:
Finaliza la ejecución de un elemento estático.
runPrivate:
Comienza la ejecución de un elemento privado.
endPrivate:
Finaliza la ejecución de un elemento privado.
runGlobal:
Comienza la ejecución de un elemento global.
endGlobal:
Finaliza la ejecución de un elemento global.
line:
Especifica la línea actual del código fuente.

Sobre este documento...

Image logo-doc

This document was generated using the LaTeX2HTML translator Version 2008 (1.71)

Copyright © 1993, 1994, 1995, 1996, Nikos Drakos, Computer Based Learning Unit, University of Leeds.
Copyright © 1997, 1998, 1999, Ross Moore, Mathematics Department, Macquarie University, Sydney.

The command line arguments were:
latex2html -no_subdir -split 0 head.tex -html_version 4.0,latin1,unicode

The translation was initiated by franj on 2016-01-16

franj 2016-01-16