Index: libcfa/src/stdhdr/libltdl/lt_dlloader.h
===================================================================
--- libcfa/src/stdhdr/libltdl/lt_dlloader.h	(revision b580bcc79ab67014709f2d38fb67132e54d6e92f)
+++ libcfa/src/stdhdr/libltdl/lt_dlloader.h	(revision b580bcc79ab67014709f2d38fb67132e54d6e92f)
@@ -0,0 +1,34 @@
+// 
+// Cforall Version 1.0.0 Copyright (C) 2016 University of Waterloo
+// 
+// The contents of this file are covered under the licence agreement in the
+// file "LICENCE" distributed with Cforall.
+// 
+// lt_dlloader.h -- 
+// 
+// Author           : Peter A. Buhr
+// Created On       : Thu Apr  1 13:49:40 2021
+// Last Modified By : Peter A. Buhr
+// Last Modified On : Thu Apr  1 14:00:19 2021
+// Update Count     : 4
+// 
+
+extern "C" {
+#if ! defined( vtable )									// nesting ?
+#define vtable ``vtable									// make keyword an identifier
+#define __CFA_LT_DLLOADER_H__
+#endif
+
+#include_next <libltdl/lt_dlloader.h>					// has internal check for multiple expansion
+
+#if defined( vtable ) && defined( __CFA_LT_DLLOADER_H__ ) // reset only if set
+#undef vtable
+#undef __CFA_LT_DLLOADER_H__
+#endif
+} // extern "C"
+
+// Local Variables: //
+// tab-width: 4 //
+// mode: c++ //
+// compile-command: "make install" //
+// End: //
Index: src/Parser/lex.ll
===================================================================
--- src/Parser/lex.ll	(revision 198e335e48af987a31c019c851a8a7d6fd495eb7)
+++ src/Parser/lex.ll	(revision b580bcc79ab67014709f2d38fb67132e54d6e92f)
@@ -10,6 +10,6 @@
  * Created On       : Sat Sep 22 08:58:10 2001
  * Last Modified By : Peter A. Buhr
- * Last Modified On : Wed Feb 17 08:38:13 2021
- * Update Count     : 752
+ * Last Modified On : Thu Apr  1 13:22:31 2021
+ * Update Count     : 754
  */
 
@@ -318,4 +318,5 @@
 __typeof		{ KEYWORD_RETURN(TYPEOF); }				// GCC
 __typeof__		{ KEYWORD_RETURN(TYPEOF); }				// GCC
+typeid			{ KEYWORD_RETURN(TYPEID); }				// GCC
 union			{ KEYWORD_RETURN(UNION); }
 __uint128_t		{ KEYWORD_RETURN(UINT128); }			// GCC
@@ -327,4 +328,5 @@
 __volatile		{ KEYWORD_RETURN(VOLATILE); }			// GCC
 __volatile__	{ KEYWORD_RETURN(VOLATILE); }			// GCC
+vtable			{ KEYWORD_RETURN(VTABLE); }				// CFA
 waitfor			{ KEYWORD_RETURN(WAITFOR); }			// CFA
 when			{ KEYWORD_RETURN(WHEN); }				// CFA
Index: src/Parser/parser.yy
===================================================================
--- src/Parser/parser.yy	(revision 198e335e48af987a31c019c851a8a7d6fd495eb7)
+++ src/Parser/parser.yy	(revision b580bcc79ab67014709f2d38fb67132e54d6e92f)
@@ -10,6 +10,6 @@
 // Created On       : Sat Sep  1 20:22:55 2001
 // Last Modified By : Peter A. Buhr
-// Last Modified On : Tue Mar 30 18:39:23 2021
-// Update Count     : 4965
+// Last Modified On : Thu Apr  1 14:43:24 2021
+// Update Count     : 4978
 //
 
@@ -264,5 +264,5 @@
 %token RESTRICT											// C99
 %token ATOMIC											// C11
-%token FORALL MUTEX VIRTUAL COERCE						// CFA
+%token FORALL MUTEX VIRTUAL VTABLE COERCE				// CFA
 %token VOID CHAR SHORT INT LONG FLOAT DOUBLE SIGNED UNSIGNED
 %token BOOL COMPLEX IMAGINARY							// C99
@@ -270,13 +270,12 @@
 %token uFLOAT16 uFLOAT32 uFLOAT32X uFLOAT64 uFLOAT64X uFLOAT128 // GCC
 %token ZERO_T ONE_T										// CFA
-%token VALIST											// GCC
-%token AUTO_TYPE										// GCC
-%token TYPEOF BASETYPEOF LABEL							// GCC
+%token SIZEOF TYPEOF VALIST AUTO_TYPE					// GCC
+%token OFFSETOF BASETYPEOF TYPEID						// CFA
 %token ENUM STRUCT UNION
 %token EXCEPTION										// CFA
 %token GENERATOR COROUTINE MONITOR THREAD				// CFA
 %token OTYPE FTYPE DTYPE TTYPE TRAIT					// CFA
-%token SIZEOF OFFSETOF
 // %token RESUME											// CFA
+%token LABEL											// GCC
 %token SUSPEND											// CFA
 %token ATTRIBUTE EXTENSION								// GCC
@@ -373,4 +372,5 @@
 
 %type<decl> basic_declaration_specifier basic_type_name basic_type_specifier direct_type indirect_type
+%type<decl> vtable vtable_opt default_opt
 
 %type<decl> trait_declaration trait_declaration_list trait_declaring_list trait_specifier
@@ -785,4 +785,9 @@
 	| OFFSETOF '(' type_no_function ',' identifier ')'
 		{ $$ = new ExpressionNode( build_offsetOf( $3, build_varref( $5 ) ) ); }
+	| TYPEID '(' type_no_function ')'
+		{
+			SemanticError( yylloc, "typeid name is currently unimplemented." ); $$ = nullptr;
+			// $$ = new ExpressionNode( build_offsetOf( $3, build_varref( $5 ) ) );
+		}
 	;
 
@@ -1895,4 +1900,23 @@
 	| AUTO_TYPE
 		{ $$ = DeclarationNode::newBuiltinType( DeclarationNode::AutoType ); }
+	| vtable
+	;
+
+vtable_opt:
+	// empty
+		{ $$ = nullptr; }
+	| vtable;
+	;
+
+vtable:
+	VTABLE '(' type_list ')' default_opt
+		{ SemanticError( yylloc, "vtable is currently unimplemented." ); $$ = nullptr; }
+	;
+
+default_opt:
+	// empty
+		{ $$ = nullptr; }
+	| DEFAULT
+		{ SemanticError( yylloc, "vtable default is currently unimplemented." ); $$ = nullptr; }
 	;
 
@@ -2102,11 +2126,11 @@
 
 aggregate_data:
-	STRUCT
+	STRUCT vtable_opt
 		{ yyy = true; $$ = AggregateDecl::Struct; }
 	| UNION
 		{ yyy = true; $$ = AggregateDecl::Union; }
 	| EXCEPTION											// CFA
-		// { yyy = true; $$ = AggregateDecl::Exception; }
-		{ SemanticError( yylloc, "exception aggregate is currently unimplemented." ); $$ = AggregateDecl::NoAggregate; }
+		{ yyy = true; $$ = AggregateDecl::Exception; }
+	  //		{ SemanticError( yylloc, "exception aggregate is currently unimplemented." ); $$ = AggregateDecl::NoAggregate; }
 	;
 
