gpt4 book ai didi

parsing - 具体和抽象语法树的标准格式

转载 作者:行者123 更新时间:2023-12-02 20:50:46 27 4
gpt4 key购买 nike

我有一个爱好项目的想法,它可以执行一些代码分析和操作。该项目将需要给定源文件的具体和抽象语法树。此外,两棵树之间的双向引用也会很有帮助。我想避免转录语法来构建我自己的词法分析器和解析器的工作。

是否有描述具体或抽象语法树的标准格式?是否有广泛使用的工具链支持输出为这些格式?

我心里没有特定的目标编程语言。任何流行的都可以用作原型(prototype),但我更喜欢我熟悉的一种:Python、C#、Javascript 或 C/C++。

我希望能够通过工具或库运行源文件并取回两棵树。在理想的情况下,在用户正在编辑的代码上运行此工具并容忍错误是可行的。再说一次,我只是想开发一个原型(prototype),所以这些要求相当宽松。

谢谢!

最佳答案

研究界认为,将信息从一种程序分析工具转移到另一种程序分析工具时,图形交换是正确的做法。请参阅http://www.gupro.de/GXL

最近,OMG 定义了交换抽象语法树的标准。请参阅http://www.omg.org/spec/ASTM/1.0/Beta1/

这个问题似乎一次又一次地得到解决。多年来提出了六项“工具总线”提案这一切都解决了这个问题,没有人能够超越这个行业。问题是 a) 使用 AST 很容易表示任何类型的可嵌套表示法 [像 LISP 这样的括号, 像 XML,...] 因此人们可以轻松推出自己的解决方案,b) 对于一种工具与另一种工具交换 AST,它们双方必须在 AST 节点的含义上达成基本一致;但大多数 AST 都是偶然从特定的每个工具使用的语法/解析技术,并且有工具之间几乎总是存在分歧。因此,我见过很少有工具能够有意义地交换 AST。

如果你正在做一个爱好,我会坚持使用类似 lisp 的东西树的编码,其中每个节点具有以下格式: (...)它易于生成且易于阅读。

我正在研究professional tool to manipulate programs 。要是我们打印出 AST 后,我们执行上述操作。大多是个人AST 在实践中太复杂了,所以我们几乎不会打印出整个 AST,最多只是一个节点和几个 child 深。我们的工具不交换与任何人一起使用 AST(参见上述原因:),但只是很好地在内存中构建它,用它做一些奇怪的事情出于分析原因或转换原因,然后要么只是删除它(不需要将其发送到任何地方)或者从树中重新生成原始语言文本。[后者意味着你需要反解析或“ pretty-print ”技术]

关于parsing - 具体和抽象语法树的标准格式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/556085/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com