Over the years we have been constructing a collection of Embedded Domain 
Specific Languages for describing compilers which are assembled from fragments 
which can be compiled individuallu. In this way one can gradually ``grow a 
langauge'' in a large number of small steps. The technique replaces things like 
macro extensions or Template Haskell; it has become feasable to just extend the 
language at hand by providing  extra modules. The nice thing is that existing 
code does not have to be adapted, nor has to be available nor has to be 
recompiled.

Recently we have been using (and adapting) the frameworks such that we could 
create an entry in the ldta11 (http://ldta.info/tool.html) tool challenge, 
where one has to show how one's tools can be used to create a compiler for the 
Oberon0 language, which is used a a running example in Wirth's compiler 
construction book.

We have uploaded our implementation to hackage at: 
http://hackage.haskell.org/package/oberon0.

More information can be found at the wiki: 
http://www.cs.uu.nl/wiki/bin/view/Center/CoCoCo

You may take a look at the various Gram modules to see how syntax is being 
defined, and at the various Sem modules to see how we use our first class 
attribute grammars to implement the static semantics associated with the 
various tasks of the challenge.

We hope you like it, and comments are welcome,

Marcos Viera
Doaitse Swierstra









_______________________________________________
Haskell mailing list
Haskell@haskell.org
http://www.haskell.org/mailman/listinfo/haskell

Reply via email to