This repository is a relic from OOPSLA's 2018 BioScript publication. This work has been deprecated and is reflected in the following repos: https://github.com/lilott8/BioScript-Front-end
This is an SSA/SSI compiler for BioScript. It implements the ChemType type system.
- ChemLibrary:
- Download and build the artifact: https://github.com/lilott8/ChemLibrary
- In the
project structure->modules
window, add a newJARS or directories...
dependency and add thechemlibrary.jar
to it forcompile
- ChemTrails:
- Download and build the artifact: https://github.com/lilott8/ChemTrails
- In the
project structure->modules
window, add a newJARS or directories...
dependency and add thechemtrails.jar
to it forcompile
- Installation of Z3 dependency:
- Install z3 from:
source
: https://github.com/Z3Prover/z3 or frombinary
: https://github.com/Z3Prover/z3/releases (preferred binary) - In the
project structure->modules
window, add a newJARS or directories...
dependency and add thecom.microsoft.z3.jar
to it forcompile
- In the
run configuration
editor add an environment variable:DYLD_LIBRARY_PATH
with the path:/path/to/z3/*.dylib
files,
- Install z3 from:
This is the minimum requirements to run the chemical compiler.
Chemical compilation.Compiler uses log4j for logging, so may provide a log4j xml config by: -Dlog4j.configurationFile=/path/to/xml
We provide a basic one for you in: src/main/resources/log4j.xml
The basic command line usage:
- -c/-compile [file/to/compile.json]
- -p/-phase [comma delimited list of phases to run]
- current support:
- typesystem
- current support:
- -o/-output [path/to/output/dir]
- -t/-translator [comma delimited list of translators]*
- current support:
- mfsim
- typesystem
- current support:
- -ssi [run the ssi algorithm]
- -ts {error/warn/none} will set the level with which the type system will validate correctness.
*if using a translator, you must provide an output directory.
A phase is a clearly defined process in which the compiler will run. These are discrete and independent, e.g., Parsing
, Data Flow Analysis
.
A step is a number of actions a phase may take to complete. Within the Parsing
phase, the parser handles lexical analysis
, type typesystem
, I.R. transformation
, etc.