texinfo-commits
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

texinfo/tp Texinfo/Parser.pm t/08misc_commands....


From: Patrice Dumas
Subject: texinfo/tp Texinfo/Parser.pm t/08misc_commands....
Date: Sat, 02 Oct 2010 17:22:53 +0000

CVSROOT:        /sources/texinfo
Module name:    texinfo
Changes by:     Patrice Dumas <pertusus>        10/10/02 17:22:53

Modified files:
        tp/Texinfo     : Parser.pm 
        tp/t           : 08misc_commands.t 60macro.t 
        tp/t/results/misc_commands: sp.pl 
Added files:
        tp/t/results/macro: complex_argument.pl macro_in_macro_arg.pl 
                            macro_in_macro_arg_simpler.pl 
                            nested_macro_call.pl two_macros_on_a_line.pl 

Log message:
        Handle @if* blocks.

CVSWeb URLs:
http://cvs.savannah.gnu.org/viewcvs/texinfo/tp/Texinfo/Parser.pm?cvsroot=texinfo&r1=1.36&r2=1.37
http://cvs.savannah.gnu.org/viewcvs/texinfo/tp/t/08misc_commands.t?cvsroot=texinfo&r1=1.1&r2=1.2
http://cvs.savannah.gnu.org/viewcvs/texinfo/tp/t/60macro.t?cvsroot=texinfo&r1=1.6&r2=1.7
http://cvs.savannah.gnu.org/viewcvs/texinfo/tp/t/results/macro/complex_argument.pl?cvsroot=texinfo&rev=1.1
http://cvs.savannah.gnu.org/viewcvs/texinfo/tp/t/results/macro/macro_in_macro_arg.pl?cvsroot=texinfo&rev=1.1
http://cvs.savannah.gnu.org/viewcvs/texinfo/tp/t/results/macro/macro_in_macro_arg_simpler.pl?cvsroot=texinfo&rev=1.1
http://cvs.savannah.gnu.org/viewcvs/texinfo/tp/t/results/macro/nested_macro_call.pl?cvsroot=texinfo&rev=1.1
http://cvs.savannah.gnu.org/viewcvs/texinfo/tp/t/results/macro/two_macros_on_a_line.pl?cvsroot=texinfo&rev=1.1
http://cvs.savannah.gnu.org/viewcvs/texinfo/tp/t/results/misc_commands/sp.pl?cvsroot=texinfo&r1=1.1&r2=1.2

Patches:
Index: Texinfo/Parser.pm
===================================================================
RCS file: /sources/texinfo/texinfo/tp/Texinfo/Parser.pm,v
retrieving revision 1.36
retrieving revision 1.37
diff -u -b -r1.36 -r1.37
--- Texinfo/Parser.pm   2 Oct 2010 14:28:01 -0000       1.36
+++ Texinfo/Parser.pm   2 Oct 2010 17:22:52 -0000       1.37
@@ -70,7 +70,8 @@
   'aliases' => {},
   'indices' => [],
   'values' => {},
-  'macros' => {}
+  'macros' => {},
+  'expanded_formats', []
 );
 
 my %no_brace_commands;             # commands never taking braces
@@ -255,7 +256,7 @@
   $menu_commands{$menu_command} = 1;
 };
 
-# commands delimiting blocks, typically with an @end.
+# commands delimiting blocks, with an @end.
 # Value is either the number of arguments on the line separated by
 # commas or the type of command, 'raw', 'def' or 'multitable'.
 my %block_commands;
@@ -313,12 +314,21 @@
   $preformatted_commands{$preformatted_command} = 1;
 }
 
+my @out_formats = ('html', 'tex', 'xml', 'docbook');
 # macro is special
-foreach my $raw_command ('html', 'tex', 'xml', 'docbook', 'verbatim', 
+foreach my $raw_command (@out_formats, 'verbatim', 
                          'ignore', 'macro', 'rmacro') {
   $block_commands{$raw_command} = 'raw';
 }
 
+foreach my $command (@out_formats, 'info', 'plaintext') {
+  $block_commands{'if' . $command} = 'conditional';
+  $block_commands{'ifnot' . $command} = 'conditional';
+}
+
+$block_commands{'ifset'} = 'conditional';
+$block_commands{'ifclear'} = 'conditional';
+
 # 'macro' ?
 foreach my $block_command_one_arg('table', 'ftable', 'vtable',
   'itemize', 'enumerate', 'quotation', 'small_quotation') {
@@ -432,7 +442,8 @@
   $begin_line_commands{$block_command} = 1;
   $default_no_paragraph_commands{$block_command} = 1;
   $close_paragraph_commands{$block_command} = 1 
-     unless ($block_commands{$block_command} eq 'raw');
+     unless ($block_commands{$block_command} eq 'raw' or 
+             $block_commands{$block_command} eq 'conditional');
 }
 $close_paragraph_commands{'verbatim'} = 1;
 
@@ -504,6 +515,9 @@
   $parser->{'errors_warnings'} = [];
   $parser->{'errors_nrs'} = 0;
   $parser->{'context_stack'} = [ $parser->{'context'} ];
+  foreach my $expanded_format(@{$parser->{'expanded_formats'}}) {
+    $parser->{'expanded_formats_hash'}->{$expanded_format} = 1;
+  }
   return $parser;
 }
 
@@ -1029,6 +1043,8 @@
   $self->{'tree'} = $root;
   my $current = $root;
 
+  $self->{'conditionals_stack'} = [];
+
   my $line_nr;
   
  NEXT_LINE:
@@ -1049,7 +1065,8 @@
         # raw format or verb
           (($current->{'cmdname'}
            and $block_commands{$current->{'cmdname'}}
-            and $block_commands{$current->{'cmdname'}} eq 'raw')
+            and ($block_commands{$current->{'cmdname'}} eq 'raw'
+                 or $block_commands{$current->{'cmdname'}} eq 'conditional'))
           or 
            ($current->{'parent'} and $current->{'parent'}->{'cmdname'}
             and $current->{'parent'}->{'cmdname'} eq 'verb')
@@ -1103,10 +1120,11 @@
     }
 
     while (1) {
-      # in a raw block command
+      # in a raw or ignored conditional block command
       if ($current->{'cmdname'} and 
             $block_commands{$current->{'cmdname'}} and 
-            ($block_commands{$current->{'cmdname'}} eq 'raw')) {
+            ($block_commands{$current->{'cmdname'}} eq 'raw'
+             or $block_commands{$current->{'cmdname'}} eq 'conditional')) {
         # special case for macro that may be nested
         if (($current->{'cmdname'} eq 'macro' 
               or $current->{'cmdname'} eq 'rmacro') 
@@ -1118,6 +1136,16 @@
                          'special' => {'macro_line' => $line }};
           $current = $current->{'contents'}->[-1];
           last;
+        } elsif (($current->{'cmdname'} eq 'ifclear' 
+                  or $current->{'cmdname'} eq 'ifset')
+                and $line =~ /address@hidden>{'cmdname'}/) {
+          $line =~ s/\s*\@($current->{'cmdname'})//;
+          push @{$current->{'contents'}}, { 'cmdname' => $1,
+                                            'parent' => $current,
+                                            'contents' => [],
+                         'special' => {'line' => $line }};
+          $current = $current->{'contents'}->[-1];
+          last;
         } elsif ($line =~ /^(.*?)address@hidden([a-zA-Z][\w-]*)/o and ($2 eq 
$current->{'cmdname'})) {
           my $end_command = $2;
           $line =~ s/^(.*?)(address@hidden>{'cmdname'})//;
@@ -1137,6 +1165,9 @@
             }
           }
           $current = $current->{'parent'};
