--- a/cmajor++/Cm/Cm.Parser/CompilationUnit.soul
+++ b/cmajor++/Cm/Cm.Parser/CompilationUnit.soul
@@ -15,6 +15,7 @@
 [cpp]#include <Cm.Parser/Enumeration.hpp>
 [cpp]#include <Cm.Parser/Typedef.hpp>
 [cpp]#include <Cm.Parser/Class.hpp>
+[cpp]#include <Cm.Parser/Delegate.hpp>
 [cpp]#include <Cm.Parser/Concept.hpp>
 
 namespace Cm.Parser
@@ -41,6 +42,7 @@
         using IdentifierGrammar.Identifier;
         using IdentifierGrammar.QualifiedId;
         using ClassGrammar.Class;
+        using DelegateGrammar.Delegate;
         using ConceptGrammar.Concept;
         using stdlib.spaces_and_comments;
         skip spaces_and_comments;
@@ -89,6 +91,7 @@
                         |   EnumerationDefinition(enclosingScope, ctx)
                         |   TypedefDefinition(enclosingScope, ctx)
                         |   ClassDefinition(enclosingScope, ctx)
+                        |   DelegateDefinition(enclosingScope, ctx)
                         |   ConceptDefinition(enclosingScope, ctx)
                         ;
                         
@@ -136,6 +139,10 @@
                         ::= Class(enclosingScope, ctx){ Class->AddToScope(); ctx->GetCompilationUnit()->AddObject(Class); }
                         ;
 
+        DelegateDefinition(Cm::Core::ScopePtr enclosingScope, ParsingContextPtr ctx)
+                        ::= Delegate(enclosingScope, ctx){ Delegate->AddToScope(); ctx->GetCompilationUnit()->AddObject(Delegate); }
+                        ;
+
         ConceptDefinition(Cm::Core::ScopePtr enclosingScope, ParsingContextPtr ctx)
                         ::= Concept(enclosingScope, ctx){ Concept->AddToScope(); ctx->GetCompilationUnit()->AddObject(Concept); }
                         ;