我想知道是否有办法获取用户输入的不完整代码片段的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
这不完全是理想的解决方案,但有人可能会发现它很有用,就像我一样。
答案 0 :(得分:1)
我不明白你想要达到的目标,但根据你的语法和使用的工具,你可能得到一个不完整的AST。从您的代码中,这样的AST可以如下:
__ = __
/ \
decl length fail