texinfo-commits
[Top][All Lists]
Advanced

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

texinfo/tp TODO Texinfo/Parser.pm Texinfo/Struc...


From: Patrice Dumas
Subject: texinfo/tp TODO Texinfo/Parser.pm Texinfo/Struc...
Date: Sat, 30 Oct 2010 18:31:51 +0000

CVSROOT:        /sources/texinfo
Module name:    texinfo
Changes by:     Patrice Dumas <pertusus>        10/10/30 18:31:51

Modified files:
        tp             : TODO 
        tp/Texinfo     : Parser.pm Structuring.pm 
        tp/t           : 06columnfractions.t 30sectioning.t 
                         test_utils.pl 
        tp/t/results/include: macro_and_commands_in_early_commands.pl 
                              macro_in_early_commands.pl 
                              value_expansion_in_include.pl 
        tp/t/results/invalid_nestings: ignored_text.pl 
                                       node_in_copying.pl 
                                       node_in_copying_not_closed.pl 
                                       on_section_line.pl 
                                       style_not_closed_before_first_node.pl 
                                       
style_not_closed_no_newline_root_commands.pl 
                                       style_not_closed_root_commands.pl 
                                       unclosed_verb_on_section_line.pl 
        tp/t/results/macro: macro_in_misc_commands.pl 
        tp/t/results/sectioning: a_comma_after_node.pl 
                                 at_commands_in_node.pl 
                                 at_commands_in_refs.pl 
                                 character_and_spaces_in_node.pl 
                                 character_and_spaces_in_refs.pl 
                                 double_node_anchor_float.pl 
                                 double_top.pl empty_node.pl node.pl 
                                 node_empty_direction.pl 
                                 nodename_parentheses.pl 
                                 raiselowersections.pl sections.pl 
                                 some_at_commands_in_ref_nodes.pl 
        tp/t/results/value: value_in_misc_commands.pl value_in_node.pl 
                            value_node_directions.pl 
Added files:
        tp/t/results/sectioning: unknown_node_in_menu.pl 

Log message:
        Don't do a separate tree for the node structure or the section structure
        tree, instead filter better in the tests.
        Determine the menus directions.

CVSWeb URLs:
http://cvs.savannah.gnu.org/viewcvs/texinfo/tp/TODO?cvsroot=texinfo&r1=1.46&r2=1.47
http://cvs.savannah.gnu.org/viewcvs/texinfo/tp/Texinfo/Parser.pm?cvsroot=texinfo&r1=1.128&r2=1.129
http://cvs.savannah.gnu.org/viewcvs/texinfo/tp/Texinfo/Structuring.pm?cvsroot=texinfo&r1=1.7&r2=1.8
http://cvs.savannah.gnu.org/viewcvs/texinfo/tp/t/06columnfractions.t?cvsroot=texinfo&r1=1.13&r2=1.14
http://cvs.savannah.gnu.org/viewcvs/texinfo/tp/t/30sectioning.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.31&r2=1.32
http://cvs.savannah.gnu.org/viewcvs/texinfo/tp/t/results/include/macro_and_commands_in_early_commands.pl?cvsroot=texinfo&r1=1.15&r2=1.16
http://cvs.savannah.gnu.org/viewcvs/texinfo/tp/t/results/include/macro_in_early_commands.pl?cvsroot=texinfo&r1=1.14&r2=1.15
http://cvs.savannah.gnu.org/viewcvs/texinfo/tp/t/results/include/value_expansion_in_include.pl?cvsroot=texinfo&r1=1.14&r2=1.15
http://cvs.savannah.gnu.org/viewcvs/texinfo/tp/t/results/invalid_nestings/ignored_text.pl?cvsroot=texinfo&r1=1.5&r2=1.6
http://cvs.savannah.gnu.org/viewcvs/texinfo/tp/t/results/invalid_nestings/node_in_copying.pl?cvsroot=texinfo&r1=1.9&r2=1.10
http://cvs.savannah.gnu.org/viewcvs/texinfo/tp/t/results/invalid_nestings/node_in_copying_not_closed.pl?cvsroot=texinfo&r1=1.9&r2=1.10
http://cvs.savannah.gnu.org/viewcvs/texinfo/tp/t/results/invalid_nestings/on_section_line.pl?cvsroot=texinfo&r1=1.10&r2=1.11
http://cvs.savannah.gnu.org/viewcvs/texinfo/tp/t/results/invalid_nestings/style_not_closed_before_first_node.pl?cvsroot=texinfo&r1=1.9&r2=1.10
http://cvs.savannah.gnu.org/viewcvs/texinfo/tp/t/results/invalid_nestings/style_not_closed_no_newline_root_commands.pl?cvsroot=texinfo&r1=1.12&r2=1.13
http://cvs.savannah.gnu.org/viewcvs/texinfo/tp/t/results/invalid_nestings/style_not_closed_root_commands.pl?cvsroot=texinfo&r1=1.11&r2=1.12
http://cvs.savannah.gnu.org/viewcvs/texinfo/tp/t/results/invalid_nestings/unclosed_verb_on_section_line.pl?cvsroot=texinfo&r1=1.5&r2=1.6
http://cvs.savannah.gnu.org/viewcvs/texinfo/tp/t/results/macro/macro_in_misc_commands.pl?cvsroot=texinfo&r1=1.24&r2=1.25
http://cvs.savannah.gnu.org/viewcvs/texinfo/tp/t/results/sectioning/a_comma_after_node.pl?cvsroot=texinfo&r1=1.9&r2=1.10
http://cvs.savannah.gnu.org/viewcvs/texinfo/tp/t/results/sectioning/at_commands_in_node.pl?cvsroot=texinfo&r1=1.6&r2=1.7
http://cvs.savannah.gnu.org/viewcvs/texinfo/tp/t/results/sectioning/at_commands_in_refs.pl?cvsroot=texinfo&r1=1.8&r2=1.9
http://cvs.savannah.gnu.org/viewcvs/texinfo/tp/t/results/sectioning/character_and_spaces_in_node.pl?cvsroot=texinfo&r1=1.6&r2=1.7
http://cvs.savannah.gnu.org/viewcvs/texinfo/tp/t/results/sectioning/character_and_spaces_in_refs.pl?cvsroot=texinfo&r1=1.8&r2=1.9
http://cvs.savannah.gnu.org/viewcvs/texinfo/tp/t/results/sectioning/double_node_anchor_float.pl?cvsroot=texinfo&r1=1.2&r2=1.3
http://cvs.savannah.gnu.org/viewcvs/texinfo/tp/t/results/sectioning/double_top.pl?cvsroot=texinfo&r1=1.2&r2=1.3
http://cvs.savannah.gnu.org/viewcvs/texinfo/tp/t/results/sectioning/empty_node.pl?cvsroot=texinfo&r1=1.1&r2=1.2
http://cvs.savannah.gnu.org/viewcvs/texinfo/tp/t/results/sectioning/node.pl?cvsroot=texinfo&r1=1.20&r2=1.21
http://cvs.savannah.gnu.org/viewcvs/texinfo/tp/t/results/sectioning/node_empty_direction.pl?cvsroot=texinfo&r1=1.2&r2=1.3
http://cvs.savannah.gnu.org/viewcvs/texinfo/tp/t/results/sectioning/nodename_parentheses.pl?cvsroot=texinfo&r1=1.9&r2=1.10
http://cvs.savannah.gnu.org/viewcvs/texinfo/tp/t/results/sectioning/raiselowersections.pl?cvsroot=texinfo&r1=1.12&r2=1.13
http://cvs.savannah.gnu.org/viewcvs/texinfo/tp/t/results/sectioning/sections.pl?cvsroot=texinfo&r1=1.12&r2=1.13
http://cvs.savannah.gnu.org/viewcvs/texinfo/tp/t/results/sectioning/some_at_commands_in_ref_nodes.pl?cvsroot=texinfo&r1=1.8&r2=1.9
http://cvs.savannah.gnu.org/viewcvs/texinfo/tp/t/results/sectioning/unknown_node_in_menu.pl?cvsroot=texinfo&rev=1.1
http://cvs.savannah.gnu.org/viewcvs/texinfo/tp/t/results/value/value_in_misc_commands.pl?cvsroot=texinfo&r1=1.20&r2=1.21
http://cvs.savannah.gnu.org/viewcvs/texinfo/tp/t/results/value/value_in_node.pl?cvsroot=texinfo&r1=1.23&r2=1.24
http://cvs.savannah.gnu.org/viewcvs/texinfo/tp/t/results/value/value_node_directions.pl?cvsroot=texinfo&r1=1.19&r2=1.20

Patches:
Index: TODO
===================================================================
RCS file: /sources/texinfo/texinfo/tp/TODO,v
retrieving revision 1.46
retrieving revision 1.47
diff -u -b -r1.46 -r1.47
--- TODO        29 Oct 2010 23:04:32 -0000      1.46
+++ TODO        30 Oct 2010 18:31:49 -0000      1.47
@@ -86,6 +86,7 @@
 sectioning/nodename_parentheses.texi
 sectioning/double_node_anchor_float.texi
 sectioning/double_top.texi   (but not @ref and menu)
+sectioning/nodes_test.texi   (only done: unknown entry in menu)
 
 indices/unknown_index_entry.texi
 indices/more_unknown_index_entry.texi (but without the document structure)

Index: Texinfo/Parser.pm
===================================================================
RCS file: /sources/texinfo/texinfo/tp/Texinfo/Parser.pm,v
retrieving revision 1.128
retrieving revision 1.129
diff -u -b -r1.128 -r1.129
--- Texinfo/Parser.pm   30 Oct 2010 11:28:36 -0000      1.128
+++ Texinfo/Parser.pm   30 Oct 2010 18:31:49 -0000      1.129
@@ -141,7 +141,7 @@
 # errors_warnings         a structure with the errors and warnings.
 # error_nrs               number of errors.
 # current_node            last seen node.
-# nodes                   list? hash? of nodes.
+# nodes                   list of nodes
 
 # A line information is an hash reference with the keys:
 # line_nr        the line number
@@ -2047,9 +2047,8 @@
                         $current->{'args'}->[0], $command, $line_nr)) {
         if (_register_label($self, $current, 
                     $current->{'extra'}->{'nodes_manuals'}->[0], $line_nr)) {
-          $self->{'current_node'} = { 'node' => $current };
-          $self->{'nodes'}->{$current->{'extra'}->{'normalized'}} 
-             = $self->{'current_node'};
+          $self->{'current_node'} = $current;
+          push @{$self->{'nodes'}}, $self->{'current_node'};
         }
       }
     } elsif ($command eq 'listoffloats') {
@@ -2087,10 +2086,16 @@
         $current = $current->{'contents'}->[-1];
       }
     } elsif ($root_commands{$command}) {
-      #delete $current->{'contents'}->[-1]->{'remaining_args'};
       $current = $current->{'contents'}->[-1];
       delete $current->{'remaining_args'};
       $current->{'contents'} = [];
+      # associate the section (not part) with the current node.
+      if ($command ne 'node' and $command ne 'part'
+           and $self->{'current_node'}
+           and !$self->{'current_node'}->{'extra'}->{'associated_section'}) {
+        $self->{'current_node'}->{'extra'}->{'associated_section'} = $current;
+        $current->{'extra'}->{'associated_node'} = $self->{'current_node'};
+      }
     }
    # do that last in order to have the line processed if one of the above
    # case is also set.

Index: Texinfo/Structuring.pm
===================================================================
RCS file: /sources/texinfo/texinfo/tp/Texinfo/Structuring.pm,v
retrieving revision 1.7
retrieving revision 1.8
diff -u -b -r1.7 -r1.8
--- Texinfo/Structuring.pm      30 Oct 2010 09:36:45 -0000      1.7
+++ Texinfo/Structuring.pm      30 Oct 2010 18:31:49 -0000      1.8
@@ -25,6 +25,7 @@
 use strict;
 
 use Texinfo::Convert::Text;
+use Texinfo::Parser qw(tree_to_texi);
 
 require Exporter;
 use vars qw($VERSION @ISA @EXPORT @EXPORT_OK %EXPORT_TAGS);
@@ -198,8 +199,8 @@
     return undef;
   }
 
-  my $sec_root = {'text' => '_ROOT'};
-  my $previous_command;
+  my $sec_root = {};
+  my $previous_section;
 
   my $in_appendix = 0;
   # lowest level with a number.  This is the lowest level above 0.
@@ -221,25 +222,22 @@
           $level = $max_level;
         }
       }
