[Issue 24032] Compiler is parsing string parameters to Templates

2023-07-10 Thread d-bugmail--- via Digitalmars-d-bugs
https://issues.dlang.org/show_bug.cgi?id=24032

Dennis  changed:

   What|Removed |Added

 Status|NEW |RESOLVED
 CC||dkor...@live.nl
   Hardware|x86_64  |All
 Resolution|--- |INVALID
 OS|Linux   |All

--- Comment #7 from Dennis  ---
Like FeepingCreature said, q{} is a string of D tokens, typically used for
string mixin purposes. dmd's behavior is correct. Please use a different string
literal kind for strings with code from other languages.

--


[Issue 24032] Compiler is parsing string parameters to Templates

2023-07-06 Thread d-bugmail--- via Digitalmars-d-bugs
https://issues.dlang.org/show_bug.cgi?id=24032

--- Comment #6 from FeepingCreature  ---
The easy solution would be writing `foo!"0b?01?11"`. `q{}` is intended for
fragments of D code.

--


[Issue 24032] Compiler is parsing string parameters to Templates

2023-07-06 Thread d-bugmail--- via Digitalmars-d-bugs
https://issues.dlang.org/show_bug.cgi?id=24032

--- Comment #5 from Puneet Goel  ---
Please ignore the previous comment. There was a mistake at my end.

--


[Issue 24032] Compiler is parsing string parameters to Templates

2023-07-06 Thread d-bugmail--- via Digitalmars-d-bugs
https://issues.dlang.org/show_bug.cgi?id=24032

--- Comment #4 from Puneet Goel  ---
Even if we have to do token parsing for q{}, the following code should not
fail.


class Foo(string str) {}
void main() {
  Foo!q{string str = "0X"} foo;
  Foo!q{string str = "0B"} bar;
}

The compiler gives the same errors as it gives for q{0B} and q{0X}.

--


[Issue 24032] Compiler is parsing string parameters to Templates

2023-07-06 Thread d-bugmail--- via Digitalmars-d-bugs
https://issues.dlang.org/show_bug.cgi?id=24032

--- Comment #3 from Puneet Goel  ---
I am using q{} to write my own DSL.

For this particular thing, I need to extend binary number strings in a way
where I can write stuff like 0b?01?11 where '?' can be used for pattern
matching. So, this becomes blocking for me. Is there an easy solution, or do I
need to discover an alternate syntax for my need?

BTW, what advantage do we gain by making the compiler parse q{} as a token
string?

--


[Issue 24032] Compiler is parsing string parameters to Templates

2023-07-06 Thread d-bugmail--- via Digitalmars-d-bugs
https://issues.dlang.org/show_bug.cgi?id=24032

--- Comment #2 from FeepingCreature  ---
If you can replace the string with `q{0x0}`, that should work. Alternately,
pass a regular `"0x"` string.

--


[Issue 24032] Compiler is parsing string parameters to Templates

2023-07-06 Thread d-bugmail--- via Digitalmars-d-bugs
https://issues.dlang.org/show_bug.cgi?id=24032

FeepingCreature  changed:

   What|Removed |Added

 CC||default_357-l...@yahoo.de

--- Comment #1 from FeepingCreature  ---
Yes, Q{} is defined in the grammar as a "token string" which must consist of
valid D tokens, because it's meant to pass around fragments of source code.
"0X" stopped being a valid token in DMD 2.084.0:
https://dlang.org/changelog/2.084.0.html#deprecated_binary_literals

--