I am wondering what the specific need for this is or is it just an exercise?
Where does it matter if a chunk of code assigns using "<-" beforehand or "->" after hand, or for that matter assigns indirectly without a symbol? And whatever you come up with, will it also support the global assignment of "->>" as compared to ""<<-" too? I do wonder if you can re-declare the assignment operators or would that mess up the parser. -----Original Message----- From: R-devel <r-devel-boun...@r-project.org> On Behalf Of Duncan Murdoch Sent: Friday, March 1, 2024 9:23 AM To: Dmitri Popavenko <dmitri.popave...@gmail.com> Cc: r-devel <r-devel@r-project.org> Subject: Re: [Rd] capture "->" On 01/03/2024 8:51 a.m., Dmitri Popavenko wrote: > On Fri, Mar 1, 2024 at 1:00 PM Duncan Murdoch <murdoch.dun...@gmail.com > <mailto:murdoch.dun...@gmail.com>> wrote: > > ... > I was thinking more of you doing something like > > parse(text = "A -> B", keep.source = TRUE) > > I forget what the exact rules are for attaching srcrefs to arguments of > functions, but I do remember they are a little strange, because not > every possible argument can accept a srcref attribute. For example, > you > can't attach one to NULL, or to a name. > > Srcrefs are also fairly big and building them is slow, so I think we > tried to limit them to where they were needed, we didn't try to attach > them to every subexpression, just one per statement. Each expression > within {} is a separate statement, so we get srcrefs attached to the {. > But in "foo(A -> B)" probably you only get one on the foo call. > > In some circumstances you could get the srcref on that call by looking > at sys.call(). But then things are complicated again, because R > doesn't > attach srcrefs to things typed at the console, only to things that are > sourced from files or text strings (and parsed with keep.source=TRUE). > > So I think you should probably require input from a string or a > file, or > not expect foo(A -> B) to work without some decoration. > > > Indeed, the more challenging task is to identify "->" at the console > (from a script or a string, seems trivial now). > > I would be willing to decorate as much as it takes to make this work, I > am just empty on more ideas how to persuade the parser. By "decorate", I meant putting it in quotes and parsing it using parse(text=...), or putting it in braces as you found. I think parsing a string is most likely to be reliable because someone might turn off `keep.source` and then the braced approach would fail. But you have control over it when you call parse() yourself. Duncan Murdoch ______________________________________________ R-devel@r-project.org mailing list https://stat.ethz.ch/mailman/listinfo/r-devel ______________________________________________ R-devel@r-project.org mailing list https://stat.ethz.ch/mailman/listinfo/r-devel