Browse thread
Re: [Caml-list] What's wrong with my parser ?
- Ryan Tarpine
[
Home
]
[ Index:
by date
|
by threads
]
[ Message by date: previous | next ] [ Message in thread: previous | next ] [ Thread: previous | next ]
[ Message by date: previous | next ] [ Message in thread: previous | next ] [ Thread: previous | next ]
| Date: | -- (:) |
| From: | Ryan Tarpine <rtarpine@h...> |
| Subject: | Re: [Caml-list] What's wrong with my parser ? |
>From: Nicolas FRANCOIS (AKA El Bofo) <nicolas.francois@free.fr> >To: Nicolas FRANCOIS (AKA El Bofo) <nicolas.francois@free.fr> >CC: caml-list@inria.fr >Subject: Re: [Caml-list] What's wrong with my parser ? >Date: Sat, 13 Jul 2002 13:27:34 +0200 > >OK, this is my new polynom parser, it seems to work OK, thanks to your >explanations. > > let rec parse s = ><snip> > let parse_coeff = parser > | [< n = R.parse >] -> n > | [< >] -> R.one > in > let parse_monome = parser > | [< n = parse_coeff; e = parse_x >] -> > monome n e > | [< e = parse_x >] -> > monome R.one e ><snip> > in > match s with parser > | [< m = parse_monome >] -> > match parse_suite s with > | p -> m ++ p > ><snip> ># print (P.parse (Stream.of_string ""));; >[1: 1]- : unit = () > Parsing the empty string calls parse_monome, which calls parse_coeff, which returns R.one. My take at this is that you need 2 versions of parse_x: one that requires an X to be there, and one that can parse an X but doesn't need it. If there is no leading coefficient (the second option to parse_monome), the X *must* be there. If the coeffecient is there (the first option), then the X doesn't have to be. The empty string, which has no coefficient, should fail parse_monome because it doesn't have an X either. If passed the string "X" or "2", though, parse_monome should succeed. Ryan Tarpine, rtarpine@hotmail.com "To err is human, to compute divine. Trust your computer but not its programmer." - Morris Kingston _________________________________________________________________ Send and receive Hotmail on your mobile device: http://mobile.msn.com ------------------- To unsubscribe, mail caml-list-request@inria.fr Archives: http://caml.inria.fr Bug reports: http://caml.inria.fr/bin/caml-bugs FAQ: http://caml.inria.fr/FAQ/ Beginner's list: http://groups.yahoo.com/group/ocaml_beginners