SlideShare una empresa de Scribd logo
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

Más contenido relacionado

PPT
Lenguajec(1)
PPT
Presentación de programación (conceptos y ejercicios)
PPT
Diapositivas del resumen y ejercicios(finalizada) (1)
PPT
Diapositivas del resumen y ejercicios(finalizada)
PDF
Lenguaje C (pdf)
PPTX
3. Elementos basicos de un programa
PPT
Lenguaje de programacion c++ basico 1ra parte elementos basicos del lenguaje
DOCX
37 tarazona karen programacion
Lenguajec(1)
Presentación de programación (conceptos y ejercicios)
Diapositivas del resumen y ejercicios(finalizada) (1)
Diapositivas del resumen y ejercicios(finalizada)
Lenguaje C (pdf)
3. Elementos basicos de un programa
Lenguaje de programacion c++ basico 1ra parte elementos basicos del lenguaje
37 tarazona karen programacion

La actualidad más candente (20)

PPTX
TIPOS DE DATOS PARA C++
DOCX
Tutorial C
PPTX
Curso basico c sharp
DOCX
Clase8 3 ejemplo analisis lexico-sintactico miniugb
DOCX
Unidad 2
PPSX
Lenguaje c 1
PPSX
Lenguajes diapositivas
PPTX
Compilador2
PPTX
Sintaxis de lenguaje de programacion
PPT
Generador de codigo intermedio
PDF
Generación código intermedio 2
DOCX
GENERACION DE CODIGO INTERMEDIO
DOCX
Cesar ivan lenguaje_c
PPTX
Programacion kmi
PDF
Codigo intermedio
PDF
Semantico.apun
PDF
01 - Introducción al lenguaje de programación Python 3
DOCX
PPT
Cap4 compiladores
TIPOS DE DATOS PARA C++
Tutorial C
Curso basico c sharp
Clase8 3 ejemplo analisis lexico-sintactico miniugb
Unidad 2
Lenguaje c 1
Lenguajes diapositivas
Compilador2
Sintaxis de lenguaje de programacion
Generador de codigo intermedio
Generación código intermedio 2
GENERACION DE CODIGO INTERMEDIO
Cesar ivan lenguaje_c
Programacion kmi
Codigo intermedio
Semantico.apun
01 - Introducción al lenguaje de programación Python 3
Cap4 compiladores
Publicidad

Similar a 40278 leng deprog1 (20)

PDF
Tema2 C++ 2004 2005
PPT
Lenguajec 1
PPT
Estructura de un compilador 2
PPT
Lenguajec diapositivas
PPT
conceptos-basicos-prooogramacion-ppt.ppt
PPT
Lenguajes de programación parte i.4
PDF
S03_s3-Definici.pdffgggggggggggggggggggggggggggggggggggg
PDF
sintaxis de los lenguajes de programación
PPT
Linq 1207579553462901 8
PPT
Curso prog sist
PPT
Fundamentos de Programación
PPTX
Introducción a los Lenguaje de Programación.pptx
PPT
Algoritmos
PPTX
Presentación 2014 profe gabriel
PDF
Análisis sintáctico
PPTX
Introduccion a la programacion
PPTX
Republica bolivariana de venezuela
PDF
Programación en c
PPT
Algoritmosconeptosbasicos 1
Tema2 C++ 2004 2005
Lenguajec 1
Estructura de un compilador 2
Lenguajec diapositivas
conceptos-basicos-prooogramacion-ppt.ppt
Lenguajes de programación parte i.4
S03_s3-Definici.pdffgggggggggggggggggggggggggggggggggggg
sintaxis de los lenguajes de programación
Linq 1207579553462901 8
Curso prog sist
Fundamentos de Programación
Introducción a los Lenguaje de Programación.pptx
Algoritmos
Presentación 2014 profe gabriel
Análisis sintáctico
Introduccion a la programacion
Republica bolivariana de venezuela
Programación en c
Algoritmosconeptosbasicos 1
Publicidad

Último (20)

