SlideShare una empresa de Scribd logo
1 de 27
UNIVERSIDAD ESTATAL A DISTANCIA
VICERRECTORÍA ACADÉMICA
ESCUELA CIENCIAS EXACTAS Y NATURALES
CÁTEDRA TECNOLOGÍA DE SISTEMAS
OBJETIVOS
 Identificar las diferencias entre la sintaxis y la semántica.
 Adquirir los conocimientos sobre los métodos de análisis sintácticos.
 Aplicar los métodos de análisis sintácticos y su utilización en un programa de lenguaje.
 Asociar la información con una construcción del lenguaje para utilizar técnicas de traducción.
 Analizar la sintaxis de un lenguaje de programación.
REPASANDO SOBRE ANÁLISIS LÉXICO
En la presentación anterior conversamos que el compilador lee un
archivo de entrada para posteriormente convertir cada instrucción
del código de dicho archivo para poder ir identificando tokens y
lexemas que por medio de patrones definidos se lograba. Se desecha
la información que no era necesaria para el compilador, tal como
espacios en blanco, salto de líneas, comentarios etc. Y la función
primordial de la tabla de símbolo a modo de un soporte para poder
ir formando el compilador, etc.
ANÁLISIS SINTÁCTICO (PARSING)
sintaxis: es parte de la gramática de una oración e indica que las palabras o elementos que
conforman una oración están en un orden correcto.
Si transferimos ese concepto a la computación sería como las reglas o las normas que
brindan las secuencias correctas de un lenguaje de programación. Así, antes de iniciar con la
sintaxis, debemos saber que la gramática en informática señala la estructura jerárquica de
los programas, la cual se integrará por los siguientes aspectos:
1. Símbolos elementales o terminales.
2. Símbolos variables o no terminales.
Por lo anterior el análisis sintáctico, son reglas que indican la
estructura de un programa bien formado.
En java, 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 por gramáticas independientes del
contexto o notación:
prop  while (expr) prop
prop  if (expr) else prop
EJEMPLO WHILE
(while)|([a-zA-Z]+)|([>|<|=]+)|([0-9]+)|([(|)]+)|([{|}]+)|(;)
while (num<=100)
{
println(num);
num=num +1;
}
https://sekthdroid.wordpress.com/2013/02/08/parsing-tokenizing-y-formatting-en-java/
http://www.ocpsoft.org/opensource/guide-to-regular-expressions-in-java-part-1/
Una gramática independiente del contexto tiene cuatro
componentes: ejemplo if expr else expr
Un conjunto de componentes léxicos, denominados símbolos terminales. (Ej. if y else).
Un conjunto de no terminales. (Ej. expr y prop )
Un conjunto de producciones, en el que cada producción consta de un no terminal, llamado lado
izquierdo de la producción, una flecha que se puede leer como puede tener la forma, y una
secuencia de componentes léxicos y no terminales, o ambos, llamado lado derecho de la
producción.
La denominación de uno de los no terminales como símbolo inicial.
ANÁLISIS SEMÁNTICO
• Se basa en el árbol semántico y la información de la tabla de símbolos para
comprobar que lo que se está escribiendo es congruente con el lenguaje de
programación.
• La fase de análisis semántico revisa el programa fuente para tratar de
encontrar errores semánticos y reúne la información sobre los tipos para la
fase posterior de generación de código.
• En ella se utiliza la estructura jerárquica determinada por la clase de
análisis sintáctico para identificar los operadores y operandos de
expresiones y proposiciones
Sintáctico Semántico
MANEJO DE LOS ERRORES
• Los errores léxicos incluyen la escritura incorrecta de los identificadores, las palabras clave o los
operadores; por ejemplo, el uso de un identificador tamanioElipce en vez de tamanioElipse, y la omisión
de comillas alrededor del texto que se debe interpretar como una cadena.
• Los errores sintácticos incluyen la colocación incorrecta de los signos de punto y coma, además de
llaves adicionales o faltantes; es decir, “{” o “}”. Como otro ejemplo, en C o Java, la aparición de una
instrucción case sin una instrucción switch que la encierre es un error sintáctico (sin embargo, por lo
general, esta situación la acepta el analizador sintáctico y se atrapa más adelante en el procesamiento,
cuando el compilador intenta generar código)
• Los errores semánticos incluyen los conflictos de tipos entre los operadores y los operandos. Un
ejemplo es una instrucción return en un método de Java, con el tipo de resultado void.
• Los errores lógicos pueden ser cualquier cosa, desde un razonamiento incorrecto del programador en el
uso (en un programa en C) del operador de asignación =, en vez del operador de comparación ==. El
programa que contenga = puede estar bien formado; sin embargo, tal vez no refleje la intención del
programador.
ESTRATEGIAS PARA RECUPERARSE DE LOS ERRORES
• Recuperación en modo de pánico: un identificador mal escrito corregirlo.
• Recuperación a nivel de frase: por ejemplo, una coma (,) corregirlo por un punto y coma (;)
• Producciones de errores: anticipar los errores.
• Corrección global: validar por medio técnicas de arboles sintácticos los tokens y hacer las correcciones
necesarias para que funcione.
COMPARACIÓN ENTRE ANÁLISIS LÉXICO Y ANÁLISIS
SINTÁCTICO
• La sencillez en el diseño es la consideración más importante: La separación del análisis léxico y el
análisis sintáctico a menudo nos permite simplificar por lo menos una de estas tareas. Por ejemplo, un
analizador sintáctico que tuviera que manejar los comentarios y el espacio en blanco como unidades
sintácticas sería mucho más complejo que uno que asumiera que el analizador léxico ya ha eliminado
los comentarios y el espacio en blanco. Si vamos a diseñar un nuevo lenguaje, la separación de las
cuestiones léxicas y sintácticas puede llevar a un diseño más limpio del lenguaje en general.
• Se mejora la eficiencia del compilador: Un analizador léxico separado nos permite aplicar técnicas
especializadas que sirven sólo para la tarea léxica, no para el trabajo del análisis sintáctico. Además, las
técnicas de búfer especializadas para leer caracteres de entrada pueden agilizar la velocidad del
compilador en forma considerable.
• Se mejora la portabilidad del compilador: Las peculiaridades específicas de los dispositivos de entrada
pueden restringirse al analizador léxico.
DIAGRAMAS DE TRANSICIONES DE ESTADOS
inicio
*
0 1 2
letra otro
Return (ObtenerToken() / InstalarID() )
letra o dígito
Diagrama de transiciones para identificadores y palabras clave por ejemplo  abc123z
Convertir los patrones en diagramas de flujo estilizados, conversión de patrones de
expresiones regulares a diagramas de transiciones para su verificación de palabras
reservadas o identificadores, los tokens o componentes lexicos deben ser revisados
con ello.
AUTÓMATAS FINITOS
• Es un diagrama de transiciones generalizado.
• Un autómata finito puede ser determinista o no determinista,
donde no determinista significa que en un estado se puede dar el
caso de tener más de una transición para el mismo símbolo de
entrada.
AUTÓMATA FINITO NO DETERMINISTA:
Significa que en un estado se puede dar el caso de tener más de una transición para el mismo
símbolo de entrada
Un autómata finito no determinista (AFN) es un modelo matemático formado por:
• Un conjunto de estados
• Un conjunto de símbolos de entrada  (el alfabeto de símbolos de entrada)
• Una función de transición "mueve" que transforma pares estado - símbolo en conjuntos de
estados
• Un estado Q0 que se considera el estado de inicio
• Un conjunto de estados F considerados como estado de aceptación o finales
Ejemplo:  00101
Inicio b ba
q0 q1 q2
q3
a
b
Un autómata finito no determinista para (a b) * abb
AUTÓMATA FINITO DETERMINISTA
• Un autómata finito determinista (AFD) es un caso especial de un
AFN en el cual:
• Ningún estado tiene una transición , es decir, una transición con
la entrada de conjunto vacío.
• Para cada estado s y cada símbolo de entrada a, hay a lo sumo una
arista etiquetada a que sale de S.
a
Inicio b ba
0 1 2 3
a
b
Un autómata finito determinista (AFD) para (a | b) * abb
a
b
0-1-2-1-2-3
0-1-2-3
SECUENCIAS AUTÓMATA FINITO DETERMINISTA
Muestre la secuencia de movimientos en el siguiente AFD para las cadenas:
1 – aabc
2 – bbc
3 – cabb
4 – abbbc
5 – aaaac
1. La secuencia es 0 – 1 – 1 – 3
2. La secuencia es 0 – 2 – 2 - 3
3. La secuencia 0 – 1 – 1 – 2 - 3
4. La secuencia es 0 – 1 – 2 – 2 -2 – 3
5. La secuencia es 0 – 1 – 1 – 1 – 1 - 3
ÁRBOLES SINTÁCTICOS
Un árbol de análisis sintáctico es un árbol con las propiedades siguientes:
La raíz está etiquetada con el símbolo inicial
Cada hoja esta etiquetada con un componente léxico o con E.
Cada nodo interior está etiquetado con un no terminal.
A
X Y Z
Árbol de análisis sintáctico para A  XYZ
Hay varias tareas que se pueden realizar durante el análisis sintáctico:
Recoger información sobre distintos componentes léxicos en la tabla de símbolos
Realizar la verificación de tipo y otras clases de análisis semántico
Generar código intermedio
Análisis sintáctico descendente.
La construcción descendente de un árbol de análisis sintáctico se hace empezando por la raíz, etiquetada
con el no terminal inicial, y realizando de forma repetida los dos pasos siguientes:
En el nodo n, etiquetado con el no terminal A, selecciónese una de las producciones para A y constrúyase
los hijos de n para los símbolos del lado derecho de la producción.
Encuéntrese el siguiente nodo en el que ha de construirse un subárbol.
Por ejemplo la expresión Entrada:  num*num+num
Gramática: E ::= E + T | T T ::= T * F | F F ::= num
(E: expresión, T: término, F: factor)
REGLAS DE PRODUCCIÓN SINTÁCTICA
Podemos construir una gramática para expresiones aritméticas a partir de una tabla que muestre la asociatividad y la
precedencia de los operadores
asociativo por la izquierda: + −
asociativo por la derecha: * /
Creamos dos no terminales llamadas expr y term para los dos niveles de precedencia, y un no terminal adicional
llamado factor para generar unidades básicas en las expresiones. Las unidades básicas en las expresiones son dígitos
y expresiones entre paréntesis. factor → dígito | ( expr )
los operadores binarios, * y /, que tienen la mayor precedencia. Como estos operadores asocian por la izquierda, las
producciones son similares a las de las listas que asocian por la izquierda.
De manera similar, expr genera listas de términos separados por los operadores aditivos:
Por lo tanto, la gramática resultante es:
Análisis sintáctico ascendente.
Este método intenta construir un árbol de análisis sintáctico para una cadena de entrada que comienza por las
hojas (el fondo) y avanza hacia la raíz.
Por ejemplo la expresión Entrada:  num*num+num
Gramática: E ::= E + T | T T ::= T * F | F F ::= num
(E: expresión, T: término, F: factor)
Analizadores sintácticos LR
Este diagrama consiste en una entrada, una salida, una pila, un programa controlador y una
tabla de análisis sintáctico que tiene dos partes (ACCION y el ir_A). El programa controlador
es igual para todos los analizadores sintácticos LR; sólo la tabla de análisis sintáctico cambia
de un analizador sintáctico a otro. El programa de análisis sintáctico lee caracteres de un
búfer de entrada, uno a la vez. En donde un analizador sintáctico de desplazamiento-
reducción desplazaría a un símbolo, un analizador sintáctico LR desplaza a un estado. Cada
estado sintetiza la información contenida en la pila, debajo de éste.
CONCLUSIÓN ANÁLISIS SINTÁCTICO
• En esta etapa, se identifican las estructuras más grandes del programa,
proposiciones, declaraciones, expresiones, etc., utilizando los esquemas
léxicos producidos por el analizador léxico.
• El análisis sintáctico por lo regular alterna con el análisis semántico.
• Primero el analizador sintáctico identifica una secuencia de elementos
léxicos que forman una unidad de sintaxis tal como una expresión. Se
llama entonces al analizador de semántica para procesar esta unidad.
FIN

