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

40278 leng deprog1

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