Imperative Language definition: IL ================================== Our build chain has a small compiler that compiles `il.metal` into `tablesil.c` and into `ILLang.java` `cd ` `./gradlew illang` This directory defines a utility tool that builds the Java "tables" for our language IL automatically from the central definition of IL. The central definition of IL is basically the il.metal file in .. i.e.: `/src/il/il.metal` The metal compiler has taken care of creating the "formalism" IL into: `/src/il/formalism.java` The tool in this directory restarts from this "formalism.java" and creates either: * ILLang.java which is the description of IL used by the Java code of Tapenade. It should be placed in `/build/generated-src/il/main/fr/inria/tapenade/utils/ILLang.java` * tablesil.c which is the description of IL used by C code such as the x2il.ttml translators (e.g. \/src/frontf/f2il.ttml or \/src/frontCPP/clang2il.ttml). It should be placed in `/build/generated-src/c/main/front/tablesil.c` This tool works by 1) first copy and slightly simplify formalism.java into temporary Formalism.java, which can be read as a standalone java class, 2) then compile this Formalism.java together with local "dummy" classes that define the basic concepts (operator, phylum...) and a main class that does the needed translation work, 3) then run the resulting java class to produce he required table file. 4) finally erase the temporary Formalism.java.