Command-line Spoofax
Running Spoofax plugins form the command-line
This short guide describes how to execute a Spoofax plugin from the command-line.
1. Compile the project to a jar file
Spoofax compiles the core part of plugins either to a
jar
file or to a
ctree
file. If you want to invoke it from outside of Eclipse, it's easiest to work with a
jar
. The
FAQ explains how to configure the project to achieve this:
FAQ#jar.
2. Arrrange dependencies
After setting up the project, there are two core
jar
files for your project:
include/yourlang.jar
and
include/yourlang-java.jar
. They have a dependency on
strategoxt.jar
, which is included with Spoofax. It can be downloaded seperately from the
STRJ home page or directly from
hydra.nixos.org.
3. Write a main function
The next thing you need is a "main" function in the Spoofax plugin that is called when you invoke it from the command-line. You can add this to the
yourlanguage.str
file of your project. An example main function is shown below:
main-yourlanguage =
xtc-input-wrap(
// Read input
?FILE(input);
prim("SSL_EXT_enable_origins");
ast := <parse-yourlanguage-file> input;
// Analyze
(ast', errors, warnings, notes) := <editor-analyze> (ast, input, ".");
// ...
// Compile
(output, contents) := <generate-java> (ast', [], ast, input, ".");
// Write to disk
handle := <fopen> (output, "w");
<fputs> (contents, handle);
fclose
<+
// Report any errors
prim("SSL_stacktrace_get_all_frame_names"); report-failure
)
Be sure to replace
yourlanguage
with the name of your language in lowercase letters. The code above makes use of the
libstratego-xtc
library; make sure you add it to the imports.
4. Run the project
Run the project as follows:
java -cp include/yourlanguage.jar:include/yourlanguage-java:strategoxt.jar run main-yourlanguage