Descripción del Lenguaje

1. Funciones y Expresiones

Un programa Prolan es una serie de comandos o funciones (f1) (f2)...(fn) que se ejecutan secuencialmente. Toda función tiene la forma:

(nombre argumentos)

Las funciones siempre retornan un valor que puede ser utilizado como argumento de otra función circundante. El programa en su conjunto devolverá el valor retornado por la última función evaluada.

Los argumentos de las funciones deben separarse con espacios en blanco. Un argumento es, en general, una expresión que puede ser una variable, una constante o una llamada a función.

2. Comentarios

Los comentarios son textos de anotación que no forman parte del código ejecutable y, por lo tanto, no afectan el tiempo de ejecución de los programas. El carácter ; (punto y coma) se utiliza para indicar el inicio de un comentario que se extiende automáticamente hasta el final de la línea fuente en la cual aparece.

Siempre es aconsejable incluir comentarios en el código fuente para evitar que con el paso del tiempo los programas se conviertan en una sucesión indescifrable de paréntesis abiertos y cerrados.

3. Símbolos

Prolan utiliza símbolos para identificar funciones, variables y constantes predefinidas. Un símbolo es insensible a las mayúsculas y minúsculas y puede ser, en principio, cualquier secuencia de caracteres que no contenga espacios ni paréntesis. Sin embargo, los símbolos que representen nombres de variables o argumentos no deben coincidir con ninguna de las constantes predefinidas ni comenzar con un carácter de significado especial ya que que el intérprete primero los consideraría como tales al procesar las expresiones.

Los caracteres con un significado especial son los siguientes:

0..9  dígitos del cero al nueve utilizados como inicio de constante numérica
+ -   signos de suma y resta
"      comilla doble utilizada como inicio y fin de constante de cadena
#    signo de número utilizado como prefijo de parámetro

Las símbolos siguientes son constantes predefinidas:

V|T            valor verdadero
F               valor falso
nada|nil    valor nulo
PI              la constante 3.14159265358979

Nótese que el valor nada es distinto de 0, que es un número, y de la cadena vacía "", que es una cadena.

Prolan también ofrece constantes simbólicas para los códigos de todas las opciones de configuración, las hojas del lanzamiento, los tipos enumerados y los valores de las opciones de ubicación.

4. Tipos de dato

Los diferentes tipos de dato que soporta Prolan se derivan todos de un mismo tipo genérico variante que ocupa 16 bytes de memoria y cuyas instancias pueden agruparse en las categorías siguientes:

Enteros
Números enteros de 8, 16, 32 o 64 bits. Los enteros pueden introducirse tanto en notación decimal como hexadecimal, esta última prefijada por el par de caracteres 0x (cero y equis). Números tales como 2, -3, 134566 y 0xA10F son enteros válidos.

Según la cantidad de bits representados, los enteros pueden ser de tipo:

Byte: 8 bits sin signo (0..255),
Word: 16 bits sin signo (0..65535),
Integer: 32 bits con signo (-2147483648..2147483647)
Int64: 64 bits con signo (-2^63..2^63-1).

El intérprete de Prolan asigna automáticamente los tipos integer o int64 a los valores enteros según sean menores o iguales que el máximo integer o no, respectivamente. Por esta razón, los tipos byte y word solo pueden crearse indirectamente como resultado de evaluar algunas funciones. Cuando se combinan varios tipos de enteros en una expresión, el intérprete automáticamente hace la conversión a integer o int64 por la misma regla anterior. Si el resultado entero de una expresión es mayor que el máximo int64 automáticamente se convierte a double.
Reales
Números con punto decimal. Los reales se pueden expresar en notación científica concatenando un número decimal o mantisa con el carácter e o E seguido del exponente con signo al cual se eleva la base 10 para multiplicarla por la mantisa. Por ejemplo, 0.0034 es lo mismo que 3.4e-3 (3.4*10^-3). Números tales como 5.67, -0.34 y 5000000000.0 son reales válidos. Sin embargo, el número .57 no es un real válido. En estos casos debe indicar el cero explícitamente: 0.57.

Según la precisión de la mantisa, los números reales pueden ser de tipo:

