如何在Java语言解析器中正确标记'@'符号?

时间:2012-11-16 14:20:34

标签: java parsing grammar token language-details

我正在按照lexicalsyntactic规范开发Java源代码解析器。

但是,我仍然坚持注释;相关规则是:

Annotation:
    @ QualifiedIdentifier [ ( [AnnotationElement] ) ]

AnnotationTypeDeclaration:
    @ interface Identifier AnnotationTypeBody

但我没有看到词法规范中任何地方提到的@符号。标记@的正确规则是什么,或者我在哪里可以找到这样的规则?

我意识到我可以轻松地为此添加一个令牌定义,它甚至可能有效。但是如果可能的话,我更愿意根据规范正确地做到这一点。

2 个答案:

答案 0 :(得分:5)

9.6. Annotation Types 中,它说:

  

请注意,at符号(@)和关键字界面是两个不同的标记。从技术上讲,可以用空格分隔它们,但不鼓励这种风格。

答案 1 :(得分:1)

你是正确的,因为'@'在JLS的“3.词汇结构”部分中没有被提及为操作符或标点符号。

但是,它在JLS 9.6中用作符号,也用作“18. Collected Syntax”部分,因此很明显你的词法分析器应将其视为一个。

这只是一个小编辑问题,而不是在实现Java解析器时会引起任何关注的问题。