MetaProgramming
Synopsis
Analysis or transformation of one program by another program.
Description
All programs take data as input and produce other data as output. A typical example is a desktop calculator program: after entering some numbers and operators, the program displays an answer. For most programs the data are numeric (calculator, spreadsheet) or textual (text editor, word processor).
A metaprogram is a program that uses programs as data. Writing metaprograms is called metaprogramming.
A metaprogram has to be written in some programming language itself. This is called the metalanguage.
The program that is manipulated by the metaprogram is called the source program (also: object program) and is written in the source language (also: object language).
In some cases the metaprogram transforms the source program into a target program in a target language.
Examples
A Refactoring tool for restructuring Java code:
- Metaprogram: the refactoring tool.
- Metalanguage: in most cases Java.
- Source program: the user's Java program to be refactored.
- Source language: Java.
- Target program: the refactored user's program.
- Target language: Java.
A Java Compiler:
- Metaprogram: the Java compiler.
- Metalanguage: in most cases Java.
- Source program: the user's Java program to be compiled.
- Source language: Java.
- Target program: the code that is generated by the compiler.
- Target language: instructions for the JVM (Java Virtual Machine) or machine code, depending on the hardware platform.
A tool to compute Software Metrics of Java programs
- Metaprogram: the metrics tool.
- Metalanguage: varies per tool: Java, Rascal.
- Source program: the user's Java program for metrics will be computed.
- Source language Java.
- Target program: the value of the computed metric.
- Target language: number.