UNIDAD 2 Lenguajes y Automatas

Herramientas computacionales ligadas con lenguajes
  • Interpretes
  • Ensambladores
  • Legadores
  • Cargadores
  • Procesadores
  • Editores
  • Depuradores
  • Perfiladores
  • Administradores de Proyectos


TRADUCTOR:

Un traductor es un programa que tiene como entrada un texto escrito en un lenguaje (lenguaje fuente) y como salida produce un texto escrito en un lenguaje (lenguaje objeto) que preserva el significado de origen.

Ejemplos de traductores son los ensambladores y los compiladores.

COMPILADOR:

El compilador es un programa informático que traduce un programa escrito en lenguaje de programación y lo pasa a lenguaje de programación, podemos decir que este programa nos permite traducir un código fuente de un programa en lenguaje de nivel alto, y lo pasmos a otro nivel inferior (lenguaje maquina).

ENSAMBLADORES:

El ensamblador es el programa en que se realiza la tracción de un programa escrito en ensamblador y lo pasa a lenguaje maquina. Directa o no directa la traducción en que las instrucciones no son mas que instrucciones que ejecuta la computadora.


 analizador léxico:

Un analizador léxico: es la primera fase de un compilador consistente en un programa que recibe como entrada el código fuente de otro programa y produce una salida compuesta de tokens (componentes léxicos) o símbolos.

Función de analizador léxico:

La principal función consiste en leer la secuencia de caracteres del programa fuente, carácter a carácter y elaborar como salida la secuencia de componentes léxicos.


Los componentes léxicos representan:

- Palabras reservadas: IF, WHILE
-Identificadores: VARIABLES, FUNCIONES
- Símbolos especiales: ;, (), {}
- Operadores: =, >,<, +
- Constantes numéricas: ENTEROS, FLOTANTES
- Constantes de carácter

Resultado de imagen para herramientas computacionales ligadas con lenguajes de programacion



Resultado de imagen para herramientas computacionales ligadas con lenguajes de programacion


tIPOS DE LENGUAJES


·         Lenguaje Declarativos.- Son los más parecidos al castellano o ingles en su potencia expresiva y funcionalidad y están ene le nivel más alto respecto a los otros. Son fundamentalmente lenguaje de órdenes, denominados por sentencias que expresan “Lo que hay que hacer” en vez de “Como hacerlo”

·         Lenguaje de Alto Nivel.- Son los más utilizados como lenguaje de programación, Aunque no son fundamentalmente declarativos, estos lenguajes permiten que los algoritmos se expresen en un nivel y estilo de escritura fácilmente legible y comprensible por otros programadores. Además, los lenguajes de alto nivel suelen tener la característica de “Transportabilidad”.

·         Lenguajes Ensamblador. Y Lenguaje Maquina.- Cada tipo de maquina tiene su propio lenguajes de maquina distinto y su lenguaje ensamblador asociado. El lenguaje ensamblador es simplemente una representación simbólica del lenguaje maquina asociado, lo cual permite una programación menos tediosa que con el anterior.

·         Lenguaje natural (castellano)
Nosotros estamos relacionados con el concepto tradicional de gramática que, de esta forma intuitiva, podemos considerar un conjunto de reglas el cual nos indican que es correcto y que no lo es del, lenguaje natural. Con este fin podemos acércanos a la definición más clara y formal de la lengua castellana.
·         Lenguaje artificial.
En este lenguaje aplicamos el mismo método en el  cual definimos un fragmento del lenguaje de programación. Donde pretendemos describir las instrucciones el cual nos permite asignar un valor a una expresión ó a una variable en un lenguaje C.
Lenguaje regular.
Llamamos así  a los lenguajes porque sus palabras contienen "regularidades" o repeticiones de los mismos componentes, por ejemplo en este lenguaje L1 = {ab, abab, ababab, abababab,...} Este ejemplo podemos apreciar las palabras de L1 son solo repeticiones de "ab" donde se repiten varias veces. Su regularidad consiste en las palabras que contienen "ab" varias veces (S, 2015).

HERRAMIENTAS COMPUTACIONALES LIGADAS CON LENGUAJES


·         Interpretes
Los intérpretes son los que realizan normalmente dos operaciones:
·         Traducen el código fuente a un formato interno.
·         Ejecuta o interpretan el programa traducido al formato interno.
·         Donde la primera pertenece al interprete el cual llama a veces al compilador, así se genera el código interno, pero no es el lenguaje de máquina, ni lenguaje de símbolos, ni mucho menos un lenguaje de nivel alto.

