[Haskell-beginners] Parsing 'A's and then ('A's or 'B's)
Ulrik Rasmussen
haskell at utr.dk
Wed Jan 27 15:11:23 UTC 2016
On 2016-01-27 13:48, Francesco Ariis wrote:
> On Wed, Jan 27, 2016 at 01:34:29PM +0100, Ulrik Rasmussen wrote:
> > The language is recognized by a relatively simple DFA (attached), so the
> > simplest solution (I think) is to just encode that:
> >
> > module Main where
> >
> > import Text.Parsec
> > import Text.Parsec.String
> >
> > p :: Parser ()
> > p = char 'A' >> ((char 'A' >> sA) <|> (char 'B' >> sB))
> > where
> > sA = (char 'A' >> sA) <|> (char 'B' >> sB) <|> return ()
> > sB = (char 'B' >> sB) <|> return ()
>
> I am probably missing something: say we have an "AAB" string, how does
> this check that it is `compatible` with [x,y] or [x,x,y] or [x,y,y]
> (or not compatible with [x,x,x], etc.)?
>
Oh, I read Simon's question as being constrained to the specific problem
[x, y] (i.e. recognizing AA*(AA* + BB*)).
If the problem is to run any list of parsers such as [x,y,x,x], then
this won't work.
More information about the Beginners
mailing list