Compiladores e Intérpretes Análisis Semántico I

Tamaño: px
Comenzar la demostración a partir de la página:

Download "Compiladores e Intérpretes Análisis Semántico I"

Transcripción

1 1 Compiladores e Intérpretes Análisis Semántico I Sebastian Gottifredi 2017

2 Organización Repaso Intuición General del Análisis Semántico Gramáticas de Atributos Funcionamiento Atributos: Sintetizados-Heredados-Intrinsecos Esquema de Traducción Evaluación en un Analizador Sintáctico 2

3 Repaso 3

4 Repaso Para entender y controlar la estructura de un programa fuente hay que analizar si sigue las reglas de sintaxis del lenguaje Estas reglas están expresadas en términos de tokens, mientras que el fuente es una cadena de caracteres El Analizador Léxico es el encargado armar los tokens Para expresar las reglas de sintaxis del lenguaje utilizamos gramáticas libres de contexto 4

5 Repaso El analizador sintáctico es el encargado de reconocer si un programa sigue esas expresadas por la gramática, para eso: La gramática tiene que ser no ambigua Simula el proceso de derivación usando una estrategia: Descendentes: arrancando del no terminal Inicial reconstruir la derivación a izquierda hasta llegar a la cadena Ascendentes: aplican las producciones en orden inverso hasta llegar al símbolo inicial de la gramática 5

6 Repaso Estrategias Descendentes: simular la derivación a izquierda mediante Mediante Tabla LL(1) Recursiva Estrategia Ascendentes: simular la derivación a derecha en orden inverso mediante: Tabla de estados representando posibles prefijos 6

7 Intuición General del Análisis Semántico 7

8 Intuiciones Análisis Semántico La tarea final del compilador es traducir el programa fuente en un código que se pueda ejecutar directamente en la maquina destino Para esto necesita conocimiento del programa que va mas allá de la estructura sintáctica. Informalmente cuando la sintaxis indica la forma valida de un programa la semántica concierne su significado, que es clave para: Controlar que se cumplan las reglas (consistencia de tipos) Obtener información para generar un programa de salida equivalente 8

9 Intuiciones Análisis Semántico Por ejemplo, para un id con lexema x Qué tipo de valor se puede almacenar en x? Si x es una suprograma Cuántos parámetros tiene? Que tipo de valor retorna? En donde es visible x? Si x esta ligado a un objeto Qué mensajes se le pueden enviar? Fue previamente declarado x? Cual es el tipo resultante de evaluar una expresión cuyo valor será almacenado en x? 10

10 Intuiciones Análisis Semántico Las tareas del analizador semántico, en general para un lenguaje de programación con tipado estático, se pueden dividir en dos: Recolectar, entender y controlar todas las entidades declaradas Chequeo de Declaraciones Recolectar, entender y controlar todas las sentencias asociadas a las entidades recolectadas Chequeo de Sentencias 11

11 Intuiciones Análisis Semántico Hay dos alternativas para implementar el analizador semántico: Intercalado con el analizador sintáctico Los controles semánticos se implementan dentro del analizador sintáctico Separado del analizador sintáctico Como parte del analizador sintáctico se implementa la construcción de una representación intermedia utilizada por otro modulo encargado del análisis semánticos 12

12 Intuiciones Análisis Semántico En cualquier caso, es necesario realizar acciones especiales dentro del analizador sintáctico O bien para realizar los controles semánticos O para construir la representación intermedia (arboles sintácticos) Las Gramáticas de Atributos son las herramientas formales utilizadas para diseñar estas acciones en el analizador sintáctico 13

13 Gramáticas de Atributos 14

14 Gramáticas de Atributos Son gramáticas libres de contexto aumentadas con conjunto de reglas (acciones) que especifican computaciones Cada regla asocia valores a atributos usando otros atributos Los atributos están asociados a los símbolos de la gramática S E$ E E + T E - T T T (E) string num El + concatena strings, concatena un entero a un string, o suma enteros El solo resta enteros Queremos: Calcular el tipo una expresión en un atributo! S.tipo E.tipo T.tipo 15

15 Gramáticas de Atributos Una regla se utiliza para dar valor a un atributo {T.tipo = tstr} Las reglas se vinculan a producciones de la gramática T string {T.tipo = tstr} Las reglas solo pueden utilizar atributos vinculados a símbolos la producción a la cual están vinculados 16

16 Gramáticas de Atributos En su concepción formal Una regla asociada a una producción asocia el valor de un atributo de los símbolos de la producción, donde el atributo puede Tomar directamente el valor de otro atributo o una constante, T string {T.tipo = tstr} E T {E.tipo = T.tipo} Tomar el valor de una función semántica, la cual puede tener un numero arbitrario de argumentos que solo pueden ser atributos asociados a símbolos de la producción Cuando se repite un símbolo en una producción es posible subindicarlos para distinguirlos entre ellos 17

17 Gramáticas de Atributos En la practica, permitimos que las reglas sean porciones de código en un lenguaje bien definido (el de implementamos del compilador) La intuición es especificar las funciones semánticas in-line E 1 E 2 - T {if(t.tipo == tint && E 2.tipo == tint) E 1.tipo = tint else ERROR} Aun así solo podemos referirnos a atributos asociados a la producción a la cual la regla esta vinculada. Pero, en caso de ser necesario podemos usar variables globales. 18

18 Gramáticas de Atributos S E$ E E + T E - T T T (E) string num El + concatena strings, concatena un entero a un string, o suma enteros El solo resta enteros Queremos: Calcular el tipo una expresión en un atributo! S.tipo E.tipo T.tipo Producción Reglas Semanánticas S E$ {S.tipo = E.tipo} E 1 E 2 + T {if(t.tipo == tstr E 2.tipo == tstr) E 1.tipo = tstr else E 1.tipo = tint} E 1 E 2 - T E T T (E) T string T num {if(t.tipo == tint && E 2.tipo == tint) E 1.tipo = tint else ERROR} {E.tipo = T.tipo} {T.tipo = E.tipo} {T.tipo = tstr} {T.tipo = tint} Pizarrón! 19

19 Funcionamiento de las Gramáticas de Atributos 21

20 Evaluando Atributos y Acciones El proceso de evaluar los atributos aplicando las reglas es denominado anotación o decoración del árbol de derivación En este árbol cada nodo va a estar etiquetado con los atributos asociados al símbolo que tiene asociado Aplica una regla en un nodo solo cuando se hayan calculado todos los valores necesarios para el calculo En general, implica calcular valores de atributos en nodos descendientes y/o hermanos! (8-5)+ hola $ Pizarrón! 22

