The assignment statement is made up of three parts:
- The target, or lvalue.
- The assignment operator.
- The value to be assigned, or rvalue.
The rvalue can be a constant or an expression that returns a value of the correct (or not necessarily correct, in some languages) type. The requirement is that the value to be assigned itself forms a valid rvalue under the rules of the specific language.
As you point out, some languages make an assignment statement return the assigned value. C, C++, C#, Java, and a whole slew of others do it that way, some with restrictions. This is a potentially dangerous practice, but it is an incredibly useful shorthand notation in the hands of those who know how to use it. As we know, that means people will misuse it, either deliberately or because they don't understand the finer details of the syntax involved. The technical way to express this is that the assignment statement does form a rvalue.
So some other languages make assignment statements valid only as stand-alone statements, and dictate that the assignment operator is only valid inside a valid assignment statement. In other words, in these languages a complete assignment statement is not a valid rvalue.
Both are valid ways to design a language, depending on one's goals. Always keep in mind that C was designed to be able to do basically anything assembly language can do, only in a portable and preferably more readable fashion, and many C-like languages derive many features directly from C, even if the syntax is slightly different. Ada on the other hand was designed to make it extremely hard to write programs that do anything but exactly what is expected.
It follows from the above reasoning that
= in C, C++, C#, Java, ...;
:= in Pascal, Ada, ...; and so on, can all properly be called the assignment operator, which forms one part of a complete assignment statement. Whether a complete assignment statement forms a valid rvalue is a different matter and really has nothing to do with the status of the character sequence as such which is used to indicate assignment to a lvalue.