Index: src/Parser/lex.ll
===================================================================
--- src/Parser/lex.ll	(revision 6b0b624129f6017f7706b516a24a52e382e3a334)
+++ src/Parser/lex.ll	(revision ea91c4249b368dd12df6d63ca49b3a4beafb8d89)
@@ -10,6 +10,6 @@
  * Created On       : Sat Sep 22 08:58:10 2001
  * Last Modified By : Peter A. Buhr
- * Last Modified On : Tue Jul 18 07:11:48 2017
- * Update Count     : 544
+ * Last Modified On : Mon Jul 24 08:27:23 2017
+ * Update Count     : 545
  */
 
@@ -271,4 +271,5 @@
 unsigned		{ KEYWORD_RETURN(UNSIGNED); }
 __builtin_va_list { KEYWORD_RETURN(VALIST); }			// GCC
+virtual			{ KEYWORD_RETURN(VIRTUAL); }			// CFA
 void			{ KEYWORD_RETURN(VOID); }
 volatile		{ KEYWORD_RETURN(VOLATILE); }
Index: src/Parser/parser.yy
===================================================================
--- src/Parser/parser.yy	(revision 6b0b624129f6017f7706b516a24a52e382e3a334)
+++ src/Parser/parser.yy	(revision ea91c4249b368dd12df6d63ca49b3a4beafb8d89)
@@ -9,7 +9,7 @@
 // Author           : Peter A. Buhr
 // Created On       : Sat Sep  1 20:22:55 2001
-// Last Modified By : Andrew Beach
-// Last Modified On : Mon Jul 17 12:17:00 2017
-// Update Count     : 2455
+// Last Modified By : Peter A. Buhr
+// Last Modified On : Mon Jul 24 09:01:14 2017
+// Update Count     : 2463
 //
 
@@ -118,8 +118,9 @@
 %token RESTRICT											// C99
 %token ATOMIC											// C11
-%token FORALL LVALUE MUTEX								// CFA
-%token VOID CHAR SHORT INT LONG FLOAT DOUBLE SIGNED UNSIGNED ZERO_T ONE_T
+%token FORALL LVALUE MUTEX VIRTUAL						// CFA
+%token VOID CHAR SHORT INT LONG FLOAT DOUBLE SIGNED UNSIGNED
+%token BOOL COMPLEX IMAGINARY							// C99
+%token ZERO_T ONE_T										// CFA
 %token VALIST											// GCC
-%token BOOL COMPLEX IMAGINARY							// C99
 %token TYPEOF LABEL										// GCC
 %token ENUM STRUCT UNION
@@ -570,4 +571,9 @@
 	| '(' type_no_function ')' cast_expression
 		{ $$ = new ExpressionNode( build_cast( $2, $4 ) ); }
+		// VIRTUAL cannot be opt because of look ahead issues
+	| '(' VIRTUAL ')' cast_expression
+		{ $$ = new ExpressionNode( build_cast( nullptr, $4 ) ); }
+	| '(' VIRTUAL type_no_function ')' cast_expression
+		{ $$ = new ExpressionNode( build_cast( $3, $5 ) ); }
 //	| '(' type_no_function ')' tuple
 //		{ $$ = new ExpressionNode( build_cast( $2, $4 ) ); }
@@ -1515,10 +1521,10 @@
 	| IMAGINARY											// C99
 		{ $$ = DeclarationNode::newComplexType( DeclarationNode::Imaginary ); }
-	| VALIST											// GCC, __builtin_va_list
-		{ $$ = DeclarationNode::newBuiltinType( DeclarationNode::Valist ); }
 	| ZERO_T
 		{ $$ = DeclarationNode::newBuiltinType( DeclarationNode::Zero ); }
 	| ONE_T
 		{ $$ = DeclarationNode::newBuiltinType( DeclarationNode::One ); }
+	| VALIST											// GCC, __builtin_va_list
+		{ $$ = DeclarationNode::newBuiltinType( DeclarationNode::Valist ); }
 	;
 
