https://developers.google.com/appengine/docs/python/config/cron#The_Schedule_Format
如何在我的应用程序中实现类似的功能,其中使用在人类中输入schedule 可读格式和程序解析并存储实际值?
编辑: 我认为他们正在使用antlr3库,但我无法弄清楚他们是如何使用它的。
答案 0 :(得分:1)
好的,在这种情况下,你需要研究两个方面。
第一个antlr是让你的解析器将英语/人类可读格式解析为你的程序作为一个令牌流。然后,您将从此字符串中确定含义,例如:
run backup every 2 days
会变成一个令牌流,例如:
<command_type> := run
<command_to_run> := backup
<time_frame_times> := every
<digit> := 2
<time_frame_modifier> := days
然后,您将使用某种可以编写的状态机(简化形式)确定句子的含义:
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
这样的东西足以将字符串解析为所需的值。
第二部分是将它连接到cron
本身,或者在你的程序中编写自己的调度程序,我认为这更符合你的用例。
Antlr Python:http://www.antlr.org/wiki/display/ANTLR3/Python+runtime