Está en la página 1de 20

UNIVERSIDAD NACIONAL AUTNOMA DE MXICO

FACULTA DE INGENIERA

Analizador lxico
Utilizando Flex
javascript
MATERIA: LENGUAJES FORMALES Y AUTMATAS
MAESTRA: ING. ROSALES GARCA JOSEFINA
INTEGRANTES
BAZN VERA MARIELA
CANCINO RAMREZ MAURICIO
GANTE VZQUEZ EDUARDO

15/05/2015

Lenguajes formales y autmatas

Introduccin
Analizador lxico
El principal objetivo del analizador lxico es leer el flujo de caracteres de entrada y transformarlo
en una secuencia de componentes lxicos que utilizara el analizador sintctico.
Al tiempo que realiza esta funcin, el analizador lxico se ocupa de ciertas labores de limpieza".
Entre ellas esta eliminar los blancos o los comentarios. Tambin se ocupa de los problemas
que pueden surgir por los distintos juegos de caracteres o si el lenguaje no distingue maysculas
y minsculas.
Para reducir la complejidad, los posibles smbolos se agrupan en lo que llamaremos categoras
lxicas. Tendremos que especificar qu elementos componen estas categoras, para lo que
emplearemos expresiones regulares. Tambin ser necesario determinar si una cadena
pertenece o no a una categora, lo que se puede hacer eficientemente mediante autmatas de
estados finitos.
Funcin del analizador lxico
Es la primera fase de un compilador. Su principal funcin consiste en leer la secuencia de
caracteres del programa fuente, carcter a carcter, y elaborar como salida la secuencia de
componentes lxicos que utiliza el analizador sintctico. El analizador sintctico emite la orden
al analizador lxico para que agrupe los caracteres y forme unidades con significado propio
llamados componentes lxicos (tokens). Los componentes lxicos representan:
o Palabras reservadas: if, while, do,
o Identificadores: variables, funciones, tipos definidos por el usuario, etiquetas,
o Operadores: =, >, <, >=, <=, +, *,
o Smbolos especiales: ;, ( ), { },
o Constantes numricas. literales que representan valores enteros y flotantes.o Constantes de
carcter: literales que representan cadenas de caracteres.

Pgina 1

Lenguajes formales y autmatas

Adems el analizador lxico es responsable de:


o Manejo de apertura y cierre de archivo, lectura de caracteres y gestin de posibles errores de
apertura.
o Eliminar comentarios, espacios en blanco, tabuladores y saltos de lnea.
o Inclusin de archivos y macros.
o Contabilizar nmero de lneas y columnas para emitir mensajes de error.
Una de las ventajas de separar el anlisis lxico y anlisis sintctico es que facilita la
transportabilidad del traductor si se decide realizar cambios posteriores, por ejemplo cambiar
las etiquetas begin-end por llaves de apertura y cierre { }.
Componentes lxicos, patrones y lexemas
En la fase de anlisis, los trminos componentes lxicos (token), patrn y lexema se emplean
con significados especficos. Un analizador lxico, inicialmente lee los lexemas y le asigna un
significado propio.
Componente lxico es la secuencia lgica y coherente de caracteres relativo a una categora:
identificador, palabra reservada, literales (cadena/numrica), operador o carcter de
puntuacin, adems de que un componente lxico puede tener uno o varios lexemas.
Patrn es una regla que genera la secuencia de caracteres que puede representar a un
determinado componente lxico (expresin regular).
Lexema es una cadena de caracteres que concuerda con un patrn que describe un
componente lxico (valor de cadena).
Ejemplo de una cadena de cdigo: const pi = 3.1416;

El analizador lxico recoge informacin sobre los componentes lxicos en sus atributos
asociados. Los tokens influyen en las decisiones del anlisis sintctico, y los atributos, en la
traduccin de los tokens. En la prctica los componentes lxicos suelen tener solo un atributo.
Para efectos de diagnstico, puede considerarse tanto el lexema para un identificador como el
nmero de lnea en el que se encontr por primera vez. Esta informacin puede ser almacenada
en la tabla de smbolos para el identificador (estructura de datos).
Para la cadena E=M*C**2 de ejemplo, los componentes lxicos y los valores de atributo
asociado son:

