Az Emerald programozási nyelv

Deklaráció

Minden azonosítót - , kivéve a lefoglalt azonosítókat, mert azok egy Emerald programon keresztül
elérhetõk - deklarálni kell.

Két általános formájú deklaráció van: egy a konstansokra és egy a változókra:

Declaration		::=	variableDeclaration
				|constantDeclaration
variableDeclaration	::=   	[ attached ] var identifierList : type [ initializer ]
constantDeclaration	::=	[ attached ] const identifier [ : type ] initializer
identifierList		::=	identifier{ " , " identifier }
initializer		::= 	" " expression

A konstans deklaráció létrehoz egy azonosítót, ami egy szimpla objektumra mutat, annak egész élettartama folyamán. Amíg egy konstans azonosító ugyanarra az objektumra vonatkozik, addig az objektum állapota változhat, ha az módosítható.
A változó azonosító értéke értékadással módosul. Ha van inicializáló utasítás, akkor minden változóhoz a listában hozzárendelõdik az adott kifejezés értéke. Amíg egy változó nincs inicializálva nil az értéke!
Az opcionális attached megengedi a programozónak az egyirányú összekapcsolást objektumok között. Az áthelyezése egy objektumnak automatikusan áthelyezi a többi objektumot, ami ehhez kapcsolva van.

Például a veremnél:

	var myDir : Directory
	attached var aList : linkedList

Ez a kód két változót deklarál: a myDir-t és az aList-et, melyek nevei az absztrakt típusú Directory és linkedList objektumoknak.

A kezdeti értékadások és konstansok értékei a végrehajtások elõtt a leírt sorrendben értékelõdnek ki a blokkban.

Láthatóság

Az Emeraldban a láthatósága az azonosítóknak nagyrészben rendhagyó. Egy azonosító látható abban a részben, amelyikben deklarálva lett, de nem csak azután a sor után, ahol a deklaráció történt.
A következõ konstrukciók új láthatósági köröket nyitnak az azonosítóknak, és az azonosítók implicit beimportálódnak a belsõ körökbe, ahol nincsenek átdefiniálva: