Lexico

Solo disponible en BuenasTareas
  • Páginas : 6 (1276 palabras )
  • Descarga(s) : 0
  • Publicado : 11 de noviembre de 2011
Leer documento completo
Vista previa del texto
http://valar.wordpress.com/2004/07/01/analizador-lexico/

Analizador lexico
-------------------------------------------------
con 148 comentarios
La semana pasada la ocupe para una sola cosa: diseñar y programar un analizador lexico para C#. Ya lo entregue a mi profesor y parece que todo marcha bien, asi que me atrevere a publicarlo como Software Libre.
Primero que nada, hay que definir queun analizador lexico es el encargado de leer caracter por caracter de un archivo (que contenga codigo fuente escrito en algun lenguaje de programacion especifico) y construir elementos lexicos llamados Patrones que serán utilizados posteriormente por un analizador sintactico. Unpatron es una pareja ordenada compuesta por un token y un lexema. Un token es el elemento lexico del lenguaje, es decirel simbolo terminal de una gramatica libre de contexto (GLC). Y por ultimo, un lexema es la secuencia de caracteres que coinciden con un token.
El siguiente, es un ejemplo del analisis lexico para el lenguaje C:
archivo_fuente.c
#include<stdio.h>
main(){
printf("Hello world");
}
Tras procesar el codigo con un analizador lexico, este genera los pares ordenados (Token, Lexema):tokens.txt
Gatito, #
PalabraReservada, include
MenorQue, <
Libreria, stdio.h
MayorQue, >
PalabraReservada, main
ParentesisIzq, (
ParentesisDer, )
LlaveIzq, {
PalabraReservada, printf
ParentesisIzq, (
Texto, "Hello world"
ParentesisDer, )
PuntoYcoma, ;
LlaveDer, }
Bueno pues, para crear el analizador lexico que me pidieron en la materia de compiladores, primero tuve que hacer unalista con todas las palabras reservadas, los operadores y los simbolos empleados en C#.
Despues, hice el diagrama de un Automata Finito Determinista (AFD.jpg) para reconocer los estados finales de la gramatica.
Partiendo del estado 1 y con un caracter de entrada se determina el camino que se ha de seguir; cuando se llega a un estado de aceptacion N, se continua analizando el siguiente caracter perocomenzando nuevamente por el estado 1
Por ejemplo, partiendo del estado 1 del automata; si se lee un caracter del archivo de entrada y es un corchete izquierdo: [
En el automata, se cambia de estado o "nos movemos" al estado 55 y luego, al leer el siguiente caracter, sin importar que sea una letra, digito, simbolo, espacio en blanco, nueva linea, o cualquier otra cosa: se va al estado siguientedel automata, que es el 56; el cual está marcado como un estado de aceptacion [es cuando se crea un patron].
Despues de eso, el punto de partida es nuevamente el estado 1 y dependiendo del caracter que se lea a continuacion; se cambiara a otro estado hasta llegar a un estado de aceptacion. El proceso termina hasta que se encuentra un fin de archivo (EOF).
[recomiendo ver el diagrama delautomata para comprender mejor la explicacion]
Finalmente; aqui está mi trabajo [liberado con licencia GNU - GPL].
Este es el codigo fuente escrito en C.
Aqui esta el ejecutable para M$-DO$ [TurboC de Borland tiene muy buenas librerias para el manejo de strings]
Aqui esta un ejemplo del lenguaje C#
Por ultimo, aqui esta la version del proyecto en pdf

Analizador léxico en Java |

Explicaré dequé se trata la creación de un compilador. Supondré que ya existen nociones de Java en éste rollo como son las clases y los métodos.

Cuando nosotros queremos programar, nuestro programa el cual cumplirá un objetivo previamente estudiado bajo algoritmos y aplicación de la Ingeniería en Sistemas, está sujeto a las instrucciones que el procesador tenga integradas.

El compilador es un programaque se encarga de leer un archivo de determinado lenguaje de programación y "traducirlo" al lenguaje máquina que es el conjunto de instrucciones (en el caso de las computadoras, el lenguaje binario) que la computadora soporte o "interpreta".

Al leerse nuestro código fuente, el compilador comienza 3 procesos de análisis:

    * Léxico
    * Sintácico
    * Semántico

A continuación explico...
tracking img