2013/6/28 Pynix Wang <pynix.w...@gmail.com> > I want use coffeescript function syntax to write python lambda expression > so I modified the Grammar file. > > ``` > atom: ('(' [yield_expr|testlist_comp|vararglist] ')' | > '[' [testlist_comp] ']' | > '{' [dictorsetmaker] '}' | > NAME | NUMBER | STRING+ | '...' | 'None' | 'True' | 'False') > trailer: '(' [arglist] ')' | '[' subscriptlist ']' | '.' NAME | '->' text > ``` > > but when I write > ``` > (x,y=1)->x+y > ``` > the parser doesn't go into vararglist. >
This grammar is not LL(1) anymore (it's probably LALR now) when seeing "x", it has the choice between testlist_comp and vararglist, and the first one is picked. Python's parser generator only supports LL(1) grammars. -- Amaury Forgeot d'Arc
_______________________________________________ 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