Professional Documents
Culture Documents
29 de abril de 2010
El modelo de anlisis recorre un rbol de derivacin desde la ra a a o z con el s mbolo inicial S, hasta las hojas. Basa su construccin en el o uso de derivaciones ms a la izquierda. El proceso resulta a determinista en el caso de que la gramtica involucrada sea de un a tipo espec co: gramticas LL(k) (de from left to right with left a canonical derivation and a look-ahead of k symbols deterministic recognizable). Haremos la exposicin para gramticas LL(1). o a
El anlisis descendente es ms intuitivo y permite gestionar mejor a a los errores en el cdigo fuente. Esto es as porque, como veremos, o el cerebro humano funciona de esta manera. Cuando queremos o mos una frase, estamos analizando automticamente. No a necesitamos o la frase entera para ir deduciendo que sera el r sujeto o que el predicado. Es ms, notamos, sin tener que acabar la a frase que podemos deducir que es lo que nos quieren decir.
Basicamente porque construir gramticas LL(1) a veces es a complicado, como por ejemplo la recursividad a izquierda.
Q (Q)|. En esta gramtica esta claro que la primera a produccin se usa cuando aparece un parentesis abierto y la o segunda cuando aparece el primer parentesis cerrado. S aAb|b, A aSAa|b Tambin en este ejemplo la forma e de construir el autmata es mecnica. o a
A A
lm lm
x , y ,
Ideas intuitivas
Ideas intuitivas
Probemos esta gramatica S AB|BA, A a, B b. Esto tiene que ver con el FIRST?
Probemos esta gramatica o S ASB|, A a, B b. Esto tiene que ver con el FOLLOW?
Probemos esta gramatica o S ASB|, A a, B b. Esto tiene que ver con el FOLLOW?
Numeramos las reglas gramticales producciones. Construiremos a o una tabla M : (V {$}) ( {}) P(P), donde P(P) es el conjunto de todos los subconjuntos del conjunto de las producciones.
M(a, a) =pop para cada a . M($, ) =accept. En todos los dems casos escribir M(X , i) =error. a
Varios ejemplos
Pequeo detalle n
En la asignatura de autmatas tenemos que la palabra vac puede o a estar en el FIRST. Es mas correcto hallar las variables ANULABLES.
La tabla de analis sintctico nos dice que debemos meter en la s a pila del autmata. La parte derecha de la regla que se aplica es lo o que se mete en la pila. Ademas sacamos de la pila los elementos que tengamos en la top de la pila y en la cinta.
Es uno de los compilador de compiladores ms conocido. Genera a un compilador en el lenguaje que nosotros queramos para poder incluirlo en nuestro proyecto.
ANTLRWorks
Antlrworks es un programa que permite editar de forma sencilla cheros de gramticas. a El archivo y la gramtica tienen que llamarse de la misma a manera. Se declara en la primera linea grammar nombre;
ANTLR, lo ms bsico a a
El nombre de los tokens es en mayscula y el nombre de las u variable de la gramtica en minsculas. a u Las reglas llevan solamente : en vez de = y acaban con ; Para incluir clases o paquetes hay que incluirlos dentro de un campo header @ header{ import java.util.*; } En caso de querer poner atributos a la clase, aadir un campo n que se llame members. por ejemplo @members{ int j;}
Bsicamente, aade funcionalidad a la notacin BNF, permitiendo a n o repeticiones o diferentes opciones. La parte derecha de la regla es una expresin regular en las variables y en los tokens. o