Procesadores de lenguajes Ingeniería Informática Especialidad de Computación Tercer curso, segundo cuatrimestre

Documentos relacionados
Procesadores de lenguajes Ingeniería Informática Especialidad de Computación Tercer curso, segundo cuatrimestre

PROCESADORES DE LENGUAJE. Hoja de ejercicios de FLEX

PROCESADORES DE LENGUAJE. Hoja de ejercicios de FLEX

TEORÍA DE AUTÓMATAS Y LENGUAJES FORMALES TRABAJO DE PRÁCTICAS. Convocatoria de junio de 2013

LENGUAJE DE PSEUDOCÓDIGO

Sintaxis de PSeInt Tutorial

PRÁCTICA DE PROCESADORES DE LENGUAJE EVALUACIÓN ORDINARIA CURSO 2009/2010 OBJETIVO DE LA PRÁCTICA

Lenguaje de Diseño. Primera Parte. Segundo Cuatrimestre 2017

TEORÍA DE AUTÓMATAS Y LENGUAJES

Lenguaje de Diseño. Primera Parte. Resolución de Problemas y Algoritmos. Primer Cuatrimestre Ing. En Informática e Ing.

Tecnologías en la Educación Matemática

El Pseudo-código de PsInt

El pseudocódigo es una herramienta de programación en la que las instrucciones se escriben en palabras similares al inglés o español, que facilitan

Todo programa en 'C' consta de una o más funciones, una de las cuales se llama main.

DISEÑO ESTRUCTURADO USANDO HERRAMIENTAS DE

Informática. JavaScript: Lenguaje de programación. Fco J. Martín Mateos Carmen Graciani

SISTEMAS INFORMÁTICOS PROGRAMACION I - Contenidos Analíticos Ing. Alejandro Guzmán M. TEMA 2. Diseño de Algoritmos

Es toda la información que utiliza el computador. Según sea la información que guardemos en los datos, se clasifican en los siguientes tipos:

PRÁCTICAS DE PROCESADORES DEL LENGUAJE CURSO 2008/2009

PROGRAMACIÓN ORIENTADA A OBJETOS

Prácticas de Lenguajes, Gramáticas y Autómatas

GLOSARIO 1. Qué es bit y byte? Bit: Es la unidad mínima de información. Puede ser 0 o 1. Byte: Es el conjunto de 8 bits. Ejemplo:

Conceptos. Generales ALGORITMOS

Tipos De Datos. Numéricos. Alfanuméricos (string) Arreglos (Vectores, Matrices) Estructurados Registros (Def. Por el Archivos Usuario) Apuntadores

FORMATO DEL FICHERO CON LA TABLA DE SÍMBOLOS

DISEÑO ESTRUCTURADO. Herramientas de representación de algoritmos

Informática General 2016 Cátedra: Valeria Drelichman, Pedro Paleo, Leonardo Nadel, Norma Morales

Constante: Una constante es un dato numérico o alfanumérico que no cambia durante la ejecución del programa.

Tema: Entorno a C# y Estructuras Secuenciales.

Algoritmos. Medios de expresión de un algoritmo. Diagrama de flujo

Tema: Entorno a C# y Estructuras Secuenciales.

Guía práctica de estudio 05: Pseudocódigo

TUTORIAL PSEINT. Ing. Ronald Rentería Ayquipa. Fundamentos de Programación

TECNICO SUPERIOR EN INFORMÁTICA EMPRESARIAL MÓDULO INTRUCCIONAL

Escuela Normal Superior N 40 Mariano Moreno. Cuadernillo Propedéutico 2017 Nivel Superior

1. Detalle de los Comandos:

UIT-T Z.314 SECTOR DE NORMALIZACIÓN DE LAS TELECOMUNICACIONES DE LA UIT

Diseño Estructurado de Algoritmos

