anchor.diff:  do_block -> do_eol 'end' : [[{do,nil}]].
   do_block -> do_eol stab end_eol : [[{ do, build_stab(lists:reverse('$2')) }]].
   do_block -> do_eol block_list 'end' : [[{ do, nil }|'$2']].
  -do_block -> do_eol stab eol block_list 'end' : [[{ do, build_stab(lists:reverse('$2')) }|'$4']].
  +do_block -> do_eol stab_eol block_list 'end' : [[{ do, build_stab(lists:reverse('$2')) }|'$3']].
   
   fn_eol -> 'fn' : '$1'.
   fn_eol -> 'fn' eol : '$1'.
  
positive.code: 
  stab -> stab_expr : ['$1'].
  stab -> stab eol stab_expr : ['$3'|'$1'].
  
  stab_expr -> expr : '$1'.
  stab_expr -> stab_op stab_maybe_expr : build_op('$1', [], '$2').
  
negative.code: stab_maybe_expr -> 'expr' : '$1'.
  stab_maybe_expr -> '$empty' : nil.
  
  block_item -> block_eol stab_eol : { ?exprs('$1'), build_stab(lists:reverse('$2')) }.
  block_item -> block_eol : { ?exprs('$1'), nil }.
  
  block_list -> block_item : ['$1'].
  