This tentative grammar takes some notational liberties beyond the conventions in ECMA-262.
This is a temporary accommodation for authors in order to avoid extensive duplication of ECMA-262's grammar.
Within Modified Productions, RHS productions with insert-formatted text (such as this text) indicates the addition of these RHS productions to existing productions in ECMA-262.
Otherwise, RHS productions in Modified Productions are intended to replace the original productions in ECMA-262.
TypeArguments:AngleBracketedTokensTypeDeclaration:typeBindingIdentifierTypeParametersopt=TypeTypeParameters:AngleBracketedTokensType:ConditionalTypeNonConditionalTypeConditionalType:NonConditionalType[no LineTerminator here]extendsNonConditionalType?Type:TypeNonConditionalType:UnionTypeFunctionTypeConstructorTypeUnionType:|optIntersectionTypeUnionType|IntersectionTypeIntersectionType:&optTypeOperatorTypeIntersectionType&TypeOperatorTypeTypeOperatorType:readonlyTypeOperatorTypekeyofTypeOperatorTypeuniqueTypeOperatorTypeinferTypeOperatorTypenotTypeOperatorTypePrimaryTypePrimaryType:ParenthesizedTypeSquareBracketedTypeCurlyBracketedTypeTypeReferenceArrayTypeLiteralTypeTypeQueryImportTypeTypePredicatethisvoidParenthesizedType:ParenthesizedTokensSquareBracketedType:SquareBracketedTokensCurlyBracketedType:CurlyBracketedTokensTypeReference:TypeName[no LineTerminator here]TypeArgumentsoptTypeName:IdentifierTypeName.IdentifierArrayType:PrimaryType[no LineTerminator here][]LiteralType:NumericLiteralTypeStringLiteralTemplateLiteralTypetruefalsenullTemplateLiteralType:NoSubstitutionTemplateTemplateBracketedTokensNumericLiteralType:NumericLiteral-[no LineTerminator here]NumericLiteralTypeQuery:typeof[no LineTerminator here]EntityNameEntityName:IdentifierNameImportSpecifierEntityName.IdentifierNameEntityName::TypeArgumentsImportSpecifier:import[no LineTerminator here](ModuleSpecifier)ImportType:ImportSpecifierImportSpecifier.TypeNameTypePredicate:IdentifierOrThis[no LineTerminator here]isTypeassertsIdentifierOrThisassertsIdentifierOrThis[no LineTerminator here]isTypeIdentifierOrThis:IdentifierthisFunctionType:TypeParametersoptParameterList=>TypeConstructorType:newTypeParametersoptParameterList=>TypeParameterList:ParenthesizedTokensInterfaceDeclaration:interfaceBindingIdentifierTypeParametersoptInterfaceExtendsClauseoptInterfaceBodyInterfaceExtendsClause:extendsClassOrInterfaceTypeListClassOrInterfaceTypeList:TypeReferenceClassOrInterfaceTypeList,TypeReferenceInterfaceBody:CurlyBracketedTokensTypeAnnotation::TypeAbstractModifier:abstractClassImplementsClause:implementsClassOrInterfaceTypeListAccessibilityModifier:publicprotectedprivateOverrideModifier:overrideAbstractClassElement:AccessibilityModifieroptabstractOverrideModifieroptAbstractMethodDefinitionAccessibilityModifieroptabstractAbstractFieldDefinitionAbstractMethodDefinition:ClassElementNameTypeParametersopt(UniqueFormalParameters)TypeAnnotationoptgetClassElementName()TypeAnnotationoptsetClassElementName(PropertySetParameterList)AbstractFieldDefinition:ClassElementName?optTypeAnnotationoptIndexSignature:[BindingIdentifierTypeAnnotation]TypeAnnotationBracketedTokens:ParenthesizedTokensSquareBracketedTokensCurlyBracketedTokensAngleBracketedTokensTemplateBracketedTokensParenthesizedTokens:(TokenBodyopt)SquareBracketedTokens:[TokenBodyopt]CurlyBracketedTokens:{TokenBodyopt}AngleBracketedTokens:<TokenBodyopt>TemplateBracketedTokens:TemplateHeadTemplateTokenBodyTemplateTailTemplateTokenBody:TokenBodyTokenBodyTemplateMiddleTemplateTokenBodyTokenBody:TokenOrBracketedTokensTokenBodyoptTokenOrBracketedTokens:NonBracketedTokenBracketedTokensNonBracketedToken:Tokenbut not one of ( or ) or [ or ] or { or } or < or > or TemplateHead or TemplateMiddle or TemplateTail