Skip to main content

Getting Started with Rascal

Download and installation

Rascal is deployed as one of four easy-to-use packages:

  1. A standalone "jar" file, which can be downloaded here
  2. A Visual Studio Code extension, which can be found here or search for "Rascal" in the "Extension" view in VScode itself.
  3. An Eclipse plugin, for which the update site is https://update.rascal-mpl.org/stable/.
  4. A set of Maven MOJOs, for which the plugin repository is https://releases.usethesource.io/maven/

For developers on Rascal itself or experimental libraries, who want to work with on continuously integrated and tests releases please have a look at the Developers course.

Running Rascal: starting a terminal with a read-eval-print-loop

  1. On the Unix or Windows commandline, start a rascal shell by: java -jar rascal-<version>.jar
  2. In VScode, in the command palette type Rascal and select Create Rascal Terminal
  3. In Eclipse, from the button bar select the button with the Rascal logo.
  4. With Maven, create a pom.xml which includes the above plugin and type: mvn rascal:console

You will be prompted for input right after the version is printed and information about the current search paths.

Here we show how to quit the terminal:

:quit

Similarly you could type CTRL+D which indicates end-of-file to terminate the process. More information about the features of the shell can be found here. At the prompt you can type Expressions, Statements and Declarations.

rascal>1 + 1
int: 2
rascal>myList = [ i | i <- [1..11], i % 2 == 0];
list[int]: [2,4,6,8,10]
rascal>import Prelude;
ok
rascal>println("Hello <myList> is <size(myList)> long");
Hello [2,4,6,8,10] is 5 long
ok

Troubleshooting

In case of trouble, there is no need to panic. Help is nearby.

  • Common troubles with installation and first runs are documented here
  • If you have a question that probably has Rascal source code as an answer, go to StackOverflow. Either find your answer directly, or you are welcome to post a new question using the tag [rascal].
  • If you think you've run into a bug, we are very happy to receive your report on Github.
  • If any documentation is unclear, incomplete or ambiguous you are also invited to submit a report there, but you may also use the edit button below to propose a fix.