Related articles |
---|
Tool support for resolving LR conflict alpanad@gmail.com (2005-09-07) |
Re: Tool support for resolving LR conflict torbenm@diku.dk (2005-09-10) |
Re: Tool support for resolving LR conflict 148f3wg02@sneakemail.com (Karsten Nyblad) (2005-09-17) |
Re: Tool support for resolving LR conflict alpanad@gmail.com (2005-10-02) |
Re: Tool support for resolving LR conflict schmitz@i3s.unice.fr (Sylvain Schmitz) (2005-10-04) |
From: | torbenm@diku.dk (=?iso-8859-1?q?Torben_=C6gidius_Mogensen?=) |
Newsgroups: | comp.compilers |
Date: | 10 Sep 2005 12:37:29 -0400 |
Organization: | Department of Computer Science, University of Copenhagen |
References: | 05-09-027 |
Keywords: | parse, LR(1) |
Posted-Date: | 10 Sep 2005 12:37:29 EDT |
alpanad@gmail.com writes:
> Does there exist any tool support which aids grammar writer in finding
> out possible causes of LR-parser conflict and further give him some
> hints to resolve them? If yes please provide me relevant links.
The parser generator itself should be able to aid the grammar writer
in fainding the cause of the conflict. I does so by showing a
readable representation of the set of LR(0) itemsets and the actions
on each symbol. This requires some knowledge of LR(0) construction to
be helpful, though.
In some cases, it should be possible for the parser generator to see
that the cause of a conflict is ambiguity, and show an example of a
string with multiple parses as an aid to the user, but I don't know of
any parser generator that does that. And I find that it is the
conflicts that are not caused by ambiguity that are the hardest to
find and resolve, so I doubt it will help much.
As for giving hints to resolve the conflicts, that is more
problematical, as the parser generator will have no way of knowing
which of several parses will be more correct. Also, some conflicts
can be resolved by adding operator precendences while others may
require extensive rewriting. Like above, the parser generator could
show alternative syntax trees and let the user select which one they
prefer and then solve the conflicts accordingly, but this will not
help for conflicts that require rewriting of the grammar, which are
the most difficult conflicts to solve.
So, IMO, it is possible to make such tools that could give aid in
detecting and solving very simple classes of conflicts, but I doubt
you can get anything useful for the more difficult cases.
Torben
Return to the
comp.compilers page.
Search the
comp.compilers archives again.