|
parsing binary unary
precedence binding binding operators
strength strength
2 2 -*end of file*-
4 4 -*end of cell*-
6 ) ] |> }
8 7 ;
10 10 10 ,
12 12 do else list then
14 13 -> := <- = => >>
16 16 from in of to when
18 18 18 <<
20 19 20 |-
22 21 ===>
22 21 22 <===
24 23 <==>
26 25 ==>
26 25 26 <==
28 27 or
30 29 xor
32 31 and
34 34 not
36 35 != =!= == ===
36 35 36 < <= > >= ?
38 38 ||
40 39 :
42 42 |
44 44 ^^
46 46 &
48 48 .. ..<
50 50 ++
50 50 50 + -
52 52 **
54 6 <| [
56 55 \ \\
56 56 % / //
56 56 56 *
58 57 @
60 -*...symbols...*-
60 6 ( {
60 12 break catch continue elapsedTime elapsedTiming if return shield step throw time timing try while
60 16 for new
60 72 global local symbol threadVariable
60 59 SPACE
62 (*)
64 64 @@
66 ^* _* ~
68 68 #? . .? ^ ^** _
68 68 59 #
70 !
|
One of the most unusual aspects of the parsing precedence table above is that [ is assigned a precedence several steps lower than the precedence of symbols and adjacency, and also lower than the precedence of /. This was done so expressions like R/I[x] would be parsed according to mathematical custom, but it implies that expressions like f g [x] will be parsed in a surprising way, with f g being evaluated first, even if f and g are both functions. Suitably placed parentheses can help, as illustrated in the next example.
|
|
|
|