-      my $command = { 'section' => $content, 'level' => $level,
-         #             'name' => $content->{'cmdname'}, 
-         #             'text' => 
-         # Texinfo::Convert::Text::convert($content->{'args'}->[0])
-                                                        };
-      if ($previous_command) {
+      $content->{'level'} = $level;
+
+      if ($previous_section) {
         # new command is below
-        if ($previous_command->{'level'} < $level) {
-          if ($level - $previous_command->{'level'} > 1) {
+        if ($previous_section->{'level'} < $level) {
+          if ($level - $previous_section->{'level'} > 1) {
             $self->_line_error(sprintf($self->__("Upping the section level of 
address@hidden which is too low"), 
                                        $content->{'cmdname'}), 
$content->{'line_nr'});
-            $command->{'level'} = $previous_command->{'level'} + 1;
+            $content->{'level'} = $previous_section->{'level'} + 1;
           }
-          $previous_command->{'childs'} = [$command];
-          $command->{'up'} = $previous_command;
-          $command_numbers[$command->{'level'}] = undef;
+          $previous_section->{'childs'} = [$content];
+          $content->{'up'} = $previous_section;
+          $command_numbers[$content->{'level'}] = undef;
         } else {
-          my $up = $previous_command->{'up'};
-          if ($previous_command->{'level'} != $level) {
+          my $up = $previous_section->{'up'};
+          if ($previous_section->{'level'} != $level) {
             # means it is above the previous command, the up is to be found
             while ($up->{'up'} and $up->{'level'} >= $level) {
               $up = $up->{'up'};
@@ -247,52 +245,91 @@
             if ($level <= $up->{'level'}) {
               $self->_line_error(sprintf($self->__("Lowering the section level 
of address@hidden appearing after a lower element"), 
                                        $content->{'cmdname'}), 
$content->{'line_nr'});
-              $command->{'level'} = $up->{'level'} + 1;
+              $content->{'level'} = $up->{'level'} + 1;
             }
           }
-          push @{$up->{'childs'}}, $command;
-          $command->{'up'} = $up;
-          $command->{'prev'} = $up->{'childs'}->[-2];
-          $command->{'prev'}->{'next'} = $command;
+          push @{$up->{'childs'}}, $content;
+          $content->{'up'} = $up;
+          $content->{'prev'} = $up->{'childs'}->[-2];
+          $content->{'prev'}->{'next'} = $content;
           if (!$unnumbered_commands{$content->{'cmdname'}}) {
-            $command_numbers[$command->{'level'}]++;
+            $command_numbers[$content->{'level'}]++;
           }
           
         }
       } else { # first section determines the level of the root.  It is 
                # typically -1 when there is a @top.
-        $command->{'up'} = $sec_root;
+        $content->{'up'} = $sec_root;
         $sec_root->{'level'} = $level - 1;
-        $sec_root->{'childs'} = [$command];
+        $sec_root->{'childs'} = [$content];
         $number_top_level = $level;
         $number_top_level++ if (!$number_top_level);
       }
-      if (!defined($command_numbers[$command->{'level'}])) {
+      if (!defined($command_numbers[$content->{'level'}])) {
         if ($unnumbered_commands{$content->{'cmdname'}}) {
-          $command_numbers[$command->{'level'}] = 0;
+          $command_numbers[$content->{'level'}] = 0;
         } else {
-          $command_numbers[$command->{'level'}] = 1;
+          $command_numbers[$content->{'level'}] = 1;
         }
       }
       if ($appendix_commands{$content->{'cmdname'}} and !$in_appendix) {
         $in_appendix = 1;
-        $command_numbers[$command->{'level'}] = 'A';
+        $command_numbers[$content->{'level'}] = 'A';
       }
       if (!$unnumbered_commands{$content->{'cmdname'}}) {
         # construct the number
-        $command->{'number'} = $command_numbers[$number_top_level];
-        for (my $i = $number_top_level+1; $i <= $command->{'level'}; $i++) {
-          $command->{'number'} .= ".$command_numbers[$i]";
+        $content->{'number'} = $command_numbers[$number_top_level];
+        for (my $i = $number_top_level+1; $i <= $content->{'level'}; $i++) {
+          $content->{'number'} .= ".$command_numbers[$i]";
         }
       }
-      $previous_command = $command;
+      $previous_section = $content;
 
       #my $number = '';
-      #$number = $command->{'number'} if defined($command->{'number'});
-      #print STDERR 
"($command->{'level'}|$level|$sec2level{$content->{'cmdname'}})[$command_numbers[$command->{'level'}]]($in_appendix)
 $number address@hidden>{'cmdname'} 
".Texinfo::Convert::Text::convert($content->{'args'}->[0])."\n";
+      #$number = $content->{'number'} if defined($content->{'number'});
+      #print STDERR 
"($content->{'level'}|$level|$sec2level{$content->{'cmdname'}})[$command_numbers[$content->{'level'}]]($in_appendix)
 $number address@hidden>{'cmdname'} 
".Texinfo::Convert::Text::convert($content->{'args'}->[0])."\n";
     }
   }
   return $sec_root;
 }
 
+# first go through all the menu and set menu_up, menu_next, menu_prev
+# and warn for unknown nodes.
+# then go through all the nodes and set directions
+sub nodes_tree ($)
+{
+  my $self = shift;
+  return undef unless ($self->{'nodes'} and @{$self->{'nodes'}});
+  foreach my $node (@{$self->{'nodes'}}) {
+    if ($node->{'menus'}) {
+      foreach my $menu (@{$node->{'menus'}}) {
+        my $previous_node;
+        foreach my $menu_content (@{$menu->{'contents'}}) {
+          if ($menu_content->{'extra'}
+             and $menu_content->{'extra'}->{'menu_entry_node'}
+             and 
!$menu_content->{'extra'}->{'menu_entry_node'}->{'manual_content'}) {
+            if 
(!$self->{'labels'}->{$menu_content->{'extra'}->{'menu_entry_node'}->{'normalized'}})
 {
+              # FIXME novalidate
+              $self->_line_error (sprintf($self->__("Menu reference to 
nonexistent node `%s'"), 
+                tree_to_texi({ 'contents' => 
$menu_content->{'extra'}->{'menu_entry_node'}->{'node_content'} })), 
+                $menu_content->{'line_nr'});
+            } else {
+              my $menu_node =
+                
$self->{'labels'}->{$menu_content->{'extra'}->{'menu_entry_node'}->{'normalized'}};
+              $menu_node->{'menu_up'} = $node;
+              if ($previous_node) {
+                $menu_node->{'menu_prev'} = $previous_node;
+                $previous_node->{'menu_next'} = $menu_node;
+              } else {
+                $node->{'menu_child'} = $menu_node;
+              }
+              $previous_node = $menu_node;
+            }
+          }
+        } # end menu
+      }
+    }
+  }
+}
+
 1;

Index: t/06columnfractions.t
===================================================================
RCS file: /sources/texinfo/texinfo/tp/t/06columnfractions.t,v
retrieving revision 1.13
retrieving revision 1.14
diff -u -b -r1.13 -r1.14
--- t/06columnfractions.t       29 Oct 2010 07:25:01 -0000      1.13
+++ t/06columnfractions.t       30 Oct 2010 18:31:49 -0000      1.14
@@ -26,6 +26,7 @@
 our $arg_generate;
 our $arg_test_case;
 our $arg_debug;
+our $nr_comparisons;
 
 ok(1);
 
@@ -43,5 +44,5 @@
   plan tests => 2;
 }
 else {
-  plan tests => (2 + scalar(@done_tests) * 6);
+  plan tests => (2 + scalar(@done_tests) * $nr_comparisons);
 }

Index: t/30sectioning.t
===================================================================
RCS file: /sources/texinfo/texinfo/tp/t/30sectioning.t,v
retrieving revision 1.10
retrieving revision 1.11
diff -u -b -r1.10 -r1.11
--- t/30sectioning.t    30 Oct 2010 09:36:45 -0000      1.10
+++ t/30sectioning.t    30 Oct 2010 18:31:49 -0000      1.11
@@ -67,6 +67,13 @@
 ['at_commands_in_node',
 '@node A @sc{sc} node @"i @"address@hidden @address@hidden @l{} 
@,address@hidden'C} @exclamdown{}'
 ],
+['unknown_node_in_menu',
+'@node Top
+
address@hidden
+* unknown::
address@hidden menu
+'],
 ['character_and_spaces_in_refs',
 '@node Top
 @top Test refs

Index: t/test_utils.pl
===================================================================
RCS file: /sources/texinfo/texinfo/tp/t/test_utils.pl,v
retrieving revision 1.31
retrieving revision 1.32
diff -u -b -r1.31 -r1.32
--- t/test_utils.pl     29 Oct 2010 23:04:32 -0000      1.31
+++ t/test_utils.pl     30 Oct 2010 18:31:49 -0000      1.32
@@ -20,6 +20,7 @@
 our $arg_generate;
 our $arg_debug;
 our $arg_complete;
+our $nr_comparisons = 6;
 
 Getopt::Long::Configure("gnu_getopt");
 GetOptions('g|generate' => \$arg_generate, 'd|debug' => \$arg_debug, 
@@ -45,9 +46,36 @@
   return $test;
 }
 
-sub filter_keys { [grep {$_ ne 'next'} ( sort keys %{$_[0]} )] }
+my @contents_keys = ('contents', 'args', 'parent', 'line_nr');
+my @menus_keys = ('menu_child', 'menu_next', 'menu_up', 'menu_prev');
+my %avoided_keys_content;
+my @avoided_keys_content = ('next', 'prev', 'up', 'childs', 
+   'associated_section', 'associated_node', 'menus', @menus_keys);
+foreach my $avoided_key(@avoided_keys_content) {
+  $avoided_keys_content{$avoided_key} = 1;
+}
+sub filter_content_keys { [grep {!$avoided_keys_content{$_}} ( sort keys 
%{$_[0]} )] }
 #sub filter_keys { [grep {$_ ne 'parent' and $_ ne 'next'} ( sort keys 
%{$_[0]} )] }
-sub filter_main_tree { [grep {$_ ne 'section' and $_ ne 'next'} ( sort keys 
%{$_[0]} )] }
+
+my @avoided_compare_tree = (@avoided_keys_content, 'parent', 'node_content');
+
+my %avoided_keys_sectioning;
+my @avoided_keys_sectioning = ('next', 'node_content', 'nodes_manuals',
+   'associated_section', @contents_keys, 'menus', @menus_keys);
+foreach my $avoided_key(@avoided_keys_sectioning) {
+  $avoided_keys_sectioning{$avoided_key} = 1;
+}
+sub filter_sectioning_keys { [grep {!$avoided_keys_sectioning{$_}}
+   ( sort keys %{$_[0]} )] }
+
+
+my %avoided_compare_structure;
+my @avoided_compare_structure = (@avoided_keys_sectioning, 'prev', 'up');
+foreach my $avoided_key(@avoided_compare_structure) {
+  $avoided_compare_structure{$avoided_key} = 1;
+}
+sub filter_compare_structure { [grep {!$avoided_compare_structure{$_}}
+   ( sort keys %{$_[0]} )] }
 
 sub test($$) 
 {
@@ -85,6 +113,8 @@
 
   my $structure = Texinfo::Structuring::sectioning_structure($parser, $result);
 
+  Texinfo::Structuring::nodes_tree($parser);
+
   my ($errors, $error_nrs) = $parser->errors();
   my ($index_names, $merged_indices) = $parser->indices_information();
   my $indices;
@@ -110,7 +140,7 @@
     #print STDERR "Generate: ".Data::Dumper->Dump([$result], ['$res']);
     my $out_result;
     {
-      local $Data::Dumper::Sortkeys = \&filter_keys;
+      local $Data::Dumper::Sortkeys = \&filter_content_keys;
       $out_result = Data::Dumper->Dump([$result], 
['$result_trees{\''.$test_name.'\'}']);
     }
     my $texi_string_result = tree_to_texi($result);
@@ -123,8 +153,8 @@
     $out_result .= "\n".'$result_texis{\''.$test_name.'\'} = 
\''.$perl_string_result."';\n\n";
     $out_result .= "\n".'$result_texts{\''.$test_name.'\'} = 
\''.$perl_string_converted_text."';\n\n";
     {
-      local $Data::Dumper::Sortkeys = \&filter_main_tree;
-      $out_result .=  Data::Dumper->Dump([$structure], 
['$result_sectioning{\''.$test_name.'\'}']) 
+      local $Data::Dumper::Sortkeys = \&filter_sectioning_keys;
+      $out_result .=  Data::Dumper->Dump([$structure], 
['$result_sectioning{\''.$test_name.'\'}'])."\n"
         if ($structure);
     }
     {
@@ -163,11 +193,19 @@
       #print STDERR "".Data::Dumper->Dump([$diff->raw()], ['$diff']);
     #}
     ok (Data::Compare::Compare($result, $result_trees{$test_name}, 
-               { 'ignore_hash_keys' => [qw(parent next node_content)] }), 
+               { 'ignore_hash_keys' => address@hidden }), 
         $test_name.' tree' );
+
     ok (Data::Compare::Compare($structure, $result_sectioning{$test_name}, 
-              { 'ignore_hash_keys' => [qw(next prev up section)] }), 
+              { 'ignore_hash_keys' => address@hidden }), 
         $test_name.' sectioning' );
+    if (!Data::Compare::Compare($structure, $result_sectioning{$test_name},
+              { 'ignore_hash_keys' => address@hidden }))
+    {
+      local $Data::Dumper::Sortkeys = \&filter_compare_structure;
+      print STDERR  Data::Dumper->Dump([$structure], ['$structure']);
+      print STDERR  Data::Dumper->Dump([$result_sectioning{$test_name}], 
['$result_sectioning{\''.$test_name.'\'}']);
+    }
     ok (Data::Compare::Compare($errors, $result_errors{$test_name}), 
         $test_name.' errors' );
     ok (Data::Compare::Compare($indices, $result_indices{$test_name}), 
@@ -209,7 +247,7 @@
   if ($generate or $arg_complete) {
     plan tests => 1;
   } else {
-    plan tests => (1 + scalar(@$ran_tests) * 6);
+    plan tests => (1 + scalar(@$ran_tests) * $nr_comparisons);
   }
 }
 
@@ -240,7 +278,7 @@
   if ($generate or $arg_complete) {
     plan tests => 1;
   } else {
-     plan tests => (1 + scalar(@$ran_tests) * 6);
+     plan tests => (1 + scalar(@$ran_tests) * $nr_comparisons);
   }
 }
 

Index: t/results/include/macro_and_commands_in_early_commands.pl
===================================================================
RCS file: 
/sources/texinfo/texinfo/tp/t/results/include/macro_and_commands_in_early_commands.pl,v
retrieving revision 1.15
retrieving revision 1.16
diff -u -b -r1.15 -r1.16
--- t/results/include/macro_and_commands_in_early_commands.pl   30 Oct 2010 
11:28:36 -0000      1.15
+++ t/results/include/macro_and_commands_in_early_commands.pl   30 Oct 2010 
18:31:49 -0000      1.16
@@ -425,6 +425,8 @@
           'parent' => {}
         }
       ],
+      'extra' => {},
+      'level' => 0,
       'line_nr' => {
         'file_name' => '',
         'line_nr' => 19,
@@ -544,14 +546,23 @@
 $result_sectioning{'macro_and_commands_in_early_commands'} = {
   'childs' => [
     {
+      'cmdname' => 'top',
+      'extra' => {
+        'associated_node' => {
+          'cmdname' => 'node',
+          'extra' => {
+            'normalized' => 'Top'
+          }
+        }
+      },
       'level' => 0,
       'up' => {}
     }
   ],
-  'level' => -1,
-  'text' => '_ROOT'
+  'level' => -1
 };
 $result_sectioning{'macro_and_commands_in_early_commands'}{'childs'}[0]{'up'} 
= $result_sectioning{'macro_and_commands_in_early_commands'};
+
 $result_errors{'macro_and_commands_in_early_commands'} = [
   {
     'error_line' => ':11: warning: Encoding address@hidden' is not a canonical 
texinfo encoding

Index: t/results/include/macro_in_early_commands.pl
===================================================================
RCS file: 
/sources/texinfo/texinfo/tp/t/results/include/macro_in_early_commands.pl,v
retrieving revision 1.14
retrieving revision 1.15
diff -u -b -r1.14 -r1.15
--- t/results/include/macro_in_early_commands.pl        30 Oct 2010 11:28:36 
-0000      1.14
+++ t/results/include/macro_in_early_commands.pl        30 Oct 2010 18:31:49 
-0000      1.15
@@ -488,6 +488,8 @@
           'type' => 'paragraph'
         }
       ],
+      'extra' => {},
+      'level' => 0,
       'line_nr' => {
         'file_name' => '',
         'line_nr' => 26,
@@ -625,14 +627,23 @@
 $result_sectioning{'macro_in_early_commands'} = {
   'childs' => [
     {
+      'cmdname' => 'top',
+      'extra' => {
+        'associated_node' => {
+          'cmdname' => 'node',
+          'extra' => {
+            'normalized' => 'Top'
+          }
+        }
+      },
       'level' => 0,
       'up' => {}
     }
   ],
-  'level' => -1,
-  'text' => '_ROOT'
+  'level' => -1
 };
 $result_sectioning{'macro_in_early_commands'}{'childs'}[0]{'up'} = 
$result_sectioning{'macro_in_early_commands'};
+
 $result_errors{'macro_in_early_commands'} = [
   {
     'error_line' => ':18: warning: @documentencoding-command defined with zero 
or more than one argument should be invoked with {}

Index: t/results/include/value_expansion_in_include.pl
===================================================================
RCS file: 
/sources/texinfo/texinfo/tp/t/results/include/value_expansion_in_include.pl,v
retrieving revision 1.14
retrieving revision 1.15
diff -u -b -r1.14 -r1.15
--- t/results/include/value_expansion_in_include.pl     30 Oct 2010 11:28:36 
-0000      1.14
+++ t/results/include/value_expansion_in_include.pl     30 Oct 2010 18:31:49 
-0000      1.15
@@ -559,9 +559,8 @@
 
 test_var verbatiminclude: ';
 
-$result_sectioning{'value_expansion_in_include'} = {
-  'text' => '_ROOT'
-};
+$result_sectioning{'value_expansion_in_include'} = {};
+
 $result_errors{'value_expansion_in_include'} = [
   {
     'error_line' => ':12: warning: @include should only appear at a line 
beginning

Index: t/results/invalid_nestings/ignored_text.pl
===================================================================
RCS file: 
/sources/texinfo/texinfo/tp/t/results/invalid_nestings/ignored_text.pl,v
retrieving revision 1.5
retrieving revision 1.6
diff -u -b -r1.5 -r1.6
--- t/results/invalid_nestings/ignored_text.pl  29 Oct 2010 07:25:01 -0000      
1.5
+++ t/results/invalid_nestings/ignored_text.pl  30 Oct 2010 18:31:50 -0000      
1.6
@@ -46,9 +46,8 @@
 
 $result_texts{'ignored_text'} = '';
 
-$result_sectioning{'ignored_text'} = {
-  'text' => '_ROOT'
-};
+$result_sectioning{'ignored_text'} = {};
+
 $result_errors{'ignored_text'} = [
   {
     'error_line' => ':1: warning: @ifinfo should only appear at a line 
beginning

Index: t/results/invalid_nestings/node_in_copying.pl
===================================================================
RCS file: 
/sources/texinfo/texinfo/tp/t/results/invalid_nestings/node_in_copying.pl,v
retrieving revision 1.9
retrieving revision 1.10
diff -u -b -r1.9 -r1.10
--- t/results/invalid_nestings/node_in_copying.pl       30 Oct 2010 11:28:36 
-0000      1.9
+++ t/results/invalid_nestings/node_in_copying.pl       30 Oct 2010 18:31:50 
-0000      1.10
@@ -102,9 +102,8 @@
 $result_texts{'node_in_copying'} = '
 ';
 
-$result_sectioning{'node_in_copying'} = {
-  'text' => '_ROOT'
-};
+$result_sectioning{'node_in_copying'} = {};
+
 $result_errors{'node_in_copying'} = [
   {
     'error_line' => ':2: No matching address@hidden copying\'

Index: t/results/invalid_nestings/node_in_copying_not_closed.pl
===================================================================
RCS file: 
/sources/texinfo/texinfo/tp/t/results/invalid_nestings/node_in_copying_not_closed.pl,v
retrieving revision 1.9
retrieving revision 1.10
diff -u -b -r1.9 -r1.10
--- t/results/invalid_nestings/node_in_copying_not_closed.pl    30 Oct 2010 
11:28:36 -0000      1.9
+++ t/results/invalid_nestings/node_in_copying_not_closed.pl    30 Oct 2010 
18:31:50 -0000      1.10
@@ -135,6 +135,8 @@
 '
         }
       ],
+      'extra' => {},
+      'level' => 0,
       'line_nr' => {
         'file_name' => '',
         'line_nr' => 7,
@@ -188,14 +190,23 @@
 $result_sectioning{'node_in_copying_not_closed'} = {
   'childs' => [
     {
+      'cmdname' => 'top',
+      'extra' => {
+        'associated_node' => {
+          'cmdname' => 'node',
+          'extra' => {
+            'normalized' => 'Top'
+          }
+        }
+      },
       'level' => 0,
       'up' => {}
     }
   ],
-  'level' => -1,
-  'text' => '_ROOT'
+  'level' => -1
 };
 $result_sectioning{'node_in_copying_not_closed'}{'childs'}[0]{'up'} = 
$result_sectioning{'node_in_copying_not_closed'};
+
 $result_errors{'node_in_copying_not_closed'} = [
   {
     'error_line' => ':6: No matching address@hidden copying\'

Index: t/results/invalid_nestings/on_section_line.pl
===================================================================
RCS file: 
/sources/texinfo/texinfo/tp/t/results/invalid_nestings/on_section_line.pl,v
retrieving revision 1.10
retrieving revision 1.11
diff -u -b -r1.10 -r1.11
--- t/results/invalid_nestings/on_section_line.pl       30 Oct 2010 11:28:36 
-0000      1.10
+++ t/results/invalid_nestings/on_section_line.pl       30 Oct 2010 18:31:50 
-0000      1.11
@@ -132,7 +132,9 @@
       ],
       'cmdname' => 'section',
       'contents' => [],
+      'level' => 2,
       'line_nr' => {},
+      'number' => 1,
       'parent' => {}
     }
   ],
@@ -175,15 +177,16 @@
 $result_sectioning{'on_section_line'} = {
   'childs' => [
     {
+      'cmdname' => 'section',
       'level' => 2,
       'number' => 1,
       'up' => {}
     }
   ],
-  'level' => 1,
-  'text' => '_ROOT'
+  'level' => 1
 };
 $result_sectioning{'on_section_line'}{'childs'}[0]{'up'} = 
$result_sectioning{'on_section_line'};
+
 $result_errors{'on_section_line'} = [
   {
     'error_line' => ':1: warning: @noindent should not appear in @section

Index: t/results/invalid_nestings/style_not_closed_before_first_node.pl
===================================================================
RCS file: 
/sources/texinfo/texinfo/tp/t/results/invalid_nestings/style_not_closed_before_first_node.pl,v
retrieving revision 1.9
retrieving revision 1.10
diff -u -b -r1.9 -r1.10
--- t/results/invalid_nestings/style_not_closed_before_first_node.pl    30 Oct 
2010 11:28:36 -0000      1.9
+++ t/results/invalid_nestings/style_not_closed_before_first_node.pl    30 Oct 
2010 18:31:50 -0000      1.10
@@ -124,9 +124,8 @@
 In node
 ';
 
-$result_sectioning{'style_not_closed_before_first_node'} = {
-  'text' => '_ROOT'
-};
+$result_sectioning{'style_not_closed_before_first_node'} = {};
+
 $result_errors{'style_not_closed_before_first_node'} = [
   {
     'error_line' => ':2: @code missing close brace

Index: t/results/invalid_nestings/style_not_closed_no_newline_root_commands.pl
===================================================================
RCS file: 
/sources/texinfo/texinfo/tp/t/results/invalid_nestings/style_not_closed_no_newline_root_commands.pl,v
retrieving revision 1.12
retrieving revision 1.13
diff -u -b -r1.12 -r1.13
--- t/results/invalid_nestings/style_not_closed_no_newline_root_commands.pl     
30 Oct 2010 11:28:36 -0000      1.12
+++ t/results/invalid_nestings/style_not_closed_no_newline_root_commands.pl     
30 Oct 2010 18:31:50 -0000      1.13
@@ -258,11 +258,14 @@
           'type' => 'paragraph'
         }
       ],
+      'extra' => {},
+      'level' => 1,
       'line_nr' => {
         'file_name' => '',
         'line_nr' => 9,
         'macro' => ''
       },
+      'number' => 1,
       'parent' => {}
     },
     {
@@ -342,15 +345,24 @@
 $result_sectioning{'style_not_closed_no_newline_root_commands'} = {
   'childs' => [
     {
+      'cmdname' => 'chapter',
+      'extra' => {
+        'associated_node' => {
+          'cmdname' => 'node',
+          'extra' => {
+            'normalized' => 'chapter'
+          }
+        }
+      },
       'level' => 1,
       'number' => 1,
       'up' => {}
     }
   ],
-  'level' => 0,
-  'text' => '_ROOT'
+  'level' => 0
 };
 
$result_sectioning{'style_not_closed_no_newline_root_commands'}{'childs'}[0]{'up'}
 = $result_sectioning{'style_not_closed_no_newline_root_commands'};
+
 $result_errors{'style_not_closed_no_newline_root_commands'} = [
   {
     'error_line' => ':8: warning: @node should not appear in @code

Index: t/results/invalid_nestings/style_not_closed_root_commands.pl
===================================================================
RCS file: 
/sources/texinfo/texinfo/tp/t/results/invalid_nestings/style_not_closed_root_commands.pl,v
retrieving revision 1.11
retrieving revision 1.12
diff -u -b -r1.11 -r1.12
--- t/results/invalid_nestings/style_not_closed_root_commands.pl        30 Oct 
2010 11:28:36 -0000      1.11
+++ t/results/invalid_nestings/style_not_closed_root_commands.pl        30 Oct 
2010 18:31:50 -0000      1.12
@@ -270,11 +270,14 @@
           'type' => 'paragraph'
         }
       ],
+      'extra' => {},
+      'level' => 1,
       'line_nr' => {
         'file_name' => '',
         'line_nr' => 10,
         'macro' => ''
       },
+      'number' => 1,
       'parent' => {}
     },
     {
@@ -360,15 +363,24 @@
 $result_sectioning{'style_not_closed_root_commands'} = {
   'childs' => [
     {
+      'cmdname' => 'chapter',
+      'extra' => {
+        'associated_node' => {
+          'cmdname' => 'node',
+          'extra' => {
+            'normalized' => 'chapter'
+          }
+        }
+      },
       'level' => 1,
       'number' => 1,
       'up' => {}
     }
   ],
-  'level' => 0,
-  'text' => '_ROOT'
+  'level' => 0
 };
 $result_sectioning{'style_not_closed_root_commands'}{'childs'}[0]{'up'} = 
$result_sectioning{'style_not_closed_root_commands'};
+
 $result_errors{'style_not_closed_root_commands'} = [
   {
     'error_line' => ':8: @code missing close brace

Index: t/results/invalid_nestings/unclosed_verb_on_section_line.pl
===================================================================
RCS file: 
/sources/texinfo/texinfo/tp/t/results/invalid_nestings/unclosed_verb_on_section_line.pl,v
retrieving revision 1.5
retrieving revision 1.6
diff -u -b -r1.5 -r1.6
--- t/results/invalid_nestings/unclosed_verb_on_section_line.pl 29 Oct 2010 
07:25:03 -0000      1.5
+++ t/results/invalid_nestings/unclosed_verb_on_section_line.pl 30 Oct 2010 
18:31:50 -0000      1.6
@@ -57,11 +57,13 @@
         }
       ],
       'cmdname' => 'section',
+      'level' => 2,
       'line_nr' => {
         'file_name' => '',
         'line_nr' => 1,
         'macro' => ''
       },
+      'number' => 1,
       'parent' => {}
     }
   ],
@@ -91,15 +93,16 @@
 $result_sectioning{'unclosed_verb_on_section_line'} = {
   'childs' => [
     {
+      'cmdname' => 'section',
       'level' => 2,
       'number' => 1,
       'up' => {}
     }
   ],
-  'level' => 1,
-  'text' => '_ROOT'
+  'level' => 1
 };
 $result_sectioning{'unclosed_verb_on_section_line'}{'childs'}[0]{'up'} = 
$result_sectioning{'unclosed_verb_on_section_line'};
+
 $result_errors{'unclosed_verb_on_section_line'} = [
   {
     'error_line' => ':3: @verb missing closing delimiter sequence: T}

Index: t/results/macro/macro_in_misc_commands.pl
===================================================================
RCS file: 
/sources/texinfo/texinfo/tp/t/results/macro/macro_in_misc_commands.pl,v
retrieving revision 1.24
retrieving revision 1.25
diff -u -b -r1.24 -r1.25
--- t/results/macro/macro_in_misc_commands.pl   30 Oct 2010 11:28:36 -0000      
1.24
+++ t/results/macro/macro_in_misc_commands.pl   30 Oct 2010 18:31:50 -0000      
1.25
@@ -2916,6 +2916,8 @@
           'type' => 'empty_line'
         }
       ],
+      'extra' => {},
+      'level' => 0,
       'line_nr' => {
         'file_name' => '',
         'line_nr' => 10,
@@ -3099,11 +3101,14 @@
           'type' => 'empty_line'
         }
       ],
+      'extra' => {},
+      'level' => 1,
       'line_nr' => {
         'file_name' => '',
         'line_nr' => 196,
         'macro' => ''
       },
+      'number' => 1,
       'parent' => {}
     },
     {
@@ -3830,20 +3835,38 @@
     {
       'childs' => [
         {
+          'cmdname' => 'chapter',
+          'extra' => {
+            'associated_node' => {
+              'cmdname' => 'node',
+              'extra' => {
+                'normalized' => 'node-atext'
+              }
+            }
+          },
           'level' => 1,
           'number' => 1,
           'up' => {}
         }
       ],
+      'cmdname' => 'top',
+      'extra' => {
+        'associated_node' => {
+          'cmdname' => 'node',
+          'extra' => {
+            'normalized' => 'Top'
+          }
+        }
+      },
       'level' => 0,
       'up' => {}
     }
   ],
-  'level' => -1,
-  'text' => '_ROOT'
+  'level' => -1
 };
 $result_sectioning{'macro_in_misc_commands'}{'childs'}[0]{'childs'}[0]{'up'} = 
$result_sectioning{'macro_in_misc_commands'}{'childs'}[0];
 $result_sectioning{'macro_in_misc_commands'}{'childs'}[0]{'up'} = 
$result_sectioning{'macro_in_misc_commands'};
+
 $result_errors{'macro_in_misc_commands'} = [
   {
     'error_line' => ':26: Bad argument to @headings: on line following 
headings atext

Index: t/results/sectioning/a_comma_after_node.pl
===================================================================
RCS file: 
/sources/texinfo/texinfo/tp/t/results/sectioning/a_comma_after_node.pl,v
retrieving revision 1.9
retrieving revision 1.10
diff -u -b -r1.9 -r1.10
--- t/results/sectioning/a_comma_after_node.pl  30 Oct 2010 11:28:37 -0000      
1.9
+++ t/results/sectioning/a_comma_after_node.pl  30 Oct 2010 18:31:50 -0000      
1.10
@@ -139,9 +139,8 @@
 A comma in text, end.
 ';
 
-$result_sectioning{'a_comma_after_node'} = {
-  'text' => '_ROOT'
-};
+$result_sectioning{'a_comma_after_node'} = {};
+
 $result_errors{'a_comma_after_node'} = [];
 
 

Index: t/results/sectioning/at_commands_in_node.pl
===================================================================
RCS file: 
/sources/texinfo/texinfo/tp/t/results/sectioning/at_commands_in_node.pl,v
retrieving revision 1.6
retrieving revision 1.7
diff -u -b -r1.6 -r1.7
--- t/results/sectioning/at_commands_in_node.pl 30 Oct 2010 11:28:37 -0000      
1.6
+++ t/results/sectioning/at_commands_in_node.pl 30 Oct 2010 18:31:50 -0000      
1.7
@@ -265,9 +265,8 @@
 
 $result_texts{'at_commands_in_node'} = '';
 
-$result_sectioning{'at_commands_in_node'} = {
-  'text' => '_ROOT'
-};
+$result_sectioning{'at_commands_in_node'} = {};
+
 $result_errors{'at_commands_in_node'} = [];
 
 

Index: t/results/sectioning/at_commands_in_refs.pl
===================================================================
RCS file: 
/sources/texinfo/texinfo/tp/t/results/sectioning/at_commands_in_refs.pl,v
retrieving revision 1.8
retrieving revision 1.9
diff -u -b -r1.8 -r1.9
--- t/results/sectioning/at_commands_in_refs.pl 30 Oct 2010 11:28:37 -0000      
1.8
+++ t/results/sectioning/at_commands_in_refs.pl 30 Oct 2010 18:31:50 -0000      
1.9
@@ -3565,6 +3565,8 @@
           'type' => 'empty_line'
         }
       ],
+      'extra' => {},
+      'level' => 0,
       'line_nr' => {
         'file_name' => '',
         'line_nr' => 2,
@@ -3686,11 +3688,14 @@
           'type' => 'empty_line'
         }
       ],
+      'extra' => {},
+      'level' => 1,
       'line_nr' => {
         'file_name' => '',
         'line_nr' => 32,
         'macro' => ''
       },
+      'number' => 1,
       'parent' => {}
     },
     {
@@ -3915,11 +3920,14 @@
           'type' => 'empty_line'
         }
       ],
+      'extra' => {},
+      'level' => 1,
       'line_nr' => {
         'file_name' => '',
         'line_nr' => 35,
         'macro' => ''
       },
+      'number' => 2,
       'parent' => {}
     },
     {
@@ -4220,11 +4228,14 @@
           'type' => 'empty_line'
         }
       ],
+      'extra' => {},
+      'level' => 1,
       'line_nr' => {
         'file_name' => '',
         'line_nr' => 38,
         'macro' => ''
       },
+      'number' => 3,
       'parent' => {}
     },
     {
@@ -4491,11 +4502,14 @@
           'type' => 'empty_line'
         }
       ],
+      'extra' => {},
+      'level' => 1,
       'line_nr' => {
         'file_name' => '',
         'line_nr' => 41,
         'macro' => ''
       },
+      'number' => 4,
       'parent' => {}
     },
     {
@@ -4660,11 +4674,14 @@
           'type' => 'empty_line'
         }
       ],
+      'extra' => {},
+      'level' => 1,
       'line_nr' => {
         'file_name' => '',
         'line_nr' => 44,
         'macro' => ''
       },
+      'number' => 5,
       'parent' => {}
     },
     {
@@ -4965,11 +4982,14 @@
           'type' => 'empty_line'
         }
       ],
+      'extra' => {},
+      'level' => 1,
       'line_nr' => {
         'file_name' => '',
         'line_nr' => 47,
         'macro' => ''
       },
+      'number' => 6,
       'parent' => {}
     },
     {
@@ -5202,11 +5222,14 @@
           'type' => 'empty_line'
         }
       ],
+      'extra' => {},
+      'level' => 1,
       'line_nr' => {
         'file_name' => '',
         'line_nr' => 50,
         'macro' => ''
       },
+      'number' => 7,
       'parent' => {}
     },
     {
@@ -5745,11 +5768,14 @@
           'type' => 'empty_line'
         }
       ],
+      'extra' => {},
+      'level' => 1,
       'line_nr' => {
         'file_name' => '',
         'line_nr' => 53,
         'macro' => ''
       },
+      'number' => 8,
       'parent' => {}
     },
     {
@@ -6308,11 +6334,14 @@
           'type' => 'empty_line'
         }
       ],
+      'extra' => {},
+      'level' => 1,
       'line_nr' => {
         'file_name' => '',
         'line_nr' => 56,
         'macro' => ''
       },
+      'number' => 9,
       'parent' => {}
     },
     {
@@ -6683,11 +6712,14 @@
           'type' => 'empty_line'
         }
       ],
+      'extra' => {},
+      'level' => 1,
       'line_nr' => {
         'file_name' => '',
         'line_nr' => 59,
         'macro' => ''
       },
+      'number' => 10,
       'parent' => {}
     },
     {
@@ -6954,11 +6986,14 @@
           'type' => 'empty_line'
         }
       ],
+      'extra' => {},
+      'level' => 1,
       'line_nr' => {
         'file_name' => '',
         'line_nr' => 62,
         'macro' => ''
       },
+      'number' => 11,
       'parent' => {}
     },
     {
@@ -7225,11 +7260,14 @@
           'type' => 'empty_line'
         }
       ],
+      'extra' => {},
+      'level' => 1,
       'line_nr' => {
         'file_name' => '',
         'line_nr' => 65,
         'macro' => ''
       },
+      'number' => 12,
       'parent' => {}
     },
     {
@@ -7310,11 +7348,14 @@
           'type' => 'empty_line'
         }
       ],
+      'extra' => {},
+      'level' => 1,
       'line_nr' => {
         'file_name' => '',
         'line_nr' => 68,
         'macro' => ''
       },
+      'number' => 13,
       'parent' => {}
     },
     {
@@ -7537,11 +7578,14 @@
           'type' => 'empty_line'
         }
       ],
+      'extra' => {},
+      'level' => 1,
       'line_nr' => {
         'file_name' => '',
         'line_nr' => 71,
         'macro' => ''
       },
+      'number' => 14,
       'parent' => {}
     },
     {
@@ -7764,11 +7808,14 @@
           'type' => 'empty_line'
         }
       ],
+      'extra' => {},
+      'level' => 1,
       'line_nr' => {
         'file_name' => '',
         'line_nr' => 75,
         'macro' => ''
       },
+      'number' => 15,
       'parent' => {}
     },
     {
@@ -7979,11 +8026,14 @@
           'type' => 'empty_line'
         }
       ],
+      'extra' => {},
+      'level' => 1,
       'line_nr' => {
         'file_name' => '',
         'line_nr' => 79,
         'macro' => ''
       },
+      'number' => 16,
       'parent' => {}
     },
     {
@@ -8214,11 +8264,14 @@
           'type' => 'empty_line'
         }
       ],
+      'extra' => {},
+      'level' => 1,
       'line_nr' => {
         'file_name' => '',
         'line_nr' => 83,
         'macro' => ''
       },
+      'number' => 17,
       'parent' => {}
     },
     {
@@ -8329,11 +8382,14 @@
           'type' => 'empty_line'
         }
       ],
+      'extra' => {},
+      'level' => 1,
       'line_nr' => {
         'file_name' => '',
         'line_nr' => 88,
         'macro' => ''
       },
+      'number' => 18,
       'parent' => {}
     },
     {
@@ -8876,11 +8932,14 @@
           'type' => 'empty_line'
         }
       ],
+      'extra' => {},
+      'level' => 1,
       'line_nr' => {
         'file_name' => '',
         'line_nr' => 92,
         'macro' => ''
       },
+      'number' => 19,
       'parent' => {}
     },
     {
@@ -9285,11 +9344,14 @@
           'type' => 'empty_line'
         }
       ],
+      'extra' => {},
+      'level' => 1,
       'line_nr' => {
         'file_name' => '',
         'line_nr' => 95,
         'macro' => ''
       },
+      'number' => 20,
       'parent' => {}
     },
     {
@@ -9405,11 +9467,14 @@
           'type' => 'empty_line'
         }
       ],
+      'extra' => {},
+      'level' => 1,
       'line_nr' => {
         'file_name' => '',
         'line_nr' => 98,
         'macro' => ''
       },
+      'number' => 21,
       'parent' => {}
     },
     {
@@ -9560,11 +9625,14 @@
           'type' => 'empty_line'
         }
       ],
+      'extra' => {},
+      'level' => 1,
       'line_nr' => {
         'file_name' => '',
         'line_nr' => 101,
         'macro' => ''
       },
+      'number' => 22,
       'parent' => {}
     },
     {
@@ -9671,11 +9739,14 @@
           'type' => 'empty_line'
         }
       ],
+      'extra' => {},
+      'level' => 1,
       'line_nr' => {
         'file_name' => '',
         'line_nr' => 104,
         'macro' => ''
       },
+      'number' => 23,
       'parent' => {}
     },
     {
@@ -12570,11 +12641,14 @@
           'type' => 'empty_line'
         }
       ],
+      'extra' => {},
+      'level' => 1,
       'line_nr' => {
         'file_name' => '',
         'line_nr' => 107,
         'macro' => ''
       },
+      'number' => 24,
       'parent' => {}
     },
     {
@@ -15375,155 +15449,379 @@
     {
       'childs' => [
         {
+          'cmdname' => 'chapter',
+          'extra' => {
+            'associated_node' => {
+              'cmdname' => 'node',
+              'extra' => {
+                'normalized' => '-_007b-_007d'
+              }
+            }
+          },
           'level' => 1,
           'number' => 1,
           'up' => {}
         },
         {
+          'cmdname' => 'chapter',
+          'extra' => {
+            'associated_node' => {
+              'cmdname' => 'node',
+              'extra' => {
+                'normalized' => '----_0021---_002e--_002e-_003f-_0040'
+              }
+            }
+          },
           'level' => 1,
           'number' => 2,
           'prev' => {},
           'up' => {}
         },
         {
+          'cmdname' => 'chapter',
+          'extra' => {
+            'associated_node' => {
+              'cmdname' => 'node',
+              'extra' => {
+                'normalized' => 
'LaTeX-TeX-_2022-_002c-_00a9-_2026-_002e_002e_002e'
+              }
+            }
+          },
           'level' => 1,
           'number' => 3,
           'prev' => {},
           'up' => {}
         },
         {
+          'cmdname' => 'chapter',
+          'extra' => {
+            'associated_node' => {
+              'cmdname' => 'node',
+              'extra' => {
+                'normalized' => 
'_2261-error_002d_002d_003e-_20ac-_00a1-_2192-_2212'
+              }
+            }
+          },
           'level' => 1,
           'number' => 4,
           'prev' => {},
           'up' => {}
         },
         {
+          'cmdname' => 'chapter',
+          'extra' => {
+            'associated_node' => {
+              'cmdname' => 'node',
+              'extra' => {
+                'normalized' => '_2265-_2264-_2192'
+              }
+            }
+          },
           'level' => 1,
           'number' => 5,
           'prev' => {},
           'up' => {}
         },
         {
+          'cmdname' => 'chapter',
+          'extra' => {
+            'associated_node' => {
+              'cmdname' => 'node',
+              'extra' => {
+                'normalized' => '_00aa-_00ba-_2605-_00a3-_22a3-_00bf-_00ae'
+              }
+            }
+          },
           'level' => 1,
           'number' => 6,
           'prev' => {},
           'up' => {}
         },
         {
+          'cmdname' => 'chapter',
+          'extra' => {
+            'associated_node' => {
+              'cmdname' => 'node',
+              'extra' => {
+                'normalized' => '_21d2-_00b0-a-b--_00e5'
+              }
+            }
+          },
           'level' => 1,
           'number' => 7,
           'prev' => {},
           'up' => {}
         },
         {
+          'cmdname' => 'chapter',
+          'extra' => {
+            'associated_node' => {
+              'cmdname' => 'node',
+              'extra' => {
+                'normalized' => 
'_00c5-_00e6-_0153-_00c6-_0152-_00f8-_00d8-_00df-_0142-_0141-_00d0-_00f0-_00de-_00fe'
+              }
+            }
+          },
           'level' => 1,
           'number' => 8,
           'prev' => {},
           'up' => {}
         },
         {
+          'cmdname' => 'chapter',
+          'extra' => {
+            'associated_node' => {
+              'cmdname' => 'node',
+              'extra' => {
+                'normalized' => 
'_00e4-_1ebd-_00ee-_00e2-_00e0-_00e9-_00e7-_0113-e_030a-e_030b-_0119'
+              }
+            }
+          },
           'level' => 1,
           'number' => 9,
           'prev' => {},
           'up' => {}
         },
         {
+          'cmdname' => 'chapter',
+          'extra' => {
+            'associated_node' => {
+              'cmdname' => 'node',
+              'extra' => {
+                'normalized' => '_0117-_0115-e_0332-_1eb9-_011b-j-ee_0361'
+              }
+            }
+          },
           'level' => 1,
           'number' => 10,
           'prev' => {},
           'up' => {}
         },
         {
+          'cmdname' => 'chapter',
+          'extra' => {
+            'associated_node' => {
+              'cmdname' => 'node',
+              'extra' => {
+                'normalized' => '_201c-_201d-_2018-_2019-_201e-_201a'
+              }
+            }
+          },
           'level' => 1,
           'number' => 11,
           'prev' => {},
           'up' => {}
         },
         {
+          'cmdname' => 'chapter',
+          'extra' => {
+            'associated_node' => {
+              'cmdname' => 'node',
+              'extra' => {
+                'normalized' => '_00ab-_00bb-_00ab-_00bb-_2039-_203a'
+              }
+            }
+          },
           'level' => 1,
           'number' => 12,
           'prev' => {},
           'up' => {}
         },
         {
+          'cmdname' => 'chapter',
+          'extra' => {
+            'associated_node' => {
+              'cmdname' => 'node',
+              'extra' => {
+                'normalized' => 
'_0060_0060-_0027_0027-_002d_002d_002d-_002d_002d'
+              }
+            }
+          },
           'level' => 1,
           'number' => 13,
           'prev' => {},
           'up' => {}
         },
         {
+          'cmdname' => 'chapter',
+          'extra' => {
+            'associated_node' => {
+              'cmdname' => 'node',
+              'extra' => {
+                'normalized' => 'AAA-AAA-BBB'
+              }
+            }
+          },
           'level' => 1,
           'number' => 14,
           'prev' => {},
           'up' => {}
         },
         {
+          'cmdname' => 'chapter',
+          'extra' => {
+            'associated_node' => {
+              'cmdname' => 'node',
+              'extra' => {
+                'normalized' => 'CCC-CCC-DDD'
+              }
+            }
+          },
           'level' => 1,
           'number' => 15,
           'prev' => {},
           'up' => {}
         },
         {
+          'cmdname' => 'chapter',
+          'extra' => {
+            'associated_node' => {
+              'cmdname' => 'node',
+              'extra' => {
+                'normalized' => 'the-someone-no_005fexplain_0040there'
+              }
+            }
+          },
           'level' => 1,
           'number' => 16,
           'prev' => {},
           'up' => {}
         },
         {
+          'cmdname' => 'chapter',
+          'extra' => {
+            'associated_node' => {
+              'cmdname' => 'node',
+              'extra' => {
+                'normalized' => 'f_002d_002dile1-f_002d_002dile'
+              }
+            }
+          },
           'level' => 1,
           'number' => 17,
           'prev' => {},
           'up' => {}
         },
         {
+          'cmdname' => 'chapter',
+          'extra' => {
+            'associated_node' => {
+              'cmdname' => 'node',
+              'extra' => {
+                'normalized' => '-_0040-_007b_007d-_002e-'
+              }
+            }
+          },
           'level' => 1,
           'number' => 18,
           'prev' => {},
           'up' => {}
         },
         {
+          'cmdname' => 'chapter',
+          'extra' => {
+            'associated_node' => {
+              'cmdname' => 'node',
+              'extra' => {
+                'normalized' => 'cite-asis-in-_0040w-b-in-r-SC-str-t-var-dfn-i'
+              }
+            }
+          },
           'level' => 1,
           'number' => 19,
           'prev' => {},
           'up' => {}
         },
         {
+          'cmdname' => 'chapter',
+          'extra' => {
+            'associated_node' => {
+              'cmdname' => 'node',
+              'extra' => {
+                'normalized' => 'env-code-option-samp-command-file-C_002dx-ESC'
+              }
+            }
+          },
           'level' => 1,
           'number' => 20,
           'prev' => {},
           'up' => {}
         },
         {
+          'cmdname' => 'chapter',
+          'extra' => {
+            'associated_node' => {
+              'cmdname' => 'node',
+              'extra' => {
+                'normalized' => '8_002e27in'
+              }
+            }
+          },
           'level' => 1,
           'number' => 21,
           'prev' => {},
           'up' => {}
         },
         {
+          'cmdname' => 'chapter',
+          'extra' => {
+            'associated_node' => {
+              'cmdname' => 'node',
+              'extra' => {
+                'normalized' => 'sansserif-slanted'
+              }
+            }
+          },
           'level' => 1,
           'number' => 22,
           'prev' => {},
           'up' => {}
         },
         {
+          'cmdname' => 'chapter',
+          'extra' => {
+            'associated_node' => {
+              'cmdname' => 'node',
+              'extra' => {
+                'normalized' => 'indicateurl'
+              }
+            }
+          },
           'level' => 1,
           'number' => 23,
           'prev' => {},
           'up' => {}
         },
         {
+          'cmdname' => 'chapter',
+          'extra' => {
+            'associated_node' => {
+              'cmdname' => 'node',
+              'extra' => {
+                'normalized' => 
'http_003a_002f_002fsomewhere_005faaa-url-_002fman_002ecgi_002f1_002fls'
+              }
+            }
+          },
           'level' => 1,
           'number' => 24,
           'prev' => {},
           'up' => {}
         }
       ],
+      'cmdname' => 'top',
+      'extra' => {
+        'associated_node' => {
+          'cmdname' => 'node',
+          'extra' => {
+            'normalized' => 'Top'
+          }
+        }
+      },
       'level' => 0,
       'up' => {}
     }
   ],
-  'level' => -1,
-  'text' => '_ROOT'
+  'level' => -1
 };
 $result_sectioning{'at_commands_in_refs'}{'childs'}[0]{'childs'}[0]{'up'} = 
$result_sectioning{'at_commands_in_refs'}{'childs'}[0];
 $result_sectioning{'at_commands_in_refs'}{'childs'}[0]{'childs'}[1]{'prev'} = 
$result_sectioning{'at_commands_in_refs'}{'childs'}[0]{'childs'}[0];
@@ -15573,6 +15871,7 @@
 $result_sectioning{'at_commands_in_refs'}{'childs'}[0]{'childs'}[23]{'prev'} = 
$result_sectioning{'at_commands_in_refs'}{'childs'}[0]{'childs'}[22];
 $result_sectioning{'at_commands_in_refs'}{'childs'}[0]{'childs'}[23]{'up'} = 
$result_sectioning{'at_commands_in_refs'}{'childs'}[0];
 $result_sectioning{'at_commands_in_refs'}{'childs'}[0]{'up'} = 
$result_sectioning{'at_commands_in_refs'};
+
 $result_errors{'at_commands_in_refs'} = [];
 
 

Index: t/results/sectioning/character_and_spaces_in_node.pl
===================================================================
RCS file: 
/sources/texinfo/texinfo/tp/t/results/sectioning/character_and_spaces_in_node.pl,v
retrieving revision 1.6
retrieving revision 1.7
diff -u -b -r1.6 -r1.7
--- t/results/sectioning/character_and_spaces_in_node.pl        30 Oct 2010 
11:28:37 -0000      1.6
+++ t/results/sectioning/character_and_spaces_in_node.pl        30 Oct 2010 
18:31:50 -0000      1.7
@@ -534,9 +534,8 @@
 $result_texts{'character_and_spaces_in_node'} = '
 ';
 
-$result_sectioning{'character_and_spaces_in_node'} = {
-  'text' => '_ROOT'
-};
+$result_sectioning{'character_and_spaces_in_node'} = {};
+
 $result_errors{'character_and_spaces_in_node'} = [];
 
 

Index: t/results/sectioning/character_and_spaces_in_refs.pl
===================================================================
RCS file: 
/sources/texinfo/texinfo/tp/t/results/sectioning/character_and_spaces_in_refs.pl,v
retrieving revision 1.8
retrieving revision 1.9
diff -u -b -r1.8 -r1.9
--- t/results/sectioning/character_and_spaces_in_refs.pl        30 Oct 2010 
11:28:37 -0000      1.8
+++ t/results/sectioning/character_and_spaces_in_refs.pl        30 Oct 2010 
18:31:50 -0000      1.9
@@ -524,6 +524,8 @@
           'type' => 'empty_line'
         }
       ],
+      'extra' => {},
+      'level' => 0,
       'line_nr' => {
         'file_name' => '',
         'line_nr' => 2,
@@ -843,11 +845,14 @@
           'type' => 'empty_line'
         }
       ],
+      'extra' => {},
+      'level' => 1,
       'line_nr' => {
         'file_name' => '',
         'line_nr' => 21,
         'macro' => ''
       },
+      'number' => 1,
       'parent' => {}
     },
     {
@@ -1421,20 +1426,38 @@
     {
       'childs' => [
         {
+          'cmdname' => 'chapter',
+          'extra' => {
+            'associated_node' => {
+              'cmdname' => 'node',
+              'extra' => {
+                'normalized' => 'other-nodes'
+              }
+            }
+          },
           'level' => 1,
           'number' => 1,
           'up' => {}
         }
       ],
+      'cmdname' => 'top',
+      'extra' => {
+        'associated_node' => {
+          'cmdname' => 'node',
+          'extra' => {
+            'normalized' => 'Top'
+          }
+        }
+      },
       'level' => 0,
       'up' => {}
     }
   ],
-  'level' => -1,
-  'text' => '_ROOT'
+  'level' => -1
 };
 
$result_sectioning{'character_and_spaces_in_refs'}{'childs'}[0]{'childs'}[0]{'up'}
 = $result_sectioning{'character_and_spaces_in_refs'}{'childs'}[0];
 $result_sectioning{'character_and_spaces_in_refs'}{'childs'}[0]{'up'} = 
$result_sectioning{'character_and_spaces_in_refs'};
+
 $result_errors{'character_and_spaces_in_refs'} = [];
 
 

Index: t/results/sectioning/double_node_anchor_float.pl
===================================================================
RCS file: 
/sources/texinfo/texinfo/tp/t/results/sectioning/double_node_anchor_float.pl,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -b -r1.2 -r1.3
--- t/results/sectioning/double_node_anchor_float.pl    30 Oct 2010 11:28:37 
-0000      1.2
+++ t/results/sectioning/double_node_anchor_float.pl    30 Oct 2010 18:31:50 
-0000      1.3
@@ -601,9 +601,8 @@
 
 ';
 
-$result_sectioning{'double_node_anchor_float'} = {
-  'text' => '_ROOT'
-};
+$result_sectioning{'double_node_anchor_float'} = {};
+
 $result_errors{'double_node_anchor_float'} = [
   {
     'error_line' => ':3: @node `node1\' previously defined

Index: t/results/sectioning/double_top.pl
===================================================================
RCS file: /sources/texinfo/texinfo/tp/t/results/sectioning/double_top.pl,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -b -r1.2 -r1.3
--- t/results/sectioning/double_top.pl  30 Oct 2010 11:28:37 -0000      1.2
+++ t/results/sectioning/double_top.pl  30 Oct 2010 18:31:50 -0000      1.3
@@ -246,9 +246,8 @@
 .
 ';
 
-$result_sectioning{'double_top'} = {
-  'text' => '_ROOT'
-};
+$result_sectioning{'double_top'} = {};
+
 $result_errors{'double_top'} = [
   {
     'error_line' => ':3: @node `top\' previously defined

Index: t/results/sectioning/empty_node.pl
===================================================================
RCS file: /sources/texinfo/texinfo/tp/t/results/sectioning/empty_node.pl,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -b -r1.1 -r1.2
--- t/results/sectioning/empty_node.pl  29 Oct 2010 21:43:24 -0000      1.1
+++ t/results/sectioning/empty_node.pl  30 Oct 2010 18:31:50 -0000      1.2
@@ -166,9 +166,8 @@
 $result_texts{'empty_node'} = '
 ';
 
-$result_sectioning{'empty_node'} = {
-  'text' => '_ROOT'
-};
+$result_sectioning{'empty_node'} = {};
+
 $result_errors{'empty_node'} = [
   {
     'error_line' => ':1: Empty argument in @node

Index: t/results/sectioning/node.pl
===================================================================
RCS file: /sources/texinfo/texinfo/tp/t/results/sectioning/node.pl,v
retrieving revision 1.20
retrieving revision 1.21
diff -u -b -r1.20 -r1.21
--- t/results/sectioning/node.pl        30 Oct 2010 11:28:37 -0000      1.20
+++ t/results/sectioning/node.pl        30 Oct 2010 18:31:50 -0000      1.21
@@ -747,9 +747,8 @@
 
 ';
 
-$result_sectioning{'node'} = {
-  'text' => '_ROOT'
-};
+$result_sectioning{'node'} = {};
+
 $result_errors{'node'} = [
   {
     'error_line' => ':6: warning: Superfluous arguments for node

Index: t/results/sectioning/node_empty_direction.pl
===================================================================
RCS file: 
/sources/texinfo/texinfo/tp/t/results/sectioning/node_empty_direction.pl,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -b -r1.2 -r1.3
--- t/results/sectioning/node_empty_direction.pl        30 Oct 2010 11:28:37 
-0000      1.2
+++ t/results/sectioning/node_empty_direction.pl        30 Oct 2010 18:31:50 
-0000      1.3
@@ -72,9 +72,8 @@
 
 $result_texts{'node_empty_direction'} = '';
 
-$result_sectioning{'node_empty_direction'} = {
-  'text' => '_ROOT'
-};
+$result_sectioning{'node_empty_direction'} = {};
+
 $result_errors{'node_empty_direction'} = [];
 
 

Index: t/results/sectioning/nodename_parentheses.pl
===================================================================
RCS file: 
/sources/texinfo/texinfo/tp/t/results/sectioning/nodename_parentheses.pl,v
retrieving revision 1.9
retrieving revision 1.10
diff -u -b -r1.9 -r1.10
--- t/results/sectioning/nodename_parentheses.pl        30 Oct 2010 11:28:37 
-0000      1.9
+++ t/results/sectioning/nodename_parentheses.pl        30 Oct 2010 18:31:50 
-0000      1.10
@@ -267,6 +267,8 @@
           'type' => 'empty_line'
         }
       ],
+      'extra' => {},
+      'level' => 0,
       'line_nr' => {
         'file_name' => '',
         'line_nr' => 2,
@@ -369,11 +371,14 @@
           'type' => 'empty_line'
         }
       ],
+      'extra' => {},
+      'level' => 1,
       'line_nr' => {
         'file_name' => '',
         'line_nr' => 11,
         'macro' => ''
       },
+      'number' => 1,
       'parent' => {}
     },
     {
@@ -530,11 +535,14 @@
           'type' => 'empty_line'
         }
       ],
+      'extra' => {},
+      'level' => 1,
       'line_nr' => {
         'file_name' => '',
         'line_nr' => 16,
         'macro' => ''
       },
+      'number' => 2,
       'parent' => {}
     },
     {
@@ -689,11 +697,14 @@
           'type' => 'empty_line'
         }
       ],
+      'extra' => {},
+      'level' => 1,
       'line_nr' => {
         'file_name' => '',
         'line_nr' => 23,
         'macro' => ''
       },
+      'number' => 3,
       'parent' => {}
     }
   ],
@@ -869,29 +880,64 @@
     {
       'childs' => [
         {
+          'cmdname' => 'chapter',
+          'extra' => {
+            'associated_node' => {
+              'cmdname' => 'node',
+              'extra' => {
+                'normalized' => 'Node-_0028with-parentheses_0029'
+              }
+            }
+          },
           'level' => 1,
           'number' => 1,
           'up' => {}
         },
         {
+          'cmdname' => 'chapter',
+          'extra' => {
+            'associated_node' => {
+              'cmdname' => 'node',
+              'extra' => {
+                'normalized' => 'Other-node'
+              }
+            }
+          },
           'level' => 1,
           'number' => 2,
           'prev' => {},
           'up' => {}
         },
         {
+          'cmdname' => 'chapter',
+          'extra' => {
+            'associated_node' => {
+              'cmdname' => 'node',
+              'extra' => {
+                'normalized' => 'node'
+              }
+            }
+          },
           'level' => 1,
           'number' => 3,
           'prev' => {},
           'up' => {}
         }
       ],
+      'cmdname' => 'top',
+      'extra' => {
+        'associated_node' => {
+          'cmdname' => 'node',
+          'extra' => {
+            'normalized' => 'Top'
+          }
+        }
+      },
       'level' => 0,
       'up' => {}
     }
   ],
-  'level' => -1,
-  'text' => '_ROOT'
+  'level' => -1
 };
 $result_sectioning{'nodename_parentheses'}{'childs'}[0]{'childs'}[0]{'up'} = 
$result_sectioning{'nodename_parentheses'}{'childs'}[0];
 $result_sectioning{'nodename_parentheses'}{'childs'}[0]{'childs'}[1]{'prev'} = 
$result_sectioning{'nodename_parentheses'}{'childs'}[0]{'childs'}[0];
@@ -899,6 +945,7 @@
 $result_sectioning{'nodename_parentheses'}{'childs'}[0]{'childs'}[2]{'prev'} = 
$result_sectioning{'nodename_parentheses'}{'childs'}[0]{'childs'}[1];
 $result_sectioning{'nodename_parentheses'}{'childs'}[0]{'childs'}[2]{'up'} = 
$result_sectioning{'nodename_parentheses'}{'childs'}[0];
 $result_sectioning{'nodename_parentheses'}{'childs'}[0]{'up'} = 
$result_sectioning{'nodename_parentheses'};
+
 $result_errors{'nodename_parentheses'} = [
   {
     'error_line' => ':22: Syntax for an external node used for ` (manual)node

Index: t/results/sectioning/raiselowersections.pl
===================================================================
RCS file: 
/sources/texinfo/texinfo/tp/t/results/sectioning/raiselowersections.pl,v
retrieving revision 1.12
retrieving revision 1.13
diff -u -b -r1.12 -r1.13
--- t/results/sectioning/raiselowersections.pl  30 Oct 2010 11:28:37 -0000      
1.12
+++ t/results/sectioning/raiselowersections.pl  30 Oct 2010 18:31:50 -0000      
1.13
@@ -222,6 +222,8 @@
           'type' => 'empty_line'
         }
       ],
+      'extra' => {},
+      'level' => 0,
       'line_nr' => {
         'file_name' => '',
         'line_nr' => 4,
@@ -451,11 +453,14 @@
           'type' => 'empty_line'
         }
       ],
+      'extra' => {},
+      'level' => 1,
       'line_nr' => {
         'file_name' => '',
         'line_nr' => 11,
         'macro' => ''
       },
+      'number' => 1,
       'parent' => {}
     },
     {
@@ -613,11 +618,13 @@
       'extra' => {
         'sections_level' => -1
       },
+      'level' => 2,
       'line_nr' => {
         'file_name' => 't/include//section_file.texi',
         'line_nr' => 14,
         'macro' => ''
       },
+      'number' => '1.1',
       'parent' => {}
     },
     {
@@ -775,11 +782,13 @@
       'extra' => {
         'sections_level' => -1
       },
+      'level' => 3,
       'line_nr' => {
         'file_name' => 't/include//section_file.texi',
         'line_nr' => 21,
         'macro' => ''
       },
+      'number' => '1.1.1',
       'parent' => {}
     },
     {
@@ -900,11 +909,13 @@
       'extra' => {
         'sections_level' => -1
       },
+      'level' => 4,
       'line_nr' => {
         'file_name' => 't/include//section_file.texi',
         'line_nr' => 28,
         'macro' => ''
       },
+      'number' => '1.1.1.1',
       'parent' => {}
     },
     {
@@ -1006,11 +1017,14 @@
           'parent' => {}
         }
       ],
+      'extra' => {},
+      'level' => 1,
       'line_nr' => {
         'file_name' => '',
         'line_nr' => 31,
         'macro' => ''
       },
+      'number' => 2,
       'parent' => {}
     },
     {
@@ -1278,38 +1292,94 @@
                 {
                   'childs' => [
                     {
+                      'cmdname' => 'subsection',
+                      'extra' => {
+                        'associated_node' => {
+                          'cmdname' => 'node',
+                          'extra' => {
+                            'normalized' => 'Subsection'
+                          }
+                        },
+                        'sections_level' => -1
+                      },
                       'level' => 4,
                       'number' => '1.1.1.1',
                       'up' => {}
                     }
                   ],
+                  'cmdname' => 'section',
+                  'extra' => {
+                    'associated_node' => {
+                      'cmdname' => 'node',
+                      'extra' => {
+                        'normalized' => 'Section'
+                      }
+                    },
+                    'sections_level' => -1
+                  },
                   'level' => 3,
                   'number' => '1.1.1',
                   'up' => {}
                 }
               ],
+              'cmdname' => 'chapter',
+              'extra' => {
+                'associated_node' => {
+                  'cmdname' => 'node',
+                  'extra' => {
+                    'normalized' => 'Chapter-in-included-file'
+                  }
+                },
+                'sections_level' => -1
+              },
               'level' => 2,
               'number' => '1.1',
               'up' => {}
             }
           ],
+          'cmdname' => 'chapter',
+          'extra' => {
+            'associated_node' => {
+              'cmdname' => 'node',
+              'extra' => {
+                'normalized' => 'Chapter'
+              }
+            }
+          },
           'level' => 1,
           'number' => 1,
           'up' => {}
         },
         {
+          'cmdname' => 'chapter',
+          'extra' => {
+            'associated_node' => {
+              'cmdname' => 'node',
+              'extra' => {
+                'normalized' => 'Second-chapter'
+              }
+            }
+          },
           'level' => 1,
           'number' => 2,
           'prev' => {},
           'up' => {}
         }
       ],
+      'cmdname' => 'top',
+      'extra' => {
+        'associated_node' => {
+          'cmdname' => 'node',
+          'extra' => {
+            'normalized' => 'Top'
+          }
+        }
+      },
       'level' => 0,
       'up' => {}
     }
   ],
-  'level' => -1,
-  'text' => '_ROOT'
+  'level' => -1
 };
 
$result_sectioning{'raiselowersections'}{'childs'}[0]{'childs'}[0]{'childs'}[0]{'childs'}[0]{'childs'}[0]{'up'}
 = 
$result_sectioning{'raiselowersections'}{'childs'}[0]{'childs'}[0]{'childs'}[0]{'childs'}[0];
 
$result_sectioning{'raiselowersections'}{'childs'}[0]{'childs'}[0]{'childs'}[0]{'childs'}[0]{'up'}
 = 
$result_sectioning{'raiselowersections'}{'childs'}[0]{'childs'}[0]{'childs'}[0];
@@ -1318,6 +1388,7 @@
 $result_sectioning{'raiselowersections'}{'childs'}[0]{'childs'}[1]{'prev'} = 
$result_sectioning{'raiselowersections'}{'childs'}[0]{'childs'}[0];
 $result_sectioning{'raiselowersections'}{'childs'}[0]{'childs'}[1]{'up'} = 
$result_sectioning{'raiselowersections'}{'childs'}[0];
 $result_sectioning{'raiselowersections'}{'childs'}[0]{'up'} = 
$result_sectioning{'raiselowersections'};
+
 $result_errors{'raiselowersections'} = [];
 
 

Index: t/results/sectioning/sections.pl
===================================================================
RCS file: /sources/texinfo/texinfo/tp/t/results/sectioning/sections.pl,v
retrieving revision 1.12
retrieving revision 1.13
diff -u -b -r1.12 -r1.13
--- t/results/sectioning/sections.pl    29 Oct 2010 07:25:07 -0000      1.12
+++ t/results/sectioning/sections.pl    30 Oct 2010 18:31:50 -0000      1.13
@@ -32,11 +32,13 @@
       ],
       'cmdname' => 'chapter',
       'contents' => [],