+          # don't store ignored @if*
+          pop @{$current->{'contents'}} 
+            if ($block_commands{$end_command} eq 'conditional');
           last unless ($line =~ /\S/);
         } else {
           push @{$current->{'contents'}}, 
@@ -1166,6 +1197,22 @@
       if ($line =~ s/address@hidden([a-zA-Z][\w-]*)//) {
         my $end_command = $1;
         print STDERR "END $end_command\n" if ($self->{'debug'});
+        if (!exists $block_commands{$end_command}) {
+          _line_warn ($self, 
+            sprintf($self->__("Unknown address@hidden %s"), $end_command), 
$line_nr);
+          $current = _merge_text ($self, $current, "address@hidden 
$end_command");
+          last;
+        }
+        if ($block_commands{$end_command} eq 'conditional') {
+          if (@{$self->{'conditionals_stack'}} 
+              and $self->{'conditionals_stack'}->[-1] eq $end_command) {
+            pop @{$self->{'conditionals_stack'}};
+          } else {
+            _line_error ($self, 
+                   sprintf($self->__("Unmatched `%c%s'"), ord('@'), 'end'), 
$line_nr);
+          }
+          last;
+        }
         $current = _end_block_command($self, $current, $line_nr,
                                                 $end_command);
         last unless ($line =~ /\S/);
@@ -1369,6 +1416,34 @@
             push @{$current->{'contents'}}, $macro;
             $current = $current->{'contents'}->[-1];
             last;
+          } elsif ($block_commands{$command} eq 'conditional') {
+            my $ifvalue_true = 0;
+            if ($command eq 'ifclear' or $command eq 'ifset') {
+              if ($line =~ /^\s+([\w\-]+)/) {
+                my $name = $2;
+                if ((exists($self->{'values'}->{'name'}) and $command eq 
'ifset')
+                    or (!exists($self->{'values'}->{'name'}) 
+                         and $command eq 'ifclear')) {
+                  $ifvalue_true = 1;
+                }
+              } else {
+                _line_error ($self, sprintf($self->__("%c%s requires a name"), 
ord('@'), $command), $line_nr);
+              }
+            } elsif ($command =~ /^ifnot(.*)/) {
+              $ifvalue_true = 1 if !($self->{'expanded_formats_hash'}->{$1});
+            } else {
+              die unless ($command =~ /^if(.*)/);
+              $ifvalue_true = 1 if ($self->{'expanded_formats_hash'}->{$1});
+            }
+            if ($ifvalue_true) {
+              push @{$self->{'conditionals_stack'}}, $command;
+            } else {
+              push @{$current->{'contents'}}, { 'cmdname' => $command, 
+                                                'parent' => $current,
+                                                'contents' => [] };
+              $current = $current->{'contents'}->[-1];
+            }
+            last;
           } else {
             $line =~ s/\s*//;
             # the def command holds a line_def* which corresponds with the
@@ -1823,6 +1898,10 @@
       }
     }
   }
+  while (@{$self->{'conditionals_stack'}}) { 
+    my $end_conditional = pop @{$self->{'conditionals_stack'}};
+    _line_error ($self, sprintf($self->__("Expected address@hidden %s"), 
$end_conditional), $line_nr);
+  }
   $current = _end_block_command($self, $current, $line_nr);
   return $root;
 }

Index: t/08misc_commands.t
===================================================================
RCS file: /sources/texinfo/texinfo/tp/t/08misc_commands.t,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -b -r1.1 -r1.2
--- t/08misc_commands.t 30 Sep 2010 22:03:52 -0000      1.1
+++ t/08misc_commands.t 2 Oct 2010 17:22:52 -0000       1.2
@@ -84,6 +84,7 @@
 Text line after the text line followed by the sp.
 @ifnottex
 @sp 2 a number after sp
address@hidden ifnottex
 '],
 ['clickstyle',
 '@clickstyle @result

Index: t/60macro.t
===================================================================
RCS file: /sources/texinfo/texinfo/tp/t/60macro.t,v
retrieving revision 1.6
retrieving revision 1.7
diff -u -b -r1.6 -r1.7
--- t/60macro.t 2 Oct 2010 14:28:02 -0000       1.6
+++ t/60macro.t 2 Oct 2010 17:22:52 -0000       1.7
@@ -90,7 +90,7 @@
 
 recursive call. @macro1{first arg, @macro1{nested second arg}}.
 
-protect stuff. @macro1{first \, arg, \{\} \\\\ }.
+protect stuff. @macro1{first \\, arg, \\{\\} \\\\ }.
 
 multi-line arg. @macro1{arg 1
 
@@ -129,7 +129,7 @@
 result: @emph{\\arg1\\} protected \\\\ -> \\\\arg1\\\\ @emph{\\arg2\\}
 @end macro
 
-the @macro1 { @samp{f\irst arg}, second arg } after macro.
+the @macro1 { @samp{f\\irst arg}, second arg } after macro.
 '],
 ['protect_in_body_one_arg',
 '@macro macro1 { arg1 , arg2 }
@@ -143,17 +143,128 @@
 result: @emph{\\arg1\\} protected \\\\ -> \\\\arg1\\\\ @emph{\\arg2\\}
 @end macro
 
address@hidden @samp{f\irst arg}, second arg
address@hidden @samp{f\\irst arg}, second arg
 '],
 ['protect_comma_macro_line',
 '@macro macro2 { arg }
-we get \arg\ and another \arg\
-and another one on another line \arg\
+we get \\arg\\ and another \\arg\\
+and another one on another line \\arg\\
 
 and a last in another paragraph
 @end macro
 
address@hidden  arg,  comma \,
address@hidden  arg,  comma \\,
+'],
+['nested_macro_call',
+'@macro machin{}
+(machin)
address@hidden macro
+
address@hidden truc{}
address@hidden
+
address@hidden macro
+
+Before @truc{} after truc.
+'],
+['two_macros_on_a_line',
+'@macro mymacro
+in mymacro
address@hidden macro
+
address@hidden mymacro_with_args{arg}
+in with args
+now the arg \\arg\\
+after
address@hidden macro
+
+
+@@address@hidden@} @@address@hidden@}
address@hidden @mymacro{}
+
+@@mymacro @@address@hidden@}
address@hidden @mymacro{}
+
+@@address@hidden@} @@mymacro
address@hidden @mymacro
+
+with args
address@hidden {an
+arg
+
+in macro} @mymacro{}
+'],
+['macro_in_macro_arg','
address@hidden macro1
+a, @macro2
address@hidden macro
+
address@hidden macro2{arg}
+hello \arg\ after arg
address@hidden macro
+
address@hidden macro3{text, arg}
+\text\
+&&&& \arg\
address@hidden macro
+
address@hidden@macro1{}text for macro2}
+'],
+['macro_in_macro_arg_simpler',
+'@macro macro11
+a, macro2
address@hidden macro
+
address@hidden macro3{text, arg}
+\text\
+&&&& \arg\
address@hidden macro
+
address@hidden@macro11{}text for macro2}
+'],
+['complex_argument',
+'@macro macro2{arg}
+coucou \arg\ after arg
address@hidden macro
+
address@hidden macro4 {}
+1
+2
+3
+4
address@hidden macro
+
address@hidden macro3{text, arg}
+\text\
+&&&& \arg\
address@hidden macro
+
address@hidden@verb{% @macro2 %}
address@hidden @macro4
address@hidden 4 @macro4{}
address@hidden doubleafter @macro4{}
address@hidden
address@hidden
address@hidden verbatim
address@hidden
address@hidden
address@hidden ignore
address@hidden macro7 {truc}
address@hidden
address@hidden macro
+macro7 defined
address@hidden
address@hidden
address@hidden ifinfo
address@hidden
address@hidden,bb}
address@hidden iftex
address@hidden
+}
+
+Call macro7
address@hidden
+
 ']
 );
 

Index: t/results/misc_commands/sp.pl
===================================================================
RCS file: /sources/texinfo/texinfo/tp/t/results/misc_commands/sp.pl,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -b -r1.1 -r1.2
--- t/results/misc_commands/sp.pl       1 Oct 2010 06:50:57 -0000       1.1
+++ t/results/misc_commands/sp.pl       2 Oct 2010 17:22:53 -0000       1.2
@@ -85,11 +85,6 @@
           'parent' => {},
           'text' => 'Text line after the text line followed by the sp.
 '
-        },
-        {
-          'parent' => {},
-          'text' => '
-'
         }
       ],
       'parent' => {},
@@ -129,7 +124,6 @@
 $result_trees{'sp'}{'contents'}[5]{'args'}[0]{'parent'} = 
$result_trees{'sp'}{'contents'}[5];
 $result_trees{'sp'}{'contents'}[5]{'parent'} = $result_trees{'sp'};
 $result_trees{'sp'}{'contents'}[6]{'contents'}[0]{'parent'} = 
$result_trees{'sp'}{'contents'}[6];
-$result_trees{'sp'}{'contents'}[6]{'contents'}[1]{'parent'} = 
$result_trees{'sp'}{'contents'}[6];
 $result_trees{'sp'}{'contents'}[6]{'parent'} = $result_trees{'sp'};
 $result_trees{'sp'}{'contents'}[7]{'args'}[0]{'contents'}[0]{'parent'} = 
$result_trees{'sp'}{'contents'}[7]{'args'}[0];
 $result_trees{'sp'}{'contents'}[7]{'args'}[0]{'parent'} = 
$result_trees{'sp'}{'contents'}[7];
@@ -140,7 +134,6 @@
 @sp 2
 Text line after the sp followed by a sp @sp 1
 Text line after the text line followed by the sp.
-
 @sp 2 a number after sp
 ';
 

