数据流图构建

2024-03-17

我被要求编写一个程序,在给定抽象语法树的情况下构建输入程序代码的数据流图。我在网上搜索了数据流图的定义,发现在代码段的数据流分析中发生了很多事情。我想知道我到底需要绘制什么来为给定的代码构建数据流图。很感谢任何形式的帮助!


给定 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(使用前将#替换为@)

数据流图构建 的相关文章

  • 指定 NVCC 用于编译主机代码的编译器

    运行 nvcc 时 它始终使用 Visual C 编译器 cl exe 我怎样才能让它使用GCC编译器 设置CC环境变量到gcc没有修复它 我在可执行文件帮助输出中也找不到任何选项 在 Windows 上 NVCC 仅支持 Visual C
  • Haskell GHC 动态编译仅适用于第一次编译

    按照发布的 GHC 教程here http www bluishcoder co nz 2008 11 dynamic compilation and loading of html并按照以下建议对此代码进行更改我之前问过的一个堆栈溢出问题
  • Trace Trees 带来的 Javascript 性能改进是否会应用到其他解释语言中?

    听起来 Mozilla 在提高 JavaScript 性能方面运气不错追踪猴子 http weblogs mozillazine org roadmap archives 2008 08 tracemonkey javascript lig
  • LR(k) 到 LR(1) 语法转换

    我对以下内容感到困惑quote http en wikipedia org wiki LR parser Theory来自维基百科 换句话说 如果一种语言足够合理 允许 高效的单遍解析器 可以用 LR k 语法来描述 语法总是可以机械地转化
  • 如何在 R 中获取 AST 作为列表

    我有字符串 它描述数学公式 我想将其转换为有意义部分的列表 功能ast 确实知道如何解析它 将其显示为抽象语法树 但不返回 AST 我正在寻找一个返回树的函数 bb lt media urin A media urin B 2 lazyev
  • c 函数原型不匹配仅仅是一个警告吗

    请看下面我的代码 include
  • 重用语义分析阶段的符号表来生成代码

    我目前正在为一种具有全局变量和嵌套子例程功能的语言构建编译器 以前 我只为只有局部变量而没有嵌套子例程的语言构建过编译器 我有一个关于如何重用在代码生成阶段的语义分析阶段填充的符号表的问题 我将符号表作为链表堆栈 其中每个链表代表在特定范围
  • 这是 VB.NET 编译器中的错误还是设计造成的?

    我发现 C 和 VB 编译器之间的重载解析存在差异 我不确定这是错误还是设计使然 Public Class Class1 Public Sub ThisBreaks These work Foo Of String Function Str
  • 是否有使用严格求值的 Haskell 编译器或预处理器?

    我正在寻找一个默认使用严格求值而不是惰性求值的 Haskell 编译器 我只想使用 OCaml 但 Haskell 的语法是好多了比 OCaml 的 Haskell 是纯粹的 并且具有很酷的功能 例如类型类 我真的不想经常把 s and 我
  • Java 中的匿名类是如何编译的?

    我听说 Java 字节码实际上不支持任何类型的未命名类 javac 如何将未命名的类转换为命名的类 它综合了形式的名称EnclosingClass n 其中 n 是匿名类的计数器EnclosingClass 因为使用 不鼓励使用标识符 这些
  • 将ast节点转换为python对象

    给定一个ast可以自行计算的节点 但字面意义不够ast literal eval例如列表理解 src i 2 for i in range 10 a ast parse src Now a body 0 is an ast Expr and
  • Go1编译器如何工作?

    我在一个学校项目中接触 Go 大约一个月了 我注意到 src pkg go 文件夹中的 go ast go token go parser 等包 但是 gc 编译器基于位于 src cmd gc 中的 C 文件 我的问题是关于 Go1 中用
  • switch-case 结构是否以二分搜索的形式实现?

    我想知道如何switch case语句执行 Example 假设有以下代码 Scanner sc new Scanner System in int v sc nextInt switch v case 0 System out print
  • 用于编译/反编译二进制数据文件的通用实用程序或库?

    我有各种二进制文件格式 我需要将其转储为某种文本格式 编辑然后重新编译 可能是二进制格式的稍微不同的版本 当然 我可以用 C C 编写一堆实用程序代码来完成这种事情 并且可能利用一个库来处理文本方面的事情 XML 或 JSON 或其他 但这
  • 扩展 Mono C# 编译器:有任何文档或先例吗?

    我目前正在参与一些有趣的编程语言研究 到目前为止 这些研究的重点是通过一些非常强大的基于程序员生产力的功能来扩展即将推出的 Java 7 0 编译器 这项工作应该同样适用于 C 等相关编程语言 我目前正在研究用于对该功能的 C 端口进行原型
  • 向 Java 类添加编程注释

    使用示例 我想在类字段上添加一个自定义注释 MyContainer 然后在所有此类字段上自动添加相关的 Hibernate 注释 取决于字段类型和属性 另外 我需要向类添加 JAXB XmlType 注释 并使类型名称基于类名称 我还想根据
  • .java 和 .scala 类之间是否可能存在循环依赖?

    假设我在 java 文件中定义了类 A 在 scala 文件中定义了类 B A 类使用 B 类 B 类使用 A 类 如果我使用 java 编译器 则会出现编译错误 因为 B 类尚未编译 如果我使用scala编译器A类将找不到 有没有可以同时
  • 警告:格式“%d”需要类型“int *”,但参数 2 的类型为“int”

    所以我是 C 的新手 并且对这个警告发生的情况遇到了麻烦 该警告是什么意思以及我该如何解决它 我写的代码在这里 void main void char name int age 0 printf input your name n scan
  • 非虚实例方法继承是如何解决的?

    通过 C 从 CLR 引用 它读起来就像call将在运行时通过 CLR 搜索由基类型定义的方法 Then callIL指令用于调用实例或虚拟 方法中 您必须指定一个引用对象的变量 方式 变量本身的类型指示定义该方法的类型 CLR 应该调用
  • 特殊名称属性还允许哪些其他巧妙的技巧?

    研究中一个问题 https stackoverflow com questions 13259162 vb net power operator overloading from c sharp关于实现 Visual Basic Power

随机推荐

  • CVS:列出标签(或日期)之间更改的所有文件

    有没有办法列出CVS中两个标签之间发生更改的所有文件 每次我们发布版本时 我们都会向该版本中的所有文件应用一个标签 我想找到版本之间更改的所有文件 如果我能找到两个日期之间更改的所有文件 它也会起作用 我想这个命令会有帮助 cvs diff
  • 使用项目反应器 mergeWith() 运算符来实现“if/elseif/else”分支逻辑

    我正在尝试使用项目反应堆 mergeWith运算符以实现if elseif else分支逻辑如下所述 RxJS If Else 运算符在哪里 https rangle io blog rxjs where is the if else op
  • 来自两个派生类的多重继承

    我有一个充当接口的抽象基类 我有两个派生类 集 它们实现了抽象类的一半 一个 集合 定义与初始化相关的抽象虚拟方法 另一个 集合 定义与实际 工作 相关的方法 然后 我有派生类 它们使用多重继承来构造完全定义的类 并且本身不添加任何内容 所
  • 大虾:在PDF中打印unicode字符串

    我正在使用 Prawn 在 Rails 3 应用程序中生成 PDF 是否可以像在 HTML 视图中一样将 Unicode 字符串打印到 PDF 中 例如 in show html erb结果字形 同时 pdf text raw unicod
  • 加密且安全的 Docker 容器

    我们都知道无法开源并自由分发软件的情况 而我就处于其中一种情况 我有一个应用程序 它由许多二进制文件 从 C 源代码编译 和将其全部包装到系统中的 Python 代码组成 该应用程序曾经作为云解决方案工作 因此用户可以通过网络访问应用程序功
  • 使用 ws4py 创建自己的应用程序

    我使用 ws4py 创建了一个 Web 服务器套接字 它使用了cherrypy 当我使用连接到服务器时ip port它连接完美 并且能够通过多个浏览器聊天 但是当我尝试连接时ip port ws它也有效 但是 在我不使用连接后ws 我无法握
  • jQuery 中的多个选择器

    我正在尝试运行这段代码 input value OK value Recrutar value Criar id attack name btn click 因此 如您所见 我正在尝试选择一个值等于 OK 或 Recrutar 或 Cria
  • 为什么IntelliJ Idea找不到GO SDK的位置?

    我下载了go1 4 darwin amd64 osx10 8 tar gz https golang org dl 并将其解压到我的本地目录中 基于什么安装到自定义位置 https golang org doc install说我在环境变量
  • jQuery - 专注于 TR

    好的 所以我正在制作一个插件 允许在我的网站中内联编辑表格 到目前为止进展顺利 我已经完成了大部分工作 但我似乎无法正确地将焦点移出表格 因此 如果有人完成编辑并开始编辑新行或只是单击该行之外的内容 则应该保存并恢复正常 但是 如果我在行上
  • Android NumberPicker 隐藏递增和递减按钮

    我正在使用一个数字选择器 http developer android com reference android widget NumberPicker html并且目标是 API 11 及更高版本 3 0 及更高版本 因此我使用受支持的
  • 如何在 R 中加载以 HDF5 文件形式保存在 pandas 中的数据帧?

    我将 pandas 中的数据帧保存在 HDF5 文件中 import numpy as np import pandas as pd np random seed 1 frame pd DataFrame np random randn 4
  • 如何使用 Perl 的 XML::Twig 向子元素添加属性?

    我有一个像这样的 XML 字符串
  • phpstorm symfony2 缺少服务警告

    我已经为 Phpstorm 安装了 Symfony2 插件 但我无法让 IDE 查看这些现有服务或其他注入的对象 能否以某种方式修复这些问题 从而使警告消失 我遇到了类似的问题 建议仔细检查以下内容 正如 Marcel建议的 检查你的Sym
  • AngularJS v1.3 打破翻译过滤器

    在 Angular v1 2 中 我使用以下代码在应用程序中提供本地化字符串 var i18n angular module i18n i18n service i18n function http timeout A dictionary
  • pyplot.subplots:python 和 jupyter 笔记本中的不同行为

    在参加 Kaggle 比赛时 我遇到了一些奇怪的问题 基本上 我正在尝试将 am 图像的矢量表示形式转换为 png 文件 它在 iPython 中完美运行 代码如下 def drawing to np prepare data drawin
  • 为什么 .Net 没有 Thread.Start() 的通用版本?

    我想知道为什么 Net 没有启动线程的通用方法 例如 我们启动一个像下面这样的线程 Thread th new Thread SayHello th Start Hello private static void SayHello obje
  • 具有单一选择的列表框,并且单击时也取消选择...?

    我需要一个在第一次单击时选择并在第二次单击时取消选择的列表框 以便任何时候只选择零个或一个项目 当您按住 crtl 时 选择 取消选择是在列表框中实现的 SelectionMode Single 但不幸的是 我的用户都不知道这一点 使用 S
  • 自定义 Django 管理索引页面以显示模型对象

    在 Django 管理索引页面中 通常会列出应用程序及其模型 模型对象如何也列在该索引页中 我不仅想显示应用程序 还想显示其模型对象 应该如何定制呢 我希望我的网站具有相同的功能 并通过对核心 django 系统进行轻微修改来添加它 Ste
  • appium - 如何获取本机 Android 应用程序中元素的背景颜色

    我正在尝试使用自动化应用程序appium 如何获取 Android 应用程序中元素的背景颜色 我尝试使用 element getCssValue background color 但我面临以下异常 java lang ClassCastEx
  • 数据流图构建

    我被要求编写一个程序 在给定抽象语法树的情况下构建输入程序代码的数据流图 我在网上搜索了数据流图的定义 发现在代码段的数据流分析中发生了很多事情 我想知道我到底需要绘制什么来为给定的代码构建数据流图 很感谢任何形式的帮助 给定 AST 要生