Académique Documents
Professionnel Documents
Culture Documents
ANLISIS SINTCTICO
ndice General
Introduccin
rboles de anlisis sintctico
Especificacin de un analizador
sintctico
Tipos de analizadores sintcticos
Introduccin
Funcin
Comprobar el orden en que llegan los
tokens
Construir una representacin del programa
fuente
Si es sintacticamente incorrecto generar
error
Siguiente Token()
Fuente
Analizador
Lxico
TOKENS
Tabla de
Smbolo
Analizador
Sintctico
Introduccin
Funcin principal
Funcionamiento
Programa
fuente
lexer
Tablas de
smbolos
y de tipos
token
Parser
rbol de
anlisis
sintctico
A manos
Mediante herramientas que lo generan
automticamente.
Diseo de gramticas
Ejemplo
E::=E+T|T
T::=T*F|F
F::=id|F|(E)
Diseo de Gramaticas
id1
id2
id3
Dificultades
Dificultades
Dificultades
La ambigedad
Si una gramtica tiene alguna de estas caracterstica
podremos afirmar que es ambigua
Gramatica con ciclo: S::=A|S::=a|A::=S
Gramatica con alguna regla de la forma: E::=E..E
Gramatica que ofrezcan caminos alternativos
S::=B|S::=C|B::=C
Producciones recursivas en las que las variables no
recursivas de la produccion puedan derivar a la cadena
vacia
S::=ABS|S::=s|A::=a||B::=b|a|
Dificultades
Dificultades
Tipos de Analizadores
Descendentes
LL(1)
Es predictivo, solo necesita un componente lxico
Se aplica las producciones de izquierda
Orden de lectura de la entrada de izquierda a derecha
Analizadores
Sintcticos
SLR (1)
Ascendentes
LR (1)
LALR (1)
Diagrama de Sintaxis
Son grafos dirigidos donde los
elementos no terminales de la
gramtica aparecen como rectngulos
y los terminales como crculos o
elipses
Todo diagrama de sintaxis se supone
que tiene un origen y un destino
aunque no se dibujan.
Diagrama de sintaxis
BNF
AB
A|B
Diagrama de sintaxis
A
B
A|
Diagrama de Sintaxis
BNF
Diagrama de sintaxis
(A)*
A
(A)+
A
Ejemplos
Secuencia::=(sentencia ;)+
Sentencia
Sentencia::=identificador = Numero
Ejercicios
Ejercicios
Programa::=Declaraciones Sentencias
Declaraciones::=(Decl ;)+
Decl::=Entero Identificador
Sentencia::=(Asignacion ;)+
Asignacion::=ParteIzq = ParteDer
ParteIzq::=Identificador
ParteDer::=Expresion
Expresion::=(Expresion + Expresion)|(Expresion - Expresion)
Expresion::= (Identificador | Numero)