3

我正在开发一个 Java 源代码解析器,遵循词法句法规范。

不过,我被困在注释上;相关规则是:

Annotation:
    @ QualifiedIdentifier [ ( [AnnotationElement] ) ]

AnnotationTypeDeclaration:
    @ interface Identifier AnnotationTypeBody

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

我意识到我可以很容易地为此添加一个令牌定义,它甚至可能会起作用——有时。但如果可能的话,我更愿意根据规范正确地做到这一点。

4

2 回答 2

5

9.6 中。注释类型,它说:

请注意,at 符号 (@) 和关键字接口是两个不同的标记。从技术上讲,可以用空格将它们分开,但出于风格问题,不鼓励这样做。

于 2012-11-16T14:27:54.953 回答
1

您是对的,因为在 JLS 的“3. Lexical Structure”部分中没有将“@”作为运算符或标点符号提及。

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

这只是一个次要的编辑问题,在实现 Java 解析器时不会引起您的任何担忧。

于 2012-11-16T14:33:11.007 回答