Creative Commons Attribution 4.0 International license
Programming languages are often designed as static, monolithic units. As a result, they are inflexible. We show a new mechanism of programming language design that allows to more flexible languages: by using compile-time function execution and metaprogramming, we implement a language mostly in itself. Our approach is usable for creating feature-rich, yet low-overhead system programming languages. We illustrate it on two systems, one that lowers to C and one that lowers to LLVM.
@Article{henniger_et_al:DARTS.9.2.13,
author = {Henniger, Simon and Amin, Nada},
title = {{The Dolorem Pattern: Growing a Language Through Compile-Time Function Execution (Artifact)}},
pages = {13:1--13:3},
journal = {Dagstuhl Artifacts Series},
ISSN = {2509-8195},
year = {2023},
volume = {9},
number = {2},
editor = {Henniger, Simon and Amin, Nada},
publisher = {Schloss Dagstuhl -- Leibniz-Zentrum f{\"u}r Informatik},
address = {Dagstuhl, Germany},
URL = {https://drops.dagstuhl.de/entities/document/10.4230/DARTS.9.2.13},
URN = {urn:nbn:de:0030-drops-182532},
doi = {10.4230/DARTS.9.2.13},
annote = {Keywords: extensible languages, meta programming, macros, program generation, compilation}
}
9b5d480f8227dfbfcaf693506a960fec
(Get MD5 Sum)
The artifact has been evaluated as described in the ECOOP 2023 Call for Artifacts and the ACM Artifact Review and Badging Policy