code:
use vars qw(%result_texis %result_texts %result_trees %result_errors
   %result_indices %result_sectioning %result_nodes %result_menus
   %result_floats %result_converted %result_converted_errors
   %result_elements %result_directions_text);

use utf8;

$result_trees{'macro_name_with_digit'} = {
  'contents' => [
    {
      'args' => [
        {
          'parent' => {},
          'text' => 'macro1',
          'type' => 'macro_name'
        }
      ],
      'cmdname' => 'macro',
      'contents' => [
        {
          'parent' => {},
          'text' => 'macro1',
          'type' => 'raw'
        },
        {
          'parent' => {},
          'text' => '
',
          'type' => 'last_raw_newline'
        }
      ],
      'extra' => {
        'arg_line' => ' macro1
'
      },
      'line_nr' => {
        'file_name' => '',
        'line_nr' => 1,
        'macro' => ''
      },
      'parent' => {}
    },
    {
      'extra' => {
        'command' => {}
      },
      'parent' => {},
      'text' => '
',
      'type' => 'empty_line_after_command'
    },
    {
      'parent' => {},
      'text' => '
',
      'type' => 'empty_line'
    },
    {
      'args' => [
        {
          'parent' => {},
          'text' => 'macro11',
          'type' => 'macro_name'
        },
        {
          'parent' => {},
          'text' => 'arg',
          'type' => 'macro_arg'
        }
      ],
      'cmdname' => 'macro',
      'contents' => [
        {
          'parent' => {},
          'text' => 'expand \\arg\\',
          'type' => 'raw'
        },
        {
          'parent' => {},
          'text' => '
',
          'type' => 'last_raw_newline'
        }
      ],
      'extra' => {
        'arg_line' => ' macro11 {arg}
'
      },
      'line_nr' => {
        'file_name' => '',
        'line_nr' => 5,
        'macro' => ''
      },
      'parent' => {}
    },
    {
      'extra' => {
        'command' => {}
      },
      'parent' => {},
      'text' => '
',
      'type' => 'empty_line_after_command'
    },
    {
      'parent' => {},
      'text' => '
',
      'type' => 'empty_line'
    },
    {
      'contents' => [
        {
          'parent' => {},
          'text' => 'expand some thing macro1
'
        }
      ],
      'parent' => {},
      'type' => 'paragraph'
    }
  ],
  'type' => 'text_root'
};
$result_trees{'macro_name_with_digit'}{'contents'}[0]{'args'}[0]{'parent'} = $result_trees{'macro_name_with_digit'}{'contents'}[0];
$result_trees{'macro_name_with_digit'}{'contents'}[0]{'contents'}[0]{'parent'} = $result_trees{'macro_name_with_digit'}{'contents'}[0];
$result_trees{'macro_name_with_digit'}{'contents'}[0]{'contents'}[1]{'parent'} = $result_trees{'macro_name_with_digit'}{'contents'}[0];
$result_trees{'macro_name_with_digit'}{'contents'}[0]{'parent'} = $result_trees{'macro_name_with_digit'};
$result_trees{'macro_name_with_digit'}{'contents'}[1]{'extra'}{'command'} = $result_trees{'macro_name_with_digit'}{'contents'}[0];
$result_trees{'macro_name_with_digit'}{'contents'}[1]{'parent'} = $result_trees{'macro_name_with_digit'};
$result_trees{'macro_name_with_digit'}{'contents'}[2]{'parent'} = $result_trees{'macro_name_with_digit'};
$result_trees{'macro_name_with_digit'}{'contents'}[3]{'args'}[0]{'parent'} = $result_trees{'macro_name_with_digit'}{'contents'}[3];
$result_trees{'macro_name_with_digit'}{'contents'}[3]{'args'}[1]{'parent'} = $result_trees{'macro_name_with_digit'}{'contents'}[3];
$result_trees{'macro_name_with_digit'}{'contents'}[3]{'contents'}[0]{'parent'} = $result_trees{'macro_name_with_digit'}{'contents'}[3];
$result_trees{'macro_name_with_digit'}{'contents'}[3]{'contents'}[1]{'parent'} = $result_trees{'macro_name_with_digit'}{'contents'}[3];
$result_trees{'macro_name_with_digit'}{'contents'}[3]{'parent'} = $result_trees{'macro_name_with_digit'};
$result_trees{'macro_name_with_digit'}{'contents'}[4]{'extra'}{'command'} = $result_trees{'macro_name_with_digit'}{'contents'}[3];
$result_trees{'macro_name_with_digit'}{'contents'}[4]{'parent'} = $result_trees{'macro_name_with_digit'};
$result_trees{'macro_name_with_digit'}{'contents'}[5]{'parent'} = $result_trees{'macro_name_with_digit'};
$result_trees{'macro_name_with_digit'}{'contents'}[6]{'contents'}[0]{'parent'} = $result_trees{'macro_name_with_digit'}{'contents'}[6];
$result_trees{'macro_name_with_digit'}{'contents'}[6]{'parent'} = $result_trees{'macro_name_with_digit'};

$result_texis{'macro_name_with_digit'} = '@macro macro1
macro1
@end macro

@macro macro11 {arg}
expand \\arg\\
@end macro

expand some thing macro1
';

$result_texts{'macro_name_with_digit'} = '

expand some thing macro1
';

$result_errors{'macro_name_with_digit'} = [];

1;


code:
use vars qw(%result_texis %result_texts %result_trees %result_errors
   %result_indices %result_sectioning %result_nodes %result_menus
   %result_floats %result_converted %result_converted_errors
   %result_elements %result_directions_text);

use utf8;

$result_trees{'macro_name_with_hyphen'} = {
  'contents' => [
    {
      'args' => [
        {
          'parent' => {},
          'text' => 'macro-one',
          'type' => 'macro_name'
        },
        {
          'parent' => {},
          'text' => 'arg-one',
          'type' => 'macro_arg'
        },
        {
          'parent' => {},
          'text' => 'arg2',
          'type' => 'macro_arg'
        }
      ],
      'cmdname' => 'macro',
      'contents' => [
        {
          'parent' => {},
          'text' => 'This \\arg-one\\ and that \\arg2\\.',
          'type' => 'raw'
        },
        {
          'parent' => {},
          'text' => '
',
          'type' => 'last_raw_newline'
        }
      ],
      'extra' => {
        'arg_line' => ' macro-one {arg-one, arg2}
'
      },
      'line_nr' => {
        'file_name' => '',
        'line_nr' => 1,
        'macro' => ''
      },
      'parent' => {}
    },
    {
      'extra' => {
        'command' => {}
      },
      'parent' => {},
      'text' => '
',
      'type' => 'empty_line_after_command'
    },
    {
      'parent' => {},
      'text' => '
',
      'type' => 'empty_line'
    },
    {
      'contents' => [
        {
          'parent' => {},
          'text' => 'This blah and that '
        },
        {
          'args' => [
            {
              'contents' => [
                {
                  'parent' => {},
                  'text' => 'bli-bli'
                }
              ],
              'parent' => {},
              'type' => 'brace_command_arg'
            }
          ],
          'cmdname' => 'code',
          'contents' => [],
          'line_nr' => {
            'file_name' => '',
            'line_nr' => 5,
            'macro' => 'macro-one'
          },
          'parent' => {}
        },
        {
          'parent' => {},
          'text' => '.
'
        }
      ],
      'parent' => {},
      'type' => 'paragraph'
    }
  ],
  'type' => 'text_root'
};
$result_trees{'macro_name_with_hyphen'}{'contents'}[0]{'args'}[0]{'parent'} = $result_trees{'macro_name_with_hyphen'}{'contents'}[0];
$result_trees{'macro_name_with_hyphen'}{'contents'}[0]{'args'}[1]{'parent'} = $result_trees{'macro_name_with_hyphen'}{'contents'}[0];
$result_trees{'macro_name_with_hyphen'}{'contents'}[0]{'args'}[2]{'parent'} = $result_trees{'macro_name_with_hyphen'}{'contents'}[0];
$result_trees{'macro_name_with_hyphen'}{'contents'}[0]{'contents'}[0]{'parent'} = $result_trees{'macro_name_with_hyphen'}{'contents'}[0];
$result_trees{'macro_name_with_hyphen'}{'contents'}[0]{'contents'}[1]{'parent'} = $result_trees{'macro_name_with_hyphen'}{'contents'}[0];
$result_trees{'macro_name_with_hyphen'}{'contents'}[0]{'parent'} = $result_trees{'macro_name_with_hyphen'};
$result_trees{'macro_name_with_hyphen'}{'contents'}[1]{'extra'}{'command'} = $result_trees{'macro_name_with_hyphen'}{'contents'}[0];
$result_trees{'macro_name_with_hyphen'}{'contents'}[1]{'parent'} = $result_trees{'macro_name_with_hyphen'};
$result_trees{'macro_name_with_hyphen'}{'contents'}[2]{'parent'} = $result_trees{'macro_name_with_hyphen'};
$result_trees{'macro_name_with_hyphen'}{'contents'}[3]{'contents'}[0]{'parent'} = $result_trees{'macro_name_with_hyphen'}{'contents'}[3];
$result_trees{'macro_name_with_hyphen'}{'contents'}[3]{'contents'}[1]{'args'}[0]{'contents'}[0]{'parent'} = $result_trees{'macro_name_with_hyphen'}{'contents'}[3]{'contents'}[1]{'args'}[0];
$result_trees{'macro_name_with_hyphen'}{'contents'}[3]{'contents'}[1]{'args'}[0]{'parent'} = $result_trees{'macro_name_with_hyphen'}{'contents'}[3]{'contents'}[1];
$result_trees{'macro_name_with_hyphen'}{'contents'}[3]{'contents'}[1]{'parent'} = $result_trees{'macro_name_with_hyphen'}{'contents'}[3];
$result_trees{'macro_name_with_hyphen'}{'contents'}[3]{'contents'}[2]{'parent'} = $result_trees{'macro_name_with_hyphen'}{'contents'}[3];
$result_trees{'macro_name_with_hyphen'}{'contents'}[3]{'parent'} = $result_trees{'macro_name_with_hyphen'};

$result_texis{'macro_name_with_hyphen'} = '@macro macro-one {arg-one, arg2}
This \\arg-one\\ and that \\arg2\\.
@end macro

This blah and that @code{bli-bli}.
';

$result_texts{'macro_name_with_hyphen'} = '
This blah and that bli-bli.
';

$result_errors{'macro_name_with_hyphen'} = [];

1;

repo_name: mthl/texinfo

license: mit


code:
use vars qw(%result_texis %result_texts %result_trees %result_errors
   %result_indices %result_sectioning %result_nodes %result_menus
   %result_floats %result_converted %result_converted_errors
   %result_elements %result_directions_text);

use utf8;

$result_trees{'macro_no_arg_bad_expansion'} = {
  'contents' => [
    {
      'args' => [
        {
          'parent' => {},
          'text' => 'testone',
          'type' => 'macro_name'
        }
      ],
      'cmdname' => 'macro',
      'contents' => [
        {
          'parent' => {},
          'text' => 'res1',
          'type' => 'raw'
        },
        {
          'parent' => {},
          'text' => '
',
          'type' => 'last_raw_newline'
        }
      ],
      'extra' => {
        'arg_line' => ' testone
'
      },
      'line_nr' => {
        'file_name' => '',
        'line_nr' => 1,
        'macro' => ''
      },
      'parent' => {}
    },
    {
      'extra' => {
        'command' => {}
      },
      'parent' => {},
      'text' => '
',
      'type' => 'empty_line_after_command'
    },
    {
      'parent' => {},
      'text' => '
',
      'type' => 'empty_line'
    },
    {
      'contents' => [
        {
          'parent' => {},
          'text' => 'res1 abc
'
        }
      ],
      'parent' => {},
      'type' => 'paragraph'
    }
  ],
  'type' => 'text_root'
};
$result_trees{'macro_no_arg_bad_expansion'}{'contents'}[0]{'args'}[0]{'parent'} = $result_trees{'macro_no_arg_bad_expansion'}{'contents'}[0];
$result_trees{'macro_no_arg_bad_expansion'}{'contents'}[0]{'contents'}[0]{'parent'} = $result_trees{'macro_no_arg_bad_expansion'}{'contents'}[0];
$result_trees{'macro_no_arg_bad_expansion'}{'contents'}[0]{'contents'}[1]{'parent'} = $result_trees{'macro_no_arg_bad_expansion'}{'contents'}[0];
$result_trees{'macro_no_arg_bad_expansion'}{'contents'}[0]{'parent'} = $result_trees{'macro_no_arg_bad_expansion'};
$result_trees{'macro_no_arg_bad_expansion'}{'contents'}[1]{'extra'}{'command'} = $result_trees{'macro_no_arg_bad_expansion'}{'contents'}[0];
$result_trees{'macro_no_arg_bad_expansion'}{'contents'}[1]{'parent'} = $result_trees{'macro_no_arg_bad_expansion'};
$result_trees{'macro_no_arg_bad_expansion'}{'contents'}[2]{'parent'} = $result_trees{'macro_no_arg_bad_expansion'};
$result_trees{'macro_no_arg_bad_expansion'}{'contents'}[3]{'contents'}[0]{'parent'} = $result_trees{'macro_no_arg_bad_expansion'}{'contents'}[3];
$result_trees{'macro_no_arg_bad_expansion'}{'contents'}[3]{'parent'} = $result_trees{'macro_no_arg_bad_expansion'};

$result_texis{'macro_no_arg_bad_expansion'} = '@macro testone
res1
@end macro

res1 abc
';

$result_texts{'macro_no_arg_bad_expansion'} = '
res1 abc
';

$result_errors{'macro_no_arg_bad_expansion'} = [];

1;


code:
use vars qw(%result_texis %result_texts %result_trees %result_errors
   %result_indices %result_sectioning %result_nodes %result_menus
   %result_floats %result_converted %result_converted_errors
   %result_elements %result_directions_text);

use utf8;

