示例#1
0
        public AbstractValue Evaluate(Xor expr)
        {
            AbstractValue left  = Evaluate(expr.Left);
            AbstractValue right = Evaluate(expr.Right);

            if ((left != null) && (right != null) && (left is STD_LOGIC_VALUE) && (right is STD_LOGIC_VALUE))
            {
                return(STD_LOGIC_VALUE.XOR(left as STD_LOGIC_VALUE, right as STD_LOGIC_VALUE));
            }
            throw new NotImplementedException();
        }
示例#2
0
        public AbstractValue Evaluate(Equals expr)
        {
            AbstractValue left  = Evaluate(expr.Left);
            AbstractValue right = Evaluate(expr.Right);

            if ((left != null) && (right != null) && (left is STD_LOGIC_VALUE) && (right is STD_LOGIC_VALUE))
            {
                return(STD_LOGIC_VALUE.EQUALS(left as STD_LOGIC_VALUE, right as STD_LOGIC_VALUE));
            }
            if ((left != null) && (right != null) && (left is TIME_VALUE) && (right is TIME_VALUE))
            {
                return(TIME_VALUE.EQUALS(left as TIME_VALUE, right as TIME_VALUE));
            }
            if ((left != null) && (right != null) && (left is TIME_VALUE) && (right is PhysicalValue))
            {
                return(TIME_VALUE.EQUALS(left as TIME_VALUE, right as PhysicalValue));
            }
            throw new NotImplementedException();
        }
示例#3
0
        public AbstractValue Evaluate(Not expr)
        {
            AbstractValue val = Evaluate(expr.Expression);

            if ((val != null) && (val is CHARACTER_VALUE))
            {
                STD_LOGIC_VALUE v = STD_LOGIC_VALUE.CreateSTD_LOGIC_VALUE(((val as CHARACTER_VALUE).Value as VHDL.type.EnumerationType.CharacterEnumerationLiteral).getLiteral());
                return(STD_LOGIC_VALUE.NOT(v as STD_LOGIC_VALUE));
            }

            if ((val != null) && (val is STD_LOGIC_VALUE))
            {
                return(STD_LOGIC_VALUE.NOT(val as STD_LOGIC_VALUE));
            }

            if ((val != null) && (val is STD_ULOGIC_VALUE))
            {
                return(STD_ULOGIC_VALUE.NOT(val as STD_ULOGIC_VALUE));
            }
            return(null);
        }
示例#4
0
 public AbstractValue Evaluate(CharacterLiteral expr)
 {
     return(STD_LOGIC_VALUE.CreateSTD_LOGIC_VALUE(expr.Character));
     //return new CHARACTER_VALUE(expr.getCharacter());
 }