mirror of
https://github.com/GothenburgBitFactory/taskwarrior.git
synced 2025-06-26 10:54:26 +02:00
241 lines
6.6 KiB
BNF
241 lines
6.6 KiB
BNF
# This document defines the BNF grammar that will be supported in Taskwarrior
|
|
# 2.1.
|
|
|
|
|
|
# Commands (alphabetically)
|
|
|
|
command_add ::= "add" ws+ task-elements ;
|
|
|
|
command_annotate ::= "annotate" ws+ range ws+ words ;
|
|
|
|
command_append ::= "append" ws+ range ws+ words ;
|
|
|
|
command_burndown ::= "burndown.monthly" ws+ filter
|
|
| "burndown.weekly" ws+ filter
|
|
| "burndown.daily" ws+ filter
|
|
| "burndown.monthly"
|
|
| "burndown.weekly"
|
|
| "burndown.daily"
|
|
;
|
|
|
|
command_calendar ::= "calendar" ws+ "due" ws+ filter
|
|
| "calendar" ws+ "due"
|
|
| "calendar" ws+ "y" ws+ filter
|
|
| "calendar" ws+ "y"
|
|
| "calendar" ws+ year ws+ filter
|
|
| "calendar" ws+ year
|
|
| "calendar" ws+ year ws+ month ws+ filter
|
|
| "calendar" ws+ year ws+ month
|
|
| "calendar" ws+ month-name ws+ filter
|
|
| "calendar" ws+ month-name
|
|
| "calendar" ws+ filter
|
|
| "calendar"
|
|
;
|
|
|
|
command_colors ::= "colors" ws+ "legend"
|
|
| "colors" ws+ "sample"
|
|
| "colors"
|
|
;
|
|
|
|
command_config ::= "config" ws+ word ws+ words
|
|
| "config" ws+ word
|
|
;
|
|
|
|
command_count ::= "count" ws+ filter
|
|
| "count"
|
|
;
|
|
|
|
# TODO en-passant
|
|
command_delete ::= "delete" ws+ range ;
|
|
|
|
command_denotate ::= "denotate" ws+ range ws+ pattern ;
|
|
|
|
command_diagnostics ::= "diagnostics" ;
|
|
|
|
# TODO en-passant
|
|
command_done ::= "done" ws+ range ;
|
|
|
|
# TODO en-passant
|
|
command_duplicate ::= "duplicate" ws+ range ;
|
|
|
|
command_edit ::= "edit" ws+ range ;
|
|
|
|
command_ghistory ::= "ghistory.annual" ws+ filter
|
|
| "ghistory.monthly" ws+ filter
|
|
| "ghistory.weekly" ws+ filter
|
|
| "ghistory.daily" ws+ filter
|
|
| "ghistory.annual"
|
|
| "ghistory.monthly"
|
|
| "ghistory.weekly"
|
|
| "ghistory.daily"
|
|
;
|
|
|
|
command_help ::= "help" ;
|
|
|
|
command_history ::= "history.annual" ws+ filter
|
|
| "history.monthly" ws+ filter
|
|
| "history.weekly" ws+ filter
|
|
| "history.daily" ws+ filter
|
|
| "history.annual"
|
|
| "history.monthly"
|
|
| "history.weekly"
|
|
| "history.daily"
|
|
;
|
|
|
|
command_import ::= "import" ws+ file
|
|
| "import" ws+ "-"
|
|
;
|
|
|
|
command_info ::= "info" ws+ range
|
|
;
|
|
|
|
command_log ::= "log" ws+ task-elements ;
|
|
|
|
command_merge ::= "merge" ws+ url ;
|
|
|
|
command_prepend ::= "prepend" ws+ range ws+ words ;
|
|
|
|
command_projects ::= "projects" ws+ filter
|
|
| "projects"
|
|
;
|
|
|
|
command_pull ::= "pull" ws+ url ;
|
|
|
|
command_push ::= "push" ws+ url ;
|
|
|
|
command_shell ::= "shell" ;
|
|
|
|
command_show ::= "show" ws+ pattern
|
|
| "show"
|
|
;
|
|
|
|
command_start ::= "start" ws+ range
|
|
| "start"
|
|
;
|
|
|
|
command_stats ::= "statistics" ws+ filter
|
|
| "statistics"
|
|
;
|
|
|
|
command_stop ::= "stop" ws+ range
|
|
| "stop"
|
|
;
|
|
|
|
command_summary ::= "summary" ws+ filter
|
|
| "summary"
|
|
;
|
|
|
|
command_tags ::= "tags" ;
|
|
|
|
command_timesheet ::= "timesheet" ws+ digit
|
|
| "timesheet"
|
|
;
|
|
|
|
command_undo ::= "undo" ;
|
|
|
|
command_version ::= "version" ;
|
|
|
|
# command_report ::= report ws+ filter ;
|
|
|
|
|
|
# Helper Commands (alphabetically)
|
|
|
|
helper_query ::= "query" ws+ filter
|
|
| "query"
|
|
;
|
|
|
|
|
|
# Primitives
|
|
range ::= ;
|
|
id-equivalent ::= uuid | id ;
|
|
id ::= digit+ ;
|
|
uuid ::= ;
|
|
attribute ::= ;
|
|
modifier ::= ;
|
|
|
|
task-elements ::= task-element+ ;
|
|
|
|
task-element ::= attribute ws+
|
|
| tag ws+
|
|
| word ws+
|
|
;
|
|
|
|
filter ::= filter-elements+ ;
|
|
|
|
filter-elements ::= range
|
|
| pattern
|
|
| filter-attribute ;
|
|
|
|
filter-attribute ::= field modifier? ":" value? ;
|
|
|
|
modifier ::= ".above"
|
|
| ".after"
|
|
| ".any"
|
|
| ".before"
|
|
| ".below"
|
|
| ".contains"
|
|
| ".endswith"
|
|
| ".equals"
|
|
| ".has"
|
|
| ".hasnt"
|
|
| ".is"
|
|
| ".isnt"
|
|
| ".left"
|
|
| ".none"
|
|
| ".not"
|
|
| ".noword"
|
|
| ".over"
|
|
| ".right"
|
|
| ".startswith"
|
|
| ".under"
|
|
| ".word"
|
|
;
|
|
|
|
value ::= ;
|
|
|
|
year ::= digit digit digit digit ;
|
|
|
|
month ::= "1" | "2" | "3" | "4" | "5" | "6"
|
|
| "7" | "8" | "9" | "10" | "11" | "12"
|
|
;
|
|
|
|
# TODO Case-insensitive
|
|
month-name ::= "january"
|
|
| "february"
|
|
| "march"
|
|
| "april"
|
|
| "may"
|
|
| "june"
|
|
| "july"
|
|
| "august"
|
|
| "september"
|
|
| "october"
|
|
| "november"
|
|
| "december"
|
|
;
|
|
|
|
filter-attribute ::= field "." modifier ":" value
|
|
| field "." modifier ":"
|
|
| field ":" value
|
|
| field ":"
|
|
;
|
|
|
|
tag ::= "+" word
|
|
| "-" word ;
|
|
|
|
substitution ::= "/" pattern "/" words "/" "g"? ;
|
|
|
|
pattern ::= ;
|
|
url ::= ;
|
|
file ::= ;
|
|
words ::= ;
|
|
word ::= ;
|
|
|
|
|
|
# Fundamentals
|
|
|
|
digit ::= "0" | "1" | "2" | "3" | "4" | "5" | "6" | "7" | "8" | "9" ;
|
|
ws ::= " " | "\t" ;
|
|
|
|
# End
|
|
|