给定抽象语法树,我被要求编写一个程序来构建输入程序代码的数据流图。我在网上搜索了数据流图的定义,发现在一个代码段的数据流分析中发生了很多事情。我想知道要为给定代码构建数据流图,我到底要画什么。很感谢任何形式的帮助!
问问题
2235 次
1 回答
6
给定 AST,要生成数据流图,您必须:
建立符号表,以便使用的每个标识符都映射到其显式或隐式定义的类型,还允许您将一个范围内的标识符与另一个范围内的相同标识符区分开来
构建控制流图,显示程序代码的执行顺序和条件分支。(在函数之间构建调用图的奖励积分!)
确定数据如何沿着控制流图流动,通常使用某种数据流分析框架,建立对变量生命周期的引用,并将所有这些捕获为图。
您可以使用某种外部图形绘图包绘制最终图形。
所有这些步骤都非常复杂,并且可能比您想象的要多得多。我觉得你在这里没有太多背景。您可以通过学习标准编译器文本(Aho/Sethi/Ullman “Compilers”)来获得该背景,该文本非常经典且非常好。但是你需要在开始之前这样做,否则你不会真正理解这些步骤,它们会联系在一起。
于 2013-04-02T02:38:40.767 回答