12.3.87 SP_read_from_string()


#include <sicstus/sicstus.h>

SP_read_from_string(SP_term_ref t,
                    const char *string,
                    SP_term_ref values[])

Assigns to tt the result of reading a term from the its textual representation string. Variables that occur in the term are bound to the corresponding term in val.



The SP_term_ref to assign.


The string to read from.


The SP_term_refs to bind variables to. The vector is terminated by 0 (zero). values may be NULL, which is treated as an empty vector.

Return Value

Nonzero on success, and 0 otherwise.


The variables in the term are ordered according to their first occurence during a depth first traversal in increasing argument order. That is, the same order as used by terms:term_variables_bag/2 (see lib-terms). Variables that do not have a corresponding entry in vals are ignored. Entries in vals that do not correspond to a variable in the term are ignored.

The string should be encoded using the SICStus Prolog internal encoding.


This example creates the term foo(X,42,42,X) (without error checking):

SP_term_ref x = SP_new_term_ref();
SP_term_ref y = SP_new_term_ref();
SP_term_ref term = SP_new_term_ref();
SP_term_ref vals[] = {x,y,x,0}; // zero-terminated


SP_read_from_string(term, "foo(A,B,B,C).", vals);
#if 0
   A corresponds to vals[0] (x),
   B to vals[1] (y),
   C to vals[2] (x).
   A and C therefore both are bound to
   the variable referred to by x.
   B is bound to the term referred to by y (42).
   So term refers to a term foo(X,42,42,X).

See Reading a goal from a string, for an example of using SP_read_from_string() to call an arbitrary goal.

See Also

Creating Prolog Terms.

Send feedback on this subject.