       @undefined,
     )
 
-    object: -> seq(
-      "{", commaSep(err(@pair)), "}")
+    object: -> prec(PREC.OBJECT, seq(
+      "{", commaSep(err(@pair)), "}"))
 
     array: -> seq(
       "[", commaSep(err(@_expression)), "]")

        @var_assignment))),
      terminator())

    statement_block: -> prec(PREC.BLOCK, seq(
      "{", err(repeat(@_statement)), "}"))

    if_statement: -> prec.right(0, seq(
      "if",

PREC =
  COMMA: -1,
  ASSIGN: 0,
  OBJECT: 1,
  TERNARY: 1,
  OR: 2,
  AND: 3,