Index: t/results/macro/complex_argument.pl
===================================================================
RCS file: t/results/macro/complex_argument.pl
diff -N t/results/macro/complex_argument.pl
--- /dev/null   1 Jan 1970 00:00:00 -0000
+++ t/results/macro/complex_argument.pl 2 Oct 2010 17:22:52 -0000       1.1
@@ -0,0 +1,526 @@
+use vars qw(%result_texts %result_trees %result_errors);
+
+$result_trees{'complex_argument'} = {
+  'contents' => [
+    {
+      'args' => [
+        {
+          'parent' => {},
+          'text' => 'macro2',
+          'type' => 'macro_name'
+        },
+        {
+          'parent' => {},
+          'text' => 'arg',
+          'type' => 'macro_arg'
+        }
+      ],
+      'cmdname' => 'macro',
+      'contents' => [
+        {
+          'parent' => {},
+          'text' => 'coucou \\arg\\ after arg
+',
+          'type' => 'raw'
+        }
+      ],
+      'parent' => {},
+      'special' => {
+        'args_index' => {
+          'arg' => 0
+        },
+        'macro_line' => ' macro2{arg}
+',
+        'macrobody' => 'coucou \\arg\\ after arg
+'
+      }
+    },
+    {
+      'parent' => {},
+      'text' => '
+',
+      'type' => 'normal_line'
+    },
+    {
+      'args' => [
+        {
+          'parent' => {},
+          'text' => 'macro4',
+          'type' => 'macro_name'
+        }
+      ],
+      'cmdname' => 'macro',
+      'contents' => [
+        {
+          'parent' => {},
+          'text' => '1
+',
+          'type' => 'raw'
+        },
+        {
+          'parent' => {},
+          'text' => '2
+',
+          'type' => 'raw'
+        },
+        {
+          'parent' => {},
+          'text' => '3
+',
+          'type' => 'raw'
+        },
+        {
+          'parent' => {},
+          'text' => '4
+',
+          'type' => 'raw'
+        }
+      ],
+      'parent' => {},
+      'special' => {
+        'macro_line' => ' macro4 {}
+',
+        'macrobody' => '1
+2
+3
+4
+'
+      }
+    },
+    {
+      'parent' => {},
+      'text' => '
+',
+      'type' => 'normal_line'
+    },
+    {
+      'args' => [
+        {
+          'parent' => {},
+          'text' => 'macro3',
+          'type' => 'macro_name'
+        },
+        {
+          'parent' => {},
+          'text' => 'text',
+          'type' => 'macro_arg'
+        },
+        {
+          'parent' => {},
+          'text' => 'arg',
+          'type' => 'macro_arg'
+        }
+      ],
+      'cmdname' => 'macro',
+      'contents' => [
+        {
+          'parent' => {},
+          'text' => '\\text\\
+',
+          'type' => 'raw'
+        },
+        {
+          'parent' => {},
+          'text' => '&&&& \\arg\\
+',
+          'type' => 'raw'
+        }
+      ],
+      'parent' => {},
+      'special' => {
+        'args_index' => {
+          'arg' => 1,
+          'text' => 0
+        },
+        'macro_line' => ' macro3{text, arg}
+',
+        'macrobody' => '\\text\\
+&&&& \\arg\\
+'
+      }
+    },
+    {
+      'parent' => {},
+      'text' => '
+',
+      'type' => 'normal_line'
+    },
+    {
+      'contents' => [
+        {
+          'args' => [
+            {
+              'contents' => [
+                {
+                  'parent' => {},
+                  'text' => ' @macro2 ',
+                  'type' => 'raw'
+                }
+              ],
+              'parent' => {},
+              'type' => 'brace_command_arg'
+            }
+          ],
+          'cmdname' => 'verb',
+          'parent' => {},
+          'remaining_args' => 0,
+          'type' => '%'
+        },
+        {
+          'parent' => {},
+          'text' => '
+'
+        },
+        {
+          'args' => [
+            {
+              'parent' => {},
+              'text' => ' @macro4
+',
+              'type' => 'misc_arg'
+            }
+          ],
+          'cmdname' => 'c',
+          'parent' => {}
+        },
+        {
+          'args' => [
+            {
+              'contents' => [
+                {
+                  'parent' => {},
+                  'text' => '4 1
+'
+                }
+              ],
+              'parent' => {},
+              'type' => 'misc_line_arg'
+            }
+          ],
+          'cmdname' => 'pagesizes',
+          'parent' => {}
+        },
+        {
+          'parent' => {},
+          'text' => '2
+'
+        },
+        {
+          'parent' => {},
+          'text' => '3
+'
+        },
+        {
+          'parent' => {},
+          'text' => '4
+'
+        },
+        {
+          'args' => [
+            {
+              'contents' => [
+                {
+                  'parent' => {},
+                  'text' => 'doubleafter 1
+'
+                }
+              ],
+              'parent' => {},
+              'type' => 'misc_line_arg'
+            }
+          ],
+          'cmdname' => 'headings',
+          'parent' => {},
+          'special' => {
+            'misc_args' => [
+              'doubleafter'
+            ]
+          }
+        },
+        {
+          'parent' => {},
+          'text' => '2
+'
+        },
+        {
+          'parent' => {},
+          'text' => '3
+'
+        },
+        {
+          'parent' => {},
+          'text' => '4
+'
+        }
+      ],
+      'parent' => {},
+      'type' => 'paragraph'
+    },
+    {
+      'cmdname' => 'verbatim',
+      'contents' => [
+        {
+          'parent' => {},
+          'text' => '@macro2
+',
+          'type' => 'raw'
+        }
+      ],
+      'parent' => {}
+    },
+    {
+      'cmdname' => 'ignore',
+      'contents' => [
+        {
+          'parent' => {},
+          'text' => '@macro4
+',
+          'type' => 'raw'
+        }
+      ],
+      'parent' => {}
+    },
+    {
+      'args' => [
+        {
+          'parent' => {},
+          'text' => 'macro7',
+          'type' => 'macro_name'
+        },
+        {
+          'parent' => {},
+          'text' => 'truc',
+          'type' => 'macro_arg'
+        }
+      ],
+      'cmdname' => 'macro',
+      'contents' => [
+        {
+          'parent' => {},
+          'text' => '@emph{\\truc\\}
+',
+          'type' => 'raw'
+        }
+      ],
+      'parent' => {},
+      'special' => {
+        'args_index' => {
+          'truc' => 0
+        },
+        'macro_line' => ' macro7 {truc}
+',
+        'macrobody' => '@emph{\\truc\\}
+'
+      }
+    },
+    {
+      'contents' => [
+        {
+          'parent' => {},
+          'text' => 'macro7 defined
+'
+        },
+        {
+          'parent' => {},
+          'text' => '1
+'
+        },
+        {
+          'parent' => {},
+          'text' => '2
+'
+        },
+        {
+          'parent' => {},
+          'text' => '3
+'
+        },
+        {
+          'parent' => {},
+          'text' => '4
+'
+        }
+      ],
+      'parent' => {},
+      'type' => 'paragraph'
+    },
+    {
+      'parent' => {},
+      'text' => '
+',
+      'type' => 'normal_line'
+    },
+    {
+      'contents' => [
+        {
+          'parent' => {},
+          'text' => '&&&& 
+'
+        }
+      ],
+      'parent' => {},
+      'type' => 'paragraph'
+    },
+    {
+      'parent' => {},
+      'text' => '
+',
+      'type' => 'normal_line'
+    },
+    {
+      'contents' => [
+        {
+          'parent' => {},
+          'text' => 'Call macro7
+'
+        },
+        {
+          'args' => [
+            {
+              'contents' => [
+                {
+                  'parent' => {},
+                  'text' => 'aaa'
+                }
+              ],
+              'parent' => {},
+              'type' => 'brace_command_arg'
+            }
+          ],
+          'cmdname' => 'emph',
+          'parent' => {},
+          'remaining_args' => 0
+        }
+      ],
+      'parent' => {},
+      'type' => 'paragraph'
+    },
+    {
+      'parent' => {},
+      'text' => '
+',
+      'type' => 'normal_line'
+    },
+    {
+      'parent' => {},
+      'text' => '
+',
+      'type' => 'normal_line'
+    }
+  ]
+};
+$result_trees{'complex_argument'}{'contents'}[0]{'args'}[0]{'parent'} = 
$result_trees{'complex_argument'}{'contents'}[0];
+$result_trees{'complex_argument'}{'contents'}[0]{'args'}[1]{'parent'} = 
$result_trees{'complex_argument'}{'contents'}[0];
+$result_trees{'complex_argument'}{'contents'}[0]{'contents'}[0]{'parent'} = 
$result_trees{'complex_argument'}{'contents'}[0];
+$result_trees{'complex_argument'}{'contents'}[0]{'parent'} = 
$result_trees{'complex_argument'};
+$result_trees{'complex_argument'}{'contents'}[1]{'parent'} = 
$result_trees{'complex_argument'};
+$result_trees{'complex_argument'}{'contents'}[2]{'args'}[0]{'parent'} = 
$result_trees{'complex_argument'}{'contents'}[2];
+$result_trees{'complex_argument'}{'contents'}[2]{'contents'}[0]{'parent'} = 
$result_trees{'complex_argument'}{'contents'}[2];
+$result_trees{'complex_argument'}{'contents'}[2]{'contents'}[1]{'parent'} = 
$result_trees{'complex_argument'}{'contents'}[2];
+$result_trees{'complex_argument'}{'contents'}[2]{'contents'}[2]{'parent'} = 
$result_trees{'complex_argument'}{'contents'}[2];
+$result_trees{'complex_argument'}{'contents'}[2]{'contents'}[3]{'parent'} = 
$result_trees{'complex_argument'}{'contents'}[2];
+$result_trees{'complex_argument'}{'contents'}[2]{'parent'} = 
$result_trees{'complex_argument'};
+$result_trees{'complex_argument'}{'contents'}[3]{'parent'} = 
$result_trees{'complex_argument'};
+$result_trees{'complex_argument'}{'contents'}[4]{'args'}[0]{'parent'} = 
$result_trees{'complex_argument'}{'contents'}[4];
+$result_trees{'complex_argument'}{'contents'}[4]{'args'}[1]{'parent'} = 
$result_trees{'complex_argument'}{'contents'}[4];
+$result_trees{'complex_argument'}{'contents'}[4]{'args'}[2]{'parent'} = 
$result_trees{'complex_argument'}{'contents'}[4];
+$result_trees{'complex_argument'}{'contents'}[4]{'contents'}[0]{'parent'} = 
$result_trees{'complex_argument'}{'contents'}[4];
+$result_trees{'complex_argument'}{'contents'}[4]{'contents'}[1]{'parent'} = 
$result_trees{'complex_argument'}{'contents'}[4];
+$result_trees{'complex_argument'}{'contents'}[4]{'parent'} = 
$result_trees{'complex_argument'};
+$result_trees{'complex_argument'}{'contents'}[5]{'parent'} = 
$result_trees{'complex_argument'};
+$result_trees{'complex_argument'}{'contents'}[6]{'contents'}[0]{'args'}[0]{'contents'}[0]{'parent'}
 = $result_trees{'complex_argument'}{'contents'}[6]{'contents'}[0]{'args'}[0];
