The Rascal language and ecosystem aim at providing a one-stop shop for metaprogramming: parsing, analysis, transformation, and code generation are conveniently provided in a single linguistic framework. In this talk I will first recapitulate the global design of the Rascal language and some of its applications. Next, I will focus on the Rascal implementation and will compare the current, interpreted-based, implementation and the upcoming Rascal compiler that compiles to the JVM, making Rascal a full-blown JVM language. Two of the more important concepts in the compiler are intermediate languages and coroutines. Defining and transforming languages is Rascal's core business, so it is no surprise that introducing intermediate languages in the compiler is straightforward and helps to reduce complexity. Asymmetric, stackfull, coroutines form the basis for the compilation of Rascal's pattern matching. They will be discussed in some detail. A quick summary of future plans will conclude the presentation.
For more information, please visit http://www.rascal-mpl.org.
Paul Klint (www.cwi.nl/~paulk) is research fellow at Centrum Wiskunde & Informatica (CWI, the Dutch national research center for computer science and mathematics), professor emeritus in software engineering at the University of Amsterdam and visiting professor at Royal Holloway University of London. He is founding president of the European Association for Programming Languages and Systems (EAPLS), former chair of the national advisory boards on Computer Science and co-founder of the Software Improvement Group (SIG), a CWI spinoff company. He holds a MSc in Mathematics from the University of Amsterdam (1973) and a PhD in Computer Science from the Technical University Eindhoven (1982). He (co)authored three books and has published over hundred scientific articles. He was advisor of over 30 dissertations and over 150 master's theses. He has consulted for companies and governments worldwide. His research interests include generic language technology, domain-specific languages, software renovation, and technology transfer.