Skip to content

The Specification Mini-Language

Grouping stages for step-by-step execution

The specification mini-language may roughly be described as:

expr ::= and_expr ["or" and_expr...]
and_expr ::= not_expr ["and" not_expr...]
not_expr ::= ["not"] atom
atom ::= tag | keyword | "(" expr ")"
tag ::= "@" characters
keyword ::= characters
characters ::= [A-Za-z0-9_-]+

Thus, all of the following:

  • @check
  • @check and @quick
  • @tests and not examples
  • not @tests
  • pep8 or not @quick and @check
  • not (@check or @tests) and @quick

...are valid expressions, with the "not", "and", and "or" keywords having their usual precedence (pep8 or not @quick and @check is parsed as pep8 or ((@not quick) and @check)).