Az Emerald programozási nyelv

Kifejezések

Literál és Azonosító Kifejezések

	expression	::=	literal
			|	constantIfentifier
			|	variableIdentifier

Operátor Kifejezések

Az Emerald operátor precedencia táblázata:
Precedencia Level	Operator	Mûvelet
-----------------	--------	-------
	1		view-as		objektum mûveletek kibõvitett nézete		
			restrict-to	objektum mûveletek korlátozott nézete
	2		|		logikai vagy
			or		logikai feltételes vagy
	3		&		logikai és
			and		logikai feltételes és
	4		!		logikai negáció
	5		==, !==		object azonosság és különbség
			o>		típus hasonlóság
			=,!=,<,<=,>,>=	relációs mûveletek
	6		+, -		additiv operátorok		
	7		*, /		multiplikativ operátorok
			#		modulus
			user-defined
	8		-, ~		aritmetikai negáció
			isfixed		ellenõrzi, hogy egy objektum node-hoz van-e kötve
			locate		az operandus lehetséges helyét keresi
			awaiting	a prcessek a feltétel teljesülésére várnak
			nameof		egy objektum neve
			typeof		egy objektum típusa

Relációs Operátorok

	expression	::= expression relop expression | ...
	relop		::=	"="	|	"!="	|	"<"	|
				"<="	|	">="	|	">"	|
				"=="	|	"!=="	|	"o>"

Atirmetikai operátorok

	expression	::= expression arithop expression | ...
	arithop		::=	"+"	|	"-"	|	"*"	|
				"/"	|	"#"

Boolean operátorok

	expression	::= "~" expression |
			    expression binbooleanop expression | ...
	binbooleanop	::=	"|"	|	"&"	|	or	|		and

Location-related operátorok

	expression	::=	locate expression
			|	isfixed expression

Egyéb kifejezések

	expression	:==	awaiting expression
			|	view expression as typeDenotation
			|	restrict expression to typeDenotation
			|	expression $ fieldIdentifier
			|	expression . enumIdentifier
			|	objectConstructor
			|	functionInvocation
			|	nameofexpression
			|	typeofexpression