Index: src/Parser/parser.yy
===================================================================
--- src/Parser/parser.yy	(revision a491a3c7de462016a0883b1867471e91458aa24f)
+++ src/Parser/parser.yy	(revision 55843425802a531c539405b8efa1c664fcc160b2)
@@ -10,6 +10,6 @@
 // Created On       : Sat Sep  1 20:22:55 2001
 // Last Modified By : Peter A. Buhr
-// Last Modified On : Thu May 28 12:11:45 2020
-// Update Count     : 4500
+// Last Modified On : Tue Oct  6 18:24:18 2020
+// Update Count     : 4610
 //
 
@@ -278,6 +278,6 @@
 %token OTYPE FTYPE DTYPE TTYPE TRAIT					// CFA
 %token SIZEOF OFFSETOF
-// %token RESUME									// CFA
-%token SUSPEND									// CFA
+// %token RESUME											// CFA
+%token SUSPEND											// CFA
 %token ATTRIBUTE EXTENSION								// GCC
 %token IF ELSE SWITCH CASE DEFAULT DO WHILE FOR BREAK CONTINUE GOTO RETURN
@@ -329,5 +329,5 @@
 %type<en> conditional_expression		constant_expression			assignment_expression		assignment_expression_opt
 %type<en> comma_expression				comma_expression_opt
-%type<en> argument_expression_list_opt		argument_expression			default_initialize_opt
+%type<en> argument_expression_list_opt	argument_expression			default_initialize_opt
 %type<ifctl> if_control_expression
 %type<fctl> for_control_expression		for_control_expression_list
@@ -370,5 +370,5 @@
 %type<decl> assertion assertion_list assertion_list_opt
 
-%type<en>   bit_subrange_size_opt bit_subrange_size
+%type<en> bit_subrange_size_opt bit_subrange_size
 
 %type<decl> basic_declaration_specifier basic_type_name basic_type_specifier direct_type indirect_type
@@ -793,5 +793,4 @@
 	| '(' aggregate_control '&' ')' cast_expression		// CFA
 		{ $$ = new ExpressionNode( build_keyword_cast( $2, $5 ) ); }
-		// VIRTUAL cannot be opt because of look ahead issues
 	| '(' VIRTUAL ')' cast_expression					// CFA
 		{ $$ = new ExpressionNode( new VirtualCastExpr( maybeMoveBuild< Expression >( $4 ), maybeMoveBuildType( nullptr ) ) ); }
@@ -920,9 +919,9 @@
 	| unary_expression assignment_operator assignment_expression
 		{
-			if ( $2 == OperKinds::AtAssn ) {
-				SemanticError( yylloc, "C @= assignment is currently unimplemented." ); $$ = nullptr;
-			} else {
+//			if ( $2 == OperKinds::AtAssn ) {
+//				SemanticError( yylloc, "C @= assignment is currently unimplemented." ); $$ = nullptr;
+//			} else {
 				$$ = new ExpressionNode( build_binary_val( $2, $1, $3 ) );
-			} // if
+//			} // if
 		}
 	| unary_expression '=' '{' initializer_list_opt comma_opt '}'
@@ -1676,38 +1675,14 @@
 
 typedef_expression:
-		// GCC, naming expression type: typedef name = exp; gives a name to the type of an expression
+		// deprecated GCC, naming expression type: typedef name = exp; gives a name to the type of an expression
 	TYPEDEF identifier '=' assignment_expression
 		{
-			// $$ = DeclarationNode::newName( 0 );			// unimplemented
-			SemanticError( yylloc, "Typedef expression is currently unimplemented." ); $$ = nullptr;
+			SemanticError( yylloc, "Typedef expression is deprecated, use typeof(...) instead." ); $$ = nullptr;
 		}
 	| typedef_expression pop ',' push identifier '=' assignment_expression
 		{
-			// $$ = DeclarationNode::newName( 0 );			// unimplemented
-			SemanticError( yylloc, "Typedef expression is currently unimplemented." ); $$ = nullptr;
-		}
-	;
-
-//c_declaration:
-//	declaring_list pop ';'
-//	| typedef_declaration pop ';'
-//	| typedef_expression pop ';'						// GCC, naming expression type
-//	| sue_declaration_specifier pop ';'
-//	;
-//
-//declaring_list:
-//		// A semantic check is required to ensure asm_name only appears on declarations with implicit or explicit static
-//		// storage-class
-//	 declarator asm_name_opt initializer_opt
-//		{
-//			typedefTable.addToEnclosingScope( IDENTIFIER );
-//			$$ = ( $2->addType( $1 ))->addAsmName( $3 )->addInitializer( $4 );
-//		}
-//	| declaring_list ',' attribute_list_opt declarator asm_name_opt initializer_opt
-//		{
-//			typedefTable.addToEnclosingScope( IDENTIFIER );
-//			$$ = $1->appendList( $1->cloneBaseType( $4->addAsmName( $5 )->addInitializer( $6 ) ) );
-//		}
-//	;
+			SemanticError( yylloc, "Typedef expression is deprecated, use typeof(...) instead." ); $$ = nullptr;
+		}
+	;
 
 c_declaration:
@@ -1715,5 +1690,5 @@
 		{ $$ = distAttr( $1, $2 ); }
 	| typedef_declaration
-	| typedef_expression								// GCC, naming expression type
+	| typedef_expression								// deprecated GCC, naming expression type
 	| sue_declaration_specifier
 	;
@@ -2094,5 +2069,6 @@
 		{ yyy = true; $$ = AggregateDecl::Union; }
 	| EXCEPTION											// CFA
-		{ yyy = true; $$ = AggregateDecl::Exception; }
+		// { yyy = true; $$ = AggregateDecl::Exception; }
+		{ SemanticError( yylloc, "exception aggregate is currently unimplemented." ); $$ = AggregateDecl::NoAggregate; }
 	;
 
