Tarea No. 1
¿Que son los editores, tipos y formas para la construcción sintáctica del código programable?
Un editor de texto es un programa que permite crear y modificar archivos digitales compuestos únicamente por texto sin formato, conocidos comúnmente como archivos de texto ó texto plano. El programa lee el archivo e interpreta los bytes le í dos según el c ó digo de caracteres que usa el editor. Hoy en día es comúnmente de 7- o 8-bits en ASCII o UTF-8, rara vez EBCDIC.
Por ejemplo, un editor ASCII que lee el n ú mero binario 0110 0001 (decimal 97 ó hexadecimal 61) en el archivo lo representar á en la pantalla por la figura a, que el usuario reconoce como la letra "a" y ofrecer á al usuario las funciones necesarias para cambiar el n ú mero binario en el archivo.
Los editores de texto son incluídos en el sistema operativo o en algún Paquete de software instalado y se usan cuando se deben crear o modificar archivos de texto como archivos de configuración, guiones o el C ó digo fuente de algún programa.
El archivo creado por un editor de texto incluye por convención en DOS y Microsoft Windows la extensión .txt, aunque pueda ser cambiada a cualquier otra con posterioridad. Tanto Unix como GNU/Linux dan al usuario total libertad en la denominación de sus archivos.
Al trasladar archivos de texto de un sistema operativo a otro se debe considerar que existen al menos dos convenciones diferentes para se ñ alar el término de una línea: Unix y GNU/Linux usan s ó lo retorno de carro en cambio Microsoft Windows usa al término de cada línea retorno de carro y salto de línea.
Diferencia entre texto "plano" y archivos de texto con diagramación
Los editores de textos "planos" se distinguen de los procesadores de textos en que se usan para escribir s ó lo texto, sin formato y sin imágenes, es decir sin diagramación.
El texto plano es representado en el editor mostrando todos los caracteres presentes en el archivo. Los únicos caracteres de formato son los caracteres de control del respectivo c ó digo de car á cteres. En la pr á ctica, estos son : Salto de l í nea, Tabulaci ó n horizontal y Retorno de carro. El c ó digo de car á cteres m á s usado en el a ñ o 2007 es el ASCII.
Los documentos creados por un procesor de texto generalmente contienen m á s car á cteres de control para darle al texto un formato o diagramaci ó n particular, a menudo protegidos de ser copiados por una Marca registrada como por ejemplo negrilla, cursiva, columnas, tablas, tipograf í a, etc. En un comienzo se utilizaron tales formatos solo en Autoedici ó n, pero hoy se utilizan incluso en el procesador de texto m á s sencillo.
Los procesadores de texto pueden en la mayor í a de los casos almacenar un texto plano en un archivo de texto plano, pero se le debe ordenar expl í citamente que se desea esa opci ó n, de otra manera podr í a guardarlo con alg ú n formato especial.
Historia
Antes que existieran los editores de texto, los datos y el c ó digo fuente de los programas deb í a ser entregado a la m á quina por medio de tarjetas perforadas. El programa, un fajo de tarjetas, era le í do por un lector de tarjetas perforadas. Cada car á cter era representado por una ó m á s perforaciones en una columna de 8 o 10 posibles perforaciones. No m á s de 80 car á cteres pod í an ser representados en una tarjeta.
Con los Teletipos aparecieron tambi é n los primeros editores de texto que en un comienzo solo mostraban una l í nea del texto. Mandatos especiales mov í an el "cursor" en la cuatro direcciones.
El siguiente paso se dio con la aparici ó n del monitor de tubo de rayos cat ó dicos que permiti ó la edici ó n a "pantalla completa" es decir mostrando varias l í neas a la vez. El aumento de productividad fue enorme, por la rapidez y simplicidad del mecanismo. Uno de los priomeros editores de texto fue el O26 escrito para la consola del operador de la serie de computadores CDC 6000 a mediados de la d é cada de los 19'60. Otro precursor es el vi, escrito en los 19'70 que a ú n es el estandar para los sistemas operativos Unix y GNU/Linux.
Tipos de editores de texto
Hay una gran variedad de editores de texto. Algunos son de uso general, mientras que otros est á n dise ñ ados para escribir o programar en un lenguaje. Algunos son muy sencillos, mientras que otros tienen implementadas gran cantidad de funciones.
El editor de texto debe ser considerado como una herramienta de trabajo del programador ó administrador de la m á quina. Como herramienta permite realizar ciertos trabajos, pero tambi é n requiere de aprendizaje para que el usuario conozca y obtenga destreza en su uso. La llamada curva de aprendizaje es una representaci ó n de la destreza adquirida a lo largo del tiempo de aprendizaje. Un editor puede ofrecer muchas funciones, pero si su curva de aprendizaje es muy larga, puede desanimar el aprendizaje y terminar á siendo dejado de lado. Puede que un editor tenga una curva de aprendizaje muy empinada y corta, pero si no ofrece muchas funciones el usuario le reemplazar á por otro m á s productivo. Es decir la elecci ó n del editor m á s apropiado depende de varios factores, alguno de ellos muy subjetivos. Esta coyuntura de intereses ha dado a lugar a largas discusiones sobre la respuesta a la pregunta " ¿ cual es el mejor editor de texto?". Hoy en d í a muchos editores originalmente salidos de Unix o GNU/Linux han sido portados a otros sistemas operativos, lo que permite trabajar en otro sistemas sin tener que aprender el uso de otro editor.
Algunos editores son sencillos mientras que otros ofrecen una amplia gama de funciones.
Editores para profesionales deben ser capaces de leer archivos de gran extensi ó n, mayor que la capacidad e la memoria RAM de la m á quina y tambi é n arrancar r á pidamente, ya que el tiempo de espera disminuye la concentraci ó n y disminuye de por si la productividad.
Algunos editores de texto incluyen el uso de lenguajes de programaci ó n para automatizar engorrosos o repetidos procedimientos a realizar en el texto. Por ejemplo, Emacs puede ser adaptado a las necesidades del usuario, incluso las combinaciones de teclas para ejecutar funciones pueden ser adaptadas y es programable en Lisp.
Muchos editores de texto incluyen coloreado de sintaxis y funciones que ofrecen al usuario completar una palabra iniciada usando para ello la configuraci ó n.
Algunas funciones especiales son:
Editores dise ñ ados para un lenguaje de programaci ó n determinado, con coloreado de sintaxis, macros, completaci ó n de palabras, etc.
Editores con regiones plegables. A veces no todo el texto es relevante para el usuario. Con este tipo de editores ciertas regiones con texto irrelevante pueden ser plegadas, escondidas, mostrando al usuario solo lo importante del texto.
IDE es un editor m á s otras herramientas de trabajo, compiladores, extractores de diferencias entre dos textos, repositorios, etc, inclu í dos en un solo programa.
Analisador sintáctico
Un analizador sint á ctico ( parser ) es un proceso que analiza secuencias de tokens para determinar su estructura gramatical respecto a una gram á tica formal dada. Un parser es un programa que reconoce si una o varias cadenas forman parte de un determinado lenguaje. El an á lisis sint á ctico convierte el texto de entrada en otras estructuras ( á rboles), capturan la jerarqu í a impl í cita de la entrada. Un analizador léxico crea tokens de una secuencia de caracteres de entrada y son los que son procesados por el analizador sint á ctico para construir la estructura de datos, por ejemplo un á rbol de an á lisis o á rboles abstractos de sintaxis. Los lenguajes habitualmente reconocidos por los analizadores sint á cticos son los lenguajes libres de contexto. Cabe notar que existe una justificaci ó n formal que establece que los lenguajes libres de contexto son aquellos reconocibles por un autómata de pila, de modo que todo analizador sint á ctico que reconozca un lenguaje libre de contexto es equivalente en capacidad computacional a un aut ó mata de pila. Fueron estudiados durante los 70 del siglo XX, detect á ndose numerosos patrones de funcionamiento, y creo programas generadores de analizadores sint á cticos a partir de una especificación de la sintaxis del lenguaje en forma Backus-Naur por ejemplo, GNU bison.
Clasificaci ó n de analizadores sint á cticos
La tarea esencial es determinar si una determinada entrada puede ser derivada desde el s í mbolo inicial, usando las reglas de una gram á tica formal, y como hacer esto, existen esencialmente dos formas:
Top-Down-Parser: puede empezar con el s í mbolo inicial e intentar transformarlo en la entrada, ir dividiendo la entrada en partes cada vez m á s peque ñ as, as í funcionan los analizadores LL, un ejemplo: javaCC.
Bottom-Up-Parser: puede empezar con la entrada e intentar llegar hasta el s í mbolo inicial, intenta encontrar los s í mbolos m á s peque ñ os y construir la jerarqu í a de s í mbolos hasta el inicial, los analizadores LR funcionan as í como el Yacc.
Otros tipos de analizadores son: Recursive-descent-parset, Chart-parser, Left-comer-parser, LR-parser.
Dos Partes de un compilador
Front End: es la parte que analiza el c ó digo fuente, comprueba su validez, genera el á rbol de derivaci ó n y rellena los valores de la tabla de s í mbolos. Esta parte suele ser independiente de la plataforma o sistema para la que se a compilar.
Back End: es la parte que genera el c ó digo m á quina, espec í fico de una plataforma, a partir de los resultados de la fase de an á lisis, realizada por el Front End.
Esta divisi ó n permite que el mismo Back End se utilice para generar el c ó digo m á quina de varios lenguajes de programaci ó n distintos y que el mismo Front End que sirve para analizar el c ó digo fuente de un lenguaje de programaci ó n concreto sirva para generar c ó digo m á quina en varias plataformas distintas.
El c ó digo que genera el Back End normalmente no se puede ejecutar directamente, necesita enlazarse por un programa enlazador (linker)
Tipos de compiladores
Cruzados: generan c ó digo para un sistema distinto del que est á n funcionando.
Optimizadores: cambian el c ó digo para mejorar su eficiencia, manteniendo la funcionalidad del programa original.
De una sola pasada: generan el c ó digo m á quina a partir de una ú nica lectura del c ó digo fuente.
De varias pasadas: necesitan leer el c ó digo fuente varias veces antes de poder producir el c ó digo m á quina.
JIT (Just In Time): forman parte de un int é rprete y compilan partes del c ó digo seg ú n se necesitan.
Actualmente existen herramientas que facilitan la tarea de escribir compiladores ó intérpretes informáticos. Estas herramientas permiten generar el esqueleto del analizador sintáctico a partir de una definición formal del lenguaje de partida, especificada normalmente mediante una gramática formal y barata, dejando únicamente al programador del compilador la tarea de programar las acciones semánticas asociadas.
Fuentes:
http://www.santiago.cu/cienciapc/numeros/2000/1/articulo01.html
http://es.wikipedia.org
TIPOS DE ANALISIS
La construcción de un lenguaje requiere una serie de características especiales principalmente ordenes que registra la forma:
La tecnología de compilación utilizada
Formadores de texto: interpreta una cadena de caracteres.
Compiladores de silicio: utiliza variables representada por señales lógicas (0,1).
Interpretes de consultas: aquel que traduce operaciones que nos representa datos.
Contexto de un compilador
Es necesario otros programas para crear un programa ejecutable para lo cual se divide en modulo de operación y ejecución.
Análisis de un programa fuente
Análisis lineal: Es donde la cadena de caracteres constituye el programa fuente. Librerías, cabecera; declaración de variables; inicio principal; cuerpo del programa; fin.
Análisis jerárquico: Es desde los caracteres se agrupan. Mayor peso, se distingue en la ejecución del programa. Void uno(int,int) funcion prototipo variables.
Análisis semántico: jerárquicamente en conexiones unidades, realiza reuniones para asegurarse que los componentes de un programa tengan un modo significativo. Tener logica en la escritura.
calculo_velicidad=velocidad_inicial+velocidad*60
identificador-sigoigual-identificador-signo-signo-identificador-signo-numero
Análisis sintáctico
Implica agrupar los componentes léxico del programa con análisis léxico identifica los componentes de un código, incluyendo espacios. en un programa los frases gramaticales un compilador utiliza para sintetizar las salida.
Características de un programa
fuente:
Tarea 2
Explicar en que consiste una fase de análisis en la codificación de errores(Software y hardware).
Un estudio de análisis nos proporciona el estudio mas especifico en un software, en el cual se tiene que examinar cada elemento de código que cumpla específicamente con la función predeterminada para su uso, y así corregir las fallas del mismo cuando se encuentren o se al tener al fin que se desea tener, como consecuencia tenemos una reingenieria, distribuida en cada fase de la elaboración de software y no debe que dan atras de igual forma al hardware que de igual manera el análisis para su elaboración debe cumplir con las especificaciones de calidad, eficiencia, utilidad.
Se debe tener en cuenta que en cada fase del desarrollo de software, se analiza de forma general el no tener errores, de una forma que estemos codificando dicho programa con lógica y respetando los diferentes análisis, dentro de la secuencia operabilidad.
algunos errores en la programación:
El análisis sintáctico puede ser representado en operaciones aritméticas
lógicas, de sintaxis es el argumento a símbolos propia interna de la
arquitectura computaciones. Ejemplos: los lenguajes de programación definen
las operaciones reales de aplicaciones.
identificador=expresión
identificador=expresión termino
while(expresion) do preposición
if(expresion) else preposición
Tarea 3
Realizar un programa en C++ que analice sintácticamente la expresión for,
case, función prototipo.
2)Realizar un análisis sintáctico, en forma de árbol, para poder realizar la
conversión decimal a binario y binario a decimal (4 dígitos).