kaj*_*igd 4 compiler-construction abstract-syntax-tree dataflow-diagram
在给定抽象语法树的情况下,我被要求编写一个程序来构造输入程序代码的数据流图.我在线搜索数据流图的定义,发现在代码段的数据流分析中有很多事情发生.我想知道我必须绘制什么来构建给定代码的数据流图.很感谢任何形式的帮助!
给定AST,要生成数据流图,您必须:
构建符号表,以便使用的每个标识符都映射到其显式或隐式定义的类型,还允许您区分一个范围中的标识符与另一个范围中的相同标识符
构造一个控制流程图,显示程序代码的执行顺序和条件分支.(在函数之间构建调用图的加分点!)
确定数据如何沿着控制流图生成,通常使用某种数据流分析框架,建立对变量生命周期的引用,并将所有这些作为图形捕获.
您可以使用某种外部图形绘图包绘制最终图形.
所有这些步骤都非常复杂,并且可能比您想象的要多得多.我得到的印象是你没有太多背景.您可以通过研究标准编译器文本(Aho/Sethi/Ullman"编译器")获得该背景非常经典且非常好.但是你需要在开始之前这样做,或者你不会真正理解这些步骤并将它们联系在一起.