+$result_trees{'complex_argument'}{'contents'}[6]{'contents'}[0]{'args'}[0]{'parent'}
 = $result_trees{'complex_argument'}{'contents'}[6]{'contents'}[0];
+$result_trees{'complex_argument'}{'contents'}[6]{'contents'}[0]{'parent'} = 
$result_trees{'complex_argument'}{'contents'}[6];
+$result_trees{'complex_argument'}{'contents'}[6]{'contents'}[1]{'parent'} = 
$result_trees{'complex_argument'}{'contents'}[6];
+$result_trees{'complex_argument'}{'contents'}[6]{'contents'}[2]{'args'}[0]{'parent'}
 = $result_trees{'complex_argument'}{'contents'}[6]{'contents'}[2];
+$result_trees{'complex_argument'}{'contents'}[6]{'contents'}[2]{'parent'} = 
$result_trees{'complex_argument'}{'contents'}[6];
+$result_trees{'complex_argument'}{'contents'}[6]{'contents'}[3]{'args'}[0]{'contents'}[0]{'parent'}
 = $result_trees{'complex_argument'}{'contents'}[6]{'contents'}[3]{'args'}[0];
+$result_trees{'complex_argument'}{'contents'}[6]{'contents'}[3]{'args'}[0]{'parent'}
 = $result_trees{'complex_argument'}{'contents'}[6]{'contents'}[3];
+$result_trees{'complex_argument'}{'contents'}[6]{'contents'}[3]{'parent'} = 
$result_trees{'complex_argument'}{'contents'}[6];
+$result_trees{'complex_argument'}{'contents'}[6]{'contents'}[4]{'parent'} = 
$result_trees{'complex_argument'}{'contents'}[6];
+$result_trees{'complex_argument'}{'contents'}[6]{'contents'}[5]{'parent'} = 
$result_trees{'complex_argument'}{'contents'}[6];
+$result_trees{'complex_argument'}{'contents'}[6]{'contents'}[6]{'parent'} = 
$result_trees{'complex_argument'}{'contents'}[6];
+$result_trees{'complex_argument'}{'contents'}[6]{'contents'}[7]{'args'}[0]{'contents'}[0]{'parent'}
 = $result_trees{'complex_argument'}{'contents'}[6]{'contents'}[7]{'args'}[0];
+$result_trees{'complex_argument'}{'contents'}[6]{'contents'}[7]{'args'}[0]{'parent'}
 = $result_trees{'complex_argument'}{'contents'}[6]{'contents'}[7];
+$result_trees{'complex_argument'}{'contents'}[6]{'contents'}[7]{'parent'} = 
$result_trees{'complex_argument'}{'contents'}[6];
+$result_trees{'complex_argument'}{'contents'}[6]{'contents'}[8]{'parent'} = 
$result_trees{'complex_argument'}{'contents'}[6];
+$result_trees{'complex_argument'}{'contents'}[6]{'contents'}[9]{'parent'} = 
$result_trees{'complex_argument'}{'contents'}[6];
+$result_trees{'complex_argument'}{'contents'}[6]{'contents'}[10]{'parent'} = 
$result_trees{'complex_argument'}{'contents'}[6];
+$result_trees{'complex_argument'}{'contents'}[6]{'parent'} = 
$result_trees{'complex_argument'};
+$result_trees{'complex_argument'}{'contents'}[7]{'contents'}[0]{'parent'} = 
$result_trees{'complex_argument'}{'contents'}[7];
+$result_trees{'complex_argument'}{'contents'}[7]{'parent'} = 
$result_trees{'complex_argument'};
+$result_trees{'complex_argument'}{'contents'}[8]{'contents'}[0]{'parent'} = 
$result_trees{'complex_argument'}{'contents'}[8];
+$result_trees{'complex_argument'}{'contents'}[8]{'parent'} = 
$result_trees{'complex_argument'};
+$result_trees{'complex_argument'}{'contents'}[9]{'args'}[0]{'parent'} = 
$result_trees{'complex_argument'}{'contents'}[9];
+$result_trees{'complex_argument'}{'contents'}[9]{'args'}[1]{'parent'} = 
$result_trees{'complex_argument'}{'contents'}[9];
+$result_trees{'complex_argument'}{'contents'}[9]{'contents'}[0]{'parent'} = 
$result_trees{'complex_argument'}{'contents'}[9];
+$result_trees{'complex_argument'}{'contents'}[9]{'parent'} = 
$result_trees{'complex_argument'};
+$result_trees{'complex_argument'}{'contents'}[10]{'contents'}[0]{'parent'} = 
$result_trees{'complex_argument'}{'contents'}[10];
+$result_trees{'complex_argument'}{'contents'}[10]{'contents'}[1]{'parent'} = 
$result_trees{'complex_argument'}{'contents'}[10];
+$result_trees{'complex_argument'}{'contents'}[10]{'contents'}[2]{'parent'} = 
$result_trees{'complex_argument'}{'contents'}[10];
+$result_trees{'complex_argument'}{'contents'}[10]{'contents'}[3]{'parent'} = 
$result_trees{'complex_argument'}{'contents'}[10];
+$result_trees{'complex_argument'}{'contents'}[10]{'contents'}[4]{'parent'} = 
$result_trees{'complex_argument'}{'contents'}[10];
+$result_trees{'complex_argument'}{'contents'}[10]{'parent'} = 
$result_trees{'complex_argument'};
+$result_trees{'complex_argument'}{'contents'}[11]{'parent'} = 
$result_trees{'complex_argument'};
+$result_trees{'complex_argument'}{'contents'}[12]{'contents'}[0]{'parent'} = 
$result_trees{'complex_argument'}{'contents'}[12];
+$result_trees{'complex_argument'}{'contents'}[12]{'parent'} = 
$result_trees{'complex_argument'};
+$result_trees{'complex_argument'}{'contents'}[13]{'parent'} = 
$result_trees{'complex_argument'};
+$result_trees{'complex_argument'}{'contents'}[14]{'contents'}[0]{'parent'} = 
$result_trees{'complex_argument'}{'contents'}[14];
+$result_trees{'complex_argument'}{'contents'}[14]{'contents'}[1]{'args'}[0]{'contents'}[0]{'parent'}
 = $result_trees{'complex_argument'}{'contents'}[14]{'contents'}[1]{'args'}[0];
+$result_trees{'complex_argument'}{'contents'}[14]{'contents'}[1]{'args'}[0]{'parent'}
 = $result_trees{'complex_argument'}{'contents'}[14]{'contents'}[1];
+$result_trees{'complex_argument'}{'contents'}[14]{'contents'}[1]{'parent'} = 
$result_trees{'complex_argument'}{'contents'}[14];
+$result_trees{'complex_argument'}{'contents'}[14]{'parent'} = 
$result_trees{'complex_argument'};
+$result_trees{'complex_argument'}{'contents'}[15]{'parent'} = 
$result_trees{'complex_argument'};
+$result_trees{'complex_argument'}{'contents'}[16]{'parent'} = 
$result_trees{'complex_argument'};
+
+$result_texts{'complex_argument'} = '@macro macro2{arg}
+coucou \\arg\\ after arg
address@hidden macro
+
address@hidden macro4 {}
+1
+2
+3
+4
address@hidden macro
+
address@hidden macro3{text, arg}
+\\text\\
+&&&& \\arg\\
address@hidden macro
+
address@hidden @macro2 %}
address@hidden @macro4
address@hidden 4 1
+2
+3
+4
address@hidden doubleafter 1
+2
+3
+4
address@hidden
address@hidden
address@hidden verbatim
address@hidden
address@hidden
address@hidden ignore
address@hidden macro7 {truc}
address@hidden
address@hidden macro
+macro7 defined
+1
+2
+3
+4
+
+&&&& 
+
+Call macro7
address@hidden
+
+';
+
+$result_errors{'complex_argument'} = [];
+
+

