- 论坛徽章:
- 0
|
参考
http://www.opensubscriber.com/me ... u.org/11185501.html
http://www.opensubscriber.com/me ... u.org/13617870.html
我确认下面这两行删除会有问题, 但是不知道原因, 哪位看过这段代码么?
看byacc, 就差这几行
static base_number
pack_vector (vector_number vector)
{
vector_number i = order[vector];
int j;
int t = tally;
int loc = 0;
base_number *from = froms;
base_number *to = tos;
unsigned int *conflict_to = conflict_tos;
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;
}
}
} |
|