Análisis semántico I Traducción dirigida por la sintaxis

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

Download "Análisis semántico I Traducción dirigida por la sintaxis"

Transcripción

1 Procesadores de Lenguajes Ingeniería Técnica superior de Ingeniería Informática Departamento de Lenguajes y Sistemas informáticos Análisis semántico I Traducción dirigida por la sintaxis Javier Vélez Reyes jvelez@lsi.uned.es Departamento de Lenguajes Y Sistemas Informáticos UNED

2 Objetivos Generales Objetivos Generales Aprender qué es la semántica de un lenguaje de programación Entender cómo funciona la semántica operacional y distinguirla de otros tipos de semántica Aprender cómo se inyecta información semántica en una gramática Aprender el principio de traducción dirigido por la sintaxis Conocer las gramáticas con atributos y las reglas y acciones semánticas Aprender a distinguir los diferentes tipos de atributos que existen Aprender a construir y analizar grafos de dependencia Aprender a identificar compiladores de simple y doble pasada Conocer los distintos tipos de formalismos de traducción que existen Aprender a especificar definiciones dirigidas por la sintaxis Aprender a especificar esquemas de traducción dirigidos por la sintaxis

3 Índice Índice Introducción Formalismos para la especificación de traducciones Reglas semánticas Atributos Grafos de dependencia Diseño de definiciones dirigidas por la sintaxis Gramáticas con atributos por la izquierda Esquemas de traducción dirigidas por la sintaxis Acciones semánticas Atributos Diseño de esquemas de traducción Traducción dirigida por la sintaxis en la práctica Bibliografía

4 Introducción Qué es la semántica de un lenguaje? Tema 2 Tema 3-5 Tema 6-7 Tema 8-9 Tema Etapa de análisis Etapa de síntesis While ( a > b ) do a := a + 1; Analizador léxico Analizador sintáctico e l i h w <WHILE, PR> S WHILE E DO S E > E Analizador semántico Código intermedio Código final S LD a t WHILE E DO S E > E LD b t2 GRT t3 t1 t2 BRZ t3 L Cómo es el lenguaje? Las dos primeras fases conceptuales de un compilador atienden a responder la pregunta de cómo es un lenguaje en términos de su estructura sintáctica y sus elementos léxicos constituyentes Qué es el lenguaje? Las tres fases subsiguientes tratan de dar un significado único, preciso y computable a cada construcción del lenguaje de manera que el programador sepa definir programas semánticamente útiles y coherentes

5 Introducción Qué es la semántica de un lenguaje? El análisis sintáctico de un código fuente comprueba que la secuencia de tokens llegada desde el analizador léxico se corresponde con la esperada de acuerdo a las prescripciones gramaticales y se obtiene como resultado un árbol de análisis sintáctico. Hemos obtenido por tanto una secuencia correcta de tokens pero nada sabemos acerca de qué significado intencional subyace a la misma PROGRAM BubbleSort; CONST MAX = 100; TYPE TVector = ARRAY [1..MAX] OF INTEGER; VAR v: TVector; PROCEDURE ReadVector (VAR v : TVector);... PROCEDURE Sort (VAR v : TVector, size : INTEGER); VAR i, j, tmp : INTEGER; BEGIN FOR i := size - 1 DOWNTO 1 DO FOR j := 1 TO i DO IF (v[j] > v[j + 1]) THEN BEGIN tmp := v[j]; v[j] := v[j + 1]; v[j + 1] := tmp; END; END; BEGIN ReadVector (v); sort (v, MAX); END. Sabemos comprobar que este código fuente corresponde a un programa en Pascal de acuerdo a la gramática del lenguaje. Pero, que significan la declaración de constantes, tipos, variables, funciones y procedimientos, las sentencias, expresiones, etc. que en él aparecen?

6 Introducción Errores semánticos de un programa: Conversiones de tipos no permitidas int x; x = 4.32; Error: Ej1.java [6:1] possible loss of precision Variables usadas y no definidas Operandos de tipos no compatibles if (x 5) x = 0; Error: Ej2.java [7:1] operator cannot be applied to int,int Procesadores de lenguaje Tema 4: Análisis semántico Salvador Sánchez, Daniel Rodríguez

7 Introducción Qué es la semántica de un lenguaje? Es necesario definir computacionalmente la semántica de un lenguaje para que el compilador sepa interpretar cada posible código fuente del mismo. La forma más sencilla de hacer esto es asociar a cada posible construcción gramatical ciertas reglas que permitan traducirla en términos computables. Esto sólo es posible si se cumple el principio de traducción dirigido por la sintaxis Traducción dirigida por la sintaxis El significado de una construcción de un lenguaje está directamente relacionado con su estructura sintáctica según se representa en su árbol de análisis Es decir, el significado de cada construcción gramatical, representada típicamente por un no terminal, solo debe depender de los elementos que aparecen en la parte derecha de sus reglas de producción DeclaraciónTipo ::= TYPE ID = ARRAY [N..N] OF Tipo; La lectura práctica que debe hacerse de este principio es que para establecer la semántica de un lenguaje es suficiente con hacerlo sobre cada una de sus reglas de producción de manera independiente. Esto a su vez se consigue estableciendo una traducción de los elementos de la parte derecha de la regla a una representación con un significado computable específico

8 Introducción Qué es la semántica de un lenguaje? Es necesario definir computacionalmente la semántica de un lenguaje para que el compilador sepa interpretar cada posible código fuente del mismo. La forma más sencilla de hacer esto es asociar a cada posible construcción gramatical ciertas reglas que permitan traducirla en términos computables. Esto sólo es posible si se cumple el principio de traducción dirigido por la sintaxis Traducción dirigida por la sintaxis El significado de una construcción de un lenguaje está directamente relacionado con su estructura sintáctica según se representa en su árbol de análisis Las traducciones con significado computacional especifico a las que antes hacíamos referencia se pueden clasificar en 2 grandes grupos dependiendo del momento en que se aplican dentro del ciclo de compilación Tiempo de compilación (semántica estática) Tipos de acciones de traducción semántica Las traducciones en tiempo de compilación son acciones que se aplican sobre los artefactos del compilador y que tienen efecto durante el proceso de compilación Tiempo de ejecución (semántica dinámica) Las traducciones en tiempo de ejecución son acciones dirigidas a generar código ejecutable en tiempo de compilación para que se apliquen durante la ejecución del programa compilado Tema 7 Tema 8, 9

