On Sat, Jun 11, 2011 at 7:10 AM, Andrew Coppin <span dir="ltr">&lt;<a href="mailto:andrewcoppin@btinternet.com">andrewcoppin@btinternet.com</a>&gt;</span> wrote:<br><div class="gmail_quote"><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;">
<br>
If you have a function that turns a parse tree back into text again, you can try verifying that a round-trip is the identity function. Except perhaps sometimes it isn&#39;t. Perhaps a given expression has more than one equivalent representation. A round-trip from string and back again is even less likely to be stable.<br>
</blockquote><div><br>I find that this kind of testing works quite nicely in practice with QuickCheck, in the sense that it does a good job of finding bugs in both the unparser and the parser. It&#39;s possible, but unlikely, that you&#39;ll have a bug in the parser and a bug in the unparser that cancel one another out. Generate the ASTs; parse . unparse ought to be id, or perhaps t = t . parse . unparse for some simple transformation &#39;t&#39;. For example, if the parser annotates AST nodes with source positions, you may need &#39;t&#39; to strip them out.<br>
<br clear="all">Kevin<br></div></div>-- <br>Kevin Charter<br><a href="mailto:kevin.charter@acm.org">kevin.charter@acm.org</a><br>