Compilers: principles, techniques, and tools
Compilers: principles, techniques, and tools
Packrat parsing:: simple, powerful, lazy, linear time, functional pearl
Proceedings of the seventh ACM SIGPLAN international conference on Functional programming
Parsing expression grammars: a recognition-based syntactic foundation
Proceedings of the 31st ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Better extensibility through modular syntax
Proceedings of the 2006 ACM SIGPLAN conference on Programming language design and implementation
DSL evolution through composition
Proceedings of the 7th Workshop on Reflection, AOP and Meta-Data for Software Evolution
A role-based approach towards modular language engineering
SLE'09 Proceedings of the Second international conference on Software Language Engineering
Domain-Specific languages in few steps: the neverlang approach
SC'12 Proceedings of the 11th international conference on Software Composition
DropsBox: the Dresden Open Software Toolbox
Software and Systems Modeling (SoSyM)
Hi-index | 0.00 |
Nowadays, many problems are solved by using a domain specific language (DSL), i.e., a programming language tailored to work on a particular application domain. Normally, a new DSL is designed and implemented from scratch requiring a long time-to-market due to implementation and testing issues. Whereas when the DSL simply extends another language it is realized as a source-to-source transformation or as an external library with limited flexibility. The Hive framework is developed with the intent of overcoming these issues by providing a mechanism to compose different programming features together forming a new DSL, what we call a sectional DSL. The support (both at compiler and interpreter level) of each feature is separately described and easily composed with the others. This approach is quite flexible and permits to build up a new DSL from scratch or simplifying an existing language without penalties. Moreover, it has the desirable side-effect that each DSL can be extended at any time potentially also at run-time.