help-bison
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

can i delete pos[i] in pack_vector() of tables.c


From: 山东
Subject: can i delete pos[i] in pack_vector() of tables.c
Date: Thu, 8 Jan 2009 15:24:47 +0800

static base_number
pack_vector (vector_number vector)
{
  vector_number i = order[vector];
  int j;
  int t = tally[i];
  int loc = 0;
  base_number *from = froms[i];
  base_number *to = tos[i];
  unsigned int *conflict_to = conflict_tos[i];

  aver (t != 0);

  for (j = lowzero - from[0]; ; j++)
    {
      int k;
      bool ok = true;

      aver (j < table_size);

      for (k = 0; ok && k < t; k++)
    {
      loc = j + state_number_as_int (from[k]);
      if (table_size <= loc)
        table_grow (loc);

      if (table[loc] != 0)
        ok = false;
    }

      for (k = 0; ok && k < vector; k++)
    if (pos[k] == j)
      ok = false;
I don't know this code's role!!!
delete it bison can complete it's task.

      if (ok)
    {
      for (k = 0; k < t; k++)
        {
          loc = j + from[k];
          table[loc] = to[k];
          if (nondeterministic_parser && conflict_to != NULL)
        conflict_table[loc] = conflict_to[k];
          check[loc] = from[k];
        }

      while (table[lowzero] != 0)
        lowzero++;

      if (loc > high)
        high = loc;

      aver (BASE_MINIMUM <= j && j <= BASE_MAXIMUM);
      return j;
    }
    }
}


reply via email to

[Prev in Thread] Current Thread [Next in Thread]