The language has not seen much adoption outside the Sable team.
Example
Consider the following piece of Java code.
public MyClass implements MyInterface extends MySupperClass { int MyField; void MyMethod (double x, double y) { double z; z = x + y; this.MyField = z } }
This piece can be expressed in the language, as follows:
<jil> <class name="MyClass" extends="MySupperClass"> <modifiers><modifier name="public" /></modifiers> <interfaces><interface name="myinterface" /></interfaces> <fields> <field name="MyField" type="int" /> </fields> <methods> <method name="MyMethod" returntype="void"> <parameters> <parameter name="x" type="double" /> <parameter name="y" type="double" /> </parameters> <locals> <local name="z" type="double" /> </locals> <statements> <!-- Each statement is expressed by some intermediate format for code generator like three address code. In the below a language called baf is used. --> <baf> <![CDATA[ $r2 = $r0 + $r1; this.MyField = (double) $r2; ]]> <!-- Here, we are assuming x is expressed as $r0, y $r1 and z $r2. </baf> </statements> </method> </methods> </class> </jil>
A variation in the meaning of this term, is those languages used as an intermediatelanguage by some high-level programming languages which do not output object or machine code, but output the intermediatelanguage only, to submit to a compiler for such language, which then outputs finished object or machine code.
Languages used for this fall in complexity between high-level languages and low-level languages, such as assembly languages.
C is used as an intermediatelanguage by numerous programming languages including Eiffel, Sather, and Esterel.