From edd at debian.org  Thu Mar 24 13:46:22 2011
From: edd at debian.org (Dirk Eddelbuettel)
Date: Thu, 24 Mar 2011 07:46:22 -0500
Subject: [Rd] Standalone C++ application for processing R
	parser	output(SEXP)
In-Reply-To: <4D8B3423.9060904@gmail.com>
References: <AANLkTim2_zn4_w5WiovLF8O-FH=EAh2241AxkBiMAK0R@mail.gmail.com>
	<4D8B3423.9060904@gmail.com>
Message-ID: <19851.15646.993475.458325@max.nulle.part>


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



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