Pgina 2

Lenguajes formales y autmatas

Tome en cuenta que ciertas parejas no necesitan un valor de atributo. Los atributos relacionados
con ese token debern ser conservados y transferidos a alguna estructura de datos para que
sean empleados en las siguientes etapas del anlisis.
Manejo de Buffer de entrada
Existen algunos aspectos de eficiencia relacionados con el manejo de buffer. Primero se
menciona un esquema de doble buffer de entrada que resulta til como pre-anlisis de la
entrada para identificar los componentes lxicos. El segundo esquema introduce algunas
tcnicas tiles para aumentar la eficiencia del analizador lxico, empleando centinelas.
Hay veces en que el analizador lxico necesita analizar previamente varios caracteres, adems
del lexema para un patrn, antes de poder anunciar una concordancia. Se pueden emplear
muchos esquemas de manejos de buffer, pero, aqu tan solo se sealarn algunos principios
bsicos.
Parejas de buffer Se utiliza un buffer dividido en dos mitades de N (1024 512) caracteres
cada una, Se leen N caracteres de entrada en cada mitad del buffer con un orden de lectura del
sistema, en vez de invocar una instruccin de lectura para cada carcter de entrada. Si quedan
menos de N caracteres en la entrada, entonces se lee un carcter especial eof en el buffer
despus de los caracteres de entrada. Es decir, eof marca el final del archivo fuente y es distinto
a cualquier carcter de la entrada.

Se mantienen dos apuntadores en el buffer de entrada. La cadena de caracteres entre los dos
apuntadores es el lexema en curso. Al principio, los dos apuntadores apuntan al primer carcter
del prximo lexema que hay que encontrar. Uno de ellos, apuntador delantero, examina hacia
adelante hasta encontrar una concordancia con un patrn. Una vez determinado el siguiente
lexema, el apuntador delantero se coloca en el carcter de su extremo derecho. Despus de
haber procesado el lexema, ambos apuntadores se colocan en el carcter situado
inmediatamente despus del lexema. Con este esquema se pueden considerar los comentarios
y los espacios en blanco como patrones que no producen componentes lxicos. Centinela
Corrigiendo la deficiencia del mtodo anterior para reducir la necesidad de dos pruebas para
cada avance del apuntador delantero. Se amplia cada mitad del buffer para admitir un carcter
centinela al final. De esta manera se vuelve mas eficiente el proceso de cargar del buffer,
realizando una carga en cada mitad.

Pgina 3

Lenguajes formales y autmatas

El manejo de buffer es una labor puramente de programacin y se recomienda realizarla de la


