Cognitive Science">
Tema 5
Tema 5
Tema 5
SÍMBOLO
Es una entidad abstracta, que no se va a definir. Normalmente los símbolos son letras
(a,b,c,…z), dígitos (0,1,2…9) y otros caracteres (+,*,/,-,?...).
Un símbolo también puede estar formado por varias letras o caracteres, como las
palabras reservadas de un lenguaje de programación son símbolos de dicho lenguaje.
VOCABULARIO O ALFABETO
Un vocabulario o alfabeto es un conjunto finito de símbolos, no vacío. Para definir que
un símbolo a pertenece a un alfabeto V, se utiliza la siguiente notación aÃŽV.
Los alfabetos se definen por enumeración de los símbolos que contienen, podemos ver
CADENA
Una cadena es una secuencia finita de símbolos de un determinado alfabeto.
LONGITUD DE CADENA
La longitud de una cadena consiste en el número de símbolos pertenecientes a la
cadenaCADENA VACÍA
Se denomina cadena vacía, que no tiene símbolos y se denota con l, por lo que su
longitud es :
|l|®0
CONCATENACIÓN DE CADENAS
Sean A y B dos cadenas cualesquiera, se denomina concatenación de A y B a una
nueva cadena AB constituida por los símbolos de la cadena A seguidos por los de la
cadena B.
UNIVERSO DEL DISCURSO
El conjunto de todas las cadenas que se pueden formar con los símbolos de un
alfabeto, se denomina universo del discurso V y se representa por W(V). Evidentemente
W(V) es un conjunto infinito. La cadena vacía pertenece a W(V)
GRAMÁTICA
“La gramática es un ente formal para especificar, de una manera finita, el conjunto de
cadenas de símbolos que constituyen un lenguaje" . La gramática genera o describe un
lenguaje.
AUTÓMATA
Los Procesadores de Lenguaje un autómata es una construcción lógica que recibe
como entrada una cadena de símbolos y produce una salida indicando si dicha cadena
pertenece o no a un determinado lenguaje.
LENGUAJE
Conjunto de sonidos articulados con que el hombre manifiesta lo que piensa o siente.
Sistema de comunicación verbal. Manera de expresarse. Conjunto de señales que dan
a entender algo. El lenguaje de los ojos, el de las flores. En Informática Conjunto de
signos y reglas que permiten la comunicación con un ordenador.
PALÍNDROMOS
Cadenas que se leen igual hacia delante, que hacia atrás. Por ejemplo, ORURO
● G = (V, T, P, S)
● V – conjunto de símbolos variables
● T – conjunto de símbolos terminales
● S Є V, símbolo inicial
● P – conjunto de reglas de producción: A → α, con α sucesión de símbolos de V U T,
eventualmente vacía (α = ε)
Sea G = (N, T, S, P) una gramática libre de contexto, sea A Є N una variable. Diremos
que un árbol TA= (N, E) etiquetado es un árbol de derivación asociado a G si verifica las
propiedades siguientes:
Para cada cadena del lenguaje generado por una gramática es posible construir (al
menos) un árbol de derivación, en el cual cada hoja tiene como rótulo uno de los
símbolos de la cadena.
A → BC o
A→ao
Variables accesibles:
● Si existe una derivación desde el símbolo inicial que contiene X, es decir, existe $ → * α
Xβ donde α, β Є∑*
Variables generativas:
● Si existe una derivación desde el la variable que produce una sentencia , es decir, existe X
→* ω donde ω Є *T.
Variables útiles:
● Si existe una derivación desde el símbolo inicial usando que produce una sentencia ω, es
decir, existe $ →* α X β →*ω donde α, β Є ∑* y ω Є ∑*T.
Una GLC es ambigua si existe una cadena w Є L(G) que tiene más de una derivación
por la izquierda o más de una derivación por la derecha o si tiene dos o más arboles de
derivación .
Dentro del estudio de gramáticas existen dos tipos fundamentales de ambigüedad, los
cuales son:
● Ambigüedad Inherente:
Las gramáticas que presentan este tipo de ambigüedad no pueden utilizarse para
lenguajes de programación, ya que por más transformaciones que se realicen sobre
ellas, nunca se podrá eliminar completamente la ambigüedad que presentan:
Se construye el árbol de análisis sintético partiendo del símbolo inicial y aplicando las
producciones mediante derivaciones por la izquierda, el símbolo a expandir es el que
esta mas a la izquierda.
Analizador Ascendente:
FIRST: Sea G := (V; ∑; Q0; P) una gramática libre de contexto. Para cada forma sentencial α Є
(V U ∑)* y para cada k Є N definiremos la función.
En otras palabras, el operador F IRST k asocia a cada forma sentencial los primeros k
símbolos de cualquier forma terminal alcanzable desde α mediante derivaciones “masa
la izquierda".
FOLLOW: Con las mismas notaciones anteriores, para cada forma sentencial α Є (V U ∑)*
definiremos la función FOLLOWG GK (α) del modo siguiente.
Hay que señalar que los posibles errores ya deben estar considerados al diseñar un
lenguaje de programación. Por ejemplo, considerar si cada proposición del lenguaje de
programación comienza con una palabra clave diferente (excepto la proposición de
asignación, por supuesto). Sin embargo, es indispensable lo siguiente:
Errores Sintácticos.
Errores semánticos.
Un lenguaje con comprobación fuerte de tipos es capaz de garantizar que los
programas se pueden ejecutar sin errores de tipo, por lo que los errores de tipo se
detectarán siempre en tiempo de compilación.
Como mínimo, ante un error, un comprobador de tipos debe informar de la naturaleza y
posición del error y recuperarse para continuar con la comprobación del resto del
programa a analizar.
● ANTLR.
● GNU bison.
● Grammatica.
● JavaCC.
● Yacc.