Start line:  
End line:  

Snippet Preview

Snippet HTML Code

Stack Overflow Questions
 
 package jason.stdlib;
 

Internal action: .term2string(T,S).

Description: converts the term T into a string S and vice-versa.

Parameters:

  • -/+ T (any term).
  • -/+ S (a string).

Examples:

  • .term2string(b,"b"): true.
  • .term2string(b,X): unifies X with "b".
  • .term2string(X,"b"): unified X with b.

public class term2string extends DefaultInternalAction {
    
    private static InternalAction singleton = null;
    public static InternalAction create() {
        if ( == null
             = new term2string();
        return ;
    }
    @Override public int getMinArgs() { return 2; }
    @Override public int getMaxArgs() { return 2; }
    @Override
    public Object execute(TransitionSystem tsfinal Unifier unfinal Term[] argsthrows Exception {
        checkArguments(args);
        
        // case 1, no vars
        if (!args[0].isVar() && args[1].isString()) {
            return args[0].toString().equals( ((StringTerm)args[1]).getString() );
        }
        
        // case 2, second is var
        if (!args[0].isVar() && args[1].isVar()) {
            return un.unifies(new StringTermImpl(args[0].toString()), args[1]);
        }
        
        // case 3, first is var
        if (args[0].isVar() && args[1].isString()) {
            return un.unifies(args[0], ASSyntax.parseTerm( ((StringTerm)args[1]).getString() ));
        }
        
        throw new JasonException("invalid case of term2string");
    }
New to GrepCode? Check out our FAQ X