manera que resulte ms sencilla, no es necesario apegarse a alguno de los dos mtodos antes
mencionados.
Jerarqua de Chomsky
En el campo de las ciencias computacionales y especficamente en el rea de los lenguajes
formales la jerarqua de Chomsky es una clase de gramtica formal, que describe de manera
precisa un lenguaje. Las gramticas formales o gramticas suelen ser clasificadas en dos
grandes tipos: las gramticas generativas, que en base a un conjunto de reglas nos indican
como formar cadenas del lenguaje. Y las gramticas analticas, que nos indican como esos
miembros del lenguaje pertenecen a un orden especfico.
Una gramtica formal consiste de:
o Un conjunto finito de smbolos terminales
o Un conjunto finito de smbolos no terminales
o Un conjunto finito de reglas de produccin que consiste de una secuencia de stos
Smbolos
o Un smbolo inicial
Un lenguaje formal o gramtica formal es una secuencia de smbolos que podran ser
construidos aplicando reglas de produccin para esas secuencias de smbolos, y podran en
casi todos los casos describir de manera precisa un lenguaje de programacin.
La jerarqua de Chomsky consiste de los siguientes niveles de gramticas:
o Gramticas sin restricciones (Tipo-0), son capaces de generar todos los lenguajes
reconocidos por una mquina de Turing.
o Gramticas de contexto sensitivo (Tipo-1), son lenguajes capaces de ser reconocidos por una
mquina de Turing no determinista.
o Gramticas libres de contexto (Tipo-2), estos lenguajes son exactamente todos aquellos
lenguajes que pueden ser reconocidos por un autmata de pila no-determinstico. Las
gramticas libres de contexto son la base terica para la construccin de la sintaxis en la
mayora de los lenguajes de programacin.
o Gramticas regulares (Tipo-3), son exactamente todos los lenguajes que pueden ser
reconocidos por un autmata de estado finito. Esta familia de lenguajes formales puede ser
obtenida a partir de una expresin regular. Las expresiones regulares son comnmente usadas
para realizar la bsqueda de patrones en estructuras lxicas de lenguajes de programacin.
Especificaciones de componentes lxicos
Las expresiones regulares son una notacin importante para especificar patrones. Cada patrn
concuerda con una serie de cadenas que, de modo que las expresiones regulares servirn
como nombres para conjuntos de cadenas. El trmino alfabeto denota cualquier conjunto finito
de smbolos, por ejemplo el alfabeto binario { 0, 1 }. Una cadena es una secuencia de finita de
smbolos de un alfabeto y un lenguaje se refiere a conjunto de cadenas de un alfabeto fijo.

Pgina 4

Lenguajes formales y autmatas

Expresiones Regulares
El origen de las expresiones regulares surge de la teora de autmatas y la teora de lenguajes
formales, ambas parte de la ciencias computacionales terica. Este campo estudia los modelos
computacionales (autmata) y la manera de describir y clasificar los lenguajes formales. Un
lenguaje formal puede ser especificado de varias maneras, tales como:
Cadenas producidas por alguna gramtica formal.
Cadenas producidas por expresiones regulares.
Cadenas aceptadas por algunos autmatas tales como las mquinas de Turing o autmatas
de estado finito.
A las expresiones regulares frecuentemente se les llaman patrones, ya que son expresiones
que describen a un conjunto de cadenas. Frecuentemente son usadas para dar una descripcin
concisa de un conjunto, sin tener que listar todos sus elementos.
Las expresiones regulares pueden ser expresadas en trminos de la teora de lenguajes
formales. Consisten de constantes y operadores que denotan el conjunto de cadenas y
operaciones sobre estos conjuntos, respectivamente. Dado un alfabeto las siguientes
constantes son definidas:
o Conjunto vaco: L( ) denota el conjunto { }
o Cadena vaca: L( ) denota el conjunto { }
o Carcter del alfabeto: L( a ), a elemento de denota el conjunto { a }
Operaciones bsicas en expresiones regulares
Seleccin de alternativas (unin) Si r y s son expresiones regulares, entonces r | s es una
expresin regular que define cualquier cadena que concuerda con r o con s. En trminos de
lenguajes decimos que r | s es la unin de los lenguajes de r y s, o L(r | s) = L(r) U L(s) = { |
est en r o est en s }.
ejemplo:
o L(a | b) = L(a ) U L(b) = { a, b }
o L(a | ) = { a, }
o L(a | b | c | d ) = { a, b, c, d }
Concatenacin La concatenacin de dos expresiones regulares r y s se escribe como rs
(yuxtaposicin) y corresponde a cualquier cadena que sea la concatenacin de dos cadenas,
con la primera de ellas correspondiendo a r y la segunda a s. Por ejemplo la expresin regular
ab corresponde a la cadena { ab }, mientras que la expresin regular (a | b)c corresponde a las
cadenas { ac, bc }. De esta forma la operacin de concatenacin para expresiones regulares se
puede definir como L(rs) = L(r) L(s) = { | esta en r y esta en s }.
ejemplo:
o L(a | b) c = L(a | b) L(c) = { a, b } {c} = { ac, bc }
o L(ab|c)(d|ef)=L(ab|c)L(d|ef)={ab,c}{d,ef}={abd, abef, cd, cef}
Repeticin (cerradura de Kleene) Se escribe r*, donde r corresponde a la expresin regular.
La expresin regular r* corresponde a cualquier concatenacin finita de cadenas, cada una de
las cuales corresponde a r. Por ejemplo, la expresin regular a* corresponde a las cadenas { ,
a, aa, aaa, }, (concuerda con por que es la concatenacin de ninguna cadena
concordante con a). En trminos de lenguaje podemos decir que:
Pgina 5

