Skip to main content

A Mixin-Based, Semantics-Based Approach to Reusing Domain-Specific Programming Languages

  • Conference paper
  • First Online:
ECOOP 2000 — Object-Oriented Programming (ECOOP 2000)

Part of the book series: Lecture Notes in Computer Science ((LNCS,volume 1850))

Included in the following conference series:

Abstract

Domain-specific programming languages (DSLs) are emerging as an important paradigm for the engineering of large reliable software systems. Modular interpreters are an approach to building off-the-shelf software components that implement fragments of DSLs.We describe an approach to implementing modular interpreters in an object-oriented fashion, using the design pattern of extensible computations. The modular structuring and reuse of DSL implementations has potentially important lessons for object-oriented reuse, because of the highly recursive nature of any non-trivial programming language, and the close semantic relationship between inheritance and recursion.We give paradigmatic examples of the definition of extensible computations in the Java programming language, and consider what extensions would be required for typed object-oriented languages in order to support this approach in a statically type-safe manner.

This is a preview of subscription content, log in via an institution to check access.

Access this chapter

Chapter
USD 29.95
Price excludes VAT (USA)
  • Available as PDF
  • Read on any device
  • Instant download
  • Own it forever
eBook
USD 39.99
Price excludes VAT (USA)
  • Available as PDF
  • Read on any device
  • Instant download
  • Own it forever

Tax calculation will be finalised at checkout

Purchases are for personal use only

Institutional subscriptions

Preview

Unable to display preview. Download preview PDF.

Unable to display preview. Download preview PDF.

