Esempio n. 1
0
 public override bool subst(ref Erlang.Object obj, Erlang.VarBind binding)
 {
     if (isAny() || binding == null || binding.Empty)
     {
         throw new UnboundVarException();
     }
     Erlang.Object term = binding[m_var];
     if (term == null)
     {
         throw new UnboundVarException("Variable " + m_var + " not bound!");
     }
     obj = term;
     return(true);
 }
Esempio n. 2
0
 public override bool match(Erlang.Object pattern, Erlang.VarBind binding)
 {
     if (binding == null)
     {
         return(false);
     }
     Erlang.Object value = binding.find(m_var);
     if (value != null)
     {
         return(value.match(pattern, binding));
     }
     Erlang.Object term = null;
     binding[m_var] = pattern.subst(ref term, binding) ? term : pattern;
     return(true);
 }
Esempio n. 3
0
 public override bool subst(ref Erlang.Object obj, Erlang.VarBind binding)
 {
     if (isAny() || binding == null || binding.Empty)
     {
         throw new UnboundVarException();
     }
     Erlang.Object term = binding[m_var];
     if (term == null)
     {
         throw new UnboundVarException("Variable " + m_var + " not bound!");
     }
     if (!checkType(term))
     {
         throw new InvalidValueType(
                   string.Format("Invalid variable {0} value type (got={1}, expected={2})",
                                 m_var, obj.Type, m_termType));
     }
     obj = term;
     return(true);
 }
Esempio n. 4
0
 public virtual bool subst(ref Erlang.Object term, Erlang.VarBind binding)
 {
     return(false);
 }
Esempio n. 5
0
 public virtual bool match(Erlang.Object pattern, Erlang.VarBind binding)
 {
     return((pattern is Erlang.Var) ? pattern.match(this, binding) : this.Equals(pattern));
 }