+      'level' => 1,
       'line_nr' => {
         'file_name' => '',
         'line_nr' => 1,
         'macro' => ''
       },
+      'number' => 1,
       'parent' => {}
     }
   ],
@@ -58,15 +60,16 @@
 $result_sectioning{'sections'} = {
   'childs' => [
     {
+      'cmdname' => 'chapter',
       'level' => 1,
       'number' => 1,
       'up' => {}
     }
   ],
-  'level' => 0,
-  'text' => '_ROOT'
+  'level' => 0
 };
 $result_sectioning{'sections'}{'childs'}[0]{'up'} = 
$result_sectioning{'sections'};
+
 $result_errors{'sections'} = [];
 
 

Index: t/results/sectioning/some_at_commands_in_ref_nodes.pl
===================================================================
RCS file: 
/sources/texinfo/texinfo/tp/t/results/sectioning/some_at_commands_in_ref_nodes.pl,v
retrieving revision 1.8
retrieving revision 1.9
diff -u -b -r1.8 -r1.9
--- t/results/sectioning/some_at_commands_in_ref_nodes.pl       30 Oct 2010 
11:28:37 -0000      1.8
+++ t/results/sectioning/some_at_commands_in_ref_nodes.pl       30 Oct 2010 
18:31:50 -0000      1.9
@@ -329,6 +329,8 @@
           'type' => 'empty_line'
         }
       ],
