On Sun, May 04, 2025 at 01:50:00PM +0200, Basile Starynkevitch wrote: > Hello all, > > I'm using GNU guile 3.0 packaged in Debian in some C++ (GPL licensed) utility > https://github.com/RefPerSys/RefPerSys/blob/master/do-build-refpersys-plugin.cc > > (in commit e2351bafcef, near line 354). Encoding is of course UTF-8. > > I want to find the GNU Guile C functions to transform a string into a GUILE s- > expression (so SCM type in C) but that string has to be parsed. > > For example the C string "(+ 2 3)" should be parsed as a GUILE list which I > would later evaluate to 5.
Hi, Basile If I'm understanding you correctly, this would be the Scheme function `read' (and its C counterpart scm_read) which take a port and return an S-expression. Now you have to make a port from your string, e.g. with `call-with-input-string'. In Scheme: (let ((str "(+ 4 5)")) (call-with-input-string str (lambda (p) (read p)))) => (+ 4 5) I know, the lambda around read is somewhat redundant, but it seemed clearer like that. Cheers -- t
signature.asc
Description: PGP signature