الإنسان جدول مقروء بناء الجملة مثل وظيفة في بلدي التطبيق?

StackOverflow https://stackoverflow.com//questions/11706097

سؤال

كرون في محرك التطبيق جوجل لديها بناء جملة مقروء الإنسان لجدولة وظيفة كرون.

https://developers.google.com/appengine/docs/python/config/cron#The_Schedule_Format

كيف يمكنني تنفيذ وظائف مماثلة في طلبي ، حيث استخدام إدخال الجدول الزمني في الإنسان تنسيق قابل للقراءة وبرنامج تحليل وتخزين القيمة الفعلية ?

تحرير:أعتقد أنهم يستخدمون مكتبة أنتلر3 ، لكنني لم أتمكن من معرفة كيفية استخدامها.

هل كانت مفيدة؟

المحلول

حسنا ، في هذه الحالة ، هناك نقطتان تحتاج إلى النظر فيهما.

أولا أنتلر هو ما يمنحك محلل لتحليل الإنجليزية / الإنسان تنسيقات قابلة للقراءة في البرنامج الخاص بك كما تيار من الرموز.من هذه السلسلة سوف ثم تحديد معنى مثل:

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 نفسها أو كتابة جدولة الخاصة بك داخل البرنامج نفسه الذي أعتقد أنه أكثر على غرار حالة الاستخدام الخاصة بك.

أنتلر بايثون: http://www.antlr.org/wiki/display/ANTLR3/Python+runtime

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top