Skip to content

rbonifacio/OBERON-Lang

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

60 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

OBERON-Lang

An implementation of OBERON-0 in C++. Our goal here is to better understand the work of Thomas Reps on data-flow analysis- considering the IDE (Interprecedural Distributive Environments) class of problems. We will also implement an interpreter for the OBERON-0 language and several compilers for translating OBERON-0 into LLVM, JIMPLE, and other high-level languages (like C or Java). In this way, we hope we will also get use to the LLVM and JIMPLE intermediate representations.

Reading list

During the development of OBERON-0, we discussed several references on the field, including

  • Niklaus Wirth. Compiler Construction 2000. Addison-Wesley (1996).

  • Steven Arzt. Static Data Flow Analysis for Android Applications, PhD thesis, Technische Universität Darmstadt, 2016.

  • Thomas Reps, Susan Horwitz, and Mooly Sagiv. 1995. Precise interprocedural dataflow analysis via graph reachability. In Proceedings of the 22nd ACM SIGPLAN-SIGACT symposium on Principles of programming languages (POPL '95). ACM, New York, NY, USA, 49-61. DOI=http://dx.doi.org/10.1145/199448.199462

  • Eric Bodden. 2012. Inter-procedural data-flow analysis with IFDS/IDE and Soot. In Proceedings of the ACM SIGPLAN International Workshop on State of the Art in Java Program analysis (SOAP '12). ACM, New York, NY, USA, 3-8. DOI=http://dx.doi.org/10.1145/2259051.2259052

  • George Balatsouras, Kostas Ferles, George Kastrinis, and Yannis Smaragdakis. 2017. A Datalog model of must-alias analysis. In Proceedings of the 6th ACM SIGPLAN International Workshop on State Of the Art in Program Analysis (SOAP 2017). ACM, New York, NY, USA, 7-12. DOI: https://doi.org/10.1145/3088515.3088517

Building and Testing

Currently, our implementation only depends on google C++ test framework. Please, install it and define an environemnt variable (GTEST_DIR) pointing to the dir that includes the library libgtest.a. For instance, for some OSX distributions, it is located at /usr/local/lib.

The bin/oberon program depends on flex, bison and bnfc.

To compile, just run the command 'make'.

make

Makefile supports parallel execution with the flag -j

make -j

There is a 'clean' command to compile from scratch.

make clean 

To run the test cases, you must build the test driver.

make tester

An then run it.

./bin/tester

About

An implementation of the OBERON-0 Language in C++

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published