Ordinario inovacion

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

Transcript of Ordinario inovacion

CSS COMPILER

El proyecto “CSS COMPILER” busca la implementación de un compilador

relacionada con hojas de estilo, atreves de la generación de autómatas,

matrices de transición y algunas estructuras que bajo un análisis realizado

previamente, nos den la mayor eficiencia posible y mediante algunos

principios de innovación hacer que este proyecto sea muy eficaz en su

ejecución.

CSS

AUTORES:

DIEGO SANCHEZ

HERNANDEZ

GERARDO MUNIVE

MORALES

BRUCE NAVA

MALDONADO

AZAEL BECERRIL

RAMOS

LUIS F. SANCHEZ

VIDALS

CSS COMPILER

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

CSS

INDICE

INTRODUCCION……………………PAG .2 1.1 Planteamiento del Problema

1.2 Objetivo del Trabajo de Investigación

1.3 Importancia de la Investigación

1.4 Alcances y limitaciones

1.5 Agendas de Trabajo

1.6 Recursos de Hardware, Software y Humanos

ESTUDIO TEORICO……………………PAG.5 2.1 Para la mejora del software

ESTADO INICIAL DEL SISTEMA.PAG.13 3.1 Descripción de Software

3.2 Diagramas de Soporte del Software

3.3 Pruebas del software

ANÁLISIS EXPERIMENTAL PARA LA

MEJORA DEL SISTEMA………...…PAG.16

4.1 Significado de la Tabla de Mejoras conforme a los criterios del análisis

4.2 Aplicación de Activadores Operacionales para la Mejora Creativa del Software

4.3 Mejoras Creativas del Software para su Implementación

ESTADO FINAL DEL SOFTWARE

MEJORADO ……………………..…….PAG.20 5.1 Especificación del Software Mejorado

5.2 Diagramas de Soporte del Software en el análisis y Diseño Mejorado

5.3 Elementos de Importancia para el Software Mejorado

5.4 Pruebas de Funcionalidad del Software Mejorado

CONCLUSIONES………………………PAG.26 6.1 Referencias

CSS COMPILER

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

CSS

Planteamiento del Problema

El proyecto que nosotros decidimos realizar fue un compilador de hojas de estilo

“.css”, ya que estábamos en proceso de la realización de este, pero por falta de

tiempo solo desarrollamos la parte del analizador léxico aun contando con muchas

fallas y su ejecución no cuenta aún con una interfaz gráfica.

<

Lo que nosotros nos planteamos al escoger este proyecto es buscar la

implementación de un analizador léxico que funcione de manera correcta, un

analizador sintáctico que funcione de manera eficaz y rápida, para que así nuestro

Proyecto presente un gran avance en la busca de la creación de un compilador.

Objetivo del Trabajo de Investigación

El objetivo que el grupo de trabajo se ha propuesto es lograr concluir este proyecto

con las siguientes características:

Mejorar el Analizador Léxico.

Implementar Analizador Sintáctico.

Lograr que el análisis de las css sea lo más correcta posible.

Implementar una interfaz gráfica amigable y manejable para el usuario.

Que la conjunción de los dos analizadores a la hora de su ejecución

sea lo mas rápido que sea posible.

Los anteriores puntos mencionados es lo que el grupo de trabajo se ha planteado

y son las características que rigen la realización de nuestro proyecto, esto es lo

que se propone como parte de nuestros objetivos a cumplir.

Importancia de la Investigación

La importancia que tiene esta investigación para nosotros es lograr concluir este

proyecto de manera efectiva, ya que, desde nuestro punto de vista representa un

reto en la parte de la programación y nos es interesante por qué tenemos que

generar ciertos puntos que son indispensables para la operación de este

programa, como lo son la generación de un autómata, una matriz de transiciones

y la parte la cual llevara a cabo el proceso de compilación.

CSS COMPILER

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

CSS

Alcances y limitaciones

Los alcances que esperamos lograr realizar como ya se ha mencionado

anteriormente es la conclusión de los puntos propuestos de este proyecto

(Analizador Léxico, Analizador Semántico, Interfaz amigable al usuario).

Los problemas que nosotros podemos encontrar al realizar esta investigación son:

Que el autómata y matriz de transiciones estén mal analizados.

Que nuestro sistema no pueda lograr la ejecución.

Que se pueda concluir en tiempo y forma la programación.

Que el equipo pueda reunirse de manera adecuada ya que el tiempo es un

factor que consideramos esencial en este proyecto.

AGENDAS DE TRABAJO

CSS COMPILER

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

CSS

La agenda de trabajo que se muestra es la que el equipo de trabajo manejara.

Los integrantes de este proyecto a esta fecha ya saben cuál es la parte de

proyecto que deben realizar, así que con la organización que nosotros manejamos

confiamos en no tener ningún contratiempo.

