Rob Anderson
2011-Mar-23 23:35 UTC
[Rd] Standalone C++ application for processing R parser output(SEXP)
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? Appreciate any help. Thanks RJ [[alternative HTML version deleted]]
Duncan Murdoch
2011-Mar-24 12:08 UTC
[Rd] Standalone C++ application for processing R parser output(SEXP)
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. Duncan Murdoch
Paul Johnson
2011-Mar-26 22:07 UTC
[Rd] Standalone C++ application for processing R parser output(SEXP)
On Wed, Mar 23, 2011 at 6:35 PM, Rob Anderson <rkjandra at gmail.com> 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). >I hope I am not telling you what you already know. There are working examples of "C Standalone" programs that link with R mathlib. I learned from the examples here http://www.math.ncu.edu.tw/~chenwc/R_note/index.php?item=standalone and http://www.stat.berkeley.edu/classes/s243/rmath.html I can't say for sure if these give you access to all of the R stuff you want, but you do get access to quite a bit. PJ> 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? > > Appreciate any help. > > Thanks > RJ > > ? ? ? ?[[alternative HTML version deleted]] > > ______________________________________________ > R-devel at r-project.org mailing list > https://stat.ethz.ch/mailman/listinfo/r-devel >-- Paul E. Johnson Professor, Political Science 1541 Lilac Lane, Room 504 University of Kansas