Más contenido relacionado

La actualidad más candente

Analizador léxico
Analizador léxico Analizador léxico
Analizador léxico Jorge Molano
 
Incorporacion De Una Tabla De Simbolos Compiladores
Incorporacion De Una Tabla De Simbolos CompiladoresIncorporacion De Una Tabla De Simbolos Compiladores
Incorporacion De Una Tabla De Simbolos Compiladoresguest5fa3fc
 
Análisis léxico y análisis sintáctico
Análisis léxico y análisis sintácticoAnálisis léxico y análisis sintáctico
Análisis léxico y análisis sintácticoangiepao1717
 
Taller analisis semantico
Taller analisis semanticoTaller analisis semantico
Taller analisis semanticoAlvaro Cedeño
 
ANALIZADOR SINTACTICO: INTRODUCION, CONCEPTOS, CARACTERISTICAS
ANALIZADOR SINTACTICO: INTRODUCION, CONCEPTOS, CARACTERISTICAS ANALIZADOR SINTACTICO: INTRODUCION, CONCEPTOS, CARACTERISTICAS
ANALIZADOR SINTACTICO: INTRODUCION, CONCEPTOS, CARACTERISTICAS Infomania pro
 
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 mascesarkt
 
Analizador Sintáctico
Analizador SintácticoAnalizador Sintáctico
Analizador SintácticoPablo Guerra
 
