Build language: Implement integer division

--
MOS_MIGRATED_REVID=91192716
diff --git a/src/test/java/com/google/devtools/build/lib/syntax/EvaluationTest.java b/src/test/java/com/google/devtools/build/lib/syntax/EvaluationTest.java
index a558805..37042ed 100644
--- a/src/test/java/com/google/devtools/build/lib/syntax/EvaluationTest.java
+++ b/src/test/java/com/google/devtools/build/lib/syntax/EvaluationTest.java
@@ -252,6 +252,9 @@
     assertThat(eval("6 % 2")).isEqualTo(0);
     assertThat(eval("6 % 4")).isEqualTo(2);
     assertThat(eval("3 % 6")).isEqualTo(3);
+    assertThat(eval("7 % -4")).isEqualTo(-1);
+    assertThat(eval("-7 % 4")).isEqualTo(1);
+    assertThat(eval("-7 % -4")).isEqualTo(-3);
     checkEvalError("integer modulo by zero", "5 % 0");
   }
 
@@ -265,6 +268,25 @@
   }
 
   @Test
+  public void testDivision() throws Exception {
+    assertThat(eval("6 / 2")).isEqualTo(3);
+    assertThat(eval("6 / 4")).isEqualTo(1);
+    assertThat(eval("3 / 6")).isEqualTo(0);
+    assertThat(eval("7 / -2")).isEqualTo(-4);
+    assertThat(eval("-7 / 2")).isEqualTo(-4);
+    assertThat(eval("-7 / -2")).isEqualTo(3);
+    assertThat(eval("2147483647 / 2")).isEqualTo(1073741823);
+    checkEvalError("integer division by zero", "5 / 0");
+  }
+
+  @Test
+  public void testOperatorPrecedence() throws Exception {
+    assertThat(eval("2 + 3 * 4")).isEqualTo(14);
+    assertThat(eval("2 + 3 / 4")).isEqualTo(2);
+    assertThat(eval("2 * 3 + 4 / -2")).isEqualTo(4);
+  }
+
+  @Test
   public void testConcatStrings() throws Exception {
     assertEquals("foobar", eval("'foo' + 'bar'"));
   }