Thank you so much ... I&#39;ve updated my monad version here - <div><br></div><div><a href="https://github.com/ckkashyap/LearningPrograms/blob/master/Haskell/Parsing/xml_2.hs">https://github.com/ckkashyap/LearningPrograms/blob/master/Haskell/Parsing/xml_1.hs</a> </div>
<div><br></div><div>and the Applicative version here - 
<a href="https://github.com/ckkashyap/LearningPrograms/blob/master/Haskell/Parsing/xml_2.hs">https://github.com/ckkashyap/LearningPrograms/blob/master/Haskell/Parsing/xml_2.hs</a> </div><div><br></div><div>The applicative version however does not seem to work.</div>
<div><br></div><div>Is there a good tutorial that I can look up for Parsec - I am checking out <a href="http://legacy.cs.uu.nl/daan/download/parsec/parsec.html">http://legacy.cs.uu.nl/daan/download/parsec/parsec.html</a> but  I am looking for a tutorial where a complex parser would be built ground up. </div>
<div><br></div><div>Next I&#39;d like to take care of escaped angular brackets.</div><div><br></div><div>Regards,</div><div>Kashyap</div><div><br><br><div class="gmail_quote">On Thu, Jul 19, 2012 at 7:40 PM, Christian Maeder <span dir="ltr">&lt;<a href="mailto:Christian.Maeder@dfki.de" target="_blank">Christian.Maeder@dfki.de</a>&gt;</span> wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Am 19.07.2012 15:41, schrieb Simon Hengel:<div class="im"><br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
On Thu, Jul 19, 2012 at 03:34:47PM +0200, Simon Hengel wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
     openTag :: Parser String<br>
     openTag = char &#39;&lt;&#39; *&gt; many (noneOf &quot;&gt;&quot;) &lt;* char &#39;&gt;&#39;<br>
</blockquote></blockquote>
<br></div>
if you disallow empty tags and &quot;/&quot; within tags, then you can avoid the<br>
notFollowedBy construct by:<br>
<br>
       openTag = try (char &#39;&lt;&#39; *&gt; many1 (noneOf &quot;/&gt;&quot;)) &lt;* char &#39;&gt;&#39;<span class="HOEnZb"><font color="#888888"><br>
<br>
C.</font></span><div class="HOEnZb"><div class="h5"><br>
<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<br>
     endTag :: String -&gt; Parser String<br>
     endTag str = string &quot;&lt;/&quot; *&gt; string str &lt;* char &#39;&gt;&#39;<br>
</blockquote>
<br>
Well yes, modified to what Christian Maeder just suggested.<br>
<br>
Cheers,<br>
Simon<br>
<br>
</blockquote>
<br>
</div></div></blockquote></div><br></div>