662426cd85
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. |
||
---|---|---|
.github | ||
bindings | ||
docs | ||
queries | ||
scripts | ||
src | ||
test | ||
.gitattributes | ||
.gitignore | ||
Cargo.toml | ||
LICENSE | ||
NOTICE | ||
README.md | ||
binding.gyp | ||
grammar.js | ||
package-lock.json | ||
package.json |
README.md
tree-sitter-elixir
Elixir grammar for tree-sitter.
Ready for production. Currently used by GitHub itself for source code highlighting and code navigation.
Development
See the docs for more details.