A meta-object protocol (MOP) is an interpreter of the semantics of a program that is open and extensible.

MOP stand for meta-object protocol.

A MOP determines what a program means and what its behavior is. It is extensible in that a programmer (or meta-programmer) can alter program behavior by extending parts of the MOP.

The MOP exposes some or all internal structure of the interpreter to the programmer.

The MOP may manifest as a set of classes and methods that allow a program to inspect the state of the supporting system and alter its behavior.

MOP's are implemented as object-oriented programs where all objects are meta-objects.