$result_trees{'macro_no_arg_expansion'} = {
  'contents' => [
    {
      'args' => [
        {
          'parent' => {},
          'text' => 'testone',
          'type' => 'macro_name'
        }
      ],
      'cmdname' => 'macro',
      'contents' => [
        {
          'parent' => {},
          'text' => 'res1',
          'type' => 'raw'
        },
        {
          'parent' => {},
          'text' => '
',
          'type' => 'last_raw_newline'
        }
      ],
      'extra' => {
        'arg_line' => ' testone
'
      },
      'line_nr' => {
        'file_name' => '',
        'line_nr' => 1,
        'macro' => ''
      },
      'parent' => {}
    },
    {
      'extra' => {
        'command' => {}
      },
      'parent' => {},
      'text' => '
',
      'type' => 'empty_line_after_command'
    },
    {
      'parent' => {},
      'text' => '
',
      'type' => 'empty_line'
    },
    {
      'contents' => [
        {
          'parent' => {},
          'text' => 'res1 abc
'
        }
      ],
      'parent' => {},
      'type' => 'paragraph'
    }
  ],
  'type' => 'text_root'
};
$result_trees{'macro_no_arg_expansion'}{'contents'}[0]{'args'}[0]{'parent'} = $result_trees{'macro_no_arg_expansion'}{'contents'}[0];
$result_trees{'macro_no_arg_expansion'}{'contents'}[0]{'contents'}[0]{'parent'} = $result_trees{'macro_no_arg_expansion'}{'contents'}[0];
$result_trees{'macro_no_arg_expansion'}{'contents'}[0]{'contents'}[1]{'parent'} = $result_trees{'macro_no_arg_expansion'}{'contents'}[0];
$result_trees{'macro_no_arg_expansion'}{'contents'}[0]{'parent'} = $result_trees{'macro_no_arg_expansion'};
$result_trees{'macro_no_arg_expansion'}{'contents'}[1]{'extra'}{'command'} = $result_trees{'macro_no_arg_expansion'}{'contents'}[0];
$result_trees{'macro_no_arg_expansion'}{'contents'}[1]{'parent'} = $result_trees{'macro_no_arg_expansion'};
$result_trees{'macro_no_arg_expansion'}{'contents'}[2]{'parent'} = $result_trees{'macro_no_arg_expansion'};
$result_trees{'macro_no_arg_expansion'}{'contents'}[3]{'contents'}[0]{'parent'} = $result_trees{'macro_no_arg_expansion'}{'contents'}[3];
$result_trees{'macro_no_arg_expansion'}{'contents'}[3]{'parent'} = $result_trees{'macro_no_arg_expansion'};

$result_texis{'macro_no_arg_expansion'} = '@macro testone
res1
@end macro

res1 abc
';

$result_texts{'macro_no_arg_expansion'} = '
res1 abc
';

$result_errors{'macro_no_arg_expansion'} = [];

1;


code:
use vars qw(%result_texis %result_texts %result_trees %result_errors
   %result_indices %result_sectioning %result_nodes %result_menus
   %result_floats %result_converted %result_converted_errors
   %result_elements %result_directions_text);

use utf8;

$result_trees{'macro_no_argument'} = {
  'contents' => [
    {
      'cmdname' => 'macro',
      'contents' => [],
      'extra' => {
        'arg_line' => '',
        'invalid_syntax' => 1
      },
      'line_nr' => {
        'file_name' => '',
        'line_nr' => 1,
        'macro' => ''
      },
      'parent' => {}
    }
  ],
  'type' => 'text_root'
};
$result_trees{'macro_no_argument'}{'contents'}[0]{'parent'} = $result_trees{'macro_no_argument'};

$result_texis{'macro_no_argument'} = '@macro@end macro';

$result_texts{'macro_no_argument'} = '';

$result_errors{'macro_no_argument'} = [
  {
    'error_line' => ':1: @macro requires a name
',
    'file_name' => '',
    'line_nr' => 1,
    'macro' => '',
    'text' => '@macro requires a name',
    'type' => 'error'
  },
  {
    'error_line' => ':1: no matching `@end macro\'
',
    'file_name' => '',
    'line_nr' => 1,
    'macro' => '',
    'text' => 'no matching `@end macro\'',
    'type' => 'error'
  }
];

1;


code:
use vars qw(%result_texis %result_texts %result_trees %result_errors
   %result_indices %result_sectioning %result_nodes %result_menus
   %result_floats %result_converted %result_converted_errors
   %result_elements %result_directions_text);

use utf8;

$result_trees{'macro_not_closed'} = {
  'contents' => [
    {
      'args' => [
        {
          'parent' => {},
          'text' => 'name',
          'type' => 'macro_name'
        }
      ],
      'cmdname' => 'macro',
      'contents' => [
        {
          'parent' => {},
          'text' => 'in macro
',
          'type' => 'raw'
        }
      ],
      'extra' => {
        'arg_line' => ' name
'
      },
      'line_nr' => {
        'file_name' => '',
        'line_nr' => 1,
        'macro' => ''
      },
      'parent' => {}
    }
  ],
  'type' => 'text_root'
};
$result_trees{'macro_not_closed'}{'contents'}[0]{'args'}[0]{'parent'} = $result_trees{'macro_not_closed'}{'contents'}[0];
$result_trees{'macro_not_closed'}{'contents'}[0]{'contents'}[0]{'parent'} = $result_trees{'macro_not_closed'}{'contents'}[0];
$result_trees{'macro_not_closed'}{'contents'}[0]{'parent'} = $result_trees{'macro_not_closed'};

$result_texis{'macro_not_closed'} = '@macro name
in macro
@end macro';

$result_texts{'macro_not_closed'} = '';

$result_errors{'macro_not_closed'} = [
  {
    'error_line' => ':2: no matching `@end macro\'
',
    'file_name' => '',
    'line_nr' => 2,
    'macro' => '',
    'text' => 'no matching `@end macro\'',
    'type' => 'error'
  }
];

1;


code:
use vars qw(%result_texis %result_texts %result_trees %result_errors
   %result_indices %result_sectioning %result_nodes %result_menus
   %result_floats %result_converted %result_converted_errors
   %result_elements %result_directions_text);

use utf8;

$result_trees{'macro_one_arg_end_of_file'} = {
  'contents' => [
    {
      'args' => [
        {
          'parent' => {},
          'text' => 'onearg',
          'type' => 'macro_name'
        },
        {
          'parent' => {},
          'text' => 'arg',
          'type' => 'macro_arg'
        }
      ],
      'cmdname' => 'macro',
      'contents' => [
        {
          'parent' => {},
          'text' => 'Arg \\arg\\.',
          'type' => 'raw'
        },
        {
          'parent' => {},
          'text' => '
',
          'type' => 'last_raw_newline'
        }
      ],
      'extra' => {
        'arg_line' => ' onearg{arg}
'
      },
      'line_nr' => {
        'file_name' => '',
        'line_nr' => 1,
        'macro' => ''
      },
      'parent' => {}
    },
    {
      'extra' => {
        'command' => {}
      },
      'parent' => {},
      'text' => '
',
      'type' => 'empty_line_after_command'
    },
    {
      'parent' => {},
      'text' => '
',
      'type' => 'empty_line'
    },
    {
      'contents' => [
        {
          'parent' => {},
          'text' => 'Arg .'
        }
      ],
      'parent' => {},
      'type' => 'paragraph'
    }
  ],
  'type' => 'text_root'
};
$result_trees{'macro_one_arg_end_of_file'}{'contents'}[0]{'args'}[0]{'parent'} = $result_trees{'macro_one_arg_end_of_file'}{'contents'}[0];
$result_trees{'macro_one_arg_end_of_file'}{'contents'}[0]{'args'}[1]{'parent'} = $result_trees{'macro_one_arg_end_of_file'}{'contents'}[0];
$result_trees{'macro_one_arg_end_of_file'}{'contents'}[0]{'contents'}[0]{'parent'} = $result_trees{'macro_one_arg_end_of_file'}{'contents'}[0];
$result_trees{'macro_one_arg_end_of_file'}{'contents'}[0]{'contents'}[1]{'parent'} = $result_trees{'macro_one_arg_end_of_file'}{'contents'}[0];
$result_trees{'macro_one_arg_end_of_file'}{'contents'}[0]{'parent'} = $result_trees{'macro_one_arg_end_of_file'};
$result_trees{'macro_one_arg_end_of_file'}{'contents'}[1]{'extra'}{'command'} = $result_trees{'macro_one_arg_end_of_file'}{'contents'}[0];
$result_trees{'macro_one_arg_end_of_file'}{'contents'}[1]{'parent'} = $result_trees{'macro_one_arg_end_of_file'};
$result_trees{'macro_one_arg_end_of_file'}{'contents'}[2]{'parent'} = $result_trees{'macro_one_arg_end_of_file'};
$result_trees{'macro_one_arg_end_of_file'}{'contents'}[3]{'contents'}[0]{'parent'} = $result_trees{'macro_one_arg_end_of_file'}{'contents'}[3];
$result_trees{'macro_one_arg_end_of_file'}{'contents'}[3]{'parent'} = $result_trees{'macro_one_arg_end_of_file'};

$result_texis{'macro_one_arg_end_of_file'} = '@macro onearg{arg}
Arg \\arg\\.
@end macro

Arg .';

$result_texts{'macro_one_arg_end_of_file'} = '
Arg .';

$result_errors{'macro_one_arg_end_of_file'} = [];

1;


code:
use vars qw(%result_texis %result_texts %result_trees %result_errors
   %result_indices %result_sectioning %result_nodes %result_menus
   %result_floats %result_converted %result_converted_errors
   %result_elements %result_directions_text);

use utf8;

$result_trees{'macro_with_error_at_end_line_after_macro'} = {
  'contents' => [
    {
      'args' => [
        {
          'parent' => {},
          'text' => 'witherror',
          'type' => 'macro_name'
        },
        {
          'parent' => {},
          'text' => 'string',
          'type' => 'macro_arg'
        }
      ],
      'cmdname' => 'macro',
      'contents' => [
        {
          'parent' => {},
          'text' => '@center',
          'type' => 'raw'
        },
        {
          'parent' => {},
          'text' => '
',
          'type' => 'last_raw_newline'
        }
      ],
      'extra' => {
        'arg_line' => ' witherror{string}
'
      },
      'line_nr' => {
        'file_name' => '',
        'line_nr' => 1,
        'macro' => ''
      },
      'parent' => {}
    },
    {
      'extra' => {
        'command' => {}
      },
      'parent' => {},
      'text' => '
',
      'type' => 'empty_line_after_command'
    },
    {
      'parent' => {},
      'text' => '
',
      'type' => 'empty_line'
    },
    {
      'args' => [
        {
          'contents' => [
            {
              'extra' => {
                'command' => {}
              },
              'parent' => {},
              'text' => '
',
              'type' => 'empty_line_after_command'
            }
          ],
          'parent' => {},
          'type' => 'misc_line_arg'
        }
      ],
      'cmdname' => 'center',
      'extra' => {
        'missing_argument' => 1,
        'spaces_after_command' => {}
      },
      'line_nr' => {
        'file_name' => '',
        'line_nr' => 5,
        'macro' => 'witherror'
      },
      'parent' => {}
    }
  ],
  'type' => 'text_root'
};
$result_trees{'macro_with_error_at_end_line_after_macro'}{'contents'}[0]{'args'}[0]{'parent'} = $result_trees{'macro_with_error_at_end_line_after_macro'}{'contents'}[0];
$result_trees{'macro_with_error_at_end_line_after_macro'}{'contents'}[0]{'args'}[1]{'parent'} = $result_trees{'macro_with_error_at_end_line_after_macro'}{'contents'}[0];
$result_trees{'macro_with_error_at_end_line_after_macro'}{'contents'}[0]{'contents'}[0]{'parent'} = $result_trees{'macro_with_error_at_end_line_after_macro'}{'contents'}[0];
$result_trees{'macro_with_error_at_end_line_after_macro'}{'contents'}[0]{'contents'}[1]{'parent'} = $result_trees{'macro_with_error_at_end_line_after_macro'}{'contents'}[0];
$result_trees{'macro_with_error_at_end_line_after_macro'}{'contents'}[0]{'parent'} = $result_trees{'macro_with_error_at_end_line_after_macro'};
$result_trees{'macro_with_error_at_end_line_after_macro'}{'contents'}[1]{'extra'}{'command'} = $result_trees{'macro_with_error_at_end_line_after_macro'}{'contents'}[0];
$result_trees{'macro_with_error_at_end_line_after_macro'}{'contents'}[1]{'parent'} = $result_trees{'macro_with_error_at_end_line_after_macro'};
$result_trees{'macro_with_error_at_end_line_after_macro'}{'contents'}[2]{'parent'} = $result_trees{'macro_with_error_at_end_line_after_macro'};
$result_trees{'macro_with_error_at_end_line_after_macro'}{'contents'}[3]{'args'}[0]{'contents'}[0]{'extra'}{'command'} = $result_trees{'macro_with_error_at_end_line_after_macro'}{'contents'}[3];
$result_trees{'macro_with_error_at_end_line_after_macro'}{'contents'}[3]{'args'}[0]{'contents'}[0]{'parent'} = $result_trees{'macro_with_error_at_end_line_after_macro'}{'contents'}[3]{'args'}[0];
$result_trees{'macro_with_error_at_end_line_after_macro'}{'contents'}[3]{'args'}[0]{'parent'} = $result_trees{'macro_with_error_at_end_line_after_macro'}{'contents'}[3];
$result_trees{'macro_with_error_at_end_line_after_macro'}{'contents'}[3]{'extra'}{'spaces_after_command'} = $result_trees{'macro_with_error_at_end_line_after_macro'}{'contents'}[3]{'args'}[0]{'contents'}[0];
$result_trees{'macro_with_error_at_end_line_after_macro'}{'contents'}[3]{'parent'} = $result_trees{'macro_with_error_at_end_line_after_macro'};

