Currently a stab clause without a right-hand-side is parsed as an error:
```elixir
Enum.map(xs, fn x ->
end)
```
And the `end` token ends up not being highlighted as a keyword. The
compiler gives a warning about this syntax but it comes up pretty
often when editing (writing a `case` block for example).
Implementation-wise, this might be a bug in tree-sitter? `prec.right`
seems to fight with error recovery when the rightmost token(s) are
`optional`.
```elixir
fn ->
end
```
gets parsed as
```scm
(anonymous_function
(stab_clause
right: (body (identifier)))
(MISSING "end"))
```
although the `optional` should allow this case. I've seen this in
other grammars and it seems like the way around it is to replace
the `prec.right` with a conflict.