Parser: Useful error messages when a Python keyword is used.

--
MOS_MIGRATED_REVID=89307831
diff --git a/src/main/java/com/google/devtools/build/lib/syntax/Parser.java b/src/main/java/com/google/devtools/build/lib/syntax/Parser.java
index 3ce949d..297aa13 100644
--- a/src/main/java/com/google/devtools/build/lib/syntax/Parser.java
+++ b/src/main/java/com/google/devtools/build/lib/syntax/Parser.java
@@ -299,6 +299,31 @@
     return previous;
   }
 
+  // Keywords that exist in Python and that we don't parse.
+  private static final EnumSet<TokenKind> FORBIDDEN_KEYWORDS =
+      EnumSet.of(TokenKind.AS, TokenKind.ASSERT, TokenKind.BREAK, TokenKind.CONTINUE,
+          TokenKind.DEL, TokenKind.EXCEPT, TokenKind.FINALLY, TokenKind.FROM, TokenKind.GLOBAL,
+          TokenKind.IMPORT, TokenKind.IS, TokenKind.LAMBDA, TokenKind.NONLOCAL, TokenKind.RAISE,
+          TokenKind.TRY, TokenKind.WITH, TokenKind.WHILE, TokenKind.YIELD);
+
+  private void checkForbiddenKeywords(Token token) {
+    if (parsePython || !FORBIDDEN_KEYWORDS.contains(token.kind)) {
+      return;
+    }
+    String error;
+    switch (token.kind) {
+      case ASSERT: error = "'assert' not supported, use 'fail' instead"; break;
+      case TRY: error = "'try' not supported, all exceptions are fatal"; break;
+      case IMPORT: error = "'import' not supported, use 'load' instead"; break;
+      case IS: error = "'is' not supported, use '==' instead"; break;
+      case LAMBDA: error = "'lambda' not supported, declare a function instead"; break;
+      case RAISE: error = "'raise' not supported, use 'fail' instead"; break;
+      case WHILE: error = "'while' not supported, use 'for' instead"; break;
+      default: error = "keyword '" + token.kind.getPrettyName() + "' not supported"; break;
+    }
+    reportError(lexer.createLocation(token.left, token.right), error);
+  }
+
   private void nextToken() {
     if (pushedToken != null) {
       token = pushedToken;
@@ -313,6 +338,7 @@
         }
       }
     }
+    checkForbiddenKeywords(token);
     if (DEBUGGING) {
       System.err.print(token);
     }