<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2//EN">
<HTML>
<HEAD>
<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
<META NAME="Generator" CONTENT="MS Exchange Server version 6.5.7651.59">
<TITLE>RE: [Haskell-cafe] Parsec (Zero or One of)</TITLE>
</HEAD>
<BODY>
<!-- Converted from text/plain format -->

<P><FONT SIZE=2>Many thanks.<BR>
<BR>
-----Original Message-----<BR>
From: Brandon S. Allbery KF8NH [<A HREF="mailto:allbery@ece.cmu.edu">mailto:allbery@ece.cmu.edu</A>]<BR>
Sent: Tue 25/03/2008 20:29<BR>
To: Paul Keir; haskell-cafe@haskell.org Cafe<BR>
Subject: Re: [Haskell-cafe] Parsec (Zero or One of)<BR>
<BR>
<BR>
On Mar 25, 2008, at 16:26 , Paul Keir wrote:<BR>
&gt; Thankyou. Yes, I'd also noticed that &quot;only end&quot; could result in the&nbsp;<BR>
&gt; &quot;end&quot; part being taken as an identifier. The language I'm parsing&nbsp;<BR>
&gt; actually doesn't have reserved words though; so &quot;end&quot; and &quot;only&quot;&nbsp;<BR>
&gt; are both possible valid identifiers. I should then probably replace&nbsp;<BR>
&gt; my use of say, reserved &quot;only&quot;, with string &quot;only&quot;; whiteSpace; for&nbsp;<BR>
&gt; clarity. Still stuck though...<BR>
&gt;<BR>
<BR>
<BR>
But now you have an ambiguity in your language, which is exactly why&nbsp;<BR>
the parse is failing:&nbsp; &quot;only end&quot; could be waiting for &quot;end&quot;, or for&nbsp;<BR>
end of file / whatever tokens might follow this clause.&nbsp; In the worst&nbsp;<BR>
case, the latter might lead to a situation where an unambiguous parse&nbsp;<BR>
is impossible.<BR>
<BR>
You might want to provide a better description of the full language&nbsp;<BR>
--- and think about how it would need to be implemented to avoid&nbsp;<BR>
ambiguity.<BR>
<BR>
--<BR>
brandon s. allbery [solaris,freebsd,perl,pugs,haskell] allbery@kf8nh.com<BR>
system administrator [openafs,heimdal,too many hats] allbery@ece.cmu.edu<BR>
electrical and computer engineering, carnegie mellon university&nbsp;&nbsp;&nbsp; KF8NH<BR>
<BR>
<BR>
<BR>
</FONT>
</P>

</BODY>
</HTML>