Lenguaje De Lisp
Enviado por carolai • 18 de Mayo de 2012 • 2.214 Palabras (9 Páginas) • 582 Visitas
PROLOG SYNTAX
Las unidades fundamentales de la sintaxis de Prolog son átomos, números, estructuras y vari ables. Vamos a discutir los números y las estructuras adicionales en el capítulo 3. Los átomos, los números,
estructuras, y las variables en conjunto se conoce como TÉRMINOS.
Los átomos se utilizan como nombres de las personas y los predicados. Un átomo normal
comienza con una letra minúscula y puede contener letras, dígitos y el subrayado
marca (_). Los siguientes son ejemplos de átomos: x
Georgia
ax123aBCD
abcd_x_and_y_a_long_example
Si un átomo se encierra entre comillas simples, que pueden contener cualquier carácter que sea,
pero hay dos puntos a tener en cuenta. En primer lugar, una cita que ocurre dentro de comillas simples es
Normalmente se escribe doble. En segundo lugar, en algunas aplicaciones, una barra invertida dentro de un
átomo tiene un significado especial, para más detalles véase el Apéndice A y el manual. Por lo tanto,
los siguientes son los átomos:
'Florida'
'un átomo de muy larga con espacios en blanco es'
'12 $ 12 $ '
' a'
'don ' ' t preocupes '
'de atrás \ \ barras de'
De hecho, '32 'es un átomo no, igual al número 32. Incluso ' ' es un átomo (el vacío
átomo), a pesar de que rara vez se utiliza.
Los átomos compuestos enteramente de ciertos caracteres especiales no tienen que ser por escrito
entre comillas, por ejemplo, '->' (sin comillas) es un átomo de legitimidad. (Vamos a
conocer este dato en el capítulo 6.) Normalmente, no hay límite en la longitud de
un átomo, con o sin comillas, pero revise el manual de su aplicación para
estar seguro.
Una estructura normalmente consta de un átomo, un paréntesis de apertura, una o más
argumentos separados por comas y un paréntesis de cierre. Sin embargo, un átomo por
es en sí mismo, en sentido estricto, también una estructura, sin argumentos.
Todos los siguientes son estructuras:
una (b, c, d)
located_in (Atlanta, Texas)
located_in (X, Georgia)
mother_of (Cathy, la melodía)
'un extraño?! Atom '(xxx, yyy, zzz)
i_have_no_arguments
El átomo al principio se llama el funtor de la estructura. (Si algunos de los
los argumentos son también las estructuras, entonces el funtor al principio de todo el asunto es
llama el funtor principal.) Hasta ahora hemos utilizado sólo en las estructuras de las consultas, los hechos,
y las reglas. En todos estos casos, el funtor significaba el nombre de un predicado. funtores
tienen otros usos que se darán cita en el capítulo 3.
En realidad, incluso una regla es una estructura completa; la rule
a (X): - B (X).
podría igualmente ser escrito
:-( una (X), b (X)).
o, posiblemente, en algunas implementaciones,
': -' (una (X), b (X))
El functor ': -' se llama un operador infijo, ya que normalmente se escribe entre
sus argumentos en lugar de en frente de ellos. En el capítulo 6 veremos cómo crear
funtores otros con esta característica especial.
Las variables comienzan con mayúsculas o la marca de subrayado, como los siguientes: Un Which_Ever Resultado
_howdy Xx _12345
Un nombre de variable puede contener letras, dígitos y guiones bajos.
Bases de conocimiento Prolog se escriben en formato libre. Es decir, usted es libre para insertar espacios o empezar una nueva línea en cualquier momento, con dos restricciones: no se puede romper un átomo o un nombre de variable, y no se puede poner cualquier cosa entre un functor y el la apertura de paréntesis, que presenta sus argumentos. Es decir, en lugar de
located_in(atlanta,georgia).
eres bienvenido a
located_in( atlanta,
georgia ).
pero no
located_in (at lanta,georgia). % two syntax errors!
La mayoría de las implementaciones de Prolog requieren todas las cláusulas de un predicado
que se agrupan en el archivo desde el que las cláusulas se cargan. Es decir, se puede
decir
mother(melody,cathy).
mother(eleanor,melody).
father(michael,cathy).
father(jim,melody).
pero no
mother(melody,cathy). % wrong!
father(michael,cathy).
mother(eleanor,melody).
father(jim,melody).
Los resultados de la violación de esta norma son de hasta el implementador. Prólogos hacen muchos
no se opuso en absoluto. Quintus Prolog ofrece mensajes de advertencia, pero carga todas las cláusulas correctamente. Unos pocos Prólogs ignoran algunas de las cláusulas sin previo aviso. Consulte los Apéndices A y B para obtener más información acerca de los conjuntos contiguos de cláusulas.
DEFINICIÓN DE LAS RELACIONES
El archivo FAMILY.PL (Figura 1.4) contiene información sobre la familia de
los autores. Se exponen hechos en términos de la madre y el padre relaciones, cada uno de ellosvincula a dos individuos. En cada par, hemos decidido incluir a los padres en primer lugar una hijo o segunda hija. FAMILY.PL puede responder a preguntas como "¿Quién es la madre de Cathy?" -
?- mother(X,cathy).
X = melody
o "¿Quién es la madre de Hazel?" -
?- mother(hazel,A).
A = michael
A = julie
Más importante aún, podemos definir otras relaciones en términos de los que ya están definidos.
Por ejemplo, vamos a definir "padre." El padre de X es el padre o la madre de X. Desde
hay dos maneras de ser un padre, dos normas son necesarias:
parent(X,Y) :- father(X,Y).
parent(X,Y) :- mother(X,Y).
% File FAMILY.PL
% Part of a family tree expressed in Prolog
% In father/2, mother/2, and parent/2,
% first arg. is parent and second arg. is child.
father(michael,cathy) .
father(michael,sharon ).
father(charles_gordon ,mi ch ae l) .
father(charles_gordon ,ju li e) .
father(charles,charle s_g or do n) .
father(jim,melody).
father(jim,crystal).
father(elmo,jim).
father(greg,stephanie ).
father(greg,danielle) .
mother(melody,cathy).
mother(melody,sharon) .
mother(hazel,michael) .
mother(hazel,julie).
mother(eleanor,melody
...