21.06.2016 Views

Análisis Sintáctico

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

Por lo tanto es LL(1), por no tener entradas con definiciones múltiples.<br />

Otra forma, más formal, pero basado en los resultados de FIRST y FOLLOW para<br />

poder aplicar el análisis predictivo LL(1) es necesario que los conjuntos de<br />

predicción de todas las reglas con un mismo antecedente sean disjuntas entre sí.<br />

Esto es,<br />

AÆ abB {a}<br />

AÆ B {b, c}<br />

BÆ b {b}<br />

BÆ c {c}.<br />

Y notamos que {a} ∩ {b,c} = Ǿ es LL(1) , {b} ∩ {c} = Ǿ , es LL(1). Por lo tanto la<br />

gramática en total es LL(1). Pero no perdamos la intuición….. ¿Porque la gramática<br />

es LL(2) pero no LL(1)?<br />

S → aSA | ٨<br />

A → abS | c.<br />

Sol: Consideremos el string aab. Una derivación parte con S ➾ aSA. Ahora el<br />

“lookahead” está en la segunda a de la cadena aab, pero en tal caso, tenemos dos<br />

opciones para escoger, una de ellas es : S → aSA y S → ٨. Entonces, la gramática<br />

no es LL(1). Pero, si consideramos “two lookahead letters” vemos que el substring<br />

ab o ac, se puede lograr con S → aSA para la siguiente etapa.<br />

Analizar si la gramática es LL(1).<br />

32

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!