Unidad4 analisis-semantico
Unidad4 analisis-semanticoUnidad4 analisis-semantico
Unidad4 analisis-semanticoInfomania pro
 
Clase6 conceptos del analisis lexico
Clase6 conceptos del analisis lexicoClase6 conceptos del analisis lexico
Clase6 conceptos del analisis lexicoInfomania pro
 
Actividad 2 Analizador léxico, sintáctico y semántico
Actividad 2 Analizador léxico, sintáctico y semántico Actividad 2 Analizador léxico, sintáctico y semántico
Actividad 2 Analizador léxico, sintáctico y semántico maryr_
 
Analizador Sintactico
Analizador SintacticoAnalizador Sintactico
Analizador SintacticoBayo Chicaiza
 

La actualidad más candente (20)

Compiladores, Analisis Lexico, Tabla de Transiciones
Compiladores, Analisis Lexico, Tabla de TransicionesCompiladores, Analisis Lexico, Tabla de Transiciones
Compiladores, Analisis Lexico, Tabla de Transiciones
 
Analizador léxico
Analizador léxicoAnalizador léxico
Analizador léxico
 
Analizador léxico
Analizador léxico Analizador léxico
Analizador léxico
 
Incorporacion De Una Tabla De Simbolos Compiladores
Incorporacion De Una Tabla De Simbolos CompiladoresIncorporacion De Una Tabla De Simbolos Compiladores
Incorporacion De Una Tabla De Simbolos Compiladores
 
Compilador2
Compilador2Compilador2
Compilador2
 
Análisis léxico y análisis sintáctico
Análisis léxico y análisis sintácticoAnálisis léxico y análisis sintáctico
Análisis léxico y análisis sintáctico
 
AnáLisis LéXico
AnáLisis LéXicoAnáLisis LéXico
AnáLisis LéXico
 
Taller analisis semantico
Taller analisis semanticoTaller analisis semantico
Taller analisis semantico
 
Unidad 2
Unidad 2Unidad 2
Unidad 2
 
Compiladores1
Compiladores1Compiladores1
Compiladores1
 
ANALIZADOR SINTACTICO: INTRODUCION, CONCEPTOS, CARACTERISTICAS
ANALIZADOR SINTACTICO: INTRODUCION, CONCEPTOS, CARACTERISTICAS ANALIZADOR SINTACTICO: INTRODUCION, CONCEPTOS, CARACTERISTICAS
ANALIZADOR SINTACTICO: INTRODUCION, CONCEPTOS, CARACTERISTICAS
 
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
 
Tabla simbolos
Tabla simbolosTabla simbolos
Tabla simbolos
 
TABLA DE SIMBOLOS
TABLA DE SIMBOLOSTABLA DE SIMBOLOS
TABLA DE SIMBOLOS
 
Analizador Sintáctico
Analizador SintácticoAnalizador Sintáctico
Analizador Sintáctico
 
Unidad4 analisis-semantico
Unidad4 analisis-semanticoUnidad4 analisis-semantico
Unidad4 analisis-semantico
 
Clase6 conceptos del analisis lexico
Clase6 conceptos del analisis lexicoClase6 conceptos del analisis lexico
Clase6 conceptos del analisis lexico
 
Actividad 2 Analizador léxico, sintáctico y semántico
Actividad 2 Analizador léxico, sintáctico y semántico Actividad 2 Analizador léxico, sintáctico y semántico
Actividad 2 Analizador léxico, sintáctico y semántico
 
Analizador Sintactico
Analizador SintacticoAnalizador Sintactico
Analizador Sintactico
 
Tabla de símbolos
Tabla de símbolosTabla de símbolos
Tabla de símbolos
 

Similar a Análisis sintáctico lenguajes programación

