BT

Introducing the Colm Programming Language

by Jean-Jacques Dubray on May 26, 2011 |

Programming Languages are becoming a major topic of research (again) this time around looking very carefully at the semantics they are based on:

A program is a structured object with semantics. The structure allows us to transform a program. The semantics gives us the means to compare programs and to reason about the validity of transformations. Semantics includes the extensional and intensional behaviour of a program.

Program Transformation is also benefiting from this new wave of research, and has already well established commercial products.

Program transformation is the act of changing one program into another. The term program transformation is also used for a formal description of an algorithm that implements program transformation. The language in which the program being transformed and the resulting program are written are called the source and target languages, respectively

Adrian Thurston has recently published the first release of Colm (COmputer Language Manipulation),  programming language designed for the analysis and transformation of computer languages. Adrian developed Colm during his Ph.D. at the Queen's University (ON, Canada). He explains:

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.
Using Colm it is possible to get the correct parse tree on the first pass of the input, granted that some backtracking is acceptable. Colm eliminates the need to reason about concurrent updates to global data or to acquire many possible parse trees, only to throw away the incorrect ones.

Metaprogramming (a.k.a. Metamodel Oriented Programming) is making great progress thanks to the development of Language Workbenches and powerful transformation technologies such as Colm. Are you closer to use one? Are you already using one? what is your take on it?

Hello stranger!

You need to Register an InfoQ account or to post comments. But there's so much more behind being registered.

Get the most out of the InfoQ experience.

Tell us what you think

Allowed html: a,b,br,blockquote,i,li,pre,u,ul,p

Email me replies to any of my messages in this thread

Colm by Melissa Mifsud

It seems very academic to me! How can this be applied?

Re: Colm by Jean-Jacques Dubray

I think there is a general trend in the industry (with so many programming languages) that looks very closely at the semantics of programming languages. Language Workbenches, and now Colm are step towards a formal evolution of programming languages, rather than some opportunistic optimization here and there.

Allowed html: a,b,br,blockquote,i,li,pre,u,ul,p

Email me replies to any of my messages in this thread

Allowed html: a,b,br,blockquote,i,li,pre,u,ul,p

Email me replies to any of my messages in this thread

2 Discuss

Educational Content

General Feedback
Bugs
Advertising
Editorial
InfoQ.com and all content copyright © 2006-2013 C4Media Inc. InfoQ.com hosted at Contegix, the best ISP we've ever worked with.
Privacy policy
BT