public void addInnerNavigation( CSTNavigationOperatorCS operat, CSTOclExpressionCS innerExp) { this.innerNavigation.Add(innerExp); this.operators.Add(operat); }
/* (non-Javadoc) * @see br.cos.ufrj.lens.odyssey.tools.psw.parser.cst.CSTNode#accept(br.cos.ufrj.lens.odyssey.tools.psw.parser.cst.CSTVisitor) */ public override void accept(CSTVisitor visitor) { if (callExp != null) { callExp.accept(visitor); visitor.visitNavigationExpressionBegin(this, callExp); //var expAndOperators = innerNavigation.Zip(operators, (e, o) => new { Expression = e, Operator = o }); //foreach (var e in expAndOperators) //{ // CSTOclExpressionCS innerExp = (CSTOclExpressionCS) e.Expression; // CSTNavigationOperatorCS operat = (CSTNavigationOperatorCS) e.Operator; // if ((innerExp != null) && (operat != null)) // { // operat.accept(visitor); // innerExp.accept(visitor); // visitor.visitNavigationExpression(this, innerExp); // } //} var iter = innerNavigation.GetEnumerator(); var iterOperator = operators.GetEnumerator(); while (iter.MoveNext() && iterOperator.MoveNext()) { CSTOclExpressionCS innerExp = (CSTOclExpressionCS)iter.Current; CSTNavigationOperatorCS operat = (CSTNavigationOperatorCS)iterOperator.Current; if ((innerExp != null) && (operat != null)) { operat.accept(visitor); innerExp.accept(visitor); visitor.visitNavigationExpression(this, innerExp); } } visitor.visitNavigationExpressionEnd(this, innerNavigation, callExp); } }