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

Attachment: signature.asc
Description: PGP signature

Reply via email to