Compiladores - Incorporacion de una Tabla de Simbolos Compiladores
Compiladores - Incorporacion de una Tabla de Simbolos CompiladoresCompiladores - Incorporacion de una Tabla de Simbolos Compiladores
Compiladores - Incorporacion de una Tabla de Simbolos Compiladoresjose haar
 
Taller de actividades de compiladores 06 06 2019
Taller de actividades de compiladores 06 06 2019Taller de actividades de compiladores 06 06 2019
Taller de actividades de compiladores 06 06 2019DanielRosero23
 
Análisis sintáctico
Análisis sintácticoAnálisis sintáctico
Análisis sintácticoRubnPilca
 
Analisis sintactico actividad 15
Analisis sintactico actividad 15Analisis sintactico actividad 15
Analisis sintactico actividad 15AndresDvila
 
Taller compiladores Análisis Semántico
Taller compiladores Análisis Semántico Taller compiladores Análisis Semántico
Taller compiladores Análisis Semántico Alex Toapanta
 
Analisis sintactico
Analisis sintacticoAnalisis sintactico
Analisis sintacticoAndres Pozo
 
Taller n13 compiladores_10_junio_2021
Taller n13 compiladores_10_junio_2021Taller n13 compiladores_10_junio_2021
Taller n13 compiladores_10_junio_2021Bryan Chasiguano
 
Analisis Semantico Taller 1 Parcial 2
Analisis Semantico Taller 1 Parcial 2Analisis Semantico Taller 1 Parcial 2
Analisis Semantico Taller 1 Parcial 2GLORIABELEN3
 
Analisis semantico 06 06-2019 galarraga
Analisis semantico  06 06-2019 galarragaAnalisis semantico  06 06-2019 galarraga
Analisis semantico 06 06-2019 galarragaFabricio Galárraga
 
Análisis semántico
Análisis semánticoAnálisis semántico
Análisis semánticoAndres Pozo
 
Taller análisis sintáctico
Taller análisis sintácticoTaller análisis sintáctico
Taller análisis sintácticoSantiago Andrade
 

Similar a Análisis sintáctico lenguajes programación (20)

Compiladores - Incorporacion de una Tabla de Simbolos Compiladores
Compiladores - Incorporacion de una Tabla de Simbolos CompiladoresCompiladores - Incorporacion de una Tabla de Simbolos Compiladores
Compiladores - Incorporacion de una Tabla de Simbolos Compiladores
 
Analizador léxico
Analizador léxicoAnalizador léxico
Analizador léxico
 
Taller de actividades de compiladores 06 06 2019
Taller de actividades de compiladores 06 06 2019Taller de actividades de compiladores 06 06 2019
Taller de actividades de compiladores 06 06 2019
 
Compilador Exp
Compilador ExpCompilador Exp
Compilador Exp
 
Análisis Sintáctico
Análisis SintácticoAnálisis Sintáctico
Análisis Sintáctico
 
Análisis lexicográfico
Análisis lexicográficoAnálisis lexicográfico
Análisis lexicográfico
 
Análisis sintáctico
Análisis sintácticoAnálisis sintáctico
Análisis sintáctico
 
Analisis sintactico actividad 15
Analisis sintactico actividad 15Analisis sintactico actividad 15
Analisis sintactico actividad 15
 
Taller compiladores Análisis Semántico
Taller compiladores Análisis Semántico Taller compiladores Análisis Semántico
Taller compiladores Análisis Semántico
 
Analisis sintactico
Analisis sintacticoAnalisis sintactico
Analisis sintactico
 
Curso prog sist
Curso prog sistCurso prog sist
Curso prog sist
 
Taller n13 compiladores_10_junio_2021
Taller n13 compiladores_10_junio_2021Taller n13 compiladores_10_junio_2021
Taller n13 compiladores_10_junio_2021
 
Taller análisis sintáctico
Taller análisis sintácticoTaller análisis sintáctico
Taller análisis sintáctico
 
Analisis Semantico Taller 1 Parcial 2
Analisis Semantico Taller 1 Parcial 2Analisis Semantico Taller 1 Parcial 2
Analisis Semantico Taller 1 Parcial 2
 
Analisis semantico 06 06-2019 galarraga
Analisis semantico  06 06-2019 galarragaAnalisis semantico  06 06-2019 galarraga
Analisis semantico 06 06-2019 galarraga
 
Análisis semántico
Análisis semánticoAnálisis semántico
Análisis semántico
 
Taller análisis sintáctico
Taller análisis sintácticoTaller análisis sintáctico
Taller análisis sintáctico
 
Analisis lexico automatas i
Analisis lexico automatas iAnalisis lexico automatas i
Analisis lexico automatas i
 
Analisis semantico
Analisis semanticoAnalisis semantico
Analisis semantico
 
Compiladores
CompiladoresCompiladores
Compiladores
 

Último

Una estrategia de seguridad en la nube alineada al NIST
Una estrategia de seguridad en la nube alineada al NISTUna estrategia de seguridad en la nube alineada al NIST
Una estrategia de seguridad en la nube alineada al NISTFundación YOD YOD
 
SEGURIDAD EN CONSTRUCCION PPT PARA EL CIP
SEGURIDAD EN CONSTRUCCION PPT PARA EL CIPSEGURIDAD EN CONSTRUCCION PPT PARA EL CIP
SEGURIDAD EN CONSTRUCCION PPT PARA EL CIPJosLuisFrancoCaldern
 
Edificio residencial Becrux en Madrid. Fachada de GRC
Edificio residencial Becrux en Madrid. Fachada de GRCEdificio residencial Becrux en Madrid. Fachada de GRC
Edificio residencial Becrux en Madrid. Fachada de GRCANDECE
 
