The following example seems to have an error:
object_fields: obj = rev_object_fields { List.rev obj };
rev_object_fields:
| (* empty *) { [] }
| obj = rev_object_fields; COMMA; k = ID; COLON; v = value
{ (k, v) :: obj }
;
It only parses JSON objects with leading comma, like: {,"foo": "bar"}.