>> I was wondering how does Python >> disambiguate that... anyone has any pointers on it? > > That is easy to answer: > > py> parser.expr("f(*x)").totuple() > (258, (326, (303, (304, (305, (306, (307, (309, (310, (311, (312, (313, > (314, (315, (316, (317, (1, 'f')), (321, (7, '('), (329, (16, '*'), > (303, (304, (305, (306, (307, (309, (310, (311, (312, (313, (314, (315, > (316, (317, (1, 'x')))))))))))))))), (8, ')')))))))))))))))), (4, ''), > (0, '')) > py> symbol.arglist > 329 > > So much for the "how", I don't know why it makes this choice; notice > that this is the better choice, though: > > py> f((*x)) > File "<stdin>", line 1 > SyntaxError: can use starred expression only as assignment target
Yeap, very strange that it works... I can't get it to work in JavaCC. I'm considering setting arglist as ((argument() [','])+ ['**' test]) | '**' test Because it is able to handle the constructs removing the ambiguity, and make things right semantically later on, but I don't like the idea of being so different from the official grammar (although I'm running out of choices). Thanks, Fabio _______________________________________________ Python-Dev mailing list Python-Dev@python.org http://mail.python.org/mailman/listinfo/python-dev Unsubscribe: http://mail.python.org/mailman/options/python-dev/archive%40mail-archive.com