我正在按照lexical和syntactic规范开发Java源代码解析器。
但是,我仍然坚持注释;相关规则是:Annotation:
@ QualifiedIdentifier [ ( [AnnotationElement] ) ]
AnnotationTypeDeclaration:
@ interface Identifier AnnotationTypeBody
但我没有看到词法规范中任何地方提到的@
符号。标记@
的正确规则是什么,或者我在哪里可以找到这样的规则?
我意识到我可以轻松地为此添加一个令牌定义,它甚至可能有效。但是如果可能的话,我更愿意根据规范正确地做到这一点。
答案 0 :(得分:5)
在9.6. Annotation Types 中,它说:
请注意,at符号(@)和关键字界面是两个不同的标记。从技术上讲,可以用空格分隔它们,但不鼓励这种风格。
答案 1 :(得分:1)
你是正确的,因为'@'在JLS的“3.词汇结构”部分中没有被提及为操作符或标点符号。
但是,它在JLS 9.6中用作符号,也用作“18. Collected Syntax”部分,因此很明显你的词法分析器应将其视为一个。
这只是一个小编辑问题,而不是在实现Java解析器时会引起任何关注的问题。