From: Daniel Jacobowitz <drow@false.org>
To: Wu Zhou <woodzltc@cn.ibm.com>
Cc: gdb-patches@sources.redhat.com
Subject: Re: [RFA] New testcase to evaluate Fortran substring expression
Date: Thu, 14 Jul 2005 23:46:00 -0000 [thread overview]
Message-ID: <20050714234612.GA21620@nevyn.them.org> (raw)
In-Reply-To: <Pine.LNX.4.63.0507080037480.25810@wks190384wss.cn.ibm.com>
On Fri, Jul 08, 2005 at 12:54:21AM +0800, Wu Zhou wrote:
> The original thought of mine is to not add any new operators. The problem
> of this idea is how to transfer the lowerbound (or upperbound or both) of
> the prefixed array expression? Any ideas on this?
>
> Now I coded a patch (attached below) to add four new operators for F90
> subrange: OP_F90_RANGE_NORMAL, OP_F90_RANGE_DFT_END, OP_F90_RANGE_DFT_START
> and OP_F90_RANGE_DFT_ALL. The code of evaluating sub-array is also added
> and the code of substring evaluation is updated to use the former
> (sub-array evaluation). Would you please comment on this patch?
First of all, why do you need four operators? I'd just use one, and
push some sentinel value for the empty boundary case. I'm not sure if
you can use NULL in this context, but if you can, that'd work nicely.
> ! arglist : subrange
> ! { }
> ;
>
IIRC empty actions can just be skipped.
> ! arglist : arglist ',' arglist %prec ABOVE_COMMA
> { arglist_len++; }
> ;
>
The old grammar was:
arglist: /* empty */
| exp
| substring
| arglist ',' exp
substring: exp ':' exp
So "1, 1" "1:1", "1:1,1", "1:1,1,1" were all valid arglists. I don't
know Fortran, but I'm guessing this is intended, for multidimensional
arrays?
The new grammar is:
arglist : /* empty */
| exp
| subrange
| arglist ',' arglist
subrange : exp ':' exp
| exp ':'
| ':' exp
| ':'
One big problem here: I would have assumed bison would have bumped up
the number of conflicts reported here. Maybe it doesn't because of the
%prec. But you probaby don't want arglist ',' arglist. It has all
sorts of quirks; for instance, it allows "," as an arglist with two
elements. If what you are trying to do is allow "1:1, 1:1" then you
want:
arglist : /* empty */
| exp
| subrange
| arglist ',' exp
| arglist ',' subrange
--
Daniel Jacobowitz
CodeSourcery, LLC
next prev parent reply other threads:[~2005-07-14 23:46 UTC|newest]
Thread overview: 11+ messages / expand[flat|nested] mbox.gz Atom feed top
2005-06-22 4:02 Wu Zhou
2005-07-03 18:57 ` Daniel Jacobowitz
2005-07-09 3:12 ` Wu Zhou
2005-07-14 23:46 ` Daniel Jacobowitz [this message]
2005-07-15 5:25 ` Wu Zhou
2005-07-15 11:49 ` Wu Zhou
2005-08-01 2:12 ` Daniel Jacobowitz
2005-08-01 4:44 ` Wu Zhou
2005-08-01 6:23 ` Mark Kettenis
2005-08-02 3:10 ` Daniel Jacobowitz
2005-08-02 10:16 ` Wu Zhou
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20050714234612.GA21620@nevyn.them.org \
--to=drow@false.org \
--cc=gdb-patches@sources.redhat.com \
--cc=woodzltc@cn.ibm.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox