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/m...


From: Patrice Dumas
Subject: texinfo/tp Texinfo/Parser.pm t/02coverage.t t/m...
Date: Sat, 25 Sep 2010 08:42:50 +0000

CVSROOT:        /sources/texinfo
Module name:    texinfo
Changes by:     Patrice Dumas <pertusus>        10/09/25 08:42:50

Modified files:
        tp/Texinfo     : Parser.pm 
        tp/t           : 02coverage.t manual_tree.pl 
        tp/t/results   : coverage.pl 

Log message:
        Fix handling of @-commands with brace but no arg, and of accents.
        Improvements in item and similar commands handling (still not done).

CVSWeb URLs:
http://cvs.savannah.gnu.org/viewcvs/texinfo/tp/Texinfo/Parser.pm?cvsroot=texinfo&r1=1.11&r2=1.12
http://cvs.savannah.gnu.org/viewcvs/texinfo/tp/t/02coverage.t?cvsroot=texinfo&r1=1.3&r2=1.4
http://cvs.savannah.gnu.org/viewcvs/texinfo/tp/t/manual_tree.pl?cvsroot=texinfo&r1=1.1&r2=1.2
http://cvs.savannah.gnu.org/viewcvs/texinfo/tp/t/results/coverage.pl?cvsroot=texinfo&r1=1.1&r2=1.2

Patches:
Index: Texinfo/Parser.pm
===================================================================
RCS file: /sources/texinfo/texinfo/tp/Texinfo/Parser.pm,v
retrieving revision 1.11
retrieving revision 1.12
diff -u -b -r1.11 -r1.12
--- Texinfo/Parser.pm   24 Sep 2010 21:38:57 -0000      1.11
+++ Texinfo/Parser.pm   25 Sep 2010 08:42:49 -0000      1.12
@@ -97,7 +97,7 @@
 
 foreach my $accent_command ('"','~','^','`',"'",',','=')
 {
-  $accent_commands{$accent_command} = 0;
+  $accent_commands{$accent_command} = 1;
   $brace_commands{$accent_command} = 1;
 }
 
@@ -181,19 +181,28 @@
 
 # macro is special
 foreach my $raw_command ('html', 'tex', 'xml', 'docbook', 'verbatim', 
-                         'ignore', 'macro')
-{
+                         'ignore', 'macro') {
   $block_commands{$raw_command} = 'raw';
 }
 
+# 'macro' ?
 foreach my $block_command_one_arg('table', 'ftable', 'vtable',
-  'itemize', 'enumerate', 'quotation', 'small_quotation') # 'macro' ?
-{
+  'itemize', 'enumerate', 'quotation', 'small_quotation') {
   $block_commands{$block_command_one_arg} = 1;
 }
 
 $block_commands{'float'} = 2;
 
