[go: up one dir, main page]
More Web Proxy on the site http://driver.im/ skip to main content
article

The Java syntactic extender (JSE)

Published: 01 October 2001 Publication History

Abstract

The ability to extend a language with new syntactic forms is a powerful tool. A sufficiently flexible macro system allows programmers to build from a common base towards a language designed specifically for their problem domain. However, macro facilities that are integrated, capable, and at the same time simple enough to be widely used have been limited to the Lisp family of languages to date. In this paper we introduce a macro facility, called the Java Syntactic Extender (JSE), with the superior power and ease of use of Lisp macro sytems, but for Java, a language with a more conventional algebraic syntax. The design is based on the Dylan macro system, but exploits Java's compilation model to offer a full procedural macro engine. In other words, syntax expanders may be implemented in, and so use all the facilities of, the full Java language

References

[1]
Don Batory, Bernie Lofaso, and Yannis Smaragdakis. JTS: Tools for implementing domain-specific languages. In P. Devanbu and J. Poulin, editors, Proceedings: Fifth International Conference on Software Reuse, pages 143-153. IEEE Computer Society Press, 1998.
[2]
Alan Bawden. Quasiquotation in Lisp. In SIGPLAN Workshop on Partial Evaluation and Semantics-Based Program Manipulation, pages 4-12. ACM, January 1999.
[3]
Braband and Schwartzbach. Growing languages with metamorphic syntax macros. available on their web site, 2000.
[4]
Shigeru Chiba. A metaobject protocol for C++. In Proceedings of OOPSLA '95, pages 285-299, October 1995.
[5]
William Clinger. Hygienic macros through explicit renaming. ACM LISP Pointers, 4(4):25-28, 1991.
[6]
Daniel de Rauglaudre. Camlp4. http://caml.inria.fr/camlp4/, 2001.
[7]
R. Kent Dybvig, Robert Hieb, and Carl Bruggeman. Syntactic abstraction in scheme. Lisp and Symbolic Computation, 5(4):295-326, 1993.
[8]
E.R. Engler, W.C. Hsieh, and M.F. Kaashoek. c: A language for fast, efficient, high-level dynamic code generation. In Proceedings of Symposium on Principles of Programming Languages, January 1996.
[9]
Yuuji Ichisugi. Modular and extensible parser implementation. http://www.etl.go.jp/epp/edoc/epp-parser.pdf, 2000.
[10]
Yutaka Ishikawa, Atsushi Hori, Mitsuhisa Sato, Motohiko Matsuda, Jorg Nolte, Hiroshi Tezuka, and Hiroki Konaka. Design and implementation of metalevel architecture in C++ - MPC++ approach -. In Proceedings: Reflection'96, 1996.
[11]
Guy Lewis Steele Jr. Growing a language. Lisp and Symbolic Computation, 1998.
[12]
R. Kelsey, W. Clinger, and J. Rees. Revised 5 report on the algorithmic language scheme. Higher-Order and Symbolic Computation, 11(1):7-105, 1998.
[13]
E. Kohlbecker, D. P. Friedman, M. Felleisen, and B. Duba. Hygenic macro expansion. In Proceedings of the 1986 ACM Conference on Lisp and Functional Programming, pages 151-161. ACM, ACM, August 1986.
[14]
Klil Neori. Self generating java program. available on a web site, 1999.
[15]
Peter Norvig. DEFTABLE: A macro for implementing tables. ACM LISP Pointers, 5(4):32-38, 1992.
[16]
C. Queinnec. Lisp In Small Pieces. University Press, Cambridge, 1994.
[17]
A. Shalit. The Dylan Reference Manual. Addison Wesley, 1996.
[18]
Nik Shaylor. Java preprocessor (JPP). http://www.geocities.com/CapeCanaveral/Hangar/4040/jpp.html, 1996.
[19]
Walid Taha and Tim Sheard. Multi-stage programming with explicit annotations. In SIGPLAN workshop on partial evaluation and semantics-based program manipulation, pages 203-217, 1997.
[20]
Michiaki Tatsubori. Open Java. http://www.hlla.is.tsukuba.ac.jp/mich/openjava/, 2000.
[21]
Daniel Weise and Roger Crew. Programmable syntax macros. In Proceedings of the SIGPLAN '93 Conference on Programming Language Design and Implementation, pages 156-165, June 1993.