Recursos de Hardware, Software y Humanos

Nosotros emplearemos el lenguaje de programación java ya que creemos que su

manejabilidad es suficiente para llevar acabo la programación necesaria y no

representa ningún problema en la parte de software, ya que su instalación es muy

simple además de poderlo manejar en distintos sistemas operativos.

En la parte de la administración del trabajo cada persona ya tiene asignada la

parte de programación que le corresponde realizar, ya que, se ha dado tiempo

considerable en cada parte, no representa ningún problema la organización de

trabajo.

CSS COMPILER

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

CSS

ESTUDIO TEO RICO

¿Qué es un compilador (traductor)?

Un compilador es un programa que lee un programa fuente y lo traduce a un

programa destino u objeto. Como parte esencial el compilador alerta al usuario de

la existencia de errores en el programa fuente.

De esta manera un programador o usuario puede diseñar un programa en un

lenguaje mucho más cercano a cómo piensa un ser humano, para luego

compilarlo a un programa más manejable por una computadora.

Gran parte de los primeros trabajos de compilación estaba relacionada con la

traducción de fórmulas aritméticas a código de máquina. Desde aquella época los

conocimientos sobre cómo organizar y escribir compiladores han ido progresando,

de tal manera que a menudo se los clasifica según el número de pasadas, según

la carga y ejecución, depuración u optimización, según el método de su

construcción y de su función.

La construcción de un compilador involucra la división del proceso en una serie de

fases que variará con su complejidad. Generalmente estas fases se agrupan en

dos tareas: el análisis del programa fuente y la síntesis del programa objeto.

Análisis: Se trata de la comprobación de la corrección del programa fuente,

e incluye las fases correspondientes al Análisis Léxico(que consiste en la

descomposición del programa fuente en componentes léxicos), Análisis

Sintáctico (agrupación de los componentes léxicos en frases gramaticales).

Esta taxonomía de los tipos de compiladores no es excluyente, por lo que puede

haber compiladores que se adscriban a varias categorías:

Ensamblador: el lenguaje fuente es lenguaje ensamblador y posee una estructura

sencilla.

Compilador cruzado: se genera código en lenguaje objeto para una máquina

diferente de la que se está utilizando para compilar.

CSS COMPILER

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

CSS

Compilador con montador: compilador que compila distintos módulos de forma

independiente y después es capaz de enlazarlos.

Autocompilador: compilador que está escrito en el mismo lenguaje que va a

compilar.

Metacompilador: es sinónimo de compilador de compiladores y se refiere a un

programa que recibe como entrada las especificaciones del lenguaje para el que

se desea obtener un compilador y genera como salida el compilador para ese

lenguaje, el desarrollo de los meta compiladores se encuentra con la dificultad de

unir la generación de código con la parte de análisis. Lo que sí se han desarrollado

es generadores de analizadores léxicos y sintácticos.

Por ejemplo, los conocidos:

LEX: generador de analizadores léxicos

YACC: generador de analizadores sintácticos

Descompilador: es un programa que acepta como entrada código máquina y lo

traduce a un lenguaje de alto nivel, realizando el proceso inverso a la compilación.

HACIENDO UN COMPILADOR

Fase de análisis

El proceso de traducción se compone internamente de varias etapas o fases, que

realizan distintas operaciones lógicas. Es útil pensar en estas fases como en

piezas separadas dentro del traductor, y pueden en realidad escribirse como

operaciones codificadas separadamente aunque en la práctica a menudo se

integren juntas.

Análisis léxico

El análisis léxico constituye

la primera fase, aquí se lee

el programa fuente de

izquierda a derecha y se

agrupa en componentes

léxicos (tokens), que son

secuencias de caracteres

que tienen un significado.

Además, todos los espacios en blanco, líneas en blanco, comentarios y demás

información innecesaria se elimina del programa fuente. También se comprueba

que los símbolos del lenguaje (palabras clave, operadores, etc.) se han escrito

correctamente.

CSS COMPILER

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

CSS

Análisis sintáctico

En esta fase los caracteres o componentes léxicos se agrupan jerárquicamente en

frases gramaticales que el compilador utiliza para sintetizar la salida. Se

comprueba si lo obtenido de la fase anterior es sintácticamente correcto (obedece

a la gramática del lenguaje). Por lo general, las frases gramaticales del programa

fuente se representan mediante un árbol de análisis sintáctico.

La estructura jerárquica de un programa normalmente se expresa utilizando reglas

recursivas. Por ejemplo, se pueden dar las siguientes reglas como parte de la

definición de expresiones:

1. Cualquier identificador es una expresión.

2. Cualquier número es una expresión.

3. Si expresión1 y expresión2 son expresiones, entonces también lo son:

expresión1 + expresión2

expresión1 * expresión2

(expresión1)

Las reglas 1 y 2 son reglas

básicas (no recursivas), en

