28 Jun
2013
28 Jun
'13
5:01 p.m.
2013/6/28 Pynix Wang
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