+      'extra' => {},
+      'level' => 0,
       'line_nr' => {
         'file_name' => '',
         'line_nr' => 3,
@@ -934,11 +936,14 @@
           'type' => 'paragraph'
         }
       ],
+      'extra' => {},
+      'level' => 1,
       'line_nr' => {
         'file_name' => '',
         'line_nr' => 10,
         'macro' => ''
       },
+      'number' => 1,
       'parent' => {}
     }
   ],
@@ -1162,20 +1167,38 @@
     {
       'childs' => [
         {
+          'cmdname' => 'chapter',
+          'extra' => {
+            'associated_node' => {
+              'cmdname' => 'node',
+              'extra' => {
+                'normalized' => 'A-SC-node-_00ef-_00ef-_1e14-_0142-_1e08-_00a1'
+              }
+            }
+          },
           'level' => 1,
           'number' => 1,
           'up' => {}
         }
       ],
+      'cmdname' => 'top',
+      'extra' => {
+        'associated_node' => {
+          'cmdname' => 'node',
+          'extra' => {
+            'normalized' => 'Top'
+          }
+        }
+      },
       'level' => 0,
       'up' => {}
     }
   ],
-  'level' => -1,
-  'text' => '_ROOT'
+  'level' => -1
 };
 
$result_sectioning{'some_at_commands_in_ref_nodes'}{'childs'}[0]{'childs'}[0]{'up'}
 = $result_sectioning{'some_at_commands_in_ref_nodes'}{'childs'}[0];
 $result_sectioning{'some_at_commands_in_ref_nodes'}{'childs'}[0]{'up'} = 
