SlideShare una empresa de Scribd logo
1 de 4
Descargar para leer sin conexión
Trabajo de Compiladores
Nombre: Alexander Echeverría
Nivel: 5to Sistemas
Fecha: 08-05-2014
Analizador Sintáctico
El Papel del Analizador Sintáctico
El papel del analizador sintáctico Todo lenguaje de programación tiene reglas que describen la
estructura sintáctica de programas bien formados. En Pascal, por ejemplo, un programa se
compone de bloques, un bloque de proposiciones, una proposición de expresiones, una
expresión de componentes léxicos, y así sucesivamente. Se puede describir la sintaxis de las
construcciones de los lenguajes de programación por medio de gramáticas de contexto libre o
notación BNF (Backus-Naur Form).Las gramáticas ofrecen ventajas significativas a los
diseñadores de lenguajes y a los desarrolladores de compiladores. Es la fase del analizador que
se encarga de chequear el texto de entrada en base a una gramática dada. Y en caso de que el
programa de entrada sea válido, suministra el árbol sintáctico que lo reconoce. En teoría, se
supone que la salida del analizador sintáctico es alguna representación del árbol sintáctico que
reconoce la secuencia de tokens suministrada por el analizador léxico.
Análisis Sintáctico Ascendente y descendente
Análisis Sintáctico descendente
El análisis sintáctico descendente (ASD) intenta encontrar entre las producciones de la
gramática la derivación por la izquierda del símbolo inicial para una cadena de entrada. (Top-
Down-Parser): un analizador puede empezar con el símbolo inicial e intentar transformarlo en
la entrada, intuitivamente esto sería ir dividiendo la entrada progresivamente en partes cada
vez más pequeñas, de esta forma funcionan los analizadores LL, un ejemplo es el javaCC.
El análisis sintáctico descendente (ASD) intenta encontrar entre las producciones de la
gramática la derivación por la izquierda del símbolo inicial para una cadena de entrada.
Análisis sintáctico descendente.
Partir del axioma de la gramática.
Escoger reglas gramaticales.
Hacer derivaciones por la izquierda.
Procesar la entrada de izquierda a derecha.
Obtener el árbol de análisis sintáctico o error
Análisis Sintáctico Ascendente
El objetivo de un análisis ascendente consiste en construir el árbol sintáctico desde abajo hacia
arriba, esto es, desde los tokens hacia el axioma inicial, lo cual disminuye el número de reglas
mal aplicadas con respecto al caso descendente (si hablamos del caso con retroceso) o amplía
el número de gramáticas susceptibles de ser analizadas (si hablamos del caso LL(1)).Tanto si
hay retroceso como si no, en un momento dado, la cadena de entrada estará dividida en dos
partes, denominadas α y β:
β: representa el trozo de la cadena de entrada (secuencia de tokens ) por consumir: β Є T*
Coincidirá siempre con algún trozo de la parte derecha de la cadena de entrada. Como puede
suponerse, inicialmenteβ coincide con la cadena a reconocer al completo (incluido el EOF del
final).
α: coincidirá siempre con el resto de la cadena de entrada, trozo al que se habrán aplicado
algunas reglas de producción en sentido inverso: α Є(N U T)*
Se construye el árbol de análisis sintáctico de la cadena de entrada desde las hojas hasta la
raíz. En las hojas tenemos la cadena a analizar (los símbolos terminales) que se intentan
reducir al axioma, que se encontrar en la raíz, si la cadena es correcta sintácticamente.
Análisis semántico y tratamiento de errores
Los errores encontrados en las distintas fases de análisis se envían a un módulo de nominado
manejo de errores. En el caso más sencillo puede ser un subprograma al que se le invoca
enviándole el código de error, y que se encarga de escribir un mensaje con el error
correspondiente, y el número de línea donde se ha producido, así como de cortar el proceso
de traducción.
TIPOS DE ERRORES
Tipos de errores que suelen ocurrir (dependiendo de la fase):
Léxicos: No concuerda con ninguna ER.
Ejemplo: escribir mal una palabra clave Sintácticos: La estructura que se ha seguido no es
correcta. Ejemplo: expresión con paréntesis no emparejados Semánticos: La estructura está
bien pero hay errores de significado. Ejemplo: operador y operandos incompatibles.
Lógicos: Árboles
Sintácticos Es una clase especial de árbol, se le denomina Árbol Sintáctico es una forma
condensada de un árbol de análisis sintáctico, útil para representar instrucciones de lenguajes.
Un árbol sintáctico permite demostrar que una secuencia de caracteres es una determinada
categoría sintáctica. Llevan su nombre en base a la función que cumple, donde cada nodo
representa una operación y los hijos de un nodo son los argumentos de la operación.
Árboles Sintácticos

