|
ABSTRACT
Application programmer's interfaces give access to domain knowledge encapsulated in class libraries without providing the appropriate notation for expressing domain composition. Since object-oriented languages are designed for extensibility and reuse, the language constructs are often sufficient for expressing domain abstractions at the semantic level. However, they do not provide the right abstractions at the syntactic level. In this paper we describe MetaBorg, a method for providing <i>concrete syntax</i> for domain abstractions to application programmers. The method consists of <i>embedding</i> domain-specific languages in a general purpose host language and <i>assimilating</i> the embedded domain code into the surrounding host code. Instead of extending the implementation of the host language, the assimilation phase implements domain abstractions in terms of existing APIs leaving the host language undisturbed. Indeed, MetaBorg can be considered a method for promoting APIs to the language level. The method is supported by proven and available technology, i.e. the syntax definition formalism SDF and the program transformation language and toolset Stratego/XT. We illustrate the method with applications in three domains: code generation, XML generation, and user-interface construction.
REFERENCES
Note: OCR errors may be found in this Reference List extracted from the full text article. ACM has opted to expose the complete List rather than only correct and linked references.
 |
1
|
Jonthan Bachrach , Keith Playford, The Java syntactic extender (JSE), Proceedings of the 16th ACM SIGPLAN conference on Object oriented programming, systems, languages, and applications, p.31-42, October 14-18, 2001, Tampa Bay, FL, USA
|
| |
2
|
|
| |
3
|
A. Begel and S. L. Graham. Language analysis and tools for input stream ambiguities. In Proceedings of the Fourth Workshop on Language Descriptions, Tools and Applications (LDTA'04), Electronic Notes in Theoretical Computer Science, Barcelona, Spain, April 2004. Elsevier.
|
| |
4
|
F. Bouma. LLBLGen Pro, the n-tier generator and O/R mapper for .NET. http://www.llblgen.com.
|
| |
5
|
R. Bourret. XML data binding resources. http://www.rpbourret.com/xml/XMLDataBinding.htm.
|
 |
6
|
|
| |
7
|
C. Brabrand, M. I. Schwartzbach, and M. Vanggaard. The Metafront system: Extensible parsing and transformation. In Proceedings of the Third Workshop on Language Descriptions, Tools and Applications (LDTA'03), volume~82 of Electronic Notes in Theoretical Computer Science. Elsevier, December 2003. See also http://www.brics.dk/metafront/.
|
| |
8
|
|
| |
9
|
Mark G. J. van den Brand , Arie van Deursen , Jan Heering , H. A. de Jong , Merijn de Jonge , Tobias Kuipers , Paul Klint , Leon Moonen , Pieter A. Olivier , Jeroen Scheerder , Jurgen J. Vinju , Eelco Visser , Joost Visser, The ASF+SDF Meta-environment: A Component-Based Language Development Environment, Proceedings of the 10th International Conference on Compiler Construction, p.365-370, April 02-06, 2001
|
| |
10
|
|
| |
11
|
Byte code engineering library (BCEL). http://jakarta.apache.org/bcel/.
|
| |
12
|
L. Cardelli. An implementation of F<:- SRC Research Report 97, Digital Equipment Corporation, Systems Research Center, February 1993.
|
| |
13
|
L. Cardelli, F. Matthes, and M. Abadi. Extensible syntax with lexical scoping. SRC Research Report 121, Digital Equipment Corporation, Systems Research Center, February 1994.
|
| |
14
|
Castor databinding framework for java. http://www.castor.org.
|
| |
15
|
The Apache Cocoon project. http://cocoon.apache.org/.
|
| |
16
|
H. de Jong and P. Olivier. Generation of abstract programming interfaces from syntax definitions. Journal of Logic and Algebraic Programming, 59(1-2):35--61, April-May 2004. See also http://www.cwi.nl/htbin/sen1/twiki/bin/view/SEN1/ApiGen.
|
| |
17
|
A. Deursenvan~Deursen, J. Heering, and P. Klint, editors. Language Prototyping. An Algebraic Specification Approach, volume 5 of AMAST Series in Computing. World Scientific, Singapore, September 1996.
|
 |
18
|
|
| |
19
|
B. Fischer and E. Visser. Retrofitting the AutoBayes program synthesis system with concrete object syntax. In C. Lengauer et al., editors, Domain-Specific Program Generation, volume 3016 of Lecture Notes in Computer Science, pages 239--253. Spinger-Verlag, 2004.
|
| |
20
|
|
 |
21
|
|
| |
22
|
|
 |
23
|
|
| |
24
|
Java Compiler Compiler (JavaCC). https://javacc.dev.java.net/.
|
| |
25
|
Java architecture for XML binding JAXB. http://java.sun.com/xml/jaxb/.
|
| |
26
|
M. Jongede Jonge, E. Visser, and J. Visser. XT: A bundle of program transformation tools. In M. G. J. van den Brand and D. Perigot, editors, Workshop on Language Descriptions, Tools and Applications (LDTA'01), volume 44 of Electronic Notes in Theoretical Computer Science. Elsevier Science Publishers, April 2001.
|
| |
27
|
|
| |
28
|
T. Kuipers and J. Visser. Object-oriented tree traversal with JJForester. In M. G. J. van den Brand and D. Perigot, editors, Proceedings of Workshop on Language Descriptions, Tools and Applications (LDTA'01), volume 44 of Electronic Notes in Theoretical Computer Science. Elsevier Science Publishers, 2001.
|
| |
29
|
|
 |
30
|
|
| |
31
|
E. Meijer and W. Schulte. Programming with rectangles, triangles, and circles. In Proceedings of XML Conference & Exposition 2003 (XML 2003). IDEAlliance, December 2003.
|
| |
32
|
E. Meijer and W. Schulte. Unifying tables, objects, and documents. In Proceedings of the Workshop on Declarative Programming in the Context of Object-Oriented Languages (DP-COOL'03), August 2003.
|
 |
33
|
|
| |
34
|
ASF+SDF MetaEnvironment website. http://www.cwi.nl/projects/MetaEnv/.
|
| |
35
|
P.-E. Moreau, C. Ringeissen, and M. Vittek. A pattern matching compiler for multiple target languages. In G. Hedin, editor, 12th Conference on Compiler Construction (CC'03), volume 2622, pages 61--76, Warsaw, Poland, 2003. Springer-Verlag. See also http://tom.loria.fr.
|
| |
36
|
J. Rekers. Parser Generation for Interactive Environments. PhD thesis, University of Amsterdam, 1992.
|
 |
37
|
|
| |
38
|
|
| |
39
|
|
| |
40
|
Y. Smaragdakis and D. Batory. Application generators. Encyclopedia of Electrical and Electronics Engineering, 2000. J.G. Webster (ed.), John Wiley and Sons.
|
| |
41
|
|
| |
42
|
K. Tao, W. Wang, and J. Palsberg. Java Tree Builder (JTB). http://www.cs.purdue.edu/jtb/.
|
| |
43
|
|
| |
44
|
E. Visser. Scannerless generalized-LR parsing. Technical Report P9707, Programming Research Group, University of Amsterdam, July 1997.
|
| |
45
|
E. Visser. Syntax Definition for Language Prototyping. PhD thesis, University of Amsterdam, September 1997.
|
| |
46
|
|
| |
47
|
E. Visser. Program transformation with Stratego/XT: Rules, strategies, tools, and systems in StrategoXT-0.9. In C. Lengauer et al., editors, Domain-Specific Program Generation, volume 3016 of Lecture Notes in Computer Science, pages 216--238. Spinger-Verlag, June 2004.
|
 |
48
|
Eelco Visser , Zine-el-Abidine Benaissa , Andrew Tolmach, Building program optimizers with rewriting strategies, Proceedings of the third ACM SIGPLAN international conference on Functional programming, p.13-26, September 26-29, 1998, Baltimore, Maryland, United States
|
 |
49
|
Joost Visser, Visitor combination and traversal control, Proceedings of the 16th ACM SIGPLAN conference on Object oriented programming, systems, languages, and applications, p.270-282, October 14-18, 2001, Tampa Bay, FL, USA
|
 |
50
|
|
| |
51
|
The Xtatic project: Native XML processing for C#. http://www.cis.upenn.edu/~bcpierce/xtatic/.
|
CITED BY 24
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Eric Van Wyk , Lijesh Krishnan , Derek Bodin , Eric Johnson, Adding domain-specific and general purpose language features to Java with the Java language extender, Companion to the 21st ACM SIGPLAN conference on Object-oriented programming systems, languages, and applications, October 22-26, 2006, Portland, Oregon, USA
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Johan Fabry , Éric Tanter , Theo D'Hondt, ReLAx: implementing KALA over the reflex AOP kernel, Proceedings of the 2nd workshop on Domain specific aspect languages, p.3-es, March 12-12, 2007, Vancouver, British Columbia, Canada
|
|
|
|
|
|
Sagar Sunkle , Martin Kuhlemann , Norbert Siegmund , Marko Rosenmüller , Gunter Saake, Generating highly customizable SQL parsers, Proceedings of the 2008 EDBT workshop on Software engineering for tailor-made data management, March 29-29, 2008, Nantes, France
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
REVIEW
"Matthew Mark Huntbach : Reviewer"
This paper describes the combined use of several tools for programming language manipulation, collectively given the name MetaBorg. This collection enables the syntax of a programming language to be extended. Although examples are given in Java, t
more...
|