important because it must be possible to easily process extensible programs in a variety of ways. It is unacceptable for the only uses of source language input to be editing, viewing and translation to machine code. The arbitrary processing of programs is facilitated by de-coupling the source input from specifications of how it should be processed (formatted, stored, displayed, edited, etc.). Source language debugging support Extensible programming systems must support the debugging of programs using the constructs of the original source language regardless of the extensions or transformation the program has undergone in order to make it executable. Most notably, it cannot be assumed that the only way to display runtime data is in structures or arrays. The debugger, or more correctly 'program inspector', must permit the display of runtime data in forms suitable to the source language. For example, if the language supports a data structure for a business process or work flow, it must be possible for the debugger to display that data structure as a fishbone chart or other form provided by a plugin. Examples Camlp4 Felix Nemerle Seed7 Rebol Red Ruby (metaprogramming) IMP OpenC++ XL XML Forth Lisp Racket Scheme Lua PL/I Smalltalk See also Adaptive grammar Concept programming Dialecting Grammar-oriented programming Language-oriented programming Homoiconicity References External links General Greg Wilson's Article in ACM Queue Slashdot Discussion Modern Extensible Languages - A paper from Daniel Zingaro Tools MetaL — an extensible programming compiler engine implementation XPS — eXtensible Programming System (in development) MPS — JetBrains Metaprogramming system Programming languages with extensible syntax OpenZz xtc — eXTensible C English-script Nemerle Macros Boo Syntactic Macros Stanford University Intermediate Format compiler Seed7 - The extensible programming language Katahdin - a programming language with syntax and semantics that are mutable at runtime π - another programming language with extensible syntax, implemented using an Earley parser Extensible syntax programming languages Programming paradigms