www.digitalmars.com         C & C++   DMDScript  

digitalmars.D.learn - What's that 'q' before '{' in this code?

reply Machine Code <jckj33 gmail.com> writes:
https://github.com/dlang/dmd/blob/master/src/dmd/compiler.d#L75
Jan 15
next sibling parent reply SrMordred <patric.dexheimer gmail.com> writes:
On Tuesday, 15 January 2019 at 17:52:35 UTC, Machine Code wrote:
 https://github.com/dlang/dmd/blob/master/src/dmd/compiler.d#L75
https://dlang.org/spec/lex.html#token_strings :)
Jan 15
parent Machine Code <jckj33 gmail.com> writes:
On Tuesday, 15 January 2019 at 17:56:10 UTC, SrMordred wrote:
 On Tuesday, 15 January 2019 at 17:52:35 UTC, Machine Code wrote:
 https://github.com/dlang/dmd/blob/master/src/dmd/compiler.d#L75
https://dlang.org/spec/lex.html#token_strings :)
I had just infered from the commend in the code "The D code to be generated is provided as D source code in the form of a string." then I tried: auto s = q{ foo(); return 10 }; writeln(s); Then whoa. What a feature! I'm not aware of any language with this feature. Amazing. Thank for your answer as well :)
Jan 15
prev sibling parent Adam D. Ruppe <destructionator gmail.com> writes:
On Tuesday, 15 January 2019 at 17:52:35 UTC, Machine Code wrote:
 https://github.com/dlang/dmd/blob/master/src/dmd/compiler.d#L75
It is a string literal that must be made out of D code tokens. In my blog this week, I talked about some code that uses them: http://dpldocs.info/this-week-in-d/Blog.Posted_2019_01_14.html#the-generated-client You can see how it syntax highlights as code, but is semantically a string. The code inside is passed to mixin, so this hybrid appearance works well.
Jan 15