chris: > >>I plan to give a course in compiler construction, > >>using Haskell as the implementation language > >>(not as source or target language). > >> > >>Something along these lines: > >>1. combinator parsers (Parsec), > >>2. simple interpreter (arithmetical expressions) > >>3. add algebraic data types, functions > >>4. type checker > >>5. code generator. > >>Ideally, 2..5 would be using the very same tree traversal code > >>and just change the monad for evaluation. > >> > >>Any comments appreciated. Have you given such a course? Taken? > > At Utrecht University, they teach excellent courses on exactly this > subject, using Haskell. The course webpage [1] is probably a useful > resource for you, as it shows exactly what we were thought (I > participated in the course last year). We made heavy use of Utrecht's > Attribute Grammar Compiler [2], which is a pre-processor for Haskell > that allows you to very easily build programs using an attribute > grammar. This proved to be a really nice way to do the tree > transformations. I very much liked the idea of attribute grammars, but > I personally don't like pre-processors very much. > > Also, we targeted Simple Stack Machine as a platform. This is an > assembly-like language that has a graphical interpreter, so you can > actually see your code, do single-stepping, see your stack, etc. It > proved to be quite useful. As a student, I it added a lot of > educational value, but a real language would also be cool (e.g. Harpy > [4]).
And Language.C http://hackage.haskell.org/cgi-bin/hackage-scripts/package/language-c _______________________________________________ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe