Index: src/Parser/ParseNode.h
===================================================================
--- src/Parser/ParseNode.h	(revision 03c56f62485cec6eca96f9be0ac85070249e0703)
+++ src/Parser/ParseNode.h	(revision 7cf8006687e5fe7356f0e97aabe15c2884ff7f77)
@@ -10,6 +10,6 @@
 // Created On       : Sat May 16 13:28:16 2015
 // Last Modified By : Peter A. Buhr
-// Last Modified On : Tue Oct 18 16:22:15 2022
-// Update Count     : 937
+// Last Modified On : Wed Nov  2 21:27:07 2022
+// Update Count     : 939
 //
 
@@ -168,4 +168,6 @@
 	Ctor, Dtor,
 }; // OperKinds
+
+enum class EnumHiding { Visible, Hide };
 
 struct LabelNode {
Index: src/Parser/parser.yy
===================================================================
--- src/Parser/parser.yy	(revision 03c56f62485cec6eca96f9be0ac85070249e0703)
+++ src/Parser/parser.yy	(revision 7cf8006687e5fe7356f0e97aabe15c2884ff7f77)
@@ -10,6 +10,6 @@
 // Created On       : Sat Sep  1 20:22:55 2001
 // Last Modified By : Peter A. Buhr
-// Last Modified On : Fri Oct 28 15:27:08 2022
-// Update Count     : 5764
+// Last Modified On : Wed Nov  2 21:31:21 2022
+// Update Count     : 5810
 //
 
@@ -278,4 +278,5 @@
 
 // Types declaration for productions
+
 %union {
 	Token tok;
@@ -290,5 +291,5 @@
 	CondCtl * ifctl;
 	ForCtrl * fctl;
-	enum OperKinds compop;
+	OperKinds compop;
 	LabelNode * label;
 	InitializerNode * in;
@@ -296,4 +297,5 @@
 	std::string * str;
 	bool flag;
+	EnumHiding hide;
 	CatchStmt::Kind catch_kind;
 	GenericExpr * genexpr;
@@ -364,4 +366,6 @@
 %type<constant> string_literal
 %type<str> string_literal_list
+
+%type<hide> hide_opt					visible_hide_opt
 
 // expressions
@@ -2554,5 +2558,5 @@
 		{ typedefTable.makeTypedef( *$3 ); }
 	  hide_opt '{' enumerator_list comma_opt '}'
-		{ $$ = DeclarationNode::newEnum( $3, $7, true, false )->addQualifiers( $2 ); }
+	  { $$ = DeclarationNode::newEnum( $3, $7, true, false )->addQualifiers( $2 ); }
 	| ENUM attribute_list_opt typedef_name				// unqualified type name
 	  hide_opt '{' enumerator_list comma_opt '}'
@@ -2598,5 +2602,7 @@
 hide_opt:
 	// empty
+		{ $$ = EnumHiding::Visible; }
 	| '!'
+		{ $$ = EnumHiding::Hide; }
 	;
 
@@ -2609,9 +2615,9 @@
 
 enumerator_list:
-	hide_visible_opt identifier_or_type_name enumerator_value_opt
+	visible_hide_opt identifier_or_type_name enumerator_value_opt
 		{ $$ = DeclarationNode::newEnumValueGeneric( $2, $3 ); }
 	| INLINE type_name
 		{ $$ = DeclarationNode::newEnumInLine( *$2->type->symbolic.name ); }
-	| enumerator_list ',' hide_visible_opt identifier_or_type_name enumerator_value_opt
+	| enumerator_list ',' visible_hide_opt identifier_or_type_name enumerator_value_opt
 		{ $$ = $1->appendList( DeclarationNode::newEnumValueGeneric( $4, $5 ) ); }
 	| enumerator_list ',' INLINE type_name enumerator_value_opt
@@ -2619,7 +2625,8 @@
 	;
 
-hide_visible_opt:
+visible_hide_opt:
 	hide_opt
 	| '^'
+		{ $$ = EnumHiding::Visible; }
 	;
 