$result_texis{'macro_with_error_at_end_line_after_macro'} = '@macro witherror{string}
@center
@end macro

@center
';

$result_texts{'macro_with_error_at_end_line_after_macro'} = '

';

$result_errors{'macro_with_error_at_end_line_after_macro'} = [
  {
    'error_line' => ':5: warning: @center missing argument (possibly involving @witherror)
',
    'file_name' => '',
    'line_nr' => 5,
    'macro' => 'witherror',
    'text' => '@center missing argument',
    'type' => 'warning'
  }
];

1;


code:
use vars qw(%result_texis %result_texts %result_trees %result_errors
   %result_indices %result_sectioning %result_nodes %result_menus
   %result_floats %result_converted %result_converted_errors
   %result_elements %result_directions_text);

use utf8;

$result_trees{'macro_zero'} = {
  'contents' => [
    {
      'args' => [
        {
          'parent' => {},
          'text' => 'zero',
          'type' => 'macro_name'
        }
      ],
      'cmdname' => 'macro',
      'contents' => [
        {
          'parent' => {},
          'text' => '0',
          'type' => 'raw'
        },
        {
          'parent' => {},
          'text' => '
',
          'type' => 'last_raw_newline'
        }
      ],
      'extra' => {
        'arg_line' => ' zero
'
      },
      'line_nr' => {
        'file_name' => '',
        'line_nr' => 1,
        'macro' => ''
      },
      'parent' => {}
    },
    {
      'extra' => {
        'command' => {}
      },
      'parent' => {},
      'text' => '
',
      'type' => 'empty_line_after_command'
    },
    {
      'parent' => {},
      'text' => '
',
      'type' => 'empty_line'
    },
    {
      'contents' => [
        {
          'parent' => {},
          'text' => 'Macro
'
        },
        {
          'parent' => {},
          'text' => '0
'
        }
      ],
      'parent' => {},
      'type' => 'paragraph'
    }
  ],
  'type' => 'text_root'
};
$result_trees{'macro_zero'}{'contents'}[0]{'args'}[0]{'parent'} = $result_trees{'macro_zero'}{'contents'}[0];
$result_trees{'macro_zero'}{'contents'}[0]{'contents'}[0]{'parent'} = $result_trees{'macro_zero'}{'contents'}[0];
$result_trees{'macro_zero'}{'contents'}[0]{'contents'}[1]{'parent'} = $result_trees{'macro_zero'}{'contents'}[0];
$result_trees{'macro_zero'}{'contents'}[0]{'parent'} = $result_trees{'macro_zero'};
$result_trees{'macro_zero'}{'contents'}[1]{'extra'}{'command'} = $result_trees{'macro_zero'}{'contents'}[0];
$result_trees{'macro_zero'}{'contents'}[1]{'parent'} = $result_trees{'macro_zero'};
$result_trees{'macro_zero'}{'contents'}[2]{'parent'} = $result_trees{'macro_zero'};
$result_trees{'macro_zero'}{'contents'}[3]{'contents'}[0]{'parent'} = $result_trees{'macro_zero'}{'contents'}[3];
$result_trees{'macro_zero'}{'contents'}[3]{'contents'}[1]{'parent'} = $result_trees{'macro_zero'}{'contents'}[3];
$result_trees{'macro_zero'}{'contents'}[3]{'parent'} = $result_trees{'macro_zero'};

$result_texis{'macro_zero'} = '@macro zero
0
@end macro

Macro
0
';

$result_texts{'macro_zero'} = '
Macro
0
';

$result_errors{'macro_zero'} = [];

1;


code:
use vars qw(%result_texis %result_texts %result_trees %result_errors
   %result_indices %result_sectioning %result_nodes %result_menus
   %result_floats %result_converted %result_converted_errors
   %result_elements %result_directions_text);

use utf8;

$result_trees{'nested_macro_call'} = {
  'contents' => [
    {
      'args' => [
        {
          'parent' => {},
          'text' => 'machin',
          'type' => 'macro_name'
        }
      ],
      'cmdname' => 'macro',
      'contents' => [
        {
          'parent' => {},
          'text' => '(machin)',
          'type' => 'raw'
        },
        {
          'parent' => {},
          'text' => '
',
          'type' => 'last_raw_newline'
        }
      ],
      'extra' => {
        'arg_line' => ' machin{}
'
      },
      'line_nr' => {
        'file_name' => '',
        'line_nr' => 1,
        'macro' => ''
      },
      'parent' => {}
    },
    {
      'extra' => {
        'command' => {}
      },
      'parent' => {},
      'text' => '
',
      'type' => 'empty_line_after_command'
    },
    {
      'parent' => {},
      'text' => '
',
      'type' => 'empty_line'
    },
    {
      'args' => [
        {
          'parent' => {},
          'text' => 'truc',
          'type' => 'macro_name'
        }
      ],
      'cmdname' => 'macro',
      'contents' => [
        {
          'parent' => {},
          'text' => '@machin{}
',
          'type' => 'raw'
        },
        {
          'parent' => {},
          'text' => '',
          'type' => 'raw'
        },
        {
          'parent' => {},
          'text' => '
',
          'type' => 'last_raw_newline'
        }
      ],
      'extra' => {
        'arg_line' => ' truc{}
'
      },
      'line_nr' => {
        'file_name' => '',
        'line_nr' => 5,
        'macro' => ''
      },
      'parent' => {}
    },
    {
      'extra' => {
        'command' => {}
      },
      'parent' => {},
      'text' => '
',
      'type' => 'empty_line_after_command'
    },
    {
      'parent' => {},
      'text' => '
',
      'type' => 'empty_line'
    },
    {
      'contents' => [
        {
          'parent' => {},
          'text' => 'Before (machin)
'
        },
        {
          'parent' => {},
          'text' => ' after truc.
'
        }
      ],
      'parent' => {},
      'type' => 'paragraph'
    }
  ],
  'type' => 'text_root'
};
$result_trees{'nested_macro_call'}{'contents'}[0]{'args'}[0]{'parent'} = $result_trees{'nested_macro_call'}{'contents'}[0];
$result_trees{'nested_macro_call'}{'contents'}[0]{'contents'}[0]{'parent'} = $result_trees{'nested_macro_call'}{'contents'}[0];
$result_trees{'nested_macro_call'}{'contents'}[0]{'contents'}[1]{'parent'} = $result_trees{'nested_macro_call'}{'contents'}[0];
$result_trees{'nested_macro_call'}{'contents'}[0]{'parent'} = $result_trees{'nested_macro_call'};
$result_trees{'nested_macro_call'}{'contents'}[1]{'extra'}{'command'} = $result_trees{'nested_macro_call'}{'contents'}[0];
$result_trees{'nested_macro_call'}{'contents'}[1]{'parent'} = $result_trees{'nested_macro_call'};
$result_trees{'nested_macro_call'}{'contents'}[2]{'parent'} = $result_trees{'nested_macro_call'};
$result_trees{'nested_macro_call'}{'contents'}[3]{'args'}[0]{'parent'} = $result_trees{'nested_macro_call'}{'contents'}[3];
$result_trees{'nested_macro_call'}{'contents'}[3]{'contents'}[0]{'parent'} = $result_trees{'nested_macro_call'}{'contents'}[3];
$result_trees{'nested_macro_call'}{'contents'}[3]{'contents'}[1]{'parent'} = $result_trees{'nested_macro_call'}{'contents'}[3];
$result_trees{'nested_macro_call'}{'contents'}[3]{'contents'}[2]{'parent'} = $result_trees{'nested_macro_call'}{'contents'}[3];
$result_trees{'nested_macro_call'}{'contents'}[3]{'parent'} = $result_trees{'nested_macro_call'};
$result_trees{'nested_macro_call'}{'contents'}[4]{'extra'}{'command'} = $result_trees{'nested_macro_call'}{'contents'}[3];
$result_trees{'nested_macro_call'}{'contents'}[4]{'parent'} = $result_trees{'nested_macro_call'};
$result_trees{'nested_macro_call'}{'contents'}[5]{'parent'} = $result_trees{'nested_macro_call'};
$result_trees{'nested_macro_call'}{'contents'}[6]{'contents'}[0]{'parent'} = $result_trees{'nested_macro_call'}{'contents'}[6];
$result_trees{'nested_macro_call'}{'contents'}[6]{'contents'}[1]{'parent'} = $result_trees{'nested_macro_call'}{'contents'}[6];
$result_trees{'nested_macro_call'}{'contents'}[6]{'parent'} = $result_trees{'nested_macro_call'};

$result_texis{'nested_macro_call'} = '@macro machin{}
(machin)
@end macro

@macro truc{}
@machin{}

@end macro

Before (machin)
 after truc.
';

$result_texts{'nested_macro_call'} = '

Before (machin)
 after truc.
';

$result_errors{'nested_macro_call'} = [];

1;


code:
use vars qw(%result_texis %result_texts %result_trees %result_errors
   %result_indices %result_sectioning %result_nodes %result_menus
   %result_floats %result_converted %result_converted_errors
   %result_elements %result_directions_text);

use utf8;

$result_trees{'no_macrobody'} = {
  'contents' => [
    {
      'args' => [
        {
          'parent' => {},
          'text' => 'nomacrobody',
          'type' => 'macro_name'
        },
        {
          'parent' => {},
          'text' => 'arg',
          'type' => 'macro_arg'
        }
      ],
      'cmdname' => 'macro',
      'contents' => [],
      'extra' => {
        'arg_line' => ' nomacrobody {arg}
'
      },
      'line_nr' => {
        'file_name' => '',
        'line_nr' => 1,
        'macro' => ''
      },
      'parent' => {}
    },
    {
      'extra' => {
        'command' => {}
      },
      'parent' => {},
      'text' => '
',
      'type' => 'empty_line_after_command'
    },
    {
      'parent' => {},
      'text' => '
',
      'type' => 'empty_line'
    },
    {
      'parent' => {},
      'text' => '
',
      'type' => 'empty_line'
    },
    {
      'parent' => {},
      'text' => '
',
      'type' => 'empty_line'
    },
    {
      'contents' => [
        {
          'parent' => {},
          'text' => '.
'
        }
      ],
      'parent' => {},
      'type' => 'paragraph'
    }
  ],
  'type' => 'text_root'
};
$result_trees{'no_macrobody'}{'contents'}[0]{'args'}[0]{'parent'} = $result_trees{'no_macrobody'}{'contents'}[0];
$result_trees{'no_macrobody'}{'contents'}[0]{'args'}[1]{'parent'} = $result_trees{'no_macrobody'}{'contents'}[0];
$result_trees{'no_macrobody'}{'contents'}[0]{'parent'} = $result_trees{'no_macrobody'};
$result_trees{'no_macrobody'}{'contents'}[1]{'extra'}{'command'} = $result_trees{'no_macrobody'}{'contents'}[0];
$result_trees{'no_macrobody'}{'contents'}[1]{'parent'} = $result_trees{'no_macrobody'};
$result_trees{'no_macrobody'}{'contents'}[2]{'parent'} = $result_trees{'no_macrobody'};
$result_trees{'no_macrobody'}{'contents'}[3]{'parent'} = $result_trees{'no_macrobody'};
$result_trees{'no_macrobody'}{'contents'}[4]{'parent'} = $result_trees{'no_macrobody'};
$result_trees{'no_macrobody'}{'contents'}[5]{'contents'}[0]{'parent'} = $result_trees{'no_macrobody'}{'contents'}[5];
$result_trees{'no_macrobody'}{'contents'}[5]{'parent'} = $result_trees{'no_macrobody'};

$result_texis{'no_macrobody'} = '@macro nomacrobody {arg}
@end macro

.
';

$result_texts{'no_macrobody'} = '

.
';

$result_errors{'no_macrobody'} = [];

1;


code:
use vars qw(%result_texis %result_texts %result_trees %result_errors
   %result_indices %result_sectioning %result_nodes %result_menus
   %result_floats %result_converted %result_converted_errors
   %result_elements %result_directions_text);

use utf8;

