base class access specifier[s]

BCS ao at pathlink.com
Mon Jan 19 17:29:43 PST 2009


Reply to Ellery,

> BCS wrote:
> 
>> Reply to Ellery,
>> 
>>> I don't buy that. Not that I'm a C guru or anything, but it looks to
>>> me that Parser::BaseClasses could be easily edited to make the point
>>> in question go away.
>>> 
>> it's not a parser thing but a grammar thing. It would be complex to
>> define a grammar that allows one each of the different types of
>> prefixes that are allowed:
>> 
>> int a = 5;
>> auto b = 5;
>> const c = 5;
>> static d = 5;
>> const static int e = 5;
>> protected const static int f = 5;
>> static const protected g = 5;
>> each of those is allow and reasonable in different contexts. To avoid
>> redundant grammars and inconsistencies they are generalized and also
>> shared with classes, structs, etc.
>> 
> I don't buy that either. The subject was access specifiers for base
> classes, not storage classes for declarations or access specifiers for
> statements. In those cases I would grant your point, but a base class
> has precisely one access specifier and no storage classes. It would
> not be complex to define such a grammar and in fact the D grammar does
> precisely this.
> 

OTOH it /would/ be redundant because you would then need to define access 
specifiers independently for class declarations as well as for variable declarations. 
IIRC, as things stand now the access specifiers are consumed by the grammar 
before it even gets from the generic declarations grammar to the class/struct/variable 
specialization.

Declaration ::= DeclAnnotation Item
Item ::= ClassDecl | StructDecl | VarDecl | ...




More information about the Digitalmars-d-learn mailing list