Python 我的应用程序中的类似于人类可读的时间表语法的功能?

Python 我的应用程序中的类似于人类可读的时间表语法的功能?,python,google-app-engine,antlr,human-readable,Python,Google App Engine,Antlr,Human Readable,GoogleAppEngine中的cron具有用于cron作业调度的可读语法 我如何在我的应用程序中实现类似的功能,其中在human中使用enter schedule 可读格式和程序解析并存储实际值 编辑: 我想他们正在使用antlr3库,但我无法弄清楚他们是如何使用它的。好的,在本例中,有两个地方需要研究 第一个antlr是让您的解析器将英语/人类可读格式解析为令牌流的程序。然后根据该字符串确定含义,例如: run backup every 2 days 这将转化为令牌流,例如: <

GoogleAppEngine中的cron具有用于cron作业调度的可读语法

我如何在我的应用程序中实现类似的功能,其中在human中使用enter schedule 可读格式和程序解析并存储实际值

编辑:
我想他们正在使用antlr3库,但我无法弄清楚他们是如何使用它的。

好的,在本例中,有两个地方需要研究

第一个antlr是让您的解析器将英语/人类可读格式解析为令牌流的程序。然后根据该字符串确定含义,例如:

run backup every 2 days
这将转化为令牌流,例如:

<command_type> := run
<command_to_run> := backup
<time_frame_times> := every
<digit> := 2
<time_frame_modifier> := days
类似的东西足以将字符串解析为所需的值

第二部分是将它连接到
cron
本身,或者在程序本身中编写自己的调度器,我认为这更符合您的用例

Antlr Python:

if token == command_type:
    switch( token.val )
        case "run":
            state = run
            program = tokens.pop().val
if token == time_frame_times:
    switch( token.val )
        case "every":
            time_frame_state = repeat_indefinitely
if token == time_frame_modifier:
    switch( token.val )
        case "days":
            time_frame_modifier = every_N_days
if token == digit:
    switch( time_Frame_modifier )
        case every_N_days:
            time_frame_modifier_value = token.val