%pre
arg ::= <name> [<type>] [!] (<val>)+ | (seq <first> <incr> <last>)
type ::= int | float | string | bool
val ::= rawValue | @<RegExp>

%pre
type is optional, when detection is possible
val is a raw value or a regular expression denoted by the char @
! means use values not in list
seq creates a list of values from <first> to <last> with increment <incr>
