SlideShare una empresa de Scribd logo
CSS




                   CSS COMPILER
                                                                              AUTORES:

                                                                              DIEGO SANCHEZ
                                                                              HERNANDEZ

                                                                              GERARDO MUNIVE
El proyecto “CSS COMPILER” busca la implementación de un compilador
                                                                              MORALES
  relacionada con hojas de estilo, atreves de la generación de autómatas,     BRUCE NAVA
matrices de transición y algunas estructuras que bajo un análisis realizado   MALDONADO
     previamente, nos den la mayor eficiencia posible y mediante algunos
   principios de innovación hacer que este proyecto sea muy eficaz en su      AZAEL BECERRIL
                                                                 ejecución.   RAMOS

                                                                              LUIS F. SANCHEZ
                                                                              VIDALS
CSS

                                      CSS COMPILER


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


DIEGO SANCHEZ HERNANDEZ
GERARDO MUNIVE MORALES
BRUCE NAVA MALDONADO
AZAEL BECERRILA RAMOS
LUIS F. SANCHEZ VIDALS                                                             Página 1
CSS

                                CSS COMPILER



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.



DIEGO SANCHEZ HERNANDEZ
GERARDO MUNIVE MORALES
BRUCE NAVA MALDONADO
AZAEL BECERRILA RAMOS
LUIS F. SANCHEZ VIDALS                                                      Página 2
CSS

                               CSS COMPILER

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




DIEGO SANCHEZ HERNANDEZ
GERARDO MUNIVE MORALES
BRUCE NAVA MALDONADO
AZAEL BECERRILA RAMOS
LUIS F. SANCHEZ VIDALS                                                     Página 3
CSS

                               CSS COMPILER


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.




DIEGO SANCHEZ HERNANDEZ
GERARDO MUNIVE MORALES
BRUCE NAVA MALDONADO
AZAEL BECERRILA RAMOS
LUIS F. SANCHEZ VIDALS                                                    Página 4
CSS

                                CSS COMPILER


ESTUDIO TEORICO
¿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.

DIEGO SANCHEZ HERNANDEZ
GERARDO MUNIVE MORALES
BRUCE NAVA MALDONADO
AZAEL BECERRILA RAMOS
LUIS F. SANCHEZ VIDALS                                                     Página 5
CSS

                                CSS COMPILER

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.
DIEGO SANCHEZ HERNANDEZ
GERARDO MUNIVE MORALES
BRUCE NAVA MALDONADO
AZAEL BECERRILA RAMOS
LUIS F. SANCHEZ VIDALS                                                      Página 6
CSS

                                 CSS COMPILER


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.
DIEGO SANCHEZ HERNANDEZ
GERARDO MUNIVE MORALES
BRUCE NAVA MALDONADO
AZAEL BECERRILA RAMOS
LUIS F. SANCHEZ VIDALS                                                         Página 7
CSS

                                CSS COMPILER

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.




DIEGO SANCHEZ HERNANDEZ
GERARDO MUNIVE MORALES
BRUCE NAVA MALDONADO
AZAEL BECERRILA RAMOS
LUIS F. SANCHEZ VIDALS                                                      Página 8
CSS

                                CSS COMPILER

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.




DIEGO SANCHEZ HERNANDEZ
GERARDO MUNIVE MORALES
BRUCE NAVA MALDONADO
AZAEL BECERRILA RAMOS
LUIS F. SANCHEZ VIDALS                                                      Página 9
CSS

                                 CSS COMPILER

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


DIEGO SANCHEZ HERNANDEZ
GERARDO MUNIVE MORALES
BRUCE NAVA MALDONADO
AZAEL BECERRILA RAMOS
LUIS F. SANCHEZ VIDALS                                                       Página 10
CSS

                               CSS COMPILER

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.




DIEGO SANCHEZ HERNANDEZ
GERARDO MUNIVE MORALES
BRUCE NAVA MALDONADO
AZAEL BECERRILA RAMOS
LUIS F. SANCHEZ VIDALS                                                 Página 11
CSS

                                CSS COMPILER


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

