JC van Vliet transput - help!
Jose E. Marchesi
jemarch@gnu.org
Sat Jan 17 04:00:22 GMT 2026
> Got it, thanks, though I need to think through the #K# thing a bit more.
> Too late on Friday night for that!
Yes I also found it quite confusing.
Look at transput.a68.in.
>
> 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.
>>
>>
More information about the Algol68
mailing list