Recently, open compilers [LKRR92] with compile time MOPs [Chi95] have been proposed to provide reflective capabilities limited to modifications that can be expressed as extensions to the language's standard compiler. Open compilers are essentially compilers that are reified and that can be modified from within the language. A compile time MOP is the protocol provided to the user for implementing modifications. Despite their name, compile time MOPs do not imply in our view that everything is done prior to program execution, but rather leaves the door open to dynamic compilation. In the static behavioral reflection perspective though, they must be limited to static modifications.
|