Abstract
This paper introduces OpenAda, a compile-time reflective facility supporting full Ada that is similar to OpenC++ and OpenJava. We explain the general concepts of reflection, including compile-time reflection, introspection, and intercession, and then describe how the compiler is dynamically extended to perform user-defined translations. We then describe the compiler’s support for introspection and intercession and provide a complete (though relatively simple) demonstration of use. This example illustrates certain limitations inherent to the implementation that we explain, along with the work-arounds provided.
Access this chapter
Tax calculation will be finalised at checkout
Purchases are for personal use only
Preview
Unable to display preview. Download preview PDF.
References
Chiba, S.: A Metaobject Protocol for C++. In: Proc. Object-Oriented Programming Systems Languages and Applications (OOPSLA 1995), Austin, Texas, pp. 285-299 (1995)
Chiba, S.: A Study of Compile-time Metaobject Protocol. In: Department of Information Science, Graduate School of Science, University of Tokyo, Toyko (1996)
Kiczales, G., des Rivières, J., Bobrow, D.: The Art of the Metaobject Protocol. MIT Press, Cambridge (1991)
Lamping, J., Kiczales, G., Rodriguez, L., Ruf, E.: An Architecture for An Open Compiler. In: Proc. International Workshop on New Models for Software Architecture 1992 (IMSA 1992) Workshop on Reflection and Meta-level Architectures, Tokyo, pp. 95–106 (1992)
Maes, P.: Concepts and Experiments In Computational Reflection. ACM SIGPLAN Notices 22(12), 147–155 (1987)
Malenfant, J., Jacques, M., Demers, F.-N.: A Tutorial on Behavioral Reflection and its Implementation. In: Proc. Reflection 1996, San Francisco, California, pp. 1–20 (1996)
Masuhara, H., Yonezawa, A.: An Object-Oriented Concurrent Reflective Language ABCL/R3. In: Jean-Paul Bahsoun, T.B., Briot, J.-P., Yonezawa, A. (eds.) Object-Oriented Parallel and Distributed Programming, pp. 151–165. HERMES Science Publications, Paris (2000)
McAffer, J.: Meta-level Programming with CodA. In: Olthoff, W. (ed.) ECOOP 1995. LNCS, vol. 952, pp. 190–214. Springer, Heidelberg (1995)
Rivard, F., Cointe, P.: From Envy-Classtalk to Ada’9X. 95-9-INFO, Ecole des Mines de Nantes, Nantes, France (January 1995)
Rogers, P.: Reflection, Ada, and Software Fault Tolerance. In: Department of Computer Science, University of York, York (2003)
Smith, B.C.: Reflection and Semantics in Lisp. In: Proc. 11th ACM Symposium on Principles of Programming Languages, pp. 23–35 (1984)
Tatsubori, M., Chiba, S., Killijian, M.-O., Itano, K.: OpenJava: A Class-based Macro System for Java. In: Cazzola, W., Stroud, R.J., Tisato, F. (eds.) Reflection and Software Engineering. LNCS, vol. 1826, pp. 117–133. Springer, Heidelberg (2000)
Author information
Authors and Affiliations
Editor information
Editors and Affiliations
Rights and permissions
Copyright information
© 2004 Springer-Verlag Berlin Heidelberg
About this paper
Cite this paper
Rogers, P., Wellings, A.J. (2004). OpenAda: Compile-Time Reflection for Ada 95. In: Llamosí, A., Strohmeier, A. (eds) Reliable Software Technologies - Ada-Europe 2004. Ada-Europe 2004. Lecture Notes in Computer Science, vol 3063. Springer, Berlin, Heidelberg. https://doi.org/10.1007/978-3-540-24841-5_13
Download citation
DOI: https://doi.org/10.1007/978-3-540-24841-5_13
Publisher Name: Springer, Berlin, Heidelberg
Print ISBN: 978-3-540-22011-4
Online ISBN: 978-3-540-24841-5
eBook Packages: Springer Book Archive