Пример #1
0
        //private string WriteCSharpFromAST(IExpression expression) {
        //  SourceEmitterOutputString sourceEmitterOutput = new SourceEmitterOutputString();
        //  SourceEmitter CSSourceEmitter = new SourceEmitter(sourceEmitterOutput);
        //  ExpressionSimplifier es = new ExpressionSimplifier();
        //  expression = es.Rewrite(expression);
        //  CSSourceEmitter.Traverse(expression);
        //  return sourceEmitterOutput.Data;
        //}

        //private string WriteVBFromAST(IExpression expression) {
        //  var sourceEmitterOutput = new VBSourceEmitter.SourceEmitterOutputString();
        //  var VBSourceEmitter = new VBSourceEmitter.SourceEmitter(this.host, sourceEmitterOutput);
        //  var es = new ExpressionSimplifier();
        //  expression = es.Rewrite(expression);
        //  VBSourceEmitter.Traverse(expression);
        //  return sourceEmitterOutput.Data;
        //}

        /// <summary>
        /// Writes the exception thrown by this IPrecondition into an "exception" xml element.
        /// </summary>
        public void WriteExceptionTo(XmlWriter writer)
        {
            if (String.IsNullOrEmpty(this.exception))
            {
                return;
            }
            writer.WriteStartElement("exception");
            writer.WriteAttributeString("cref", this.exception);
            if (!String.IsNullOrEmpty(this.precondition.OriginalSource))
            {
                writer.WriteString(BooleanExpressionHelper.NegatePredicate(this.precondition.OriginalSource));
            }
            else
            {
                this.docTracker.WriteLine("Warning: Writing exception, but no OriginalSource found.");
                //Emit the condition instead of the OriginalSource
                SourceEmitterOutputString sourceEmitterOutput = new SourceEmitterOutputString();
                SourceEmitter             CSSourceEmitter     = new SourceEmitter(sourceEmitterOutput);
                ExpressionSimplifier      es = new ExpressionSimplifier();
                LogicalNot logicalNot        = new LogicalNot();
                logicalNot.Operand = this.precondition.Condition;
                var condition = es.Rewrite(logicalNot);
                CSSourceEmitter.Traverse(condition);
                writer.WriteString(sourceEmitterOutput.Data);
            }
            writer.WriteEndElement();
        }
Пример #2
0
 public override IExpression Rewrite(IConditional conditional)
 {
     if (conditional.Type.TypeCode == PrimitiveTypeCode.Boolean && ExpressionHelper.IsIntegralZero(conditional.ResultIfTrue))
     {
         var not = new LogicalNot()
         {
             Operand = conditional.Condition,
         };
         var c = new Conditional()
         {
             Condition     = BooleanExpressionHelper.Normalize(not),
             ResultIfTrue  = conditional.ResultIfFalse,
             ResultIfFalse = new CompileTimeConstant()
             {
                 Type = conditional.Type, Value = false,
             },
             Type = conditional.Type,
         };
         return(c);
     }
     return(base.Rewrite(conditional));
 }
Пример #3
0
        public override IExpression Rewrite(ILogicalNot logicalNot)
        {
            var result = base.Rewrite(logicalNot);

            return(BooleanExpressionHelper.Normalize(result));
        }