diff --git a/Parser/spec/SlottableFortranParser.rats b/Parser/spec/SlottableFortranParser.rats
index f3cf1fff694a38c7187984fedd8f71ecb3f5ffc2..456c72f5c697761080c4922a52fdb4e1fd01561b 100644
--- a/Parser/spec/SlottableFortranParser.rats
+++ b/Parser/spec/SlottableFortranParser.rats
@@ -195,6 +195,8 @@ public ExecutionPartConstruct execution_part_construct := ... ;
 public Name name := ... ;
 public Block block := ... ;
 public DoConstruct do_construct := ... ;
+public Variable variable := ... ;
+public Designator designator := ... ;
 
 
 // == Slots ====================================================================
@@ -221,7 +223,7 @@ Expr expr +=
 
 //// SlotDoConstruct:DoConstruct ::= <SlotName:String> ;
 DoConstruct do_construct +=
-    <ExprSlot> NUMBERSIGN n:slot_name (COLON (D O C O N S T R U C T / S I M P L E D O C O N S T R U C T / O M P D O C O N S T R U C T / A C C L O O P C O N S T R U C T))? NUMBERSIGN LB
+    <ExprSlot> NUMBERSIGN n:slot_name (COLON (D O C O N C U R R E N T C O N S T R U C T / D O C O N S T R U C T / S I M P L E D O C O N S T R U C T / O M P D O C O N S T R U C T / A C C L O O P C O N S T R U C T))? NUMBERSIGN LB
         {
             yyValue = new SlotDoConstruct(n);
         }
@@ -265,7 +267,13 @@ IntLiteralConstant int_literal_constant +=
 
 //// SlotExecutableConstruct:ExecutableConstruct ::= <SlotName:String> ;
 ExecutableConstruct executable_construct +=
-    <ExecutableConstructSlot> NUMBERSIGN n:slot_name (COLON (E X E C U T A B L E C O N S T R U C T / A C C P A R A L L E L C O N S T R U C T / A C C D A T A C O N S T R U C T))? NUMBERSIGN LB
+    <ExecutableConstructSlot> NUMBERSIGN n:slot_name
+    (COLON (
+        E X E C U T A B L E C O N S T R U C T
+      / A C C P A R A L L E L C O N S T R U C T
+      / A C C D A T A C O N S T R U C T
+    ) )?
+    NUMBERSIGN LB
         {
             yyValue = new SlotExecutableConstruct(n);
         }
@@ -276,18 +284,29 @@ ExecutableConstruct executable_construct +=
 
 //// SlotExecutionPartConstruct:ExecutionPartConstruct ::= <SlotName:String> ;
 ExecutionPartConstruct execution_part_construct +=
-    <ExecutionPartConstructSlot> NUMBERSIGN n:slot_name (COLON E X E C U T I O N P A R T C O N S T R U C T)? NUMBERSIGN LB
+    <ExecutionPartConstructSlot> NUMBERSIGN n:slot_name (COLON (E X E C U T A B L E C O N S T R U C T UNDERSCORE)? E X E C U T I O N P A R T C O N S T R U C T)? NUMBERSIGN LB
         {
             yyValue = new SlotExecutionPartConstruct(n);
         }
 /   <BEGINNING> ...
 ;
 
+// == Designator Slots ===================================================
+
+//// SlotDesignator:Designator ::= <SlotName:String> ;
+Designator designator +=
+    <DesignatorSlot> NUMBERSIGN n:slot_name (COLON (O B J E C T N A M E UNDERSCORE)? D E S I G N A T O R)? NUMBERSIGN LB
+        {
+            yyValue = new SlotDesignator(n);
+        }
+/   <BEGINNING> ...
+;
+
 // == Name Slots ===================================================
 
 //// SlotForName:Name ;
 Name name +=
-    NUMBERSIGN n:slot_name (COLON F O R N A M E)? NUMBERSIGN SS
+    NUMBERSIGN n:slot_name (COLON (F O R)? N A M E)? NUMBERSIGN SS
         {
             yyValue = new SlotForName(n);
         }