我正在努力解决似乎是 Visual Basic 中的错误。我可能错过了一些东西。希望有人能指出它是什么。
10.0 版的 Visual Basic 规范第 7.5 节说这是类声明的语法。请原谅缺少指示文字和语法节点之间差异的斜体。
ClassDeclaration ::=
[ Attributes ] [ ClassModifier+ ] Class Identifier [ TypeParameterList ] StatementTerminator
[ ClassBase ]
[ TypeImplementsClause+ ]
[ ClassMemberDeclaration+ ]
End Class StatementTerminator
ClassModifier ::= TypeModifier | MustInherit | NotInheritable | Partial
所以最小的类声明将是
Class Identifier StatementTerminator
End Class StatementTerminator
13.1.2 中指定了语法Identifier
和其他一些支持节点,
Identifier ::=
NonEscapedIdentifier [ TypeCharacter ] |
Keyword TypeCharacter |
EscapedIdentifier
NonEscapedIdentifier ::= < IdentifierName but not Keyword >
TypeCharacter ::=
IntegerTypeCharacter |
LongTypeCharacter |
DecimalTypeCharacter |
SingleTypeCharacter |
DoubleTypeCharacter |
StringTypeCharacter
IntegerTypeCharacter ::= %
LongTypeCharacter ::= &
DecimalTypeCharacter ::= @
SingleTypeCharacter ::= !
DoubleTypeCharacter ::= #
StringTypeCharacter ::= $
根据我的阅读,这foo!
应该是一个合法的标识符,因为!
它是一个TypeCharacter
.
所以,根据上面的最小合法类声明,这应该是合法的。
Class foo!
End Class
但是 Visual Studio 2010 给出了这个:
类型声明字符在此上下文中无效。
我是否遗漏了规范中的某些内容,或者编译器是否不同意规范?