Switch to 'glr' skeleton parser, better diagnostics through location tracking.

Change-Id: I34f510f3bf8d1e6da06de350456bd2804ca236db
Bug: 28679009
diff --git a/Scope.cpp b/Scope.cpp
index e872cbf..8b6385a 100644
--- a/Scope.cpp
+++ b/Scope.cpp
@@ -9,12 +9,12 @@
 
 Scope::Scope() {}
 
-bool Scope::addType(const char *localName, NamedType *type) {
+bool Scope::addType(
+        const char *localName, NamedType *type, std::string *errorMsg) {
     if (mTypeIndexByName.indexOfKey(localName) >= 0) {
-        fprintf(stderr,
-                "ERROR: A type named '%s' is already declared in the current "
-                "scope.\n",
-                localName);
+        *errorMsg = "A type named '";
+        (*errorMsg) += localName;
+        (*errorMsg) += "' is already declared in the  current scope.";
 
         return false;
     }