|
ABSTRACT
Language extensions increase programmer productivity by providing concise, often domain-specific syntax, and support for static verification of correctness, security, and style constraints. Language extensions can often be realized through translation to the base language, supported by preprocessors and extensible compilers. However, various kinds of extensions require further adaptation of a base compiler's internal stages and components, for example to support separate compilation or to make use of low-level primitives of the platform (e.g., jump instructions or unbalanced synchronization). To allow for a more loosely coupled approach, we propose an open compiler model based on normalization steps from a high-level language to a subset of it, the core language. We developed such a compiler for a mixed Java and (core) bytecode language, and evaluate its effectiveness for composition mechanisms such as traits, as well as statement-level and expression-level language extensions.
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
|
Alfred V. Aho , Monica S. Lam , Ravi Sethi , Jeffrey D. Ullman, Compilers: Principles, Techniques, and Tools (2nd Edition), Addison-Wesley Longman Publishing Co., Inc., Boston, MA, 2006
|
 |
2
|
Pavel Avgustinov , Aske Simon Christensen , Laurie Hendren , Sascha Kuzins , Jennifer Lhoták , Ondřej Lhoták , Oege de Moor , Damien Sereni , Ganesh Sittampalam , Julian Tibble, abc: an extensible AspectJ compiler, Proceedings of the 4th international conference on Aspect-oriented software development, p.87-98, March 14-18, 2005, Chicago, Illinois
[doi> 10.1145/1052898.1052906]
|
 |
3
|
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
|
| |
4
|
|
 |
5
|
|
| |
6
|
|
 |
7
|
Martin Bravenboer , Eelco Visser, Concrete syntax for objects: domain-specific language embedding and assimilation without restrictions, Proceedings of the 19th annual ACM SIGPLAN conference on Object-oriented programming, systems, languages, and applications, October 24-28, 2004, Vancouver, BC, Canada
|
| |
8
|
C. Clifton. MultiJava: Design, implementation, and evaluation of a Java-compatible language supporting modular open classes and symmetric multiple dispatch. Technical Report 01-10, Department of Computer Science, Iowa State University, Nov. 2001.
|
 |
9
|
Curtis Clifton , Todd Millstein , Gary T. Leavens , Craig Chambers, MultiJava: Design rationale, compiler implementation, and applications, ACM Transactions on Programming Languages and Systems (TOPLAS), v.28 n.3, p.517-575, May 2006
[doi> 10.1145/1133651.1133655]
|
| |
10
|
|
| |
11
|
A. B. Dov. infomancers-collections. http://code.google.com/p/infomancers-collections/
|
 |
12
|
|
 |
13
|
|
| |
14
|
|
| |
15
|
J. C. Hardwick and J. Sipelstein. Java as an intermediate language. Technical Report CMU-CS-96-161, School of Computer Science, Carnegie Mellon University, August 1996.
|
| |
16
|
|
 |
17
|
|
| |
18
|
J. B. Kam and J. D. Ullman. Monotone data flow analysis frameworks. Acta Inf., 7:305--317, 1977.
|
| |
19
|
L. C. L. Kats. java-csharp: C#-inspired language extensions for Java. http://strategoxt.org/Stratego/JavaCSharp/.
|
| |
20
|
G. Kiczales, J. Lamping, A. Menhdhekar, C. Maeda, C. Lopes, J.-M. Loingtier, and J. Irwin. Aspect-oriented programming. In M. Aks¸it and S. Matsuoka, editors, Proceedings of the European Conference on Object-Oriented Programming (ECOOP'07), volume 1241 of Lecture Notes in Computer Science, pages 220--242. Springer, 1997.
|
| |
21
|
|
| |
22
|
|
| |
23
|
F. Logozzo and M. Fähndrich. On the relative completeness of bytecode analysis versus source code analysis. In L. Hendren, editor, Compiler Construction (CC'08), volume 4959 of Lecture Notes in Computer Science, pages 192--212. Springer, 2008.
|
| |
24
|
|
| |
25
|
|
| |
26
|
|
 |
27
|
|
| |
28
|
N. Nystrom, M. Clarkson, and A. Myers. Polyglot: An Extensible Compiler Framework for Java. Compiler Construction (CC'03), 2622:138--152, Apr. 2003.
|
| |
29
|
M. Odersky and al. An overview of the Scala programming language. Technical Report IC/2004/64, EPFL Lausanne, Switzerland, 2004.
|
| |
30
|
S. Pedroni and N. Rappin. Jython Essentials. O'Reilly Media, Inc., 2002.
|
| |
31
|
|
 |
32
|
|
 |
33
|
|
| |
34
|
|
| |
35
|
Sun Microsystems. The annotation processing tool (apt). http://java.sun.com/j2se/1.5.0/docs/guide/apt.
|
| |
36
|
|
| |
37
|
The XDoclet team. XDoclet: attribute-oriented programming. http://xdoclet.sourceforge.net/
|
| |
38
|
A. Tolmach. An external representation for the GHC core language. http://haskell.org/ghc/docs/papers/core.ps.gz, September 2001.
|
| |
39
|
Raja Vallée-Rai , Phong Co , Etienne Gagnon , Laurie Hendren , Patrick Lam , Vijay Sundaresan, Soot - a Java bytecode optimization framework, Proceedings of the 1999 conference of the Centre for Advanced Studies on Collaborative research, p.13, November 08-11, 1999, Mississauga, Ontario, Canada
|
| |
40
|
|
| |
41
|
|
| |
42
|
E. Van Wyk, L. Krishnan, A. Schwerdfeger, and D. Bodin. Attribute grammar-based language extensions for Java. In E. Ernst, editor, European Conference on Object Oriented Programming (ECOOP'07), volume 4609 of Lecture Notes on Computer Science, pages 575--599. Springer Verslag, July 2007.
|
| |
43
|
|
| |
44
|
J. Warmer and A. Kleppe. Building a flexible software factory using partial domain specific models. In J. Gray, J.-P. Tolvanen, and J. Sprinkle, editors, Proceedings of the 6th OOPSLA Workshop on Domain-Specific Modeling (DSM 2006), volume TR-37 of Computer Science and Information System Reports, pages 15-22, Finland, October 2006. University of Jyväskylä.
|
CITED BY
|
|
Danny M. Groenewegen , Zef Hemel , Lennart C.L. Kats , Eelco Visser, WebDSL: a domain-specific language for dynamic web applications, Companion to the 23rd ACM SIGPLAN conference on Object oriented programming systems languages and applications, October 19-23, 2008, Nashville, TN, USA
|
INDEX TERMS
Primary Classification:
D.
Software
D.3
PROGRAMMING LANGUAGES
D.3.4
Processors
Additional Classification:
D.
Software
D.1
PROGRAMMING TECHNIQUES
D.1.5
Object-oriented Programming
D.2
SOFTWARE ENGINEERING
D.2.3
Coding Tools and Techniques
D.3
PROGRAMMING LANGUAGES
D.3.3
Language Constructs and Features
General Terms:
Design,
Languages
Keywords:
SDF,
bytecode,
compilers,
domain-specific languages,
dryad compiler,
embedded languages,
iterators,
java,
language extensions,
meta programming,
source tracing,
stratego,
traits
|