bug-groff
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[bug #42675] [troff] \} treated as macro argument


From: Dave
Subject: [bug #42675] [troff] \} treated as macro argument
Date: Tue, 9 Apr 2024 11:32:36 -0400 (EDT)

Follow-up Comment #12, bug #42675 (group groff):

[comment #5 comment #5:]
>   This is not a bug, as the results of the test cases are
> according to the description of how macros work, CSTR #54,
> chapter 7.3.  Arguments.

That claim is undermined by the subsequent comment #10 demonstration that
groff produces different results from DWB 3.3 and Unix V7 (which also
intriguingly produce different results from each other).

But even if we don't presume that their behaviors are complaint with CSTR#54
section 7.3, I don't see anything there to indicate that a \} that performs
flow control should _also_ (see comment #11) be taken as a macro parameter. 
Below is the complete text of that section.  Can you point to the wording that
you think supports groff's overloading of \}?

----

*_7.3. Arguments._* When a macro is invoked by name, the remainder of the line
is taken to contain up to nine arguments. The argument separator is the space
character (not tab), and arguments may be surrounded by double quotes to
permit embedded space characters. Pairs of double quotes may be embedded in
double-quoted arguments to represent a single double-quote character. The
argument "" is explicitly null. If the desired arguments won’t fit on a
line, a concealed newline may be used to continue on the next line. A trailing
double quote may be omitted.
     When a macro is invoked the _input level_ is _pushed down_ and any
arguments available at the previous level become unavailable until the macro
is completely read and the previous level is restored. A macro’s own
arguments can be interpolated at any point within the macro with \$_N_, which
interpolates the _N_th argument (1≤_N_≤9). If an invoked argument does not
exist, a null string results. For example, the macro _xx_ may be defined by

     .de xx    \" begin definition
     Today is \\$1 the \\$2.
     ..        \" end definition

and called by

     .xx Monday 14th

to produce the text

     Today is Monday the 14th.

     Note that each \$ was concealed in the definition with a prepended \. The
number of arguments is in the .$ register.
     No arguments are available at the top (non-macro) level, within a string,
or within a trap-invoked macro.
     Arguments are copied in copy mode onto a stack where they are available
for reference. It is advisable to conceal string references (with an extra \)
to delay interpolation until argument reference time.



    _______________________________________________________

Reply to this item at:

  <https://savannah.gnu.org/bugs/?42675>

_______________________________________________
Message sent via Savannah
https://savannah.gnu.org/




reply via email to

[Prev in Thread] Current Thread [Next in Thread]