1

我将 Java 代码生成为字符串,并且我有类似的表达式

parameter.field.method();

ASTParser然后我使用 Eclipse JDT和子表达式将生成的代码解析为 AST

parameter.field

变成一个QualifiedName,而不是一个FieldAccess。这会导致问题,因为后来我清理了限定名称(使用来自Clean Qualified Types Plugin的代码)。

作为状态的JavaDocFieldAccess

像“foo.bar”这样的表达式可以表示为限定名称 ( ) 或包含简单名称QualifiedName的字段访问表达式 ( )。FieldAccess任何一个都是可以接受的,如果没有关于名称解析到什么的信息(ASTParser可能会返回),就无法在它们之间进行选择。

我应该生成什么以便解析器可以明确地知道这是一个FieldAccess

(一个有趣的附带问题:Java 编译器如何消除可能性之间的歧义?每当遇到 aQualifiedName时,它也会尝试FieldAccess通过解析名称来将其解释为 a?)

4

1 回答 1

1

我找到的最小解决方案是在参数周围生成括号:

(parameter).field.method();
于 2013-06-26T15:19:04.293 回答