9 Introducción Qué es la semántica de un lenguaje? Es necesario definir computacionalmente la semántica de un lenguaje para que el compilador sepa interpretar cada posible código fuente del mismo. La forma más sencilla de hacer esto es asociar a cada posible construcción gramatical ciertas reglas que permitan traducirla en términos computables. Esto sólo es posible si se cumple el principio de traducción dirigido por la sintaxis Traducción dirigida por la sintaxis Construcción sintactica Traducción semántica Tipo Ejemplo Tiempo de compilación Tiempo de ejecución Declaración de constantes Declaración de tipos Declaración de variables Declaración de procedimientos CONST MAX = 100; Registrar MAX como constante entera de valor 100 TYPE TVector = ARRAY [1..MAX] OF INTEGER; VAR v : TVector; PROCEDURE Sort (VAR v : TVector); Registrar TVector como tipo ARRAY de tamaño 100 y base INTEGER Comprobar que TVector existe como un tipo y registrar v como una variable de ese tipo Registrar Sort como un procedimiento del ámbito en curso indicando la lista de tipos de los parámetros. Crear un nuevo ámbito y registrar en él v como variable de tipo TVector

10 Introducción Qué es la semántica de un lenguaje? Es necesario definir computacionalmente la semántica de un lenguaje para que el compilador sepa interpretar cada posible código fuente del mismo. La forma más sencilla de hacer esto es asociar a cada posible construcción gramatical ciertas reglas que permitan traducirla en términos computables. Esto sólo es posible si se cumple el principio de traducción dirigido por la sintaxis Traducción dirigida por la sintaxis Construcción sintactica Traducción semántica Tipo Ejemplo Tiempo de compilación Tiempo de ejecución Declaración de funciones Function Sort (VAR v : TVector):INTEGER; Adicionalmente al caso de procedimientos registrar que el tipo de retorno es INTEGER Expresiones v[j] > v[j + 1] Comprobar que v esta declarado previamente y que es de tipo TVector. Asegurarse de que las subexpresiones son correctas y de tipos compatibles con el operador mayor que Sentencia For FOR j := 1 TO i DO... Comprobar que la expresión 1 e i son de tipo INTEGER. Comprobar que j ha sido previamente declarada como una variable de tipo INTEGER Generar código para recuperar de memoria el valor de las sub-expresiones y aplicar la comparación entre ambos con los operadores del lenguaje de bajo nivel Generar código para inicializar j a 1. Generar código de salto para iterar la ejecución del bloque dentro de FOR i veces. Generar código para actualizar a cada paso el valor de j a j + 1

11 Introducción Qué es la semántica de un lenguaje? Es necesario definir computacionalmente la semántica de un lenguaje para que el compilador sepa interpretar cada posible código fuente del mismo. La forma más sencilla de hacer esto es asociar a cada posible construcción gramatical ciertas reglas que permitan traducirla en términos computables. Esto sólo es posible si se cumple el principio de traducción dirigido por la sintaxis Traducción dirigida por la sintaxis Construcción sintactica Traducción semántica Tipo Ejemplo Tiempo de compilación Tiempo de ejecución Sentencia If Sentencia de asignación Sentencia de llamada a procedimiento IF (v[j] > v[j + 1]) THEN BEGIN tmp := v[j]; v[j] := v[j + 1]; v[j + 1] := tmp; END; Comprobar que la expresión de comparación es semánticamente correcta (ver anterior) y comprobar que su evaluación devuelve un tipo lógico tmp := v[j]; Comprobar que tmp esta definido. Comprobar que el tipo de base de v es compatible con el de tmp sort (v, MAX); Comprobar que Sort esta declarado como procedimiento y que el número, orden y tipo de los parámetros actuales y formales coinciden Generar código para evaluar la expresión durante la ejecución. Generar código de salto que ejecute el bloque THEN si la evaluación da TRUE en ejecución Generar código para evaluar el valor de v[j] y copiar su valor en la posición de memoria apuntada por tmp Generar código para gestionar memoria que permita la activación del procedimiento Sort. Generar código de salto para su ejecución

12 Formalismos para la especificación de traducciones Especificación de traducciones dirigidas por la sintaxis Una vez entendido el proceso de traducción dirigida por la sintaxis que nos permite conferir semántica a las construcciones de un lenguaje, necesitamos mecanismos formales y tecnológicos para especificar dicha traducción de manera precisa Formalismos para la especificación de traducciones dirigidas por la sintaxis I. Las definiciones dirigidas por la sintaxis son un mecanismo de alto nivel que permite expresar la semántica asociada a las construcciones de un lenguaje en términos de una colección de reglas semánticas asociadas a cada regla de producción gramatical R 1. E ::= E + E, Rs 1 R 2. E ::= n, Rs 2 II. Esquemas de traducción dirigidos por la sintaxis Los esquemas de traducción dirigidos por la sintaxis permiten insertar, entre los símbolos gramaticales de la parte derecha de las reglas de producción, acciones semánticas cuyo propósito es realizar cierta traducción de carácter semántico. La ventaja de esta aproximación es que aquí se prescribe el momento exacto de la compilación en el que cada acción es ejecutada E n E + E {: :} {: :} n {: :}

13 Las definiciones dirigidas por la sintaxis (DDS) son un formalismo de alto nivel que permite asociar a cada regla de producción gramatical una regla semántica descrita, principalmente, en términos de una transformación de ciertos atributos asociados a cada no terminal de la gramática. Elementos de las definiciones dirigidas por la sintaxis Reglas de producción Reglas semánticas Subíndice de diferenciación declaracion ::= lvariables : tipo lvariables ::= lvariables 1, ID lvariables ::= ID tipo ::= INTEGER ; tipo ::= REAL ; lvariables.tipo := tipo.tipo lvariables 1.tipo := lvariables.tipo <<registrar ID como variable de tipo tipo>> <<registrar ID como variable de tipo tipo>> tipo.tipo := ENTERO tipo.tipo := REAL atributo I. Gramática con atributos II. Reglas semánticas A cada no terminal se asocian un conjunto de atributos para contener determinada información semántica que será utilizada en otras reglas de producción Las reglas semánticas se encargan de transferir la información de unos atributos a otros y aplican acciones de traducción de carácter semántico declaracion [] lvariables [tipo] tipo [tipo] lvariables 1.tipo := lvariables.tipo <<registrar ID como variable de tipo tipo>>

