[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: no-default-precedence
From: |
Paul Eggert |
Subject: |
Re: no-default-precedence |
Date: |
15 May 2003 12:49:36 -0700 |
User-agent: |
Gnus/5.09 (Gnus v5.9.0) Emacs/21.3 |
Frank Heckenbach <address@hidden> writes:
> This patch implements a feature I suggested in a discussion in
> bug-bison (Subject: Controlling the effects of precedence
> declarations), to not assign precedence to rules which have no
> explicit `%prec' declaration, even if the last terminal symbol
> mentioned in their components has a declared precedence, so one can
> control more precisely which rules should have a precedence.
Thanks for the patch and for the discussion. For a change on this
order, we'll need to have you sign copyright assignment papers for
Bison. I assume you know the procedure; not, please let me know and
I'll send you instructions separately.
Since we already have %prec, it might be better to be consistent and
call the new symbol %default-prec, not %default-precedence.
Can you see the use for some easily-implemented generalizations of
your idea? For example, suppose part of the grammar has no default
precedence, but part of the grammar has a default. Perhaps the
grammar is the result of a collaboration between two people with
different opinions; or perhaps it simply makes more technical sense to
have a default in the "expression" part of the grammar, but not in the
"statement" part.
Perhaps it would be better to have a directive like this:
%default-prec 0 // this means no default precedence
%default-prec 1 // this means use the last terminal's precedence (the default)
%default-prec SYMBOL // this means the default precedence is that of SYMBOL
and allow you to intersperse this directive with the grammar. So:
%default-prec '*';
a: b c;
%default-prec 1
would be equivalent to (though more wordy than):
a: b c %prec '*';
> +You might prefer to explicitly specify the precedence of all rules
> +that need one. Then you will see any shift/reduce conflict until
> +you tell Bison how to resolve it (by changing your grammar or adding
> +an explicit precedence).
This needs a motivating example.
> + PERCENT_NO_DEF_PREC "%no-default-precedence"
The PERCENT name should not abbreviate.
> +/* Nonzero if %no-default-precedence was specified. */
> +int no_default_precedence = 0;
This should be bool, not int. (Though this will change if the above
suggestions are adopted.)