我有一个想法,用于一种业余爱好项目,该项目进行一些代码分析和操纵。这个项目将需要两个具体的和抽象的法树木的特定来源的文件。此外,双方向引用两者之间的树木将会有所帮助。我想要避免工作的转录语法建造我自己的语法分析程序和分析程序。

是否有一个标准格式,用于描述的任一具体或抽象的法树吗?做任何广泛使用的工具链支持输出到这些格式?

我没有特定目标的编程语言中心。任何一个受欢迎的将做为一个原型,但我更想要一个我知道:Python,C#,Javascript,或C/C++。

我想能够运行的一个来源文件通过一个工具或图书馆,并取回这两种树木。在一个理想的世界,这将是实际运行这个工具在码,因为它正在编辑通过一个用户和宽容的错误。再次,我只是试图开发一个原型,因此这些要求是相当宽松。

谢谢!

有帮助吗?

解决方案

我们在UML定义的AST元模型,并使用ANTLR(Java)的我们的项目来填充模型。我们还坚持从ANTLR令牌信息解析之后,但我们还没有尝试过更新基础的文本文件,对模型进行的修改。

这有一个可怕的开销(在基础设施,如Eclipse UML2 / EMF),但我们的目标是使用高级工具的基于模型的/驱动开发(MDD,MDA)无论如何,所以我们决定用它在每个级别。

我觉得我们的学生曾经与了openArchitectureWare 起到之一,并设法从基于Eclipse的变化,生成编辑器返回到语法树(不涉及上述的UML模型)自动,但我不知道这个细节。

您可能也想看看 ANTLR的树语法。

其他提示

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

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

此问题似乎得到解决了一遍又一遍。 有多年来所取得半打“工具总线”的提案 所有的解决它,有没有人超车的行业。 问题是,一个)可以方便地使用来表示的AST 任何一种可嵌套的记号[括号像LISP,  如XML,...]所以人们很容易地推出自己的解决方案, 和b)一个工具来用相互交换的AST,他们 既要对什么AST节点意味着基本一致; 但大多数的AST是相当意外地从特定的衍生 使用的每个工具的语法/解析技术,并有 几乎总是分歧有关工具之间。 所以,我看到很少的工具,交换的AST有意义的。

如果你正在做一个业余爱好的事情,我会坚持口齿不清样 的树,其中每个节点具有以下格式编码:     (......) 其容易产生,并且容易阅读。

我在专业工具工作,以操纵活动。要是我们 已经打印出来的AST,我们做以上。天色个人 AST的都太复杂,看在实践中, 所以我们几乎没有打印出整个AST,充其量只 节点和深几个孩子。我们的工具不交换 与任何人的AST(见上述原因:)但少了点 优美的建筑在内存中,这样做whizzy事情吧 分析原因或改造的原因,然后 要么只是它delete一个(无需任何地方发送) 或再生从树的原始语言文字。 [后者意味着你需要反解析或“以漂亮的” 技术]

具体标准的期望,而更多的一般目的标准可能也是适当的。爱尔兰共和军已经提到巴克斯特 GXL, , 卢旺达国防军 可以加入过,只是,它将需要一个适当的体和更面向语义过语法。仍然可能是一个选项进行调查。

对具体标准,爱尔兰共和军已经提到巴克斯特 ASTM, 另一,虽然相反的目标的一个具体种编程语言(逻辑的语言), 一个标准语义/概念性曲线图, 称为 ISO‑IEC24707 2007年.

不准在自己的,但是报纸关于这个问题: 对便携式的源代码表示使用XML .

我不知道任何有效地使用标准(在这个地区,总是房屋所作的烹饪处),我只是有兴趣也在这个主题。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top