Cited By

View all
  • (2023)Rhombus: A New Spin on Macros without All the ParenthesesProceedings of the ACM on Programming Languages10.1145/36228187:OOPSLA2(574-603)Online publication date: 16-Oct-2023
  • (2018)Language support for model-driven software developmentScience of Computer Programming10.1016/j.scico.2008.05.00373:1(13-25)Online publication date: 31-Dec-2018
  • (2018)Runtime bytecode transformation for SmalltalkComputer Languages, Systems and Structures10.1016/j.cl.2005.10.00232:2-3(125-139)Online publication date: 20-Dec-2018
  • Show More Cited By

Recommendations

Comments

Please enable JavaScript to view thecomments powered by Disqus.

Information & Contributors

Information

Published In

cover image ACM SIGPLAN Notices
ACM SIGPLAN Notices  Volume 36, Issue 11
11/01/2001
380 pages
ISSN:0362-1340
EISSN:1558-1160
DOI:10.1145/504311
Issue’s Table of Contents
  • cover image ACM Conferences
    OOPSLA '01: Proceedings of the 16th ACM SIGPLAN conference on Object-oriented programming, systems, languages, and applications
    October 2001
    382 pages
    ISBN:1581133359
    DOI:10.1145/504282
Permission to make digital or hard copies of all or part of this work for personal or classroom use is granted without fee provided that copies are not made or distributed for profit or commercial advantage and that copies bear this notice and the full citation on the first page. Copyrights for components of this work owned by others than ACM must be honored. Abstracting with credit is permitted. To copy otherwise, or republish, to post on servers or to redistribute to lists, requires prior specific permission and/or a fee. Request permissions from [email protected]

Publisher

Association for Computing Machinery

New York, NY, United States

Publication History

Published: 01 October 2001
Published in SIGPLAN Volume 36, Issue 11

Check for updates

Qualifiers

  • Article

Contributors

Other Metrics

Bibliometrics & Citations

Bibliometrics

Article Metrics

  • Downloads (Last 12 months)6
  • Downloads (Last 6 weeks)0
Reflects downloads up to 07 Jan 2025

Other Metrics

Citations

Cited By

View all
  • (2023)Rhombus: A New Spin on Macros without All the ParenthesesProceedings of the ACM on Programming Languages10.1145/36228187:OOPSLA2(574-603)Online publication date: 16-Oct-2023
  • (2018)Language support for model-driven software developmentScience of Computer Programming10.1016/j.scico.2008.05.00373:1(13-25)Online publication date: 31-Dec-2018
  • (2018)Runtime bytecode transformation for SmalltalkComputer Languages, Systems and Structures10.1016/j.cl.2005.10.00232:2-3(125-139)Online publication date: 20-Dec-2018
  • (2017)SPLACM Transactions on Programming Languages and Systems10.1145/303920739:1(1-39)Online publication date: 6-Mar-2017
  • (2013)Towards a General Framework for Formal Reasoning about Java Bytecode TransformationElectronic Proceedings in Theoretical Computer Science10.4204/EPTCS.122.6122(63-73)Online publication date: 30-Jul-2013
  • (2013)Extending Erlang by utilising RefactorErlProceedings of the twelfth ACM SIGPLAN workshop on Erlang10.1145/2505305.2505314(63-72)Online publication date: 28-Sep-2013
  • (2013)An object-oriented approach to language compositions for software language engineeringJournal of Systems and Software10.1016/j.jss.2013.04.08786:9(2451-2464)Online publication date: 1-Sep-2013
  • (2013)Efficient Development of Domain-Specific Simulation Modelling Languages and ToolsSDL 2013: Model-Driven Dependability Engineering10.1007/978-3-642-38911-5_10(163-181)Online publication date: 2013
  • (2013)Software Evolution to Domain-Specific LanguagesSoftware Language Engineering10.1007/978-3-319-02654-1_6(96-116)Online publication date: 2013
  • (2012)MOST-flexiPLProceedings of the ACM international symposium on New ideas, new paradigms, and reflections on programming and software10.1145/2384592.2384608(159-178)Online publication date: 19-Oct-2012
  • Show More Cited By

View Options

Login options

View options

PDF

View or Download as a PDF file.

PDF

eReader

View online with eReader.

eReader

Media

Figures

Other

Tables

Share

Share

Share this Publication link

Share on social media