Está en la página 1de 7

Ejemplo Gramática

El lenguaje Prolog
Descripción del lenguaje
El lenguaje Prolog es un lenguaje lógico:

Un programa es una secuencia de hechos y reglas seguidas de una consulta

• Un hecho es un funtor seguido por un punto (.).


• Una regla es un funtor seguido por el operador ":-" seguido por una secuencia de uno o más
funtores separados por comas y seguidos por un punto.
• Una consulta es el operador "?-" seguido por una secuencia de uno o más funtores separados
por comas y que termina en un punto.
• Un funtor es un nombre que puede o no estar seguido de una secuencia de argumentos
separados por comas entre paréntesis.
• Un argumento es un funtor, un número , una variable o una lista
• Las listas:
– [ ] es una lista
– Si a1, ..., an son argumentos y L es una lista ENTONCES LAS SIGUIENTES TAMBIÉN SON
LISTAS:
• [ a1, ... , an | L]
• [ a1, ... , an ]
Descripción del lenguaje
El lenguaje Prolog es un lenguaje lógico:

Un programa es ena secuencia de hechos y reglas seguidas de una consulta

• Un hecho es un funtor seguido por un punto (.).


• Una regla es un funtor seguido por el operador ":-" seguido por una secuencia de uno o más
funtores separados por comas y seguidos por un punto.
• Una consulta es el operador "?-" seguido por una secuencia de uno o más funtores separados
por comas y terminando en un punto.
• Un funtor es un nombre que puede o no estar seguido de una secuencia de argumentos
separados por comas entre paréntesis.
• Un argumento es un funtor, un número , una variable o una lista
• Las listas:
– [ ] es una lista
– Si a1, ..., an son argumentos y L es una lista ENTONCES LAS SIGUIENTES TAMBIÉN SON
LISTAS:
• [ a1, ... , an | L]
• [ a1, ... , an ]
• Un nombre es una secuencia o cadena alfanumérica que comienza con una letra minúscula.
• Un número es una secuencia de dígitos
• Una variable es una secuencia alfanumérica que comienza con una letra mayúscula.
El análisis léxico
Los TOKENS (compuestos) del lenguaje:

• Un nombre es una secuencia o cadena alfanumérica que comienza con una letra minúscula.
NOM ::= MIN (DIG | Min | MAY)*
• Un número es una secuencia de dígitos
NUM ::= DIG (DIG)*
• Una variable es una secuencia alfanumérica que comienza con una letra mayúscula.
VAR ::= MAY (DIG | Min | MAY)*

Sea DIG = 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9

Sea MAY = A | B | C | D | E | F | G | H | I | K | L | M | N
|O| P|Q|R|S|T|U|V|W|X| Y|Z

Sea MIN = a | b | c | d | e | f | g | h | i | k | l | m | n
|o| p|q|r|s|t|u|v|w|x| y|z
Gramática
Un programa es ena secuencia de hechos
y reglas seguidas de una consulta
• P  HRs C
• HRs  HRs HR Un hecho es un funtor seguido por un punto (.).
• HRs  HR
• HR  H Una regla es un funtor seguido por el
operador ":-" seguido por una
• HR  R secuencia de uno o más funtores
• H F. separados por comas y seguidos por un
punto.
• R  F :- Fs .
• C  ?- Fs .
Una consulta es el operador "?-"
• Fs  F seguido por una secuencia de
• Fs  Fs , F uno o más funtores separados
por comas y terminando en un
punto.
Gramática

• F  nom
• F  nom(As)
• AF
• A  num
• A  var
• A L Un argumento es un funtor, un número , una
variable o una lista
• As  A
• As  As , A
Un funtor es un nombre que puede o no estar
seguido de una secuencia de argumentos
separados por comas entre paréntesis.
Gramática
• [ ] es una lista
• Si a1, ..., an son argumentos y L es una lista ENTONCES LAS
SIGUIENTES TAMBIÉN SON LISTAS:
• [ a1, ... , an | L]
• [ a1, ... , an ]

• L  []
• L  [As]
• L  [As | A]

También podría gustarte