1 / 30

ESTRUCTURA DE LOS LENGUAJES DE PROGRAMACION

ESTRUCTURA DE LOS LENGUAJES DE PROGRAMACION. DEFINICION DE UN LENGUAJE SINTAXIS (BNF-EBNF-DIAGRAMAS DE SINTAXIS). + SEMANTICA OPERACIONAL(APROXIMACION UTILIZADA AQUI) FORMAL(A TRAVES DE MECANISMOS RIGUROSOS Y EXACTOS). SEMANTICA OPERACIONAL: Se describe el significado de cada

tea
Télécharger la présentation

ESTRUCTURA DE LOS LENGUAJES DE PROGRAMACION

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. ESTRUCTURA DE LOS LENGUAJES DE PROGRAMACION DEFINICION DE UN LENGUAJE SINTAXIS (BNF-EBNF-DIAGRAMAS DE SINTAXIS). + SEMANTICA OPERACIONAL(APROXIMACION UTILIZADA AQUI) FORMAL(A TRAVES DE MECANISMOS RIGUROSOS Y EXACTOS). SEMANTICA OPERACIONAL: Se describe el significado de cada construcción del lenguaje en términos de las operaciones correspondientes en un procesador abstracto.

  2. SIMPLESEM -PUNTERO DE INSTRUCCIONES -MEMORIA(DE DATOS-DE CODIGO) Code Memory Code Memory (C) (D) Explicar la semántica de un comando explicando las operaciones correspondiente en SIMPLESEM(LA SEMANTICA O FUNCIONAMIENTO DE SIMPLESEM YA ES CONOCIDA). ip

  3. PROCESAMIENTO DE UN LENGUAJE CONVERSION ENTRE LENGUAJES DE ALTO NIVEL --a--> DE MAQUINA que interpreta que interpreta un programador la computadora ALTERNATIVAS INTERPRETACION: ejecución pasa a paso de cada instrucción de un programa . CICLO: LECTURA-DECODIFICACION-EJECUCION Menor velocidad-Relativo aprovechamiento de memoria(solo se carga una instrucción por vez).

  4. COMPILACION: Conversión completa de un programa antes de su ejecución. FASES: COMPILACION-ENSAMBLADO LINKEDITADO-CARGADO-EJECUCION Mayor velocidad-Todo el programa debe cargarse en memoria para su ejecución.

  5. LIGADURA (BINDING) Programas  tratan con entidades (funciones,variables,sentencias).  poseen atributos (nombre, tipo, parámetros). BINDING: Proceso de especificación de la naturaleza exacta de cada atributo. Ligadura Proceso asociado *entre una variable y su nombre *Identificación *Entre una variable y su tipo *Determinación *Entre un programa y su espacio *Reserva de espacio de almacenamiento. *Entre un subprograma y sus *Pasaje de parámetros parámetros .

  6. LENGUAJES DIFERENTES: • En número de entidades • En número de atributos • En momento de realizarlo • Binding estático • Binding Dinámico • BINDING CONGELADO -> CONSTANTE ( Valor de la variable cuando es creada)

  7. VARIABLES Atracción de la noción de celda de memoria de una computadora. Caracterizada por: NOMBRE: usado para identificar y referirse a una variable. AMBITO: es el rango de instrucciones de programa sobre el cual una variable es conocida y manipulada. Fuera de el la variable es INVISIBLE. TIEMPO DE VIDA: es el intervalo de tiempo en el que un espacio de almacenamiento (memoria) es asociado con una variable. Este proceso es llamado ALOCACION.

  8. VALOR: es el contenido del espacio de memoria asignado a al variable. Esta representado en forma codificada (cadena de bits). Esta codificación se interpretara de acuerdo al TIPO de la variable. TIPO: es la especificación de la clase de valores que puede ser asociada con una variable junto con el conjunto que pueden usarse para crear, modificar y acceder tales valores.

  9. TIPOS PREDEFINIDOS BOOLEAN: valores posibles(TRUE, FALSE). Operaciones(AND, OR, NOT). TIPOS DEFINIDOS POR EL USUARIO Type T= array [1..10] of BOOLEAN TIPOS ABSTRACTOS DE DATOS TYPE counters DEFINITION Integer range 0..59 OPERATIONS Up(counters);down(counters); Zero(counters) END counters;

  10. LIGADURA DINAMICA DE TIPOS(APL SNOBOL) A5 (variable simple) A (etiqueta) A1 -2- 51(arreglo unidimensional)

  11. UNIDADES DE PROGRAMAS Descomposición de un programa: 1)Componentes de una Unidad de Programa: -Segmento de código: fijo, se almacena en C[]. -registro de activación: variable, contiene toda la información necesaria para la ejecución de una unidad de programa. Se almacena en D[]. Variables locales y No locales. Información de binding. punto de retorno. 2)Activación de una Unidad de programa: -una única instancia por unidad. -mas de una instancia por unidad(lenguajes recursivos).

  12. ESTRUCTURA DE LOS LP EN TIEMPO DE EJECUCION DIVISION DE LOS LP DE ACUERDO A SUS REQUERIMIENTOS DE MEMORIA a)Estáticos: con requerimientos de memoria predeterminados.(FORTRAN,COBOL). b)Basados en pila: con requerimientos de memoria Predeterminados y con una estrategia de pila.(ALGOL 60). c)Dinámicos: con requerimientos de memoria Impredecibles (LISP,PROLOG,APL, JAVA). d)Híbridos: b)+ c).(PASCAL, C, ADA).

  13. EJEMPLOS DE CADA CLASIFICACION DE LENGUAJES: 1)Estructura del lenguaje FORTRAN (estáticos) . Almacenamiento de un programa FORTRAN en memoria(todos los segmento de código juntos en C[] y todos los registros de activación en D[]). code memory(c) data memory(d) ip

  14. COMPILACION -> LENGUAJE MÁQUINA • LINKADO -> ASIGNACIÓN DE MEMORIA • CARGA -> CARGA DE MEMORIA (EJS. EN SIMPLESEM)

  15. Ejs: Si RA (Registro de activación) de la unidad “i” se asigna a memoria a partir de la posición 830 – La Posición de datos referenciada como [i,10] será direccionada como D[840] • El desplazamiento 0 tiene el puntero de retorno Notación d[i,j] = es la posición de j a partir del RA de la unidad i c[i,j] = instrucción en el desplazamiento j del segmento de codigo de la unidad i X = es c[i,j] o d[i,j] para indicar la dirección de x

  16. El traductor o compilador trasladará nombres de variables a un par de c[i,j] o d[i,j] • El linkador a direcciones c[m] o d[m]

  17. Constructores descriptos: GOTO-CALL-RETURN (Transferencia de control). Sentencia Ligadura Linkeditado RA GOTO X  ip:=& c[i,j] (1) ip:= j COMMON CALL P  d[P,0]:=ip+2 (2) D[m]:=ip+2 MAIN ip:=&c[P,0] ip:=n X RETURN  ip:=d[P,0] ip:=D[m] • i = unidad que está siendo trasladada - x = etiqueta de la instrucción localizada en el desplazamiento j del segmento de código de la unidad i. • Almacena el punto de retorno en la posición 0 del registro de activación de la unidad P - b) Reemplazar el contenido del puntero de instrucción &c[P,0], la primera instrucción de la unidad P transfiere el control a P. (luego del link m en la dirección asignada al segmento de código de P. • Reemplazar el puntero de instrucción en el contenido d[P,0] retorno de la unidad P Link = m dirección de RA de P

  18. Descripción en términos de funcionamiento de SIMPLESEM common I Return Point main main J 0 ip Return Point x K J Data memory x Code memory

  19. common I 5 Return Point main J ip Return Point x K J Data memory Code memory

  20. common I 7 Return Point main ip J Return Point x K J Data memory Code memory

  21. PROGRAMA LIGADURA LINKEDITADO INTEGER I,J I <-> d[COMMON,0] I <-> D[0] COMMON I I <-> d[MAIN,1] I <-> D[2] CALL X 10 <-> c[MAIN,3] 10 <-> C[3] GOTO 10 X <-> c[X,0] X <-> D[5]

  22. SOUBROTINE X I<-> d[COMMON,0] I <-> D[0] INTEGER K,J K<-> d[X,1] K <-> D[4] COMMON I J<-> d[X,2] J <-> D[5] K=5 I=6 J=1+K RETURN END

  23. common 2 main ip x Data memory Code memory

  24. 2)Estructura del lenguaje ALGOL (Basado en Pila) unit A unit B unit C unit D end D end B end C A unit E unit F E B end F F G C unit G end E end G D end A

  25. Unidades de ejecución  Disjuntas  Anidadas Problemas básicos  Recursividad  Variables dinámicas: type T=array [m,n] of real

  26. VENTAJA BASICA DE UTILIZAR UNA ESTRUCTURA DE PILA: Cada registro de activación que se carga en memoria, y se deja libre ese espacio al finalizar su ejecución!! 1)Agregar en los registros de activación enlaces dinámicos (además del punto de retorno). 2)Agregar dos punteros mas a SIMPLESEM: 2.1)free: siguiente dirección libre de memoria. 2.3)current: apunta al inicio del registro de activación actual.

  27. CALL B  D[free]:= ip+5 D[free+1]:=current current :=free free:= free+S (S tamaño de B) ip:= n RETURN  free:=current current:=D[current+1] ip:=D[free] Ejemplo:sea la siguiente secuencia de llamadas de rutinas FGFGFEA

  28. Genera la siguiente secuencia SIMPLESEM A E F G F G Current F Free

  29. 3)ESTRUCTURA DE LOS LENGUAJES DINAMICOS(APL,SNOBOL,LISP) CONCEPCION: lenguajes con reglas dinámicas  A locación  Ligadura de tipo  Ligadura de ámbito IMPLEMENTACION: Almacenamiento de los registros de activación en una pila y enlace de los mismos a través de ENLACES DINAMICOS

  30. ESTRUCTURA DE UN PROGRAMA APL Main program Subprogram SUB Function subprogram FUN

More Related