14 Las definiciones dirigidas por la sintaxis (DDS) son un formalismo de alto nivel que permite asociar a cada regla de producción gramatical una regla semántica descrita, principalmente, en términos de una transformación de ciertos atributos asociados a cada no terminal de la gramática. Atributos Un atributo es un espacio de información con tipificación implícita que sirve para albergar una característica propia del proceso de traducción y que puede ser transferida a otras producciones gramaticales para que pueda ser utilizada desde allí por sus reglas semánticas tipos de atributos I. Atributos sintetizados Se dice que un atributo es sintetizado si su valor es calculado exclusivamente a partir de atributos de los símbolos gramaticales de la parte derecha de sus reglas de producción. El carácter sintetizado de un atributo se mantiene a lo largo de toda la gramática II. Atributos heredados Se dice que un atributo es heredados si su valor es calculado a partir de atributos de los símbolos gramaticales de las regla de producción en que aparece o de los antecedentes de las misma. El carácter heredado de un atributo se mantiene a lo largo de toda la gramática A.a := f (B.b, C.c, D.D) A B C D b c d B.b := f (A.a, C.c, D.D) A a a B C D b c d

15 Las definiciones dirigidas por la sintaxis (DDS) son un formalismo de alto nivel que permite asociar a cada regla de producción gramatical una regla semántica descrita, principalmente, en términos de una transformación de ciertos atributos asociados a cada no terminal de la gramática. Reglas semánticas Una regla semántica es una expresión formal asociada a una regla de producción que permite definir la semántica de la construcción gramatical asociada a la misma en términos de los símbolos de la regla de producción tipos de reglas semánticas I. Reglas de ecuaciones de atributos Las reglas de ecuaciones de atributos se utilizan para copiar, mover o transformar la información soportada por los atributos asociados a los símbolos de una regla hacia los atributos asociados a los símbolos no terminales de otra u otras reglas. Para concatenar valores de tipo cadena se usa el operador II. Reglas de acción semántica Las reglas de acción semántica son instrucciones o pseudoinsstrucciones que se utilizan para provocar algún efecto semántico sobre la traducción. Dado sus posibles efectos colaterales deben ser evitadas en la medida de lo posible. lvariables 1.tipo := lvariables.tipo No terminal asignación atributo Terminal o No terminal <<registrar ID como variable...>>

16 Gramáticas de atributos Ejemplo Regla gramatical L E n E E + T E T T T * F T F F (E) F digito Regla semántica print(e.val) E 0.val = E 1.val + T.val E.val = T.val T 0.val = T 1.val * F.val T.val = F.val F.val = E.val F.val = digito.valor_lexico Procesadores de lenguaje Tema 4: Análisis semántico Salvador Sánchez, Daniel Rodríguez

17 Las definiciones dirigidas por la sintaxis (DDS) son un formalismo de alto nivel que permite asociar a cada regla de producción gramatical una regla semántica descrita, principalmente, en términos de una transformación de ciertos atributos asociados a cada no terminal de la gramática. Grafos de dependencias Un grafo de dependencias refleja, sobre un árbol de análisis sintáctico las dependencias entre los atributos gramaticales establecidas en virtud de las reglas semánticas que les asignan valor Algoritmo de cálculo A.a := f (B.b, C.c, D.D) a A Para cada producción A ::= X 1 X 2... X n Crear un nodo por cada atributo X i.a j de cada símbolo Para cada regla semántica de la forma X i.a j = f (..., X k.a l,...) Para cada k y cada l Crear arco desde X k.a l hasta X i.a j B C D b c d a A Unir todos los grafos resultantes B.b := f (A.a, C.c, D.D) B C D b c d

18 Las definiciones dirigidas por la sintaxis (DDS) son un formalismo de alto nivel que permite asociar a cada regla de producción gramatical una regla semántica descrita, principalmente, en términos de una transformación de ciertos atributos asociados a cada no terminal de la gramática. Grafos de dependencias declaracion ::= lvariables : tipo lvariables.tipo := tipo.tipo a, b : INTEGER; lvariables ::= lvariables 1, ID lvariables ::= ID lvariables 1.tipo := lvariables.tipo <<registrar ID como variable de tipo tipo>> <<registrar ID como variable de tipo tipo>> lvariables.tipo tipo.tipo [Heredado] [sintetizado] tipo ::= INTEGER ; tipo ::= REAL ; tipo.tipo := ENTERO tipo.tipo := REAL declaración El grafo de dependencias pone de manifiesto que para registrar las variables a y b es necesario recuperar la información de tipo extraída de la regla tipo ::= INTEGER y moverla sobre el árbol de análisis sintáctico hasta las reglas con ID. Para ello se utiliza el atributo tipo en cada no terminal y las reglas semánticas adjuntas lvariables.tipo : ENTERO ENTERO lvariables.tipo, ID <<registrar ID con tipo>> ID <<registrar ID con tipo>> tipo.tipo ENTERO INTEGER

19 Las definiciones dirigidas por la sintaxis (DDS) son un formalismo de alto nivel que permite asociar a cada regla de producción gramatical una regla semántica descrita, principalmente, en términos de una transformación de ciertos atributos asociados a cada no terminal de la gramática. Diseño de definiciones dirigidas por la sintaxis El diseño de definiciones dirigidas por la sintaxis es un ejercicio complejo que requiere realizarse cuidadosa y sistemáticamente. A continuación proporcionamos un procedimiento orientativo que puede ayudar a alcanzar más fácilmente este objetivo I. Especificación gramatical Construya la gramática sobre la cual desea articular la definición dirigida por la sintaxis. Asegúrese de que esta gramática es correcta y no ambigua II. Selección de una frase representativa Seleccione una frase del lenguaje. Asegúrese de que es lo suficientemente compleja como para que implique visitar al menos una vez cada regla gramatical III. Construcción del árbol de análisis Construya el árbol de análisis sintáctico asociado a dicha frase. Asegúrese de que existe al menos una instancia de cada regla IV. Selección de atributos Defina los atributos semánticos que requerirá su definición en cada símbolo gramatical y caracterícelos como sintetizados o heredados. Esto último se puede postergar para el final V. Grafo de dependencias Dibuje el grafo de dependencias que debería producirse para asegurar que la información fluya adecuadamente. Considere siempre un procesamiento descendente VI. Especificación de la definición Escriba las reglas semánticas necesarias, con el nivel de abstracción oportuno, para garantizar que se satisface el grafo de dependencias. Incluya las reglas de acción pertinentes

20 Las definiciones dirigidas por la sintaxis (DDS) son un formalismo de alto nivel que permite asociar a cada regla de producción gramatical una regla semántica descrita, principalmente, en términos de una transformación de ciertos atributos asociados a cada no terminal de la gramática. Ejemplo Se pretende construir una calculadora que permita escribir expresiones aritméticas y calcular su valor asociado E ::= E + T E T T * 5 T ::= T * F T / F F F ::= ( E ) n E E + T F n F T T * n F n 2 E.value + 2 T.value 2 F.value 2 n.value E.value = T.value * 3 F.value 3 n.value T.value 5 F.value 5 n.value E.value T.value F.value n.value [Sintetizado] [Sintetizado] [Sintetizado] [Sintetizado] E ::= E + T E.value := E.value + T.value E ::= E T E.value := E.value - T.value E ::= T E.value := T.value T ::= T * F T.value := T.value * F.value T ::= T / F T.value := T.value / F.value T ::= F T.value := F.value F ::= ( E ) F.value := E.value F ::= n F.value := n.value

