我被要求编写一个程序,在给定抽象语法树的情况下构建输入程序代码的数据流图。我在网上搜索了数据流图的定义,发现在代码段的数据流分析中发生了很多事情。我想知道我到底需要绘制什么来为给定的代码构建数据流图。很感谢任何形式的帮助!
给定 AST,要生成数据流图,您必须:
建立符号表,以便使用的每个标识符都映射到其显式或隐式定义的类型,还允许您区分一个范围内的标识符与另一个范围内的相同标识符
构建一个控制流程图 http://en.wikipedia.org/wiki/Control_flow_graph,显示程序代码的执行顺序和条件分支。 (在函数之间构建调用图的奖励积分!)
确定数据如何沿着控制流图流动,通常使用某种数据流分析框架 http://en.wikipedia.org/wiki/Data-flow_analysis,建立对变量生命周期的引用,并将所有这些捕获为图表。
You can draw使用某种外部图形绘制包的最终图形。
所有这些步骤都非常复杂,并且工作量可能比您想象的要多得多。我的印象是你没有太多背景。您可以通过研究标准编译器文本(Aho/Sethi/Ullman“编译器”)来了解该背景知识,该文本非常经典且非常好。但您需要在开始之前这样做,否则您将无法真正理解这些步骤以及它们之间的联系。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)