[fpc-devel] Some thoughts on multi-line string support, and a possible syntax that I think is perfectly clean and Pascal-ish.

Pascal Riekenberg pascal at riekenberg.eu
Thu Jul 4 09:27:42 CEST 2019


> "J. Gareth Moreton" <gareth at moreton-family.com> hat am 4. Juli 2019 um 07:45 geschrieben:
> 
> 
> 
> On 04/07/2019 06:31, Sven Barth via fpc-devel wrote:
> > Am 04.07.2019 um 01:57 schrieb J. Gareth Moreton:
> >>
> >> While I like the idea in principle, one thing that I'm a bit worried 
> >> about is how whitespace is handled, like what counts for a leading or 
> >> trailing space in the string when between lines, since Pascal parsers 
> >> (and those for many other languages) traditionally, I believe, 
> >> discard everything following the last non-whitespace character in a 
> >> line.  Also, with the backtick suggestion, what should one do if they 
> >> wish to include a control character (e.g. a linefeed) or the backtick 
> >> character itself?
> >>
> > Whitespace is indeed an important point. I myself pay quite some 
> > attention to nice identation and with multiline strings that will 
> > probably break:
> >
> > === code begin ===
> >
> > const SomeString = `Whatever
> >                                      bar
> >                                      blubb
> >                                      foobar`;
> >
> > === code end ===
> >
> > That's how I also inline my normal multiline strings that I separate 
> > with sLineBreak. However to get the same result with this proposed new 
> > feature I'd have to do this:
> >
> > === code begin ===
> >
> > const SomeString = `Whatever
> > bar
> > blubb
> > foobar`;
> >
> > === code end ===
> >
> > Which looks just ugly.
> 
> 
> I can definitely see that being a sticking point for such a feature with 
> no easy way to solve it, except to introduce a $INCLUDESTRINGFILE 
> compiler directive, since if the string is so long that it requires the 
> spanning of multiple lines and not using the existing means of extending 
> a Pascal string onto multiple lines, then it probably should be stored 
> in an external text file to be merged upon compilation.
> 
> It's a shame, because I like the feature in principle, but the 
> whitespace problem is a bit of a deal-breaker for me.  Also, things like 
> trailing spaces and the line terminators being either #10 or #10#13 may 
> cause a lot of problems if the string has to be known exactly (e.g. for 
> cryptographic hash generation).
> 
> Gareth aka. Kit
> 

What about a Lazarus-Addon / Codetools extention that generates an old style
multi-line string from a selection and the other way around to make old style
multi-line strings editable again, so you can keep indention and trailing and
leading whitespaces and special characters.

Pascal


More information about the fpc-devel mailing list