Minimizing "reserved" words
Daniel9 via Digitalmars-d
digitalmars-d at puremagic.com
Tue Nov 1 05:28:58 PDT 2016
On Monday, 31 October 2016 at 20:45:56 UTC, Jacob Carlborg wrote:
> The "reserved" words I'm referring to are not necessarily
> keywords in the language but otherwise words that should be
> avoided, especially for defining methods in aggregates. I'm
> mostly thinking of built-in properties like .init, .classinfo,
> .sizeof, .outer and so on.
>
> All of the above can be used as variable names. Some of the
> above names can be used as methods in aggregates but some
> cannot. Of the above names only "sizeof" cannot be used as a
> method name.
>
> Would it be better to try to minimize these special words and
> instead use either compiler recognized functions/templates or
> something like __traits? If they were compiler recognized
> functions, defined somewhere in druntime, the normal language
> lookup rules could be used to disambiguate the compiler
> recognized functions from user defined functions. Or if a
> __trait is used, that would have it's own namespace and not
> cause any conflicts.
>
> In the latest release of DMD (2.072.0) TypeInfo.init has been
> deprecate in favor of TypeInfo.initializer. That would not have
> been needed if .init wasn't a built-in property but instead a
> compiler recognized function.
>
> Thoughts? Too late to change, to much could would break?
This information from Wiki, I hope it will be useful. That
general reserved words and keywords need not coincide, but in
most modern languages keywords are a subset of reserved words, as
this makes parsing easier, since keywords cannot be confused with
identifiers. In some languages, like C or Python, reserved words
and keywords coincide, while in other languages, like Java, all
keywords are reserved words, but some reserved words are not
keywords – these are "reserved for future use". In yet other
languages, such as the older languages ALGOL, FORTRAN and PL/I,
there are keywords but no reserved words, with keywords being
distinguished from identifiers by other means. This makes parsing
more difficult with look-ahead parsers necessary.
More information about the Digitalmars-d
mailing list