[Top][All Lists]
[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;
- texinfo/tp Texinfo/Parser.pm t/02coverage.t t/m...,
Patrice Dumas <=