ordinario inovacion
Post on 05-Aug-2015
199 Views
Preview:
TRANSCRIPT
CSS COMPILER
El proyecto “CSS COMPILER” busca la implementación de un compilador
relacionada con hojas de estilo, atreves de la generación de autómatas,
matrices de transición y algunas estructuras que bajo un análisis realizado
previamente, nos den la mayor eficiencia posible y mediante algunos
principios de innovación hacer que este proyecto sea muy eficaz en su
ejecución.
CSS
AUTORES:
DIEGO SANCHEZ
HERNANDEZ
GERARDO MUNIVE
MORALES
BRUCE NAVA
MALDONADO
AZAEL BECERRIL
RAMOS
LUIS F. SANCHEZ
VIDALS
CSS COMPILER
DIEGO SANCHEZ HERNANDEZ GERARDO MUNIVE MORALES BRUCE NAVA MALDONADO AZAEL BECERRILA RAMOS LUIS F. SANCHEZ VIDALS Página 1
CSS
INDICE
INTRODUCCION……………………PAG .2 1.1 Planteamiento del Problema
1.2 Objetivo del Trabajo de Investigación
1.3 Importancia de la Investigación
1.4 Alcances y limitaciones
1.5 Agendas de Trabajo
1.6 Recursos de Hardware, Software y Humanos
ESTUDIO TEORICO……………………PAG.5 2.1 Para la mejora del software
ESTADO INICIAL DEL SISTEMA.PAG.13 3.1 Descripción de Software
3.2 Diagramas de Soporte del Software
3.3 Pruebas del software
ANÁLISIS EXPERIMENTAL PARA LA
MEJORA DEL SISTEMA………...…PAG.16
4.1 Significado de la Tabla de Mejoras conforme a los criterios del análisis
4.2 Aplicación de Activadores Operacionales para la Mejora Creativa del Software
4.3 Mejoras Creativas del Software para su Implementación
ESTADO FINAL DEL SOFTWARE
MEJORADO ……………………..…….PAG.20 5.1 Especificación del Software Mejorado
5.2 Diagramas de Soporte del Software en el análisis y Diseño Mejorado
5.3 Elementos de Importancia para el Software Mejorado
5.4 Pruebas de Funcionalidad del Software Mejorado
CONCLUSIONES………………………PAG.26 6.1 Referencias
CSS COMPILER
DIEGO SANCHEZ HERNANDEZ GERARDO MUNIVE MORALES BRUCE NAVA MALDONADO AZAEL BECERRILA RAMOS LUIS F. SANCHEZ VIDALS Página 2
CSS
Planteamiento del Problema
El proyecto que nosotros decidimos realizar fue un compilador de hojas de estilo
“.css”, ya que estábamos en proceso de la realización de este, pero por falta de
tiempo solo desarrollamos la parte del analizador léxico aun contando con muchas
fallas y su ejecución no cuenta aún con una interfaz gráfica.
<
Lo que nosotros nos planteamos al escoger este proyecto es buscar la
implementación de un analizador léxico que funcione de manera correcta, un
analizador sintáctico que funcione de manera eficaz y rápida, para que así nuestro
Proyecto presente un gran avance en la busca de la creación de un compilador.
Objetivo del Trabajo de Investigación
El objetivo que el grupo de trabajo se ha propuesto es lograr concluir este proyecto
con las siguientes características:
Mejorar el Analizador Léxico.
Implementar Analizador Sintáctico.
Lograr que el análisis de las css sea lo más correcta posible.
Implementar una interfaz gráfica amigable y manejable para el usuario.
Que la conjunción de los dos analizadores a la hora de su ejecución
sea lo mas rápido que sea posible.
Los anteriores puntos mencionados es lo que el grupo de trabajo se ha planteado
y son las características que rigen la realización de nuestro proyecto, esto es lo
que se propone como parte de nuestros objetivos a cumplir.
Importancia de la Investigación
La importancia que tiene esta investigación para nosotros es lograr concluir este
proyecto de manera efectiva, ya que, desde nuestro punto de vista representa un
reto en la parte de la programación y nos es interesante por qué tenemos que
generar ciertos puntos que son indispensables para la operación de este
programa, como lo son la generación de un autómata, una matriz de transiciones
y la parte la cual llevara a cabo el proceso de compilación.
CSS COMPILER
DIEGO SANCHEZ HERNANDEZ GERARDO MUNIVE MORALES BRUCE NAVA MALDONADO AZAEL BECERRILA RAMOS LUIS F. SANCHEZ VIDALS Página 3
CSS
Alcances y limitaciones
Los alcances que esperamos lograr realizar como ya se ha mencionado
anteriormente es la conclusión de los puntos propuestos de este proyecto
(Analizador Léxico, Analizador Semántico, Interfaz amigable al usuario).
Los problemas que nosotros podemos encontrar al realizar esta investigación son:
Que el autómata y matriz de transiciones estén mal analizados.
Que nuestro sistema no pueda lograr la ejecución.
Que se pueda concluir en tiempo y forma la programación.
Que el equipo pueda reunirse de manera adecuada ya que el tiempo es un
factor que consideramos esencial en este proyecto.
AGENDAS DE TRABAJO
CSS COMPILER
DIEGO SANCHEZ HERNANDEZ GERARDO MUNIVE MORALES BRUCE NAVA MALDONADO AZAEL BECERRILA RAMOS LUIS F. SANCHEZ VIDALS Página 4
CSS
La agenda de trabajo que se muestra es la que el equipo de trabajo manejara.
Los integrantes de este proyecto a esta fecha ya saben cuál es la parte de
proyecto que deben realizar, así que con la organización que nosotros manejamos
confiamos en no tener ningún contratiempo.
Recursos de Hardware, Software y Humanos
Nosotros emplearemos el lenguaje de programación java ya que creemos que su
manejabilidad es suficiente para llevar acabo la programación necesaria y no
representa ningún problema en la parte de software, ya que su instalación es muy
simple además de poderlo manejar en distintos sistemas operativos.
En la parte de la administración del trabajo cada persona ya tiene asignada la
parte de programación que le corresponde realizar, ya que, se ha dado tiempo
considerable en cada parte, no representa ningún problema la organización de
trabajo.
CSS COMPILER
DIEGO SANCHEZ HERNANDEZ GERARDO MUNIVE MORALES BRUCE NAVA MALDONADO AZAEL BECERRILA RAMOS LUIS F. SANCHEZ VIDALS Página 5
CSS
ESTUDIO TEO RICO
¿Qué es un compilador (traductor)?
Un compilador es un programa que lee un programa fuente y lo traduce a un
programa destino u objeto. Como parte esencial el compilador alerta al usuario de
la existencia de errores en el programa fuente.
De esta manera un programador o usuario puede diseñar un programa en un
lenguaje mucho más cercano a cómo piensa un ser humano, para luego
compilarlo a un programa más manejable por una computadora.
Gran parte de los primeros trabajos de compilación estaba relacionada con la
traducción de fórmulas aritméticas a código de máquina. Desde aquella época los
conocimientos sobre cómo organizar y escribir compiladores han ido progresando,
de tal manera que a menudo se los clasifica según el número de pasadas, según
la carga y ejecución, depuración u optimización, según el método de su
construcción y de su función.
La construcción de un compilador involucra la división del proceso en una serie de
fases que variará con su complejidad. Generalmente estas fases se agrupan en
dos tareas: el análisis del programa fuente y la síntesis del programa objeto.
Análisis: Se trata de la comprobación de la corrección del programa fuente,
e incluye las fases correspondientes al Análisis Léxico(que consiste en la
descomposición del programa fuente en componentes léxicos), Análisis
Sintáctico (agrupación de los componentes léxicos en frases gramaticales).
Esta taxonomía de los tipos de compiladores no es excluyente, por lo que puede
haber compiladores que se adscriban a varias categorías:
Ensamblador: el lenguaje fuente es lenguaje ensamblador y posee una estructura
sencilla.
Compilador cruzado: se genera código en lenguaje objeto para una máquina
diferente de la que se está utilizando para compilar.
CSS COMPILER
DIEGO SANCHEZ HERNANDEZ GERARDO MUNIVE MORALES BRUCE NAVA MALDONADO AZAEL BECERRILA RAMOS LUIS F. SANCHEZ VIDALS Página 6
CSS
Compilador con montador: compilador que compila distintos módulos de forma
independiente y después es capaz de enlazarlos.
Autocompilador: compilador que está escrito en el mismo lenguaje que va a
compilar.
Metacompilador: es sinónimo de compilador de compiladores y se refiere a un
programa que recibe como entrada las especificaciones del lenguaje para el que
se desea obtener un compilador y genera como salida el compilador para ese
lenguaje, el desarrollo de los meta compiladores se encuentra con la dificultad de
unir la generación de código con la parte de análisis. Lo que sí se han desarrollado
es generadores de analizadores léxicos y sintácticos.
Por ejemplo, los conocidos:
LEX: generador de analizadores léxicos
YACC: generador de analizadores sintácticos
Descompilador: es un programa que acepta como entrada código máquina y lo
traduce a un lenguaje de alto nivel, realizando el proceso inverso a la compilación.
HACIENDO UN COMPILADOR
Fase de análisis
El proceso de traducción se compone internamente de varias etapas o fases, que
realizan distintas operaciones lógicas. Es útil pensar en estas fases como en
piezas separadas dentro del traductor, y pueden en realidad escribirse como
operaciones codificadas separadamente aunque en la práctica a menudo se
integren juntas.
Análisis léxico
El análisis léxico constituye
la primera fase, aquí se lee
el programa fuente de
izquierda a derecha y se
agrupa en componentes
léxicos (tokens), que son
secuencias de caracteres
que tienen un significado.
Además, todos los espacios en blanco, líneas en blanco, comentarios y demás
información innecesaria se elimina del programa fuente. También se comprueba
que los símbolos del lenguaje (palabras clave, operadores, etc.) se han escrito
correctamente.
CSS COMPILER
DIEGO SANCHEZ HERNANDEZ GERARDO MUNIVE MORALES BRUCE NAVA MALDONADO AZAEL BECERRILA RAMOS LUIS F. SANCHEZ VIDALS Página 7
CSS
Análisis sintáctico
En esta fase los caracteres o componentes léxicos se agrupan jerárquicamente en
frases gramaticales que el compilador utiliza para sintetizar la salida. Se
comprueba si lo obtenido de la fase anterior es sintácticamente correcto (obedece
a la gramática del lenguaje). Por lo general, las frases gramaticales del programa
fuente se representan mediante un árbol de análisis sintáctico.
La estructura jerárquica de un programa normalmente se expresa utilizando reglas
recursivas. Por ejemplo, se pueden dar las siguientes reglas como parte de la
definición de expresiones:
1. Cualquier identificador es una expresión.
2. Cualquier número es una expresión.
3. Si expresión1 y expresión2 son expresiones, entonces también lo son:
expresión1 + expresión2
expresión1 * expresión2
(expresión1)
Las reglas 1 y 2 son reglas
básicas (no recursivas), en
tanto que la regla 3 define
expresiones en función de
operadores aplicados a
otras expresiones.
La división entre análisis
léxico y análisis sintáctico es algo arbitraria. Un factor para determinar la división
es si una construcción del lenguaje fuente es inherentemente recursiva o no. Las
construcciones léxicas no requieren recursión, mientras que las construcciones
sintácticas suelen requerirla. No se requiere recursión para reconocer los
identificadores, que suelen ser cadenas de letras y dígitos que comienzan con una
letra. Normalmente, se reconocen los identificadores por el simple examen del
flujo de entrada, esperando hasta encontrar un carácter que no sea ni letra ni
dígito, y agrupando después todas las letras y dígitos encontrados hasta ese punto
en un componente léxico llamado identificador. Por otra parte, esta clase de
análisis no es suficientemente poderoso para analizar expresiones o
proposiciones. Por ejemplo, no podemos emparejar de manera apropiada los
paréntesis de las expresiones, o las palabras begin y end en proposiciones sin
imponer alguna clase de estructura jerárquica o de anidamiento a la entrada.
CSS COMPILER
DIEGO SANCHEZ HERNANDEZ GERARDO MUNIVE MORALES BRUCE NAVA MALDONADO AZAEL BECERRILA RAMOS LUIS F. SANCHEZ VIDALS Página 8
CSS
Conclusiones del estudio teórico de los compiladores
Un compilador es un programa que convierte un programa fuente a un
programa destino generando un ejecutable.
Su clasificación depende de su función su modo de estructuración,
rendimiento y pasadas.
Tanto como el proceso de creación de programa destino existe el proceso
inverso, es decir, generar un programa fuente a partir de un programa
destino, a esto se lo conoce como descompilador y es considerado como
uno de los tipos de compilador.
Un meta compilador es aquel que genera un compilador a partir de las
especificaciones de las funciones que el mismo debe realizar.
MARCO TEORICO CSS
CSS son las siglas de Cascading Style Sheets - Hojas de Estilo en Cascada - que
es un lenguaje que describe la presentación de los documentos estructurados en
hojas de estilo para diferentes métodos de interpretación, es decir, describe como
se va a mostrar un documento en pantalla, por impresora, por voz (cuando la
información es pronunciada a través de un dispositivo de lectura) o en dispositivos
táctiles basados en Braille.
¿Para que sirve?
CSS es una especificación desarrollada por el W3C (World Wide Web Consortium)
para permitir la separación de los contenidos de los documentos escritos en
HTML, XML, XHTML, SVG, o XUL de la presentación del documento con las hojas
de estilo, incluyendo elementos tales como los colores, fondos, márgenes, bordes,
tipos de letra..., modificando as la apariencia de una página web de una forma
más sencilla, permitiendo a los desarrolladores controlar el estilo y formato de sus
documentos.
¿Cómo funciona?
El lenguaje CSS se basa en una serie de reglas que rigen el estilo de los
elementos en los documentos estructurados, y que forman la sintaxis de las hojas
de estilo. Cada regla consiste en un selector y una declaración, esta última va
entre corchetes y consiste en una propiedad o atributo, y un valor separados por
dos puntos.
CSS COMPILER
DIEGO SANCHEZ HERNANDEZ GERARDO MUNIVE MORALES BRUCE NAVA MALDONADO AZAEL BECERRILA RAMOS LUIS F. SANCHEZ VIDALS Página 9
CSS
Selector
El Selector especifica que elementos HTML van a estar afectados por esa
declaración, de manera que hace de enlace entre la estructura del documento y la
regla estilística en la hoja de estilo.
Declaración
La Declaración que va entre corchetes es la información de estilo que indica cómo
se va a ver el selector. En caso de que haya más de una declaración se usa punto
y coma para separarlas.
Propiedad o Atributo y Valor
Dentro de la declaración, la Propiedad o Atributo define la interpretación del
elemento asignándosele un cierto Valor, que puede ser color, alineación, tipo de
fuente, tamaño..., es decir, especifican qué aspecto del selector se va a cambiar.
Tres tipos de estilos
La información CSS se puede proporcionar por varias fuentes, ya sea adjunto
como un documento por separado o incorporado en el documento HTML, y dentro
de estas posibilidades destacan tres formas de dar estilo a un documento web:
Hoja de Estilo Externa
La Hoja de Estilo Externa se almacena en un archivo diferente al del archivo con el
código HTML al cal estar vinculado a través del elemento link, que debe ir situado
en la sección head. Es la manera de programar ms eficiente, ya que separa
completamente las reglas de formato para la página HTML de la estructura básica
de la página.
Hoja de Estilo Interna
La Hoja de Estilo Interna est incorporada a un documento HTML, a través del
elemento style dentro de la sección head, consiguiendo de esta manera separar la
información del estilo del código HTML.
CSS COMPILER
DIEGO SANCHEZ HERNANDEZ GERARDO MUNIVE MORALES BRUCE NAVA MALDONADO AZAEL BECERRILA RAMOS LUIS F. SANCHEZ VIDALS Página 10
CSS
Estilo en Línea
El Estilo en Línea sirve para insertar el lenguaje de estilo directamente dentro de la
sección body con el elemento style. Sin embargo, este tipo de estilo no se
recomienda pues se debe intentar siempre separar el contenido de la
presentación.
Versiones CSS
Existen varias versiones: CSS1 y CSS2, la CSS3 está todavía en desarrollo por el
CSS WG (Cascading Style Sheets Working Group).
Los navegadores actuales implementan bastante bien CSS1 desde 1999 (tres
años después de su lanzamiento) aunque dependiendo de la marca y versión del
navegador hay algunas pequeñas diferencias de implementación. El primer
navegador en dar soporte completo al CSS1 ha sido Internet Explorer 5.0 for the
Macintosh en 2000, anteriormente el que mejor soportaba CSS1 haba sido Opera,
después otros navegadores también lo han ido implementando.
Sin embargo, CSS2 (lanzado en 1998) sólo está parcialmente implementado en
los navegadores más recientes, variando en estos los niveles de implementación.
Ventajas de CSS
La principal ventaja de CSS sobre el lenguaje HTML o similar, es que el estilo se
puede guardar completamente por separado del contenido siendo posible, por
ejemplo, almacenar todos los estilos de presentación para una web de 10.000
páginas en un sólo archivo de CSS.
CSS permite un mejor control en la presentación de un sitio web que los
elementos de HTML, agilizando su actualización.
Aumento de la accesibilidad de los usuarios gracias a que pueden especificar su
propia hoja de estilo, permitiéndoles modificar el formato de un sitio web según
sus necesidades, de manera que por ejemplo, personas con deficiencias visuales
puedan configurar su propia hoja de estilo para aumentar el tamaño del texto.
El ahorro global en el ancho de banda es notable, ya que la hoja de estilo se
almacena en cache después de la primera solicitud y se puede volver a usar para
cada página del sitio, no se tiene que descargar con cada página web. Por otro
lado, quitando todo lenguaje de marcado en la presentación en favor del uso de
CSS reduce su tamaño y ancho de banda hasta más del 50%, esto beneficia al
CSS COMPILER
DIEGO SANCHEZ HERNANDEZ GERARDO MUNIVE MORALES BRUCE NAVA MALDONADO AZAEL BECERRILA RAMOS LUIS F. SANCHEZ VIDALS Página 11
CSS
dueño del sitio web con menos ancho de banda y costes de almacenamiento, as
como a los visitantes para los cuales las páginas se van a cargar más rápido.
Una página puede tener diferentes hojas de estilo para mostrarse en diferentes
dispositivos, como pueden ser impresoras, lectores de voz, o móviles.
Conclusiones de las hojas de estilo css
Herramienta que proporciona al diseñador de documentos HTML un control
total sobre la forma en que estos se visualizan o imprimen.
Plantillas que permiten cambiar el formato de presentación de cualquier
etiqueta de HTML.
Las CSS controlan todos los elementos de la presentación de un
documento HTML: márgenes de página, espaciado entre párrafos, tamaños
y tipos de letra, color y fondos, etc.
Permiten agrupar varios formatos en nuevas clases de texto, para evitar
tener que repetir las mismas etiquetas HTML en diferentes partes del
documento.
CSS COMPILER
DIEGO SANCHEZ HERNANDEZ GERARDO MUNIVE MORALES BRUCE NAVA MALDONADO AZAEL BECERRILA RAMOS LUIS F. SANCHEZ VIDALS Página 12
CSS
ESTADO INICIAL DEL SISTEMA
Nuestro proyecto (Compiler CSS) es un proyecto donde su estructuración de
análisis no tiene como idea principal la innovación, la idea principal de nuestro
proyecto se basa en la creación, que a través de un proceso usara la innovación
como punto de mejora a la hora del desarrollo que se busca tener.
El compilador CSS es un software que se ha diseñado para el análisis de hojas de
estilo, la cual se espera sea una herramienta que favorezca el análisis de este tipo
de hojas. Se espera que esta herramienta ayude aprevenir fallas de estructuración
y programación a la hora de creación de este tipo de hojas.
El software que se intenta desarrollar consta de un análisis detallado ya que se
pondrán en ejecución aspectos como:
La generación de un autómata.
La generación de un diagrama de transiciones.
La creación de un Analizador Léxico.
La generación de una gramática LL1.
La creación de un Analizador Sintáctico.
La conjunción de analizador léxico y analizador sintáctico.
La implementación de una interfaz gráfica la cual permita una mejor
interacción entre el usuario y el programa.
Todos estos puntos que se plantean es al estado que se espera poder lograr para
la creación de nuestro compilador, los cuales mediante diferentes etapas de
análisis y estudio nos darán las posibles fallas que nuestro sistema a la hora de su
ejecución pudiera tener, se espera que el usuario pueda interactuar de manera
sencilla con el software, presentándole una interfaz que sea sencilla para que no
represente ninguna complicación para su uso.
OBJETIVOS ESPECIFICOS DE NUESTRA INTERFAZ
Permite al usuario buscar el archivo que se desee compilar.
Permite la interacción de una manera entendible y práctica.
Primero se llevara a cabo el análisis léxico que si no contiene ningún error
nos dará paso a en análisis sintáctico.
Los errores que pudiera tener nos dirá el número de línea para así poder
corregir nuestro error.
El analizador sintáctico dirá que la hoja de estilo esta estructura
adecuadamente
CSS COMPILER
DIEGO SANCHEZ HERNANDEZ GERARDO MUNIVE MORALES BRUCE NAVA MALDONADO AZAEL BECERRILA RAMOS LUIS F. SANCHEZ VIDALS Página 13
CSS
Valor agregado del Software CSS
Tras analizar el software el usuario estará capacitado para poder generar el
análisis de hojas de estilo y de esta manera saber si la estructuración de estas
esta hecha de una manera correcta y adecuada.
DIAGRAMAS DE SOPORTE DE SOFTWARE EN L ¿QUE Y COMO?
Nuestro proyecto como ya se planteó en los objetivos, se encargara de la
detección de errores estructurales que se puede tener la hora de la creación de
una hoja de estilo.
Para su análisis previo se utilizaran estas dos partes del proyecto:
Analizador Léxico
Analizador sintáctico
El analizador léxico será el encargado de verificar las palabras o símbolos que
estén dentro de la hoja de estilo (.css) sean parte de la sintaxis que estas usan,
para esto el mismo analizador debe de contar con una “base de datos” propia del
lenguaje css.
DETECCIÓN DE ERRORES
Árbol de análisis sintáctico
Analizador Léxico
TOKENS
Identificadores Palabras Reservadas
COMPILADOR(Hojas de estilo CSS)
Analizador Sintáctico
Analizador Léxico
Frases gramaticales
CSS COMPILER
DIEGO SANCHEZ HERNANDEZ GERARDO MUNIVE MORALES BRUCE NAVA MALDONADO AZAEL BECERRILA RAMOS LUIS F. SANCHEZ VIDALS Página 14
CSS
Para que en caso de que lo que se esté analizando no resulte ser parte del
lenguaje de las hojas de estilo se notifique al usuario mediante un mensaje que se
encuentre un error en determinada línea, en caso contrario se le enviara una señal
al analizador sintáctico, que la estructuración de la hoja de estilo está completa.
El analizador sintáctico recibe los tokens enviados por el analizador léxico (cabe
mencionar que el analizador léxico es una función propia del analizador sintáctico)
el cual por medio de una gramática estructurada forme frases y verifique que sean
sintácticamente correctas, esto se realiza mediante la creación de un árbol de
análisis sintáctico, además esta función también será encargada de encontrar
errores de tipo sintáctico esto quiere decir por ejemplo es mal uso de llaves o el
mal uso de punto y coma en una sentencia etc.
Una vez que se culmine la programación de ambos módulos se unirán para así
poder formar 2 partes fundamentales de nuestro compilador, a este punto se
espera encontrar tanto analizadores léxicos como sintácticos y de esta manera
poder comunicárselo al usuario.
PRUEBAS INICIALES DE SOFTWARE
En la siguiente imagen se podrá observar como nuestro analizador léxico en su
ejecución podrá analizar diversas palabras y símbolos que forman parte de la
programación de css, los detectara y nos dirá mediante mensaje de consola en
donde encuentra alguna palabra desconocida se detendrá para mostrarnos un
mensaje de donde esta nuestro error y nos indicara en que línea se encuentra
para que nosotros podamos checar este error.
CSS COMPILER
DIEGO SANCHEZ HERNANDEZ GERARDO MUNIVE MORALES BRUCE NAVA MALDONADO AZAEL BECERRILA RAMOS LUIS F. SANCHEZ VIDALS Página 15
CSS
Bueno cabe mencionar que a este punto solo se tiene una parte del analizador
léxico pero aun contando con errores, se espera que con el progreso que nuestro
proyecto vaya teniendo se llegue a tener un mayor alcance, ya que aún falta
corregir los errores de nuestro analizador léxico y la creación de nuestro autómata
y nuestra gramática de tipo LL1.
AUTOMATA PARA HOJAS DE ESTILO CSS
Hasta este punto este es el autómata que se ha generado para la creación de
hojas de estilo.
CSS COMPILER
DIEGO SANCHEZ HERNANDEZ GERARDO MUNIVE MORALES BRUCE NAVA MALDONADO AZAEL BECERRILA RAMOS LUIS F. SANCHEZ VIDALS Página 16
CSS
ANALISIS EXPERIMENTAL PARA LA MEJORA DE SISTEMA
INTRODUCCION
Nosotros consideramos que para la realización de nuestro proyecto la idea que
más nos conviene usar es una idea trampolín, ya que esta técnica consiste en
utilizar ideas intermedias como estimulantes del pensamiento para facilitar la
solución de problemas. Como nuestro proyecto no tiene la parte innovadora y nos
enfocamos a la parte de la creación consideramos que la idea trampolín es la
idónea para este proyecto, ya que debemos aplicar esta técnica para la
generación de ideas, maneras de afrontar problemas y soluciones las cuales en la
medida de lo posible logren la mayor optimización.
PREGUNTAS CLAVES A RESOLVER EN ESTE CAPITULO
¿Cuál es el problema?
¿Qué usar como trampolín?
¿Qué se puede obtener con este trampolín?
¿Estrategias para aplicar la técnica de trampolín?
Tabla de creación
En esta tabla presentamos los problemas que tenemos que resolver de manera
inmediata para el proyecto, ya que es fundamental tomar la decisión de cuál será
la mejor resolución en la puntos posteriores se mostrara cuáles han sido las
determinaciones que se han tomado en este problema.
CSS COMPILER
DIEGO SANCHEZ HERNANDEZ GERARDO MUNIVE MORALES BRUCE NAVA MALDONADO AZAEL BECERRILA RAMOS LUIS F. SANCHEZ VIDALS Página 17
CSS
DEFINICIÓN DEL PROBLEMA O SITUACIÓN POR MEJORAR
IDEAS ABSURDAS
No crear una matriz de transiciones
Usar arreglos en lugar de matrices
Usar solo funciones string.
Bueno a través de ideas como las que se muestran en la parte superior y otras
ideas que surgen en cuanto se va realizando el proyecto se busca la “Realización
de analizador léxico y sintáctico para la compilación de hojas de estilo (“css”).”
Aunque nuestro proyecto se centra en la creación consideramos que si usamos la
parte innovadora, ya que tenemos que considerar variables las cuales logren una
mayor eficiencia en la realización del proyecto así como para la creación de
nuestro autómata, nuestra matriz de adyacencia y nuestra gramática de tipo ll1, ya
que no es algo que este creado se debe analizar distintos aspectos que nosotros
sentimos que tiene que ver con la innovación.
También es cierto que la mayoría de los compiladores tienen una estructura
definida, pero al ser un proyecto que no se ha realizado nosotros tenemos que
crear partes que son indispensables para este proyecto, se deben analizar
diferentes variables las cuales nos permitirán lograr la mayor eficiencia y hasta
cierto punto innovación ya que es algo que no esta creado.
Es por eso que nuestro proyecto se basa en el siguiente esquema presentado:
“APLICACIÓN DE ACTIVADORES OPERACIONALES PARA LA MEJORA
CREATIVA DEL SOFTWARE”
CSS COMPILER
DIEGO SANCHEZ HERNANDEZ GERARDO MUNIVE MORALES BRUCE NAVA MALDONADO AZAEL BECERRILA RAMOS LUIS F. SANCHEZ VIDALS Página 18
CSS
Primero consideramos cual es el objetivo del programa, que es donde
nosotros definimos hasta dónde es que llegaremos y cuál es el propósito
del proyecto.
1. Crear analizador léxico
2. Crear analizador sintáctico para la compilación de hojas de estilo (“css”).
3. Nuestro propósito es que al ensamblar estas partes el analizador
funcione de manera correcta.
En la parte de considerar prioridades establecemos cual sería la manera
más eficiente de emplear las alguna estructuras de programación la cual
nos arrojara una mejor solución a este programa, después de un análisis y
varias pruebas en la parte de programación concluimos que la generación
de un autómata programado mediante una matriz de adyacencia es la
manera más eficiente para este programa.
En Considerar consecuencias consideramos cual es el efecto que puede
tener el no emplear bien la estructura adecuada ya que esto nos resta
eficiencia que es lo que buscamos principalmente en este proyecto.
En la parte de lo Positivo, negativo e interrogante al llegar a este punto nos
hemos establecido preguntas como ¿Es buena la programación?, ¿Vamos
por buen camino?, ¿Tenemos que reconfigurar el software?, estas
preguntas nos han servido para ver si nuestra creación va por buen camino
o tenemos que reformular la parte de la programación.
Después de considerar la positivo negativo e interrogante llegamos a la
parte final de los operadores que es considerar alternativas y posibilidades,
en esta parte damos un análisis final de los operadores que hemos
empleado y si creemos conveniente el modificar el programa para lograr la
mayor eficiencia volvemos al principio del esquema para analizar los
operadores nuevamente y realizar este proceso hasta que quedemos
satisfechos con los resultados obtenidos.
CSS COMPILER
DIEGO SANCHEZ HERNANDEZ GERARDO MUNIVE MORALES BRUCE NAVA MALDONADO AZAEL BECERRILA RAMOS LUIS F. SANCHEZ VIDALS Página 19
CSS
IDENTIFICACIÓN DE IDEA INTERMEDIA
La pregunta clave que nosotros nos hemos propuesto es:¿Es la manera más
eficiente?, Ya que de esta forma cada integrante propone ideas nuevas que,
aunque siguen teniendo como base una estructura de programación y nuestro
proyecto se trata de crear aportan ideas innovadoras las cuales nos permiten
analizar el problema desde diferentes puntos de vista y esto nos permite tener
varias alternativas de solución para poder escoger la que creamos pertinente y
más eficiente.
GENERA IDEAS QUE PERMITAN VER EL PROBLEMA DE OTRA MANERA.
Basándonos en el lenguaje de programación que empleamos (Java) hemos
analizado diferentes posibilidades de resolución del problema. Esto nos ha llevado
a tener ideas como las siguientes: 1. Usar un generador automático de
analizadores léxicos. 2. Usar funciones de las librerías Java como StringTokenizer
o funciones que nos permitan el análisis de una manera más simple sin usar un
autómata 3. Generar el autómata usando switchs los cuales ahorrarían tiempo de
programación. 4. Usar matriz de adyacencia atreves de un autómata generado. 5.
Usar grafos. 6. Usar un árbol para el analizador sintáctico. Estas ideas nos han
hecho ver el problema desde diferentes perspectivas ya que buscamos ideas
trampolines las cuales logren la mejor resolución de este problema.
APLICACIÓN DE LAS IDEAS PARA MEJORAR EL PROBLEMA
Después de las ideas aportadas y pruebas realizador por los miembros del equipo
de trabajo Concluimos que la manera más eficiente era la generación de un
autómata para después programarlo en una matriz de adyacencia para la parte
léxica lo cual es la manera más eficiente que se encontró y la generación de
árboles para la parte sintáctica ya que esto nos resta el tiempo de ejecución.
CONCLUSION DE ANALISIS EXPERIMENTAL
La utilización de la técnica trampolín como ya sabemos consiste en usar ideas las
cuales nos permiten ver el problema de diferente manera. Utilizamos el
pensamiento lateral, el cual a través de ideas absurdas son las que nos han
ayudado a dar ideas que a pesar de que nuestro proyecto se basa en la parte de
la creación son innovadoras para la resolución del programa. Todo esto no tiene
una lógica como tal, ya que para la generación de ideas no se sigue un protocolo o
una forma surgen de manera espontánea algunas son correctas otras tantas
incorrectas pero estas son las que abren paso a la generación de las ideas
innovadoras las cuales nos han servido para tener la mejor resolución posible
hasta este momento.
CSS COMPILER
DIEGO SANCHEZ HERNANDEZ GERARDO MUNIVE MORALES BRUCE NAVA MALDONADO AZAEL BECERRILA RAMOS LUIS F. SANCHEZ VIDALS Página 20
CSS
ESTADO FINAL DEL SOFTWARE
ESPECIFICACIÓN DEL SOFTWARE MEJORADO.
El proyecto “Compiler css” es un software creado para el análisis de hojas de
estilo (css), la cual es una herramienta que se encargara de favorecer el análisis y
la estructuración de este tipo de archivos.
El software que se presentara consta cumple los objetivos propuestos al inicio de
este proyecto.
La generación de un autómata.
La generación de un diagrama de transiciones.
La creación de un Analizador Léxico.
La generación de una gramática LL1.
La creación de un Analizador Sintáctico.
La conjunción de analizador léxico y analizador sintáctico.
La implementación de una interfaz gráfica la cual permita una mejor
interacción entre el usuario y el programa.
Después de un largo tiempo de trabajo y mediante análisis y horas de trabajo
prestadas a este proyecto se llegó a cumplir todos los objetivos planteados.
Aunque primero solo se contaba con una parte del analizador léxico el avance que
presento nuestro proyecto fue mucho, ya que se mejoró el analizador léxico ya
que presentaba muchas fallas, además de la generación de los diagramas de
transiciones, las gramáticas ll1 y los objetivos que se presentan en la parte de
arriba.
Diagramas de Soporte del Software en el análisis y Diseño Mejorado
CSS COMPILER
DIEGO SANCHEZ HERNANDEZ GERARDO MUNIVE MORALES BRUCE NAVA MALDONADO AZAEL BECERRILA RAMOS LUIS F. SANCHEZ VIDALS Página 21
CSS
El proyecto “compiler css” se encarga de detectar errores en la creación de las
mismas, para ello, está conformado de:
ANALIZADOR LÉXICO
ANALIZADOR SINTÁCTICO
El analizador léxico se encarga de verificar si la palabra o símbolo que se está
analizando forma parte del lenguaje de las hojas de estilo como palabras
reservadas e identificadoras, para que el analizador pueda distinguir entre estas 2
cuestiones, se implementó una mejora creando un archivo con todas las palabras
reservadas, así cuando el analizador encuentra un identificador corrobora si éste
se encuentra dentro del archivo, en caso de que esto sea cierto la aplicación
muestra al identificador como una palabra reservada, en caso contrario lo muestra
como un identificador
El analizador Sintáctico recibe los objetos enviados por el analizador léxico (es
importante mencionar que el analizador léxico es una función del analizador
sintáctico) para así formar frases gramaticales y verificar que estas frases sean
sintácticamente correctas (que obedezca a la gramática del lenguaje), una mejora
muy importante que se implementó en este analizador es la creación de las
funciones “Emparejar” y “pre-análisis”, ambas funciones son de suma importancia
ya que agilizan el análisis de cada frase ayudando a la detección más oportuna de
los errores que puedan existir, “emparejar” nos permite aprobar las frases que han
sido analizadas y no contienen ningún error, permitiendo al programa analizar la
frase siguiente y “pre-análisis” ayuda al A. Sintáctico a agilizar el análisis de las
frases verificando si el orden de las palabras en la frase es el adecuado.
Elementos de importancia para el software mejorado
Los elementos de importancia para este software son principalmente la creación
del A. Sintáctico y la unión del A. Léxico dentro del sintáctico, conforme se fue
avanzando en la implementación de ambos analizadores y del proyecto en sí se
realizaron otras mejoras.
Dentro de la implantación del A. Léxico se creó y mejoró lo siguiente:
La creación de un archivo, el cual contiene las palabras reservadas de las
hojas de estilo CSS. Esto ayuda al programa a distinguir de una manera
más rápida y eficiente los identificadores de las palabras reservadas.
CSS COMPILER
DIEGO SANCHEZ HERNANDEZ GERARDO MUNIVE MORALES BRUCE NAVA MALDONADO AZAEL BECERRILA RAMOS LUIS F. SANCHEZ VIDALS Página 22
CSS
Dentro de la implementación del A. Sintáctico se creó:
Creación de la función pre-análisis. Con esta función la verificación de la
frases gramaticales es mucho más rápida y precisa
Creación de la función emparejar. Esta función nos permite “aprobar” las
frases que están escritas correctamente y “desecharlas” de cierta forma,
para así poder analizar otra frase buscando la existencia de algún error.
Pruebas de Funcionalidad del Software mejorado
En la siguiente imagen se observa la “interfaz sencilla y amigable” que se le
muestra al usuario para el buen manejo del programa.
INTERFAZ PRINCPAL
Esta es la interfaz que nuestro software maneja en ella nos mostrara los datos
leídos desde el archivo.
Las funciones “Analizador Léxico” y “Analizador Sintáctico” funcionaran al dar click
en el botón donde se encuentran estos nombres. Es imposible mostrar la
funcionalidad de los analizadores léxico y sintáctico por separado, ya que para que
el programa funcione correctamente “ambos analizadores deben de trabajar como
uno solo”. Por lo tanto se explicaran los elementos más importantes de la
ventana.
CSS COMPILER
DIEGO SANCHEZ HERNANDEZ GERARDO MUNIVE MORALES BRUCE NAVA MALDONADO AZAEL BECERRILA RAMOS LUIS F. SANCHEZ VIDALS Página 23
CSS
En esta imagen podemos
observar que el programa
muestra el contenido del
archivo que se va a compilar,
claramente se puede observar
que las sentencias pertenecen
al lenguaje CSS.
En la siguiente imagen se
muestra una tabla, la cual
contiene el resultado del
analizador léxico.
CSS COMPILER
DIEGO SANCHEZ HERNANDEZ GERARDO MUNIVE MORALES BRUCE NAVA MALDONADO AZAEL BECERRILA RAMOS LUIS F. SANCHEZ VIDALS Página 24
CSS
En esta imagen se puede
apreciar los dos resultados
que nuestro programa
puede arrojar después de
realizar la función
“analizador sintáctico”.
En las imágenes anteriores también se puede observar que después de analizar la
hoja de estilo CSS se cumplió con el objetivo de detectar: errores, elementos de
las hojas de estilo, colores, palabras reservadas y lo más importante detectar
errores en la creación de la hoja.
Finalmente se muestra la ventana como un todo:
IMAGEN CON ERRORES SINTACTICOS
CSS COMPILER
DIEGO SANCHEZ HERNANDEZ GERARDO MUNIVE MORALES BRUCE NAVA MALDONADO AZAEL BECERRILA RAMOS LUIS F. SANCHEZ VIDALS Página 25
CSS
IMAGEN SIN ERRORES SINTACTICOS
CONCLUSION DE SOFTWARE MEJORADO.
En este caso nuestro proyecto no obedece estrictamente a la parte de la
innovación, ya que se tuvieron que empezar desde cero diversas funciones.
Pero al terminar este capítulo el equipo se mostró satisfecho con los resultados
obtenidos por que fueron los que se plantearon desde un principio.
CSS COMPILER
DIEGO SANCHEZ HERNANDEZ GERARDO MUNIVE MORALES BRUCE NAVA MALDONADO AZAEL BECERRILA RAMOS LUIS F. SANCHEZ VIDALS Página 26
CSS
CONCLUSIONES
EVALUACION INTERNA
NOMBRE DE INVENTO: CSS COMPILER
PROPOSITO: PODER VERIFICAR LA ESTRUCTURA DE HOJAS DE ESTILO (CSS).
COSAS SIMILARES: EXISTEN COMPILADORES QUE SE HAN CREADO PERO ALGUNO PARECIDO AL PROYECTO REALIZADO NO ENCONTRAMOS ALGUNO.
COMPARACION CON LO QUE YA SE HA CREADO Y LO QUE REALIZAMOS
OBSERVADO DESEADO
RAPIDEZ SI SI
AUTOMATA SI SI
GRAMATICA SI SI
ANALIZADORES SI SI
Al concluir nuestra evaluación interna desde nuestro punto de vista se cumplen
muchas de nuestras expectativas y aunque en el análisis previo a la realización
de este proyecto no se revisaron estas variables a la hora de la ejecución
observamos que las cumplimos sin tenerlas tan presentes.
EVALUACION EXTERNA
CONCLUSION EVALUACION EXTERNA
Después de analizar nuestro proyecto con algunos otros pudimos observar que
nuestro planteamiento fue efectivo, ya que de los 3 compiladores que se hizo un
análisis pudimos detectar que aunque hay otros que funcionan de manera más
rápida el nuestro es más correcto en todas las partes programadas.
CSS COMPILER COMPILER ASEDARK
COMPILADOR JAVA C++
RAPIDEZ BUENA EFECTIVA EXELENTE
AUTOMATA BUENO BASICO EXELENTE
ANALIZADORES FUNCIONALES FALLAS EN LA EVALUACION DE TOKENS
FUNCIONAN CORRECTAMENTE
CSS COMPILER
DIEGO SANCHEZ HERNANDEZ GERARDO MUNIVE MORALES BRUCE NAVA MALDONADO AZAEL BECERRILA RAMOS LUIS F. SANCHEZ VIDALS Página 27
CSS
CONCLUSION DE PROYECTO
Nuestro proyecto cumple con las expectativas planteadas desde el comienzo del
mismo, los integrantes del grupo de trabajo fueron capaces de cubrir todas y cada
una de las fases para poder terminar en tiempo y forma la entrega del proyecto.
Al concluir el análisis con otros proyectos nos dimos cuenta que aunque nuestro
programa aún le falta un poco de velocidad y algunos factores mínimos es muy
eficiente en las partes que realizaron, que los autómatas, la gramática , las
matrices de transiciones y la puesta en ejecución de todos estos alcanzaron mas
de nuestras expectativas.
Las evaluaciones nos arrojaron que el proyecto tiene un nivel bueno que todo lo
que se realizo puede mejorarse con un poco más de tiempo.
Esperamos que el proyecto sea un todo éxito y poder continuar con el mismo para
sus mejoras.
REFERENCIAS
* Wikipedia. “Compiladores”. Enciclopedia en línea. Disponible:
http://es.wikipedia.org/wiki/Compilador#Tipos_de_compiladores
* Monografias.com. “Compiladores”. Monografía en línea. Disponible
http://www.monografias.com/trabajos11/compil/compil.shtml
* Usersdic. “Compiladores”. Monografía en línea. Disponible
http://users.dsic.upv.es/~jsilva/uned/compiladores/Apuntes01.pdf
* Compiladores. Principios técnicas y herramientas “Aho, Sethi, Ullman”.
“Compiladores” Texto. Disponible: páginas 1 y 2
*http://my.opera.com/ASEDARK/blog/java-compilador-en-java
*http://www.infor.uva.es/~jmrr/tgp/java/JAVA.html
top related