validate_listmaker(): Revise to match Skip's latest changes to the

Grammar file.  This makes the test suite pass once again.
This commit is contained in:
Fred Drake 2000-08-23 15:35:26 +00:00
parent 03c06ee7fc
commit 85bf3bb44a
1 changed files with 12 additions and 6 deletions

View File

@ -2193,6 +2193,9 @@ validate_atom(node *tree)
}
/* listmaker:
* test ( list_for | (',' test)* [','] )
*/
static int
validate_listmaker(node *tree)
{
@ -2207,19 +2210,22 @@ validate_listmaker(node *tree)
/*
* list_iter | (',' test)* [',']
*/
if (nch == 2 && TYPE(CHILD(tree, 1)) == list_iter)
ok = validate_list_iter(CHILD(tree, 1));
if (nch == 2 && TYPE(CHILD(tree, 1)) == list_for)
ok = validate_list_for(CHILD(tree, 1));
else {
/* (',' test)* [','] */
int i = 1;
while (ok && nch - i >= 2) {
ok = (validate_comma(CHILD(tree, i))
&& validate_test(CHILD(tree, i+1)));
if (ok)
i += 2;
i += 2;
}
if (ok && i == nch-1)
ok = validate_comma(CHILD(tree, i));
else if (i != nch) {
ok = 0;
err_string("illegal trailing nodes for listmaker");
}
if (ok && nch-i)
ok = validate_comma(CHILD(tree, nch-1));
}
return ok;
}