2. UPN PPT - SEMANA 02 GESTION DE PROYECTOS MG CHERYL QUEZADA(1).pdf
2. UPN PPT - SEMANA 02 GESTION DE PROYECTOS MG CHERYL QUEZADA(1).pdf2. UPN PPT - SEMANA 02 GESTION DE PROYECTOS MG CHERYL QUEZADA(1).pdf
2. UPN PPT - SEMANA 02 GESTION DE PROYECTOS MG CHERYL QUEZADA(1).pdfAnthonyTiclia
 
TEXTURA Y DETERMINACION DE ROCAS SEDIMENTARIAS
TEXTURA Y DETERMINACION DE ROCAS SEDIMENTARIASTEXTURA Y DETERMINACION DE ROCAS SEDIMENTARIAS
TEXTURA Y DETERMINACION DE ROCAS SEDIMENTARIASfranzEmersonMAMANIOC
 
Calavera calculo de estructuras de cimentacion.pdf
Calavera calculo de estructuras de cimentacion.pdfCalavera calculo de estructuras de cimentacion.pdf
Calavera calculo de estructuras de cimentacion.pdfyoseka196
 
AMBIENTES SEDIMENTARIOS GEOLOGIA TIPOS .pptx
AMBIENTES SEDIMENTARIOS GEOLOGIA TIPOS .pptxAMBIENTES SEDIMENTARIOS GEOLOGIA TIPOS .pptx
AMBIENTES SEDIMENTARIOS GEOLOGIA TIPOS .pptxLuisvila35
 
SOLICITUD-PARA-LOS-EGRESADOS-UNEFA-2022.
SOLICITUD-PARA-LOS-EGRESADOS-UNEFA-2022.SOLICITUD-PARA-LOS-EGRESADOS-UNEFA-2022.
SOLICITUD-PARA-LOS-EGRESADOS-UNEFA-2022.ariannytrading
 
4.6 DEFINICION DEL PROBLEMA DE ASIGNACION.pptx
4.6 DEFINICION DEL PROBLEMA DE ASIGNACION.pptx4.6 DEFINICION DEL PROBLEMA DE ASIGNACION.pptx
4.6 DEFINICION DEL PROBLEMA DE ASIGNACION.pptxGARCIARAMIREZCESAR
 
clases de dinamica ejercicios preuniversitarios.pdf
clases de dinamica ejercicios preuniversitarios.pdfclases de dinamica ejercicios preuniversitarios.pdf
clases de dinamica ejercicios preuniversitarios.pdfDanielaVelasquez553560
 
Voladura Controlada Sobrexcavación (como se lleva a cabo una voladura)
Voladura Controlada  Sobrexcavación (como se lleva a cabo una voladura)Voladura Controlada  Sobrexcavación (como se lleva a cabo una voladura)
Voladura Controlada Sobrexcavación (como se lleva a cabo una voladura)ssuser563c56
 
Reporte de Exportaciones de Fibra de alpaca
Reporte de Exportaciones de Fibra de alpacaReporte de Exportaciones de Fibra de alpaca
Reporte de Exportaciones de Fibra de alpacajeremiasnifla
 
Fijaciones de balcones prefabricados de hormigón - RECENSE
Fijaciones de balcones prefabricados de hormigón - RECENSEFijaciones de balcones prefabricados de hormigón - RECENSE
Fijaciones de balcones prefabricados de hormigón - RECENSEANDECE
 
Reporte de simulación de flujo del agua en un volumen de control MNVA.pdf
Reporte de simulación de flujo del agua en un volumen de control MNVA.pdfReporte de simulación de flujo del agua en un volumen de control MNVA.pdf
Reporte de simulación de flujo del agua en un volumen de control MNVA.pdfMikkaelNicolae
 
CICLO DE DEMING que se encarga en como mejorar una empresa
CICLO DE DEMING que se encarga en como mejorar una empresaCICLO DE DEMING que se encarga en como mejorar una empresa
CICLO DE DEMING que se encarga en como mejorar una empresaSHERELYNSAMANTHAPALO1
 
Introducción a los sistemas neumaticos.ppt
Introducción a los sistemas neumaticos.pptIntroducción a los sistemas neumaticos.ppt
Introducción a los sistemas neumaticos.pptEduardoCorado
 
Residente de obra y sus funciones que realiza .pdf
Residente de obra y sus funciones que realiza  .pdfResidente de obra y sus funciones que realiza  .pdf
Residente de obra y sus funciones que realiza .pdfevin1703e
 
Unidad 3 Administracion de inventarios.pptx
Unidad 3 Administracion de inventarios.pptxUnidad 3 Administracion de inventarios.pptx
Unidad 3 Administracion de inventarios.pptxEverardoRuiz8
 
Sesión 02 TIPOS DE VALORIZACIONES CURSO Cersa
Sesión 02 TIPOS DE VALORIZACIONES CURSO CersaSesión 02 TIPOS DE VALORIZACIONES CURSO Cersa
Sesión 02 TIPOS DE VALORIZACIONES CURSO CersaXimenaFallaLecca1
 
Topografía 1 Nivelación y Carretera en la Ingenierías
Topografía 1 Nivelación y Carretera en la IngenieríasTopografía 1 Nivelación y Carretera en la Ingenierías
Topografía 1 Nivelación y Carretera en la IngenieríasSegundo Silva Maguiña
 

Último (20)

Una estrategia de seguridad en la nube alineada al NIST
Una estrategia de seguridad en la nube alineada al NISTUna estrategia de seguridad en la nube alineada al NIST
Una estrategia de seguridad en la nube alineada al NIST
 
SEGURIDAD EN CONSTRUCCION PPT PARA EL CIP
SEGURIDAD EN CONSTRUCCION PPT PARA EL CIPSEGURIDAD EN CONSTRUCCION PPT PARA EL CIP
SEGURIDAD EN CONSTRUCCION PPT PARA EL CIP
 
