@@ -1558,6 +1558,25 @@ validate_import_as_name(node *tree)
15581558}
15591559
15601560
1561+ /* dotted_name: NAME ("." NAME)*
1562+ */
1563+ static int
1564+ validate_dotted_name (node * tree )
1565+ {
1566+ int nch = NCH (tree );
1567+ int res = (validate_ntype (tree , dotted_name )
1568+ && is_odd (nch )
1569+ && validate_name (CHILD (tree , 0 ), NULL ));
1570+ int i ;
1571+
1572+ for (i = 1 ; res && (i < nch ); i += 2 ) {
1573+ res = (validate_dot (CHILD (tree , i ))
1574+ && validate_name (CHILD (tree , i + 1 ), NULL ));
1575+ }
1576+ return res ;
1577+ }
1578+
1579+
15611580/* dotted_as_name: dotted_name [NAME NAME]
15621581 */
15631582static int
@@ -1568,9 +1587,9 @@ validate_dotted_as_name(node *tree)
15681587
15691588 if (res ) {
15701589 if (nch == 1 )
1571- res = validate_ntype (CHILD (tree , 0 ), dotted_name );
1590+ res = validate_dotted_name (CHILD (tree , 0 ));
15721591 else if (nch == 3 )
1573- res = (validate_ntype (CHILD (tree , 0 ), dotted_name )
1592+ res = (validate_dotted_name (CHILD (tree , 0 ))
15741593 && validate_name (CHILD (tree , 1 ), "as" )
15751594 && validate_name (CHILD (tree , 2 ), NULL ));
15761595 else {
@@ -1601,12 +1620,12 @@ validate_import_stmt(node *tree)
16011620 res = validate_dotted_as_name (CHILD (tree , 1 ));
16021621 for (j = 2 ; res && (j < nch ); j += 2 )
16031622 res = (validate_comma (CHILD (tree , j ))
1604- && validate_ntype (CHILD (tree , j + 1 ), dotted_name ));
1623+ && validate_dotted_as_name (CHILD (tree , j + 1 )));
16051624 }
16061625 else if (res && (res = validate_name (CHILD (tree , 0 ), "from" ))) {
16071626 res = ((nch >= 4 ) && is_even (nch )
1608- && validate_name (CHILD (tree , 2 ), "import" )
1609- && validate_dotted_as_name (CHILD (tree , 1 ) ));
1627+ && validate_dotted_name (CHILD (tree , 1 ) )
1628+ && validate_name (CHILD (tree , 2 ), "import" ));
16101629 if (nch == 4 ) {
16111630 if (TYPE (CHILD (tree , 3 )) == import_as_name )
16121631 res = validate_import_as_name (CHILD (tree , 3 ));
0 commit comments