texinfo-commits
[Top][All Lists]
Advanced

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

texinfo/tp Texinfo/Parser.pm t/02coverage.t t/t...


From: Patrice Dumas
Subject: texinfo/tp Texinfo/Parser.pm t/02coverage.t t/t...
Date: Sun, 26 Sep 2010 18:10:35 +0000

CVSROOT:        /sources/texinfo
Module name:    texinfo
Changes by:     Patrice Dumas <pertusus>        10/09/26 18:10:34

Modified files:
        tp/Texinfo     : Parser.pm 
        tp/t           : 02coverage.t test_utils.pl 
Added files:
        tp/t/results/coverage: def.pl 

Log message:
        Fix @def* handling. 

CVSWeb URLs:
http://cvs.savannah.gnu.org/viewcvs/texinfo/tp/Texinfo/Parser.pm?cvsroot=texinfo&r1=1.19&r2=1.20
http://cvs.savannah.gnu.org/viewcvs/texinfo/tp/t/02coverage.t?cvsroot=texinfo&r1=1.10&r2=1.11
http://cvs.savannah.gnu.org/viewcvs/texinfo/tp/t/test_utils.pl?cvsroot=texinfo&r1=1.10&r2=1.11
http://cvs.savannah.gnu.org/viewcvs/texinfo/tp/t/results/coverage/def.pl?cvsroot=texinfo&rev=1.1

Patches:
Index: Texinfo/Parser.pm
===================================================================
RCS file: /sources/texinfo/texinfo/tp/Texinfo/Parser.pm,v
retrieving revision 1.19
retrieving revision 1.20
diff -u -b -r1.19 -r1.20
--- Texinfo/Parser.pm   26 Sep 2010 07:43:25 -0000      1.19
+++ Texinfo/Parser.pm   26 Sep 2010 18:10:33 -0000      1.20
@@ -83,6 +83,120 @@
   $no_brace_commands{$no_brace_command} = 1;
 }
 
+# commands taking a line as argument or no argument.
+# sectioning commands and def* commands are added below.
+# index commands are added dynamically.
+my %misc_commands = (
+  'node' => {'arg' => 'line'}, # special arg
+  'bye' => {'skip' => 'line'}, # no arg
+  # set, clear
+  'set' => {'arg' => 'lineraw'}, # special arg
+  'clear' => {'arg' => 1, 'skip' => 'line'}, # special arg
+  # comments
+  'comment' => {'arg' => 'lineraw'},
+  'c' => {'arg' => 'lineraw'},
+  # special
+  'definfoenclose' => {'arg' => 'special'},
+  'alias' => {'args' => 'special'}, 
+  # file names
+  'setfilename' => {'arg' => 'line'},
+  'verbatiminclude'=> {'arg' => 'line'},
+
+  'raisesections' => {'skip' => 'line'},  # no arg
+  'lowersections' => {'skip' => 'line'}, # no arg
+  'contents' => {}, # no arg
+  'shortcontents' => {}, # no arg
+  'summarycontents'=> {}, # no arg
+  'insertcopying'=> {}, # no arg
+  'clickstyle' => {'arg' => 1}, # arg should be an @-command
+  # more relevant in preamble
+  'documentencoding' => {'arg' => 1, 'skip' => 'line'},
+  'setcontentsaftertitlepage' => {}, # no arg
+  'setshortcontentsaftertitlepage' => {}, # no arg
+  'novalidate' => {}, # no arg
+  'dircategory'=> {'arg' => 'line'}, # line. Position with regard 
+                   # with direntry is significant
+  'pagesizes' => {'arg' => 'line'}, # can have 2 args 
+                           # or one? 200mm,150mm 11.5in
+  'finalout' => {'skip' => 'line'}, # no arg
+  'paragraphindent' => {'skip' => 'line', 'arg' => 1}, # arg none asis 
+                       # or a number and forbids anything else on the line
+  'firstparagraphindent' => {'skip' => 'line', 'arg' => 1}, # none insert
+  'frenchspacing' => {'arg' => 1, 'skip' => 'line'}, # on off
+                                 # not so sure about 'skip' => 'line'
+  'fonttextsize' => {'arg' => 1}, # 10 11
+  'allowcodebreaks' => {'arg' => 1, 'skip' => 'line'}, # false or true
+  'exampleindent' => {'skip' => 'line', 'arg' => 1}, # asis or a number
+  'footnotestyle'=> {'skip' => 'line', 'arg' => 1}, # end and separate
+                           # and nothing else on the line
+  'afourpaper' => {'skip' => 'line'}, # no arg
+  'afivepaper' => {'skip' => 'line'}, # no arg
+  'afourlatex' => {'skip' => 'line'}, # no arg
+  'afourwide' => {'skip' => 'line'}, # no arg
+  'headings'=> {'skip' => 'line', 'arg' => 1},
+              #off on single double singleafter doubleafter
+              # interacts with setchapternewpage
+  'setchapternewpage' => {'skip' => 'line', 'arg' => 1}, # off on odd
+  # FIXME for the following the @this* commands are not defined. Also
+  # @value and maybe macro invocations may also be delayed.
+  'everyheading' => {'arg' => 'line'}, # @*heading @*footing use @|
+  'everyfooting' => {'arg' => 'line'}, # + @thispage @thissectionname 
@thissectionnum
+  'evenheading' => {'arg' => 'line'},  # @thissection @thischaptername 
@thischapternum 
+  'evenfooting' => {'arg' => 'line'},  # @thischapter @thistitle @thisfile
+  'oddheading' => {'arg' => 'line'},
+  'oddfooting' => {'arg' => 'line'},
+  'smallbook' => {'skip' => 'line'}, # no arg
+  'syncodeindex' => {'skip' => 'line', 'arg' => 2},
+                    # args are index identifiers
+  'synindex' => {'skip' => 'line', 'arg' => 2},
+  'defindex' => {'skip' => 'line', 'arg' => 'special'}, # one identifier arg
+  'defcodeindex' => {'skip' => 'line', 'arg' => 'special'}, # one identifier 
arg
+  'documentlanguage' => {'skip' => 'line', 'arg' => 1},
+                                                 # language code arg
+  'kbdinputstyle' => {'skip' => 'whitespace', 'arg' => 1}, # code 
+                                                  #example distinct
+  'everyheadingmarks' => {'skip' => 'line', 'arg' => 1}, # top bottom
+  'everyfootingmarks' => {'skip' => 'whitespace', 'arg' => 1},
+  'evenheadingmarks' => {'skip' => 'whitespace', 'arg' => 1},
+  'oddheadingmarks' => {'skip' => 'whitespace', 'arg' => 1},
+  'evenfootingmarks' => {'skip' => 'whitespace', 'arg' => 1},
+  'oddfootingmarks' => {'skip' => 'whitespace', 'arg' => 1},
+  # not valid for info (should be in @iftex)
+  'cropmarks' => {}, # no arg
+
+  # formatting
+  'center' => {'arg' => 'line'},
+  'printindex' => {'arg' => 1, 'skip' => 'line'},
+  'listoffloats' => {'arg' => 'line'},
+  # especially in titlepage
+  'shorttitle' => {'arg' => 'line'},
+  'shorttitlepage' => {'arg' => 'line'},
+  'settitle' => {'arg' => 'line'},
+  'author' => {'arg' => 'line'},
+  'subtitle' => {'arg' => 'line'},
+  'title' => {'arg' => 'line'},
+  'sp' => {'skip' => 'line', 'arg' => 1}, # no arg 
+                              # at the end of line or a numerical arg
+  'page' => {}, # no arg (pagebreak)
+  'need' => {'skip' => 'line', 'arg' => 1}, # one numerical/real arg
+  # formatting
+  'noindent' => {'skip' => 'whitespace'}, # no arg
+  'indent' => {'skip' => 'whitespace'},
+  'exdent' => {'skip' => 'space'},
+  'headitem' => {'skip' => 'space'},
+  'item' => {'skip' => 'space'}, # or line, depending on the context
+  'itemx' => {'skip' => 'space'},
+  'tab' => {'skip' => 'space'}, 
+  # not valid for info (should be in @iftex)
+  'vskip' => {'arg' => 'lineraw'}, # arg line in TeX
+  # obsolete @-commands.
+  'refill' => {}, # no arg (obsolete, to be ignored)
+  # Remove spaces and end of lines after the 
+  # commands? If no, they can lead to empty lines
+  'quote-arg' => {'skip' => 'line'},
+  'allow-recursion' => {'skip' => 'line'},
+);
+
 # command with braces. value is the max number of arguments.
 my %brace_commands;    
 
@@ -139,7 +253,9 @@
 
 # commands that have a possible content before an item
 my %block_item_commands;
