diff --git a/src/language/PEGGrammar.hpp b/src/language/PEGGrammar.hpp
index e8f66bbd3992e6922aacc77f7620a6918866a97c..336fb5583fb4e163f37feb30956acbf27cef36ab 100644
--- a/src/language/PEGGrammar.hpp
+++ b/src/language/PEGGrammar.hpp
@@ -77,7 +77,9 @@ struct basic_type : sor< scalar_type, string_type >{};
 struct type_name_id;
 struct simple_type_specifier : sor< vector_type, basic_type, type_name_id >{};
 
-struct tuple_type_specifier : seq<open_parent, simple_type_specifier, ignored, close_parent>{};
+struct tuple_type_specifier :  sor<try_catch< open_parent, simple_type_specifier, ignored, close_parent >,
+				   // non matching braces management
+				   if_must< at< open_parent >, raise< simple_type_specifier >, until< eof > > >{};
 
 struct TYPE_SPECIFIER : seq< sor<simple_type_specifier, tuple_type_specifier>, ignored >{};
 
@@ -385,6 +387,9 @@ inline const std::string errors<language::slashstar>::error_message = "block com
 template <>
 inline const std::string errors<language::open_brace>::error_message = "open brace was never closed, missing '}'";
 
+template <>
+inline const std::string errors<language::simple_type_specifier>::error_message = "expecting simple type specifier";
+
 // clang-format on
 
 }   // namespace language