Ir al contenido principal

TIPOS DE ANALIZADORES SINTÁCTICOS

 Ascendente:

·          
     En el Análisis Sintáctico Ascendente se parte de las hojas y se intenta construir el árbol hacia arriba hasta llegar al símbolo inicial de la gramática.
·        
        En un análisis top-down un parser hacer corresponder cadenas de entrada con sus correspondientes derivaciones izquierdas.
·         
       En un análisis bottom-up un parser hace corresponder cadenas de entrada con las inversas de las correspondientes derivaciones derechas.

Ejemplo:

 


 Análisis sintáctico ascendente


Parten de las hojas (conjunto de tokens) para llegar a la raíz (axioma de la gramática):
·                    Analizadores de procedencia de operador.
·                    Analizador LR(1)

Se denominan analizadores sintácticos ascendentes (botton-up) porque pretenden construir un árbol sintáctico para una determinada cadena de entrada, empezando por las hojas y constituyendo el árbol hasta llegar a la raíz.

Un analizador sintáctico ascendente utiliza una pila explicita para realizar un análisis sintáctico, de manera semejante como lo hace un analizador sintáctico descendente no recursivo. La pila de análisis sintáctico contiene los tokens como símbolos no terminales y también alguna información de estado adicional.

Los analizadores LR reconocen el lenguajes realizando dos operaciones cargar (shift) y reducir (reduce). Lo que hace es leer los tokens de la entrada e ir cargándolos en una pila, de forma que se puedan explorar lo n tokens que contiene esta y ver si se corresponden con la parte derecha de alguna de las reglas de la gramática.

Si es así se realiza un reducción, consistente en sacar de la pila esos n tokens y en su lugar colocar el símbolo que aparezca en la parte izquierda de esa regla. En caso contrario, se carga en la pila el siguiente token y una vez hecho esto se vuelve a intentar una reducción.



Descendente 


En el Análisis Sintáctico Descendente se va recorriendo el árbol sintáctico desde la raíz hasta las hojas, llegando a generar la sentencia que se está analizando. La raíz representa el símbolo inicial de la gramática.

 

Análisis sintáctico descendente LL(1) 


Parten del axioma y aplican las reglas de la gramática hasta llegar a la secuencia de símbolos terminales (tokens):
·                    -Analizadores LL(1).
·                    -Analizadores recursivos.

Es del tipo LL1 porque se empieza a derivar por la izquierda y los caracteres son leídos de izquierda a derecha, el 1 porque se lee 1 solo elemento de entrada.

Para poder trabajar el análisis sintáctico descendente se debe de realizar primeramente alguna de las operaciones para que la gramática sea LL1 las cuales son:
·                 -Eliminar ambigüedad.
·                 -Eliminar recursividad por la izquierda.
·                 -Factorizar.
·                 -Primeros y siguientes
     
Eliminar ambigüedad:

Una gramática es ambigua cuando genera más de un árbol de derivación. Para eliminar la ambigüedad se debe reescribir la gramática.

Ejemplo:








Comentarios

Entradas más populares de este blog

GENERACIÓN DE MATRIZ PREDICTIVA

 La generación de una matriz predictiva utilizando los cálculos de FIRST y FOLLOW es un paso crucial en la construcción de analizadores sintácticos predictivos para gramáticas libres de contexto. Aquí te explico cómo se realiza este proceso: Cálculo de Conjuntos FIRST y FOLLOW Conjunto FIRST : Descripción : El conjunto FIRST de un símbolo no terminal o una cadena de símbolos en una gramática es el conjunto de terminales que pueden comenzar una cadena derivada de ese símbolo. Reglas : Si el símbolo es un terminal, el conjunto FIRST contiene solo ese terminal. Si el símbolo es un no terminal, el conjunto FIRST contiene los terminales que comienzan alguna cadena derivada de ese no terminal. Si el símbolo puede derivar la cadena vacía (ε), entonces ε también se incluye en el conjunto FIRST. Conjunto FOLLOW : Descripción : El conjunto FOLLOW de un símbolo no terminal en una gramática es el conjunto de terminales que pueden aparecer inmediatamente después de ese símbolo en alguna derivac...

Potencias de un Alfabeto

 {ε}... Conjunto Vacio Observe que Σ0 = {ε}, independientementede cuál sea el alfabeto Σ. Es decir, ε es la única cadena cuya longitud es 0. Si Σ = {0,1}, entonces Σ1 = {0,1}, Σ2 = {00,01,10,11}, Σ3 = {000,001,010,011,100,101,110,111}, etc. -- Si la cantidad de alfabetos es de 2 y elevado a la 1 =   2 1  = 2  El elevado a la uno = va a ser la cntidad de caracteres que tendra cada cada tanto y el resultado son los tantos que tendra.

Automatas AFN

 Primer automata AFN: abracadabra Segundo automata AFN: odontologo Tercer automata AFN: protocolo Cuarto automata AFN: exelente