]> git.saurik.com Git - bison.git/commitdiff
Merge remote-tracking branch 'origin/maint'
authorAkim Demaille <akim@lrde.epita.fr>
Tue, 5 Jun 2012 12:06:08 +0000 (14:06 +0200)
committerAkim Demaille <akim@lrde.epita.fr>
Tue, 5 Jun 2012 12:07:43 +0000 (14:07 +0200)
* origin/maint:
  version 2.5.1
  NEWS: prepare for 2.5.1.
  maint: update release procedure
  maint: fix comment typos
  maint: post-release administrivia

Conflicts:
NEWS

1  2 
.prev-version
ChangeLog-2012
NEWS
README-hacking
bootstrap.conf
build-aux/.gitignore
data/yacc.c
src/parse-gram.c
tests/existing.at
tests/local.at

diff --cc .prev-version
index 0b6bb570ec01208e7282362a64279f6a312301ea,95e3ba8192053fb4a18be631cb8d273638ac768b..73462a5a13445f66009e00988279d30e55aa8363
@@@ -1,1 -1,1 +1,1 @@@
- 2.3b
 -2.5
++2.5.1
diff --cc ChangeLog-2012
Simple merge
diff --cc NEWS
index a3b2fa7c342563fcd9bd94247e5da2286631a05c,d105f79c4b8b9035ea22a5882c9c1a900d42b11a..8c79bb7a4ab4b85e1eb1905528dd127fc4c15580
--- 1/NEWS
--- 2/NEWS
+++ b/NEWS
@@@ -1,75 -1,6 +1,74 @@@
- Bison News
- ----------
+ GNU Bison NEWS
  
- * Changes in version ?.? (????-??-??):
++* Noteworthy changes in release ?.? (????-??-??) [?]
 +
 +** Additional yylex/yyparse arguments
 +
 +  The new directive %param declare additional argument to both yylex
 +  and yyparse.  The %lex-param, %parse-param, and %param directives
 +  support one or more arguments.  Instead of
 +
 +      %lex-param   {arg1_type *arg1}
 +      %lex-param   {arg2_type *arg2}
 +      %parse-param {arg1_type *arg1}
 +      %parse-param {arg2_type *arg2}
 +
 +  one may now declare
 +
 +      %param {arg1_type *arg1} {arg2_type *arg2}
 +
 +** Java skeleton improvements
 +
 +  The constants for token names were moved to the Lexer interface.
 +  Also, it is possible to add code to the parser's constructors using
 +  "%code init" and "%define init_throws".
 +
 +** C++ skeleton improvements
 +
 +  The C++ parser features a syntax_error exception, which can be
 +  thrown from the scanner or from user rules to raise syntax errors.
 +  This facilitates reporting errors caught in sub-functions (e.g.,
 +  rejecting too large integral literals from a conversion function
 +  used by the scanner, or rejecting invalid combinations from a
 +  factory invoked by the user actions).
 +
 +** Variable api.tokens.prefix
 +
 +  The variable api.tokens.prefix changes the way tokens are identified in
 +  the generated files.  This is especially useful to avoid collisions
 +  with identifiers in the target language.  For instance
 +
 +      %token FILE for ERROR
 +      %define api.tokens.prefix "TOK_"
 +      %%
 +      start: FILE for ERROR;
 +
 +  will generate the definition of the symbols TOK_FILE, TOK_for, and
 +  TOK_ERROR in the generated sources.  In particular, the scanner must
 +  use these prefixed token names, although the grammar itself still
 +  uses the short names (as in the sample rule given above).
 +
 +** Variable api.namespace
 +
 +  The "namespace" variable is renamed "api.namespace".  Backward
 +  compatibility is ensured, but upgrading is recommended.
 +
 +** Variable parse.error
 +
 +  The variable error controls the verbosity of error messages.  The
 +  use of the %error-verbose directive is deprecated in favor of
 +  %define parse.error "verbose".
 +
 +** Semantic predicates
 +
 +  The new, experimental, semantic-predicate feature allows actions of
 +  the form %?{ BOOLEAN-EXPRESSION }, which cause syntax errors (as for
 +  YYERROR) if the expression evaluates to 0, and are evaluated immediately
 +  in GLR parsers, rather than being deferred.  The result is that they
 +  allow the programmer to prune possible parses based on the values of
 +  runtime expressions.
 +
