1. INTRODUCCIÓN Pascal C++ Java C Fortran SmallTalk Cobol
Evolución de Conceptos
Evolución de conceptos <ul><li>ABSTRACCIÓN DE DATOS </li></ul><ul><ul><li>Tipos de datos </li></ul></ul><ul><li>Elementale...
Tipos de datos:  Elementales <ul><li>Nivel de máquina </li></ul><ul><li>Primitivos </li></ul><ul><li>Proporcionados por el...
<ul><li>Nivel de lenguaje de programación (LP) </li></ul><ul><li>Con base en tipos elementales </li></ul><ul><li>Se utiliz...
Tipos de datos:  Abstractos <ul><li>Nivel de usuario </li></ul><ul><li>Con base en tipos elementales y estructurados </li>...
Evolución de conceptos <ul><li>ABSTRACCIÓN DE CONTROL </li></ul><ul><ul><li>Lógica del código </li></ul></ul><ul><li>Sente...
Sentencias <ul><li>Asignación </li></ul><ul><li>Decisión </li></ul><ul><li>Iteración </li></ul>Constructores de código que...
Unidades de programas <ul><li>Permiten  programación modular </li></ul><ul><li>Generalizan la noción de operador </li></ul...
Clasificación de los Lenguajes
Lenguajes  Naturales   De Programación   De Máquina  Simbólicos   Bajo nivel  Alto Nivel <ul><li>Imperativos </li></ul><ul...
Niveles de abstracción L ENS LM LAN ForTran COBOL Pascal  C C++  Delphi Mayor grado de abstracción
Lenguajes  Imperativos <ul><ul><li>Los primeros LP fueron  creados en los 50's :  Fortran, COBOL, Pascal, C, Ada   </li></...
Lenguajes  Funcionales <ul><ul><li>Los primeros aparecieron en  los 60's :  Lisp, Apl, Forth   </li></ul></ul><ul><ul><li>...
Lenguajes  Funcionales <ul><ul><li>Ejemplo en Scheme: </li></ul></ul><ul><ul><li>Función f(x) = (x + 1) 2  + (2x) 2 </li><...
<ul><ul><li>Aparecieron en  los 70's  :  PROLOG </li></ul></ul><ul><ul><li>Fueron pensados principalmente para aplicacione...
<ul><ul><li>Ejemplo en Prolog: </li></ul></ul><ul><ul><li>El cero es un número natural </li></ul></ul><ul><ul><li>Si X es ...
<ul><ul><li>Algunos de ellos son  Smalltalk ,  Eiffel ,   C ++ ,   Java </li></ul></ul><ul><ul><li>Representan un modelo d...
Sintaxis
Sintaxis <ul><li>C onjunto de reglas  que determinan si las sentencias de un programa están bien formadas o no </li></ul><...
Criterios Sintácticos <ul><li>Legibilidad : </li></ul><ul><li>COBOL:   Write sueldo after advancing 2 lines </li></ul><ul>...
Criterios Sintácticos <ul><li>Ausencia de ambigüedad : </li></ul><ul><li>Evitar que una estructura tenga más de un  signif...
Elementos Sintácticos <ul><li>Set de Caracteres </li></ul><ul><li>Identificadores </li></ul><ul><li>Símbolos para operador...
Elementos Sintácticos <ul><li>Delimitadores </li></ul><ul><li>Formatos Fijo y Libre </li></ul><ul><li>Expresiones </li></u...
Gramáticas
<ul><li>R epresenta la  definición formal  de la  sintaxis  de un lenguaje </li></ul>Consta de un  conjunto de reglas  que...
<ul><li>G ramática formal destinada a la descripción de un lenguaje </li></ul>Existen tres metalenguajes de uso común <ul>...
<ul><li>Notación desarrollada por los especialistas  Backus  y  Naur  para definir lenguaje Algol   60 </li></ul><ul><li>M...
Número real <real> ::=  <se cuencia >  .  <se cuencia >  <se cuencia >  ::= <dígito>  { <dígito> } 0 <dígito>  ::=  0 | 1 ...
Sentencia if <s-if> ::=  if   (   <expresión booleana>  )  <sentencia>  |   if   (  <expresión booleana>  )  <sentencia>  ...
Número entero <entero> ::=  <dígito>  |  <dígito>  <entero> <dígito>  ::=  0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 Número re...
<identificador> ::=  <letra>  |  <letra> <secuencia> <secuencia>  ::=  <carácter>  |  <carácter>  <secuencia> <carácter> :...
Sentencia <sentencia> ::=  <simple>  |  <compuesta> <simple>  ::=  <asignación>  |  <invocación>  |  <selección>  |  <repe...
Expresión aritmética BNF Recursiva <ea> ::=  <término>  |  <st> <término>  |   <ea>  <st> <término> <término> ::=  <factor...
Expresión Término Expresión + (a +b) *c Factor Identificador a * Factor Identificador c Término Factor Término ( Expresión...
Constituyen un  método de descripción  de lenguajes, equivalente a la BNF, originalmente propuesto por  N.  Wirth. para de...
<ul><li><S>  ::=  <v 1 >  |  <v 2 > ···  |  <v n > </li></ul><ul><li>Cada ocurrencia de un símbolo terminal corresponde al...
<ul><li>Una producción de la forma : </li></ul><ul><li><S> ::=  {<x>} 0 </li></ul><ul><li>corresponde al siguiente diagram...
<ul><li>Identificador </li></ul><ul><li>Letra </li></ul>Dígito Diagramas Sintácticos A B z 0 1 9 _ Letra Dígito Letra
<ul><li>Número entero </li></ul>Número real Diagramas Sintácticos Dígito Dígito Dígito
Constituye una extensión de la BNF destinada a la descripción sintáctica del lenguaje  Cobol.   CBL  (COBOL – Like) <ul><l...
<identificador> ::= <letra>  ... <digito> <letra>   - <condición>::= <entero> ::=  [  +  ] <digito>  ... CBL  (COBOL – Lik...
Semántica
<ul><li>Sintaxis     ¡Cómo se expresa un concepto! </li></ul><ul><li>Semántica     ¡Qué significa ese concepto! </li></u...
<ul><li>Una expresión sintáctica, mediante BNF, como </li></ul><ul><li>puede tener dos  interpretaciones semánticas </li><...
La especificación de la semántica de una sentencia se hará mediante la notación usada por los diccionarios enciclopédicos ...
Procesadores de Lenguajes
DEFINICIÓN Un  procesador  es una máquina  capaz de ejecutar  acciones expresadas en algún  lenguaje concreto Actualmente,...
<ul><li>Es un  decodificador  que acepta programas escritos en algún  lenguaje fuente  y genera programas, funcionalmente ...
<ul><li>Es un  traductor  cuyo  </li></ul><ul><li>lenguaje fuente  es  una extensión de un lenguaje de alto nivel </li></u...
<ul><li>Es un  traductor  cuyo  </li></ul><ul><li>lenguaje fuente  es un lenguaje de alto nivel  </li></ul><ul><li>lenguaj...
<ul><li>Análisis lexicográfico </li></ul><ul><li>Reconocimiento y clasificación de tokens básicos: </li></ul><ul><ul><li>C...
<ul><li>Análisis sintáctico </li></ul><ul><li>Generación de un  árbol de reconocimiento  usando una representación interna...
<ul><li>Generación de código </li></ul><ul><li>Enlace entre la sintaxis y la semántica de un lenguaje </li></ul>Convierte ...
<ul><li>Optimización de código </li></ul><ul><li>Refinamiento del código generado para mejorar el rendimiento en tiempo de...
<ul><li>Es un  traductor  cuyo  </li></ul><ul><li>L enguaje fuente  es un lenguaje  ensamblador  (representación simbólica...
<ul><li>Es un  traductor  cuyo  </li></ul><ul><li>L enguaje fuente   es el lenguaje de  máquina </li></ul><ul><li>L enguaj...
<ul><li>L enguaje objeto  es el código real (lenguaje de máquina con direcciones absolutas) </li></ul>Carga el programa en...
<ul><li>Es un  procesador  cuyo lenguaje concreto es un lenguaje de alto nivel </li></ul>Hoy, n ingún computador es capaz ...
<ul><li>Compilador </li></ul><ul><li>Sólo traduce </li></ul><ul><li>Traduce sólo una vez cada sentencia </li></ul><ul><li>...
Upcoming SlideShare
Loading in …5
×

40278 leng deprog1

1,169 views

Published on

Published in: Technology
  • Be the first to comment

  • Be the first to like this

40278 leng deprog1

  1. 1. 1. INTRODUCCIÓN Pascal C++ Java C Fortran SmallTalk Cobol
  2. 2. Evolución de Conceptos
  3. 3. Evolución de conceptos <ul><li>ABSTRACCIÓN DE DATOS </li></ul><ul><ul><li>Tipos de datos </li></ul></ul><ul><li>Elementales (HW) </li></ul><ul><li>Estructurados (LP) </li></ul><ul><li>Abstractos (U) </li></ul>
  4. 4. Tipos de datos: Elementales <ul><li>Nivel de máquina </li></ul><ul><li>Primitivos </li></ul><ul><li>Proporcionados por el Hw </li></ul><ul><li>Enteros </li></ul><ul><li>Reales </li></ul><ul><li>Booleanos </li></ul><ul><li>Caracteres </li></ul>
  5. 5. <ul><li>Nivel de lenguaje de programación (LP) </li></ul><ul><li>Con base en tipos elementales </li></ul><ul><li>Se utilizan constructores de tipo que  al LP </li></ul><ul><li>Arreglos </li></ul><ul><li>Estructuras (registros) </li></ul>Tipos de datos: Estructurados
  6. 6. Tipos de datos: Abstractos <ul><li>Nivel de usuario </li></ul><ul><li>Con base en tipos elementales y estructurados </li></ul><ul><li>Permiten extender un LP </li></ul><ul><li>Stacks </li></ul><ul><li>Colas </li></ul><ul><li>Heaps, etc. </li></ul>
  7. 7. Evolución de conceptos <ul><li>ABSTRACCIÓN DE CONTROL </li></ul><ul><ul><li>Lógica del código </li></ul></ul><ul><li>Sentencias </li></ul><ul><li>Unidades de Programas </li></ul>
  8. 8. Sentencias <ul><li>Asignación </li></ul><ul><li>Decisión </li></ul><ul><li>Iteración </li></ul>Constructores de código que facilitan la programación estructurada
  9. 9. Unidades de programas <ul><li>Permiten programación modular </li></ul><ul><li>Generalizan la noción de operador </li></ul><ul><li>Permiten encapsular parte de un algoritmo </li></ul><ul><li>Tienen una única definición </li></ul><ul><li>Tienen múltiples activaciones </li></ul>
  10. 10. Clasificación de los Lenguajes
  11. 11. Lenguajes Naturales De Programación De Máquina Simbólicos Bajo nivel Alto Nivel <ul><li>Imperativos </li></ul><ul><li>Funcionales </li></ul><ul><li>Lógicos </li></ul><ul><li>OO </li></ul>Clasificación
  12. 12. Niveles de abstracción L ENS LM LAN ForTran COBOL Pascal C C++ Delphi Mayor grado de abstracción
  13. 13. Lenguajes Imperativos <ul><ul><li>Los primeros LP fueron creados en los 50's : Fortran, COBOL, Pascal, C, Ada </li></ul></ul><ul><ul><li>Se denominan también, procedurales </li></ul></ul><ul><ul><li>T i enen como característica cambiar el estado de las variables por asignación </li></ul></ul><ul><ul><li>Están influenciados por la máquina en la que deben &quot;correr&quot;: Máquina de Von Neuman </li></ul></ul>CPU RAM
  14. 14. Lenguajes Funcionales <ul><ul><li>Los primeros aparecieron en los 60's : Lisp, Apl, Forth </li></ul></ul><ul><ul><li>Aplican funciones, ya sea, recursivamente o por composición </li></ul></ul><ul><ul><li>Se caracterizan por una programación basada en expresiones (sin asignaciones) </li></ul></ul><ul><ul><li>Los usuarios NO deben preocuparse de manejar el almacenamiento de datos </li></ul></ul>
  15. 15. Lenguajes Funcionales <ul><ul><li>Ejemplo en Scheme: </li></ul></ul><ul><ul><li>Función f(x) = (x + 1) 2 + (2x) 2 </li></ul></ul><ul><ul><li>(define cuad x) (* x x)) </li></ul></ul><ul><ul><li>(define (sum x) (+ x x)) </li></ul></ul><ul><ul><li>(define (mult x y) (* x y)) </li></ul></ul><ul><ul><li>(define (f x) (sum (cuad (sum (x 1)) (cuad (mult (2 x)))) </li></ul></ul><ul><ul><li>(f 2) </li></ul></ul><ul><ul><li>25 </li></ul></ul>
  16. 16. <ul><ul><li>Aparecieron en los 70's : PROLOG </li></ul></ul><ul><ul><li>Fueron pensados principalmente para aplicaciones de inteligencia artificial (IA) </li></ul></ul><ul><ul><li>Revisan la presencia de cierta condición, la cual, si es verdadera se ejecuta una acción </li></ul></ul><ul><ul><li>Establecen relaciones de inferencia entre clases de objetos </li></ul></ul>Lenguajes Lógicos
  17. 17. <ul><ul><li>Ejemplo en Prolog: </li></ul></ul><ul><ul><li>El cero es un número natural </li></ul></ul><ul><ul><li>Si X es un número natural, entonces s(X) (sucesor de X) </li></ul></ul><ul><ul><li>también es un número natural </li></ul></ul><ul><ul><li>natural(0). </li></ul></ul><ul><ul><li>natural(s(X)) :- natural(X). </li></ul></ul><ul><ul><li>0 + X = X </li></ul></ul><ul><ul><li>Si X + Y = Z entonces s(X) + Y = s(Z) </li></ul></ul><ul><ul><li>suma(0, X, X). </li></ul></ul><ul><ul><li>suma(s(X), Y, s(Z)) :- suma(X, Y, Z). </li></ul></ul>Lenguajes Lógicos
  18. 18. <ul><ul><li>Algunos de ellos son Smalltalk , Eiffel , C ++ , Java </li></ul></ul><ul><ul><li>Representan un modelo de interacción entre objetos, cada uno de los cuales actúa en función un estado y un comportamiento </li></ul></ul><ul><ul><li>Se construyen objetos complejos a partir de objetos simples , bajo el principio de la reutilización de código </li></ul></ul>Lenguajes OO
  19. 19. Sintaxis
  20. 20. Sintaxis <ul><li>C onjunto de reglas que determinan si las sentencias de un programa están bien formadas o no </li></ul><ul><li>Su objetivo es p roveer una notación que permita la comunicación entre el programador y el procesador del lenguaje </li></ul>
  21. 21. Criterios Sintácticos <ul><li>Legibilidad : </li></ul><ul><li>COBOL: Write sueldo after advancing 2 lines </li></ul><ul><li>Facilidad de escritura : </li></ul><ul><li>APL: A  A*-1 Invierte una matriz </li></ul><ul><li>Facilidad de traducción: </li></ul><ul><li>El compilador debiera generar poco código </li></ul>
  22. 22. Criterios Sintácticos <ul><li>Ausencia de ambigüedad : </li></ul><ul><li>Evitar que una estructura tenga más de un significado </li></ul><ul><li>Por ejemplo, en Fortran M(i) puede significar: </li></ul><ul><ul><li>un elemento del arreglo M , ó </li></ul></ul><ul><ul><li>una llamada a la función M con parámetro i </li></ul></ul>
  23. 23. Elementos Sintácticos <ul><li>Set de Caracteres </li></ul><ul><li>Identificadores </li></ul><ul><li>Símbolos para operadores </li></ul><ul><li>Palabras claves y reservadas </li></ul><ul><li>Comentarios </li></ul><ul><li>Abreviaciones </li></ul><ul><li>Espacios </li></ul>
  24. 24. Elementos Sintácticos <ul><li>Delimitadores </li></ul><ul><li>Formatos Fijo y Libre </li></ul><ul><li>Expresiones </li></ul><ul><li>Sentencias </li></ul><ul><li>Estructura de Unidades de programa </li></ul>
  25. 25. Gramáticas
  26. 26. <ul><li>R epresenta la definición formal de la sintaxis de un lenguaje </li></ul>Consta de un conjunto de reglas que especifican las NORMAS de escritura para forma r estructuras en un lenguaje Gramática
  27. 27. <ul><li>G ramática formal destinada a la descripción de un lenguaje </li></ul>Existen tres metalenguajes de uso común <ul><li>BNF ( Backus-Naur-Form ) </li></ul><ul><li>Diagramas sintácticos </li></ul><ul><li>CBL (COBOL-Like) </li></ul>Metalenguaje donde BNF es el referente base
  28. 28. <ul><li>Notación desarrollada por los especialistas Backus y Naur para definir lenguaje Algol 60 </li></ul><ul><li>Metasímbolos: </li></ul><ul><li>< > : indica símbolo NO-TERMINAL o meta variable </li></ul><ul><li>::= : &quot;Se define como&quot; </li></ul><ul><li>| : &quot;o&quot; </li></ul><ul><li>{ } n : R epetición. M ínimo n veces </li></ul><ul><li>identificador : Palabra reservada, constante o símbolo TERMINAL </li></ul>BNF
  29. 29. Número real <real> ::= <se cuencia > . <se cuencia > <se cuencia > ::= <dígito> { <dígito> } 0 <dígito> ::= 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 Identificador <id> ::= <letra> { <letra> |<dígito> } 0 <letra> ::= A | B | C | … | Z | a | b | c | … | z BNF
  30. 30. Sentencia if <s-if> ::= if ( <expresión booleana> ) <sentencia> | if ( <expresión booleana> ) <sentencia> else <sentencia> Sentencia while <s-while> ::= while ( <expresión booleana> ) <sentencia> Sentencia do-while <s-do-while> ::= do ( <> ) <sentencia> BNF
  31. 31. Número entero <entero> ::= <dígito> | <dígito> <entero> <dígito> ::= 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 Número real <real> ::= <se cuencia > . <se cuencia > <secuencia> ::= <dígito> | <dígito> <secuencia> <dígito> ::= 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 BNF Recursiva
  32. 32. <identificador> ::= <letra> | <letra> <secuencia> <secuencia> ::= <carácter> | <carácter> <secuencia> <carácter> ::= <letra> | <dígito> Multilista: (1 2 (3 4 (5) 6) 7 8) <mlista> ::= () | (<lista>) <lista> ::= <elemento> | <elemento> <lista> <elemento> ::= <átomo> | <mlista> BNF Recursiva
  33. 33. Sentencia <sentencia> ::= <simple> | <compuesta> <simple> ::= <asignación> | <invocación> | <selección> | <repetición> <compuesta> ::= {<sentencias>} <sentencias> ::= <simple>; | <simple>; <sentencias> BNF Recursiva
  34. 34. Expresión aritmética BNF Recursiva <ea> ::= <término> | <st> <término> | <ea> <st> <término> <término> ::= <factor> | <factor> <sf> <término> <factor> ::= <id> | <constante> | (<ea>) <st> ::= + |  <sf> ::= * | / x término término término a*b  c/d a * b factor factor
  35. 35. Expresión Término Expresión + (a +b) *c Factor Identificador a * Factor Identificador c Término Factor Término ( Expresión ) Término Factor Identificador b BNF Recursiva
  36. 36. Constituyen un método de descripción de lenguajes, equivalente a la BNF, originalmente propuesto por N. Wirth. para definir sintáxis de Pascal Equivalencias entre BNF y Diagramas sintácticos: Diagramas Sintácticos
  37. 37. <ul><li><S> ::= <v 1 > | <v 2 > ··· | <v n > </li></ul><ul><li>Cada ocurrencia de un símbolo terminal corresponde al diagrama </li></ul>Cada ocurrencia de un símbolo no terminal corresponde al diagrama Diagramas Sintácticos V n V 1 V 2     X
  38. 38. <ul><li>Una producción de la forma : </li></ul><ul><li><S> ::= {<x>} 0 </li></ul><ul><li>corresponde al siguiente diagrama </li></ul>(mientras) Una producción de la forma : <S> ::= <x> {<x>} 0 corresponde al siguiente diagrama ( repetir ) Diagramas Sintácticos X X
  39. 39. <ul><li>Identificador </li></ul><ul><li>Letra </li></ul>Dígito Diagramas Sintácticos A B z 0 1 9 _ Letra Dígito Letra
  40. 40. <ul><li>Número entero </li></ul>Número real Diagramas Sintácticos Dígito Dígito Dígito
  41. 41. Constituye una extensión de la BNF destinada a la descripción sintáctica del lenguaje Cobol. CBL (COBOL – Like) <ul><li>Elementos opcionales se denotan entre paréntesis cuadrados  x  </li></ul><ul><li>Elementos alternativos se listan verticalmente entre paréntesis llave { x } </li></ul><ul><li>Elementos alternativos opcionales se listan verticalmente entre paréntesis cuadrados   </li></ul><ul><li>La repetición de los elementos se indica mediante tres puntos a continuación de una ocurrencia del elemento  x  … </li></ul>
  42. 42. <identificador> ::= <letra> ... <digito> <letra> - <condición>::= <entero> ::= [ + ] <digito> ... CBL (COBOL – Like) <identificador> IS NOT NUMERIC ALPHABETIC
  43. 43. Semántica
  44. 44. <ul><li>Sintaxis  ¡Cómo se expresa un concepto! </li></ul><ul><li>Semántica  ¡Qué significa ese concepto! </li></ul><ul><li>Se define como un conjunto de reglas que describen el comportamiento de un lenguaje en tiempo de ejecución </li></ul><ul><li>¿ Qué ocurre con la ejecución de un programa ? </li></ul><ul><ul><li>¿ Qué sentencias se ejecutarán? </li></ul></ul><ul><ul><li>¿ Qué valores se asignan a determinadas variables? </li></ul></ul><ul><ul><li>¿ Qué salidas se obtienen? </li></ul></ul>Semántica
  45. 45. <ul><li>Una expresión sintáctica, mediante BNF, como </li></ul><ul><li>puede tener dos interpretaciones semánticas </li></ul><ul><li>Por ejemplo, 09 /0 4 /200 2 se entiende como </li></ul><ul><li>9 de A bril de 200 2 en Chile </li></ul><ul><li>4 de Septiembre de 200 2 en EEUU </li></ul>Semántica <fecha> ::= <d><d> / <d><d> / <d><d><d><d>
  46. 46. La especificación de la semántica de una sentencia se hará mediante la notación usada por los diccionarios enciclopédicos <ul><li>Métodos formales de especificación semántica: </li></ul><ul><ul><li>Operacional : Máquina teórica </li></ul></ul><ul><ul><li>Axiomático : Cálculo del predicados (PROLOG) </li></ul></ul><ul><ul><li>Denotacional : Teoría de las funciones (Lisp) </li></ul></ul>Semántica
  47. 47. Procesadores de Lenguajes
  48. 48. DEFINICIÓN Un procesador es una máquina capaz de ejecutar acciones expresadas en algún lenguaje concreto Actualmente, el único lenguaje concreto que existe es el lenguaje de máquina Procesador
  49. 49. <ul><li>Es un decodificador que acepta programas escritos en algún lenguaje fuente y genera programas, funcionalmente equivalentes, en algún lenguaje objeto </li></ul>Preprocesador Compilador Ensamblador Ligador Cargador Traductor Programa en Lenguaje Fuente Traductor Programa en Lenguaje Objeto
  50. 50. <ul><li>Es un traductor cuyo </li></ul><ul><li>lenguaje fuente es una extensión de un lenguaje de alto nivel </li></ul><ul><li>lenguaje objeto es el estándar del lenguaje de alto nivel </li></ul><ul><ul><li>Por ejemplo, C y C++ </li></ul></ul>Pre-procesador Programa en extensión de LAN Preprocesador Programa en LAN estándar Pre-procesador Compilador Ensamblador Cargador C++ C Leng. Ensam. Código Reubicable Código Ejecutable
  51. 51. <ul><li>Es un traductor cuyo </li></ul><ul><li>lenguaje fuente es un lenguaje de alto nivel </li></ul><ul><li>lenguaje objeto es un lenguaje intermedio orientado a la máquina </li></ul>código objeto Compilador Análisis lexicográfico Análisis sintáctico Generación de código Optimización de código Programa en L enguaje de A lto N ivel Compilador Programa en L orientado a la M áquina
  52. 52. <ul><li>Análisis lexicográfico </li></ul><ul><li>Reconocimiento y clasificación de tokens básicos: </li></ul><ul><ul><li>Constantes </li></ul></ul><ul><ul><li>Identificadores </li></ul></ul><ul><ul><li>Palabras reservadas, etc </li></ul></ul>Construcción de la tabla de símbolos <ul><ul><li>Lista de todos los símbolos y sus atributos usados en un programa (variables, etiquetas, rutinas, etc) </li></ul></ul>Compilador
  53. 53. <ul><li>Análisis sintáctico </li></ul><ul><li>Generación de un árbol de reconocimiento usando una representación interna de la gramática del lenguaje </li></ul>a + b*c Compilador Expresión Término Expresión + Factor Identificador a * Identificador b Factor Identificador c Término Factor Término
  54. 54. <ul><li>Generación de código </li></ul><ul><li>Enlace entre la sintaxis y la semántica de un lenguaje </li></ul>Convierte el árbol de reconocimiento en una lista equivalente de instrucciones en lenguaje de máquina Compilador
  55. 55. <ul><li>Optimización de código </li></ul><ul><li>Refinamiento del código generado para mejorar el rendimiento en tiempo de ejecución </li></ul><ul><li>Ubicación de </li></ul><ul><li>Construcciones semánticas redundantes </li></ul><ul><li>Uso ineficiente de registros </li></ul><ul><li>Etc. </li></ul>Compilador
  56. 56. <ul><li>Es un traductor cuyo </li></ul><ul><li>L enguaje fuente es un lenguaje ensamblador (representación simbólica del lenguaje de máquina) </li></ul><ul><li>L enguaje objeto es el lenguaje de máquina del computador </li></ul>Ensamblador Programa en Leng. Ensam. Ensamblador Programa en LM
  57. 57. <ul><li>Es un traductor cuyo </li></ul><ul><li>L enguaje fuente es el lenguaje de máquina </li></ul><ul><li>L enguaje objeto es el lenguaje máquina, pero en la versión denominada código reubicable </li></ul>Integra, en un único módulo de carga , el código compilado de la aplicación con el código compilado preexistente correspondiente a las librerías utilizadas Ligador Programa en lenguaje de máquina Linker Programa en leng. de máquina código reubicable
  58. 58. <ul><li>L enguaje objeto es el código real (lenguaje de máquina con direcciones absolutas) </li></ul>Carga el programa en la RAM, actualizando las tablas de datos, es decir, transformado direcciones relativa en absolutas Programa Ejecutable Cargador <ul><li>Es un traductor cuyo </li></ul><ul><li>L enguaje fuente es el código reubicable (lenguaje de máquina con direcciones relativas) </li></ul>Programa como código reubicable Loader Programa como código real
  59. 59. <ul><li>Es un procesador cuyo lenguaje concreto es un lenguaje de alto nivel </li></ul>Hoy, n ingún computador es capaz de ejecutar código distinto al de máquina S e debe simular mediante software la existencia de un computador cuyo lenguaje de máquina es un lenguaje de alto nivel ( máquina virtual ) Intérprete
  60. 60. <ul><li>Compilador </li></ul><ul><li>Sólo traduce </li></ul><ul><li>Traduce sólo una vez cada sentencia </li></ul><ul><li>Acepta las instrucciones de acuerdo a su secuencialidad física </li></ul>Diferencias Compilador-Intérprete <ul><li>Intérprete </li></ul><ul><li>Decodifica y ejecuta </li></ul><ul><li>Puede procesar varias veces algunas e ignorar completamente otras instrucciones </li></ul><ul><li>Acepta las instrucciones según su secuencialidad lógica </li></ul>

×