我正在研究Java源代碼解析器,遵循lexical和syntactic規範。如何在Java語言分析器中正確標記「@」符號?
雖然我被困在註釋上,相關的規則是:
Annotation:
@ QualifiedIdentifier [ ([AnnotationElement]) ]
AnnotationTypeDeclaration:
@ interface Identifier AnnotationTypeBody
,但我沒有看到在詞彙規範的任何地方提到@
符號。標記化@
的正確規則是什麼,或者我在哪裏可以找到這樣的規則?
我意識到我可以很容易地爲此添加令牌定義,甚至可能有效。但如果可能的話,我寧願按照規範正確地做。
有趣!這些規則意味着'@ SomeAnnotation public @ interface Foo {}'是有效的,事實上編譯器似乎沒有抱怨添加的空白。所以它看起來像'@'被看作是一個單獨的標記(甚至是'儘管它通常是格式化的,它與下一個標記之間沒有空格)。 –