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