tanto que la regla 3 define

expresiones en función de

operadores aplicados a

otras expresiones.

La división entre análisis

léxico y análisis sintáctico es algo arbitraria. Un factor para determinar la división

es si una construcción del lenguaje fuente es inherentemente recursiva o no. Las

construcciones léxicas no requieren recursión, mientras que las construcciones

sintácticas suelen requerirla. No se requiere recursión para reconocer los

identificadores, que suelen ser cadenas de letras y dígitos que comienzan con una

letra. Normalmente, se reconocen los identificadores por el simple examen del

flujo de entrada, esperando hasta encontrar un carácter que no sea ni letra ni

dígito, y agrupando después todas las letras y dígitos encontrados hasta ese punto

en un componente léxico llamado identificador. Por otra parte, esta clase de

análisis no es suficientemente poderoso para analizar expresiones o

proposiciones. Por ejemplo, no podemos emparejar de manera apropiada los

paréntesis de las expresiones, o las palabras begin y end en proposiciones sin

imponer alguna clase de estructura jerárquica o de anidamiento a la entrada.

CSS COMPILER

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

CSS

Conclusiones del estudio teórico de los compiladores

Un compilador es un programa que convierte un programa fuente a un

programa destino generando un ejecutable.

Su clasificación depende de su función su modo de estructuración,

rendimiento y pasadas.

Tanto como el proceso de creación de programa destino existe el proceso

inverso, es decir, generar un programa fuente a partir de un programa

destino, a esto se lo conoce como descompilador y es considerado como

uno de los tipos de compilador.

Un meta compilador es aquel que genera un compilador a partir de las

especificaciones de las funciones que el mismo debe realizar.

MARCO TEORICO CSS

CSS son las siglas de Cascading Style Sheets - Hojas de Estilo en Cascada - que

es un lenguaje que describe la presentación de los documentos estructurados en

hojas de estilo para diferentes métodos de interpretación, es decir, describe como

se va a mostrar un documento en pantalla, por impresora, por voz (cuando la

información es pronunciada a través de un dispositivo de lectura) o en dispositivos

táctiles basados en Braille.

¿Para que sirve?

CSS es una especificación desarrollada por el W3C (World Wide Web Consortium)

para permitir la separación de los contenidos de los documentos escritos en

HTML, XML, XHTML, SVG, o XUL de la presentación del documento con las hojas

de estilo, incluyendo elementos tales como los colores, fondos, márgenes, bordes,

tipos de letra..., modificando as la apariencia de una página web de una forma

más sencilla, permitiendo a los desarrolladores controlar el estilo y formato de sus

documentos.

¿Cómo funciona?

El lenguaje CSS se basa en una serie de reglas que rigen el estilo de los

elementos en los documentos estructurados, y que forman la sintaxis de las hojas

de estilo. Cada regla consiste en un selector y una declaración, esta última va

entre corchetes y consiste en una propiedad o atributo, y un valor separados por

dos puntos.

CSS COMPILER

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

CSS

Selector

El Selector especifica que elementos HTML van a estar afectados por esa

declaración, de manera que hace de enlace entre la estructura del documento y la

regla estilística en la hoja de estilo.

Declaración

La Declaración que va entre corchetes es la información de estilo que indica cómo

se va a ver el selector. En caso de que haya más de una declaración se usa punto

y coma para separarlas.

Propiedad o Atributo y Valor

Dentro de la declaración, la Propiedad o Atributo define la interpretación del

elemento asignándosele un cierto Valor, que puede ser color, alineación, tipo de

fuente, tamaño..., es decir, especifican qué aspecto del selector se va a cambiar.

Tres tipos de estilos

La información CSS se puede proporcionar por varias fuentes, ya sea adjunto

como un documento por separado o incorporado en el documento HTML, y dentro

de estas posibilidades destacan tres formas de dar estilo a un documento web:

Hoja de Estilo Externa

La Hoja de Estilo Externa se almacena en un archivo diferente al del archivo con el

código HTML al cal estar vinculado a través del elemento link, que debe ir situado

en la sección head. Es la manera de programar ms eficiente, ya que separa

completamente las reglas de formato para la página HTML de la estructura básica

de la página.

Hoja de Estilo Interna

La Hoja de Estilo Interna est incorporada a un documento HTML, a través del

elemento style dentro de la sección head, consiguiendo de esta manera separar la

información del estilo del código HTML.

CSS COMPILER

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

CSS

Estilo en Línea

El Estilo en Línea sirve para insertar el lenguaje de estilo directamente dentro de la

sección body con el elemento style. Sin embargo, este tipo de estilo no se

recomienda pues se debe intentar siempre separar el contenido de la

presentación.

Versiones CSS

Existen varias versiones: CSS1 y CSS2, la CSS3 está todavía en desarrollo por el

CSS WG (Cascading Style Sheets Working Group).

