Вы находитесь на странице: 1из 9

INSTITUTO TECNOLÓGICO DE MATEHUALA.

Lenguajes y autómatas 1.

Actividad: investigación Generación de matriz predictiva


(cálculo first y follow).

Nombre: Rojas Puga Yulissa Elizabeth.


Conteras Carranza cruz.
Rodríguez blanco Uriel.
Numero de 15660293
control: 15660263
Carrera: ING. Sistemas Computacionales.
Semestre: Sexto Semestre.
Docente: Lic. Marta Beatriz Coronado Rosales
Periodo: Agosto – Diciembre 2017

Matehuala, S.L.P 17 de Mayo del 2018


Contenido

INTRODUCCION .............................................................................................................................. 3
DESARROLLO ................................................................................................................................. 4
GENERACIÓN DE MATRIZ PREDICTIVA (CÁLCULO FIRST Y FOLLOW). ........................ 4
FIRST .................................................................................................................................................... 7
FOLLOW ............................................................................................................................................ 8
BIBLIOGRAFIAS .............................................................................................................................. 9
INTRODUCCION

Entre el arsenal de herramientas del análisis estratégico y también el análisis de


posicionamiento de productos e incluso de personas, se intenta entender realidades
complejas mediante el uso de modelos simples.
En muchas ocasiones, estos modelos simples adoptan la forma de una matriz de
cuatro cuadrantes. Se establecen dos ejes de coordenadas con dos atributos
ortogonales y una clasificación ambigua del tipo alto / bajo. Cada eje se subdivide
en dos y el cruce de ambos genera cuatro cuadrantes...una matriz simple. Según
los modelos, a cada uno de esos cuadrantes se le asigna una forma de tratar los
elementos que en ella se encuadran o bien, simplemente se clasifican los elementos
en uno de esos cuadrantes.
Uno de estos modelos es el de la generación de matrices predictivas que nos ayuda,
entere otras cosas a construir tablas por ejemplo las tablas del análisis sintáctico
DESARROLLO

GENERACIÓN DE MATRIZ PREDICTIVA (CÁLCULO FIRST Y


FOLLOW).

FIRST: Si α es cualquier cadena de símbolos gramaticales, se


considera FIRST (α) como el conjunto de terminales que encabezan las
cadenas derivadas de α. Si α = * => λ, entonces λ también está en

FIRST (α). Para calcular FIRST(X) para algún símbolo X de la


gramática, se aplican las siguientes reglas hasta que no se pueda añadir
nada nuevo al conjunto

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 FIRST k asocia a cada forma sentencial


los primeros k símbolos de cualquier forma terminal alcanzable desde α
mediante derivaciones “masa a izquierda".

1. Si X es terminal, entonces FIRST(X) es {X}.


2. Si X es no terminal y existe la producción X → λ, entonces añadir λ a
FIRST(X).
3. Si X es no terminal y X → Y1 Y2... . Yk

Es una producción entonces, para todo i (con i variando desde 1 hasta


k) tal que Y1 , Y2 , ..., Yi-1 sean todos no terminales y FIRST(Y1),
FIRST(Y2), ..., FIRST(Yi-1) contengan todos λ, se añaden todos los
símbolos no nulos de FIRST(Yi ) a FIRST(X). Finalmente, si λ está en
FIRST (Yj) para j = 1, 2, ..., k (o sea, en todos), entonces se añade λ a
FIRST(X). Dicho de otra forma, lo anterior significa que todos los
elementos de FIRST (Y1), excepto λ, pertenecen también a FIRST(X).
Si Y1 no deriva λ, entonces ya ha terminado el cálculo de FIRST(X),
pero en caso contrario, es decir, si Y1= * => λ, entonces todos los
elementos de FIRST (Y2) excepto λ pertenecen también a FIRST(X), y
así sucesivamente. Finalmente, si todos los Yi derivan λ, entonces λ se
añade a FIRST(X).

FOLLOW: Se define FOLLOW(A), para él no terminal A, como el conjunto de


terminales a que pueden aparecer inmediatamente a la derecha de A en
alguna forma sentencia, es decir, el conjunto de terminales a tal que haya una
derivación de la forma S= * =>αAaβ para algún α y β. Si A puede ser el
símbolo de más a la derecha en alguna forma sentencia, entonces $ está en
FOLLOW(A).
Para calcular FOLLOW(A) para un símbolo no terminal A, se aplican las
siguientes reglas hasta que no se pueda añadir nada más al conjunto
FOLLOW.
1. $ está en FOLLOW(S), siendo S el axioma de G.

2. Si existe una producción A → αBβ, entonces todo lo que esté en FIRST


(β), excepto λ, está en FOLLOW (B).

3. Si existe la producción A → αBβ y FIRST (β) contiene λ (es decir, β= * =>λ),