+my %item_container_commands;
+foreach my $item_container_command ('itemize', 'enumerate') {
+  $item_container_commands{$item_container_command} = 1;
+}
+
+my %item_line_commands;
+foreach my $item_line_command ('table', 'ftable', 'vtable') {
+  $item_line_commands{$item_line_command} = 1;
+}
+
 my %deprecated_commands = (
   'ctrl' => '',
   'allow-recursion' => N__('recursion is always allowed'),
@@ -661,7 +670,9 @@
   my $current = shift;
   my $line_nr = shift;
 
-  while ($current->{'type'} and $current->{'type'} eq 'brace_command_arg') {
+  while ($current->{'parent'} and $current->{'parent'}->{'cmdname'}
+          and exists $brace_commands{$current->{'parent'}->{'cmdname'}}
+          and !exists 
$context_brace_commands{$current->{'parent'}->{'cmdname'}}) {
     my $error;
     ($current, $error) = _close_brace_command($self, $current, $line_nr);
     return ($current, $error) if ($error);
@@ -753,6 +764,48 @@
   return $current;
 }
 
+sub _item_container($)
+{
+  my $current = shift;
+  if (($current->{'cmdname'} and $current->{'cmdname'} eq 'item' 
+       or $current->{'type'} and $current->{'type'} eq 'container')
+      and ($current->{'parent'} and $current->{'parent'}->{'cmdname'}
+        and $item_container_commands{$current->{'parent'}->{'cmdname'}})) {
+    return ($current->{'parent'});
+  }
+  return undef;
+}
+
+sub _item_line($)
+{
+  my $current = shift;
+  if (($current->{'cmdname'} and $current->{'cmdname'} eq 'item'
+       or $current->{'cmdname'} eq 'itemx'
+        or $current->{'type'} and $current->{'type'} eq 'container')
+      and ($current->{'parent'} and $current->{'parent'}->{'cmdname'}
+        and $item_line_commands{$current->{'parent'}->{'cmdname'}})) {
+    return ($current->{'parent'});
+  }
+  return undef;
+}
+
+sub _item_multitable($)
+{
+  my $current = shift;
+  if (($current->{'cmdname'} and $current->{'cmdname'} eq 'headitem'
+       or $current->{'cmdname'} eq 'item' or $current->{'cmdname'} eq 'tab')
+      and $current->{'parent'} and $current->{'parent'}->{'parent'}) {
+    $current = $current->{'parent'}->{'parent'};
+  } elsif ($current->{'type'} and $current->{'type'} eq 'container'
+            and $current->{'parent'}) {
+    $current = $current->{'parent'};
+  }
+  return $current if ($current->{'cmdname'} 
+                       and $current->{'cmdname'} eq 'multitable');
+  return undef;
+}
+
+#c 'menu_entry'
 #c 'menu_entry'
 # t 'menu_entry_leading_text'
 #
@@ -908,7 +961,7 @@
         
       if ($line =~ s/address@hidden([a-zA-Z][\w-]*)//) {
         my $end_command = $1;
-        print STDERR "END COMMAND $end_command\n" if ($self->{'debug'});
+        print STDERR "END $end_command\n" if ($self->{'debug'});
         my $error;
         ($current, $error) = _end_block_command($self, $current, $line_nr,
                                                 $end_command);
@@ -954,6 +1007,12 @@
               { 'type' => 'misc_arg', 'text' => $arg, 
                 'parent' => $current->{'contents'}->[-1] };
           }
+          if ($command eq 'item' or $command eq 'itemx' 
+               or $command eq 'headitem' or $command eq 'tab') {
+            my $error;
+            ($current, $error) = _end_paragraph($self, $current, $line_nr);
+            return undef if ($error);
+          }
           if (defined($line_arg)) {
             $line = $line_arg;
             $current = $current->{'contents'}->[-1];
@@ -1024,10 +1083,9 @@
               $current->{'type'} = $1;
             }
           }
-          if ($brace_commands{$command}) {
             $current->{'args'} = [ { 'parent' => $current, 
                                      'contents' => [] } ];
-            $current->{'remaining_args'} = $brace_commands{$command} -1;
+          $current->{'remaining_args'} = $brace_commands{$command} -1 if 
($brace_commands{$command});
             $current = $current->{'args'}->[-1];
             # no type for footnote, such that it appears as a container
             # that holds paragraphs
@@ -1040,11 +1098,9 @@
             print STDERR "OPENED address@hidden>{'parent'}->{'cmdname'}, 
remaining $current->{'parent'}->{'remaining_args'} "
                .($current->{'type'} ? $current->{'type'} : '')."\n"
               if ($self->{'debug'});
-          }
         } elsif ($accent_commands{$command}) {
           if ($command =~ /^[a-zA-Z]/) {
             $line =~ s/^\s*//;
-
           } elsif ($line =~ /^\s/) {
             _line_warn ($self, sprintf($self->
                 __("Accent command address@hidden' must not be followed by 
whitespace"),
@@ -1058,22 +1114,30 @@
                      $command), $line_nr);
           }
           if ($line =~ s/^(\S)//o) {
+            print STDERR "ACCENT address@hidden" if ($self->{'debug'});
             my $accent = { 'cmdname' => $command, 'parent' => $current };
             $accent->{'args'} = [ { 'text' => $1, 'parent' => $accent } ];
+            if ($command =~ /^[a-zA-Z]/) {
+              $accent->{'args'}->[-1]->{'type'} = 'space_command_arg';
+            }
             push @{$current->{'contents'}}, $accent;
 
           } else { # The accent is at end of line
             # FIXME warn? And test case? Maybe this is catched 
             # above, by "Accent command address@hidden' must not be followed by
             # whitespace for commands with letter.
+            print STDERR "STRANGE ACC address@hidden" if ($self->{'debug'});
             push @{$current->{'contents'}},
                  { 'text' => $command, 'parent' => $current };
           }
-
         } elsif ($no_brace_commands{$command}) {
           push @{$current->{'contents'}},
                { 'cmdname' => $command, 'parent' => $current };
 
+        } elsif(exists $brace_commands{$command}) {
+          return undef if 
+            _line_error ($self,
+               sprintf($self->__("address@hidden expected braces"), $command), 
$line_nr);
         } else {
           # unknown
         }
@@ -1106,7 +1170,7 @@
              $current = $current->{'parent'};
           } elsif ($current->{'parent'}
                    and $current->{'parent'}->{'cmdname'}
-                   and $brace_commands{$current->{'parent'}->{'cmdname'}}) {
+                   and exists 
$brace_commands{$current->{'parent'}->{'cmdname'}}) {
              if ($context_brace_commands{$current->{'parent'}->{'cmdname'}}) {
                pop @{$self->{'context'}};
              }
@@ -1270,11 +1334,6 @@
   my $cmd = shift;
   my $result = '@'.$cmd->{'cmdname'};
   #print STDERR "Expand $result\n";
-  my $cmd_with_braces = 1 if (defined($brace_commands{$cmd->{'cmdname'}}));
-  $result .= '{' if ($cmd_with_braces);
-  if ($cmd->{'cmdname'} eq 'verb') {
-     $result .= $cmd->{'type'};
-  }
   # must be before the next condition
   if ($block_commands{$cmd->{'cmdname'}}
          and ($block_commands{$cmd->{'cmdname'}} eq 'def'
@@ -1285,9 +1344,8 @@
           if ($arg->{'type'} and $arg->{'type'} eq 'bracketed');
         $result .= ' '.$arg_expanded;
      }
-  } elsif (($cmd_with_braces
-            or ($block_commands{$cmd->{'cmdname'}}
-                and $block_commands{$cmd->{'cmdname'}} ne 'raw')) 
+  } elsif ($block_commands{$cmd->{'cmdname'}}
+            and $block_commands{$cmd->{'cmdname'}} ne 'raw'
            and defined($cmd->{'args'})) {
     die "bad args type (".ref($cmd->{'args'}).") $cmd->{'args'}\n"
       if (ref($cmd->{'args'}) ne 'ARRAY');
@@ -1299,21 +1357,35 @@
     $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'}}));
+    $result .= '{' if ($braces);
+    $result .= ' ' if ($cmd->{'args'}->[0]->{'type'} 
+                       and $cmd->{'args'}->[0]->{'type'} eq 
'space_command_arg');
+    if ($cmd->{'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'}})) {
+        $result .= ', ' if ($arg_nr);
+        $arg_nr++;
+      } else {
       $result .= ' '
         unless ($cmd->{'cmdname'} eq 'c' or $cmd->{'cmdname'} eq 'comment');
-      $result .= tree_to_texi ($arg);
     }
