CBS, a component-based specification framework - beta release

by Peter Mosses, July 13, 2018

The beta-release of the CBS framework is now available at

It provides a library of reusable components of language specifications called 'funcons', and examples of their use.

CBS is a framework for component-based specification of programming languages. The main idea is to specify languages by translation to pre-defined 'funcons' (fundamental programming constructs) that correspond closely to common concepts of high-level programming languages.

A translation to funcons can be significantly simpler – both to read and to write – than a direct specification of program behaviour. It is also highly modular, supporting co-evolution of languages and their specifications. 

Funcons are reusable components: their definitions can be reused, unchanged, in the specifications of different languages. Crucially, the behaviour of each funcon is to be fixed, and adding new funcons does not involve changes to the definitions of existing funcons.

The PLanCompS project ( has developed an initial library of funcons, together with several language specifications that illustrate their use. A beta-release of them is now available:

The aim of the beta-release is to allow those interested in CBS to review the funcons and their definitions before the final release, which is planned for October 2018.

New funcons are likely to be introduced during the beta-release period, and further examples of language specification will be provided. Demonstration of scaling-up to major languages (e.g., C#) is a longer-term goal. The current funcon definitions cover only their dynamic semantics, but are to be extended to static semantics.

The current tool support for CBS (including a language workbench and interpreter generation for rapid prototyping) will be released as soon as it is sufficiently robust and well-documented.

If you would like to contribute to PLanCompS (e.g., by using CBS to define a new or existing language, or by suggesting new or improved funcons) please email Peter Mosses <[email protected]>.