See the README on GitHub for more information.
The input language to SPIRAL is an extended version of GAP 3.
Chapters 1 and 2 of the GAP Manual cover most of what you need for SPIRAL.
In a nutshell:
Whitespace is ignored
Statements can span multiple lines and end with a semicolon (;)
Blocks of statements are delineated with keywords, like do/od, if/then/else/fi
Variable names are case sensitive and are declared implicitly by use
:= is the assignment operator and = is the boolean equals operator
When you start SPIRAL in a terminal window (
> spiral), SPIRAL displays the spiral> command
prompt that lets you enter individual statements interactively. To exit, enter quit;.
The SPIRAL command line allows edits similar to the Linux terminal window and the Windows command window.
CTRL+E moves the cursor to the end of the line.
CTRL+A moves the cursor to the beginning of the line.
Left and Right arrows move the cursor one character on the current line.
Up and Down arrows scroll back and forth through previous entries.
These have special meaning to SPIRAL:
CTRL+C interrupts a running statement
CTRL+D is equivalent to quit;
TAB completes a command up to a point of ambiguity. Pressing TAB again shows all choices.
CTRL+W shows all the field names for a record.
SPIRAL stores entries from previous sessions, so work from previous sessions is available when you start SPIRAL. Note that the history file is only saved if you exit SPIRAL with the quit; command.
opts := SpiralDefaults; opts.globalUnrolling; opts.arrayBufModifier; opts.includes; opts.unparser; opts.codegen; opts.useDeref; opts.Xtype; opts.compileStrategy; opts.breakdownRules; ...