Home - acieroid/scala-am GitHub Wiki
Scala-AM is a static analysis framework that focuses on modularity. It is composed of multiple components that can each be redefined and plugged together to form new static analyses. The two main components are the machine abstraction and the semantics:
- The semantics define how a program has to be evaluated, in a small-step
operational semantics fashion. It has to account for abstract values, i.e.,
values used in the program may not be concrete: instead of concrete values
such as
1
and"foo"
, you have to work with values such asInt
or[0-10]
, andString
or{f,o}
- The machine abstraction defines how to use the semantics to compute a program in an abstract manner, and how to model the stack.
This wiki contains a examples of analysis built using Scala-AM:
- Unbound Variables in Lambda Calculus shows how to define semantics for a new language and how to build an analysis that detect accesses to unbound variables
- Static Taint Analysis shows how to extend semantics provided with the framework to build a non-trivial analysis, and how to provide new lattice implementations.