
If you're interested I have a draft implemetation of that paper
https://github.com/polux/abstract-interpreters/blob/master/src/Main.hs in
Haskell that uses monad transformers. There's another one
https://github.com/josefs/AbstractingDefinitionalInterpreters online that
uses effect handlers. The original scheme implementation
https://github.com/plum-umd/abstracting-definitional-interpreters is also
available.
A caveat: while playing with my implementation I found some issue with the
GC as described in the paper and was able to reproduce on the reference
implementation:
https://github.com/plum-umd/abstracting-definitional-interpreters/issues/82.
I'm not knowledgeable enough to understand whether this is a flaw of the
approach or something that can be easily fixed.
Paul
On Thu, Nov 29, 2018 at 3:31 PM Carter Schonwald
Most parser libraries in Haskell provide facilities for including source information.
And then you include in your syntax tree extra fields for those positions.
Simple as that
The paper :
http://david.darais.com/assets/papers/abstracting-definitional-interpreters/... Is a great reference for how to add a bunch of program analysis features after you have a working interpreter . Also it’s citations show a bunch of ways you can Add different flavored of anayses
On Mon, Nov 26, 2018 at 3:37 PM Olaf Klinke
wrote: Hello Olaf,
to me that sounds as if you want to do an abstract interpretation with a forward collecting semantics that employs non-relational abstract domains for the primitive data types and summarizes the dimensions of arrays. ... I would start by writing a simple interpreter for the language to be analyzed. That way you fix messy details before they bite you, e.g. the order in which submodules are loaded and initialized.
I was hoping not having to write an interpreter (because the language author wrote a translation to C++ already), but if that is the way to go, I'll do it. As I understand it, the Haskell semantics should contain just enough substance so that the errors I am after will cause hiccups in the Haskell compiler? That is indeed a compelling approach. What this does not address is the question about error reporting: How could a translation to Haskell preserve information about scope, source position and masking? Can I leverage the ghc API for that?
Regards, Olaf _______________________________________________ Haskell-Cafe mailing list To (un)subscribe, modify options or view archives go to: http://mail.haskell.org/cgi-bin/mailman/listinfo/haskell-cafe Only members subscribed via the mailman list are allowed to post.
_______________________________________________ Haskell-Cafe mailing list To (un)subscribe, modify options or view archives go to: http://mail.haskell.org/cgi-bin/mailman/listinfo/haskell-cafe Only members subscribed via the mailman list are allowed to post.