30,31c30,33
< list_comprehension lc_expr lc_exprs
< binary_comprehension 
---
> list_comprehension   list_arrow
> tuple_comprehension  tuple_arrow
> binary_comprehension binary_arrow
> lc_expr lc_exprs
180c182,183
< expr_max -> list_comprehension : '$1'.
---
> expr_max -> list_comprehension   : '$1'.
> expr_max -> tuple_comprehension  : '$1'.
229d231
< 
231a234,237
> tuple_comprehension -> '{' expr '||' lc_exprs '}' :
> 	L = line('$1'),
> 	{call,L,{remote,L,{atom,L,erlang},{atom,L,list_to_tuple}},
> 	    [{lc,L,'$2','$4'}]}.
233a240
> 
237,239c244,259
< lc_expr -> expr : '$1'.
< lc_expr -> expr '<-' expr : {generate,line('$2'),'$1','$3'}.
< lc_expr -> binary '<=' expr_max : {b_generate,line('$2'),'$1','$3'}.
---
> lc_expr -> expr : 
> 	case '$1' of
> 	    {match,L,Pat,Exp} ->
> 		{generate,L,Pat,{cons,L,Exp,{nil,L}}}
> 	  ; Tst ->
> 		Tst
> 	end.
> lc_expr -> expr   list_arrow   expr     :
> 	{generate,line('$2'),'$1','$3'}.
> lc_expr -> expr   tuple_arrow  expr     :
> 	L = line('$2'),
> 	{generate,L,'$1',
> 	  {call,L,{remote,L,{atom,L,erlang},{atom,L,tuple_to_list}},
> 	    ['$3']}}.
> lc_expr -> binary binary_arrow expr_max :
> 	{b_generate,line('$2'),'$1','$3'}.
240a261,268
> list_arrow -> '<-'			: '$1'.
> list_arrow -> '[' '<-' ']'		: '$2'.
> 
> tuple_arrow -> '{' '<-' '}'		: '$2'.
> 
> binary_arrow -> '<='			: '$1'.
> binary_arrow -> '<<' '<-' '>>'		: '$2'.
> 