-    #die "Shouldn't have args: $cmd->{'cmdname'}\n";
+      $result .= tree_to_texi ($arg);
   }
   if ($cmd->{'cmdname'} eq 'verb') {
      $result .= $cmd->{'type'};
   }
-  if ($cmd_with_braces) {
-    $result .= '}';
+    #die "Shouldn't have args: $cmd->{'cmdname'}\n";
+    $result .= '}' if ($braces);
   }
-  elsif (defined($block_commands{$cmd->{'cmdname'}})) {
+  if (defined($block_commands{$cmd->{'cmdname'}})) {
     # there is an end of line if there is a comment, for example
     chomp($result);
     $result .= "\n";

Index: t/02coverage.t
===================================================================
RCS file: /sources/texinfo/texinfo/tp/t/02coverage.t,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -b -r1.3 -r1.4
--- t/02coverage.t      24 Sep 2010 21:38:57 -0000      1.3
+++ t/02coverage.t      25 Sep 2010 08:42:50 -0000      1.4
@@ -3,6 +3,107 @@
 require 't/test_utils.pl';
 
 my @test_cases = (
+['commands','@@ @TeX{} @
+@"e @address@hidden @~{a} @ringaccent a
address@hidden, b}
+
address@hidden index entry in text @LaTeX{}
+
address@hidden majorheading @b{in b}
+'],
+);
+my @todo = (
+['block_commands','
address@hidden
+in group
address@hidden group
+
address@hidden warning
+in quotation
address@hidden quotation
+
address@hidden a float, b float
+In float
+
address@hidden asis
address@hidden table item
address@hidden table itemx
+
+In table
address@hidden table
+
address@hidden caption
+
+in caption}
address@hidden float
+
address@hidden ddd
address@hidden +
address@hidden i--tem +
address@hidden itemize
+
address@hidden @bullet
address@hidden
+ b--ullet
address@hidden itemize
+
address@hidden @columnfractions 6 7
address@hidden mu--ltitable headitem @tab another tab
address@hidden mu--ltitable item @tab multitable tab
address@hidden comment in multitable
address@hidden mu--ltitable item 2 @tab multitable tab 2
address@hidden index entry within multitable
address@hidden lone mu--ltitable item
address@hidden multitable
+
address@hidden {truc} {bidule}
address@hidden truc @tab bidule
address@hidden multitable
+'],
+['preformatted','
address@hidden
+e--xample  some
+
+   text
address@hidden example
+
address@hidden
address@hidden code
address@hidden item in table in format
+
+in table in format
address@hidden vtable
address@hidden format
+'],
+['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 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
+']
 );
 
 our ($arg_test_case, $arg_generate, $arg_debug);

Index: t/manual_tree.pl
===================================================================
RCS file: /sources/texinfo/texinfo/tp/t/manual_tree.pl,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -b -r1.1 -r1.2
--- t/manual_tree.pl    20 Sep 2010 17:19:05 -0000      1.1
+++ t/manual_tree.pl    25 Sep 2010 08:42:50 -0000      1.2
@@ -11,7 +11,7 @@
                                {'cmdname' => 'b',
                                 'args' => [
                                             {
-                                              'type' => 'cmdarg',
+                                              'type' => 'brace_command_arg',
                                               'contents' => [
                                                             { 'text' => 'rr' }
                                                          ]
@@ -34,10 +34,13 @@
                                'contents' => [
                                                 { 'text' => "title" },
                                                 { 'cmdname' => 'verb',
-                                                  'args' => [
+                                                  'args' => [ {
+                                                               'contents' => [
                                                                { 'text' => ' 
in verb } ',
                                                                  'type' => 
'raw' }
                                                             ],
+                                                                'type' => 
'brace_command_arg',
+                                                            } ],
                                                   'type' => ':'
                                                 },
                                                 { 'cmdname' => '@'},

Index: t/results/coverage.pl
===================================================================
RCS file: /sources/texinfo/texinfo/tp/t/results/coverage.pl,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -b -r1.1 -r1.2
--- t/results/coverage.pl       23 Sep 2010 20:26:44 -0000      1.1
+++ t/results/coverage.pl       25 Sep 2010 08:42:50 -0000      1.2
@@ -1,4 +1,292 @@
 use vars qw(%result_texts %result_trees %result_errors);
 
+################ commands
+$result_trees{'commands'} = {
+  'contents' => [
+    {
+      'contents' => [
+        {
+          'cmdname' => '@',
+          'parent' => {}
+        },
+        {
+          'parent' => {},
+          'text' => ' '
+        },
+        {
+          'args' => [
+            {
+              'contents' => [],
+              'parent' => {},
+              'type' => 'brace_command_arg'
+            }
+          ],
+          'cmdname' => 'TeX',
+          'parent' => {}
+        },
+        {
+          'parent' => {},
+          'text' => ' '
+        },
+        {
+          'cmdname' => '
+',
+          'parent' => {}
+        },
+        {
+          'args' => [
+            {
+              'parent' => {},
+              'text' => 'e'
+            }
+          ],
+          'cmdname' => '"',
+          'parent' => {}
+        },
+        {
+          'parent' => {},
+          'text' => ' '
+        },
+        {
+          'args' => [
+            {
+              'contents' => [
+                {
+                  'args' => [
+                    {
+                      'contents' => [
+                        {
+                          'parent' => {},
+                          'text' => 'i'
+                        }
+                      ],
+                      'parent' => {},
+                      'type' => 'brace_command_arg'
+                    }
+                  ],
+                  'cmdname' => 'dotless',
+                  'parent' => {},
+                  'remaining_args' => 0
+                }
+              ],
+              'parent' => {},
+              'type' => 'brace_command_arg'
+            }
+          ],
+          'cmdname' => '^',
+          'parent' => {},
+          'remaining_args' => 0
+        },
+        {
+          'parent' => {},
+          'text' => ' '
+        },
+        {
+          'args' => [
+            {
+              'contents' => [
+                {
+                  'parent' => {},
+                  'text' => 'a'
+                }
+              ],
+              'parent' => {},
+              'type' => 'brace_command_arg'
+            }
+          ],
+          'cmdname' => '~',
+          'parent' => {},
+          'remaining_args' => 0
+        },
+        {
+          'parent' => {},
+          'text' => ' '
+        },
+        {
+          'args' => [
+            {
+              'parent' => {},
+              'text' => 'a',
+              'type' => 'space_command_arg'
+            }
+          ],
+          'cmdname' => 'ringaccent',
+          'parent' => {}
+        },
+        {
+          'parent' => {},
+          'text' => '
+'
+        },
+        {
+          'args' => [
+            {
+              'contents' => [
+                {
+                  'parent' => {},
+                  'text' => 'a'
+                }
+              ],
+              'parent' => {},
+              'type' => 'brace_command_arg'
+            },
+            {
+              'contents' => [
+                {
+                  'parent' => {},
+                  'text' => 'b'
+                }
+              ],
+              'parent' => {},
+              'type' => 'brace_command_arg'
+            }
+          ],
+          'cmdname' => 'email',
+          'parent' => {},
+          'remaining_args' => 0
+        },
+        {
+          'parent' => {},
+          'text' => '
+'
+        }
+      ],
+      'parent' => {},
+      'type' => 'paragraph'
+    },
+    {
+      'parent' => {},
+      'text' => '
+',
+      'type' => 'normal_line'
+    },
+    {
+      'contents' => [
+        {
+          'parent' => {},
+          'text' => ' index entry in text '
+        },
+        {
+          'args' => [
+            {
+              'contents' => [],
+              'parent' => {},
+              'type' => 'brace_command_arg'
+            }
+          ],
+          'cmdname' => 'LaTeX',
+          'parent' => {}
+        },
+        {
+          'parent' => {},
+          'text' => '
+'
+        }
+      ],
+      'parent' => {},
+      'type' => 'paragraph'
+    },
+    {
+      'parent' => {},
+      'text' => '
+',
+      'type' => 'normal_line'
+    },
+    {
+      'args' => [
+        {
+          'contents' => [
+            {
+              'parent' => {},
+              'text' => 'majorheading '
+            },
+            {
+              'args' => [
+                {
+                  'contents' => [
+                    {
+                      'parent' => {},
+                      'text' => 'in b'
+                    }
+                  ],
+                  'parent' => {},
+                  'type' => 'brace_command_arg'
+                }
+              ],
+              'cmdname' => 'b',
+              'parent' => {},
+              'remaining_args' => 0
+            },
+            {
+              'parent' => {},
+              'text' => '
+'
+            }
+          ],
+          'parent' => {},
+          'type' => 'misc_line_arg'
+        }
+      ],
+      'cmdname' => 'majorheading',
+      'parent' => {}
+    }
+  ]
+};
+$result_trees{'commands'}{'contents'}[0]{'contents'}[0]{'parent'} = 
$result_trees{'commands'}{'contents'}[0];
+$result_trees{'commands'}{'contents'}[0]{'contents'}[1]{'parent'} = 
$result_trees{'commands'}{'contents'}[0];
+$result_trees{'commands'}{'contents'}[0]{'contents'}[2]{'args'}[0]{'parent'} = 
$result_trees{'commands'}{'contents'}[0]{'contents'}[2];
+$result_trees{'commands'}{'contents'}[0]{'contents'}[2]{'parent'} = 
$result_trees{'commands'}{'contents'}[0];
+$result_trees{'commands'}{'contents'}[0]{'contents'}[3]{'parent'} = 
$result_trees{'commands'}{'contents'}[0];
+$result_trees{'commands'}{'contents'}[0]{'contents'}[4]{'parent'} = 
$result_trees{'commands'}{'contents'}[0];
+$result_trees{'commands'}{'contents'}[0]{'contents'}[5]{'args'}[0]{'parent'} = 
$result_trees{'commands'}{'contents'}[0]{'contents'}[5];
+$result_trees{'commands'}{'contents'}[0]{'contents'}[5]{'parent'} = 
$result_trees{'commands'}{'contents'}[0];
+$result_trees{'commands'}{'contents'}[0]{'contents'}[6]{'parent'} = 
$result_trees{'commands'}{'contents'}[0];
+$result_trees{'commands'}{'contents'}[0]{'contents'}[7]{'args'}[0]{'contents'}[0]{'args'}[0]{'contents'}[0]{'parent'}
 = 
$result_trees{'commands'}{'contents'}[0]{'contents'}[7]{'args'}[0]{'contents'}[0]{'args'}[0];
+$result_trees{'commands'}{'contents'}[0]{'contents'}[7]{'args'}[0]{'contents'}[0]{'args'}[0]{'parent'}
 = 
$result_trees{'commands'}{'contents'}[0]{'contents'}[7]{'args'}[0]{'contents'}[0];
+$result_trees{'commands'}{'contents'}[0]{'contents'}[7]{'args'}[0]{'contents'}[0]{'parent'}
 = $result_trees{'commands'}{'contents'}[0]{'contents'}[7]{'args'}[0];
+$result_trees{'commands'}{'contents'}[0]{'contents'}[7]{'args'}[0]{'parent'} = 
$result_trees{'commands'}{'contents'}[0]{'contents'}[7];
+$result_trees{'commands'}{'contents'}[0]{'contents'}[7]{'parent'} = 
$result_trees{'commands'}{'contents'}[0];
+$result_trees{'commands'}{'contents'}[0]{'contents'}[8]{'parent'} = 
$result_trees{'commands'}{'contents'}[0];
+$result_trees{'commands'}{'contents'}[0]{'contents'}[9]{'args'}[0]{'contents'}[0]{'parent'}
 = $result_trees{'commands'}{'contents'}[0]{'contents'}[9]{'args'}[0];
+$result_trees{'commands'}{'contents'}[0]{'contents'}[9]{'args'}[0]{'parent'} = 
$result_trees{'commands'}{'contents'}[0]{'contents'}[9];
+$result_trees{'commands'}{'contents'}[0]{'contents'}[9]{'parent'} = 
$result_trees{'commands'}{'contents'}[0];
+$result_trees{'commands'}{'contents'}[0]{'contents'}[10]{'parent'} = 
$result_trees{'commands'}{'contents'}[0];
+$result_trees{'commands'}{'contents'}[0]{'contents'}[11]{'args'}[0]{'parent'} 
= $result_trees{'commands'}{'contents'}[0]{'contents'}[11];
+$result_trees{'commands'}{'contents'}[0]{'contents'}[11]{'parent'} = 
$result_trees{'commands'}{'contents'}[0];
+$result_trees{'commands'}{'contents'}[0]{'contents'}[12]{'parent'} = 
$result_trees{'commands'}{'contents'}[0];
+$result_trees{'commands'}{'contents'}[0]{'contents'}[13]{'args'}[0]{'contents'}[0]{'parent'}
 = $result_trees{'commands'}{'contents'}[0]{'contents'}[13]{'args'}[0];
+$result_trees{'commands'}{'contents'}[0]{'contents'}[13]{'args'}[0]{'parent'} 
= $result_trees{'commands'}{'contents'}[0]{'contents'}[13];
+$result_trees{'commands'}{'contents'}[0]{'contents'}[13]{'args'}[1]{'contents'}[0]{'parent'}
 = $result_trees{'commands'}{'contents'}[0]{'contents'}[13]{'args'}[1];
+$result_trees{'commands'}{'contents'}[0]{'contents'}[13]{'args'}[1]{'parent'} 
= $result_trees{'commands'}{'contents'}[0]{'contents'}[13];
+$result_trees{'commands'}{'contents'}[0]{'contents'}[13]{'parent'} = 
$result_trees{'commands'}{'contents'}[0];
+$result_trees{'commands'}{'contents'}[0]{'contents'}[14]{'parent'} = 
$result_trees{'commands'}{'contents'}[0];
+$result_trees{'commands'}{'contents'}[0]{'parent'} = $result_trees{'commands'};
+$result_trees{'commands'}{'contents'}[1]{'parent'} = $result_trees{'commands'};
+$result_trees{'commands'}{'contents'}[2]{'contents'}[0]{'parent'} = 
$result_trees{'commands'}{'contents'}[2];
+$result_trees{'commands'}{'contents'}[2]{'contents'}[1]{'args'}[0]{'parent'} = 
$result_trees{'commands'}{'contents'}[2]{'contents'}[1];
+$result_trees{'commands'}{'contents'}[2]{'contents'}[1]{'parent'} = 
$result_trees{'commands'}{'contents'}[2];
+$result_trees{'commands'}{'contents'}[2]{'contents'}[2]{'parent'} = 
$result_trees{'commands'}{'contents'}[2];
+$result_trees{'commands'}{'contents'}[2]{'parent'} = $result_trees{'commands'};
+$result_trees{'commands'}{'contents'}[3]{'parent'} = $result_trees{'commands'};
+$result_trees{'commands'}{'contents'}[4]{'args'}[0]{'contents'}[0]{'parent'} = 
$result_trees{'commands'}{'contents'}[4]{'args'}[0];
+$result_trees{'commands'}{'contents'}[4]{'args'}[0]{'contents'}[1]{'args'}[0]{'contents'}[0]{'parent'}
 = 
$result_trees{'commands'}{'contents'}[4]{'args'}[0]{'contents'}[1]{'args'}[0];
+$result_trees{'commands'}{'contents'}[4]{'args'}[0]{'contents'}[1]{'args'}[0]{'parent'}
 = $result_trees{'commands'}{'contents'}[4]{'args'}[0]{'contents'}[1];
+$result_trees{'commands'}{'contents'}[4]{'args'}[0]{'contents'}[1]{'parent'} = 
$result_trees{'commands'}{'contents'}[4]{'args'}[0];
+$result_trees{'commands'}{'contents'}[4]{'args'}[0]{'contents'}[2]{'parent'} = 
$result_trees{'commands'}{'contents'}[4]{'args'}[0];
+$result_trees{'commands'}{'contents'}[4]{'args'}[0]{'parent'} = 
$result_trees{'commands'}{'contents'}[4];
+$result_trees{'commands'}{'contents'}[4]{'parent'} = $result_trees{'commands'};
+
+$result_texts{'commands'} = '@@ @TeX{} @
+@"e @address@hidden @~{a} @ringaccent a
address@hidden, b}
+
+ index entry in text @LaTeX{}
+
address@hidden majorheading @b{in b}
+';
+
+$result_errors{'commands'} = [];
+
+
 
 1;



reply via email to

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