Syntax macros and extended translation
Communications of the ACM
Growing languages with metamorphic syntax macros
PEPM '02 Proceedings of the 2002 ACM SIGPLAN workshop on Partial evaluation and semantics-based program manipulation
Maya: multiple-dispatch syntax extension in Java
PLDI '02 Proceedings of the ACM SIGPLAN 2002 Conference on Programming language design and implementation
Meta-programming with Concrete Object Syntax
GPCE '02 Proceedings of the 1st ACM SIGPLAN/SIGSOFT conference on Generative Programming and Component Engineering
Disambiguation Filters for Scannerless Generalized LR Parsers
CC '02 Proceedings of the 11th International Conference on Compiler Construction
JTS: Tools for Implementing Domain-Specific Languages
ICSR '98 Proceedings of the 5th International Conference on Software Reuse
JDBC Checker: A Static Analysis Tool for SQL/JDBC Applications
Proceedings of the 26th International Conference on Software Engineering
OOPSLA '04 Proceedings of the 19th annual ACM SIGPLAN conference on Object-oriented programming, systems, languages, and applications
The essence of command injection attacks in web applications
Conference record of the 33rd ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Generalized type-based disambiguation of meta programs with concrete object syntax
GPCE'05 Proceedings of the 4th international conference on Generative Programming and Component Engineering
Stratego/XT 0.16: components for transformation systems
Proceedings of the 2006 ACM SIGPLAN symposium on Partial evaluation and semantics-based program manipulation
Repleo: a syntax-safe template engine
GPCE '07 Proceedings of the 6th international conference on Generative programming and component engineering
Can programming be liberated from the two-level style: multi-level programming with deepjava
Proceedings of the 22nd annual ACM SIGPLAN conference on Object-oriented programming systems and applications
Stratego/XT 0.17. A language and toolset for program transformation
Science of Computer Programming
Designing Syntax Embeddings and Assimilations for Language Libraries
Models in Software Engineering
Generating safe template languages
GPCE '09 Proceedings of the eighth international conference on Generative programming and component engineering
JGroovy - an extensible Java programming language with Groovy
ICACT'10 Proceedings of the 12th international conference on Advanced communication technology
A DSL for writing type systems for Xtext languages
Proceedings of the 9th International Conference on Principles and Practice of Programming in Java
PIL: a platform independent language for retargetable DSLs
SLE'09 Proceedings of the Second international conference on Software Language Engineering
Domain-specific metamodelling languages for software language engineering
SLE'09 Proceedings of the Second international conference on Software Language Engineering
AMAST'06 Proceedings of the 11th international conference on Algebraic Methodology and Software Technology
TraitRecordJ: A programming language with traits and records
Science of Computer Programming
Implementing Java-like languages in Xtext with Xsemantics
Proceedings of the 28th Annual ACM Symposium on Applied Computing
Hi-index | 0.00 |
General-purpose programming languages provide limited facilities for expressing domain-specific concepts in a natural manner. All domain concepts need to be captured using the same generic syntactic and semantic constructs. Generative programming methods and program transformation techniques can be used to overcome this lack of abstraction in general-purpose languages. In this tutorial we describe the MetaBorg method for embedding domain-specific languages, tailored syntactically and semantically to the application domain at hand, in a general-purpose language. MetaBorg is based on Stratego/XT, a language and toolset for the implementation of program transformation systems, which is used for the definition of syntactic embeddings and assimilation of the embedded constructs into the surrounding code. We illustrate MetaBorg with three examples. JavaSwul is a custom designed language for implementing graphical user-interfaces, which provides high-level abstractions for component composition and event-handling. JavaRegex is a new embedding of regular expression matching and string rewriting. JavaJava is an embedding of Java in Java for generating Java code. For these cases we show how Java programs in these domains become dramatically more readable, and we give an impression of the implementation of the language embeddings.