Index: src/Parser/lex.ll
===================================================================
--- src/Parser/lex.ll	(revision 1c1395d2efc85a2d060e6cc92d06033044b1144d)
+++ src/Parser/lex.ll	(revision a4bdbcde528eb16d7cf6708cb3ecd21bc7935139)
@@ -10,6 +10,6 @@
  * Created On       : Sat Sep 22 08:58:10 2001
  * Last Modified By : Peter A. Buhr
- * Last Modified On : Sat Feb 15 11:05:50 2020
- * Update Count     : 737
+ * Last Modified On : Tue Oct  6 18:15:41 2020
+ * Update Count     : 743
  */
 
@@ -62,5 +62,5 @@
 #define IDENTIFIER_RETURN()	RETURN_VAL( typedefTable.isKind( yytext ) )
 
-#ifdef HAVE_KEYWORDS_FLOATXX								// GCC >= 7 => keyword, otherwise typedef
+#ifdef HAVE_KEYWORDS_FLOATXX							// GCC >= 7 => keyword, otherwise typedef
 #define FLOATXX(v) KEYWORD_RETURN(v);
 #else
@@ -292,5 +292,5 @@
 __restrict__	{ KEYWORD_RETURN(RESTRICT); }			// GCC
 return			{ KEYWORD_RETURN(RETURN); }
-	/* resume			{ KEYWORD_RETURN(RESUME); }				// CFA */
+ /* resume			{ KEYWORD_RETURN(RESUME); }				// CFA */
 short			{ KEYWORD_RETURN(SHORT); }
 signed			{ KEYWORD_RETURN(SIGNED); }
Index: src/Parser/parser.yy
===================================================================
--- src/Parser/parser.yy	(revision 1c1395d2efc85a2d060e6cc92d06033044b1144d)
+++ src/Parser/parser.yy	(revision a4bdbcde528eb16d7cf6708cb3ecd21bc7935139)
@@ -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; }
 	;
 
