Abstract
Rascal is a new language for meta-programming and is intended to solve problems in the domain of source code analysis and transformation. In this article we give a high-level overview of the language and illustrate its use by many examples. Rascal is a work in progress both regarding implementation and documentation. More information is available at http://www.rascal-mpl.org/.
Access this chapter
Tax calculation will be finalised at checkout
Purchases are for personal use only
Preview
Unable to display preview. Download preview PDF.
Similar content being viewed by others
References
Aho, A.V., Sethi, R., Ullman, J.D.: Compilers: Principles, Techniques and Tools. Addison-Wesley, Reading (1986)
Anderson, P., Zarins, M.: The CodeSurfer software understanding platform. In: Proceedings of the 13th International Workshop on Program Comprehension (IWPC 2005), pp. 147–148. IEEE, Los Alamitos (2005)
Bessey, A., Block, K., Chelf, B., Chou, A., Fulton, B., Hallem, S., Henri- Gros, C., Kamsky, A., McPeak, S., Engler, D.: A few billion lines of code later: using static analysis to find bugs in the real world. ACM Commun. 53(2), 66–75 (2010)
Borovansky, P., Kirchner, C., Kirchner, H., Moreau, P.-E., Ringeissen, C.: An overview of ELAN. In: Kirchner, C., Kirchner, H. (eds.) Proceedings of the 2nd International Workshop on Rewriting Logic and its Applications (WRLA 1998). Electronic Notes in Theoretical Computer Science, vol. 15, pp. 55–70 (1998)
Balland, E., Brauner, P., Kopetz, R., Moreau, P.-E., Reilles, A.: Tom: Piggybacking rewriting on Java. In: Baader, F. (ed.) RTA 2007. LNCS, vol. 4533, pp. 36–47. Springer, Heidelberg (2007)
Baxter, I., Pidgeon, P., Mehlich, M.: DMS: Program transformations for practical scalable software evolution. In: Proceedings of the International Conference on Software Engineering (ICSE 2004), pp. 625–634. IEEE, Los Alamitos (2004)
van den Brand, M.G.J., van Deursen, A., Heering, J., de Jong, H.A., de Jonge, M., Kuipers, T., Klint, P., Moonen, L., Olivier, P.A., Scheerder, J., Vinju, J.J., Visser, E., Visser, J.: The ASF+SDF Meta-environment: A Component-Based Language Development Environment. In: Wilhelm, R. (ed.) CC 2001. LNCS, vol. 2027, pp. 365–370. Springer, Heidelberg (2001)
Beyer, D.: Relational programming with crocopat. In: Proceedings of the 28th International Conference on Software Engineering, ICSE 2006, pp. 807–810. ACM, New York (2006)
Beyer, D., Noack, A., Lewerentz, C.: Efficient relational calculation for software analysis. IEEE Trans. Software Engineering 31(2), 137–149 (2005)
van den Brand, M.G.J., Klint, P., Vinju, J.J.: Term rewriting with traversal functions. ACM Transactions on Software Engineering Methodology 12(2), 152–190 (2003)
Bravenboer, M., Kalleberg, K.T., Vermaas, R., Visser, E.: Stratego/ XT 0.17. A language and toolset for program transformation. Science of Computer Programming 72(1-2), 52–70 (2008)
Dams, D., Namjoshi, K.S.: Orion: High-precision methods for static error analysis of C and C++ programs. Technical report. Bell Labs, Bell Labs Technical Memorandum ITD-04-45263Z (2004)
Cordy, J.R.: The TXL source transformation language. Science of Computer Programming 61(3), 190–210 (2006)
Feijs, L.M.G., Krikhaar, R., Ommering, R.C.: A relational approach to support software architecture analysis. Software Practice and Experience 28(4), 371–400 (1998)
Holt, R.C.: Grokking software architecture. In: Proceedings of the 15th Working Conference on Reverse Engineering (WCRE 2008), pp. 5–14. IEEE, Los Alamitos (2008)
Hedin, G., Magnusson, E.: The JastAdd system - an aspect-oriented compiler construction system. Science of Computer Programming, 37–58 (2003)
Johnson, S.C.: Lint, a program checker. In: McIlroy, M.D., Kernighan, B.W. (eds.) Unix Programmer’s Manual, 7th edn., vol. 2B. AT&T Bell Laboratories, Murray Hill (1979)
Jourdan, M., Parigot, D., Julié, C., Durin, O., Le Bellec, C.: Design, implementation and evaluation of the FNC-2 attribute grammar system. In: Proceedings of the ACM SIGPLAN 1990 Conference on Programming Language Design and Implementation, PLDI 1990, pp. 209–222. ACM, New York (1990)
Jackson, D.J., Rollins, E.J.: A new model of program dependences for reverse engineering. In: Proceedings of the 2nd ACM SIGSOFT Symposium on Foundations of Software Engineering. ACM SIGSOFT Software Engineering Notes, vol. 19, pp. 2–10 (1994)
Kniesel, G., Hannemann, J., Rho, T.: A comparison of logic-based infrastructures for concern detection and extraction. In: Proceedings of the 3rd Workshop on Linking Aspect Technology and Evolution, LATE 2007, p. 6. ACM, New York (2007)
Klint, P.: A meta-environment for generating programming environments. ACM Transactions on Software Engineering and Methodology 2(2), 176–201 (1993)
Klint, P.: How understanding and restructuring differ from compiling—a rewriting perspective. In: Proceedings of the 11th International Workshop on Program Comprehension (IWPC 2003), pp. 2–12. IEEE Computer Society, Los Alamitos (2003)
Klint, P.: Using Rscript for software analysis. In: Working Session on Query Technologies and Applications for Program Comprehension, QTAPC 2008 (2008)
Klint, P., van der Storm, T., Vinju, J.J.: RASCAL: A domain specific language for source code analysis and manipulation. In: IEEE International Workshop on Source Code Analysis and Manipulation (SCAM 2009), pp. 168–177. IEEE Computer Society, Los Alamitos (2009)
Klint, P., van der Storm, T., Vinju, J.: DSL tools: Less maintenance? In: Preliminary Proceedings of the Tenth Workshop on Language Descriptions Tools and Applications LDTA 2010, March 27-28 (2010)
Krikhaar, R.L.: Software Architecture Reconstruction. PhD thesis. University of Amsterdam (1999)
Lämmel, R., Riedewald, G.: Prological Language Processing. In: Proceedings of the First Workshop on Language Descriptions, Tools and Applications (LDTA 2001), Genova, Italy, April 7 (2001); van den Brand, M., Parigot, D.: Satellite event of ETAPS 2001. ENTCS, vol. 44. Elsevier Science, Amsterdam (April 2001)
McCabe, T.J.: A complexity measure. IEEE Transactions on Software Engineering SE-12(3), 308–320 (1976)
de Moor, O., Sereni, D., Verbaere, M., Hajiyev, E., Avgustinov, P., Ekman, T., Ongkingco, N., Tibble, J.: QL: Object-oriented queries made easy. In: Lämmel, R., Visser, J., Saraiva, J. (eds.) GTTSE 2007. LNCS, vol. 5235, pp. 78–133. Springer, Heidelberg (2008)
Müller, H., Klashinsky, K.: Rigi – a system for programming-in-the-large. In: Proceedings of the 10th International Conference on Software Engineering (ICSE 10), pp. 80–86 (April 1988)
Parr, T.: The Definitive ANTLR Reference: Building Domain-Specific Languages. Pragmatic Bookshelf (2007)
Speicher, D., Rho, T., Kniesel, G.: Jtransformer - eine logikbasierte infrastruktur zur codeanalyse. In: Workshop Software-Reengineering, WSR 2007, May 02-04 (2007)
Tip, F.: A survey of program slicing techniques. Journal of Programming Languages 3(3), 121–189 (1995)
Weiser, M.: Program slicing. IEEE Transactions on Software Engineering SE-10(4), 352–357 (1984)
Van Wyk, E., Bodin, D., Gao, J., Krishnan, L.: Silver: An extensible attribute grammar system. Sci. Comput. Program. 75(1-2), 39–54 (2010)
Author information
Authors and Affiliations
Editor information
Editors and Affiliations
Rights and permissions
Copyright information
© 2011 Springer-Verlag Berlin Heidelberg
About this chapter
Cite this chapter
Klint, P., van der Storm, T., Vinju, J. (2011). EASY Meta-programming with Rascal. In: Fernandes, J.M., Lämmel, R., Visser, J., Saraiva, J. (eds) Generative and Transformational Techniques in Software Engineering III. GTTSE 2009. Lecture Notes in Computer Science, vol 6491. Springer, Berlin, Heidelberg. https://doi.org/10.1007/978-3-642-18023-1_6
Download citation
DOI: https://doi.org/10.1007/978-3-642-18023-1_6
Publisher Name: Springer, Berlin, Heidelberg
Print ISBN: 978-3-642-18022-4
Online ISBN: 978-3-642-18023-1
eBook Packages: Computer ScienceComputer Science (R0)