Introducción a los Lenguajes de Programacióngalvez.milibreta.com.mx/UAS/Lenguajes/3.-Sintaxis y...

13
30/11/2017 1 Facultad de Informática Culiacán Introducción a los Lenguajes de Programación UNIVERSIDAD AUTÓNOMA DE SINALOA Instructor: MC. Gerardo Gálvez Gámez Agosto de 2017 1 [email protected] Introducción a los Lenguajes de Programación • FIUAS Temas Unidad II 1. Elementos sintácticos de un Lenguaje. 2. Definición formal de la sintaxis de un lenguaje. 3. Gramática BNF. 4. Arboles sintácticos. 5. Diagramas de sintaxis. 6. Semántica formal de lenguajes. 7. Procesadores de lenguajes. 8. Métodos de interpretación y compilación. 9. Etapas de un proceso de traducción. 10. Análisis del programa fuente: 1. Análisis léxico, 2. Sintáctico y 3. Semántico.

Transcript of Introducción a los Lenguajes de Programacióngalvez.milibreta.com.mx/UAS/Lenguajes/3.-Sintaxis y...

30/11/2017

1

Facultad de Informática Culiacán

Introducción a los Lenguajes de

Programación

UNIVERSIDAD AUTÓNOMA DE SINALOA

Instructor: MC. Gerardo Gálvez Gámez

Agosto de 2017

1

[email protected]

Introducción a los Lenguajes de Programación • FIUAS

Temas Unidad II

1. Elementos sintácticos de un Lenguaje.

2. Definición formal de la sintaxis de un lenguaje.

3. Gramática BNF.

4. Arboles sintácticos.

5. Diagramas de sintaxis.

6. Semántica formal de lenguajes.

7. Procesadores de lenguajes.

8. Métodos de interpretación y compilación.

9. Etapas de un proceso de traducción.

10. Análisis del programa fuente:1. Análisis léxico,

2. Sintáctico y

3. Semántico.

30/11/2017

2

Introducción a los Lenguajes de Programación • FIUAS

Elementos sintácticos de un Lenguaje.

• El propósito primordial de la sintaxis esproveer una notación para lacomunicación entre el programador y elprocesador de lenguajes de programación.

• Los elementos sintácticos tienen comoobjetivo comunicar elementos particularesde información.

Introducción a los Lenguajes de Programación • FIUAS

Elementos sintácticos de un Lenguaje

• El estilo sintáctico general de un lenguaje estadado por la selección de diversos elementossintácticos básicos. Los más destacados son:

Conjunto de caracteres

Símbolos de operadores

Palabras claves y palabras reservadas

Palabras pregonadas ( GOTO,Se pueden omitir sin alterar el significado)

Comentarios

Espacios en blanco

Delimitadores y corchetes

Formatos de campo libre y fijos

Expresiones

Enunciados

30/11/2017

3

Introducción a los Lenguajes de Programación • FIUAS

Definición formal de la sintaxis de un

lenguajeDefinición:

▫ Es la disposición de palabras como elementosen una oración para mostrar su relación,describe la serie de símbolos que constituyenprogramas validos.

▫ Suministra información significativa que senecesita para entender un programa yproporciona información imprescindible para latraducción del programa fuente a un programaobjeto.

Introducción a los Lenguajes de Programación • FIUAS

Definición formal de la sintaxis de un

lenguaje

La sintaxis especifica:

▫ Como se construyen los programas en unlenguaje.

▫ Consiste en un conjunto de reglas paraconstruir programas válidos.

▫ Es la estructura impuesta por la sintaxis deun lenguaje, se utiliza para organizardescripciones de lenguajes y traductores.

30/11/2017

4

Introducción a los Lenguajes de Programación • FIUAS

Criterios generales de la sintaxis

Criterios relacionados con la facilidad humana:

• Legibilidad:

• Es legible si la estructura subyacente del algoritmo y los datos que el programa representa quedan de manifiesto al inspeccionar el texto del programa

• Facilidad de Escritura:

Facilidad de Verificación

• Fáciles de traducir a una forma ejecutable

• La traducción de los programas se dificulta conforme aumenta el número de construcciones sintácticas especiales.

Carencia de Ambigüedad

• Que tenga un significado único para cada construcción sintáctica que el programador puede escribir.

Introducción a los Lenguajes de Programación • FIUAS

Gramática BNF

• La notación de Backus-Naur, también conocida por susdenominaciones inglesas Backus-Naur form (BNF).

• Es una metasintaxis usada para expresar gramáticas libresde contexto: es decir, una manera formal de describirlenguajes formales.

• Ejemplo: BNF para una dirección postal de los EE.UU.

▫ <dirección postal> ::= <nombre> <dirección> <apartadopostal>

Se traduce a español como:

Una dirección postal consiste en un nombre, seguido por unadirección, seguida por un apartado postal.

30/11/2017

5

Introducción a los Lenguajes de Programación • FIUAS

Gramática BNF

• BNF es la técnica más común para definir la sintaxisde los lenguajes de programación.

• En la definición de un lenguaje de programación lasintaxis usualmente se expresa en BNF (Backus- NaurForm) y la semántica está expresada en lenguajenatural (español, inglés, etc).

• BNF es un ejemplo de un metalenguaje, es decir, unlenguaje usado para definir otros lenguajes.

• Algol 60 fue el primer lenguaje que utilizó BNF parasu descripción sintáctica.

Introducción a los Lenguajes de Programación • FIUAS

Ejemplo

30/11/2017

6

Introducción a los Lenguajes de Programación • FIUAS

Funciones que desempeña la sintaxis de un

lenguaje

• La sintaxis abstracta▫ Identifica los componentes significativos de

