[Haskell-cafe] How to deal with a translator???
Donald Bruce Stewart
dons at cse.unsw.edu.au
Mon Feb 13 02:14:48 EST 2006
hiperfume:
>
> Hello all,
> Now I am trying on a simple translator module. This module
> needs to translate an input string( this string represent a
> formula) as follows:
> (x^2 - 5x + 4=0) /\ (x^3 - 5>0) -> x>3
> And I want the output string represent a formula like:
> (x^2 - 5x + 4=0) /\ (x^3 - 5>0) IMPLIES x>3, i.e, the
> translator attempt to translate (->) into IMPLIES.
> If you have ay suggesstions for that kind of problems,
> please share with me. I appreciate for that. Thanks all for
> your time.
> Nguyen,
If that's all you want to do, then something like this:
main = interact trans
where
trans [] = []
trans ('-':'>':xs) = "IMPLIES" ++ trans xs
trans (x:xs) = x : trans xs
Simple Char problems can usually be solved with pattern matching this way.
For more complex problems you'll probably want to write a lexer and parser for
your language, and then do transformations on the abstract syntax. Parsec and
Alex or Happy are good for this.
Cheers,
Don
More information about the Haskell-Cafe
mailing list