Los navegadores actuales implementan bastante bien CSS1 desde 1999 (tres

años después de su lanzamiento) aunque dependiendo de la marca y versión del

navegador hay algunas pequeñas diferencias de implementación. El primer

navegador en dar soporte completo al CSS1 ha sido Internet Explorer 5.0 for the

Macintosh en 2000, anteriormente el que mejor soportaba CSS1 haba sido Opera,

después otros navegadores también lo han ido implementando.

Sin embargo, CSS2 (lanzado en 1998) sólo está parcialmente implementado en

los navegadores más recientes, variando en estos los niveles de implementación.

Ventajas de CSS

La principal ventaja de CSS sobre el lenguaje HTML o similar, es que el estilo se

puede guardar completamente por separado del contenido siendo posible, por

ejemplo, almacenar todos los estilos de presentación para una web de 10.000

páginas en un sólo archivo de CSS.

CSS permite un mejor control en la presentación de un sitio web que los

elementos de HTML, agilizando su actualización.

Aumento de la accesibilidad de los usuarios gracias a que pueden especificar su

propia hoja de estilo, permitiéndoles modificar el formato de un sitio web según

sus necesidades, de manera que por ejemplo, personas con deficiencias visuales

puedan configurar su propia hoja de estilo para aumentar el tamaño del texto.

El ahorro global en el ancho de banda es notable, ya que la hoja de estilo se

almacena en cache después de la primera solicitud y se puede volver a usar para

cada página del sitio, no se tiene que descargar con cada página web. Por otro

lado, quitando todo lenguaje de marcado en la presentación en favor del uso de

CSS reduce su tamaño y ancho de banda hasta más del 50%, esto beneficia al

CSS COMPILER

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

CSS

dueño del sitio web con menos ancho de banda y costes de almacenamiento, as

como a los visitantes para los cuales las páginas se van a cargar más rápido.

Una página puede tener diferentes hojas de estilo para mostrarse en diferentes

dispositivos, como pueden ser impresoras, lectores de voz, o móviles.

Conclusiones de las hojas de estilo css

Herramienta que proporciona al diseñador de documentos HTML un control

total sobre la forma en que estos se visualizan o imprimen.

Plantillas que permiten cambiar el formato de presentación de cualquier

etiqueta de HTML.

Las CSS controlan todos los elementos de la presentación de un

documento HTML: márgenes de página, espaciado entre párrafos, tamaños

y tipos de letra, color y fondos, etc.

Permiten agrupar varios formatos en nuevas clases de texto, para evitar

tener que repetir las mismas etiquetas HTML en diferentes partes del

documento.

CSS COMPILER

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

CSS

ESTADO INICIAL DEL SISTEMA

Nuestro proyecto (Compiler CSS) es un proyecto donde su estructuración de

análisis no tiene como idea principal la innovación, la idea principal de nuestro

proyecto se basa en la creación, que a través de un proceso usara la innovación

como punto de mejora a la hora del desarrollo que se busca tener.

El compilador CSS es un software que se ha diseñado para el análisis de hojas de

estilo, la cual se espera sea una herramienta que favorezca el análisis de este tipo

de hojas. Se espera que esta herramienta ayude aprevenir fallas de estructuración

y programación a la hora de creación de este tipo de hojas.

El software que se intenta desarrollar consta de un análisis detallado ya que se

pondrán en ejecución aspectos como:

La generación de un autómata.

La generación de un diagrama de transiciones.

La creación de un Analizador Léxico.

La generación de una gramática LL1.

La creación de un Analizador Sintáctico.

La conjunción de analizador léxico y analizador sintáctico.

La implementación de una interfaz gráfica la cual permita una mejor

interacción entre el usuario y el programa.

Todos estos puntos que se plantean es al estado que se espera poder lograr para

la creación de nuestro compilador, los cuales mediante diferentes etapas de

análisis y estudio nos darán las posibles fallas que nuestro sistema a la hora de su

ejecución pudiera tener, se espera que el usuario pueda interactuar de manera

sencilla con el software, presentándole una interfaz que sea sencilla para que no

represente ninguna complicación para su uso.

OBJETIVOS ESPECIFICOS DE NUESTRA INTERFAZ

Permite al usuario buscar el archivo que se desee compilar.

Permite la interacción de una manera entendible y práctica.

Primero se llevara a cabo el análisis léxico que si no contiene ningún error

nos dará paso a en análisis sintáctico.

Los errores que pudiera tener nos dirá el número de línea para así poder

corregir nuestro error.

El analizador sintáctico dirá que la hoja de estilo esta estructura

adecuadamente

CSS COMPILER

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

CSS

Valor agregado del Software CSS

Tras analizar el software el usuario estará capacitado para poder generar el

análisis de hojas de estilo y de esta manera saber si la estructuración de estas

esta hecha de una manera correcta y adecuada.

