Experimental implementation of k-CFA and Pushdown k-CFA with optional Abstract Garbage Collection for LambdaJS and a subset of Scheme programming language
Scala Scheme JavaScript
Switch branches/tags
Nothing to show
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Failed to load latest commit information.


Project structure:

benchmarks -- a set of Scheme programs to test the analysis runner

lib -- necessary libraries: Scala SDK, compiler and ScalaTest

src -- source files

test -- Test suites, run by ScalaTest utility via ant script

build.xml -- Ant script


As of November 2015, this project has moved to the BSD licence.


Use following commands to compile and test the project via Ant (in the project root directory):

ant all           -- compiles the project from scratch, builds the JAR file and zipped sources

ant zip.project   -- Packs all source files into the ZIP archive artifacts/reachability.zip

ant compile       -- compile the project (incrementally)

ant run.tests     -- Run ScalaTest suite

ant jar           -- build an executable jar (Scala SDK included) and puts it into ./artifacts/

ant jar.no.scala  -- build an executable jar (without Scala SDK) and puts it into ./artifacts/

You can also compile it via IntelliJ IDEA 15 (with the Scala 2.9 libraries from ./lib).

How to run:

-- for a compiled project
scala -cp ./out/production/reachability org.ucombinator.cfa.RunCFA [options] fileName

-- for an executable jar with Scala SDK included
java -jar artifactsGenericCFA.jar org.ucombinator.cfa.RunCFA [options] fileName

-- for an executable jar with NO Scala SDK included
scala -cp artifacts/GenericCFANoScala.jar org.ucombinator.cfa.RunCFA [options] fileName


Implementation insights:

Grep for the tag (REMARK) in the code for some non-obvious insights.