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(); }
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(); }
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); }
public AbstractValue Evaluate(CharacterLiteral expr) { return(STD_LOGIC_VALUE.CreateSTD_LOGIC_VALUE(expr.Character)); //return new CHARACTER_VALUE(expr.getCharacter()); }