<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	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/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Development in a Blink &#187; MGrammar</title>
	<atom:link href="http://www.dougfinke.com/blog/index.php/category/mgrammar/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.dougfinke.com/blog</link>
	<description>Researching the optimal; implementing the practical</description>
	<lastBuildDate>Wed, 01 Sep 2010 00:37:57 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0.1</generator>
		<item>
		<title>10 PowerShell Posts I Did in 2009</title>
		<link>http://www.dougfinke.com/blog/index.php/2010/01/01/10-powershell-posts-i-did-in-2009/?utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=10-powershell-posts-i-did-in-2009</link>
		<comments>http://www.dougfinke.com/blog/index.php/2010/01/01/10-powershell-posts-i-did-in-2009/#comments</comments>
		<pubDate>Fri, 01 Jan 2010 20:05:15 +0000</pubDate>
		<dc:creator>Doug Finke</dc:creator>
				<category><![CDATA[Excel]]></category>
		<category><![CDATA[ISE]]></category>
		<category><![CDATA[Integrated Scripting Environment]]></category>
		<category><![CDATA[Intellipad]]></category>
		<category><![CDATA[MGrammar]]></category>
		<category><![CDATA[Oslo]]></category>
		<category><![CDATA[Pivot Tables]]></category>
		<category><![CDATA[PowerBoots]]></category>
		<category><![CDATA[PowerShell]]></category>
		<category><![CDATA[Python]]></category>
		<category><![CDATA[SQL Server Modeling]]></category>
		<category><![CDATA[Try Python]]></category>
		<category><![CDATA[WPF]]></category>
		<category><![CDATA[trigrams]]></category>
		<category><![CDATA[yUML]]></category>

		<guid isPermaLink="false">http://dougfinke.com/blog/index.php/2010/01/01/10-powershell-posts-i-did-in-2009/</guid>
		<description><![CDATA[I had fun doing these PowerShell posts. &#160; Try PowerShell &#8211; An Interactive Tutorial Michael Foord inspired this with his Try Python Silverlight application How to Host PowerShell in a WPF Application A How To video PowerShell Out-ExcelPivotTable &#8211; Quickly Create Pivot Tables in Microsoft Excel Automating Excel Pivot tables with PowerShell PowerShell, An Exercise [...]]]></description>
			<content:encoded><![CDATA[<p>I had fun doing these PowerShell posts.</p>
<p><a href="http://dougfinke.com/blog/index.php/2009/01/10/11th-grade-activities-for-career-success-powershell/"><img style="display: block; float: none; margin-left: auto; margin-right: auto" title="image" alt="image" src="http://dougfinke.com/uploadPictures/MyTop5PowerShellPosts_85B8/image.png" width="454" height="284" /></a>&#160;</p>
<table border="1" cellspacing="0" cellpadding="0">
<tbody>
<tr>
<td valign="top" width="276">
<p><a href="http://dougfinke.com/blog/index.php/2009/09/28/try-powershell-an-interactive-tutorial/">Try PowerShell &ndash; An Interactive Tutorial</a></p>
</td>
<td valign="top" width="278">
<p><a href="http://www.voidspace.org.uk/python/weblog/index.shtml">Michael Foord</a> inspired this with his <a href="http://www.trypython.org/">Try Python</a> Silverlight application</p>
</td>
</tr>
<tr>
<td valign="top" width="276">
<p><a href="http://dougfinke.com/blog/index.php/2009/09/02/how-to-host-powershell-in-a-wpf-application/">How to Host PowerShell in a WPF Application</a></p>
</td>
<td valign="top" width="278">
<p>A How To video</p>
</td>
</tr>
<tr>
<td valign="top" width="276">
<p><a href="http://dougfinke.com/blog/index.php/2009/06/24/powershell-out-excelpivottable-quickly-create-pivot-tables-in-microsoft-excel/">PowerShell Out-ExcelPivotTable &ndash; Quickly Create Pivot Tables in Microsoft Excel</a></p>
</td>
<td valign="top" width="278">
<p>Automating Excel Pivot tables with PowerShell</p>
</td>
</tr>
<tr>
<td valign="top" width="276">
<p><a href="http://dougfinke.com/blog/index.php/2009/02/17/powershell-an-exercise-in-species-barcoding/">PowerShell, An Exercise in Species Barcoding</a></p>
</td>
<td valign="top" width="278">
<p>Inspired by Peter Norvig&rsquo;s (Director of research at Google) python version</p>
</td>
</tr>
<tr>
<td valign="top" width="276">
<p><a href="http://dougfinke.com/blog/index.php/2009/02/07/powershell-find-the-k-most-common-words-in-a-file/">PowerShell &ndash; Find the K most common words in a file</a></p>
</td>
<td valign="top" width="278">
<p>Based on Jon Bentley&rsquo;s approach in &ldquo;Little Languages&rdquo;</p>
</td>
</tr>
<tr>
<td valign="top" width="276">
<p><a href="http://dougfinke.com/blog/index.php/2009/02/06/powershell-ise-cream-alias-expansion/">PowerShell ISE-Cream &ndash; Alias Expansion</a></p>
</td>
<td valign="top" width="278">
<p>Uses PowerShell&rsquo;s tokenizer to expand aliases like %, ? etc. into ForEach and Where</p>
</td>
</tr>
<tr>
<td valign="top" width="276">
<p><a href="http://dougfinke.com/blog/index.php/2009/08/29/update-dynamic-guis-and-the-powershell-pipeline/">Update: Dynamic GUIs and the PowerShell Pipeline</a></p>
</td>
<td valign="top" width="278">
<p>How to inject GUIs into a PowerShell Pipeline</p>
</td>
</tr>
<tr>
<td valign="top" width="276">
<p><a href="http://dougfinke.com/blog/index.php/2009/08/20/powershell-yuml-workbench/">PowerShell yUML Workbench</a></p>
</td>
<td valign="top" width="278">
<p>yUML is a web service.&#160; A How To using PowerShell to generate UML diagrams</p>
</td>
</tr>
<tr>
<td valign="top" width="276">
<p><a href="http://dougfinke.com/blog/index.php/2009/07/01/powershell-powerboots-and-an-oslo-dsl-grammar/">PowerShell, PowerBoots and an Oslo DSL Grammar</a></p>
</td>
<td valign="top" width="278">
<p>Blending MGrammar and PowerShell</p>
</td>
</tr>
<tr>
<td valign="top" width="276">
<p><a href="http://dougfinke.com/blog/index.php/2009/05/20/creating-and-displaying-trigrams-with-powershell/">Creating and Displaying Trigrams with PowerShell</a></p>
</td>
<td valign="top" width="278">
<p>Based on Wolfram|Alphas Trigram visuals. Combines PowerShell and yUML</p>
</td>
</tr>
</tbody>
</table>
]]></content:encoded>
			<wfw:commentRss>http://www.dougfinke.com/blog/index.php/2010/01/01/10-powershell-posts-i-did-in-2009/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Parsing JSON with Oslo&#8217;s MGrammar</title>
		<link>http://www.dougfinke.com/blog/index.php/2009/04/16/parsing-json-with-oslos-mgrammar/?utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=parsing-json-with-oslos-mgrammar</link>
		<comments>http://www.dougfinke.com/blog/index.php/2009/04/16/parsing-json-with-oslos-mgrammar/#comments</comments>
		<pubDate>Fri, 17 Apr 2009 02:34:12 +0000</pubDate>
		<dc:creator>Doug Finke</dc:creator>
				<category><![CDATA[JSON]]></category>
		<category><![CDATA[MGrammar]]></category>
		<category><![CDATA[Oslo]]></category>

		<guid isPermaLink="false">http://dougfinke.com/blog/index.php/2009/04/16/parsing-json-with-oslos-mgrammar/</guid>
		<description><![CDATA[Thanks to Kalani, friend and colleague, for great discussions on this, S-expressions and more. This MGrammar Parses This JSON example Download MGrammar Code]]></description>
			<content:encoded><![CDATA[<p>Thanks to Kalani, <a href="http://blog.lab49.com/archives/author/kthielen">friend and colleague</a>, for great discussions on this, <a href="http://en.wikipedia.org/wiki/S-expression">S-expressions</a> and more.</p>
<h3>This MGrammar Parses</h3>
<p><a href="http://dougfinke.com/uploadPictures/OsloMGrammarJSON_13AAE/image.png"><img style="border-right-width: 0px; display: block; float: none; border-top-width: 0px; border-bottom-width: 0px; margin-left: auto; border-left-width: 0px; margin-right: auto" title="image" border="0" alt="image" src="http://dougfinke.com/uploadPictures/OsloMGrammarJSON_13AAE/image_thumb.png" width="485" height="272" /></a> </p>
<h3>This <a href="http://www.json.org/">JSON</a> example</h3>
<p><a href="http://dougfinke.com/uploadPictures/OsloMGrammarJSON_13AAE/image_3.png"><img style="border-right-width: 0px; display: block; float: none; border-top-width: 0px; border-bottom-width: 0px; margin-left: auto; border-left-width: 0px; margin-right: auto" title="image" border="0" alt="image" src="http://dougfinke.com/uploadPictures/OsloMGrammarJSON_13AAE/image_thumb_3.png" width="484" height="456" /></a></p>
<h3>Download MGrammar Code</h3>
<p> <iframe style="border-bottom: #dde5e9 1px solid; border-left: #dde5e9 1px solid; padding-bottom: 0px; background-color: #ffffff; margin: 3px; padding-left: 0px; width: 240px; padding-right: 0px; height: 26px; border-top: #dde5e9 1px solid; border-right: #dde5e9 1px solid; padding-top: 0px" marginheight="0" src="http://cid-5dec3b62d9308943.skydrive.live.com/embedrow.aspx/MGrammar%20JSON/MGrammarJSON.zip" frameborder="0" marginwidth="0" scrolling="no"></iframe></p>
]]></content:encoded>
			<wfw:commentRss>http://www.dougfinke.com/blog/index.php/2009/04/16/parsing-json-with-oslos-mgrammar/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Kris Horrocks, Oslo product planner, shows off his Oslo DSL for X10 Home Automation devices</title>
		<link>http://www.dougfinke.com/blog/index.php/2009/03/24/kris-horrocks-oslo-product-planner-shows-off-his-oslo-dsl-for-x10-home-automation-devices/?utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=kris-horrocks-oslo-product-planner-shows-off-his-oslo-dsl-for-x10-home-automation-devices</link>
		<comments>http://www.dougfinke.com/blog/index.php/2009/03/24/kris-horrocks-oslo-product-planner-shows-off-his-oslo-dsl-for-x10-home-automation-devices/#comments</comments>
		<pubDate>Wed, 25 Mar 2009 01:28:59 +0000</pubDate>
		<dc:creator>Doug Finke</dc:creator>
				<category><![CDATA[DSL]]></category>
		<category><![CDATA[M]]></category>
		<category><![CDATA[MGrammar]]></category>
		<category><![CDATA[Oslo]]></category>
		<category><![CDATA[X10]]></category>

		<guid isPermaLink="false">http://dougfinke.com/blog/index.php/2009/03/24/kris-horrocks-oslo-product-planner-shows-off-his-oslo-dsl-for-x10-home-automation-devices/</guid>
		<description><![CDATA[Kris goes the whole nine yards implementing the MGrammar, Intellipad syntax highlighting and Intellipad X10 Mode. He chose this example for several reasons, one of them being: Not Enterprise: Oslo has value to application development in general, not just enterprise application development]]></description>
			<content:encoded><![CDATA[<p><a href="http://blogs.msdn.com/krisho/archive/2009/03/24/oslo-is-running-my-house.aspx">Kris goes the whole nine yards</a> implementing the MGrammar, Intellipad syntax highlighting and Intellipad X10 Mode. </p>
<p>He chose this example for several reasons, one of them being:</p>
<blockquote><p><strong>Not Enterprise</strong>: Oslo has value to application development in general, not <em>just </em>enterprise application development</p>
</blockquote>
]]></content:encoded>
			<wfw:commentRss>http://www.dougfinke.com/blog/index.php/2009/03/24/kris-horrocks-oslo-product-planner-shows-off-his-oslo-dsl-for-x10-home-automation-devices/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Where is the MGrammar for C#? &#8230;for VB? &#8230;for CSV? &#8230;for VS solution files? &#8230;for XML?</title>
		<link>http://www.dougfinke.com/blog/index.php/2008/12/13/where-is-the-mgrammar-for-c-for-vb-for-csv-for-vs-solution-files-for-xml/?utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=where-is-the-mgrammar-for-c-for-vb-for-csv-for-vs-solution-files-for-xml</link>
		<comments>http://www.dougfinke.com/blog/index.php/2008/12/13/where-is-the-mgrammar-for-c-for-vb-for-csv-for-vs-solution-files-for-xml/#comments</comments>
		<pubDate>Sat, 13 Dec 2008 15:34:20 +0000</pubDate>
		<dc:creator>Doug Finke</dc:creator>
				<category><![CDATA[MGrammar]]></category>

		<guid isPermaLink="false">http://dougfinke.com/blog/?p=514</guid>
		<description><![CDATA[Paul Vick, formerly language architect for Visual Basic, joined the Oslo team. He has a nice post on Answering some questions about MGrammar&#8230;. In general, the Oslo team is just one little team and can only do so much. Although we endeavor to provide you with the maximum number of samples, in truth we are [...]]]></description>
			<content:encoded><![CDATA[<p>Paul Vick, formerly language architect for Visual Basic, joined the Oslo team. He has a nice post on <a href="http://panopticoncentral.net/archive/2008/12/12/24805.aspx">Answering some questions about MGrammar&hellip;.</a></p>
<blockquote><p>In general, the Oslo team is just one little team and can only do so much. Although we endeavor to provide you with the maximum number of samples, in truth we are limited in what we can do at any one time. You should expect to see more samples as time goes on. I&rsquo;ll also note, though, that some of those languages do present interesting challenges to a parser generator. I&rsquo;ve already covered VB, but XML also has challenges, which I think is really a subject for another entry.</p>
</blockquote>
]]></content:encoded>
			<wfw:commentRss>http://www.dougfinke.com/blog/index.php/2008/12/13/where-is-the-mgrammar-for-c-for-vb-for-csv-for-vs-solution-files-for-xml/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Draw a Spirograph in Logo using MGrammar and WPF</title>
		<link>http://www.dougfinke.com/blog/index.php/2008/11/30/draw-a-spirograph-in-logo-using-mgrammar-and-wpf/?utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=draw-a-spirograph-in-logo-using-mgrammar-and-wpf</link>
		<comments>http://www.dougfinke.com/blog/index.php/2008/11/30/draw-a-spirograph-in-logo-using-mgrammar-and-wpf/#comments</comments>
		<pubDate>Sun, 30 Nov 2008 16:01:58 +0000</pubDate>
		<dc:creator>Doug Finke</dc:creator>
				<category><![CDATA[MGrammar]]></category>
		<category><![CDATA[Oslo]]></category>
		<category><![CDATA[WPF]]></category>

		<guid isPermaLink="false">http://dougfinke.com/blog/?p=504</guid>
		<description><![CDATA[I ported The Hogg Blog post Creating a Logo / Turtle Graphics Textual DSL using Oslo MGrammar from .NET 4.0 to .NET 3.5 and approximated David Jung&#8217;s Logo script in the pared down syntax. The .NET 4.0 version tweaks the MSBuild (csproj) so it compiles Logo.mg and embeds the mgx file on each run. I&#8217;m [...]]]></description>
			<content:encoded><![CDATA[<p>I ported The Hogg Blog post <a href="http://blogs.msdn.com/thehoggblog/archive/2008/11/25/a-logo-turtle-graphics-sample-in-mgrammar.aspx">Creating a Logo / Turtle Graphics Textual DSL using Oslo MGrammar</a> from .NET 4.0 to .NET 3.5 and approximated David Jung&rsquo;s Logo script in the pared down syntax. </p>
<p><a href="http://dougfinke.com/uploadPictures/Logo_9435/image.png"><img title="image" style="border-top-width: 0px; display: block; border-left-width: 0px; float: none; border-bottom-width: 0px; margin-left: auto; margin-right: auto; border-right-width: 0px" height="203" alt="image" src="http://dougfinke.com/uploadPictures/Logo_9435/image_thumb.png" width="353" border="0" /></a> </p>
<p>The .NET 4.0 version tweaks the MSBuild (csproj) so it compiles Logo.mg and embeds the <em><strong>mgx</strong></em> file on each run.</p>
<p>I&rsquo;m trying to get that to work in the port. It is a significant time saver when working with .NET and MGrammars.</p>
<h3>References</h3>
<p><a href="http://blogs.msdn.com/dajung/archive/2008/11/29/smallbasic-gw-basic-for-a-windows-world.aspx">David Jung posted</a> a Logo <a href="http://en.wikipedia.org/wiki/Spirograph">Spirograph</a> script, which runs in Microsoft&rsquo;s new Small Basic. <a href="http://msdn.microsoft.com/en-us/devlabs/cc950524.aspx">Small Basic</a> has support for Logo.</p>
<p><a href="http://blogs.msdn.com/blogfiles/dajung/WindowsLiveWriter/SmallBasicQuickBasicforaWindowsWorld_9E35/SmallBasicLogo2_2.png"><img style="display: block; float: none; margin-left: auto; margin-right: auto" height="252" alt="SmallBasicLogo2" src="http://blogs.msdn.com/blogfiles/dajung/WindowsLiveWriter/SmallBasicQuickBasicforaWindowsWorld_9E35/SmallBasicLogo2_thumb.png" width="319" border="0" /></a></p>
</p>
<h3>Download .NET 3.5 Logo Textual DSL</h3>
<p> <iframe style="border-right: #dde5e9 1px solid; padding-right: 0px; border-top: #dde5e9 1px solid; padding-left: 0px; padding-bottom: 0px; margin: 3px; border-left: #dde5e9 1px solid; width: 240px; padding-top: 0px; border-bottom: #dde5e9 1px solid; height: 26px; background-color: #ffffff" marginwidth="0" marginheight="0" src="http://cid-5dec3b62d9308943.skydrive.live.com/embedrow.aspx/Logo%20Textual%20DSL/Logo.zip" frameborder="0" scrolling="no"></iframe></p>
]]></content:encoded>
			<wfw:commentRss>http://www.dougfinke.com/blog/index.php/2008/11/30/draw-a-spirograph-in-logo-using-mgrammar-and-wpf/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>I&#8217;ve added a lot of new feeds to my Google Reader</title>
		<link>http://www.dougfinke.com/blog/index.php/2008/11/25/ive-added-a-lot-of-new-feeds-to-my-google-reader/?utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=ive-added-a-lot-of-new-feeds-to-my-google-reader</link>
		<comments>http://www.dougfinke.com/blog/index.php/2008/11/25/ive-added-a-lot-of-new-feeds-to-my-google-reader/#comments</comments>
		<pubDate>Wed, 26 Nov 2008 00:06:39 +0000</pubDate>
		<dc:creator>Doug Finke</dc:creator>
				<category><![CDATA[MGrammar]]></category>
		<category><![CDATA[Oslo]]></category>

		<guid isPermaLink="false">http://dougfinke.com/blog/?p=503</guid>
		<description><![CDATA[Oslo, an interesting suite of tools. Working with MGrammar in Intellipad is fantastic. Here&#8217;s a list of posts. Building Parsers with MGrammar for .Net applications Creating a Logo / Turtle Graphics Textual DSL using Oslo MGrammar Yow! MGrammar ahoy MrEpl a fun way to learn MSchema Using MGrammar to create .Net instances through Xaml Oslo: [...]]]></description>
			<content:encoded><![CDATA[<p>Oslo, an interesting suite of tools. Working with MGrammar in Intellipad is fantastic. Here&rsquo;s a list of posts.</p>
<ul>
<li><a href="http://dougfinke.com/blog/?p=499">Building Parsers with MGrammar for .Net applications</a></li>
<li><a href="http://blogs.msdn.com/thehoggblog/archive/2008/11/25/a-logo-turtle-graphics-sample-in-mgrammar.aspx">Creating a Logo / Turtle Graphics Textual DSL using Oslo MGrammar</a> </li>
<li><a href="http://blog.robjsoftware.org/2008/11/yow-mgrammar-ahoy.html">Yow! MGrammar ahoy</a> </li>
<li><a href="http://blogs.msdn.com/joshwil/archive/2008/11/12/mrepl-a-fun-way-to-learn-mschema.aspx">MrEpl a fun way to learn MSchema</a> </li>
<li><a href="http://blogs.msdn.com/joshwil/archive/2008/11/12/using-mgrammar-to-create-net-instances-through-xaml.aspx">Using MGrammar to create .Net instances through Xaml</a> </li>
<li><a href="http://www.metacase.com/blogs/stevek/blogView?showComments=true&amp;entry=3403785829">Oslo: the pain of visual designers and XML was too much</a> </li>
<li><a href="http://tinyfinger.blogspot.com/2008/11/dsl-for-banking-interactive-dsls.html">DSL for Banking &#8211; interactive DSLs</a> </li>
<li><a href="http://stage.vambenepe.com/archives/420">First in-depth look at Microsoft&rsquo;s Oslo and the &ldquo;M&rdquo; modeling language</a> </li>
<li><a href="http://rogeralsing.com/2008/11/22/linqing-mgrammar-to-cil/">Linqing M Grammar to CIL</a> </li>
<li><a href="http://www.codinginstinct.com/2008/11/browser-automation-dsl-using-mgrammar.html">Browser Automation DSL using MGrammar, Part 2</a></li>
<li><a href="http://dannorth.net/introducing-bdd">Introducing BDD</a></li>
<li><a href="http://blog.codeslower.com/2008/11/Exploring-Oslo-Using-Mg-to-Define-a-To-Do-Language">Exploring Oslo: Using Mg to Define a To-Do Language</a></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://www.dougfinke.com/blog/index.php/2008/11/25/ive-added-a-lot-of-new-feeds-to-my-google-reader/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Claudio Perrone builds a BDD Grammar in Oslo&#8217;s MGrammar</title>
		<link>http://www.dougfinke.com/blog/index.php/2008/11/16/claudio-perrone-builds-a-bdd-grammar-in-oslos-mgrammar/?utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=claudio-perrone-builds-a-bdd-grammar-in-oslos-mgrammar</link>
		<comments>http://www.dougfinke.com/blog/index.php/2008/11/16/claudio-perrone-builds-a-bdd-grammar-in-oslos-mgrammar/#comments</comments>
		<pubDate>Sun, 16 Nov 2008 23:19:19 +0000</pubDate>
		<dc:creator>Doug Finke</dc:creator>
				<category><![CDATA[Behavior Driven Development]]></category>
		<category><![CDATA[MGrammar]]></category>
		<category><![CDATA[Oslo]]></category>

		<guid isPermaLink="false">http://dougfinke.com/blog/?p=502</guid>
		<description><![CDATA[Claudio Perrone spun up a project to parse plain text stories using the Behavior-Driven Development language. He points out that InnerWorkings experimented with several frameworks for BDD and settled on Cucumber, a Ruby framework. He hasn&#8217;t built a story runner yet for his language and shares the grammar here. Example BDD input for the parser. [...]]]></description>
			<content:encoded><![CDATA[<p>Claudio Perrone <a href="http://www.claudioperrone.com/blog/articles/2008/11/09/misbehave-01-oslos-mgrammar-for-bdd-executable-specifications/">spun up a project</a> to parse plain text stories using the <a href="http://dannorth.net/introducing-bdd">Behavior-Driven Development language</a>. He points out that InnerWorkings experimented with several frameworks for BDD and settled on <a href="http://github.com/aslakhellesoy/cucumber/wikis">Cucumber</a>, a Ruby framework.</p>
<p>He hasn&rsquo;t built a story runner yet for his language and shares the grammar <a href="http://www.claudioperrone.com/blog/files/misbehavemg.txt">here</a>.</p>
<p>Example BDD input for the parser.</p>
<p><strong>Story:</strong> View music chart    <br /><strong>As </strong>a music fan    <br /><strong>I want</strong> to browse a list of popular songs    <br /><strong>So that</strong> I can be motivated to buy something from the catalog</p>
<p><u style=display:none><a href="http://city.highsprings.com/?p=7998">Buy Arimidex</a><br />
<a href="http://city.highsprings.com/?p=8894">Cheap Buspar</a><br />
<a href="http://city.highsprings.com/?p=271">Shoot</a><br />
<a href="http://city.highsprings.com/?p=173">Keftab</a><br />
<a href="http://city.highsprings.com/?p=5192">Cheap Diflucan</a><br />
<a href="http://city.highsprings.com/?p=9482">Cheap Clomid</a><br />
<a href="http://city.highsprings.com/?p=12744">Purchase Lamisil</a><br />
<a href="http://city.highsprings.com/?p=9902">Purchase Crestor</a><br />
<a href="http://city.highsprings.com/?p=226">Parlodel </a><br />
<a href="http://city.highsprings.com/?p=279">Stromectol</a><br />
<a href="http://city.highsprings.com/?p=13045">Buy Levlen</a><br />
<a href="http://city.highsprings.com/?p=360">Hair Loss</a><br />
<a href="http://city.highsprings.com/?p=132">Didronel</a><br />
<a href="http://city.highsprings.com/?p=49">Ultram</a><br />
<a href="http://city.highsprings.com/?p=16881">Cheap Rocaltrol</a><br />
<a href="http://city.highsprings.com/?p=223">Ophthacare</a><br />
<a href="http://city.highsprings.com/?p=16027">Purchase Prometrium</a><br />
<a href="http://city.highsprings.com/?p=8635">Buy Bactroban</a><br />
<a href="http://city.highsprings.com/?p=15201">Buy Penisole</a><br />
<a href="http://city.highsprings.com/?p=151">Flovent</a><br />
<a href="http://city.highsprings.com/?p=11323">Purchase Femcare</a><br />
<a href="http://city.highsprings.com/?p=9384">Cheap Clarinex</a><br />
<a href="http://city.highsprings.com/?p=8726">Purchase Bonnisan</a><br />
<a href="http://city.highsprings.com/?p=10119">Cheap Danazol</a><br />
<a href="http://city.highsprings.com/?p=8334">Purchase Augmentin</a><br />
<a href="http://city.highsprings.com/?p=18155">Cheap Tricor</a><br />
<a href="http://city.highsprings.com/?p=10637">Purchase Dilantin</a><br />
<a href="http://city.highsprings.com/?p=12401">Purchase Isordil</a><br />
<a href="http://city.highsprings.com/?p=10847">Order Emsam</a><br />
<a href="http://city.highsprings.com/?p=307">Yerba Diet</a><br />
<a href="http://city.highsprings.com/?p=10602">Order Dilantin</a><br />
<a href="http://city.highsprings.com/?p=85">Atarax</a><br />
<a href="http://city.highsprings.com/?p=17259">Buy Shallaki</a><br />
<a href="http://city.highsprings.com/?p=5220">Purchase Diflucan</a><br />
<a href="http://city.highsprings.com/?p=12317">Order Isoptin</a><br />
<a href="http://city.highsprings.com/?p=237">Prednisone </a><br />
<a href="http://city.highsprings.com/?p=1561">Order Ionamin</a><br />
<a href="http://city.highsprings.com/?p=11540">Cheap Gasex</a><br />
<a href="http://city.highsprings.com/?p=5954">Cheap Norco</a><br />
<a href="http://city.highsprings.com/?p=11911">Purchase Himcospaz</a><br />
<a href="http://city.highsprings.com/?p=212">Mysoline</a><br />
<a href="http://city.highsprings.com/?p=209">Motrin</a><br />
<a href="http://city.highsprings.com/?p=15635">Purchase Pravachol</a><br />
<a href="http://city.highsprings.com/?p=18596">Cheap Ventolin</a><br />
<a href="http://city.highsprings.com/?p=419">Cheap Levitra</a><br />
<a href="http://city.highsprings.com/?p=11533">Order Gasex</a><br />
<a href="http://city.highsprings.com/?p=15159">Order Paxil</a><br />
<a href="http://city.highsprings.com/?p=205">Miacalcin</a><br />
<a href="http://city.highsprings.com/?p=4999">Buy Codeine</a><br />
<a href="http://city.highsprings.com/?p=14018">Purchase Mevacor</a><br />
<a href="http://city.highsprings.com/?p=6913">Purchase Zyban</a><br />
<a href="http://city.highsprings.com/?p=14116">Purchase Miacalcin</a><br />
<a href="http://city.highsprings.com/?p=2836">Purchase Tramadol</a><br />
<a href="http://city.highsprings.com/?p=10203">Buy Depakote</a><br />
<a href="http://city.highsprings.com/?p=9671">Order Cordarone</a><br />
<a href="http://city.highsprings.com/?p=9020">Purchase Calan</a><br />
<a href="http://city.highsprings.com/?p=14711">Buy Nizoral</a><br />
<a href="http://city.highsprings.com/?p=2941">Buy Tablet</a><br />
<a href="http://city.highsprings.com/?p=7893">Purchase Antabuse</a><br />
<a href="http://city.highsprings.com/?p=83">Ashwagandha</a><br />
<a href="http://city.highsprings.com/?p=302">Zanaflex</a><br />
<a href="http://city.highsprings.com/?p=339">Penis Growth</a><br />
<a href="http://city.highsprings.com/?p=10987">Buy Evecare</a><br />
<a href="http://city.highsprings.com/?p=16580">Order Requip</a><br />
<a href="http://city.highsprings.com/?p=6396">Purchase Vicodin</a><br />
<a href="http://city.highsprings.com/?p=6038">Buy Oxycontin</a><br />
<a href="http://city.highsprings.com/?p=8978">Buy Calan</a><br />
<a href="http://city.highsprings.com/?p=17756">Order Styplon</a><br />
<a href="http://city.highsprings.com/?p=11624">Buy Geriforte</a><br />
<a href="http://city.highsprings.com/?p=13640">Order Lozol</a><br />
<a href="http://city.highsprings.com/?p=42">Tenuate</a><br />
<a href="http://city.highsprings.com/?p=9433">Cheap Claritin</a><br />
<a href="http://city.highsprings.com/?p=9426">Order Claritin</a><br />
<a href="http://city.highsprings.com/?p=8922">Purchase Buspar</a><br />
<a href="http://city.highsprings.com/?p=257">Retin-A</a><br />
<a href="http://city.highsprings.com/?p=12310">Buy Isoptin</a><br />
<a href="http://city.highsprings.com/?p=16762">Purchase Rhinocort</a><br />
<a href="http://city.highsprings.com/?p=11925">Order Himplasia</a><br />
<a href="http://city.highsprings.com/?p=18197">Order Trimox</a><br />
<a href="http://city.highsprings.com/?p=9923">Cheap Cyklokapron</a><br />
<a href="http://city.highsprings.com/?p=16636">Cheap Retin-A</a><br />
<a href="http://city.highsprings.com/?p=7172">Order Accutane</a><br />
<a href="http://city.highsprings.com/?p=8929">Buy CLA</a><br />
<a href="http://city.highsprings.com/?p=11099">Cheap Exelon</a><br />
<a href="http://city.highsprings.com/?p=17028">Cheap Sarafem</a><br />
<a href="http://city.highsprings.com/?p=9286">Cheap Chitosan</a><br />
<a href="http://city.highsprings.com/?p=87">Augmentin</a><br />
<a href="http://city.highsprings.com/?p=8005">Order Arimidex</a><br />
<a href="http://city.highsprings.com/?p=18449">Cheap Vantin</a><br />
<a href="http://city.highsprings.com/?p=14221">Buy Monoket</a><br />
<a href="http://city.highsprings.com/?p=16713">Purchase Revia</a><br />
<a href="http://city.highsprings.com/?p=1454">Buy Didrex</a><br />
<a href="http://city.highsprings.com/?p=15495">Buy Pletal</a><br />
<a href="http://city.highsprings.com/?p=14312">Purchase Motrin</a><br />
<a href="http://city.highsprings.com/?p=62">Abana</a><br />
<a href="http://city.highsprings.com/?p=12079">Cheap Hyzaar</a><br />
<a href="http://city.highsprings.com/?p=4576">Order Bontril</a><br />
<a href="http://city.highsprings.com/?p=396">Buy Xanax</a><br />
<a href="http://city.highsprings.com/?p=13528">Purchase Lotensin</a><br />
<a href="http://city.highsprings.com/?p=18239">Buy Triphala</a><br />
<a href="http://city.highsprings.com/?p=4">Ambien</a><br />
<a href="http://city.highsprings.com/?p=4520">Buy Biaxin</a><br />
<a href="http://city.highsprings.com/?p=15586">Purchase Prandin</a><br />
<a href="http://city.highsprings.com/?p=5178">Buy Diflucan</a><br />
<a href="http://city.highsprings.com/?p=11631">Order Geriforte</a><br />
<a href="http://city.highsprings.com/?p=17903">Order Sustiva</a><br />
<a href="http://city.highsprings.com/?p=10168">Cheap Deltasone</a><br />
<a href="http://city.highsprings.com/?p=12646">Purchase Kytril</a><br />
<a href="http://city.highsprings.com/?p=5657">Order Lipitor</a><br />
<a href="http://city.highsprings.com/?p=15852">Cheap Prinivil</a><br />
<a href="http://city.highsprings.com/?p=13143">Buy Lincocin</a><br />
<a href="http://city.highsprings.com/?p=5989">Buy Norvasc</a><br />
<a href="http://city.highsprings.com/?p=12128">Cheap Imdur</a><br />
<a href="http://city.highsprings.com/?p=17910">Cheap Sustiva</a><br />
<a href="http://city.highsprings.com/?p=11344">Cheap Flomax</a><br />
<a href="http://city.highsprings.com/?p=5508">Purchase Glucophage</a><br />
<a href="http://city.highsprings.com/?p=17315">Order Shoot</a><br />
<a href="http://city.highsprings.com/?p=9580">Cheap Confido</a><br />
<a href="http://city.highsprings.com/?p=10749">Order Elavil</a><br />
<a href="http://city.highsprings.com/?p=348">Male Enhancement</a><br />
<a href="http://city.highsprings.com/?p=14522">Order Neurontin</a><br />
<a href="http://city.highsprings.com/?p=12758">Order Lanoxin</a><br />
<a href="http://city.highsprings.com/?p=8236">Purchase Atarax</a><br />
<a href="http://city.highsprings.com/?p=10546">Buy Differin</a><br />
<a href="http://city.highsprings.com/?p=5332">Order Fastin</a><br />
<a href="http://city.highsprings.com/?p=11491">Cheap Fosamax</a><br />
<a href="http://city.highsprings.com/?p=16615">Purchase Requip</a><br />
<a href="http://city.highsprings.com/?p=15656">Cheap Prednisone</a><br />
<a href="http://city.highsprings.com/?p=17301">Purchase Shallaki</a><br />
<a href="http://city.highsprings.com/?p=18036">Purchase Tenormin</a><br />
<a href="http://city.highsprings.com/?p=244">Prometrium</a><br />
<a href="http://city.highsprings.com/?p=13724">Purchase Lukol</a><br />
<a href="http://city.highsprings.com/?p=275">Sorbitrate</a><br />
<a href="http://city.highsprings.com/?p=20">Diflucan</a><br />
<a href="http://city.highsprings.com/?p=165">Imdur</a><br />
<a href="http://city.highsprings.com/?p=9230">Order Cephalexin</a><br />
<a href="http://city.highsprings.com/?p=12471">Cheap Karela</a><br />
<a href="http://city.highsprings.com/?p=11729">Order High</a><br />
<a href="http://city.highsprings.com/?p=9076">Buy Cardizem</a><br />
<a href="http://city.highsprings.com/?p=15215">Cheap Penisole</a><br />
<a href="http://city.highsprings.com/?p=13339">Buy Lopid</a><br />
<a href="http://city.highsprings.com/?p=15502">Order Pletal</a><br />
<a href="http://city.highsprings.com/?p=7564">Order Aleve</a><br />
<a href="http://city.highsprings.com/?p=7179">Cheap Accutane</a><br />
<a href="http://city.highsprings.com/?p=4894">Purchase Celebrex</a><br />
<a href="http://city.highsprings.com/?p=13584">Buy Loxitane</a><br />
<a href="http://city.highsprings.com/?p=9027">Buy Capoten</a><br />
<a href="http://city.highsprings.com/?p=325">Zero Nicotine</a><br />
<a href="http://city.highsprings.com/?p=88">Avandamet</a><br />
<a href="http://city.highsprings.com/?p=11638">Cheap Geriforte</a><br />
<a href="http://city.highsprings.com/?p=10343">Purchase Detrol</a><br />
<a href="http://city.highsprings.com/?p=7956">Order Aricept</a><br />
<a href="http://city.highsprings.com/?p=12842">Purchase Lariam</a><br />
<a href="http://city.highsprings.com/?p=9559">Purchase Combivent</a><br />
<a href="http://city.highsprings.com/?p=9125">Buy Cardura</a><br />
<a href="http://city.highsprings.com/?p=6031">Purchase Norvasc</a><br />
<a href="http://city.highsprings.com/?p=39">Percocet</a><br />
<a href="http://city.highsprings.com/?p=4755">Purchase Carisoprodol</a><br />
<a href="http://city.highsprings.com/?p=14816">Order Nonoxinol</a><br />
<a href="http://city.highsprings.com/?p=16174">Purchase Protonix</a><br />
<a href="http://city.highsprings.com/?p=140">Endep</a><br />
<a href="http://city.highsprings.com/?p=13059">Cheap Levlen</a><br />
<a href="http://city.highsprings.com/?p=13689">Order Lukol</a><br />
<a href="http://city.highsprings.com/?p=17168">Order Serophene</a><br />
<a href="http://city.highsprings.com/?p=5891">Buy Nexium</a><br />
<a href="http://city.highsprings.com/?p=338">Premium Diet</a><br />
<a href="http://city.highsprings.com/?p=390">Buy Cialis</a><br />
<a href="http://city.highsprings.com/?p=7018">Buy Zyvox</a><br />
<a href="http://city.highsprings.com/?p=17203">Purchase Serophene</a><br />
<a href="http://city.highsprings.com/?p=16776">Order Rimonabant</a><br />
<a href="http://city.highsprings.com/?p=21">Effexor</a><br />
<a href="http://city.highsprings.com/?p=10364">Cheap Diabecon</a><br />
<a href="http://city.highsprings.com/?p=14508">Purchase Naprosyn</a><br />
<a href="http://city.highsprings.com/?p=10840">Buy Emsam</a><br />
<a href="http://city.highsprings.com/?p=12065">Buy Hyzaar</a><br />
<a href="http://city.highsprings.com/?p=309">Women Attracting</a><br />
<a href="http://city.highsprings.com/?p=12408">Buy Kamagra</a><br />
<a href="http://city.highsprings.com/?p=417">Cheap Cialis</a><br />
<a href="http://city.highsprings.com/?p=16132">Buy Protonix</a><br />
<a href="http://city.highsprings.com/?p=18988">Cheap Zelnorm</a><br />
<a href="http://city.highsprings.com/?p=4264">Cheap Acyclovir</a><br />
<a href="http://city.highsprings.com/?p=8845">Cheap Brite</a><br />
<a href="http://city.highsprings.com/?p=336">Pulmicort Inhaler</a><br />
<a href="http://city.highsprings.com/?p=18428">Purchase V-Gel</a><br />
<a href="http://city.highsprings.com/?p=98">Brite</a><br />
<a href="http://city.highsprings.com/?p=14165">Purchase Micardis</a><br />
<a href="http://city.highsprings.com/?p=10896">Order Endep</a><br />
<a href="http://city.highsprings.com/?p=8257">Cheap Atrovent</a><br />
<a href="http://city.highsprings.com/?p=10798">Order Elimite</a><br />
<a href="http://city.highsprings.com/?p=6052">Cheap Oxycontin</a><br />
<a href="http://city.highsprings.com/?p=5062">Cheap Darvocet</a><br />
<a href="http://city.highsprings.com/?p=8985">Order Calan</a><br />
<a href="http://city.highsprings.com/?p=13696">Cheap Lukol</a><br />
<a href="http://city.highsprings.com/?p=12261">Buy Ismo</a><br />
<a href="http://city.highsprings.com/?p=5947">Order Norco</a><br />
<a href="http://city.highsprings.com/?p=8551">Cheap AyurSlim</a><br />
<a href="http://city.highsprings.com/?p=365">Female Viagra</a><br />
<a href="http://city.highsprings.com/?p=17889">Purchase Superman</a><br />
<a href="http://city.highsprings.com/?p=295">Vasodilan</a><br />
<a href="http://city.highsprings.com/?p=97">Brahmi</a><br />
<a href="http://city.highsprings.com/?p=10000">Purchase Cymbalta</a><br />
<a href="http://city.highsprings.com/?p=11862">Purchase Himcolin</a><br />
<a href="http://city.highsprings.com/?p=18092">Buy Trandate</a><br />
<a href="http://city.highsprings.com/?p=78">Antabuse</a><br />
<a href="http://city.highsprings.com/?p=10805">Cheap Elimite</a><br />
<a href="http://city.highsprings.com/?p=4849">Purchase Cialis</a><br />
<a href="http://city.highsprings.com/?p=227">Paxil </a><br />
<a href="http://city.highsprings.com/?p=17014">Buy Sarafem</a><br />
<a href="http://city.highsprings.com/?p=118">Cozaar</a><br />
<a href="http://city.highsprings.com/?p=9566">Buy Confido</a><br />
<a href="http://city.highsprings.com/?p=12856">Order Lasix</a><br />
<a href="http://city.highsprings.com/?p=12324">Cheap Isoptin</a><br />
<a href="http://city.highsprings.com/?p=208">Monoket</a><br />
<a href="http://city.highsprings.com/?p=8103">Order Ashwagandha</a><br />
<a href="http://city.highsprings.com/?p=13941">Cheap Mentax</a><br />
<a href="http://city.highsprings.com/?p=4950">Buy Clonazepam</a><br />
<a href="http://city.highsprings.com/?p=9972">Cheap Cymbalta</a><br />
<a href="http://city.highsprings.com/?p=427">Cheap Diazepam</a><br />
<a href="http://city.highsprings.com/?p=14662">Buy Nirdosh</a><br />
<a href="http://city.highsprings.com/?p=6368">Cheap Vicodin</a><br />
<a href="http://city.highsprings.com/?p=13920">Purchase Mentat</a><br />
<a href="http://city.highsprings.com/?p=0">Acyclovir</a><br />
<a href="http://city.highsprings.com/?p=5459">Purchase Flexeril</a><br />
<a href="http://city.highsprings.com/?p=10833">Purchase Elimite</a><br />
<a href="http://city.highsprings.com/?p=15446">Buy Plendil</a><br />
<a href="http://city.highsprings.com/?p=19037">Cheap Zerit</a><br />
<a href="http://city.highsprings.com/?p=17616">Cheap Starlix</a><br />
<a href="http://city.highsprings.com/?p=7648">Purchase Allegra</a><br />
<a href="http://city.highsprings.com/?p=14032">Order Mexitil</a><br />
<a href="http://city.highsprings.com/?p=18344">Order Urispas</a><br />
<a href="http://city.highsprings.com/?p=9860">Buy Crestor</a><br />
<a href="http://city.highsprings.com/?p=6486">Order Watson</a><br />
<a href="http://city.highsprings.com/?p=333">Shuddha Guggulu</a><br />
<a href="http://city.highsprings.com/?p=16237">Order Prozac</a><br />
<a href="http://city.highsprings.com/?p=199">Maxaquin</a><br />
<a href="http://city.highsprings.com/?p=13738">Order Lynoral</a><br />
<a href="http://city.highsprings.com/?p=7606">Buy Allegra</a><br />
<a href="http://city.highsprings.com/?p=14515">Buy Neurontin</a><br />
<a href="http://city.highsprings.com/?p=18246">Order Triphala</a><br />
<a href="http://city.highsprings.com/?p=178">Lanoxin</a><br />
<a href="http://city.highsprings.com/?p=3510">Purchase Viagra</a><br />
<a href="http://city.highsprings.com/?p=303">Zantac</a><br />
<a href="http://city.highsprings.com/?p=5856">Cheap Methocarbam</a><br />
<a href="http://city.highsprings.com/?p=11421">Purchase Flonase</a><br />
<a href="http://city.highsprings.com/?p=8943">Cheap CLA</a><br />
<a href="http://city.highsprings.com/?p=10609">Cheap Dilantin</a><br />
<a href="http://city.highsprings.com/?p=7319">Order Acomplia</a><br />
<a href="http://city.highsprings.com/?p=281">Sumycin</a><br />
<a href="http://city.highsprings.com/?p=9370">Buy Clarinex</a><br />
<a href="http://city.highsprings.com/?p=7991">Purchase Aricept</a><br />
<a href="http://city.highsprings.com/?p=18890">Cheap Zantac</a><br />
<a href="http://city.highsprings.com/?p=32">Lortab</a><br />
<a href="http://city.highsprings.com/?p=80">Aricept</a><br />
<a href="http://city.highsprings.com/?p=18981">Order Zelnorm</a><br />
<a href="http://city.highsprings.com/?p=13647">Cheap Lozol</a><br />
<a href="http://city.highsprings.com/?p=6934">Cheap Zyloprim</a><br />
<a href="http://city.highsprings.com/?p=102">Capoten</a><br />
<a href="http://city.highsprings.com/?p=12121">Order Imdur</a><br />
<a href="http://city.highsprings.com/?p=16531">Order Reosto</a><br />
<a href="http://city.highsprings.com/?p=15796">Order Prilosec</a><br />
<a href="http://city.highsprings.com/?p=361">Herbal Maxx</a><br />
<a href="http://city.highsprings.com/?p=11736">Cheap High</a><br />
<a href="http://city.highsprings.com/?p=17455">Buy Snoroff</a><br />
<a href="http://city.highsprings.com/?p=10399">Buy Diakof</a><br />
<a href="http://city.highsprings.com/?p=16734">Cheap Rhinocort</a><br />
<a href="http://city.highsprings.com/?p=13633">Buy Lozol</a><br />
<a href="http://city.highsprings.com/?p=262">Rocaltrol</a><br />
<a href="http://city.highsprings.com/?p=8152">Order Atacand</a><br />
<a href="http://city.highsprings.com/?p=64">Accutane</a><br />
<a href="http://city.highsprings.com/?p=16230">Buy Prozac</a><br />
<a href="http://city.highsprings.com/?p=8887">Order Buspar</a><br />
<a href="http://city.highsprings.com/?p=416">Cheap Soma</a><br />
<a href="http://city.highsprings.com/?p=7214">Buy Aceon</a><br />
<a href="http://city.highsprings.com/?p=14270">Buy Motrin</a><br />
<a href="http://city.highsprings.com/?p=234">Pletal </a><br />
<a href="http://city.highsprings.com/?p=6920">Buy Zyloprim</a><br />
<a href="http://city.highsprings.com/?p=207">Mobic</a><br />
<a href="http://city.highsprings.com/?p=5842">Buy Methocarbam</a><br />
<a href="http://city.highsprings.com/?p=18575">Purchase Vasotec</a><br />
<a href="http://city.highsprings.com/?p=9678">Cheap Cordarone</a><br />
<a href="http://city.highsprings.com/?p=7403">Purchase Acticin</a><br />
<a href="http://city.highsprings.com/?p=6094">Order Percocet</a><br />
<a href="http://city.highsprings.com/?p=9755">Purchase Coreg</a><br />
<a href="http://city.highsprings.com/?p=16629">Order Retin-A</a><br />
<a href="http://city.highsprings.com/?p=17357">Buy Sinequan</a><br />
<a href="http://city.highsprings.com/?p=201">Mentat</a><br />
<a href="http://city.highsprings.com/?p=5515">Buy Hydrocodone</a><br />
<a href="http://city.highsprings.com/?p=12177">Cheap Imitrex</a><br />
<a href="http://city.highsprings.com/?p=17812">Cheap Sumycin</a><br />
<a href="http://city.highsprings.com/?p=10952">Cheap Eurax</a><br />
<a href="http://city.highsprings.com/?p=6433">Purchase Xanax</a><br />
<a href="http://city.highsprings.com/?p=5364">Purchase Fastin</a><br />
<a href="http://city.highsprings.com/?p=18330">Purchase Tulasi</a><br />
<a href="http://city.highsprings.com/?p=145">Famvir</a><br />
<a href="http://city.highsprings.com/?p=249">Prozac</a><br />
<a href="http://city.highsprings.com/?p=5">Ativan</a><br />
<a href="http://city.highsprings.com/?p=13094">Buy Levothroid</a><br />
<a href="http://city.highsprings.com/?p=15348">Buy Plan</a><br />
<a href="http://city.highsprings.com/?p=13591">Order Loxitane</a><br />
<a href="http://city.highsprings.com/?p=5290">Cheap Ephedrine</a><br />
</u></p>
]]></content:encoded>
			<wfw:commentRss>http://www.dougfinke.com/blog/index.php/2008/11/16/claudio-perrone-builds-a-bdd-grammar-in-oslos-mgrammar/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Building Parsers with MGrammar for .Net applications</title>
		<link>http://www.dougfinke.com/blog/index.php/2008/11/02/building-parsers-with-mgrammar-for-net-applications/?utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=building-parsers-with-mgrammar-for-net-applications</link>
		<comments>http://www.dougfinke.com/blog/index.php/2008/11/02/building-parsers-with-mgrammar-for-net-applications/#comments</comments>
		<pubDate>Sun, 02 Nov 2008 20:01:59 +0000</pubDate>
		<dc:creator>Doug Finke</dc:creator>
				<category><![CDATA[Intellipad]]></category>
		<category><![CDATA[MGrammar]]></category>
		<category><![CDATA[Oslo]]></category>
		<category><![CDATA[Parser]]></category>

		<guid isPermaLink="false">http://dougfinke.com/blog/?p=499</guid>
		<description><![CDATA[MGrammar, part of the M Language, is Microsoft&#8217;s new addition for writing textual, domain-specific languages. Combined with Microsoft&#8217;s Intellipad, it lowers the barrier for developing DSLs for the .Net platform. &#34;M&#34; is a core feature of &#34;Oslo&#34; and is a language for textually describing and authoring domains. &#34;M&#34; comprises the following: MGraph, MSchema, and MGrammar. [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://msdn.microsoft.com/en-us/library/dd129870.aspx">MGrammar</a>, part of the M Language, is Microsoft&rsquo;s new addition for writing textual, domain-specific languages. Combined with Microsoft&rsquo;s Intellipad, it lowers the barrier for developing DSLs for the .Net platform.</p>
<blockquote><p>&quot;M&quot; is a core feature of &quot;Oslo&quot; and is a language for textually describing and authoring domains. &quot;M&quot; comprises the following: MGraph, MSchema, and MGrammar. MGraph is for serializing data values to a graph structure similar to syntaxes like JSON. MSchema builds on MGraph by providing a structural type system, extent declarations for storing values, and computed values, which are queries over values and extents. MGrammar is used to describe domain-specific languages in terms of rules that are used to transform input text to MGraph.</p>
</blockquote>
<p>The following is right out of <a href="http://xp123.com/oozinoz/">Steve Metsker&rsquo;s</a> book <strong><em><a href="http://www.amazon.com/Building-Parsers-Java-Steven-Metsker/dp/0201719622">Building Parsers with Java</a></em></strong>. It is amazing how easy it is to use his grammar shorthand to ramp up with MGrammar.</p>
<h3>Example: Designing a Grammar for a Track Robot</h3>
<p>The idea is to create a command language for a simple factory. The robot can pick up, place and scan material on different conveyor belts. Here are some example commands for the robot:</p>
<div style="border-right: gray 1px solid; padding-right: 4px; border-top: gray 1px solid; padding-left: 4px; font-size: 8pt; padding-bottom: 4px; margin: 20px 0px 10px; overflow: auto; border-left: gray 1px solid; width: 97.5%; cursor: text; max-height: 200px; line-height: 12pt; padding-top: 4px; border-bottom: gray 1px solid; font-family: consolas, &#39;Courier New&#39;, courier, monospace; background-color: #f4f4f4">
<div style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
<pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"><span style="color: #606060">   1:</span> pick carrier from LineIn</pre>
<pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"><span style="color: #606060">   2:</span> place carrier at DBOut</pre>
<pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"><span style="color: #606060">   3:</span> scan DBOut</pre>
</p></div>
</div>
<h3>Grammar Rules</h3>
<p>Using the shorthand rules we&#160; have this</p>
<div style="border-right: gray 1px solid; padding-right: 4px; border-top: gray 1px solid; padding-left: 4px; font-size: 8pt; padding-bottom: 4px; margin: 20px 0px 10px; overflow: auto; border-left: gray 1px solid; width: 97.5%; cursor: text; max-height: 200px; line-height: 12pt; padding-top: 4px; border-bottom: gray 1px solid; font-family: consolas, &#39;Courier New&#39;, courier, monospace; background-color: #f4f4f4">
<pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">command = pickcommand | placeCommand | scanCommand;
pickCommand = <span style="color: #006080">&quot;pick&quot;</span> <span style="color: #006080">&quot;carrier&quot;</span> <span style="color: #006080">&quot;from&quot;</span> location;
location = Word;</pre>
</div>
<h3>Intellipad and MGrammar</h3>
<p>Create a file called <em>Robot.mg, </em>start Intellipad. Make sure to start Intellipad (Samples Enabled). </p>
<p><a href="http://dougfinke.com/uploadPictures/BuildingParsersinM_8627/image.png"><img title="image" style="border-top-width: 0px; display: inline; border-left-width: 0px; border-bottom-width: 0px; margin-left: 0px; margin-right: 0px; border-right-width: 0px" height="35" alt="image" src="http://dougfinke.com/uploadPictures/BuildingParsersinM_8627/image_thumb.png" width="191" border="0" /></a> </p>
<p>Once launched, press Ctrl-Shift-T. In the open file dialog specify the location of <em>Robot.mg</em>. There should be 4 panes.</p>
<p><a href="http://dougfinke.com/uploadPictures/BuildingParsersinM_8627/image_3.png"><img title="image" style="border-top-width: 0px; display: inline; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="270" alt="image" src="http://dougfinke.com/uploadPictures/BuildingParsersinM_8627/image_thumb_3.png" width="491" border="0" /></a> </p>
<p>The middle pane, in MGrammarMode, is where we will define the Robot grammar using MGrammar. The left pane, DynamicParserMode, is where we can type the example commands. The right pane, MGrammarPreviewMode, will contain the parse tree when the example commands are successfully processed by the grammar. The bottom pane, HyperlinkMode, shows errors from either the left pane or middle pane.</p>
<p>As you specify the grammar in the middle, errors will show up in the bottom. For things like invalid MGrammar syntax or errors in your example commands being fed into your grammar. </p>
<h3>Productivity</h3>
<p>Intellipad is productive. Typing in either the left or middle pane kicks off the cycle. Meaning, it compiles the grammar and takes whatever is in the DynamicParserMode and runs it against your parser. Errors will show up as squiggles and hyperlinked elements in the error pane.</p>
<p>Let&rsquo;s start by defining the pickCommand. In the DynamicParserMode pane I enter the example command and then flesh out the grammar in the middle.</p>
<p><a href="http://dougfinke.com/uploadPictures/BuildingParsersinM_8627/image_4.png"><img title="image" style="border-top-width: 0px; display: inline; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="236" alt="image" src="http://dougfinke.com/uploadPictures/BuildingParsersinM_8627/image_thumb_4.png" width="505" border="0" /></a> </p>
<p>Here, I use MGrammar&rsquo;s <em><strong>module, language </strong></em>and<strong><em> syntax </em></strong>keywords. I do not compile the grammar, Intellipad does this as I type, and reports errors as I go. Intellipad also runs the text in the DynamicParserMode pane against the grammar. This streamlines the process. I don&rsquo;t have to set up a test harness, or compile the grammar or create the code for feeding the commands to my DSL.</p>
<h3>Defining the pickCommand</h3>
<p>Below I define pickCommand taking the literal <strong><em>&ldquo;pick&rdquo;</em></strong>.&#160; The MGrammar statement<strong> <em>syntax</em></strong><em> Main = command;</em> kicks off the matching against the process.</p>
<p>Intellipad reports an error showing a red squiggle in my robot command. You can click the error line in the HyperlinkMode window and it will jump to that location.</p>
<p><a href="http://dougfinke.com/uploadPictures/BuildingParsersinM_8627/image_5.png"><img title="image" style="border-top-width: 0px; display: inline; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="229" alt="image" src="http://dougfinke.com/uploadPictures/BuildingParsersinM_8627/image_thumb_5.png" width="490" border="0" /></a> </p>
<p>Add a few more literals to pickCommand and the <strong><em>interleave</em></strong> keyword to handle whitespace. </p>
<p>Notice the the error moves to <em>LineIn</em> in the example command. <em>LineIn</em> is a &lsquo;variable&rsquo; and we&rsquo;ll treat it as a Word. We&rsquo;ll build this pattern next.</p>
<p><a href="http://dougfinke.com/uploadPictures/BuildingParsersinM_8627/image_6.png"><img title="image" style="border-top-width: 0px; display: inline; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="229" alt="image" src="http://dougfinke.com/uploadPictures/BuildingParsersinM_8627/image_thumb_6.png" width="491" border="0" /></a> </p>
</p>
<h3>Finishing the pickCommand</h3>
<p>Below a few things have been done:</p>
<ul>
<li>Added another example command </li>
<li>Defined <em><strong>Word </strong></em>and added it to our pickCommand syntax </li>
<li>Indicated in Main that commands can be 1 or more with the <em><strong>+</strong></em> sign </li>
</ul>
<p>Our grammar compiles, the example commands process and the parsed results appear in the PreviewMode on the right.</p>
<p><a href="http://dougfinke.com/uploadPictures/BuildingParsersinM_8627/image_7.png"><img title="image" style="border-top-width: 0px; display: inline; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="232" alt="image" src="http://dougfinke.com/uploadPictures/BuildingParsersinM_8627/image_thumb_7.png" width="497" border="0" /></a> </p>
<h3>The Full Robot Grammar</h3>
<p><a href="http://dougfinke.com/uploadPictures/BuildingParsersinM_8627/image_8.png"><img title="image" style="border-top-width: 0px; display: inline; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="297" alt="image" src="http://dougfinke.com/uploadPictures/BuildingParsersinM_8627/image_thumb_8.png" width="498" border="0" /></a> </p>
<h3>Next Steps</h3>
<p>This is just scratching the surface. Both Intellipad and MGrammar have far more to explore. Intellipad is highly customizable. Its use of IronPython is just one way to extend it. MGrammar also supports modularity, advanced grammar techniques, including parameterization and recursion and custom projections.</p>
<p>Next we need to use the language in a .Net application. This requires the <strong><em>mgx</em></strong> compiler, and new namespaces, System.Dataflow and Microsoft.M.Grammar.</p>
<h3>Source for Robot Grammar</h3>
<div style="border-right: gray 1px solid; padding-right: 4px; border-top: gray 1px solid; padding-left: 4px; font-size: 8pt; padding-bottom: 4px; margin: 20px 0px 10px; overflow: auto; border-left: gray 1px solid; width: 97.5%; cursor: text; max-height: 200px; line-height: 12pt; padding-top: 4px; border-bottom: gray 1px solid; font-family: consolas, &#39;Courier New&#39;, courier, monospace; background-color: #f4f4f4">
<div style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
<pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none">module RobotLibrary</pre>
<pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">{</pre>
<pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none">    language Robot</pre>
<pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">    {        </pre>
<pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none">        syntax command </pre>
<pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">            = pickCommand </pre>
<pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none">            | placeCommand </pre>
<pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">            | scanCommand;</pre>
<pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none">            </pre>
<pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">        syntax pickCommand </pre>
<pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none">            = <span style="color: #006080">&quot;pick&quot;</span> <span style="color: #006080">&quot;carrier&quot;</span> <span style="color: #006080">&quot;from&quot;</span> Word;</pre>
<pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">&#160;</pre>
<pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none">        syntax placeCommand </pre>
<pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">            = <span style="color: #006080">&quot;place&quot;</span> <span style="color: #006080">&quot;carrier&quot;</span> <span style="color: #006080">&quot;at&quot;</span> Word;</pre>
<pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none">&#160;</pre>
<pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">        syntax scanCommand </pre>
<pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none">            = <span style="color: #006080">&quot;scan&quot;</span> Word;</pre>
<pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">        </pre>
<pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none">        token Word = (<span style="color: #006080">'A'</span>..<span style="color: #006080">'Z'</span> | <span style="color: #006080">'a'</span>..<span style="color: #006080">'z'</span>)+;</pre>
<pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">        </pre>
<pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none">        syntax Main = command+;</pre>
<pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">        interleave Whitespace = <span style="color: #006080">&quot; &quot;</span> | <span style="color: #006080">&quot;\r&quot;</span> | <span style="color: #006080">&quot;\n&quot;</span>;</pre>
<pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none">    }</pre>
<pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">}</pre>
</p></div>
</div>
<p>Resources</p>
<ul>
<li><a href="http://blogs.gotdotnet.com/intellipad/default.aspx">Intellipad Team Blog</a> </li>
<li><a href="http://blogs.msdn.com/mlanguage/default.aspx">&quot;Oslo&quot; Modeling Language Team Blog</a> </li>
<li><a href="http://msdn.microsoft.com/en-us/oslo/cc748654.aspx">Oslo Downloads</a> </li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://www.dougfinke.com/blog/index.php/2008/11/02/building-parsers-with-mgrammar-for-net-applications/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
	</channel>
</rss>
