/// <summary>Handles the specified expression.</summary> /// <param name="asExpression">As expression.</param> /// <param name="scopeParameters">The parameters.</param> /// <returns>Returns the string.</returns> public ExpressionDescriptor Handle(IAsExpression asExpression, Dictionary<string, string> scopeParameters) { var operand = asExpression.Operand; if (operand == null) { return null; } var type = asExpression.TypeOperand; if (type == null) { return null; } var expressionDescriptor = ExpressionTemplateBuilder.Handle(operand, scopeParameters); if (expressionDescriptor == null) { return null; } var result = new ExpressionDescriptor { Template = string.Format("{0} {1} {2}", expressionDescriptor.Template, asExpression.OperatorSign.GetTokenType().TokenRepresentation, type.GetText()) }; foreach (var variable in expressionDescriptor.TemplateVariables) { result.TemplateVariables[variable.Key] = variable.Value; } return result; }
public override IAssignableExpression VisitAsExpression(IAsExpression expr, IList <IStatement> body) { return(new CastExpression { Reference = ToVariableRef(expr.Operand, body), TargetType = expr.Type().GetName() }); }