Articulo de referencia

CGOL

CGOL [ 1 ] [ 2 ] (pronunciado "see goll" ) es una sintaxis alternativa que presenta una notación algebraica extensible para el lenguaje de programación Lisp . Fue diseñado para ...

CGOL [ 1 ] [ 2 ] (pronunciado "see goll" ) es una sintaxis alternativa que presenta una notación algebraica extensible para el lenguaje de programación Lisp . Fue diseñado para MACLISP por Vaughan Pratt y posteriormente adaptado a Common Lisp . [ 3 ]

La notación de CGOL es una notación infija tradicional , al estilo de ALGOL , en lugar de la sintaxis de notación prefija tradicional de Lisp, uniformemente entre paréntesis. El analizador sintáctico de CGOL se basa en el diseño de Pratt para el análisis de precedencia de operadores de arriba hacia abajo , [ 4 ] [ 5 ] a veces denominado informalmente " analizador de Pratt ".

Semánticamente, CGOL es esencialmente solo Common Lisp, con algunas funciones adicionales de lectura e impresión.

CGOL puede considerarse una versión más exitosa de algunas de las ideas esenciales del proyecto LISP 2. LISP 2 fue el sucesor de LISP 1.5 y pretendía ofrecer la sintaxis de ALGOL. LISP 2 fue abandonado, mientras que el código fuente de CGOL aún se puede utilizar. Esto se debe a que, a diferencia de LISP 2, CGOL se implementa mediante funciones y macros portátiles escritas en Lisp, sin necesidad de modificar la implementación de Lisp.

Sintaxis

Existen notaciones especiales para muchas operaciones comunes de Common Lisp. Por ejemplo, se puede escribir una rutina de multiplicación de matrices de la siguiente manera:

para i en 1 a n hacer para k en 1 a n hacer ( ac := 0 ; para j en 1 a n hacer ac := ac + a ( i , j ) * b ( j , k ) ; c ( i , k ) := ac )

CGOL tiene una .operación infija (que hace referencia a la función de Common Lisp cons) y la @operación infija (que hace referencia a la función de Common Lisp append):

a.(b@c) = (ab)@c

El ejemplo anterior corresponde a este texto en Common Lisp nativo:

( IGUAL ( CONS A ( APEND B C )) ( APEND ( CONS A B ) C ))

CGOL se utiliza ofpara leer y establecer propiedades:

'padre' de x := 'hermano' de pariente de y

El ejemplo anterior corresponde a este texto en Common Lisp nativo:

( PUTPROP X ( GET ( GET Y RELATIVE ) 'BROTHER ) 'FATHER )

Esto ilustra cómo CGOL representa una función de dos argumentos:

x,y; 1/sqrt(x**2 + y**2)

El ejemplo anterior corresponde a este texto en Common Lisp nativo:

( LAMBDA ( X Y ) ( COCIENTE 1 ( RAÍZ CUADRADA ( MÁS ( EXP T X 2 ) ( EXP T Y 2 )))))

La sintaxis de CGOL se basa en datos, por lo que es modificable y extensible.

Estado y código fuente

Se sabe que CGOL funciona en Armed Bear Common Lisp . [ 6 ]

El código fuente de CGOL y algunos archivos de texto que contienen discusiones sobre el mismo están disponibles como software gratuito en el Repositorio de Inteligencia Artificial de la Universidad Carnegie-Mellon . [ 3 ]

Referencias

  1. Pratt, Vaughan R. CGOL: Una representación externa alternativa para usuarios de LISP. Documento de trabajo sobre IA n.º 121. Laboratorio de Inteligencia Artificial del MIT (Cambridge, MA). 1976.
  2. Pratt, Vaughan R. CGOL: una notación algebraica para usuarios de MACLISP. 27 de enero de 1977.
  3. 1 2 CGOL: Lenguaje similar a Algol que se compila en Common Lisp
  4. Pratt, Vaughan R. Precedencia de operadores de arriba hacia abajo. Actas del Simposio de la ACM sobre Principios de Lenguajes de Programación . 1973. pp. 41–51.
  5. Van De Vanter, Michael L. Formalización y prueba de corrección del sistema de lenguaje CGOL (Tesis de maestría). Informe técnico del Laboratorio de Ciencias de la Computación del MIT MIT-LCS-TR-147 (Cambridge, MA). 1975.
  6. CGOL en ABCL Desarrollo de la implementación de Armed Bear en Common Lisp blog.
Obtenido de " https://en.wikipedia.org/w/index.php?title=CGOL&oldid=1328340098 "