DSAL = library+notation: Program Transformation for Domain-Specific Aspect Languages
Citation:
Anya Helene Bagge and Karl Trygve Kalleberg. DSAL = library+notation: Program Transformation for Domain-Specific Aspect Languages. In Thomas Cleenewerck et al, editor(s), Proceedings of the Domain-Specific Aspect Languages Workshop, pages 1–8. DSAL, 2006.Workshop:
Domain-Specific Aspect Languages Workshop, Portland, Oregon, USA, 2006Paper Links:
[pdf]Abstract:
Domain-specific languages (DSLs) can greatly ease program development compared to general-purpose languages, but the cost of implementing a domain-specific language can be prohibitively high compared to the perceived benefit. This is more pronounced for narrower domains, and perhaps most acute for domain-specific aspect languages (DSALs).
A common technique for implementing a DSL is writing a software library in an existing programming language. Although this does not have the same syntactic appeal and possibilities as a full implementation, it is a technique familiar to most programmers, and it can be done cheaply compared to developing a full DSL compiler. Subsequently, the desired notation may be implemented as a simple syntactic preprocessor. The cross-cutting nature of DSALs, however, makes it difficult to encapsulate these in libraries.
In this paper, we show a technique for implementing a DSAL as a library+notation. We realize this by implementing the library in a program transformation system and the notation as a syntactic extension of the subject language. We discuss our experience with applying this technique to multiple kinds of DSALs.
BibTeX:
@InProceedings{bagge-kalleberg-dsal06-dsal, title = {{DSAL} = library+notation: Program Transformation for Domain-Specific Aspect Languages}, author = {Anya Helene Bagge and Karl Trygve Kalleberg}, year = {2006}, booktitle = {Proceedings of the Domain-Specific Aspect Languages Workshop}, editor = {Thomas Cleenewerck et al}, pages = {1--8}, publisher = {DSAL}, location = {Portland, Oregon, USA}, url = {http://www.ii.uib.no/~anya/papers/bagge-kalleberg-dsal06-dsal.html}, pdf = {http://www.ii.uib.no/~anya/papers/bagge-kalleberg-dsal06-dsal.pdf}, }