$result_trees{'paragraph_and_macro'} = {
  'contents' => [
    {
      'args' => [
        {
          'parent' => {},
          'text' => 'aempty',
          'type' => 'macro_name'
        }
      ],
      'cmdname' => 'macro',
      'contents' => [],
      'extra' => {
        'arg_line' => ' aempty
'
      },
      'line_nr' => {
        'file_name' => '',
        'line_nr' => 1,
        'macro' => ''
      },
      'parent' => {}
    },
    {
      'extra' => {
        'command' => {}
      },
      'parent' => {},
      'text' => '
',
      'type' => 'empty_line_after_command'
    },
    {
      'parent' => {},
      'text' => '
',
      'type' => 'empty_line'
    },
    {
      'args' => [
        {
          'parent' => {},
          'text' => 'aspace',
          'type' => 'macro_name'
        }
      ],
      'cmdname' => 'macro',
      'contents' => [
        {
          'parent' => {},
          'text' => '   ',
          'type' => 'raw'
        },
        {
          'parent' => {},
          'text' => '
',
          'type' => 'last_raw_newline'
        }
      ],
      'extra' => {
        'arg_line' => ' aspace
'
      },
      'line_nr' => {
        'file_name' => '',
        'line_nr' => 4,
        'macro' => ''
      },
      'parent' => {}
    },
    {
      'extra' => {
        'command' => {}
      },
      'parent' => {},
      'text' => '
',
      'type' => 'empty_line_after_command'
    },
    {
      'parent' => {},
      'text' => '
',
      'type' => 'empty_line'
    },
    {
      'args' => [
        {
          'parent' => {},
          'text' => 'word',
          'type' => 'macro_name'
        }
      ],
      'cmdname' => 'macro',
      'contents' => [
        {
          'parent' => {},
          'text' => 'a word',
          'type' => 'raw'
        },
        {
          'parent' => {},
          'text' => '
',
          'type' => 'last_raw_newline'
        }
      ],
      'extra' => {
        'arg_line' => ' word
'
      },
      'line_nr' => {
        'file_name' => '',
        'line_nr' => 8,
        'macro' => ''
      },
      'parent' => {}
    },
    {
      'extra' => {
        'command' => {}
      },
      'parent' => {},
      'text' => '
',
      'type' => 'empty_line_after_command'
    },
    {
      'parent' => {},
      'text' => '
',
      'type' => 'empty_line'
    },
    {
      'parent' => {},
      'text' => '
',
      'type' => 'empty_line'
    },
    {
      'parent' => {},
      'text' => '
',
      'type' => 'empty_line'
    },
    {
      'parent' => {},
      'text' => '
',
      'type' => 'empty_line'
    },
    {
      'parent' => {},
      'text' => '
',
      'type' => 'empty_line'
    },
    {
      'parent' => {},
      'text' => ' ',
      'type' => 'empty_spaces_before_paragraph'
    },
    {
      'contents' => [
        {
          'parent' => {},
          'text' => 'text after empty.
'
        }
      ],
      'parent' => {},
      'type' => 'paragraph'
    },
    {
      'parent' => {},
      'text' => '
',
      'type' => 'empty_line'
    },
    {
      'parent' => {},
      'text' => '
',
      'type' => 'empty_line'
    },
    {
      'parent' => {},
      'text' => '
',
      'type' => 'empty_line'
    },
    {
      'parent' => {},
      'text' => '
',
      'type' => 'empty_line'
    },
    {
      'parent' => {},
      'text' => '
',
      'type' => 'empty_line'
    },
    {
      'parent' => {},
      'text' => '    ',
      'type' => 'empty_spaces_before_paragraph'
    },
    {
      'contents' => [
        {
          'parent' => {},
          'text' => 'text after space.
'
        }
      ],
      'parent' => {},
      'type' => 'paragraph'
    }
  ],
  'type' => 'text_root'
};
$result_trees{'paragraph_and_macro'}{'contents'}[0]{'args'}[0]{'parent'} = $result_trees{'paragraph_and_macro'}{'contents'}[0];
$result_trees{'paragraph_and_macro'}{'contents'}[0]{'parent'} = $result_trees{'paragraph_and_macro'};
$result_trees{'paragraph_and_macro'}{'contents'}[1]{'extra'}{'command'} = $result_trees{'paragraph_and_macro'}{'contents'}[0];
$result_trees{'paragraph_and_macro'}{'contents'}[1]{'parent'} = $result_trees{'paragraph_and_macro'};
$result_trees{'paragraph_and_macro'}{'contents'}[2]{'parent'} = $result_trees{'paragraph_and_macro'};
$result_trees{'paragraph_and_macro'}{'contents'}[3]{'args'}[0]{'parent'} = $result_trees{'paragraph_and_macro'}{'contents'}[3];
$result_trees{'paragraph_and_macro'}{'contents'}[3]{'contents'}[0]{'parent'} = $result_trees{'paragraph_and_macro'}{'contents'}[3];
$result_trees{'paragraph_and_macro'}{'contents'}[3]{'contents'}[1]{'parent'} = $result_trees{'paragraph_and_macro'}{'contents'}[3];
$result_trees{'paragraph_and_macro'}{'contents'}[3]{'parent'} = $result_trees{'paragraph_and_macro'};
$result_trees{'paragraph_and_macro'}{'contents'}[4]{'extra'}{'command'} = $result_trees{'paragraph_and_macro'}{'contents'}[3];
$result_trees{'paragraph_and_macro'}{'contents'}[4]{'parent'} = $result_trees{'paragraph_and_macro'};
$result_trees{'paragraph_and_macro'}{'contents'}[5]{'parent'} = $result_trees{'paragraph_and_macro'};
$result_trees{'paragraph_and_macro'}{'contents'}[6]{'args'}[0]{'parent'} = $result_trees{'paragraph_and_macro'}{'contents'}[6];
$result_trees{'paragraph_and_macro'}{'contents'}[6]{'contents'}[0]{'parent'} = $result_trees{'paragraph_and_macro'}{'contents'}[6];
$result_trees{'paragraph_and_macro'}{'contents'}[6]{'contents'}[1]{'parent'} = $result_trees{'paragraph_and_macro'}{'contents'}[6];
$result_trees{'paragraph_and_macro'}{'contents'}[6]{'parent'} = $result_trees{'paragraph_and_macro'};
$result_trees{'paragraph_and_macro'}{'contents'}[7]{'extra'}{'command'} = $result_trees{'paragraph_and_macro'}{'contents'}[6];
$result_trees{'paragraph_and_macro'}{'contents'}[7]{'parent'} = $result_trees{'paragraph_and_macro'};
$result_trees{'paragraph_and_macro'}{'contents'}[8]{'parent'} = $result_trees{'paragraph_and_macro'};
$result_trees{'paragraph_and_macro'}{'contents'}[9]{'parent'} = $result_trees{'paragraph_and_macro'};
$result_trees{'paragraph_and_macro'}{'contents'}[10]{'parent'} = $result_trees{'paragraph_and_macro'};
$result_trees{'paragraph_and_macro'}{'contents'}[11]{'parent'} = $result_trees{'paragraph_and_macro'};
$result_trees{'paragraph_and_macro'}{'contents'}[12]{'parent'} = $result_trees{'paragraph_and_macro'};
$result_trees{'paragraph_and_macro'}{'contents'}[13]{'parent'} = $result_trees{'paragraph_and_macro'};
$result_trees{'paragraph_and_macro'}{'contents'}[14]{'contents'}[0]{'parent'} = $result_trees{'paragraph_and_macro'}{'contents'}[14];
$result_trees{'paragraph_and_macro'}{'contents'}[14]{'parent'} = $result_trees{'paragraph_and_macro'};
$result_trees{'paragraph_and_macro'}{'contents'}[15]{'parent'} = $result_trees{'paragraph_and_macro'};
$result_trees{'paragraph_and_macro'}{'contents'}[16]{'parent'} = $result_trees{'paragraph_and_macro'};
$result_trees{'paragraph_and_macro'}{'contents'}[17]{'parent'} = $result_trees{'paragraph_and_macro'};
$result_trees{'paragraph_and_macro'}{'contents'}[18]{'parent'} = $result_trees{'paragraph_and_macro'};
$result_trees{'paragraph_and_macro'}{'contents'}[19]{'parent'} = $result_trees{'paragraph_and_macro'};
$result_trees{'paragraph_and_macro'}{'contents'}[20]{'parent'} = $result_trees{'paragraph_and_macro'};
$result_trees{'paragraph_and_macro'}{'contents'}[21]{'contents'}[0]{'parent'} = $result_trees{'paragraph_and_macro'}{'contents'}[21];
$result_trees{'paragraph_and_macro'}{'contents'}[21]{'parent'} = $result_trees{'paragraph_and_macro'};

$result_texis{'paragraph_and_macro'} = '@macro aempty
@end macro

@macro aspace

@end macro

@macro word
a word
@end macro

 text after empty.

    text after space.
';

$result_texts{'paragraph_and_macro'} = '

text after empty.

text after space.
';

$result_errors{'paragraph_and_macro'} = [];

1;


code:
use vars qw(%result_texis %result_texts %result_trees %result_errors
   %result_indices %result_sectioning %result_nodes %result_menus
   %result_floats %result_converted %result_converted_errors
   %result_elements %result_directions_text);

use utf8;

$result_trees{'protect_comma_macro_line'} = {
  'contents' => [
    {
      'args' => [
        {
          'parent' => {},
          'text' => 'macrotwo',
          'type' => 'macro_name'
        },
        {
          'parent' => {},
          'text' => 'arg',
          'type' => 'macro_arg'
        }
      ],
      'cmdname' => 'macro',
      'contents' => [
        {
          'parent' => {},
          'text' => 'we get \\arg\\ and another \\arg\\
',
          'type' => 'raw'
        },
        {
          'parent' => {},
          'text' => 'and another one on another line \\arg\\
',
          'type' => 'raw'
        },
        {
          'parent' => {},
          'text' => '
',
          'type' => 'raw'
        },
        {
          'parent' => {},
          'text' => 'and a last in another paragraph',
          'type' => 'raw'
        },
        {
          'parent' => {},
          'text' => '
',
          'type' => 'last_raw_newline'
        }
      ],
      'extra' => {
        'arg_line' => ' macrotwo { arg }
'
      },
      'line_nr' => {
        'file_name' => '',
        'line_nr' => 1,
        'macro' => ''
      },
      'parent' => {}
    },
    {
      'extra' => {
        'command' => {}
      },
      'parent' => {},
      'text' => '
',
      'type' => 'empty_line_after_command'
    },
    {
      'parent' => {},
      'text' => '
',
      'type' => 'empty_line'
    },
    {
      'contents' => [
        {
          'parent' => {},
          'text' => 'we get arg,  comma \\, and another arg,  comma \\,
'
        },
        {
          'parent' => {},
          'text' => 'and another one on another line arg,  comma \\,
'
        }
      ],
      'parent' => {},
      'type' => 'paragraph'
    },
    {
      'parent' => {},
      'text' => '
',
      'type' => 'empty_line'
    },
    {
      'contents' => [
        {
          'parent' => {},
          'text' => 'and a last in another paragraph
'
        }
      ],
      'parent' => {},
      'type' => 'paragraph'
    }
  ],
  'type' => 'text_root'
};
$result_trees{'protect_comma_macro_line'}{'contents'}[0]{'args'}[0]{'parent'} = $result_trees{'protect_comma_macro_line'}{'contents'}[0];
$result_trees{'protect_comma_macro_line'}{'contents'}[0]{'args'}[1]{'parent'} = $result_trees{'protect_comma_macro_line'}{'contents'}[0];
$result_trees{'protect_comma_macro_line'}{'contents'}[0]{'contents'}[0]{'parent'} = $result_trees{'protect_comma_macro_line'}{'contents'}[0];
$result_trees{'protect_comma_macro_line'}{'contents'}[0]{'contents'}[1]{'parent'} = $result_trees{'protect_comma_macro_line'}{'contents'}[0];
$result_trees{'protect_comma_macro_line'}{'contents'}[0]{'contents'}[2]{'parent'} = $result_trees{'protect_comma_macro_line'}{'contents'}[0];
$result_trees{'protect_comma_macro_line'}{'contents'}[0]{'contents'}[3]{'parent'} = $result_trees{'protect_comma_macro_line'}{'contents'}[0];
$result_trees{'protect_comma_macro_line'}{'contents'}[0]{'contents'}[4]{'parent'} = $result_trees{'protect_comma_macro_line'}{'contents'}[0];
$result_trees{'protect_comma_macro_line'}{'contents'}[0]{'parent'} = $result_trees{'protect_comma_macro_line'};
$result_trees{'protect_comma_macro_line'}{'contents'}[1]{'extra'}{'command'} = $result_trees{'protect_comma_macro_line'}{'contents'}[0];
$result_trees{'protect_comma_macro_line'}{'contents'}[1]{'parent'} = $result_trees{'protect_comma_macro_line'};
$result_trees{'protect_comma_macro_line'}{'contents'}[2]{'parent'} = $result_trees{'protect_comma_macro_line'};
$result_trees{'protect_comma_macro_line'}{'contents'}[3]{'contents'}[0]{'parent'} = $result_trees{'protect_comma_macro_line'}{'contents'}[3];
$result_trees{'protect_comma_macro_line'}{'contents'}[3]{'contents'}[1]{'parent'} = $result_trees{'protect_comma_macro_line'}{'contents'}[3];
$result_trees{'protect_comma_macro_line'}{'contents'}[3]{'parent'} = $result_trees{'protect_comma_macro_line'};
$result_trees{'protect_comma_macro_line'}{'contents'}[4]{'parent'} = $result_trees{'protect_comma_macro_line'};
$result_trees{'protect_comma_macro_line'}{'contents'}[5]{'contents'}[0]{'parent'} = $result_trees{'protect_comma_macro_line'}{'contents'}[5];
$result_trees{'protect_comma_macro_line'}{'contents'}[5]{'parent'} = $result_trees{'protect_comma_macro_line'};

$result_texis{'protect_comma_macro_line'} = '@macro macrotwo { arg }
we get \\arg\\ and another \\arg\\
and another one on another line \\arg\\

and a last in another paragraph
@end macro

we get arg,  comma \\, and another arg,  comma \\,
and another one on another line arg,  comma \\,

and a last in another paragraph
';

$result_texts{'protect_comma_macro_line'} = '
we get arg,  comma \\, and another arg,  comma \\,
and another one on another line arg,  comma \\,

and a last in another paragraph
';

$result_errors{'protect_comma_macro_line'} = [];

1;


code:
use vars qw(%result_texis %result_texts %result_trees %result_errors
   %result_indices %result_sectioning %result_nodes %result_menus
   %result_floats %result_converted %result_converted_errors
   %result_elements %result_directions_text);

use utf8;

$result_trees{'protect_in_body'} = {
  'contents' => [
    {
      'args' => [
        {
          'parent' => {},
          'text' => 'macroone',
          'type' => 'macro_name'
        },
        {
          'parent' => {},
          'text' => 'arg1',
          'type' => 'macro_arg'
        },
        {
          'parent' => {},
          'text' => 'arg2',
          'type' => 'macro_arg'
        }
      ],
      'cmdname' => 'macro',
      'contents' => [
        {
          'parent' => {},
          'text' => 'result: @emph{\\arg1\\} protected \\\\ -> \\\\arg1\\\\ @emph{\\arg2\\}',
          'type' => 'raw'
        },
        {
          'parent' => {},
          'text' => '
',
          'type' => 'last_raw_newline'
        }
      ],
      'extra' => {
        'arg_line' => ' macroone { arg1 , arg2 }
'
      },
      'line_nr' => {
        'file_name' => '',
        'line_nr' => 1,
        'macro' => ''
      },
      'parent' => {}
    },
    {
      'extra' => {
        'command' => {}
      },
      'parent' => {},
      'text' => '
',
      'type' => 'empty_line_after_command'
    },
    {
      'parent' => {},
      'text' => '
',
      'type' => 'empty_line'
    },
    {
      'contents' => [
        {
          'parent' => {},
          'text' => 'the result: '
        },
        {
          'args' => [
            {
              'contents' => [
                {
                  'args' => [
                    {
                      'contents' => [
                        {
                          'parent' => {},
                          'text' => 'f\\irst arg'
                        }
                      ],
                      'parent' => {},
                      'type' => 'brace_command_arg'
                    }
                  ],
                  'cmdname' => 'samp',
                  'contents' => [],
                  'line_nr' => {
                    'file_name' => '',
                    'line_nr' => 5,
                    'macro' => 'macroone'
                  },
                  'parent' => {}
                }
              ],
              'parent' => {},
              'type' => 'brace_command_arg'
            }
          ],
          'cmdname' => 'emph',
          'contents' => [],
          'line_nr' => {},
          'parent' => {}
        },
        {
          'parent' => {},
          'text' => ' protected \\ -> \\arg1\\ '
        },
        {
          'args' => [
            {
              'contents' => [
                {
                  'parent' => {},
                  'text' => 'second arg '
                }
              ],
              'parent' => {},
              'type' => 'brace_command_arg'
            }
          ],
          'cmdname' => 'emph',
          'contents' => [],
          'line_nr' => {},
          'parent' => {}
        },
        {
          'parent' => {},
          'text' => ' after macro.
'
        }
      ],
      'parent' => {},
      'type' => 'paragraph'
    }
  ],
  'type' => 'text_root'
};
$result_trees{'protect_in_body'}{'contents'}[0]{'args'}[0]{'parent'} = $result_trees{'protect_in_body'}{'contents'}[0];
$result_trees{'protect_in_body'}{'contents'}[0]{'args'}[1]{'parent'} = $result_trees{'protect_in_body'}{'contents'}[0];
$result_trees{'protect_in_body'}{'contents'}[0]{'args'}[2]{'parent'} = $result_trees{'protect_in_body'}{'contents'}[0];
$result_trees{'protect_in_body'}{'contents'}[0]{'contents'}[0]{'parent'} = $result_trees{'protect_in_body'}{'contents'}[0];
$result_trees{'protect_in_body'}{'contents'}[0]{'contents'}[1]{'parent'} = $result_trees{'protect_in_body'}{'contents'}[0];
$result_trees{'protect_in_body'}{'contents'}[0]{'parent'} = $result_trees{'protect_in_body'};
$result_trees{'protect_in_body'}{'contents'}[1]{'extra'}{'command'} = $result_trees{'protect_in_body'}{'contents'}[0];
$result_trees{'protect_in_body'}{'contents'}[1]{'parent'} = $result_trees{'protect_in_body'};
$result_trees{'protect_in_body'}{'contents'}[2]{'parent'} = $result_trees{'protect_in_body'};
$result_trees{'protect_in_body'}{'contents'}[3]{'contents'}[0]{'parent'} = $result_trees{'protect_in_body'}{'contents'}[3];
$result_trees{'protect_in_body'}{'contents'}[3]{'contents'}[1]{'args'}[0]{'contents'}[0]{'args'}[0]{'contents'}[0]{'parent'} = $result_trees{'protect_in_body'}{'contents'}[3]{'contents'}[1]{'args'}[0]{'contents'}[0]{'args'}[0];
$result_trees{'protect_in_body'}{'contents'}[3]{'contents'}[1]{'args'}[0]{'contents'}[0]{'args'}[0]{'parent'} = $result_trees{'protect_in_body'}{'contents'}[3]{'contents'}[1]{'args'}[0]{'contents'}[0];
$result_trees{'protect_in_body'}{'contents'}[3]{'contents'}[1]{'args'}[0]{'contents'}[0]{'parent'} = $result_trees{'protect_in_body'}{'contents'}[3]{'contents'}[1]{'args'}[0];
$result_trees{'protect_in_body'}{'contents'}[3]{'contents'}[1]{'args'}[0]{'parent'} = $result_trees{'protect_in_body'}{'contents'}[3]{'contents'}[1];
$result_trees{'protect_in_body'}{'contents'}[3]{'contents'}[1]{'line_nr'} = $result_trees{'protect_in_body'}{'contents'}[3]{'contents'}[1]{'args'}[0]{'contents'}[0]{'line_nr'};
$result_trees{'protect_in_body'}{'contents'}[3]{'contents'}[1]{'parent'} = $result_trees{'protect_in_body'}{'contents'}[3];
$result_trees{'protect_in_body'}{'contents'}[3]{'contents'}[2]{'parent'} = $result_trees{'protect_in_body'}{'contents'}[3];
$result_trees{'protect_in_body'}{'contents'}[3]{'contents'}[3]{'args'}[0]{'contents'}[0]{'parent'} = $result_trees{'protect_in_body'}{'contents'}[3]{'contents'}[3]{'args'}[0];
$result_trees{'protect_in_body'}{'contents'}[3]{'contents'}[3]{'args'}[0]{'parent'} = $result_trees{'protect_in_body'}{'contents'}[3]{'contents'}[3];
$result_trees{'protect_in_body'}{'contents'}[3]{'contents'}[3]{'line_nr'} = $result_trees{'protect_in_body'}{'contents'}[3]{'contents'}[1]{'args'}[0]{'contents'}[0]{'line_nr'};
$result_trees{'protect_in_body'}{'contents'}[3]{'contents'}[3]{'parent'} = $result_trees{'protect_in_body'}{'contents'}[3];
$result_trees{'protect_in_body'}{'contents'}[3]{'contents'}[4]{'parent'} = $result_trees{'protect_in_body'}{'contents'}[3];
$result_trees{'protect_in_body'}{'contents'}[3]{'parent'} = $result_trees{'protect_in_body'};

$result_texis{'protect_in_body'} = '@macro macroone { arg1 , arg2 }
result: @emph{\\arg1\\} protected \\\\ -> \\\\arg1\\\\ @emph{\\arg2\\}
@end macro

the result: @emph{@samp{f\\irst arg}} protected \\ -> \\arg1\\ @emph{second arg } after macro.
';

$result_texts{'protect_in_body'} = '
the result: f\\irst arg protected \\ -> \\arg1\\ second arg  after macro.
';

$result_errors{'protect_in_body'} = [];

1;


code:
use vars qw(%result_texis %result_texts %result_trees %result_errors
   %result_indices %result_sectioning %result_nodes %result_menus
   %result_floats %result_converted %result_converted_errors
   %result_elements %result_directions_text);

use utf8;

$result_trees{'protect_in_body_line_arg'} = {
  'contents' => [
    {
      'args' => [
        {
          'parent' => {},
          'text' => 'macroone',
          'type' => 'macro_name'
        },
        {
          'parent' => {},
          'text' => 'arg1',
          'type' => 'macro_arg'
        },
        {
          'parent' => {},
          'text' => 'arg2',
          'type' => 'macro_arg'
        }
      ],
      'cmdname' => 'macro',
      'contents' => [
        {
          'parent' => {},
          'text' => 'result: @emph{\\arg1\\} protected \\\\ -> \\\\arg1\\\\ @emph{\\arg2\\}',
          'type' => 'raw'
        },
        {
          'parent' => {},
          'text' => '
',
          'type' => 'last_raw_newline'
        }
      ],
      'extra' => {
        'arg_line' => ' macroone { arg1 , arg2 }
'
      },
      'line_nr' => {
        'file_name' => '',
        'line_nr' => 1,
        'macro' => ''
      },
      'parent' => {}
    },
    {
      'extra' => {
        'command' => {}
      },
      'parent' => {},
      'text' => '
',
      'type' => 'empty_line_after_command'
    },
    {
      'parent' => {},
      'text' => '
',
      'type' => 'empty_line'
    },
    {
      'contents' => [
        {
          'parent' => {},
          'text' => 'result: '
        },
        {
          'args' => [
            {
              'contents' => [],
              'parent' => {},
              'type' => 'brace_command_arg'
            }
          ],
          'cmdname' => 'emph',
          'contents' => [],
          'line_nr' => {
            'file_name' => '',
            'line_nr' => 5,
            'macro' => 'macroone'
          },
          'parent' => {}
        },
        {
          'parent' => {},
          'text' => ' protected \\ -> \\arg1\\ '
        },
        {
          'args' => [
            {
              'contents' => [],
              'parent' => {},
              'type' => 'brace_command_arg'
            }
          ],
          'cmdname' => 'emph',
          'contents' => [],
          'line_nr' => {},
          'parent' => {}
        },
        {
          'parent' => {},
          'text' => ' '
        },
        {
          'args' => [
            {
              'contents' => [
                {
                  'parent' => {},
                  'text' => 'f\\irst arg'
                }
              ],
              'parent' => {},
              'type' => 'brace_command_arg'
            }
          ],
          'cmdname' => 'samp',
          'contents' => [],
          'line_nr' => {
            'file_name' => '',
            'line_nr' => 5,
            'macro' => ''
          },
          'parent' => {}
        },
        {
          'parent' => {},
          'text' => ', second arg
'
        }
      ],
      'parent' => {},
      'type' => 'paragraph'
    }
  ],
  'type' => 'text_root'
};
$result_trees{'protect_in_body_line_arg'}{'contents'}[0]{'args'}[0]{'parent'} = $result_trees{'protect_in_body_line_arg'}{'contents'}[0];
$result_trees{'protect_in_body_line_arg'}{'contents'}[0]{'args'}[1]{'parent'} = $result_trees{'protect_in_body_line_arg'}{'contents'}[0];
$result_trees{'protect_in_body_line_arg'}{'contents'}[0]{'args'}[2]{'parent'} = $result_trees{'protect_in_body_line_arg'}{'contents'}[0];
$result_trees{'protect_in_body_line_arg'}{'contents'}[0]{'contents'}[0]{'parent'} = $result_trees{'protect_in_body_line_arg'}{'contents'}[0];
$result_trees{'protect_in_body_line_arg'}{'contents'}[0]{'contents'}[1]{'parent'} = $result_trees{'protect_in_body_line_arg'}{'contents'}[0];
$result_trees{'protect_in_body_line_arg'}{'contents'}[0]{'parent'} = $result_trees{'protect_in_body_line_arg'};
$result_trees{'protect_in_body_line_arg'}{'contents'}[1]{'extra'}{'command'} = $result_trees{'protect_in_body_line_arg'}{'contents'}[0];
$result_trees{'protect_in_body_line_arg'}{'contents'}[1]{'parent'} = $result_trees{'protect_in_body_line_arg'};
$result_trees{'protect_in_body_line_arg'}{'contents'}[2]{'parent'} = $result_trees{'protect_in_body_line_arg'};
$result_trees{'protect_in_body_line_arg'}{'contents'}[3]{'contents'}[0]{'parent'} = $result_trees{'protect_in_body_line_arg'}{'contents'}[3];
$result_trees{'protect_in_body_line_arg'}{'contents'}[3]{'contents'}[1]{'args'}[0]{'parent'} = $result_trees{'protect_in_body_line_arg'}{'contents'}[3]{'contents'}[1];
$result_trees{'protect_in_body_line_arg'}{'contents'}[3]{'contents'}[1]{'parent'} = $result_trees{'protect_in_body_line_arg'}{'contents'}[3];
$result_trees{'protect_in_body_line_arg'}{'contents'}[3]{'contents'}[2]{'parent'} = $result_trees{'protect_in_body_line_arg'}{'contents'}[3];
$result_trees{'protect_in_body_line_arg'}{'contents'}[3]{'contents'}[3]{'args'}[0]{'parent'} = $result_trees{'protect_in_body_line_arg'}{'contents'}[3]{'contents'}[3];
$result_trees{'protect_in_body_line_arg'}{'contents'}[3]{'contents'}[3]{'line_nr'} = $result_trees{'protect_in_body_line_arg'}{'contents'}[3]{'contents'}[1]{'line_nr'};
$result_trees{'protect_in_body_line_arg'}{'contents'}[3]{'contents'}[3]{'parent'} = $result_trees{'protect_in_body_line_arg'}{'contents'}[3];
$result_trees{'protect_in_body_line_arg'}{'contents'}[3]{'contents'}[4]{'parent'} = $result_trees{'protect_in_body_line_arg'}{'contents'}[3];
$result_trees{'protect_in_body_line_arg'}{'contents'}[3]{'contents'}[5]{'args'}[0]{'contents'}[0]{'parent'} = $result_trees{'protect_in_body_line_arg'}{'contents'}[3]{'contents'}[5]{'args'}[0];
$result_trees{'protect_in_body_line_arg'}{'contents'}[3]{'contents'}[5]{'args'}[0]{'parent'} = $result_trees{'protect_in_body_line_arg'}{'contents'}[3]{'contents'}[5];
$result_trees{'protect_in_body_line_arg'}{'contents'}[3]{'contents'}[5]{'parent'} = $result_trees{'protect_in_body_line_arg'}{'contents'}[3];
$result_trees{'protect_in_body_line_arg'}{'contents'}[3]{'contents'}[6]{'parent'} = $result_trees{'protect_in_body_line_arg'}{'contents'}[3];
$result_trees{'protect_in_body_line_arg'}{'contents'}[3]{'parent'} = $result_trees{'protect_in_body_line_arg'};

$result_texis{'protect_in_body_line_arg'} = '@macro macroone { arg1 , arg2 }
result: @emph{\\arg1\\} protected \\\\ -> \\\\arg1\\\\ @emph{\\arg2\\}
@end macro

result: @emph{} protected \\ -> \\arg1\\ @emph{} @samp{f\\irst arg}, second arg
';

$result_texts{'protect_in_body_line_arg'} = '
result:  protected \\ -> \\arg1\\  f\\irst arg, second arg
';

$result_errors{'protect_in_body_line_arg'} = [
  {
    'error_line' => ':5: warning: @macroone defined with zero or more than one argument should be invoked with {}
',
    'file_name' => '',
    'line_nr' => 5,
    'macro' => '',
    'text' => '@macroone defined with zero or more than one argument should be invoked with {}',
    'type' => 'warning'
  }
];

