2015-02-26 3 views
3

У меня есть большой структурированный файл языка, как это:Как обработать файл stuctured языка в питона

TASK SchM_Task { 
    TYPE = AUTO; 
    SCHEDULE = NON; 
    PRIORITY = 160; 
    ACTIVATION = 1; 
    TIMING_PROTECTION = FALSE; 
    AUTOSTART = FALSE; 
    EVENT = SchM_Event; 
    RESOURCE = SystemS_Resource; 
    StackSize = 1024; 
    NotUsingSchedule = FALSE; 
}: "BSW task for calling of bsw runnables"; 
ALARM SchM_Alarm { 
    COUNTER = SystemTimer; 
    ACTION = SETEVENT 
    { 
     TASK = SchM_Task; 
     EVENT = SchM_Event; 
    }; 
    AUTOSTART = FALSE 
    { 
     StaticAlarm = FALSE; 
    }; 
}; 
RESOURCE SystemS_Resource { 
    RESOURCEPROPERTY = INTERNAL; 
}: "Via this resource the cooperativ behavior can be set"; 
EVENT SchM_Event { 
    MASK = AUTO; 
}; 
ISR CanIsr_1 { 
    CATEGORY = 2; 
    TIMING_PROTECTION = FALSE; 
    EnableNesting = TRUE; 
    InterruptLevel = 30; 
    InterruptSource = CAN1IRQ; 
    StackSize = 1024; 
    UseSpecialFunctionName = FALSE; 
}: "CAN Send/Receive (main CAN)"; 

Я действительно новичок в Python и для сценариев. Как проанализировать этот текстовый файл в AST с помощью python. При поиске в Интернете я нашел, что grako в python может быть вариантом. Не могли бы вы объяснить, как грако работает с образцом кода. Спасибо заранее.

+0

Некоторые из того, как мне удалось проанализировать файл, используя grako. Итак, теперь у меня есть структуры данных AST и JSON. Но теперь я хочу отредактировать AST и повторно сгенерировать файл. Grako сделает то же самое или любой другой инструмент python. –

ответ

3

Язык кажется простым. Вы должны прочитать немного о parsing, чтобы понять, что вам нужно делать, независимо от языка программирования.

PyParsing популярен среди программистов Python. Я думаю, что Грако (я автор) слишком сложен для начинающего парсинга.

+1

Некоторые из того, как мне удалось проанализировать файл, используя grako. Итак, теперь у меня есть структуры данных AST и JSON. Но теперь я хочу отредактировать AST и повторно сгенерировать файл. Grako сделает то же самое или любой другой инструмент python. –

+1

У Grako '' AST's есть свои особенности, но, действительно, они могут быть изменены. Если вы решите это сделать, ознакомьтесь с модулем '' grako.codegen' и прилагаемыми примерами (antlr2grako) для стандартного способа выполнения Grako перевода (который не обязательно должен быть на другом языке). Вы также можете использовать JSON с модулем '' json'' Python, чтобы иметь AST, представленный в стандартных структурах данных, с которыми вы можете делать все, что хотите. – Apalala

+1

Я использовал grako.codegen для создания файла из AST. Но сгенерированный файл не имеет отступов должным образом. А также не может редактировать дерево АСТ. Могут поделиться некоторыми образцами для достижения вышеуказанного. –

 Смежные вопросы

  • Нет связанных вопросов^_^