Lenguajes formales y autmatas

ejemplo:
o L(a|b)* = {a, bb}* = {,a,bb,aa,abb,bba,bbbb,aaa,abba,abbbb,...}
o L(a | b*) = {a, b*} = { , a, b, bb, bbb, ...}
o L(ab|c)* = {ab,c}* = {, ab, c, abab, abc, cab, cc, ababab,...}
Para evitar los parntesis se asume que la repeticin tiene la precedencia mas alta, luego la
concatenacin y al final la unin. Si no existiera ambigedad los parntesis pueden ser omitidos
Por ejemplo , (ab)c se escribe como abc y a|(b(c*)) puede ser escrito como a|bc*.
De manera que los lenguajes regulares deben su nombre al hecho de que presentan
regularidades o repeticiones de los mismo componentes, como por ejemplo el lenguaje L1:
L1={ab, abab, ababab, abababab, ...}
As pues, una expresin regular se construye a partir de expresiones regulares ms simples
utilizando un conjunto de reglas definitorias (operaciones bsicas). Cada expresin regular r
representa un lenguaje L(r). Las reglas de definicin especifican como se forma L(r) combinando
de varias maneras los lenguajes representados por las subexpresiones de r.
Se dice que un lenguaje designado por una expresin regular es un conjunto regular. Es
importante recordar que la especificacin de una expresin regular es un ejemplo de definicin
recursiva.
Definicin regular: Es una forma de simplificacin, dando un nombre a las expresiones regulares
y definiendo nuevas expresiones regulares utilizando dichos nombres como si fueran smbolos.
Por ejemplo, podramos desarrollar una expresin regular para una secuencia de uno o mas
dgitos, generando inicialmente una definicin regular para un digito.
digito = 0 | 1 | 2 | | 9 (definicin regular)
digito digito* (expresin regular para nmeros enteros sin signo)
Ahora estamos en posicin de elaborar una definicin de expresiones regulares para la
identificacin de los componentes de un lenguaje determinado. Los tokens de lenguajes de
programacin tiende a caer dentro de varias categoras limitadas que son bastante
estandarizadas, como palabras reservadas, smbolos especiales, identificadores y literales
(numrica/cadena).
Por ejemplo los identificadores en la mayora de los lenguajes de programacin es el conjunto
de cadenas de letras y dgitos que empiezan con una letra. Para ello generamos las definiciones
regulares para letra y digito:
letra = a | b | c | | z | A | B | Z
digito = 0 | 1 | 2 | | 9
identificador = letra ( letra | digito )*

Pgina 6

Lenguajes formales y autmatas

