Edit me

Pragmas permit to set command-line flags and configurations directly in the source code.

For example,

.pragma "legacy" 
.decl A(x:number) output
A(1).

will enable the --legacy flag in the source without specifying when invoking souffle.

There are also some configurations that cannot be set by command-line flags including RamSIPS choosing a static heuristic for query plans.

Syntax

In the following, we define pragmas more formally using syntax diagrams and EBNF. The syntax diagrams were produced with Bottlecaps.

Pragma

A pragma is followed by a parameter string. An additional string for the value of the parameter is optional.

Pragma

pragma   ::= '.pragma' STRING STRING?