PR# 19556 Eiffel ECMA-367 8.29.10ff Manifest Strings, reporting error, and discussion
Problem Report Summary
Release: 19.05 GPL
Environment: win 8.1 Pro
Synopsis: Eiffel ECMA-367 8.29.10ff Manifest Strings, reporting error, and discussion
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
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.