A case for data-oriented specifications: simpler implementation of B tools and DSLs

Considering programs as data enables powerful meta-programming. One example is Lisp’s macro system, which gives rise to powerful transformations of programs and allows easy implementation of domain-specific languages. Formal specifications, however, usually do not rely on such mechanisms and are mos...

Celý popis

Uložené v:
Podrobná bibliografia
Vydané v:Innovations in systems and software engineering Ročník 21; číslo 3; s. 939 - 959
Hlavní autori: Körner, Philipp, Mager, Florian, Roßbach, Jan
Médium: Journal Article
Jazyk:English
Vydavateľské údaje: Heidelberg Springer Nature B.V 01.09.2025
Predmet:
ISSN:1614-5046, 1614-5054
On-line prístup:Získať plný text
Tagy: Pridať tag
Žiadne tagy, Buďte prvý, kto otaguje tento záznam!
Popis
Shrnutí:Considering programs as data enables powerful meta-programming. One example is Lisp’s macro system, which gives rise to powerful transformations of programs and allows easy implementation of domain-specific languages. Formal specifications, however, usually do not rely on such mechanisms and are mostly written by hand in a textual format (or using specialised domain-specific language (DSL) tools). In this paper, we investigate the opportunities that stem from considering specifications as data. For this, we embedded the B specification language in Clojure, a modern Lisp. We use Clojure as a functional meta-programming language and the ProB Java API to capture the semantics of B, i.e., to find solutions for constraints or animate machines. From our experience, it is especially useful for tool development and generation of constraints and machines from external data sources. It can also be used to implement language extensions and to design DSLs.
Bibliografia:ObjectType-Article-1
SourceType-Scholarly Journals-1
ObjectType-Feature-2
content type line 14
ISSN:1614-5046
1614-5054
DOI:10.1007/s11334-025-00596-3