Edificio residencial Becrux en Madrid. Fachada de GRC
Edificio residencial Becrux en Madrid. Fachada de GRCEdificio residencial Becrux en Madrid. Fachada de GRC
Edificio residencial Becrux en Madrid. Fachada de GRC
 
2. UPN PPT - SEMANA 02 GESTION DE PROYECTOS MG CHERYL QUEZADA(1).pdf
2. UPN PPT - SEMANA 02 GESTION DE PROYECTOS MG CHERYL QUEZADA(1).pdf2. UPN PPT - SEMANA 02 GESTION DE PROYECTOS MG CHERYL QUEZADA(1).pdf
2. UPN PPT - SEMANA 02 GESTION DE PROYECTOS MG CHERYL QUEZADA(1).pdf
 
TEXTURA Y DETERMINACION DE ROCAS SEDIMENTARIAS
TEXTURA Y DETERMINACION DE ROCAS SEDIMENTARIASTEXTURA Y DETERMINACION DE ROCAS SEDIMENTARIAS
TEXTURA Y DETERMINACION DE ROCAS SEDIMENTARIAS
 
Calavera calculo de estructuras de cimentacion.pdf
Calavera calculo de estructuras de cimentacion.pdfCalavera calculo de estructuras de cimentacion.pdf
Calavera calculo de estructuras de cimentacion.pdf
 
AMBIENTES SEDIMENTARIOS GEOLOGIA TIPOS .pptx
AMBIENTES SEDIMENTARIOS GEOLOGIA TIPOS .pptxAMBIENTES SEDIMENTARIOS GEOLOGIA TIPOS .pptx
AMBIENTES SEDIMENTARIOS GEOLOGIA TIPOS .pptx
 
SOLICITUD-PARA-LOS-EGRESADOS-UNEFA-2022.
SOLICITUD-PARA-LOS-EGRESADOS-UNEFA-2022.SOLICITUD-PARA-LOS-EGRESADOS-UNEFA-2022.
SOLICITUD-PARA-LOS-EGRESADOS-UNEFA-2022.
 
4.6 DEFINICION DEL PROBLEMA DE ASIGNACION.pptx
4.6 DEFINICION DEL PROBLEMA DE ASIGNACION.pptx4.6 DEFINICION DEL PROBLEMA DE ASIGNACION.pptx
4.6 DEFINICION DEL PROBLEMA DE ASIGNACION.pptx
 
clases de dinamica ejercicios preuniversitarios.pdf
clases de dinamica ejercicios preuniversitarios.pdfclases de dinamica ejercicios preuniversitarios.pdf
clases de dinamica ejercicios preuniversitarios.pdf
 
Voladura Controlada Sobrexcavación (como se lleva a cabo una voladura)
Voladura Controlada  Sobrexcavación (como se lleva a cabo una voladura)Voladura Controlada  Sobrexcavación (como se lleva a cabo una voladura)
Voladura Controlada Sobrexcavación (como se lleva a cabo una voladura)
 
Reporte de Exportaciones de Fibra de alpaca
Reporte de Exportaciones de Fibra de alpacaReporte de Exportaciones de Fibra de alpaca
Reporte de Exportaciones de Fibra de alpaca
 
Fijaciones de balcones prefabricados de hormigón - RECENSE
Fijaciones de balcones prefabricados de hormigón - RECENSEFijaciones de balcones prefabricados de hormigón - RECENSE
Fijaciones de balcones prefabricados de hormigón - RECENSE
 
Reporte de simulación de flujo del agua en un volumen de control MNVA.pdf
Reporte de simulación de flujo del agua en un volumen de control MNVA.pdfReporte de simulación de flujo del agua en un volumen de control MNVA.pdf
Reporte de simulación de flujo del agua en un volumen de control MNVA.pdf
 
CICLO DE DEMING que se encarga en como mejorar una empresa
CICLO DE DEMING que se encarga en como mejorar una empresaCICLO DE DEMING que se encarga en como mejorar una empresa
CICLO DE DEMING que se encarga en como mejorar una empresa
 
Introducción a los sistemas neumaticos.ppt
Introducción a los sistemas neumaticos.pptIntroducción a los sistemas neumaticos.ppt
Introducción a los sistemas neumaticos.ppt
 
Residente de obra y sus funciones que realiza .pdf
Residente de obra y sus funciones que realiza  .pdfResidente de obra y sus funciones que realiza  .pdf
Residente de obra y sus funciones que realiza .pdf
 
Unidad 3 Administracion de inventarios.pptx
Unidad 3 Administracion de inventarios.pptxUnidad 3 Administracion de inventarios.pptx
Unidad 3 Administracion de inventarios.pptx
 
Sesión 02 TIPOS DE VALORIZACIONES CURSO Cersa
Sesión 02 TIPOS DE VALORIZACIONES CURSO CersaSesión 02 TIPOS DE VALORIZACIONES CURSO Cersa
Sesión 02 TIPOS DE VALORIZACIONES CURSO Cersa
 
Topografía 1 Nivelación y Carretera en la Ingenierías
Topografía 1 Nivelación y Carretera en la IngenieríasTopografía 1 Nivelación y Carretera en la Ingenierías
Topografía 1 Nivelación y Carretera en la Ingenierías
 

