Я работаю над парсером исходного кода Java, следуя лексические и синтаксические спецификации.
Однако я застрял в аннотациях; соответствующие правила:
Annotation:
@ QualifiedIdentifier [ ( [AnnotationElement] ) ]
AnnotationTypeDeclaration:
@ interface Identifier AnnotationTypeBody
но я не вижу символа @
нигде в лексической спецификации. Каково правильное правило для токенизации @
или где я могу найти такое правило?
Я понимаю, что могу легко добавить определение токена для этого, и это может даже работать --- иногда. Но я бы предпочел сделать это правильно в соответствии со спецификацией, если это возможно.
@ SomeAnnotation public @ interface Foo { }
допустимо, и компилятор действительно не жалуется на добавленные пробелы. Таким образом, похоже, что@
рассматривается как отдельный токен (даже несмотря на то, что обычно он отформатирован без пробела между ним и следующим токеном). - person Joachim Sauer   schedule 16.11.2012