Snostorm (Snostorm3) es una versión del lenguaje SNOBOL4 con construcciones de programación estructurada añadidas. Compensa la casi ausencia de construcciones de programación estructurada en SNOBOL4 proporcionando instrucciones IF, ELSEIF, ELSE, LOOP, CASE y PROCEDURE, entre otras. Fue diseñado e implementado originalmente por Fred G. Swartz como un preprocesador para SPITBOL que se ejecutaba bajo el Michigan Terminal System (MTS) en el Centro de Computación de la Universidad de Michigan durante la década de 1970. [1]
Funciones añadidas
Las características agregadas incluyen operadores lógicos, estructuras de control que incluyen procedimientos, bloques de inicialización, comentarios mejorados y control de listado. [1]
La gramática incluye estas construcciones añadidas: [1]
- Operadores lógicos
- Operadores lógicos AND, OR y NOT.
- Estructuras de control
- Sentencias IF, ELSEIF, ELSE y ENDIF.
- Instrucciones LOOP, LOOP WHILE, LOOP UNTIL, LOOP FOR, EXITLOOP, NEXTLOOP, ENDLOOP y ENDLOOP REPEAT.
- Sentencias DOCASE, CASE, ELSECASE y ENDCASE.
- Declaraciones PROCEDIMIENTO (PROC), EXITPROCEDURE (EDITPROC) y ENDPROCEDURE (ENDPROC).
- Inicialización
- Sentencias INITIAL y ENDINITIAL.
- Comentarios mejorados
- Comentarios que comienzan con un asterisco (*) en columnas distintas de la columna 1.
- Líneas en blanco tratadas como comentarios.
- Control de listado
- Sentencias EJECT, TÍTULO, SUBTÍTULO, ESPACIO, LIST ON, LIST OFF, LIST PUSHON, LIST PUSHOFF y LIST POP.
Además, MTS Snostorm proporciona opciones para la impresión bonita y para la depuración con el compilador Spitbol.
La sintaxis de Snostorm es en gran medida insensible a los espacios y nuevas líneas, pero no del todo debido a su dependencia de SNOBOL4 para su ejecución.
Ejemplo
Un programa SNOBOL4 como el que se proporciona en The SNOBOL4 Programming Language de Griswold, Poage y Polonsky [2] seguido por el mismo programa reescrito en Snostorm. [1]
- El programa original SNOBOL4.
...
LEER SALIDA = ENTRADA : F ( MOSTRAR )
TEXTO = SALIDA
SIGUIENTE TEXTO CARACTER = : F ( LEER )
CONTAR < CH > = CONTAR < CH > + 1 :( SIGUIENTE )
MOSTRAR SALIDA =
BUCLE LETRAS CARACTER = : F ( FIN )
SALIDA = NE ( CONTAR < CH >) CH ' OCURRE ' CONTAR < CH > ' VECES'
+ :( BUCLE )
FIN
- El mismo programa, reescrito en Snostorm.
...
BUCLE MIENTRAS TEXTO = ENTRADA
SALIDA = TEXTO
BUCLE MIENTRAS TEXTO CHAR =
CONTAR<CH> = CONTAR<CH> + 1
FINAL DEL BUCLE
FINAL DEL BUCLE
SALIDA =
BUCLE MIENTRAS LETRAS CHAR =
SI NE(CONTAR<CH>)
SALIDA = CH ' OCURRE ' CONTAR<CH> ' VECES '
FINALIZAR SI
FINAL DEL BUCLE
FIN
Usar
Además de su uso en los ocho a quince sitios que ejecutaban el Michigan Terminal System, [1] existió un compilador Snostorm3 en el University College London (UCL) de 1982 a 1984 y funcionaba compilando Snostorm3 en SNOBOL4, que luego podía ejecutarse utilizando el intérprete SNOBOL4 o utilizando un compilador SPITBOL para crear un ejecutable. [ cita requerida ]
Referencias
- ^ abcde "SNOSTORM", MTS Volume 9: SNOBOL4 en MTS , Computing Center, University of Michigan, junio de 1979, páginas 99-120. Consultado el 1 de septiembre de 2014.
- ^ Griswold, Ralph E., JF Poage e IP Polonsky (1968). El lenguaje de programación SNOBOL4 . Englewood Cliffs, Nueva Jersey: Prentice Hall, ISBN 0-13-815373-6 .
Enlaces externos
- Descripción de Snostorm, 2010 por Fred Swartz.
- "El regreso de SNOSTORM", archivos fuente para una reimplementación moderna.
- Código fuente y objeto de MTS para el preprocesador Snostorm, componente 678 en MTS Distribution 6.0, abril de 1988, disponible en Bitsavers y en el archivo digital Deep Blue de la UM.