Github: github.com/JettChenT/timeblok
Hi! 为了更好地安排我的寒假时间,我花了一个多月学了学编译原理,并写了一个能够让用户通过纯文本管理日程的语言。
现在基本功能也差不多做出来了(终于可以计划我那所剩无己的寒假了),所以就来 v2 上发一下,请多多指教!
具体而言,我设计了一个声明式的 DSL, 在编译器编译之后能导出一个 .ics 文件,这个文件格式大部分日历 app 都支持。
举个例子,若我想要安排下个学期 (2/17 到 6/30) 的日程,可以这样写:
2023--
-2-16 开学
{-2-17 ~ -6-30 and workday}
6:30am 起床
5pm 回家
{sun}
4pm~5pm 每周回顾
编译后,这就可以直接导入到你的日历 APP 里: 
主要功能
- 在给定日期的给定时间轻松创建日历事件。
- 能够添加有关事件的笔记和元数据。
- 基于继承和覆盖的动态解析日期
- 基于复合的过滤器(Filters) 来表示复杂的日期重复规则等。
具体的语言设计等文档在 README 里。
应用场景 /需求
- 图形界面的日历 APP 不足以表示复杂的重复规则,点来点去也挺烦的(
- 文字界面大大增加了可扩展性,并提供了更高的自由度
- 有很多可以做的衍生应用场景,如在 Obsidian Logseq 这种 PKM 里面做插件,或者和 GPT 等 LLM 结合实现自然语言日程创建功能等
感兴趣的话, 欢迎各位在 github 上贡献和在这里讨论!