Index: src/Parser/DeclarationNode.cc
===================================================================
--- src/Parser/DeclarationNode.cc	(revision 9fb13671f5201abdee9d86e8dcf476235dda9862)
+++ src/Parser/DeclarationNode.cc	(revision 5f39135edcd5cb0479e079180b47998dcbb43839)
@@ -10,6 +10,6 @@
 // Created On       : Sat May 16 12:34:05 2015
 // Last Modified By : Peter A. Buhr
-// Last Modified On : Mon Jan 11 20:58:07 2021
-// Update Count     : 1137
+// Last Modified On : Fri Mar 12 18:35:37 2021
+// Update Count     : 1141
 //
 
@@ -424,4 +424,10 @@
 	newnode->attributes.push_back( new Attribute( *name, exprs ) );
 	delete name;
+	return newnode;
+}
+
+DeclarationNode * DeclarationNode::newDirectiveStmt( StatementNode * stmt ) {
+	DeclarationNode * newnode = new DeclarationNode;
+	newnode->directiveStmt = stmt;
 	return newnode;
 }
@@ -1072,4 +1078,7 @@
 		return new AsmDecl( strict_dynamic_cast<AsmStmt *>( asmStmt->build() ) );
 	} // if
+	if ( directiveStmt ) {
+		return new DirectiveDecl( strict_dynamic_cast<DirectiveStmt *>( directiveStmt->build() ) );
+	} // if
 
 	if ( variable.tyClass != TypeDecl::NUMBER_OF_KINDS ) {
Index: src/Parser/ParseNode.h
===================================================================
--- src/Parser/ParseNode.h	(revision 9fb13671f5201abdee9d86e8dcf476235dda9862)
+++ src/Parser/ParseNode.h	(revision 5f39135edcd5cb0479e079180b47998dcbb43839)
@@ -10,6 +10,6 @@
 // Created On       : Sat May 16 13:28:16 2015
 // Last Modified By : Peter A. Buhr
-// Last Modified On : Sun Jan  3 18:23:01 2021
-// Update Count     : 896
+// Last Modified On : Fri Mar 12 15:19:04 2021
+// Update Count     : 897
 //
 
@@ -249,4 +249,5 @@
 	static DeclarationNode * newTypeof( ExpressionNode * expr, bool basetypeof = false );
 	static DeclarationNode * newAttribute( const std::string *, ExpressionNode * expr = nullptr ); // gcc attributes
+	static DeclarationNode * newDirectiveStmt( StatementNode * stmt ); // gcc external directive statement
 	static DeclarationNode * newAsmStmt( StatementNode * stmt ); // gcc external asm statement
 	static DeclarationNode * newStaticAssert( ExpressionNode * condition, Expression * message );
@@ -345,4 +346,5 @@
 	std::string error;
 	StatementNode * asmStmt = nullptr;
+	StatementNode * directiveStmt = nullptr;
 
 	static UniqueName anonymous;
Index: src/Parser/parser.yy
===================================================================
--- src/Parser/parser.yy	(revision 9fb13671f5201abdee9d86e8dcf476235dda9862)
+++ src/Parser/parser.yy	(revision 5f39135edcd5cb0479e079180b47998dcbb43839)
@@ -10,6 +10,6 @@
 // Created On       : Sat Sep  1 20:22:55 2001
 // Last Modified By : Peter A. Buhr
-// Last Modified On : Wed Feb 17 09:03:07 2021
-// Update Count     : 4722
+// Last Modified On : Fri Mar 12 15:21:02 2021
+// Update Count     : 4728
 //
 
@@ -2639,5 +2639,7 @@
 
 external_definition:
-	declaration
+	DIRECTIVE
+		{ $$ = DeclarationNode::newDirectiveStmt( new StatementNode( build_directive( $1 ) ) ); }
+	| declaration
 	| external_function_definition
 	| EXTENSION external_definition						// GCC, multiple __extension__ allowed, meaning unknown
