 			// multiple commands
 			operators[','] = function(...args):* { return args[args.length - 1]; };
 			operators[';'] = operators[',']; // equivalent functionality but must be remembered as a different operator
+			// operators with alphabetic names
+			operators['void'] = function(..._):void { };
+			operators['typeof'] = function(value:*):* { return typeof(value); };
+			operators['as'] = function(a:*, b:*):Object { return a as b; };
+			operators['in'] = function(a:*, b:*):Boolean { return a in b; };
+			operators['is'] = operators['instanceof'] = function(a:*, b:*):Boolean { return a is b; };
 			// assignment operators -- first arg is host object, last arg is new value, remaining args are a chain of property names
 			assignmentOperators['=']    = function(o:*, ...a):* { for (var i:int = 0; i < a.length - 2; i++) o = o[a[i]]; return o[a[i]] =    a[i + 1]; };
 			assignmentOperators['+=']   = function(o:*, ...a):* { for (var i:int = 0; i < a.length - 2; i++) o = o[a[i]]; return o[a[i]] +=   a[i + 1]; };


			// handle operators (find the longest matching operator)
			// this function assumes operators has already been initialized
			if (operators.hasOwnProperty(c))
				for (var opLength:int = MAX_OPERATOR_LENGTH; opLength > 0; opLength--)
					if (operators.hasOwnProperty(c = expression.substr(index, opLength)))
						return c;

			assignmentOperators['&=']   = function(o:*, ...a):* { for (var i:int = 0; i < a.length - 2; i++) o = o[a[i]]; return o[a[i]] &=   a[i + 1]; };
			assignmentOperators['|=']   = function(o:*, ...a):* { for (var i:int = 0; i < a.length - 2; i++) o = o[a[i]]; return o[a[i]] |=   a[i + 1]; };
			assignmentOperators['^=']   = function(o:*, ...a):* { for (var i:int = 0; i < a.length - 2; i++) o = o[a[i]]; return o[a[i]] ^=   a[i + 1]; };
			// special cases: delete, -- and ++ unary operators ignore last parameter
			assignmentOperators['--']   = function(o:*, ...a):* { for (var i:int = 0; i < a.length - 2; i++) o = o[a[i]]; return --o[a[i]]; };
			assignmentOperators['++']   = function(o:*, ...a):* { for (var i:int = 0; i < a.length - 2; i++) o = o[a[i]]; return ++o[a[i]]; };
			assignmentOperators['#--']  = function(o:*, ...a):* { for (var i:int = 0; i < a.length - 2; i++) o = o[a[i]]; return o[a[i]]--; };
			assignmentOperators['#++']  = function(o:*, ...a):* { for (var i:int = 0; i < a.length - 2; i++) o = o[a[i]]; return o[a[i]]++; };
			assignmentOperators['delete'] = function(o:*, ...a):* { for (var i:int = 0; i < a.length - 2; i++) o = o[a[i]]; return delete o[a[i]]; };
			for (var aop:String in assignmentOperators)
				operators[aop] = assignmentOperators[aop];
			
