Homoiconicity
In computer programming, homoiconicity is a property of some programming languages, in which the primary representation of programs is also a data structure in a primitive type of the language itself.
Languages which are considered to be homoiconic include most members of the Lisp family, Prolog, REBOL, SNOBOL, XSLT, TRAC, Tcl and Io.
One advantage of homoiconicity is that extending the language with new concepts typically becomes simpler, as data representing code can be passed between the meta and base layer of the program. A typical demonstration of homoiconicity is the metacircular interpreter.