Index: t/results/macro/macro_in_macro_arg.pl
===================================================================
RCS file: t/results/macro/macro_in_macro_arg.pl
diff -N t/results/macro/macro_in_macro_arg.pl
--- /dev/null   1 Jan 1970 00:00:00 -0000
+++ t/results/macro/macro_in_macro_arg.pl       2 Oct 2010 17:22:52 -0000       
1.1
@@ -0,0 +1,212 @@
+use vars qw(%result_texts %result_trees %result_errors);
+
+$result_trees{'macro_in_macro_arg'} = {
+  'contents' => [
+    {
+      'parent' => {},
+      'text' => '
+',
+      'type' => 'normal_line'
+    },
+    {
+      'args' => [
+        {
+          'parent' => {},
+          'text' => 'macro1',
+          'type' => 'macro_name'
+        }
+      ],
+      'cmdname' => 'macro',
+      'contents' => [
+        {
+          'parent' => {},
+          'text' => 'a, @macro2
+',
+          'type' => 'raw'
+        }
+      ],
+      'parent' => {},
+      'special' => {
+        'macro_line' => ' macro1
+',
+        'macrobody' => 'a, @macro2
+'
+      }
+    },
+    {
+      'parent' => {},
+      'text' => '
+',
+      'type' => 'normal_line'
+    },
+    {
+      'args' => [
+        {
+          'parent' => {},
+          'text' => 'macro2',
+          'type' => 'macro_name'
+        },
+        {
+          'parent' => {},
+          'text' => 'arg',
+          'type' => 'macro_arg'
+        }
+      ],
+      'cmdname' => 'macro',
+      'contents' => [
+        {
+          'parent' => {},
+          'text' => 'hello \\arg\\ after arg
+',
+          'type' => 'raw'
+        }
+      ],
+      'parent' => {},
+      'special' => {
+        'args_index' => {
+          'arg' => 0
+        },
+        'macro_line' => ' macro2{arg}
+',
+        'macrobody' => 'hello \\arg\\ after arg
+'
+      }
+    },
+    {
+      'parent' => {},
+      'text' => '
+',
+      'type' => 'normal_line'
+    },
+    {
+      'args' => [
+        {
+          'parent' => {},
+          'text' => 'macro3',
+          'type' => 'macro_name'
+        },
+        {
+          'parent' => {},
+          'text' => 'text',
+          'type' => 'macro_arg'
+        },
+        {
+          'parent' => {},
+          'text' => 'arg',
+          'type' => 'macro_arg'
+        }
+      ],
+      'cmdname' => 'macro',
+      'contents' => [
+        {
+          'parent' => {},
+          'text' => '\\text\\
+',
+          'type' => 'raw'
+        },
+        {
+          'parent' => {},
+          'text' => '&&&& \\arg\\
+',
+          'type' => 'raw'
+        }
+      ],
+      'parent' => {},
+      'special' => {
+        'args_index' => {
+          'arg' => 1,
+          'text' => 0
+        },
+        'macro_line' => ' macro3{text, arg}
+',
+        'macrobody' => '\\text\\
+&&&& \\arg\\
+'
+      }
+    },
+    {
+      'parent' => {},
+      'text' => '
+',
+      'type' => 'normal_line'
+    },
+    {
+      'contents' => [
+        {
+          'parent' => {},
+          'text' => 'a, hello  after arg'
+        }
+      ],
+      'parent' => {},
+      'type' => 'paragraph'
+    },
+    {
+      'parent' => {},
+      'text' => '
+',
+      'type' => 'normal_line'
+    },
+    {
+      'contents' => [
+        {
+          'parent' => {},
+          'text' => 'text for macro2
+'
+        },
+        {
+          'parent' => {},
+          'text' => '&&&& 
+'
+        }
+      ],
+      'parent' => {},
+      'type' => 'paragraph'
+    }
+  ]
+};
+$result_trees{'macro_in_macro_arg'}{'contents'}[0]{'parent'} = 
$result_trees{'macro_in_macro_arg'};
+$result_trees{'macro_in_macro_arg'}{'contents'}[1]{'args'}[0]{'parent'} = 
$result_trees{'macro_in_macro_arg'}{'contents'}[1];
+$result_trees{'macro_in_macro_arg'}{'contents'}[1]{'contents'}[0]{'parent'} = 
$result_trees{'macro_in_macro_arg'}{'contents'}[1];
+$result_trees{'macro_in_macro_arg'}{'contents'}[1]{'parent'} = 
$result_trees{'macro_in_macro_arg'};
+$result_trees{'macro_in_macro_arg'}{'contents'}[2]{'parent'} = 
$result_trees{'macro_in_macro_arg'};
+$result_trees{'macro_in_macro_arg'}{'contents'}[3]{'args'}[0]{'parent'} = 
$result_trees{'macro_in_macro_arg'}{'contents'}[3];
+$result_trees{'macro_in_macro_arg'}{'contents'}[3]{'args'}[1]{'parent'} = 
$result_trees{'macro_in_macro_arg'}{'contents'}[3];
+$result_trees{'macro_in_macro_arg'}{'contents'}[3]{'contents'}[0]{'parent'} = 
$result_trees{'macro_in_macro_arg'}{'contents'}[3];
+$result_trees{'macro_in_macro_arg'}{'contents'}[3]{'parent'} = 
$result_trees{'macro_in_macro_arg'};
+$result_trees{'macro_in_macro_arg'}{'contents'}[4]{'parent'} = 
$result_trees{'macro_in_macro_arg'};
+$result_trees{'macro_in_macro_arg'}{'contents'}[5]{'args'}[0]{'parent'} = 
$result_trees{'macro_in_macro_arg'}{'contents'}[5];
+$result_trees{'macro_in_macro_arg'}{'contents'}[5]{'args'}[1]{'parent'} = 
$result_trees{'macro_in_macro_arg'}{'contents'}[5];
+$result_trees{'macro_in_macro_arg'}{'contents'}[5]{'args'}[2]{'parent'} = 
$result_trees{'macro_in_macro_arg'}{'contents'}[5];
+$result_trees{'macro_in_macro_arg'}{'contents'}[5]{'contents'}[0]{'parent'} = 
$result_trees{'macro_in_macro_arg'}{'contents'}[5];
+$result_trees{'macro_in_macro_arg'}{'contents'}[5]{'contents'}[1]{'parent'} = 
$result_trees{'macro_in_macro_arg'}{'contents'}[5];
+$result_trees{'macro_in_macro_arg'}{'contents'}[5]{'parent'} = 
$result_trees{'macro_in_macro_arg'};
+$result_trees{'macro_in_macro_arg'}{'contents'}[6]{'parent'} = 
$result_trees{'macro_in_macro_arg'};
+$result_trees{'macro_in_macro_arg'}{'contents'}[7]{'contents'}[0]{'parent'} = 
$result_trees{'macro_in_macro_arg'}{'contents'}[7];
+$result_trees{'macro_in_macro_arg'}{'contents'}[7]{'parent'} = 
$result_trees{'macro_in_macro_arg'};
+$result_trees{'macro_in_macro_arg'}{'contents'}[8]{'parent'} = 
$result_trees{'macro_in_macro_arg'};
+$result_trees{'macro_in_macro_arg'}{'contents'}[9]{'contents'}[0]{'parent'} = 
$result_trees{'macro_in_macro_arg'}{'contents'}[9];
+$result_trees{'macro_in_macro_arg'}{'contents'}[9]{'contents'}[1]{'parent'} = 
$result_trees{'macro_in_macro_arg'}{'contents'}[9];
+$result_trees{'macro_in_macro_arg'}{'contents'}[9]{'parent'} = 
$result_trees{'macro_in_macro_arg'};
+
+$result_texts{'macro_in_macro_arg'} = '
address@hidden macro1
+a, @macro2
address@hidden macro
+
address@hidden macro2{arg}
+hello \\arg\\ after arg
address@hidden macro
+
address@hidden macro3{text, arg}
+\\text\\
+&&&& \\arg\\
address@hidden macro
+
+a, hello  after arg
+text for macro2
+&&&& 
+';
+
+$result_errors{'macro_in_macro_arg'} = [];
+
+

