On Sun, 12 Feb 2012 01:00:07 +0100, simendsjo <[email protected]> wrote:

On 02/12/2012 12:35 AM, Timon Gehr wrote:
On 02/11/2012 09:59 PM, Martin Nowak wrote:
Just wanted to point you to my working D lexer (needs a CTFE bugfix
http://d.puremagic.com/issues/show_bug.cgi?id=6815).


This seems to do the job:
constfold.c:1566
- if (tn->ty == Tchar || tn->ty == Twchar || tn->ty == Tdchar)
+ if (tn->isImmutable() && (tn->ty == Tchar || tn->ty == Twchar ||
tn->ty == Tdchar))

However, I don't know the compiler's internals at all, therefore it is
quite possible that the fix is incorrect.


https://gist.github.com/1262321 D part
https://gist.github.com/1255439 Generic part

Bug: The lexer cannot handle /++/ and /**/ (without new line character
at the end).

Another thing.. Using /+ and +/ in strings gives unexpected results when commented out:
/+
auto a = "/+";

/+ comments do nest. So you have opened two levels and the comment stops after two pairing +/.
/* comments do not nest.

+/
everything from this point is commented out.

/+
auto a = "+/";
+/ // already terminated by the string value.

Is this a bug, or as designed? /++/ is meant to comment out code, so it would have been nice if it was able to handle this, but I guess it would complicate the lexer a great deal.

Reply via email to