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.