This seems to make things work. I'm worried I might have an ordering bug where we might choose the wrong precedence if we write ambiguous code somehow, but at least for now, let's commit this and move on. Hopefully the nonassoc stuff is actually correct.