Make set report the expected type in case of error

Change-Id: Id46251b4859739e3c8f77d3bf2513ec22b048cf1
diff --git a/src/grammars.hpp b/src/grammars.hpp
index 443b28d..5386417 100644
--- a/src/grammars.hpp
+++ b/src/grammars.hpp
@@ -21,6 +21,7 @@
 x3::rule<container_class, container_> const container = "container";
 x3::rule<leaf_class, leaf_> const leaf = "leaf";
 x3::rule<path_class, path_> const path = "path";
+x3::rule<leaf_path_class, path_> const leafPath = "leafPath";
 
 x3::rule<leaf_data_class, leaf_data_> const leaf_data = "leaf_data";
 x3::rule<leaf_data_enum_class, enum_> const leaf_data_enum = "leaf_data_enum";
@@ -72,6 +73,9 @@
 auto const path_def =
         (x3::expect[container | listElement | nodeup | leaf]) % '/';
 
+auto const leafPath_def =
+        path;
+
 auto const leaf_data_enum_def =
         +char_;
 auto const leaf_data_decimal_def =
@@ -96,12 +100,13 @@
         *char_;
 
 auto const leaf_data_def =
+x3::expect[
         leaf_data_enum |
         leaf_data_decimal |
         leaf_data_bool |
         leaf_data_int |
         leaf_data_uint |
-        leaf_data_string;
+        leaf_data_string];
 
 auto const space_separator =
         x3::omit[x3::no_skip[space]];
@@ -116,7 +121,7 @@
         lit("delete") >> space_separator > path;
 
 auto const set_def =
-        lit("set") >> space_separator > path > leaf_data;
+        lit("set") >> space_separator > leafPath > leaf_data;
 
 auto const command_def =
         x3::expect[cd | create | delete_rule | set] >> x3::eoi;
@@ -133,6 +138,7 @@
 BOOST_SPIRIT_DEFINE(nodeup)
 BOOST_SPIRIT_DEFINE(container)
 BOOST_SPIRIT_DEFINE(leaf)
+BOOST_SPIRIT_DEFINE(leafPath)
 BOOST_SPIRIT_DEFINE(path)
 BOOST_SPIRIT_DEFINE(leaf_data)
 BOOST_SPIRIT_DEFINE(leaf_data_enum)