Análisis sintáctico lenguajes programación

  • 1. UNIVERSIDAD ESTATAL A DISTANCIA VICERRECTORÍA ACADÉMICA ESCUELA CIENCIAS EXACTAS Y NATURALES CÁTEDRA TECNOLOGÍA DE SISTEMAS
  • 2. OBJETIVOS  Identificar las diferencias entre la sintaxis y la semántica.  Adquirir los conocimientos sobre los métodos de análisis sintácticos.  Aplicar los métodos de análisis sintácticos y su utilización en un programa de lenguaje.  Asociar la información con una construcción del lenguaje para utilizar técnicas de traducción.  Analizar la sintaxis de un lenguaje de programación.
  • 3. REPASANDO SOBRE ANÁLISIS LÉXICO En la presentación anterior conversamos que el compilador lee un archivo de entrada para posteriormente convertir cada instrucción del código de dicho archivo para poder ir identificando tokens y lexemas que por medio de patrones definidos se lograba. Se desecha la información que no era necesaria para el compilador, tal como espacios en blanco, salto de líneas, comentarios etc. Y la función primordial de la tabla de símbolo a modo de un soporte para poder ir formando el compilador, etc.
  • 4. ANÁLISIS SINTÁCTICO (PARSING) sintaxis: es parte de la gramática de una oración e indica que las palabras o elementos que conforman una oración están en un orden correcto. Si transferimos ese concepto a la computación sería como las reglas o las normas que brindan las secuencias correctas de un lenguaje de programación. Así, antes de iniciar con la sintaxis, debemos saber que la gramática en informática señala la estructura jerárquica de los programas, la cual se integrará por los siguientes aspectos: 1. Símbolos elementales o terminales. 2. Símbolos variables o no terminales.
  • 5.
  • 6. Por lo anterior el análisis sintáctico, son reglas que indican la estructura de un programa bien formado. En java, 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 por gramáticas independientes del contexto o notación: prop  while (expr) prop prop  if (expr) else prop
  • 7. EJEMPLO WHILE (while)|([a-zA-Z]+)|([>|<|=]+)|([0-9]+)|([(|)]+)|([{|}]+)|(;) while (num<=100) { println(num); num=num +1; } https://sekthdroid.wordpress.com/2013/02/08/parsing-tokenizing-y-formatting-en-java/ http://www.ocpsoft.org/opensource/guide-to-regular-expressions-in-java-part-1/
  • 8. Una gramática independiente del contexto tiene cuatro componentes: ejemplo if expr else expr Un conjunto de componentes léxicos, denominados símbolos terminales. (Ej. if y else). Un conjunto de no terminales. (Ej. expr y prop ) Un conjunto de producciones, en el que cada producción consta de un no terminal, llamado lado izquierdo de la producción, una flecha que se puede leer como puede tener la forma, y una secuencia de componentes léxicos y no terminales, o ambos, llamado lado derecho de la producción. La denominación de uno de los no terminales como símbolo inicial.
  • 9. ANÁLISIS SEMÁNTICO • Se basa en el árbol semántico y la información de la tabla de símbolos para comprobar que lo que se está escribiendo es congruente con el lenguaje de programación. • La fase de análisis semántico revisa el programa fuente para tratar de encontrar errores semánticos y reúne la información sobre los tipos para la fase posterior de generación de código. • En ella se utiliza la estructura jerárquica determinada por la clase de análisis sintáctico para identificar los operadores y operandos de expresiones y proposiciones Sintáctico Semántico
  • 10. MANEJO DE LOS ERRORES • Los errores léxicos incluyen la escritura incorrecta de los identificadores, las palabras clave o los operadores; por ejemplo, el uso de un identificador tamanioElipce en vez de tamanioElipse, y la omisión de comillas alrededor del texto que se debe interpretar como una cadena. • Los errores sintácticos incluyen la colocación incorrecta de los signos de punto y coma, además de llaves adicionales o faltantes; es decir, “{” o “}”. Como otro ejemplo, en C o Java, la aparición de una instrucción case sin una instrucción switch que la encierre es un error sintáctico (sin embargo, por lo general, esta situación la acepta el analizador sintáctico y se atrapa más adelante en el procesamiento, cuando el compilador intenta generar código) • Los errores semánticos incluyen los conflictos de tipos entre los operadores y los operandos. Un ejemplo es una instrucción return en un método de Java, con el tipo de resultado void. • Los errores lógicos pueden ser cualquier cosa, desde un razonamiento incorrecto del programador en el uso (en un programa en C) del operador de asignación =, en vez del operador de comparación ==. El programa que contenga = puede estar bien formado; sin embargo, tal vez no refleje la intención del programador.
  • 11. ESTRATEGIAS PARA RECUPERARSE DE LOS ERRORES • Recuperación en modo de pánico: un identificador mal escrito corregirlo. • Recuperación a nivel de frase: por ejemplo, una coma (,) corregirlo por un punto y coma (;) • Producciones de errores: anticipar los errores. • Corrección global: validar por medio técnicas de arboles sintácticos los tokens y hacer las correcciones necesarias para que funcione.
  • 12. COMPARACIÓN ENTRE ANÁLISIS LÉXICO Y ANÁLISIS SINTÁCTICO • La sencillez en el diseño es la consideración más importante: La separación del análisis léxico y el análisis sintáctico a menudo nos permite simplificar por lo menos una de estas tareas. Por ejemplo, un analizador sintáctico que tuviera que manejar los comentarios y el espacio en blanco como unidades sintácticas sería mucho más complejo que uno que asumiera que el analizador léxico ya ha eliminado los comentarios y el espacio en blanco. Si vamos a diseñar un nuevo lenguaje, la separación de las cuestiones léxicas y sintácticas puede llevar a un diseño más limpio del lenguaje en general. • Se mejora la eficiencia del compilador: Un analizador léxico separado nos permite aplicar técnicas especializadas que sirven sólo para la tarea léxica, no para el trabajo del análisis sintáctico. Además, las técnicas de búfer especializadas para leer caracteres de entrada pueden agilizar la velocidad del compilador en forma considerable. • Se mejora la portabilidad del compilador: Las peculiaridades específicas de los dispositivos de entrada pueden restringirse al analizador léxico.
  • 13. DIAGRAMAS DE TRANSICIONES DE ESTADOS inicio * 0 1 2 letra otro Return (ObtenerToken() / InstalarID() ) letra o dígito Diagrama de transiciones para identificadores y palabras clave por ejemplo  abc123z Convertir los patrones en diagramas de flujo estilizados, conversión de patrones de expresiones regulares a diagramas de transiciones para su verificación de palabras reservadas o identificadores, los tokens o componentes lexicos deben ser revisados con ello.
  • 14. AUTÓMATAS FINITOS • Es un diagrama de transiciones generalizado. • Un autómata finito puede ser determinista o no determinista, donde no determinista significa que en un estado se puede dar el caso de tener más de una transición para el mismo símbolo de entrada.
  • 15. AUTÓMATA FINITO NO DETERMINISTA: Significa que en un estado se puede dar el caso de tener más de una transición para el mismo símbolo de entrada Un autómata finito no determinista (AFN) es un modelo matemático formado por: • Un conjunto de estados • Un conjunto de símbolos de entrada  (el alfabeto de símbolos de entrada) • Una función de transición "mueve" que transforma pares estado - símbolo en conjuntos de estados • Un estado Q0 que se considera el estado de inicio • Un conjunto de estados F considerados como estado de aceptación o finales Ejemplo:  00101
  • 16. Inicio b ba q0 q1 q2 q3 a b Un autómata finito no determinista para (a b) * abb
  • 17. AUTÓMATA FINITO DETERMINISTA • Un autómata finito determinista (AFD) es un caso especial de un AFN en el cual: • Ningún estado tiene una transición , es decir, una transición con la entrada de conjunto vacío. • Para cada estado s y cada símbolo de entrada a, hay a lo sumo una arista etiquetada a que sale de S.
  • 18. a Inicio b ba 0 1 2 3 a b Un autómata finito determinista (AFD) para (a | b) * abb a b 0-1-2-1-2-3 0-1-2-3
  • 19. SECUENCIAS AUTÓMATA FINITO DETERMINISTA Muestre la secuencia de movimientos en el siguiente AFD para las cadenas: 1 – aabc 2 – bbc 3 – cabb 4 – abbbc 5 – aaaac 1. La secuencia es 0 – 1 – 1 – 3 2. La secuencia es 0 – 2 – 2 - 3 3. La secuencia 0 – 1 – 1 – 2 - 3 4. La secuencia es 0 – 1 – 2 – 2 -2 – 3 5. La secuencia es 0 – 1 – 1 – 1 – 1 - 3
  • 20. ÁRBOLES SINTÁCTICOS Un árbol de análisis sintáctico es un árbol con las propiedades siguientes: La raíz está etiquetada con el símbolo inicial Cada hoja esta etiquetada con un componente léxico o con E. Cada nodo interior está etiquetado con un no terminal. A X Y Z Árbol de análisis sintáctico para A  XYZ
  • 21. Hay varias tareas que se pueden realizar durante el análisis sintáctico: Recoger información sobre distintos componentes léxicos en la tabla de símbolos Realizar la verificación de tipo y otras clases de análisis semántico Generar código intermedio
  • 22. Análisis sintáctico descendente. La construcción descendente de un árbol de análisis sintáctico se hace empezando por la raíz, etiquetada con el no terminal inicial, y realizando de forma repetida los dos pasos siguientes: En el nodo n, etiquetado con el no terminal A, selecciónese una de las producciones para A y constrúyase los hijos de n para los símbolos del lado derecho de la producción. Encuéntrese el siguiente nodo en el que ha de construirse un subárbol. Por ejemplo la expresión Entrada:  num*num+num Gramática: E ::= E + T | T T ::= T * F | F F ::= num (E: expresión, T: término, F: factor)
  • 23. REGLAS DE PRODUCCIÓN SINTÁCTICA Podemos construir una gramática para expresiones aritméticas a partir de una tabla que muestre la asociatividad y la precedencia de los operadores asociativo por la izquierda: + − asociativo por la derecha: * / Creamos dos no terminales llamadas expr y term para los dos niveles de precedencia, y un no terminal adicional llamado factor para generar unidades básicas en las expresiones. Las unidades básicas en las expresiones son dígitos y expresiones entre paréntesis. factor → dígito | ( expr ) los operadores binarios, * y /, que tienen la mayor precedencia. Como estos operadores asocian por la izquierda, las producciones son similares a las de las listas que asocian por la izquierda. De manera similar, expr genera listas de términos separados por los operadores aditivos: Por lo tanto, la gramática resultante es:
  • 24. Análisis sintáctico ascendente. Este método intenta construir un árbol de análisis sintáctico para una cadena de entrada que comienza por las hojas (el fondo) y avanza hacia la raíz. Por ejemplo la expresión Entrada:  num*num+num Gramática: E ::= E + T | T T ::= T * F | F F ::= num (E: expresión, T: término, F: factor)
  • 25. Analizadores sintácticos LR Este diagrama consiste en una entrada, una salida, una pila, un programa controlador y una tabla de análisis sintáctico que tiene dos partes (ACCION y el ir_A). El programa controlador es igual para todos los analizadores sintácticos LR; sólo la tabla de análisis sintáctico cambia de un analizador sintáctico a otro. El programa de análisis sintáctico lee caracteres de un búfer de entrada, uno a la vez. En donde un analizador sintáctico de desplazamiento- reducción desplazaría a un símbolo, un analizador sintáctico LR desplaza a un estado. Cada estado sintetiza la información contenida en la pila, debajo de éste.
  • 26. CONCLUSIÓN ANÁLISIS SINTÁCTICO • En esta etapa, se identifican las estructuras más grandes del programa, proposiciones, declaraciones, expresiones, etc., utilizando los esquemas léxicos producidos por el analizador léxico. • El análisis sintáctico por lo regular alterna con el análisis semántico. • Primero el analizador sintáctico identifica una secuencia de elementos léxicos que forman una unidad de sintaxis tal como una expresión. Se llama entonces al analizador de semántica para procesar esta unidad.
  • 27. FIN