On Aug 19, 2012, at 10:40 , Heinrich Apfelmus <apfel...@quantentunnel.de> wrote:

> Doaitse Swierstra wrote:
>> 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 individually. In this
>> way one can gradually ``grow a language'' in a large number of small
>> steps. The technique replaces things like macro extensions or
>> Template Haskell; it has become feasible 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,
> 
> Awesome!
> 
> I have a small question: Last I remember, you've mainly been using your UUAGC 
> preprocessor to write attribute grammars in Haskell, especially for UHC. Now 
> that you have first-class attribute grammars in Haskell ("achievement 
> unlocked"), what do you intend to do with the preprocessor? How do these two 
> approaches compare at the moment and where would you like to take them?
> 
> 
> Best regards,
> Heinrich Apfelmus

On the page http://www.cs.uu.nl/wiki/bin/view/Center/CoCoCo there is a link 
(http://www.fing.edu.uy/~mviera/papers/VSM12.pdf) to a paper we presented at 
LDTA (one of the ETAPS events) this spring. It explains how UUAGC can be used 
to generate first class compiler modules. 

We have also a facility for grouping attributes, so one can trade flexibility 
for speed. The first class approach stores list of attributes as nested 
cartesian products, access to which a clever compiler might be able to 
optimize. This however would correspond  a form of specialisation, so you can 
hardly say that we have really independent modules; as always global 
optimisation is never compositional). From the point of view of the first class 
approach such grouped non-termionals are seen as a single composite 
non-terminal. 

   Doaitse

 
> 
> --
> http://apfelmus.nfshost.com
> 
> 
> _______________________________________________
> Haskell mailing list
> Haskell@haskell.org
> http://www.haskell.org/mailman/listinfo/haskell


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

Reply via email to