cada enunciado.

▫ Las descripciones de lenguajes y lasimplantaciones están organizadas alrededor dela sintaxis abstracta.

• La sintaxis concreta▫ Describe su representación escrita, incluyendo

detalles como la colocación de las palabrasclave y los signos de puntuación.

Introducción a los Lenguajes de Programación • FIUAS

Arboles sintácticos

• Es una forma de visualizargráficamente la estructurade una oración.

• Muestra todas lasrelaciones relevantes en laoración sin confusión.

30/11/2017

7

Introducción a los Lenguajes de Programación • FIUAS

Diagramas de sintaxis

• Alternativa gráfica a las otras notaciones.

• Los rectángulos representan los símbolos no terminales y los óvalos representan los terminales.

• Las flechas representan las producciones.

• Se utilizan para hacer el analizador sintáctico.

Introducción a los Lenguajes de Programación • FIUAS

Semántica formal de lenguajes de

Programación

• Es la interpretación del significado de losenunciados y estructuras sintácticas de los LP.

• La semántica define algunos atributos como:

▫ El uso de declaraciones,

▫ Operaciones,

▫ Control de secuencia y

▫ Entornos de refinamiento, los cuales afectan auna variable y no siempre están determinadospor reglas de sintaxis

30/11/2017

8

Introducción a los Lenguajes de Programación • FIUAS

Procesadores de lenguajes

• Es un traductor cuyo lenguaje fuente es una formaampliada de un lenguaje de alto nivel cuyo lenguajeobjeto es la forma estándar del mismo lenguaje.

• Es el nombre genérico que reciben todas lasaplicaciones informáticas en las cuales uno de losdatos fundamentales de entrada es un lenguaje.

• Ejemplo:▫ Traductores▫ Compiladores▫ Intérpretes▫ Editores▫ Encadenadores (linkers)▫ etc

Introducción a los Lenguajes de Programación • FIUAS

30/11/2017

9

Introducción a los Lenguajes de Programación • FIUAS

Etapas de un proceso de traducción.

• Cuando programamos en lenguajes de altonivel, lo que estamos haciendo en realidad es elcódigo fuente de ese programa.

• Este código fuente debe ser traducido abinario para que las instrucciones que contienenpuedan ser entendidas y ejecutadas por lamáquina.

• Para esto existe un programa encargado derealizar la traducción, llamado traductor dellenguaje.

Introducción a los Lenguajes de Programación • FIUAS

Etapas de un proceso de traducción

• Edición. Consiste en escribir el programa empleandoalgún lenguaje y un editor (código fuente).

• Compilación. Traduce el código fuente obtenido en lafase anterior a código máquina (obtiene el códigoobjeto).

• Linkado. Une el archivo generado en la fase dos condeterminadas rutinas internas del lenguaje,obteniendo el programa ejecutable.

30/11/2017

10

Introducción a los Lenguajes de Programación • FIUAS

Análisis del programa fuente

Análisis léxico.- Primera fase de un compiladorconsistente en un programa que recibe comoentrada el código fuente de otro programa(secuencia de caracteres) y produce una salidacompuesta de tokens (palabras reservadas,identificadores, operadores, símbolos especiales,constantes - componentes léxicos) o símbolos.

Introducción a los Lenguajes de Programación • FIUAS

Responsabilidades del analizador léxico

• Manejo de apertura y cierre de archivo, lecturade caracteres y gestión de posibles errores deapertura.

• Eliminar comentarios, espacios en blanco,tabuladores y saltos de línea.

• Inclusión de archivos y macros.

• Contabilizar número de líneas y columnas paraemitir mensajes de error.

30/11/2017

11

Introducción a los Lenguajes de Programación • FIUAS

Análisis del programa fuente

Sintáctico.-se encarga de chequear el texto deentrada en base a una gramática dada. Y en casode que el programa de entrada sea válido,suministra el árbol sintáctico que lo reconoce.

Comprueba que el orden en que el analizadorléxico le va entregando los tokens es válido.

Si esto es así significará que la sucesión desímbolos que representan dichos tokens puedeser generada por la gramática correspondiente allenguaje del código fuente.

Introducción a los Lenguajes de Programación • FIUAS

Funciones del analizador sintáctico

• Aceptar lo que es válido sintácticamente y rechazar lo que no lo es.

• Hacer explícito el orden jerárquico quetienen los operadores en el lenguaje deque se trate.

▫ Por ejemplo, la cadena A/B*C esinterpretada como (A/B)*C en FORTRAN ycomo A/(B*C) en APL.

• Guiar el proceso de traducción (traducción dirigida por la sintaxis).

30/11/2017

12

Introducción a los Lenguajes de Programación • FIUAS

Errores en la programación

Pueden ser de los siguientes tipos:

1. Léxicos, producidos al escribir mal unidentificador, una palabra clave o un operador.

2. Sintácticos, por una expresión aritmética oparéntesis no equilibrados.

3. Semánticos, como un operador aplicado a unoperando incompatible, variable declarada perono utilizada, etc.

4. Lógicos, puede ser una llamada infinitamenterecursiva.

Introducción a los Lenguajes de Programación • FIUAS

Análisis del programa fuente

• Semántico.-La semántica corresponde alsignificado asociado a las estructurasformales (sintaxis) del lenguaje.

• En esta etapa se comprueba la correcciónsemántica del programa.

• Ejemplo de errores:

▫ Se declaró X antes de usarlo?▫ Se declaró x pero no se usa?▫ La referencia a una posición en un arreglo está

dentro de sus límites?

30/11/2017

13

Introducción a los Lenguajes de Programación • FIUAS

Preguntas?