Double: 15-16 dígitos significativos en 64 bits (-5.0 x 10^324 .. 1.7 x 10^308) . El tipo double se asigna automáticamente a todas las constantes reales, las coordenadas de los vectores y las expresiones que operan números reales aritméticamente o con las funciones matemáticas.
Single: 7-8 dígitos significativos en 32 bits (-1.5 x 10^45 .. 3.4 x 10^38). El tipo single se asigna a los valores de dimensión de los objetos de CORTE.
Currency: 10-20 dígitos significaticos en 64 bits (-922337203685477.5808.. 922337203685477.5807. El tipo currency o moneda se asigna a los valores de costo del lanzamiento.
Cadenas
Secuencias de caracteres. Las cadenas se definen explícitamente escribiendo un texto entre comillas dobles como en "Esto es una cadena en Prolan" y pueden concatenarse en varias líneas de código poniendo el carácter _ (guión bajo) al final de cada una excepto la última, siempre inmediatamente después de las comillas. Por ejemplo:

"Esto es una cadena "_
"en dos líneas de código."

El tipo cadena de Prolan es String.
Booleanos
Valores V|T (verdadero) y F (falso). El tipo booleano de Prolan es Boolean.
Fechas
Valores de fecha. Las fechas se asignan a la Edad de los archivos de lanzamiento. El tipo fecha de Prolan es Date.
Arreglos
Colecciones indizadas de elementos almacenados secuencialmente. Los arreglos pueden contener varias dimensiones, todas indizadas con números enteros comenzando en 1. El tipo arreglo de Prolan es Array Variant.
Objetos
Referencias que contienen la dirección de memoria de objetos creados en Prolan o mantenidos por la aplicación CORTE.

Prolan soporta los siguientes tipos de objeto:

VarProlanFile: archivo creado con la función abrefich.
VarCorteObj: objeto de la aplicación CORTE.
VarCorteWin: ventana del entorno de CORTE.
VarVector: vectores de dos dimensiones con las componentes <x,y>.
Dispatch: interface COM.
Funciones
Referencias a las funciones predefinidas, definidas por el usuario o extensiones (plugins) de Prolan. El tipo función de Prolan es VarProlanFun.

5. Variables

Las variables son datos que se modifican dinámicamente durante la ejecución del programa asumiendo el tipo del último valor asignado. Por su alcance y durabilidad se clasifican en locales o globales. Las locales existen solamente durante la ejecución de la función de usuario en la cual fueron definidas (función defun) y no pueden ser accedidas fuera del cuerpo de dichas funciones. Las globales se crean con la primera ocurrencia de sus símbolos, existen todo el tiempo que dure la ejecución del programa y pueden ser accedidas desde cualquier función. Exceptuando los argumentos de las funciones, todas las variables se inicializan con nada y se asignan con las funciones sea, arreglo y porcada.

6. Argumentos

Los argumentos son las variables de las funciones que reciben los valores retornados por las expresiones utilizadas en las llamadas. Prolan soporta el traspaso de argumentos por valor o por referencia. En el primer caso, los valores de las expresiones se copian en las variables locales correspondientes las cuales pueden modificarse sin afectar las variables originales, si las hubo. En el segundo caso, se copian las direcciones de las variables utilizadas en la llamada y no sus contenidos, es decir, las variables locales correspondientes serían referencias de las originales y, por lo tanto, modifican el contenido de estas últimas.

Nótese que cuando se traspasan variables de objeto, por ser ellas mismas referencias, los objetos referenciados sí pueden modificarse dentro del cuerpo de las funciones aún cuando las variables originales se traspasen por valor.

6.1 Conversión de argumentos

Cuando una función predefinida requiere un argumento de un tipo de dato específico, que es distinto del tipo utilizado en la llamada, automáticamente se intentará realizar la conversión correspondiente y si ello no fuera posible se produce una excepción. El valor nada se convierte al número 0 (cero) o la cadena "" (vacía) en los argumentos numéricos o de cadena, respectivamente.

7. Arreglos

Los arreglos son el único tipo estructurado que soporta Prolan. Dado que los arreglos se copian completamente en la asignación, es buena práctica traspasarlos por referencia a las funciones para reducir el tiempo de ejecución de los programas.

Consulte el ejemplo QuickSort.plan suministrado con la instalación.

8. Módulos de programa

Los programas Prolan pueden dividirse en varios módulos de código fuente, almacenados en archivos diferentes y concatenados con la función incluye. Los módulos Prolan no se compilan independientemente ni enlazan como hacen otros lenguajes. El intérprete sencillamente los procesa como partes separadas de un mismo código fuente.