21 Evaluando Atributos y Acciones E T ( E E T num tipo=tint tipo=tint E tipo=tint tipo=tint tipo=tint - T num S ) tipo=tint tipo=tstr tipo=tstr + T string $ tipo=tstr (8-5)+ hola $ 23

22 Evaluando Atributos y Acciones El orden en el que fuimos calculando los valores de los atributos da el patrón en el que fluye la información a través del árbol Este patrón es denominado flujo de atributos E T ( E E T num tipo=tint tipo=tint E tipo=tint tipo=tint tipo=tint - T num S tipo=tstr ) tipo=tint tipo=tstr + T string $ tipo=tstr (8-5)+ hola $ 24

23 Atributos Sintetizados Un atributo es sintetizado si toma valor solo cuando aparece asociado al símbolo NT de la parte izquierda de la producción Es sintetizado el atributo tipo del ejemplo anterior? En el árbol decorado este comportamiento se ve cuando un atributo hace fluir información de abajo hacia arriba. Mediante el flujo se puede ver que la información sube (se sintetiza) a través de los nodos del árbol SI! 25

24 Atributos Intrínsecos Un atributo es intrínseco cuando su valor se asume dado de antemano Son los atributos asociados a los tokens Pueden verse también como atributos sintetizados, los cuales se sintetizan de manera externa Por ejemplo, el lexema de un token es un atributo intrínseco 26

25 Atributos Heredados Un atributo es heredado si toma valor solo cuando aparece asociado al símbolo de la parte derecha de la producción. En el árbol estos atributos permiten la información fluya de arriba hacia abajo o desde los costados S D$ D T L T id pstring pint L id R R id R e Gramática para declarar variables Queremos guardar el nombde de cada id con su respectivo tipo, usando la función Guardar(nombre, tipo) T.tipo (sintetizado) E.tipo (heredado) R.tipo (heredado) token.lex(intrínseco) Pizarrón! 27

26 Atributos Heredados Producción S D$ D T L T id T pstring T pint L id R R 1 id R 2 R e Reglas Semanánticas {L.tipo = T.tipo} {T.tipo = id.nombre} {T.tipo = tstr} {T.tipo = tint} {Guardar(id.lex,L.tipo)} {R.tipo = L.tipo} {Guardar(id.lex, R 1.tipo)} {R 2.tipo = R 1.tipo} int a1 v1 x Pizarrón! 28

27 Atributos Heredados Mediante el flujo se puede ver que la información pasa con atributos heredados va hacia abajo y hacia los laterales T pint tipo=tint D L Id Lex=a1 Id Lex=v1 int a1 v1 x tipo=tint R Id tipo=tint guardar(a1,tint) Lex=x R tipo=tint guardar(v1,tint) R tipo=tint guardar(x,tint) 29

28 Evaluando Atributos y Acciones Producción Producción S D$ D$ D T L T id T id pstring T pint pstring L T id pint R L id R R 1 id R 2 R 1 id R 2 R e R e Reglas Semanánticas Reglas Semanánticas {for(x in L.lista) {L.tipo Guardar(x, = T.tipo} T.tipo) {T.tipo } = id.lex} {T.tipo = tstr} id.nombre} {T.tipo = tint} tstr} {Guardar(id.lex,L.tipo)} {T.tipo = tint} {R.tipo {R.lista.add(id.nombre)) = L.tipo} {Guardar(id.lex, {L.lista = R.lista} R 1.tipo)} {R.tipo = R 1.tipo} 2.lista.add(id.nombre))} {R 1.lista = R 2.lista} {R.lista = new List()} Hubiese sido posible resolver esto usando solo atributos sintetizados? Si! Con una lista 30

29 Evaluando Atributos y Acciones Veamos otro ejemplo Pizarrón! S E$ E E + T E - T T T (E) string num El + concatena strings, concatena un entero a un string, o suma enteros El solo resta enteros Queremos: Calcular el tipo una expresión en un atributo! S E$ E T R R +TR -TR e T (E) string num S.tipo (sintetizado) E.tipo (sintetizado) T.tipo (sintetizado) R.tipoS (sintetizado) R.tipoH (heredado) token.nombre(intrínseco) 31

30 Evaluando Atributos y Acciones Producción S E$ E T R R 1 +TR 2 R 1 -TR 2 R e T (E) T string T num Reglas Semanánticas {R.tipoH = T.tipo} {E.tipo = R.tipoS} {if(t.tipo == tstr R 1.tipoH == tstr) R 2.tipoH = tstr else R 2.tipoH = tint} {R 1.tipoS = R 2.tipoS} {if(t.tipo == tint && R 1.tipoH == tint) R 2.tipoH = tint else ERROR} {R 1.tipoS = R 2.tipoS} {R.tipoS = R.tipoH} {T.tipo = E.tipo} {T.tipo = tstr} {T.tipo = tint} 32

31 Evaluando Atributos y Acciones S tipos=tstr Pizarrón! E $ T tipo=tint R tipos=tstr tipoh=tint ( E tipo=tint ) + T tipo=tstr R tipos=tstr tipoh=tstr T tipo=tint R tipos=tint tipoh=tint string tipo=tstr num - T tipo=tint R tipos=tint tipoh=tint num tipo=tit (8-5)+ hola $ 33

32 Esquemas de Traducción Como vimos en para decorar los arboles seguimos un orden al aplicar las acciones vinculadas a las producciones Los esquemas de traducción (EDT) nos permiten embeber las reglas en la gramática para indicar el orden en que las vamos a aplicar, si seguimos una estrategia de primero en profundidad de izquierda a derecha para recorrer el arbol. En un EDT vamos a tener producciones, por ejemplo, de la forma: A B {C.y = B.x} C {A.z = C.w} 34

33 Esquemas de Traducción Producción Reglas Semanánticas S D$ D T L T id T pstring T pint L id R R 1 id R 2 R e {L.tipo = T.tipo} {T.tipo = id.nombre} {T.tipo = tstr} {T.tipo = tint} {Guardar(id.lex,L.tipo)} {R.tipo = L.tipo} {Guardar(id.lex, R 1.tipo)} {R 2.tipo = R 1.tipo} Esquema de Traducción (EDT) S D$ D T {L.tipo = T.tipo} L T id {T.tipo = id.nombre} T pstring {T.tipo = tstr} T pint {T.tipo = tint} L id {R.tipo = L.tipo} R {Guardar(id.lex,L.tipo)} R 1 id {Guardar(id.lex, R 1.tipo)} R 2 {R 2.tipo = R 1.tipo} R e 35

