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

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.


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


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


pragma   ::= '.pragma' STRING STRING?