Выполнить статический анализ для предметно-ориентированного языка - PullRequest
2 голосов
/ 01 апреля 2012

У меня есть язык, специфичный для предметной области, и я хочу провести статический анализ на этом языке, чтобы создать отличный график. Спасибо, если кто-то может порекомендовать план действий по этому вопросу.

Доменный язык

{
   run_and_branch(ULSDCompHash)
   then
   {
      run(DownComponent_Reset);
      run(DownComponent_Reset2);

   }
   else
   {
      run(ULSD_EndOfTest);
   }
   run(ULSD_EndOfTest2);


}, closed,"EMCSETUP",""

Информация о языке

  • Выполнение не имеет значения, если условие прошло или не выполнено
  • run_and_branch похож на if - else, если pass или fail что-то вроде
  • Значение в () - это имя узла

Ожидаемый результат (если запустить DFS на графике)

 ULSDCompHash -> DownComponent_Reset -> DownComponent_Reset2 -> ULSD_EndOfTest2
 ULSDCompHash -> ULSD_EndOfTest -> ULSD_EndOfTest2

1 Ответ

1 голос
/ 05 апреля 2012

Большинство книг компиляторов содержат довольно подробные описания того, как создавать графы потоков управления.

Я предоставил SO ответ о том, как сканировать AST для получения CFG для программы Java, но ответ довольно общий.

...