Los nmeros con signo son literales numricas constituidas por el punto decimal despus de
un digito y por una literal que represente la parte del exponente. Con esta informacin
desarrollamos las definiciones regulares y las expresiones regulares necesarias:
((+||)digito digito*) ((. digito)|) ((E(+||)digito)|)
entero = (+||) digito digito*
fraccin = ( . digito ) |
exponente = ( E ( + | | ) digito ) |
numero = digito fraccin exponente
Esta definicin establece que fraccin es un punto decimal seguido de uno o mas dgitos, o
esta ausente. Un exponente, que es E seguido de un signo + - ausente, seguidos de uno o
mas dgitos, o la ausencia de exponente. Tome en cuanta que, como mnimo debe existir un
dgito despus del punto. De manera que numero concuerda con 1 y con 1.0.
Abreviaturas en la notacin
o Uno o ms casos el operador unitario postfijo + significa uno o ms casos de, de manera
que la expresin regular r que designa al lenguaje L(r), entonces r+ es una expresin que
designa al lenguaje L(r)+ . As la expresin regular a+ representa al conjunto de todas las
cadenas de una o ms a. El operador + tiene la misma precedencia que la repeticin, las
identidades algebraicas son r* = r | y r + = r r*.
o Cero o un caso el operado unitario postfijo ? significa cero o un caso de. La notacin r?
es la abreviatura de r | . Si r es una expresin regular, entonces (r)? es una expresin regular
que designa el lenguaje L(r) U { }.
o Clases de caracteres una clase abreviada de caracteres como [a z] designa la expresin
regular a | b | c | | z.
A menudo en la descripcin de los tokens de lenguaje de programacin utilizamos expresiones
regulares, algunas cadenas se pueden definir mediante varias expresiones regulares
diferentes, Por ejemplo, cadenas tales como if y while podran se identificadores o palabras
clave.
Una definicin de lenguaje de programacin debe establecer cual interpretacin se observar,
y las expresiones regulares por si mismas no pueden hacer esto. En realizad, una definicin de
lenguaje debe proporcionar reglas de no ambigedad que explicaran cual significado es el
conveniente para cada uno de tales casos.
Existen dos reglas bsicas que suponen tales casos:
La primera establece que, cuando una cadena puede ser identificador o palabra clave, se
prefiere por lo general la interpretacin como palabra clave.
La segunda establece que, cuando una cadena puede ser un token simple o una secuencia de
varios tokens, por lo comn se prefiere la interpretacin del token simple. Esta preferencia se
conoce a menudo como el principio de sub-cadena ms larga.
Una cuestin que surge en el principio de sub-cadena ms larga es lo referente a los
delimitadores de tokens, o caracteres que implican que una cadena ms larga en el punto donde
Pgina 7

Lenguajes formales y autmatas

aparecen no pueden representar un token. Los caracteres que son parte no ambigua de otros
tokens son delimitadores. Por ejemplo xtemp=ytem, el signo de = sirve como delimitador pues
no forma parte de los identificadores. Los espacios en blanco, los retornos de lnea y los
caracteres de tabulacin generalmente se asumen como delimitadores de token.
De esta manera el reconocimiento de componentes lxicos podra realizarse partiendo del
conjunto de cadenas dadas por expresiones regulares. Por ejemplo:

Para este fragmento de lenguaje, el analizador lxico reconocer las palabras clave if, else, al
igual que los lexemas representados por opRelacion, identificador, nmero y delimitador.
Aun cuando las expresiones regulares son un mecanismo poderoso de definicin de lenguajes,
es necesario construir una herramienta computacional que nos permita su implementacin, para
ello se emplean los autmatas de estado finito. Es decir que, las expresiones regulares debern
ser transformadas a algn tipo de mquina de estados fcil de programar.

Javascript
Javascript es un lenguaje con muchas posibilidades, utilizado para crear pequeos programas
que luego son insertados en una pgina web y en programas ms grandes, orientados a objetos
mucho ms complejos. Con Javascript podemos crear diferentes efectos e interactuar con
nuestros usuarios.
Este lenguaje posee varias caractersticas, entre ellas podemos mencionar que es un lenguaje
basado en acciones que posee menos restricciones. Adems, es un lenguaje que utiliza
Windows y sistemas X-Windows, gran parte de la programacin en este lenguaje est centrada
en describir objetos, escribir funciones que respondan a movimientos del mouse, aperturas,
utilizacin de teclas, cargas de pginas entre otros.
Es necesario resaltar que hay dos tipos de JavaScript: por un lado est el que se ejecuta en el
cliente, este es el Javascript propiamente dicho, aunque tcnicamente se denomina Navigator
JavaScript. Pero tambin existe un Javascript que se ejecuta en el servidor, es ms reciente y
se denomina LiveWire Javascript.
Pgina 8

Lenguajes formales y autmatas

Cmo nace Javascript?