DIEGO SANCHEZ HERNANDEZ
GERARDO MUNIVE MORALES
BRUCE NAVA MALDONADO
AZAEL BECERRILA RAMOS
LUIS F. SANCHEZ VIDALS                                                     Página 12
CSS

                                  CSS COMPILER

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?

                                        COMPILADOR
                                     (Hojas de estilo CSS)




              Analizador Léxico                                Analizador Sintáctico



                  TOKENS
                                                                  Analizador Léxico


Identificadores        Palabras
                       Reservadas                              Frases gramaticales



                                                               Árbol de análisis sintáctico



                                    DETECCIÓN DE ERRORES



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.

DIEGO SANCHEZ HERNANDEZ
GERARDO MUNIVE MORALES
BRUCE NAVA MALDONADO
AZAEL BECERRILA RAMOS
LUIS F. SANCHEZ VIDALS                                                       Página 13
CSS

                                CSS COMPILER

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.




DIEGO SANCHEZ HERNANDEZ
GERARDO MUNIVE MORALES
BRUCE NAVA MALDONADO
AZAEL BECERRILA RAMOS
LUIS F. SANCHEZ VIDALS                                                    Página 14
CSS

                                CSS COMPILER



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.




DIEGO SANCHEZ HERNANDEZ
GERARDO MUNIVE MORALES
BRUCE NAVA MALDONADO
AZAEL BECERRILA RAMOS
LUIS F. SANCHEZ VIDALS                                                     Página 15
CSS

                               CSS COMPILER


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.




DIEGO SANCHEZ HERNANDEZ
GERARDO MUNIVE MORALES
BRUCE NAVA MALDONADO
AZAEL BECERRILA RAMOS
LUIS F. SANCHEZ VIDALS                                                   Página 16
CSS

                                 CSS COMPILER

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”




DIEGO SANCHEZ HERNANDEZ
GERARDO MUNIVE MORALES
BRUCE NAVA MALDONADO
AZAEL BECERRILA RAMOS
LUIS F. SANCHEZ VIDALS                                                      Página 17
CSS

                                CSS COMPILER

     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.




DIEGO SANCHEZ HERNANDEZ
GERARDO MUNIVE MORALES
BRUCE NAVA MALDONADO
AZAEL BECERRILA RAMOS
LUIS F. SANCHEZ VIDALS                                                     Página 18
CSS

                               CSS COMPILER

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.
DIEGO SANCHEZ HERNANDEZ
GERARDO MUNIVE MORALES
BRUCE NAVA MALDONADO
AZAEL BECERRILA RAMOS
LUIS F. SANCHEZ VIDALS                                                   Página 19
CSS

                                CSS COMPILER


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




DIEGO SANCHEZ HERNANDEZ
GERARDO MUNIVE MORALES
BRUCE NAVA MALDONADO
AZAEL BECERRILA RAMOS
LUIS F. SANCHEZ VIDALS                                                     Página 20
CSS

                                 CSS COMPILER

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.




DIEGO SANCHEZ HERNANDEZ
GERARDO MUNIVE MORALES
BRUCE NAVA MALDONADO
AZAEL BECERRILA RAMOS
LUIS F. SANCHEZ VIDALS                                                      Página 21
CSS

                                 CSS COMPILER

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.

DIEGO SANCHEZ HERNANDEZ
GERARDO MUNIVE MORALES
BRUCE NAVA MALDONADO
AZAEL BECERRILA RAMOS
LUIS F. SANCHEZ VIDALS                                                      Página 22
CSS

                          CSS COMPILER



                                     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.




DIEGO SANCHEZ HERNANDEZ
GERARDO MUNIVE MORALES
BRUCE NAVA MALDONADO
AZAEL BECERRILA RAMOS
LUIS F. SANCHEZ VIDALS                                          Página 23
CSS

                               CSS COMPILER

                                                     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




DIEGO SANCHEZ HERNANDEZ
GERARDO MUNIVE MORALES
BRUCE NAVA MALDONADO
AZAEL BECERRILA RAMOS
LUIS F. SANCHEZ VIDALS                                                 Página 24
CSS

                                CSS COMPILER




                     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.




DIEGO SANCHEZ HERNANDEZ
GERARDO MUNIVE MORALES
BRUCE NAVA MALDONADO
AZAEL BECERRILA RAMOS
LUIS F. SANCHEZ VIDALS                                                     Página 25
CSS

                               CSS COMPILER




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

                    CSS COMPILER COMPILER                    COMPILADOR
                                 ASEDARK                     JAVA C++
