
Stefan O'Rear wrote:
On Sat, Aug 25, 2007 at 08:18:29PM +0100, Andrew Coppin wrote:
But hang on a minute...
"many" parses 0 or more occurrances of an item.
"sepBy" parses 0 or more occurrances of an item, seperated by another item.
"endBy" parses 0 or more occurrances of an item, terminated by another item.
"sepEndBy" parses 0 or more occurrances of an item, seperated *and* terminated by another item.
...except that "endBy" doesn't seem to be working right. :-S
There is one other little bit of documented behavior. Parsec's normal combinators only parse LL(1) grammars. Consult any work on formal languages for the exact meaning and all the consequences, however for this example it serves to note that after seeing abc, the single character of lookahead '#' is not sufficient to determine the correct parse.
Heh. Starting to wish I had a significantly higher IQ... I thought the whole *purpose* of the endBy combinator was to keep applying one parser until the other one succeeds? In the example I posted, the two parsers are quite trivial. But in the real problem I actually want to solve, they are very non-trivial...