legível agendar uma sintaxe como a funcionalidade em meu aplicativo?
-
13-12-2019 - |
Pergunta
cron no google app engine tem um formato legível por humanos sintaxe para o cron job scheduling.
https://developers.google.com/appengine/docs/python/config/cron#The_Schedule_Format
Como faço para implementar a funcionalidade semelhante no meu aplicativo, onde o uso de introduzir na agenda humanos formato legível e programa analisar e armazenar o valor em reais ?
editar:Eu acho que eles estão usando antlr3 biblioteca, Mas eu não podia capaz de descobrir como eles estão usando.
Solução
Ok, neste exemplo, há dois pontos que você precisa olhar para dentro.
Primeiro antlr é o que dá a você o seu analisador para analisar o inglês/formato legível por humanos formatos em seu programa como uma sequência de tokens.A partir desta seqüência de caracteres que você irá, em seguida, determinar o significado, tais como:
run backup every 2 days
que iria se transformar em uma sequência de tokens, tais como:
<command_type> := run
<command_to_run> := backup
<time_frame_times> := every
<digit> := 2
<time_frame_modifier> := days
Aqui você irá, em seguida, determinar o sentido da frase usando algum tipo de máquina de estado, que poderia ser escrito (forma simplificada) como:
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
Algo como isso seria suficiente para analisar a seqüência de caracteres em seus valores necessários.
A segunda parte seria ligar esta em cron
si ou escrever o seu próprio programador dentro de seu próprio programa, que eu acho que é mais ao longo das linhas do seu caso de uso.
Antlr Python: http://www.antlr.org/wiki/display/ANTLR3/Python+runtime