Funciones del Analizador Sintáctico

Slides:



Advertisements
Presentaciones similares
Filminas Segunda semana
Advertisements

Clasificación de los compiladores
Compiladores e intérpretes
Unidad 2. Análisis léxico
Unidad 1. Introducción al proceso de compilación.
Teoría de lenguajes y compiladores
Traducción dirigida por la Sintaxis
Compiladores Análisis Léxico Oscar Bonilla Universidad Galileo.
ANALISIS SINTACTICO El análisis gramatical es la tarea de determinar la sintaxis, o estructura, de un programa. Por esta razón también se le conoce como.
Tema 2 Lenguajes Formales.
M.C. Meliza Contreras González
M.C. Juan Carlos Olivares Rojas
Fundamentos de programación
ANALISIS SINTACTICO Parte I
TIPOS DE DATOS ABSTRACTOS
Programación de Sistemas
Unidad 1. Introducción a los Compiladores.
UNIVERSIDAD LATINA (UNILA)
1 Sebastián Argüello A60490 semana 3 Autómatas y compiladores CI-1322.
Teoría de lenguajes y compiladores
Unidad 3 Analizador Sintáctico
IV. GRAMÁTICAS DISTRIBUIDAS Y TABLAS DE SÍMBOLOS
Programación de Sistemas
Liceo de Curridabat Tema: Conceptos básicos de programación. Alumna: Valeria Garita Sánchez. Sección:8-6 Año:2015.
Lcda. Ingrid Graü Diseño de Sistemas 1. Lcda. Ingrid Graü Diseño de Sistemas 2.
Las tres primeras fases de un compilador suelen agrupan en un sola fase llamada Análisis del programa a compilar y las tres ultimas en una sola fase llamada.
A NÁLISIS L ÉXICO Y ANÁLISIS SINTÁCTICO. COMPILADORES ANÁLISIS LÉXICO Y ANÁLISIS SINTÁCTICO ANGIE EVILLA LUQUEZ CORPORACIÓN UNIVERSITARIA REMINGTON INGENIERÍA.
Museo Tecnológico. Bienvenidos al Museo Tecnológico BIENVENIDOS Información.
Traducción dirigida por la Sintaxis Teoría de Autómatas y Lenguajes Formales Alma María Pisabarro, 2007.
TUTORIA 1 Lógica para la Computación TUTORIA 1 Facultad de Ciencias Naturales y Matemáticas.
Funciones en lenguaje C 2 Funciones Definición: – Las funciones son los bloques de construcción básicos de C. Dentro de ellas se da toda la actividad.
Ingreso , proceso y salida de datos
“Análisis y Descripción de Lenguajes de Programación”
Repaso Programacion en C
Lic. Xóchitl minerva García cruz
Sistema de Base de datos
LENGUAJE DE PROGRAMACIÓN Y SOFTWARE PROPIETARIO
Lenguajes y representación tecnica
LENGUAJES Y REPRESENTACION TECNICA
Lenguajes y representación técnica
LENGUAJES Y REPRESENTACION TECNICA
Oscar Martin Tirado Ochoa
CREAR DIAGRAMA DE FLUJO
Descripción del lenguaje
Lenguaje y representación técnica
Software Es intangible, existe como información, ideas, conceptos, símbolos, pero no ocupa un espacio físico, se podría decir que no tiene sustancia. Se.
LENGUAJES Y REPRESENTACION TECNICA
QUE ES EL SOFTWARE Es un conjunto de programas de computo, procedimientos, reglas, documentación y datos asociados que forman parte de las operaciones.
ALGORITMOS es un conjunto preescrito de instrucciones o reglas bien definidas, ordenadas y finitas que permite realizar una actividad mediante pasos.
Algoritmo Capitulo Cinco.
Tema 1 El entorno de desarrollo de C#
CONCEPTOS PRELIMINARES (Cont)
Introducción al lenguaje de programación. Introducción  Los lenguajes de programación son aplicaciones específicas que han sido pensadas y diseñadas.
TIC TECNOLOGIAS DE LA INFORMACION Y LA COMUNICACION
EL SISTEMA OPERATIVO Es un conjunto de programas hechos para la ejecución de varias tareas, en las que sirve de intermediario entre el usuario y la computadora.
HERRAMIENTAS DE PROGRAMACIÓN
Compiladores Introducción al Análisis Sintáctico Gramáticas de Contexto Libre, Arboles de Parseo y Derivaciones.
Programación Orientada a Objetos. ¿Qué es un ordenador? “Un sistema digital con tecnología microelectrónica capaz de procesar información a partir de.
Programación lógica y funcional Unidad I Conceptos fundamentales.
Criterios Evaluación Portafolio de evidencias 5 Mapa conceptual 10 Practicas 30 Examen teórico 20 Analizador Sem. 35.
APLICACIONES DE LA LINGÜÍSTICA COMPUTACIONAL (III)
FUDAMENTOS BÀSICOS computación
Instituto Tecnológico de Minatitlán
Ingeniería en Computación M. en C. J. Jesús Arellano Pimentel
LENGUAJES DE PROGRAMACIÓN c o m p i l a d o r e s
Compiladores Introducción al Análisis Sintáctico Gramáticas de Contexto Libre, Arboles de Parseo y Derivaciones.
Informática Ingeniería en Electrónica y Automática Industrial
Última revisión: 2 de agosto de 2014
UNIDAD 1 Análisis semántico 1.1 ARBOLES DE EXPRESIONES.
COMPILADORES Semana 1 Ing. Jorge Vigil Farfán MgTI, PMP, ITIL-Expert, Cloud, ISO 27002, CCNP, CCNA, CCNA Sec, NSE.
Transcripción de la presentación:

Funciones del Analizador Sintáctico Elaborado el Martes 23 de Agosto de 2005

Funciones del Analizador Sintáctico Contenidos Función del Analizador Sintáctico. Definición de una Gramática. Representación BNF. Árboles de derivación. Lenguaje Yacc. 15/11/2018 Funciones del Analizador Sintáctico

Fases de un Compilador Funciones del Analizador Sintáctico 15/11/2018 generador de código intermedio programa objeto programa fuente objeto administrador de la tabla de símbolos optimizador de código manejador de errores analizador semántico sintáctico léxico 15/11/2018 Funciones del Analizador Sintáctico

Interacción entre Fases programa fuente administrador de la tabla de símbolos manejador de errores analizador sintáctico léxico obtén el siguiente componente léxico componente léxico 15/11/2018 Funciones del Analizador Sintáctico

Funciones del Analizador Sintáctico Recibir los componentes léxicos y producir como salida una representación del árbol sintáctico que reconoce la entrada de acuerdo a la gramática especificada. Interactuar con la Tabla de Símbolos. Una estructura que mantiene todos los símbolos presentes en la entrada. 15/11/2018 Funciones del Analizador Sintáctico

Funciones del Analizador Sintáctico Chequear que los tipos de datos están asignados correctamente para evitar la pérdida de información o los errores semánticos. Generar un Código Intermedio, ya sea para una máquina virtual o real, que permita la ejecución o interpretación de la entrada. Informar de los errores encontrados en la entrada. 15/11/2018 Funciones del Analizador Sintáctico

Gramáticas libres de contexto Una gramática es una especificación sintáctica precisa y fácil de entender de un lenguaje de programación. A partir de algunas clases de gramáticas se puede construir automáticamente un analizador sintáctico que determine si un programa fuente está bien construido. Los cambios a la gramática son más fáciles de realizar cuando se tiene una descripción gramatical del lenguaje. 15/11/2018 Funciones del Analizador Sintáctico

Definición formal de una gramática 1. Un conjunto de componentes léxicos ∑, denominados símbolos terminales. 2. Un conjunto de símbolos no terminales denominado N. 15/11/2018 Funciones del Analizador Sintáctico

Definición formal de una gramática 3. Un conjunto de producciones, en el que cada producción consta de un no terminal, llamado lado izquierdo de la producción, una flecha y una secuencia de componentes léxicos y no terminales, o ambos, llamado lado derecho de la producción. ( P : N  ( N x ∑ ) * ) 4. Un símbolo no terminal S que se considera el símbolo de inicio (o símbolo inicial). 15/11/2018 Funciones del Analizador Sintáctico

Funciones del Analizador Sintáctico Ejemplo 1 Σ = { id, núm, (, ), -, +, *, / } N = { expresión, operador } S = { expresión } 15/11/2018 Funciones del Analizador Sintáctico

Funciones del Analizador Sintáctico P = { expresión  expresión operador expresión, expresión  - expresión, expresión  ( expresión ), expresión  id, expresión  num, operador  +, operador  -, operador  *, operador  / } 15/11/2018 Funciones del Analizador Sintáctico

Convenciones respecto a la notación expresión  expresión operador expresión | - expresión | ( expresión ) | id | num operador  + | - | * | / 15/11/2018 Funciones del Analizador Sintáctico

BNF (Backus-Naur Form) <expresión>::=<expresión><operador><expresión> | - <expresión> | ( <expresión> ) | id | num <operador>::= + | - | * | / 15/11/2018 Funciones del Analizador Sintáctico

