Jak bylo řečeno výše, omezením jazyka A je, že počátky bloků musí být v souboru uspořádany vzestupně.
Proto byl navrhnut jazyk JA, který je jakýmsi přerovnávačem bloků jazyka A.
Základní stavební jednotkou je časový blok (dále jen blok). Bloky je možné vnořovat. Blok má počátek a délku trvání.
t + dt TĚLO_BLOKU
/
Blok má počátek v čase t od počátku nadbloku a délka jeho trvání je dt. Pokud není uvedené t, blok začíná v čase, kdy skončil předcházející blok, pokud není uvedeno dt, má blok délku 0 .
TĚLO_BLOKU
může mít jeden z těchto dvou tvarů:
{ seznam_podbloků }
[ fce_jazyka_a ]
Přerovnávač spočítá počátky všech atomických bloků, setřídí je.
Mimo bloky lze v přerovnáváči mít úseky, které se beze změn vloží do výsledného .a souboru. To je výhodné pro definice a deklarace objektů scény. Zkrátka pro ``věci'' globální, nezávislé na čase.
Zkopírovano bude to co bude uzavřeno mezi %{
a `%}
.
(podobně jako ve flexu či bisonu).
Příklad:
%{ ; kód v A, který bude beze změn zkopírován do .a %}