About
Cali is my English-to-remind program that's supposed to take in strings like
every tuesday at noon :: MSG Eat food
and output an equivalent line in the remind format to standard out.
One version of it is written in C and uses flex and bison. It first tokenizes
and parses the input, storing the information it gets into a special event_t
struct. It then does a few more sanity checks and interpolates missing
information. Finally, cali will take the event_t
and print it out in
remind format.
Another version of it is written in Racket. This version came to be after I realized that "calendar language" was better-suited as a recursive descent parser (I was also kind of tired of tiptoeing around reduce/reduce conflicts).
In theory there's nothing that binds cali to Roaring Penguin's remind; cali could just as easily give its output in some other form.
I never actually finished the output-in-remind-format part in either language.
Mostly I wanted to play with flex, bison and Racket's various match
functions.
Downloads
You'll need flex and bison to compile C cali.
You'll need Racket to run Racket Cali.
It's on Github.