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

Change-Id: I34f510f3bf8d1e6da06de350456bd2804ca236db
Bug: 28679009
diff --git a/AST.cpp b/AST.cpp
index d5f8cc7..7e90ed0 100644
--- a/AST.cpp
+++ b/AST.cpp
@@ -13,8 +13,9 @@
 
 namespace android {
 
-AST::AST(Coordinator *coordinator)
+AST::AST(Coordinator *coordinator, const std::string &path)
     : mCoordinator(coordinator),
+      mPath(path),
       mScanner(NULL),
       mRootScope(new Scope) {
     enterScope(mRootScope);
@@ -37,6 +38,10 @@
     mScanner = scanner;
 }
 
+const std::string &AST::getFilename() const {
+    return mPath;
+}
+
 bool AST::setPackage(const char *package) {
     mPackage.setTo(package);
     CHECK(mPackage.isValid());
@@ -108,7 +113,8 @@
     return mScopePath.top();
 }
 
-bool AST::addScopedType(const char *localName, NamedType *type) {
+bool AST::addScopedType(
+        const char *localName, NamedType *type, std::string *errorMsg) {
     std::string anonName;
 
     if (localName == nullptr) {
@@ -119,7 +125,7 @@
 
     // LOG(INFO) << "adding scoped type '" << localName << "'";
 
-    bool success = scope()->addType(localName, type);
+    bool success = scope()->addType(localName, type,  errorMsg);
     if (!success) {
         return false;
     }