Index: t/results/macro/macro_in_macro_arg_simpler.pl
===================================================================
RCS file: t/results/macro/macro_in_macro_arg_simpler.pl
diff -N t/results/macro/macro_in_macro_arg_simpler.pl
--- /dev/null   1 Jan 1970 00:00:00 -0000
+++ t/results/macro/macro_in_macro_arg_simpler.pl       2 Oct 2010 17:22:53 
-0000       1.1
@@ -0,0 +1,136 @@
+use vars qw(%result_texts %result_trees %result_errors);
+
+$result_trees{'macro_in_macro_arg_simpler'} = {
+  'contents' => [
+    {
+      'args' => [
+        {
+          'parent' => {},
+          'text' => 'macro11',
+          'type' => 'macro_name'
+        }
+      ],
+      'cmdname' => 'macro',
+      'contents' => [
+        {
+          'parent' => {},
+          'text' => 'a, macro2
+',
+          'type' => 'raw'
+        }
+      ],
+      'parent' => {},
+      'special' => {
+        'macro_line' => ' macro11
+',
+        'macrobody' => 'a, macro2
+'
+      }
+    },
+    {
+      'parent' => {},
+      'text' => '
+',
+      'type' => 'normal_line'
+    },
+    {
+      'args' => [
+        {
+          'parent' => {},
+          'text' => 'macro3',
+          'type' => 'macro_name'
+        },
+        {
+          'parent' => {},
+          'text' => 'text',
+          'type' => 'macro_arg'
+        },
+        {
+          'parent' => {},
+          'text' => 'arg',
+          'type' => 'macro_arg'
+        }
+      ],
+      'cmdname' => 'macro',
+      'contents' => [
+        {
+          'parent' => {},
+          'text' => '\\text\\
+',
+          'type' => 'raw'
+        },
+        {
+          'parent' => {},
+          'text' => '&&&& \\arg\\
+',
+          'type' => 'raw'
+        }
+      ],
+      'parent' => {},
+      'special' => {
+        'args_index' => {
+          'arg' => 1,
+          'text' => 0
+        },
+        'macro_line' => ' macro3{text, arg}
+',
+        'macrobody' => '\\text\\
+&&&& \\arg\\
+'
+      }
+    },
+    {
+      'parent' => {},
+      'text' => '
+',
+      'type' => 'normal_line'
+    },
+    {
+      'contents' => [
+        {
+          'parent' => {},
+          'text' => 'a, macro2text for macro2
+'
+        },
+        {
+          'parent' => {},
+          'text' => '&&&& 
+'
+        }
+      ],
+      'parent' => {},
+      'type' => 'paragraph'
+    }
+  ]
+};
+$result_trees{'macro_in_macro_arg_simpler'}{'contents'}[0]{'args'}[0]{'parent'}
 = $result_trees{'macro_in_macro_arg_simpler'}{'contents'}[0];
+$result_trees{'macro_in_macro_arg_simpler'}{'contents'}[0]{'contents'}[0]{'parent'}
 = $result_trees{'macro_in_macro_arg_simpler'}{'contents'}[0];
+$result_trees{'macro_in_macro_arg_simpler'}{'contents'}[0]{'parent'} = 
$result_trees{'macro_in_macro_arg_simpler'};
+$result_trees{'macro_in_macro_arg_simpler'}{'contents'}[1]{'parent'} = 
$result_trees{'macro_in_macro_arg_simpler'};
+$result_trees{'macro_in_macro_arg_simpler'}{'contents'}[2]{'args'}[0]{'parent'}
 = $result_trees{'macro_in_macro_arg_simpler'}{'contents'}[2];
+$result_trees{'macro_in_macro_arg_simpler'}{'contents'}[2]{'args'}[1]{'parent'}
 = $result_trees{'macro_in_macro_arg_simpler'}{'contents'}[2];
+$result_trees{'macro_in_macro_arg_simpler'}{'contents'}[2]{'args'}[2]{'parent'}
 = $result_trees{'macro_in_macro_arg_simpler'}{'contents'}[2];
+$result_trees{'macro_in_macro_arg_simpler'}{'contents'}[2]{'contents'}[0]{'parent'}
 = $result_trees{'macro_in_macro_arg_simpler'}{'contents'}[2];
+$result_trees{'macro_in_macro_arg_simpler'}{'contents'}[2]{'contents'}[1]{'parent'}
 = $result_trees{'macro_in_macro_arg_simpler'}{'contents'}[2];
+$result_trees{'macro_in_macro_arg_simpler'}{'contents'}[2]{'parent'} = 
$result_trees{'macro_in_macro_arg_simpler'};
+$result_trees{'macro_in_macro_arg_simpler'}{'contents'}[3]{'parent'} = 
$result_trees{'macro_in_macro_arg_simpler'};
+$result_trees{'macro_in_macro_arg_simpler'}{'contents'}[4]{'contents'}[0]{'parent'}
 = $result_trees{'macro_in_macro_arg_simpler'}{'contents'}[4];
+$result_trees{'macro_in_macro_arg_simpler'}{'contents'}[4]{'contents'}[1]{'parent'}
 = $result_trees{'macro_in_macro_arg_simpler'}{'contents'}[4];
+$result_trees{'macro_in_macro_arg_simpler'}{'contents'}[4]{'parent'} = 
$result_trees{'macro_in_macro_arg_simpler'};
+
+$result_texts{'macro_in_macro_arg_simpler'} = '@macro macro11
+a, macro2
address@hidden macro
+
address@hidden macro3{text, arg}
+\\text\\
+&&&& \\arg\\
address@hidden macro
+
+a, macro2text for macro2
+&&&& 
+';
+
+$result_errors{'macro_in_macro_arg_simpler'} = [];
+
+

Index: t/results/macro/nested_macro_call.pl
===================================================================
RCS file: t/results/macro/nested_macro_call.pl
diff -N t/results/macro/nested_macro_call.pl
--- /dev/null   1 Jan 1970 00:00:00 -0000
+++ t/results/macro/nested_macro_call.pl        2 Oct 2010 17:22:53 -0000       
1.1
@@ -0,0 +1,133 @@
+use vars qw(%result_texts %result_trees %result_errors);
+
+$result_trees{'nested_macro_call'} = {
+  'contents' => [
+    {
+      'args' => [
+        {
+          'parent' => {},
+          'text' => 'machin',
+          'type' => 'macro_name'
+        }
+      ],
+      'cmdname' => 'macro',
+      'contents' => [
+        {
+          'parent' => {},
+          'text' => '(machin)
+',
+          'type' => 'raw'
+        }
+      ],
+      'parent' => {},
+      'special' => {
+        'macro_line' => ' machin{}
+',
+        'macrobody' => '(machin)
+'
+      }
+    },
+    {
+      'parent' => {},
+      'text' => '
+',
+      'type' => 'normal_line'
+    },
+    {
+      'args' => [
+        {
+          'parent' => {},
+          'text' => 'truc',
+          'type' => 'macro_name'
+        }
+      ],
+      'cmdname' => 'macro',
+      'contents' => [
+        {
+          'parent' => {},
+          'text' => '@machin{}
+',
+          'type' => 'raw'
+        },
+        {
+          'parent' => {},
+          'text' => '
+',
+          'type' => 'raw'
+        }
+      ],
+      'parent' => {},
+      'special' => {
+        'macro_line' => ' truc{}
+',
+        'macrobody' => '@machin{}
+
+'
+      }
+    },
+    {
+      'parent' => {},
+      'text' => '
+',
+      'type' => 'normal_line'
+    },
+    {
+      'contents' => [
+        {
+          'parent' => {},
+          'text' => 'Before (machin)'
+        }
+      ],
+      'parent' => {},
+      'type' => 'paragraph'
+    },
+    {
+      'parent' => {},
+      'text' => '
+',
+      'type' => 'normal_line'
+    },
+    {
+      'contents' => [
+        {
+          'parent' => {},
+          'text' => ' after truc.
+'
+        }
+      ],
+      'parent' => {},
+      'type' => 'paragraph'
+    }
+  ]
+};
+$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]{'parent'} = 
$result_trees{'nested_macro_call'};
+$result_trees{'nested_macro_call'}{'contents'}[1]{'parent'} = 
$result_trees{'nested_macro_call'};
+$result_trees{'nested_macro_call'}{'contents'}[2]{'args'}[0]{'parent'} = 
$result_trees{'nested_macro_call'}{'contents'}[2];
+$result_trees{'nested_macro_call'}{'contents'}[2]{'contents'}[0]{'parent'} = 
$result_trees{'nested_macro_call'}{'contents'}[2];
+$result_trees{'nested_macro_call'}{'contents'}[2]{'contents'}[1]{'parent'} = 
$result_trees{'nested_macro_call'}{'contents'}[2];
+$result_trees{'nested_macro_call'}{'contents'}[2]{'parent'} = 
$result_trees{'nested_macro_call'};
+$result_trees{'nested_macro_call'}{'contents'}[3]{'parent'} = 
$result_trees{'nested_macro_call'};
+$result_trees{'nested_macro_call'}{'contents'}[4]{'contents'}[0]{'parent'} = 
$result_trees{'nested_macro_call'}{'contents'}[4];
+$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]{'parent'} = 
$result_trees{'nested_macro_call'};
+
+$result_texts{'nested_macro_call'} = '@macro machin{}
+(machin)
address@hidden macro
+
address@hidden truc{}
address@hidden
+
address@hidden macro
+
+Before (machin)
+ after truc.
+';
+
+$result_errors{'nested_macro_call'} = [];
+
+

