tengo que hacer un traductor en haskell no se si me pueden hechar una mano lo que tengo es esto por el momento
Mis datas
Código:
module Traduccion where
import Parsers
data Oracion = O1 Articulo Sujeto Verbo Predicado
deriving Show
data Articulo = A1 Identificador
| A2
deriving Show
data Sujeto = S1 Char
| S2
deriving Show
data Verbo = V1 Char
| V2
deriving Show
data Predicado = P1 Char
| P2
deriving Show
data Identificador = I1 String Identificador
| I2
deriving Show
import Parsers
data Oracion = O1 Articulo Sujeto Verbo Predicado
deriving Show
data Articulo = A1 Identificador
| A2
deriving Show
data Sujeto = S1 Char
| S2
deriving Show
data Verbo = V1 Char
| V2
deriving Show
data Predicado = P1 Char
| P2
deriving Show
data Identificador = I1 String Identificador
| I2
deriving Show
Editando este es el proceso que llegue a terminar no se si aun esta bien me falta aun ver como hago la traduccion cuando lo termine les muestro
Código:
module Traductor where
import Parsers
data Oraciones = Ora1 Oracion Oraciones
| Ora2
deriving Show
data Oracion = O1 Articulo Sujeto Verbo Predicado
deriving Show
data Articulo = Ar1
| Ar2
| Ar3
| Ar4
deriving Show
data Sujeto = S1 Animales
| S2 Cosas
| S3 Nombres
deriving Show
data Animales = An1
| An2
| An3
| An4
deriving Show
data Cosas = Co1
| Co2
| Co3
| Co4
deriving Show
data Nombres = No1
| No2
| No3
| No4
deriving Show
data Verbo = Ve1
| Ve2
| Ve3
deriving Show
data Predicado = P1 String Predicado
| P2
deriving Show
pOraciones = (\ a b -> Ora1 a b ) <$> Oracion <*> Oraciones
<|> pSucceed Ora2
pOracion = (\ a s v p -> O1 a s v p ) <$> pArticulo <*> pSujeto <*> pVerbo <*> pPredicado
pArticulo = (\ a -> Ar1 ) <$> token "la"
<|> (\ a -> Ar2 ) <$> token "el"
<|> (\ a -> Ar3 ) <$> token "los"
<|> (\ a -> Ar4 ) <$> token "ella"
pSujeto = (\ a -> S1 ) <$> pAnimales
<|>(\ a -> S2 ) <$> pCosas
<|>(\ a -> S3 ) <$> pNombres
pAnimales = (\ a ->An1 ) <$> token "Perro"
<|> (\ a ->An2 ) <$> token "Loro"
<|> (\ a ->An3 ) <$> token "Gato"
<|> (\ a ->An4 ) <$> token "Loro"
pCosas = (\ a ->Co1 ) <$> token "mesa"
<|> (\ a ->Co2 ) <$> token "silla"
<|> (\ a ->Co3 ) <$> token "pala"
<|> (\ a ->Co4 ) <$> token "flores"
pNombres = (\ a ->No1 ) <$> token "Maria"
<|> (\ a ->No2 ) <$> token "Jose"
<|> (\ a ->No3 ) <$> token "Edgar"
<|> (\ a ->No4 ) <$> token "Dalia"
pVerbo = (\ a -> Ve1 ) <$> token "me"
<|> (\ a -> Ve2 ) <$> token "la"
<|> (\ a ->Ve3 ) <$> token "es"
pPredicado = (\ a -> P1 ) <$> token "carne"
<|> (\ a -> P2 ) <$> token "lobos"
<|> (\ a -> P3 ) <$> token "trampas"
import Parsers
data Oraciones = Ora1 Oracion Oraciones
| Ora2
deriving Show
data Oracion = O1 Articulo Sujeto Verbo Predicado
deriving Show
data Articulo = Ar1
| Ar2
| Ar3
| Ar4
deriving Show
data Sujeto = S1 Animales
| S2 Cosas
| S3 Nombres
deriving Show
data Animales = An1
| An2
| An3
| An4
deriving Show
data Cosas = Co1
| Co2
| Co3
| Co4
deriving Show
data Nombres = No1
| No2
| No3
| No4
deriving Show
data Verbo = Ve1
| Ve2
| Ve3
deriving Show
data Predicado = P1 String Predicado
| P2
deriving Show
pOraciones = (\ a b -> Ora1 a b ) <$> Oracion <*> Oraciones
<|> pSucceed Ora2
pOracion = (\ a s v p -> O1 a s v p ) <$> pArticulo <*> pSujeto <*> pVerbo <*> pPredicado
pArticulo = (\ a -> Ar1 ) <$> token "la"
<|> (\ a -> Ar2 ) <$> token "el"
<|> (\ a -> Ar3 ) <$> token "los"
<|> (\ a -> Ar4 ) <$> token "ella"
pSujeto = (\ a -> S1 ) <$> pAnimales
<|>(\ a -> S2 ) <$> pCosas
<|>(\ a -> S3 ) <$> pNombres
pAnimales = (\ a ->An1 ) <$> token "Perro"
<|> (\ a ->An2 ) <$> token "Loro"
<|> (\ a ->An3 ) <$> token "Gato"
<|> (\ a ->An4 ) <$> token "Loro"
pCosas = (\ a ->Co1 ) <$> token "mesa"
<|> (\ a ->Co2 ) <$> token "silla"
<|> (\ a ->Co3 ) <$> token "pala"
<|> (\ a ->Co4 ) <$> token "flores"
pNombres = (\ a ->No1 ) <$> token "Maria"
<|> (\ a ->No2 ) <$> token "Jose"
<|> (\ a ->No3 ) <$> token "Edgar"
<|> (\ a ->No4 ) <$> token "Dalia"
pVerbo = (\ a -> Ve1 ) <$> token "me"
<|> (\ a -> Ve2 ) <$> token "la"
<|> (\ a ->Ve3 ) <$> token "es"
pPredicado = (\ a -> P1 ) <$> token "carne"
<|> (\ a -> P2 ) <$> token "lobos"
<|> (\ a -> P3 ) <$> token "trampas"
En proceso










Autor


En línea
