PR# 19556 Eiffel ECMA-367 8.29.10ff Manifest Strings, reporting error, and discussion

Problem Report Summary
Submitter: rwschlatter
Category: EiffelStudio
Priority: Medium
Date: 2019/07/28
Class: Bug
Severity: Non-critical
Number: 19556
Release: 19.05 GPL
Confidential: No
Status: Open
Responsible:
Environment: win 8.1 Pro
Synopsis: Eiffel ECMA-367 8.29.10ff Manifest Strings, reporting error, and discussion

Description
INTRO

I was trying with some difficulty to get the multiline manifest string to work for me, not in the simple case but with the verbatim_string variant.

The online documentation at https://www.eiffel.org/doc/eiffel/Eiffel_programming_language_syntax#Manifest_strings was not very helpful, eg considered incomplete. I left comments at the page. I started to locate the syntax and semantics in the ECMA-367 document to find the solution. 

The problem I had was by the semantics that are not obvious except when looking at the ECMA document, eg the *identical* requirements of Verbatim_string_opener and Verbatim_string_closer elements, including non-obvious white space.

ERROR REPORT

 When Verbatim_string_closer doe not exactly, including white space, match Verbatim_string_opener the compiler runs away and reports an error at the end of the Class text:
Syntax error at line nnn in class TEST
(incomplete verbatim string: missing Verbatim_string_closer)

Problem: there is no information as to which manifest string in the source code is the origin. It does never report a validity error code: VWVS as suggested in 8.29.15.

Suggestion: point the error message by line and character positions to the related Verbatim_string_opener.

DISCUSSION

IMHO the definition in 8.29.15 of the alpha, the delimiter string, is much too strict when it includes white space.

My suggestion would be to strip all white space from the alpha delimiter string.

The consequence I see is that the lookout for the Verbatim_string_closer is slightly more complex: look ahead for the Close_bracket, then backtrack to look for a potential alpha (ignoring white space).

DOCUMENTATION

As mentioned, I suggested modifications at https://www.eiffel.org/doc/eiffel/Eiffel_programming_language_syntax#Manifest_strings in the comment section of the page.

_____________________

Regards - Richard
To Reproduce
Load the provided source code into Eiffel Studio (as basic project). Dummy make feature as provided for compiling the source only.

Un-comment the listed test cases one by one (and set back to comment) and observe the compilation results.
Problem Report Interactions
From:rwschlatter    Date:2019/07/28    Status: Open    Download   
Adding to the DISCUSSION:

The strict identity of the alpha delimiter can be very tricky. Eg. the white space created by Tab-character & Space-character is considered different from the sequence of Space-character & Tab-character. On the computer display and likely also on printouts these white spaces are likely to match optically. Similar for Tab-character & Space-character compared to Space-character iterated to the tab distance.

From:rwschlatter    Date:2019/07/28    Download   
Attachments for problem report #19556

Attachment: manifeststringtest.ecf     Size:1145
Attachment: manifeststringtest.rc     Size:106
Attachment: test.e     Size:4461