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