JC van Vliet transput - help!

chris hermansen clhermansen@gmail.com
Sat Jan 17 03:45:20 GMT 2026


Got it, thanks, though I need to think through the #K# thing a bit more.
Too late on Friday night for that!

On Fri, Jan 16, 2026 at 4:28 PM Jose E. Marchesi <jemarch@gnu.org> wrote:

>
>
> > Hello everyone,
> >
> > I've started on bashing away at JC van Vliet's transput code (thanks,
> > Jose).
>
> Here we go! \o/ :)
>
> > And I have run into this comment:
> >
> >         The letter-aleph-symbol is replaced by #?#.
> >         Bold L, S, K and capital L are replaced by #L#, #S#, #K#
> >         and xlx, resp. The text to be duplicated is demarcated by
> >         #<# and #>#.
> >
> > I'm following some but not all of the above.  Here's an example of his
> code
> > that uses some of these:
> >
> > {MODE #?# {NUMBER = {UNION(#<##L# {REAL#>#, #<##L# {INT#>#);
>
> Ok so that is a non-public mode.  In the Transput module, do not use
> `pub' in front of the mode declaration, and then the mode indicant will
> not get publicized.
>
> You can define #L# with a sppp iterator:
>
>    {iter L {short short} {short} {} {long} {long long}}
>
> and then refer to it as {L} between a block of iters and reti.
>
> #S# is something like:
>
>   {iter S {} {SHORTEN} {SHORTEN SHORTEN}}
>
> and #K# is something like:
>
>   {iter K {} {LENG}    {LENG LENG}}
>
> and sometimes like:
>
>   {iter K  {SHORTEN SHORTEN} {SHORTEN} {} {LENG} {LENG LENG}}
>
>
> > I'm not following the purpose of the #<# and #>#, unless what he means is
> >
> > MODE #?# NUMBER = UNION(REAL, INT, LONG REAL, LONG INT, LONG LONG REAL,
> > LONG LONG INT);
> >
> > But I would have thought that
> >
> > MODE #?# NUMBER = UNION(#L# REAL, #L# INT);
> >
> > would have taken care of that.  Can anyone explain to me what I'm
> missing?
> >
> > Here's another example:
> >
> > {INT xlx int width, xlx real width, xlx exp width;
> >
> > I'm thinking that this should be
> >
> > INT int width, long int width, long long int width, real width, long real
> > width, long long real width etc
>
>
> Simplifying the notation a bit, I think that
>
>   #< #L REAL #>
>
> is indicating the portion of text that should be replicated along with
> each possible value of, in this case, #L.  In sppp, the demarcation is
> the area between the {iter}s and the {reti}.  so the above would
> correspond to:
>
>   {iter L {...}}
>   {L} real
>   {reti}
>
> >
> > Does that make sense?
> >
> > Secondly, can I use sppp to annotate and process these?
>
> Sure, see above.
>
> Also please see the existing transput.a68.in in the GCC source tree.  I
> added it with the few formatting routines (whole, fixed, etc) so it can
> be expanded with the full-fledged transput system.
>
>

-- 
Chris Hermansen · clhermansen "at" gmail "dot" com

C'est ma façon de parler.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://gcc.gnu.org/pipermail/algol68/attachments/20260116/ac1a92bd/attachment.htm>


More information about the Algol68 mailing list