From b.rowlingson at lancaster.ac.uk  Sat Feb 20 12:57:42 2010
From: b.rowlingson at lancaster.ac.uk (Barry Rowlingson)
Date: Sat, 20 Feb 2010 11:57:42 +0000
Subject: [Rd] Problem with ?Syntax
In-Reply-To: <971536df1002200152p7d583e1cv416cd06afe865d55@mail.gmail.com>
References: <971536df1002200152p7d583e1cv416cd06afe865d55@mail.gmail.com>
Message-ID: <d8ad40b51002200357x667008fan5bb069864af3b102@mail.gmail.com>

On Sat, Feb 20, 2010 at 9:52 AM, Gabor Grothendieck
<ggrothendieck at gmail.com> wrote:
> In ?Syntax [ is given as higher priority than $ but BOD$demand[3]
> seems to be the same as (BOD$demand)[3] contrary to [ being higher
> priority.
>
>> BOD$demand[3]
> [1] 19
>> (BOD$demand)[3]
> [1] 19
>
> What is the rule being used here?

 I think its the parser rule that defines the syntax of $ on a list. Does:

 BOD$(demand[3]) even work?

> BOD$(demand[3])
Error: unexpected '(' in "BOD$("

 - no. The parser sees a $ and then gets the next token (gram.y shows
this to be a symbol or a string constant) as the thing to deal with.
Symbols  I can't think of an example where $ and [ could have
ambiguous precedence that is syntactically correct, so maybe the order
is irrelevant...

 Just for fun:

> x=list(a=1,b=2)
> x$"a[1]"=2
> x$"a[1]"
[1] 2
> x$a[1]
[1] 1


Barry



[Rd] Problem with ?Syntax
Barry Rowlingson