bison-patches
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [PATCH] warnings: introduced -Wprecedence


From: Akim Demaille
Subject: Re: [PATCH] warnings: introduced -Wprecedence
Date: Wed, 30 Jan 2013 21:38:53 +0100

Le 30 janv. 2013 à 18:10, Valentin Tolmer <address@hidden> a écrit :

> Another correction. Precedence and associativity warnings are now combined 
> into one warning. Corrected doc and tests to match the new warning.
> <0001-warnings-introduce-Wprecedence.patch>

Great job, thanks!  I have installed it, with the following changes:

> diff --git a/NEWS b/NEWS
> index b9b8477..be3669a 100644
> --- a/NEWS
> +++ b/NEWS
> @@ -298,18 +298,18 @@ GNU Bison NEWS
>  
>  ** Useless precedence and associativity
>  
> -  When writing a grammar, it is common to declare associativity and 
> precedence

Instead of "writing", I prefer to emphasize the dynamic aspect
of maintenance.

> -  even when they are not needed.  These extra directives can be a nuisance: 
> new
> -  conflicts arising are sometimes masked because they are resolved due to the
> -  extra precedence or associativity information.  Furthermore, it can hinder
> -  the comprehension of a new grammar: one will wonder about the role of a
> -  precedence, where in fact it is useless.  It is therefore important to try
> -  and limit these extra directives.
> +  When developping and maintaining a grammar, useless associativity and
> +  precedence directives are common.  They can be a nuisance: new ambiguities
> +  arising are sometimes masked because their conflicts are resolved due to
> +  the extra precedence or associativity information.  Furthermore, it can
> +  hinder the comprehension of a new grammar: one will wonder about the role
> +  of a precedence, where in fact it is useless.  The following changes aim
> +  at detecting and reporting these extra directives.


>  *** Precedence warning category
>  
> -  A new category of warning, -Wprecedence, was introduced. It
> -  flags the useless precedence and associativity directives.
> +  A new category of warning, -Wprecedence, was introduced. It flags the
> +  useless precedence and associativity directives.
>  
>  *** Useless associativity
>  
> @@ -322,14 +322,15 @@ GNU Bison NEWS
>      %left '+'
>      %left '*'
>      %%
> -    e: "num"
> -     | exp '+' "num"
> -     | exp '*' exp

Mixing e and exp.

> +    exp:
> +      "num"
> +    | exp '+' "num"
> +    | exp '*' exp
>      ;
>  
>    will produce a
>  
> -    warning: useless associativity for '=' [-Wprecedence]
> +    warning: useless associativity for '+', use %precedence [-Wprecedence]

Mixing = and +.  And I have tweaked on message too,
because %precedence is certainly not well known.

>       %left '+'
>             ^^^
>  
> @@ -342,7 +343,7 @@ GNU Bison NEWS
>  
>      %precedence '='
>      %%
> -    e: "var" '=' "num";
> +    exp: "var" '=' "num";

Consistency.

>  
>    will produce a
>  
> @@ -352,14 +353,15 @@ GNU Bison NEWS
>  
>  *** Useless precedence and associativity
>  
> -  In case of both useless precedence and associativity, the issue is flagged 
> as
> -  in this example:
> +  In case of both useless precedence and associativity, the issue is flagged
> +  as follows:
>  
>      %nonassoc '='
>      %%
> -    e: "var" '=' "num";
> +    exp: "var" '=' "num";

Ditto.

>  
>    The warning is:
> +
>      warning: useless precedence and associativity for '=' [-Wprecedence]
>       %nonassoc '='
>                 ^^^
> diff --git a/doc/bison.texi b/doc/bison.texi
> index fb30ab7..7a36f85 100644
> --- a/doc/bison.texi
> +++ b/doc/bison.texi
> @@ -9717,22 +9717,65 @@ Deprecated constructs whose support will be removed 
> in future versions of
>  Bison.
>  
>  @item precedence
> -Useless precedence and associativity.  Bison detects whether defined 
> precedence
> -and associativity are useful, and warns if not. For example, in the grammar
> -below, Bison warns about useless associativity for @samp{=}:

Your NEWS was much richer than the doc, which goes backward :)
The doc is more important, so I chose a single example that shows
the three sides of the coin.