$result_sectioning{'some_at_commands_in_ref_nodes'};
+
 $result_errors{'some_at_commands_in_ref_nodes'} = [];
 
 

Index: t/results/value/value_in_misc_commands.pl
===================================================================
RCS file: 
/sources/texinfo/texinfo/tp/t/results/value/value_in_misc_commands.pl,v
retrieving revision 1.20
retrieving revision 1.21
diff -u -b -r1.20 -r1.21
--- t/results/value/value_in_misc_commands.pl   30 Oct 2010 11:28:37 -0000      
1.20
+++ t/results/value/value_in_misc_commands.pl   30 Oct 2010 18:31:50 -0000      
1.21
@@ -2531,6 +2531,8 @@
           'type' => 'empty_line'
         }
       ],
+      'extra' => {},
+      'level' => 0,
       'line_nr' => {
         'file_name' => '',
         'line_nr' => 4,
@@ -3152,14 +3154,23 @@
 $result_sectioning{'value_in_misc_commands'} = {
   'childs' => [
     {
+      'cmdname' => 'top',
+      'extra' => {
+        'associated_node' => {
+          'cmdname' => 'node',
+          'extra' => {
+            'normalized' => 'Top'
+          }
+        }
+      },
       'level' => 0,
       'up' => {}
     }
   ],
-  'level' => -1,
-  'text' => '_ROOT'
+  'level' => -1
 };
 $result_sectioning{'value_in_misc_commands'}{'childs'}[0]{'up'} = 
$result_sectioning{'value_in_misc_commands'};
+
 $result_errors{'value_in_misc_commands'} = [
   {
     'error_line' => ':17: Bad argument to @headings: on line following 
headings atext

Index: t/results/value/value_in_node.pl
===================================================================
RCS file: /sources/texinfo/texinfo/tp/t/results/value/value_in_node.pl,v
retrieving revision 1.23
retrieving revision 1.24
diff -u -b -r1.23 -r1.24
--- t/results/value/value_in_node.pl    30 Oct 2010 11:28:37 -0000      1.23
+++ t/results/value/value_in_node.pl    30 Oct 2010 18:31:50 -0000      1.24
@@ -257,6 +257,8 @@
           'type' => 'empty_line'
         }
       ],
+      'extra' => {},
+      'level' => 0,
       'line_nr' => {
         'file_name' => '',
         'line_nr' => 4,
@@ -488,11 +490,14 @@
           'type' => 'empty_line'
         }
       ],