DIAGRAMAS DE SOPORTE DE SOFTWARE EN L ¿QUE Y COMO?

Nuestro proyecto como ya se planteó en los objetivos, se encargara de la

detección de errores estructurales que se puede tener la hora de la creación de

una hoja de estilo.

Para su análisis previo se utilizaran estas dos partes del proyecto:

Analizador Léxico

Analizador sintáctico

El analizador léxico será el encargado de verificar las palabras o símbolos que

estén dentro de la hoja de estilo (.css) sean parte de la sintaxis que estas usan,

para esto el mismo analizador debe de contar con una “base de datos” propia del

lenguaje css.

DETECCIÓN DE ERRORES

Árbol de análisis sintáctico

Analizador Léxico

TOKENS

Identificadores Palabras Reservadas

COMPILADOR(Hojas de estilo CSS)

Analizador Sintáctico

Analizador Léxico

Frases gramaticales

CSS COMPILER

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

CSS

Para que en caso de que lo que se esté analizando no resulte ser parte del

lenguaje de las hojas de estilo se notifique al usuario mediante un mensaje que se

encuentre un error en determinada línea, en caso contrario se le enviara una señal

al analizador sintáctico, que la estructuración de la hoja de estilo está completa.

El analizador sintáctico recibe los tokens enviados por el analizador léxico (cabe

mencionar que el analizador léxico es una función propia del analizador sintáctico)

el cual por medio de una gramática estructurada forme frases y verifique que sean

sintácticamente correctas, esto se realiza mediante la creación de un árbol de

análisis sintáctico, además esta función también será encargada de encontrar

errores de tipo sintáctico esto quiere decir por ejemplo es mal uso de llaves o el

mal uso de punto y coma en una sentencia etc.

Una vez que se culmine la programación de ambos módulos se unirán para así

poder formar 2 partes fundamentales de nuestro compilador, a este punto se

espera encontrar tanto analizadores léxicos como sintácticos y de esta manera

poder comunicárselo al usuario.

PRUEBAS INICIALES DE SOFTWARE

En la siguiente imagen se podrá observar como nuestro analizador léxico en su

ejecución podrá analizar diversas palabras y símbolos que forman parte de la

programación de css, los detectara y nos dirá mediante mensaje de consola en

donde encuentra alguna palabra desconocida se detendrá para mostrarnos un

mensaje de donde esta nuestro error y nos indicara en que línea se encuentra

para que nosotros podamos checar este error.

CSS COMPILER

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

CSS

Bueno cabe mencionar que a este punto solo se tiene una parte del analizador

léxico pero aun contando con errores, se espera que con el progreso que nuestro

proyecto vaya teniendo se llegue a tener un mayor alcance, ya que aún falta

corregir los errores de nuestro analizador léxico y la creación de nuestro autómata

y nuestra gramática de tipo LL1.

AUTOMATA PARA HOJAS DE ESTILO CSS

Hasta este punto este es el autómata que se ha generado para la creación de

hojas de estilo.

CSS COMPILER

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

CSS

ANALISIS EXPERIMENTAL PARA LA MEJORA DE SISTEMA

INTRODUCCION

Nosotros consideramos que para la realización de nuestro proyecto la idea que

más nos conviene usar es una idea trampolín, ya que esta técnica consiste en

utilizar ideas intermedias como estimulantes del pensamiento para facilitar la

solución de problemas. Como nuestro proyecto no tiene la parte innovadora y nos

enfocamos a la parte de la creación consideramos que la idea trampolín es la

idónea para este proyecto, ya que debemos aplicar esta técnica para la

generación de ideas, maneras de afrontar problemas y soluciones las cuales en la

medida de lo posible logren la mayor optimización.

PREGUNTAS CLAVES A RESOLVER EN ESTE CAPITULO

¿Cuál es el problema?

¿Qué usar como trampolín?

¿Qué se puede obtener con este trampolín?

¿Estrategias para aplicar la técnica de trampolín?

Tabla de creación

En esta tabla presentamos los problemas que tenemos que resolver de manera

inmediata para el proyecto, ya que es fundamental tomar la decisión de cuál será

la mejor resolución en la puntos posteriores se mostrara cuáles han sido las

determinaciones que se han tomado en este problema.

CSS COMPILER

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

CSS

DEFINICIÓN DEL PROBLEMA O SITUACIÓN POR MEJORAR

IDEAS ABSURDAS

No crear una matriz de transiciones

Usar arreglos en lugar de matrices

Usar solo funciones string.

Bueno a través de ideas como las que se muestran en la parte superior y otras

ideas que surgen en cuanto se va realizando el proyecto se busca la “Realización

de analizador léxico y sintáctico para la compilación de hojas de estilo (“css”).”

Aunque nuestro proyecto se centra en la creación consideramos que si usamos la

