protected override IPyValue VisitUnaryOperatorExpression(UnaryOperatorExpression src) { var v = TransValue(src.Operand); var a = new PyUnaryOperatorExpression(v, src.Operator); return(SimplifyPyExpression(a)); }
protected virtual T VisitPyUnaryOperatorExpression(PyUnaryOperatorExpression node) { if (ThrowNotImplementedException) { throw new NotImplementedException(string.Format("Method {0} is not supported in class {1}", "VisitPyUnaryOperatorExpression", this.GetType().FullName)); } return(default(T)); }
// Private Methods private IEnumerable <IPyStatement> ConvertDefinedConstToCode() { var result = new List <IPyStatement>(); var alreadyDefined = new List <string>(); if (!DefinedConsts.Any()) { return(result.ToArray()); } var grouped = DefinedConsts.GroupBy(u => GetNamespace(u.Key)).ToArray(); var useNamespaces = grouped.Length > 1 || grouped[0].Key != PathUtil.UNIX_SEP; foreach (var group in grouped) { List <IPyStatement> container; if (useNamespaces) { var ns1 = new PyNamespaceStatement((PyNamespace)group.Key); container = ns1.Code.Statements; result.Add(ns1); } else { container = result; } foreach (var item in group) { var shortName = GetShortName(item.Key); if (alreadyDefined.Contains(item.Key)) { continue; } alreadyDefined.Add(item.Key); var defined = new PyMethodCallExpression("defined", new PyConstValue(shortName)); var notDefined = new PyUnaryOperatorExpression(defined, "!"); var define = new PyMethodCallExpression("define", new PyConstValue(shortName), item.Value); var ifStatement = new PyIfStatement(notDefined, new PyExpressionStatement(define), null); container.Add(ifStatement); } } return(result.ToArray()); }