module: { decl_def } decl_def: import class_decl_def struct_decl_def union_decl_def enum_decl_def import: "import" identifier ";" class_decl_def: class_declaration class_definition class_declaration: "class" identifier ";" class_definition: "class" identifier [ ":" identifier ] "{" { protection { class_member } } "}" protection: "private" | "protected" | "public" | "export" enum_decl_def: enum_declaration enum_definition enum_declaration: "enum" identifier ";" enum_definition: "enum" identifier "{" [ enum_member { "," enum_member }] "}" enum_member: identifier [ "=" expression ] union_decl_def: union_declaration union_definition union_declaration: "union" identifier ";" union_definition: "union" identifier "{" [ member { "," member }] "}" struct_decl_def: struct_declaration struct_definition struct_declaration: "struct" identifier ";" struct_definition: "struct" identifier "{" [ member { "," member }] "}" member: declaration struct_definition ";" union_definition ";" class_member: declaration struct_definition ";" union_definition ";" declaration: { qualifier } declaration qualifier: "static" "synchronized" "final" basic_type: "bool" "char" "byte" "short" "ushort" "wchar" "int" "unsigned" "long" "ulong" "float" "double" "ldouble"