My signature
Principia El Lenguaje de Programación Stop

Solo una barra

IV.- Especificaciones de Implementación.

1.- Consideraciones.

En la implementación de Stop las siguientes consideraciones aplican:

  1. No existen palabras reservadas. Errores de sintaxis pueden ser provocados por la utilización del nombre de una instrucción de Stop como nombre de variable o procedimiento, pero nada impide que la palabra sea usada en forma inhibida e invocada usando EVALUATE.
  2. El lenguaje no es sensible a altas o bajas (case insensitive). Los elementos podrán ser escritos en un programa o ingresados por teclado en mayúsculas o minúsculas; la única excepción a esta regla son los códigos de formato de cadena.

Al ser desplegados en pantalla, los objetos se presentan (formatean) de la siguente forma:

ENTERO.
Sólo se presentan con signo los valores negativos.

REAL.
Valores positivos y negativos de la mantisa se presentan signados junto con el valor signado del exponente, ambos separados por una letra "E".

BINARIO.
Sólo se presentan con el prefijo "0x".

CADENA.
Se presentan tal cual, evaluando las cadenas de formato.

ARREGLO.
El objeto contenido en la localidad del arreglo al que se esté haciendo referencia se presentará formateado acorde a su tipo de dato.

INHIBIDOS.
Se presentan como cadenas y precedidos por un apostrofe ('). Un arreglo se presentará seguido de dos paréntesis y un procedimiento de dos llaves.

2.- Comportamiento.

2.1.- Conversión y equivalencia de tipos de datos.

Lo ideal sería tener una matriz única que describiera la posible conversión de datos al usar los diversos operadores relacionales, lógicos y aritméticos. Sin embargo, por las múltiples excepciones que se pueden presentar, la mejor alternativa es presentar una matriz por cada operador.

+

ObjA2

ObjB1

ENTERO REAL BINARIO CADENA ARREGLO INHIBIDO
ENTERO ENTERO REAL BINARIO CADENA1 ERROR2 ERROR2
REAL REAL REAL ERROR2 CADENA1 ERROR2 ERROR2
BINARIO BINARIO ERROR2 BINARIO CADENA1 ERROR2 ERROR2
CADENA CADENA1 CADENA1 CADENA1 CADENA1 ERROR2 CADENA1
ARREGLO ERROR2 ERROR2 ERROR2 ERROR2 ERROR2 ERROR2
INHIBIDO ERROR2 ERROR2 ERROR2 CADENA1 ERROR2 ERROR2

1 El resultado es la cadena "ObjAObjB". Para el caso de objetos inhibidos no se incluye el operador de inhibición o identificadores adicionales del tipo de dato (como paréntesis o llaves). Cualquier objeto diferente a cadena se convierte primero a cadena.
2 Error por tipos de datos incompatibles.


-

ObjA2

ObjB1

ENTERO REAL BINARIO CADENA ARREGLO INHIBIDO
ENTERO ENTERO REAL BINARIO CADENA3 ERROR2 ERROR2
REAL REAL REAL ERROR2 ERROR2 ERROR2 ERROR2
BINARIO BINARIO ERROR2 BINARIO ERROR2 ERROR2 ERROR2
CADENA CADENA4 ERROR2 ERROR2 CADENA5 ERROR2 ERROR2
ARREGLO ERROR2 ERROR2 ERROR2 ERROR2 ERROR2 ERROR2
INHIBIDO ERROR2 ERROR2 ERROR2 CADENA5 ERROR2 ERROR2

3 El resultado es una cadena a la que se le han quitado el número de caracteres indicado por ObjB a partir de la posición más a la izquierda y contando hacia la derecha. Una cadena vacía se deja si ObjA > |cadena|.
4 El resultado es una cadena a la que se le han quitado el número de caracteres indicado por ObjA a partir de la posición más a la derecha y contando a la izquierda. Una cadena vacía se deja si ObjA > |cadena|.
5 El resultado es la cadena que resulta de quitar de ObjA la aparición de ObjB (sólo una vez en caso de haber más ocurrencias). Una cadena vacía se deja si ObjA = ObjB. Si |ObjA| = 0 ó |ObjB| = 0, ObjA se deja intacto.


*

ObjA2

ObjB1

ENTERO REAL BINARIO CADENA ARREGLO INHIBIDO
ENTERO ENTERO REAL BINARIO CADENA6 ERROR2 ERROR2
REAL REAL REAL ERROR2 ERROR2 ERROR2 ERROR2
BINARIO BINARIO ERROR2 BINARIO ERROR2 ERROR2 ERROR2
CADENA CADENA6 ERROR2 ERROR2 ERROR2 ERROR2 ERROR2
ARREGLO ERROR2 ERROR2 ERROR2 ERROR2 ERROR2 ERROR2
INHIBIDO ERROR2 ERROR2 ERROR2 ERROR2 ERROR2 ERROR2

6 Cerradura sobre la cadena. Una cadena vacía o valores menores a 1 producirán una cadena vacía.

/

ObjA2

ObjB1

ENTERO REAL BINARIO CADENA ARREGLO INHIBIDO
ENTERO ENTERO7 REAL BINARIO7 ERROR2 ERROR2 ERROR2
REAL REAL REAL ERROR2 CADENA8 ERROR2 ERROR2
BINARIO BINARIO7 ERROR2 BINARIO7 ERROR2 ERROR2 ERROR2
CADENA ERROR2 CADENA8 ERROR2 CADENA9 ERROR2 ERROR2
ARREGLO ERROR2 ERROR2 ERROR2 ERROR2 ERROR2 ERROR2
INHIBIDO ERROR2 ERROR2 ERROR2 CADENA9 ERROR2 ERROR2

7 División entera.
8 El resultado es la subcadena que se extrae del objeto cadena tomando como punto de inicio la parte entera de la mantisa del objeto real y como contador la parte fraccionaria. Una cadena vacía se deja si alguno de los parametros es igual a 0 o si el punto de inicio > |cadena|.
9 El resultado es la cadena que resulta de quitar de ObjA todas las ocurrencias indicadas por ObjB. Una cadena vacía se deja si ObjB+ = ObjA. Si |ObjB| = 0 ó si |ObjA| = 0, ObjA se deja intacto.


\

ObjA2

ObjB1

ENTERO REAL BINARIO CADENA ARREGLO INHIBIDO
ENTERO ENTERO10 REAL10 BINARIO10 ERROR2 ERROR2 ERROR2
REAL REAL10 REAL10 ERROR2 ERROR2 ERROR2 ERROR2
BINARIO BINARIO10 ERROR2 BINARIO10 ERROR2 ERROR2 ERROR2
CADENA ERROR2 ERROR2 ERROR2 ERROR2 ERROR2 ERROR2
ARREGLO ERROR2 ERROR2 ERROR2 ERROR2 ERROR2 ERROR2
INHIBIDO ERROR2 ERROR2 ERROR2 ERROR2 ERROR2 ERROR2

10 Residuo de la división.

^

ObjA2

ObjB1

ENTERO REAL BINARIO CADENA ARREGLO INHIBIDO
ENTERO ENTERO REAL BINARIO ERROR2 ERROR2 ERROR2
REAL REAL REAL ERROR2 ERROR2 ERROR2 ERROR2
BINARIO BINARIO ERROR2 BINARIO ERROR2 ERROR2 ERROR2
CADENA ERROR2 ERROR2 ERROR2 ERROR2 ERROR2 ERROR2
ARREGLO ERROR2 ERROR2 ERROR2 ERROR2 ERROR2 ERROR2
INHIBIDO ERROR2 ERROR2 ERROR2 ERROR2 ERROR2 ERROR2

Para los operadores relaciones se presenta una matriz que explica el tipo de valor esperado. Se considera que todo tipo de objeto es factible de ser comparado para evitar errores en run-time, pero hay tipos que no es posible comparar e invariablemente se devuelve una respuesta de FALSO.

<, <=, =, =>, >, ><

ObjA2

ObjB1

ENTERO REAL BINARIO CADENA ARREGLO INHIBIDO
ENTERO 1/011 1/011 1/011 012 012 012
REAL 1/011 1/011 012 012 012 012
BINARIO 1/011 012 1/011 012 012 012
CADENA 012 012 012 1/013 012 1/014
ARREGLO 012 012 012 012 012 012
INHIBIDO 012 012 012 1/014 012 1/015

11 Las comparaciones se hacen por valor.
12 Aunque los elementos se consideran incompatibles para efectuar una comparación no se marca error y se devuelve un valor de FALSO.
13 Las comparaciones se hacen por contenido para igualdad y por valor ASCII para el resto.
14 Las comparaciones se hacen convirtiendo primero al objeto inhibido en cadena.
15 Ambos objetos se convierten en cadena antes de ser comparados.


2.2.- Condiciones de error en tiempo de ejecución.

Diversas situaciones se pueden presentar cuando un programa Stop se encuentra en ejecución. Se producirá una condición de error cuando se presente una de las siguientes condiciones:

  1. Número de argumentos insuficientes.
  2. Tipo de argumento equivocado

Ambos errores aplican tanto para instrucciones como operaciones. El primer tipo de error aplica a aquellas situaciones en las que no se encuentra la cantidad de argumentos requeridos para llevar a cabo la operación o instrucción indicada. El segundo tipo de error se presenta cuando la cantidad de argumentos esperados (elementos en la pila) se encuentra pero algunos o varios de estos no corresponden a los que se necesitan. Para mayor detalle sobre el tipo de dato esperado por las diversas operaciones o instrucciones de Stop debe consultarse los diagramas de pila abstractos.




Este texto puede ser copiado y reproducido libremente mientras su contenido no sea alterado, se cite la fuente y referencias. Las marcas registradas son responsabilidad de sus dueños y el autor de este texto no tiene relación alguna con estos. M. en C. Eduardo René Rodríguez Avila. © Todos los derechos reservados.
Ultima actualización: .