+      'extra' => {},
+      'level' => 1,
       'line_nr' => {
         'file_name' => '',
         'line_nr' => 11,
         'macro' => ''
       },
+      'number' => 1,
       'parent' => {}
     },
     {
@@ -769,20 +774,38 @@
     {
       'childs' => [
         {
+          'cmdname' => 'chapter',
+          'extra' => {
+            'associated_node' => {
+              'cmdname' => 'node',
+              'extra' => {
+                'normalized' => 'Node-1'
+              }
+            }
+          },
           'level' => 1,
           'number' => 1,
           'up' => {}
         }
       ],
+      'cmdname' => 'top',
+      'extra' => {
+        'associated_node' => {
+          'cmdname' => 'node',
+          'extra' => {
+            'normalized' => 'Top'
+          }
+        }
+      },
       'level' => 0,
       'up' => {}
     }
   ],
-  'level' => -1,
-  'text' => '_ROOT'
+  'level' => -1
 };
 $result_sectioning{'value_in_node'}{'childs'}[0]{'childs'}[0]{'up'} = 
$result_sectioning{'value_in_node'}{'childs'}[0];
 $result_sectioning{'value_in_node'}{'childs'}[0]{'up'} = 
$result_sectioning{'value_in_node'};
+
 $result_errors{'value_in_node'} = [];
 
 

