Академический Документы
Профессиональный Документы
Культура Документы
Tablade
Símbolos
Existen tres tipos generales de parsers para las gramáticas. Los métodos de análisis universales
como los algoritmos de Cocke-Younger-Kasami y de Earley son capaces de analizar cualquier
gramática, pero son demasiados ineficientes como para ser usados en los compiladores. Los
métodos mas empleados por los compiladores se clasifican en top-down (de arriba hacia abajo) y
bottom-up (de abajo hacia arriba). Como lo indican sus nombres, el método top-down construye
el árbol de derivación de arriba hacia abajo, o sea, de la raíz a las hojas, mientras que el bottom-
up lo construye de las hojas a la raíz.
Los métodos top-down y bottom-up mas eficientes trabajan bien solo para subclases de
gramáticas, pero algunas de estas subclases, como las gramáticas LL y LR, son lo
suficientemente expresivas para describir la mayoría de las construcciones sintácticas de los
lenguajes de programación.
G = ( N, T, P, S )
Donde:
N: conjunto de símbolos No-terminales. Utilizados para generar las palabras o cadenas
del lenguaje
T: Conjunto de símbolos terminales. Representan el alfabeto del lenguaje, aunque en la
práctica, en la implementación de un compilador, son los Tokens del lenguaje.
P: Conjunto de reglas de producción. Es el centro de la gramática. Son reglas que
describen cómo son generadas las cadenas. Una regla de producción es un par de cadenas
tomadas de:
N x (N ∪ T)*
Al primer elemento se le llama símbolo de la parte izquierda y es un símbolo No
terminal. El segundo elemento, llamado, parte derecha, es una cadena formada por
símbolos terminales y/o no terminales ó incluso vacía (ε ). Usualmente las reglas de
producción se representan:
A -> α Y se lee: A produce α
S: Es el símbolo inicial ó axioma de la gramática. Es un símbolo No terminal.
Ejemplo 1:
G = ( { S }, { 0, 1 }, P, S )
P:
S -> 0 S 1
S -> ε
En este ejemplo:
-Hay un solo símbolo no terminal (S)
-Hay dos símbolos terminales (0 y 1)
-Hay dos reglas de producción
-El símbolo inicial es S.
Conceptos relacionados
Forma sentencial: Una forma sentencial es un tipo especial de cadena y se define como
sigue:
a) S (el símbolo inicial) es una Forma Sentencial (FS)
b) Si αBγ es una FS y además B -> β ∈ P entonces αβγ es también una FS
Sentencia: Es una una forma sentencial que sólo contiene símbolos terminales.
L(G) = { w | S ⇒* w donde w ∈ T* }
En otras palabras, el lenguaje generado por una gramática es el conjunto de todas las
cadenas que se pueden obtener a partir de derivaciones.
Ejemplo2:
G = ( { E, T, F }, { +, *, (, ), id }, P, E )
P:
E -> E + T
E -> T
T -> T * F
T -> F
F -> ( E )
F -> id
En esta gramática hay tres símbolos no terminales, cinco terminales, seis reglas de
producción y el símbolo inicial es E.
Ejercicios
1) Realizar la derivación de las cadenas:
a) id + id
b) id * id
c) id
d) id + id * id
e) ( id + id ) * id
f) ( id * id )