Fwd: Parsing integers [was: Re: [Haskell-cafe] help]
Tim Chevalier
catamorphism at gmail.com
Sun Dec 9 16:22:51 EST 2007
[reply forwarded to list]
---------- Forwarded message ----------
From: Ryan Bloor <ryanbloor at hotmail.com>
hi
sorry for vagueness.
I am writing a basic Parser from scratch. So far I have functions;
# removeSpaces
# match - which checks if a string is a substring of another
# orParser which combines two parser's abilities
# Basic pasrers like... parseInt, parseTrue, parseFalse, parseBool
using the orParser on True and False.
What I want to do now is have a parseBinaryOp that recognises:
parseBinaryOp "+" "(5 + 2) if" >>>gives>>
[(EInt 5, EInt 2, "if")]
So I think that I have to split the initial string into four parts.
"+" becomes op
'(' becomes tokenF
')' becomes tokenB
"5" becomes e1
"2" becomes e2
parseBinaryOp :: String -> String -> [(Expr, Expr, String)]
parseBinaryOp op str = let (tokenF,e1,op,e2,tokenB) =
I am not sure how to go about separating the string for how I need it
using my other functiuons.
Ryan
________________________________
> Date: Sun, 9 Dec 2007 13:07:23 -0800
> From: catamorphism at gmail.com
> To: ryanbloor at hotmail.com
> Subject: Parsing integers [was: Re: [Haskell-cafe] help]
> CC: haskell-cafe at haskell.org
>
> On 12/9/07, Ryan Bloor <ryanbloor at hotmail.com> wrote:
> >
> > hi
> >
> > I have a function parseInt... which needs an error guard for when the input
> > is not an Int.
> >
> > parseInt :: Parser
> > parseInt [] = []
> > parseInt xs = let (digits, rest) = span isDigit (removeSpace xs)
> > in [(EInt (read digits), removeSpace rest)]
> >
> > Also... I have a function that does this... parseBinaryOp "+" "(5 + 2) if"
> > gives...[(Int 5, Int 2, "if")]
> > so, op is '+' or "&&". I am unsure of how to begin...
> >
> > parseBinaryOp :: String -> String -> [(Expr, Expr, String)]
> > parseBinaryOp op str
> >
>
> Check out:
> http://www.haskell.org/haskellwiki/Homework_help
>
> If this isn't homework, try posting again and phrasing your question
> in the form of a question; saying "I am unsure of how to begin"
> doesn't help us help you think about the problem.
>
> Cheers,
> Tim
>
> --
> Tim Chevalier * catamorphism.org * Often in error, never in doubt
> "[Teaching children to read] will make America what we want it to be,
> a literate country and a hopefuller country." -- George W. Bush
________________________________
Are you the Quizmaster? Play BrainBattle with a friend now!
More information about the Haskell-Cafe
mailing list