 
 			/** operators **/
 			// first, make sure all special characters are defined as operators whether or not they have functions associated with them
-			var specialChars:String = "~!#%^&*()-+=[{]}\\;:'\",<.>/?";
+			var specialChars:String = "`~!#%^&*()-+=[{]}\\|;:'\",<.>/?";
 			for (var i:int = 0; i < specialChars.length; i++)
 				operators[specialChars.charAt(i)] = true;
 			// now define the functions

{
	import flash.system.ApplicationDomain;
	import flash.utils.Dictionary;
	import flash.utils.describeType;
	import flash.utils.getDefinitionByName;
	import flash.utils.getQualifiedClassName;
	

			{
				// find first closing bracket or '.'
				for (close = 0; close < tokens.length; close++)
					if ('..])}'.indexOf(tokens[close]) >= 0)
						break;
				if (close == tokens.length || close == 0)
					break; // possible error, or no operator found
				// work backwards to the preceeding opening bracket or stop if '.'
				for (open = close; open >= 0; open--)
					if ('..[({'.indexOf(tokens[open]) >= 0)
						break;
				if (open < 0 || open + 1 == tokens.length)
					break; // possible error, or no operator found
				
				// unless it's an operator, compile the token to the left
				token = open > 0 ? tokens[open - 1] : null;
