An - PowerPoint PPT Presentation

About This Presentation
Title:

An

Description:

An lisis sint ctico LR: SLR (LR simple) Ventajas de los analizadores sint cticos LR Los analizadores sint cticos son construidos por tablas, similar a los ... – PowerPoint PPT presentation

Number of Views:25
Avg rating:3.0/5.0
Slides: 16
Provided by: hilda
Category:
Tags:

less

Transcript and Presenter's Notes

Title: An


1
Análisis sintáctico LR SLR (LR simple)
2
Ventajas de los analizadores sintácticos LR
  • Los analizadores sintácticos son construidos por
    tablas, similar a los analizadores sintácticos LL
    no recursivos.
  • El análisis sintáctico LR es atractivo por varias
    razones
  • Pueden construirse analizadores sintácticos LR
    para reconocer prácticamente todas las
    construcciones de lenguajes de programación para
    las cuales puedan escribirse gramáticas libres de
    contexto.
  • El método de análisis sintáctico LR es el método
    de análisis sintáctico de desplazamiento
    reducción sin rastreo hacia atrás más general que
    se conoce a la fecha.
  • Un AS LR puede detectar un error sintáctico tan
    pronto como sea posible en una exploración de
    izquierda a derecha en la entrada.
  • La clase de gramáticas que pueden analizarse
    mediante los métodos LR es un superconjunto
    propio de la clase de gramáticas que pueden
    analizarse con métodos predictivos o LL.

3
Desventajas
Su principal desventaja es que es demasiado
trabajo construir un analizador sintáctico LR en
forma manual para una gramática común de un
lenguaje de programación.
4
Los elementos y el autómata LR(0)
Un elemento LR (0) de una gramática G es una
producción de G con un punto en cierta posición
del cuerpo. Por ejemplo la producción A? XYZ
produce los siguientes elementos A?.XYZ A?X.YZ A
?XY.Z A?XYZ. La producción A?e genera solo un
elemento A?.
5
Una colección de conjuntos de elementos LR(0),
conocida como la colección LR(0) canónica,
proporciona la base para construir un autómata
finito determinístico, el cual se utiliza para
tomar decisiones en el análisis sintáctico. Para
construir la colección LR(0) canónica de una
gramática, definimos una gramática aumentada y
dos funciones, CERRADURA e ir__A. Si G es una
gramática con el símbolo inicial S, entonces G
es G con un nuevo símbolo inicial S y la
producción S?S
6
Cerradura de I
ConjuntoDeElementos CERRADURA(I) JI
repeat for (cada elemento A? a.Bß en
J) for (cada producción B? .? de G) if (B?
.? no está en J) agregar B? .? a J
until no se agreguen mas elementos a J en una
ronda return J
7
Ejemplo E? E E ? E T T T ? T F F F ? (
E ) id Si IE?.E, entonces CERRADURA (I)
Contiene el conjunto E?.E, E?.ET, E?.T,
T?.TF, T?.F, F?.(E), F?.id
8
La función ir__A
Función ir__A(I,X), donde I es un conjunto de
elementos y X es un símbolo gramatical. ir__A
(I,X) se define como la cerradura del conjunto de
todos los elementos A? aX.ß, de tal forma que A?
a.Xß se encuentre en I. Ejemplo Si IE?E.,
E?E.T entonces ir__A(I,)E?E.T, T?.TF,
T?.F, F?.(E), F?.id
9
I1 E?E. E?E.T

T
I6 E?E.T T?.TF T?.F F?.(E) F?.id
I9 E?ET. T?T.F
E
I0 E?.E E?.ET E?.T T?.TF T?.F F?.(E) F?.id
id


T
I2 E?T. E?T.F