-foreach my $bracketed_line_argument_command(#'multitable',
+
+my %def_commands;
+foreach my $def_command(
   'deffn',
   'defvr',
   'deftypefn',
@@ -161,8 +277,11 @@
   'defmethod',
   'deftypemethod'
 ) {
-  $block_commands{$bracketed_line_argument_command} = 'def';
-  $block_commands{$bracketed_line_argument_command.'x'} = 'def';
+  $block_commands{$def_command} = 'def';
+  $misc_commands{$def_command.'x'} = {'arg' => 'line'};
+  $def_commands{$def_command} = 1;
+  $def_commands{$def_command.'x'} = 1;
+  $def_commands{'line_'.$def_command} = 1;
 }
 
 $block_commands{'multitable'} = 'multitable';
@@ -241,114 +360,6 @@
   $forbidden_index_name{$other_forbidden_index_name} = 1;
 }
 
-my %misc_commands = (
-  'node' => {'arg' => 'line'}, # special arg
-  'bye' => {'skip' => 'line'}, # no arg
-  # set, clear
-  'set' => {'arg' => 'lineraw'}, # special arg
-  'clear' => {'arg' => 1, 'skip' => 'line'}, # special arg
-  # comments
-  'comment' => {'arg' => 'lineraw'},
-  'c' => {'arg' => 'lineraw'},
-  # special
-  'definfoenclose' => {'arg' => 'special'},
-  'alias' => {'args' => 'special'}, 
-  # file names
-  'setfilename' => {'arg' => 'line'},
-  'verbatiminclude'=> {'arg' => 'line'},
-
-  'raisesections' => {'skip' => 'line'},  # no arg
-  'lowersections' => {'skip' => 'line'}, # no arg
-  'contents' => {}, # no arg
-  'shortcontents' => {}, # no arg
-  'summarycontents'=> {}, # no arg
-  'insertcopying'=> {}, # no arg
-  'clickstyle' => {'arg' => 1}, # arg should be an @-command
-  # more relevant in preamble
-  'documentencoding' => {'arg' => 1, 'skip' => 'line'},
-  'setcontentsaftertitlepage' => {}, # no arg
-  'setshortcontentsaftertitlepage' => {}, # no arg
-  'novalidate' => {}, # no arg
-  'dircategory'=> {'arg' => 'line'}, # line. Position with regard 
-                   # with direntry is significant
-  'pagesizes' => {'skip' => 'line', 'arg' => 'line'}, # can have 2 args 
-                           # or one? 200mm,150mm 11.5in
-  'finalout' => {'skip' => 'line'}, # no arg
-  'paragraphindent' => {'skip' => 'line', 'arg' => 1}, # arg none asis 
-                       # or a number and forbids anything else on the line
-  'firstparagraphindent' => {'skip' => 'line', 'arg' => 1}, # none insert
-  'frenchspacing' => {'arg' => 1, 'skip' => 'line'}, # on off
-                                 # not so sure about 'skip' => 'line'
-  'fonttextsize' => {'arg' => 1}, # 10 11
-  'allowcodebreaks' => {'arg' => 1, 'skip' => 'line'}, # false or true
-  'exampleindent' => {'skip' => 'line', 'arg' => 1}, # asis or a number
-  'footnotestyle'=> {'skip' => 'line', 'arg' => 1}, # end and separate
-                           # and nothing else on the line
-  'afourpaper' => {'skip' => 'line'}, # no arg
-  'afivepaper' => {'skip' => 'line'}, # no arg
-  'afourlatex' => {'skip' => 'line'}, # no arg
-  'afourwide' => {'skip' => 'line'}, # no arg
-  'headings'=> {'skip' => 'line', 'arg' => 1},
-              #off on single double singleafter doubleafter
-              # interacts with setchapternewpage
-  'setchapternewpage' => {'skip' => 'line', 'arg' => 1}, # off on odd
-  'everyheading' => {'arg' => 'line'}, # @*heading @*footing use @|
-  'everyfooting' => {'arg' => 'line'}, # + @thispage @thissectionname 
@thissectionnum
-  'evenheading' => {'arg' => 'line'},  # @thissection @thischaptername 
@thischapternum 
-  'evenfooting' => {'arg' => 'line'},  # @thischapter @thistitle @thisfile
-  'oddheading' => {'arg' => 'line'},
-  'oddfooting' => {'arg' => 'line'},
-  'smallbook' => {'skip' => 'line'}, # no arg
-  'syncodeindex' => {'skip' => 'line', 'arg' => 2},
-                    # args are index identifiers
-  'synindex' => {'skip' => 'line', 'arg' => 2},
-  'defindex' => {'skip' => 'line', 'arg' => 'special'}, # one identifier arg
-  'defcodeindex' => {'skip' => 'line', 'arg' => 'special'}, # one identifier 
arg
-  'documentlanguage' => {'skip' => 'line', 'arg' => 1},
-                                                 # language code arg
-  'kbdinputstyle' => {'skip' => 'whitespace', 'arg' => 1}, # code 
-                                                  #example distinct
-  'everyheadingmarks' => {'skip' => 'line', 'arg' => 1}, # top bottom
-  'everyfootingmarks' => {'skip' => 'whitespace', 'arg' => 1},
-  'evenheadingmarks' => {'skip' => 'whitespace', 'arg' => 1},
-  'oddheadingmarks' => {'skip' => 'whitespace', 'arg' => 1},
-  'evenfootingmarks' => {'skip' => 'whitespace', 'arg' => 1},
-  'oddfootingmarks' => {'skip' => 'whitespace', 'arg' => 1},
-  # not valid for info (should be in @iftex)
-  'cropmarks' => {}, # no arg
-
-  # formatting
-  'center' => {'arg' => 'line'},
-  'printindex' => {'arg' => 1, 'skip' => 'line'},
-  'listoffloats' => {'arg' => 'line'},
-  # especially in titlepage
-  'shorttitle' => {'arg' => 'line'},
-  'shorttitlepage' => {'arg' => 'line'},
-  'settitle' => {'arg' => 'line'},
-  'author' => {'arg' => 'line'},
-  'subtitle' => {'arg' => 'line'},
-  'title' => {'arg' => 'line'},
-  'sp' => {'skip' => 'line', 'arg' => 1}, # no arg 
-                              # at the end of line or a numerical arg
-  'page' => {}, # no arg (pagebreak)
-  'need' => {'skip' => 'line', 'arg' => 1}, # one numerical/real arg
-  # formatting
-  'noindent' => {'skip' => 'whitespace'}, # no arg
-  'indent' => {'skip' => 'whitespace'},
-  'exdent' => {'skip' => 'space'},
-  'headitem' => {'skip' => 'space'},
-  'item' => {'skip' => 'space'}, # or line, depending on the context
-  'itemx' => {'skip' => 'space'},
-  'tab' => {'skip' => 'space'}, 
-  # not valid for info (should be in @iftex)
-  'vskip' => {'arg' => 'lineraw'}, # arg line in TeX
-  # obsolete @-commands.
-  'refill' => {}, # no arg (obsolete, to be ignored)
-  # Remove spaces and end of lines after the 
-  # commands? If no, they can lead to empty lines
-  'quote-arg' => {'skip' => 'line'},
-  'allow-recursion' => {'skip' => 'line'},
-);
 
 # commands that should only appear at the root level and contain up to
 # the next root command
@@ -1095,6 +1106,17 @@
             push @{$current->{'contents'}}, 
               { 'cmdname' => $command, 'parent' => $current };
               