·         Ensambladores
El ensamblador es el programa en que se realiza la tracción de un programa escrito en ensamblador y lo pasa a lenguaje máquina. Directa o no directa la traducción en que las instrucciones no son más que instrucciones que ejecuta la computadora.

·         Legadores
Un ligador es un programa de sistema que combina dos o más programas objetos separados y permite que se hagan referencias unos a otros, o sea, que cada uno de estos programas pueden hacer referencia a código ó variables de los otros programas con los que está enlazado.
·         Compilador
El compilador es un programa informático que traduce un programa escrito en lenguaje de programación y lo pasa a lenguaje de programación, podemos decir que este programa nos permite traducir un código fuente de un programa en lenguaje de nivel alto, y lo pasmos a otro nivel inferior (lenguaje maquina).

·         Cargadores
Un cargador es un programa que coloca en la memoria para su ejecución, el programa guardado en algún dispositivo de almacenamiento secundario. Un cargador es un programa del sistema que realiza la función de carga, pero muchos cargadores también incluyen relocalización y ligado.
·         Procesadores
·         Editores
·         Depuradores
·         Perfiladores
·         Administradores de Proyectos

ESTRUCTURA DE UN TRADUCTOR

Un traductor es un programa que tiene como entrada un texto escrito en un lenguaje (lenguaje fuente) y como salida produce un texto escrito en un lenguaje (lenguaje objeto) que preserva el significado de origen.
1.       Ejemplos de traductores son los ensambladores y los compiladores.


2.       En el proceso de traducción se identifican dos fases principales:
  1. Fase de análisis

  1. Fase de Síntesis

FASES DE UN COMPILADOR


1.       Analizador léxico:
Lee la secuencia de caracteres de izquierda a derecha del programa fuente y agrupa las secuencias de caracteres en unidades con significado propio (componentes léxicos o “tokens” en inglés).
• Las palabras clave, identificadores, operadores, constantes numéricas, signos de puntuación como separadores de sentencias, llaves, paréntesis, etc., son diversas clasificaciones de componentes léxicos.

2.       Análisis sintáctico:
Determina si la secuencia de componentes léxicos sigue la sintaxis del lenguaje y obtiene la estructura jerárquica del programa en forma de árbol, donde los nodos son las construcciones de alto nivel del lenguaje.
• Se determinan las relaciones estructurales entre los componentes léxicos, esto es semejante a realizar el análisis gramatical sobre una frase en lenguaje natural. La estructura sintáctica la definiremos mediante las gramáticas independientes del contexto.

3.       Análisis semántico:
Realiza las comprobaciones necesarias sobre el árbol sintáctico para determinar el correcto significado del programa.
        Las tareas básicas a realizar son: La verificación e inferencia de tipos en asignaciones y expresiones, la declaración del tipo de variables y funciones antes de su uso, el correcto uso de operadores, el ámbito de las variables y la correcta llamada a funciones.
        Nos limitaremos al análisis semántico estático (en tiempo de compilación), donde es necesario hacer uso de la Tabla de símbolos, como estructura de datos para almacenar información sobre los identificadores que van surgiendo a lo largo del programa. El análisis semántico suele agregar atributos (como tipos de datos) a la estructura del árbol semántico.

4.       Generación y optimización de código intermedio:
La optimización consiste en la calibración del árbol sintáctico donde ya no aparecen construcciones de alto nivel. Generando un código mejorado, ya no estructurado, más fácil de traducir directamente a código ensamblador o máquina, compuesto de un código de tres direcciones (cada instrucción tiene un operador, y la dirección de dos apoderándoos y un lugar donde guardar el resultado), también conocida como código intermedio.

5.       Generador de código objeto:
Toma como entrada la representación intermedia y genera el código objeto. La optimización depende de la máquina, es necesario conocer el conjunto de instrucciones, la representación de los datos (número de bytes), modos de direccionamiento, número y propósito de registros, jerarquía de memoria, encauzamientos, etc.

• Suelen implementarse a mano, y son complejos porque la generación de un buen código objeto requiere la consideración de muchos casos particulares.

Comentarios

Entradas más populares de este blog

UNIDAD 6

UNIDAD 5

UNIDAD 3