mirror of
https://git.savannah.gnu.org/git/bison.git
synced 2026-03-22 02:33:03 +00:00
c++: support wide strings for file names
Reported by Mark Boyall. http://lists.gnu.org/archive/html/help-bison/2011-08/msg00002.html * data/location.cc (operator<<): Be templated on the type of output stream. * tests/headers.at (Several parsers): Adjust.
This commit is contained in:
1
THANKS
1
THANKS
@@ -68,6 +68,7 @@ Lie Yan lie.yan@kaust.edu.sa
|
|||||||
Magnus Fromreide magfr@lysator.liu.se
|
Magnus Fromreide magfr@lysator.liu.se
|
||||||
Marc Autret autret_m@epita.fr
|
Marc Autret autret_m@epita.fr
|
||||||
Marc Mendiola mmendiol@usc.edu
|
Marc Mendiola mmendiol@usc.edu
|
||||||
|
Mark Boyall wolfeinstein@gmail.com
|
||||||
Martin Jacobs martin.jacobs@arcor.de
|
Martin Jacobs martin.jacobs@arcor.de
|
||||||
Martin Mokrejs mmokrejs@natur.cuni.cz
|
Martin Mokrejs mmokrejs@natur.cuni.cz
|
||||||
Martin Nylin martin.nylin@linuxmail.org
|
Martin Nylin martin.nylin@linuxmail.org
|
||||||
|
|||||||
@@ -136,8 +136,9 @@ b4_copyright([Positions for Bison parsers in C++],
|
|||||||
** \param ostr the destination output stream
|
** \param ostr the destination output stream
|
||||||
** \param pos a reference to the position to redirect
|
** \param pos a reference to the position to redirect
|
||||||
*/
|
*/
|
||||||
inline std::ostream&
|
template <typename YYChar>
|
||||||
operator<< (std::ostream& ostr, const position& pos)
|
inline std::basic_ostream<YYChar>&
|
||||||
|
operator<< (std::basic_ostream<YYChar>& ostr, const position& pos)
|
||||||
{
|
{
|
||||||
if (pos.filename)
|
if (pos.filename)
|
||||||
ostr << *pos.filename << ':';
|
ostr << *pos.filename << ':';
|
||||||
@@ -275,7 +276,9 @@ b4_copyright([Locations for Bison parsers in C++],
|
|||||||
**
|
**
|
||||||
** Avoid duplicate information.
|
** Avoid duplicate information.
|
||||||
*/
|
*/
|
||||||
inline std::ostream& operator<< (std::ostream& ostr, const location& loc)
|
template <typename YYChar>
|
||||||
|
inline std::basic_ostream<YYChar>&
|
||||||
|
operator<< (std::basic_ostream<YYChar>& ostr, const location& loc)
|
||||||
{
|
{
|
||||||
position last = loc.end - 1;
|
position last = loc.end - 1;
|
||||||
ostr << loc.begin;
|
ostr << loc.begin;
|
||||||
|
|||||||
@@ -229,14 +229,16 @@ AT_TEST([x8], [%define api.pure %define api.push-pull both])
|
|||||||
# C++ output relies on namespaces and still uses yy a lot.
|
# C++ output relies on namespaces and still uses yy a lot.
|
||||||
#
|
#
|
||||||
# Check there is no 'YY' left.
|
# Check there is no 'YY' left.
|
||||||
# Ignore comments, YYPARSE_PARAM (obsolete), YYPUSH_MORE(_DEFINED)?
|
# Ignore comments, YYChar (template parameter), YYPARSE_PARAM
|
||||||
# (constant definition), YY_\w+_INCLUDED (header guards).
|
# (obsolete), YYPUSH_MORE(_DEFINED)? (constant definition),
|
||||||
|
# YY_\w+_INCLUDED (header guards).
|
||||||
#
|
#
|
||||||
# YYDEBUG (not renamed) can be read, but not changed.
|
# YYDEBUG (not renamed) can be read, but not changed.
|
||||||
AT_CHECK([[$PERL -n -0777 -e '
|
AT_CHECK([[$PERL -n -0777 -e '
|
||||||
s{/\*.*?\*/}{}gs;
|
s{/\*.*?\*/}{}gs;
|
||||||
s{//.*}{}g;
|
s{//.*}{}g;
|
||||||
s{\b(YYPARSE_PARAM
|
s{\b(YYChar
|
||||||
|
|YYPARSE_PARAM
|
||||||
|YYPUSH_MORE(_DEFINED)?
|
|YYPUSH_MORE(_DEFINED)?
|
||||||
|YY_\w+_INCLUDED
|
|YY_\w+_INCLUDED
|
||||||
|YY_NULL
|
|YY_NULL
|
||||||
@@ -244,13 +246,13 @@ AT_CHECK([[$PERL -n -0777 -e '
|
|||||||
)\b}{}gx;
|
)\b}{}gx;
|
||||||
while (/^(.*YY.*)$/gm)
|
while (/^(.*YY.*)$/gm)
|
||||||
{
|
{
|
||||||
print "$ARGV: $1\n";
|
print "$ARGV: invalid exported YY: $1\n";
|
||||||
}
|
}
|
||||||
if ($ARGV =~ /\.h$/)
|
if ($ARGV =~ /\.h$/)
|
||||||
{
|
{
|
||||||
while (/^(.*yy.*)$/gm)
|
while (/^(.*yy.*)$/gm)
|
||||||
{
|
{
|
||||||
print "$ARGV: $1\n";
|
print "$ARGV: invalid exported yy: $1\n";
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
' -- *.hh *.h]])
|
' -- *.hh *.h]])
|
||||||
|
|||||||
Reference in New Issue
Block a user