/hffj

An implementation of Feature Featherweight Java (FFJ) using Hephaestus.

Primary LanguageCoq

#FeatherWeight Java Featherweight Java is an implementation of this paper

The aim of this work is to run correct FJ programs.

To get started first import the project with

git clone https://github.com/hephaestus-pl/hffj

Navigate to the project folder cd hffj/src

Then make the project with

make fj

Now you are ready to run a program like:

class Int extends Object{
    Int(){super();}

    Int add(Int rhs){
	return rhs.add(this);
    }
}

class O extends Int{
    O(){super();}

    Int add(Int rhs){
        return rhs;
    }
}

class S extends Int{
    Int num;

    S(Int num){
        super();
        this.num=num;
    }

    Int add(Int rhs){
        return this.num.add(new S(rhs));
    }
    
}
new S(new S(new O())).add(new S(new O()))

Save your program in a file then run

FJ/Main file

You should see it working as expected!

Notice that you can also run in the silent mode with the [-s] directive

FJ/Main -s file