> +Useless precedence and associativity directives.  Disabled by default.
> +
> +Consider for instance the following grammar:
>  
>  @example
> -%nonassoc '='
> address@hidden
> +%nonassoc "="
> +%left "+"
> +%left "*"
> +%precedence "("
> address@hidden group
>  %%
> -assign: "var" '=' "num";
> address@hidden
> +stmt:
> +  exp
> +| "var" "=" exp
> +;
> address@hidden group
> +
> address@hidden
> +exp:
> +  exp "+" exp
> +| exp "*" "num"
> +| "(" exp ")"
> +| "num"
> +;
> address@hidden group
> address@hidden example
> +
> +Bison reports:
> +
> address@hidden cannot leave the location and the [-Wprecedence] for lack of
> address@hidden width in PDF.
> address@hidden
> address@hidden
> +warning: useless precedence and associativity for "="
> + %nonassoc "="
> +           ^^^
> address@hidden group
> address@hidden
> +warning: useless associativity for "*", use %precedence
> + %left "*"
> +       ^^^
> address@hidden group
> address@hidden
> +warning: useless precedence for "("
> + %precedence "("
> +             ^^^
> address@hidden group
>  @end example
>  
> -In this case, two @samp{=} in a row (@samp{a = b = c}) will be detected as a 
> syntax
> -error even without @code{%nonassoc} (there are no rule allowing that case),
> -so the associativity is useless, and can be replaced by @code{%precedence}.
> -Bison also warns about useless precedence, because @samp{=} can be safely
> -declared as a @code{%token} (there are no conflicts involving @samp{=}
> -solved with precedence comparison).  This warning is disabled by default.
> +One would get the exact same parser with the following directives instead:
> +
> address@hidden
> address@hidden
> +%left "+"
> +%precedence "*"
> address@hidden group
> address@hidden example
>  
>  @item other
>  All warnings not categorized above.  These warnings are enabled by default.
> diff --git a/src/symtab.c b/src/symtab.c
> index 1334fe2..d3ad2fb 100644
> --- a/src/symtab.c
> +++ b/src/symtab.c
> @@ -1111,21 +1111,20 @@ print_precedence_warnings (void)
>    for (i = 0; i < nsyms; ++i)
>      {
>        symbol *s = symbols[i];
> -      char *warn = "";

This is wrong: "" is a const char*, not a char*.

>        if (s
>            && s->prec != 0
>            && !prec_nodes[i]->pred
>            && !prec_nodes[i]->succ)
>          {
>            if (is_assoc_useless (s))
> -            warn = "precedence and associativity";
> +            complain (&s->location, Wprecedence,
> +                      _("useless precedence and associativity for %s"), 
> s->tag);
>            else if (s->assoc == precedence_assoc)
> -            warn = "precedence";
> +            complain (&s->location, Wprecedence,
> +                      _("useless precedence for %s"), s->tag);
>          }
>        else if (is_assoc_useless (s))
> -        warn = "associativity";
> -      if (warn != "")
>          complain (&s->location, Wprecedence,
> -                  _("useless %s for %s"), warn, s->tag);

Assembling sentences is bad practice: it complicates the
task of the translators (not to mention that you did not
flag the contents of "warn" as a string to translate).
This does duplicates code, but for the good cause.

> +                  _("useless associativity for %s, use %%precedence"), 
> s->tag);
>      }
>  }
> diff --git a/tests/conflicts.at b/tests/conflicts.at
> index 2077b65..b7ba84b 100644
> --- a/tests/conflicts.at
> +++ b/tests/conflicts.at
> @@ -17,42 +17,43 @@
>  
>  AT_BANNER([[Conflicts.]])
>  
> -## ------------------------------ ##
> -## Useless associativity warning. ##
> -## ------------------------------ ##
> +## ------------------------------- ##
> +## Useless associativity warning.  ##
> +## ------------------------------- ##
>  
>  AT_SETUP([Useless associativity warning])
>  
>  AT_DATA([[input.y]],
> -[[%token T
> -%left A B
> -%right C
> -%nonassoc D
> -%precedence E
> -
> +[[%nonassoc "="
> +%left "+"
> +%left "*"
> +%precedence "("
>  %%
> -e: T A T
> - | T B T
> - | T C T
> - | T D T
> - | T E T
> +stmt:
> +  exp
> +| "var" "=" exp
> +;
> +
> +exp:
> +  exp "+" exp
> +| exp "*" "num"
> +| "(" exp ")"
> +| "num"
>  ;
>  ]])

Because your previous test did not cover the "only associativity"
case.

>  
>  AT_BISON_CHECK([-Wprecedence input.y], 0, [],
> -[[input.y:2.7: warning: useless precedence and associativity for A 
> [-Wprecedence]
> -input.y:2.9: warning: useless precedence and associativity for B 
> [-Wprecedence]
> -input.y:3.8: warning: useless precedence and associativity for C 
> [-Wprecedence]
> -input.y:4.11: warning: useless precedence and associativity for D 
> [-Wprecedence]
> -input.y:5.13: warning: useless precedence for E, use %precedence 
> [-Wprecedence]
> +[[input.y:1.11-13: warning: useless precedence and associativity for "=" 
> [-Wprecedence]
> +input.y:3.7-9: warning: useless associativity for "*", use %precedence 
> [-Wprecedence]
> +input.y:4.13-15: warning: useless precedence for "(" [-Wprecedence]
>  ]])
>  
>  AT_CLEANUP
>  
>  
> -## ------------------------ ##
> -## Token declaration order. ##
> -## ------------------------ ##
> +## ------------------------- ##
> +## Token declaration order.  ##
> +## ------------------------- ##
>  
>  # This test checks that token are declared left to right when in a precedence
>  # statement.
> @@ -110,27 +111,7 @@ int main (void)
>  }
>  ]])
>  
> -AT_BISON_CHECK([-Wprecedence -o input.c input.y], [], [],

Wprecedence is not helping here, and it clutters your beautiful
test which is aiming at something else.

> -[[input.y:18.8: warning: useless precedence and associativity for E 
> [-Wprecedence]
> -input.y:18.10: warning: useless precedence and associativity for F 
> [-Wprecedence]
> -input.y:18.12: warning: useless precedence and associativity for G 
> [-Wprecedence]
> -input.y:19.8: warning: useless precedence and associativity for H 
> [-Wprecedence]
> -input.y:19.10: warning: useless precedence and associativity for I 
> [-Wprecedence]
> -input.y:20.8: warning: useless precedence and associativity for J 
> [-Wprecedence]
> -input.y:21.8: warning: useless precedence and associativity for K 
> [-Wprecedence]
> -input.y:22.8: warning: useless precedence and associativity for L 
> [-Wprecedence]
> -input.y:22.10: warning: useless precedence and associativity for M 
> [-Wprecedence]
> -input.y:22.12: warning: useless precedence and associativity for N 
> [-Wprecedence]
> -input.y:23.11: warning: useless precedence and associativity for O 
> [-Wprecedence]
> -input.y:23.13: warning: useless precedence and associativity for P 
> [-Wprecedence]
> -input.y:23.15: warning: useless precedence and associativity for Q 
> [-Wprecedence]
> -input.y:24.13: warning: useless precedence for R, use %precedence 
> [-Wprecedence]
> -input.y:24.15: warning: useless precedence for S, use %precedence 
> [-Wprecedence]
> -input.y:24.17: warning: useless precedence for T, use %precedence 
> [-Wprecedence]
> -input.y:24.19: warning: useless precedence for U, use %precedence 
> [-Wprecedence]
> -input.y:25.13: warning: useless precedence for V, use %precedence 
> [-Wprecedence]
> -input.y:25.15: warning: useless precedence for W, use %precedence 
> [-Wprecedence]
> -]])
> +AT_BISON_CHECK([-o input.c input.y])
>  AT_COMPILE([input])
>  
>  AT_PARSER_CHECK([./input])
> @@ -175,7 +156,7 @@ f: B
>  ]])
>  
>  AT_BISON_CHECK([-Wprecedence -fcaret -o input.c input.y], 0, [],
> -[[input.y:2.13: warning: useless precedence for Z, use %precedence 
> [-Wprecedence]
> +[[input.y:2.13: warning: useless precedence for Z [-Wprecedence]
>   %precedence Z
>               ^
>  input.y:5.7: warning: useless precedence and associativity for W 
> [-Wprecedence]
> diff --git a/tests/existing.at b/tests/existing.at
> index b3b3af0..215993c 100644
> --- a/tests/existing.at
> +++ b/tests/existing.at
> @@ -428,42 +428,42 @@ dnl don't like even `print $!4;'.
>  dnl BISON-STDERR
>  [AT_COND_CASE([[canonical LR]],
>  [[input.y: warning: 265 shift/reduce conflicts [-Wconflicts-sr]
> -input.y:19.8-16: warning: useless associativity for FUNC_CALL [-Wprecedence]
> -input.y:21.8-14: warning: useless associativity for YNUMBER [-Wprecedence]
> -input.y:21.16-22: warning: useless associativity for YSTRING [-Wprecedence]
> +input.y:19.8-16: warning: useless associativity for FUNC_CALL, use 
> %precedence [-Wprecedence]

because I changed the message.  Arguably, we could try to
use the "visual" syntax of clang when it suggests to add
tokens (look at the lines where it suggests to add parens,
or an initialization, or modify = into ==, etc.):

$ cat /tmp/foo.cc
int
main()
{
  int a, b;
  while (a = b)
    a += b;
}
$ clang++-mp-3.2 -Wall /tmp/foo.cc
/tmp/foo.cc:5:12: warning: using the result of an assignment as a condition 
without parentheses [-Wparentheses]
  while (a = b)
         ~~^~~
/tmp/foo.cc:5:12: note: place parentheses around the assignment to silence this 
warning
  while (a = b)
           ^
         (    )
/tmp/foo.cc:5:12: note: use '==' to turn this assignment into an equality 
comparison
  while (a = b)
           ^
           ==
/tmp/foo.cc:5:14: warning: variable 'b' is uninitialized when used here 
[-Wuninitialized]
  while (a = b)
             ^
/tmp/foo.cc:4:11: note: initialize the variable 'b' to silence this warning
  int a, b;
          ^
           = 0
2 warnings generated.



> +input.y:21.8-14: warning: useless associativity for YNUMBER, use %precedence 
> [-Wprecedence]
> +input.y:21.16-22: warning: useless associativity for YSTRING, use 
> %precedence [-Wprecedence]
>  input.y:22.14-22: warning: useless precedence and associativity for 
> APPEND_OP [-Wprecedence]
> -input.y:23.8-15: warning: useless associativity for ASSIGNOP [-Wprecedence]
> -input.y:23.33-41: warning: useless associativity for CONCAT_OP [-Wprecedence]
> +input.y:23.8-15: warning: useless associativity for ASSIGNOP, use 
> %precedence [-Wprecedence]
> +input.y:23.33-41: warning: useless associativity for CONCAT_OP, use 
> %precedence [-Wprecedence]
>  input.y:27.8-18: warning: useless precedence and associativity for 
> LEX_GETLINE [-Wprecedence]
> -input.y:28.8-13: warning: useless associativity for LEX_IN [-Wprecedence]
> -input.y:29.23-31: warning: useless associativity for INCREMENT [-Wprecedence]
> -input.y:29.33-41: warning: useless associativity for DECREMENT [-Wprecedence]
> -input.y:30.8-18: warning: useless associativity for LEX_BUILTIN 
> [-Wprecedence]
> -input.y:30.20-29: warning: useless associativity for LEX_LENGTH 
> [-Wprecedence]
> +input.y:28.8-13: warning: useless associativity for LEX_IN, use %precedence 
> [-Wprecedence]
> +input.y:29.23-31: warning: useless associativity for INCREMENT, use 
> %precedence [-Wprecedence]
> +input.y:29.33-41: warning: useless associativity for DECREMENT, use 
> %precedence [-Wprecedence]
> +input.y:30.8-18: warning: useless associativity for LEX_BUILTIN, use 
> %precedence [-Wprecedence]
> +input.y:30.20-29: warning: useless associativity for LEX_LENGTH, use 
> %precedence [-Wprecedence]
>  input.y:40.11-13: warning: useless precedence and associativity for ',' 
> [-Wprecedence]
> -input.y:47.8-10: warning: useless associativity for '!' [-Wprecedence]
> -input.y:47.12-16: warning: useless associativity for UNARY [-Wprecedence]
> -input.y:50.7-9: warning: useless associativity for '$' [-Wprecedence]
> -input.y:51.7-9: warning: useless associativity for '(' [-Wprecedence]
> +input.y:47.8-10: warning: useless associativity for '!', use %precedence 
> [-Wprecedence]
> +input.y:47.12-16: warning: useless associativity for UNARY, use %precedence 
> [-Wprecedence]
> +input.y:50.7-9: warning: useless associativity for '$', use %precedence 
> [-Wprecedence]
> +input.y:51.7-9: warning: useless associativity for '(', use %precedence 
> [-Wprecedence]
>  input.y:51.11-13: warning: useless precedence and associativity for ')' 
> [-Wprecedence]]],
>  [[input.y: warning: 65 shift/reduce conflicts [-Wconflicts-sr]
> -input.y:19.8-16: warning: useless associativity for FUNC_CALL [-Wprecedence]
> -input.y:21.8-14: warning: useless associativity for YNUMBER [-Wprecedence]
> -input.y:21.16-22: warning: useless associativity for YSTRING [-Wprecedence]
> +input.y:19.8-16: warning: useless associativity for FUNC_CALL, use 
> %precedence [-Wprecedence]
> +input.y:21.8-14: warning: useless associativity for YNUMBER, use %precedence 
> [-Wprecedence]
> +input.y:21.16-22: warning: useless associativity for YSTRING, use 
> %precedence [-Wprecedence]
>  input.y:22.14-22: warning: useless precedence and associativity for 
> APPEND_OP [-Wprecedence]
> -input.y:23.8-15: warning: useless associativity for ASSIGNOP [-Wprecedence]
> -input.y:23.33-41: warning: useless associativity for CONCAT_OP [-Wprecedence]
> +input.y:23.8-15: warning: useless associativity for ASSIGNOP, use 
> %precedence [-Wprecedence]
> +input.y:23.33-41: warning: useless associativity for CONCAT_OP, use 
> %precedence [-Wprecedence]
>  input.y:27.8-18: warning: useless precedence and associativity for 
> LEX_GETLINE [-Wprecedence]
> -input.y:28.8-13: warning: useless associativity for LEX_IN [-Wprecedence]
> -input.y:29.23-31: warning: useless associativity for INCREMENT [-Wprecedence]
> -input.y:29.33-41: warning: useless associativity for DECREMENT [-Wprecedence]
> -input.y:30.8-18: warning: useless associativity for LEX_BUILTIN 
> [-Wprecedence]
> -input.y:30.20-29: warning: useless associativity for LEX_LENGTH 
> [-Wprecedence]
> +input.y:28.8-13: warning: useless associativity for LEX_IN, use %precedence 
> [-Wprecedence]
> +input.y:29.23-31: warning: useless associativity for INCREMENT, use 
> %precedence [-Wprecedence]
> +input.y:29.33-41: warning: useless associativity for DECREMENT, use 
> %precedence [-Wprecedence]
> +input.y:30.8-18: warning: useless associativity for LEX_BUILTIN, use 
> %precedence [-Wprecedence]
> +input.y:30.20-29: warning: useless associativity for LEX_LENGTH, use 
> %precedence [-Wprecedence]
>  input.y:40.11-13: warning: useless precedence and associativity for ',' 
> [-Wprecedence]
> -input.y:47.8-10: warning: useless associativity for '!' [-Wprecedence]
> -input.y:47.12-16: warning: useless associativity for UNARY [-Wprecedence]
> -input.y:50.7-9: warning: useless associativity for '$' [-Wprecedence]
> -input.y:51.7-9: warning: useless associativity for '(' [-Wprecedence]
> +input.y:47.8-10: warning: useless associativity for '!', use %precedence 
> [-Wprecedence]
> +input.y:47.12-16: warning: useless associativity for UNARY, use %precedence 
> [-Wprecedence]
> +input.y:50.7-9: warning: useless associativity for '$', use %precedence 
> [-Wprecedence]
> +input.y:51.7-9: warning: useless associativity for '(', use %precedence 
> [-Wprecedence]
>  input.y:51.11-13: warning: useless precedence and associativity for ')' 
> [-Wprecedence]]])[
>  ]],
>  
> @@ -1406,20 +1406,20 @@ dnl BISON-STDERR
>  [AT_COND_CASE([[canonical LR]],
>  [[input.y: warning: 1876 shift/reduce conflicts [-Wconflicts-sr]
>  input.y: warning: 144 reduce/reduce conflicts [-Wconflicts-rr]
> -input.y:32.9-12: warning: useless associativity for HQUA [-Wprecedence]
> -input.y:53.8-14: warning: useless associativity for HASSIGN [-Wprecedence]
> -input.y:54.9-15: warning: useless associativity for HORELSE [-Wprecedence]
> -input.y:55.9-16: warning: useless associativity for HANDTHEN [-Wprecedence]
> -input.y:61.9-12: warning: useless associativity for HNOT [-Wprecedence]
> -input.y:68.7-11: warning: useless associativity for UNEAR [-Wprecedence]]],
> +input.y:32.9-12: warning: useless associativity for HQUA, use %precedence 
> [-Wprecedence]
> +input.y:53.8-14: warning: useless associativity for HASSIGN, use %precedence 
> [-Wprecedence]
> +input.y:54.9-15: warning: useless associativity for HORELSE, use %precedence 
> [-Wprecedence]
> +input.y:55.9-16: warning: useless associativity for HANDTHEN, use 
> %precedence [-Wprecedence]
> +input.y:61.9-12: warning: useless associativity for HNOT, use %precedence 
> [-Wprecedence]
> +input.y:68.7-11: warning: useless associativity for UNEAR, use %precedence 
> [-Wprecedence]]],
>  [[input.y: warning: 78 shift/reduce conflicts [-Wconflicts-sr]
>  input.y: warning: 10 reduce/reduce conflicts [-Wconflicts-rr]
> -input.y:32.9-12: warning: useless associativity for HQUA [-Wprecedence]
> -input.y:53.8-14: warning: useless associativity for HASSIGN [-Wprecedence]
> -input.y:54.9-15: warning: useless associativity for HORELSE [-Wprecedence]
> -input.y:55.9-16: warning: useless associativity for HANDTHEN [-Wprecedence]
> -input.y:61.9-12: warning: useless associativity for HNOT [-Wprecedence]
> -input.y:68.7-11: warning: useless associativity for UNEAR [-Wprecedence]]])[
> +input.y:32.9-12: warning: useless associativity for HQUA, use %precedence 
> [-Wprecedence]
> +input.y:53.8-14: warning: useless associativity for HASSIGN, use %precedence 
> [-Wprecedence]
> +input.y:54.9-15: warning: useless associativity for HORELSE, use %precedence 
> [-Wprecedence]
> +input.y:55.9-16: warning: useless associativity for HANDTHEN, use 
> %precedence [-Wprecedence]
> +input.y:61.9-12: warning: useless associativity for HNOT, use %precedence 
> [-Wprecedence]
> +input.y:68.7-11: warning: useless associativity for UNEAR, use %precedence 
> [-Wprecedence]]])[
>  ]],
>  
>  dnl LAST-STATE
> @@ -2002,87 +2002,87 @@ dnl without being followed by "of".)
>  
>  dnl BISON-STDERR
>  [[input.y:471.11-48: warning: rule useless in parser due to conflicts: path: 
> ORDINAL LAST object_type relative_path [-Wother]
> -input.y:19.8-12: warning: useless associativity for LABEL [-Wprecedence]
> -input.y:20.8-15: warning: useless associativity for VARIABLE [-Wprecedence]
> -input.y:21.8-13: warning: useless associativity for NUMBER [-Wprecedence]
> -input.y:22.8-11: warning: useless associativity for TEXT [-Wprecedence]
> -input.y:25.8-14: warning: useless associativity for ORDINAL [-Wprecedence]
> -input.y:30.8-11: warning: useless associativity for LAST [-Wprecedence]
> -input.y:31.8-9: warning: useless associativity for UP [-Wprecedence]
> -input.y:32.8-11: warning: useless associativity for DOWN [-Wprecedence]
> -input.y:35.8-10: warning: useless associativity for BOX [-Wprecedence]
> -input.y:36.8-13: warning: useless associativity for CIRCLE [-Wprecedence]
> -input.y:37.8-14: warning: useless associativity for ELLIPSE [-Wprecedence]
> -input.y:38.8-10: warning: useless associativity for ARC [-Wprecedence]
> -input.y:39.8-11: warning: useless associativity for LINE [-Wprecedence]
> -input.y:40.8-12: warning: useless associativity for ARROW [-Wprecedence]
> -input.y:42.8-13: warning: useless associativity for SPLINE [-Wprecedence]
> -input.y:43.8-13: warning: useless associativity for HEIGHT [-Wprecedence]
> -input.y:44.8-13: warning: useless associativity for RADIUS [-Wprecedence]
> -input.y:45.8-12: warning: useless associativity for WIDTH [-Wprecedence]
> -input.y:46.8-15: warning: useless associativity for DIAMETER [-Wprecedence]
> -input.y:47.8-11: warning: useless associativity for FROM [-Wprecedence]
> -input.y:48.8-9: warning: useless associativity for TO [-Wprecedence]
> -input.y:49.8-9: warning: useless associativity for AT [-Wprecedence]
> +input.y:19.8-12: warning: useless associativity for LABEL, use %precedence 
> [-Wprecedence]
> +input.y:20.8-15: warning: useless associativity for VARIABLE, use 
> %precedence [-Wprecedence]
> +input.y:21.8-13: warning: useless associativity for NUMBER, use %precedence 
> [-Wprecedence]
> +input.y:22.8-11: warning: useless associativity for TEXT, use %precedence 
> [-Wprecedence]
> +input.y:25.8-14: warning: useless associativity for ORDINAL, use %precedence 
> [-Wprecedence]
> +input.y:30.8-11: warning: useless associativity for LAST, use %precedence 
> [-Wprecedence]
> +input.y:31.8-9: warning: useless associativity for UP, use %precedence 
> [-Wprecedence]
> +input.y:32.8-11: warning: useless associativity for DOWN, use %precedence 
> [-Wprecedence]
> +input.y:35.8-10: warning: useless associativity for BOX, use %precedence 
> [-Wprecedence]
> +input.y:36.8-13: warning: useless associativity for CIRCLE, use %precedence 
> [-Wprecedence]
> +input.y:37.8-14: warning: useless associativity for ELLIPSE, use %precedence 
> [-Wprecedence]
> +input.y:38.8-10: warning: useless associativity for ARC, use %precedence 
> [-Wprecedence]
> +input.y:39.8-11: warning: useless associativity for LINE, use %precedence 
> [-Wprecedence]
> +input.y:40.8-12: warning: useless associativity for ARROW, use %precedence 
> [-Wprecedence]
> +input.y:42.8-13: warning: useless associativity for SPLINE, use %precedence 
> [-Wprecedence]
> +input.y:43.8-13: warning: useless associativity for HEIGHT, use %precedence 
> [-Wprecedence]
> +input.y:44.8-13: warning: useless associativity for RADIUS, use %precedence 
> [-Wprecedence]
> +input.y:45.8-12: warning: useless associativity for WIDTH, use %precedence 
> [-Wprecedence]
> +input.y:46.8-15: warning: useless associativity for DIAMETER, use 
> %precedence [-Wprecedence]
> +input.y:47.8-11: warning: useless associativity for FROM, use %precedence 
> [-Wprecedence]
> +input.y:48.8-9: warning: useless associativity for TO, use %precedence 
> [-Wprecedence]
> +input.y:49.8-9: warning: useless associativity for AT, use %precedence 
> [-Wprecedence]
>  input.y:53.8-12: warning: useless precedence and associativity for SOLID 
> [-Wprecedence]
> -input.y:54.8-13: warning: useless associativity for DOTTED [-Wprecedence]
> -input.y:55.8-13: warning: useless associativity for DASHED [-Wprecedence]
> -input.y:56.8-11: warning: useless associativity for CHOP [-Wprecedence]
> +input.y:54.8-13: warning: useless associativity for DOTTED, use %precedence 
> [-Wprecedence]
> +input.y:55.8-13: warning: useless associativity for DASHED, use %precedence 
> [-Wprecedence]
> +input.y:56.8-11: warning: useless associativity for CHOP, use %precedence 
> [-Wprecedence]
>  input.y:59.8-12: warning: useless precedence and associativity for LJUST 
> [-Wprecedence]
>  input.y:60.8-12: warning: useless precedence and associativity for RJUST 
> [-Wprecedence]
>  input.y:61.8-12: warning: useless precedence and associativity for ABOVE 
> [-Wprecedence]
>  input.y:62.8-12: warning: useless precedence and associativity for BELOW 
> [-Wprecedence]
> -input.y:63.8-9: warning: useless associativity for OF [-Wprecedence]
> -input.y:66.8-14: warning: useless associativity for BETWEEN [-Wprecedence]
> -input.y:67.8-10: warning: useless associativity for AND [-Wprecedence]
> -input.y:68.8-11: warning: useless associativity for HERE [-Wprecedence]
> -input.y:69.8-12: warning: useless associativity for DOT_N [-Wprecedence]
> -input.y:70.8-12: warning: useless associativity for DOT_E [-Wprecedence]
> -input.y:71.8-12: warning: useless associativity for DOT_W [-Wprecedence]
> -input.y:72.8-12: warning: useless associativity for DOT_S [-Wprecedence]
> -input.y:73.8-13: warning: useless associativity for DOT_NE [-Wprecedence]
> -input.y:74.8-13: warning: useless associativity for DOT_SE [-Wprecedence]
> -input.y:75.8-13: warning: useless associativity for DOT_NW [-Wprecedence]
> -input.y:76.8-13: warning: useless associativity for DOT_SW [-Wprecedence]
> -input.y:77.8-12: warning: useless associativity for DOT_C [-Wprecedence]
> -input.y:78.8-16: warning: useless associativity for DOT_START [-Wprecedence]
> -input.y:79.8-14: warning: useless associativity for DOT_END [-Wprecedence]
> -input.y:85.8-10: warning: useless associativity for SIN [-Wprecedence]
> -input.y:86.8-10: warning: useless associativity for COS [-Wprecedence]
> -input.y:87.8-12: warning: useless associativity for ATAN2 [-Wprecedence]
> -input.y:88.8-10: warning: useless associativity for LOG [-Wprecedence]
> -input.y:89.8-10: warning: useless associativity for EXP [-Wprecedence]
> -input.y:90.8-11: warning: useless associativity for SQRT [-Wprecedence]
> -input.y:91.8-12: warning: useless associativity for K_MAX [-Wprecedence]
> -input.y:92.8-12: warning: useless associativity for K_MIN [-Wprecedence]
> -input.y:93.8-10: warning: useless associativity for INT [-Wprecedence]
> -input.y:94.8-11: warning: useless associativity for RAND [-Wprecedence]
> -input.y:95.8-12: warning: useless associativity for SRAND [-Wprecedence]
> -input.y:98.8-10: warning: useless associativity for TOP [-Wprecedence]
> -input.y:99.8-13: warning: useless associativity for BOTTOM [-Wprecedence]
> -input.y:100.8-12: warning: useless associativity for UPPER [-Wprecedence]
> -input.y:101.8-12: warning: useless associativity for LOWER [-Wprecedence]
> -input.y:116.8-18: warning: useless associativity for LEFT_CORNER 
> [-Wprecedence]
> -input.y:117.8-19: warning: useless associativity for RIGHT_CORNER 
> [-Wprecedence]
> -input.y:118.8-12: warning: useless associativity for NORTH [-Wprecedence]
> -input.y:119.8-12: warning: useless associativity for SOUTH [-Wprecedence]
> -input.y:120.8-11: warning: useless associativity for EAST [-Wprecedence]
> -input.y:121.8-11: warning: useless associativity for WEST [-Wprecedence]
> -input.y:122.8-13: warning: useless associativity for CENTER [-Wprecedence]
> -input.y:123.8-10: warning: useless associativity for END [-Wprecedence]
> -input.y:124.8-12: warning: useless associativity for START [-Wprecedence]
> -input.y:127.8-11: warning: useless associativity for PLOT [-Wprecedence]
> -input.y:128.8-16: warning: useless associativity for THICKNESS [-Wprecedence]
> -input.y:129.8-11: warning: useless associativity for FILL [-Wprecedence]
> +input.y:63.8-9: warning: useless associativity for OF, use %precedence 
> [-Wprecedence]
> +input.y:66.8-14: warning: useless associativity for BETWEEN, use %precedence 
> [-Wprecedence]
> +input.y:67.8-10: warning: useless associativity for AND, use %precedence 
> [-Wprecedence]
> +input.y:68.8-11: warning: useless associativity for HERE, use %precedence 
> [-Wprecedence]
> +input.y:69.8-12: warning: useless associativity for DOT_N, use %precedence 
> [-Wprecedence]
> +input.y:70.8-12: warning: useless associativity for DOT_E, use %precedence 
> [-Wprecedence]
> +input.y:71.8-12: warning: useless associativity for DOT_W, use %precedence 
> [-Wprecedence]
> +input.y:72.8-12: warning: useless associativity for DOT_S, use %precedence 
> [-Wprecedence]
> +input.y:73.8-13: warning: useless associativity for DOT_NE, use %precedence 
> [-Wprecedence]
> +input.y:74.8-13: warning: useless associativity for DOT_SE, use %precedence 
> [-Wprecedence]
> +input.y:75.8-13: warning: useless associativity for DOT_NW, use %precedence 
> [-Wprecedence]
> +input.y:76.8-13: warning: useless associativity for DOT_SW, use %precedence 
> [-Wprecedence]
> +input.y:77.8-12: warning: useless associativity for DOT_C, use %precedence 
> [-Wprecedence]
> +input.y:78.8-16: warning: useless associativity for DOT_START, use 
> %precedence [-Wprecedence]
> +input.y:79.8-14: warning: useless associativity for DOT_END, use %precedence 
> [-Wprecedence]
> +input.y:85.8-10: warning: useless associativity for SIN, use %precedence 
> [-Wprecedence]
> +input.y:86.8-10: warning: useless associativity for COS, use %precedence 
> [-Wprecedence]
> +input.y:87.8-12: warning: useless associativity for ATAN2, use %precedence 
> [-Wprecedence]
> +input.y:88.8-10: warning: useless associativity for LOG, use %precedence 
> [-Wprecedence]
> +input.y:89.8-10: warning: useless associativity for EXP, use %precedence 
> [-Wprecedence]
> +input.y:90.8-11: warning: useless associativity for SQRT, use %precedence 
> [-Wprecedence]
> +input.y:91.8-12: warning: useless associativity for K_MAX, use %precedence 
> [-Wprecedence]
> +input.y:92.8-12: warning: useless associativity for K_MIN, use %precedence 
> [-Wprecedence]
> +input.y:93.8-10: warning: useless associativity for INT, use %precedence 
> [-Wprecedence]
> +input.y:94.8-11: warning: useless associativity for RAND, use %precedence 
> [-Wprecedence]
> +input.y:95.8-12: warning: useless associativity for SRAND, use %precedence 
> [-Wprecedence]
> +input.y:98.8-10: warning: useless associativity for TOP, use %precedence 
> [-Wprecedence]
> +input.y:99.8-13: warning: useless associativity for BOTTOM, use %precedence 
> [-Wprecedence]
> +input.y:100.8-12: warning: useless associativity for UPPER, use %precedence 
> [-Wprecedence]
> +input.y:101.8-12: warning: useless associativity for LOWER, use %precedence 
> [-Wprecedence]
> +input.y:116.8-18: warning: useless associativity for LEFT_CORNER, use 
> %precedence [-Wprecedence]
> +input.y:117.8-19: warning: useless associativity for RIGHT_CORNER, use 
> %precedence [-Wprecedence]
> +input.y:118.8-12: warning: useless associativity for NORTH, use %precedence 
> [-Wprecedence]
> +input.y:119.8-12: warning: useless associativity for SOUTH, use %precedence 
> [-Wprecedence]
> +input.y:120.8-11: warning: useless associativity for EAST, use %precedence 
> [-Wprecedence]
> +input.y:121.8-11: warning: useless associativity for WEST, use %precedence 
> [-Wprecedence]
> +input.y:122.8-13: warning: useless associativity for CENTER, use %precedence 
> [-Wprecedence]
> +input.y:123.8-10: warning: useless associativity for END, use %precedence 
> [-Wprecedence]
> +input.y:124.8-12: warning: useless associativity for START, use %precedence 
> [-Wprecedence]
> +input.y:127.8-11: warning: useless associativity for PLOT, use %precedence 
> [-Wprecedence]
> +input.y:128.8-16: warning: useless associativity for THICKNESS, use 
> %precedence [-Wprecedence]
> +input.y:129.8-11: warning: useless associativity for FILL, use %precedence 
> [-Wprecedence]
>  input.y:130.8-14: warning: useless precedence and associativity for COLORED 
> [-Wprecedence]
>  input.y:131.8-15: warning: useless precedence and associativity for OUTLINED 
> [-Wprecedence]
> -input.y:134.8-14: warning: useless associativity for SPRINTF [-Wprecedence]
> -input.y:137.7-9: warning: useless associativity for '.' [-Wprecedence]
> -input.y:156.23-25: warning: useless associativity for '(' [-Wprecedence]
> -input.y:157.20-22: warning: useless associativity for '`' [-Wprecedence]
> -input.y:159.48-50: warning: useless associativity for '@<:@' [-Wprecedence]
> -input.y:170.7-9: warning: useless associativity for ',' [-Wprecedence]
> -input.y:181.8-10: warning: useless associativity for '!' [-Wprecedence]
> +input.y:134.8-14: warning: useless associativity for SPRINTF, use 
> %precedence [-Wprecedence]
> +input.y:137.7-9: warning: useless associativity for '.', use %precedence 
> [-Wprecedence]
> +input.y:156.23-25: warning: useless associativity for '(', use %precedence 
> [-Wprecedence]
> +input.y:157.20-22: warning: useless associativity for '`', use %precedence 
> [-Wprecedence]
> +input.y:159.48-50: warning: useless associativity for '@<:@', use 
> %precedence [-Wprecedence]
> +input.y:170.7-9: warning: useless associativity for ',', use %precedence 
> [-Wprecedence]
> +input.y:181.8-10: warning: useless associativity for '!', use %precedence 
> [-Wprecedence]
>  ]],
>  
>  dnl LAST-STATE




reply via email to

[Prev in Thread] Current Thread [Next in Thread]