加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

解析 – Scala的ANTLR语法?

发布时间:2020-12-16 19:07:14 所属栏目:安全 来源:网络整理
导读:我正在为演示项目构建一个静态分析工具.我们可以自由选择要分析的语言.我开始使用ANTLR编写一个 Java代码分析器.我现在想为Scala代码做同样的事情.但是,我找不到Scala的ANTLR语法.是否存在? Scala语法有其他机器可读形式吗? 解决方法 我不相信有这样的事情
我正在为演示项目构建一个静态分析工具.我们可以自由选择要分析的语言.我开始使用ANTLR编写一个 Java代码分析器.我现在想为Scala代码做同样的事情.但是,我找不到Scala的ANTLR语法.是否存在?
Scala语法有其他机器可读形式吗?

解决方法

我不相信有这样的事情.

事实是,对于任何语言,特别是对于Scala这样的图书馆语言,词法分析和句法分析是静态分析中最不重要和最琐碎的部分.为了做任何甚至远程有趣的事情,您需要执行大量的语义分析:desugaring,类型推断,类型检查,种类检查,宏扩展,重载分辨率,隐式解析,名称绑定.简而言之:您需要重新实现整个Scala编译器,模数实际代码生成部分.记住,Scala的宏系统和Scala的类型系统都是图灵完整的(实际上,Scala的宏系统是Scala!):可能会有重要的编译时和类型级的计算,这是不可能分析而不实际执行宏扩展,键入推断和类型检查.

这是一项巨大的任务,实际上只有两个项目已经成功完成:一个是Scala编译器本身,另一个是IntelliJ IDEA Scala插件.

我们甚至不用谈论编译器插件,它们能够以几乎任意的方式改变Scala的语法和语义.

但是有希望:Scala编译器本身提供了一个称为Presentation Compiler的API,它专为IDE,代码荧光笔和各种静态分析工具而设计.它可以让您访问编译器在编译期间,在优化和代码生成阶段之前的整个信息.它由ScalaDoc,Scala REPL,Scala Eclipse插件,NetBeans Scala插件,SimplyScala.Com,用于Emacs的ENSIME插件,一些静态分析工具等等使用.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读