-class_attr : /* EMPTY */ \r
- | class_attr K_PUBLIC\r
- | class_attr K_PRIVATE\r
- | class_attr K_NESTED K_PRIVATE\r
- | class_attr K_NESTED K_PUBLIC\r
- | class_attr K_NESTED K_FAMILY\r
- | class_attr K_NESTED K_ASSEMBLY\r
- | class_attr K_NESTED K_FAMANDASSEM\r
- | class_attr K_NESTED K_FAMORASSEM\r
- | class_attr K_VALUE\r
- | class_attr K_ENUM\r
- | class_attr K_INTERFACE\r
- | class_attr K_SEALED\r
- | class_attr K_ABSTRACT\r
- | class_attr K_AUTO\r
- | class_attr K_SEQUENTIAL\r
- | class_attr K_EXPLICIT\r
- | class_attr K_ANSI\r
- | class_attr K_UNICODE\r
- | class_attr K_AUTOCHAR\r
- | class_attr K_IMPORT\r
- | class_attr K_SERIALIZABLE\r
- | class_attr K_BEFOREFIELDINIT\r
- | class_attr K_SPECIALNAME\r
- | class_attr K_RTSPECIALNAME\r
+class_attr : /* EMPTY */ \r
+ { \r
+ // Reset some flags\r
+ is_value_class = false;\r
+ is_enum_class = false;\r
+ $$ = new TypeAttr ();\r
+ }\r
+ | class_attr K_PUBLIC { $$ = (TypeAttr)$1 | TypeAttr.Public; } \r
+ | class_attr K_PRIVATE { $$ = (TypeAttr)$1 | TypeAttr.Private; }\r
+ | class_attr K_NESTED K_PRIVATE { $$ = (TypeAttr)$1 | TypeAttr.NestedPrivate; }\r
+ | class_attr K_NESTED K_PUBLIC { $$ = (TypeAttr)$1 | TypeAttr.NestedPublic; }\r
+ | class_attr K_NESTED K_FAMILY { $$ = (TypeAttr)$1 | TypeAttr.NestedFamily; }\r
+ | class_attr K_NESTED K_ASSEMBLY { $$ = (TypeAttr)$1 | TypeAttr.NestedAssembly;}\r
+ | class_attr K_NESTED K_FAMANDASSEM { $$ = (TypeAttr)$1 | TypeAttr.NestedFamAndAssem; }\r
+ | class_attr K_NESTED K_FAMORASSEM { $$ = (TypeAttr)$1 | TypeAttr.NestedFamOrAssem; }\r
+ | class_attr K_VALUE { is_value_class = true; }\r
+ | class_attr K_ENUM { is_enum_class = true; is_value_class = true;\r
+ }\r
+ | class_attr K_INTERFACE { $$ = (TypeAttr)$1 | TypeAttr.Interface; }\r
+ | class_attr K_SEALED { $$ = (TypeAttr)$1 | TypeAttr.Sealed; }\r
+ | class_attr K_ABSTRACT { $$ = (TypeAttr)$1 | TypeAttr.Abstract; }\r
+ | class_attr K_AUTO { }\r
+ | class_attr K_SEQUENTIAL { $$ = (TypeAttr)$1 | TypeAttr.SequentialLayout; }\r
+ | class_attr K_EXPLICIT { $$ = (TypeAttr)$1 | TypeAttr.ExplicitLayout; }\r
+ | class_attr K_ANSI { }\r
+ | class_attr K_UNICODE { $$ = (TypeAttr)$1 | TypeAttr.UnicodeClass; }\r
+ | class_attr K_AUTOCHAR { $$ = (TypeAttr)$1 | TypeAttr.AutoClass; }\r
+ | class_attr K_IMPORT { $$ = (TypeAttr)$1 | TypeAttr.Import; }\r
+ | class_attr K_SERIALIZABLE { $$ = (TypeAttr)$1 | TypeAttr.Serializable; }\r
+ | class_attr K_BEFOREFIELDINIT { $$ = (TypeAttr)$1 | TypeAttr.BeforeFieldInit; }\r
+ | class_attr K_SPECIALNAME { $$ = (TypeAttr)$1 | TypeAttr.SpecialName; }\r
+ | class_attr K_RTSPECIALNAME { $$ = (TypeAttr)$1 | TypeAttr.RTSpecialName; }\r