21 Las definiciones dirigidas por la sintaxis (DDS) son un formalismo de alto nivel que permite asociar a cada regla de producción gramatical una regla semántica descrita, principalmente, en términos de una transformación de ciertos atributos asociados a cada no terminal de la gramática. Ejercicios A continuación se muestra una gramática de operadores no ambigua. Especifique sobre ella una DDS para pasar expresiones aritméticas infijas a notación postfija E ::= E + T E T T T ::= T * F T / F F F ::= ( E ) n La siguiente gramática representa números binarios. Defina una DDS que traduzca cualquier binario colocando todos los 0 delante y todos los 1 detrás. Por ejemplo se traduce a B ::= D B D D ::= 0 1 La siguiente gramática corresponde a la declaración de variables es Pascal. Especifique sobre ella una DDS para traducir dichas declaraciones a sintaxis C declaracion ::= lvariables : tipo lvariables ::= lvariables 1, ID lvariables ::= ID tipo ::= INTEGER ; tipo ::= REAL ; La siguiente gramática se utiliza para representar números en octal. Constrúyase una DDS para obtener su traducción equivalente en base 10 N ::= D N D D ::=

22 examen junio 2ª semana 2012 tipo lvalue expresion1 ids tipo lvalue ids ids expresion2 = expresion3

23 Esquemas de traducción dirigidos por la sintaxis Esquemas de traducción dirigidos por la sintaxis Las definiciones dirigidas por la sintaxis son formalismos abstractos de traducción de alto nivel y por tanto adolecen de un mecanismo para indica el momento exacto en el que cada regla semántica debe ejecutarse. Una versión computacional que soluciona este problema son los esquemas de traducción dirigidos por la sintaxis Elementos de las traducciones dirigidas por la sintaxis Atributo Reglas de producción E ::= T {: E.trad := T.trad :} E {: E.trad := E.trad :} Subíndice de diferenciación E ::= + T {: E 1.trad := E.trad T.trad + :} E 1 {: E.trad := E 1.trad :} E ::= - T {: E 1.trad := E.trad T.trad - :} E 1 {: E.trad := E 1.trad :} E ::= ε {: E.trad := E.trad :} T ::= num {: T.trad := num.lexema :} Acción semántica I. Gramática con atributos II. Acciones semánticas Como en las definiciones dirigidas por la sintaxis, los esquemas de traducción también se construyen sobre gramáticas con atributos E [trad] E [trad] T [trad] num [lexema] Las acciones semánticas se insertan entre los símbolos gramaticales de la parte derecha de cada regla y, cuando se visitan durante la construcción del árbol de análisis sintáctico, realizan los traducciones semánticas pertinentes E ::= T {: E.trad := T.trad :} E {: E.trad := E.trad :}

24 Esquemas de traducción dirigidos por la sintaxis Esquemas de traducción dirigidos por la sintaxis Las definiciones dirigidas por la sintaxis son formalismos abstractos de traducción de alto nivel y por tanto adolecen de un mecanismo para indica el momento exacto en el que cada regla semántica debe ejecutarse. Una versión computacional que soluciona este problema son los esquemas de traducción dirigidos por la sintaxis Acción semántica Una acción semántica es un fragmento de código ejecutable, insertado en algún punto de la parte derecha de una regla de producción, encargado de realizar cierta lógica de traducción a partir de la información soportada por los atributos de los símbolos gramaticales de dicha regla E ::= T {: E.trad := T.trad :} E {: E.trad := E.trad :} Cada acción semántica se inserta en el lugar adecuado para que sea ejecutada en el momento preciso durante la construcción del árbol de análisis sintáctico El contenido de la acción se expresa, frecuentemente, en el lenguaje de programación anfitrión del compilador que se está construyendo Como en las DDS, las acciones semánticas frecuentemente realizan operaciones de manipulación de atributos pero también puede llevar acabo operaciones con potenciales efectos colaterales

25 Esquemas de traducción dirigidos por la sintaxis Esquemas de traducción dirigidos por la sintaxis Las definiciones dirigidas por la sintaxis son formalismos abstractos de traducción de alto nivel y por tanto adolecen de un mecanismo para indica el momento exacto en el que cada regla semántica debe ejecutarse. Una versión computacional que soluciona este problema son los esquemas de traducción dirigidos por la sintaxis Ejemplo E T E {: E.trad := 9 :} {: E.trad := :} num (9) {: T.trad := 9 :} - T E {: E 1.trad := :} {: E.trad := :} num (5) {: T.trad := 5 :} + T E {: E 1.trad := :} {: E.trad := :} num (2) {: T.trad := 2 :} ε {: E.trad := :}

26

27 1ª semana junio 2015

UNIVERSIDAD NACIONAL DE EDUCACIÓN A DISTANCIA Escuela Técnica Superior de Ingeniería Informática Procesadores de Lenguajes. Tema 5

UNIVERSIDAD NACIONAL DE EDUCACIÓN A DISTANCIA Escuela Técnica Superior de Ingeniería Informática Procesadores de Lenguajes. Tema 5 UNIVERIDAD NACIONA DE EDUCACIÓN A DIANCIA Escuela écnica uperior de Ingeniería Informática Procesadores de enguajes ema 5 raducción diriga por la sintaxis Javier Vélez Reyes jvelez@lsi.uned.es Objetivos

Más detalles

UNIDAD 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. 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

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

Introducción. Análisis Semántico. José M. Castaño. Teoría de Lenguajes 2011 Departamento de Computación FCEyN, UBA

Introducción. Análisis Semántico. José M. Castaño. Teoría de Lenguajes 2011 Departamento de Computación FCEyN, UBA Análisis Semántico José M. Castaño Teoría de Lenguajes 2011 Departamento de Computación FCEyN, UBA Compiladores Análisis Léxico Análisis Sintáctico Análisis Semántico Generación Código Intermedio Optimización

Más detalles

Diseño de Compiladores I. Estructura General de un Compilador

Diseño de Compiladores I. Estructura General de un Compilador Diseño de Compiladores I Estructura General de un Compilador PROGRAMA FUENTE COMPILADOR SALIDA Mensajes de Error 2 Un compilador es un programa que traduce un programa escrito en lenguaje fuente y produce

