Пример #1
0
 public override void Emit(ICodeGateEvaluator writer)
 {
     writer.EmitVariableStateCondition(Variable, StateIndex);
     /*var type = Variable.Type;
     var rval = type.Name + "." + type.GetStateName(StateIndex);
     var lval = Variable.Name;
     writer.Append(lval + " == " + rval);*/
 }
Пример #2
0
        public override void Emit(ICodeGateEvaluator writer)
        {
            if (IsInverted)
            {
                writer.Append("!");
            }

            writer.EmitVariable(Variable);
        }
Пример #3
0
        public override void Emit(ICodeGateEvaluator writer)
        {
            writer.EmitVariableStateCondition(Variable, StateIndex);

            /*var type = Variable.Type;
             * var rval = type.Name + "." + type.GetStateName(StateIndex);
             * var lval = Variable.Name;
             * writer.Append(lval + " == " + rval);*/
        }
Пример #4
0
        public override void Emit(ICodeGateEvaluator writer)
        {
            if (Label.IsEvaluated)
            {
                writer.Append(Label.Name);
            }
            else
            {
                if (TraceFlags.EmitComments)
                {
                    writer.Append("/* " + Label + " */ ");
                }

                OriginalGate.Emit(writer);
            }
        }
Пример #5
0
        public override void Emit(ICodeGateEvaluator writer)
        {
            if (Label.IsEvaluated)
            {
                writer.Append(Label.Name);
            }
            else
            {
                if (TraceFlags.EmitComments)
                {
                    writer.Append("/* " + Label + " */ ");
                }

                OriginalGate.Emit(writer);
            }
        }
Пример #6
0
        /// <summary>
        /// Emits the gate into a code writer.
        /// </summary>
        /// <param name="writer"></param>
        public virtual void Emit(ICodeGateEvaluator writer)
        {
            if (Type.IsFixed())
            {
                writer.Append(this.ToString());
                return;
            }

            Debug.Assert(Type.IsLogical());
            var first = true;

            foreach (var i in this.GetInputs())
            {
                if (first)
                {
                    first = false;
                }
                else
                {
                    writer.EmitBinaryOperator(Type);
                }

                var brackets = i.Type.IsLogical() && Type != i.Type;
                if (brackets)
                {
                    writer.Append("(");
                }

                i.Emit(writer);

                if (brackets)
                {
                    writer.Append(")");
                }
            }
        }
Пример #7
0
 public abstract void Emit(ICodeGateEvaluator writer);
Пример #8
0
 public abstract void Emit(ICodeGateEvaluator writer);
Пример #9
0
        /// <summary>
        /// Emits the gate into a code writer.
        /// </summary>
        /// <param name="writer"></param>
        public virtual void Emit(ICodeGateEvaluator writer)
        {
            if(Type.IsFixed())
            {
                writer.Append(this.ToString());
                return;
            }

            Debug.Assert(Type.IsLogical());
            var first = true;
            foreach(var i in this.GetInputs())
            {
                if(first)
                {
                    first = false;
                }
                else
                {
                    writer.EmitBinaryOperator(Type);
                }

                var brackets = i.Type.IsLogical() && Type != i.Type;
                if(brackets)
                {
                    writer.Append("(");
                }

                i.Emit(writer);

                if (brackets)
                {
                    writer.Append(")");
                }
            }
        }
Пример #10
0
        public override void Emit(ICodeGateEvaluator writer)
        {
            if(IsInverted)
            {
                writer.Append("!");
            }

            writer.EmitVariable(Variable);
        }