Javascript naci con la necesidad de permitir a los autores de sitio web crear pginas que
permitan intercambiar con los usuarios, ya que se necesitaba crear webs de mayor complejidad.
El HTML solo permita crear pginas estticas donde se poda mostrar textos con estilos, pero
se necesitaba interactuar con los usuarios.
En los aos de 1990, Netscape creo Livescript; las primeras versiones de este lenguaje fueron
principalmente dedicadas a pequeos grupos de diseadores Web que no necesitaban utilizar
un compilador, o sin ninguna experiencia en la programacin orientada a objetos.
A medida que estuvieron disponibles nuevas versiones de este lenguaje incluan nuevos
componentes que dan gran potencial al lenguaje, pero lamentablemente esta versin solo
funcionaba en la ltima versin del Navigator en aquel momento.
En diciembre de 1995, Netscape y Sun Microsystems (el creador del lenguaje Java) luego de
unirse objetivo de desarrollar el proyecto en conjunto, reintroducen este lenguaje con el nombre
de Javascript. En respuesta a la popularidad de Javascript, Microsoft lanzo su propio lenguaje
de programacin a base de script, VBScript (una pequea versin de Visual Basic).
En el ao de 1996 Microsoft se interesa por competir con Javascript por lo que lanza su lenguaje
llamado Jscript, introducido en los navegadores de Internet Explorer. A pesar de las diferentes
crticas que se le hacen al lenguaje Javascript, este es uno de los lenguajes de programacin
ms populares para la web. Desde que los navegadores incluyen el Javascript, no necesitamos
el Java Runtime Environment (JRE), para que se ejecute.
El Javascript es una tecnologa que ha sobrevivido por ms de 10 aos, es fundamentales en
la web, junto con la estandarizacin de la European Computer Manufacturers Association
(ECMA) (adoptada luego por la ISO) y W3C DOM, Javascript es considerado por muchos
desarrolladores web como la fundacin para la prxima generacin de aplicaciones web
dinmicas del lado del cliente.
La estandarizacin de Javascript comenz en conjunto con ECMA en Noviembre de 1996. Es
adoptado este estndar en Junio de 1997 y luego tambin por la Internacional Organization for
Standardization (ISO). El DOM por sus siglas en ingls Modelo de Objetos del Documento
fue diseado para evitar incompatibilidades.
Dnde puedo ver funcionando Javascript?
Entre los diferentes servicios que se encuentran realizados con Javascript en Internet se
encuentran:
Correo
Chat
Pgina 9

Lenguajes formales y autmatas

Buscadores de Informacin
Tambin podemos encontrar o crear cdigos para insertarlos en las pginas como:
Reloj
Contadores de visitas
Fechas
Calculadoras
Validadores de formularios
Detectores de navegadores e idiomas
Cmo identificar cdigo Javascript?
El cdigo javascript podemos encontrarlo dentro de las etiquetas <body></body> de nuestras
pginas web. Por lo general se insertan entre: <script></script>. Tambin pueden estar
ubicados en ficheros externos usando:
<script type="text/javascript" src="micodigo.js"></script>
Algunas caractersticas del lenguaje son:

Su sintaxis es similar a la usada en Java y C, al ser un lenguaje del lado del cliente este es
interpretado por el navegador, no se necesita tener instalado ningn Framework.
Variables: var = Hola, n=103
Condiciones: if(i<10){ }
Ciclos: for(i; i<10; i++){ }
Arreglos: var miArreglo = new Array(12, 77, 5)
Funciones: Propias del lenguaje y predefinidas por los usuarios
Comentarios para una sola lnea: // Comentarios
Comentarios para varias lineas:

/*
// Comentarios
*/
Permite la programacin orientada a objetos: document.write("Hola");
Pgina 10

Lenguajes formales y autmatas

