www.digitalmars.com         C & C++   DMDScript  

digitalmars.D.learn - exercise - find invalid D tokens (Impossible ?)

reply Basile B. <b2.temp gmx.com> writes:
Here are the specifications of token strings:

"Token strings open with the characters q{ and close with the 
token }. In between must be valid D tokens. The { and }"

So we can deduce that any invalid D token inside a token string 
will lead to a compilation error. Indeed:

void main()
{
     enum s = q{#}; // malformed special token sequence
}

produces an error.

So are you able to find more invalid token ?
Oct 27 2016
parent reply Johan Engelen <j j.nl> writes:
On Friday, 28 October 2016 at 05:16:45 UTC, Basile B. wrote:
 Here are the specifications of token strings:

 "Token strings open with the characters q{ and close with the 
 token }. In between must be valid D tokens. The { and }"

 So we can deduce that any invalid D token inside a token string 
 will lead to a compilation error. Indeed:

 void main()
 {
     enum s = q{#}; // malformed special token sequence
 }

 produces an error.

 So are you able to find more invalid token ?
Try '}'
Oct 27 2016
parent Basile B. <b2.temp gmx.com> writes:
On Friday, 28 October 2016 at 06:21:38 UTC, Johan Engelen wrote:
 On Friday, 28 October 2016 at 05:16:45 UTC, Basile B. wrote:
 Here are the specifications of token strings:

 "Token strings open with the characters q{ and close with the 
 token }. In between must be valid D tokens. The { and }"

 So we can deduce that any invalid D token inside a token 
 string will lead to a compilation error. Indeed:

 void main()
 {
     enum s = q{#}; // malformed special token sequence
 }

 produces an error.

 So are you able to find more invalid token ?
Try '}'
Yes and many others. Since I've posted this message I've realized that actually there are much invalid tokens. Any character that's not an Universal Alpha and that's not in a string prevents compilation. A complete list is at page 451 in http://www.open-std.org/JTC1/SC22/WG14/www/docs/n1124.pdf
Oct 27 2016