Más contenido relacionado

La actualidad más candente

La actualidad más candente (20)

Análisis lexicográfico
Análisis lexicográficoAnálisis lexicográfico
Análisis lexicográfico
 
Analizador Sintáctico
Analizador SintácticoAnalizador Sintáctico
Analizador Sintáctico
 
Compiladores analizadores gramática y algo mas
Compiladores analizadores gramática y algo masCompiladores analizadores gramática y algo mas
Compiladores analizadores gramática y algo mas
 
Compiladores analisis lexico
Compiladores analisis lexicoCompiladores analisis lexico
Compiladores analisis lexico
 
Analizador LÉxico
Analizador LÉxicoAnalizador LÉxico
Analizador LÉxico
 
Sintaxis Y Gramatica
Sintaxis Y GramaticaSintaxis Y Gramatica
Sintaxis Y Gramatica
 
Algoritmos
AlgoritmosAlgoritmos
Algoritmos
 
Compiladores, Analisis Lexico
Compiladores, Analisis LexicoCompiladores, Analisis Lexico
Compiladores, Analisis Lexico
 
ANALIZADOR SINTACTICO: INTRODUCION, CONCEPTOS, CARACTERISTICAS
ANALIZADOR SINTACTICO: INTRODUCION, CONCEPTOS, CARACTERISTICAS ANALIZADOR SINTACTICO: INTRODUCION, CONCEPTOS, CARACTERISTICAS
ANALIZADOR SINTACTICO: INTRODUCION, CONCEPTOS, CARACTERISTICAS
 
Unidad4 analisis-semantico
Unidad4 analisis-semanticoUnidad4 analisis-semantico
Unidad4 analisis-semantico
 
Analizador léxico
Analizador léxico Analizador léxico
Analizador léxico
 
Analisis semantico
Analisis semanticoAnalisis semantico
Analisis semantico
 
Analisis semantico
Analisis semanticoAnalisis semantico
Analisis semantico
 
Analisis Lexico
Analisis LexicoAnalisis Lexico
Analisis Lexico
 
Analizador léxico
Analizador léxicoAnalizador léxico
Analizador léxico
 
AnáLisis LéXico
AnáLisis LéXicoAnáLisis LéXico
AnáLisis LéXico
 
Tr asem-ver
Tr asem-verTr asem-ver
Tr asem-ver
 
Analizador léxico
Analizador léxicoAnalizador léxico
Analizador léxico
 
Compiladores, Analisis Lexico Conceptos
Compiladores, Analisis Lexico ConceptosCompiladores, Analisis Lexico Conceptos
Compiladores, Analisis Lexico Conceptos
 
Analizador lexico
Analizador lexicoAnalizador lexico
Analizador lexico
 

Similar a Análisis Sintáctico

Introducción a los compiladores - Parte 2
Introducción a los compiladores - Parte 2Introducción a los compiladores - Parte 2
Introducción a los compiladores - Parte 2Universidad
 
Investigacion sobre asd y asa
Investigacion sobre asd y asaInvestigacion sobre asd y asa
Investigacion sobre asd y asaJimmy Jaramillo
 
Analizador Léxico, Analizador Sintáctico
Analizador Léxico, Analizador SintácticoAnalizador Léxico, Analizador Sintáctico
Analizador Léxico, Analizador SintácticoRaul Gomez
 
