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 | ...


Reply via email to