是什么让libadalang特别?

时间:2018-03-01 19:22:12

标签: parsing compiler-construction ada

我一直在阅读有关libadalang 1 2的文章,我对它印象非常深刻。但是,我想知道这种技术是否已被使用,而另一种语言支持用于语法和语义分析其代码的库。这是一种独特的方法吗?

2 个答案:

答案 0 :(得分:4)

C和C ++:libclang“Clang的C接口提供了一个相对较小的API,它公开了将源代码解析为抽象语法树(AST)的工具,加载已解析的AST,遍历AST,关联具有AST内元素的物理源位置,以及支持基于Clang的开发工具的其他工具。“ (有关C ++ API,请参阅libtooling

Python:请参阅Python Library手册的ast部分中的Python Language Services模块。 (其他模块也很有用。)

Javascript:正在进行的ESTree努力试图通过不同的Javascript引擎标准化解析服务。

C#和Visual Basic:请参阅.NET Compiler Platform ("Roslyn")

我确信还有更多;那些刚刚脱颖而出。

对于实践和理论基础,你绝对应该(重新)访问Abelson& amp; amp; amp; amp; amp; amp; Sussman(1985年第1版,1996年第2版),它帮助推广了元认知解释的理念 - 即将计算机程序解释为可以以编程方式解释(或以其他方式分析)的正式数据结构。

答案 1 :(得分:3)

您可以将“libadalang”视为ASIS Mark II。 AdaCore似乎试图重新思考ASIS,以支持ASIS已经可以做的事情,以及更轻量级的操作,在这些操作中你不需要编译源代码来提供它的分析。

希望最终的API能够比ASIS更好。

所以不,这不是一种独特的方法。它已经为Ada做了。 (但我不知道其他语言的类似库。)