TypeScript 1.5 Supplemental Grammar

1 TypeScript Supplemental Grammar

TypeParameters:<TypeParameterList> TypeParameterList:TypeParameter TypeParameterList,TypeParameter TypeParameter:IdentifierConstraintopt Constraint:extendsType TypeArguments:<TypeArgumentList> TypeArgumentList:TypeArgument TypeArgumentList,TypeArgument TypeArgument:Type Type:PrimaryOrUnionType FunctionType ConstructorType PrimaryOrUnionType:PrimaryType UnionType PrimaryType:ParenthesizedType PredefinedType TypeReference ObjectType ArrayType TupleType TypeQuery ParenthesizedType:(Type) PredefinedType:any number boolean string void TypeReference:TypeName[no LineTerminator here]TypeArgumentsopt TypeName:Identifier ModuleName.Identifier ModuleName:Identifier ModuleName.Identifier ObjectType:{TypeBodyopt} TypeBody:TypeMemberList;opt TypeMemberList:TypeMember TypeMemberList;TypeMember TypeMember:PropertySignature CallSignature ConstructSignature IndexSignature MethodSignature ArrayType:PrimaryType[no LineTerminator here][] TupleType:[TupleElementTypes] TupleElementTypes:TupleElementType TupleElementTypes,TupleElementType TupleElementType:Type UnionType:PrimaryOrUnionType|PrimaryType FunctionType:TypeParametersopt(ParameterListopt)=>Type ConstructorType:newTypeParametersopt(ParameterListopt)=>Type TypeQuery:typeofTypeQueryExpression TypeQueryExpression:Identifier TypeQueryExpression.IdentifierName PropertySignature:PropertyName?optTypeAnnotationopt PropertyName:IdentifierName StringLiteral NumericLiteral CallSignature:TypeParametersopt(ParameterListopt)TypeAnnotationopt ParameterList:RequiredParameterList OptionalParameterList RestParameter RequiredParameterList,OptionalParameterList RequiredParameterList,RestParameter OptionalParameterList,RestParameter RequiredParameterList,OptionalParameterList,RestParameter RequiredParameterList:RequiredParameter RequiredParameterList,RequiredParameter RequiredParameter:AccessibilityModifieroptIdentifierTypeAnnotationopt Identifier:StringLiteral AccessibilityModifier:public private protected OptionalParameterList:OptionalParameter OptionalParameterList,OptionalParameter OptionalParameter:AccessibilityModifieroptIdentifier?TypeAnnotationopt AccessibilityModifieroptIdentifierTypeAnnotationoptInitializer Identifier?:StringLiteral RestParameter:...IdentifierTypeAnnotationopt ConstructSignature:newTypeParametersopt(ParameterListopt)TypeAnnotationopt IndexSignature:[Identifier:string]TypeAnnotation [Identifier:number]TypeAnnotation MethodSignature:PropertyName?optCallSignature TypeAliasDeclaration:typeIdentifier=Type; PropertyAssignment:PropertyName:AssignmentExpression PropertyNameCallSignature{FunctionBody} GetAccessor SetAccessor GetAccessor:getPropertyName()TypeAnnotationopt{FunctionBody} SetAccessor:setPropertyName(IdentifierTypeAnnotationopt){FunctionBody} ElementList:ElisionoptAssignmentExpression ElisionoptSpreadElement ElementList,ElisionoptAssignmentExpression ElementList,ElisionoptSpreadElement SpreadElement:...AssignmentExpression CallExpression:super(ArgumentListopt) super.IdentifierName FunctionExpression:functionIdentifieroptCallSignature{FunctionBody} AssignmentExpression:ArrowFunctionExpression ArrowFunctionExpression:ArrowFormalParameters=>Block ArrowFormalParameters=>AssignmentExpression ArrowFormalParameters:CallSignature Identifier Arguments:TypeArgumentsopt(ArgumentListopt) UnaryExpression:<Type>UnaryExpression VariableDeclaration:SimpleVariableDeclaration DestructuringVariableDeclaration SimpleVariableDeclaration:IdentifierTypeAnnotationoptInitializeropt TypeAnnotation::Type DestructuringVariableDeclaration:BindingPatternTypeAnnotationoptInitializer BindingPattern:ObjectBindingPattern ArrayBindingPattern ObjectBindingPattern:{} {BindingPropertyList,opt} BindingPropertyList:BindingProperty BindingPropertyList,BindingProperty BindingProperty:IdentifierInitializeropt PropertyName:IdentifierInitializeropt PropertyName:BindingPatternInitializeropt ArrayBindingPattern:[ElisionoptBindingRestElementopt] [BindingElementList] [BindingElementList,ElisionoptBindingRestElementopt] BindingElementList:ElisionoptBindingElement BindingElementList,ElisionoptBindingElement BindingElement:IdentifierInitializeropt BindingPatternInitializeropt BindingRestElement:...Identifier FunctionDeclaration:FunctionOverloadsoptFunctionImplementation FunctionOverloads:FunctionOverload FunctionOverloadsFunctionOverload FunctionOverload:functionIdentifierCallSignature; FunctionImplementation:functionIdentifierCallSignature{FunctionBody} InterfaceDeclaration:interfaceIdentifierTypeParametersoptInterfaceExtendsClauseoptObjectType InterfaceExtendsClause:extendsClassOrInterfaceTypeList ClassOrInterfaceTypeList:ClassOrInterfaceType ClassOrInterfaceTypeList,ClassOrInterfaceType ClassOrInterfaceType:TypeReference ClassDeclaration:classIdentifierTypeParametersoptClassHeritage{ClassBody} ClassHeritage:ClassExtendsClauseoptImplementsClauseopt ClassExtendsClause:extendsClassType ClassType:TypeReference ImplementsClause:implementsClassOrInterfaceTypeList ClassBody:ClassElementsopt ClassElements:ClassElement ClassElementsClassElement ClassElement:ConstructorDeclaration PropertyMemberDeclaration IndexMemberDeclaration ConstructorDeclaration:ConstructorOverloadsoptConstructorImplementation ConstructorOverloads:ConstructorOverload ConstructorOverloadsConstructorOverload ConstructorOverload:AccessibilityModifieroptconstructor(ParameterListopt); ConstructorImplementation:AccessibilityModifieroptconstructor(ParameterListopt){FunctionBody} PropertyMemberDeclaration:MemberVariableDeclaration MemberFunctionDeclaration MemberAccessorDeclaration MemberVariableDeclaration:AccessibilityModifieroptstaticoptPropertyNameTypeAnnotationoptInitializeropt; MemberFunctionDeclaration:MemberFunctionOverloadsoptMemberFunctionImplementation MemberFunctionOverloads:MemberFunctionOverload MemberFunctionOverloadsMemberFunctionOverload MemberFunctionOverload:AccessibilityModifieroptstaticoptPropertyNameCallSignature; MemberFunctionImplementation:AccessibilityModifieroptstaticoptPropertyNameCallSignature{FunctionBody} MemberAccessorDeclaration:AccessibilityModifieroptstaticoptGetAccessor AccessibilityModifieroptstaticoptSetAccessor IndexMemberDeclaration:IndexSignature; EnumDeclaration:constoptenumIdentifier{EnumBodyopt} EnumBody:EnumMemberList,opt EnumMemberList:EnumMember EnumMemberList,EnumMember EnumMember:PropertyName PropertyName=EnumValue EnumValue:AssignmentExpression ModuleDeclaration:moduleIdentifierPath{ModuleBody} IdentifierPath:Identifier IdentifierPath.Identifier ModuleBody:ModuleElementsopt ModuleElements:ModuleElement ModuleElementsModuleElement ModuleElement:Statement exportoptVariableDeclaration exportoptFunctionDeclaration exportoptClassDeclaration exportoptInterfaceDeclaration exportoptTypeAliasDeclaration exportoptEnumDeclaration exportoptModuleDeclaration exportoptImportDeclaration exportoptAmbientDeclaration ImportDeclaration:importIdentifier=EntityName; EntityName:ModuleName ModuleName.Identifier SourceFile:ImplementationSourceFile DeclarationSourceFile ImplementationSourceFile:ImplementationElementsopt ImplementationElements:ImplementationElement ImplementationElementsImplementationElement ImplementationElement:ModuleElement ExportAssignment AmbientExternalModuleDeclaration exportoptExternalImportDeclaration DeclarationSourceFile:DeclarationElementsopt DeclarationElements:DeclarationElement DeclarationElementsDeclarationElement DeclarationElement:ExportAssignment AmbientExternalModuleDeclaration exportoptInterfaceDeclaration exportoptTypeAliasDeclaration exportoptImportDeclaration exportoptAmbientDeclaration exportoptExternalImportDeclaration ExternalImportDeclaration:importIdentifier=ExternalModuleReference; ExternalModuleReference:require(StringLiteral) ExportAssignment:export=Identifier; AmbientDeclaration:declareAmbientVariableDeclaration declareAmbientFunctionDeclaration declareAmbientClassDeclaration declareAmbientEnumDeclaration declareAmbientModuleDeclaration AmbientVariableDeclaration:varIdentifierTypeAnnotationopt; AmbientFunctionDeclaration:functionIdentifierCallSignature; AmbientClassDeclaration:classIdentifierTypeParametersoptClassHeritage{AmbientClassBody} AmbientClassBody:AmbientClassBodyElementsopt AmbientClassBodyElements:AmbientClassBodyElement AmbientClassBodyElementsAmbientClassBodyElement AmbientClassBodyElement:AmbientConstructorDeclaration AmbientPropertyMemberDeclaration IndexSignature AmbientConstructorDeclaration:constructor(ParameterListopt); AmbientPropertyMemberDeclaration:AccessibilityModifieroptstaticoptPropertyNameTypeAnnotationopt; AccessibilityModifieroptstaticoptPropertyNameCallSignature; AmbientEnumDeclaration:EnumDeclaration AmbientModuleDeclaration:moduleIdentifierPath{AmbientModuleBody} AmbientModuleBody:AmbientModuleElementsopt AmbientModuleElements:AmbientModuleElement AmbientModuleElementsAmbientModuleElement AmbientModuleElement:exportoptAmbientVariableDeclaration exportoptAmbientFunctionDeclaration exportoptAmbientClassDeclaration exportoptInterfaceDeclaration exportoptAmbientEnumDeclaration exportoptAmbientModuleDeclaration exportoptImportDeclaration AmbientExternalModuleDeclaration:declaremoduleStringLiteral{AmbientExternalModuleBody} AmbientExternalModuleBody:AmbientExternalModuleElementsopt AmbientExternalModuleElements:AmbientExternalModuleElement AmbientExternalModuleElementsAmbientExternalModuleElement AmbientExternalModuleElement:AmbientModuleElement ExportAssignment exportoptExternalImportDeclaration