Skip to main content

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/.

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
Softcover Book
USD 54.99
Price excludes VAT (USA)
  • Compact, lightweight edition
  • Dispatched in 3 to 5 business days
  • Free shipping worldwide - see info

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. Aho, A.V., Sethi, R., Ullman, J.D.: Compilers: Principles, Techniques and Tools. Addison-Wesley, Reading (1986)

    MATH  Google Scholar 

  2. 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)

    Chapter  Google Scholar 

  3. 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)

    Article  Google Scholar 

  4. 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)

    Google Scholar 

  5. 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)

    Chapter  Google Scholar 

  6. 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)

    Google Scholar 

  7. 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)

    Chapter  Google Scholar 

  8. 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)

    Google Scholar 

  9. Beyer, D., Noack, A., Lewerentz, C.: Efficient relational calculation for software analysis. IEEE Trans. Software Engineering 31(2), 137–149 (2005)

    Article  Google Scholar 

  10. 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)

    Article  MATH  Google Scholar 

  11. 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)

    Article  MathSciNet  Google Scholar 

  12. 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)

    Google Scholar 

  13. Cordy, J.R.: The TXL source transformation language. Science of Computer Programming 61(3), 190–210 (2006)

    Article  MathSciNet  MATH  Google Scholar 

  14. 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)

    Article  Google Scholar 

  15. 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)

    Chapter  Google Scholar 

  16. Hedin, G., Magnusson, E.: The JastAdd system - an aspect-oriented compiler construction system. Science of Computer Programming, 37–58 (2003)

    Google Scholar 

  17. 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)

    Google Scholar 

  18. 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)

    Chapter  Google Scholar 

  19. 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)

    Google Scholar 

  20. 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)

    Google Scholar 

  21. Klint, P.: A meta-environment for generating programming environments. ACM Transactions on Software Engineering and Methodology 2(2), 176–201 (1993)

    Article  Google Scholar 

  22. 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)

    Google Scholar 

  23. Klint, P.: Using Rscript for software analysis. In: Working Session on Query Technologies and Applications for Program Comprehension, QTAPC 2008 (2008)

    Google Scholar 

  24. 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)

    Google Scholar 

  25. 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)

    Google Scholar 

  26. Krikhaar, R.L.: Software Architecture Reconstruction. PhD thesis. University of Amsterdam (1999)

    Google Scholar 

  27. 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)

    Google Scholar 

  28. McCabe, T.J.: A complexity measure. IEEE Transactions on Software Engineering SE-12(3), 308–320 (1976)

    Article  MathSciNet  MATH  Google Scholar 

  29. 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)

    Chapter  Google Scholar 

  30. 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)

    Google Scholar 

  31. Parr, T.: The Definitive ANTLR Reference: Building Domain-Specific Languages. Pragmatic Bookshelf (2007)

    Google Scholar 

  32. Speicher, D., Rho, T., Kniesel, G.: Jtransformer - eine logikbasierte infrastruktur zur codeanalyse. In: Workshop Software-Reengineering, WSR 2007, May 02-04 (2007)

    Google Scholar 

  33. Tip, F.: A survey of program slicing techniques. Journal of Programming Languages 3(3), 121–189 (1995)

    Google Scholar 

  34. Weiser, M.: Program slicing. IEEE Transactions on Software Engineering SE-10(4), 352–357 (1984)

    Article  MATH  Google Scholar 

  35. Van Wyk, E., Bodin, D., Gao, J., Krishnan, L.: Silver: An extensible attribute grammar system. Sci. Comput. Program. 75(1-2), 39–54 (2010)

    Article  MathSciNet  MATH  Google Scholar 

Download references

Author information

Authors and Affiliations

Authors

Editor information

Editors and Affiliations

Rights and permissions

Reprints 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)

Publish with us

Policies and ethics