Más detalles

Tema 5: Traducción dirigida por la sintaxis

Tema 5: Traducción dirigida por la sintaxis Tema 5: Traducción dirigida por la sintaxis Procesamiento de Lenguajes Dept. de Lenguajes y Sistemas Informáticos Universidad de Alicante Procesamiento de Lenguajes Tema 5: Traducción dirigida por la sintaxis

Más detalles

GENERACIÓN DE CÓDIGO INTERMEDIO ÁRBOLES DE SINTAXIS ABSTRACTA (ASA)

GENERACIÓN DE CÓDIGO INTERMEDIO ÁRBOLES DE SINTAXIS ABSTRACTA (ASA) 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 detalles

16 Análisis sintáctico I

16 Análisis sintáctico I 2 Contenido Recordando la estructura de un compilador Recordando el análisis léxico l análisis sintáctico Comparación con el análisis léxico l Rol del Parser Lenguajes de programación Gramáticas structura

Más detalles

Tema 5. Análisis semántico

Tema 5. Análisis semántico Departamento de Tecnologías de la Información Tema 5 Análisis semántico Ciencias de la Computación e Inteligencia Artificial Índice 5.1 Características del análisis semántico 5.2 Gramáticas atribuidas

Más detalles

Generación de Código Intermedio

Generación de Código Intermedio Generación de Código Intermedio Programación II Margarita Álvarez Generación de código intermedio Con la generación de código intermedio se inicia la tarea de síntesis. Aunque un programa fuente se puede

Más detalles

Unidad 2. Introducción Lenguajes y Compiladores

Unidad 2. Introducción Lenguajes y Compiladores Unidad 2 Introducción Lenguajes y Compiladores Principal material bibliográfico utilizado Compiladores Principios, técnicas y herramientas. Aho y Ullman. Addison Wesley. www.jorgesanchez.net www.iqcelaya.itc.mx/~vicente/programacion/tradcomp.pdf

Más detalles

Compiladores: Sesión 15. Análisis semántico, traducción dirigida por sintaxis

Compiladores: Sesión 15. Análisis semántico, traducción dirigida por sintaxis Compiladores: Sesión 15. Análisis semántico, traducción dirigida por sintaxis Prof. Gloria Inés Alvarez V. Departamento de Ciencias e Ingeniería de la Computación Pontificia Universidad Javeriana Cali

Más detalles

UNIVERSIDAD NACIONAL DE EDUCACIÓN A DISTANCIA Escuela Técnica Superior de Ingeniería Informática Procesadores de Lenguajes. Tema 3.

UNIVERSIDAD NACIONAL DE EDUCACIÓN A DISTANCIA Escuela Técnica Superior de Ingeniería Informática Procesadores de Lenguajes. Tema 3. UNIVRSIDAD NACIONAL D DUCACIÓN A DISTANCIA scuela Técnica Superior de Ingeniería Informática Procesadores de Lenguajes Tema 3 Parte I Análisis Sintáctico Javier Vélez Reyes jvelez@lsi.uned.es Objetivos

Más detalles

Tema 1.2. Un lenguaje mínimo y su procesador: Gramáticas de atributos y tabla de símbolos

Tema 1.2. Un lenguaje mínimo y su procesador: Gramáticas de atributos y tabla de símbolos Tema 1.2. Un lenguaje mínimo y su procesador: Gramáticas de atributos y tabla de símbolos Profesor Federico Peinado Elaboración del material José Luis Sierra Federico Peinado Ingeniería en Informática

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

Compiladores: Sesión 16. Análisis semántico, traducción dirigida por sintaxis

Compiladores: Sesión 16. Análisis semántico, traducción dirigida por sintaxis Compiladores: Sesión 16. Análisis semántico, traducción dirigida por sintaxis Prof. Gloria Inés Alvarez V. Departamento de Ciencias e Ingeniería de la Computación Pontificia Universidad Javeriana Cali

Más detalles

Procesadores de lenguaje Tema 4 Análisis semántico

Procesadores de lenguaje Tema 4 Análisis semántico Procesadores de lenguaje Tema 4 Análisis semántico Departamento de Ciencias de la Computación Universidad de Alcalá Resumen Introducción Gramáticas de atributos. Gramáticas S-atribuidas. Gramáticas L-atribuidas.

Más detalles

UNIVERSIDAD NACIONAL DE EDUCACIÓN A DISTANCIA Escuela Técnica Superior de Ingeniería Informática Procesadores de Lenguajes. Tema 2.

UNIVERSIDAD NACIONAL DE EDUCACIÓN A DISTANCIA Escuela Técnica Superior de Ingeniería Informática Procesadores de Lenguajes. Tema 2. UNIVERSIDAD NACIONAL DE EDUCACIÓN A DISTANCIA Escuela Técnica Superior de Ingeniería Informática Procesadores de Lenguajes Tema 2 Análisis Léxico Javier Vélez Reyes jvelez@lsi.uned.es Objetivos del Tema

Más detalles

Controla el flujo de tokens reconocidos por parte del analizador léxico. 4.2 Introduccion a las gramaticas libres de contexto y arboles de derivacion

Controla el flujo de tokens reconocidos por parte del analizador léxico. 4.2 Introduccion a las gramaticas libres de contexto y arboles de derivacion UNIDAD IV Analisis Sintactico 4.1 Introduccion Sintaxis significa estructura del orden de las palabras en una frase. La tarea del analisis sintactico es revisar si los símbolos aparecen en el orden correcto

Más detalles

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

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

Procesadores de lenguaje Tema 5 Comprobación de tipos

Procesadores de lenguaje Tema 5 Comprobación de tipos Procesadores de lenguaje Tema 5 Comprobación de tipos Departamento de Ciencias de la Computación Universidad de Alcalá Resumen Sistemas de tipos. Expresiones de tipo. Equivalencia de tipos. Sobrecarga,

Más detalles

Procesadores de lenguaje Tema 1 Introducción a los compiladores

Procesadores de lenguaje Tema 1 Introducción a los compiladores Procesadores de lenguaje Tema 1 Introducción a los compiladores Salvador Sánchez, Daniel Rodríguez Departamento de Ciencias de la Computación Universidad de Alcalá Resumen del tema Traductores Estructura

Más detalles

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

ÁRBOLES DE SINTAXIS. Los nodos no terminales (nodos interiores) están rotulados por los símbolos no terminales.

ÁRBOLES DE SINTAXIS. Los nodos no terminales (nodos interiores) están rotulados por los símbolos no terminales. ÁRBOLES DE SINTAXIS ÁRBOL grafo dirigido acíclico. Los nodos no terminales (nodos interiores) están rotulados por los símbolos no terminales. Los nodos terminales (nodos hojas) están rotulados por los

