homoiconicity

A Program written in a language can be manipulated as data using the language.

E.g. macros in scheme allow you to manipulate program source code, and they can be written in scheme programs!