parte innovadora, ya que tenemos que considerar variables las cuales logren una

mayor eficiencia en la realización del proyecto así como para la creación de

nuestro autómata, nuestra matriz de adyacencia y nuestra gramática de tipo ll1, ya

que no es algo que este creado se debe analizar distintos aspectos que nosotros

sentimos que tiene que ver con la innovación.

También es cierto que la mayoría de los compiladores tienen una estructura

definida, pero al ser un proyecto que no se ha realizado nosotros tenemos que

crear partes que son indispensables para este proyecto, se deben analizar

diferentes variables las cuales nos permitirán lograr la mayor eficiencia y hasta

cierto punto innovación ya que es algo que no esta creado.

Es por eso que nuestro proyecto se basa en el siguiente esquema presentado:

“APLICACIÓN DE ACTIVADORES OPERACIONALES PARA LA MEJORA

CREATIVA DEL SOFTWARE”

CSS COMPILER

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

CSS

Primero consideramos cual es el objetivo del programa, que es donde

nosotros definimos hasta dónde es que llegaremos y cuál es el propósito

del proyecto.

1. Crear analizador léxico

2. Crear analizador sintáctico para la compilación de hojas de estilo (“css”).

3. Nuestro propósito es que al ensamblar estas partes el analizador

funcione de manera correcta.

En la parte de considerar prioridades establecemos cual sería la manera

más eficiente de emplear las alguna estructuras de programación la cual

nos arrojara una mejor solución a este programa, después de un análisis y

varias pruebas en la parte de programación concluimos que la generación

de un autómata programado mediante una matriz de adyacencia es la

manera más eficiente para este programa.

En Considerar consecuencias consideramos cual es el efecto que puede

tener el no emplear bien la estructura adecuada ya que esto nos resta

eficiencia que es lo que buscamos principalmente en este proyecto.

En la parte de lo Positivo, negativo e interrogante al llegar a este punto nos

hemos establecido preguntas como ¿Es buena la programación?, ¿Vamos

por buen camino?, ¿Tenemos que reconfigurar el software?, estas

preguntas nos han servido para ver si nuestra creación va por buen camino

o tenemos que reformular la parte de la programación.

Después de considerar la positivo negativo e interrogante llegamos a la

parte final de los operadores que es considerar alternativas y posibilidades,

en esta parte damos un análisis final de los operadores que hemos

empleado y si creemos conveniente el modificar el programa para lograr la

mayor eficiencia volvemos al principio del esquema para analizar los

operadores nuevamente y realizar este proceso hasta que quedemos

satisfechos con los resultados obtenidos.

CSS COMPILER

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

CSS

IDENTIFICACIÓN DE IDEA INTERMEDIA

La pregunta clave que nosotros nos hemos propuesto es:¿Es la manera más

eficiente?, Ya que de esta forma cada integrante propone ideas nuevas que,

aunque siguen teniendo como base una estructura de programación y nuestro

proyecto se trata de crear aportan ideas innovadoras las cuales nos permiten

analizar el problema desde diferentes puntos de vista y esto nos permite tener

varias alternativas de solución para poder escoger la que creamos pertinente y

más eficiente.

GENERA IDEAS QUE PERMITAN VER EL PROBLEMA DE OTRA MANERA.

Basándonos en el lenguaje de programación que empleamos (Java) hemos

analizado diferentes posibilidades de resolución del problema. Esto nos ha llevado

a tener ideas como las siguientes: 1. Usar un generador automático de

analizadores léxicos. 2. Usar funciones de las librerías Java como StringTokenizer

o funciones que nos permitan el análisis de una manera más simple sin usar un

autómata 3. Generar el autómata usando switchs los cuales ahorrarían tiempo de

programación. 4. Usar matriz de adyacencia atreves de un autómata generado. 5.

Usar grafos. 6. Usar un árbol para el analizador sintáctico. Estas ideas nos han

hecho ver el problema desde diferentes perspectivas ya que buscamos ideas

trampolines las cuales logren la mejor resolución de este problema.

APLICACIÓN DE LAS IDEAS PARA MEJORAR EL PROBLEMA

Después de las ideas aportadas y pruebas realizador por los miembros del equipo

de trabajo Concluimos que la manera más eficiente era la generación de un

autómata para después programarlo en una matriz de adyacencia para la parte

léxica lo cual es la manera más eficiente que se encontró y la generación de

árboles para la parte sintáctica ya que esto nos resta el tiempo de ejecución.

CONCLUSION DE ANALISIS EXPERIMENTAL

La utilización de la técnica trampolín como ya sabemos consiste en usar ideas las

cuales nos permiten ver el problema de diferente manera. Utilizamos el

pensamiento lateral, el cual a través de ideas absurdas son las que nos han

ayudado a dar ideas que a pesar de que nuestro proyecto se basa en la parte de

