1

我想知道有没有办法获得用户输入的不完整代码片段的 AST。例如,让我们假设代码看起来像这样:

String str = "This is some string";
int length = str.length +

我可以获得此类代码的 AST 吗?这在语法上不正确,但我仍然需要 AST。

另外,我可以将这样的代码注入文本编辑器吗?理想情况下,我会将其添加为字符串,但 AST 格式也可以。

更新 1

准确地说,我是否能够以某种方式使用 ASTParser,以便在最后一行得到类似于以下 AST 的内容:

          =
      /       \
decl length    +
             /
        str.length

部分答案

JDT 的ASTParser可以与setStatementsRecovery一起使用,这将产生以下 AST:

         =
      /       \
decl length    str.length

这并不完全是理想的解决方案,但有人可能会发现它很有用,就像我一样。

4

1 回答 1

1

我不明白你想要达到什么目的,但根据你的语法和使用的工具,你可能会得到一个不完整的 AST。从您的代码中,这样的 AST 可能如下所示:

          __ = __
        /         \
decl length       fail
于 2012-09-05T18:35:41.983 回答