Diseño de Lenguajes
Enviado por Programa Chuletas y clasificado en Matemáticas
Escrito el en español con un tamaño de 6,7 KB
Implementacion lenguaje de programacion: construyendo un traductor que se encargue de traducir los programas escritos en el lenguaje de programacion a lenguaje de maquina que puede ser ejecutado directamente por alguna computadora.
Aspectos principales de un leguaje de programacion: se corresponden estrechamente con los componentes de la computadora: 1) Datos: Datos elementales o estructuras que se van a manipular. 2) Operaciones primitivas: Operaciones utiles para la manipulacion de datos. 3) Control de secuencia: Mecanismo para el control del orden para ejecutar operaciones primitivas 4) Acceso a datos: Control a datos suministrados a cada ejecucion. 5) Gestion de almacenamiento: Mecanismos para controlar la asignacion de almacenamiento para programas.
6) Entorno: Comunicacion con un entorno externo que contiene datos y programas a procesar.
Traductor: Es un procesador de lenguajes que acepta programas en lenguaje fuente (de alto o bajo nivel) como entrada y produce programas funcionalmente equivalentes en otro lenguaje objeto como salida.
Traductores: Ensamblador: Programa que traduce instrucciones escritas en lenguaje ensamblador (representacion simbolica) al código propio de la máquina (binario), ejecutable directamente en ella. Compilador: (Ejem el GCC de C++) Programa que traduce (compila) el código fuente escrito en un lenguaje de programación de alto nivel (p. ej. C++ ) en un conjunto de instrucciones en lenguaje maquina (binario) que pueden ser entendidas por la CPU de una computadora. Linker: es un programa que toma los archivos de có digo objeto generado en los primeros pasos del proceso de compilació n, la informació n de todos los recursos necesarios (biblioteca), quita aquellos recursos que no necesita, y enlaza el có digo objeto con sus bibliotecas con lo que finalmente produce un archivo ejecutable. Preprocesador o macroprocesador: Un preprocesador es un programa separado que es invocado por el compilador antes de que comience la traducció n real. Un preprocesador de este tipo puede eliminar los comentarios, incluir otros archivos, dejandolo listo para ser traducido y ejecutado.
Enlace y tiempo de enlace: Enlace: En un elmento de programa es la eleccion de una propiedad de un conjunto de porpiedades posibles. Tiempo de enlace: Es el momento de procesamiento en que se hace esta eleccion.
Clases de tiempos de enalces: Enlace en tiempo de ejecucion: se lleva a cabo durante la ejecucion del programa. Enlaces de variables a sus valores. (hay dos: Al entrar a un subprograma, En puntos arbritrarios durante la ejecucion) Enlaces en tiempo de compilacion: declaran exactamente qué clase de objetos se están utilizando y es mas ventajoso que el anterior porque permite al compilador realizar importantes optimizaciones. (hay tres: Enlaces elejidos por el programador, Enlaces elejidos por el compilador, Enlaces elejidos por el cargado r .) Enlaces en tiempo de implementacion del lenguaje y Enlace en tiempo de definicion del lenguaje.
Etapas de Traduccion de programas: Analisis Lexico: Agrupa los identificadores, palabras claves, simbolos de operadores, etc, generado unidades llamadas elementos lexicos. Analisis sintactico: Llamada parsing se identifican estructuras mayores de programas (declaraciones, expresiones) usandos los elementos lexicos anteriores Analisis semantico: se procesan las estructuras sintacticas reconocidas por el analizador sintactico y comienza a tomarforma la estructura del codigo objeto ejecutable.Optimizacion : Es aplicado al código objeto, para mejorarlo, por ejemplo; eliminacion de sumas con ceros, comentarios.
El Analisis Sintaxtico convierte el texto de entrada en otras estructuras (comúnmente árboles), que son más útiles para el posterior análisis. Un analizador léxico crea nodos de una secuencia de caracteres de entrada y son estos nodos los que son procesados por el analizador sintáctico para construir la estructura de datos, por ejemplo un árbol de análisis.
Gramatica Formal: Es la definicion formal de la sintaxis de un lenguaje de programacion y se compone por un conjunto de reglas q especifican los elementos lexicos para formar programas permitidos, un Eje. es la gramatica BNF.
El Backus-Naur form (BNF): metasintaxis usada para expresar gramáticas libres de contexto: es decir, una manera formal de describir lenguajes formales. se escribe como:
::=, donde es no terminal y es una secuencia de simbolos separadas por "|", indicando una opcion. los simbolos que nunca aparecen en el lado izquierdo son terminales.Ejem. ::= [< distincion > ] | ; ::= | < inicial > "." (dejo e sin especificar o como una abstraccion )
Notacion BNF extendida: se realizo para permitir descripciones mas faciles de los lenguajes tales como [] para elemento s Optativo s, [,] para escoger de una serie de alternativa una sola opcion, y {}* para una serie arbietraria de casos de un elemento.
Arbol de analisis sintactico
El árbol de análisis sintáctico muestra como puede construirse una cadena con respecto a la gramática es un árbol que satisface lo sig: 1)Cada nodo que no es una hoja se etiqueta con un símbolo no-terminal 2)Cada hoja esta etiquetada con un componente lexico. Las hojas de izquierda a derecha forman la frase (el programa fuente). 3)La raíz se etiqueta x el símbolo no-terminal inicial. 4) genera la cadena formada por la lectura de los símbolos terminales de sus hojas de izquierda a derecha.
Los lenguajes habitualmente reconocidos por los analizadores sintácticos son los lenguajes libres de contexto.
Diagrama de sintaxis: Es una forma de expresar reglas de BNF extendida, cada regla esta expresada por un camino que va de la entrada (desde la izquierda) a la salida (a la derecha). Ejem. a) ::= seria w->[ w1 ]->[ w2 ]->[ w3 ]
Aspectos principales de un leguaje de programacion: se corresponden estrechamente con los componentes de la computadora: 1) Datos: Datos elementales o estructuras que se van a manipular. 2) Operaciones primitivas: Operaciones utiles para la manipulacion de datos. 3) Control de secuencia: Mecanismo para el control del orden para ejecutar operaciones primitivas 4) Acceso a datos: Control a datos suministrados a cada ejecucion. 5) Gestion de almacenamiento: Mecanismos para controlar la asignacion de almacenamiento para programas.
6) Entorno: Comunicacion con un entorno externo que contiene datos y programas a procesar.
Traductor: Es un procesador de lenguajes que acepta programas en lenguaje fuente (de alto o bajo nivel) como entrada y produce programas funcionalmente equivalentes en otro lenguaje objeto como salida.
Traductores: Ensamblador: Programa que traduce instrucciones escritas en lenguaje ensamblador (representacion simbolica) al código propio de la máquina (binario), ejecutable directamente en ella. Compilador: (Ejem el GCC de C++) Programa que traduce (compila) el código fuente escrito en un lenguaje de programación de alto nivel (p. ej. C++ ) en un conjunto de instrucciones en lenguaje maquina (binario) que pueden ser entendidas por la CPU de una computadora. Linker: es un programa que toma los archivos de có digo objeto generado en los primeros pasos del proceso de compilació n, la informació n de todos los recursos necesarios (biblioteca), quita aquellos recursos que no necesita, y enlaza el có digo objeto con sus bibliotecas con lo que finalmente produce un archivo ejecutable. Preprocesador o macroprocesador: Un preprocesador es un programa separado que es invocado por el compilador antes de que comience la traducció n real. Un preprocesador de este tipo puede eliminar los comentarios, incluir otros archivos, dejandolo listo para ser traducido y ejecutado.
Enlace y tiempo de enlace: Enlace: En un elmento de programa es la eleccion de una propiedad de un conjunto de porpiedades posibles. Tiempo de enlace: Es el momento de procesamiento en que se hace esta eleccion.
Clases de tiempos de enalces: Enlace en tiempo de ejecucion: se lleva a cabo durante la ejecucion del programa. Enlaces de variables a sus valores. (hay dos: Al entrar a un subprograma, En puntos arbritrarios durante la ejecucion) Enlaces en tiempo de compilacion: declaran exactamente qué clase de objetos se están utilizando y es mas ventajoso que el anterior porque permite al compilador realizar importantes optimizaciones. (hay tres: Enlaces elejidos por el programador, Enlaces elejidos por el compilador, Enlaces elejidos por el cargado r .) Enlaces en tiempo de implementacion del lenguaje y Enlace en tiempo de definicion del lenguaje.
Etapas de Traduccion de programas: Analisis Lexico: Agrupa los identificadores, palabras claves, simbolos de operadores, etc, generado unidades llamadas elementos lexicos. Analisis sintactico: Llamada parsing se identifican estructuras mayores de programas (declaraciones, expresiones) usandos los elementos lexicos anteriores Analisis semantico: se procesan las estructuras sintacticas reconocidas por el analizador sintactico y comienza a tomarforma la estructura del codigo objeto ejecutable.Optimizacion : Es aplicado al código objeto, para mejorarlo, por ejemplo; eliminacion de sumas con ceros, comentarios.
El Analisis Sintaxtico convierte el texto de entrada en otras estructuras (comúnmente árboles), que son más útiles para el posterior análisis. Un analizador léxico crea nodos de una secuencia de caracteres de entrada y son estos nodos los que son procesados por el analizador sintáctico para construir la estructura de datos, por ejemplo un árbol de análisis.
Gramatica Formal: Es la definicion formal de la sintaxis de un lenguaje de programacion y se compone por un conjunto de reglas q especifican los elementos lexicos para formar programas permitidos, un Eje. es la gramatica BNF.
El Backus-Naur form (BNF): metasintaxis usada para expresar gramáticas libres de contexto: es decir, una manera formal de describir lenguajes formales. se escribe como:
Arbol de analisis sintactico
El árbol de análisis sintáctico muestra como puede construirse una cadena con respecto a la gramática es un árbol que satisface lo sig: 1)Cada nodo que no es una hoja se etiqueta con un símbolo no-terminal 2)Cada hoja esta etiquetada con un componente lexico. Las hojas de izquierda a derecha forman la frase (el programa fuente). 3)La raíz se etiqueta x el símbolo no-terminal inicial. 4) genera la cadena formada por la lectura de los símbolos terminales de sus hojas de izquierda a derecha.
Los lenguajes habitualmente reconocidos por los analizadores sintácticos son los lenguajes libres de contexto.
Diagrama de sintaxis: Es una forma de expresar reglas de BNF extendida, cada regla esta expresada por un camino que va de la entrada (desde la izquierda) a la salida (a la derecha). Ejem. a)