Re: MI rules

Bob Rossi
2004-09-22T14:43:18Z

On Wed, Sep 22, 2004 at 04:05:33PM +0200, Fabian Cenedese wrote:
>
> >I currently have a set of rules that parse an MI output command. This
> >includes the flex file, the bison file and an extra source file that
> >populates an in memory data structure representing the MI output
> >command.
> >
> >The rules from the documentation had to change only slightly to conform
> >to what GDB is actually outputting. The problem is, I haven't tested the
> >parser extensively. The reason for this is because I am waiting to here
> >from the GDB developers how to interpret the data semantically once it
> >is acquired. I believe that every MI output command needs to have a
> >header describing what type of MI output command is being transmitted.
> >With this knowledge, the front end would understand exactly what
> >information it needs to grab from the parse tree. Otherwise, the front
> >end gets confusing at best.
>
> How are the existing frontends doing it then? Do they just wait after
> a sent command until they receive a reply and take it as the one they're
> looking for?

Well part of the problem I see is with asyncrhonous MI output commands.
How is the front end supposed to understand what the data it just
recieved was. It doesn't even know what type of mi output command it is.
So, after it is parsed and put in a parse tree, I don't see a
way for the front end to say, "Get the data out of this command that I
care about". It first needs to understand what type of mi output command
it just recieved. If it knows that, it can actually walk the parse tree
to get the data it needs.

Otherwise if it doesn't know that, you end up in a situation where you
1. parse the tree.
2. walk the tree to guess what kind of command you just received
( can only imagine what kind of maintenence nightmare this is )
3. actually walk the tree to get the data you need, once you know
what kind of mi output command you have.

This ends up making the parse walk the tree twice. IMO, GDB already
knows what kind of MI output command it is sending, so it should just
tell the front end as part of the mi output command. This would solve
several problems that I am facing.

Do any of the GDB MI maintainers see this as possible? Please look at
my Email http://sources.redhat.com/ml/gdb/2004-09/msg00173.html

Thanks,
Bob Rossi