On 4/27/20 7:51 AM, Stéphane Ducasse wrote:
> Hi
>
> Doig the XP for magic literals I found
>
> Symbol >> precedence
> "Answer the receiver's precedence, assuming it is a valid Smalltalk
> message selector or 0 otherwise. The numbers are 1 for unary,
> 2 for binary and 3 for keyword selectors."
>
> self size = 0 ifTrue: [^ 0].
> (self first isLetter or: [ self first = $_ ]) ifFalse: [^ 2].
> self last = $: ifTrue: [^ 3].
> ^ 1
>
>
>
> #'_foo' precedence.
> "1"
> #'_+' precedence.
> "1"
> #'+' precedence.
> "2"
> #'foo' precedence.
> "1"
> #'foo:' precedence.
> "3"
> #'_foo:' precedence.
> “3"
>
> And I wonder why we are concerned with _
Underscores and letters are treated the same by the Smalltalk grammar.
Unary, keyword and variables can all begin with letters or underscores.
"_" is a valid variable and unary message name. As for your tests, you
would get the same results if you replaced $_ with $a -- "#'a+'
precedence = 1".
John Brant