Anexo III - Primitivas de AnSISOP
Para evitar la complejidad que presenta realizar un analizador de sintaxis y dado que estas tareas no son inherentes al contenido de la materia, se le facilita al alumno un Parser que se encargará de interpretar cada línea de código y de ejecutar las Primitivas correspondientes, cuyo código será desarrollado por el alumno. Tanto su implementación directa o parcial es aconsejable.
El parser podrá obtenerse desde https://github.com/sisoputnfrba/ansisop-parser
Primitivas de AnSISOP
definirVariable
obtenerPosicionVariable
dereferenciar
asignar
obtenerValorCompartida
asignarValorCompartida
irAlLabel
llamarConRetorno
retornar
imprimir
imprimirTexto
entradaSalida
wait
signal
1. definirVariable
definirVariable
Reserva en el Contexto de Ejecución Actual el espacio necesario para una variable llamada identificador_variable
y la registra en el Stack, retornando la posición del valor de esta nueva variable del stack.
El valor de la variable queda indefinido: no deberá inicializarlo con ningún valor default.
Esta función se invoca una vez por variable, a pesar de que este varias veces en una línea. Por ejemplo, evaluar variables a, b, c
llamará tres veces a esta función con los parámetros a
, b
y c
.
2. obtenerPosicionVariable
obtenerPosicionVariable
Devuelve el desplazamiento respecto al inicio del segmento Stack en que se encuentra el valor de la variable identificador_variable
del contexto actual. En caso de error, retorna -1.
3. dereferenciar
dereferenciar
Obtiene el valor resultante de leer a partir de direccion_variable
, sin importar cual fuera el contexto actual.
4. asignar
asignar
Copia un valor en la variable ubicada en direccion_variable
.
5. obtenerValorCompartida
obtenerValorCompartida
Solicita al Núcleo el valor de una variable compartida.
6. asignarValorCompartida
asignarValorCompartida
Solicita al Núcleo asignar el valor a la variable compartida. Devuelve el valor asignado.
7. irAlLabel
irAlLabel
Cambia la linea de ejecucion a la correspondiente de la etiqueta buscada.
8. llamarConRetorno
llamarConRetorno
Preserva el contexto de ejecución actual para poder retornar luego al mismo, junto con la posición de la variable entregada por donde_retornar
. Modifica las estructuras correspondientes para mostrar un nuevo contexto vacío, actualizando el Program Counter según corresponda.
Los parámetros serán definidos luego de esta instrucción de la misma manera que una variable local, con identificadores numéricos empezando por el 0.
No se pretende que se pueda retornar a una variable compartida. Sí a un parámetro o variable local.
9. retornar
retornar
Modifica el Contexto de Ejecución Actual por el Contexto anterior al que se está ejecutando, recuperando el Cursor de Contexto Actual, el Program Counter y la dirección donde retornar, asignando el valor de retorno en esta, previamente apilados en el Stack.
10. imprimir
imprimir
Envía al Núcleo el contenido de valor_mostrar
, para que este le reenvíe a la correspondiente consola del Programa en ejecución. Devuelve la cantidad de caracteres impresos.
11. imprimirTexto
imprimirTexto
Envía al Núcleo una cadena de texto
para que este la reenvíe a la correspondiente consola del Programa en ejecución. No admite parámetros adicionales, secuencias de escape o variables. Devuelve la cantidad de caracteres impresos.
12. entradaSalida
entradaSalida
Informa al Núcleo que el Programa actual pretende utilizar el dispositivo
durante tiempo
unidades de tiempo.
13. wait
wait
Informa al Núcleo que ejecute la función wait para el semáforo con el nombre identificador_semaforo
. El Núcleo deberá decidir si bloquearlo o no.
14. signal
signal
Comunica al Núcleo que ejecute la función signal para el semáforo con el nombre identificador_semaforo
. El Núcleo decidirá si esto conlleva desbloquear a otros procesos.
Last updated