1;


code:
use vars qw(%result_texis %result_texts %result_trees %result_errors
   %result_indices %result_sectioning %result_nodes %result_menus
   %result_floats %result_converted %result_converted_errors
   %result_elements %result_directions_text);

use utf8;

$result_trees{'protect_in_body_one_arg'} = {
  'contents' => [
    {
      'args' => [
        {
          'parent' => {},
          'text' => 'macroone',
          'type' => 'macro_name'
        },
        {
          'parent' => {},
          'text' => 'arg1',
          'type' => 'macro_arg'
        },
        {
          'parent' => {},
          'text' => 'arg2',
          'type' => 'macro_arg'
        }
      ],
      'cmdname' => 'macro',
      'contents' => [
        {
          'parent' => {},
          'text' => 'result: @emph{\\arg1\\} protected \\\\ -> \\\\arg1\\\\ @emph{\\arg2\\}',
          'type' => 'raw'
        },
        {
          'parent' => {},
          'text' => '
',
          'type' => 'last_raw_newline'
        }
      ],
      'extra' => {
        'arg_line' => ' macroone { arg1 , arg2 }
'
      },
      'line_nr' => {
        'file_name' => '',
        'line_nr' => 1,
        'macro' => ''
      },
      'parent' => {}
    },
    {
      'extra' => {
        'command' => {}
      },
      'parent' => {},
      'text' => '
',
      'type' => 'empty_line_after_command'
    },
    {
      'parent' => {},
      'text' => '
',
      'type' => 'empty_line'
    },
    {
      'contents' => [
        {
          'parent' => {},
          'text' => 'result: '
        },
        {
          'args' => [
            {
              'contents' => [
                {
                  'args' => [
                    {
                      'contents' => [
                        {
                          'parent' => {},
                          'text' => 'f\\irst arg'
                        }
                      ],
                      'parent' => {},
                      'type' => 'brace_command_arg'
                    }
                  ],
                  'cmdname' => 'samp',
                  'contents' => [],
                  'line_nr' => {
                    'file_name' => '',
                    'line_nr' => 5,
                    'macro' => 'macroone'
                  },
                  'parent' => {}
                }
              ],
              'parent' => {},
              'type' => 'brace_command_arg'
            }
          ],
          'cmdname' => 'emph',
          'contents' => [],
          'line_nr' => {},
          'parent' => {}
        },
        {
          'parent' => {},
          'text' => ' protected \\ -> \\arg1\\ '
        },
        {
          'args' => [
            {
              'contents' => [],
              'parent' => {},
              'type' => 'brace_command_arg'
            }
          ],
          'cmdname' => 'emph',
          'contents' => [],
          'line_nr' => {},
          'parent' => {}
        },
        {
          'parent' => {},
          'text' => '
'
        }
      ],
      'parent' => {},
      'type' => 'paragraph'
    }
  ],
  'type' => 'text_root'
};
$result_trees{'protect_in_body_one_arg'}{'contents'}[0]{'args'}[0]{'parent'} = $result_trees{'protect_in_body_one_arg'}{'contents'}[0];
$result_trees{'protect_in_body_one_arg'}{'contents'}[0]{'args'}[1]{'parent'} = $result_trees{'protect_in_body_one_arg'}{'contents'}[0];
$result_trees{'protect_in_body_one_arg'}{'contents'}[0]{'args'}[2]{'parent'} = $result_trees{'protect_in_body_one_arg'}{'contents'}[0];
$result_trees{'protect_in_body_one_arg'}{'contents'}[0]{'contents'}[0]{'parent'} = $result_trees{'protect_in_body_one_arg'}{'contents'}[0];
$result_trees{'protect_in_body_one_arg'}{'contents'}[0]{'contents'}[1]{'parent'} = $result_trees{'protect_in_body_one_arg'}{'contents'}[0];
$result_trees{'protect_in_body_one_arg'}{'contents'}[0]{'parent'} = $result_trees{'protect_in_body_one_arg'};
$result_trees{'protect_in_body_one_arg'}{'contents'}[1]{'extra'}{'command'} = $result_trees{'protect_in_body_one_arg'}{'contents'}[0];
$result_trees{'protect_in_body_one_arg'}{'contents'}[1]{'parent'} = $result_trees{'protect_in_body_one_arg'};
$result_trees{'protect_in_body_one_arg'}{'contents'}[2]{'parent'} = $result_trees{'protect_in_body_one_arg'};
$result_trees{'protect_in_body_one_arg'}{'contents'}[3]{'contents'}[0]{'parent'} = $result_trees{'protect_in_body_one_arg'}{'contents'}[3];
$result_trees{'protect_in_body_one_arg'}{'contents'}[3]{'contents'}[1]{'args'}[0]{'contents'}[0]{'args'}[0]{'contents'}[0]{'parent'} = $result_trees{'protect_in_body_one_arg'}{'contents'}[3]{'contents'}[1]{'args'}[0]{'contents'}[0]{'args'}[0];
$result_trees{'protect_in_body_one_arg'}{'contents'}[3]{'contents'}[1]{'args'}[0]{'contents'}[0]{'args'}[0]{'parent'} = $result_trees{'protect_in_body_one_arg'}{'contents'}[3]{'contents'}[1]{'args'}[0]{'contents'}[0];
$result_trees{'protect_in_body_one_arg'}{'contents'}[3]{'contents'}[1]{'args'}[0]{'contents'}[0]{'parent'} = $result_trees{'protect_in_body_one_arg'}{'contents'}[3]{'contents'}[1]{'args'}[0];
$result_trees{'protect_in_body_one_arg'}{'contents'}[3]{'contents'}[1]{'args'}[0]{'parent'} = $result_trees{'protect_in_body_one_arg'}{'contents'}[3]{'contents'}[1];
$result_trees{'protect_in_body_one_arg'}{'contents'}[3]{'contents'}[1]{'line_nr'} = $result_trees{'protect_in_body_one_arg'}{'contents'}[3]{'contents'}[1]{'args'}[0]{'contents'}[0]{'line_nr'};
$result_trees{'protect_in_body_one_arg'}{'contents'}[3]{'contents'}[1]{'parent'} = $result_trees{'protect_in_body_one_arg'}{'contents'}[3];
$result_trees{'protect_in_body_one_arg'}{'contents'}[3]{'contents'}[2]{'parent'} = $result_trees{'protect_in_body_one_arg'}{'contents'}[3];
$result_trees{'protect_in_body_one_arg'}{'contents'}[3]{'contents'}[3]{'args'}[0]{'parent'} = $result_trees{'protect_in_body_one_arg'}{'contents'}[3]{'contents'}[3];
$result_trees{'protect_in_body_one_arg'}{'contents'}[3]{'contents'}[3]{'line_nr'} = $result_trees{'protect_in_body_one_arg'}{'contents'}[3]{'contents'}[1]{'args'}[0]{'contents'}[0]{'line_nr'};
$result_trees{'protect_in_body_one_arg'}{'contents'}[3]{'contents'}[3]{'parent'} = $result_trees{'protect_in_body_one_arg'}{'contents'}[3];
$result_trees{'protect_in_body_one_arg'}{'contents'}[3]{'contents'}[4]{'parent'} = $result_trees{'protect_in_body_one_arg'}{'contents'}[3];
$result_trees{'protect_in_body_one_arg'}{'contents'}[3]{'parent'} = $result_trees{'protect_in_body_one_arg'};

$result_texis{'protect_in_body_one_arg'} = '@macro macroone { arg1 , arg2 }
result: @emph{\\arg1\\} protected \\\\ -> \\\\arg1\\\\ @emph{\\arg2\\}
@end macro

result: @emph{@samp{f\\irst arg}} protected \\ -> \\arg1\\ @emph{}
';

$result_texts{'protect_in_body_one_arg'} = '
result: f\\irst arg protected \\ -> \\arg1\\
';

$result_errors{'protect_in_body_one_arg'} = [];

1;


code:
use vars qw(%result_texis %result_texts %result_trees %result_errors
   %result_indices %result_sectioning %result_nodes %result_menus
   %result_floats %result_converted %result_converted_errors
   %result_elements %result_directions_text);

use utf8;

$result_trees{'recursive_call_in_argument'} = {
  'contents' => [
    {
      'args' => [
        {
          'parent' => {},
          'text' => 'anorecurse',
          'type' => 'macro_name'
        },
        {
          'parent' => {},
          'text' => 'arg',
          'type' => 'macro_arg'
        }
      ],
      'cmdname' => 'macro',
      'contents' => [
        {
          'parent' => {},
          'text' => 'a',
          'type' => 'raw'
        },
        {
          'parent' => {},
          'text' => '
',
          'type' => 'last_raw_newline'
        }
      ],
      'extra' => {
        'arg_line' => ' anorecurse{arg}
'
      },
      'line_nr' => {
        'file_name' => '',
        'line_nr' => 1,
        'macro' => ''
      },
      'parent' => {}
    },
    {
      'extra' => {
        'command' => {}
      },
      'parent' => {},
      'text' => '
',
      'type' => 'empty_line_after_command'
    },
    {
      'parent' => {},
      'text' => '
',
      'type' => 'empty_line'
    },
    {
      'contents' => [
        {
          'parent' => {},
          'text' => 'a
'
        }
      ],
      'parent' => {},
      'type' => 'paragraph'
    }
  ],
  'type' => 'text_root'
};
$result_trees{'recursive_call_in_argument'}{'contents'}[0]{'args'}[0]{'parent'} = $result_trees{'recursive_call_in_argument'}{'contents'}[0];
$result_trees{'recursive_call_in_argument'}{'contents'}[0]{'args'}[1]{'parent'} = $result_trees{'recursive_call_in_argument'}{'contents'}[0];
$result_trees{'recursive_call_in_argument'}{'contents'}[0]{'contents'}[0]{'parent'} = $result_trees{'recursive_call_in_argument'}{'contents'}[0];
$result_trees{'recursive_call_in_argument'}{'contents'}[0]{'contents'}[1]{'parent'} = $result_trees{'recursive_call_in_argument'}{'contents'}[0];
$result_trees{'recursive_call_in_argument'}{'contents'}[0]{'parent'} = $result_trees{'recursive_call_in_argument'};
$result_trees{'recursive_call_in_argument'}{'contents'}[1]{'extra'}{'command'} = $result_trees{'recursive_call_in_argument'}{'contents'}[0];
$result_trees{'recursive_call_in_argument'}{'contents'}[1]{'parent'} = $result_trees{'recursive_call_in_argument'};
$result_trees{'recursive_call_in_argument'}{'contents'}[2]{'parent'} = $result_trees{'recursive_call_in_argument'};
$result_trees{'recursive_call_in_argument'}{'contents'}[3]{'contents'}[0]{'parent'} = $result_trees{'recursive_call_in_argument'}{'contents'}[3];
$result_trees{'recursive_call_in_argument'}{'contents'}[3]{'parent'} = $result_trees{'recursive_call_in_argument'};

$result_texis{'recursive_call_in_argument'} = '@macro anorecurse{arg}
a
@end macro

a
';

$result_texts{'recursive_call_in_argument'} = '
a
';

$result_errors{'recursive_call_in_argument'} = [];

1;


code:
use vars qw(%result_texis %result_texts %result_trees %result_errors
   %result_indices %result_sectioning %result_nodes %result_menus
   %result_floats %result_converted %result_converted_errors
   %result_elements %result_directions_text);

use utf8;

$result_trees{'recursive_call_in_macro'} = {
  'contents' => [
    {
      'args' => [
        {
          'parent' => {},
          'text' => 'anorecurse',
          'type' => 'macro_name'
        },
        {
          'parent' => {},
          'text' => 'arg',
          'type' => 'macro_arg'
        }
      ],
      'cmdname' => 'macro',
      'contents' => [
        {
          'parent' => {},
          'text' => '@anorecurse{arg}',
          'type' => 'raw'
        },
        {
          'parent' => {},
          'text' => '
',
          'type' => 'last_raw_newline'
        }
      ],
      'extra' => {
        'arg_line' => ' anorecurse{arg}
'
      },
      'line_nr' => {
        'file_name' => '',
        'line_nr' => 1,
        'macro' => ''
      },
      'parent' => {}
    },
    {
      'extra' => {
        'command' => {}
      },
      'parent' => {},
      'text' => '
',
      'type' => 'empty_line_after_command'
    },
    {
      'parent' => {},
      'text' => '
',
      'type' => 'empty_line'
    },
    {
      'parent' => {},
      'text' => '
',
      'type' => 'empty_line'
    }
  ],
  'type' => 'text_root'
};
$result_trees{'recursive_call_in_macro'}{'contents'}[0]{'args'}[0]{'parent'} = $result_trees{'recursive_call_in_macro'}{'contents'}[0];
$result_trees{'recursive_call_in_macro'}{'contents'}[0]{'args'}[1]{'parent'} = $result_trees{'recursive_call_in_macro'}{'contents'}[0];
$result_trees{'recursive_call_in_macro'}{'contents'}[0]{'contents'}[0]{'parent'} = $result_trees{'recursive_call_in_macro'}{'contents'}[0];
$result_trees{'recursive_call_in_macro'}{'contents'}[0]{'contents'}[1]{'parent'} = $result_trees{'recursive_call_in_macro'}{'contents'}[0];
$result_trees{'recursive_call_in_macro'}{'contents'}[0]{'parent'} = $result_trees{'recursive_call_in_macro'};
$result_trees{'recursive_call_in_macro'}{'contents'}[1]{'extra'}{'command'} = $result_trees{'recursive_call_in_macro'}{'contents'}[0];
$result_trees{'recursive_call_in_macro'}{'contents'}[1]{'parent'} = $result_trees{'recursive_call_in_macro'};
$result_trees{'recursive_call_in_macro'}{'contents'}[2]{'parent'} = $result_trees{'recursive_call_in_macro'};
$result_trees{'recursive_call_in_macro'}{'contents'}[3]{'parent'} = $result_trees{'recursive_call_in_macro'};

