 			}
 			
 			// next step: compile unary '#' operators
-			if (operators['#'])
+			if (operators.hasOwnProperty('#'))
 				compileUnaryOperators(tokens, ['#']);
 			
 			// next step: compile statements
-			compileStatements(tokens);
+			//compileStatements(tokens);
+			
+			compilePostfixOperators(tokens, ['--', '++']);
 			
 			// next step: compile infix '**' operators
 			compileInfixOperators(tokens, ['**']);

		private static const STATEMENT_IF:String = 'if';
		private static const STATEMENT_ELSE:String = 'else';
		private static const STATEMENT_FOR:String = 'for';
		private static const STATEMENT_DO:String = 'do';
		private static const STATEMENT_WHILE:String = 'while';
		private static const STATEMENT_RETURN:String = 'return';

			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: -- 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]]++; };
			for (var aop:String in assignmentOperators)
				operators[aop] = assignmentOperators[aop];
			
