Fix precendence of chained conditional expressions

This ensures chained conditional expressions are evaluated
left-to-right, like Java, instead of right-to-left, like PHP [1].

[1] http://php.net/language.operators.comparison#language.operators.comparison.ternary

MOE_MIGRATED_REVID=137756796
diff --git a/java/com/google/turbine/parse/ConstExpressionParser.java b/java/com/google/turbine/parse/ConstExpressionParser.java
index 7358f5f..87a4e96 100644
--- a/java/com/google/turbine/parse/ConstExpressionParser.java
+++ b/java/com/google/turbine/parse/ConstExpressionParser.java
@@ -516,7 +516,7 @@
       return null;
     }
     eat();
-    Tree.Expression elseExpr = expression(TurbineOperatorKind.Precedence.TERNARY);
+    Tree.Expression elseExpr = expression();
     if (elseExpr == null) {
       return null;
     }
diff --git a/java/com/google/turbine/tree/Pretty.java b/java/com/google/turbine/tree/Pretty.java
index 23691b1..7cf9354 100644
--- a/java/com/google/turbine/tree/Pretty.java
+++ b/java/com/google/turbine/tree/Pretty.java
@@ -203,11 +203,13 @@
 
   @Override
   public Void visitConditional(Tree.Conditional conditional, Void input) {
+    append("(");
     conditional.cond().accept(this, null);
     append(" ? ");
     conditional.iftrue().accept(this, null);
     append(" : ");
     conditional.iffalse().accept(this, null);
+    append(")");
     return null;
   }
 
diff --git a/javatests/com/google/turbine/parse/ExpressionParserTest.java b/javatests/com/google/turbine/parse/ExpressionParserTest.java
index 7879b9a..9fa96e2 100644
--- a/javatests/com/google/turbine/parse/ExpressionParserTest.java
+++ b/javatests/com/google/turbine/parse/ExpressionParserTest.java
@@ -106,7 +106,7 @@
             "((MyType) 42 + c)", "((MyType) 42 + c)",
           },
           {
-            "true || false ? 1 + 2 : 3 + 4", "(true || false) ? (1 + 2) : (3 + 4)",
+            "true || false ? 1 + 2 : 3 + 4", "((true || false) ? (1 + 2) : (3 + 4))",
           },
           {
             "{1, 2, 3,},", "{1, 2, 3}",
@@ -128,7 +128,10 @@
           },
           {
             "0xffffffff", "-1",
-          }
+          },
+          {
+            "A ? B : C ? D : E;", "(A ? B : (C ? D : E))",
+          },
         });
   }
 
diff --git a/javatests/com/google/turbine/parse/testdata/anno1.input b/javatests/com/google/turbine/parse/testdata/anno1.input
index 0b6eb40..cf0eacb 100644
--- a/javatests/com/google/turbine/parse/testdata/anno1.input
+++ b/javatests/com/google/turbine/parse/testdata/anno1.input
@@ -1,3 +1,3 @@
-@Foo(x = flag ? 0 : (1 + 2))
+@Foo(x = (flag ? 0 : (1 + 2)))
 class Test {
 }