RAPIDEZ             BUENA        EFECTIVA                    EXELENTE
AUTOMATA            BUENO        BASICO                      EXELENTE
ANALIZADORES        FUNCIONALES FALLAS EN LA                 FUNCIONAN
                                 EVALUACION DE               CORRECTAMENTE
                                 TOKENS


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.
DIEGO SANCHEZ HERNANDEZ
GERARDO MUNIVE MORALES
BRUCE NAVA MALDONADO
AZAEL BECERRILA RAMOS
LUIS F. SANCHEZ VIDALS                                                   Página 26
CSS

                                CSS COMPILER


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




DIEGO SANCHEZ HERNANDEZ
GERARDO MUNIVE MORALES
BRUCE NAVA MALDONADO
AZAEL BECERRILA RAMOS
LUIS F. SANCHEZ VIDALS                                                     Página 27

Más contenido relacionado

Destacado

TEMPIC-45 Práctica I. Control de un LED
TEMPIC-45 Práctica I. Control de un LEDTEMPIC-45 Práctica I. Control de un LED
TEMPIC-45 Práctica I. Control de un LED
iihhhii
 
Teclado matricial
Teclado matricialTeclado matricial
Teclado matricialJair BG
 
Manejo de teclado 4x4 con pic 16 f84a
Manejo de teclado 4x4 con pic 16 f84aManejo de teclado 4x4 con pic 16 f84a
Manejo de teclado 4x4 con pic 16 f84axeleta
 
Práctica III. Mostrar un mensaje en una pantalla LCD
Práctica III. Mostrar un mensaje en una pantalla LCDPráctica III. Mostrar un mensaje en una pantalla LCD
Práctica III. Mostrar un mensaje en una pantalla LCD
iihhhii
 
Ejercicios 06 subrutinas con LCD
Ejercicios 06 subrutinas con LCDEjercicios 06 subrutinas con LCD
Ejercicios 06 subrutinas con LCD
Jaime E. Velarde
 

Destacado (7)

Ccs c compiler v4
Ccs c compiler v4Ccs c compiler v4
Ccs c compiler v4
 
1. microcontrolador
1. microcontrolador1. microcontrolador
1. microcontrolador
 
TEMPIC-45 Práctica I. Control de un LED
TEMPIC-45 Práctica I. Control de un LEDTEMPIC-45 Práctica I. Control de un LED
TEMPIC-45 Práctica I. Control de un LED
 
Teclado matricial
Teclado matricialTeclado matricial
Teclado matricial
 
Manejo de teclado 4x4 con pic 16 f84a
Manejo de teclado 4x4 con pic 16 f84aManejo de teclado 4x4 con pic 16 f84a
Manejo de teclado 4x4 con pic 16 f84a
 
Práctica III. Mostrar un mensaje en una pantalla LCD
Práctica III. Mostrar un mensaje en una pantalla LCDPráctica III. Mostrar un mensaje en una pantalla LCD
Práctica III. Mostrar un mensaje en una pantalla LCD
 
Ejercicios 06 subrutinas con LCD
Ejercicios 06 subrutinas con LCDEjercicios 06 subrutinas con LCD
Ejercicios 06 subrutinas con LCD
 

Similar a Ordinario inovacion

Presentación de programacion
Presentación  de programacionPresentación  de programacion
Presentación de programacion
lajokito
 
Programacion Basica
Programacion Basica Programacion Basica
Programacion Basica
Yoconditap
 
Metodologías Ágiles para el Desarrollo de Software y Metodologias Para el de...
Metodologías Ágiles  para el Desarrollo de Software y Metodologias Para el de...Metodologías Ágiles  para el Desarrollo de Software y Metodologias Para el de...
Metodologías Ágiles para el Desarrollo de Software y Metodologias Para el de...
Joel Fernandez
 
Metodologias modernas para el desarrollo de software
Metodologias modernas para el desarrollo de softwareMetodologias modernas para el desarrollo de software
Metodologias modernas para el desarrollo de softwareDeisy Sapaico
 