Index: t/results/macro/two_macros_on_a_line.pl
===================================================================
RCS file: t/results/macro/two_macros_on_a_line.pl
diff -N t/results/macro/two_macros_on_a_line.pl
--- /dev/null   1 Jan 1970 00:00:00 -0000
+++ t/results/macro/two_macros_on_a_line.pl     2 Oct 2010 17:22:53 -0000       
1.1
@@ -0,0 +1,424 @@
+use vars qw(%result_texts %result_trees %result_errors);
+
+$result_trees{'two_macros_on_a_line'} = {
+  'contents' => [
+    {
+      'args' => [
+        {
+          'parent' => {},
+          'text' => 'mymacro',
+          'type' => 'macro_name'
+        }
+      ],
+      'cmdname' => 'macro',
+      'contents' => [
+        {
+          'parent' => {},
+          'text' => 'in mymacro
+',
+          'type' => 'raw'
+        }
+      ],
+      'parent' => {},
+      'special' => {
+        'macro_line' => ' mymacro
+',
+        'macrobody' => 'in mymacro
+'
+      }
+    },
+    {
+      'parent' => {},
+      'text' => '
+',
+      'type' => 'normal_line'
+    },
+    {
+      'args' => [
+        {
+          'parent' => {},
+          'text' => 'mymacro_with_args',
+          'type' => 'macro_name'
+        },
+        {
+          'parent' => {},
+          'text' => 'arg',
+          'type' => 'macro_arg'
+        }
+      ],
+      'cmdname' => 'macro',
+      'contents' => [
+        {
+          'parent' => {},
+          'text' => 'in with args
+',
+          'type' => 'raw'
+        },
+        {
+          'parent' => {},
+          'text' => 'now the arg \\arg\\
+',
+          'type' => 'raw'
+        },
+        {
+          'parent' => {},
+          'text' => 'after
+',
+          'type' => 'raw'
+        }
+      ],
+      'parent' => {},
+      'special' => {
+        'args_index' => {
+          'arg' => 0
+        },
+        'macro_line' => ' mymacro_with_args{arg}
+',
+        'macrobody' => 'in with args
+now the arg \\arg\\
+after
+'
+      }
+    },
+    {
+      'parent' => {},
+      'text' => '
+',
+      'type' => 'normal_line'
+    },
+    {
+      'parent' => {},
+      'text' => '
+',
+      'type' => 'normal_line'
+    },
+    {
+      'contents' => [
+        {
+          'cmdname' => '@',
+          'parent' => {}
+        },
+        {
+          'parent' => {},
+          'text' => 'mymacro'
+        },
+        {
+          'cmdname' => '{',
+          'parent' => {}
+        },
+        {
+          'cmdname' => '}',
+          'parent' => {}
+        },
+        {
+          'parent' => {},
+          'text' => ' '
+        },
+        {
+          'cmdname' => '@',
+          'parent' => {}
+        },
+        {
+          'parent' => {},
+          'text' => 'mymacro'
+        },
+        {
+          'cmdname' => '{',
+          'parent' => {}
+        },
+        {
+          'cmdname' => '}',
+          'parent' => {}
+        },
+        {
+          'parent' => {},
+          'text' => '
+'
+        },
+        {
+          'parent' => {},
+          'text' => 'in mymacro in mymacro'
+        }
+      ],
+      'parent' => {},
+      'type' => 'paragraph'
+    },
+    {
+      'parent' => {},
+      'text' => '
+',
+      'type' => 'normal_line'
+    },
+    {
+      'parent' => {},
+      'text' => '
+',
+      'type' => 'normal_line'
+    },
+    {
+      'contents' => [
+        {
+          'cmdname' => '@',
+          'parent' => {}
+        },
+        {
+          'parent' => {},
+          'text' => 'mymacro '
+        },
+        {
+          'cmdname' => '@',
+          'parent' => {}
+        },
+        {
+          'parent' => {},
+          'text' => 'mymacro'
+        },
+        {
+          'cmdname' => '{',
+          'parent' => {}
+        },
+        {
+          'cmdname' => '}',
+          'parent' => {}
+        },
+        {
+          'parent' => {},
+          'text' => '
+'
+        },
+        {
+          'parent' => {},
+          'text' => 'in mymacro in mymacro'
+        }
+      ],
+      'parent' => {},
+      'type' => 'paragraph'
+    },
+    {
+      'parent' => {},
+      'text' => '
+',
+      'type' => 'normal_line'
+    },
+    {
+      'parent' => {},
+      'text' => '
+',
+      'type' => 'normal_line'
+    },
+    {
+      'contents' => [
+        {
+          'cmdname' => '@',
+          'parent' => {}
+        },
+        {
+          'parent' => {},
+          'text' => 'mymacro'
+        },
+        {
+          'cmdname' => '{',
+          'parent' => {}
+        },
+        {
+          'cmdname' => '}',
+          'parent' => {}
+        },
+        {
+          'parent' => {},
+          'text' => ' '
+        },
+        {
+          'cmdname' => '@',
+          'parent' => {}
+        },
+        {
+          'parent' => {},
+          'text' => 'mymacro
+'
+        },
+        {
+          'parent' => {},
+          'text' => 'in mymacro in mymacro'
+        }
+      ],
+      'parent' => {},
+      'type' => 'paragraph'
+    },
+    {
+      'parent' => {},
+      'text' => '
+',
+      'type' => 'normal_line'
+    },
+    {
+      'parent' => {},
+      'text' => '
+',
+      'type' => 'normal_line'
+    },
+    {
+      'contents' => [
+        {
+          'parent' => {},
+          'text' => 'with args
+'
+        },
+        {
+          'parent' => {},
+          'text' => 'in with args
+'
+        },
+        {
+          'parent' => {},
+          'text' => 'now the arg an
+'
+        },
+        {
+          'parent' => {},
+          'text' => 'arg
+'
+        }
+      ],
+      'parent' => {},
+      'type' => 'paragraph'
+    },
+    {
+      'parent' => {},
+      'text' => '
+',
+      'type' => 'normal_line'
+    },
+    {
+      'contents' => [
+        {
+          'parent' => {},
+          'text' => 'in macro
+'
+        },
+        {
+          'parent' => {},
+          'text' => 'after in mymacro'
+        }
+      ],
+      'parent' => {},
+      'type' => 'paragraph'
+    },
+    {
+      'parent' => {},
+      'text' => '
+',
+      'type' => 'normal_line'
+    }
+  ]
+};
+$result_trees{'two_macros_on_a_line'}{'contents'}[0]{'args'}[0]{'parent'} = 
$result_trees{'two_macros_on_a_line'}{'contents'}[0];
+$result_trees{'two_macros_on_a_line'}{'contents'}[0]{'contents'}[0]{'parent'} 
= $result_trees{'two_macros_on_a_line'}{'contents'}[0];
+$result_trees{'two_macros_on_a_line'}{'contents'}[0]{'parent'} = 
$result_trees{'two_macros_on_a_line'};
+$result_trees{'two_macros_on_a_line'}{'contents'}[1]{'parent'} = 
$result_trees{'two_macros_on_a_line'};
+$result_trees{'two_macros_on_a_line'}{'contents'}[2]{'args'}[0]{'parent'} = 
$result_trees{'two_macros_on_a_line'}{'contents'}[2];
+$result_trees{'two_macros_on_a_line'}{'contents'}[2]{'args'}[1]{'parent'} = 
$result_trees{'two_macros_on_a_line'}{'contents'}[2];
+$result_trees{'two_macros_on_a_line'}{'contents'}[2]{'contents'}[0]{'parent'} 
= $result_trees{'two_macros_on_a_line'}{'contents'}[2];
+$result_trees{'two_macros_on_a_line'}{'contents'}[2]{'contents'}[1]{'parent'} 
= $result_trees{'two_macros_on_a_line'}{'contents'}[2];
+$result_trees{'two_macros_on_a_line'}{'contents'}[2]{'contents'}[2]{'parent'} 
= $result_trees{'two_macros_on_a_line'}{'contents'}[2];
+$result_trees{'two_macros_on_a_line'}{'contents'}[2]{'parent'} = 
$result_trees{'two_macros_on_a_line'};
+$result_trees{'two_macros_on_a_line'}{'contents'}[3]{'parent'} = 
$result_trees{'two_macros_on_a_line'};
+$result_trees{'two_macros_on_a_line'}{'contents'}[4]{'parent'} = 
$result_trees{'two_macros_on_a_line'};
+$result_trees{'two_macros_on_a_line'}{'contents'}[5]{'contents'}[0]{'parent'} 
= $result_trees{'two_macros_on_a_line'}{'contents'}[5];
+$result_trees{'two_macros_on_a_line'}{'contents'}[5]{'contents'}[1]{'parent'} 
= $result_trees{'two_macros_on_a_line'}{'contents'}[5];
+$result_trees{'two_macros_on_a_line'}{'contents'}[5]{'contents'}[2]{'parent'} 
= $result_trees{'two_macros_on_a_line'}{'contents'}[5];
+$result_trees{'two_macros_on_a_line'}{'contents'}[5]{'contents'}[3]{'parent'} 
= $result_trees{'two_macros_on_a_line'}{'contents'}[5];
+$result_trees{'two_macros_on_a_line'}{'contents'}[5]{'contents'}[4]{'parent'} 
= $result_trees{'two_macros_on_a_line'}{'contents'}[5];
+$result_trees{'two_macros_on_a_line'}{'contents'}[5]{'contents'}[5]{'parent'} 
= $result_trees{'two_macros_on_a_line'}{'contents'}[5];
+$result_trees{'two_macros_on_a_line'}{'contents'}[5]{'contents'}[6]{'parent'} 
= $result_trees{'two_macros_on_a_line'}{'contents'}[5];
+$result_trees{'two_macros_on_a_line'}{'contents'}[5]{'contents'}[7]{'parent'} 
= $result_trees{'two_macros_on_a_line'}{'contents'}[5];
+$result_trees{'two_macros_on_a_line'}{'contents'}[5]{'contents'}[8]{'parent'} 
= $result_trees{'two_macros_on_a_line'}{'contents'}[5];
+$result_trees{'two_macros_on_a_line'}{'contents'}[5]{'contents'}[9]{'parent'} 
= $result_trees{'two_macros_on_a_line'}{'contents'}[5];
+$result_trees{'two_macros_on_a_line'}{'contents'}[5]{'contents'}[10]{'parent'} 
= $result_trees{'two_macros_on_a_line'}{'contents'}[5];
+$result_trees{'two_macros_on_a_line'}{'contents'}[5]{'parent'} = 
$result_trees{'two_macros_on_a_line'};
+$result_trees{'two_macros_on_a_line'}{'contents'}[6]{'parent'} = 
$result_trees{'two_macros_on_a_line'};
+$result_trees{'two_macros_on_a_line'}{'contents'}[7]{'parent'} = 
$result_trees{'two_macros_on_a_line'};
+$result_trees{'two_macros_on_a_line'}{'contents'}[8]{'contents'}[0]{'parent'} 
= $result_trees{'two_macros_on_a_line'}{'contents'}[8];
+$result_trees{'two_macros_on_a_line'}{'contents'}[8]{'contents'}[1]{'parent'} 
= $result_trees{'two_macros_on_a_line'}{'contents'}[8];
+$result_trees{'two_macros_on_a_line'}{'contents'}[8]{'contents'}[2]{'parent'} 
= $result_trees{'two_macros_on_a_line'}{'contents'}[8];
+$result_trees{'two_macros_on_a_line'}{'contents'}[8]{'contents'}[3]{'parent'} 
= $result_trees{'two_macros_on_a_line'}{'contents'}[8];
+$result_trees{'two_macros_on_a_line'}{'contents'}[8]{'contents'}[4]{'parent'} 
= $result_trees{'two_macros_on_a_line'}{'contents'}[8];
+$result_trees{'two_macros_on_a_line'}{'contents'}[8]{'contents'}[5]{'parent'} 
= $result_trees{'two_macros_on_a_line'}{'contents'}[8];
+$result_trees{'two_macros_on_a_line'}{'contents'}[8]{'contents'}[6]{'parent'} 
= $result_trees{'two_macros_on_a_line'}{'contents'}[8];
+$result_trees{'two_macros_on_a_line'}{'contents'}[8]{'contents'}[7]{'parent'} 
= $result_trees{'two_macros_on_a_line'}{'contents'}[8];
+$result_trees{'two_macros_on_a_line'}{'contents'}[8]{'parent'} = 
$result_trees{'two_macros_on_a_line'};
+$result_trees{'two_macros_on_a_line'}{'contents'}[9]{'parent'} = 
$result_trees{'two_macros_on_a_line'};
+$result_trees{'two_macros_on_a_line'}{'contents'}[10]{'parent'} = 
$result_trees{'two_macros_on_a_line'};
+$result_trees{'two_macros_on_a_line'}{'contents'}[11]{'contents'}[0]{'parent'} 
= $result_trees{'two_macros_on_a_line'}{'contents'}[11];
+$result_trees{'two_macros_on_a_line'}{'contents'}[11]{'contents'}[1]{'parent'} 
= $result_trees{'two_macros_on_a_line'}{'contents'}[11];
+$result_trees{'two_macros_on_a_line'}{'contents'}[11]{'contents'}[2]{'parent'} 
= $result_trees{'two_macros_on_a_line'}{'contents'}[11];
+$result_trees{'two_macros_on_a_line'}{'contents'}[11]{'contents'}[3]{'parent'} 
= $result_trees{'two_macros_on_a_line'}{'contents'}[11];
+$result_trees{'two_macros_on_a_line'}{'contents'}[11]{'contents'}[4]{'parent'} 
= $result_trees{'two_macros_on_a_line'}{'contents'}[11];
+$result_trees{'two_macros_on_a_line'}{'contents'}[11]{'contents'}[5]{'parent'} 
= $result_trees{'two_macros_on_a_line'}{'contents'}[11];
+$result_trees{'two_macros_on_a_line'}{'contents'}[11]{'contents'}[6]{'parent'} 
= $result_trees{'two_macros_on_a_line'}{'contents'}[11];
+$result_trees{'two_macros_on_a_line'}{'contents'}[11]{'contents'}[7]{'parent'} 
= $result_trees{'two_macros_on_a_line'}{'contents'}[11];
+$result_trees{'two_macros_on_a_line'}{'contents'}[11]{'parent'} = 
$result_trees{'two_macros_on_a_line'};
+$result_trees{'two_macros_on_a_line'}{'contents'}[12]{'parent'} = 
$result_trees{'two_macros_on_a_line'};
+$result_trees{'two_macros_on_a_line'}{'contents'}[13]{'parent'} = 
$result_trees{'two_macros_on_a_line'};
+$result_trees{'two_macros_on_a_line'}{'contents'}[14]{'contents'}[0]{'parent'} 
= $result_trees{'two_macros_on_a_line'}{'contents'}[14];
+$result_trees{'two_macros_on_a_line'}{'contents'}[14]{'contents'}[1]{'parent'} 
= $result_trees{'two_macros_on_a_line'}{'contents'}[14];
+$result_trees{'two_macros_on_a_line'}{'contents'}[14]{'contents'}[2]{'parent'} 
= $result_trees{'two_macros_on_a_line'}{'contents'}[14];
+$result_trees{'two_macros_on_a_line'}{'contents'}[14]{'contents'}[3]{'parent'} 
= $result_trees{'two_macros_on_a_line'}{'contents'}[14];
+$result_trees{'two_macros_on_a_line'}{'contents'}[14]{'parent'} = 
$result_trees{'two_macros_on_a_line'};
+$result_trees{'two_macros_on_a_line'}{'contents'}[15]{'parent'} = 
$result_trees{'two_macros_on_a_line'};
+$result_trees{'two_macros_on_a_line'}{'contents'}[16]{'contents'}[0]{'parent'} 
= $result_trees{'two_macros_on_a_line'}{'contents'}[16];
+$result_trees{'two_macros_on_a_line'}{'contents'}[16]{'contents'}[1]{'parent'} 
= $result_trees{'two_macros_on_a_line'}{'contents'}[16];
+$result_trees{'two_macros_on_a_line'}{'contents'}[16]{'parent'} = 
$result_trees{'two_macros_on_a_line'};
+$result_trees{'two_macros_on_a_line'}{'contents'}[17]{'parent'} = 
$result_trees{'two_macros_on_a_line'};
+
+$result_texts{'two_macros_on_a_line'} = '@macro mymacro
+in mymacro
address@hidden macro
+
address@hidden mymacro_with_args{arg}
+in with args
+now the arg \\arg\\
+after
address@hidden macro
+
+
+@@address@hidden@} @@address@hidden@}
+in mymacro in mymacro
+
+@@mymacro @@address@hidden@}
+in mymacro in mymacro
+
+@@address@hidden@} @@mymacro
+in mymacro in mymacro
+
+with args
+in with args
+now the arg an
+arg
+
+in macro
+after in mymacro
+';
+
+$result_errors{'two_macros_on_a_line'} = [
+  {
+    'error_line' => ':16: warning: @mymacro defined with zero or more than one 
argument should be invoked with {}
+',
+    'file_name' => '',
+    'line_nr' => 16,
+    'macro' => '',
+    'text' => '@mymacro defined with zero or more than one argument should be 
invoked with {}',
+    'type' => 'warning'
+  },
+  {
+    'error_line' => ':19: warning: @mymacro defined with zero or more than one 
argument should be invoked with {}
+',
+    'file_name' => '',
+    'line_nr' => 19,
+    'macro' => '',
+    'text' => '@mymacro defined with zero or more than one argument should be 
invoked with {}',
+    'type' => 'warning'
+  }
+];
+
+



reply via email to

[Prev in Thread] Current Thread [Next in Thread]