<div class="gmail_quote">On Fri, Aug 20, 2010 at 6:05 AM, Jason Dagit <span dir="ltr">&lt;<a href="mailto:dagit@codersbase.com">dagit@codersbase.com</a>&gt;</span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;">

<br><br><div class="gmail_quote"><div class="im">On Thu, Aug 19, 2010 at 8:05 PM, Michael Litchard <span dir="ltr">&lt;<a href="mailto:michael@schmong.org" target="_blank">michael@schmong.org</a>&gt;</span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">


I&#39;d like the community to give me feedback on the difficulty level of<br>
implementing an awk interpreter. What language features would be<br>
required? Specifically I&#39;m hoping that TH is not necessary because I&#39;m<br>
nowhere near that skill level.<br></blockquote><div><br></div></div></div></blockquote><div>Implementing an awk interpreter in Haskell can be a fun project. I have a half finished implementation lying around on the hard drive. It&#39;s perfectly possible to implement it without using any super fancy language features. But as other people have pointed out, monads are helpful for dealing with a lot of the plumbing in the interpreter.</div>

<div><br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;"><div class="gmail_quote"><div class="im"><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">

An outline of a possible approach would be appreciated. I am using<br>
<a href="http://www.math.utah.edu/docs/info/gawk_toc.html" target="_blank">http://www.math.utah.edu/docs/info/gawk_toc.html</a><br>
as a guide to the language description.<br></blockquote><div><br></div></div><div>You might also focus on the &#39;core&#39; of awk.  Think about, what is the minimal language and start from there.  Grow your implementation adding features bit by bit.  It&#39;s also a good opportunity to do testing.  You have a reference implementation and so you can write lots of tests for each feature as you add them.</div>


<div><br></div></div></blockquote><div>When I wrote my awk interpreter I decided to go for the whole language from start. I had reasons for doing this as there were certain aspects of this that I wanted to capture but it is not they way I would recommend going about it. I definitely second Jason&#39;s advice at trying to capture the core functionality first.</div>

<div><br></div><div>Have fun,</div><div><br></div><div>Josef</div></div>