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.

Foi útil?

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

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top