la creación son innovadoras para la resolución del programa. Todo esto no tiene

una lógica como tal, ya que para la generación de ideas no se sigue un protocolo o

una forma surgen de manera espontánea algunas son correctas otras tantas

incorrectas pero estas son las que abren paso a la generación de las ideas

innovadoras las cuales nos han servido para tener la mejor resolución posible

hasta este momento.

CSS COMPILER

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

CSS

ESTADO FINAL DEL SOFTWARE

ESPECIFICACIÓN DEL SOFTWARE MEJORADO.

El proyecto “Compiler css” es un software creado para el análisis de hojas de

estilo (css), la cual es una herramienta que se encargara de favorecer el análisis y

la estructuración de este tipo de archivos.

El software que se presentara consta cumple los objetivos propuestos al inicio de

este proyecto.

La generación de un autómata.

La generación de un diagrama de transiciones.

La creación de un Analizador Léxico.

La generación de una gramática LL1.

La creación de un Analizador Sintáctico.

La conjunción de analizador léxico y analizador sintáctico.

La implementación de una interfaz gráfica la cual permita una mejor

interacción entre el usuario y el programa.

Después de un largo tiempo de trabajo y mediante análisis y horas de trabajo

prestadas a este proyecto se llegó a cumplir todos los objetivos planteados.

Aunque primero solo se contaba con una parte del analizador léxico el avance que

presento nuestro proyecto fue mucho, ya que se mejoró el analizador léxico ya

que presentaba muchas fallas, además de la generación de los diagramas de

transiciones, las gramáticas ll1 y los objetivos que se presentan en la parte de

arriba.

Diagramas de Soporte del Software en el análisis y Diseño Mejorado

CSS COMPILER

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

CSS

El proyecto “compiler css” se encarga de detectar errores en la creación de las

mismas, para ello, está conformado de:

ANALIZADOR LÉXICO

ANALIZADOR SINTÁCTICO

El analizador léxico se encarga de verificar si la palabra o símbolo que se está

analizando forma parte del lenguaje de las hojas de estilo como palabras

reservadas e identificadoras, para que el analizador pueda distinguir entre estas 2

cuestiones, se implementó una mejora creando un archivo con todas las palabras

reservadas, así cuando el analizador encuentra un identificador corrobora si éste

se encuentra dentro del archivo, en caso de que esto sea cierto la aplicación

muestra al identificador como una palabra reservada, en caso contrario lo muestra

como un identificador

El analizador Sintáctico recibe los objetos enviados por el analizador léxico (es

importante mencionar que el analizador léxico es una función del analizador

sintáctico) para así formar frases gramaticales y verificar que estas frases sean

sintácticamente correctas (que obedezca a la gramática del lenguaje), una mejora

muy importante que se implementó en este analizador es la creación de las

funciones “Emparejar” y “pre-análisis”, ambas funciones son de suma importancia

ya que agilizan el análisis de cada frase ayudando a la detección más oportuna de

los errores que puedan existir, “emparejar” nos permite aprobar las frases que han

sido analizadas y no contienen ningún error, permitiendo al programa analizar la

frase siguiente y “pre-análisis” ayuda al A. Sintáctico a agilizar el análisis de las

frases verificando si el orden de las palabras en la frase es el adecuado.

Elementos de importancia para el software mejorado

Los elementos de importancia para este software son principalmente la creación

del A. Sintáctico y la unión del A. Léxico dentro del sintáctico, conforme se fue

avanzando en la implementación de ambos analizadores y del proyecto en sí se

realizaron otras mejoras.

Dentro de la implantación del A. Léxico se creó y mejoró lo siguiente:

La creación de un archivo, el cual contiene las palabras reservadas de las

hojas de estilo CSS. Esto ayuda al programa a distinguir de una manera

más rápida y eficiente los identificadores de las palabras reservadas.

CSS COMPILER

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

CSS

Dentro de la implementación del A. Sintáctico se creó:

Creación de la función pre-análisis. Con esta función la verificación de la

frases gramaticales es mucho más rápida y precisa

Creación de la función emparejar. Esta función nos permite “aprobar” las

frases que están escritas correctamente y “desecharlas” de cierta forma,

para así poder analizar otra frase buscando la existencia de algún error.

Pruebas de Funcionalidad del Software mejorado

En la siguiente imagen se observa la “interfaz sencilla y amigable” que se le

muestra al usuario para el buen manejo del programa.

INTERFAZ PRINCPAL

Esta es la interfaz que nuestro software maneja en ella nos mostrara los datos

leídos desde el archivo.

Las funciones “Analizador Léxico” y “Analizador Sintáctico” funcionaran al dar click

en el botón donde se encuentran estos nombres. Es imposible mostrar la

funcionalidad de los analizadores léxico y sintáctico por separado, ya que para que

el programa funcione correctamente “ambos analizadores deben de trabajar como

