# This is a full BNF grammar for the task command line. It is intended that a # future release of task will incorporate a complete lexer/parser implementing # this grammar, which will allow for more sophisticated command lines, for # example: # # task delete 1 2 4-7 # task add pri:H pro:X -- pro pri 1 /// # command ::= simple_command | filter_command filter? | id_command | "export" file | | ; simple_command ::= "version" | "help" | "projects" | "tags" | "next" | "stats" | "color" ; filter_command ::= "summary" | "history" | "calendar" | "active" | "overdue" | "oldest" | "newest" | "add" | "list" | "long" | "ls" | "completed" ; id_command ::= "delete" | "undelete" | "info" | "start" | "end" | "done" | "undo" ; filter ::= filter_part+ ; filter_part ::= tag_add | tag_remove | attribute | word ; tag_add ::= "+" word ; tag_remove ::= "-" word ; attribute ::= word ":" word ; word ::= file ::= id ::= digit+ ; digit ::= "0" | "1" | "2" | "3" | "4" | "5" | "6" | "7" | "8" | "9" ; substitution ::= "/" word+ "/" word* "/" "g"? ;