Skip to content
NCarter3 edited this page Nov 19, 2014 · 6 revisions

Welcome to the project wiki!

Link to our google docs!

Syntax Ideas

(1) Do Problem Set
	Start Sunday 3pm
	Due 6 hours after starting
	Recur every Sunday, Monday, Tuesday from 1/14/15 until 5/14/15

(2) Turn in Problem Set
	Start 1 day before (1) is due
	Due Wednesday 3pm
	Recur with (1)

New Ideas:

blah trash FROM wednesday TILL saturday EVERY week

blah trash @ wednesday - friday Every week

<task> @ "" - "" Every ""

Some Ideas for the IR

Note: This is not self consistent or complete. I'm still changing this regularly.
time := (start | end)(before | after | at)(expr) | in(interval) | expr
exact := ?timestamp?

recurrence := each(expr, startTime, endTime)
A recurrence probably should NOT be an expr, whereas most other things are. And, every(recurrence) or one(recurrence) would be an expr.

expr := time | (and | or)(expr, expr) | except(expr, expr)
	must include a method like `time next(startTime)` to work like a generator

interval := (number, unit)
number := ?[0,inf)?
unit := "hour[s]" | "day[s]" | "minute[s]" | "year[s]" | "month[s]" | ...

event := description, expr

recurrence shouldn't be a expr, but every(recurrence) or at(exact, recurrence) should be an expr.

# Sample list:
[1] ip sum @ each Friday
[2] dolor @ after [1]
[3] title @ before [1]
[4] color @ 3 days before [3]


# Datastructure: 
Should this be an iterable hashtable and maybe include a minheap organized by next time?

table<hash, expr>
minheap ordered on expr.next(time.now())


A parsed task list:

[
	[1]: expr(each(time(at(Friday)), start=time.now()))
	[2]: expr(after([1]))
	[3]: expr(before([1]))
	[4]: expr(bofore([3], interval))
]

Clone this wiki locally