Index: src/Parser/parser.yy
===================================================================
--- src/Parser/parser.yy	(revision e07caa205c9b4722ae70dd338e75f6c51cd6adf9)
+++ src/Parser/parser.yy	(revision dea36ee0c2e78137d7d16a9d4aee66bf062f7464)
@@ -10,6 +10,6 @@
 // Created On       : Sat Sep  1 20:22:55 2001
 // Last Modified By : Peter A. Buhr
-// Last Modified On : Thu Jul 19 16:42:16 2018
-// Update Count     : 3820
+// Last Modified On : Thu Jul 19 22:21:56 2018
+// Update Count     : 3827
 //
 
@@ -1943,30 +1943,28 @@
 	type_specifier field_declaring_list_opt ';'
 		{
-			if ( $2 ) {									// field declarator ?
-				$$ = distAttr( $1, $2 );
-			} else if ( $1->type && $1->type->kind == TypeData::Aggregate ) {
-				$$ = DeclarationNode::newName( nullptr );
-				$$ = distAttr( $1, $$ );				// mark all fields in list
-			} else {
-				//SemanticError( yylloc, "Superfluous declaration, does not allocate storage." ); $$ = nullptr;
-				SemanticWarning( yylloc, Warning::SuperfluousDecl, "" );
+			if ( ! $2 ) {								// field declarator ?
+				$2 = DeclarationNode::newName( nullptr );
+				if ( ! ( $1->type && $1->type->kind == TypeData::Aggregate ) ) {
+					SemanticWarning( yylloc, Warning::SuperfluousDecl, "" );
+				} // if
 			} // if
+			$$ = distAttr( $1, $2 );					// mark all fields in list
 		}
 	| EXTENSION type_specifier field_declaring_list_opt ';'	// GCC
 		{
-			if ( $3 ) {									// field declarator ?
-				$$ = distAttr( $2, $3 );				// mark all fields in list
-				distExt( $3 );
-			} else if ( $2->type && $2->type->kind == TypeData::Aggregate && $2->type->aggregate.anon ) {
-				$$ = DeclarationNode::newName( nullptr );
-				$$ = distAttr( $2, $$ );				// mark all fields in list
-				distExt( $$ );
-			} else {
-				// SemanticError( yylloc, "Superfluous declaration, does not allocate storage." ); $$ = nullptr;
-				SemanticWarning( yylloc, Warning::SuperfluousDecl, "" );
+			if ( ! $3 ) {								// field declarator ?
+				$3 = DeclarationNode::newName( nullptr );
+				if ( ! ( $2->type && $2->type->kind == TypeData::Aggregate ) ) {
+					SemanticWarning( yylloc, Warning::SuperfluousDecl, "" );
+				} // if
 			} // if
+			$$ = distAttr( $2, $3 );					// mark all fields in list
+			distExt( $$ );
 		}
 	| INLINE type_specifier field_abstract_list_opt ';'	// CFA
 		{
+			if ( ! $3 ) {								// field declarator ?
+				$3 = DeclarationNode::newName( nullptr );
+			} // if
 			$3->inLine = true;
 			$$ = distAttr( $2, $3 );					// mark all fields in list
@@ -2004,5 +2002,5 @@
 field_abstract_list_opt:
 	// empty
-		{ $$ = DeclarationNode::newName( nullptr ); }
+		{ $$ = nullptr; }
 	| field_abstract
 	| field_abstract_list_opt ',' attribute_list_opt field_abstract
