|
|
The syntactic descriptions that follow are presented
in the style used in
``C language compiler''.
The syntactic classes
type-specifier, identifier, and parameter-list
have the same form as in that chapter.
A syntactic description enclosed in square brackets (``[]'') is optional,
unless the right bracket is followed by a ``+''.
A ``+'' means ``one or more repetitions''
of a description.
Similarly, ``'' means ``zero or more repetitions''.
asm macro: asm [ type-specifier ] identifier ( [ parameter-list ] ) { [ storage-mode-specification-line asm-body ]An asm macro consists of the keyword asm, followed by what looks like a C function declaration. Inside the macro body there are one or more pairs of storage-mode-specification-line(s) (patterns) and corresponding asm-body(ies). If the type-specifier is other than void, the asm macro should return a value of the declared type.}
storage-mode-specification-line: % [ storage-mode [ identifier [ , identifier ]] ; ]+
A storage-mode-specification-line consists of a single line (no continuation with \ is permitted) that begins with % and contains the names, (identifier)(s) and storage mode(s) of the formal parameters. Modes for all formal parameters must be given in each storage-mode-specification-line (except for error). The % must be the first character on a line. If an asm macro has no parameter-list, the storage-mode-specification-line may be omitted.