# The command line needs to obey a grammar. It is then against this grammar # that bugs will be identified. # # Conventions: # - Literals are always double-quoted. # - "*", "+" and "?" suffixes have POSIX semantics. # - Low-level primitives are in . # - @reports for dynamic lists such as custom report names. # # The general form of commands is: # task [ all-commands ] # grammar ::= all-commands? ; all-commands ::= custom-report | read-command | write-command | special-command ; custom-report ::= filter? @report ; read-command ::= filter? @readcmd ; write-command ::= filter? @writecmd modifiers ; special-command ::= ; filter ::= expression ; expression ::= ; modifiers ::= ; # Low-level: dom ::= context-value | system-value | rc-value | task-value ; context-value ::= "context.program" | "context.args" | "context.width" | "context.height" ; system-value ::= "system.version" | "system.os" ; rc-value ::= /rc\.[a-zA-Z.]+/ ; task-value ::= "." attribute | "." attribute ; literal ::= | | | ; # Supported primitives: # # # # # # # # # @command all commands # @report all custom reports # @attributes all attributes, UDAs # @readcmd all read-only commands # @writecmd all write commands