Colm Programming Language

Colm is a programming language designed for the analysis and transformation of computer languages. Colm is influenced primarily by TXL. It is in the family of program transformation languages.

A transformation language has a type system based on formal languages. Rather than define classes or data structures, one defines grammars. A parser is constructed automatically from the grammar, and the parser is used for two purposes: to parse the input language, and to parse the structural patterns in the program that performs the analysis. In this setting, grammar-based parsing is critical because it guarantees that both the input and the structural patterns are parsed into trees from the same set of types, allowing comparison.

Colm’s main contribution lies in the parsing method. Colm’s parsing engine is generalized, but it also allows for the construction of arbitrary global data structures that can be queried during parsing. In other generalized methods, construction of global data requires some very careful consideration because of inherent concurrency in the parsing method. It is such a tricky task that it is often avoided altogether and the problem is deferred to a post-parse disambiguation of the parse forest.

Releases

Colm 0.15.0 — August 2026
colm-suite-2026.08.tar.gz (sig) (sha256) (key)

Colm is distributed in the Colm Suite, along with the Ragel State Machine Compiler. Suite releases are calendar-versioned snapshots, components in them carry their own version number.

Feb 15, 2021
colm-0.14.7.tar.gz
The last release of Colm on its own.

Building

$ ./autogen.sh
$ ./configure
$ make
$ make install

To install colm but not ragel:

$ ./configure --disable-install-ragel

CMake 3.16 or later works as an alternative. Options are listed in the README.

Documentation

Colm manual

Thesis

The Ph.D. thesis covers the ideas behind Colm, in particular its parsing method. It is not a manual.

Thurston Ph.D. Thesis

Discussion and GIT Repos

To ask questions, or discuss development, please use github discussions.

The mailing list is no longer running. The archives are available here.

git clone ssh://git@github.com/adrian-thurston/colm-suite.git

git clone https://github.com/adrian-thurston/colm-suite.git

License

Colm is released under an MIT style license. Please see the file COPYING in the source.