Análisis Sintáctico Ascendente - Descendente
Análisis Sintáctico Ascendente - DescendenteAnálisis Sintáctico Ascendente - Descendente
Análisis Sintáctico Ascendente - DescendenteGuiru Xd
 
Taller analisis semantico
Taller analisis semanticoTaller analisis semantico
Taller analisis semanticoAlvaro Cedeño
 
Clase6 conceptos del analisis lexico
Clase6 conceptos del analisis lexicoClase6 conceptos del analisis lexico
Clase6 conceptos del analisis lexicoInfomania pro
 
Actividad 2 Programación de Sistemas.
Actividad 2 Programación de Sistemas.Actividad 2 Programación de Sistemas.
Actividad 2 Programación de Sistemas.Dispositivosmoviles
 
Presentación 2014 profe gabriel
Presentación 2014 profe gabrielPresentación 2014 profe gabriel
Presentación 2014 profe gabrielEnrique Morales
 

Similar a Análisis Sintáctico (20)

Analisis lexico
Analisis lexicoAnalisis lexico
Analisis lexico
 
Compilador2
Compilador2Compilador2
Compilador2
 
Analizador sintáctico
Analizador sintácticoAnalizador sintáctico
Analizador sintáctico
 
Introducción a los compiladores - Parte 2
Introducción a los compiladores - Parte 2Introducción a los compiladores - Parte 2
Introducción a los compiladores - Parte 2
 
Analizador léxico
Analizador léxicoAnalizador léxico
Analizador léxico
 
Analisis lexico automatas i
Analisis lexico automatas iAnalisis lexico automatas i
Analisis lexico automatas i
 
Gramaticas
GramaticasGramaticas
Gramaticas
 
Analizador sintactico
Analizador sintacticoAnalizador sintactico
Analizador sintactico
 
Capitulo 3 paul carrera,dego balcazar
Capitulo 3 paul carrera,dego balcazarCapitulo 3 paul carrera,dego balcazar
Capitulo 3 paul carrera,dego balcazar
 
Compiladores1
Compiladores1Compiladores1
Compiladores1
 
Investigacion sobre asd y asa
Investigacion sobre asd y asaInvestigacion sobre asd y asa
Investigacion sobre asd y asa
 
Analisis lexico
Analisis lexicoAnalisis lexico
Analisis lexico
 
Analizador Léxico, Analizador Sintáctico
Analizador Léxico, Analizador SintácticoAnalizador Léxico, Analizador Sintáctico
Analizador Léxico, Analizador Sintáctico
 
Análisis Sintáctico Ascendente - Descendente
Análisis Sintáctico Ascendente - DescendenteAnálisis Sintáctico Ascendente - Descendente
Análisis Sintáctico Ascendente - Descendente
 
Taller analisis semantico
Taller analisis semanticoTaller analisis semantico
Taller analisis semantico
 
T37 isc zaraos vazquez jorge alejandro
T37 isc zaraos vazquez jorge alejandroT37 isc zaraos vazquez jorge alejandro
T37 isc zaraos vazquez jorge alejandro
 
Clase6 conceptos del analisis lexico
Clase6 conceptos del analisis lexicoClase6 conceptos del analisis lexico
Clase6 conceptos del analisis lexico
 
Actividad 2 Programación de Sistemas.
Actividad 2 Programación de Sistemas.Actividad 2 Programación de Sistemas.
Actividad 2 Programación de Sistemas.
 
Analisis semantico
Analisis semanticoAnalisis semantico
Analisis semantico
 
Presentación 2014 profe gabriel
Presentación 2014 profe gabrielPresentación 2014 profe gabriel
Presentación 2014 profe gabriel
 

