写了一个面向日历的编程语言 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
爱意满满的作品展示区。
JettChen
V2EX    分享创造

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

  •  
  •   JttChen
    JettChenT 2023-02-10 12:13:12 +08:00 2506 次点击
    这是一个创建于 1053 天前的主题,其中的信息可能已经有所发展或是发生改变。

    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 上贡献和在这里讨论!

    7 条回复    2023-02-11 12:29:21 +08:00
    loading
        1
    loading  
       2023-02-10 12:57:45 +08:00 via Android
    看看 todo.txt
    lookStupiToForce
        2
    lookStupiToForce  
       2023-02-10 15:37:53 +08:00
    请问 OP ,有没有国家法定节假日的关键字或者可以自定义一个国家法定节假日的变量,用在示例里的 workday 那儿啊?
    dddys
        3
    dddys  
       2023-02-10 15:49:13 +08:00
    这是 DSL ,并不能算是 language
    JettChen
        4
    JettChen  
    OP
       2023-02-10 15:56:44 +08:00
    @lookStupiToForce 正准备通过 workalendar 支持这个功能!这个[issue]( https://github.com/JettChenT/timeblok/issues/7) 里面有 track
    JettChen
        5
    JettChen  
    OP
       2023-02-10 15:57:30 +08:00
    @dddys 是的,后面正文我也写了,抱歉前面标题党了一下
    whileFalse
        6
    whileFalse  
       2023-02-11 11:57:43 +08:00 via iPhone
    这是为了 dsl 而 dsl 吧…看示例感觉 yaml 就足够方便了
    missdeer
        7
    missdeer  
       2023-02-11 12:29:21 +08:00
    感觉这个需求不需要编译原理,当然用了编译原理更硬核
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     5585 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 22ms UTC 06:40 PVG 14:40 LAX 22:40 JFK 01:40
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86