AspectName = Name . ProtectedMethod = extends MethodKeyword. Op : And . TraversalAspect_List = [ Nonempty_TraversalAspect_List ] . MethodParm_Commalist = Nonempty_MethodParm_Commalist . Strategy = StrategyName StrategyExpression extends DefinitionBody. DAJ = TraversalAspect_List . Name = Nonempty_Name . Compound = Op StrategyExpression_List extends StrategyExpression. MethodSignature = MethodKeyword_List JavaType MethodName [ MethodParm_Commalist ] Throws . JavaType = Name ArraySpec_List . StrategyExpression : Simple | Compound . ClassName = Name . ClassName_Commalist = Nonempty_ClassName_Commalist . Nonempty_StrategyExpression_List = StrategyExpression [ Nonempty_StrategyExpression_List ] . AdaptiveMethod = MethodSignature MethodBody extends DefinitionBody. CG = ClassGraphName extends DefinitionBody. MethodName = Ident . PublicMethod = extends MethodKeyword. Nonempty_Definition_CurlyList = Definition [ Nonempty_Definition_CurlyList ] . FinalMethod = extends MethodKeyword. Definition = DefinitionBody . And = extends Op. MethodParm = JavaType ParmName ArraySpec_List . TraversalAspect = AspectName Definition_CurlyList . Simple : StrategyName | StrategyString extends StrategyExpression. Nonempty_Name = Ident [ Nonempty_Name ] . MethodBody = StrategyExpression VisitorRef . VisitorRef = ClassName_Commalist . DefinitionBody : CG | Strategy | AdaptiveMethod . ParmName = Ident . MethodKeyword_List = [ Nonempty_MethodKeyword_List ] . MethodKeyword : PublicMethod | ProtectedMethod | PrivateMethod | StaticMethod | FinalMethod . Nonempty_ClassName_Commalist = ClassName [ Nonempty_ClassName_Commalist ] . Nonempty_MethodParm_Commalist = MethodParm [ Nonempty_MethodParm_Commalist ] . Nonempty_TraversalAspect_List = TraversalAspect [ Nonempty_TraversalAspect_List ] . Definition_CurlyList = Nonempty_Definition_CurlyList . Throws = [ ClassName_Commalist ] . StaticMethod = extends MethodKeyword. ClassGraphName = Ident . StrategyString = String extends Simple. Nonempty_ArraySpec_List = ArraySpec [ Nonempty_ArraySpec_List ] . PrivateMethod = extends MethodKeyword. StrategyName = Ident extends Simple. StrategyExpression_List = [ Nonempty_StrategyExpression_List ] . ArraySpec = . Nonempty_MethodKeyword_List = MethodKeyword [ Nonempty_MethodKeyword_List ] . ArraySpec_List = [ Nonempty_ArraySpec_List ] .