Más detalles

Introducción a la programación: Contenido. Introducción

Introducción a la programación: Contenido. Introducción Introducción a la programación: Contenido Introducción a la programación:... 1 Introducción... 1 1. Procesamiento automatizado de información... 1 2. Concepto de algoritmo.... 2 3. Lenguajes de programación....

Más detalles

Qué es el análisis semántico?

Qué es el análisis semántico? Análisis semántico Estrella Pulido Cañabate Qué es el análisis semántico? Fase del compilador en la que se comprueba la corrección semántica del programa Conjunto de subrutinas independientes que pueden

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

Lenguajes y Compiladores Análisis Sintáctico Parte I. Teoría Lenguajes 1

Lenguajes y Compiladores Análisis Sintáctico Parte I. Teoría Lenguajes 1 Facultad de Ingeniería de Sistemas Lenguajes y Compiladores Análisis Sintáctico Parte I 1 Introducción El analizador sintáctico recibe una secuencia de tokens y decide si la secuencia está correcta o no.

Más detalles

2.2 Nombres, Ligado y Ámbito

2.2 Nombres, Ligado y Ámbito 2.2 Nombres, Ligado y Ámbito Ligado estático y dinámico, reglas de ámbito y prueba de tipos. Conceptos Nombres e Identificadores Variables Tipos Ámbito Constantes Nombres Identificador que designa en el

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

Conceptos básicos sobre gramáticas

Conceptos básicos sobre gramáticas Procesamiento de Lenguajes (PL) Curso 2014/2015 Conceptos básicos sobre gramáticas Gramáticas y lenguajes Gramáticas Dado un alfabeto Σ, un lenguaje es un conjunto (finito o infinito) de cadenas de símbolos

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

INICIACIÓN A LA PROGRAMACIÓN 1ª parte

INICIACIÓN A LA PROGRAMACIÓN 1ª parte TEMA 4 INICIACIÓN A LA PROGRAMACIÓN 1ª parte Qué es la programación? La programación es el proceso de diseñar, codificar, depurar y mantener el código fuente de programas computacionales. En la actualidad,

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

Es un conjunto de palabras y símbolos que permiten al usuario generar comandos e instrucciones para que la computadora los ejecute.

Es un conjunto de palabras y símbolos que permiten al usuario generar comandos e instrucciones para que la computadora los ejecute. Los problemas que se plantean en la vida diaria suelen ser resueltos mediante el uso de la capacidad intelectual y la habilidad manual del ser humano. La utilización de la computadora en la resolución

Más detalles

PROCESADORES DE LENGUAJES I PRÁCTICA DE LABORATORIO 4

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

Tema: Análisis Léxico

Tema: Análisis Léxico Compiladores. Guía 2 1 Facultad: Ingeniería Escuela: Computación Asignatura: Compiladores Tema: Análisis Léxico Contenido En esta guía se dará a conocer la manera en que un compilador realiza el análisis

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

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

ANÁ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 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

Examen de Procesadores de Lenguaje

Examen de Procesadores de Lenguaje Apellidos: Nombre: Dni: Examen de Procesadores de Lenguaje Junio de 2007 (2 horas y 45 minutos) Instrucciones Entrega esta hoja, rellenada con tus datos, junto a tu examen cuando lo entregues. Ten en cuenta

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

8.1.- FUNCIONES Y PROCEDIMIENTOS DEFINIDOS POR EL USUARIO EN TURBO PASCAL.

8.1.- FUNCIONES Y PROCEDIMIENTOS DEFINIDOS POR EL USUARIO EN TURBO PASCAL. 8.1.- FUNCIONES Y PROCEDIMIENTOS DEFINIDOS POR EL USUARIO EN TURBO PASCAL. PROCEDIMIENTOS. CONCEPTO Un procedimiento es un programa que realiza una tarea específica. Puede recibir cero o más valores del

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

FUNDAMENTOS DE INFORMÁTICA

FUNDAMENTOS DE INFORMÁTICA FUNDAMENTOS DE INFORMÁTICA Tema 1 Introducción a la Programación en Visual Basic Departamento de Ingeniería de Sistemas y Automática Universidad de Vigo undamentos de Informática. Departamento de Ingeniería

Más detalles

TEMA 6: INTRODUCCIÓN A UML

TEMA 6: INTRODUCCIÓN A UML TEMA 6: INTRODUCCIÓN A UML Por qué modelamos? El modelado es una parte central de todas las actividades que conducen a la producción de un software de calidad. Como tal la ingeniería software debe basarse

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

Tema 5. Análisis sintáctico ascendente

Tema 5. Análisis sintáctico ascendente Tema 5 Análisis sintáctico Ciencias de la Computación e Inteligencia Artificial Índice 5.1 Introducción 5.2 Análisis sintáctico por desplazamiento y reducción 5.3 El autómata reconocedor de prefijos viables

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

18 Análisis sintáctico III Compiladores - Profr. Edgardo Adrián Franco Martínez. Clasificación de métodos de análisis sintáctico Análisis descendente

18 Análisis sintáctico III Compiladores - Profr. Edgardo Adrián Franco Martínez. Clasificación de métodos de análisis sintáctico Análisis descendente 2 Contenido Clasificación de métodos de análisis sintáctico Análisis descendente Análisis descendente recursivo Análisis descendente predictivo Métodos deterministas Problemas del análisis descendente

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

Analizador Léxico. Programación II Margarita Álvarez. Analizador Léxico - Funciones

Analizador Léxico. Programación II Margarita Álvarez. Analizador Léxico - Funciones Analizador Léxico Programación II Margarita Álvarez Analizador Léxico - Funciones Función Principal Leer carácter por carácter de la entrada y elaborar como salida una secuencia de componentes léxicos

Más detalles

Un. VI. Generador de código intermedio.

Un. VI. Generador de código intermedio. Un. VI. Generador de código intermedio. La administración de la memoria se da en esta etapa. Se debe considerar tanto la memoria estática como dinámica, y en esta se utilizan generalmente pilas. Los lenguajes

Más detalles

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

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

TEMA 3: ANÁLISIS SEMÁNTICO

TEMA 3: ANÁLISIS SEMÁNTICO 1 TEMA 3: ANÁLISIS SEMÁNTICO OBJETIVO Dar respuesta a las siguientes preguntas: Qué es el análisis semántico de un lenguaje? Cómo se diseña y construye un analizador semántico? EL PROBLEMA DEL CÁLCULO

Más detalles