UNIVERSIDAD DE CÓRDOBA ESCUELA POLITÉCNICA SUPERIOR DEPARTAMENTO DE INFORMÁTICA Y ANÁLISIS NUMÉRICO

Tema 3.- Predicados y sentencias condicionales

Informática General 2018 Cátedra: Valeria Drelichman, Pedro Paleo, Leonardo Nadel, Norma Morales

JavaScript: Lenguaje de programación

Elementos de un programa en C

PHP: Lenguaje de programación

Práctica 2. TIPOS DE DATOS SIMPLES

PRINCIPIOS DE PROGRAMACIÓN. Mtro. en Ingeniería de Software. Especialidad en e-commerce Ismael Jiménez Hernández

DESCRIPCIÓN ESPECÍFICA NÚCLEO: Núcleo Sector Comercio y Servicios.

Tema 2.- Expresiones y funciones

Lic. Edinson Cuero Ramos Página 1

INSTITUTO SUPERIOR DE EDUCACION RURAL ISER FUNDAMENTOS DE PROGRAMACION

Computación II. Introducción a Visual Basic

Clase 2: El Lenguaje Python

INICIACIÓN A LA PROGRAMACIÓN II

Tema 2. Concepto de Algoritmo

Licenciatura de Matemáticas Informática I Notación algorítmica - Descripción BNF

Introducción a PL/SQL

Datos Elementales y formato de un programa en Java

Las expresiones son combinaciones de constantes, variables, símbolos de operación, paréntesis y nombres de funciones especiales.

Informática General Cátedra: Valeria Drelichman Pedro Paleo Leonardo Nadel Norma Morales

Componentes Básicos. InCo. InCo Componentes Básicos 1 / 28

ALGORITMOS II PSEUDOCODIGOS INTRODUCCION AL PSEINT CORPODICES VICTOR ANDRES OCHOA CORREA

Algoritmo, Estructuras y Programación I Ing. Marglorie Colina

Una clasificación de los tipos de datos existentes en los diferentes lenguajes de programación se presenta a continuación:

Programa Nacional de Formación de Informática Material Educativo Computarizado de Algorítmica y Programación

2. EXPRESIONES 3. OPERADORES Y OPERANDOS 4. INDENTIFICADORES COMO LOCALIDADES DE MEMORIA

Tema#2. Tipos de Datos 10

Práctica 01 - Preprocesamiento básico para un código fuente en lenguaje C Compiladores - Profr. Edgardo Adrián Franco Martínez

Teoría de Autómatas y Lenguajes Formales, IS17 Ingeniería Técnica en Informática de Sistemas. Práctica 1: Introducción al Analizador Léxico FLEX

JavaScript Básico. Elementos Básicos: Comentarios: Literales: Valores que puede tomar una variable o una constante.

Universidad Autónoma del Estado de México Facultad de Medicina

Análisis semántico. Análisis semántico. Índice (I)

Introducción a la Programación

abril de 2017 Desarrollo de aplicaciones en Java Tipos de datos primitivos Tipos de datos Elementos de aplicaciones simples

Tablas de decisión.

Prácticas de Lenguajes, Gramáticas y Autómatas

CIENCIA DE LA COMPUTACION

4. Operadores Operador asignación

UNIDAD 2 Descripción de un programa

LABORATORIO DE PROCESADORES DE LENGUAJE Curso: Práctica 2: Analizador léxico/sintáctico/semántico con Flex y Bison

Este método de diseño de algoritmos en etapas, yendo de los conceptos generales a los de detalle, se conoce como método descendente (top-down).

Prof. María Alejandra Quintero. Informática Año

$0 Representa al parámetro cero o nombre del programa $1 Representa al parámetro uno $2 Representa al parámetro dos

Gramaticas Independientes del Contexto, ejemplos y ejercicios *

Tema: Análisis Léxico

ANÁLISIS LÉXICO Ing. Ronald Rentería Ayquipa

05 Análisis léxico I Compiladores - Profr. Edgardo Adrián Franco Martínez