o bien si existe una producción A → αB, entonces todo lo que esté en
FOLLOW(A) está en FOLLOW (B).

Con las mismas notaciones anteriores, para cada forma sentencia α Є (V U


∑)* definiremos la función FOLLOWG GK (α) del modo siguiente.

De nuevo nos ocuparemos solamente de FOLLOW: = FOLLOW1.


Obsérvese que FOLLOW k (α) ⊂ ∑* y que para cada x Є FOLLOW (α), Ixl ≤
k. Obsérvese que para cada variable A Є V, FOLLOW(A) son todos los
símbolos terminales que pueden aparecer a la derecha de A en alguna
forma sentencia de la gramática.
FIRST

Se define el conjunto FIRST de un símbolo, FIRST (X) (X ∈ {T ∪ N}), como el


conjunto de los símbolos terminales que pueden aparecer como primer símbolo
terminal en las cadenas derivadas a partir de X.

 Si X es un terminal (X = t, con t ∈ T) entonces FIRST (X):= {t}.


 Si X es un no terminal (X ∈ N), para calcular FIRST (X) hay que estudiar
cada una de las reglas de X. Se ejecutarán los siguientes pasos hasta que
no se puedan añadir más elementos al conjunto FIRST:
1. Si existe la regla X → λ , entonces añadir λ a FIRST (X) ( λ es la cadena
vacía o elemento nulo)
2. Para cada una de las restantes reglas gramaticales de X, X → Y1 Y2...
Yk , (donde Yi ∈ {T ∪ N}), se aplica el siguiente algoritmo hasta que no
se pueda añadir nada nuevo al conjunto FIRST (X):

Todos los elementos no nulos de FIRST(Y1) se añaden a FIRST(X)


if λ ϵ FIRST(Y1) then Todos los elementos no nulos de FIRST(Y2) se añaden a
FIRST(X) if λ ϵ FIRST(Y2)
then Todos los elementos no nulos de FIRST(Y3) se añaden a FIRST(X)
…y así sucesivamente…
if λ ϵ FIRST(Yk-1)
then Todos los elementos no nulos de FIRST(Yk) se añaden a FIRST(X)
if λ ϵ FIRST(Yk)
then Añadir λ a FIRST(X)
También se puede calcular el conjunto FIRST de una cadena α de símbolos (según
lo indicado en el paso 2):

Si α es cualquier cadena de símbolos gramaticales ( α ∈ {T ∪ N}*), se define FIRST


( α ) como el conjunto formado por los símbolos terminales que encabezan las
cadenas derivadas de α . Si α *⇒ λ , entonces λ (la cadena vacía) también está en
FIRST ( α ).

Sea α = Y1 Y2... Yk, donde Yi ∈ {T ∪ N}. Para calcular FIRST ( α ):

Todos los elementos no nulos de FIRST(Y1) se añaden a FIRST( α )


if λ ϵ FIRST(Y1)
then Todos los elementos no nulos de FIRST(Y2) se añaden a FIRST( α )
if λ ϵ FIRST(Y2)
then Todos los elementos no nulos de FIRST(Y3) se añaden a FIRST( α )
…y así sucesivamente…
if λ ϵ FIRST(Yk-1)
then Todos los elementos no nulos de FIRST(Yk) se añaden a FIRST( α )
if λ ϵ FIRST(Yk)
then Añadir λ a FIRST( α )

FOLLOW

Se define FOLLOW (A), para el no terminal A (A ∈ N), como el conjunto de


terminales t (t ∈ T) que pueden aparecer inmediatamente a la derecha de A en
alguna forma sentencial, es decir, el conjunto de terminales t tales que haya una
derivación de la forma S *⇒ α A t β (siendo α , β ∈ (N ∪ T)*). Si A puede ser el
símbolo de más a la derecha en alguna forma sentencial, entonces $ está en
FOLLOW (A).

Para calcular FOLLOW (A) se aplican las siguientes reglas hasta que no se pueda
añadir nada más al conjunto FOLLOW (A):

1. Si A es el axioma de la gramática, añadir $ a FOLLOW (A).


2. Si existe una regla B → α A β , entonces todos los elementos no nulos de FIRST
( β ) se añaden a FOLLOW (A).
3. Si existe una regla B → α A β y λ ∈ FIRST ( β ) (es decir, β ⇒ * λ ), o bien si
existe una regla B → α A, entonces todo lo que esté en FOLLOW (B) se añade a
FOLLOW (A).
BIBLIOGRAFIAS

https://es.calameo.com/read/00417829836248f81dbd4
http://lenguajesyautomatas1unidad6-6.blogspot.mx/2016/06/generacion-de-matriz-
predictiva-calculo.html

Вам также может понравиться