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
Feedback for Dagstuhl Publishing