Titulo de hoy 25/09/2017 COLEGIO SAN ANTONIO MARIA CLARET 1

Programación en java. Estructuras algorítmicas

Comprender las diferencias entre tipos de datos primitivos similares, y aprender a elegir el tipo más conveniente en cada caso.

Tema 2: Desarrollo de Algoritmos. E.E. de Algorítmica

ESCUELA POLITÉCNICA SUPERIOR DE CÓRDOBA GRADO DE INGENIERÍA INFORMÁTICA. Curso 2016/17. Asignatura: PROCESADORES DE LENGUAJES

Programación en Lenguaje C

Transcripción:

Procesadores de lenguajes Ingeniería Informática Especialidad de Computación Tercer curso, segundo cuatrimestre Escuela Politécnica Superior de Córdoba Universidad de Córdoba Curso académico: 2016-2017 TRABAJO DE PRÁCTICAS 1. Introducción Competencias o El presente trabajo de prácticas pretende desarrollar las siguientes competencias de la asignatura : CU1. Acreditar el uso y dominio de una lengua extranjera. CTEC2. Capacidad para conocer los fundamentos teóricos de los lenguajes de programación y las técnicas de procesamiento léxico, sintáctico y semántico asociadas, y saber aplicarlas para la creación, diseño y procesamiento de lenguajes. Objetivo o Se debe utilizar flex y bison para elaborar un intérprete de pseudocódigo en español: ipe.exe Descripción de los apartados: 2) Elaboración y entrega del trabajo 3) Características del lenguaje de pseudocódigo 4) Control de errores 5) Modos de ejecución del intérprete 6) Documentación del trabajo 7) Criterios de evaluación 2. Elaboración y entrega Modo de realización del trabajo o El trabajo se podrá realizar de forma individual o por parejas. Modo de entrega o Un fichero comprimido deberá ser subido a la tarea de la plataforma de moodle. o Dicho fichero comprimido deberá contener: Documentación del trabajo (véase el apartado nº 6) Fichero de flex 1

Fichero de bison Ficheros de C (.c,.h ) Fichero makefile Ficheros de ejemplo de pseudocódigo con la extensión.e 3. Características de lenguaje de pseudocódigo a) Componentes léxicos o tokens o Palabras reservadas _mod, _div _o, _y, _no, leer, leer_cadena escribir, escribir_cadena, si, entonces, si_no, fin_si mientras, hacer, fin_mientras repetir, hasta para, desde, hasta, paso, fin_para _borrar, _lugar Observaciones No se distinguirá entre mayúsculas ni minúsculas. Las palabras reservadas no se podrán utilizar como identificadores. o Identificadores Características Estarán compuestos por una serie de letras, dígitos y el subrayado. Deben comenzar por una letra No podrán acabar con el símbolo de subrayado, ni tener dos subrayados seguidos. Identificadores válidos: dato, dato_1, dato_1_a Identificadores no válidos: _dato, dato_, dato 1 No se distinguirá entre mayúsculas ni minúsculas. o Número Se utilizarán números enteros, reales de punto fijo y reales con notación científica. 2

Todos ellos serán tratados conjuntamente como números. o Cadena Estará compuesta por una serie de caracteres delimitados por comillas simples: Ejemplo de cadena Ejemplo de cadena con salto de línea \n y tabulador \t Deberá permitir la inclusión de la comilla simple utilizando la barra (\): Ejemplo de cadena con \ comillas\ simples. Nota: Las comillas exteriores no se almacenarán como parte de la cadena. o Operador de asignación asignación: := o Operadores aritméticos suma: + resta: - Unario: + 2 Binario: 2 + 3 Unario: - 2 Binario: 2-3 producto: * división: / división entera: _div módulo: _mod potencia: ** o Operador alfanumérico: concatenación: o Operadores relacionales de números y cadenas: menor que: < menor o igual que: <= mayor que: > mayor o igual: >= igual que: = distinto que: <> Por ejemplo: 3

