Mercury-ban a tokenek gyakorlatilag ugyanazok, mint az ISO Prolog-ban, csupán kettő esetén van különbség: a # sor
token esetében, ami sorszám direktívaként használatos, valamint a fordított idézőjel (`,
backquote) token esetében.
A következőkben szerepelnek a különböző tokenek, melyek whitespace-ekkel vagy sorszám direktívákkal választhatóak el egymástól.
#
karakterből, egy pozitív egész számból (mely a sor számát határozza meg), valamint egy újsor karakterből áll. Egy #sor
direktíva egyetlen szerepe, hogy pontosabban maghatározza egy adott sor számát, egyébként minden más esetben figyelmen kívül van hagyja a fordító. Egy sorszámdirektíva bárhol előfordulhat, ahol egy token állhat. A direktíva a pragma source_file
deklarációval együtt használatos annak jelzésére, hogy az ezután található Mercury kódot egy másik eszköz generálta; arra szolgálnak, hogy a Mercury kód minden egyes sorát összekapcsoljuk az erediti forrással, és az eredeti forrás egy sorával, melyből az adott Mercury kód származik. így a Mercury fordító képes informatívabb hibaüzeneteket adni az eredeti forráskód felhasználásával. Egy #sor
direktíva a közvetlenül utána álló sor sorszámát határozza meg. Az ez után álló sorok sorszáma a szokásos módon növekszik, azaz például egy #100
direktíva után álló második sor sorszáma 101 lesz. ",
double quotes) között. Egy adott sztringen belül két szomszédos dupla idézőjel egyetlen dupla idézőjelet jelent, pédául a """"
sztring hossza egy, és egyetlen dupla idézőjelet tartalmaz: a külső dupla idézőjelpár a sztring határolójelei, és a belső idézőjelpár jelöli az egyetlen dupla idézőjelet. Sztringek tartalmazhatnak escape-szekvenciákat is: a \a
jelenti a "risztás" (sípoló) karaktert, \b
a backspace-t, \r
a kocsi-vissza karaktert, \f
a lapdobást, \t
a tabot, \n
az újsor karaktert, \v
a vertikális tabot. Egy \
után lévő visszaper, idézőjel és duplaidézőjel magát az adott karaktert jelenti. A \x
karaktersorozat hexadecimális escape-karaktert vezet be; ezt hexadecimális számjegyek sorozatának és egy lezáró visszaperjelnek kell követnie. Ez helyettesítésre kerül azzal a karakterrel, melynek a karakter-kódja a hexadecimális számban azonosításra került. Hasonlóan, a visszaperjel után álló oktális számjegy egy oktális escape-karaktert vezet be; hasonlóan a hexadecimális esethez, az oktális számjegyek sorozatát egy lezáró visszaperjellel kell befejezni. Egy olyan visszaperjel karakter, amelyet azonnal egy újsor karakter követ, törlésre kerül; így ez a két karakter használható arra, hogy folytassunk egy sztringet több mint egy forrás-soron keresztül. (A sztring literálok szintén tartalmazhatnak beágyazott újsor karaktereket.)
. Idézőjeles nevekben két szomszédos idézőjel egyetlen idézőjelet jelöl. Az idézőjeles nevek szintén tartalmazhatnak escape-karaktereket, a sztringekkel megegyező módon.
. Ráadásul az aláhúzásjellel kezdődő változókról feltételezzük, hogy "lényegtelen" változók; a Mercury fordító figyelmeztet, ha olyan változót talál, ami csupán egyszer szerepel és nem aláhúzásjellel kezdődik, vagy ha egy aláhúzásjellel kezdő változó többször is előfordul egy érvényességi tartományon belül.0b,
melyet bináris számjegyek tetszőleges sorozata követ. Egy oktális literál 0o
-val kezdődő, tetszőleges oktális számjegyeket tartalmazó kifejezés. A hexadecimális literálok 0x
-val kezdődnek és tetszőleges hexadecimális számjegyek sorozatából állnak. A karakter-kód literál egy 0'
, melyet egyetlen tetszőleges karakter követ. E
betűből és egy másik tetszőleges számjegysorozatból (az exponensből) áll. A törtrész vagy az exponens elhagyható (egyszerre mindkettő nem).(
, amit nem előzhetnek meg whitespace-ek.(
, amit megelőzhetnek whitespace-ek.)
.[
.]
.{
.}
.|
karakter.,
..
.