对域特定语言执行静态分析

时间:2012-04-01 07:46:29

标签: compiler-construction graph dsl

我有一个特定于域的语言,我想对该语言进行静态分析,以便获得精彩的图表。感谢是否有人可以建议采取行动计划。

域名语言

{
   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,如果传递或失败的话
  • ()中的值是节点的名称

预期输出(如果在图表上运行DFS)

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

1 个答案:

答案 0 :(得分:1)

大多数编译器书籍都包含有关如何生成控制流图的非常详细的说明。

我为Java程序提供了SO answer as to how to crawl an AST to produce a CFG,但答案非常通用。