Está en la página 1de 4

DIAGRAMA DE SINTAXIS

Un diagrama de sintaxis (tambin llamados diagramas de Conway) es un grafo dirigido donde los elementos no terminales aparecen como rectngulos, y los terminales como crculos o elipses. Todo diagrama de sintaxis posee un origen y un destino, que no se suelen representar explcitamente, sino que se asume que el origen se encuentra a la izquierda del diagrama y el destino a la derecha. Cada arco con origen en " y destino en $ representa que el smbolo " puede ir seguido del $ (pudiendo ser " y $ tanto terminales como no terminales). De esta forma todos los posibles caminos desde el inicio del grafo hasta el final, representan formas sentenciales vlidas. Demostraremos que los diagramas de sintaxis permiten representar las mismas gramticas que la notacin BNF, por induccin sobre las operaciones bsicas de BNF:

Eliminacin de la ambigedad.
Una GLC es ambigua si existe una cadena w L(G) que tiene ms de una derivacin por la izquierda o ms de una derivacin por la derecha o si tiene dos o ms rboles de derivacin. En caso de que toda cadena w L(G) tenga un nico rbol de
derivacin, la gramtica no es ambigua. Ejemplo: La gramtica S

aS| Sa | a es ambigua porque aa tiene dos derivaciones por la izquierda

S aS aa S Sa aa

Esta gramtica genera el lenguaje a+ que tambin es el lenguaje generado por la gramtica no ambigua S

aS | a.

EJEMPLO La gramtica para expresiones aritmticas sobre las variables x y y:

E E E
E

E+E E*E x y es ambigua porque la cadena x + y * x tiene dos rboles de derivacin:

TIPOS DE AMBIGEDAD Dentro del estudio de gramticas existen dos tipos fundamentales de ambigedad, los cuales son: Ambigedad Inherente: Las gramticas que presentan este tipo de ambigedad no pueden utilizarse para lenguajes de programacin, ya que por ms transformaciones que se realicen sobre ellas, nunca se podr eliminar completamente la ambigedad que presentan. Un lenguaje L es inherentemente ambiguo si todas sus gramticas son ambiguas; si existe cuando menos una gramtica no ambigua para L, L no es ambiguo. El lenguaje de las expresiones no es Ambiguo Las expresiones regulares no son ambiguas

Ejemplo de un lenguaje inherentemente ambiguo:

L = {anbncmdm | n L es un LLC:

1, m

1} {a b

n m m n

c d |n

1, m 1}

AB | C A aAb | ab C aCd | aDd B cBd | cd D bDc | bc


S La gramtica es ambigua: hay cadenas con ms de una derivacin ms izquierda: Considere: aabbccdd (m = n = 2) S AB aAbB aabbB aabbcBd aabbccdd S C aCd aaDdd aabDcdd aabbccdd - El lenguaje: - L = {anbncmdm | n - La gramtica

1, m 1} {a b

n m m n

c d |n

1, m 1}

AB | C A aAb | ab C aCd | aDd B cCd | cd D bDc | bc


-S

_ Por qu todas las gramticas para este lenguaje son ambiguas? Considere cualquier cadena con m = n Siempre habr dos derivaciones para estas cadenas! Ambigedad Transitoria: Este tipo de ambigedad puede llegar a ser eliminada realizando una serie de transformaciones sobre la gramtica original. Una vez que se logra lo anterior, la gramtica queda lista para ser reconocida por la mayor parte de los analizadores sintcticos. (Se le considera "ambigedad" porque existen mtodos para realizar anlisis sintctico que no aceptan gramticas con estas caractersticas) Dnde se presenta la Ambigedad Transitoria generalmente la ambigedad se presenta cuando existen producciones con factores comunes (distintas alternativas para un smbolo no-terminal que inician de la misma forma); cuando existen producciones que son recursivas izquierdas (producciones para un smbolo no-terminal en las cuales el primer smbolo de su forma sentencial es ese mismo smbolo no-terminal). Cmo solucionar el problema de la Ambigedad Transitoria? Para eliminar este tipo de ambigedad, es necesario, primero eliminar: - Factores comunes izquierdos inmediatos y No-inmediatos. - Recursividad izquierda inmediata y No-inmediata. ELIMINACIN DE LA AMBIGEDAD. No existe un algoritmo que nos indique si una GIC es ambigua Existen LIC que slo tienen GIC ambiguas: inherentemente ambiguos Para las construcciones de los lenguajes de programacin comunes existen tcnicas para la eliminacin de la ambigedad Ejemplo: causas de ambigedad en la siguiente gramtica No se respeta la precedencia de operadores

una secuencia de operadores idnticos puede agruparse desde la izquierda y desde la derecha. Lo convencional es agrupar desde la izquierda.