diff --git a/Parser/spec/OpenAcc.rats b/Parser/spec/OpenAcc.rats
index 086829102f5bc900ca70802a4c88808edd5ef572..9f5a623b5116c1d9d8fd9c0b8cc2ec1de24a9671 100644
--- a/Parser/spec/OpenAcc.rats
+++ b/Parser/spec/OpenAcc.rats
@@ -481,6 +481,7 @@ List acc_clause_list =
 
 //// abstract AccClause ;
 public AccClause acc_clause =
+<BEGINNING>
 	acc_if_clause
 /	acc_reduction_clause
 /	acc_device_clause
diff --git a/Parser/spec/SlotPrinting.jadd b/Parser/spec/SlotPrinting.jadd
index c7dad4b0932f3261d3d8d8a13e4b66194a8436fa..2d0b88557c25cabad0654f3bfccfd146891a735b 100644
--- a/Parser/spec/SlotPrinting.jadd
+++ b/Parser/spec/SlotPrinting.jadd
@@ -50,4 +50,10 @@ aspect Printing {
     s.literalAppend(getString());
     s.append("#");
   }
+
+  public void SlotAccClause.prettyPrint(PrettyPrinter s) {
+    s.append("#");
+    s.literalAppend(getSlotName());
+    s.append("#");
+  }
 }
diff --git a/Parser/spec/SlottableFortranParser.rats b/Parser/spec/SlottableFortranParser.rats
index 456c72f5c697761080c4922a52fdb4e1fd01561b..095082083c188dbbc2d1e5bb1e3a1bf01709468a 100644
--- a/Parser/spec/SlottableFortranParser.rats
+++ b/Parser/spec/SlottableFortranParser.rats
@@ -302,6 +302,17 @@ Designator designator +=
 /   <BEGINNING> ...
 ;
 
+// == AccClause Slots ===================================================
+
+//// SlotAccClause:AccClause ::= <SlotName:String> ;
+AccClause acc_clause +=
+    <DesignatorSlot> NUMBERSIGN n:slot_name (COLON A C C UNDERSCORE C L A U S E)? NUMBERSIGN
+        {
+            yyValue = new SlotAccClause(n);
+        }
+/   <BEGINNING> ...
+;
+
 // == Name Slots ===================================================
 
 //// SlotForName:Name ;
diff --git a/Parser/test-data/slots/acc_clause.f b/Parser/test-data/slots/acc_clause.f
new file mode 100644
index 0000000000000000000000000000000000000000..b9d2738c85bf8b7ec58699ba6f1e13fd4e86e234
--- /dev/null
+++ b/Parser/test-data/slots/acc_clause.f
@@ -0,0 +1,8 @@
+! BlockSlot
+
+  !$acc loop #MYCLAUSE#
+  do x = 0,p
+    #test#
+  end do
+
+end