public inbox for gdb@sourceware.org
 help / color / mirror / Atom feed
From: Michael Chastain <mec.gnu@mindspring.com>
To: cagney@gnu.org, bob@brasko.net
Cc: gdb@sources.redhat.com
Subject: Re: GDB/MI Output Syntax
Date: Thu, 26 Aug 2004 22:41:00 -0000	[thread overview]
Message-ID: <412E671E.nail8HL11F7WG@mindspring.com> (raw)
In-Reply-To: <412E5221.8010601@gnu.org>

Well, the difference betwen:

  # more nonterminals
  async_record        : exec_async_output | status_async_output | notify_async_output ;
  exec_async_output   : opt_token "*" async_output ;
  status_async_output : opt_token "+" async_output ;
  notify_async_output : opt_token "=" async_output ;

And:

  # less nonterminals
  async_record      : opt_token async_record_kind async_output
  async_record_kind : "*" | "+" | "="

... that difference is not going to make-or-break the necessary
LALR(1) property.  The place to watch out for that is with
rules that can be reduced with 0 input tokens.  That gets ambiguous
real fast.

My esthetics say to combine common things, Andrew's esthetics
say to be more concrete names for things.  It's an esthetic tradeoff.
Andrew has more say as the MI maintainer.

exec_async_output is actually a pretty good nonterminal.  It's
async_output that really bugs me.  async_output is not a complete
object, it's a sub-part that doesn't really need to be there.
Just substitute in its definition.

> 	async-result ==> async-class ( "," @var{result} )* @var{nl}

I think the "*" stuff has to go, though.  bison and yacc don't process
it.  Which means that as soon as someone tries to write a bison grammar,
they have to write something different from our doco.  So every front
end will have a slightly different parser and that will be to GDB's
sorrow.  Eventurally GDB will do something that's in the printed
grammar, and some front end will tip over because it's not accepted by
their bison grammar.

Also, some front-end writers will walk into the same sand-trap that
Bob did when they are translating (a b)* into bison language,
and mistakenly write a non-LALR(1) grammar.

The closer our doco is to a real bison grammar that really compiles,
the less grief.

bob> The reason it would be helpful to modify the grammar in this way is that
bob> it leads to a more elegant form when trying to build an intermediate
bob> representation. At the parse level of 'stream-record' or 'async-record'
bob> you have all of the information necessary in order to populate a
bob> structure with data. Otherwise, the information is a few levels down
bob> stream.

ac> I don't follow.

Every time a yacc/bison rule is reduced, the code associated with that
rule has to make another data structure that copies/refers-to all the
data from each of the components.  So a flatter rule tree means
the C code looks like "a->b->data" instead of "a->b->c->d->data".

  parent reply	other threads:[~2004-08-26 22:41 UTC|newest]

Thread overview: 36+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2004-08-25 15:44 Bob Rossi
2004-08-25 15:57 ` Michael Chastain
2004-08-25 19:37   ` Bob Rossi
2004-08-26 14:01     ` Michael Chastain
2004-08-26 18:31       ` Bob Rossi
2004-08-26 20:44         ` Michael Chastain
2004-08-26 20:52           ` Keith Seitz
2004-08-26 22:16             ` Michael Chastain
2004-08-26 22:03           ` Bob Rossi
2004-08-26 23:06             ` Michael Chastain
2004-08-26 21:13 ` Andrew Cagney
2004-08-26 21:25   ` Bob Rossi
2004-08-26 22:46     ` Michael Chastain
2004-08-27 10:14       ` Eli Zaretskii
2004-08-26 22:41   ` Michael Chastain [this message]
  -- strict thread matches above, loose matches on Subject: below --
2005-01-06  0:28 Paul Schlie
2005-01-06  0:32 ` Kip Macy
2005-01-06  0:49   ` Paul Schlie
2005-01-06  1:10 ` Bob Rossi
2005-01-06  1:36   ` Paul Schlie
     [not found] <1093622671.2836.ezmlm@sources.redhat.com>
2004-08-27 17:56 ` Jim Ingham
2004-08-27 19:12   ` Michael Chastain
2005-01-05 23:27     ` Bob Rossi
2005-01-06  4:48       ` Eli Zaretskii
2005-01-06 23:31         ` Bob Rossi
2005-01-07  0:36           ` Jim Ingham
2005-01-07  1:12             ` Bob Rossi
2005-01-07  3:12               ` Russell Shaw
2005-01-11 19:35                 ` Bob Rossi
2005-01-13  2:23                   ` Bob Rossi
2004-08-24  3:12 Bob Rossi
2004-08-24  4:15 ` Michael Chastain
2004-08-24 12:30   ` Bob Rossi
2004-08-24 12:50     ` Michael Chastain
2004-08-24 18:59   ` Andrew Cagney
2004-08-24 19:07     ` Bob Rossi

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=412E671E.nail8HL11F7WG@mindspring.com \
    --to=mec.gnu@mindspring.com \
    --cc=bob@brasko.net \
    --cc=cagney@gnu.org \
    --cc=gdb@sources.redhat.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;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).