BNF questions and comments
BCS
ao at pathlink.com
Thu Sep 6 23:15:27 PDT 2007
under LinkageType what (from a lexical standpoint) are C, C++, D, etc?
===
under Conditional Compilation:
ConditionalDeclaration:
Condition : Declarations
Condition:
StaticIfCondition
StaticIfCondition:
static if ( AssignExpression )
allowing this:
static if(0==0) : int i;
Is this supposed to work? If so what for?
===
BaseClassList under NewExpression uses a lowercase for the L in list where
an upper case is used where it is defined.
===
What about with:
ClassTemplateDeclaration:
class Identifier ( TemplateParameterList ) [SuperClass {, InterfaceClass
}] ClassBody
why isn't BaseClassList used?
this as far as I can tell BaseClassList doesn't require a comma (but dmd
doesn't let you drop it) and the above grammar requires a base class before
interfaces (and DMD doesn't require this)
===
CatchParameter
ExpressionList
FunctionParameterList
ModuleAliasIdentifier
TemplateIdentifier
Tuple
IntegerExpression (in iasm.html)
===
are not defined
ClassTemplateDeclaration
FunctionTemplateDeclaration
ConditionalDeclaration
TemplateMixin
TemplateDeclaration
StaticAssert
are never used
===
LabelledStatement is misspelled in it's definition
===
The format of the bnf section is not consistent. Off hand:
-many productions are missing the :
-in most cases operators are unquote but in a few they are
-opt is used in a few cases but general omitted in favor of other choices
-grouping is used in 1 or 2 cases but again is generally not used.
-in two(?) places the "empty" production is used.
this all comes from extracting the grammar from the docs. I would like to
be able to automate this but having these discrepancies requires that I do
it by hand.
More information about the Digitalmars-d-learn
mailing list