+            if ($def_commands{$command}) {
+              my $base_command = $command;
+              $base_command =~ s/x$//;
+              if (!$current->{'cmdname'} 
+                   or $current->{'cmdname'} ne $base_command) {
+                return undef if $self->_line_error(sprintf($self->__("Must be 
in address@hidden' environment to use address@hidden'"), $base_command, 
$command), $line_nr);
+              }
+              push @{$self->{'context'}}, 'def';
+              $current->{'contents'}->[-1]->{'type'} = "line_$base_command";
+            }
+              
             foreach my $arg (@$args) {
               push @{$current->{'contents'}->[-1]->{'args'}},
                 { 'type' => 'misc_arg', 'text' => $arg, 
@@ -1127,16 +1149,32 @@
             ($current, $error) = _end_paragraph($self, $current, $line_nr);
             return undef if ($error);
             $line =~ s/\s*//;
+            # the def command holds a line_def* which corresponds with the
+            # definition line.  This allows to have a treatement similar
+            # with def*x.
+            if ($def_commands{$command}) {
+              push @{$self->{'context'}}, 'def';
+              push @{$current->{'contents'}}, { 
+                                                'parent' => $current,
+                                                'cmdname' => $command,
+                                                'contents' => [] };
+              $current = $current->{'contents'}->[-1];
+              push @{$current->{'contents'}}, { 
+                                                'type' => "line_$command",
+                                                'parent' => $current,
+                                                };
+            } else {
             push @{$current->{'contents'}}, { 'cmdname' => $command, 
                                               'parent' => $current,
                                               'contents' => [] };
+            }
             $current = $current->{'contents'}->[-1];
             my $arg_number = $block_commands{$command}
               if ($block_commands{$command} 
                   and $block_commands{$command} =~ /^\d+$/);
             if ($arg_number
-                or ($command eq 'multitable') 
-                or ($block_commands{$command} eq 'def')) {
+                or $command eq 'multitable'
+                or $def_commands{$command}) {
               $current->{'args'} = [ {
                  'type' => 'block_line_arg',
                  'contents' => [],
@@ -1148,8 +1186,6 @@
                 # both an argument and an @-command
                 $current->{'cmdname'} = 'columnfractions';
               }
-              push @{$self->{'context'}}, 'def' 
-                  if ($block_commands{$command} eq 'def');
             } else {
               push @{$self->{'context'}}, 'preformatted' 
                 if ($preformatted_commands{$command});
@@ -1245,9 +1281,11 @@
           return undef if _line_error ($self,
                                        $self->__("Unexpected \@"), $line_nr);
         } elsif ($separator eq '{') {
-          if ($current->{'parent'} and $current->{'parent'}->{'cmdname'}
-              and ($block_commands{$current->{'parent'}->{'cmdname'}} eq 
'multitable'
-                   or $block_commands{$current->{'parent'}->{'cmdname'}} eq 
'def')) {
+          if ($current->{'parent'} 
+              and (($current->{'parent'}->{'cmdname'}
+                     and $current->{'parent'}->{'cmdname'} eq 'multitable')
+                   or ($current->{'parent'}->{'type'} 
+                       and $def_commands{$current->{'parent'}->{'type'}}))) {
             push @{$current->{'contents'}},
                  { 'type' => 'bracketed', 'contents' => [],
                    'parent' => $current };
@@ -1273,6 +1311,7 @@
              # first is the arg.
              print STDERR "CLOSING address@hidden>{'parent'}->{'cmdname'}\n" 
if ($self->{'debug'});
              $current = $current->{'parent'}->{'parent'};
+          # footnote caption closing
           } elsif ($context_brace_commands{$self->{'context'}->[-1]}) {
              my $error;
              ($current, $error) = _end_paragraph($self, $current, $line_nr);
@@ -1319,8 +1358,18 @@
         if ($line ne '') {
           die "Remaining line: $line\n";
         }
-        if ($current->{'type'}
+        # def line
+        if ($current->{'parent'}
+             and $current->{'parent'}->{'type'}
+                    and $def_commands{$current->{'parent'}->{'type'}}) {
+            my $def_context = pop @{$self->{'context'}};
+            die "BUG: def_context $def_context "._print_current($current) 
+               if ($def_context ne 'def');
+            $current = $current->{'parent'}->{'parent'};
+        # other block command lines
+        } elsif ($current->{'type'}
             and $current->{'type'} eq 'block_line_arg') {
+          # @multitable @columnfractions
           if ($current->{'cmdname'}
               and $current->{'cmdname'} eq 'columnfractions') { 
             # the columnfraction content should be text only, maybe
@@ -1382,6 +1431,7 @@
                    { 'type' => 'fraction', 'text' => $fraction,
                      'parent' => $current };
             }
+          # @multitable args
           } elsif ($current->{'parent'} and $current->{'parent'}->{'cmdname'}
                      and $current->{'parent'}->{'cmdname'} eq 'multitable') {
             my $line_arg = $current;
@@ -1428,10 +1478,6 @@
             # this is in order to have $current->{'parent'} being the 
multitable
             
             $current = $line_arg;
-          } elsif ($current->{'parent'} and $current->{'parent'}->{'cmdname'}
-                   and $brace_commands{$current->{'parent'}->{'cmdname'}}
-                   and $brace_commands{$current->{'parent'}->{'cmdname'}} eq 
'def') {
-            pop @{$self->{'context'}};
           }
           $current = $current->{'parent'};
           if ($current->{'cmdname'} 
@@ -1440,6 +1486,7 @@
                'contents' => [], 'parent', $current };
             $current = $current->{'contents'}->[-1];
           }
+        # misc command line arguments
         } elsif ($current->{'type'} 
            and $current->{'type'} eq 'misc_line_arg') {
           # first parent is the @command, second is the parent
@@ -1466,7 +1513,8 @@
   if (defined($root->{'text'})) {
     $result .= $root->{'text'};
   } else {
-    if ($root->{'cmdname'}) {
+    if ($root->{'cmdname'} 
+       or ($root->{'type'} and $def_commands{$root->{'type'}})) {
       #print STDERR "cmd: $root->{'cmdname'}\n";
       $result .= _expand_cmd_args_to_texi($root);
     }
@@ -1490,20 +1538,22 @@
 
 sub _expand_cmd_args_to_texi ($) {
   my $cmd = shift;
-  my $result = '@'.$cmd->{'cmdname'};
+  my $cmdname = $cmd->{'cmdname'};
+  $cmdname = '' if (!$cmd->{'cmdname'} 
+                     and $cmd->{'type'} and $def_commands{$cmd->{'type'}});
+  my $result = '@'.$cmdname if ($cmdname);
   #print STDERR "Expand $result\n";
   # must be before the next condition
-  if ($block_commands{$cmd->{'cmdname'}}
-         and ($block_commands{$cmd->{'cmdname'}} eq 'def'
-              or $block_commands{$cmd->{'cmdname'}} eq 'multitable')) {
+  if ($block_commands{$cmdname}
+         and ($def_commands{$cmdname}
+              or $block_commands{$cmdname} eq 'multitable')
+         and $cmd->{'args'}) {
      foreach my $arg (@{$cmd->{'args'}}) {
         my $arg_expanded = tree_to_texi ($arg);
-#        $arg_expanded = '{'.$arg_expanded.'}'
-#          if ($arg->{'type'} and $arg->{'type'} eq 'bracketed');
         $result .= ' '.$arg_expanded;
      }
-  } elsif ($block_commands{$cmd->{'cmdname'}}
-            and $block_commands{$cmd->{'cmdname'}} ne 'raw'
+  } elsif ($block_commands{$cmdname}
+            and $block_commands{$cmdname} ne 'raw'
             and defined($cmd->{'args'})) {
     die "bad args type (".ref($cmd->{'args'}).") $cmd->{'args'}\n"
       if (ref($cmd->{'args'}) ne 'ARRAY');
@@ -1512,52 +1562,52 @@
        $result .= tree_to_texi ($arg) . ', ';
     }
     $result =~ s/, $//;
-  } elsif ($cmd->{'cmdname'} eq 'macro') {
+  } elsif ($cmdname eq 'macro') {
     $result .= ' ' .$cmd->{'args'}->[0]->{'text'}. ' '
                . $cmd->{'args'}->[1]->{'text'};
   } elsif (defined($cmd->{'args'})) {
     my $braces;
     $braces = 1 if (($cmd->{'args'}->[0]->{'type'} 
                     and $cmd->{'args'}->[0]->{'type'} eq 'brace_command_arg')
-                    or ($context_brace_commands{$cmd->{'cmdname'}}));
+                    or ($context_brace_commands{$cmdname}));
     $result .= '{' if ($braces);
     $result .= ' ' if ($cmd->{'args'}->[0]->{'type'} 
                        and $cmd->{'args'}->[0]->{'type'} eq 
'space_command_arg');
-    if ($cmd->{'cmdname'} eq 'verb') {
+    if ($cmdname eq 'verb') {
       $result .= $cmd->{'type'};
     }
     #print STDERR "".Data::Dumper->Dump([$cmd]);
     my $arg_nr = 0;
     foreach my $arg (@{$cmd->{'args'}}) {
-      if (exists($brace_commands{$cmd->{'cmdname'}})) {
+      if (exists($brace_commands{$cmdname})) {
         $result .= ', ' if ($arg_nr);
         $arg_nr++;
       } else {
         $result .= ' '
-          unless ($cmd->{'cmdname'} eq 'c' or $cmd->{'cmdname'} eq 'comment');
+          unless ($cmdname eq 'c' or $cmdname eq 'comment');
       }
       $result .= tree_to_texi ($arg);
     }
-    if ($cmd->{'cmdname'} eq 'verb') {
+    if ($cmdname eq 'verb') {
       $result .= $cmd->{'type'};
     }
-    #die "Shouldn't have args: $cmd->{'cmdname'}\n";
+    #die "Shouldn't have args: $cmdname\n";
     $result .= '}' if ($braces);
-  } elsif ($misc_commands{$cmd->{'cmdname'}}
-      and $misc_commands{$cmd->{'cmdname'}}->{'skip'}) {
-    if ($misc_commands{$cmd->{'cmdname'}}->{'skip'} eq 'space') {
+  } elsif ($misc_commands{$cmdname}
+      and $misc_commands{$cmdname}->{'skip'}) {
+    if ($misc_commands{$cmdname}->{'skip'} eq 'space') {
       $result .= ' ';
     }
   }
-  if ($misc_commands{$cmd->{'cmdname'}}
-      and $misc_commands{$cmd->{'cmdname'}}->{'skip'}
-      and $misc_commands{$cmd->{'cmdname'}}->{'skip'} eq 'line') {
+  if ($misc_commands{$cmdname}
+      and $misc_commands{$cmdname}->{'skip'}
+      and $misc_commands{$cmdname}->{'skip'} eq 'line') {
     $result .="\n";
   }
-  if (defined($block_commands{$cmd->{'cmdname'}})) {
+  if (defined($block_commands{$cmdname})) {
     # there is an end of line if there is a comment, for example
     chomp($result);
-    $result .= "\n";
+    $result .= "\n" unless ($def_commands{$cmdname});
   }
   #print STDERR "Result: $result\n";
   return $result;

Index: t/02coverage.t
===================================================================
RCS file: /sources/texinfo/texinfo/tp/t/02coverage.t,v
retrieving revision 1.10
retrieving revision 1.11
diff -u -b -r1.10 -r1.11
--- t/02coverage.t      25 Sep 2010 21:17:57 -0000      1.10
+++ t/02coverage.t      26 Sep 2010 18:10:34 -0000      1.11
@@ -87,10 +87,8 @@
 @end vtable
 @end format
 '],
-);
-my @todo = (
 ['def','
address@hidden c--ategory d--effn_name a--rguments...
address@hidden {c--ategory} d--effn_name a--rguments...
 d--effn
 @end deffn
 
@@ -124,5 +122,3 @@
 
 run_all ('coverage', address@hidden, $arg_test_case,
    $arg_generate, $arg_debug);
-
-1;

Index: t/test_utils.pl
===================================================================
RCS file: /sources/texinfo/texinfo/tp/t/test_utils.pl,v
retrieving revision 1.10
retrieving revision 1.11
diff -u -b -r1.10 -r1.11
--- t/test_utils.pl     25 Sep 2010 13:58:21 -0000      1.10
+++ t/test_utils.pl     26 Sep 2010 18:10:34 -0000      1.11
@@ -4,6 +4,9 @@
 use Texinfo::Parser qw(:all);
 use Data::Dumper;
 use Data::Compare;
+#use Data::Diff;
+#use Data::Transformer;
+#use Struct::Compare;
 use Getopt::Long qw(GetOptions);
 
 use vars qw(%result_texts %result_trees %result_errors);
@@ -18,6 +21,9 @@
 
 our $arg_test_case = shift @ARGV;
 
+#my $remove_parent = sub {my $h = shift; delete $h->{'parent'}};
+#my $transformer = Data::Transformer->new('hash'=>$remove_parent);
+
 sub new_test ($;$$)
 {
   my $name = shift;
@@ -43,7 +49,6 @@
   my $parser = Texinfo::Parser->parser({'test' => 1, 'debug' => 
$self->{'debug'}});
   print STDERR "  TEST $test_name\n" if ($self->{'debug'});
   my $result =  $parser->parse_texi_text($test_text, 1);
-  $result = $parser->tree () if (!$result);
 
   my $file = "t/results/$self->{'name'}/$test_name.pl";
   my $new_file = $file.'.new';
@@ -59,6 +64,7 @@
     open (OUT, ">$out_file") or die "Open $out_file: $!\n";
     print OUT 'use vars qw(%result_texts %result_trees 
%result_errors);'."\n\n";
 
+    #print STDERR "Generate: ".Data::Dumper->Dump([$result], ['$res']);
     my $out_result = "".Data::Dumper->Dump([$result], 
['$result_trees{\''.$test_name.'\'}']);
     $out_result .= "\n".'$result_texts{\''.$test_name.'\'} = 
\''.tree_to_texi($result)."';\n\n";
     $out_result .= "".Data::Dumper->Dump([$parser->errors()], 
['$result_errors{\''.$test_name.'\'}']) ."\n\n";
@@ -69,7 +75,24 @@
   } 
   if (!$self->{'generate'}) {
     require $file;
+
+    #$transformer->traverse($result_trees{$test_name});
+    #$transformer->traverse($result);
+    {
+      #local $Data::Dumper::Purity = 1;
+      local $Data::Dumper::Sortkeys = 1;
+      local $Data::Dumper::Indent = 1;
+      #if (!Struct::Compare::compare($result, $result_trees{$test_name})) {
+      #  print STDERR "".Data::Dumper->Dump([$result],['$new']);
+      #  print STDERR "".Data::Dumper->Dump([$result_trees{$test_name}], 
['$ref']);
+      #}
+
+      #my $diff = Data::Diff->new($result, $result_trees{$test_name});
+      #print STDERR "".Data::Dumper->Dump([$diff->raw()], ['$diff']);
+    }
     ok (Data::Compare::Compare($result, $result_trees{$test_name}, { 
'ignore_hash_keys' => [qw(parent)] }), $test_name.' tree' );
+    #ok(Struct::Compare::compare($result, $result_trees{$test_name}), 
$test_name.' tree' );
+    #ok (Data::Compare::Compare($result, $result_trees{$test_name}), 
$test_name.' tree' );
     ok (Data::Compare::Compare($parser->errors(), $result_errors{$test_name}), 
$test_name.' errors' );
     is (tree_to_texi($result), $result_texts{$test_name}, $test_name.' text' );
   }

Index: t/results/coverage/def.pl
===================================================================
RCS file: t/results/coverage/def.pl
diff -N t/results/coverage/def.pl
--- /dev/null   1 Jan 1970 00:00:00 -0000
+++ t/results/coverage/def.pl   26 Sep 2010 18:10:34 -0000      1.1
@@ -0,0 +1,791 @@
+use vars qw(%result_texts %result_trees %result_errors);
+
+$result_trees{'def'} = {
+  'contents' => [
+    {
+      'parent' => {},
+      'text' => '
+',
+      'type' => 'normal_line'
+    },
+    {
+      'cmdname' => 'deffn',
+      'contents' => [
+        {
+          'args' => [
+            {
+              'contents' => [
+                {
+                  'contents' => [
+                    {
+                      'parent' => {},
+                      'text' => 'c--ategory'
+                    }
+                  ],
+                  'parent' => {},
+                  'type' => 'bracketed'
+                },
+                {
+                  'parent' => {},
+                  'text' => ' d--effn_name a--rguments...
+'
+                }
+              ],
+              'parent' => {},
+              'type' => 'block_line_arg'
+            }
+          ],
+          'parent' => {},
+          'type' => 'line_deffn'
+        },
+        {
+          'contents' => [
+            {
+              'parent' => {},
+              'text' => 'd--effn
+'
+            }
+          ],
+          'parent' => {},
+          'type' => 'paragraph'
+        }
+      ],
+      'parent' => {}
+    },
+    {
+      'parent' => {},
+      'text' => '
+',
+      'type' => 'normal_line'
+    },
+    {
+      'cmdname' => 'deffn',
+      'contents' => [
+        {
+          'args' => [
+            {
+              'contents' => [
+                {
+                  'parent' => {},
+                  'text' => 'cate--gory de--ffn_name ar--guments    more args '
+                },
+                {
+                  'cmdname' => '*',
+                  'parent' => {}
+                },
+                {
+                  'parent' => {},
+                  'text' => ' even more so
+'
+                }
+              ],
+              'parent' => {},
+              'type' => 'block_line_arg'
+            }
+          ],
+          'parent' => {},
+          'type' => 'line_deffn'
+        },
+        {
+          'contents' => [
+            {
+              'parent' => {},
+              'text' => 'def--fn
+'
+            }
+          ],
+          'parent' => {},
+          'type' => 'paragraph'
+        }
+      ],
+      'parent' => {}
+    },
+    {
+      'parent' => {},
+      'text' => '
+',
+      'type' => 'normal_line'
+    },
+    {
+      'cmdname' => 'deffn',
+      'contents' => [
+        {
+          'args' => [
+            {
+              'contents' => [
+                {
+                  'parent' => {},
+                  'text' => 'fset '
+                },
+                {
+                  'args' => [
+                    {
+                      'contents' => [
+                        {
+                          'parent' => {},
+                          'text' => 'i'
+                        }
+                      ],
+                      'parent' => {},
+                      'type' => 'brace_command_arg'
+                    }
+                  ],
+                  'cmdname' => 'var',
+                  'parent' => {},
+                  'remaining_args' => 0
+                },
+                {
+                  'parent' => {},
+                  'text' => ' a g
+'
+                }
+              ],
+              'parent' => {},
+              'type' => 'block_line_arg'
+            }
+          ],
+          'parent' => {},
+          'type' => 'line_deffn'
+        },
+        {
+          'args' => [
+            {
+              'contents' => [
+                {
+                  'contents' => [
+                    {
+                      'parent' => {},
+                      'text' => 'cmde'
+                    }
+                  ],
+                  'parent' => {},
+                  'type' => 'bracketed'
+                },
+                {
+                  'parent' => {},
+                  'text' => ' truc '
+                },
+                {
+                  'contents' => [],
+                  'parent' => {},
+                  'type' => 'bracketed'
+                },
+                {
+                  'parent' => {},
+                  'text' => '
+'
+                }
+              ],
+              'parent' => {},
+              'type' => 'misc_line_arg'
+            }
+          ],
+          'cmdname' => 'deffnx',
+          'parent' => {},
+          'type' => 'line_deffn'
+        },
+        {
+          'args' => [
+            {
+              'contents' => [
+                {
+                  'parent' => {},
+                  'text' => 'Command '
+                },
+                {
+                  'contents' => [
+                    {
+                      'parent' => {},
+                      'text' => 'log trap'
+                    }
+                  ],
+                  'parent' => {},
+                  'type' => 'bracketed'
+                },
+                {
+                  'parent' => {},
+                  'text' => ' '
+                },
+                {
+                  'contents' => [],
+                  'parent' => {},
+                  'type' => 'bracketed'
+                },
+                {
+                  'parent' => {},
+                  'text' => '
+'
+                }
+              ],
+              'parent' => {},
+              'type' => 'misc_line_arg'
+            }
+          ],
+          'cmdname' => 'deffnx',
+          'parent' => {},
+          'type' => 'line_deffn'
+        },
+        {
+          'args' => [
+            {
+              'contents' => [
+                {
+                  'parent' => {},
+                  'text' => 'Command '
+                },
+                {
+                  'contents' => [
+                    {
+                      'parent' => {},
+                      'text' => ' log trap1'
+                    }
+                  ],
+                  'parent' => {},
+                  'type' => 'bracketed'
+                },
+                {
+                  'parent' => {},
+                  'text' => ' '
+                },
+                {
+                  'contents' => [],
+                  'parent' => {},
+                  'type' => 'bracketed'
+                },
+                {
+                  'parent' => {},
+                  'text' => '  
+'
+                }
+              ],
+              'parent' => {},
+              'type' => 'misc_line_arg'
+            }
+          ],
+          'cmdname' => 'deffnx',
+          'parent' => {},
+          'type' => 'line_deffn'
+        },
+        {
+          'args' => [
+            {
+              'contents' => [
+                {
+                  'parent' => {},
+                  'text' => 'Command '
+                },
+                {
+                  'contents' => [
+                    {
+                      'parent' => {},
+                      'text' => 'log trap2 '
+                    }
+                  ],
+                  'parent' => {},
+                  'type' => 'bracketed'
+                },
+                {
+                  'parent' => {},
+                  'text' => ' '
+                },
+                {
+                  'contents' => [],
+                  'parent' => {},
+                  'type' => 'bracketed'
+                },
+                {
+                  'parent' => {},
+                  'text' => '
+'
+                }
+              ],
+              'parent' => {},
+              'type' => 'misc_line_arg'
+            }
+          ],
+          'cmdname' => 'deffnx',
+          'parent' => {},
+          'type' => 'line_deffn'
+        },
+        {
+          'args' => [
+            {
+              'contents' => [
+                {
+                  'parent' => {},
+                  'text' => 'cmde '
+                },
+                {
+                  'args' => [
+                    {
+                      'contents' => [
+                        {
+                          'parent' => {},
+                          'text' => 'id ule'
+                        }
+                      ],
+                      'parent' => {},
+                      'type' => 'brace_command_arg'
+                    }
+                  ],
+                  'cmdname' => 'b',
+                  'parent' => {},
+                  'remaining_args' => 0
+                },
+                {
+                  'parent' => {},
+                  'text' => ' truc
+'
+                }
+              ],
+              'parent' => {},
+              'type' => 'misc_line_arg'
+            }
+          ],
+          'cmdname' => 'deffnx',
+          'parent' => {},
+          'type' => 'line_deffn'
+        },
+        {
+          'args' => [
+            {
+              'contents' => [
+                {
+                  'parent' => {},
+                  'text' => 'cmde2 '
+                },
+                {
+                  'args' => [
+                    {
+                      'contents' => [
+                        {
+                          'parent' => {},
+                          'text' => 'id '
+                        },
+                        {
+                          'args' => [
+                            {
+                              'contents' => [
+                                {
+                                  'parent' => {},
+                                  'text' => 'i'
+                                }
+                              ],
+                              'parent' => {},
+                              'type' => 'brace_command_arg'
+                            }
+                          ],
+                          'cmdname' => 'samp',
+                          'parent' => {},
+                          'remaining_args' => 0
+                        },
+                        {
+                          'parent' => {},
+                          'text' => ' ule'
+                        }
+                      ],
+                      'parent' => {},
+                      'type' => 'brace_command_arg'
+                    }
+                  ],
+                  'cmdname' => 'b',
+                  'parent' => {},
+                  'remaining_args' => 0
+                },
+                {
+                  'parent' => {},
+                  'text' => ' truc
+'
+                }
+              ],
+              'parent' => {},
+              'type' => 'misc_line_arg'
+            }
+          ],
+          'cmdname' => 'deffnx',
+          'parent' => {},
+          'type' => 'line_deffn'
+        },
+        {
+          'args' => [
+            {
+              'contents' => [
+                {
+                  'contents' => [],
+                  'parent' => {},
+                  'type' => 'bracketed'
+                },
+                {
+                  'parent' => {},
+                  'text' => ' machin
+'
+                }
+              ],
+              'parent' => {},
+              'type' => 'misc_line_arg'
+            }
+          ],
+          'cmdname' => 'deffnx',
+          'parent' => {},
+          'type' => 'line_deffn'
+        },
+        {
+          'args' => [
+            {
+              'contents' => [
+                {
+                  'contents' => [],
+                  'parent' => {},
+                  'type' => 'bracketed'
+                },
+                {
+                  'parent' => {},
+                  'text' => ' '
+                },
+                {
+                  'contents' => [
+                    {
+                      'parent' => {},
+                      'text' => 'bidule machin'
+                    }
+                  ],
+                  'parent' => {},
+                  'type' => 'bracketed'
+                },
+                {
+                  'parent' => {},
+                  'text' => '
+'
+                }
+              ],
+              'parent' => {},
+              'type' => 'misc_line_arg'
+            }
+          ],
+          'cmdname' => 'deffnx',
+          'parent' => {},
+          'type' => 'line_deffn'
+        },
+        {
+          'args' => [
+            {
+              'contents' => [
+                {
+                  'contents' => [
+                    {
+                      'parent' => {},
+                      'text' => 'truc'
+                    }
+                  ],
+                  'parent' => {},
+                  'type' => 'bracketed'
+                },
+                {
+                  'parent' => {},
+                  'text' => ' machin
+'
+                }
+              ],
+              'parent' => {},
+              'type' => 'misc_line_arg'
+            }
+          ],
+          'cmdname' => 'deffnx',
+          'parent' => {},
+          'type' => 'line_deffn'
+        },
+        {
+          'args' => [
+            {
+              'contents' => [
+                {
+                  'contents' => [
+                    {
+                      'parent' => {},
+                      'text' => 'truc'
+                    }
+                  ],
+                  'parent' => {},
+                  'type' => 'bracketed'
+                },
+                {
+                  'parent' => {},
+                  'text' => ' followed by a comment
+'
+                }
+              ],
+              'parent' => {},
+              'type' => 'misc_line_arg'
+            }
+          ],
+          'cmdname' => 'deffnx',
+          'parent' => {},
+          'type' => 'line_deffn'
+        },
+        {
+          'args' => [
+            {
+              'parent' => {},
+              'text' => ' comment
+',
+              'type' => 'misc_arg'
+            }
+          ],
+          'cmdname' => 'c',
+          'parent' => {}
+        },
+        {
+          'contents' => [
+            {
+              'parent' => {},
+              'text' => 'Various deff lines
+'
+            },
+            {
+              'args' => [
+                {
+                  'contents' => [
+                    {
+                      'contents' => [
+                        {
+                          'parent' => {},
+                          'text' => 'truc'
+                        }
+                      ],
+                      'parent' => {},
+                      'type' => 'bracketed'
+                    },
+                    {
+                      'parent' => {},
+                      'text' => ' after a deff item
+'
+                    }
+                  ],
+                  'parent' => {},
+                  'type' => 'misc_line_arg'
+                }
+              ],
+              'cmdname' => 'deffnx',
+              'parent' => {},
+              'type' => 'line_deffn'
+            },
+            {
+              'args' => [
+                {
+                  'parent' => {},
+                  'text' => ' comment
+',
+                  'type' => 'misc_arg'
+                }
+              ],
+              'cmdname' => 'c',
+              'parent' => {}
+            },
+            {
+              'parent' => {},
+              'text' => 'text in def item for second def item
+'
+            },
+            {
+              'args' => [
+                {
+                  'contents' => [
+                    {
+                      'contents' => [
+                        {
+                          'parent' => {},
+                          'text' => 'truc'
+                        }
+                      ],
+                      'parent' => {},
+                      'type' => 'bracketed'
+                    },
+                    {
+                      'parent' => {},
+                      'text' => ' deffnx before end deffn
+'
+                    }
+                  ],
+                  'parent' => {},
+                  'type' => 'misc_line_arg'
+                }
+              ],
+              'cmdname' => 'deffnx',
+              'parent' => {},
+              'type' => 'line_deffn'
+            }
+          ],
+          'parent' => {},
+          'type' => 'paragraph'
+        }
+      ],
+      'parent' => {}
+    }
+  ]
+};
+$result_trees{'def'}{'contents'}[0]{'parent'} = $result_trees{'def'};
+$result_trees{'def'}{'contents'}[1]{'contents'}[0]{'args'}[0]{'contents'}[0]{'contents'}[0]{'parent'}
 = $result_trees{'def'}{'contents'}[1]{'contents'}[0]{'args'}[0]{'contents'}[0];
+$result_trees{'def'}{'contents'}[1]{'contents'}[0]{'args'}[0]{'contents'}[0]{'parent'}
 = $result_trees{'def'}{'contents'}[1]{'contents'}[0]{'args'}[0];
+$result_trees{'def'}{'contents'}[1]{'contents'}[0]{'args'}[0]{'contents'}[1]{'parent'}
 = $result_trees{'def'}{'contents'}[1]{'contents'}[0]{'args'}[0];
+$result_trees{'def'}{'contents'}[1]{'contents'}[0]{'args'}[0]{'parent'} = 
$result_trees{'def'}{'contents'}[1]{'contents'}[0];
+$result_trees{'def'}{'contents'}[1]{'contents'}[0]{'parent'} = 
$result_trees{'def'}{'contents'}[1];
+$result_trees{'def'}{'contents'}[1]{'contents'}[1]{'contents'}[0]{'parent'} = 
$result_trees{'def'}{'contents'}[1]{'contents'}[1];
+$result_trees{'def'}{'contents'}[1]{'contents'}[1]{'parent'} = 
$result_trees{'def'}{'contents'}[1];
+$result_trees{'def'}{'contents'}[1]{'parent'} = $result_trees{'def'};
+$result_trees{'def'}{'contents'}[2]{'parent'} = $result_trees{'def'};
+$result_trees{'def'}{'contents'}[3]{'contents'}[0]{'args'}[0]{'contents'}[0]{'parent'}
 = $result_trees{'def'}{'contents'}[3]{'contents'}[0]{'args'}[0];
+$result_trees{'def'}{'contents'}[3]{'contents'}[0]{'args'}[0]{'contents'}[1]{'parent'}
 = $result_trees{'def'}{'contents'}[3]{'contents'}[0]{'args'}[0];
+$result_trees{'def'}{'contents'}[3]{'contents'}[0]{'args'}[0]{'contents'}[2]{'parent'}
 = $result_trees{'def'}{'contents'}[3]{'contents'}[0]{'args'}[0];
+$result_trees{'def'}{'contents'}[3]{'contents'}[0]{'args'}[0]{'parent'} = 
$result_trees{'def'}{'contents'}[3]{'contents'}[0];
+$result_trees{'def'}{'contents'}[3]{'contents'}[0]{'parent'} = 
$result_trees{'def'}{'contents'}[3];
+$result_trees{'def'}{'contents'}[3]{'contents'}[1]{'contents'}[0]{'parent'} = 
$result_trees{'def'}{'contents'}[3]{'contents'}[1];
+$result_trees{'def'}{'contents'}[3]{'contents'}[1]{'parent'} = 
$result_trees{'def'}{'contents'}[3];
+$result_trees{'def'}{'contents'}[3]{'parent'} = $result_trees{'def'};
+$result_trees{'def'}{'contents'}[4]{'parent'} = $result_trees{'def'};
+$result_trees{'def'}{'contents'}[5]{'contents'}[0]{'args'}[0]{'contents'}[0]{'parent'}
 = $result_trees{'def'}{'contents'}[5]{'contents'}[0]{'args'}[0];
+$result_trees{'def'}{'contents'}[5]{'contents'}[0]{'args'}[0]{'contents'}[1]{'args'}[0]{'contents'}[0]{'parent'}
 = 
$result_trees{'def'}{'contents'}[5]{'contents'}[0]{'args'}[0]{'contents'}[1]{'args'}[0];
+$result_trees{'def'}{'contents'}[5]{'contents'}[0]{'args'}[0]{'contents'}[1]{'args'}[0]{'parent'}
 = $result_trees{'def'}{'contents'}[5]{'contents'}[0]{'args'}[0]{'contents'}[1];
+$result_trees{'def'}{'contents'}[5]{'contents'}[0]{'args'}[0]{'contents'}[1]{'parent'}
 = $result_trees{'def'}{'contents'}[5]{'contents'}[0]{'args'}[0];
+$result_trees{'def'}{'contents'}[5]{'contents'}[0]{'args'}[0]{'contents'}[2]{'parent'}
 = $result_trees{'def'}{'contents'}[5]{'contents'}[0]{'args'}[0];
+$result_trees{'def'}{'contents'}[5]{'contents'}[0]{'args'}[0]{'parent'} = 
$result_trees{'def'}{'contents'}[5]{'contents'}[0];
+$result_trees{'def'}{'contents'}[5]{'contents'}[0]{'parent'} = 
$result_trees{'def'}{'contents'}[5];
+$result_trees{'def'}{'contents'}[5]{'contents'}[1]{'args'}[0]{'contents'}[0]{'contents'}[0]{'parent'}
 = $result_trees{'def'}{'contents'}[5]{'contents'}[1]{'args'}[0]{'contents'}[0];
+$result_trees{'def'}{'contents'}[5]{'contents'}[1]{'args'}[0]{'contents'}[0]{'parent'}
 = $result_trees{'def'}{'contents'}[5]{'contents'}[1]{'args'}[0];
+$result_trees{'def'}{'contents'}[5]{'contents'}[1]{'args'}[0]{'contents'}[1]{'parent'}
 = $result_trees{'def'}{'contents'}[5]{'contents'}[1]{'args'}[0];
+$result_trees{'def'}{'contents'}[5]{'contents'}[1]{'args'}[0]{'contents'}[2]{'parent'}
 = $result_trees{'def'}{'contents'}[5]{'contents'}[1]{'args'}[0];
+$result_trees{'def'}{'contents'}[5]{'contents'}[1]{'args'}[0]{'contents'}[3]{'parent'}
 = $result_trees{'def'}{'contents'}[5]{'contents'}[1]{'args'}[0];
+$result_trees{'def'}{'contents'}[5]{'contents'}[1]{'args'}[0]{'parent'} = 
$result_trees{'def'}{'contents'}[5]{'contents'}[1];
+$result_trees{'def'}{'contents'}[5]{'contents'}[1]{'parent'} = 
$result_trees{'def'}{'contents'}[5];
+$result_trees{'def'}{'contents'}[5]{'contents'}[2]{'args'}[0]{'contents'}[0]{'parent'}
 = $result_trees{'def'}{'contents'}[5]{'contents'}[2]{'args'}[0];
+$result_trees{'def'}{'contents'}[5]{'contents'}[2]{'args'}[0]{'contents'}[1]{'contents'}[0]{'parent'}
 = $result_trees{'def'}{'contents'}[5]{'contents'}[2]{'args'}[0]{'contents'}[1];
+$result_trees{'def'}{'contents'}[5]{'contents'}[2]{'args'}[0]{'contents'}[1]{'parent'}
 = $result_trees{'def'}{'contents'}[5]{'contents'}[2]{'args'}[0];
+$result_trees{'def'}{'contents'}[5]{'contents'}[2]{'args'}[0]{'contents'}[2]{'parent'}
 = $result_trees{'def'}{'contents'}[5]{'contents'}[2]{'args'}[0];
+$result_trees{'def'}{'contents'}[5]{'contents'}[2]{'args'}[0]{'contents'}[3]{'parent'}
 = $result_trees{'def'}{'contents'}[5]{'contents'}[2]{'args'}[0];
+$result_trees{'def'}{'contents'}[5]{'contents'}[2]{'args'}[0]{'contents'}[4]{'parent'}
 = $result_trees{'def'}{'contents'}[5]{'contents'}[2]{'args'}[0];
+$result_trees{'def'}{'contents'}[5]{'contents'}[2]{'args'}[0]{'parent'} = 
$result_trees{'def'}{'contents'}[5]{'contents'}[2];
+$result_trees{'def'}{'contents'}[5]{'contents'}[2]{'parent'} = 
$result_trees{'def'}{'contents'}[5];
+$result_trees{'def'}{'contents'}[5]{'contents'}[3]{'args'}[0]{'contents'}[0]{'parent'}
 = $result_trees{'def'}{'contents'}[5]{'contents'}[3]{'args'}[0];
+$result_trees{'def'}{'contents'}[5]{'contents'}[3]{'args'}[0]{'contents'}[1]{'contents'}[0]{'parent'}
 = $result_trees{'def'}{'contents'}[5]{'contents'}[3]{'args'}[0]{'contents'}[1];
+$result_trees{'def'}{'contents'}[5]{'contents'}[3]{'args'}[0]{'contents'}[1]{'parent'}
 = $result_trees{'def'}{'contents'}[5]{'contents'}[3]{'args'}[0];
+$result_trees{'def'}{'contents'}[5]{'contents'}[3]{'args'}[0]{'contents'}[2]{'parent'}
 = $result_trees{'def'}{'contents'}[5]{'contents'}[3]{'args'}[0];
+$result_trees{'def'}{'contents'}[5]{'contents'}[3]{'args'}[0]{'contents'}[3]{'parent'}
 = $result_trees{'def'}{'contents'}[5]{'contents'}[3]{'args'}[0];
+$result_trees{'def'}{'contents'}[5]{'contents'}[3]{'args'}[0]{'contents'}[4]{'parent'}
 = $result_trees{'def'}{'contents'}[5]{'contents'}[3]{'args'}[0];
+$result_trees{'def'}{'contents'}[5]{'contents'}[3]{'args'}[0]{'parent'} = 
$result_trees{'def'}{'contents'}[5]{'contents'}[3];
+$result_trees{'def'}{'contents'}[5]{'contents'}[3]{'parent'} = 
$result_trees{'def'}{'contents'}[5];
+$result_trees{'def'}{'contents'}[5]{'contents'}[4]{'args'}[0]{'contents'}[0]{'parent'}
 = $result_trees{'def'}{'contents'}[5]{'contents'}[4]{'args'}[0];
+$result_trees{'def'}{'contents'}[5]{'contents'}[4]{'args'}[0]{'contents'}[1]{'contents'}[0]{'parent'}
 = $result_trees{'def'}{'contents'}[5]{'contents'}[4]{'args'}[0]{'contents'}[1];
+$result_trees{'def'}{'contents'}[5]{'contents'}[4]{'args'}[0]{'contents'}[1]{'parent'}
 = $result_trees{'def'}{'contents'}[5]{'contents'}[4]{'args'}[0];
+$result_trees{'def'}{'contents'}[5]{'contents'}[4]{'args'}[0]{'contents'}[2]{'parent'}
 = $result_trees{'def'}{'contents'}[5]{'contents'}[4]{'args'}[0];
+$result_trees{'def'}{'contents'}[5]{'contents'}[4]{'args'}[0]{'contents'}[3]{'parent'}
 = $result_trees{'def'}{'contents'}[5]{'contents'}[4]{'args'}[0];
+$result_trees{'def'}{'contents'}[5]{'contents'}[4]{'args'}[0]{'contents'}[4]{'parent'}
 = $result_trees{'def'}{'contents'}[5]{'contents'}[4]{'args'}[0];
+$result_trees{'def'}{'contents'}[5]{'contents'}[4]{'args'}[0]{'parent'} = 
$result_trees{'def'}{'contents'}[5]{'contents'}[4];
+$result_trees{'def'}{'contents'}[5]{'contents'}[4]{'parent'} = 
$result_trees{'def'}{'contents'}[5];
+$result_trees{'def'}{'contents'}[5]{'contents'}[5]{'args'}[0]{'contents'}[0]{'parent'}
 = $result_trees{'def'}{'contents'}[5]{'contents'}[5]{'args'}[0];
+$result_trees{'def'}{'contents'}[5]{'contents'}[5]{'args'}[0]{'contents'}[1]{'args'}[0]{'contents'}[0]{'parent'}
 = 
$result_trees{'def'}{'contents'}[5]{'contents'}[5]{'args'}[0]{'contents'}[1]{'args'}[0];
+$result_trees{'def'}{'contents'}[5]{'contents'}[5]{'args'}[0]{'contents'}[1]{'args'}[0]{'parent'}
 = $result_trees{'def'}{'contents'}[5]{'contents'}[5]{'args'}[0]{'contents'}[1];
+$result_trees{'def'}{'contents'}[5]{'contents'}[5]{'args'}[0]{'contents'}[1]{'parent'}
 = $result_trees{'def'}{'contents'}[5]{'contents'}[5]{'args'}[0];
+$result_trees{'def'}{'contents'}[5]{'contents'}[5]{'args'}[0]{'contents'}[2]{'parent'}
 = $result_trees{'def'}{'contents'}[5]{'contents'}[5]{'args'}[0];
+$result_trees{'def'}{'contents'}[5]{'contents'}[5]{'args'}[0]{'parent'} = 
$result_trees{'def'}{'contents'}[5]{'contents'}[5];
+$result_trees{'def'}{'contents'}[5]{'contents'}[5]{'parent'} = 
$result_trees{'def'}{'contents'}[5];
+$result_trees{'def'}{'contents'}[5]{'contents'}[6]{'args'}[0]{'contents'}[0]{'parent'}
 = $result_trees{'def'}{'contents'}[5]{'contents'}[6]{'args'}[0];
+$result_trees{'def'}{'contents'}[5]{'contents'}[6]{'args'}[0]{'contents'}[1]{'args'}[0]{'contents'}[0]{'parent'}
 = 
$result_trees{'def'}{'contents'}[5]{'contents'}[6]{'args'}[0]{'contents'}[1]{'args'}[0];
+$result_trees{'def'}{'contents'}[5]{'contents'}[6]{'args'}[0]{'contents'}[1]{'args'}[0]{'contents'}[1]{'args'}[0]{'contents'}[0]{'parent'}
 = 
$result_trees{'def'}{'contents'}[5]{'contents'}[6]{'args'}[0]{'contents'}[1]{'args'}[0]{'contents'}[1]{'args'}[0];
+$result_trees{'def'}{'contents'}[5]{'contents'}[6]{'args'}[0]{'contents'}[1]{'args'}[0]{'contents'}[1]{'args'}[0]{'parent'}
 = 
$result_trees{'def'}{'contents'}[5]{'contents'}[6]{'args'}[0]{'contents'}[1]{'args'}[0]{'contents'}[1];
+$result_trees{'def'}{'contents'}[5]{'contents'}[6]{'args'}[0]{'contents'}[1]{'args'}[0]{'contents'}[1]{'parent'}
 = 
$result_trees{'def'}{'contents'}[5]{'contents'}[6]{'args'}[0]{'contents'}[1]{'args'}[0];
+$result_trees{'def'}{'contents'}[5]{'contents'}[6]{'args'}[0]{'contents'}[1]{'args'}[0]{'contents'}[2]{'parent'}
 = 
$result_trees{'def'}{'contents'}[5]{'contents'}[6]{'args'}[0]{'contents'}[1]{'args'}[0];
+$result_trees{'def'}{'contents'}[5]{'contents'}[6]{'args'}[0]{'contents'}[1]{'args'}[0]{'parent'}
 = $result_trees{'def'}{'contents'}[5]{'contents'}[6]{'args'}[0]{'contents'}[1];
+$result_trees{'def'}{'contents'}[5]{'contents'}[6]{'args'}[0]{'contents'}[1]{'parent'}
 = $result_trees{'def'}{'contents'}[5]{'contents'}[6]{'args'}[0];
+$result_trees{'def'}{'contents'}[5]{'contents'}[6]{'args'}[0]{'contents'}[2]{'parent'}
 = $result_trees{'def'}{'contents'}[5]{'contents'}[6]{'args'}[0];
+$result_trees{'def'}{'contents'}[5]{'contents'}[6]{'args'}[0]{'parent'} = 
$result_trees{'def'}{'contents'}[5]{'contents'}[6];
+$result_trees{'def'}{'contents'}[5]{'contents'}[6]{'parent'} = 
$result_trees{'def'}{'contents'}[5];
+$result_trees{'def'}{'contents'}[5]{'contents'}[7]{'args'}[0]{'contents'}[0]{'parent'}
 = $result_trees{'def'}{'contents'}[5]{'contents'}[7]{'args'}[0];
+$result_trees{'def'}{'contents'}[5]{'contents'}[7]{'args'}[0]{'contents'}[1]{'parent'}
 = $result_trees{'def'}{'contents'}[5]{'contents'}[7]{'args'}[0];
+$result_trees{'def'}{'contents'}[5]{'contents'}[7]{'args'}[0]{'parent'} = 
$result_trees{'def'}{'contents'}[5]{'contents'}[7];
+$result_trees{'def'}{'contents'}[5]{'contents'}[7]{'parent'} = 
$result_trees{'def'}{'contents'}[5];
+$result_trees{'def'}{'contents'}[5]{'contents'}[8]{'args'}[0]{'contents'}[0]{'parent'}
 = $result_trees{'def'}{'contents'}[5]{'contents'}[8]{'args'}[0];
+$result_trees{'def'}{'contents'}[5]{'contents'}[8]{'args'}[0]{'contents'}[1]{'parent'}
 = $result_trees{'def'}{'contents'}[5]{'contents'}[8]{'args'}[0];
+$result_trees{'def'}{'contents'}[5]{'contents'}[8]{'args'}[0]{'contents'}[2]{'contents'}[0]{'parent'}
 = $result_trees{'def'}{'contents'}[5]{'contents'}[8]{'args'}[0]{'contents'}[2];
+$result_trees{'def'}{'contents'}[5]{'contents'}[8]{'args'}[0]{'contents'}[2]{'parent'}
 = $result_trees{'def'}{'contents'}[5]{'contents'}[8]{'args'}[0];
+$result_trees{'def'}{'contents'}[5]{'contents'}[8]{'args'}[0]{'contents'}[3]{'parent'}
 = $result_trees{'def'}{'contents'}[5]{'contents'}[8]{'args'}[0];
+$result_trees{'def'}{'contents'}[5]{'contents'}[8]{'args'}[0]{'parent'} = 
$result_trees{'def'}{'contents'}[5]{'contents'}[8];
+$result_trees{'def'}{'contents'}[5]{'contents'}[8]{'parent'} = 
$result_trees{'def'}{'contents'}[5];
+$result_trees{'def'}{'contents'}[5]{'contents'}[9]{'args'}[0]{'contents'}[0]{'contents'}[0]{'parent'}
 = $result_trees{'def'}{'contents'}[5]{'contents'}[9]{'args'}[0]{'contents'}[0];
+$result_trees{'def'}{'contents'}[5]{'contents'}[9]{'args'}[0]{'contents'}[0]{'parent'}
 = $result_trees{'def'}{'contents'}[5]{'contents'}[9]{'args'}[0];
+$result_trees{'def'}{'contents'}[5]{'contents'}[9]{'args'}[0]{'contents'}[1]{'parent'}
 = $result_trees{'def'}{'contents'}[5]{'contents'}[9]{'args'}[0];
+$result_trees{'def'}{'contents'}[5]{'contents'}[9]{'args'}[0]{'parent'} = 
$result_trees{'def'}{'contents'}[5]{'contents'}[9];
+$result_trees{'def'}{'contents'}[5]{'contents'}[9]{'parent'} = 
$result_trees{'def'}{'contents'}[5];
+$result_trees{'def'}{'contents'}[5]{'contents'}[10]{'args'}[0]{'contents'}[0]{'contents'}[0]{'parent'}
 = 
$result_trees{'def'}{'contents'}[5]{'contents'}[10]{'args'}[0]{'contents'}[0];
+$result_trees{'def'}{'contents'}[5]{'contents'}[10]{'args'}[0]{'contents'}[0]{'parent'}
 = $result_trees{'def'}{'contents'}[5]{'contents'}[10]{'args'}[0];
+$result_trees{'def'}{'contents'}[5]{'contents'}[10]{'args'}[0]{'contents'}[1]{'parent'}
 = $result_trees{'def'}{'contents'}[5]{'contents'}[10]{'args'}[0];
+$result_trees{'def'}{'contents'}[5]{'contents'}[10]{'args'}[0]{'parent'} = 
$result_trees{'def'}{'contents'}[5]{'contents'}[10];
+$result_trees{'def'}{'contents'}[5]{'contents'}[10]{'parent'} = 
$result_trees{'def'}{'contents'}[5];
+$result_trees{'def'}{'contents'}[5]{'contents'}[11]{'args'}[0]{'parent'} = 
$result_trees{'def'}{'contents'}[5]{'contents'}[11];
+$result_trees{'def'}{'contents'}[5]{'contents'}[11]{'parent'} = 
$result_trees{'def'}{'contents'}[5];
+$result_trees{'def'}{'contents'}[5]{'contents'}[12]{'contents'}[0]{'parent'} = 
$result_trees{'def'}{'contents'}[5]{'contents'}[12];
+$result_trees{'def'}{'contents'}[5]{'contents'}[12]{'contents'}[1]{'args'}[0]{'contents'}[0]{'contents'}[0]{'parent'}
 = 
$result_trees{'def'}{'contents'}[5]{'contents'}[12]{'contents'}[1]{'args'}[0]{'contents'}[0];
+$result_trees{'def'}{'contents'}[5]{'contents'}[12]{'contents'}[1]{'args'}[0]{'contents'}[0]{'parent'}
 = 
$result_trees{'def'}{'contents'}[5]{'contents'}[12]{'contents'}[1]{'args'}[0];
+$result_trees{'def'}{'contents'}[5]{'contents'}[12]{'contents'}[1]{'args'}[0]{'contents'}[1]{'parent'}
 = 
$result_trees{'def'}{'contents'}[5]{'contents'}[12]{'contents'}[1]{'args'}[0];
+$result_trees{'def'}{'contents'}[5]{'contents'}[12]{'contents'}[1]{'args'}[0]{'parent'}
 = $result_trees{'def'}{'contents'}[5]{'contents'}[12]{'contents'}[1];
+$result_trees{'def'}{'contents'}[5]{'contents'}[12]{'contents'}[1]{'parent'} = 
$result_trees{'def'}{'contents'}[5]{'contents'}[12];
+$result_trees{'def'}{'contents'}[5]{'contents'}[12]{'contents'}[2]{'args'}[0]{'parent'}
 = $result_trees{'def'}{'contents'}[5]{'contents'}[12]{'contents'}[2];
+$result_trees{'def'}{'contents'}[5]{'contents'}[12]{'contents'}[2]{'parent'} = 
$result_trees{'def'}{'contents'}[5]{'contents'}[12];
+$result_trees{'def'}{'contents'}[5]{'contents'}[12]{'contents'}[3]{'parent'} = 
$result_trees{'def'}{'contents'}[5]{'contents'}[12];
+$result_trees{'def'}{'contents'}[5]{'contents'}[12]{'contents'}[4]{'args'}[0]{'contents'}[0]{'contents'}[0]{'parent'}
 = 
$result_trees{'def'}{'contents'}[5]{'contents'}[12]{'contents'}[4]{'args'}[0]{'contents'}[0];
+$result_trees{'def'}{'contents'}[5]{'contents'}[12]{'contents'}[4]{'args'}[0]{'contents'}[0]{'parent'}
 = 
$result_trees{'def'}{'contents'}[5]{'contents'}[12]{'contents'}[4]{'args'}[0];
+$result_trees{'def'}{'contents'}[5]{'contents'}[12]{'contents'}[4]{'args'}[0]{'contents'}[1]{'parent'}
 = 
$result_trees{'def'}{'contents'}[5]{'contents'}[12]{'contents'}[4]{'args'}[0];
+$result_trees{'def'}{'contents'}[5]{'contents'}[12]{'contents'}[4]{'args'}[0]{'parent'}
 = $result_trees{'def'}{'contents'}[5]{'contents'}[12]{'contents'}[4];
+$result_trees{'def'}{'contents'}[5]{'contents'}[12]{'contents'}[4]{'parent'} = 
$result_trees{'def'}{'contents'}[5]{'contents'}[12];
+$result_trees{'def'}{'contents'}[5]{'contents'}[12]{'parent'} = 
$result_trees{'def'}{'contents'}[5];
+$result_trees{'def'}{'contents'}[5]{'parent'} = $result_trees{'def'};
+
+$result_texts{'def'} = '
address@hidden {c--ategory} d--effn_name a--rguments...
+d--effn
address@hidden deffn
+
address@hidden cate--gory de--ffn_name ar--guments    more args @* even more so
+def--fn
address@hidden deffn
+
address@hidden fset @var{i} a g
address@hidden {cmde} truc {}
address@hidden Command {log trap} {}
address@hidden Command { log trap1} {}  
address@hidden Command {log trap2 } {}
address@hidden cmde @b{id ule} truc
address@hidden cmde2 @b{id @samp{i} ule} truc
address@hidden {} machin
address@hidden {} {bidule machin}
address@hidden {truc} machin
address@hidden {truc} followed by a comment
address@hidden comment
+Various deff lines
address@hidden {truc} after a deff item
address@hidden comment
+text in def item for second def item
address@hidden {truc} deffnx before end deffn
address@hidden deffn
+';
+
+$result_errors{'def'} = [
+  {
+    'error_line' => ':24: Must be in address@hidden' environment to use 
address@hidden'
+',
+    'file_name' => '',
+    'line_nr' => 24,
+    'macro' => '',
+    'text' => 'Must be in address@hidden' environment to use address@hidden'',
+    'type' => 'error'
+  },
+  {
+    'error_line' => ':27: Must be in address@hidden' environment to use 
address@hidden'
+',
+    'file_name' => '',
+    'line_nr' => 27,
+    'macro' => '',
+    'text' => 'Must be in address@hidden' environment to use address@hidden'',
+    'type' => 'error'
+  }
+];
+
+



reply via email to

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