diff --git a/data/c++.m4 b/data/c++.m4 index e91b90d7..87bc5e0d 100644 --- a/data/c++.m4 +++ b/data/c++.m4 @@ -231,6 +231,8 @@ m4_define([b4_public_types_declare], /// The token. token_type token () const; + enum { empty = 0 }; + /// The symbol type. /// /// -1 when this symbol is empty. @@ -328,7 +330,7 @@ m4_define([b4_public_types_define], // by_type. inline ]b4_parser_class_name[::by_type::by_type () - : type (-1) + : type (empty) {} inline @@ -346,7 +348,7 @@ m4_define([b4_public_types_define], ]b4_parser_class_name[::by_type::move (by_type& that) { type = that.type; - that.type = -1; + that.type = empty; } inline diff --git a/data/lalr1.cc b/data/lalr1.cc index 473dd29b..eb488355 100644 --- a/data/lalr1.cc +++ b/data/lalr1.cc @@ -284,9 +284,11 @@ b4_location_define])])[ void move (by_state& that); /// The (internal) type number (corresponding to \a state). - /// -1 when empty. + /// "empty" when empty. symbol_number_type type_get () const; + enum { empty = 0 }; + /// The state. state_type state; }; @@ -523,7 +525,7 @@ m4_if(b4_prefix, [yy], [], // by_state. inline ]b4_parser_class_name[::by_state::by_state () - : state (-1) + : state (empty) {} inline @@ -536,7 +538,7 @@ m4_if(b4_prefix, [yy], [], ]b4_parser_class_name[::by_state::move (by_state& that) { state = that.state; - that.state = -1; + that.state = empty; } inline @@ -548,7 +550,7 @@ m4_if(b4_prefix, [yy], [], ]b4_parser_class_name[::symbol_number_type ]b4_parser_class_name[::by_state::type_get () const { - return state == -1 ? -1 : yystos_[state]; + return state == empty ? 0 : yystos_[state]; } inline @@ -564,7 +566,7 @@ m4_if(b4_prefix, [yy], [], [value], [move], [that.value])], [[value = that.value;]])[ // that is emptied. - that.type = -1; + that.type = empty; } inline