References

  1. W. Aitken, B. Dickens, P. Kwiatkowski, O. de Moor, D. Richter, and C. Simonyi. Transformation in intentional programming. In Proceedings of the International Conference on Software Reuse. ACM Press, 1998.

    Google Scholar 

  2. David Ancona and Elena Zucca. A theory of mixin modules: Basic and derived operators. Mathematical Structures in Computer Science, 8(4):401–446, 1998.

    Article  MATH  MathSciNet  Google Scholar 

  3. Davide Ancona, Giovanni Lagorio, and Elena Zucca. Jam: A smooth extension of Java with mixins. In European Conference on Object-Oriented Programming, Lecture Notes in Computer Science, Cannes, France, June 2000. Springer-Verlag.

    Google Scholar 

  4. Don Batory, Bernie Lofaso, and Yannis Smaragdakis. JTS: Tools for implementing domain-specific languages. In Proceedings of the International Conference on Software Reuse. ACM Press, 1998.

    Google Scholar 

  5. Edoardo Biagioni, Robert Harper, Peter Lee, and Brian G. Milnes. Signatures for a network protocol stack: A systems application of standard ML. In Proceedings of ACM Symposium on Lisp and Functional Programming, pages 55–64, Orlando, Florida, January 1994. ACM Press.

    Google Scholar 

  6. Gilad Bracha and William Cook. Mixin-based inheritance. In Proceedings of ACM Symposium on Object-Oriented Programming: Systems, Languages and Applications, pages 303–311. ACM Press, October 1990. SIGPLAN Notices, volume 25, number 10.

    Google Scholar 

  7. Gilad Bracha and Gary Lindstrom. Modularity meets inheritance. In International Conference on Computer Languages, pages 282–290. IEEE, 1992.

    Google Scholar 

  8. Kim Bruce, Martin Odersky, and Philip Wadler. A statically safe alternative to virtual types. In European Conference on Object-Oriented Programming, Lecture Notes in Computer Science. Springer-Verlag, 1998.

    Google Scholar 

  9. Robert Cartwright and Matthias Felleisen. Extensible denotational language specifications. In M. Hagiya and J. C. Mitchell, editors, Theoretical Aspects of Computer Science, volume 789 of Lecture Notes in Computer Science, pages 244–272. Springer-Verlag, 1994.

    Google Scholar 

  10. J. Craig Cleveland. Building application generators. IEEE Software, July 1988.

    Google Scholar 

  11. William Clinger and Jonathan Rees, editors. IEEE Standard for the Scheme Programming Language. Institute for Electrical and Electronic Engineers, 1991. IEEE Standard 1178-1990.

    Google Scholar 

  12. William Cook. A Denotational Semantics for Inheritance. PhD thesis, Brown University, 1989.

    Google Scholar 

  13. William Cook and Jens Palsberg. A denotational semantics for inheritance and its correctness. In Proceedings of ACM Symposium on Object-Oriented Programming: Systems, Languages and Applications, 1989.

    Google Scholar 

  14. Oege de Moor, Simon Peyton-Jones, and Eric Van Wik. Aspect-oriented compilers. In Proceedings of the First International Symposium on Generative and Component-Based Software Engineering, Erfurt, Germany, September 1999.

    Google Scholar 

  15. G. D. P. Dueck and G. V. Cormack. Modular attribute grammars. Computer Journal, 33(3):164–172, 1990.

    Article  Google Scholar 

  16. Dominic Duggan. Modular domain-specific languages: A mixin module-based approach. Submitted for publication, 1999.

    Google Scholar 

  17. Dominic Duggan and Constantinos Sourelis. Mixin modules. In Proceedings of ACM International Conference on Functional Programming, pages 262–273, 1996.

    Google Scholar 

  18. Dominic Duggan and Constantinos Sourelis. Mixin-based, module-based inheritance. Technical Report 2001, Stevens Institute of Technology, Hoboken, New Jersey, 2000.

    Google Scholar 

  19. Erik Ernst. gbeta-a Language with Virtual Attributes, Block Structure, and Propagating, Dynamic Inheritance. PhD thesis, Department of Computer Science, University of Aarhus, Århus, Denmark, 1999.

    Google Scholar 

  20. David Espinosa. Semantic LEGO. PhD thesis, Columbia University, May 1995.

    Google Scholar 

  21. R. Farrow, T. J. Marlowe, and D. M. Yellin. Composable attribute grammars: support for modularity in translator design and implementation. In Proceedings of ACM Symposium on Principles of Programming Languages, pages 223–233, 1992.

    Google Scholar 

  22. Andrej Filinski. Representing layered monads. In Proceedings of ACM Symposium on Principles of Programming Languages, pages 175–188, 1999.

    Google Scholar 

  23. M. Flatt, S. Krishnamurthi, and M. Felleisen. Classes and mixins. In Proceedings of ACM Symposium on Principles of Programming Languages, pages 171–183. ACM Press, January 1998.

    Google Scholar 

  24. Erich Gamma, Richard Helm, Ralph Johnson, and John Vlissides. Design Patterns. Addison-Wesley, 1995.

    Google Scholar 

  25. James Gosling, Bill Joy, and Guy Steele. The Java Language Specification. The Java Series. Addison-Wesley, 1997.

    Google Scholar 

  26. S. C. Keene. Object Oriented Programming in Common Lisp: A Programming Guide in CLOS. Addison-Wesley, 1989.

    Google Scholar 

  27. D. Knuth. Semantics of context-free languages. Mathematical Systems Theory, 2(2):127–145, February 1968. Correction, 5, 1, 95–96, March 1971.

    Google Scholar 

  28. Shriram Krishnamurthi and Matthias Felleisen. Toward a formal theory of extensible software. In Proceedings of ACM Symposium on Foundations of Computer Science, 1998.

    Google Scholar 

  29. Shriram Krishnamurthi, Matthias Felleisen, and Daniel Friedman. Synthesizing object-oriented and functional design to promote re-use. In European Conference on Object-Oriented Programming, pages 91–113, 1998.

    Google Scholar 

  30. Sheng Liang, Paul Hudak, and Mark Jones. Monad transformers and modular interpreters. In Proceedings of ACM Symposium on Principles of Programming Languages, pages 333–343, San Francisco, January 1995. ACM Press.

    Google Scholar 

  31. Karl J. Lieberherr. Adaptive Object-Oriented Software: The Demeter Method with Propagation Patterns. PWS Publishing Company, Boston, 1996.

    Google Scholar 

  32. Ole Lehrmann Madsen, Birger Moller-Pedersen, and Kristen Nygaard. Object-Oriented Programming in the BETA Programming Language. ACM Press, 1993.

    Google Scholar 

  33. Mira Mezini and Karl Lieberherr. Adaptive plug-and-play components for evolutionary software development. In Proceedings of ACM Symposium on Object-Oriented Programming: Systems, Languages and Applications, 1998.

    Google Scholar 

  34. Robin Milner, Mads Tofte, Robert Harper, and David MacQueen. The Revised Definition of Standard ML. The MIT Press, 1997.

    Google Scholar 

  35. Eugenio Moggi. An abstract view of programming languages. Technical Report ECS-LFCS-90-113, Laboratory for Foundations of Computer, University of Edinburgh, Scotland, 1990.

    Google Scholar 

  36. Eugenio Moggi. Notions of computation and monads. Information and Computation, 93:55–92, 1991.

    Article  MATH  MathSciNet  Google Scholar 

  37. Peter Mosses. Action Semantics. Number 26 in Cambridge Tracts in Theoretical Computer Science. Cambridge University Press, 1992.

    Google Scholar 

  38. J. Neighbours. Draco: A method for engineering reusable software components. In T. J. Biggerstaff and A. Perlis, editors, Software Reusability. Addison-Wesley/ACM Press, 1989.

    Google Scholar 

  39. Johan Ovlinger and Mitchell Wand. A language for specifying traversals of object structures. In Proceedings of ACM Symposium on Object-Oriented Programming: Systems, Languages and Applications, 1999.

    Google Scholar 

  40. R. Prieto-Diaz and G. Arango. Domain Analysis and Software Systems Modelling. IEEE Computer Society Press, 1991.

    Google Scholar 

  41. Guy Steele. Building interpreters by composing monads. In Proceedings of ACM Symposium on Principles of Programming Languages, pages 472–492. ACM Press, 1994.

    Google Scholar 

  42. P. Wadler. Comprehending monads. Mathematical Structures in Computer Science, 2:461–493, 1992.

    Article  MATH  MathSciNet  Google Scholar 

  43. Keith Wansbrough and John Hamer. Modular monadic action semantics. In USENIX Symposium on Domain-Specific Languages, pages 157–170, Santa Barbara, California, October 1997. USENIX.

    Google Scholar 

Download references

Author information

Authors and Affiliations

Authors

Editor information

Editors and Affiliations

Rights and permissions

Reprints and permissions

Copyright information

© 2000 Springer-Verlag Berlin Heidelberg

About this paper

Cite this paper

Duggan, D. (2000). A Mixin-Based, Semantics-Based Approach to Reusing Domain-Specific Programming Languages. In: Bertino, E. (eds) ECOOP 2000 — Object-Oriented Programming. ECOOP 2000. Lecture Notes in Computer Science, vol 1850. Springer, Berlin, Heidelberg. https://doi.org/10.1007/3-540-45102-1_9

Download citation

  • DOI: https://doi.org/10.1007/3-540-45102-1_9

  • Published:

  • Publisher Name: Springer, Berlin, Heidelberg

  • Print ISBN: 978-3-540-67660-7

  • Online ISBN: 978-3-540-45102-0

  • eBook Packages: Springer Book Archive

Publish with us

Policies and ethics