Objetivos Que el estudiante logre conocer, comprender y manejar conceptos y técnicas vinculados con el Analizador Léxico, para lo cual debe:

Objetivos Que el estudiante logre conocer, comprender y manejar conceptos y técnicas vinculados con el Analizador Léxico, para lo cual debe: 09:19 1 2 Temas Funciones del Analizador Léxico Manejo de buffers de entrada Especificación y reconocimiento de tokens Generación automática de Analizadores Léxicos Objetivos Que el estudiante logre conocer,

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

El proceso del Análisis Léxico

El proceso del Análisis Léxico El proceso del Análisis Léxico El proceso de análisis léxico se refiere al trabajo que realiza el scanner con relación al proceso de compilación. El scanner representa una interfaz entre el programa fuente

Más detalles

TEMA 3: El proceso de compilación, del código fuente al código máquina

TEMA 3: El proceso de compilación, del código fuente al código máquina TEMA 3: El proceso de compilación, del código fuente al código máquina 3.1 Fase de compilación y linkado (link, montado o enlace) Un programa escrito en un lenguaje de alto nivel, no puede ser ejecutado

Más detalles

Desarrollo del Programa Docente de Procesadores del Lenguaje

Desarrollo del Programa Docente de Procesadores del Lenguaje Grado en Ingeniería Informática. Procesadores del Lenguaje. Curso 2010-2011 -1- Desarrollo del Programa Docente de Procesadores del Lenguaje Introducción Se presenta en este texto el programa desarrollado

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

Procesadores de Lenguaje

Procesadores de Lenguaje Procesadores de Lenguaje Generación de código intermedio 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

Más detalles

Principios de Computadoras II

Principios de Computadoras II Departamento de Ingeniería Electrónica y Computadoras Operadores y Expresiones rcoppo@uns.edu.ar Primer programa en Java 2 Comentarios en Java Comentario tradicional (multi-línea) Comentario de línea Comentario

Más detalles

Tema 5. Soporte lógico de computadoras.

Tema 5. Soporte lógico de computadoras. Tema 5. Soporte lógico de computadoras. 5.1 Conceptos generales Como se ha visto previamente, un ordenador consta de dos partes, una la parte física, conocida como "Hardware" y otra, la parte lógica denominada

Más detalles

Manual de turbo pascal

Manual de turbo pascal Universidad Nacional Experimental De Los Llanos Occidentales Ezequiel Zamora UNELLEZ-Barinas Manual de turbo pascal Bachilleres: Martinez Ninibeth C.I:20.867.002 Mora Yaco C.I:17.205.073 Estructura de

Más detalles

Fundamentos PHP. El término puntuación nos referimos a la sintaxis usada en PHP para la terminación de una línea de código (;)

Fundamentos PHP. El término puntuación nos referimos a la sintaxis usada en PHP para la terminación de una línea de código (;) Tags Fundamentos PHP La Sintaxis de PHP se deriva de muchos lenguajes de programación principalmente de C pero Perl también ha tenido mucha influencia en esta sintaxis Con las últimas incorporaciones agregadas,

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

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

UNIVERSIDAD NACIONAL DE EDUCACIÓN A DISTANCIA Escuela Técnica Superior de Ingeniería Informática Procesadores de Lenguajes. Tema 4

UNIVERSIDAD NACIONAL DE EDUCACIÓN A DISTANCIA Escuela Técnica Superior de Ingeniería Informática Procesadores de Lenguajes. Tema 4 UNIVERSIDAD NACIONAL DE EDUCACIÓN A DISTANCIA Escuela Técnica Superior de Ingeniería Informática Procesadores de Lenguajes Tema 4 Análisis Sintáctico Ascendente Javier Vélez Reyes jvelez@lsi.uned.es Objetivos

Más detalles

Apunte Laboratorio ALPI - El lenguaje de programación Pascal

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

Operadores y Expresiones

Operadores y Expresiones Operadores y Expresiones Los programas Java constan de datos, sentencias de programas y expresiones. Una expresión es normalmente, una ecuación matemática, tal como 3 * x + 5 * z. En esta expresión, los

Más detalles

Compiladores: Análisis Léxico. Pontificia Universidad Javeriana Cali Ingeniería de Sistemas y Computación Prof. Gloria Inés Alvarez V.

Compiladores: Análisis Léxico. Pontificia Universidad Javeriana Cali Ingeniería de Sistemas y Computación Prof. Gloria Inés Alvarez V. Compiladores: Análisis Léxico Pontificia Universidad Javeriana Cali Ingeniería de Sistemas y Computación Prof. Gloria Inés Alvarez V. Análisis Léxico Programa Lenguaje Fuente Análisis Léxico (Token, Lexema)

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

Programación de Ordenadores

Programación de Ordenadores Programación de Ordenadores Ingeniería Química David Pelta Depto de Ciencias de la Computación e I.A. Universidad de Granada Índice Resolución de Problemas con Ordenadores Algoritmo Metodología de la programación

Más detalles

Introducción a Python. Cecilia Manzino

Introducción a Python. Cecilia Manzino Características del lenguaje Es un lenguaje de programación multiparadigma, soporta la programación orientada a objetos, imperativa y, en menor medida, funcional. Es un lenguaje multiplataforma, puede

Más detalles

ALGORÍTMICA. Dpto. Ingeniería de Sistemas y Automática Facultad de Ciencias Universidad de Valladolid.

ALGORÍTMICA. Dpto. Ingeniería de Sistemas y Automática Facultad de Ciencias Universidad de Valladolid. ALGORÍTMICA Dpto. Ingeniería de Sistemas y Automática Facultad de Ciencias Universidad de Valladolid. Indíce Algoritmo Elementos de un algoritmo: Variables, Constantes, Expresiones Datos: Definición y

Más detalles

Tema 4: Gramáticas independientes del contexto. Teoría de autómatas y lenguajes formales I

Tema 4: Gramáticas independientes del contexto. Teoría de autómatas y lenguajes formales I Tema 4: Gramáticas independientes del contexto Teoría de autómatas y lenguajes formales I Bibliografía Hopcroft, J. E., Motwani, R., y Ullman, J. D. Introducción a la Teoría de Autómatas, Lenguajes y Computación.

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

Tipos Recursivos de Datos

Tipos Recursivos de Datos 1/1 Tipos Recursivos de Datos Josefina Sierra Santibáñez 27 de noviembre de 2016 2/1 Introducción La recursividad no sólo se puede aplicar a la definición de procedimientos (i.e. funciones o acciones),

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

4. Operadores Operador asignación

4. Operadores Operador asignación Programación orientada a objetos con Java 43 4. Operadores Objetivos: a) Describir los operadores (aritméticos, incrementales, de relación, lógicos y de asignación) y los tipos de dato primitivos sobre

