Faculty of Information Technology Programming Languages and Systems
Skip to Content
QUT Home FaST Home PLAS Home Projects People Contacts
 
     

Metaphor

   

Overview

Metaphor is a programming language with support for type-safe run-time code generation -- a form of meta-programming. Metaphor is based on a subset of C# or Java and combines the imperative, object-oriented nature of these languages with the multi-stage programming constructs from MetaOCaml. Metaphor uses the static type system of multi-stage languages to achieve compile-time safety of run-time generated code.

Metaphor's type system also incorporates a stronger typing of the type reflection systems found in C# or Java. This allows the reflection system to be safely incorporated into the language’s staging constructs and thus allows the generation of code based on the structure of types (i.e., staged polytypic programming).

Metaphor is implemented as a compiler on the Microsoft CLR.

Researcher

Gregory Neverov

Downloads

Metaphor prototype compiler: Binary, Source, Licence.

Requirements:

Papers

Gregory Neverov and Paul Roe, Metaphor: A Multi-Stage, Object-Oriented Programming Language in The Third International Conference on Generative Programming and Component Engineering, Vancouver, Canada, October 2004. [pdf] [ppt]

Gregory Neverov and Paul Roe, Cross-stage Persistence in Metaphor in Informal Proceedings of The First MetaOCaml Workshop, Vancouver, Canada, October 2004.

Gregory Neverov and Paul Roe, Towards a Fully-reflective Meta-programming Language in 28th Australasian Computer Science Conference, Newcastle, Australia, January 2005. [pdf]

Gregory Neverov and Paul Roe, Experiences with an object-oriented, multi-stage language in Science of Computer Programming 62(1), 2006. [pdf]

Contact

Last updated: 12 January, 2006

PLAS
Projects
  ActiveSheets
  Bioinformatics
  ConcernMaps
  ELP
  ELP.NET
  G2 Cluster Computing
  Generics
  Gardens Point Component Pascal
  Gardens Point Flow
  Gardens Point Modula
  Gardens Point Service Language
  Language Processing Tools
  Mentok
  * Metaphor
  Mobilizer
  RikWik
Ruby.NET
People
Wiki
Contacts