KronicDeth/intellij-elixir — pull request #38 by KronicDeth (2014-11-02 22:31:32+00:00)
Title: Operators

Resolves #29

Operators and the following properties of those operators
* binary or unary
* left or right associative
* precedence

Generally, this can be summarized as this [lexing](https://github.com/elixir-lang/elixir/blob/de39bbaca277002797e52ffbde617ace06233a2b/lib/elixir/src/elixir_tokenizer.erl#L343-L424) and these [precedence rules](https://github.com/elixir-lang/elixir/blob/de39bbaca277002797e52ffbde617ace06233a2b/lib/elixir/src/elixir_parser.yrl#L44-L71), where non-associative in yecc format is implemented as unary in Grammar Kit's PEG bnf format; right is binary with the `rightAssociative = true` flag; and left is binary with no flag. Precedence is implemented with lower precedence being first in `expression`.

**NOTE: This does not implement the context in which various operators are valid from [elixir_parser.yrl](https://github.com/elixir-lang/elixir/blob/de39bbaca277002797e52ffbde617ace06233a2b/lib/elixir/src/elixir_parser.yrl), so `\\` work everywhere for now for example.**
**NOTE: This does not implement `,` as it needs to be implemented as a list and not as a binary or unary operator, so it was moved to #37**
**NOTE: This does not implement `.` as it is planned for #30.**