Index: t/results/value/value_node_directions.pl
===================================================================
RCS file: /sources/texinfo/texinfo/tp/t/results/value/value_node_directions.pl,v
retrieving revision 1.19
retrieving revision 1.20
diff -u -b -r1.19 -r1.20
--- t/results/value/value_node_directions.pl    30 Oct 2010 11:28:37 -0000      
1.19
+++ t/results/value/value_node_directions.pl    30 Oct 2010 18:31:50 -0000      
1.20
@@ -186,6 +186,8 @@
           'type' => 'empty_line'
         }
       ],
+      'extra' => {},
+      'level' => 0,
       'line_nr' => {
         'file_name' => '',
         'line_nr' => 4,
@@ -333,11 +335,14 @@
           'type' => 'empty_line'
         }
       ],
+      'extra' => {},
+      'level' => 1,
       'line_nr' => {
         'file_name' => '',
         'line_nr' => 8,
         'macro' => ''
       },
+      'number' => 1,
       'parent' => {}
     },
     {
@@ -464,11 +469,14 @@
       ],
       'cmdname' => 'chapter',
       'contents' => [],
+      'extra' => {},
+      'level' => 1,
       'line_nr' => {
         'file_name' => '',
         'line_nr' => 11,
         'macro' => ''
       },
+      'number' => 2,
       'parent' => {}
     }
   ],
@@ -572,28 +580,55 @@
     {
       'childs' => [
         {
+          'cmdname' => 'chapter',
+          'extra' => {
+            'associated_node' => {
+              'cmdname' => 'node',
+              'extra' => {
+                'normalized' => 'bar'
+              }
+            }
+          },
           'level' => 1,
           'number' => 1,
           'up' => {}
         },
         {
+          'cmdname' => 'chapter',
+          'extra' => {
+            'associated_node' => {
+              'cmdname' => 'node',
+              'extra' => {
+                'normalized' => 'BarFoo'
+              }
+            }
+          },
           'level' => 1,
           'number' => 2,
           'prev' => {},
           'up' => {}
         }
       ],
+      'cmdname' => 'top',
+      'extra' => {
+        'associated_node' => {
+          'cmdname' => 'node',
+          'extra' => {
+            'normalized' => 'Top'
+          }
+        }
+      },
       'level' => 0,
       'up' => {}
     }
   ],
-  'level' => -1,
-  'text' => '_ROOT'
+  'level' => -1
 };
 $result_sectioning{'value_node_directions'}{'childs'}[0]{'childs'}[0]{'up'} = 
$result_sectioning{'value_node_directions'}{'childs'}[0];
 $result_sectioning{'value_node_directions'}{'childs'}[0]{'childs'}[1]{'prev'} 
= $result_sectioning{'value_node_directions'}{'childs'}[0]{'childs'}[0];
 $result_sectioning{'value_node_directions'}{'childs'}[0]{'childs'}[1]{'up'} = 
$result_sectioning{'value_node_directions'}{'childs'}[0];
 $result_sectioning{'value_node_directions'}{'childs'}[0]{'up'} = 
$result_sectioning{'value_node_directions'};
+
 $result_errors{'value_node_directions'} = [];
 
 

Index: t/results/sectioning/unknown_node_in_menu.pl
===================================================================
RCS file: t/results/sectioning/unknown_node_in_menu.pl
diff -N t/results/sectioning/unknown_node_in_menu.pl
--- /dev/null   1 Jan 1970 00:00:00 -0000
+++ t/results/sectioning/unknown_node_in_menu.pl        30 Oct 2010 18:31:50 
-0000      1.1
@@ -0,0 +1,179 @@
+use vars qw(%result_texis %result_texts %result_trees %result_errors 
%results_indices);
+
+$result_trees{'unknown_node_in_menu'} = {
+  'contents' => [
+    {
+      'contents' => [],
+      'type' => 'text_root'
+    },
+    {
+      'args' => [
+        {
+          'contents' => [
+            {
+              'parent' => {},
+              'text' => ' ',
+              'type' => 'empty_spaces_after_command'
+            },
+            {
+              'parent' => {},
+              'text' => 'Top'
+            },
+            {
+              'parent' => {},
+              'text' => '
+',
+              'type' => 'spaces_at_end'
+            }
+          ],
+          'parent' => {},
+          'type' => 'misc_line_arg'
+        }
+      ],
+      'cmdname' => 'node',
+      'contents' => [
+        {
+          'parent' => {},
+          'text' => '
+',
+          'type' => 'empty_line'
+        },
+        {
+          'cmdname' => 'menu',
+          'contents' => [
+            {
+              'parent' => {},
+              'text' => '
+',
+              'type' => 'empty_line_after_command'
+            },
+            {
+              'args' => [
+                {
+                  'parent' => {},
+                  'text' => '* ',
+                  'type' => 'menu_entry_leading_text'
+                },
+                {
+                  'contents' => [
+                    {
+                      'parent' => {},
+                      'text' => 'unknown'
+                    }
+                  ],
+                  'parent' => {},
+                  'type' => 'menu_entry_node'
+                },
+                {
+                  'parent' => {},
+                  'text' => '::',
+                  'type' => 'menu_entry_separator'
+                },
+                {
+                  'contents' => [
+                    {
+                      'parent' => {},
+                      'text' => '
+'
+                    }
+                  ],
+                  'parent' => {},
+                  'type' => 'menu_entry_description'
+                }
+              ],
+              'extra' => {
+                'menu_entry_node' => {
+                  'node_content' => [
+                    {}
+                  ],
+                  'normalized' => 'unknown'
+                }
+              },
+              'line_nr' => {
+                'file_name' => '',
+                'line_nr' => 4,
+                'macro' => ''
+              },
+              'parent' => {},
+              'type' => 'menu_entry'
+            }
+          ],
+          'parent' => {}
+        },
+        {
+          'parent' => {},
+          'text' => '
+',
+          'type' => 'empty_line_after_command'
+        }
+      ],
+      'extra' => {
+        'node_content' => [
+          {}
+        ],
+        'nodes_manuals' => [
+          {
+            'node_content' => [],
+            'normalized' => 'Top'
+          }
+        ],
+        'normalized' => 'Top'
+      },
+      'line_nr' => {
+        'file_name' => '',
+        'line_nr' => 1,
+        'macro' => ''
+      },
+      'parent' => {}
+    }
+  ],
+  'type' => 'document_root'
+};
+$result_trees{'unknown_node_in_menu'}{'contents'}[1]{'args'}[0]{'contents'}[0]{'parent'}
 = $result_trees{'unknown_node_in_menu'}{'contents'}[1]{'args'}[0];
+$result_trees{'unknown_node_in_menu'}{'contents'}[1]{'args'}[0]{'contents'}[1]{'parent'}
 = $result_trees{'unknown_node_in_menu'}{'contents'}[1]{'args'}[0];
+$result_trees{'unknown_node_in_menu'}{'contents'}[1]{'args'}[0]{'contents'}[2]{'parent'}
 = $result_trees{'unknown_node_in_menu'}{'contents'}[1]{'args'}[0];
+$result_trees{'unknown_node_in_menu'}{'contents'}[1]{'args'}[0]{'parent'} = 
$result_trees{'unknown_node_in_menu'}{'contents'}[1];
+$result_trees{'unknown_node_in_menu'}{'contents'}[1]{'contents'}[0]{'parent'} 
= $result_trees{'unknown_node_in_menu'}{'contents'}[1];
+$result_trees{'unknown_node_in_menu'}{'contents'}[1]{'contents'}[1]{'contents'}[0]{'parent'}
 = $result_trees{'unknown_node_in_menu'}{'contents'}[1]{'contents'}[1];
+$result_trees{'unknown_node_in_menu'}{'contents'}[1]{'contents'}[1]{'contents'}[1]{'args'}[0]{'parent'}
 = 
$result_trees{'unknown_node_in_menu'}{'contents'}[1]{'contents'}[1]{'contents'}[1];
+$result_trees{'unknown_node_in_menu'}{'contents'}[1]{'contents'}[1]{'contents'}[1]{'args'}[1]{'contents'}[0]{'parent'}
 = 
$result_trees{'unknown_node_in_menu'}{'contents'}[1]{'contents'}[1]{'contents'}[1]{'args'}[1];
+$result_trees{'unknown_node_in_menu'}{'contents'}[1]{'contents'}[1]{'contents'}[1]{'args'}[1]{'parent'}
 = 
$result_trees{'unknown_node_in_menu'}{'contents'}[1]{'contents'}[1]{'contents'}[1];
+$result_trees{'unknown_node_in_menu'}{'contents'}[1]{'contents'}[1]{'contents'}[1]{'args'}[2]{'parent'}
 = 
$result_trees{'unknown_node_in_menu'}{'contents'}[1]{'contents'}[1]{'contents'}[1];
+$result_trees{'unknown_node_in_menu'}{'contents'}[1]{'contents'}[1]{'contents'}[1]{'args'}[3]{'contents'}[0]{'parent'}
 = 
$result_trees{'unknown_node_in_menu'}{'contents'}[1]{'contents'}[1]{'contents'}[1]{'args'}[3];
+$result_trees{'unknown_node_in_menu'}{'contents'}[1]{'contents'}[1]{'contents'}[1]{'args'}[3]{'parent'}
 = 
$result_trees{'unknown_node_in_menu'}{'contents'}[1]{'contents'}[1]{'contents'}[1];
+$result_trees{'unknown_node_in_menu'}{'contents'}[1]{'contents'}[1]{'contents'}[1]{'extra'}{'menu_entry_node'}{'node_content'}[0]
 = 
$result_trees{'unknown_node_in_menu'}{'contents'}[1]{'contents'}[1]{'contents'}[1]{'args'}[1]{'contents'}[0];
+$result_trees{'unknown_node_in_menu'}{'contents'}[1]{'contents'}[1]{'contents'}[1]{'parent'}
 = $result_trees{'unknown_node_in_menu'}{'contents'}[1]{'contents'}[1];
+$result_trees{'unknown_node_in_menu'}{'contents'}[1]{'contents'}[1]{'parent'} 
= $result_trees{'unknown_node_in_menu'}{'contents'}[1];
+$result_trees{'unknown_node_in_menu'}{'contents'}[1]{'contents'}[2]{'parent'} 
= $result_trees{'unknown_node_in_menu'}{'contents'}[1];
+$result_trees{'unknown_node_in_menu'}{'contents'}[1]{'extra'}{'node_content'}[0]
 = 
$result_trees{'unknown_node_in_menu'}{'contents'}[1]{'args'}[0]{'contents'}[1];
+$result_trees{'unknown_node_in_menu'}{'contents'}[1]{'extra'}{'nodes_manuals'}[0]{'node_content'}
 = 
$result_trees{'unknown_node_in_menu'}{'contents'}[1]{'extra'}{'node_content'};
+$result_trees{'unknown_node_in_menu'}{'contents'}[1]{'parent'} = 
$result_trees{'unknown_node_in_menu'};
+
+$result_texis{'unknown_node_in_menu'} = '@node Top
+
address@hidden
+* unknown::
address@hidden menu
+';
+
+
+$result_texts{'unknown_node_in_menu'} = '
+* unknown::
+';
+
+$result_sectioning{'unknown_node_in_menu'} = {};
+
+$result_errors{'unknown_node_in_menu'} = [
+  {
+    'error_line' => ':4: Menu reference to nonexistent node `unknown\'
+',
+    'file_name' => '',
+    'line_nr' => 4,
+    'macro' => '',
+    'text' => 'Menu reference to nonexistent node `unknown\'',
+    'type' => 'error'
+  }
+];
+
+
+1;



reply via email to

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