scala-am
scala-am copied to clipboard
(Abstract) Abstract Machine Experiments using Scala
Primitive values in the abstract interpreter are currently just implemented as Scala `objects`s (cf. `scalaam.language.scheme.primitives.SchemeLatticePrimitives`). As a result, the same primitive will get a different hash code on different runs...
Currently, Scala-AM contains a lot of different classes and traits, representing values, environments, pointers, ... (Almost) all of these classes implement a toString method, allowing structured output (e.g. a lambda...
The Scheme parser cannot fully parse - test/WeiChenRompf2019/toplas98/lattice.scm - test/WeiChenRompf2019/toplas98/lattice-processed.scm for a yet unknown reason. Also note that the benchmarks use an unknown identifier `void`, but this cannot be the...
The Scheme parser fails when a file ends on a comment.
Currently, when the Scheme parser fails, a fixed error message is displayed. However, the parser may fail due to multiple reasons. In every case, the same error is thrown. This...
Currently only simple benchmarks are used for soundness tests. Enabling all of the benchmarks results in the tests failing, due to memory usage. It is easy to enable them back...
Similar to the new representation of cons-cells, the representation of vectors in Scheme should be modified. Currently, in `ModularSchemeLattice.scala`, a vector and all its elements are represented as a single...
The soundness tests can be improved by checking the entire store of the analysis against the store of the concrete interpreter, similar to what we already do for the precision...
The concrete Scheme interpreter is currently written in a recursive style. This however causes stackoverflow errors on some benchmarks, meaning they cannot be used for testing.