jenerated

cali

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.