anchor.diff:  
   bool_expr -> bool_expr bool_op comp_expr : 
     #binary_op{
  -    line=?line('$1'), 
  -    type=?op('$2'), 
  -    left='$1', 
  -    right='$3'
  +    line  = ?line('$1'), 
  +    type  = ?op('$2'), 
  +    left  = '$1', 
  +    right = '$3'
     }.
   bool_expr -> comp_expr : '$1'.
   
   comp_expr -> range_expr comp_op range_expr : 
     #binary_op{
  -    line=?line('$1'), 
  -    type=?op('$2'), 
  -    left='$1', 
  -    right='$3'
  +    line  = ?line('$1'), 
  +    type  = ?op('$2'), 
  +    left  = '$1', 
  +    right = '$3'
     }.
   comp_expr -> range_expr : '$1'.
   
   range_expr -> range_expr '..' add_expr :
     #range{
  -    line=?line('$1'), 
  -    from='$1', 
  -    to='$3'
  +    line = ?line('$1'), 
  +    from = '$1', 
  +    to   = '$3'
     }.
   range_expr -> add_expr : '$1'.
   
   add_expr -> add_expr add_op mult_expr :
     #binary_op{
  -    line=?line('$1'),
  -    type=?op('$2'),
  -    left='$1',
  -    right='$3'
  +    line  = ?line('$1'),
  +    type  = ?op('$2'),
  +    left  = '$1',
  +    right = '$3'
     }.
   add_expr -> mult_expr : '$1'.
   
   mult_expr -> mult_expr mult_op pow_expr :
     #binary_op{
  -    line=?line('$1'),
  -    type=?op('$2'),
  -    left='$1',
  -    right='$3'
  +    line  = ?line('$1'),
  +    type  = ?op('$2'),
  +    left  = '$1',
  +    right = '$3'
     }.
   mult_expr -> pow_expr : '$1'.
   
   pow_expr -> pow_expr pow_op unary_expr :
     #binary_op{
  -    line=?line('$1'), 
  -    type=?op('$2'), 
  -    left='$1', 
  -    right='$3'
  +    line  = ?line('$1'), 
  +    type  = ?op('$2'), 
  +    left  = '$1', 
  +    right = '$3'
     }.
   pow_expr -> unary_expr : '$1'.
   
   unary_expr -> unary_op unary_expr :
     #unary_op{
  -    line=?line('$1'),
  -    type=?op('$1'),
  -    expr='$2'
  +    line = ?line('$1'),
  +    type = ?op('$1'),
  +    expr = '$2'
     }.
   unary_expr -> call_expr : '$1'.
   
  
positive.code: %% Function definitions
  function -> def function_identifier eol expr_list 'end' : 
    #function{
      line=?line('$1'), 
      name=element(3, '$2'), 
      body='$4'
    }.
  function -> def function_identifier pargs eol expr_list 'end' :
    #function{
      line=?line('$1'), 
      name=element(3, '$2'), 
      args='$3'#pargs.args,
      block='$3'#pargs.block,
      body='$5'
    }.
  
  %% Local function calls
  
negative.code: %% Module declaration
  module_decl -> module module_name eol functions 'end' : 
    #module{
      line      = ?line('$1'), 
      name      = element(3, '$2'), 
      functions = '$4'
    }.
  
  %% Parenthesized arguments
  