Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/amazon-web-services/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/jsp/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Compiler construction 数据流图构造_Compiler Construction_Abstract Syntax Tree_Dataflow Diagram - Fatal编程技术网

Compiler construction 数据流图构造

Compiler construction 数据流图构造,compiler-construction,abstract-syntax-tree,dataflow-diagram,Compiler Construction,Abstract Syntax Tree,Dataflow Diagram,我被要求编写一个程序,在给定抽象语法树的情况下,构造输入程序代码的数据流图。我在网上搜索数据流图的定义,发现在代码段的数据流分析中有很多事情要做。我想知道为给定的代码构造数据流图时必须绘制什么。非常感谢您的帮助 给定AST,要生成数据流图,必须: 建立符号表,以便使用的每个标识符都映射到其显式或隐式定义的类型,还允许您将一个作用域中的标识符与另一个作用域中的相同标识符区分开来 构造一个,显示程序代码的执行顺序和条件分支。(在函数之间构建调用图的额外点数!) 确定数据如何沿着控制流图流动,通常使

我被要求编写一个程序,在给定抽象语法树的情况下,构造输入程序代码的数据流图。我在网上搜索数据流图的定义,发现在代码段的数据流分析中有很多事情要做。我想知道为给定的代码构造数据流图时必须绘制什么。非常感谢您的帮助

给定AST,要生成数据流图,必须:

  • 建立符号表,以便使用的每个标识符都映射到其显式或隐式定义的类型,还允许您将一个作用域中的标识符与另一个作用域中的相同标识符区分开来

  • 构造一个,显示程序代码的执行顺序和条件分支。(在函数之间构建调用图的额外点数!)

  • 确定数据如何沿着控制流图流动,通常使用某种方法,建立对变量生命周期的引用,并将所有这些捕获为一个图

您可以使用某种外部图形绘制软件包绘制最终图形

所有这些步骤都相当复杂,可能比您想象的要复杂得多。我觉得你在这里没有什么背景。你可以通过学习标准的编译器文本(Aho/Sethi/Ullman“编译器”)来了解这个背景,这是非常经典和非常好的。但在开始之前你需要这样做,否则你就不会真正理解这些步骤,它们会联系在一起