From 85bf3bb44afe996cd806e3be8f82b40ddbe11bc3 Mon Sep 17 00:00:00 2001 From: Fred Drake Date: Wed, 23 Aug 2000 15:35:26 +0000 Subject: validate_listmaker(): Revise to match Skip's latest changes to the Grammar file. This makes the test suite pass once again. --- Modules/parsermodule.c | 18 ++++++++++++------ 1 file changed, 12 insertions(+), 6 deletions(-) diff --git a/Modules/parsermodule.c b/Modules/parsermodule.c index 65ca084..ef8ec9b 100644 --- a/Modules/parsermodule.c +++ b/Modules/parsermodule.c @@ -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; } -- cgit v0.12