Namespace and Type Declarations
<nameSpaceHead> ::= .namespace <compName> <classHead> ::= .class <classAttrs> <id> <extendsClause> <implClause> <classAttrs> ::= /* EMPTY */ <classAttrs> <classAttr> <classAttr> ::= <classAttr> public <classAttr> private <classAttr> nested public <classAttr> nested private <classAttr> nested family <classAttr> nested assembly <classAttr> nested famandassem <classAttr> nested famorassem <classAttr> value <classAttr> enum <classAttr> interface <classAttr> sealed <classAttr> abstract <classAttr> auto <classAttr> sequential <classAttr> explicit <classAttr> ansi <classAttr> unicode <classAttr> autochar <classAttr> import <classAttr> serializable <classAttr> beforefieldinit <classAttr> specialname <classAttr> rtspecialname <extendsClause> ::= /* EMPTY */ extends <classRef> <implClause> ::= /* EMPTY */ implements <classRefs> <classRefs> ::= <classRefs>,<classRef> <classRef> <classRef> ::= [ <compName> ] <slashedName> [.module <compName> ] <slashedName> <slashedName> <slashedName> ::= <compName> <slashedName>/<compName> <classDecls> ::= /* EMPTY */ <classDecls> <classDecl> <classDecl> ::= <methodHead> <methodDecls> } <classHead> { <classDecls> } <eventHead> { <eventDecls> } <propHead> { <propDecls> } <fieldDecl> <dataDecl> <secDecl> <extSourceSpec> <customAttrDecl> .size <int32> .pack <int32> .override <typeSpec>::<methodName> with <callConv> <type> <typeSpec>::<methodName>( <sigArgs>) <languageDecl>