Sie sind auf Seite 1von 9

INSTITUTO TECNOLGICO SUPERIOR DE

TEPOSCOLULA
INGENIERA EN SISTEMAS COMPUTACIONALES
PRESENTA:
Elioena Garca Garca
MATRICULA:
13ISC215
DOCENTE:
Ing. Luis Hernndez Aparicio
MATERIA:
Lenguaje y Autmatas I
ACTIVIDAD:
Reporte de Investigacin

SAN PEDRO Y SAN PABLO TEPOSCOLULA, OAXACA


08 DE MARZO DEL 2016.

INTRODUCCION.

Indagar y comprender cada una de las expresiones regulares posibles en la


etapa de anlisis lxico para as poder validar requerimientos en la etapa de
anlisis lxico.
As mismo adquirir conocimiento para implementarlo posteriormente a un
sistema.

ANALISIS LEXICO.

Ayuda a la especificacin de la sintaxis y estructura de un lenguaje de


programacin. Es similar a la ortografa de un lenguaje natural. Constituye
el conjunto de smbolos permitidos o vocabulario. El lxico se conforma de:

Lexemas
Tokens
Sentencias

Lexema: son las unidades sintcticas de ms bajo nivel. Incluyen:


identificadores, operadores y palabras especiales.
Token: es una categora de lexemas (el lexema es un atributo del token).
Sentencia: los lenguajes de programacin utilizan conjuntos de cadenas de
caracteres pertenecientes a algn alfabeto. Una sentencia es cada una de
estas cadenas. Dicho de otra forma, son cadenas de lexemas.

Algunas categoras de lexemas (o tokens) son:

Conjunto de caracteres ASCII (abcdefgABCDEFG123456[]{}/+-*)


Identificadores (cualquier nombre de una variable, constante, tipo de dato)
Smbolos operadores (+*/-=<>!)
Palabras clave y palabras reservadas (if, else, case, this, include)
Literales y constantes ($_GET, $_POST, cualquier valor de un tipo de dato)
Comentarios (// Este es un comentario, */ Este es otro comentario*/)
Espacios y delimitadores (|,_,-)
Formatos de libre campo y campo fijo (posicin en columnas de una
3

instruccin)

Expresiones (cualquier expresin regular)


Sentencias o enunciados (declaraciones o asignaciones)

Los tokens de un lenguaje de programacin pueden describirse empleando


expresiones regulares JAVA: Ver imagen 1.

Imagen 1. Tabla de expresin regulares y tokens.

Formalmente utilizando expresiones regulares se definiran (C#).

Token

Patron

OPERADD

[+-]

OPERMUL

[*/]

NUMEINT

[0-9]+

IDENT

[a-zA-Z]+

AGRUP

[()]

Obtener un Token. Ejemplo en C#


Un analizador lxico en esencia debe leer carcter por carcter de la entrada de
datos hasta identificar un Token vlido, retornar dicho token y continuar con el
proceso hasta encontrar el fin de la entrada de datos.
El algoritmo general para el mtodo que obtiene un token es:

Obtenga un carcter del texto de entrada

Si es un carcter en blanco ignrelo

Si es un operador(matemtico o de agrupacin) retorne el token


correspondiente

Si es un digito siga leyendo caracteres del texto de entrada hasta encontrar


un carcter que no sea digito y al terminar retorne el token de numero
entero

Si es una letra (y es la primera) siga leyendo mientras sea letra o nmero.


Al terminar retorne el token de identificador

Obtener Lista de Tokens


Otra funcin del analizador lxico es obtener todos los tokens existentes en el
archivo fuente.
El algoritmo general para el mtodo que obtiene la lista de tokens es
Mientras no se obtenga el token de fin
Obtener token con el mtodo anterior
Almacenar el token en la lista

Implementacin del Componente Analizador Lexico para OperA


Para la implementacin utilizaremos el lenguaje de programacin C# y el Visual
Studio.
Creando una dll para el analizador
1. Ingrese al Visual Studio
Una vez en el entorno de desarrollo vamos a crear un componente (dll) con las
clases para el analizador Lxico.
Seleccione File/New/Project
Configure el proyecto como se muestra en la siguiente grfica:
Al ingresar se aparece una plantilla con cdigo en C#.
Vamos a adicionar un enum (enumeracin), que representa los tokens validos en
el lenguaje, este se define antes de la clase pero en el mismo Namespace.
Luego de la definicin del enum vamos a adicionar la clase Smbolo como se
muestra a continuacin:
Por ltimo se implementa la clase AnaLexOperA
Ahora implementamos en esta clase la propiedad que permite recorrer la cadena
de entrada (con el cdigo fuente) al retornar el carcter actual de la entrada.
El siguiente mtodo identifica un token en la entrada y devuelve un objeto
Simbolo con el token encontrado. Puede verse que es una implementacin a
fuerza bruta
Por ltimo implementamos el mtodo que retorna todos los tokens encontrados.
Compile la aplicacin
6

Creando Un cliente para la dll


Vamos a crear una aplicacin de consola que permita verificar el funcionamiento
de la dll anterior.
Cree un nuevo proyecto como se muestra a continuacin

En este programa Adicione la librera que creamos en la primera parte, busque


en la ventana Solitions Explorer la pestaa References y de clic derecho Add
Reference.NET Assembly Browser- y ubique la carpeta bin/debug del proyecto
nmAnaLexperA y seleccione la dll.
En la ventana que aparece seleccione la pestaa Browse y ubique la dll
generada en la primera parte.
Adicione el namespace donde est el analizador lxico:
using mnAnaLexOperA;
Edite el siguiente cdigo
namespace ConsolaOperA
{
class MainClass
{
public static void Main(string[] args)
{ string codigoFuente="(35+87*59) 76 ";
AnaLexOperA analex= new AnaLexOperA(codigoFuente);
7

foreach(Simbolo s in analex.GetSimbolos())
{
switch((int)s.Token)
{
case (int)Tokens.IDENT:{Console.WriteLine("IDENT");break;}
case (int)Tokens.OPERADD:{Console.WriteLine("OPERADD");break;}
case (int)Tokens.OPERMUL:{Console.WriteLine("OPERMUL");break;}
case (int)Tokens.NUMEINT:{Console.WriteLine("NUMEINT");break;}
case (int)Tokens.OPERAGRU:{Console.WriteLine("OPERAGRU");break;}
case (int)Tokens.ERROR:{Console.WriteLine("ERROR");break;}
}
}

Console.ReadLine();
}
}
}
Compile y ejecute la aplicacin

CONCLUSION
A manera de concluir conocer las expresiones regulares es un medio por el cual
nosotros podemos conocer categoras de los tokens, bien la estructura de una
expresin regular es la forma de validar ciertos requerimientos dentro de un
sistema.

BIBLIOGRAFIA
Alejandro, H. (2012). ANLISIS LXICOS. Mxico. Mc Graw Hill. Pgs. 189.

Das könnte Ihnen auch gefallen