34 Esquemas de Traducción Esquema de Traducción S E$ E T {R.tipoH = T.tipo} R {E.tipo = R.tipoS} R 1 +T {if(t.tipo == tstr R 1.tipoH == tstr) R 2.tipoH = tstr else R 2.tipoH = tint} R 2 {R 1.tipoS = R 2.tipoS} R 1 -T {if(t.tipo == tint && R 1.tipoH == tint) R 2.tipoH = tint else ERROR} R 2 {R 1.tipoS = R 2.tipoS} R e {R.tipoS = R.tipoH} T (E) {T.tipo = E.tipo} T string {T.tipo = tstr} T num {T.tipo = tint} Pizarrón! 36

35 Esquemas de Traducción No cualquier gramática de atributos tiene un esquema de traducción asociado Por qué? En una EDT un atributo heredado asociado a un símbolo en la parte derecha de una producción solo puede depender de atributos heredados del simbolo de la parte izquierda o de atributos (sintetizados o heredados) de símbolos mas a la izquierda en la parte derecha Por qué? En la EDT la evaluación se hace de izquierda a derecha y en profunidad A B C {B.x = C.y} 37

36 Evaluando EDTs en Analizadores Sintáctico 38

37 EDTs en Analizadores Sintácticos Para reconocer sintácticamente un programa el analizador sintáctico simula el mecanismo de derivación usando las reglas de la gramática Una derivación tiene un árbol de derivación asociado Entonces, el analizador sintáctico simula la construcción del árbol de derivación! 39

38 EDTs en Analizadores Sintácticos El analizador construye implícitamente el árbol Tenemos que combinar orden de aplicación de las acciones de la gramática con tal construcción En particular, en los analizadores descendentes predictivos el árbol se construye siguiendo una política de primero en profundidad de izquierda a derecha. Es el orden de evaluación que asume la EDT! 40

39 EDTs en Analizadores Sintácticos En los analizadores descendentes predictivos recursivos, la implementación de una EDT es directa Cómo codificamos las acciones? Cuando codificamos la parte derecha, también codificamos las acciones siguiendo el orden en el que aparecen en la producción Cómo modelamos los atributos sintetizados? Son retornados por el subprograma correspondiente al NT asociado al atributo Cómo modelamos los atributos heredados? Son los parámetros de entrada correspondiente al NT asociado al atributo 41

40 EDTs en Analizadores Sintácticos Por ejemplo: A r B {C.y = B.x} C {A.z = C.w} void A(){ match( r ) B() C() } A(){ match( r ) x = B() w = C(x) return w} 42

41 EDTs en Analizadores Sintácticos Esquema de Traducción (EDT) S D$ D T {L.tipo = T.tipo} L T id {T.tipo = id.nombre} T pstring {T.tipo = tstr} T pint {T.tipo = tint} L id {R.tipo = L.tipo} R {Guardar(id.lex,L.tipo)} R 1 id {Guardar(id.lex, R 1.tipo)} R 2 {R 2.tipo = R 1.tipo} R e void D() Tipo t = T() L(t) Tipo T() if(tkact es id) String nom = tkact.lex match( id ) return new TipoClase(nom) else if(tkact es pint) match( pint ) return new TipoInt() else if(tkact es pstring) match( pstring ) return new TipoInt() else ERROR SINTACTICO! void L(Tipo t) String nom = tkact.lex match( id ) R(t) Guardar(nom, t) void R(Tipo t) if(tkact es id) String nom = tkact.lex match( id ) R(t) Guardar(nom, t) else if(tkactual es $) else ERROR SINTACTICO 43

42 EDTs en Analizadores Sintácticos En los analizadores sintácticos descendentes basados en tabla lo que hacemos es tratar a las acciones como: Un símbolo mas a la hora de apilarlos cuando aplicamos una producción Una porción de código a ejecutar cuando esta en el tope de la pila 44

43 EDTs en Analizadores Sintácticos Los métodos ascendentes LR solo pueden trabajar con EDTs donde las acciones estén en lugares de la producción donde no hay ambigüedad de que se reducirá por esa producción Por lo tanto, estos métodos trabajan adecuadamente con gramáticas que no tienen atributos heredados La intuición es que las acciones semánticas asociadas a una regla se ejecutan cuando se realiza una reducción 45

PROCESADORES DE LENGUAJE EXAMEN FINAL 8-JUNIO-07

PROCESADORES DE LENGUAJE EXAMEN FINAL 8-JUNIO-07 PROCESADORES DE LENGUAJE EXAMEN FINAL 8-JUNIO-07 1. En qué método de análisis sintáctico puede suceder que en la construcción del árbol de derivación de las posibles expansiones de un símbolo no terminal

Más detalles

ANÁLISIS SEMÁNTICO. Especificación formal: Semántica Operacional, semántica denotacional, semántica Axiomática, Gramáticas con Atributos.

ANÁLISIS SEMÁNTICO. Especificación formal: Semántica Operacional, semántica denotacional, semántica Axiomática, Gramáticas con Atributos. ANÁLISIS SEMÁNTICO El análisis semántico dota de un significado coherente a lo que hemos hecho en el análisis sintáctico. El chequeo semántico se encarga de que los tipos que intervienen en las expresiones

Más detalles

PROGRAMA DE LABORATORIO SECCIÓN: ÁREA A LA QUE PERTENECE: POS-REQUISITO: AUXILIAR:

PROGRAMA DE LABORATORIO SECCIÓN: ÁREA A LA QUE PERTENECE: POS-REQUISITO: AUXILIAR: UNIVERSIDAD DE SAN CARLOS DE GUATEMALA FACULTAD DE INGENIERÍA ESCUELA DE CIENCIAS PROGRAMA DE LABORATORIO CÓDIGO: 777 CRÉDITOS: 4 NOMBRE CURSO: ESCUELA: PRE-REQUISITO: Organización de Lenguajes y Compiladores

Más detalles

Algoritmos y programas. Algoritmos y Estructuras de Datos I

Algoritmos y programas. Algoritmos y Estructuras de Datos I Algoritmos y programas Algoritmos y Estructuras de Datos I Primer cuatrimestre de 2012 Departamento de Computación - FCEyN - UBA Programación funcional - clase 1 Funciones Simples - Recursión - Tipos de

Más detalles

Unidad II: Análisis semántico

Unidad 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 detalles

Capítulo 5: Traducción Dirigida por Sintaxis

Capítulo 5: Traducción Dirigida por Sintaxis Capítulo 5: Traducción Dirigida por Sintaxis Javier Carvajal Universidad de Costa Rica, Escuela de Ciencias de la Computación e Informática, San José, Costa Rica, francisco.carvajal@ecci.ucr.ac.cr and

Más detalles

Las Etapas de la Compilación

Las Etapas de la Compilación Las de la Compilación El en la Compilación Universidad de Cantabria Outline 1 El Problema 2 Las y el Qué pasos son necesarios dar para hallar la estructura de un programa? En qué pasos podemos dividirlos

