微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

控制流图CFG是抽象语法树AST的子集吗?

如何解决控制流图CFG是抽象语法树AST的子集吗?

我知道可以从抽象语法树 (AST) 构建控制流图 (CFG)。

但是,我不清楚 CFG 是否是 AST 的子集?

举个例子,给定一个 CFG,我们可以回到 AST 吗?

解决方法

但是,我不清楚 CFG 是否是 AST 的子集?

不,AST 是一个完全语法结构。但是 CST 与语言的语义很好地集成在一起。它们也代表不同的东西。

举个例子,给定一个 CFG,我们可以回到 AST 吗?

这取决于语言,以及该语言中的构造如何映射到控制流。例如,这两个片段将构建完全不同的 AST;

print('a') if a else print('b')
if a:
    print('a')
else:
    print('b')

但是生成的 CFG 对这两者来说是相等的。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。