Funciones del Analizador Sintáctico EBNF <S> ::= {a}3-4 Es equivalente a: <S> ::= a a a | a a a a 15/11/2018 Funciones del Analizador Sintáctico

Árbol de derivación (a+3)*b expresión expresión operador expresión ( expresión ) * id expresión operador expresión + id núm 15/11/2018 Funciones del Analizador Sintáctico

Funciones del Analizador Sintáctico Ejemplo 2 Σ = { id, núm, (, ), -, +, *, / } N = { expresión } S = { expresión } 15/11/2018 Funciones del Analizador Sintáctico

Funciones del Analizador Sintáctico P = { expresión  expresión + expresión, expresión  expresión - expresión, expresión  expresión * expresión, expresión  expresión / expresión, expresión  - expresión, expresión  ( expresión ), expresión  id, expresión  num } 15/11/2018 Funciones del Analizador Sintáctico

BNF(Backus-Naur Form) <expresión>::= <expresión> + <expresión> | <expresión> - <expresión> | <expresión> * <expresión> | <expresión> / <expresión> | - <expresión> | ( <expresión> ) | id | num 15/11/2018 Funciones del Analizador Sintáctico

Árbol de derivación (a+3)*b expresión expresión expresión * ( expresión ) id expresión expresión + id núm 15/11/2018 Funciones del Analizador Sintáctico

Funciones del Analizador Sintáctico Lenguaje Yacc La herramienta de software que se utiliza para construir un analizador sintáctico en lenguaje C es llamada compilador YACC (yacc en un ambiente linux). Esta herramienta fue utilizada en la especificación de analizadores sintácticos para varios lenguajes en los ambientes operativos de Unix. La especificación del archivo fuente para el compilador YACC se denomina lenguaje YACC. 15/11/2018 Funciones del Analizador Sintáctico

Compilación yy.tab.c a.out compilador de YACC de C Programa fuente en YACC parser.yac Archivo de entrada Salida especificada 15/11/2018 Funciones del Analizador Sintáctico

Especificación en YACC Declaraciones %% Reglas sintácticas Procedimientos auxiliares 15/11/2018 Funciones del Analizador Sintáctico

Especificación mínima %% Reglas sintácticas 15/11/2018 Funciones del Analizador Sintáctico

Sección Declaraciones [ %{ /* Declaraciones y funciones en C */ %} ] /*Definiciones de YACC que comienzan con %*/ 15/11/2018 Funciones del Analizador Sintáctico

Sección Reglas sintácticas %% /* Reglas representando la forma BNF */ [ ] 15/11/2018 Funciones del Analizador Sintáctico

Funciones del Analizador Sintáctico Ejemplo de Reglas %% expresión : expresión ‘+’ expresión | expresión ‘-’ expresión | expresión ‘*’ expresión | expresión ‘/’ expresión | ‘-’ expresión | ‘(‘ expresión ‘)’ | ID | NUM ; 15/11/2018 Funciones del Analizador Sintáctico

Sección Procedimientos auxiliares %% /* Declaraciones y funciones en C */ 15/11/2018 Funciones del Analizador Sintáctico

Ejemplo de Procedimientos %% #include”lex.yy.c” extern FILE* yyin; main(int argc, char** argv) { yyin = fopen(argv[1],”r”); return ( yyparse ( ) ); } 15/11/2018 Funciones del Analizador Sintáctico

Funciones del Analizador Sintáctico Compilación con -ly main() { return ( yyparse ( ) ); } yyerror (char *s) fprintf( stderr, “%s\n”, s); 15/11/2018 Funciones del Analizador Sintáctico

Funciones del Analizador Sintáctico Definiciones de YACC %token ‘+’ %token ‘-’ %token ‘*’ %token ‘/’ %token ‘(’ %token ‘)’ %token ID %token NUM 15/11/2018 Funciones del Analizador Sintáctico

Funciones del Analizador Sintáctico Definiciones de YACC %left ‘+’ ‘-’ %left ‘*’ ‘/’ %rigth MINUS %start expresión %% 15/11/2018 Funciones del Analizador Sintáctico

Funciones del Analizador Sintáctico Uso de %prec %% expresión : expresión ‘+’ expresión | expresión ‘-’ expresión | expresión ‘*’ expresión | expresión ‘/’ expresión | ‘-’ expresión %prec MINUS | ‘(‘ expresión ‘)’ | ID | NUM ; 15/11/2018 Funciones del Analizador Sintáctico

Conflictos de una gramática El conflicto shift/reduce se soluciona seleccionando shift por parte del parser. El conflicto reduce/reduce no se puede solucionar y deben reescribirse las reglas gramáticales que producen el conflicto. 15/11/2018 Funciones del Analizador Sintáctico