mirror of
https://git.savannah.gnu.org/git/bison.git
synced 2026-03-09 04:13:03 +00:00
c++: minor changes
* data/lalr1.cc: Fix oldish comment. * data/stack.hh: Prefer typename for type names. Use size() instead of duplicating it. * examples/variant-11.yy, examples/variant.yy (yylex): Use int, as this is the type of the semantic value.
This commit is contained in:
6
TODO
6
TODO
@@ -1,4 +1,10 @@
|
||||
* Short term
|
||||
** C++
|
||||
Move to int everywhere instead of unsigned? stack_size, etc. The parser
|
||||
itself uses int (for yylen for instance), yet stack is based on size_t.
|
||||
|
||||
Maybe locations should also move to ints.
|
||||
|
||||
** Graphviz display code thoughts
|
||||
The code for the --graph option is over two files: print_graph, and
|
||||
graphviz. This is because Bison used to also produce VCG graphs, but since
|
||||
|
||||
@@ -359,7 +359,7 @@ m4_define([b4_shared_declarations],
|
||||
/// \warning the contents of \a sym.value is stolen.
|
||||
void yypush_ (const char* m, state_type s, YY_MOVE_REF (symbol_type) sym);
|
||||
|
||||
/// Pop \a n symbols the three stacks.
|
||||
/// Pop \a n symbols from the stack.
|
||||
void yypop_ (unsigned n = 1);
|
||||
|
||||
/// Constants.
|
||||
|
||||
@@ -27,7 +27,7 @@ b4_defines_if([b4_required_version_if([302], [],
|
||||
# ---------------
|
||||
m4_define([b4_stack_define],
|
||||
[[ /// A stack with random access from its top.
|
||||
template <class T, class S = std::vector<T> >
|
||||
template <typename T, typename S = std::vector<T> >
|
||||
class stack
|
||||
{
|
||||
public:
|
||||
@@ -46,7 +46,7 @@ m4_define([b4_stack_define],
|
||||
T&
|
||||
operator[] (size_type i)
|
||||
{
|
||||
return seq_[seq_.size () - 1 - i];
|
||||
return seq_[size () - 1 - i];
|
||||
}
|
||||
|
||||
/// Random access.
|
||||
@@ -55,7 +55,7 @@ m4_define([b4_stack_define],
|
||||
const T&
|
||||
operator[] (size_type i) const
|
||||
{
|
||||
return seq_[seq_.size () - 1 - i];
|
||||
return seq_[size () - 1 - i];
|
||||
}
|
||||
|
||||
/// Steal the contents of \a t.
|
||||
@@ -107,7 +107,7 @@ m4_define([b4_stack_define],
|
||||
};
|
||||
|
||||
/// Present a slice of the top of a stack.
|
||||
template <class T, class S = stack<T> >
|
||||
template <typename T, typename S = stack<T> >
|
||||
class slice
|
||||
{
|
||||
public:
|
||||
|
||||
@@ -11723,7 +11723,7 @@ The rules are simple. The driver is used to report errors.
|
||||
if (! (INT_MIN <= n && n <= INT_MAX && errno != ERANGE))
|
||||
throw yy::parser::syntax_error (loc, "integer is out of range: "
|
||||
+ std::string(yytext));
|
||||
return yy::parser::make_NUMBER (n, loc);
|
||||
return yy::parser::make_NUMBER (int (n), loc);
|
||||
@}
|
||||
@end group
|
||||
@{id@} return yy::parser::make_IDENTIFIER (yytext, loc);
|
||||
|
||||
@@ -124,10 +124,10 @@ namespace yy
|
||||
parser::symbol_type
|
||||
yylex ()
|
||||
{
|
||||
static auto count = 0u;
|
||||
const auto stage = count;
|
||||
static int count = 0;
|
||||
const int stage = count;
|
||||
++count;
|
||||
auto loc = parser::location_type{nullptr, stage + 1, stage + 1};
|
||||
auto loc = parser::location_type{nullptr, unsigned (stage + 1), unsigned (stage + 1)};
|
||||
if (stage == 0)
|
||||
return parser::make_TEXT (make_string_uptr ("I have numbers for you."), std::move (loc));
|
||||
else if (stage < max)
|
||||
|
||||
@@ -114,9 +114,10 @@ namespace yy
|
||||
parser::symbol_type
|
||||
yylex ()
|
||||
{
|
||||
static int stage = -1;
|
||||
++stage;
|
||||
parser::location_type loc (nullptr, stage + 1, stage + 1);
|
||||
static int count = 0;
|
||||
const int stage = count;
|
||||
++count;
|
||||
parser::location_type loc (nullptr, unsigned (stage + 1), unsigned (stage + 1));
|
||||
switch (stage)
|
||||
{
|
||||
case 0:
|
||||
|
||||
Reference in New Issue
Block a user