One might also take a look at PreScheme: https://en.wikipedia.org/wiki/Scheme_48 which is a lowlevel Sexp based system that can generate C or Bytecode.
There’s also BitC, which was/is a sexp based lowlevel language. I cannot recall if it compiled directly to C, or was itself a compiler to machine code. These, both, are not direct answers to your question (which I think has a fairly straightforward answer), but might give you some alternative ideas to consider. > On May 28, 2020, at 20:38, Keith Wright <kwri...@keithdiane.us> wrote: > > I am thinkging about a project that uses Scheme macros > to generate C code. To this end I want to encode C > programs as S-expressions. For example, the C program > that is encoded in Ascii as > > for (j=0;j<12;++j) a[j] = j*pi/6; > > might be encoded as an S-expression as > > (for ((= j 0)(< j 12) (++ j)) (= (sub a j)(/ (* j pi) 6))) > > Note that this is not a valid Scheme program, even with > non-standard functions defined. It is a re-encoding > of the Ascii C syntax as an S-expression. > > I think I have read about something like this, perhaps > on this list, I am not sure. (Note to future language > inventors: a single letter name makes a horrible Google > search query. Name things with made up but pronouncable > words---perl, fortran...) > > I most need to convert S-expr encoded C, to Ascii encoded C, > but I am interested in > (a) programs to convert S-expresions to C > (b) specifications for the form of the S-expr encoding > (c) better plans; advice from those who have tried and failed. > > Any pointers? > > -- Keith > >