INTERCAL - Compiler Language With No Pronounceable Acronym

Típusok; Kifejezések

Típusok; Kifejezések


Típusok

Az INTERCAL kizárólag 16- és 32-bites, előjel nélküli egészeket használ. Az ilyen típusú változókra egy ponttal (16-bites) vagy kettősponttal (32-bites) és egy 1 és 65535 közötti számmal hivatkozhatunk. A .1 és a :1 két teljesen független változó. 16 bites kifejezést mindig használhatunk egy 32 bites érték helyén, fordítva csak akkor, ha a kifejezés értéke beleesik az [1..65535] intervallumba. Ha ez nem teljesül, futásidejű hiba lép fel.

Tömbök

A tömbökre hasonlóan hivatkozhatunk mint az egyszerû változókra, csak a típusukat egy vesszõ vagy pontosvesszõ jelzi. Lehetnek többdimenziósak. Használat elõtt létre kell hozni õket:

 DO <tömb> <- <méret_1> [BY <méret_2>] ... 
A tömböket kizárólag elemenként érhetjük el
 <tömb> SUB <index_1> [<index_2>] ...  
formában, egyben értékadás nincs (de lásd fejlett IO). Az indexelés 1-gyel kezdõdik. A tömböket át lehet méretezni, ekkor a korábbi tartalmuk elvész.


Kifejezések

Az operátoroknak nincs precedenciája, minden kifejezést egyértelmûen zárójelezni kell. Erre aposztróf- vagy idézõjelpár használható.

Unáris operátorok:

& (és),V (vagy),? (kizáró vagy)
Az operandust egy bittel jobbra forgatja, majd összeéseli (vagyolja, kizáró vagyolja) az eredeti értékkel. '&#6' = #2

Bináris operátorok:

$ (összefésülés)
Két 16 bites számot bitenként összefésül. #65535$#0 = 101010...10 #0$#65535 = 010101...01
~ (kiválasztás)
A baloldali operandusból kiválasztja és jobbra tömöríti azokat a biteket, ahol a jobboldali operandusban 1 áll. Például a #179~#201 (binárisan 10110011~11001001) kiválasztja a hetedik, hatodik, harmadik és nulladik bitet, így az eredmény 1001 = #9. Az INTERCAL-72 úgy definiálta a kiválasztást, hogy a visszatérési érték 16 bites, ha legfeljebb 16 bitet választunk ki, különben 32 bites. A C-INTERCAL-nál az eredmény típusa megegyezik a jobboldali operanduséval, ezzel erõsen típusossá vált a nyelv.