glr: formatting changes

* data/skeletons/glr.c: Formatting changes.
* data/skeletons/glr2.cc: Ditto.
(glr_state_set::INITIAL_NUMBER_STATES): Remove, unused (and useless:
let std::vector deal with that).
This commit is contained in:
Akim Demaille
2020-12-20 07:28:22 +01:00
parent 03d33fd3a4
commit 3f473dd2d7
2 changed files with 45 additions and 36 deletions

View File

@@ -498,7 +498,8 @@ typedef struct yySemanticOption yySemanticOption;
typedef union yyGLRStackItem yyGLRStackItem; typedef union yyGLRStackItem yyGLRStackItem;
typedef struct yyGLRStack yyGLRStack; typedef struct yyGLRStack yyGLRStack;
struct yyGLRState { struct yyGLRState
{
/** Type tag: always true. */ /** Type tag: always true. */
yybool yyisState; yybool yyisState;
/** Type tag for yysemantics. If true, yysval applies, otherwise /** Type tag for yysemantics. If true, yysval applies, otherwise
@@ -522,7 +523,8 @@ struct yyGLRState {
YYLTYPE yyloc;]])[ YYLTYPE yyloc;]])[
}; };
struct yyGLRStateSet { struct yyGLRStateSet
{
yyGLRState** yystates; yyGLRState** yystates;
/** During nondeterministic operation, yylookaheadNeeds tracks which /** During nondeterministic operation, yylookaheadNeeds tracks which
* stacks have actually needed the current lookahead. During deterministic * stacks have actually needed the current lookahead. During deterministic
@@ -533,7 +535,8 @@ struct yyGLRStateSet {
YYPTRDIFF_T yycapacity; YYPTRDIFF_T yycapacity;
}; };
struct yySemanticOption { struct yySemanticOption
{
/** Type tag: always false. */ /** Type tag: always false. */
yybool yyisState; yybool yyisState;
/** Rule number for this reduction */ /** Rule number for this reduction */

View File

@@ -918,51 +918,58 @@ public:
/** A stack of GLRState representing the different heads during /** A stack of GLRState representing the different heads during
* nondeterministic evaluation. */ * nondeterministic evaluation. */
class glr_state_set { class glr_state_set
{
public: public:
/** Initialize YYSET to a singleton set containing an empty stack. */ /** Initialize YYSET to a singleton set containing an empty stack. */
glr_state_set() glr_state_set ()
: yylastDeleted(YY_NULLPTR) : yylastDeleted (YY_NULLPTR)
{ {
yystates.push_back(YY_NULLPTR); yystates.push_back (YY_NULLPTR);
yylookaheadNeeds.push_back(false); yylookaheadNeeds.push_back (false);
} }
// Behave like a vector of states. // Behave like a vector of states.
glr_state*& operator[](state_set_index index) { glr_state*& operator[] (state_set_index index)
{
return yystates[index.uget()]; return yystates[index.uget()];
} }
glr_state* operator[](state_set_index index) const { glr_state* operator[] (state_set_index index) const
{
return yystates[index.uget()]; return yystates[index.uget()];
} }
size_t size() const { size_t size () const
return yystates.size(); {
return yystates.size ();
} }
std::vector<glr_state*>::iterator begin() { std::vector<glr_state*>::iterator begin ()
return yystates.begin(); {
return yystates.begin ();
} }
std::vector<glr_state*>::iterator end() { std::vector<glr_state*>::iterator end ()
return yystates.end(); {
return yystates.end ();
} }
bool lookaheadNeeds (state_set_index index) const
bool lookaheadNeeds(state_set_index index) const { {
return yylookaheadNeeds[index.uget()]; return yylookaheadNeeds[index.uget ()];
} }
bool setLookaheadNeeds(state_set_index index, bool value) { bool setLookaheadNeeds (state_set_index index, bool value)
return yylookaheadNeeds[index.uget()] = value; {
return yylookaheadNeeds[index.uget ()] = value;
} }
/** Invalidate stack #YYK. */ /** Invalidate stack #YYK. */
inline void inline void
yymarkStackDeleted (state_set_index yyk) yymarkStackDeleted (state_set_index yyk)
{ {
size_t k = yyk.uget(); size_t k = yyk.uget ();
if (yystates[k] != YY_NULLPTR) if (yystates[k] != YY_NULLPTR)
yylastDeleted = yystates[k]; yylastDeleted = yystates[k];
yystates[k] = YY_NULLPTR; yystates[k] = YY_NULLPTR;
@@ -974,11 +981,11 @@ class glr_state_set {
void void
yyundeleteLastStack () yyundeleteLastStack ()
{ {
if (yylastDeleted == YY_NULLPTR || !yystates.empty()) if (yylastDeleted == YY_NULLPTR || !yystates.empty ())
return; return;
yystates.push_back(yylastDeleted); yystates.push_back (yylastDeleted);
YY_DEBUG_STREAM << "Restoring last deleted stack as stack #0.\n"; YY_DEBUG_STREAM << "Restoring last deleted stack as stack #0.\n";
clearLastDeleted(); clearLastDeleted ();
} }
/** Remove the dead stacks (yystates[i] == YY_NULLPTR) and shift the later /** Remove the dead stacks (yystates[i] == YY_NULLPTR) and shift the later
@@ -986,7 +993,7 @@ class glr_state_set {
inline void inline void
yyremoveDeletes () yyremoveDeletes ()
{ {
size_t newsize = yystates.size(); size_t newsize = yystates.size ();
/* j is the number of live stacks we have seen. */ /* j is the number of live stacks we have seen. */
for (size_t i = 0, j = 0; j < newsize; ++i) for (size_t i = 0, j = 0; j < newsize; ++i)
{ {
@@ -1014,22 +1021,23 @@ class glr_state_set {
j += 1; j += 1;
} }
} }
yystates.erase(yystates.begin() + static_cast<std::ptrdiff_t>(newsize), yystates.end()); yystates.erase (yystates.begin () + static_cast<std::ptrdiff_t> (newsize), yystates.end ());
yylookaheadNeeds.erase(yylookaheadNeeds.begin() + static_cast<std::ptrdiff_t>(newsize), yylookaheadNeeds.erase (yylookaheadNeeds.begin () + static_cast<std::ptrdiff_t> (newsize),
yylookaheadNeeds.end()); yylookaheadNeeds.end ());
} }
state_set_index state_set_index
yysplitStack (state_set_index yyk) yysplitStack (state_set_index yyk)
{ {
const size_t k = yyk.uget(); const size_t k = yyk.uget ();
yystates.push_back(yystates[k]); yystates.push_back (yystates[k]);
yylookaheadNeeds.push_back(yylookaheadNeeds[k]); yylookaheadNeeds.push_back (yylookaheadNeeds[k]);
return create_state_set_index(static_cast<std::ptrdiff_t>(yystates.size() - 1)); return create_state_set_index (static_cast<std::ptrdiff_t> (yystates.size () - 1));
} }
void clearLastDeleted() { void clearLastDeleted ()
{
yylastDeleted = YY_NULLPTR; yylastDeleted = YY_NULLPTR;
} }
@@ -1044,8 +1052,6 @@ class glr_state_set {
/** The last stack we invalidated. */ /** The last stack we invalidated. */
glr_state* yylastDeleted; glr_state* yylastDeleted;
static const size_t INITIAL_NUMBER_STATES = 16;
}; };
class semantic_option { class semantic_option {