[fpc-devel] Some thoughts on multi-line string support, and a possible syntax that I think is perfectly clean and Pascal-ish.
Bernd Oppolzer
bernd.oppolzer at t-online.de
Thu Jul 4 14:34:31 CEST 2019
I have to admit first, that I did not read all the comments in this
thread. But anyway,
I'd like to comment on this. Because I have done Pascal programming for
almost 40 years
now and even on platforms that are much older than PCs and machines
typically run
by Unix systems, I have a somehow different view.
First of all, there is a good reason why Pascal has a WRITELN procedure;
because there are platforms where it is simply not possible to write a
special
character like 0x0a to flush an output buffer and start a new output line.
On old scientific computers of the 1960s and 1970s, there simply was no
such character;
this comes from the teletype heritage of the Unix operating system. Even
today there
are platforms (and languages) where it is not possible to write a new
line on output
simply by writing a 0x0a char. Only people which have grown up with
systems like
MS-DOS and Unix take this as given.
So I doubt that there is a portable solution for multi-line strings in
the sense that
strings involve carriage-return characters. If you need such things, you
have to find
non-portable solutions (like platform-specific constants:
CONST NL_Number = 0x0a; for example
or CONST NL_CHAR = X'0a'; ... if your compiler allow such a notation).
Second:
To split strings in source programs, I strongly suggest a solution where
the parts are
terminated on every line; otherwise (with strings left open), you will
always have a
problem with trailing and leading blanks. The source code should be
format free,
after all.
The simplest solution IMO is: simply close the string on one line and
open it on the
next one, like here:
CONST long_string = 'this is a long string '
'which occupies '
'multiple source lines';
if you absolutely need to put line feed characters into such a long
string, do it like this:
CONST long_string = 'this is a long string ' x'0a'
'which occupies ' x'0a'
'multiple source lines';
This is implemented in my New Stanford Pascal compiler.
Kind regards
Bernd
Am 04.07.2019 um 13:54 schrieb Michael Van Canneyt:
>
>
> On Thu, 4 Jul 2019, Tomas Hajny wrote:
>
>> On 2019-07-04 12:59, Marģers . via fpc-devel wrote:
>>
>> .
>> .
>>> Why introduce ` if there already is ' ? Just use '
>>> as well for multi line strings. For people of more
>>> conservative view point, put multilinestring
>>> behind mode switch.
>>
>> Because then it's never clear whether the fact that there's no ending
>> quote before the end of the line is an omission, or an intention.
>
> Exactly. The same goes for all other quote characters. That's why the
> directive is a better approach; it is unambigious.
>
> Michael.
>
> _______________________________________________
> fpc-devel maillist - fpc-devel at lists.freepascal.org
> https://lists.freepascal.org/cgi-bin/mailman/listinfo/fpc-devel
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.freepascal.org/pipermail/fpc-devel/attachments/20190704/69f58db7/attachment.html>
More information about the fpc-devel
mailing list