anchor.diff:  inline_block -> '{' inline_statements '}' : {lambda, line('$1'), [], $2}.
   inline_block -> '{' '|' exprs '|' inline_statements '}' : {lambda, line('$1'), '$3', '$5'}.
   
  -multiline_block -> do statements 'end' : {lambda, line('$1'), [], '$2'}.
  -multiline_block -> do '|' exprs '|' statements 'end' : {lambda, line('$1'), '$3', '$5'}.
  +multiline_block -> do expr_list 'end' : {lambda, line('$1'), [], '$2'}.
  +multiline_block -> do '|' exprs '|' expr_list 'end' : {lambda, line('$1'), '$3', '$5'}.
   
   %% Erlang function calls
   erl_funcall -> identifier '::' identifier '(' ')' : {erl_funcall, line('$2'), '$1', '$3', []}.
  
positive.code:   end;
  extract_fragment(Continuation, [Char|String], Line) ->
    {more, Continuation2} = reia_scan:tokens(Continuation, [Char], Line),
    extract_fragment(Continuation2, String, Line).
negative.code: receive_expr -> 'receive' separator clauses after_clause 'end': {'receive', line('$1'), '$3', '$4'}.
  receive_expr -> 'receive' separator after_clause 'end' : {'receive', line('$1'), [], '$3'}.
    
  after_clause -> 'after' expr separator expr_list : {'after', line('$1'), '$2', '$4'}.
  
  %% If expressions
  if_expr -> if_op expr separator expr_list 'end' : if_forms({'$1', '$2', '$4'}).
  if_expr -> if_op expr separator expr_list else_clause 'end' : if_forms({'$1', '$2', '$4', '$5'}).
  
  if_op -> 'if'   : '$1'.
  if_op -> unless : '$1'.
  
  else_clause -> else expr_list : {else_clause, line('$1'), '$2'}.
  
  %% For loops
  for_expr -> for match_expr in expr separator expr_list end : {for, line('$1'), '$2', '$4', '$6'}.
  
  %% Try expressions
  try_expr -> 'try' expr_list catch_clauses 'end' : {'try', line('$1'), '$2', '$3'}.
  
  catch_clauses -> catch_clause catch_clauses : ['$1'|'$2'].
  catch_clauses -> catch_clause : ['$1'].
  
  catch_clause -> 'catch' expr separator expr_list : {'catch', line('$1'), '$2', '$4'}.
  
  %% Boolean operators
  bool_op -> 'and' : '$1'.
  