Nuevas NORMAS para el foro

Curso Hacker
Bienvenido(a), Visitante. Favor de ingresar o registrarse.
¿Perdiste tu email de activación? - Julio 26, 2008, 06:11:55
Boton Buscar
Inicio Ayuda Ingresar Registrarse
Visita: Articulos - Juegos Gratis - Da Foros

Comunidad Underground Hispana  |  Programacion  |  Programación  |  Programación Basica  |  Tema: Evaluador 0 Usuarios y 1 Visitante están viendo este tema. « anterior próximo »
Páginas: [1] Ir Abajo Imprimir
Autor Tema: Evaluador  (Leído 94 veces)
floyd_d@ff
Miembro
*****
Desconectado Desconectado

Mensajes: 40


floyd_864@hotmail.com
Ver Perfil Email
« en: ſeptiembre 04, 2007, 09:54:52 »

Buenas gente  Grin aqui les dejo el siguiente evaluador, esta en notacion funcional espero les sirva, lo saque de los apuntes de la catedra de algoritmica de la UNSa (Argentina) no se si alguien lo habra publicado ya de todos modos aqui les va, esta hecho para la siguiente gramatica:


E           T | E( ‘+’ | ‘ -’) T

T          F | T (‘*’ | ‘/’ ) F

F           P | P^F | ‘-’ F

P           N | ‘(‘ E ‘)’

N           D | ND

D           ‘1’ | ‘2’ | ‘3’ | ‘4’ | ‘5’ | ‘6’ | ‘7’ | ‘8’ | ‘9’ | ‘0’


Eval E(e)= evale1(evalt(e))

    evale1((n,e))=
               si(e=vacio | no(e1='+' | e1='-'))  (n,e)
               sino
                     sea
                           (m,f) =evalT (resto(e))
                            si (e1='+') evale1((n+m),f)
                            sino evale1((n-m),f)

evalT(e)= evalT1(evalF(e))
    Evalt1(n,e)=
                        si (e=vacio | no (e1='*' | e1='/')) (n,e)
                        sino
                              sea
                                    (m,f) = evalF ( resto (e))
                                     si (e1 = '*' ) evalT1 ( (n*m),f)
                                     sino evalT1 ( ( n/m ) ,f )
      evalF(e)=
                  si(e1='-')
                     sea (n,f) = evalf ( resto (e) )  (-n,f)
                  sino
                         si (e1='+')  evalf ( resto(e) )
                         sino                         
                               sea (n,f)= evalp (e)
                               si  (f=vacio | l1<> ^) (n,f)
                               sino
                                      sea (m,g)= evalf (resto(f))
                                         (m,g)
   evalp(e)=
               si (e1 es digito) evaln(e)
               sino
                     si (e1='(' )
                     sea (n,f)=evale (resto(e))
                           si  (f=')' )      (n,resto(f))
                            sino
                                  error
evaln(e) = evaln1(n,e)
                   evaln1(n,e)=
                                     si(e=vacio | e1 no es digito)  (n,e)
                                      sino evaln1(10n+valor(e1),resto(e))
                      valor('0')=0;
                      valor('1')=1;
                       etc.
Bueno espero les guste nos vemos gente Grin, espero se entienda Tongue.
« Última modificación: ſeptiembre 12, 2007, 02:06:46 por floyd_d@ff » En línea
Páginas: [1] Ir Arriba Imprimir 
Comunidad Underground Hispana  |  Programacion  |  Programación  |  Programación Basica  |  Tema: Evaluador « anterior próximo »
Ir a:  


Ranking-Hits
Powered by SMF 1.1.5 | SMF © 2006-2007, Simple Machines LLC