si A es una variable numérica y control una variable alfanumérica, se pueden generar las siguientes expresiones relacionales: (A >= 0) (control <> stop ) o Operadores lógicos disyunción lógica: _o conjunción lógica: _y negación lógica: _no o Comentarios Por ejemplo: (A >= 0) _y _no (control <> stop ) De varias líneas: delimitados por el símbolos # # ejemplo de comentario de tres líneas # De una línea Todo lo que siga al carácter @ hasta el final de la línea. @ ejemplo de cometario de una línea o Punto y coma Se utilizará para indicar el fin de una sentencia. b) Sentencias o Asignación identificador := expresión numérica Declara a identificador como una variable numérica y le asigna el valor de la expresión numérica. Las expresiones numéricas se formarán con números, variables numéricas y operadores numéricos. identificador := expresión alfanumérica Declara a identificador como una variable alfanumérica y le asigna el valor de la expresión alfanumérica. 4

o Lectura Las expresiones alfanuméricas se formarán con cadenas, variables alfanuméricas y el operador alfanumérico de concatenación ( ). Leer (identificador) Declara a identificador como variable numérica y le asigna el número leído. Leer_cadena (identificador) o Escritura Declara a identificador como variable alfanumérica y le asigna la cadena leída (sin comillas). Escribir (expresión numérica) El valor de la expresión numérica es escrito en la pantalla. Escribir_cadena (expresión alfanumérica) La cadena (sin comillas exteriores) es escrita en la pantalla. Se debe permitir la interpretación de comandos de saltos de línea (\n) y tabuladores (\t) que puedan aparecer en la expresión alfanumérica. o Sentencias de control 1 escribir_cadena( \t Introduzca el dato \n ); Sentencia condicional simple si condición entonces sentencias fin_si Sentencia condicional compuesta si condición entonces sentencias si_no sentencias fin_si Bucle mientras mientras condición hacer sentencias fin_mientras Bucle repetir repetir sentencias 1 Una condición será una expresión relacional o una expresión lógica compuesta. 5

hasta condición Bucle 2 para para identificador desde expresión numérica 1 hasta expresión numérica 2 paso expresión numérica 3 hacer sentencias fin_para o Comandos especiales _borrar borra la pantalla _lugar(expresión numérica1, expresión numérica2) Coloca el cursor de la pantalla en las coordenadas indicadas por los valores de las expresiones numéricas. o Observación Se debe permitir que una variable pueda cambiar de tipo durante la ejecución del intérprete. Ejemplo @ la variable dato es numérica dato := 10; escribir(dato); @ la variable dato se convierte en alfanumérica leer_cadena(dato); escribir_cadena(dato); o Se valorará la inclusión de nuevos operadores o sentencias Ejemplos Operadores unarios: ++, -- Operadores aritméticos y de asignación: +:=, -:=, etc. Sentencia según segun (expresión) valor v1: valor v2: 2 Se valorará que se controlen los pasos con incrementos positivos y negativos del bucle para. 6

Etc. fin_segun defecto: 4. Control de errores El intérprete deberá controlar toda clase de errores: Léxicos: o Identificador mal escrito. o Utilización de símbolos no permitidos. o Etc. Sintácticos: o Sentencias de control más escritas. o Sentencias con argumentos incompatibles. o Etc. o Observación Se valorará la utilización de reglas de producción de control de errores que no generen conflictos. Semánticos o Argumentos u operandos incompatibles De ejecución o Sentencia para que pueda generar un bucle infinito. o Fichero de entrada inexistente o con una extensión incorrecta. o Etc. 5. Modos de ejecución del intérprete El intérprete se podrá ejecutar de dos formas diferentes: Modo interactivo o Se ejecutarán las instrucciones tecleadas desde un terminal de texto ipe.exe > o Se utilizará el carácter de fin de fichero para terminar la ejecución: Control + D Ejecución desde un fichero o Se interpretarán las sentencias de un fichero pasado como argumento desde la línea de comandos o El fichero deberá tener la extensión.e ipe.exe ejemplo.e 6. Documentación del trabajo 7

