JSR-14 v2.0 signature details

In brief, the 2.0 prototype compiler allows variance specifiers '-', '+', '=', or '*' to start a TypeArgument or after the open-brackets in an ArrayTypeSignature. A formal grammar (with corrections from the JSR-14 spec, including a new correction to ClassTypeSignature) is:

MethodOrFieldSignature ::= TypeSignature

ClassSignature         ::= ParameterPartOpt super_TypeSignature interface_TypeSignatures

TypeSignatures         ::= TypeSignatures TypeSignature
                        |

TypeSignature          ::= ...
                        |  ArrayTypeSignature
                        |  ClassTypeSignature
                        |  MethodTypeSignature
                        |  TypeVariableSignature

VariantTypeSignature   ::= '-' TypeSignature
                        |  '+' TypeSignature
                        |  '=' TypeSignature
                        |  TypeSignature
                        |  '*'

VariantTypeSignatures  ::= VariantTypeSignatures VariantTypeSignature
                        |

ClassTypeSignature     ::= 'L' Ident TypeArgumentsOpt ';'
                        |  ClassTypeSignature '.' 'L' Ident TypeArgumentsOpt ';'

MethodTypeSignature    ::= ParameterPartOpt '(' TypeSignatures ')'
                           TypeSignature ThrowsSignatureListOpt

ThrowsSignatureList    ::= ThrowsSignature ThrowsSignatureList
                        |  ThrowsSignature

ThrowsSignature        ::= '^' TypeSignature

TypeVariableSignature  ::= 'T' Ident ';'

TypeArguments          ::= '<' VariantTypeSignature VariantTypeSignatures '>'

ParameterPart          ::= '<' ParameterSignature ParameterSignatures '>'

ParameterSignatures    ::= ParameterSignatures ParameterSignature
                        |

ParameterSignature     ::= Ident ':' TypeSignature
                        |  Ident ':' TypeSignatureOpt ':' TypeSignature TypeSignatures

ArrayTypeSignature     ::= '[' VariantTypeSignature

interface_TypeSignature::= TypeSignature

super_TypeSignature    ::= TypeSignature

cananian at mit.edu

Valid XHTML 1.0!