uno solo”. Por lo tanto se explicaran los elementos más importantes de la

ventana.

CSS COMPILER

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

CSS

En esta imagen podemos

observar que el programa

muestra el contenido del

archivo que se va a compilar,

claramente se puede observar

que las sentencias pertenecen

al lenguaje CSS.

En la siguiente imagen se

muestra una tabla, la cual

contiene el resultado del

analizador léxico.

CSS COMPILER

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

CSS

En esta imagen se puede

apreciar los dos resultados

que nuestro programa

puede arrojar después de

realizar la función

“analizador sintáctico”.

En las imágenes anteriores también se puede observar que después de analizar la

hoja de estilo CSS se cumplió con el objetivo de detectar: errores, elementos de

las hojas de estilo, colores, palabras reservadas y lo más importante detectar

errores en la creación de la hoja.

Finalmente se muestra la ventana como un todo:

IMAGEN CON ERRORES SINTACTICOS

CSS COMPILER

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

CSS

IMAGEN SIN ERRORES SINTACTICOS

CONCLUSION DE SOFTWARE MEJORADO.

En este caso nuestro proyecto no obedece estrictamente a la parte de la

innovación, ya que se tuvieron que empezar desde cero diversas funciones.

Pero al terminar este capítulo el equipo se mostró satisfecho con los resultados

obtenidos por que fueron los que se plantearon desde un principio.

CSS COMPILER

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

CSS

CONCLUSIONES

EVALUACION INTERNA

NOMBRE DE INVENTO: CSS COMPILER

PROPOSITO: PODER VERIFICAR LA ESTRUCTURA DE HOJAS DE ESTILO (CSS).

COSAS SIMILARES: EXISTEN COMPILADORES QUE SE HAN CREADO PERO ALGUNO PARECIDO AL PROYECTO REALIZADO NO ENCONTRAMOS ALGUNO.

COMPARACION CON LO QUE YA SE HA CREADO Y LO QUE REALIZAMOS

OBSERVADO DESEADO

RAPIDEZ SI SI

AUTOMATA SI SI

GRAMATICA SI SI

ANALIZADORES SI SI

Al concluir nuestra evaluación interna desde nuestro punto de vista se cumplen

muchas de nuestras expectativas y aunque en el análisis previo a la realización

de este proyecto no se revisaron estas variables a la hora de la ejecución

observamos que las cumplimos sin tenerlas tan presentes.

EVALUACION EXTERNA

CONCLUSION EVALUACION EXTERNA

Después de analizar nuestro proyecto con algunos otros pudimos observar que

nuestro planteamiento fue efectivo, ya que de los 3 compiladores que se hizo un

análisis pudimos detectar que aunque hay otros que funcionan de manera más

rápida el nuestro es más correcto en todas las partes programadas.

CSS COMPILER COMPILER ASEDARK

COMPILADOR JAVA C++

RAPIDEZ BUENA EFECTIVA EXELENTE

AUTOMATA BUENO BASICO EXELENTE

ANALIZADORES FUNCIONALES FALLAS EN LA EVALUACION DE TOKENS

FUNCIONAN CORRECTAMENTE

CSS COMPILER

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

CSS

CONCLUSION DE PROYECTO

Nuestro proyecto cumple con las expectativas planteadas desde el comienzo del

mismo, los integrantes del grupo de trabajo fueron capaces de cubrir todas y cada

una de las fases para poder terminar en tiempo y forma la entrega del proyecto.

Al concluir el análisis con otros proyectos nos dimos cuenta que aunque nuestro

programa aún le falta un poco de velocidad y algunos factores mínimos es muy

eficiente en las partes que realizaron, que los autómatas, la gramática , las

matrices de transiciones y la puesta en ejecución de todos estos alcanzaron mas

de nuestras expectativas.

Las evaluaciones nos arrojaron que el proyecto tiene un nivel bueno que todo lo

que se realizo puede mejorarse con un poco más de tiempo.

Esperamos que el proyecto sea un todo éxito y poder continuar con el mismo para

sus mejoras.

REFERENCIAS

* Wikipedia. “Compiladores”. Enciclopedia en línea. Disponible:

http://es.wikipedia.org/wiki/Compilador#Tipos_de_compiladores

* Monografias.com. “Compiladores”. Monografía en línea. Disponible

http://www.monografias.com/trabajos11/compil/compil.shtml

* Usersdic. “Compiladores”. Monografía en línea. Disponible

http://users.dsic.upv.es/~jsilva/uned/compiladores/Apuntes01.pdf

* Compiladores. Principios técnicas y herramientas “Aho, Sethi, Ullman”.

“Compiladores” Texto. Disponible: páginas 1 y 2

*http://my.opera.com/ASEDARK/blog/java-compilador-en-java

*http://www.infor.uva.es/~jmrr/tgp/java/JAVA.html