$result_texis{'recursive_call_in_macro'} = '@macro anorecurse{arg}
@anorecurse{arg}
@end macro

';

$result_texts{'recursive_call_in_macro'} = '

';

$result_errors{'recursive_call_in_macro'} = [
  {
    'error_line' => ':5: recursive call of macro anorecurse is not allowed; use @rmacro if needed (possibly involving @anorecurse)
',
    'file_name' => '',
    'line_nr' => 5,
    'macro' => 'anorecurse',
    'text' => 'recursive call of macro anorecurse is not allowed; use @rmacro if needed',
    'type' => 'error'
  }
];

1;


code:
use vars qw(%result_texis %result_texts %result_trees %result_errors
   %result_indices %result_sectioning %result_nodes %result_menus
   %result_floats %result_converted %result_converted_errors
   %result_elements %result_directions_text);

use utf8;

$result_trees{'redefine_texinfo_macro'} = {
  'contents' => [
    {
      'args' => [
        {
          'parent' => {},
          'text' => 'code',
          'type' => 'macro_name'
        },
        {
          'parent' => {},
          'text' => 'arg',
          'type' => 'macro_arg'
        }
      ],
      'cmdname' => 'macro',
      'contents' => [
        {
          'parent' => {},
          'text' => '@emph{\\arg\\}',
          'type' => 'raw'
        },
        {
          'parent' => {},
          'text' => '
',
          'type' => 'last_raw_newline'
        }
      ],
      'extra' => {
        'arg_line' => ' code{arg}
'
      },
      'line_nr' => {
        'file_name' => '',
        'line_nr' => 1,
        'macro' => ''
      },
      'parent' => {}
    },
    {
      'extra' => {
        'command' => {}
      },
      'parent' => {},
      'text' => '
',
      'type' => 'empty_line_after_command'
    },
    {
      'parent' => {},
      'text' => '
',
      'type' => 'empty_line'
    },
    {
      'contents' => [
        {
          'args' => [
            {
              'contents' => [
                {
                  'parent' => {},
                  'text' => 'code'
                }
              ],
              'parent' => {},
              'type' => 'brace_command_arg'
            }
          ],
          'cmdname' => 'emph',
          'contents' => [],
          'line_nr' => {
            'file_name' => '',
            'line_nr' => 5,
            'macro' => 'code'
          },
          'parent' => {}
        },
        {
          'parent' => {},
          'text' => '
'
        }
      ],
      'parent' => {},
      'type' => 'paragraph'
    }
  ],
  'type' => 'text_root'
};
$result_trees{'redefine_texinfo_macro'}{'contents'}[0]{'args'}[0]{'parent'} = $result_trees{'redefine_texinfo_macro'}{'contents'}[0];
$result_trees{'redefine_texinfo_macro'}{'contents'}[0]{'args'}[1]{'parent'} = $result_trees{'redefine_texinfo_macro'}{'contents'}[0];
$result_trees{'redefine_texinfo_macro'}{'contents'}[0]{'contents'}[0]{'parent'} = $result_trees{'redefine_texinfo_macro'}{'contents'}[0];
$result_trees{'redefine_texinfo_macro'}{'contents'}[0]{'contents'}[1]{'parent'} = $result_trees{'redefine_texinfo_macro'}{'contents'}[0];
$result_trees{'redefine_texinfo_macro'}{'contents'}[0]{'parent'} = $result_trees{'redefine_texinfo_macro'};
$result_trees{'redefine_texinfo_macro'}{'contents'}[1]{'extra'}{'command'} = $result_trees{'redefine_texinfo_macro'}{'contents'}[0];
$result_trees{'redefine_texinfo_macro'}{'contents'}[1]{'parent'} = $result_trees{'redefine_texinfo_macro'};
$result_trees{'redefine_texinfo_macro'}{'contents'}[2]{'parent'} = $result_trees{'redefine_texinfo_macro'};
$result_trees{'redefine_texinfo_macro'}{'contents'}[3]{'contents'}[0]{'args'}[0]{'contents'}[0]{'parent'} = $result_trees{'redefine_texinfo_macro'}{'contents'}[3]{'contents'}[0]{'args'}[0];
$result_trees{'redefine_texinfo_macro'}{'contents'}[3]{'contents'}[0]{'args'}[0]{'parent'} = $result_trees{'redefine_texinfo_macro'}{'contents'}[3]{'contents'}[0];
$result_trees{'redefine_texinfo_macro'}{'contents'}[3]{'contents'}[0]{'parent'} = $result_trees{'redefine_texinfo_macro'}{'contents'}[3];
$result_trees{'redefine_texinfo_macro'}{'contents'}[3]{'contents'}[1]{'parent'} = $result_trees{'redefine_texinfo_macro'}{'contents'}[3];
$result_trees{'redefine_texinfo_macro'}{'contents'}[3]{'parent'} = $result_trees{'redefine_texinfo_macro'};

$result_texis{'redefine_texinfo_macro'} = '@macro code{arg}
@emph{\\arg\\}
@end macro

@emph{code}
';

$result_texts{'redefine_texinfo_macro'} = '
code
';

$result_errors{'redefine_texinfo_macro'} = [
  {
    'error_line' => ':1: warning: redefining Texinfo language command: @code
',
    'file_name' => '',
    'line_nr' => 1,
    'macro' => '',
    'text' => 'redefining Texinfo language command: @code',
    'type' => 'warning'
  }
];

1;


code:
use vars qw(%result_texis %result_texts %result_trees %result_errors
   %result_indices %result_sectioning %result_nodes %result_menus
   %result_floats %result_converted %result_converted_errors
   %result_elements %result_directions_text);

use utf8;

$result_trees{'simple_imbricated_macro'} = {
  'contents' => [
    {
      'args' => [
        {
          'parent' => {},
          'text' => 'truc',
          'type' => 'macro_name'
        }
      ],
      'cmdname' => 'macro',
      'contents' => [
        {
          'parent' => {},
          'text' => 'truc.
',
          'type' => 'raw'
        },
        {
          'cmdname' => 'macro',
          'contents' => [
            {
              'parent' => {},
              'text' => 'bidule.',
              'type' => 'raw'
            },
            {
              'parent' => {},
              'text' => '
',
              'type' => 'last_raw_newline'
            }
          ],
          'extra' => {
            'arg_line' => ' bidule {}
'
          },
          'parent' => {}
        },
        {
          'extra' => {
            'command' => {}
          },
          'parent' => {},
          'text' => '
',
          'type' => 'empty_line_after_command'
        }
      ],
      'extra' => {
        'arg_line' => ' truc {}
'
      },
      'line_nr' => {
        'file_name' => '',
        'line_nr' => 1,
        'macro' => ''
      },
      'parent' => {}
    },
    {
      'extra' => {
        'command' => {}
      },
      'parent' => {},
      'text' => '
',
      'type' => 'empty_line_after_command'
    },
    {
      'parent' => {},
      'text' => '
',
      'type' => 'empty_line'
    },
    {
      'contents' => [
        {
          'parent' => {},
          'text' => 'truc.
'
        },
        {
          'args' => [
            {
              'parent' => {},
              'text' => 'bidule',
              'type' => 'macro_name'
            }
          ],
          'cmdname' => 'macro',
          'contents' => [
            {
              'parent' => {},
              'text' => 'bidule.',
              'type' => 'raw'
            },
            {
              'parent' => {},
              'text' => '
',
              'type' => 'last_raw_newline'
            }
          ],
          'extra' => {
            'arg_line' => ' bidule {}
'
          },
          'line_nr' => {
            'file_name' => '',
            'line_nr' => 8,
            'macro' => 'truc'
          },
          'parent' => {}
        },
        {
          'extra' => {
            'command' => {}
          },
          'parent' => {},
          'text' => '
',
          'type' => 'empty_line_after_command'
        }
      ],
      'parent' => {},
      'type' => 'paragraph'
    },
    {
      'parent' => {},
      'text' => '
',
      'type' => 'empty_line'
    },
    {
      'contents' => [
        {
          'parent' => {},
          'text' => 'bidule.
'
        }
      ],
      'parent' => {},
      'type' => 'paragraph'
    }
  ],
  'type' => 'text_root'
};
$result_trees{'simple_imbricated_macro'}{'contents'}[0]{'args'}[0]{'parent'} = $result_trees{'simple_imbricated_macro'}{'contents'}[0];
$result_trees{'simple_imbricated_macro'}{'contents'}[0]{'contents'}[0]{'parent'} = $result_trees{'simple_imbricated_macro'}{'contents'}[0];
$result_trees{'simple_imbricated_macro'}{'contents'}[0]{'contents'}[1]{'contents'}[0]{'parent'} = $result_trees{'simple_imbricated_macro'}{'contents'}[0]{'contents'}[1];
$result_trees{'simple_imbricated_macro'}{'contents'}[0]{'contents'}[1]{'contents'}[1]{'parent'} = $result_trees{'simple_imbricated_macro'}{'contents'}[0]{'contents'}[1];
$result_trees{'simple_imbricated_macro'}{'contents'}[0]{'contents'}[1]{'parent'} = $result_trees{'simple_imbricated_macro'}{'contents'}[0];
$result_trees{'simple_imbricated_macro'}{'contents'}[0]{'contents'}[2]{'extra'}{'command'} = $result_trees{'simple_imbricated_macro'}{'contents'}[0]{'contents'}[1];
$result_trees{'simple_imbricated_macro'}{'contents'}[0]{'contents'}[2]{'parent'} = $result_trees{'simple_imbricated_macro'}{'contents'}[0];
$result_trees{'simple_imbricated_macro'}{'contents'}[0]{'parent'} = $result_trees{'simple_imbricated_macro'};
$result_trees{'simple_imbricated_macro'}{'contents'}[1]{'extra'}{'command'} = $result_trees{'simple_imbricated_macro'}{'contents'}[0];
$result_trees{'simple_imbricated_macro'}{'contents'}[1]{'parent'} = $result_trees{'simple_imbricated_macro'};
$result_trees{'simple_imbricated_macro'}{'contents'}[2]{'parent'} = $result_trees{'simple_imbricated_macro'};
$result_trees{'simple_imbricated_macro'}{'contents'}[3]{'contents'}[0]{'parent'} = $result_trees{'simple_imbricated_macro'}{'contents'}[3];
$result_trees{'simple_imbricated_macro'}{'contents'}[3]{'contents'}[1]{'args'}[0]{'parent'} = $result_trees{'simple_imbricated_macro'}{'contents'}[3]{'contents'}[1];
$result_trees{'simple_imbricated_macro'}{'contents'}[3]{'contents'}[1]{'contents'}[0]{'parent'} = $result_trees{'simple_imbricated_macro'}{'contents'}[3]{'contents'}[1];
$result_trees{'simple_imbricated_macro'}{'contents'}[3]{'contents'}[1]{'contents'}[1]{'parent'} = $result_trees{'simple_imbricated_macro'}{'contents'}[3]{'contents'}[1];
$result_trees{'simple_imbricated_macro'}{'contents'}[3]{'contents'}[1]{'parent'} = $result_trees{'simple_imbricated_macro'}{'contents'}[3];
$result_trees{'simple_imbricated_macro'}{'contents'}[3]{'contents'}[2]{'extra'}{'command'} = $result_trees{'simple_imbricated_macro'}{'contents'}[3]{'contents'}[1];
$result_trees{'simple_imbricated_macro'}{'contents'}[3]{'contents'}[2]{'parent'} = $result_trees{'simple_imbricated_macro'}{'contents'}[3];
$result_trees{'simple_imbricated_macro'}{'contents'}[3]{'parent'} = $result_trees{'simple_imbricated_macro'};
$result_trees{'simple_imbricated_macro'}{'contents'}[4]{'parent'} = $result_trees{'simple_imbricated_macro'};
$result_trees{'simple_imbricated_macro'}{'contents'}[5]{'contents'}[0]{'parent'} = $result_trees{'simple_imbricated_macro'}{'contents'}[5];
$result_trees{'simple_imbricated_macro'}{'contents'}[5]{'parent'} = $result_trees{'simple_imbricated_macro'};

$result_texis{'simple_imbricated_macro'} = '@macro truc {}
truc.
@macro bidule {}
bidule.
@end macro
@end macro

truc.
@macro bidule {}
bidule.
@end macro

bidule.
';

$result_texts{'simple_imbricated_macro'} = '
truc.

bidule.
';

$result_errors{'simple_imbricated_macro'} = [];

1;


code:
use vars qw(%result_texis %result_texts %result_trees %result_errors
   %result_indices %result_sectioning %result_nodes %result_menus
   %result_floats %result_converted %result_converted_errors
   %result_elements %result_directions_text);

use utf8;