Ha2 nv50 rodriguez montiel moises-ensayo sobre evolución y futuro de los case
Ha2 nv50 rodriguez montiel moises-ensayo sobre evolución y futuro de los caseHa2 nv50 rodriguez montiel moises-ensayo sobre evolución y futuro de los case
Ha2 nv50 rodriguez montiel moises-ensayo sobre evolución y futuro de los case
Moisés Ulises Rodríguez Montiel
 
Arquitectura Web Aspnet
Arquitectura Web AspnetArquitectura Web Aspnet
Arquitectura Web Aspnet
Hernaldo Rafael Peñaranda Bello
 
Rad 120806173033-phpapp01
Rad 120806173033-phpapp01Rad 120806173033-phpapp01
Rad 120806173033-phpapp01Jorge Vinueza
 
Trabajo de sistemas de informacion rad
Trabajo de sistemas de informacion radTrabajo de sistemas de informacion rad
Trabajo de sistemas de informacion radHenry Cambal
 
Trabajo de sistemas de informacion rad
Trabajo de sistemas de informacion radTrabajo de sistemas de informacion rad
Trabajo de sistemas de informacion radHenry Cambal
 
Desarrollo de software, métodos tradicionales.pptx
Desarrollo de software, métodos tradicionales.pptxDesarrollo de software, métodos tradicionales.pptx
Desarrollo de software, métodos tradicionales.pptx
JasonPadilla9
 

Similar a Ordinario inovacion (20)

Trabajo RAD
Trabajo RADTrabajo RAD
Trabajo RAD
 
Tarea 1
Tarea 1Tarea 1
Tarea 1
 
Framework
FrameworkFramework
Framework
 
Presentación de programacion
Presentación  de programacionPresentación  de programacion
Presentación de programacion
 
Programacion Basica
Programacion Basica Programacion Basica
Programacion Basica
 
Herramientas case
Herramientas caseHerramientas case
Herramientas case
 
Metodologías Ágiles para el Desarrollo de Software y Metodologias Para el de...
Metodologías Ágiles  para el Desarrollo de Software y Metodologias Para el de...Metodologías Ágiles  para el Desarrollo de Software y Metodologias Para el de...
Metodologías Ágiles para el Desarrollo de Software y Metodologias Para el de...
 
Metodologias modernas para el desarrollo de software
Metodologias modernas para el desarrollo de softwareMetodologias modernas para el desarrollo de software
Metodologias modernas para el desarrollo de software
 
Ha2 nv50 rodriguez montiel moises-ensayo sobre evolución y futuro de los case
Ha2 nv50 rodriguez montiel moises-ensayo sobre evolución y futuro de los caseHa2 nv50 rodriguez montiel moises-ensayo sobre evolución y futuro de los case
Ha2 nv50 rodriguez montiel moises-ensayo sobre evolución y futuro de los case
 
Arquitectura Web Aspnet
Arquitectura Web AspnetArquitectura Web Aspnet
Arquitectura Web Aspnet
 
Tarea 6
Tarea 6Tarea 6
Tarea 6
 
Rad 120806173033-phpapp01
Rad 120806173033-phpapp01Rad 120806173033-phpapp01
Rad 120806173033-phpapp01
 
Rad
RadRad
Rad
 
Power point 3 y 4
Power point 3 y 4Power point 3 y 4
Power point 3 y 4
 
Rad
RadRad
Rad
 
Tema vi
Tema viTema vi
Tema vi
 
Trabajo de sistemas de informacion rad
Trabajo de sistemas de informacion radTrabajo de sistemas de informacion rad
Trabajo de sistemas de informacion rad
 
Trabajo de sistemas de informacion rad
Trabajo de sistemas de informacion radTrabajo de sistemas de informacion rad
Trabajo de sistemas de informacion rad
 
Desarrollo de software, métodos tradicionales.pptx
Desarrollo de software, métodos tradicionales.pptxDesarrollo de software, métodos tradicionales.pptx
Desarrollo de software, métodos tradicionales.pptx
 
Rad jorge vinueza
Rad jorge vinuezaRad jorge vinueza
Rad jorge vinueza
 

