diff --git a/src/Lib/Script/Ast/IrAttribute.cc b/src/Lib/Script/Ast/IrAttribute.cc
index 40c26dbd08c5844983718d01baca746d91409e66..25453e715a89bfd7d3781cfed5c7d64bc0025070 100644
--- a/src/Lib/Script/Ast/IrAttribute.cc
+++ b/src/Lib/Script/Ast/IrAttribute.cc
@@ -55,22 +55,27 @@ IrAttribute::parse(std::vector<Token> *tokens)
         parentAttributes.push_back(std::make_pair(name, valueToken.asQName()));
     };
 
-    getInnerTokenOpt(tokenListPop(tokens)).assertTypeSimple(TOKEN_COL);
+    if (getInnerTokenOpt(tokenListPop(tokens)).isSimple(TOKEN_COL)) {
+        /* Attributes can be a list: `#(name: [ v1, v2 ])` */
+        if (getInnerTokenOpt(tokenListPeek(tokens)).isSimple(TOKEN_BRACKET_LEFT)) {
+            do {
+                tokenListPop(tokens); /* Pop [ or , */
+                getValueAndAddAttribute(false);
+            } while (getInnerTokenOpt(tokenListPeek(tokens)).isSimple(TOKEN_COMMA));
+            getInnerTokenOpt(tokenListPop(tokens)).assertTypeSimple(TOKEN_BRACKET_RIGHT);
+            getInnerTokenOpt(tokenListPop(tokens)).assertTypeSimple(TOKEN_PARENT_RIGHT);
+        }
 
-    /* Attributes can be a list: `#(name: [ v1, v2 ])` */
-    if (getInnerTokenOpt(tokenListPeek(tokens)).isSimple(TOKEN_BRACKET_LEFT)) {
-        do {
-            tokenListPop(tokens); /* Pop [ or , */
-            getValueAndAddAttribute(false);
-        } while (getInnerTokenOpt(tokenListPeek(tokens)).isSimple(TOKEN_COMMA));
-        getInnerTokenOpt(tokenListPop(tokens)).assertTypeSimple(TOKEN_BRACKET_RIGHT);
-        getInnerTokenOpt(tokenListPop(tokens)).assertTypeSimple(TOKEN_PARENT_RIGHT);
+        /* Attribute can be simple elements: `#(name: value)` */
+        else {
+            getValueAndAddAttribute(true);
+            getInnerTokenOpt(tokenListPop(tokens)).assertTypeSimple(TOKEN_PARENT_RIGHT);
+        }
     }
 
-    /* Attribute can be simple elements: `#(name: value)` */
+    /* Attribute as a flag: `#(name)` */
     else {
-        getValueAndAddAttribute(true);
-        getInnerTokenOpt(tokenListPop(tokens)).assertTypeSimple(TOKEN_PARENT_RIGHT);
+        parentAttributes.push_back(std::make_pair(name, name));
     }
 }
 }