<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
		>
<channel>
	<title>Comments on: Playing fast and loose with Parsec for parsing in Haskell</title>
	<atom:link href="http://www.serpentine.com/blog/2007/01/19/playing-fast-and-loose-with-parsec-for-parsing-in-haskell/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.serpentine.com/blog/2007/01/19/playing-fast-and-loose-with-parsec-for-parsing-in-haskell/</link>
	<description>Bryan O&#039;Sullivan&#039;s blog</description>
	<lastBuildDate>Wed, 08 Feb 2012 06:41:38 +0000</lastBuildDate>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
	<item>
		<title>By: Matthew</title>
		<link>http://www.serpentine.com/blog/2007/01/19/playing-fast-and-loose-with-parsec-for-parsing-in-haskell/comment-page-1/#comment-10343</link>
		<dc:creator>Matthew</dc:creator>
		<pubDate>Sat, 20 Jan 2007 00:21:24 +0000</pubDate>
		<guid isPermaLink="false">http://www.serpentine.com/blog/2007/01/19/playing-fast-and-loose-with-parsec-for-parsing-in-haskell/#comment-10343</guid>
		<description>You neglected to mention that Parsec can handle context-dependent infinite-lookahead grammars; a big step up in power from ANTLR or yacc.  It&#039;s still quite fast, you only pay for what you use.  I even use &quot;try&quot; a lot (which provides the infinite lookahead) and it is still very fast at parsing.

Also, you may want to check out using the Token lexer.  Basically, you use combinators from the Token lexer library to parse the core constituents of your grammar, and those combinators automatically take care of handling whitespace, comments, etc.  They are all parameterized by a language definition, so you usually import them by doing:

myLangDef = ...
whiteSpace = Token.whiteSpace myLangDef
identifier = Token.identifier myLangDef</description>
		<content:encoded><![CDATA[<p>You neglected to mention that Parsec can handle context-dependent infinite-lookahead grammars; a big step up in power from ANTLR or yacc.  It&#8217;s still quite fast, you only pay for what you use.  I even use &#8220;try&#8221; a lot (which provides the infinite lookahead) and it is still very fast at parsing.</p>
<p>Also, you may want to check out using the Token lexer.  Basically, you use combinators from the Token lexer library to parse the core constituents of your grammar, and those combinators automatically take care of handling whitespace, comments, etc.  They are all parameterized by a language definition, so you usually import them by doing:</p>
<p>myLangDef = &#8230;<br />
whiteSpace = Token.whiteSpace myLangDef<br />
identifier = Token.identifier myLangDef</p>
]]></content:encoded>
	</item>
</channel>
</rss>

