As a functional programming alternative to lex/yacc, flex/bison and ANTLR for parsing, I&#39;ve enjoyed using parser combinator libraries like Parsec in Haskell (included in GHC) and Scala&#39;s built-in scala.util.parsing.combinator library.<div>

<br></div><div>Harold<br><br><div class="gmail_quote">On Thu, Jun 30, 2011 at 10:39 AM, Brian Lavender <span dir="ltr">&lt;<a href="mailto:brian@brie.com">brian@brie.com</a>&gt;</span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;">

I was initially excited about the Haskell presention, but at the end<br>
I was sort of disappointed. It seemed like we got a lot of &quot;This is<br>
really good stuff&quot;, but I was looking for a little more of &quot;show me<br>
what you have done or are doing&quot;. But hey, I did learn about using let<br>
for defining functions in ghci. That was good news. I had been always<br>
loading functions from files.<br>
<br>
I took a class on Programming Language Principles at Sac State where we<br>
used SML to define the grammar, do static analysis, dynamic analysis,<br>
and finally evaluate the program. The starting point for this was that we<br>
manually derived the program in Bauchus Naur Form.  SML is a functional<br>
programming language and in the end, we could see the power of SML. Yet,<br>
I have been eager to continue doing work in this area.<br>
<br>
Here are few tools/resources I am excited about and I would like to<br>
share.<br>
<br>
1. Most languages are constructed using a Context Free Grammar (CFG)<br>
   and ANTLR works has a graphical interface for laying out your rules.<br>
   It will construct the lexer and parser code too,<br>
   but beyond that, I don&#39;t think Java is the right tool.<br>
   <a href="http://www.antlr.org/download/antlrworks-1.4.2.jar" target="_blank">http://www.antlr.org/download/antlrworks-1.4.2.jar</a><br>
   <a href="http://www.antlr.org/" target="_blank">http://www.antlr.org/</a><br>
<br>
2. I got a hold of Dan Friedman&#39;s book<br>
   &quot;Essentials of Programming Languages&quot;. It uses Scheme and one<br>
   can use Dr. Racket (<a href="http://racket-lang.org/" target="_blank">http://racket-lang.org/</a>) that has a<br>
   EOPL (abbreviation for the book) mode.<br>
<br>
3. I found that my thinking recursively could be improved, so I also<br>
   got Dan Friedman&#39;s book titled &quot;The Little Schemer&quot;. It has<br>
   a lot of practical examples that I think really help look<br>
   at things recursively, as seems to be essential in writing<br>
   a language.<br>
<br>
Hopefully someday, I will have a language of my own. ;-)<br>
<br>
brian<br>
--<br>
Brian Lavender<br>
<a href="http://www.brie.com/brian/" target="_blank">http://www.brie.com/brian/</a><br>
<br>
&quot;There are two ways of constructing a software design. One way is to<br>
make it so simple that there are obviously no deficiencies. And the other<br>
way is to make it so complicated that there are no obvious deficiencies.&quot;<br>
<br>
Professor C. A. R. Hoare<br>
The 1980 Turing award lecture<br>
_______________________________________________<br>
vox-tech mailing list<br>
<a href="mailto:vox-tech@lists.lugod.org">vox-tech@lists.lugod.org</a><br>
<a href="http://lists.lugod.org/mailman/listinfo/vox-tech" target="_blank">http://lists.lugod.org/mailman/listinfo/vox-tech</a><br>
</blockquote></div><br></div>