On Wednesday, 28 January 2015 at 18:54:29 UTC, Zach the Mystic
wrote:
I think a keyword is a keyword is a keyword. If it's a keyword
to the right it should be one everywhere. How is somethign
that's a built-in attribute one place and an identifier in
another not context sensitive. Walter said that `exit`, `C++`,
i.e. `scope(exit)`, `extern (C++)` etc. were never keywords,
but I disagree. They are indeed context sensitive keywords.
They have wisely been kept to a minimum. They are just
confusing to reason about, except in the most strictly confined
places, where they are now. I think that's why they're out of
the question. They have wisely been kept to a minimum.
This is actually a valid argument against my proposal. Thank
you! lol. I don't agree with it but at least it's valid :) Your
reasoning depends on how you define a keyword. You seem to be
defining a keyword in terms of an identifier that is recognized
by the compiler to have a special meaning. I define a keyword as
a word that the lexer recognizes as a keyword token.
I see what you mean by saying that the word is a function
attribute in one place and an identifier in another. But what's
wrong with that? if I define a struct named mystruct...I could
declare one like this:
mystruct mystruct;
The first appearance is a type and the second is an identifier.
I'm sure there are many examples of this in the language.
Anyway, I disagree with your conclusion, however, I agree that
this could be a concern.