You are right, the notation used in SLS is called EBNF - Extended Backus–Naur Form. It was developed by Niklaus Wirth, the creator of Pascal, and if i'm not mistaken, he was a supervisor of prof. Odersky in his Ph. D research. All Scala syntax is described in the end of SLS (page 159), there you can find Type
, Refinment
, nl
and other things used in Scala.
As for EBNF it self, here the complete table of it's syntax:
Usage Notation
definition =
concatenation ,
termination ;
alternation |
option [ ... ]
repetition { ... }
grouping ( ... )
terminal string " ... "
terminal string ' ... '
comment (* ... *)
special sequence ? ... ?
exception -
The notation in SLS is slightly modified, i.e ::=
is used instead of a simple =
and space used for concatenation instead of ,