PPTX
El uso de las TIC en la vida cotidiana..
PDF
Distribucion de frecuencia exel (1).pdf
PDF
ADMINISTRACIÓN DE ARCHIVOS - TICS (SENA).pdf
PDF
capacitación de aire acondicionado Bgh r 410
PDF
TRABAJO DE TECNOLOGIA.pdf...........................
PPTX
Power Point Nicolás Carrasco (disertación Roblox).pptx
PDF
Documental Beyond the Code (Dossier Presentación - 2.0)
PPTX
modulo seguimiento 1 para iniciantes del
PDF
programa-de-estudios-2011-guc3ada-para-el-maestro-secundarias-tecnicas-tecnol...
PPTX
Mecanismos-de-Propagacion de ondas electromagneticas
PPTX
Acronis Cyber Protect Cloud para Ciber Proteccion y Ciber Seguridad LATAM - A...
PDF
Diapositiva proyecto de vida, materia catedra
PPTX
Historia Inteligencia Artificial Ana Romero.pptx
PDF
MANUAL de recursos humanos para ODOO.pdf
PPTX
Propuesta BKP servidores con Acronis1.pptx
PDF
CONTABILIDAD Y TRIBUTACION, EJERCICIO PRACTICO
DOCX
TRABAJO GRUPAL (5) (1).docxjsjsjskskksksk
PPTX
ccna: redes de nat ipv4 stharlling cande
PPTX
CLAASIFICACIÓN DE LOS ROBOTS POR UTILIDAD
PDF
0007_PPT_DefinicionesDeDataMining_201_v1-0.pdf
El uso de las TIC en la vida cotidiana..
Distribucion de frecuencia exel (1).pdf
ADMINISTRACIÓN DE ARCHIVOS - TICS (SENA).pdf
capacitación de aire acondicionado Bgh r 410
TRABAJO DE TECNOLOGIA.pdf...........................
Power Point Nicolás Carrasco (disertación Roblox).pptx
Documental Beyond the Code (Dossier Presentación - 2.0)
modulo seguimiento 1 para iniciantes del
programa-de-estudios-2011-guc3ada-para-el-maestro-secundarias-tecnicas-tecnol...
Mecanismos-de-Propagacion de ondas electromagneticas
Acronis Cyber Protect Cloud para Ciber Proteccion y Ciber Seguridad LATAM - A...
Diapositiva proyecto de vida, materia catedra
Historia Inteligencia Artificial Ana Romero.pptx
MANUAL de recursos humanos para ODOO.pdf
Propuesta BKP servidores con Acronis1.pptx
CONTABILIDAD Y TRIBUTACION, EJERCICIO PRACTICO
TRABAJO GRUPAL (5) (1).docxjsjsjskskksksk
ccna: redes de nat ipv4 stharlling cande
CLAASIFICACIÓN DE LOS ROBOTS POR UTILIDAD
0007_PPT_DefinicionesDeDataMining_201_v1-0.pdf

40278 leng deprog1

  • 1. 1. INTRODUCCIÓN Pascal C++ Java C Fortran SmallTalk Cobol
  • 3. Evolución de conceptos ABSTRACCIÓ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 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
  • 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 conceptos ABSTRACCIÓN DE CONTROL Lógica del código Sentencias Unidades de Programas
  • 8. Sentencias Asignación Decisión Iteración Constructores de código que facilitan la programación estructurada
  • 9. 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
  • 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ón L ENS LM LAN ForTran COBOL Pascal C C++ Delphi Mayor grado de abstracción
  • 13. 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 &quot;correr&quot;: Máquina de Von Neuman CPU RAM
  • 14. 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
  • 15. 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
  • 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 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
  • 20. 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
  • 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 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
  • 23. Elementos Sintácticos Set de Caracteres Identificadores Símbolos para operadores Palabras claves y reservadas Comentarios Abreviaciones Espacios
  • 24. Elementos Sintácticos Delimitadores Formatos Fijo y Libre Expresiones Sentencias Estructura de Unidades de programa
  • 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 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
  • 28. 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
  • 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 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. 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 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
  • 39. Identificador Letra Dígito Diagramas Sintácticos A B z 0 1 9 _ Letra Dígito Letra
  • 40. Número entero Número real Diagramas Sintácticos Dígito Dígito Dígito
  • 41. 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  …
  • 42. <identificador> ::= <letra> ... <digito> <letra> - <condición>::= <entero> ::= [ + ] <digito> ... CBL (COBOL – Like) <identificador> IS NOT NUMERIC ALPHABETIC
  • 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 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
  • 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 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
  • 53. 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
  • 54. 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
  • 55. 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
  • 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 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