Más detalles

El sintetizador de programas de Cornell

El sintetizador de programas de Cornell El sintetizador de programas de Cornell T. Teitelbaum, T. Repps: The Cornell Program Synthesizer: A Syntax-Directed Programming Environment. Comm. ACM, V.24 N.9 pp.563-673, Sep.1981. 1. Características

Más detalles

Tema 7. Generación de código

Tema 7. Generación de código Departamento de Tecnologías de la Información Tema 7 Generación de código Ciencias de la Computación e Inteligencia Artificial Índice 7.1 Visión general 7.2 Código de tres direcciones 2 Índice 7.1 Visión

Más detalles

Unidades en PASCAL (Units)

Unidades en PASCAL (Units) Programación II - Prof. Alejandro H. Gonzalez - 1 Unidades en PASCAL (Units) Aquellos que quieran probar los ejercicios de TAD en Pc pueden utilizar las UNITS de Pascal. En este documento se explican los

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

Tema 3. Tipos de datos simples

Tema 3. Tipos de datos simples Tema 3. Tipos de datos simples Contenido del tema: Concepto de tipo. Tipos simples. Operadores. Expresiones. Semántica. Tipos y expresiones en lenguaje C++ Francisco J. Veredas Dpto. Lenguajes y Ciencias

Más detalles

FACULTADE DE INFORMÁTICA Departamento de Computación Estructura de Datos e da Información. Ejercicios de punteros: SOLUCIONES

FACULTADE DE INFORMÁTICA Departamento de Computación Estructura de Datos e da Información. Ejercicios de punteros: SOLUCIONES H AC LUCE FACULTADE DE INFORMÁTICA Departamento de Computación Estructura de Datos e da Información Ejercicios de punteros: SOLUCIONES 1. Suponga que tenemos las declaraciones: Indice = 0..9; ApuntIndice

Más detalles

EXAMEN DE METODOLOGÍA Y TECNOLOGÍA DE LA PROGRAMACIÓN EUI-FI-UPV Septiembre DE 1999

EXAMEN DE METODOLOGÍA Y TECNOLOGÍA DE LA PROGRAMACIÓN EUI-FI-UPV Septiembre DE 1999 EXAMEN DE METODOLOGÍA Y TECNOLOGÍA DE LA PROGRAMACIÓN EUI-FI-UPV Septiembre DE 1999 1. (1) Partiendo de la especificación interfaz-función de los siguientes módulos LeerDatosNIF = PROCEDIMIENTO() DEVUELVE

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

UNIVERSIDAD NACIONAL DE EDUCACIÓN A DISTANCIA Escuela Técnica Superior de Ingeniería Informática Procesadores de Lenguajes.

UNIVERSIDAD NACIONAL DE EDUCACIÓN A DISTANCIA Escuela Técnica Superior de Ingeniería Informática Procesadores de Lenguajes. UNIVERIDAD NACIONAL DE EDUCACIÓN A DITANCIA Escuela Técnica uperior de Ingeniería Informática Procesadores de Lenguajes Tema 3 Parte II Análisis intáctico Descendente Javier Vélez Reyes jvelez@lsi.uned.es

Más detalles

Introducción al Análisis Sintáctico

Introducción al Análisis Sintáctico Introducción al Análisis Sintáctico El Parsing como Algoritmo Universidad de Cantabria Outline Introducción 1 Introducción 2 3 4 El Problema de la Parsing El problema de parsing está muy relacionado con

Más detalles

ANÁLISIS DESCENDENTE. Compruébese que la siguiente gramática es LL(1) sin modificarla.

ANÁLISIS DESCENDENTE. Compruébese que la siguiente gramática es LL(1) sin modificarla. Procesadores de lenguaje Ejercicios del Tema 3 ANÁLISIS DESCENDENTE Ejercicio 3.1 Compruébese que la siguiente gramática es LL(1) sin modificarla. Ejercicio 3.2 A B C D B a C b B λ C c A d C e B f C g

Más detalles

Asignatura: Entornos de programación Entornos orientados a estructura

Asignatura: Entornos de programación Entornos orientados a estructura Asignatura: Entornos de programación Entornos orientados a estructura Características y ejemplos 1. Entornos basados en editores de estructura La idea de que un programa no es equivalente al texto de su

Más detalles

Exterior del algoritmo. Entorno. Usuario. Procesador. Escribir. v1 v2 v3. Leer. <acción> {; <acción>}

Exterior del algoritmo. Entorno. Usuario. Procesador. Escribir. v1 v2 v3. Leer. <acción> {; <acción>} Bloque II. 2. Objetos y acciones elementales Bloque II. 2. Objetos y acciones elementales Objetivos: Familiarizarse con conceptos de entorno, objeto y tipo Entender qué significa que un objeto sea de un

Más detalles

Módulo. = Asignación = = Comp. de igualdad!= Com. de desigualdad <= Comp. menor o igual >= Comp. mayor o igual AND lógico OR lógica.

Mó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

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

PRÁCTICA FUNDAMENTOS DE ALGORITMOS I. Objetivos

PRÁCTICA FUNDAMENTOS DE ALGORITMOS I. Objetivos Objetivos El alumno conocerá las estructuras básicas para el diseño de algoritmos 1. Conocerá las estructuras secuenciales y de decisión para construir algoritmos 2. Diseñará algoritmos utilizando las

Más detalles

UNIVERSIDAD TECNICA FEDERICO SANTA MARIA DEPARTAMENTO DE ELECTRONICA Programación en Pascal Capítulo 2. Acciones Primitivas.

UNIVERSIDAD TECNICA FEDERICO SANTA MARIA DEPARTAMENTO DE ELECTRONICA Programación en Pascal Capítulo 2. Acciones Primitivas. 2. ACCIONES PRIMITIVAS. En los lenguajes de alto nivel existen cuatro instrucciones primitivas que reflejan lo que un computador puede realizar (en este nivel de abstracción). Se describirán las instrucciones

Más detalles

Estructuras de Control. Secuencia y Selección

Estructuras de Control. Secuencia y Selección Estructuras de Control. Secuencia y Selección InCo - FING Programación 1 InCo - FING Estructuras de Control. Secuencia y Selección Programación 1 1 / 35 Estructuras de control InCo - FING Estructuras de

Más detalles

Lenguajes y Gramáticas

Lenguajes y Gramáticas Lenguajes y Gramáticas Teoría de Lenguajes Fernando Naranjo Introduccion Se desarrollan lenguajes de programación basados en el principio de gramática formal. Se crean maquinas cada vez mas sofisticadas

Más detalles