是什么让libadalang特别?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了是什么让libadalang特别?相关的知识,希望对你有一定的参考价值。
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的想法 - 即将计算机程序解释为可以以编程方式解释(或以其他方式分析)的正式数据结构。
您可以将“libadalang”视为ASIS Mark II。 AdaCore似乎试图重新思考ASIS,以支持ASIS已经可以做的事情,以及更轻量级的操作,在这些操作中,您不需要编译源,以提供对它的分析。
希望最终的API能够比ASIS更好。
所以不,这不是一种独特的方法。它已经为Ada做了。 (但我不知道其他语言的类似库。)
以上是关于是什么让libadalang特别?的主要内容,如果未能解决你的问题,请参考以下文章
终于懂了:Delphi重定义消息结构随心所欲,只需要前4个字节是消息编号就行了,跟Windows消息虽然尽量保持一致,但其实相互没有特别大的关系。有了这个,就有了主动,带不带句柄完全看需要。(代码片段