$result_trees{'space_macro_after_end'} = {
  'contents' => [
    {
      'args' => [
        {
          'parent' => {},
          'text' => 'spaces',
          'type' => 'macro_name'
        }
      ],
      'cmdname' => 'macro',
      'contents' => [
        {
          'parent' => {},
          'text' => '  ',
          'type' => 'raw'
        },
        {
          'parent' => {},
          'text' => '
',
          'type' => 'last_raw_newline'
        }
      ],
      'extra' => {
        'arg_line' => ' spaces
'
      },
      'line_nr' => {
        'file_name' => '',
        'line_nr' => 1,
        'macro' => ''
      },
      'parent' => {}
    },
    {
      'extra' => {
        'command' => {}
      },
      'parent' => {},
      'text' => '
',
      'type' => 'empty_line_after_command'
    },
    {
      'parent' => {},
      'text' => '
',
      'type' => 'empty_line'
    },
    {
      'cmdname' => 'html',
      'contents' => [
        {
          'extra' => {
            'command' => {}
          },
          'parent' => {},
          'text' => '
',
          'type' => 'empty_line_after_command'
        },
        {
          'contents' => [
            {
              'parent' => {},
              'text' => 'in html
'
            }
          ],
          'parent' => {},
          'type' => 'rawpreformatted'
        },
        {
          'args' => [
            {
              'contents' => [
                {
                  'extra' => {
                    'command' => {}
                  },
                  'parent' => {},
                  'text' => ' ',
                  'type' => 'empty_spaces_after_command'
                },
                {
                  'parent' => {},
                  'text' => 'html'
                },
                {
                  'parent' => {},
                  'text' => '   ',
                  'type' => 'spaces_at_end'
                }
              ],
              'parent' => {},
              'type' => 'misc_line_arg'
            }
          ],
          'cmdname' => 'end',
          'extra' => {
            'command' => {},
            'command_argument' => 'html',
            'spaces_after_command' => {},
            'text_arg' => 'html'
          },
          'line_nr' => {
            'file_name' => '',
            'line_nr' => 7,
            'macro' => ''
          },
          'parent' => {}
        }
      ],
      'extra' => {
        'end_command' => {},
        'spaces_after_command' => {}
      },
      'line_nr' => {
        'file_name' => '',
        'line_nr' => 5,
        'macro' => ''
      },
      'parent' => {}
    }
  ],
  'type' => 'text_root'
};
$result_trees{'space_macro_after_end'}{'contents'}[0]{'args'}[0]{'parent'} = $result_trees{'space_macro_after_end'}{'contents'}[0];
$result_trees{'space_macro_after_end'}{'contents'}[0]{'contents'}[0]{'parent'} = $result_trees{'space_macro_after_end'}{'contents'}[0];
$result_trees{'space_macro_after_end'}{'contents'}[0]{'contents'}[1]{'parent'} = $result_trees{'space_macro_after_end'}{'contents'}[0];
$result_trees{'space_macro_after_end'}{'contents'}[0]{'parent'} = $result_trees{'space_macro_after_end'};
$result_trees{'space_macro_after_end'}{'contents'}[1]{'extra'}{'command'} = $result_trees{'space_macro_after_end'}{'contents'}[0];
$result_trees{'space_macro_after_end'}{'contents'}[1]{'parent'} = $result_trees{'space_macro_after_end'};
$result_trees{'space_macro_after_end'}{'contents'}[2]{'parent'} = $result_trees{'space_macro_after_end'};
$result_trees{'space_macro_after_end'}{'contents'}[3]{'contents'}[0]{'extra'}{'command'} = $result_trees{'space_macro_after_end'}{'contents'}[3];
$result_trees{'space_macro_after_end'}{'contents'}[3]{'contents'}[0]{'parent'} = $result_trees{'space_macro_after_end'}{'contents'}[3];
$result_trees{'space_macro_after_end'}{'contents'}[3]{'contents'}[1]{'contents'}[0]{'parent'} = $result_trees{'space_macro_after_end'}{'contents'}[3]{'contents'}[1];
$result_trees{'space_macro_after_end'}{'contents'}[3]{'contents'}[1]{'parent'} = $result_trees{'space_macro_after_end'}{'contents'}[3];
$result_trees{'space_macro_after_end'}{'contents'}[3]{'contents'}[2]{'args'}[0]{'contents'}[0]{'extra'}{'command'} = $result_trees{'space_macro_after_end'}{'contents'}[3]{'contents'}[2];
$result_trees{'space_macro_after_end'}{'contents'}[3]{'contents'}[2]{'args'}[0]{'contents'}[0]{'parent'} = $result_trees{'space_macro_after_end'}{'contents'}[3]{'contents'}[2]{'args'}[0];
$result_trees{'space_macro_after_end'}{'contents'}[3]{'contents'}[2]{'args'}[0]{'contents'}[1]{'parent'} = $result_trees{'space_macro_after_end'}{'contents'}[3]{'contents'}[2]{'args'}[0];
$result_trees{'space_macro_after_end'}{'contents'}[3]{'contents'}[2]{'args'}[0]{'contents'}[2]{'parent'} = $result_trees{'space_macro_after_end'}{'contents'}[3]{'contents'}[2]{'args'}[0];
$result_trees{'space_macro_after_end'}{'contents'}[3]{'contents'}[2]{'args'}[0]{'parent'} = $result_trees{'space_macro_after_end'}{'contents'}[3]{'contents'}[2];
$result_trees{'space_macro_after_end'}{'contents'}[3]{'contents'}[2]{'extra'}{'command'} = $result_trees{'space_macro_after_end'}{'contents'}[3];
$result_trees{'space_macro_after_end'}{'contents'}[3]{'contents'}[2]{'extra'}{'spaces_after_command'} = $result_trees{'space_macro_after_end'}{'contents'}[3]{'contents'}[2]{'args'}[0]{'contents'}[0];
$result_trees{'space_macro_after_end'}{'contents'}[3]{'contents'}[2]{'parent'} = $result_trees{'space_macro_after_end'}{'contents'}[3];
$result_trees{'space_macro_after_end'}{'contents'}[3]{'extra'}{'end_command'} = $result_trees{'space_macro_after_end'}{'contents'}[3]{'contents'}[2];
$result_trees{'space_macro_after_end'}{'contents'}[3]{'extra'}{'spaces_after_command'} = $result_trees{'space_macro_after_end'}{'contents'}[3]{'contents'}[0];
$result_trees{'space_macro_after_end'}{'contents'}[3]{'parent'} = $result_trees{'space_macro_after_end'};

$result_texis{'space_macro_after_end'} = '@macro spaces

@end macro

@html
in html
@end html   ';

$result_texts{'space_macro_after_end'} = '
';

$result_errors{'space_macro_after_end'} = [];

1;


code:
use vars qw(%result_texis %result_texts %result_trees %result_errors
   %result_indices %result_sectioning %result_nodes %result_menus
   %result_floats %result_converted %result_converted_errors
   %result_elements %result_directions_text);

use utf8;

$result_trees{'space_macro_after_end_verbatim'} = {
  'contents' => [
    {
      'args' => [
        {
          'parent' => {},
          'text' => 'spaces',
          'type' => 'macro_name'
        }
      ],
      'cmdname' => 'macro',
      'contents' => [
        {
          'parent' => {},
          'text' => '',
          'type' => 'raw'
        },
        {
          'parent' => {},
          'text' => '
',
          'type' => 'last_raw_newline'
        }
      ],
      'extra' => {
        'arg_line' => ' spaces
'
      },
      'line_nr' => {
        'file_name' => '',
        'line_nr' => 1,
        'macro' => ''
      },
      'parent' => {}
    },
    {
      'extra' => {
        'command' => {}
      },
      'parent' => {},
      'text' => '
',
      'type' => 'empty_line_after_command'
    },
    {
      'parent' => {},
      'text' => '
',
      'type' => 'empty_line'
    },
    {
      'cmdname' => 'verbatim',
      'contents' => [
        {
          'extra' => {
            'command' => {}
          },
          'parent' => {},
          'text' => '
',
          'type' => 'empty_line_after_command'
        },
        {
          'parent' => {},
          'text' => 'in verbatim
',
          'type' => 'raw'
        }
      ],
      'extra' => {
        'spaces_after_command' => {}
      },
      'line_nr' => {
        'file_name' => '',
        'line_nr' => 5,
        'macro' => ''
      },
      'parent' => {}
    },
    {
      'extra' => {
        'command' => {}
      },
      'parent' => {},
      'text' => ' ',
      'type' => 'empty_line_after_command'
    }
  ],
  'type' => 'text_root'
};
$result_trees{'space_macro_after_end_verbatim'}{'contents'}[0]{'args'}[0]{'parent'} = $result_trees{'space_macro_after_end_verbatim'}{'contents'}[0];
$result_trees{'space_macro_after_end_verbatim'}{'contents'}[0]{'contents'}[0]{'parent'} = $result_trees{'space_macro_after_end_verbatim'}{'contents'}[0];
$result_trees{'space_macro_after_end_verbatim'}{'contents'}[0]{'contents'}[1]{'parent'} = $result_trees{'space_macro_after_end_verbatim'}{'contents'}[0];
$result_trees{'space_macro_after_end_verbatim'}{'contents'}[0]{'parent'} = $result_trees{'space_macro_after_end_verbatim'};
$result_trees{'space_macro_after_end_verbatim'}{'contents'}[1]{'extra'}{'command'} = $result_trees{'space_macro_after_end_verbatim'}{'contents'}[0];
$result_trees{'space_macro_after_end_verbatim'}{'contents'}[1]{'parent'} = $result_trees{'space_macro_after_end_verbatim'};
$result_trees{'space_macro_after_end_verbatim'}{'contents'}[2]{'parent'} = $result_trees{'space_macro_after_end_verbatim'};
$result_trees{'space_macro_after_end_verbatim'}{'contents'}[3]{'contents'}[0]{'extra'}{'command'} = $result_trees{'space_macro_after_end_verbatim'}{'contents'}[3];
$result_trees{'space_macro_after_end_verbatim'}{'contents'}[3]{'contents'}[0]{'parent'} = $result_trees{'space_macro_after_end_verbatim'}{'contents'}[3];
$result_trees{'space_macro_after_end_verbatim'}{'contents'}[3]{'contents'}[1]{'parent'} = $result_trees{'space_macro_after_end_verbatim'}{'contents'}[3];
$result_trees{'space_macro_after_end_verbatim'}{'contents'}[3]{'extra'}{'spaces_after_command'} = $result_trees{'space_macro_after_end_verbatim'}{'contents'}[3]{'contents'}[0];
$result_trees{'space_macro_after_end_verbatim'}{'contents'}[3]{'parent'} = $result_trees{'space_macro_after_end_verbatim'};
$result_trees{'space_macro_after_end_verbatim'}{'contents'}[4]{'extra'}{'command'} = $result_trees{'space_macro_after_end_verbatim'}{'contents'}[3];
$result_trees{'space_macro_after_end_verbatim'}{'contents'}[4]{'parent'} = $result_trees{'space_macro_after_end_verbatim'};

$result_texis{'space_macro_after_end_verbatim'} = '@macro spaces

@end macro

@verbatim
in verbatim
@end verbatim ';

$result_texts{'space_macro_after_end_verbatim'} = '
in verbatim
';

$result_errors{'space_macro_after_end_verbatim'} = [
  {
    'error_line' => ':7: warning: superfluous argument to @end verbatim:  @spaces{}
',
    'file_name' => '',
    'line_nr' => 7,
    'macro' => '',
    'text' => 'superfluous argument to @end verbatim:  @spaces{}',
    'type' => 'warning'
  }
];

1;


code:
use vars qw(%result_texis %result_texts %result_trees %result_errors
   %result_indices %result_sectioning %result_nodes %result_menus
   %result_floats %result_converted %result_converted_errors
   %result_elements %result_directions_text);

use utf8;

$result_trees{'text_before_after'} = {
  'contents' => [
    {
      'contents' => [
        {
          'parent' => {},
          'text' => 'before '
        },
        {
          'args' => [
            {
              'parent' => {},
              'text' => 'mymacro',
              'type' => 'macro_name'
            }
          ],
          'cmdname' => 'macro',
          'contents' => [
            {
              'parent' => {},
              'text' => 'in macro',
              'type' => 'raw'
            },
            {
              'parent' => {},
              'text' => '
',
              'type' => 'last_raw_newline'
            }
          ],
          'extra' => {
            'arg_line' => ' mymacro
'
          },
          'line_nr' => {
            'file_name' => '',
            'line_nr' => 1,
            'macro' => ''
          },
          'parent' => {}
        },
        {
          'extra' => {
            'command' => {}
          },
          'parent' => {},
          'text' => ' ',
          'type' => 'empty_spaces_after_command'
        },
        {
          'parent' => {},
          'text' => 'after
'
        }
      ],
      'parent' => {},
      'type' => 'paragraph'
    }
  ],
  'type' => 'text_root'
};
$result_trees{'text_before_after'}{'contents'}[0]{'contents'}[0]{'parent'} = $result_trees{'text_before_after'}{'contents'}[0];
$result_trees{'text_before_after'}{'contents'}[0]{'contents'}[1]{'args'}[0]{'parent'} = $result_trees{'text_before_after'}{'contents'}[0]{'contents'}[1];
$result_trees{'text_before_after'}{'contents'}[0]{'contents'}[1]{'contents'}[0]{'parent'} = $result_trees{'text_before_after'}{'contents'}[0]{'contents'}[1];
$result_trees{'text_before_after'}{'contents'}[0]{'contents'}[1]{'contents'}[1]{'parent'} = $result_trees{'text_before_after'}{'contents'}[0]{'contents'}[1];
$result_trees{'text_before_after'}{'contents'}[0]{'contents'}[1]{'parent'} = $result_trees{'text_before_after'}{'contents'}[0];
$result_trees{'text_before_after'}{'contents'}[0]{'contents'}[2]{'extra'}{'command'} = $result_trees{'text_before_after'}{'contents'}[0]{'contents'}[1];
$result_trees{'text_before_after'}{'contents'}[0]{'contents'}[2]{'parent'} = $result_trees{'text_before_after'}{'contents'}[0];
$result_trees{'text_before_after'}{'contents'}[0]{'contents'}[3]{'parent'} = $result_trees{'text_before_after'}{'contents'}[0];
$result_trees{'text_before_after'}{'contents'}[0]{'parent'} = $result_trees{'text_before_after'};

$result_texis{'text_before_after'} = 'before @macro mymacro
in macro
@end macro after
';

$result_texts{'text_before_after'} = 'before after
';

$result_errors{'text_before_after'} = [
  {
    'error_line' => ':1: warning: @macro should only appear at the beginning of a line
',
    'file_name' => '',
    'line_nr' => 1,
    'macro' => '',
    'text' => '@macro should only appear at the beginning of a line',
    'type' => 'warning'
  },
  {
    'error_line' => ':3: warning: superfluous argument to @end macro:  after
',
    'file_name' => '',
    'line_nr' => 3,
    'macro' => '',
    'text' => 'superfluous argument to @end macro:  after',
    'type' => 'warning'
  }
];

1;