Compiling and running Jif programs

Jif programs can be compiled through the use of the script jifc, which was created in the $JIF/bin directory during installation (see the README). Information on the usage of jifc can be obtained by executing jifc --help:

$ $JIF/bin/jifc --help
usage: jifc [options] <source-file>.jif ...
where [options] includes:
  @<file>                  read options from <file>
  -d <directory>           output directory
  -assert                  recognize the assert keyword
  -sourcepath <path>       source path
  -bootclasspath <path>    path for bootstrap class files
  -ext <extension>         use language extension
  -extclass <ext-class>    use language extension
  -fqcn                    use fully-qualified class names
  -sx <ext>                set source extension
  -ox <ext>                set output extension
  -errors <num>            set the maximum number of errors
  -w <num>                 set the maximum width of the .java output files
  -dump <pass>             dump the ast after pass <pass>
  -print <pass>            pretty-print the ast after pass <pass>
  -disable <pass>          disable pass <pass>
  -noserial                disable class serialization
  -nooutput                delete output files after compilation
  -c                       compile only to .java
  -post <compiler>         run javac-like compiler after translation
  -v -verbose              print verbose debugging information
  -report <topic>=<level>  print verbose debugging information about topic
                           at specified verbosity
        Allowed topics: imports, jl, serialize, types, frontend, time,
        resolver, cfg, visit, dataflow, debug, errors, context, loader,
        verbose, qq
  -version                 print version info
  -h                       print this message
  -e -explain              provide more detailed explanations of failed
                           label checking.
  -debug <n>               set debug level to n. Prints more information
                           about labels.
  -stop_constraint <n>     halt when the nth constraint is added
  -globalsolve             infer label variables globally (default: per
                           class)
  -sigcp <path>            path for Jif signatures (e.g. for
                           java.lang.Object)
  -rtcp <path>             path for Jif runtime classes

The script jifc sets a number of the class path options by default. In particular:

where $JIF is the installation directory of this distribution.

Running jif programs

Jif programs can be run through the use of the script jif, which was created in the $JIF/bin directory during installation (see the README).

The script jif automatically extends the classpath to include $JIF/rt-classes, $JIF/lib/jifrt.jar, $JIF/lib-classes and $JIF/lib/jiflib.jar. You will probably need to extend the classpath so that your compiled Jif classes will be found.