glr2.cc: more self checks

* data/skeletons/glr2.cc: here.
This commit is contained in:
Akim Demaille
2020-12-18 07:03:55 +01:00
parent 66706a7c19
commit 640b1313d7

View File

@@ -802,6 +802,7 @@ public:
void copyFrom (const glr_state& other) void copyFrom (const glr_state& other)
{]b4_parse_assert_if([[ {]b4_parse_assert_if([[
check_ ();
other.check_ ();]])[ other.check_ ();]])[
*this = other; *this = other;
setPred(other.pred()); setPred(other.pred());
@@ -901,7 +902,7 @@ public:
YYLTYPE yyloc;]])[ YYLTYPE yyloc;]])[
]b4_parse_assert_if([[ ]b4_parse_assert_if([[
private: public:
// Check invariants. // Check invariants.
void check_ () const void check_ () const
{ {
@@ -1184,7 +1185,7 @@ class semantic_option {
}; };
/** Type of the items in the GLR stack. /** Type of the items in the GLR stack.
* It can be either a glr_state or a semantic_union. The is_state_ field * It can be either a glr_state or a semantic_option. The is_state_ field
* indicates which item of the union is valid. */ * indicates which item of the union is valid. */
class glr_stack_item class glr_stack_item
{ {
@@ -1227,7 +1228,8 @@ public:
void setState (const glr_state &state) void setState (const glr_state &state)
{]b4_parse_assert_if([[ {]b4_parse_assert_if([[
check_ ();]])[ check_ ();
state.check_ ();]])[
// FIXME: What about the previous content? Shouldn't it be freed? // FIXME: What about the previous content? Shouldn't it be freed?
// It might be useful to have an explicit "void" state when this item // It might be useful to have an explicit "void" state when this item
// is in unused state (in the list of free items), when parse.assert // is in unused state (in the list of free items), when parse.assert
@@ -1272,6 +1274,7 @@ public:
check_ ();]])[ check_ ();]])[
return is_state_; return is_state_;
} }
private: private:
/// The possible contents of raw_. Since they have constructors, they cannot /// The possible contents of raw_. Since they have constructors, they cannot
/// be directly included in the union. /// be directly included in the union.
@@ -1289,8 +1292,8 @@ public:
}; };
/** Type tag for the union. */ /** Type tag for the union. */
bool is_state_; bool is_state_;
]b4_parse_assert_if([[ ]b4_parse_assert_if([[
public:
// Check invariants. // Check invariants.
void check_ () const void check_ () const
{ {
@@ -1320,7 +1323,9 @@ const glr_state* glr_state::pred () const
void glr_state::setPred (const glr_state* state) void glr_state::setPred (const glr_state* state)
{]b4_parse_assert_if([[ {]b4_parse_assert_if([[
check_ ();]])[ check_ ();
if (state)
state->check_ ();]])[
yypred = state ? as_pointer_ (this) - as_pointer_ (state) : 0; yypred = state ? as_pointer_ (this) - as_pointer_ (state) : 0;
} }