2012-04-01 39 views
2

我有一个域特定的语言,我想对该语言进行静态分析以获得更好的图。感谢有人能为此推荐行动计划。对域特定语言执行静态分析

域语言

的语言
{ 
    run_and_branch(ULSDCompHash) 
    then 
    { 
     run(DownComponent_Reset); 
     run(DownComponent_Reset2); 

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


}, closed,"EMCSETUP","" 

详细信息,如果条件合格或不合格

  • run_and_branch

    • 运行并不关心是一样,如果 - 否则,如果通或失败种类
    • ()中的值是名称节点的

    期望输出(如果运行在图中以DFS)

    ULSDCompHash -> DownComponent_Reset -> DownComponent_Reset2 -> ULSD_EndOfTest2 
    ULSDCompHash -> ULSD_EndOfTest -> ULSD_EndOfTest2 
    
  • +0

    你想要创建什么样的图形?控制流程图?它是纯文本表示的工件吗?还是应该在两个代码路径中确实存在单独的节点? – delnan 2012-04-01 07:51:14

    +1

    我觉得一个控制流图是合适的,这样我就可以执行DFS遍历来获得所有可能的路径。该图应该模仿纯文本表示。所以在我的例子中,会有一个节点ULSDCompHash,它有一个出口边缘到DownComponent_Reset,另一个出口边缘到ULSD_EndofTest – tabiul 2012-04-01 11:35:19

    +0

    在做了更多的搜索之后,第一步是为源代码创建AST树,然后将其转换为控制流程图。我无法找到像一步一步解释如何将AST转换为CFG的好资源 – tabiul 2012-04-01 12:46:42

    回答