I7 T?T.F F?.(E) F?.id
id
I10 T?TF.
F
id
(
T
I5 F?id.
id
I4 F?(.E) E?.ET E?.T T?.TF T?.F F?.(E) F?.id
F
E
I11 F?(E).
)
I8 E?E.T F?(E.)
)
(
)
F
F
I3 T?F.
10
El algoritmo de análisis sintáctico LR
  • Códigos para las acciones
  • si significa desplazar y meter el estado i en la
    pila.
  • rj significa reducir mediante la produccion
    enumerada como j,
  • acc significa aceptar
  • Espacio en blanco significa error

11
  • Algoritmo Construcción de una tabla de análisis
    sintáctico SLR
  • Entrada Una gramática aumentada G
  • Salida Las funciones ACCION e ir_A para G de la
    tabla de análisis sintáctico SLR.
  • Método
  • Construir CI0, I1, , In, la colección de
    conjuntos de elementos LR(0) para G.
  • El estado i se construye a partir de Ii. Las
    acciones de análisis sintáctico i se determinan
    de la siguiente forma
  • Si A?a.aß está en Ii e ir__A(Ii,a)Ij, entonces
    establecer ACCIONi.a a desplazar j. Aquí, a
    debe ser un terminal.
  • Si A? a. esta en Ii, entonces establecer
    ACCIONi,a a reducir A? a para toda a en
    SIGUIENTE(A) aquí, A tal vez no sea S.
  • Si S?S. esta en Ii, entonces establecer
    ACCIONi, a aceptar.
  • Si resulta cualquier acción conflictiva debido a
    las reglas anteriores, decimos que la gramática
    no es SLR(1). El algoritmo no produce un
    analizador sintáctico en este caso.

12
  • 3. Las transiciones de ir__A para el estado i se
    construyen para todos lo no terminales A usando
    la regla Si ir__A(Ii, A)Ij, entonces
    ir__Ai,Aj.
  • 4. Todas las entradas que no esten definidas por
    las reglas (2) y (3) se dejan como error.
  • 5. El estado inicial del analizador sintáctico es
    el que se construyó a partir del conjunto de
    elementos que contienen S?.S.

13
Entrada ACCION ACCION ACCION ACCION ACCION ACCION Ir__A Ir__A Ir__A
Entrada id ( ) E T F
0 s5 s4 1 2 3
1 s6 acc
2 r2 s7 r2 r2
3 r4 r4 r4 r4
4 s5 s4 8 2 3
5 r6 r6 r6 r6
6 s5 s4 9 3
7 s5 s4 10
8 s6 s11
9 r1 s7 r1 r1
10 r3 r3 r3 r3
11 r5 r5 r5 r5
  1. E?E T
  2. E?T
  3. T?T F
  4. T?F
  5. F?( E )
  6. F?id

14
Algoritmo de análisis sintáctico LR. Entrada
Una cadena de entrada w y una tabla de análisis
sintáctico LR con las funciones ACCION e ir__A,
para una gramática G. Salida Si w está en L(G),
los pasos de reducción de un análisis sintáctico
ascendentes para w, en cualquier otro caso, una
indicación de error. Método Al principio, el
analizador sintáctico tiene s0 en su pila, en
donde s0 es el estado inicial y w está en el
búfer de entrada. hacer que a sea el primer
símbolo de w while (1) hacer que s sea el
estado en la parte superior de la pila if
(ACCIONs,adesplazar t) meter t en la
pila hacer que a sea el siguiente símbolo de
entrada else if (ACCIONs,areducir A?ß
) sacar ß estados de la pila y sustituir los
símbolos ß por A sea t el estado que esta en el
tope de la pila meter ir__At,A en la
pila enviar de salida la producción A?ß
else if (ACCIONs,aaceptar) break else
llamar a la rutina de recuperación de errores
15
Pila Símbolos Entrada Accion 0 idid s
5 0 5 id id r6 0 F id r4 0
3 T id s7 0 2 7 T id s5 0 2 7
5 Tid r6 0 2 7 TF r3 0 2 7
10 T r2 0 2 T 0 1 E acc
Write a Comment
User Comments (0)
About PowerShow.com