X-Git-Url: https://git.draconx.ca/gitweb/cdecl99.git/blobdiff_plain/1a0e48f845f6e54bac5b30bd1feb1b3b14dab967..dd0e33293dca1f19fd465b4d96b64adb6444e0d2:/doc/man/cdecl99.1 diff --git a/doc/man/cdecl99.1 b/doc/man/cdecl99.1 index 8d5e7d3..086e772 100644 --- a/doc/man/cdecl99.1 +++ b/doc/man/cdecl99.1 @@ -39,7 +39,7 @@ Suppress the welcome message when starting Run in batch (non-interactive) mode. Execute the commands provided on standard input as usual, but do not print any prompts. Exit with status 0 if and only if all commands complete successfully. - +.Pp This option implies .Fl -quiet . .It Fl i , -interactive @@ -50,7 +50,7 @@ Execute as if it were entered at the prompt, then exit. This option can be specified multiple times; all commands are run in the same order as specified on the command line. - +.Pp This option implies .Fl -batch . .It Fl f , -file Ar file @@ -63,7 +63,7 @@ and are specified, any .Fl -file option is ignored. - +.Pp This option implies .Fl -batch . .It Fl V , -version @@ -100,57 +100,57 @@ format is based on the one used in and is described by the following context-free grammar. This grammar is for illustrative purposes only: it is ambiguous and doesn't capture all the nuances of the C language. In this grammar, nonterminals are represented -.Fa thusly , +.Va thusly , \[*e] represents the empty string, and both .Li | and successive \[->] under the same nonterminal indicate alternation. All other symbols are terminals. The nonterminals -.Fa identifier , type-specifier , type-qualifier , storage-class-specifier +.Va identifier , type-specifier , type-qualifier , storage-class-specifier and -.Fa function-specifier +.Va function-specifier are defined as in C. -.Bl -column -offset indent ".Fa english-decl" "" -.It Fa english Ta \[->] Ta Li declare Fa identifier Li as Fa english-decl -.It Ta \[->] Ta Li type Fa english-decl -.It Fa english-decl Ta \[->] Ta Fa sf-specs declarator -.It Fa declarator Ta \[->] Ta Fa qualifiers Li pointer to Fa declarator -.It Ta \[->] Ta Li array Fa size Li of Fa declarator -.It Ta \[->] Ta Li function Fa parameters Li returning Fa declarator -.It Ta \[->] Ta Fa tq-specs -.It Fa qualifiers Ta \[->] Ta Fa type-qualifier qualifiers | No \[*e] -.It Fa tq-specs Ta \[->] Ta Fa type-qualifier tq-specs -.It Ta \[->] Ta Fa type-specifier tq-specs +.Bl -column -offset indent ".Va english-decl" "" +.It Va english Ta \[->] Ta Li declare Va identifier Li as Va english-decl +.It Ta \[->] Ta Li type Va english-decl +.It Va english-decl Ta \[->] Ta Va sf-specs declarator +.It Va declarator Ta \[->] Ta Va qualifiers Li pointer to Va declarator +.It Ta \[->] Ta Li array Va size Li of Va declarator +.It Ta \[->] Ta Li function Va parameters Li returning Va declarator +.It Ta \[->] Ta Va tq-specs +.It Va qualifiers Ta \[->] Ta Va type-qualifier qualifiers | No \[*e] +.It Va tq-specs Ta \[->] Ta Va type-qualifier tq-specs +.It Ta \[->] Ta Va type-specifier tq-specs .It Ta \[->] Ta \[*e] -.It Fa sf-specs Ta \[->] Ta Fa storage-class-specifier sf-specs -.It Ta \[->] Ta Fa function-specifier sf-specs +.It Va sf-specs Ta \[->] Ta Va storage-class-specifier sf-specs +.It Ta \[->] Ta Va function-specifier sf-specs .It Ta \[->] Ta \[*e] -.It Fa size Ta \[->] Ta Fa integer | Fa identifier | Li * | No \[*e] -.It Fa parameters Ta \[->] Ta Po Fa param-list Pc -.It Ta \[->] Ta Po Fa param-list Li , ... Pc +.It Va size Ta \[->] Ta Va integer | Va identifier | Li * | No \[*e] +.It Va parameters Ta \[->] Ta Po Va param-list Pc +.It Ta \[->] Ta Po Va param-list Li , ... Pc .It Ta \[->] Ta \[*e] -.It Fa param-list Ta \[->] Ta Fa parameter | Fa parameter Li , Fa param-list -.It Fa parameter Ta \[->] Ta Fa identifier Li as Fa english-decl -.It Ta \[->] Ta Fa english-decl +.It Va param-list Ta \[->] Ta Va parameter | Va parameter Li , Va param-list +.It Va parameter Ta \[->] Ta Va identifier Li as Va english-decl +.It Ta \[->] Ta Va english-decl .El .Sh RESOLVING AMBIGUITIES The C context-free grammar has many ambiguities regarding declarations. Ordinarily, these ambiguities are resolved by the context in which the declaration appears, such as which typedef names are currently in scope. - +.Pp For example, the meaning of the declaration .Ic int f(int (foo)) depends on whether or not a typedef named -.Fa foo +.Va foo is in scope. If such a typedef is in scope, this declares -.Fa f +.Va f as a function that takes (after adjustment) a pointer to a function that takes a -.Fa foo +.Va foo and returns an int, returning an int. If there is no such typedef, then this declares -.Fa f +.Va f as a function that takes an int and returns an int. - +.Pp Since .Nm isn't a C compiler, on several occasions it has to arbitrarily pick one of two @@ -162,7 +162,7 @@ interpreted as a function which takes an int and returns an int. Nick Bowler .Sh COPYRIGHT Copyright \(co 2011 Nick Bowler - +.Pp Permission is granted to copy, distribute and/or modify this manual under the terms of the Do What The Fuck You Want To Public License, version 2. .Sh SEE ALSO