Real Parsing define grammar for command line implement flex/bison parser new grammar includes: - task delete [ ...] - task done [ ...] User-Defined Reports report.large=id,uuid,project,priority,entry,start,due,active,tags,description report.long=id,project,priority,entry,start,due,tags,description report.list=id,project,priority,due,active,description report.ls=id,project,priority,description Sorting is always: due+ priority- project+ ID UUID Project Priority Entry Start Due Active Tags Description Test Suite allow .taskrc override debug=on to cause all cout to be csv regression tests for every bug, command, feature Recurrence + new T::status recurring (stored as R) + new user-specifiable attributes - recur: [until:] - duration: daily, day, 1d Nd weekly, 1w Nw biweekly monthly, 1m bimonthly Nm quarterly, 1q Nq biannual, biyearly annual, yearly, 1y Na, Ny - recur: without due: => Error - until: without recur: => Error - New file format (version 3): supports status R, recur:, until:, base:, range: - on TDB.gc, adjust base: and compress range: for T::status == recurring - all recurring tasks are removed from lists by T::*pendingT, and a synthetic addendum is generated - when a recurring task is completed, range: is updated, and a synthetic task is added to completed.data that retains the attributes of the root - Scenario: # Today = 6/22/2008 % task add Friday due:6/15/2008 recur:weekly until 8/1/2008 # task must generate a base and range # base:6/15/2008 # range:------- # ^6/15 # ^6/22 # ^6/29 # ^7/6 # ^7/13 # ^7/20 # ^7/27 % task ls 1 Friday 6/15/2008 .lte. today (overdue) 2 Friday 6/22/2008 .lte. today (due) 3 Friday 6/29/2008 one recurrence 4 Friday 7/6/2008 (not shown) 5 Friday 7/13/2008 (not shown) 6 Friday 7/20/2008 (not shown) 7 Friday 7/27/2008 (not shown)