-
Notifications
You must be signed in to change notification settings - Fork 7
Open
Description
The @ symbol is permitted as the first character of a custom operator.
let (@+) a b = a + b
1 @+ 2fslang-spec/spec/lexical-analysis.md
Line 331 in a3b1d61
| regexp first-op-char = !%&*+-./<=>@^|~ |
The precedence table, doesn't list the @ operator to define its precedence and associativity.
fslang-spec/spec/basic-grammar-elements.md
Lines 246 to 284 in a3b1d61
| ### Precedence of Symbolic Operators and Pattern/Expression Constructs | |
| Rules of precedence control the order of evaluation for ambiguous expression and pattern | |
| constructs. Higher precedence items are evaluated before lower precedence items. | |
| The following table shows the order of precedence, from highest to lowest, and indicates whether | |
| the operator or expression is associated with the token to its left or right. The `OP` marker represents | |
| the `symbolic-op` tokens that begin with the specified prefix, except those listed elsewhere in the | |
| table. For example, `+OP` represents any token that begins with a plus sign, unless the token appears | |
| elsewhere in the table. | |
| | Operator or expression | Associativity | Comments | | |
| | --- | --- | --- | | |
| | f<types> | Left | High-precedence type application; see [§](lexical-filtering.md#lexical-analysis-of-type-applications) | | |
| | f(x) | Left | High-precedence application; see [§](lexical-filtering.md#high-precedence-application) | | |
| | . | Left | | | |
| | _prefix-op_ | Left | Applies to prefix uses of these symbols | | |
| | "| rule" | Right Pattern matching rules | | |
| | "f x" <br> "lazy x" <br> "assert x" | Left | | | |
| | **OP | Right | | | |
| | *OP /OP %OP | Left | | | |
| | - OP +OP | Left | Applies to infix uses of these symbols | | |
| | :? | Not associative | | | |
| | :: | Right | | | |
| | ^OP | Right | | | |
| | !=OP \<OP \>OP = \|OP &OP $ | Left | | | |
| | :> :?> | Right | | | |
| | & && | Left | | | |
| | or \|\| | Left | | | |
| | , | Not associative | | | |
| | := | Right | | | |
| | -> | Right | | | |
| | if | Not associative | | | |
| | function, fun, match, try | Not associative | | | |
| | let | Not associative | | | |
| | ; | Right | | | |
| | \| | Left | | | |
| | when | Right | | | |
| | as | Right | | |
The categorization table doesn't list @ operator.
fslang-spec/spec/basic-grammar-elements.md
Lines 190 to 212 in a3b1d61
| ### Categorization of Symbolic Operators | |
| The following `symbolic-op` tokens can be used to form prefix and infix expressions. The marker `OP` | |
| represents all `symbolic-op` tokens that begin with the indicated prefix, except for tokens that appear | |
| elsewhere in the table. | |
| ```fsgrammar | |
| infix-or-prefix-op := | |
| +, -, +., -., %, &, && | |
| prefix-op := | |
| infix-or-prefix-op | |
| ~ ~~ ~~~ (and any repetitions of ~) | |
| !OP (except !=) | |
| infix-op := | |
| infix-or-prefix-op | |
| - OP +OP || <OP >OP = |OP &OP ^OP *OP /OP %OP != | |
| (or any of these preceded by one or more ‘.’) | |
| := | |
| :: | |
| $ | |
| or | |
| ? | |
| ``` |
What would be the best way to determine this to update the spec?
Metadata
Metadata
Assignees
Labels
No labels