当我浏览时,C# Language Specification v4.0
我注意到有一组规则定义如下:
invocationExpression:
primaryExpression '(' argumentList? ')'
primary-expression:
primary-no-array-creation-expression
array-creation-expression
primary-no-array-creation-expression:
literal
simple-name
parenthesized-expression
member-access
invocation-expression
element-access
this-access
base-access
post-increment-expression
post-decrement-expression
object-creation-expression
delegate-creation-expression
anonymous-object-creation-expression
typeof-expression
checked-expression
unchecked-expression
default-value-expression
anonymous-method-expression
base-access:
'base' '.' identifier
'base' '[' argument-list ']'
当我试图匹配这个陈述时(顺便说一句,这是正确的陈述,我已经看到它在一个项目中使用过)
base.VisitList<T>(list, visitor);
根据给定的规则,我没有看到如何做到这一点。不应base-access
定义为:
base-access:
'base' '.' identifier type-parameter-list(opt)
'base' '[' argument-list ']'
或类似的东西以这种方式语法能够捕获语句?
编辑我看到的例子是在项目的 C# 版本中db4o
,它是这样的(我删除了大部分声明,只留下了重要的声明)
internal abstract class ExpressionVisitor
{
protected virtual void VisitList<T>()
{
}
}
internal class HashCodeCalculation : ExpressionVisitor
{
protected override void VisitList<T>()
{
base.VisitList<T>();
}
}