[Rd] 'else' on new line not parsed at top level as part of preceding 'if'
Duncan Murdoch
murdoch@dunc@n @end|ng |rom gm@||@com
Mon Dec 2 17:09:41 CET 2024
BTW, this is discussed in section 3.2.1 of "The R Language Definition".
Duncan Murdoch
On 2024-12-02 10:56 a.m., Mikael Jagan wrote:
> I wonder if there is room for improvement here:
>
> > str2lang("if (a) b1 else b0")
> if (a) b1 else b0
> > str2lang("if (a) b1 \n else b0")
> Error in str2lang("if (a) b1 \n else b0") : <text>:2:2: unexpected 'else'
> 1: if (a) b1
> 2: else
> ^
>
> It only occurs at top level. When the parser knows that it needs to
> "keep reading", e.g., because the call to 'if' is enclosed in braces,
> it detects the 'else':
>
> > str2lang("{ if (a) b1 else b0 }")
> {
> if (a)
> b1
> else b0
> }
> > str2lang("{ if (a) b1 \n else b0 }")
> {
> if (a)
> b1
> else b0
> }
>
> If people agree that the above is a deficiency/bug then I could create a
> formal bug report. Then others or I could start thinking about a patch
> for the parser.
>
> Apologies if this issue has been seen and discussed before (most likely
> by people like me in the habit of dropping braces in calls to 'if' where
> not strictly necessary).
>
> Mikael
>
> ______________________________________________
> R-devel using r-project.org mailing list
> https://stat.ethz.ch/mailman/listinfo/r-devel
More information about the R-devel
mailing list