Skip to content

Source Code Commentary

mdmkolbe edited this page Nov 27, 2013 · 1 revision

The purpose of this document is to describe the structure of the code and help new developers understand how it all hangs together.

Generalized

Except that their are certain external libraries that we distribute with K in the lib/java folder.

Package Structure

Everything is in the org.kframework package.

Initial start up code is in: o.k.main

However that just dispatches to the individual programs which are in the following packages: kagreg/ kast/ kcheck/ kompile/ krun/ ktest/ ktest2/

This leaves the following general utility packages: backend/ compile/ kil/ parser/ utils/

Main

The K framework contains several programs such as kompile, krun and ktest (there are others, but these are the main ones). However, all of these programs are just scripts that call into the k3.jar with different flags to indicate which mode we are running in. All of these programs call org.kframework.main.Main.main(String[]). That function in turn checks dispatches to the real main function for each of these programs depending on the value of the command line argument.

org.kframework.kompile.KompileFrontEnd.kompile(args2); org.kframework.kagreg.KagregFrontEnd.kagreg(args2); org.kframework.kcheck.KCheckFrontEnd.kcheck(args2); org.kframework.ktest.KTest.test(args2); org.kframework.kast.KastFrontEnd.kast(args2); org.kframework.krun.Main.execute_Krun(args2); org.kframework.krun.ioserver.main.MainServer.main(args2); org.kframework.ktest2.KTest.main(args2);

org.kframework.main.Kpp.codeClean(args2); org.kframework.main.KPretty.main(args2);

Other files

FirstStep and LastStep (move to o.k.compile.utils?) OptionsParser (dead?) Kpp (program) KPretty (program)

Kompile

Krun

Ktest

Kagreg

Kcheck

Kast

kioserver

Ktest2

Kpp

KPretty