domingo, 6 de octubre de 2013

Proyecto Automatas

Automatas


INTRODUCCION





Un compilador es un programa que toma como entrada un texto con una gramática, sintaxis y semántica definida, además revisa que este dentro de las pautas de definición del lenguaje y lo traduce en un programa de salida en un lenguaje objeto o binario el cual es entendido por el ordenador para efectuar su ejecución.

La compilación se puede dividir en fases como son: análisis léxico, análisis sintáctico, análisis semántico, generación de código intermedio, optimización de código y generación de código. De modo formal en este caso daremos más prioridad al análisis léxico que en esta instancia es el que más nos interesa.

Podríamos entender al análisis léxico, donde la cadena de caracteres que constituye al programa fuente se lee de izquierda a derecha y se agrupan en componentes léxicos, que son secuencia de caracteres que tienen un significado colectivo.


En este proyecto se realizara el análisis léxico de una dirección de correo electrónico, en el cual su expresión regular podrá permitir la construcción y la escritura de la misma, con los principios y técnicas planteadas en clase.



OBJETIVOS



OBJETIVO GENERAL:

  • Realizar el análisis léxico de una dirección de correo electrónico en un sistema Windows.
 
OBJETIVO ESPECIFICOS:


  • Crear una expresión regular para validar la dirección de un correo electrónico.
  • Comprobar la expresión regular mediante un software.




ALFABETOS




1  = {a, b, c, . . . z}

2  = {0,1,2,3, . . .9}

3  = { ● }

4  = {-}

5  = { _ }

1  = { @ }



PATRON


Realizar una definición regular que permite reconocer la escritura de una dirección de correo electrónico donde el usuario esta compuesto por letras minúsculas dígitos, guin bajo, guin medio y punto; empieza en letra o digito, no existe puntos seguidos, el guión medio y bajo aparecen segundos solo una vez con longitud mínima de 3 caracteres, segundo del carácter @ (arroba) y acompañado de un subdominio.


OBJETIVO: Realizar el análisis léxico a una 'dirección de correo electrónico ' en un sistema Windows.

  1. ACTIVIDAD: La  dirección de correo electrónico se escribe así: usuario@dominio y en forma general usuario@subdominio(n).subdominio(n-1). ... .subdominio(2).subdominio(1).dominio-de-mas-alto-nivel. 


Usted debe realizar una definición regular que permita reconocer la escritura de una dirección de correo
Electrónico.

El usuario tiene las siguientes características:
a)    Está compuesto por letras minúsculas, dígitos,  guión bajo ( _ ) y punto ( . ).
b)    Empieza en letra o digito
c)    Los puntos no pueden ir seguidos
d)    El guión bajo y medio puede aparecer seguido solo una vez así:
maria_t_ _ _ _ _ _m_u_1_  (correcto)
maria_ _t_ _ _perez (incorrecto)
e)    Su longitud mínima es de 3 caracteres
 Los subdominios pueden ser varios de más bajo nivel a más alto nivel.
a)    Los subdominios van separados por punto
b)    Los subdominios están formados solo por letras minúsculas
c)    El último subdominio el de más alto nivel contiene máximo 3 caracteres y mínimo 2; el resto contiene mínimo 2 y máximo 10
d)    Debe contener por lo menos un subdominio de bajo nivel y uno de alto  nivel


INFORME:
  1. Introducción y  objetivos
  2. Alfabetos
  3. Patrón
  4. Definiciones regulares
  5. Arboles de Análisis sintáctico
  6. Autómatas finitos determinísticos óptimo (estados significativos)
  7. Tablas  de transición
  8. Conclusiones.

DEFINICIONES REGULARES


DEFINICION BASICA:

L  → a|b|c|. . . |z|
      [a –z]

D → 0|1|2|. . .|9|
        [0 – 9]

P → ●

Gm → −

Gb → _



DEFINICIONES COMPUESTAS:

Ld = L|d

A1  =[Ld|_ Ld |- Ld| Ld. |( - |_ )(Ld) ? .]*

A2  =[Ld| Ld_ | Ld-|.  Ld |.(Ld) ?  (- |_)]*

Comp1  =[ (- |_)+(L|d) ]



DEFINICIONES RESULTANTES:

(Ld) [ (A1| A2) ( Comp1) (A1 (- |_ |Ld) | A2 (. |Ld) ) | [A1 (- |_ |Ld) | A2 (.| Ld) ]

( _  _  + |- -  +) ] @ (. L L L? L? L? L? L? L? L?  L? ))+  . (L2 | L3 )

AUTAMATA DE LA EXPRSION REGULAR

Ld ((Ld |_ Ld|- Ld | Ld . | (-|_) (Ld |λ).) *  |  (Ld | Ld_ | Ld | . Ld |. (Ld | λ) (-|_))* ) ((-|_

)( -|_)*  |L | d)( Ld |_ Ld| - Ld | Ld . | (  - l )( Ld | λ ). )* (-| _ | Ld) |( Ld | Ld_ | Ld - | . Ld |

. (Ld | λ) (- |- )* ( . | Ld)) | (Ld |_ Ld |- Ld | Ld . | (- | _ ) (Ld | λ ).) * (- | _ | Ld) | (Ld | Ld _

| Ld - |. Ld | . (Ld | λ ) ( -| _ ))*  (_ _ _* |- - -*) @ (. (L L L? L? L? L? L? L? L? L?) ) ( .( L L

L? L? L? L? L? L? L? L?) ) ●(L L |L L L ) #

Continua....

No hay comentarios:

Publicar un comentario