mirror of
https://git.savannah.gnu.org/git/bison.git
synced 2026-08-14 21:25:14 +00:00
Compare commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
307fcdee00 | ||
|
|
d26d10ad6c | ||
|
|
1b4108da3e | ||
|
|
53bfc7df94 | ||
|
|
a5fb4a88ef | ||
|
|
54df196d49 | ||
|
|
52bb6f0525 | ||
|
|
76dab18af3 |
+1
-1
@@ -1 +1 @@
|
|||||||
3.5.93
|
3.5.94
|
||||||
|
|||||||
@@ -1,43 +1,6 @@
|
|||||||
GNU Bison NEWS
|
GNU Bison NEWS
|
||||||
|
|
||||||
* Noteworthy changes in release 3.5.94 (2020-05-06) [beta]
|
* Noteworthy changes in release 3.6 (2020-05-08) [stable]
|
||||||
|
|
||||||
Portability issues.
|
|
||||||
|
|
||||||
* Noteworthy changes in release 3.5.93 (2020-05-03) [beta]
|
|
||||||
|
|
||||||
Portability issues.
|
|
||||||
|
|
||||||
* Noteworthy changes in release 3.5.92 (2020-05-03) [beta]
|
|
||||||
|
|
||||||
Portability issues.
|
|
||||||
|
|
||||||
More documentation.
|
|
||||||
|
|
||||||
Backward compatibility issues with C++.
|
|
||||||
|
|
||||||
* Noteworthy changes in release 3.5.91 (2020-04-29) [stable]
|
|
||||||
|
|
||||||
** New features
|
|
||||||
|
|
||||||
*** Returning the error token
|
|
||||||
|
|
||||||
When the scanner returns an invalid token or the undefined token
|
|
||||||
(YYUNDEF), the parser generates an error message and enters error
|
|
||||||
recovery. Because of that error message, most scanners that find lexical
|
|
||||||
errors generate an error message, and then ignore the invalid input
|
|
||||||
without entering the error-recovery.
|
|
||||||
|
|
||||||
The scanners may now return YYerror, the error token, to enter the
|
|
||||||
error-recovery mode without triggering an additional error message. See
|
|
||||||
the bistromathic for an example.
|
|
||||||
|
|
||||||
*** The bistromathic features internationalization
|
|
||||||
|
|
||||||
Its way to build the error message is more general and is easy to use in
|
|
||||||
other projects.
|
|
||||||
|
|
||||||
* Noteworthy changes in release 3.5.90 (2020-04-18) [beta]
|
|
||||||
|
|
||||||
** Backward incompatible changes
|
** Backward incompatible changes
|
||||||
|
|
||||||
@@ -142,6 +105,18 @@ GNU Bison NEWS
|
|||||||
It makes little sense to use this feature without enabling LAC (lookahead
|
It makes little sense to use this feature without enabling LAC (lookahead
|
||||||
correction).
|
correction).
|
||||||
|
|
||||||
|
*** Returning the error token
|
||||||
|
|
||||||
|
When the scanner returns an invalid token or the undefined token
|
||||||
|
(YYUNDEF), the parser generates an error message and enters error
|
||||||
|
recovery. Because of that error message, most scanners that find lexical
|
||||||
|
errors generate an error message, and then ignore the invalid input
|
||||||
|
without entering the error-recovery.
|
||||||
|
|
||||||
|
The scanners may now return YYerror, the error token, to enter the
|
||||||
|
error-recovery mode without triggering an additional error message. See
|
||||||
|
the bistromathic for an example.
|
||||||
|
|
||||||
*** Deep overhaul of the symbol and token kinds
|
*** Deep overhaul of the symbol and token kinds
|
||||||
|
|
||||||
To avoid the confusion with types in programming languages, we now refer
|
To avoid the confusion with types in programming languages, we now refer
|
||||||
|
|||||||
+27
-6
@@ -7666,11 +7666,11 @@ recovery.
|
|||||||
In either case, the rest of the action is not executed.
|
In either case, the rest of the action is not executed.
|
||||||
@end deffn
|
@end deffn
|
||||||
|
|
||||||
@deffn {Macro} YYEMPTY
|
@deffn {Value} YYEMPTY
|
||||||
Value stored in @code{yychar} when there is no lookahead token.
|
Value stored in @code{yychar} when there is no lookahead token.
|
||||||
@end deffn
|
@end deffn
|
||||||
|
|
||||||
@deffn {Macro} YYEOF
|
@deffn {Value} YYEOF
|
||||||
Value stored in @code{yychar} when the lookahead is the end of the input
|
Value stored in @code{yychar} when the lookahead is the end of the input
|
||||||
stream.
|
stream.
|
||||||
@end deffn
|
@end deffn
|
||||||
@@ -14700,6 +14700,14 @@ is given a nonzero value, the parser will output information on input
|
|||||||
symbols and parser action. @xref{Tracing}.
|
symbols and parser action. @xref{Tracing}.
|
||||||
@end deffn
|
@end deffn
|
||||||
|
|
||||||
|
@deffn {Value} YYEMPTY
|
||||||
|
The pseudo token kind when there is no lookahead token.
|
||||||
|
@end deffn
|
||||||
|
|
||||||
|
@deffn {Value} YYEOF
|
||||||
|
The token kind denoting is the end of the input stream.
|
||||||
|
@end deffn
|
||||||
|
|
||||||
@deffn {Macro} yyerrok
|
@deffn {Macro} yyerrok
|
||||||
Macro to cause parser to recover immediately to its normal mode
|
Macro to cause parser to recover immediately to its normal mode
|
||||||
after a syntax error. @xref{Error Recovery}.
|
after a syntax error. @xref{Error Recovery}.
|
||||||
@@ -14856,6 +14864,10 @@ should not be confused with the @emph{symbol kinds}, used internally by the
|
|||||||
parser.
|
parser.
|
||||||
@end deffn
|
@end deffn
|
||||||
|
|
||||||
|
@deffn {Value} YYUNDEF
|
||||||
|
The token kind denoting an unknown token.
|
||||||
|
@end deffn
|
||||||
|
|
||||||
|
|
||||||
@node Glossary
|
@node Glossary
|
||||||
@appendix Glossary
|
@appendix Glossary
|
||||||
@@ -14942,12 +14954,21 @@ A continuous flow of data between devices or programs.
|
|||||||
@item Kind
|
@item Kind
|
||||||
``Token'' and ``symbol'' are each overloaded to mean either a grammar symbol
|
``Token'' and ``symbol'' are each overloaded to mean either a grammar symbol
|
||||||
(kind) or all parse info (kind, value, location) associated with occurrences
|
(kind) or all parse info (kind, value, location) associated with occurrences
|
||||||
of that grammar symbol from the input. To disambiguate, we use ``token
|
of that grammar symbol from the input. To disambiguate,
|
||||||
kind'' and ``symbol kind'' to mean both grammar symbols and the types that
|
|
||||||
represent them in a base programming language (C, C++, etc.). However, we
|
@itemize
|
||||||
use ``token'' and ``symbol'' without the word ``kind'' to mean parsed
|
@item
|
||||||
|
we use ``token kind'' and ``symbol kind'' to mean both grammar symbols and
|
||||||
|
the values that represent them in a base programming language (C, C++,
|
||||||
|
etc.). The names of the types of these values are typically
|
||||||
|
@code{token_kind_t}, or @code{token_kind_type}, or @code{TokenKind},
|
||||||
|
depending on the programming language.
|
||||||
|
|
||||||
|
@item
|
||||||
|
we use ``token'' and ``symbol'' without the word ``kind'' to mean parsed
|
||||||
occurrences, and we append the word ``type'' to refer to the types that
|
occurrences, and we append the word ``type'' to refer to the types that
|
||||||
represent them in a base programming language.
|
represent them in a base programming language.
|
||||||
|
@end itemize
|
||||||
|
|
||||||
In summary: When you see ``kind'', interpret ``symbol'' or ``token'' to mean
|
In summary: When you see ``kind'', interpret ``symbol'' or ``token'' to mean
|
||||||
a @emph{grammar symbol}. When you don't see ``kind'' (including when you
|
a @emph{grammar symbol}. When you don't see ``kind'' (including when you
|
||||||
|
|||||||
+4
-4
@@ -131,7 +131,7 @@ dist_man_MANS = $(top_srcdir)/%D%/bison.1
|
|||||||
EXTRA_DIST += $(dist_man_MANS:.1=.x)
|
EXTRA_DIST += $(dist_man_MANS:.1=.x)
|
||||||
MAINTAINERCLEANFILES += $(dist_man_MANS)
|
MAINTAINERCLEANFILES += $(dist_man_MANS)
|
||||||
|
|
||||||
# Differences to ignore when comparing the man page (the date).
|
# Differences to ignore when comparing man pages (the date).
|
||||||
remove_time_stamp = \
|
remove_time_stamp = \
|
||||||
sed 's/^\(\.TH[^"]*"[^"]*"[^"]*\)"[^"]*"/\1/'
|
sed 's/^\(\.TH[^"]*"[^"]*"[^"]*\)"[^"]*"/\1/'
|
||||||
|
|
||||||
@@ -144,15 +144,15 @@ endif
|
|||||||
# have the real thing, so if there's a .git directory, fail hard.
|
# have the real thing, so if there's a .git directory, fail hard.
|
||||||
#
|
#
|
||||||
# We shouldn't need this, but on some OS the timestamps in the tarball
|
# We shouldn't need this, but on some OS the timestamps in the tarball
|
||||||
# leaves us no choice. See
|
# leave us no choice. See
|
||||||
# https://lists.gnu.org/r/bug-bison/2020-05/msg00055.html.
|
# https://lists.gnu.org/r/bug-bison/2020-05/msg00055.html.
|
||||||
$(top_srcdir)/%D%/bison.1: $(MAN_DEPS)
|
$(top_srcdir)/%D%/bison.1: $(MAN_DEPS)
|
||||||
$(AM_V_GEN)if $(HELP2MAN) --version >/dev/null 2>&1; then \
|
$(AM_V_GEN)if $(HELP2MAN) --version >/dev/null 2>&1; then \
|
||||||
$(HELP2MAN) \
|
$(HELP2MAN) \
|
||||||
--include=$(top_srcdir)/%D%/bison.x \
|
--include=$(top_srcdir)/%D%/bison.x \
|
||||||
--output=$@.tmp tests/bison && \
|
--output=$@.tmp tests/bison && \
|
||||||
$(remove_time_stamp) $@ >$@a.tmp 2>/dev/null && \
|
{ $(remove_time_stamp) $@ >$@a.tmp || true; } && \
|
||||||
$(remove_time_stamp) $@.tmp >$@b.tmp 2>/dev/null && \
|
$(remove_time_stamp) $@.tmp >$@b.tmp && \
|
||||||
if diff $@a.tmp $@b.tmp >/dev/null 2>&1; then \
|
if diff $@a.tmp $@b.tmp >/dev/null 2>&1; then \
|
||||||
touch $@; \
|
touch $@; \
|
||||||
else \
|
else \
|
||||||
|
|||||||
@@ -41,10 +41,11 @@ echo >perfect '> 0
|
|||||||
echo >ok '0'
|
echo >ok '0'
|
||||||
echo '0' | prog >effective
|
echo '0' | prog >effective
|
||||||
|
|
||||||
if diff perfect effective >/dev/null 2>&1; then
|
echo "checking for readline output"
|
||||||
|
if diff perfect effective; then
|
||||||
# Alles ist gut.
|
# Alles ist gut.
|
||||||
strip_prompt=false
|
strip_prompt=false
|
||||||
elif diff ok effective >/dev/null 2>&1; then
|
elif diff ok effective; then
|
||||||
strip_prompt=true
|
strip_prompt=true
|
||||||
else
|
else
|
||||||
skip "this is not the GNU Readline we expect"
|
skip "this is not the GNU Readline we expect"
|
||||||
@@ -257,14 +258,22 @@ err: Cleanup: popping nterm input (1.1-4: )' -p
|
|||||||
# From now on, the differences between versions of GNU Readline are
|
# From now on, the differences between versions of GNU Readline are
|
||||||
# too painful to try to cope with.
|
# too painful to try to cope with.
|
||||||
if $strip_prompt; then
|
if $strip_prompt; then
|
||||||
echo "SKIP: this is not the GNU Readline we expect"
|
echo "SKIP: this is not the GNU Readline we expect"
|
||||||
if $exit; then
|
exit $status
|
||||||
exit 0
|
|
||||||
else
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
# On Windows10/MSYS2 the ^G coming from <tab> completion is not
|
||||||
|
# emitted the same way
|
||||||
|
# (https://lists.gnu.org/r/bug-bison/2020-05/msg00076.html).
|
||||||
|
echo "checking for kernel name"
|
||||||
|
case `uname -s` in
|
||||||
|
(MSYS*)
|
||||||
|
echo "SKIP: this is Windows/MSYS"
|
||||||
|
exit $status
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
|
||||||
|
|
||||||
# Check completion after an operator.
|
# Check completion after an operator.
|
||||||
sed -e 's/\\t/ /g' >input <<EOF
|
sed -e 's/\\t/ /g' >input <<EOF
|
||||||
(1+\t\t
|
(1+\t\t
|
||||||
|
|||||||
+9
-2
@@ -34,6 +34,13 @@ cwd=$(pwd)
|
|||||||
# See bistromathic.test.
|
# See bistromathic.test.
|
||||||
strip_prompt=false
|
strip_prompt=false
|
||||||
|
|
||||||
|
# If diff supports --strip-trailing-cr, use it, to avoid EOL issues
|
||||||
|
# when testing Java programs on Windows.
|
||||||
|
echo "checking for diff --strip-trailing-cr"
|
||||||
|
if diff --strip-trailing-cr "$1" "$1"; then
|
||||||
|
diff_opts=--strip-trailing-cr
|
||||||
|
fi
|
||||||
|
|
||||||
# The exercised program.
|
# The exercised program.
|
||||||
abs_medir=$cwd/examples/$medir
|
abs_medir=$cwd/examples/$medir
|
||||||
if test -x "$abs_medir/$me"; then
|
if test -x "$abs_medir/$me"; then
|
||||||
@@ -129,7 +136,7 @@ run ()
|
|||||||
} >eff
|
} >eff
|
||||||
|
|
||||||
if test $sta_eff -eq $sta_exp; then
|
if test $sta_eff -eq $sta_exp; then
|
||||||
if diff eff exp >/dev/null 2>&1; then
|
if diff $diff_opts eff exp >/dev/null 2>&1; then
|
||||||
echo "$me: PASS: $number"
|
echo "$me: PASS: $number"
|
||||||
else
|
else
|
||||||
echo "$me: FAIL: $number"
|
echo "$me: FAIL: $number"
|
||||||
@@ -140,7 +147,7 @@ run ()
|
|||||||
echo "$me: effective output:"
|
echo "$me: effective output:"
|
||||||
sed -e 's/^/ /' eff
|
sed -e 's/^/ /' eff
|
||||||
echo "$me: diff:"
|
echo "$me: diff:"
|
||||||
diff -u exp eff | sed -e 's/^/ /'
|
diff $diff_opts -u exp eff | sed -e 's/^/ /'
|
||||||
status=1
|
status=1
|
||||||
fi
|
fi
|
||||||
else
|
else
|
||||||
|
|||||||
+4
-2
@@ -1,4 +1,4 @@
|
|||||||
/* A Bison parser, made by GNU Bison 3.5.93. */
|
/* A Bison parser, made by GNU Bison 3.6. */
|
||||||
|
|
||||||
/* Bison implementation for Yacc-like parsers in C
|
/* Bison implementation for Yacc-like parsers in C
|
||||||
|
|
||||||
@@ -49,7 +49,7 @@
|
|||||||
#define YYBISON 1
|
#define YYBISON 1
|
||||||
|
|
||||||
/* Bison version. */
|
/* Bison version. */
|
||||||
#define YYBISON_VERSION "3.5.93"
|
#define YYBISON_VERSION "3.6"
|
||||||
|
|
||||||
/* Skeleton name. */
|
/* Skeleton name. */
|
||||||
#define YYSKELETON_NAME "yacc.c"
|
#define YYSKELETON_NAME "yacc.c"
|
||||||
@@ -1632,6 +1632,8 @@ yypcontext_expected_tokens (const yypcontext_t *yyctx,
|
|||||||
yyarg[yycount++] = yysym;
|
yyarg[yycount++] = yysym;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
if (yyarg && yycount == 0 && 0 < yyargn)
|
||||||
|
yyarg[0] = YYSYMBOL_YYEMPTY;
|
||||||
return yycount;
|
return yycount;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
+1
-1
@@ -1,4 +1,4 @@
|
|||||||
/* A Bison parser, made by GNU Bison 3.5.93. */
|
/* A Bison parser, made by GNU Bison 3.6. */
|
||||||
|
|
||||||
/* Bison interface for Yacc-like parsers in C
|
/* Bison interface for Yacc-like parsers in C
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user