| An extensible programming language allows programmers to use the language to modify one or more of the language's syntactic, static-semantic, and/or dynamic-semantic properties. This dissertation presents Mython, a variant of the Python language, which affords extensibility of all three language properties. Mython achieves extensibility through a synthesis of reflection, staging, and compile-time evaluation. This synthesis allows language embedding, language evolution, domain-specific optimization, and tool development to be performed in the Mython language. This work argues that using language-development tools from inside an extensible language is preferable to using external tools. The included case study shows that users of an embedded differential equation language are able to work with both the embedded language and embedded programs in an interactive fashion---simplifying their work flow, and the task of specifying the embedded language. |