- * Changes in version 2.5.1 (????-??-??):
+ * Noteworthy changes in release 2.5.1 (2012-06-05) [stable]
  
  ** Future changes:
  
diff --cc README-hacking
index c4578fcc9de6a48ec41745c80ec0a1ff9778318e,b3364ac3911563eaa5642773f2bf1d19962f56eb..5d9314b7e0b4dc929514a8507c954f82e76a1e42
@@@ -211,15 -207,14 +214,17 @@@ release
    maintainer-check, maintainer-push-check and maintainer-xml-check.
  
  - Change tests/atlocal/CFLAGS to add your preferred options.  For
-   instance, `-traditional' to check that the parsers are K&R.  Note
-   that it does not make sense for glr.c, which should be ANSI,
-   but currently is actually GNU C, nor for lalr1.cc.
+   instance, "-traditional" to check that the parsers are K&R.  Note
+   that it does not make sense for glr.c, which should be ANSI, but
+   currently is actually GNU C, nor for lalr1.cc.
  
 +- Test with a very recent version of GCC for both C and C++.  Testing
 +  with older versions that are still in use is nice too.
 +
  
  * Release Procedure
+ This section needs to be updated to take into account features from
+ gnulib.  In particular, be sure to read README-release.
  
  ** Update the submodules.  See above.
  
diff --cc bootstrap.conf
Simple merge
Simple merge
diff --cc data/yacc.c
Simple merge
Simple merge
index 61a50d00e8039152283228bb4bd02ce9f5e942e6,582f6b3df6f7747c2da9a0324998f392c7d35fc0..2891f80bbf2942bd11dcc8aaaad9d1bebd6fecc5
@@@ -1567,367 -1567,367 +1567,367 @@@ works *
  ]],
  [[
  top:
 -      optional_separator
 -      | element_list
 -      ;
 +        optional_separator
 +        | element_list
 +        ;
  
  element_list:
 -      optional_separator middle_element_list optional_separator
 -      ;
 +        optional_separator middle_element_list optional_separator
 +        ;
  
  middle_element_list:
 -      element
 -      | middle_element_list separator element
 -      ;
 +        element
 +        | middle_element_list separator element
 +        ;
  
  optional_separator:
 -      /* empty */
 -      | separator
 -      ;
 +        /* empty */
 +        | separator
 +        ;
  
  separator:
 -      ';'
 -      | separator ';'
 -      ;
 +        ';'
 +        | separator ';'
 +        ;
  
  placeless_element:
 -      VARIABLE '=' any_expr
 -      | VARIABLE ':' '=' any_expr
 -      | UP
 -      | DOWN
 -      | LEFT
 -      | RIGHT
 -      | COMMAND_LINE
 -      | COMMAND print_args
 -      | PRINT print_args
 -      | SH
 -              {}
 -        DELIMITED
 -      | COPY TEXT
 -      | COPY TEXT THROUGH
 -              {}
 -        DELIMITED
 -              {}
 -        until
 -      | COPY THROUGH
 -              {}
 -        DELIMITED
 -              {}
 -        until
 -      | FOR VARIABLE '=' expr TO expr optional_by DO
 -              {}
 -        DELIMITED
 -      | simple_if
 -      | simple_if ELSE
 -              {}
 -        DELIMITED
 -      | reset_variables
 -      | RESET
 -      ;
 +        VARIABLE '=' any_expr
 +        | VARIABLE ':' '=' any_expr
 +        | UP
 +        | DOWN
 +        | LEFT
 +        | RIGHT
 +        | COMMAND_LINE
 +        | COMMAND print_args
 +        | PRINT print_args
 +        | SH
 +                {}
 +          DELIMITED
 +        | COPY TEXT
-         | COPY TEXT THRU
++        | COPY TEXT THROUGH
 +                {}
 +          DELIMITED
 +                {}
 +          until
-         | COPY THRU
++        | COPY THROUGH
 +                {}
 +          DELIMITED
 +                {}
 +          until
 +        | FOR VARIABLE '=' expr TO expr optional_by DO
 +                {}
 +          DELIMITED
 +        | simple_if
 +        | simple_if ELSE
 +                {}
 +          DELIMITED
 +        | reset_variables
 +        | RESET
 +        ;
  
  reset_variables:
 -      RESET VARIABLE
 -      | reset_variables VARIABLE
 -      | reset_variables ',' VARIABLE
 -      ;
 +        RESET VARIABLE
 +        | reset_variables VARIABLE
 +        | reset_variables ',' VARIABLE
 +        ;
  
  print_args:
 -      print_arg
 -      | print_args print_arg
 -      ;
 +        print_arg
 +        | print_args print_arg
 +        ;
  
  print_arg:
 -      expr                                                    %prec ','
 -      | text
 -      | position                                              %prec ','
 -      ;
 +        expr                                                    %prec ','
 +        | text
 +        | position                                              %prec ','
 +        ;
  
  simple_if:
 -      IF any_expr THEN
 -              {}
 -      DELIMITED
 -      ;
 +        IF any_expr THEN
 +                {}
 +        DELIMITED
 +        ;
  
  until:
 -      /* empty */
 -      | UNTIL TEXT
 -      ;
 +        /* empty */
 +        | UNTIL TEXT
 +        ;
  
  any_expr:
 -      expr
 -      | text_expr
 -      ;
 +        expr
 +        | text_expr
 +        ;
  
  text_expr:
 -      text EQUALEQUAL text
 -      | text NOTEQUAL text
 -      | text_expr ANDAND text_expr
 -      | text_expr ANDAND expr
 -      | expr ANDAND text_expr
 -      | text_expr OROR text_expr
 -      | text_expr OROR expr
 -      | expr OROR text_expr
 -      | '!' text_expr
 -      ;
 +        text EQUALEQUAL text
 +        | text NOTEQUAL text
 +        | text_expr ANDAND text_expr
 +        | text_expr ANDAND expr
 +        | expr ANDAND text_expr
 +        | text_expr OROR text_expr
 +        | text_expr OROR expr
 +        | expr OROR text_expr
 +        | '!' text_expr
 +        ;
  
  optional_by:
 -      /* empty */
 -      | BY expr
 -      | BY '*' expr
 -      ;
 +        /* empty */
 +        | BY expr
 +        | BY '*' expr
 +        ;
  
  element:
 -      object_spec
 -      | LABEL ':' optional_separator element
 -      | LABEL ':' optional_separator position_not_place
 -      | LABEL ':' optional_separator place
 -      | '{' {} element_list '}'
 -              {}
 -        optional_element
 -      | placeless_element
 -      ;
 +        object_spec
 +        | LABEL ':' optional_separator element
 +        | LABEL ':' optional_separator position_not_place
 +        | LABEL ':' optional_separator place
 +        | '{' {} element_list '}'
 +                {}
 +          optional_element
 +        | placeless_element
 +        ;
  
  optional_element:
 -      /* empty */
 -      | element
 -      ;
 +        /* empty */
 +        | element
 +        ;
  
  object_spec:
 -      BOX
 -      | CIRCLE
 -      | ELLIPSE
 -      | ARC
 -      | LINE
 -      | ARROW
 -      | MOVE
 -      | SPLINE
 -      | text                                                  %prec TEXT
 -      | PLOT expr
 -      | PLOT expr text
 -      | '['
 -              {}
 -        element_list ']'
 -      | object_spec HEIGHT expr
 -      | object_spec RADIUS expr
 -      | object_spec WIDTH expr
 -      | object_spec DIAMETER expr
 -      | object_spec expr                                      %prec HEIGHT
 -      | object_spec UP
 -      | object_spec UP expr
 -      | object_spec DOWN
 -      | object_spec DOWN expr
 -      | object_spec RIGHT
 -      | object_spec RIGHT expr
 -      | object_spec LEFT
 -      | object_spec LEFT expr
 -      | object_spec FROM position
 -      | object_spec TO position
 -      | object_spec AT position
 -      | object_spec WITH path
 -      | object_spec WITH position                             %prec ','
 -      | object_spec BY expr_pair
 -      | object_spec THEN
 -      | object_spec SOLID
 -      | object_spec DOTTED
 -      | object_spec DOTTED expr
 -      | object_spec DASHED
 -      | object_spec DASHED expr
 -      | object_spec FILL
 -      | object_spec FILL expr
 -      | object_spec SHADED text
 -      | object_spec COLORED text
 -      | object_spec OUTLINED text
 -      | object_spec CHOP
 -      | object_spec CHOP expr
 -      | object_spec SAME
 -      | object_spec INVISIBLE
 -      | object_spec LEFT_ARROW_HEAD
 -      | object_spec RIGHT_ARROW_HEAD
 -      | object_spec DOUBLE_ARROW_HEAD
 -      | object_spec CW
 -      | object_spec CCW
 -      | object_spec text                                      %prec TEXT
 -      | object_spec LJUST
 -      | object_spec RJUST
 -      | object_spec ABOVE
 -      | object_spec BELOW
 -      | object_spec THICKNESS expr
 -      | object_spec ALIGNED
 -      ;
 +        BOX
 +        | CIRCLE
 +        | ELLIPSE
 +        | ARC
 +        | LINE
 +        | ARROW
 +        | MOVE
 +        | SPLINE
 +        | text                                                  %prec TEXT
 +        | PLOT expr
 +        | PLOT expr text
 +        | '['
 +                {}
 +          element_list ']'
 +        | object_spec HEIGHT expr
 +        | object_spec RADIUS expr
 +        | object_spec WIDTH expr
 +        | object_spec DIAMETER expr
 +        | object_spec expr                                      %prec HEIGHT
 +        | object_spec UP
 +        | object_spec UP expr
 +        | object_spec DOWN
 +        | object_spec DOWN expr
 +        | object_spec RIGHT
 +        | object_spec RIGHT expr
 +        | object_spec LEFT
 +        | object_spec LEFT expr
 +        | object_spec FROM position
 +        | object_spec TO position
 +        | object_spec AT position
 +        | object_spec WITH path
 +        | object_spec WITH position                             %prec ','
 +        | object_spec BY expr_pair
 +        | object_spec THEN
 +        | object_spec SOLID
 +        | object_spec DOTTED
 +        | object_spec DOTTED expr
 +        | object_spec DASHED
 +        | object_spec DASHED expr
 +        | object_spec FILL
 +        | object_spec FILL expr
 +        | object_spec SHADED text
 +        | object_spec COLORED text
 +        | object_spec OUTLINED text
 +        | object_spec CHOP
 +        | object_spec CHOP expr
 +        | object_spec SAME
 +        | object_spec INVISIBLE
 +        | object_spec LEFT_ARROW_HEAD
 +        | object_spec RIGHT_ARROW_HEAD
 +        | object_spec DOUBLE_ARROW_HEAD
 +        | object_spec CW
 +        | object_spec CCW
 +        | object_spec text                                      %prec TEXT
 +        | object_spec LJUST
 +        | object_spec RJUST
 +        | object_spec ABOVE
 +        | object_spec BELOW
 +        | object_spec THICKNESS expr
 +        | object_spec ALIGNED
 +        ;
  
  text:
 -      TEXT
 -      | SPRINTF '(' TEXT sprintf_args ')'
 -      ;
 +        TEXT
 +        | SPRINTF '(' TEXT sprintf_args ')'
 +        ;
  
  sprintf_args:
 -      /* empty */
 -      | sprintf_args ',' expr
 -      ;
 +        /* empty */
 +        | sprintf_args ',' expr
 +        ;
  
  position:
 -      position_not_place
 -      | place
 -      ;
 +        position_not_place
 +        | place
 +        ;
  
  position_not_place:
 -      expr_pair
 -      | position '+' expr_pair
 -      | position '-' expr_pair
 -      | '(' position ',' position ')'
 -      | expr between position AND position
 -      | expr '<' position ',' position '>'
 -      ;
 +        expr_pair
 +        | position '+' expr_pair
 +        | position '-' expr_pair
 +        | '(' position ',' position ')'
 +        | expr between position AND position
 +        | expr '<' position ',' position '>'
 +        ;
  
  between:
 -      BETWEEN
 -      | OF THE WAY BETWEEN
 -      ;
 +        BETWEEN
 +        | OF THE WAY BETWEEN
 +        ;
  
  expr_pair:
 -      expr ',' expr
 -      | '(' expr_pair ')'
 -      ;
 +        expr ',' expr
 +        | '(' expr_pair ')'
 +        ;
  
  place:
 -      /* line at A left == line (at A) left */
 -      label                                                   %prec CHOP
 -      | label corner
 -      | corner label
 -      | corner OF label
 -      | HERE
 -      ;
 +        /* line at A left == line (at A) left */
 +        label                                                   %prec CHOP
 +        | label corner
 +        | corner label
 +        | corner OF label
 +        | HERE
 +        ;
  
  label:
 -      LABEL
 -      | nth_primitive
 -      | label '.' LABEL
 -      ;
 +        LABEL
 +        | nth_primitive
 +        | label '.' LABEL
 +        ;
  
  ordinal:
 -      ORDINAL
 -      | '`' any_expr TH
 -      ;
 +        ORDINAL
 +        | '`' any_expr TH
 +        ;
  
  optional_ordinal_last:
 -      LAST
 -      | ordinal LAST
 -      ;
 +        LAST
 +        | ordinal LAST
 +        ;
  
  nth_primitive:
 -      ordinal object_type
 -      | optional_ordinal_last object_type
 -      ;
 +        ordinal object_type
 +        | optional_ordinal_last object_type
 +        ;
  
  object_type:
 -      BOX
 -      | CIRCLE
 -      | ELLIPSE
 -      | ARC
 -      | LINE
 -      | ARROW
 -      | SPLINE
 -      | '[' ']'
 -      | TEXT
 -      ;
 +        BOX
 +        | CIRCLE
 +        | ELLIPSE
 +        | ARC
 +        | LINE
 +        | ARROW
 +        | SPLINE
 +        | '[' ']'
 +        | TEXT
 +        ;
  
  label_path:
 -      '.' LABEL
 -      | label_path '.' LABEL
 -      ;
 +        '.' LABEL
 +        | label_path '.' LABEL
 +        ;
  
  relative_path:
 -      corner                                                  %prec CHOP
 -      /* give this a lower precedence than LEFT and RIGHT so that
 -         [A: box] with .A left == [A: box] with (.A left) */
 -      | label_path                                            %prec TEXT
 -      | label_path corner
 -      ;
 +        corner                                                  %prec CHOP
 +        /* give this a lower precedence than LEFT and RIGHT so that
 +           [A: box] with .A left == [A: box] with (.A left) */
 +        | label_path                                            %prec TEXT
 +        | label_path corner
 +        ;
  
  path:
 -      relative_path
 -      | '(' relative_path ',' relative_path ')'
 -              {}
 -      /* The rest of these rules are a compatibility sop. */
 -      | ORDINAL LAST object_type relative_path
 -      | LAST object_type relative_path
 -      | ORDINAL object_type relative_path
 -      | LABEL relative_path
 -      ;
 +        relative_path
 +        | '(' relative_path ',' relative_path ')'
 +                {}
 +        /* The rest of these rules are a compatibility sop. */
 +        | ORDINAL LAST object_type relative_path
 +        | LAST object_type relative_path
 +        | ORDINAL object_type relative_path
 +        | LABEL relative_path
 +        ;
  
  corner:
 -      DOT_N
 -      | DOT_E
 -      | DOT_W
 -      | DOT_S
 -      | DOT_NE
 -      | DOT_SE
 -      | DOT_NW
 -      | DOT_SW
 -      | DOT_C
 -      | DOT_START
 -      | DOT_END
 -      | TOP
 -      | BOTTOM
 -      | LEFT
 -      | RIGHT
 -      | UPPER LEFT
 -      | LOWER LEFT
 -      | UPPER RIGHT
 -      | LOWER RIGHT
 -      | LEFT_CORNER
 -      | RIGHT_CORNER
 -      | UPPER LEFT_CORNER
 -      | LOWER LEFT_CORNER
 -      | UPPER RIGHT_CORNER
 -      | LOWER RIGHT_CORNER
 -      | NORTH
 -      | SOUTH
 -      | EAST
 -      | WEST
 -      | CENTER
 -      | START
 -      | END
 -      ;
 +        DOT_N
 +        | DOT_E
 +        | DOT_W
 +        | DOT_S
 +        | DOT_NE
 +        | DOT_SE
 +        | DOT_NW
 +        | DOT_SW
 +        | DOT_C
 +        | DOT_START
 +        | DOT_END
 +        | TOP
 +        | BOTTOM
 +        | LEFT
 +        | RIGHT
 +        | UPPER LEFT
 +        | LOWER LEFT
 +        | UPPER RIGHT
 +        | LOWER RIGHT
 +        | LEFT_CORNER
 +        | RIGHT_CORNER
 +        | UPPER LEFT_CORNER
 +        | LOWER LEFT_CORNER
 +        | UPPER RIGHT_CORNER
 +        | LOWER RIGHT_CORNER
 +        | NORTH
 +        | SOUTH
 +        | EAST
 +        | WEST
 +        | CENTER
 +        | START
 +        | END
 +        ;
  
  expr:
 -      VARIABLE
 -      | NUMBER
 -      | place DOT_X
 -      | place DOT_Y
 -      | place DOT_HT
 -      | place DOT_WID
 -      | place DOT_RAD
 -      | expr '+' expr
 -      | expr '-' expr
 -      | expr '*' expr
 -      | expr '/' expr
 -      | expr '%' expr
 -      | expr '^' expr
 -      | '-' expr                                              %prec '!'
 -      | '(' any_expr ')'
 -      | SIN '(' any_expr ')'
 -      | COS '(' any_expr ')'
 -      | ATAN2 '(' any_expr ',' any_expr ')'
 -      | LOG '(' any_expr ')'
 -      | EXP '(' any_expr ')'
 -      | SQRT '(' any_expr ')'
 -      | K_MAX '(' any_expr ',' any_expr ')'
 -      | K_MIN '(' any_expr ',' any_expr ')'
 -      | INT '(' any_expr ')'
 -      | RAND '(' any_expr ')'
 -      | RAND '(' ')'
 -      | SRAND '(' any_expr ')'
 -      | expr '<' expr
 -      | expr LESSEQUAL expr
 -      | expr '>' expr
 -      | expr GREATEREQUAL expr
 -      | expr EQUALEQUAL expr
 -      | expr NOTEQUAL expr
 -      | expr ANDAND expr
 -      | expr OROR expr
 -      | '!' expr
 -      ;
 +        VARIABLE
 +        | NUMBER
 +        | place DOT_X
 +        | place DOT_Y
 +        | place DOT_HT
 +        | place DOT_WID
 +        | place DOT_RAD
 +        | expr '+' expr
 +        | expr '-' expr
 +        | expr '*' expr
 +        | expr '/' expr
 +        | expr '%' expr
 +        | expr '^' expr
 +        | '-' expr                                              %prec '!'
 +        | '(' any_expr ')'
 +        | SIN '(' any_expr ')'
 +        | COS '(' any_expr ')'
 +        | ATAN2 '(' any_expr ',' any_expr ')'
 +        | LOG '(' any_expr ')'
 +        | EXP '(' any_expr ')'
 +        | SQRT '(' any_expr ')'
 +        | K_MAX '(' any_expr ',' any_expr ')'
 +        | K_MIN '(' any_expr ',' any_expr ')'
 +        | INT '(' any_expr ')'
 +        | RAND '(' any_expr ')'
 +        | RAND '(' ')'
 +        | SRAND '(' any_expr ')'
 +        | expr '<' expr
 +        | expr LESSEQUAL expr
 +        | expr '>' expr
 +        | expr GREATEREQUAL expr
 +        | expr EQUALEQUAL expr
 +        | expr NOTEQUAL expr
 +        | expr ANDAND expr
 +        | expr OROR expr
 +        | '!' expr
 +        ;
  ]],
  
  dnl INPUT
diff --cc tests/local.at
Simple merge