public virtual LinqExpression Visit(RelinqScriptExpression astNode) { switch (astNode.NodeType) { case ExpressionType.Keyword: case ExpressionType.Variable: return VisitObjectReference(astNode); case ExpressionType.Constant: return VisitConstant((ConstantExpression)astNode, null); case ExpressionType.New: return VisitNew((NewExpression)astNode); case ExpressionType.Lambda: return VisitLambda((LambdaExpression)astNode, null); case ExpressionType.Field: return VisitField((FieldExpression)astNode); case ExpressionType.Invoke: return VisitInvoke((InvokeExpression)astNode); case ExpressionType.Indexer: return VisitIndexer((IndexerExpression)astNode); case ExpressionType.Operator: return VisitOperator((OperatorExpression)astNode); case ExpressionType.Conditional: return VisitConditional((ConditionalExpression)astNode); } throw new NotSupportedException(astNode.ToString()); }
public virtual LinqExpression VisitObjectReference(RelinqScriptExpression astNode) { String refName; switch (astNode.NodeType) { case ExpressionType.Keyword: refName = ((KeywordExpression)astNode).Name; break; case ExpressionType.Variable: refName = ((VariableExpression)astNode).Name; break; default: throw new NotSupportedException(astNode.ToString()); } return _closure[refName]; }