【问题标题】:Static analyzer for functional programming languages, e.g.Scheme函数式编程语言的静态分析器,例如Scheme
【发布时间】:2011-03-09 18:34:37
【问题描述】:

我很少看到函数式编程语言的静态分析器,比如 Racket/Scheme,我什至怀疑是否有。我想为功能语言编写一个静态分析器,比如 Scheme/Racket。我该怎么办?

【问题讨论】:

    标签: functional-programming scheme racket analyzer


    【解决方案1】:

    是的,有一些关于像 Scheme 这样的动态语言的静态分析的工作。例如,请参阅 Olin Shivers (http://www.ccs.neu.edu/home/shivers/citations.html) 和 Manuel Serrano (http://www-sop.inria.fr/members/Manuel.Serrano/index-1.html) 的工作。

    【讨论】:

    • 是否有一些开源代码可供下载供人们使用?我没有看到 Onlin Shiver 或其他人发布任何静态分析器的东西?
    • 我确信那里有一堆代码。运行分析的最佳指针可能是 Matt Might,他最近发表了一篇关于使用 GPU 加速 0CFA 的论文。
    【解决方案2】:

    已经有,例如,键入球拍:http://docs.racket-lang.org/ts-guide/index.html 由于有效的球拍代码是有效的类型球拍,您只需更改您正在使用的语言。然后,对于具有类型化版本的库,加载那些而不是非类型化版本,并且某些类型错误可能已经被静态捕获。可以将更多类型注释添加到您自己的代码中,以保证类型正确性...

    【讨论】:

      【解决方案3】:

      首先阅读 Shivers 的 this paper,解释了为什么 Scheme 中没有可用的静态控制流程图。

      可能实现k-CFA in Scheme。 Matt Might 的 site 和 blog 是探索高阶语言静态分析的良好起点。

      我也为 Java 中的 Scheme 做了一些静态分析实现:

      【讨论】:

      • 来自 Shivers 论文的摘要:“我提出了一种在编译时恢复 Scheme 程序的控制流图的技术。”当然,静态控制流图并不明显,但它确实存在。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-07-15
      • 1970-01-01
      • 2012-05-30
      • 2011-12-30
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多