[Rd] Standalone C++ application for processing R parser output(SEXP)

Dirk Eddelbuettel edd at debian.org
Thu Mar 24 13:46:22 CET 2011


On 24 March 2011 at 08:08, Duncan Murdoch wrote:
| On 11-03-23 7:35 PM, Rob Anderson wrote:
| > Hi All,
| >
| > I am trying to write a source-to-source compiler for R. I am trying to
| > leverage the R parser code for the purpose. I am trying to transform the
| > SEXP returned from the parser into an AST for our own Ruby embedded Domain
| > specific language.
| >
| > I tried using R CMD SHBIN to compile a C function that parses arbitrary R
| > expressions. But I think, the generated .so file can be used from within R
| > and not be called from other C or Ruby programs(I get linker errors).
| >
| > My Idea  is to use the SEXP processing functions/MACROS (CAR, CDR, CADR,
| > etc..) from within C code and transform it to our AST format. I tried
| > linking to libR.a and other lib*.so's when I compile the C code using gcc
| > but, it doesn't work.
| >
| > I read that R exposes only small number of functions for library/package
| > writers and the compiled *.so can only from within R.
| >
| > Any ideas on what is wrong, or how I can go about it?
| 
| I think you need to think of your program as a new front end for R, even 
| if you're only using a few R functions.  See Chapter 8 in the Writing R 
| Extensions manual.

Maybe also have a look at the parser package by Romain at

     https://r-forge.r-project.org/R/?group_id=384

(and scroll down sufficiently on that page) which has the description

     parser - Detailed R source code parser	  
 	
     detailed source code parser, based on the standard R parser but
     organizing the information differently 

which strikes me as close enough to what you describe. That said, Romain did
this for highlight so it may not be relevant.

Dirk

-- 
Dirk Eddelbuettel | edd at debian.org | http://dirk.eddelbuettel.com



More information about the R-devel mailing list