Raymond Smullyan has written a good deal about
self-reference. He has developed a remarkably
simple method of getting self-reference in a
formal system that permits quotation. The following
version is derived from his
Diagonalization and Self-Reference.

For any string `X`, say that the *quotation* of `X`, written `*X`,
*denotes*
`X`. Further,
for any strings `X` and `Y`, if
`X` denotes `Y`, say that `AX`
denotes the *associate* of `X`, which
is `X*X`.

Consider the string `A*A`. What does it denote?
Well, `*A` denotes `A`, so `A*A`
denotes the associate of `A`---which is `A*A`
itself. So `A*A` is a self-referential string
in this system.