Análisis Sintáctico

  • 1. Trabajo de Compiladores Nombre: Alexander Echeverría Nivel: 5to Sistemas Fecha: 08-05-2014 Analizador Sintáctico El Papel del Analizador Sintáctico El papel del analizador sintáctico Todo lenguaje de programación tiene reglas que describen la estructura sintáctica de programas bien formados. En Pascal, por ejemplo, un programa se compone de bloques, un bloque de proposiciones, una proposición de expresiones, una expresión de componentes léxicos, y así sucesivamente. Se puede describir la sintaxis de las construcciones de los lenguajes de programación por medio de gramáticas de contexto libre o notación BNF (Backus-Naur Form).Las gramáticas ofrecen ventajas significativas a los diseñadores de lenguajes y a los desarrolladores de compiladores. Es la fase del analizador que se encarga de chequear el texto de entrada en base a una gramática dada. Y en caso de que el programa de entrada sea válido, suministra el árbol sintáctico que lo reconoce. En teoría, se supone que la salida del analizador sintáctico es alguna representación del árbol sintáctico que reconoce la secuencia de tokens suministrada por el analizador léxico. Análisis Sintáctico Ascendente y descendente Análisis Sintáctico descendente El análisis sintáctico descendente (ASD) intenta encontrar entre las producciones de la gramática la derivación por la izquierda del símbolo inicial para una cadena de entrada. (Top- Down-Parser): un analizador puede empezar con el símbolo inicial e intentar transformarlo en la entrada, intuitivamente esto sería ir dividiendo la entrada progresivamente en partes cada vez más pequeñas, de esta forma funcionan los analizadores LL, un ejemplo es el javaCC. El análisis sintáctico descendente (ASD) intenta encontrar entre las producciones de la gramática la derivación por la izquierda del símbolo inicial para una cadena de entrada. Análisis sintáctico descendente. Partir del axioma de la gramática. Escoger reglas gramaticales. Hacer derivaciones por la izquierda. Procesar la entrada de izquierda a derecha. Obtener el árbol de análisis sintáctico o error
  • 2. Análisis Sintáctico Ascendente El objetivo de un análisis ascendente consiste en construir el árbol sintáctico desde abajo hacia arriba, esto es, desde los tokens hacia el axioma inicial, lo cual disminuye el número de reglas mal aplicadas con respecto al caso descendente (si hablamos del caso con retroceso) o amplía el número de gramáticas susceptibles de ser analizadas (si hablamos del caso LL(1)).Tanto si hay retroceso como si no, en un momento dado, la cadena de entrada estará dividida en dos partes, denominadas α y β: β: representa el trozo de la cadena de entrada (secuencia de tokens ) por consumir: β Є T* Coincidirá siempre con algún trozo de la parte derecha de la cadena de entrada. Como puede suponerse, inicialmenteβ coincide con la cadena a reconocer al completo (incluido el EOF del final). α: coincidirá siempre con el resto de la cadena de entrada, trozo al que se habrán aplicado algunas reglas de producción en sentido inverso: α Є(N U T)* Se construye el árbol de análisis sintáctico de la cadena de entrada desde las hojas hasta la raíz. En las hojas tenemos la cadena a analizar (los símbolos terminales) que se intentan reducir al axioma, que se encontrar en la raíz, si la cadena es correcta sintácticamente.
  • 3. Análisis semántico y tratamiento de errores Los errores encontrados en las distintas fases de análisis se envían a un módulo de nominado manejo de errores. En el caso más sencillo puede ser un subprograma al que se le invoca enviándole el código de error, y que se encarga de escribir un mensaje con el error correspondiente, y el número de línea donde se ha producido, así como de cortar el proceso de traducción. TIPOS DE ERRORES Tipos de errores que suelen ocurrir (dependiendo de la fase): Léxicos: No concuerda con ninguna ER. Ejemplo: escribir mal una palabra clave Sintácticos: La estructura que se ha seguido no es correcta. Ejemplo: expresión con paréntesis no emparejados Semánticos: La estructura está bien pero hay errores de significado. Ejemplo: operador y operandos incompatibles. Lógicos: Árboles Sintácticos Es una clase especial de árbol, se le denomina Árbol Sintáctico es una forma condensada de un árbol de análisis sintáctico, útil para representar instrucciones de lenguajes. Un árbol sintáctico permite demostrar que una secuencia de caracteres es una determinada
  • 4. categoría sintáctica. Llevan su nombre en base a la función que cumple, donde cada nodo representa una operación y los hijos de un nodo son los argumentos de la operación. Árboles Sintácticos