Merge "Error message for incorrect FQNames."
diff --git a/hidl-gen_l.ll b/hidl-gen_l.ll
index 5dd3c85..5945df9 100644
--- a/hidl-gen_l.ll
+++ b/hidl-gen_l.ll
@@ -23,9 +23,9 @@
 
 COMPONENT               {L}({L}|{D})*
 DOT                     [.]
-PATH                    {COMPONENT}({DOT}{COMPONENT})*
 AT                      [@]
 VERSION                 {AT}{D}+{DOT}{D}+
+FQNAME                  ({COMPONENT}|{VERSION})(({DOT}|":"+){COMPONENT}|{VERSION})*
 
 %{
 
@@ -157,15 +157,8 @@
 "?"			{ return('?'); }
 "@"			{ return('@'); }
 
-{PATH}{VERSION}"::"{PATH}       { yylval->str = strdup(yytext); return token::FQNAME; }
-{VERSION}"::"{PATH}             { yylval->str = strdup(yytext); return token::FQNAME; }
-{PATH}{VERSION}                 { yylval->str = strdup(yytext); return token::FQNAME; }
-{COMPONENT}({DOT}{COMPONENT})+  { yylval->str = strdup(yytext); return token::FQNAME; }
 {COMPONENT}                     { yylval->str = strdup(yytext); return token::IDENTIFIER; }
-
-{PATH}{VERSION}"::"{PATH}":"{COMPONENT}       { yylval->str = strdup(yytext); return token::FQNAME; }
-{VERSION}"::"{PATH}":"{COMPONENT}             { yylval->str = strdup(yytext); return token::FQNAME; }
-{PATH}":"{COMPONENT}                          { yylval->str = strdup(yytext); return token::FQNAME; }
+{FQNAME}                        { yylval->str = strdup(yytext); return token::FQNAME; }
 
 0[xX]{H}+{IS}?		{ yylval->str = strdup(yytext); return token::INTEGER; }
 0{D}+{IS}?		{ yylval->str = strdup(yytext); return token::INTEGER; }
diff --git a/hidl-gen_y.yy b/hidl-gen_y.yy
index 56bb605..35f7405 100644
--- a/hidl-gen_y.yy
+++ b/hidl-gen_y.yy
@@ -904,7 +904,9 @@
           $$ = $2;
 
           if ($$ != NULL && !$$->isValidEnumStorageType()) {
-              std::cerr << "ERROR: Invalid enum storage type specified. at "
+              std::cerr << "ERROR: Invalid enum storage type ("
+                        << $2->typeName()
+                        << ") specified. at "
                         << @2 << "\n";
 
               YYERROR;
diff --git a/main.cpp b/main.cpp
index 7c529a9..b7d5a96 100644
--- a/main.cpp
+++ b/main.cpp
@@ -1367,6 +1367,12 @@
     argc -= optind;
     argv += optind;
 
+    if (argc == 0) {
+        fprintf(stderr, "ERROR: no fqname specified.\n");
+        usage(me);
+        exit(1);
+    }
+
     if (rootPath.empty()) {
         const char *ANDROID_BUILD_TOP = getenv("ANDROID_BUILD_TOP");