写了一个面向日历的编程语言

2023-02-10 12:13:12 +08:00
 JettChen

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 里:

主要功能

具体的语言设计等文档在 README 里。

应用场景 /需求

感兴趣的话, 欢迎各位在 github 上贡献和在这里讨论!

2002 次点击
所在节点    分享创造
7 条回复
loading
2023-02-10 12:57:45 +08:00
看看 todo.txt
lookStupiToForce
2023-02-10 15:37:53 +08:00
请问 OP ,有没有国家法定节假日的关键字或者可以自定义一个国家法定节假日的变量,用在示例里的 workday 那儿啊?😂
dddys
2023-02-10 15:49:13 +08:00
这是 DSL ,并不能算是 language
JettChen
2023-02-10 15:56:44 +08:00
@lookStupiToForce 正准备通过 workalendar 支持这个功能!这个[issue]( https://github.com/JettChenT/timeblok/issues/7) 里面有 track
JettChen
2023-02-10 15:57:30 +08:00
@dddys 是的,后面正文我也写了,抱歉前面标题党了一下😂
whileFalse
2023-02-11 11:57:43 +08:00
这是为了 dsl 而 dsl 吧…看示例感觉 yaml 就足够方便了
missdeer
2023-02-11 12:29:21 +08:00
感觉这个需求不需要编译原理,当然用了编译原理更硬核

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/914849

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX