As a functional programming alternative to lex/yacc, flex/bison and ANTLR for parsing, I've enjoyed using parser combinator libraries like Parsec in Haskell (included in GHC) and Scala'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"><<a href="mailto:brian@brie.com">brian@brie.com</a>></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 "This is<br>
really good stuff", but I was looking for a little more of "show me<br>
what you have done or are doing". 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'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's book<br>
"Essentials of Programming Languages". 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's book titled "The Little Schemer". 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>
"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."<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>