LABORATORIO DE PROCESADORES DE LENGUAJE Curso: Práctica 2: Analizador léxico/sintáctico/semántico con Flex y Bison
|
|
- Miguel Ángel Miguélez Casado
- hace 5 años
- Vistas:
Transcripción
1 LABORATORIO DE PROCESADORES DE LENGUAJE Curso: Práctica 2: Analizador léxico/sintáctico/semántico con Flex y Bison Se trata de realizar, mediante el generador de analizadores léxicos FLEX y sintácticos BISON, un analizador léxico, sintáctico y semántico que reconozca un sencillo lenguaje de programación, que llamaremos MiniModula, cuyas especificaciones léxicas y sintácticas se detallan a continuación. Además se deberá incluir la construcción de la Tabla de Símbolos (TS). Especificación a nivel léxico Consideraremos como comentario todo aquello que vaya entre los símbolos (* y *). Ej.: (*Esto es un comentario *). Los identificadores, id, constarán de una letra seguida opcionalmente de cualquier número de letras, dígitos y símbolos de subrayado _. Existen constantes numéricas de tipo entero, num_integer, un dígito seguido de uno o más dígitos, o de tipo real, num_real, un dígito o más dígitos seguidos de un punto más un dígito o más dígitos. Los símbolos especiales y operadores son: ( ) ;, + - * / = == < > : Las palabras clave son: integer real char boolean if then while do read write begin end function return module var and or not true false Especificación a nivel sintáctico La gramática que utilizaremos representa un sencillo lenguaje de programación que incluye como tipos simples de datos los tipos char, integer, real y bool. Como sentencias incluye las sentencias condicionales (if_then_), sentencias repetitivas (while_do), asignaciones, llamadas y retorno de funciones y E/S de datos. También permite trabajar con expresiones aritméticas (+,-,*,/), relacionales (<,==, >) y lógicas (and, or, not). Al final del enunciado se incluye ejemplos de código fuente que genera esta gramática. Generación de la tabla de símbolos A la hora de generar la tabla de símbolos es necesario almacenar tanto variables globales como locales, para ello tendremos que diferenciar las variables mediante su ámbito. Se usará el valor cero para las variables globales y se irá incrementando para las variables locales dependiendo de la función en la que están declaradas. A las variables declaradas en la primera función se les asignará el ámbito 1, a las declaradas en la segunda función se les asignará el ámbito 2, así sucesivamente. Ver ANEXO I sobre la construcción de la TS. 1
2 La gramática que define el lenguaje es: Program module id ; DeclarationList begin StatementList end id. DeclarationList Declaration DeclarationsList Declaration Var Function Var var id : SimpleType ; Function function id ( ParameterList ) : SimpleType ; VarList begin StatementList end id ; VarList Var VarList ParameterList Parameter MasParameter Parameter SimpleType id MasParameter, Parameter MasParameter SimpleType char integer real boolean StatementList Statement ; StatementList Statement AssignStm IfStm WhileStm FunctionStm ReturnStm WriteStm ReadStm AssignStm id = Exp IfStm if Exp then StatementList ElseStm end ElseStm StatementList WhileStm while Exp do StatementList end FunctionStm id ( ArgList ) ArgList Exp MasArg MasArg, Exp MasArg ReturnStm return Exp WriteStm write Exp ReadStm read id Exp id numinteger numreal ( Exp ) true false FunctionStm Exp * Exp Exp / Exp Exp - Exp Exp + Exp - Exp Exp or Exp Exp and Exp not Exp Exp < Exp Exp > Exp Exp == Exp Nota: Se podrán incluir modificaciones a la gramática siempre que se genere el mismo lenguaje. Los operadores =, <, >, == no son asociativos. La precedencia de los operadores es, de menor a mayor, la siguiente: < > == + - or * / and menos unario not 2
3 Comprobaciones semánticas Se deberán realizar las siguientes comprobaciones semánticas: Comprobaciones de tipos en asignaciones, en paso de parámetros a funciones y en expresiones aritméticológicas. Todos los operandos en una expresión deben de ser del mismo tipo y los operadores deben estar definidos para ese tipo de variables. Asumiremos que, para variables de tipo entero y real, tenemos definidos los operadores aritméticos y relacionales. Para variables booleanas sólo están definidos los operadores lógicos. Para variables tipo carácter sólo están definidos los operadores relacionales. Comprobaciones relacionadas con la Tabla de Símbolos: No insertar un identificador de una función o variable dos veces con el mismo nombre y con el mismo ámbito. En las llamadas a funciones el número y tipo de los de argumentos y valor de retorno debe coincidir con la definición. Cuando se usen variables deben estar previamente almacenadas en la tabla de símbolos y deben tener el ámbito adecuado. En las sentencias condicionales la expresión de la condición debe ser booleana. Los identificadores al principio y al final del programa principal y de las funciones deben coincidir. Opcionalmente se podrán incluir otro tipo de comprobaciones. Ver ANEXO II sobre cómo se realizan las comprobaciones semánticas. Se pide: 1. Implementar los ficheros de flex y bison con la especificación léxica y sintáctica. 2. Implementar la construcción de la TS e imprimirla por pantalla. 3. Implementar las comprobaciones semánticas. Recordad emitir un mensaje en el caso de que se produzca un error léxico, sintáctico o semántico, indicando la fila donde se ha producido y el tipo de error de que se trata. Fecha de entrega: Todos los grupos antes del día 6 de marzo. Duración: 2 sesiones. Ejemplo maximo.mod module Maximo ; (* Este programa calcula el máximo de dos variables leidas desde el teclado *) var max : real; var a : real; var b : real; function fnc_max(real x, real y): real; var res : real; begin if (x > y) then res = x; res = y; end; return res; end fnc_max ; (* programa principal *) begin read a; read b; max = fnc_max(a,b); write max; 3
4 end Maximo. ANEXO I: La Tabla de Símbolos Qué es la tabla de símbolos? La Tabla de Símbolos (TS) es una estructura de datos que nos permite almacenar la información de los símbolos (variables y funciones) que aparecen a lo largo del programa. Esta información es necesaria para realizar las comprobaciones semánticas como: declaración de variables antes de uso, comprobaciones de tipos en expresiones y asignaciones, paso de parámetros a funciones (tipo y número), etc. Cómo se implementa? En esta práctica se implementará la TS como un vector de símbolos (podéis usar también una estructura de datos dinámica como una lista enlazada). Cada símbolo se puede implementar como una estructura tipo registro. Los campos a considerar son: #define MAXSIMBS 1024 #define TIPO_VAR 0 #define TIPO_FUNCION 1 #... typedef struct simb_tab char nombre[maxtamnombre]; //nombre del símbolo int tipo_simb; //tipo de símbolo, TIPO_VAR o TIPO_FUNCION int tipo_dato; //tipo de dato de la variable: TIPO_INT, TIPO_REAL, TIPO_BOOL, TIPO_CHAR. Si es una función almacena aquí el tipo del valor de retorno int nargs; //num. de argumentos para una función char nombre_argumentos[maxnumarg][maxtamnombre]; //nombre de los argumentos de una función int tipo_argumentos[maxnumarg]; //tipo de los argumentos para las funciones int ambito; //ámbito de definición de las variables SIMB_TAB; SIMB_TAB tabla_simbs[maxsimbs]; El ámbito se define como la parte del programa donde el símbolo tiene validez. Supondremos que el programa principal tiene ámbito cero. Todas las variables y funciones definidas en el programa principal tienen ámbito cero. Las variables definidas dentro de funciones tendrán ámbito 1, 2,... así sucesivamente siguiendo el orden en que se han definido las funciones. Para manipular la TS y realizar las comprobaciones semánticas, necesitamos implementar las funciones de inserción y búsqueda de símbolos sobre la TS. void insertar_simb(...); //inserta un simb. en la TS // se le puede pasar directamente una estructura de tipo símbolo o bien pasándole toda la información del símbolo para que ella lo cree y lo añada. 4
5 SIMB_TAB buscar_simb(...); //se le pasa el nombre del símbolo a buscar y lo devuelve. Si el símbolo no existe devolveria un símbolo vacio o una indicación de error. Recuerda pasar también el ámbito, ya que puede ocurrir que haya varías variables declaradas con el mismo nombre pero distinto ámbito. void imprimir_tabla_simbolos( ); //imprime la TS Cómo se rellena la TS? La tabla de símbolos se va rellenando conforme van definiéndose variables y funciones a lo largo del programa, en la sección de declaraciones. Vamos insertando símbolos mediante instrucciones de código C (encerrado entre llaves ), en determinados sitios de las producciones. Para ello, debéis analizar MINUCIOSAMENTE la gramática y determinar sobre papel cuáles son estos sitios, y después se implementa. Nos debemos preguntar: Dónde se definen variables y funciones? Por ejemplo: Las variables se definen en la producción Var var id : SimpleType ; SIMB_TAB s; s = buscar($2,ambito); if ( s == NULL ) //insertar el símbolo s.tipo_simb = TIPO_VAR; strcpy(s.nombre,$2); //recordad rellenar en flex la variable yylval con el lexema del id. s.tipo_dato = $4; s.ambito = ambito; //ámbito es una vble que va ir almacenando el ámbito actual insertar(s); Dónde recogemos el tipo de dato? SimpleType char $$ = TIPO_CHAR; integer $$ = TIPO_INT; real $$ = TIPO_REAL; boolean $$ = TIPO_BOOL; De forma similar se insertan en la TS las funciones y la información de sus argumentos y del valor de retorno. 5
6 ANEXO II: Comprobaciones Semánticas Cómo se realizan las comprobaciones semánticas? Las comprobaciones semánticas se realizan insertando instrucciones de código C (encerrado entre llaves ), en determinados sitios de las producciones. Por ejemplo, vamos a ilustrar las comprobaciones de declaración de variables antes de uso en las asignaciones y la compatibilidad de tipos en las asignaciones. AssignStm id = Expression SIMB_TAB s; s = buscar($1,ambito); if ( s! = NULL) if ($3!= s.tipo_dato) printf( Error. Incompatibilidad de tipos en asignación.\n ); printf( Error el identificador %s no existe, $1); En las expresiones es posible almacenar el tipo de dato, de manera que podamos hacer una inferencia de tipos y comprobaciones de forma sencilla. En efecto, si en las variable $i almacenamos el tipo: Expression id SIMB_TAB s; s = buscar($1,ambito); if ( s! = NULL) $$ = s.tipo_dato; printf( Error el identificador %s no existe, $1); numinteger $$ = TIPO_INT; true $$ = TIPO_BOOL; Expression * Expression if ( ($1 == TIPO_BOOL) ($3 == TIPO_BOOL) ) printf( Error. El operador mult no esta definido para tipos de datos BOOL ); if ( ($1 == TIPO_INT) && ($3 == TIPO_INT) ) $$ = TIPO_INT; $$ = TIPO_REAL; De forma similar para el resto de alternativas Cuidado al definir %union en Bison. Nota: La tabla de símbolos como se utiliza en muchas partes del programa se puede definir como variable global. También se pueden utilizar variables auxiliares para ir recogiendo información sobre el tipo de dato, ámbito, etc, conforme nos movemos dentro de las producciones durante el análisis sintáctico. La TS y sus funciones de manipulación se deberían implementar en un modulo independiente, para después enlazar todos los módulos (yylex.c, sintactico.tab.c, tablasimb.c). Con esta información se trata de guiaros para implementar las comprobaciones semánticas y la TS y no hay que entenderla como una obligación. Cada uno puede implementar la estructura de datos y las funciones que considere adecuadas para resolver la práctica. 6
LABORATORIO DE PROCESADORES DE LENGUAJE Curso: Práctica 2: Analizador léxico/sintáctico/semántico con Flex y Bison
LABORATORIO DE PROCESADORES DE LENGUAJE Curso: 2008-2009 Práctica 2: Analizador léxico/sintáctico/semántico con Flex y Bison Planteamiento del problema En esta práctica se trata de realizar, mediante el
Más detallesPRÁCTICA DE PROCESADORES DE LENGUAJE EVALUACIÓN ORDINARIA CURSO 2009/2010 OBJETIVO DE LA PRÁCTICA
PRÁCTICA DE PROCESADORES DE LENGUAJE EVALUACIÓN ORDINARIA CURSO 2009/2010 OBJETIVO DE LA PRÁCTICA El objetivo de la práctica es desarrollar un compilador utilizando las herramientas flex y bison y el lenguaje
Más detallesFLEX: A FAST LEXICAL ANALYZER GENERATOR
FLEX: A FAST LEXICAL ANALYZER GENERATOR Especificación Léxica Fichero.l flex Programa con la implementación del AFD, código fuente, yy.lex.c yy.lex.c Compilador de C milex (ejecutable) Para compilar flex
Más detallesFLEX: A FAST LEXICAL ANALYZER GENERATOR
FLEX: A FAST LEXICAL ANALYZER GENERATOR Especificación Léxica Fichero.l flex Programa con la implementación del AFD, código fuente, yy.lex.c yy.lex.c Compilador de C milex (ejecutable) cc yylex.c o milex
Más detallesYacc/Bison. Introducción
Yacc/Bison Índice Marina de la Cruz Alfonso Ortega Introducción Uso de Yacc/Bison con Lex/Flex Construcción del programa objetivo casple Comunicación entre las funcionesmain(), yylex() eyyparse() Formato
Más detallesAnálisis semántico. Análisis semántico. Índice (I)
Análisis semántico Índice (I) Marina de la Cruz Alfonso Ortega Objetivo del análisis semántico Decisiones para la construcción de un analizador semántico Análisis semántico con Bison Nivel de indirección
Más detallesBison. Introducción. Índice. Introducción Uso de Bison con Flex. Formato del fichero de especificación de Bison
Bison Índice Marina de la Cruz Alfonso Ortega Introducción Uso de Bison con Flex Construcción del programa objetivo alfa Comunicación entre las funciones main(), yylex() e yyparse() Formato del fichero
Más detallesProcesamiento de Lenguajes (PL) Curso 2015/2016. Práctica 5: traductor a código m2r
Procesamiento de Lenguajes (PL) Curso 2015/2016 Práctica 5: traductor a código m2r Fecha y método de entrega La práctica debe realizarse de forma individual o por parejas 1, y debe entregarse a través
Más detallesGENERACIÓN DE CÓDIGO INTERMEDIO EJEMPLOS PARA DISTINTAS ESTRUCTURAS DE DATOS
Todos los derechos de propiedad intelectual de esta obra pertenecen en exclusiva a la Universidad Europea de Madrid, S.L.U. Queda terminantemente prohibida la reproducción, puesta a disposición del público
Más detallesApunte Laboratorio ALPI - El lenguaje de programación Pascal
Apunte Laboratorio ALPI - El lenguaje de programación Pascal 1 2 ÍNDICE GENERAL Índice 1. Estructura de un Programa en Pascal 3 2. Sintaxis de Pascal 4 2.1. Uso de mayúsculas.....................................
Más detallesUnidad Didáctica 2. Elementos básicos del lenguaje Java Tipos, declaraciones, expresiones y asignaciones
Unidad Didáctica 2 Elementos básicos del lenguaje Java Tipos, declaraciones, expresiones y asignaciones Fundamentos de Programación Departamento de Lenguajes y Sistemas Informáticos Versión 1.0.3 Índice
Más detallesInformática General 2016 Cátedra: Valeria Drelichman, Pedro Paleo, Leonardo Nadel, Norma Morales
UNA / AREA TRANSDEPARTAMENTAL DE ARTES MULTIMEDIALES Licenciatura en Artes Multimediales Informática General 2016 Cátedra: Valeria Drelichman, Pedro Paleo, Leonardo Nadel, Norma Morales JavaScript Algoritmo
Más detallesTema 1 INTRODUCCIÓN A LOS LENGUAJES DE PROGRAMACIÓN
Tema 1 INTRODUCCIÓN A LOS LENGUAJES DE PROGRAMACIÓN - Introducción - Sintaxis - Semántica básica - Tipos de datos - Expresiones y enunciados - Procedimientos y ambientes - Tipos abstractos de datos y módulos
Más detallesTema 3. Introducción al análisis sintáctico
Tema 3 Introducción al análisis sintáctico Bibliografía: Aho, A.V., Sethi, R., Ullman, J.D. (1990), Compiladores: principios, técnicas y herramientas, Tema 4, pág.: 163-186. Louden, K.C. (1997), Compiler
Más detallesPRÁCTICAS DE PROCESADORES DEL LENGUAJE CURSO 2008/2009
PRÁCTICAS DE PROCESADORES DEL LENGUAJE CURSO 2008/2009 PRÁCTICA 2: ANALIZADOR SINTÁCTICO Y TABLA DE SÍMBOLOS. Objetivo de la Práctica Esta práctica tiene como primer objetivo la codificación de un analizador
Más detallesTodo programa en 'C' consta de una o más funciones, una de las cuales se llama main.
LENGUAJE C CARACTERISTICAS DEL LENGUAJE 'C' El lenguaje 'C' se conoce como un lenguaje compilado. Existen dos tipos de lenguaje: interpretados y compilados. Los interpretados son aquellos que necesitan
Más detallesMódulo. = Asignación = = Comp. de igualdad!= Com. de desigualdad <= Comp. menor o igual >= Comp. mayor o igual AND lógico OR lógica.
EQUIVALENCIAS BÁSICAS ENTRE PASCAL Y C A continuación se presentan algunas equivalencias básicas entre estos lenguajes de programación : Operadores en lenguaje C: Operador Descripción % Módulo = Asignación
Más detallesµ-c: Manual de referencia del lenguaje Micro-C
µ-c: Manual de referencia del lenguaje Micro-C Introducción Este manual de referencia describe en detalle el lenguaje Micro-C, para ser implementado como proyecto de los cursos de Compíladores I y II en
Más detallesDocente: Juan Carlos Pérez P. Alumno : Fecha : Nota:
Docente: Juan Carlos Pérez P. Alumno : Fecha : Nota: Justificación: Se pretende con éste contribuir a que el alumno se inicie y conozca el entorno del IDE en la creación de pequeños programas en java Objetivos:
Más detallesRepaso Lenguaje C Área de Servicios Programación (Ing. Elect. y Prof. Tec.), Programación I (TUG y TUR) y Electrónica programable (TUE)
Repaso Lenguaje C OBJETOS Variables Constantes Variable: objeto del ambiente cuyo contenido puede cambiar. Constante: objeto cuyo contenido no puede cambiar. Variables: - un nombre que la identifica. Deben
Más detallesJava. Introducción a la Programación Orientada a Objetos
Java Java es un lenguaje de programación presentado en 1995 enfocado a: soportar los fundamentos de la programación orientada a objetos. generar código independiente de la arquitectura de la computadora
Más detallesVARIABLES, CONSTANTES Y EXPRESIONES ASIGNACIÓN. TIPOS ELEMENTALES. PRECEDENCIA DE LOS ESTRUCTURAS DE CONTROL. CONDICIONAL E
Java Java es un lenguaje de programación presentado en 1995 enfocado a: soportar los fundamentos de la programación orientada a objetos. generar código independiente de la arquitectura de la computadora
Más detallesLección 2 Introducción al lenguaje C
Lección Introducción al lenguaje C Decimal Binario Hexadecimal A B C D E F Octal Equivalencia entre decimal, binario, hexadecimal y octal. Código ASCII (American Standard Code for Information Interchange)
Más detallesJava Avanzado. Guía 1. Java Avanzado Facultad de Ingeniería. Escuela de computación.
Java Avanzado. Guía 1 Java Avanzado Facultad de Ingeniería. Escuela de computación. Java Avanzado. Guía 2 Introducción Este manual ha sido elaborado para orientar al estudiante de Java Avanzado en el desarrollo
Más detallesTema 2: Análisis léxico
Tema 2: Análisis léxico Procesamiento de Lenguajes Dept. de Lenguajes y Sistemas Informáticos Universidad de Alicante Procesamiento de Lenguajes Tema 2: Análisis léxico 1 / 21 Fundamentos del análisis
Más detallesAnálisis semántico. Análisis semántico. Índice
Análisis semántico Índice Marina de la Cruz Alfonso Ortega Notación Objetivo del análisis semántico Pasos para la construcción de un analizador semántico Análisis semántico con Bison Definición de los
Más detallesAutoestudio 2: Variables y Operadores
Autoestudio 2: Variables y es Componentes de un programa Cuando escribimos en un lenguaje de programación tenemos que entender la sintaxis del lenguaje. A continuación empezaremos con la sintaxis básica
Más detallesResolución de Problemas y Algoritmos
RESOLUCIÓN DE PROBLEMAS Y ALGORITMOS CLASE 3 Definición y compatibilidad de tipos de datos. Sentencia condicional CASE. Luciano H. Tamargo http://cs.uns.edu.ar/~lt Depto. de Ciencias e Ingeniería de la
Más detallesCarlos Montenegro. Programación Orientada a Objetos Proyecto Curricular de Ingeniería de Sistemas
2 - Introducción al lenguaje Java, identificadores y comentarios. Carlos Montenegro Programación Orientada a Objetos Proyecto Curricular de Ingeniería de Sistemas 1. Introducción: Java tiene como todos
Más detallesProgramación. Test Autoevaluación Tema 3
Programación Test Autoevaluación Tema 3 Autores: M. Paz Sesmero Lorente Paula de Toledo Heras Fco. Javier Ordoñez Morales Juan Gómez Romero José A. Iglesias Martínez José Luis Mira Peidro SOLUCIONES 1.
Más detallesTema 2: Elementos básicos de un programa. Tipos de datos, variables y constantes Asignación Operadores y expresiones
Tema 2: Elementos básicos de un programa Tipos de datos, variables y constantes Asignación Operadores y expresiones Ejemplo de programa Dados dos números, leídos desde el teclado, visualizar el mayor #include
Más detallesUnidad II: Análisis semántico
Unidad II: Análisis semántico Se compone de un conjunto de rutinas independientes, llamadas por los analizadores morfológico y sintáctico. El análisis semántico utiliza como entrada el árbol sintáctico
Más detallesTema 2: Desarrollo de Algoritmos. E.E. de Algorítmica
Tema 2: Desarrollo de Algoritmos E.E. de Algorítmica Temas a tratar Identificadores Variables Constantes Tipos de Datos Separadores Operadores Aritméticos Unarios Relacionales y Condicionales Nivel de
Más detallesPRÁCTICA DE PROCESADORES DE LENGUAJE EVALUACIÓN CONTINUA CURSO 2009/2010
PRÁCTICA DE PROCESADORES DE LENGUAJE EVALUACIÓN CONTINUA CURSO 2009/2010 OBJETIVO DE LA PRÁCTICA El objetivo de la práctica es desarrollar un compilador utilizando las herramientas flex y bison y el leguaje
Más detallesIntroducción a la Programación
Introducción a la Programación Fundamentos de Programación Ingeniería Informática en Sistemas de Información Alicia Troncoso 1 Contenido l Introducción l Mi primer programa l Etapas a seguir en la programación
Más detallesOperadores. Java es un lenguaje rico en operadores, que son casi idénticos a los de C/C++.
Operadores Java es un lenguaje rico en operadores, que son casi idénticos a los de C/C++. Operadores aritméticos Son operadores binarios (requieren siempre dos operandos) que realizan las operaciones aritméticas
Más detallesLABORATORIO DE PROCESADORES DE LENGUAJE. Práctica 3: Analizador léxico/sintáctico y generación de código intermedio con PCCTS
13048 - LABORATORIO DE PROCESADORES DE LENGUAJE Curso: 2005-2006 Práctica 3: Analizador léxico/sintáctico y generación de código intermedio con PCCTS Esta práctica consta de dos partes diferenciadas. En
Más detallesDatos Elementales y formato de un programa en Java
Datos Elementales y formato de un programa en Java PROGRAMACION I Grado en Matematicas Informática Programación I - 2015/2016 Datos, variables y mi primer programa 1 Introducción a la programación o Programa:
Más detallesJavaScript Básico. Elementos Básicos: Comentarios: Literales: Valores que puede tomar una variable o una constante.
Javascript (II) 1 Elementos Básicos: Comentarios: Para una línea // Esto es un Comentario Para un bloque /*......... */ Literales: Valores que puede tomar una variable o una constante. Ejemplos: "Soy una
Más detallesEstructura de un programa en Java. Tipos de datos básicos. class miprimerprograma{ // comentario, no es parte del programa
Contenido Estructura de un programa en Java... 2 Tipos de datos básicos... 2 Operadores... 3 Literales... 4 Entrada / Salida... 4 Sentencias condicionales... 5 Funciones... 5 Ejercicios... 6 Variables,
Más detallesDra. Jessica Andrea Carballido
Dra. Jessica Andrea Carballido jac@cs.uns.edu.ar Dpto. de Ciencias e Ingeniería de la Computación UNIVERSIDAD NACIONAL DEL SUR Cuando la complejidad de los problemas aumenta, la tarea de hallar una solución
Más detallesTema 05: Elementos de un programa en C
Tema 05: Elementos de un programa en C M. en C. Edgardo Adrián Franco Martínez http://www.eafranco.com edfrancom@ipn.mx @edfrancom edgardoadrianfrancom Estructuras de datos (Prof. Edgardo A. Franco) 1
Más detallesAlgoritmo, Estructuras y Programación I Ing. Marglorie Colina
Unidad II: Fundamentos de la Programación Estructurada Algoritmo, Estructuras y Programación I Ing. Marglorie Colina Estructura General de un Programa Zona de ficheros de cabecera de las librerías Zona
Más detallesEsquemas repetitivos en Fortran 90. Esquemas repetitivos en Fortran 90. Esquemas repetitivos en Fortran 90. Tipos de Esquema
Los esquemas repetitivos permiten implementar iteraciones del lenguaje algorítmico (mientras, repetir, para, hasta). Podemos dividir los esquemas según: - Se conozcan el número de iteraciones a priori,
Más detallesCOMPILADORES. Tema 4. Análisis semántico
COMPILADORES Tema 4. Análisis semántico Presenta: David Martínez Torres Universidad Tecnológica de la Mixteca Instituto de Computación Oficina No. 37 dtorres@mixteco.utm.mx Contenido 1. Funcionalidad del
Más detallesIntroducción a c++ Introducción a la programación EIS Informática III
Introducción a c++ Un lenguaje de programación es un lenguaje formal diseñado para realizar procesos que pueden ser llevados a cabo por máquinas como las computadoras. Pueden usarse para crear programas
Más detallesTema 2: Análisis léxico
Tema 2: Análisis léxico Procesamiento de Lenguajes Dept. de Lenguajes y Sistemas Informáticos Universidad de Alicante Procesamiento de Lenguajes Tema 2: Análisis léxico 1 / 22 Fundamentos del análisis
Más detallesPROGRAMACIÓN ORIENTADA A OBJETOS (L40629) Sabino Miranda-Jiménez
PROGRAMACIÓN ORIENTADA A OBJETOS (L40629) Sabino Miranda-Jiménez Elementos de lenguaje: Identificadores Tipos de datos 2 Tipos de datos primitivos 3 Tipos de datos referenciados Clases Interfaces Arrays
Más detallesANÁLISIS LÉXICO Ing. Ronald Rentería Ayquipa
ANÁLISIS LÉXICO Ing. Ronald Rentería Ayquipa ANALIZADOR LÉXICO (AL) El Analizador léxico (scanner), lee la secuencia de caracteres del programa fuente, caracter a caracter, y los agrupa para formar unidades
Más detallesManual de referencia del lenguaje Micro-C
Manual de referencia del lenguaje Micro-C Profesor: Egdares Futch H. Introducción Una parte importante de los cursos de (Ingeniería de Lenguajes de Programación) se centra en la experiencia de escribir
Más detallesUNIDAD V. Analisis Semantico. 5.1 Introduccion. Analizador Semántico. Verifica que el significado de las construcciones del lenguaje tengan sentido.
UNIDAD V Analisis Semantico 5.1 Introduccion Analizador Semántico. Ejemplo: Verifica que el significado de las construcciones del lenguaje tengan sentido. Tareas del analizador semántico: 1) Comprobación
Más detalles$0 Representa al parámetro cero o nombre del programa $1 Representa al parámetro uno $2 Representa al parámetro dos
PROGRAMACIÓN DE SHELL SCRIPTS EN LINUX El shell es un intérprete de órdenes, pero el shell no es solamente eso; los intérpretes de órdenes de Linux son auténticos lenguajes de programación. Como tales,
Más detalles24/8/2018. cuota monto/cantcuotas
PROBLEMA: A partir del monto de un crédito y la cantidad de cuotas se desea calcular el monto de cada cuota. Datos de entrada y de salida? Algoritmo ValorDeCuota DE: monto, cantcuotas (enteros) DS: cuota
Más detallesÍndice general 7. Presentación 15
ÍNDICE GENERAL Índice general 7 Presentación 15 1. Introducción 19 1.1. Antecedentes históricos de la computación................... 19 1.2. Definiciones previas............................... 24 1.3.
Más detallesProgramación 1. Tema I. Conceptos y elementos básicos de Programación. Lección 2. Lenguaje de programación y ejecución de un programa
Programación 1 Tema I. Conceptos y elementos básicos de Programación Lección 2. Lenguaje de programación y ejecución de un programa 1 Léxico, sintaxis y semántica de un lenguaje #include #include
Más detallesLENGUAJE FORTRAN. ESTRUCTURAS Y SENTENCIAS
LENGUAJE FORTRAN. ESTRUCTURAS Y SENTENCIAS BÁSICAS Programación en Fortran Valentín Moreno ÍNDICE 1. Introducción al lenguaje Fortran 2. Estructura de un programa 3. Variables y constantes 4. Tipos de
Más detallesInformática General 2018 Cátedra: Valeria Drelichman, Pedro Paleo, Leonardo Nadel, Norma Morales
UNA / AREA TRANSDEPARTAMENTAL DE ARTES MULTIMEDIALES Licenciatura en Artes Multimediales Informática General 2018 Cátedra: Valeria Drelichman, Pedro Paleo, Leonardo Nadel, Norma Morales JavaScript - Programación
Más detallesUNIDAD ACADÉMICA PROFESIONAL TIANGUISTENCO
UNIDAD ACADÉMICA PROFESIONAL TIANGUISTENCO LICENCIATURA EN INGENIERÍA DE SOFTWARE UNIDAD DE APRENDIZAJE: PROGRAMACIÓN Créditos institucionales de la UA: 8 Material visual: Diapositivas Unidad de competencia
Más detallesLENGUAJE. Tema 2 Elementos de un programa
LENGUAJE Tema 2 Elementos de un programa ELEMENTOS DE UN PROGRAMA Comentarios. Identificadores. Constantes. Variables. Operadores. Sentencias o instrucciones. COMENTARIOS Los comentarios en C pueden ocupar
Más detallesInstituto Tecnológico de Celaya
ELEMENTOS BÁSICOS DE C++: DECLARACIÓN DE VARIABLES A través de operaciones aritméticas (suma, resta, etc.) y lógicas (por ejemplo, comparaciones) los programas manipulan datos tales como números y caracteres.
Más detallesYacc/Bison. Índice. Construcción del programa objetivo Flujo de control de las funciones yylex() e yyparse()
Yacc/Bison Índice Marina de la Cruz Introducción Uso de Yacc/Bison con Lex/Flex Construcción del programa objetivo Flujo de control de las funciones yylex() e yyparse() Formato del fichero de especificación
Más detallesProcesadores de lenguajes Ingeniería Informática Especialidad de Computación Tercer curso, segundo cuatrimestre
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: 2013-2014
Más detallesDescripción de un Programa
Unidad 2 Descripción de un Programa 1 El Lenguaje C (1) El lenguaje C fue creado en 1972 por Ken L. Thompson y Dennis M. Ritchie en los Laboratorios Bell. Es evolución de un lenguaje más antiguo: B (a
Más detallesEsquemas repetitivos en Fortran 90
Los esquemas repetitivos permiten implementar iteraciones del lenguaje algorítmico (mientras, repetir, para, hasta). Podemos dividir los esquemas según: - Se conozcan el número de iteraciones a priori,
Más detallesEl programa en JavaScript debe ir encerrado entre la marca script e inicializada la propiedad type con la cadena text/javascript:
Javascript Qué es JavaScript? Es un lenguaje de scripting (Código interno en las páginas HTML) necesario para los elaboradores de sitios Web, mediante el cual se puede hacer que las páginas sean activas
Más detalles10 Introducción a BISON/YACC
10 Introducción a BISON/YACC Objetivos: Construir un analizador sintáctico haciendo uso de la herramienta Bison Recursos: Maquina virtual Linux distribución Bodhi LXterminal, Flex, Bison Introducción GNU
Más detallesProcesadores de lenguajes Ingeniería Informática Especialidad de Computación Tercer curso, segundo cuatrimestre
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
Más detallesLENGUAJE FORTRAN. FUNCIONES Y SUBRUTINAS
LENGUAJE FORTRAN. FUNCIONES Y SUBRUTINAS Programación en Fortran Valentín Moreno ÍNDICE 1. Subprogramas 2. Funciones 3. Subrutinas 2 3 1. SUBPROGRAMAS 1. SUBPROGRAMAS Si necesitamos usar con frecuencia
Más detallesElementos de un programa en C
Elementos de un programa en C Un programa en C consta de uno o más archivos. Un archivo es traducido en diferentes fases. La primera fase es el preprocesado, que realiza la inclusión de archivos y la sustitución
Más detallesTema: Análisis Semántico
Compiladores. Guía 7 1 Facultad: Ingeniería Escuela: Computación Asignatura: Compiladores Tema: Análisis Semántico Contenido En esta guía se desarrollará una tabla de símbolos y se asociará al analizador
Más detallesPRÁCTICA. Apellidos, Nombre: Calificación:
Examen de Traductores, Intérpretes y Compiladores. Convocatoria ordinaria de Junio de 2004 3 er Curso de I.T. Informática de Sistemas. Apellidos, Nombre: Calificación: PRÁCTICA El lenguaje Protolen posee
Más detallesEl lenguaje C. 1. Identificadores, constantes y variables
Principios de Programación El lenguaje C 1. Identificadores, constantes y variables 1.1. Conceptos de memoria Los nombres de variable como x, y, suma corresponden a localizaciones o posiciones en la memoria
Más detallesTEMA 2. LENGUAJE C. CONCEPTOS BÁSICOS Y PROGRAMACIÓN ELEMENTAL.
Tema 2. TEMA 2. LENGUAJE C. CONCEPTOS BÁSICOS Y PROGRAMACIÓN ELEMENTAL. PARTE : VARIABLES, OPERADORES Y CONSTANTES.. INTRODUCCIÓN AL LENGUAJE C 2. PROGRAMAS BÁSICOS EN LENGUAJE C 3. DATOS EN LENGUAJE C
Más detallesPARTE I ANALISIS LEXICO
PARTE I ANALISIS LEXICO Un cierto lenguaje de programación está formado, entre otros elementos, por los siguientes: 1. Palabras clave: alias, check, class, creation, do, else, elseif,, ensure, feature,
Más detalles28/08/2018. Dra. Jessica Andrea Carballido. cuota monto/cantcuotas
PROBLEMA: A partir del monto de un crédito y la cantidad de cuotas se desea calcular el monto de cada cuota. Dra. Jessica Andrea Carballido jac@cs.uns.edu.ar Datos de entrada y de salida? Algoritmo ValorDeCuota
Más detallesInformática Ingeniería en Electrónica y Automática Industrial
Informática Ingeniería en Electrónica y Automática Industrial Punteros en lenguaje C Punteros en lenguaje C Definición Declaración e inicialización de punteros Operadores de punteros: «*» y «&» Operaciones
Más detallesComponentes Básicos. InCo. InCo Componentes Básicos 1 / 28
Componentes Básicos InCo InCo Componentes Básicos 1 / 28 Modelo de Computación Vemos al computador como un procesador de datos. +------------+ Entrada ===> Computador ===> Salida +------------+ InCo Componentes
Más detallesPráctico 2: Funciones y Punteros en C La teoría general para este práctico puede consultarse en los Capítulos 4 y 5 Notas de Clase
Práctico 2: Funciones y Punteros en C La teoría general para este práctico puede consultarse en los Capítulos 4 y 5 Notas de Clase 1. Ejecute el siguiente programa y diga que hace la función calcula: #include
Más detallesAnalizador Sintáctico RECURSIVO
Compiladores 1 Argueta Cortes Jairo I. Universidad Nacional Autónoma de México Facultad de Ingeniería Compiladores Grupo 1 Analizador Sintáctico RECURSIVO ALUMNOS: ARGUETA CORTES JAIRO I. MENDOZA GAYTAN
Más detallesComprender las diferencias entre tipos de datos primitivos similares, y aprender a elegir el tipo más conveniente en cada caso.
Elementos básicos de programación en Java Objetivos del tema Conocer la estructura básica de un programa Java. Comprender los conceptos de tipo, valor y variable. Comprender las diferencias entre tipos
Más detallesGUÍA BÁSICA DE SCHEME v.4
Esta guía básica pretende ser una introducción elemental al lenguaje de programación Scheme. Se presenta como una guía de comienzo rápido de tal forma que permita conocer de una forma muy esquemática los
Más detallesPRINCIPIOS DE PROGRAMACIÓN. Mtro. en Ingeniería de Software. Especialidad en e-commerce Ismael Jiménez Hernández
PRINCIPIOS DE PROGRAMACIÓN Mtro. en Ingeniería de Software. Especialidad en e-commerce Ismael Jiménez Hernández Consideraciones Generales Instructor: Ismael Jiménez Hernández Duración: 3.2 horas/semana
Más detallesPROCESADORES DE LENGUAJES I PRÁCTICA DE LABORATORIO 4
PROCESADORES DE LENGUAJES I PRÁCTICA DE LABORATORIO 4 En esta práctica trabajaremos con ANTLR a nivel semántico utilizando gramáticas con atributos. ANTLR permite implementar con facilidad los dos modelos
Más detallesConceptos Básicos. Programación
Conceptos Básicos Programación Introducción Lenguaje. Código Máquina. Lenguajes de alto nivel. Criterios clasificación Nivel de abstracción. Propósito. Evolución histórica. Manera de ejecutarse. Paradigma
Más detallesResolución de Problemas y Algoritmos
RESOLUCIÓN DE PROBLEMAS Y ALGORITMOS CLASE Estructura de control condicional. Luciano H. Tamargo http://cs.uns.edu.ar/~lt Depto. de Ciencias e Ingeniería de la Computación Universidad Nacional del Sur,
Más detallesEnteros. Son los números que no contienen componentes fraccionarios y, por tanto, no contienen punto decimal.
LENGUAJE DE PROGRAMACIÓN TURBO PASCAL El lenguaje de programación de alto nivel Pascal fue diseñado el 1968 por Niklaus Wirth con una finalidad eminentemente pedagógica El 1983, el Pascal fue estandarizado
Más detallesTema 5 Tabla de Símbolos
Traductores, Compiladores e Intérpretes 1 Tema 5 También se la llama tabla de nombres o tabla de identificadores y tiene dos funciones principales: - Efectuar chequeos semánticos. - Generación de código.
Más detallesLenguaje C. República Bolivariana de Venezuela Fundación Misión Sucre Aldea Fray Pedro de Agreda Introducción a la Programación III
República Bolivariana de Venezuela Fundación Misión Sucre Aldea Fray Pedro de Agreda Introducción a la Programación III Lenguaje C 1 Puntos previos Los códigos fuentes generados en C requieren ser compilados
Más detallesUNIDAD 2 Descripción de un programa
Descripción de un programa Estructura general de un programa. Elementos básicos. Tipos de datos simples: enteros, reales y carácter. Representación de datos en memoria. Operaciones sobre tipos de datos
Más detallesObjetivos de la sesión. Aplicación de consola 7/30/11. Código con que se inicia un programa en Visual C# (aplicación de consola)
Objetivos de la sesión Entender el tipo de programas que se pueden realizar con aplicaciones de consola. Conocer el concepto de variable, la forma en que se declaran y su utilización. Conocer la forma
Más detallesTipos de Datos Simples Contenido del Tema
T E M A 3 Tipos de Datos Simples Contenido del Tema 3.1. Concepto de Tipo 3.1.1. Elementos básicos: atributos y operaciones 3.1.2. Tipos. Concepto y necesidad 3.1.3. Operadores básicos 3.2. Tipos de Datos
Más detallesTema 1: Introducción a C
Fundamentos de Informática I ETSII Tema 1: Introducción a C. Departamento de Sistemas Informáticos y Computación Universidad Politécnica de Valencia Tema 1: Introducción a C Índice: Objetivos Conceptos
Más detalles8- LEX-Expresiones regulares
8- LEX-Expresiones regulares Objetivos: Utilizar la herramienta KEX para trabajar con expresiones regulares Recursos: Maquina virtual Linux distribución Bodhi LXterminal y FLEX Introducción Flex le permite
Más detallesTEMA 02 TIPOS, OPERADORES Y EXPRESIONES
TEMA 02 TIPOS, OPERADORES Y EXPRESIONES 2.1.- Introducción. 2.2.- Datos. 2.3.- Entrada y salida básica. 2.4.- Modificadores. 2.5.- Cadenas de caracteres. 2.6.- Operadores. 2.7.- Precedencia de operadores.
Más detalles