X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~mdw/git/sod/blobdiff_plain/0e5c0b9edba8966aba72acb2b101b7a13d80f45a..054e8f8f1ea255ff77b19df82bd845e5686dac0d:/doc/syntax.tex diff --git a/doc/syntax.tex b/doc/syntax.tex index 0e14e17..7c2ee75 100644 --- a/doc/syntax.tex +++ b/doc/syntax.tex @@ -59,7 +59,7 @@ could be a token. ::= "0" | - ::= "1" | "2" $| \cdots |$ "9" + ::= "1" | "2" $| \ldots |$ "9" \end{grammar} The precise definition of @ is left to the function @@ -112,7 +112,7 @@ discouraged. ::= "0" @["o"|"O"@] @^+ - ::= "0" | "1" $| \cdots |$ "7" + ::= "0" | "1" $| \ldots |$ "7" ::= "0" @("x"|"X"@) @^+ @@ -492,8 +492,6 @@ All of these have their usual C meanings. ::= $[\epsilon, \mbox{@}]$ - ::= $[\mbox{@ @! $\epsilon$}]$ - ::= $[\mbox{@ @! $\epsilon$}, \mbox{@}]$ @@ -637,6 +635,8 @@ Properties: \item[@"initarg"] An identifier naming an initialization argument which can be used to provide a value for the slot. See \xref{sec:concepts.lifecycle.birth} for the details. +\item[@"initarg_class"] A symbol naming the Lisp class to use to represent + the initarg. Only permitted if @"initarg" is also set. \end{description} An @, if present, is treated as if a separate @@ -663,7 +663,7 @@ class Example: Super \{ \\ \ind ::= @["=" @] - :: + ::= \end{grammar} An @ provides an initial value for one or more slots. If @@ -737,12 +737,16 @@ Properties for the @|custom| aggregating method combination: in the effective method. The default is @|sod__val|. Only permitted if the method return type (see @"methty" below) is not @|void|. \item[@"methty"] A C type, which is the return type for direct methods of - this message. + this message. The default is the return type of the message. \item[@"decls"] A code fragment containing declarations to be inserted at the head of the effective method body. The default is to insert nothing. \item[@"before"] A code fragment containing initialization to be performed at the beginning of the effective method body. The default is to insert nothing. +\item[@"empty"] A code fragment executed if there are no primary methods; + it should usually store a suitable (identity) value in @. The + default is not to emit an effective method at all if there are no primary + methods. \item[@"first"] A code fragment to set the return value after calling the first applicable direct method. The default is to use the @"each" fragment.