Az OMG IDL forrásfájlok ASCII karaktereket tartalmazhatnak. A string és karakter literálok ISO Latin-1 (8859.1) karakterek lehetnek (betűk, számjegyek, grafikus karakterek, a szóköz-karakter és a formázó karakterek).
Előfeldolgozás után áll elő a tulajdonképpeni fordítási egység. Egy fordítási egység a következő lexikális elemeket (tokeneket) tartalmazhatja: azonosítók, kulcsszavak, literálok, operátorok, és elválasztó jelek ("white space"). Az elemző szempontjából egy token a leghosszabb olyan karaktersorozat, ami még lehet egy token.
A C++-ból ismert kommentek használhatók. A "/*" és "*/" közé zárt, valamint a "//" után a sor végéig a karakterek kommentet képeznek. A "/*..*/" típusú kommentek nem egymásba ágyazhatók. A "/*..*/"-en belül a "//", valamint a "//" mögött az "/*", "*/", és "//" jelentése megszűnik (egyszerű karakterekként kerülnek feldolgozásra). Egy kommentben alfabetikus, számjegy, grafikus, szóköz, vízszintes és függőleges tabulátor, pozícionáló és újsor karakterek lehetnek.
Egy azonosító tetszőleges hosszú sorozata lehet az ASCII alfabetikus, a számjegy, és az alulvonás ("_") karaktereknek. Minden karakter számít. Egy azonosító első karaktere ASCII alfabetikus karakter kell legyen.
Névütközés van ha különböző dolgokat ugyanazzal a névvel látunk el. A névütközések fordítási hibát generálnak. Az ütközések ellenőrzésénél a kis és nagy betűk között az OMG IDL nem tesz különbséget, de egy specifikáción belül ugyanazt (a kis és nagy betűket tekintve) csak azonosan módon szabad írni.
Minden hatókörben egyetlen névtér létezik (pl. egy konstans és egy interfész neve nem lehet ugyanaz). Kulcsszavak nem használhatók azonosítóként, kivéve ha egy alulvonást "_" teszünk eléjük. Ezeket ún. "escaped identifier"-eknek ismeri az OMD IDL specifikáció. Ezek arra (és csak arra) szolgálnak, hogy az IDL későbbi verzióiban esetlegesen megjelenő kulcsszavak és a már meglevő programok névütközéseit könnyen fel lehessen oldani. Ettől eltérő használata nem ajánlott.
Az alábbi azonosítók kulcsszavaknak fenntartott szavak amelyek semmilyen más célra nem használhatóak. (Kivéve ha "escaped identifier"-ként használják őket.)
abstract | exception | inout | provides | truncatable |
any | emits | interface | public | typedef |
attribute | enum | local | publishes | typeid |
boolean | eventtype | long | raises | typeprefix |
case | factory | module | readonly | unsigned |
char | FALSE | multiple | setraises | union |
component | finder | native | sequence | uses |
const | fixed | Object | short | ValueBase |
consumes | float | octet | string | valuetype |
context | getraises | oneway | struct | void |
custom | home | out | supports | wchar |
default | import | primarykey | switch | wstring |
double | in | private | TRUE |
Az OMG IDL a következő literál típusokat ismeri: egész szám literálok, karakter literálok, lebegőpontos szám literálok, string literálok, fixpontos szám literálok.
Minden számjegyekből álló sorozat decimális (tízes alapú) egész számnak felel meg, kivéve, ha nullával kezdődik. Ekkor oktális (nyolcas alapú) számot jelöl. Egy oktális számban 8-as és 9-es számjegy nem szerepelhet. Ha a számjegyeket "0x" vagy "0X" előzi meg akkor hexadecimális (tizenhatos alapú) számként kerül értelmezésre. Ekkor az "a-f" és az "A-F" karakterek is használhatók. Ezek jelölik a számjegyeket tíztől tizenötig.
Egyszerű idézőjelek közé zárt egy vagy több jel (pl. 'x'). A karakter literálok char típusú konstansok. Minden karakterhez egy 0 és 255 közötti érték tartozik az ISO Latin-1 (8859.1) szabványnak megfelelően.
A nem-grafikus karakterek váltószekvenciákkal adhatók meg az alábbi táblázat szerint.
Leírás | váltószekvencia |
újsor | \n |
vízszintes tabulátor | \t |
függőleges tabulátor | \v |
visszatörlés | \b |
kocsi vissza | \r |
pozícionáló | \f |
figyelmeztetés | \a |
fordított per | \\ |
kérdőjel | \? |
egyszerű idézőjel | \' |
dupla idézőjel | \" |
oktális szám | \ooo |
hexadecimális szám | \xhh |
unikód karakter | \uhhhh |
A hagyományos karakter literálok mellett az OMG IDL ismeri a széles karakter literálokat is (wchar). Egy széles karakter literált egy bevezető L betű jelez (pl. L'X'). A váltószekvenciás unikód karakterek csak széles karakter literálokban szerepelhetnek.
Széles karakter literált nem-széles karakter típusú konstansnak vagy nem-széles karakter literált széles karakter típusú konstansnak értékül adva fordítási hiba generálódik.
A lebegőpontos számok egy egész részből, egy decimális pontból, egy törtrészből, egy "e" vagy "E" betűből, és egy opcionális előjeles egész exponensből állnak. Az egész és a törtrész egy-egy decimális szám. Az egész és a törtrész hiányozhat, de nem egyszerre. A decimális pont és a záró "e" vagy "E" betű és az exponens hiányozhat, de nem egyszerre.
A string lietrálok dupla idézőjelek közötti karakterek sorozata. Típusuk string. Egymás melletti stringek összefűződnek. A duplaidézőjelet stringen belül meg kell előzzön egy "\" jel. Egy string literál nem tartalmazhatja a '\0' karaktert. Széles string literálokat (wstring) egy L betű vezet be (pl. L"Hello"). Széles string literált nem-széles string típusú konstansnak vagy nem-széles string literált széles string típusú konstansnak értékül adva fordítási hiba generálódik.
A fixpontos számok egy egész részből, egy decimális pontból, egy törtrészből, és egy "d" vagy "D" betűből állnak. Az egész és a törtrész egy-egy decimális szám. Az egész és a törtrész hiányozhat, de nem egyszerre. A decimális pont hiányozhat, de a záró "d" vagy "D" betű nem hiányozhat.