Extrait de la grammaire du compilateur d'Eclipse (JDT) "org.eclipse.jdt.core/grammar/java.g" ----------------------------------------------- -- 1.5 features : generics ----------------------------------------------- TypeArguments ::= '<' TypeArgumentList1 OnlyTypeArguments ::= '<' TypeArgumentList1 TypeArgumentList1 -> TypeArgument1 TypeArgumentList1 ::= TypeArgumentList ',' TypeArgument1 TypeArgumentList -> TypeArgument TypeArgumentList ::= TypeArgumentList ',' TypeArgument TypeArgument ::= ReferenceType TypeArgument -> Wildcard TypeArgument1 -> ReferenceType1 TypeArgument1 -> Wildcard1 ReferenceType1 ::= ReferenceType '>' ReferenceType1 ::= ClassOrInterface '<' TypeArgumentList2 TypeArgumentList2 -> TypeArgument2 TypeArgumentList2 ::= TypeArgumentList ',' TypeArgument2 TypeArgument2 -> ReferenceType2 TypeArgument2 -> Wildcard2 ReferenceType2 ::= ReferenceType '>>' ReferenceType2 ::= ClassOrInterface '<' TypeArgumentList3 TypeArgumentList3 -> TypeArgument3 TypeArgumentList3 ::= TypeArgumentList ',' TypeArgument3 TypeArgument3 -> ReferenceType3 TypeArgument3 -> Wildcard3 ReferenceType3 ::= ReferenceType '>>>' Wildcard ::= TypeAnnotationsopt '?' Wildcard ::= TypeAnnotationsopt '?' WildcardBounds WildcardBounds ::= 'extends' ReferenceType WildcardBounds ::= 'super' ReferenceType Wildcard1 ::= TypeAnnotationsopt '?' '>' Wildcard1 ::= TypeAnnotationsopt '?' WildcardBounds1 WildcardBounds1 ::= 'extends' ReferenceType1 WildcardBounds1 ::= 'super' ReferenceType1 Wildcard2 ::= TypeAnnotationsopt '?' '>>' Wildcard2 ::= TypeAnnotationsopt '?' WildcardBounds2 WildcardBounds2 ::= 'extends' ReferenceType2 WildcardBounds2 ::= 'super' ReferenceType2 Wildcard3 ::= TypeAnnotationsopt '?' '>>>' Wildcard3 ::= TypeAnnotationsopt '?' WildcardBounds3 WildcardBounds3 ::= 'extends' ReferenceType3 WildcardBounds3 ::= 'super' ReferenceType3 TypeParameterHeader ::= TypeAnnotationsopt Identifier TypeParameters ::= '<' TypeParameterList1 TypeParameterList -> TypeParameter TypeParameterList ::= TypeParameterList ',' TypeParameter TypeParameter -> TypeParameterHeader TypeParameter ::= TypeParameterHeader 'extends' ReferenceType TypeParameter ::= TypeParameterHeader 'extends' ReferenceType AdditionalBoundList AdditionalBoundList -> AdditionalBound AdditionalBoundList ::= AdditionalBoundList AdditionalBound AdditionalBound ::= '&' ReferenceType TypeParameterList1 -> TypeParameter1 TypeParameterList1 ::= TypeParameterList ',' TypeParameter1 TypeParameter1 ::= TypeParameterHeader '>' TypeParameter1 ::= TypeParameterHeader 'extends' ReferenceType1 TypeParameter1 ::= TypeParameterHeader 'extends' ReferenceType AdditionalBoundList1 AdditionalBoundList1 -> AdditionalBound1 AdditionalBoundList1 ::= AdditionalBoundList AdditionalBound1 AdditionalBound1 ::= '&' ReferenceType1