Las variables pueden ser definidas como: string, integer, flota, bolean simplemente utilizando
var. Podemos usar + para concatenar cadenas y variables.
Es compatible con navegadores?
Javascript es soportado por la mayora de los navegadores como Internet Explorer, Netscape,
Opera, Mozilla Firefox, entre otros.
Con el surgimiento de lenguajes como PHP del lado del servidor y Javascript del lado del cliente,
surgi Ajax en acrnimo de (Asynchronous Javascript And XML). El mismo es una tcnica para
crear aplicaciones web interactivas. Este lenguaje combina varias tecnologas:
HTML y Hojas de Estilos CSS para generar estilos.
Implementaciones ECMAScript, uno de ellos es el lenguaje Javascript.
XMLHttpRequest es una de las funciones ms importantes que incluye, que permite
intercambiar datos asincrnicamente con el servidor web, puede ser mediante PHP, ASP, entre
otros.
Debemos tener en cuenta que aunque Javascript sea soportado en gran cantidad de
navegadores nuestros usuarios pueden elegir la opcin de Activar/Desactivar el Javascript en
los mismos.

Pgina 11

Lenguajes formales y autmatas

Pgina 12

Lenguajes formales y autmatas

Pgina 13

Lenguajes formales y autmatas

Pgina 14

Lenguajes formales y autmatas

Autmatas
Palabras reservadas.(Var | For | (Letra)*. (Letra)+ | <(Letra)+ | </letra+ | funcin | eval | parsenInt |
parsenFloat | escape | Unescape | Isnan )

Pgina 15

Lenguajes formales y autmatas

Identificadores ({letra}+|{letra}+{digito}+)
Letra= L
Digito = D

Constantes de Carcter ( _ | digito | letra )*


_=E

Pgina 16

Lenguajes formales y autmatas

Operadores: ( ++ | < | > | <= | >= | += | NULL | && | | / | + | - | -- | * | = | -= | = )

Pgina 17

Lenguajes formales y autmatas

Constantes Numricas ( digito+ | digito+. (Digito+)

Comentarios: (// (digito | letra | _ )* | (/* (digito | letra | _ )* | (digito | letra |_))*/

Pgina 18

Lenguajes formales y autmatas

Conclusiones
Cancino ramirez Mauricio
Fue toda una confusin en un principio ya que no sabamos como atacar el programa, para ser honesto
no puse mucha atencin en las dos clases que nos dieron de flex, asi que para remediar este dilema nos
dimos a la tarea de ver muchas paginas e instructivos para saber como funcionaba flex, una vez que
supimos como trabajaba comenz el ensamble del programa la parte de lectura del archivo y escritura
fue sencillo, algo que nos llevo un poco de tiempo fue la impresin de los caracteres y que cada carcter
fuera en la lnea que le correspondiera, queramos que todas las reglas que leyera de una lnea tambin
fueran impresos en una lnea algo que nos fue imposible ya que cada regla que se imprimia se desplazaba
un lugar y los carateres ya no quedaban en su lugar, la solucin fue que cada regla fuera impresa en
lneas diferentes. Por la parte de teora investigamos todo lo referente a los analizadores lxicos y sus
funciones, al igual con el lenguaje javascrit que fue el lenguaje que nos toco. El programa quedo y la
parte teorica un poco tarde pero la misin se cumplio .

Gante Vzquez Eduardo


EL proyecto ha sido concluido y puedo argumentar que fue de gran utilidad ya que me enseo el manejo
del interprete FLEX y pudimos realizar la parte bsica de un compilador que en este caso, fue un
analizador lxico, que nos identifica algunos comandos del lenguaje Java script, as como tambin en
cuanto al anlisis me ayudo a comprobar de manera aplicada el funcionamiento de autmatas y de sus
correspondientes gramticas.
Cabe mencionar que el proyecto fue sencillo, sin embargo he aprendido algo ms de lo que se esperaba
en el curso, considerando que es la base de la materia de compiladores, y es de gran ayuda saber que ya
contamos con la parte de un anlisis de un compilador.

Referencias
http://www.paginasprodigy.com/edserna/cursos/compilador/notas/Notas2.pdf
http://www.maestrosdelweb.com/que-es-javascript/

Pgina 19