Se deberá elaborar un documento de texto con las siguientes características: Portada o Título del trabajo desarrollado o Nombre y apellidos de las personas que forman el grupo o Nombre de la asignatura: Procesadores de lenguaje o Nombre de la Titulación: Ingeniería informática o Especialidad: Computación o Tercer curso o Segundo cuatrimestre o Curso académico: 2016 2017 o Escuela Politécnica Superior de Córdoba o Universidad de Córdoba o Lugar y fecha Índice o Las páginas deberán estar numeradas. Introducción o Breve descripción del trabajo realizado y de las partes del documento. Lenguaje de pseudocódigo o Se corresponde con el apartado nº 3 de este documento Componentes léxicos Sentencias o Observación Si se ha ampliado el lenguaje de pseudocódigo entonces se deberá indicar en este apartado. Tabla de símbolos o Descripción o Se valorará que se utilice una implementación eficiente de la tabla de símbolos: lista ordenada, árbol binario, etc. Análisis léxico o Descripción del fichero de flex utilizado para definir y reconocer los componentes léxicos. Análisis sintáctico: o Descripción del fichero de bison utilizado para definir la gramática de contexto libre Símbolos de la gramática Símbolos terminales (componentes léxicos) Símbolos no terminales Reglas de producción de la gramática Acciones semánticas: 8

Se deberán describir las acciones semánticas de las producciones que generan las sentencias de control y especialmente las diseñadas para los bucles repetir y para. Se valorará la inclusión de gráficos explicativos. Funciones auxiliares o Se deben indicar y describir las funciones auxiliares que se hayan codificado. Modo de obtención del intérprete o Nombre y descripción de cada fichero utilizado o Descripción del fichero makefile Modo de ejecución del intérprete o Interactiva o A partir de un fichero Ejemplos o Al menos se deben proporcionar dos ejemplos. o Se valorará la cantidad, originalidad y complejidad de los ejemplos propuestos. o También se puede incluir el ejemplo propuesto por el profesor. Conclusiones: o Reflexión sobre el trabajo realizado. o Puntos fuertes y puntos débiles del intérprete desarrollado. Bibliografía o referencias web o Se recomienda consultar el documento elaborado por el personal de la biblioteca de la Universidad de Córdoba Cómo citar bibliografía en un trabajo académico? http://www.uco.es/servicios/biblioteca/cursosp/refer enciasbibliograficas.pdf Anexos o Se podrían incluir aquellos anexos que se consideren oportunos para mejora la calidad de la documentación 7. Criterios de evaluación Documentación: 40 % o Se tendrá en cuenta lo indicado en el apartado nº 6. o El código elaborado deberá estar documentado. o Se valorará la inclusión de gráficos o figuras. 9

o Se valorará la cantidad, originalidad y complejidad de los ejemplos propuestos. o También se valorará la acentuación, la corrección ortográfica y la calidad y claridad de la redacción. Funcionamiento del intérprete (software): 60 % o La gramática diseñada no podrá conflictos. Esta condición es imprescindible para aprobar el trabajo de prácticas. o El intérprete deberá funcionar correctamente en el entorno de ThinStation tanto de forma interactiva como ejecutando la instrucciones de los ficheros de ejemplo en particular, deberá ejecutar correctamente el ejemplo propuesto por el profesor y los ejemplos propuestos por los autores del trabajo. o Se valorará la completitud del lenguaje de pseudocódigo. La calidad en el diseño del lenguaje y la gramática. El control de errores. La ampliación del lenguaje de pseudocódigo. o Observación: Además, se valorará la asistencia a clase de prácticas y la resolución de dificultades encontradas durante la elaboración del trabajo. 10