Ich implementierte ein Programm TreeScanner, um Informationen über alle Knoten in AST zu drucken. Das Programm unterstützt alle Arten (alle Besuchsmethoden sind implementiert). Das Problem besteht jedoch darin, dass für die Anweisung System.out.println(object.YYY);
das Programm Feldreferenz YYY nicht besucht.Wie drucken Syntaxbaum mit Javac
Es erkennt Objekt als Identifikator, kann aber nicht YYY als Identifikator erkennen. Allerdings, wenn ich System.out.println (YYY) habe; Dann besucht visitIdentifier YYY.
Bitte lassen Sie mich wissen, was der Unterschied zwischen den beiden oben genannten Zeilen ist, während in einem YYY visitedidentifier besucht wird, in dem anderen Fall wird es nicht besucht.
Wie kann ich besuchen YYY in object.YYY?
In Klasse org.eclipse.jdt.core.dom wir haben FieldAccess, die in den beiden oben genannten Fällen für YYY genannt wird, scheint aber TreeScanner in Javac kein ähnliches Verfahren hat.
Es könnte helfen, einen Code zu schreiben ... – tddmonkey
Ist 'YYY' ein' statische final' (das heißt konstant) Feld? –
Ich überprüfte alle diese Fälle: statisches, statisches endgültiges und normales Feld. In allen drei Fällen konnte YYY nicht als Kennung erkannt werden. –