Ir al contenido principal

ELIMINACION DE AMBIGUEDAD

La eliminación de ambigüedad es el proceso de corregir o evitar que una expresión o idea se interprete de más de una forma. La ambigüedad puede surgir de manera involuntaria o intencional, y puede dar lugar a malentendidos o confusión. 

Una gramática es ambigua si puede generar una secuencia de símbolos con dos árboles sintácticos diferentes. Una gramática ambigua puede rescribirse para eliminar la ambigüedad.


Ejemplo: <a> ::= <a> (+ | *) <a> | número
            Secuencia: 1*2+3
            Arboles sintácticos generados:

 

Una gramática no se puede utilizar para la realización de un compilador por que no especifica la estructura sintáctica del lenguaje.

 
Aquí, “otra” representa a cualquier otra instrucción. De acuerdo con esta gramática, la siguiente instrucción condicional compuesta:

 
Ejemplo: La gramática  es ambigua porque aa tiene dos derivaciones por la izquierda

 

Esta gramática genera el lenguaje a+ que también es el lenguaje generado por la gramática no ambigua 

Proceso 
- No existe un algoritmo que nos indique si una GIC es ambigua
- Existen LIC que sólo tienen GIC ambiguas: inherentemente ambiguos
- Para las construcciones de los lenguajes de programación comunes existen técnicas para la eliminación de la ambigüedad
- Ejemplo: causas de ambigüedad en la siguiente gramática
             No se respeta la precedencia de operadores
             Una secuencia de operadores idénticos puede agruparse desde la izquierda y desde la derecha. Lo convencional es agrupar desde la izquierda.




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