if (!(expr.mIsLeaf && expr.mLeafArg.getType() == Argument.VARIABLE)) throw new MapyrusException(p.getCurrentFilenameAndLineNumber() + ": " + MapyrusMessages.get(MapyrusMessages.VARIABLE_EXPECTED));
if (expr.mIsLeaf) { if (expr.mLeafArg.getType() != Argument.VARIABLE) { throw new MapyrusException(p.getCurrentFilenameAndLineNumber() + ": " + MapyrusMessages.get(MapyrusMessages.VARIABLE_EXPECTED)); } } else { if (expr.mOperation != HASHMAP_REFERENCE) { throw new MapyrusException(p.getCurrentFilenameAndLineNumber() + ": " + MapyrusMessages.get(MapyrusMessages.VARIABLE_EXPECTED)); } }
	private ExpressionTreeNode parseAssignment(Preprocessor p)		throws IOException, MapyrusException	{		ExpressionTreeNode expr, value;		int op1, op2;		expr = parseComparison(p);		while (true)		{			/*			 * If next character is '=' then we have an assignment			 * to a variable.			 */			op1 = p.readNonSpace();			if (op1 == '=')			{				op2 = p.read();				if (op2 != '=')				{					/*					 * Check that lefthandside of an assignment is a variable name.					 */					if (!(expr.mIsLeaf && expr.mLeafArg.getType() == Argument.VARIABLE))						throw new MapyrusException(p.getCurrentFilenameAndLineNumber() + ": " +							MapyrusMessages.get(MapyrusMessages.VARIABLE_EXPECTED));					value = parseAssignment(p);					expr = new ExpressionTreeNode(expr, ASSIGN_OPERATION, value);				}				else				{					p.unread(op2);					p.unread(op1);					break;				}			}			else							{				p.unread(op1);				break;			}		}		return(expr);	}