是什么让libadalang特别?

问题描述 投票:2回答:2

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

parsing compiler-construction ada
2个回答
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&Sussman的经典教科书Structure and Interpretation of Computer Programs(1985年第1版,1996年第2版),这有助于普及Metacircular Interpretation的想法 - 即将计算机程序解释为可以以编程方式解释(或以其他方式分析)的正式数据结构。


3
投票

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

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

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

© www.soinside.com 2019 - 2024. All rights reserved.