Ordinario inovacion

  • 1. CSS CSS COMPILER AUTORES: DIEGO SANCHEZ HERNANDEZ GERARDO MUNIVE El proyecto “CSS COMPILER” busca la implementación de un compilador MORALES relacionada con hojas de estilo, atreves de la generación de autómatas, BRUCE NAVA matrices de transición y algunas estructuras que bajo un análisis realizado MALDONADO previamente, nos den la mayor eficiencia posible y mediante algunos principios de innovación hacer que este proyecto sea muy eficaz en su AZAEL BECERRIL ejecución. RAMOS LUIS F. SANCHEZ VIDALS
  • 2. CSS CSS COMPILER 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 DIEGO SANCHEZ HERNANDEZ GERARDO MUNIVE MORALES BRUCE NAVA MALDONADO AZAEL BECERRILA RAMOS LUIS F. SANCHEZ VIDALS Página 1
  • 3. CSS CSS COMPILER 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. DIEGO SANCHEZ HERNANDEZ GERARDO MUNIVE MORALES BRUCE NAVA MALDONADO AZAEL BECERRILA RAMOS LUIS F. SANCHEZ VIDALS Página 2
  • 4. CSS CSS COMPILER 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 DIEGO SANCHEZ HERNANDEZ GERARDO MUNIVE MORALES BRUCE NAVA MALDONADO AZAEL BECERRILA RAMOS LUIS F. SANCHEZ VIDALS Página 3
  • 5. CSS CSS COMPILER 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. DIEGO SANCHEZ HERNANDEZ GERARDO MUNIVE MORALES BRUCE NAVA MALDONADO AZAEL BECERRILA RAMOS LUIS F. SANCHEZ VIDALS Página 4
  • 6. CSS CSS COMPILER ESTUDIO TEORICO ¿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. DIEGO SANCHEZ HERNANDEZ GERARDO MUNIVE MORALES BRUCE NAVA MALDONADO AZAEL BECERRILA RAMOS LUIS F. SANCHEZ VIDALS Página 5
  • 7. CSS CSS COMPILER 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. DIEGO SANCHEZ HERNANDEZ GERARDO MUNIVE MORALES BRUCE NAVA MALDONADO AZAEL BECERRILA RAMOS LUIS F. SANCHEZ VIDALS Página 6
  • 8. CSS CSS COMPILER 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. DIEGO SANCHEZ HERNANDEZ GERARDO MUNIVE MORALES BRUCE NAVA MALDONADO AZAEL BECERRILA RAMOS LUIS F. SANCHEZ VIDALS Página 7
  • 9. CSS CSS COMPILER 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. DIEGO SANCHEZ HERNANDEZ GERARDO MUNIVE MORALES BRUCE NAVA MALDONADO AZAEL BECERRILA RAMOS LUIS F. SANCHEZ VIDALS Página 8
  • 10. CSS CSS COMPILER 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. DIEGO SANCHEZ HERNANDEZ GERARDO MUNIVE MORALES BRUCE NAVA MALDONADO AZAEL BECERRILA RAMOS LUIS F. SANCHEZ VIDALS Página 9
  • 11. CSS CSS COMPILER 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 DIEGO SANCHEZ HERNANDEZ GERARDO MUNIVE MORALES BRUCE NAVA MALDONADO AZAEL BECERRILA RAMOS LUIS F. SANCHEZ VIDALS Página 10
  • 12. CSS CSS COMPILER 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. DIEGO SANCHEZ HERNANDEZ GERARDO MUNIVE MORALES BRUCE NAVA MALDONADO AZAEL BECERRILA RAMOS LUIS F. SANCHEZ VIDALS Página 11
  • 13. CSS CSS COMPILER 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 DIEGO SANCHEZ HERNANDEZ GERARDO MUNIVE MORALES BRUCE NAVA MALDONADO AZAEL BECERRILA RAMOS LUIS F. SANCHEZ VIDALS Página 12
  • 14. CSS CSS COMPILER 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? COMPILADOR (Hojas de estilo CSS) Analizador Léxico Analizador Sintáctico TOKENS Analizador Léxico Identificadores Palabras Reservadas Frases gramaticales Árbol de análisis sintáctico DETECCIÓN DE ERRORES 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. DIEGO SANCHEZ HERNANDEZ GERARDO MUNIVE MORALES BRUCE NAVA MALDONADO AZAEL BECERRILA RAMOS LUIS F. SANCHEZ VIDALS Página 13
  • 15. CSS CSS COMPILER 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. DIEGO SANCHEZ HERNANDEZ GERARDO MUNIVE MORALES BRUCE NAVA MALDONADO AZAEL BECERRILA RAMOS LUIS F. SANCHEZ VIDALS Página 14
  • 16. CSS CSS COMPILER 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. DIEGO SANCHEZ HERNANDEZ GERARDO MUNIVE MORALES BRUCE NAVA MALDONADO AZAEL BECERRILA RAMOS LUIS F. SANCHEZ VIDALS Página 15
  • 17. CSS CSS COMPILER 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. DIEGO SANCHEZ HERNANDEZ GERARDO MUNIVE MORALES BRUCE NAVA MALDONADO AZAEL BECERRILA RAMOS LUIS F. SANCHEZ VIDALS Página 16
  • 18. CSS CSS COMPILER 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” DIEGO SANCHEZ HERNANDEZ GERARDO MUNIVE MORALES BRUCE NAVA MALDONADO AZAEL BECERRILA RAMOS LUIS F. SANCHEZ VIDALS Página 17
  • 19. CSS CSS COMPILER  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. DIEGO SANCHEZ HERNANDEZ GERARDO MUNIVE MORALES BRUCE NAVA MALDONADO AZAEL BECERRILA RAMOS LUIS F. SANCHEZ VIDALS Página 18
  • 20. CSS CSS COMPILER 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. DIEGO SANCHEZ HERNANDEZ GERARDO MUNIVE MORALES BRUCE NAVA MALDONADO AZAEL BECERRILA RAMOS LUIS F. SANCHEZ VIDALS Página 19
  • 21. CSS CSS COMPILER 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 DIEGO SANCHEZ HERNANDEZ GERARDO MUNIVE MORALES BRUCE NAVA MALDONADO AZAEL BECERRILA RAMOS LUIS F. SANCHEZ VIDALS Página 20
  • 22. CSS CSS COMPILER 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. DIEGO SANCHEZ HERNANDEZ GERARDO MUNIVE MORALES BRUCE NAVA MALDONADO AZAEL BECERRILA RAMOS LUIS F. SANCHEZ VIDALS Página 21
  • 23. CSS CSS COMPILER 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. DIEGO SANCHEZ HERNANDEZ GERARDO MUNIVE MORALES BRUCE NAVA MALDONADO AZAEL BECERRILA RAMOS LUIS F. SANCHEZ VIDALS Página 22
  • 24. CSS CSS COMPILER 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. DIEGO SANCHEZ HERNANDEZ GERARDO MUNIVE MORALES BRUCE NAVA MALDONADO AZAEL BECERRILA RAMOS LUIS F. SANCHEZ VIDALS Página 23
  • 25. CSS CSS COMPILER 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 DIEGO SANCHEZ HERNANDEZ GERARDO MUNIVE MORALES BRUCE NAVA MALDONADO AZAEL BECERRILA RAMOS LUIS F. SANCHEZ VIDALS Página 24
  • 26. CSS CSS COMPILER 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. DIEGO SANCHEZ HERNANDEZ GERARDO MUNIVE MORALES BRUCE NAVA MALDONADO AZAEL BECERRILA RAMOS LUIS F. SANCHEZ VIDALS Página 25
  • 27. CSS CSS COMPILER 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 CSS COMPILER COMPILER COMPILADOR ASEDARK JAVA C++ RAPIDEZ BUENA EFECTIVA EXELENTE AUTOMATA BUENO BASICO EXELENTE ANALIZADORES FUNCIONALES FALLAS EN LA FUNCIONAN EVALUACION DE CORRECTAMENTE TOKENS 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. DIEGO SANCHEZ HERNANDEZ GERARDO MUNIVE MORALES BRUCE NAVA MALDONADO AZAEL BECERRILA RAMOS LUIS F. SANCHEZ VIDALS Página 26
  • 28. CSS CSS COMPILER 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 DIEGO SANCHEZ HERNANDEZ GERARDO MUNIVE MORALES BRUCE NAVA MALDONADO AZAEL BECERRILA RAMOS LUIS F. SANCHEZ VIDALS Página 27