我将 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?)