Más detalles

Unidad I: Análisis semántico

Unidad I: Análisis semántico Unidad I: Análisis semántico 1.1 Arboles de expresiones Los árboles de expresiones representan el código de nivel del lenguaje en forma de datos. Los datos se almacenan en una estructura con forma de árbol.

Más detalles

Métodos para escribir algoritmos: Diagramas de Flujo y pseudocódigo

Métodos para escribir algoritmos: Diagramas de Flujo y pseudocódigo TEMA 2: CONCEPTOS BÁSICOS DE ALGORÍTMICA 1. Definición de Algoritmo 1.1. Propiedades de los Algoritmos 2. Qué es un Programa? 2.1. Cómo se construye un Programa 3. Definición y uso de herramientas para

Más detalles

Construcción de tablas de análisis sintáctico LL(1)

Construcción de tablas de análisis sintáctico LL(1) Construcción de tablas de análisis sintáctico LL(1) Universidad de Costa Rica Escuela de Ciencias de la Computación e Informática Diego Centeno Gerardo Cortés Juan Diego Alfaro Resumen. A la medida en

Más detalles

LEX. Las definiciones y subrutinas son opcionales. El segundo %% es opcional pero el primer %% indica el comienzo de las reglas.

LEX. Las definiciones y subrutinas son opcionales. El segundo %% es opcional pero el primer %% indica el comienzo de las reglas. LEX Estructura de un programa en LEX { definiciones { reglas { subrutinas del usuario Las definiciones y subrutinas son opcionales. El segundo es opcional pero el primer indica el comienzo de las reglas.

Más detalles

Tema 1.3. Un lenguaje mínimo y su procesador: Restricciones contextuales

Tema 1.3. Un lenguaje mínimo y su procesador: Restricciones contextuales Tema 1.3. Un lenguaje mínimo y su procesador: Restricciones contextuales Profesor Federico Peinado Elaboración del material José Luis Sia Federico Peinado Facultad de Informática Universidad Complutense

Más detalles

Métodos que devuelven valor Dado el siguiente triángulo rectángulo:

Métodos que devuelven valor Dado el siguiente triángulo rectángulo: Métodos que devuelven valor Dado el siguiente triángulo rectángulo: hipotenusa altura base Para dibujar este triángulo necesitamos los siguientes datos: base y altura La base y la altura, se utilizarán

Más detalles

Tipos algebraicos y abstractos. Algoritmos y Estructuras de Datos I. Tipos algebraicos

Tipos algebraicos y abstractos. Algoritmos y Estructuras de Datos I. Tipos algebraicos Algoritmos y Estructuras de Datos I 1 cuatrimestre de 009 Departamento de Computación - FCEyN - UBA Programación funcional - clase Tipos algebraicos Tipos algebraicos y abstractos ya vimos los tipos básicos

Más detalles

Guía práctica de estudio 05: Diagramas de flujo

Guía práctica de estudio 05: Diagramas de flujo Guía práctica de estudio 05: Diagramas de flujo Elaborado por: M.C. Edgar E. García Cano Ing. Jorge A. Solano Gálvez Revisado por: Ing. Laura Sandoval Montaño Guía práctica de estudio 05: Diagramas de

Más detalles

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

SISTEMAS INFORMÁTICOS PROGRAMACION I - Contenidos Analíticos Ing. Alejandro Guzmán M. TEMA 2. Diseño de Algoritmos TEMA 2 Diseño de Algoritmos 7 2. DISEÑO DE ALGORITMOS 2.1. Concepto de Algoritmo En matemáticas, ciencias de la computación y disciplinas relacionadas, un algoritmo (del griego y latín, dixit algorithmus

Más detalles

Tema 3. Análisis sintáctico descendente

Tema 3. Análisis sintáctico descendente Departamento de Tecnologías de la Información Tema 3 Análisis sintáctico Ciencias de la Computación e Inteligencia Artificial Índice 3.1 Características del análisis sintáctico 3.2 Gramáticas libres de

Más detalles

Compiladores: Parsing ascendente

Compiladores: Parsing ascendente Compiladores: Parsing ascendente Francisco J Ballesteros LSUB, URJC Page 1 of 64 Parsing ascendente Normalmente utilizaremos parsers descendentes para problemas pequeños cuando podemos escribir uno predictivo

Más detalles

Procesadores de lenguaje Tema 6 La tabla de símbolos

Procesadores de lenguaje Tema 6 La tabla de símbolos Procesadores de lenguaje Tema 6 La tabla de símbolos Departamento de Ciencias de la Computación Universidad de Alcalá Resumen La tabla de símbolos. Requerimientos de información. Diseño de la tabla de

Más detalles

JavaCC Parte I. 1 Compiladores / Guía VII / Ciclo Facultad: Ingeniería Escuela: Computación Asignatura: Compiladores.

JavaCC Parte I. 1 Compiladores / Guía VII / Ciclo Facultad: Ingeniería Escuela: Computación Asignatura: Compiladores. 1 Compiladores / Guía VII / Ciclo 02-2016 Centro de Investigación y Transferencia de Tecnología JavaCC Parte I Contenido Facultad: Ingeniería Escuela: Computación Asignatura: Compiladores En la presente

Más detalles

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

Algoritmos. Medios de expresión de un algoritmo. Diagrama de flujo Algoritmos En general, no hay una definición formal de algoritmo. Muchos autores los señalan como listas de instrucciones para resolver un problema abstracto, es decir, que un número finito de pasos convierten

Más detalles

GUIA 2: Repaso sobre uso de C#. Funciones, métodos y arreglos.

GUIA 2: Repaso sobre uso de C#. Funciones, métodos y arreglos. 1 Programación II, Guía 2 1 Facultad: Ingeniería Escuela: Computación Asignatura: Programación II GUIA 2: Repaso sobre uso de C#. Funciones, métodos y arreglos. Objetivos Utilizar la sintaxis de las funciones

Más detalles

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

TEORÍA DE AUTÓMATAS Y LENGUAJES FORMALES TRABAJO DE PRÁCTICAS. Convocatoria de junio de 2013 TEORÍA DE AUTÓMATAS Y LENGUAJES FORMALES Ingeniería Técnica en Informática de Sistemas Segundo curso Departamento de Informática y Análisis Numérico Escuela Politécnica Superior Universidad de Córdoba

Más detalles

INGENIERÍA DEL SOFTWARE I Práctica 5 Modelado de Diseño

INGENIERÍA DEL SOFTWARE I Práctica 5 Modelado de Diseño INGENIERÍA DEL SOFTWARE I Práctica 5 Modelado de Diseño Univ. Cantabria Fac. de Ciencias Patricia López Introducción al Diseño Modelamos la estructura software del sistema (incluida la arquitectura) para

Más detalles

Universidad de Costa Rica. Escuela de Ciencias de la Computación e Informática CI-2700 TÓPICOS ESPECIALES - COMPILADORES.

Universidad de Costa Rica. Escuela de Ciencias de la Computación e Informática CI-2700 TÓPICOS ESPECIALES - COMPILADORES. Universidad de Costa Rica Escuela de Ciencias de la Computación e Informática CI-2700 TÓPICOS ESPECIALES - COMPILADORES II Ciclo 2014 Profesor: Manuel E. Bermúdez EXAMEN FINAL (NO PARA COMER EN CLASE,

Más detalles

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: 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 detalles

Compiladores: Análisis Sintáctico. Pontificia Universidad Javeriana Cali Ingenieria de Sistemas y Computación Prof. Gloria Inés Alvarez V.

Compiladores: Análisis Sintáctico. Pontificia Universidad Javeriana Cali Ingenieria de Sistemas y Computación Prof. Gloria Inés Alvarez V. Compiladores: Análisis Sintáctico Pontificia Universidad Javeriana Cali Ingenieria de Sistemas y Computación Prof. Gloria Inés Alvarez V. Sintaxis Define la estructura del lenguaje Ejemplo: Jerarquía en

Más detalles

Tema: Autómata de Pila

Tema: Autómata de Pila Facultad: Ingeniería Escuela: Computación Asignatura: Compiladores 1 Tema: Autómata de Pila Contenido La presente guía aborda los autómatas de pila, y se enfoca en la aplicación que se le puede dar a estas

Más detalles

Unidad V Análisis Semántico. M.C. Juan Carlos Olivares Rojas

Unidad V Análisis Semántico. M.C. Juan Carlos Olivares Rojas Unidad V Análisis Semántico M.C. Juan Carlos Olivares Rojas Agenda 5.1 Analizador semántico 5.2 Verificación de tipos en expresiones. 5.3 Conversión de tipos. 5.4 Acciones agregadas en un analizador sintáctico

Más detalles

GRAMATICAS LIBRES DEL CONTEXTO

GRAMATICAS LIBRES DEL CONTEXTO GRMTICS LIBRES DEL CONTEXTO Estas gramáticas, conocidas también como gramáticas de tipo 2 o gramáticas independientes del contexto, son las que generan los lenguajes libres o independientes del contexto.

Más detalles

Diseño Estructurado de Algoritmos

Diseño Estructurado de Algoritmos Diseño Estructurado de Algoritmos 1 Sesión No. 11 Nombre: Estructuras algorítmicas. Tercera parte. Objetivo de la sesión: Al concluir la sesión el estudiante aplicará las estructuras algorítmicas repetitivas

Más detalles

Diagramas de secuencia

Diagramas de secuencia Facultad de Ingeniería Departamento de Ingeniería de Sistemas y Computación Diagramas de secuencia Interacciones básicas 1 Para qué sirven los diagramas de secuencia? 2 Para qué sirven los diagramas de

Más detalles

Toda copia en PAPEL es un "Documento No Controlado" a excepción del original.

Toda copia en PAPEL es un Documento No Controlado a excepción del original. S U P E RIO R DE MISANTLA Apartado: 7.1 Copia No. Código:PD-SCD-1016 Versión No.: 02 Hoja : 2 de 12 4.- COMPETENCIAS A DESARROLLAR 4.1 Competencias Específicas: Diseña mediante el uso de reglas semánticas

Más detalles

Unidad I Introducción a la programación de Sistemas. M.C. Juan Carlos Olivares Rojas

Unidad I Introducción a la programación de Sistemas. M.C. Juan Carlos Olivares Rojas Unidad I Introducción a la programación de Sistemas M.C. Juan Carlos Olivares Rojas Agenda 1.1 Qué es y que estudia la programación de sistemas? 1.2 Herramientas desarrolladas con la teoría de programación

Más detalles

Elementos de un programa en C

Elementos 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 detalles

Procesadores de Lenguaje

Procesadores de Lenguaje Procesadores de Lenguaje Analizadores sintácticos descendentes: LL(1) Cristina Tîrnăucă Dept. Matesco, Universidad de Cantabria Fac. Ciencias Ing. Informática Primavera de 2013 Analizadores sintácticos

Más detalles

Tema II: Metodología para la construcción de programas

Tema II: Metodología para la construcción de programas Tema II: Metodología para la construcción de programas Semestre: A-2012 Profesora: Nelly García Mora Agenda 1. Definición 2. Análisis E P S 3. Construcción de Algoritmos 4. Diagramas de Flujo 5. Codificación

Más detalles

PHP: Lenguaje de programación

PHP: Lenguaje de programación Francisco J. Martín Mateos Carmen Graciani Diaz Dpto. Ciencias de la Computación e Inteligencia Artificial Universidad de Sevilla Tipos de datos Enteros Con base decimal: 45, -43 Con base octal: 043, -054

Más detalles

Unidad 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 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 detalles

Sistema electrónico digital (binario) que procesa datos siguiendo unas instrucciones almacenadas en su memoria

Sistema electrónico digital (binario) que procesa datos siguiendo unas instrucciones almacenadas en su memoria 1.2. Jerarquía de niveles de un computador Qué es un computador? Sistema electrónico digital (binario) que procesa datos siguiendo unas instrucciones almacenadas en su memoria Es un sistema tan complejo

Más detalles

Desde los programas más simples escritos en un lenguaje de programación suelen realizar tres tareas en forma secuencial.

Desde los programas más simples escritos en un lenguaje de programación suelen realizar tres tareas en forma secuencial. Tipos de Datos Desde los programas más simples escritos en un lenguaje de programación suelen realizar tres tareas en forma secuencial. Entrada de datos Procesamientos de datos Salida de resultados Los

Más detalles

Conversión entre Tipos

Conversión entre Tipos Conversión entre Tipos La conversión entre tipos permite comparar y copiar valores entre diferentes tipos. En esta lección describiremos como convertir un tipo dado en otro. Conversión en VB y Existen

Más detalles

CRITERIOS DE SELECCIÓN DE MODELOS

CRITERIOS DE SELECCIÓN DE MODELOS Inteligencia artificial y reconocimiento de patrones CRITERIOS DE SELECCIÓN DE MODELOS 1 Criterios para elegir un modelo Dos decisiones fundamentales: El tipo de modelo (árboles de decisión, redes neuronales,

Más detalles

Programación. Test Autoevaluación Tema 3

Programació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 detalles

Universidad de Managua

Universidad de Managua Universidad de Managua Introducción a la Programación Tema 7 Introducción a la programación en lenguaje C# Objetivos - Describir la estructura básica de un programa en Lenguaje C# - Explicar las estructuras

Más detalles

Taller de Informática I Dpto. Computación F.C.E. y N. - UBA 2010

Taller de Informática I Dpto. Computación F.C.E. y N. - UBA 2010 FUNCIONES Definición: Una función es un subprograma que recibe cero o más valores de entrada y retorna un único objeto de salida. Es una tarea independiente que puede o no depender de variables externas.

Más detalles

Lenguaje de programación. COMPILADORES Unidad I: Introducción al proceso de compilación

Lenguaje de programación. COMPILADORES Unidad I: Introducción al proceso de compilación COMPILADORES Unidad I: Introducción al proceso de compilación Flor Prof. Flor Narciso GIDyC-Departamento de Computación LABSIULA-Escuela de Ingeniería de Sistemas Facultad de Ingeniería Universidad de

Más detalles

Tema 2 Introducción a la Programación en C.

Tema 2 Introducción a la Programación en C. Tema 2 Introducción a la Programación en C. Contenidos 1. Conceptos Básicos 1.1 Definiciones. 1.2 El Proceso de Desarrollo de Software. 2. Lenguajes de Programación. 2.1 Definición y Tipos de Lenguajes

Más detalles

Analista Universitario en Sistemas. Taller de Programación II. Instituto Politécnico Superior. Trabajo Final

Analista Universitario en Sistemas. Taller de Programación II. Instituto Politécnico Superior. Trabajo Final Trabajo Final 1 Objetivo Comprender (en gran parte) un programa desarrollado en: C++ (Core ) Generador de código / Ejecución de comandos Flex (Lex) Lexer Genera un Analizador Léxico en C http://en.wikipedia.org/wiki/lex_(software)

Más detalles

Generador de analizadores léxicos FLEX

Generador de analizadores léxicos FLEX Generador de analizadores léxicos FLEX Procesadores de Lenguajes 4 o Informática PL curso 2008-2009 (CCIA) CCIA Octubre 2008 PL 0809 (CCIA) Introducción a FLEX Octubre-2008 1 / 12 Uso de FLEX FLEX: traduce

Más detalles

Objetivos 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. 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 detalles

OPTIMIZACIÓN DE CÓDIGO

OPTIMIZACIÓN DE CÓDIGO OPTIMIZACIÓN DE CÓDIGO INTRODUCCION La finalidad de la optimización de código es producir un código objeto lo más eficiente posible. En algunos casos también se realiza una optimización del código intermedio.

Más detalles

Estructuras de control

Estructuras de control Estructuras de control Introducción Los algoritmos vistos hasta el momento han consistido en simples secuencias de instrucciones; sin embargo, existen tareas más complejas que no pueden ser resueltas empleando

Más detalles

1. Cuántas sentencias hay en la secuencia principal del siguiente programa?

1. Cuántas sentencias hay en la secuencia principal del siguiente programa? 1. Cuántas sentencias hay en la secuencia principal del siguiente programa? public class PruebaSwitch { System.out.print ("Opcion: "); case 3: System.out.println ("miércoles "); A. 1. B. 4. C. Más de 10.

Más detalles

Tabla de Símbolos. Programación II Margarita Álvarez

Tabla de Símbolos. Programación II Margarita Álvarez Programación II Margarita Álvarez La tabla de símbolos es una estructura global utilizada por distintos módulos del compilador. Es el principal atributo heredado. Almacena todos los nombres declarados

Más detalles

Funciones como Subprogramas en C++

Funciones como Subprogramas en C++ FUNCIONES Cuando es necesario escribir programas complicados para resolver problemas complejos, una práctica común entre los programadores es descomponer el algoritmo (el diagrama de flujo) en varias partes.

Más detalles

Unidad 4. Autómatas de Pila

Unidad 4. Autómatas de Pila Unidad 4. Autómatas de Pila Una de las limitaciones de los AF es que no pueden reconocer el lenguaje {0 n 1 n } debido a que no se puede registrar para todo n con un número finito de estados. Otro lenguaje

Más detalles

Lenguajes de Programación. Juan Zamora O. Semestre II Nombres, Ambitos y Ligados

Lenguajes de Programación. Juan Zamora O. Semestre II Nombres, Ambitos y Ligados Lenguajes de Programación Nombres, Ambitos y Ligados Juan Zamora O. Semestre II - 2013 Nombres, Ambitos y Ligados Aspectos semánticos fundamentales de las variables. Conceptos a revisar: Abstracción Nombres

Más detalles

ESCUELA POLITÉCNICA SUPERIOR PRÁCTICA 2: EXPRESIONES, PRINTF Y SCANF

ESCUELA POLITÉCNICA SUPERIOR PRÁCTICA 2: EXPRESIONES, PRINTF Y SCANF ESCUELA POLITÉCNICA SUPERIOR GRADO EN DISEÑO IND. INFORMÁTICA CURSO 2012-13 PRÁCTICA 2: EXPRESIONES, PRINTF Y SCANF HASTA AHORA... En prácticas anteriores se ha aprendido: La estructura principal de un

Más detalles

Enteros. Son los números que no contienen componentes fraccionarios y, por tanto, no contienen punto decimal.

Enteros. 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 detalles

FUNCIONES PHP: DECLARACIÓN Y LLAMADAS. PARÁMETROS, RETURN. EJERCICIOS EJEMPLOS RESUELTOS. (CU00827B)

FUNCIONES PHP: DECLARACIÓN Y LLAMADAS. PARÁMETROS, RETURN. EJERCICIOS EJEMPLOS RESUELTOS. (CU00827B) APRENDERAPROGRAMARCOM FUNCIONES PHP: DECLARACIÓN Y LLAMADAS PARÁMETROS, RETURN EJERCICIOS EJEMPLOS RESUELTOS (CU00827B) Sección: Cursos Categoría: Tutorial básico del programador web: PHP desde cero Fecha

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

$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 detalles

Herramientas de Programación. M.C. Juan Carlos Olivares Rojas

Herramientas de Programación. M.C. Juan Carlos Olivares Rojas Herramientas de Programación M.C. Juan Carlos Olivares Rojas Febrero 2011 Temario Simbología Reglas para la construcción de Diagramas Pseudocódigo Temario Tipos de Datos y Expresiones Estructuras lógicas

Más detalles

MODELOS DE COMPUTACION I Preguntas Tipo Test. 1. El lema de bombeo puede usarse para demostrar que un lenguaje determinado es regular.

MODELOS DE COMPUTACION I Preguntas Tipo Test. 1. El lema de bombeo puede usarse para demostrar que un lenguaje determinado es regular. MODELOS DE COMPUTACION I Preguntas Tipo Test Indicar si son verdaderas o falsas las siguientes afirmaciones: 1. El lema de bombeo puede usarse para demostrar que un lenguaje determinado es regular. 2.

Más detalles

Tema 13: Apuntadores en C

Tema 13: Apuntadores en C Tema 13: Apuntadores 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 Contenido Introducción

Más detalles

Las plantillas permiten definir funciones genéricas.

Las plantillas permiten definir funciones genéricas. Introducción (Genericidad). Plantillas de funciones o funciones genéricas. Sintaxis de plantillas. Ejemplos de declaraciones. A tener en cuenta Un ejemplo de plantilla de funciones: Máximo de un vector.

Más detalles

Programación en C. Algoritmo y Estructura de Datos. Ing. M. Laura López. Programación en C

Programación en C. Algoritmo y Estructura de Datos. Ing. M. Laura López. Programación en C Algoritmo y Estructura de Datos Ing. M. Laura López 1 Estructura de un programa en C 2 Estructura de un programa en C #include Archivos de cabecera # define Definición de constantes Declaraciones Globales

Más detalles

Diagramas de secuencia

Diagramas de secuencia Facultad de Ingeniería Departamento de Ingeniería de Sistemas y Computación Diagramas de secuencia Fragmentos Combinados: caminos alternativos Departamento de Ingeniería de Sistemas y Computación - Universidad

Más detalles

Programación MODULAR: Subalgoritmos - funciones y procedimientos

Programación MODULAR: Subalgoritmos - funciones y procedimientos Programación MODULAR: Subalgoritmos - funciones y procedimientos Uno de los métodos fundamentales para resolver un problema es dividirlo en problemas más pequeños, llamados subproblemas. Estos problemas

Más detalles

Ejercicios de Lógica Proposicional *

Ejercicios de Lógica Proposicional * Ejercicios de Lógica Proposicional * FernandoRVelazquezQ@gmail.com Notación. El lenguaje proposicional que hemos definido, aquel que utiliza los cinco conectivos,,, y, se denota como L {,,,, }. Los términos

Más detalles

Tema: Clases y Objetos en C#. Parte II.

Tema: Clases y Objetos en C#. Parte II. Programación II. Guía No. 5 1 Facultad: Ingeniería Escuela: Computación Asignatura: Programación II Tema: Clases y Objetos en C#. Parte II. Objetivos Implementar clases, objetos, propiedades, métodos y

Más detalles

Control de Flujo. Estructuras de Control! Experiencia Educativa de Algorítmica CONTROL DE FLUJO

Control de Flujo. Estructuras de Control! Experiencia Educativa de Algorítmica CONTROL DE FLUJO Control de Flujo Estructuras de Control Experiencia Educativa de Algorítmica 1 Introducción El estilo de como escribimos y analizamos un algoritmo se convierte en una de las principales características

Más detalles

Tema II: Metodología para la construcción de programas. Profesora: Nelly García Mora

Tema II: Metodología para la construcción de programas. Profesora: Nelly García Mora Tema II: Metodología para la construcción de programas Profesora: Nelly García Mora 1. Metodologías de Programación Metodología de programación: es un conjunto o sistema de métodos, principios y reglas,

Más detalles

Introducción a C++ y Code::Blocks

Introducción a C++ y Code::Blocks Introducción a C++ y Práctica Imperativo Clase 1 Luis Agustín Nieto Departamento de Computación, FCEyN,Universidad de Buenos Aires. 28 de mayo de 2010 Menu de esta Tarde Funcional Vs. Imperativo (Intérprete

Más detalles

Estatutos de Control C# Estatutos de Decisión (Selección)

Estatutos de Control C# Estatutos de Decisión (Selección) SELECCIÓN Estatutos de Control C# Estatutos de Decisión (Selección) IF Condición THEN Estatuto1 ELSE Estatuto2 Estatuto1 Statement Condición... Antes de ver esta presentación: Lee el Capítulo correspondiente

Más detalles

Java Avanzado Facultad de Ingeniería. Escuela de computación.

Java Avanzado Facultad de Ingeniería. Escuela de computación. 2 Java Avanzado Facultad de Ingeniería. Escuela de computación. Java Avanzado. Guía 5 3 Introducción Este manual ha sido elaborado para orientar al estudiante de Java Avanzado en el desarrollo de sus prácticas

Más detalles

Instituto Tecnológico de Celaya

Instituto Tecnológico de Celaya CADENAS DE CARACTERES Hasta ahora se han manejado variables de tipo caracter cuyo valor es un sólo caracter. En algunos casos, sin embargo, es necesario usar variables cuyos valores sean un conjunto (cadena)

Más detalles

5. Sentencias selectivas o condicionales

5. Sentencias selectivas o condicionales 60 A. García-Beltrán y J.M. Arranz 5. Sentencias selectivas o condicionales Objetivos: a) Describir el funcionamiento de las sentencias selectivas o condicionales (if-else y switch) b) Interpretar el resultado

Más detalles

Requerimientos de Software

Requerimientos de Software Requerimientos de Software Ingeniería de Requerimientos Se define como el proceso de establecer los servicios que el consumidor requiere de un sistema y las restricciones sobre las cuales de funcionar

Más detalles

El análisis descendente LL(1) 6, 7 y 13 de abril de 2011

El análisis descendente LL(1) 6, 7 y 13 de abril de 2011 6, 7 y 13 de abril de 2011 Analizadores sintácticos (repaso) Los analizadores descendentes: Corresponden a un autómata de pila determinista. Construyen un árbol sintáctico de la raíz hacia las hojas (del

Más detalles

GENERACIÓN DE CÓDIGO

GENERACIÓN DE CÓDIGO GENERACIÓN DE CÓDIGO INTRODUCCION La generación de código es la fase más compleja de un compilador, puesto que no sólo depende de las características del lenguaje fuente sino también de contar con información

Más detalles

Procesadores de lenguaje Tema Análisis sintáctico (Parte I)

Procesadores de lenguaje Tema Análisis sintáctico (Parte I) Procesadores de lenguaje Tema 3 Análisis sintáctico (Parte I) Departamento de Ciencias de la Computación Universidad de Alcalá Resumen Introducción Conceptos básicos Tipos de analizadores Gramáticas independientes

Más detalles

Conceptos a tratar. Fundamentos de la Programación Orientada a Objetos Ampliación sobre clases y objetos

Conceptos a tratar. Fundamentos de la Programación Orientada a Objetos Ampliación sobre clases y objetos Fundamentos de la Programación Orientada a Objetos Ampliación sobre clases y objetos Programación Orientada a Objetos Facultad de Informática Dep. Ingeniería del Software e Inteligencia Artificial Universidad

Más detalles

Expresiones y sentencias

Expresiones y sentencias Expresiones y sentencias Expresión Construcción (combinación de tokens) que se evalúa para devolver un valor. Sentencia Representación de una acción o una secuencia de acciones. En Java, todas las sentencias

Más detalles

APUNTADORES. Un apuntador es un objeto que apunta a otro objeto. Es decir, una variable cuyo valor es la dirección de memoria de otra variable.

APUNTADORES. Un apuntador es un objeto que apunta a otro objeto. Es decir, una variable cuyo valor es la dirección de memoria de otra variable. APUNTADORES Un apuntador es un objeto que apunta a otro objeto. Es decir, una variable cuyo valor es la dirección de memoria de otra variable. No hay que confundir una dirección de memoria con el contenido

Más detalles

Procesadores de Lenguaje

Procesadores de Lenguaje Procesadores de Lenguaje Analizadores LALR Cris%na Tirnauca Domingo Gómez Pérez DPTO. DE MATEMÁTICAS, ESTADÍSTICA Y COMPUTACIÓN Este tema se publica bajo Licencia: CreaIve Commons BY NC SA 3.0 El Analizador

Más detalles

INTERFACE COMPARATOR. DIFERENCIAS ENTRE COMPARATOR Y COMPARABLE. CLASE COLLECTIONS. EJERCICIOS RESUELTOS. (CU00918C)

INTERFACE COMPARATOR. DIFERENCIAS ENTRE COMPARATOR Y COMPARABLE. CLASE COLLECTIONS. EJERCICIOS RESUELTOS. (CU00918C) APRENDERAPROGRAMAR.COM INTERFACE COMPARATOR. DIFERENCIAS ENTRE COMPARATOR Y COMPARABLE. CLASE COLLECTIONS. EJERCICIOS RESUELTOS. (CU00918C) Sección: Cursos Categoría: Lenguaje de programación Java nivel

Más detalles

2.5.1. Procesamiento de documentos XML.

2.5.1. Procesamiento de documentos XML. 2.5.1. Procesamiento de documentos XML. Un analizador o parser XML es una herramienta encargada de leer documentos XML [17], poder acceder a sus elementos y comprobar si el documento es sintácticamente

Más detalles

XQuery. Un lenguaje de consulta para XML.

XQuery. Un lenguaje de consulta para XML. XQuery. Un lenguaje de consulta para XML. Nieves Carralero Colmenar. IES Pedro Mercedes. Junta de Comunidades de Castilla-La Mancha. España. Resumen En este artículo se muestra una introducción práctica

Más detalles

EJERCICIOS del TEMA 3: Lenguajes independientes del contexto

EJERCICIOS del TEMA 3: Lenguajes independientes del contexto EJERCICIOS del TEMA 3: Lenguajes independientes del contexto Sobre GICs (gramáticas independientes del contexto) 1. Sea G una gramática con las siguientes producciones: S ASB ε A aab ε B bba ba c ) d )

Más detalles

Programación Estructurada

Programación Estructurada Programación Estructurada PROGRAMACIÓN ESTRUCTURADA 1 Sesión No. 2 Nombre: El lenguaje de programación C Contextualización Una constante en todos los lenguajes de programación (viejos y nuevos) es la implementación

Más detalles

Serialización de datos en C# en Binario, Soap y Xml

Serialización de datos en C# en Binario, Soap y Xml Serialización de datos en C# en Binario, Soap y Xml Quizás muchos desarrolladores hayan escuchado hablar del termino serializar la información y no saber de que se trata. Pues bien, resulta que la serialización

Más detalles

PROGRAMACION ORIENTADA A OBJETOS EN C++

PROGRAMACION ORIENTADA A OBJETOS EN C++ PROGRAMACION ORIENTADA A OBJETOS EN C++ 1- INTRODUCCIÓN El lenguaje C++ representa el resultado de los esfuerzos realizados para proporcionar las ventajas de la programación Orientada a Objetos a un lenguaje

Más detalles

GLOSARIO DE MICROSOFT VISUAL BASIC (HAZ CLIC EN LA OPCION DEL MENU Y ACCEDERAS RAPIDAMENTE)

GLOSARIO DE MICROSOFT VISUAL BASIC (HAZ CLIC EN LA OPCION DEL MENU Y ACCEDERAS RAPIDAMENTE) GLOSARIO DE MICROSOFT VISUAL BASIC (HAZ CLIC EN LA OPCION DEL MENU Y ACCEDERAS RAPIDAMENTE) Menú 1. Operadores Matemáticos 2. Operadores relacionales 3. Funciones de Visual Basic 4. Tipos de variables

Más detalles

LA ESTRUCTURA DE DATOS PILA EN JAVA. CLASE STACK DEL API JAVA. EJEMPLO Y EJERCICIOS RESUELTOS. (CU00923C)

LA ESTRUCTURA DE DATOS PILA EN JAVA. CLASE STACK DEL API JAVA. EJEMPLO Y EJERCICIOS RESUELTOS. (CU00923C) APRENDERAPROGRAMAR.COM LA ESTRUCTURA DE DATOS PILA EN JAVA. CLASE STACK DEL API JAVA. EJEMPLO Y EJERCICIOS RESUELTOS. (CU00923C) Sección: Cursos Categoría: Lenguaje de programación Java nivel avanzado

Más detalles

CURSO: PRESENTE Y DESAFIOS DE LA GESTION PARLAMENTARIA

CURSO: PRESENTE Y DESAFIOS DE LA GESTION PARLAMENTARIA CURSO: PRESENTE Y DESAFIOS DE LA GESTION PARLAMENTARIA Claves para el diseño de estrategias de comunicación en organizaciones de la sociedad civil Expositor: Lic. Pablo Rodríguez Masena (UBA-Flacso) Noviembre,

Más detalles

Java 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 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 detalles

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

Todo 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 detalles

Tema: Entorno a C# y Estructuras Secuenciales.

Tema: Entorno a C# y Estructuras Secuenciales. Tema: Entorno a C# y Estructuras Secuenciales. Programación I, Guía 3 1 Facultad: Ingeniería Escuela: Ingeniería en Computación Asignatura: Programación I Objetivos Utilizar el entorno de programación

Más detalles

Universidad de Cantabria. Facultad de Ciencias Ingeniería en Informática. Ingeniería del Software II

Universidad de Cantabria. Facultad de Ciencias Ingeniería en Informática. Ingeniería del Software II Universidad de Cantabria. Facultad de Ciencias Ingeniería en Informática. Ingeniería del Software II Ejercicios del Tema 1: Construcción y Pruebas del Software Ejercicio 1 Se desean realizar pruebas de

Más detalles