Egy Modula-2 azonosító nem üres betûk vagy számjegyek betûvel kezdôdô sorozata. Az ISO szabvány Modula-2-ben az aláhúzásjel betûnek számít. (A nyelv egyes változatai az aláhúzásjelet nem engedik meg.) Azonosítóban nem szerepelhet szóköz és speciális szimbólum sem, mint például a +, -, %, /, $. A kis- és nagybetûk közt különbséget tesz a nyelv. A nyelv tartalmaz ún. standard azonosítokat, ezek nem egy könyvtárból kerülnek importálásra, hanem a nyelvbe beépítettek. Az ilyen azonosítókat teljesen nagybetûkkel írjuk. Egy érdekes, de nem túl szerencsés lehetôség, hogy a standard azonosítókat át is definiálhatjuk, ha kedvünk tartja. A lefoglalt szavak, mint például a BEGIN nem lehetnek azonosítók. Példák:
Ezek helyes azonosítók:
ListaHossz
Ez_is_jo
Ezek nem helyesek:
40Rablo
Ez$Mi
A CARDINAL standard azonosító eredetileg
egy beépített típus neve, most átdefiniáljuk:
VAR CARDINAL : INTEGER;
A sztring literál az egy egyszeres vagy kétszeres idézôjelek közé zárt karaktersorozat. Ha a sztringben elôfordul az egyszeres idézôjel (aposztróf), akkor a sztringet kétszeres idézôjelek közé kell zárni, és ez a fordított eseben is igaz. Egy sztringben nem lehet egyszerre mind a két típusú idézôjelbôl példány, ezen kívül kocsi vissza jelet sem tartalmazhat. Ezeken kívül a sztringliterálokra nincs más megszorítás. Példák:
"Don't stop!"
'Azt mondta, hogy ,,Hello", nem? '
Az ISO Modula-2 sztring literálok közt értelmez egy konkatenáció mûveletet, ezért írhatjuk azt, hogy:
CONST
CR = 15C
LF = 12C;
DOSLineEnd = CR + LF;
strConst = "Szia" + " Kati"
strConst2 = strConst + DOSLineEnd;
A megjegyzés (* és *) közé
zárt karaktersorozat, amely két szimbólum közé
helyezhetô el. Példa:
(* Ez egy megjegyzes *)
Az elôre definiált szavakat nagybetûvel kell írni
és azonosítóként nem használhatók.
A <> helyett használható a # és az
AND
helyett
az &.
Változókat egy modul elején, az utasítások kezdetét jelzô BEGIN kulcsszó elôtt deklarálhatunk. A változók deklarációjában azonosítók listája áll, melyet a típus azonosítója követ. A deklaráció nem biztosít kezdeti értéket a változónak, nekünk kell inicializálnni azt. Az ISO Modula-2-ben egy változódeklarációban megadhatjuk, hogy a memória melyik címén legyen a változó nevéhez rendelt tartalom. (Ehhez elôbb a SYSTEM modulból importálni kell a MAKEADR azonosítót.) A memóriacím konstans érték kell legyen és kapcsos zárójelekben kell a változónév után írni. Példák:
VAR Valtozo1, Valtozo2 : Tipus;
VAR flag [768] : INTEGER;
Az operandusok literálok (szám, karakter, sztring, halmaz) vagy azonosítók (konstans, változó, alprogram) lehetnek. Az azonosító lehet minôsített, szelektor egy rekord mezejére vagy indexelt hivatkozás tömb elemére. Szintaxis:
Minôsített hivatkozás: Modul.Valtozo
Rekord mezeje: Rekord.Mezo
Tömb eleme: Tomb[Index1]...[IndexN] vagy Tomb[Index1,
..., IndexN]
Mutató feloldása: Mutato^
Az aritmetikai operátorok a +, -, *, /, DIV és MOD. A / csak valós, a DIV és MOD csak egész számokra használhatók, míg a többi mindkét félére, de ekkor a operandusok típusainak meg kell egyezniük és az eredmény típusa is ez lesz.
A logikai operátorok a NOT, OR, a AND és az ezzel ekvivalens &. A kiértékelés lusta: ha a kifejezés értéke egyik felének értékébôl már megállapítható, akkor a másik fele ki sem értékelôdik.
A halmazoperátorok a + (unió), - (különbség), * (metszet) és / (szimmetrikus differencia).
A relációoperátorok eredménye mindig logikai típusú. Az ekvivalenciarelációk (=, <> és az ezzel megegyezô értelmû #) használhatók számokra, karakterekre, felsorolási típusokra, halmazokra és mutatókra. A rendezési relációk (<=, >=, <, >) használhatók számokra, karakterekre, felsorolási típusokra és az elsô kettô halmazokra is, ahol a tartalmazási relációt jelölik. Speciális reláció az IN, amely eredménye akkor igaz, ha az elsô operandus eleme a második operandus halmaznak.
Az operátoroknak elôre definiált precedenciája van, ezt zárójelek használatával bírálhatjuk felül. Az azonos precedenciájú mûveletek kiértékelése balról jobbra történik. Példák:
(1 + 1) * 2
((2 * 2) = 5) AND SOMETIMES
Elem IN Halmaz