CoreLang

Describe a business domain in a small, readable language

CoreLang is being designed to express business facts, work, decisions and rules. It is also intended to give related business languages a common syntax and toolchain to start from.

CoreLang

Follow the language from example to execution

CoreLang glossary

Plain explanations of the language and toolchain terms used on this site.

Begin with a rule people need to understand

A service cancels an appointment. The scheduling team must offer a new date within five working days, unless the person has asked to close the case. The service must record which version of the rule it used and when it made the offer.

CoreLang should let a domain specialist express that rule precisely enough for another person to review it. The first examples will test how much structure is needed without turning the language into ordinary application code.

CoreLang has two proposed jobs

First, CoreLang is the principal worked example for DomainLang, the project that develops the general language-design method. Designing a real language will expose which parts of that method are useful and which need to change.

Second, CoreLang is intended to provide a common starting point for suitable business-related languages. A new language could add its own vocabulary while reusing agreed syntax, parser conventions, editor connections and, where useful, an execution path. A language remains free to take another approach when that base does not fit its meaning.

What exists now

The new CoreLang language, parser and common base have not yet been built. However, the proposed delivery path starts from working components. The CREXX repository contains an optimising assembler, linker, virtual machine and supporting libraries. DSLSH already keeps editors and parsers synchronised, and THE CREXX Edition demonstrates that connection in a working editor. THE also has a working browser proof of concept with documented limits; it is not a production multi-user editor.

The first CoreLang implementation can therefore concentrate on the business meaning, notation, parser and checks that are specific to the language. It does not need to invent every surrounding tool before one complete example can be tested.

Related work

What the other projects contribute

  • DomainLang develops the method used to design and assess CoreLang.
  • CREXX, DSLSH and THE contain working components proposed for the first CoreLang toolchain.