texinfo-commits
[Top][All Lists]
Advanced

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

texinfo/tp TODO Texinfo/Parser.pm t/03coverage_...


From: Patrice Dumas
Subject: texinfo/tp TODO Texinfo/Parser.pm t/03coverage_...
Date: Sat, 23 Oct 2010 15:36:54 +0000

CVSROOT:        /sources/texinfo
Module name:    texinfo
Changes by:     Patrice Dumas <pertusus>        10/10/23 15:36:53

Modified files:
        tp             : TODO 
        tp/Texinfo     : Parser.pm 
        tp/t           : 03coverage_braces.t 05paragraph.t 16raw.t 
                         18itemize.t 19def.t 30sectioning.t 50value.t 
                         55conditionals.t 57invalid_nestings.t 58alias.t 
                         60macro.t 70value_and_macro.t 
Added files:
        tp/t           : 20preformatted.t 
        tp/t/results/coverage_braces: brace_opened_no_command.pl 
                                      caption_not_closed.pl 
                                      code_not_closed.pl 
                                      unmatched_brace.pl 
        tp/t/results/invalid_nestings: bad_style_nesting.pl 
                                       bad_tab_nesting.pl 
                                       style_not_closed_before_first_node.pl 
                                       
style_not_closed_no_newline_root_commands.pl 
                                       style_not_closed_root_commands.pl 
        tp/t/results/paragraph: paragraph_in_style_command.pl 
        tp/t/results/preformatted: empty_line.pl 
                                   empty_line_style_command.pl 

Log message:
        Close paragraphs when there are empty lines, even if there are brace
        commands still opened.
        Tests for commands and paragraphs/preformatted and more bad nestings.

CVSWeb URLs:
http://cvs.savannah.gnu.org/viewcvs/texinfo/tp/TODO?cvsroot=texinfo&r1=1.30&r2=1.31
http://cvs.savannah.gnu.org/viewcvs/texinfo/tp/Texinfo/Parser.pm?cvsroot=texinfo&r1=1.94&r2=1.95
http://cvs.savannah.gnu.org/viewcvs/texinfo/tp/t/03coverage_braces.t?cvsroot=texinfo&r1=1.6&r2=1.7
http://cvs.savannah.gnu.org/viewcvs/texinfo/tp/t/05paragraph.t?cvsroot=texinfo&r1=1.7&r2=1.8
http://cvs.savannah.gnu.org/viewcvs/texinfo/tp/t/16raw.t?cvsroot=texinfo&r1=1.6&r2=1.7
http://cvs.savannah.gnu.org/viewcvs/texinfo/tp/t/18itemize.t?cvsroot=texinfo&r1=1.3&r2=1.4
http://cvs.savannah.gnu.org/viewcvs/texinfo/tp/t/19def.t?cvsroot=texinfo&r1=1.2&r2=1.3
http://cvs.savannah.gnu.org/viewcvs/texinfo/tp/t/30sectioning.t?cvsroot=texinfo&r1=1.2&r2=1.3
http://cvs.savannah.gnu.org/viewcvs/texinfo/tp/t/50value.t?cvsroot=texinfo&r1=1.8&r2=1.9
http://cvs.savannah.gnu.org/viewcvs/texinfo/tp/t/55conditionals.t?cvsroot=texinfo&r1=1.6&r2=1.7
http://cvs.savannah.gnu.org/viewcvs/texinfo/tp/t/57invalid_nestings.t?cvsroot=texinfo&r1=1.3&r2=1.4
http://cvs.savannah.gnu.org/viewcvs/texinfo/tp/t/58alias.t?cvsroot=texinfo&r1=1.2&r2=1.3
http://cvs.savannah.gnu.org/viewcvs/texinfo/tp/t/60macro.t?cvsroot=texinfo&r1=1.23&r2=1.24
http://cvs.savannah.gnu.org/viewcvs/texinfo/tp/t/70value_and_macro.t?cvsroot=texinfo&r1=1.1&r2=1.2
http://cvs.savannah.gnu.org/viewcvs/texinfo/tp/t/20preformatted.t?cvsroot=texinfo&rev=1.1
http://cvs.savannah.gnu.org/viewcvs/texinfo/tp/t/results/coverage_braces/brace_opened_no_command.pl?cvsroot=texinfo&rev=1.1
http://cvs.savannah.gnu.org/viewcvs/texinfo/tp/t/results/coverage_braces/caption_not_closed.pl?cvsroot=texinfo&rev=1.1
http://cvs.savannah.gnu.org/viewcvs/texinfo/tp/t/results/coverage_braces/code_not_closed.pl?cvsroot=texinfo&rev=1.1
http://cvs.savannah.gnu.org/viewcvs/texinfo/tp/t/results/coverage_braces/unmatched_brace.pl?cvsroot=texinfo&rev=1.1
http://cvs.savannah.gnu.org/viewcvs/texinfo/tp/t/results/invalid_nestings/bad_style_nesting.pl?cvsroot=texinfo&rev=1.1
http://cvs.savannah.gnu.org/viewcvs/texinfo/tp/t/results/invalid_nestings/bad_tab_nesting.pl?cvsroot=texinfo&rev=1.1
http://cvs.savannah.gnu.org/viewcvs/texinfo/tp/t/results/invalid_nestings/style_not_closed_before_first_node.pl?cvsroot=texinfo&rev=1.1
http://cvs.savannah.gnu.org/viewcvs/texinfo/tp/t/results/invalid_nestings/style_not_closed_no_newline_root_commands.pl?cvsroot=texinfo&rev=1.1
http://cvs.savannah.gnu.org/viewcvs/texinfo/tp/t/results/invalid_nestings/style_not_closed_root_commands.pl?cvsroot=texinfo&rev=1.1
http://cvs.savannah.gnu.org/viewcvs/texinfo/tp/t/results/paragraph/paragraph_in_style_command.pl?cvsroot=texinfo&rev=1.1
http://cvs.savannah.gnu.org/viewcvs/texinfo/tp/t/results/preformatted/empty_line.pl?cvsroot=texinfo&rev=1.1
http://cvs.savannah.gnu.org/viewcvs/texinfo/tp/t/results/preformatted/empty_line_style_command.pl?cvsroot=texinfo&rev=1.1

Patches:
Index: TODO
===================================================================
RCS file: /sources/texinfo/texinfo/tp/TODO,v
retrieving revision 1.30
retrieving revision 1.31
diff -u -b -r1.30 -r1.31
--- TODO        23 Oct 2010 14:28:39 -0000      1.30
+++ TODO        23 Oct 2010 15:36:53 -0000      1.31
@@ -57,6 +57,13 @@
 formatting/def_end_of_line_footnote.texi
 formatting/empty_deftype.texi
 formatting/def_cmds.texi (but printindex not tested)
+formatting/paragraph_in_samp.texi
 
 invalid/at_after_accent_command.texi
 invalid/bad_nesting.texi
+invalid/bad_style_nesting.texi
+invalid/bad_tab_nesting.texi
+invalid/brace_not_closed.texi
+invalid/caption_not_closed.texi
+invalid/code_not_closed_no_newline.texi
+invalid/code_not_closed.texi 

Index: Texinfo/Parser.pm
===================================================================
RCS file: /sources/texinfo/texinfo/tp/Texinfo/Parser.pm,v
retrieving revision 1.94
retrieving revision 1.95
diff -u -b -r1.94 -r1.95
--- Texinfo/Parser.pm   23 Oct 2010 14:28:39 -0000      1.94
+++ Texinfo/Parser.pm   23 Oct 2010 15:36:53 -0000      1.95
@@ -1458,6 +1458,10 @@
                                         'contents' => [] };
       $current = $current->{'contents'}->[-1];
       print STDERR "MENU: END DESCRIPTION, OPEN COMMENT\n" if 
($self->{'debug'});
+    } elsif (!$no_paragraph_contexts{$self->{'context_stack'}->[-1]}) {
+            # FIXME remove this if an empty line in a brace command
+            # is acceptable
+      $current = _end_paragraph($self, $current, $line_nr);
     }
 
   # end of a menu line.

Index: t/03coverage_braces.t
===================================================================
RCS file: /sources/texinfo/texinfo/tp/t/03coverage_braces.t,v
retrieving revision 1.6
retrieving revision 1.7
diff -u -b -r1.6 -r1.7
--- t/03coverage_braces.t       18 Oct 2010 00:16:52 -0000      1.6
+++ t/03coverage_braces.t       23 Oct 2010 15:36:53 -0000      1.7
@@ -15,7 +15,24 @@
 ['footnote_ending_on_empty_line','address@hidden in footnote.
 
 }'],
-['space_in_image','@image{ a ,bb, cc,dd ,e }. @image{ f }.']
+['space_in_image','@image{ a ,bb, cc,dd ,e }. @image{ f }.'],
+['unmatched_brace','@samp{Closing} @samp{ @} without opening macro }.}'],
+['brace_opened_no_command','address@hidden @anchor{truc}.
address@hidden'],
+['caption_not_closed',
+'@float Text
+
address@hidden closed caption
+
+The caption is closed as soon as @@end float is encountered, since
+as much as possible is closed in order to find the @@float beginning.
+
address@hidden float
+
address@hidden
+'],
+['code_not_closed','@code{in code']
+
 );
 
 our ($arg_test_case, $arg_generate, $arg_debug);

Index: t/05paragraph.t
===================================================================
RCS file: /sources/texinfo/texinfo/tp/t/05paragraph.t,v
retrieving revision 1.7
retrieving revision 1.8
diff -u -b -r1.7 -r1.8
--- t/05paragraph.t     26 Sep 2010 07:43:25 -0000      1.7
+++ t/05paragraph.t     23 Oct 2010 15:36:53 -0000      1.8
@@ -1,7 +1,4 @@
-#use strict;
-
-use Test::More;
-#BEGIN { plan tests => 8 };
+use strict;
 
 require 't/test_utils.pl';
 
@@ -32,7 +29,18 @@
 
 p before sp
 @sp 4
-inew p after sp']
+inew p after sp'],
+['paragraph_in_style_command',
+'a 2 paragraphs sample @samp{in first paragraph
+
+in second}.
+
+a 3 paragraphs sample @samp{in first paragraph
+
+in second
+
+in third}.
+']
 );
 
 our ($arg_test_case, $arg_generate, $arg_debug);

Index: t/16raw.t
===================================================================
RCS file: /sources/texinfo/texinfo/tp/t/16raw.t,v
retrieving revision 1.6
retrieving revision 1.7
diff -u -b -r1.6 -r1.7
--- t/16raw.t   28 Sep 2010 22:31:11 -0000      1.6
+++ t/16raw.t   23 Oct 2010 15:36:53 -0000      1.7
@@ -1,7 +1,5 @@
 use strict;
 
-use Test::More;
-
 require 't/test_utils.pl';
 
 my @test_cases = (

Index: t/18itemize.t
===================================================================
RCS file: /sources/texinfo/texinfo/tp/t/18itemize.t,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -b -r1.3 -r1.4
--- t/18itemize.t       23 Oct 2010 14:02:21 -0000      1.3
+++ t/18itemize.t       23 Oct 2010 15:36:53 -0000      1.4
@@ -1,7 +1,5 @@
 use strict;
 
-use Test::More;
-
 require 't/test_utils.pl';
 
 my @test_cases = (

Index: t/19def.t
===================================================================
RCS file: /sources/texinfo/texinfo/tp/t/19def.t,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -b -r1.2 -r1.3
--- t/19def.t   20 Oct 2010 21:43:32 -0000      1.2
+++ t/19def.t   23 Oct 2010 15:36:53 -0000      1.3
@@ -1,7 +1,5 @@
 use strict;
 
-use Test::More;
-
 require 't/test_utils.pl';
 
 my @test_cases = (

Index: t/30sectioning.t
===================================================================
RCS file: /sources/texinfo/texinfo/tp/t/30sectioning.t,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -b -r1.2 -r1.3
--- t/30sectioning.t    21 Oct 2010 22:16:40 -0000      1.2
+++ t/30sectioning.t    23 Oct 2010 15:36:53 -0000      1.3
@@ -1,7 +1,5 @@
 use strict;
 
-use Test::More;
-
 require 't/test_utils.pl';
 
 my @test_cases = (

Index: t/50value.t
===================================================================
RCS file: /sources/texinfo/texinfo/tp/t/50value.t,v
retrieving revision 1.8
retrieving revision 1.9
diff -u -b -r1.8 -r1.9
--- t/50value.t 16 Oct 2010 13:41:22 -0000      1.8
+++ t/50value.t 23 Oct 2010 15:36:53 -0000      1.9
@@ -1,7 +1,5 @@
 use strict;
 
-use Test::More;
-
 require 't/test_utils.pl';
 
 my @test_cases = (

Index: t/55conditionals.t
===================================================================
RCS file: /sources/texinfo/texinfo/tp/t/55conditionals.t,v
retrieving revision 1.6
retrieving revision 1.7
diff -u -b -r1.6 -r1.7
--- t/55conditionals.t  18 Oct 2010 00:16:52 -0000      1.6
+++ t/55conditionals.t  23 Oct 2010 15:36:53 -0000      1.7
@@ -1,7 +1,5 @@
 use strict;
 
-use Test::More;
-
 require 't/test_utils.pl';
 
 my @test_cases = (

Index: t/57invalid_nestings.t
===================================================================
RCS file: /sources/texinfo/texinfo/tp/t/57invalid_nestings.t,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -b -r1.3 -r1.4
--- t/57invalid_nestings.t      23 Oct 2010 14:28:40 -0000      1.3
+++ t/57invalid_nestings.t      23 Oct 2010 15:36:53 -0000      1.4
@@ -100,7 +100,56 @@
 @cartouche
 carouche
 @end float
+'],
+['bad_style_nesting',
+'@code{
address@hidden
+in quotation}
address@hidden quotation
+'],
+['bad_tab_nesting',
+'@multitable {truc} {bidule}
address@hidden truc
address@hidden@tab bidule}
address@hidden multitable
+'],
+['style_not_closed_no_newline_root_commands',
+'@node Top
+
address@hidden
+* chapter::
address@hidden menu
+
address@hidden closed
address@hidden chapter
address@hidden chapter
+
address@hidden not closed
address@hidden
+'],
+['style_not_closed_root_commands',
+'@node Top
+
address@hidden
+* chapter::
address@hidden menu
+
address@hidden closed
+
address@hidden chapter
address@hidden chapter
+
address@hidden not closed
+
address@hidden
+'],
+['style_not_closed_before_first_node',
+'@code{in code
+
address@hidden Top
+In node
 ']
+
 );
 
 our ($arg_test_case, $arg_generate, $arg_debug);

Index: t/58alias.t
===================================================================
RCS file: /sources/texinfo/texinfo/tp/t/58alias.t,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -b -r1.2 -r1.3
--- t/58alias.t 6 Oct 2010 22:26:12 -0000       1.2
+++ t/58alias.t 23 Oct 2010 15:36:53 -0000      1.3
@@ -1,7 +1,5 @@
 use strict;
 
-use Test::More;
-
 require 't/test_utils.pl';
 
 my @test_cases = (

Index: t/60macro.t
===================================================================
RCS file: /sources/texinfo/texinfo/tp/t/60macro.t,v
retrieving revision 1.23
retrieving revision 1.24
diff -u -b -r1.23 -r1.24
--- t/60macro.t 18 Oct 2010 00:16:52 -0000      1.23
+++ t/60macro.t 23 Oct 2010 15:36:53 -0000      1.24
@@ -1,7 +1,5 @@
 use strict;
 
-use Test::More;
-
 require 't/test_utils.pl';
 
 my @test_cases = (

Index: t/70value_and_macro.t
===================================================================
RCS file: /sources/texinfo/texinfo/tp/t/70value_and_macro.t,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -b -r1.1 -r1.2
--- t/70value_and_macro.t       2 Oct 2010 13:25:08 -0000       1.1
+++ t/70value_and_macro.t       23 Oct 2010 15:36:53 -0000      1.2
@@ -1,7 +1,5 @@
 use strict;
 
-use Test::More;
-
 require 't/test_utils.pl';
 
 my @test_cases = (

Index: t/20preformatted.t
===================================================================
RCS file: t/20preformatted.t
diff -N t/20preformatted.t
--- /dev/null   1 Jan 1970 00:00:00 -0000
+++ t/20preformatted.t  23 Oct 2010 15:36:53 -0000      1.1
@@ -0,0 +1,26 @@
+use strict;
+
+require 't/test_utils.pl';
+
+my @test_cases = (
+['empty_line',
+'@example
+example
+
+after empty line
address@hidden example
+'],
+['empty_line_style_command',
+'@example
+example @samp{in samp
+
+after empty} line
address@hidden example
+']
+);
+
+our ($arg_test_case, $arg_generate, $arg_debug);
+
+run_all ('preformatted', address@hidden, $arg_test_case,
+   $arg_generate, $arg_debug);
+

Index: t/results/coverage_braces/brace_opened_no_command.pl
===================================================================
RCS file: t/results/coverage_braces/brace_opened_no_command.pl
diff -N t/results/coverage_braces/brace_opened_no_command.pl
--- /dev/null   1 Jan 1970 00:00:00 -0000
+++ t/results/coverage_braces/brace_opened_no_command.pl        23 Oct 2010 
15:36:53 -0000      1.1
@@ -0,0 +1,76 @@
+use vars qw(%result_texis %result_texts %result_trees %result_errors);
+
+$result_trees{'brace_opened_no_command'} = {
+  'contents' => [
+    {
+      'contents' => [
+        {
+          'parent' => {},
+          'text' => 'anchortruc'
+        },
+        {
+          'cmdname' => '}',
+          'parent' => {}
+        },
+        {
+          'parent' => {},
+          'text' => ' '
+        },
+        {
+          'args' => [
+            {
+              'contents' => [
+                {
+                  'parent' => {},
+                  'text' => 'truc'
+                }
+              ],
+              'parent' => {},
+              'type' => 'brace_command_arg'
+            }
+          ],
+          'cmdname' => 'anchor',
+          'contents' => [],
+          'parent' => {}
+        },
+        {
+          'parent' => {},
+          'text' => '.
+'
+        }
+      ],
+      'parent' => {},
+      'type' => 'paragraph'
+    }
+  ],
+  'type' => 'text_root'
+};
+$result_trees{'brace_opened_no_command'}{'contents'}[0]{'contents'}[0]{'parent'}
 = $result_trees{'brace_opened_no_command'}{'contents'}[0];
+$result_trees{'brace_opened_no_command'}{'contents'}[0]{'contents'}[1]{'parent'}
 = $result_trees{'brace_opened_no_command'}{'contents'}[0];
+$result_trees{'brace_opened_no_command'}{'contents'}[0]{'contents'}[2]{'parent'}
 = $result_trees{'brace_opened_no_command'}{'contents'}[0];
+$result_trees{'brace_opened_no_command'}{'contents'}[0]{'contents'}[3]{'args'}[0]{'contents'}[0]{'parent'}
 = 
$result_trees{'brace_opened_no_command'}{'contents'}[0]{'contents'}[3]{'args'}[0];
+$result_trees{'brace_opened_no_command'}{'contents'}[0]{'contents'}[3]{'args'}[0]{'parent'}
 = $result_trees{'brace_opened_no_command'}{'contents'}[0]{'contents'}[3];
+$result_trees{'brace_opened_no_command'}{'contents'}[0]{'contents'}[3]{'parent'}
 = $result_trees{'brace_opened_no_command'}{'contents'}[0];
+$result_trees{'brace_opened_no_command'}{'contents'}[0]{'contents'}[4]{'parent'}
 = $result_trees{'brace_opened_no_command'}{'contents'}[0];
+$result_trees{'brace_opened_no_command'}{'contents'}[0]{'parent'} = 
$result_trees{'brace_opened_no_command'};
+
+$result_texis{'brace_opened_no_command'} = 'address@hidden @anchor{truc}.
+';
+
+
+$result_texts{'brace_opened_no_command'} = 'anchortruc} .
+';
+
+$result_errors{'brace_opened_no_command'} = [
+  {
+    'error_line' => ':1: Misplaced {
+',
+    'file_name' => '',
+    'line_nr' => 1,
+    'macro' => '',
+    'text' => 'Misplaced {',
+    'type' => 'error'
+  }
+];
+
+

Index: t/results/coverage_braces/caption_not_closed.pl
===================================================================
RCS file: t/results/coverage_braces/caption_not_closed.pl
diff -N t/results/coverage_braces/caption_not_closed.pl
--- /dev/null   1 Jan 1970 00:00:00 -0000
+++ t/results/coverage_braces/caption_not_closed.pl     23 Oct 2010 15:36:53 
-0000      1.1
@@ -0,0 +1,166 @@
+use vars qw(%result_texis %result_texts %result_trees %result_errors);
+
+$result_trees{'caption_not_closed'} = {
+  'contents' => [
+    {
+      'args' => [
+        {
+          'contents' => [
+            {
+              'parent' => {},
+              'text' => ' ',
+              'type' => 'empty_spaces_after_command'
+            },
+            {
+              'parent' => {},
+              'text' => 'Text
+'
+            }
+          ],
+          'parent' => {},
+          'type' => 'block_line_arg'
+        }
+      ],
+      'cmdname' => 'float',
+      'contents' => [
+        {
+          'parent' => {},
+          'text' => '
+',
+          'type' => 'empty_line'
+        },
+        {
+          'args' => [
+            {
+              'contents' => [
+                {
+                  'contents' => [
+                    {
+                      'parent' => {},
+                      'text' => 'Not closed caption
+'
+                    }
+                  ],
+                  'parent' => {},
+                  'type' => 'paragraph'
+                },
+                {
+                  'parent' => {},
+                  'text' => '
+',
+                  'type' => 'empty_line'
+                },
+                {
+                  'contents' => [
+                    {
+                      'parent' => {},
+                      'text' => 'The caption is closed as soon as '
+                    },
+                    {
+                      'cmdname' => '@',
+                      'parent' => {}
+                    },
+                    {
+                      'parent' => {},
+                      'text' => 'end float is encountered, since
+'
+                    },
+                    {
+                      'parent' => {},
+                      'text' => 'as much as possible is closed in order to 
find the '
+                    },
+                    {
+                      'cmdname' => '@',
+                      'parent' => {}
+                    },
+                    {
+                      'parent' => {},
+                      'text' => 'float beginning.
+'
+                    }
+                  ],
+                  'parent' => {},
+                  'type' => 'paragraph'
+                },
+                {
+                  'parent' => {},
+                  'text' => '
+',
+                  'type' => 'empty_line'
+                }
+              ],
+              'parent' => {}
+            }
+          ],
+          'cmdname' => 'caption',
+          'contents' => [],
+          'parent' => {}
+        }
+      ],
+      'parent' => {}
+    },
+    {
+      'parent' => {},
+      'text' => '
+',
+      'type' => 'empty_line_after_command'
+    },
+    {
+      'parent' => {},
+      'text' => '
+',
+      'type' => 'empty_line'
+    }
+  ],
+  'type' => 'text_root'
+};
+$result_trees{'caption_not_closed'}{'contents'}[0]{'args'}[0]{'contents'}[0]{'parent'}
 = $result_trees{'caption_not_closed'}{'contents'}[0]{'args'}[0];
+$result_trees{'caption_not_closed'}{'contents'}[0]{'args'}[0]{'contents'}[1]{'parent'}
 = $result_trees{'caption_not_closed'}{'contents'}[0]{'args'}[0];
+$result_trees{'caption_not_closed'}{'contents'}[0]{'args'}[0]{'parent'} = 
$result_trees{'caption_not_closed'}{'contents'}[0];
+$result_trees{'caption_not_closed'}{'contents'}[0]{'contents'}[0]{'parent'} = 
$result_trees{'caption_not_closed'}{'contents'}[0];
+$result_trees{'caption_not_closed'}{'contents'}[0]{'contents'}[1]{'args'}[0]{'contents'}[0]{'contents'}[0]{'parent'}
 = 
$result_trees{'caption_not_closed'}{'contents'}[0]{'contents'}[1]{'args'}[0]{'contents'}[0];
+$result_trees{'caption_not_closed'}{'contents'}[0]{'contents'}[1]{'args'}[0]{'contents'}[0]{'parent'}
 = $result_trees{'caption_not_closed'}{'contents'}[0]{'contents'}[1]{'args'}[0];
+$result_trees{'caption_not_closed'}{'contents'}[0]{'contents'}[1]{'args'}[0]{'contents'}[1]{'parent'}
 = $result_trees{'caption_not_closed'}{'contents'}[0]{'contents'}[1]{'args'}[0];
+$result_trees{'caption_not_closed'}{'contents'}[0]{'contents'}[1]{'args'}[0]{'contents'}[2]{'contents'}[0]{'parent'}
 = 
$result_trees{'caption_not_closed'}{'contents'}[0]{'contents'}[1]{'args'}[0]{'contents'}[2];
+$result_trees{'caption_not_closed'}{'contents'}[0]{'contents'}[1]{'args'}[0]{'contents'}[2]{'contents'}[1]{'parent'}
 = 
$result_trees{'caption_not_closed'}{'contents'}[0]{'contents'}[1]{'args'}[0]{'contents'}[2];
+$result_trees{'caption_not_closed'}{'contents'}[0]{'contents'}[1]{'args'}[0]{'contents'}[2]{'contents'}[2]{'parent'}
 = 
$result_trees{'caption_not_closed'}{'contents'}[0]{'contents'}[1]{'args'}[0]{'contents'}[2];
+$result_trees{'caption_not_closed'}{'contents'}[0]{'contents'}[1]{'args'}[0]{'contents'}[2]{'contents'}[3]{'parent'}
 = 
$result_trees{'caption_not_closed'}{'contents'}[0]{'contents'}[1]{'args'}[0]{'contents'}[2];
+$result_trees{'caption_not_closed'}{'contents'}[0]{'contents'}[1]{'args'}[0]{'contents'}[2]{'contents'}[4]{'parent'}
 = 
$result_trees{'caption_not_closed'}{'contents'}[0]{'contents'}[1]{'args'}[0]{'contents'}[2];
+$result_trees{'caption_not_closed'}{'contents'}[0]{'contents'}[1]{'args'}[0]{'contents'}[2]{'contents'}[5]{'parent'}
 = 
$result_trees{'caption_not_closed'}{'contents'}[0]{'contents'}[1]{'args'}[0]{'contents'}[2];
+$result_trees{'caption_not_closed'}{'contents'}[0]{'contents'}[1]{'args'}[0]{'contents'}[2]{'parent'}
 = $result_trees{'caption_not_closed'}{'contents'}[0]{'contents'}[1]{'args'}[0];
+$result_trees{'caption_not_closed'}{'contents'}[0]{'contents'}[1]{'args'}[0]{'contents'}[3]{'parent'}
 = $result_trees{'caption_not_closed'}{'contents'}[0]{'contents'}[1]{'args'}[0];
+$result_trees{'caption_not_closed'}{'contents'}[0]{'contents'}[1]{'args'}[0]{'parent'}
 = $result_trees{'caption_not_closed'}{'contents'}[0]{'contents'}[1];
+$result_trees{'caption_not_closed'}{'contents'}[0]{'contents'}[1]{'parent'} = 
$result_trees{'caption_not_closed'}{'contents'}[0];
+$result_trees{'caption_not_closed'}{'contents'}[0]{'parent'} = 
$result_trees{'caption_not_closed'};
+$result_trees{'caption_not_closed'}{'contents'}[1]{'parent'} = 
$result_trees{'caption_not_closed'};
+$result_trees{'caption_not_closed'}{'contents'}[2]{'parent'} = 
$result_trees{'caption_not_closed'};
+
+$result_texis{'caption_not_closed'} = '@float Text
+
address@hidden closed caption
+
+The caption is closed as soon as @@end float is encountered, since
+as much as possible is closed in order to find the @@float beginning.
+
address@hidden float
+
+';
+
+
+$result_texts{'caption_not_closed'} = '
+
+';
+
+$result_errors{'caption_not_closed'} = [
+  {
+    'error_line' => ':8: @caption missing close brace
+',
+    'file_name' => '',
+    'line_nr' => 8,
+    'macro' => '',
+    'text' => '@caption missing close brace',
+    'type' => 'error'
+  }
+];
+
+

Index: t/results/coverage_braces/code_not_closed.pl
===================================================================
RCS file: t/results/coverage_braces/code_not_closed.pl
diff -N t/results/coverage_braces/code_not_closed.pl
--- /dev/null   1 Jan 1970 00:00:00 -0000
+++ t/results/coverage_braces/code_not_closed.pl        23 Oct 2010 15:36:53 
-0000      1.1
@@ -0,0 +1,53 @@
+use vars qw(%result_texis %result_texts %result_trees %result_errors);
+
+$result_trees{'code_not_closed'} = {
+  'contents' => [
+    {
+      'contents' => [
+        {
+          'args' => [
+            {
+              'contents' => [
+                {
+                  'parent' => {},
+                  'text' => 'in code'
+                }
+              ],
+              'parent' => {},
+              'type' => 'brace_command_arg'
+            }
+          ],
+          'cmdname' => 'code',
+          'contents' => [],
+          'parent' => {}
+        }
+      ],
+      'parent' => {},
+      'type' => 'paragraph'
+    }
+  ],
+  'type' => 'text_root'
+};
+$result_trees{'code_not_closed'}{'contents'}[0]{'contents'}[0]{'args'}[0]{'contents'}[0]{'parent'}
 = $result_trees{'code_not_closed'}{'contents'}[0]{'contents'}[0]{'args'}[0];
+$result_trees{'code_not_closed'}{'contents'}[0]{'contents'}[0]{'args'}[0]{'parent'}
 = $result_trees{'code_not_closed'}{'contents'}[0]{'contents'}[0];
+$result_trees{'code_not_closed'}{'contents'}[0]{'contents'}[0]{'parent'} = 
$result_trees{'code_not_closed'}{'contents'}[0];
+$result_trees{'code_not_closed'}{'contents'}[0]{'parent'} = 
$result_trees{'code_not_closed'};
+
+$result_texis{'code_not_closed'} = '@code{in code}';
+
+
+$result_texts{'code_not_closed'} = 'in code';
+
+$result_errors{'code_not_closed'} = [
+  {
+    'error_line' => ':1: @code missing close brace
+',
+    'file_name' => '',
+    'line_nr' => 1,
+    'macro' => '',
+    'text' => '@code missing close brace',
+    'type' => 'error'
+  }
+];
+
+

Index: t/results/coverage_braces/unmatched_brace.pl
===================================================================
RCS file: t/results/coverage_braces/unmatched_brace.pl
diff -N t/results/coverage_braces/unmatched_brace.pl
--- /dev/null   1 Jan 1970 00:00:00 -0000
+++ t/results/coverage_braces/unmatched_brace.pl        23 Oct 2010 15:36:53 
-0000      1.1
@@ -0,0 +1,93 @@
+use vars qw(%result_texis %result_texts %result_trees %result_errors);
+
+$result_trees{'unmatched_brace'} = {
+  'contents' => [
+    {
+      'contents' => [
+        {
+          'args' => [
+            {
+              'contents' => [
+                {
+                  'parent' => {},
+                  'text' => 'Closing'
+                }
+              ],
+              'parent' => {},
+              'type' => 'brace_command_arg'
+            }
+          ],
+          'cmdname' => 'samp',
+          'contents' => [],
+          'parent' => {}
+        },
+        {
+          'parent' => {},
+          'text' => ' '
+        },
+        {
+          'args' => [
+            {
+              'contents' => [
+                {
+                  'parent' => {},
+                  'text' => ' '
+                },
+                {
+                  'cmdname' => '}',
+                  'parent' => {}
+                },
+                {
+                  'parent' => {},
+                  'text' => ' without opening macro '
+                }
+              ],
+              'parent' => {},
+              'type' => 'brace_command_arg'
+            }
+          ],
+          'cmdname' => 'samp',
+          'contents' => [],
+          'parent' => {}
+        },
+        {
+          'parent' => {},
+          'text' => '.'
+        }
+      ],
+      'parent' => {},
+      'type' => 'paragraph'
+    }
+  ],
+  'type' => 'text_root'
+};
+$result_trees{'unmatched_brace'}{'contents'}[0]{'contents'}[0]{'args'}[0]{'contents'}[0]{'parent'}
 = $result_trees{'unmatched_brace'}{'contents'}[0]{'contents'}[0]{'args'}[0];
+$result_trees{'unmatched_brace'}{'contents'}[0]{'contents'}[0]{'args'}[0]{'parent'}
 = $result_trees{'unmatched_brace'}{'contents'}[0]{'contents'}[0];
+$result_trees{'unmatched_brace'}{'contents'}[0]{'contents'}[0]{'parent'} = 
$result_trees{'unmatched_brace'}{'contents'}[0];
+$result_trees{'unmatched_brace'}{'contents'}[0]{'contents'}[1]{'parent'} = 
$result_trees{'unmatched_brace'}{'contents'}[0];
+$result_trees{'unmatched_brace'}{'contents'}[0]{'contents'}[2]{'args'}[0]{'contents'}[0]{'parent'}
 = $result_trees{'unmatched_brace'}{'contents'}[0]{'contents'}[2]{'args'}[0];
+$result_trees{'unmatched_brace'}{'contents'}[0]{'contents'}[2]{'args'}[0]{'contents'}[1]{'parent'}
 = $result_trees{'unmatched_brace'}{'contents'}[0]{'contents'}[2]{'args'}[0];
+$result_trees{'unmatched_brace'}{'contents'}[0]{'contents'}[2]{'args'}[0]{'contents'}[2]{'parent'}
 = $result_trees{'unmatched_brace'}{'contents'}[0]{'contents'}[2]{'args'}[0];
+$result_trees{'unmatched_brace'}{'contents'}[0]{'contents'}[2]{'args'}[0]{'parent'}
 = $result_trees{'unmatched_brace'}{'contents'}[0]{'contents'}[2];
+$result_trees{'unmatched_brace'}{'contents'}[0]{'contents'}[2]{'parent'} = 
$result_trees{'unmatched_brace'}{'contents'}[0];
+$result_trees{'unmatched_brace'}{'contents'}[0]{'contents'}[3]{'parent'} = 
$result_trees{'unmatched_brace'}{'contents'}[0];
+$result_trees{'unmatched_brace'}{'contents'}[0]{'parent'} = 
$result_trees{'unmatched_brace'};
+
+$result_texis{'unmatched_brace'} = '@samp{Closing} @samp{ @} without opening 
macro }.';
+
+
+$result_texts{'unmatched_brace'} = 'Closing  } without opening macro .';
+
+$result_errors{'unmatched_brace'} = [
+  {
+    'error_line' => ':1: Misplaced }
+',
+    'file_name' => '',
+    'line_nr' => 1,
+    'macro' => '',
+    'text' => 'Misplaced }',
+    'type' => 'error'
+  }
+];
+
+

Index: t/results/invalid_nestings/bad_style_nesting.pl
===================================================================
RCS file: t/results/invalid_nestings/bad_style_nesting.pl
diff -N t/results/invalid_nestings/bad_style_nesting.pl
--- /dev/null   1 Jan 1970 00:00:00 -0000
+++ t/results/invalid_nestings/bad_style_nesting.pl     23 Oct 2010 15:36:53 
-0000      1.1
@@ -0,0 +1,103 @@
+use vars qw(%result_texis %result_texts %result_trees %result_errors);
+
+$result_trees{'bad_style_nesting'} = {
+  'contents' => [
+    {
+      'contents' => [
+        {
+          'args' => [
+            {
+              'contents' => [
+                {
+                  'parent' => {},
+                  'text' => '
+'
+                }
+              ],
+              'parent' => {},
+              'type' => 'brace_command_arg'
+            }
+          ],
+          'cmdname' => 'code',
+          'contents' => [],
+          'parent' => {}
+        }
+      ],
+      'parent' => {},
+      'type' => 'paragraph'
+    },
+    {
+      'cmdname' => 'quotation',
+      'contents' => [
+        {
+          'parent' => {},
+          'text' => '
+',
+          'type' => 'empty_line_after_command'
+        },
+        {
+          'contents' => [
+            {
+              'parent' => {},
+              'text' => 'in quotation
+'
+            }
+          ],
+          'parent' => {},
+          'type' => 'paragraph'
+        }
+      ],
+      'parent' => {}
+    },
+    {
+      'parent' => {},
+      'text' => '
+',
+      'type' => 'empty_line_after_command'
+    }
+  ],
+  'type' => 'text_root'
+};
+$result_trees{'bad_style_nesting'}{'contents'}[0]{'contents'}[0]{'args'}[0]{'contents'}[0]{'parent'}
 = $result_trees{'bad_style_nesting'}{'contents'}[0]{'contents'}[0]{'args'}[0];
+$result_trees{'bad_style_nesting'}{'contents'}[0]{'contents'}[0]{'args'}[0]{'parent'}
 = $result_trees{'bad_style_nesting'}{'contents'}[0]{'contents'}[0];
+$result_trees{'bad_style_nesting'}{'contents'}[0]{'contents'}[0]{'parent'} = 
$result_trees{'bad_style_nesting'}{'contents'}[0];
+$result_trees{'bad_style_nesting'}{'contents'}[0]{'parent'} = 
$result_trees{'bad_style_nesting'};
+$result_trees{'bad_style_nesting'}{'contents'}[1]{'contents'}[0]{'parent'} = 
$result_trees{'bad_style_nesting'}{'contents'}[1];
+$result_trees{'bad_style_nesting'}{'contents'}[1]{'contents'}[1]{'contents'}[0]{'parent'}
 = $result_trees{'bad_style_nesting'}{'contents'}[1]{'contents'}[1];
+$result_trees{'bad_style_nesting'}{'contents'}[1]{'contents'}[1]{'parent'} = 
$result_trees{'bad_style_nesting'}{'contents'}[1];
+$result_trees{'bad_style_nesting'}{'contents'}[1]{'parent'} = 
$result_trees{'bad_style_nesting'};
+$result_trees{'bad_style_nesting'}{'contents'}[2]{'parent'} = 
$result_trees{'bad_style_nesting'};
+
+$result_texis{'bad_style_nesting'} = '@code{
address@hidden
+in quotation
address@hidden quotation
+';
+
+
+$result_texts{'bad_style_nesting'} = '
+in quotation
+';
+
+$result_errors{'bad_style_nesting'} = [
+  {
+    'error_line' => ':2: @code missing close brace
+',
+    'file_name' => '',
+    'line_nr' => 2,
+    'macro' => '',
+    'text' => '@code missing close brace',
+    'type' => 'error'
+  },
+  {
+    'error_line' => ':3: Misplaced }
+',
+    'file_name' => '',
+    'line_nr' => 3,
+    'macro' => '',
+    'text' => 'Misplaced }',
+    'type' => 'error'
+  }
+];
+
+

Index: t/results/invalid_nestings/bad_tab_nesting.pl
===================================================================
RCS file: t/results/invalid_nestings/bad_tab_nesting.pl
diff -N t/results/invalid_nestings/bad_tab_nesting.pl
--- /dev/null   1 Jan 1970 00:00:00 -0000
+++ t/results/invalid_nestings/bad_tab_nesting.pl       23 Oct 2010 15:36:53 
-0000      1.1
@@ -0,0 +1,196 @@
+use vars qw(%result_texis %result_texts %result_trees %result_errors);
+
+$result_trees{'bad_tab_nesting'} = {
+  'contents' => [
+    {
+      'args' => [
+        {
+          'contents' => [
+            {
+              'parent' => {},
+              'text' => ' ',
+              'type' => 'empty_spaces_after_command'
+            },
+            {
+              'contents' => [
+                {
+                  'parent' => {},
+                  'text' => 'truc'
+                }
+              ],
+              'parent' => {},
+              'type' => 'bracketed'
+            },
+            {
+              'parent' => {},
+              'text' => ' '
+            },
+            {
+              'contents' => [
+                {
+                  'parent' => {},
+                  'text' => 'bidule'
+                }
+              ],
+              'parent' => {},
+              'type' => 'bracketed'
+            },
+            {
+              'parent' => {},
+              'text' => '
+'
+            }
+          ],
+          'parent' => {},
+          'type' => 'block_line_arg'
+        }
+      ],
+      'cmdname' => 'multitable',
+      'contents' => [
+        {
+          'contents' => [],
+          'parent' => {},
+          'type' => 'before_item'
+        },
+        {
+          'contents' => [
+            {
+              'cmdname' => 'item',
+              'contents' => [
+                {
+                  'parent' => {},
+                  'text' => ' ',
+                  'type' => 'empty_spaces_after_command'
+                },
+                {
+                  'contents' => [
+                    {
+                      'parent' => {},
+                      'text' => 'truc
+'
+                    },
+                    {
+                      'args' => [
+                        {
+                          'contents' => [],
+                          'parent' => {},
+                          'type' => 'brace_command_arg'
+                        }
+                      ],
+                      'cmdname' => 'code',
+                      'contents' => [],
+                      'parent' => {}
+                    }
+                  ],
+                  'parent' => {},
+                  'type' => 'paragraph'
+                }
+              ],
+              'parent' => {}
+            },
+            {
+              'cmdname' => 'tab',
+              'contents' => [
+                {
+                  'parent' => {},
+                  'text' => ' ',
+                  'type' => 'empty_spaces_after_command'
+                },
+                {
+                  'contents' => [
+                    {
+                      'parent' => {},
+                      'text' => 'bidule
+'
+                    }
+                  ],
+                  'parent' => {},
+                  'type' => 'paragraph'
+                }
+              ],
+              'parent' => {}
+            }
+          ],
+          'parent' => {},
+          'special' => {
+            'cell_number' => 2
+          },
+          'type' => 'row'
+        }
+      ],
+      'parent' => {},
+      'special' => {
+        'max_columns' => 2,
+        'prototypes' => [
+          {},
+          {}
+        ]
+      }
+    },
+    {
+      'parent' => {},
+      'text' => '
+',
+      'type' => 'empty_line_after_command'
+    }
+  ],
+  'type' => 'text_root'
+};
+$result_trees{'bad_tab_nesting'}{'contents'}[0]{'args'}[0]{'contents'}[0]{'parent'}
 = $result_trees{'bad_tab_nesting'}{'contents'}[0]{'args'}[0];
+$result_trees{'bad_tab_nesting'}{'contents'}[0]{'args'}[0]{'contents'}[1]{'contents'}[0]{'parent'}
 = $result_trees{'bad_tab_nesting'}{'contents'}[0]{'args'}[0]{'contents'}[1];
+$result_trees{'bad_tab_nesting'}{'contents'}[0]{'args'}[0]{'contents'}[1]{'parent'}
 = $result_trees{'bad_tab_nesting'}{'contents'}[0]{'args'}[0];
+$result_trees{'bad_tab_nesting'}{'contents'}[0]{'args'}[0]{'contents'}[2]{'parent'}
 = $result_trees{'bad_tab_nesting'}{'contents'}[0]{'args'}[0];
+$result_trees{'bad_tab_nesting'}{'contents'}[0]{'args'}[0]{'contents'}[3]{'contents'}[0]{'parent'}
 = $result_trees{'bad_tab_nesting'}{'contents'}[0]{'args'}[0]{'contents'}[3];
+$result_trees{'bad_tab_nesting'}{'contents'}[0]{'args'}[0]{'contents'}[3]{'parent'}
 = $result_trees{'bad_tab_nesting'}{'contents'}[0]{'args'}[0];
+$result_trees{'bad_tab_nesting'}{'contents'}[0]{'args'}[0]{'contents'}[4]{'parent'}
 = $result_trees{'bad_tab_nesting'}{'contents'}[0]{'args'}[0];
+$result_trees{'bad_tab_nesting'}{'contents'}[0]{'args'}[0]{'parent'} = 
$result_trees{'bad_tab_nesting'}{'contents'}[0];
+$result_trees{'bad_tab_nesting'}{'contents'}[0]{'contents'}[0]{'parent'} = 
$result_trees{'bad_tab_nesting'}{'contents'}[0];
+$result_trees{'bad_tab_nesting'}{'contents'}[0]{'contents'}[1]{'contents'}[0]{'contents'}[0]{'parent'}
 = 
$result_trees{'bad_tab_nesting'}{'contents'}[0]{'contents'}[1]{'contents'}[0];
+$result_trees{'bad_tab_nesting'}{'contents'}[0]{'contents'}[1]{'contents'}[0]{'contents'}[1]{'contents'}[0]{'parent'}
 = 
$result_trees{'bad_tab_nesting'}{'contents'}[0]{'contents'}[1]{'contents'}[0]{'contents'}[1];
+$result_trees{'bad_tab_nesting'}{'contents'}[0]{'contents'}[1]{'contents'}[0]{'contents'}[1]{'contents'}[1]{'args'}[0]{'parent'}
 = 
$result_trees{'bad_tab_nesting'}{'contents'}[0]{'contents'}[1]{'contents'}[0]{'contents'}[1]{'contents'}[1];
+$result_trees{'bad_tab_nesting'}{'contents'}[0]{'contents'}[1]{'contents'}[0]{'contents'}[1]{'contents'}[1]{'parent'}
 = 
$result_trees{'bad_tab_nesting'}{'contents'}[0]{'contents'}[1]{'contents'}[0]{'contents'}[1];
+$result_trees{'bad_tab_nesting'}{'contents'}[0]{'contents'}[1]{'contents'}[0]{'contents'}[1]{'parent'}
 = 
$result_trees{'bad_tab_nesting'}{'contents'}[0]{'contents'}[1]{'contents'}[0];
+$result_trees{'bad_tab_nesting'}{'contents'}[0]{'contents'}[1]{'contents'}[0]{'parent'}
 = $result_trees{'bad_tab_nesting'}{'contents'}[0]{'contents'}[1];
+$result_trees{'bad_tab_nesting'}{'contents'}[0]{'contents'}[1]{'contents'}[1]{'contents'}[0]{'parent'}
 = 
$result_trees{'bad_tab_nesting'}{'contents'}[0]{'contents'}[1]{'contents'}[1];
+$result_trees{'bad_tab_nesting'}{'contents'}[0]{'contents'}[1]{'contents'}[1]{'contents'}[1]{'contents'}[0]{'parent'}
 = 
$result_trees{'bad_tab_nesting'}{'contents'}[0]{'contents'}[1]{'contents'}[1]{'contents'}[1];
+$result_trees{'bad_tab_nesting'}{'contents'}[0]{'contents'}[1]{'contents'}[1]{'contents'}[1]{'parent'}
 = 
$result_trees{'bad_tab_nesting'}{'contents'}[0]{'contents'}[1]{'contents'}[1];
+$result_trees{'bad_tab_nesting'}{'contents'}[0]{'contents'}[1]{'contents'}[1]{'parent'}
 = $result_trees{'bad_tab_nesting'}{'contents'}[0]{'contents'}[1];
+$result_trees{'bad_tab_nesting'}{'contents'}[0]{'contents'}[1]{'parent'} = 
$result_trees{'bad_tab_nesting'}{'contents'}[0];
+$result_trees{'bad_tab_nesting'}{'contents'}[0]{'parent'} = 
$result_trees{'bad_tab_nesting'};
+$result_trees{'bad_tab_nesting'}{'contents'}[0]{'special'}{'prototypes'}[0] = 
$result_trees{'bad_tab_nesting'}{'contents'}[0]{'args'}[0]{'contents'}[1];
+$result_trees{'bad_tab_nesting'}{'contents'}[0]{'special'}{'prototypes'}[1] = 
$result_trees{'bad_tab_nesting'}{'contents'}[0]{'args'}[0]{'contents'}[3];
+$result_trees{'bad_tab_nesting'}{'contents'}[1]{'parent'} = 
$result_trees{'bad_tab_nesting'};
+
+$result_texis{'bad_tab_nesting'} = '@multitable {truc} {bidule}
address@hidden truc
address@hidden@tab bidule
address@hidden multitable
+';
+
+
+$result_texts{'bad_tab_nesting'} = 'truc
+bidule
+';
+
+$result_errors{'bad_tab_nesting'} = [
+  {
+    'error_line' => ':3: @code missing close brace
+',
+    'file_name' => '',
+    'line_nr' => 3,
+    'macro' => '',
+    'text' => '@code missing close brace',
+    'type' => 'error'
+  },
+  {
+    'error_line' => ':3: Misplaced }
+',
+    'file_name' => '',
+    'line_nr' => 3,
+    'macro' => '',
+    'text' => 'Misplaced }',
+    'type' => 'error'
+  }
+];
+
+

Index: t/results/invalid_nestings/style_not_closed_before_first_node.pl
===================================================================
RCS file: t/results/invalid_nestings/style_not_closed_before_first_node.pl
diff -N t/results/invalid_nestings/style_not_closed_before_first_node.pl
--- /dev/null   1 Jan 1970 00:00:00 -0000
+++ t/results/invalid_nestings/style_not_closed_before_first_node.pl    23 Oct 
2010 15:36:53 -0000      1.1
@@ -0,0 +1,120 @@
+use vars qw(%result_texis %result_texts %result_trees %result_errors);
+
+$result_trees{'style_not_closed_before_first_node'} = {
+  'contents' => [
+    {
+      'contents' => [
+        {
+          'contents' => [
+            {
+              'args' => [
+                {
+                  'contents' => [
+                    {
+                      'parent' => {},
+                      'text' => 'in code
+'
+                    },
+                    {
+                      'parent' => {},
+                      'text' => '
+',
+                      'type' => 'empty_line'
+                    }
+                  ],
+                  'parent' => {},
+                  'type' => 'brace_command_arg'
+                }
+              ],
+              'cmdname' => 'code',
+              'contents' => [],
+              'parent' => {}
+            }
+          ],
+          'parent' => {},
+          'type' => 'paragraph'
+        }
+      ],
+      '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' => [
+        {
+          'contents' => [
+            {
+              'parent' => {},
+              'text' => 'In node
+'
+            }
+          ],
+          'parent' => {},
+          'type' => 'paragraph'
+        }
+      ],
+      'parent' => {}
+    }
+  ],
+  'type' => 'document_root'
+};
+$result_trees{'style_not_closed_before_first_node'}{'contents'}[0]{'contents'}[0]{'contents'}[0]{'args'}[0]{'contents'}[0]{'parent'}
 = 
$result_trees{'style_not_closed_before_first_node'}{'contents'}[0]{'contents'}[0]{'contents'}[0]{'args'}[0];
+$result_trees{'style_not_closed_before_first_node'}{'contents'}[0]{'contents'}[0]{'contents'}[0]{'args'}[0]{'contents'}[1]{'parent'}
 = 
$result_trees{'style_not_closed_before_first_node'}{'contents'}[0]{'contents'}[0]{'contents'}[0]{'args'}[0];
+$result_trees{'style_not_closed_before_first_node'}{'contents'}[0]{'contents'}[0]{'contents'}[0]{'args'}[0]{'parent'}
 = 
$result_trees{'style_not_closed_before_first_node'}{'contents'}[0]{'contents'}[0]{'contents'}[0];
+$result_trees{'style_not_closed_before_first_node'}{'contents'}[0]{'contents'}[0]{'contents'}[0]{'parent'}
 = 
$result_trees{'style_not_closed_before_first_node'}{'contents'}[0]{'contents'}[0];
+$result_trees{'style_not_closed_before_first_node'}{'contents'}[0]{'contents'}[0]{'parent'}
 = $result_trees{'style_not_closed_before_first_node'}{'contents'}[0];
+$result_trees{'style_not_closed_before_first_node'}{'contents'}[1]{'args'}[0]{'contents'}[0]{'parent'}
 = 
$result_trees{'style_not_closed_before_first_node'}{'contents'}[1]{'args'}[0];
+$result_trees{'style_not_closed_before_first_node'}{'contents'}[1]{'args'}[0]{'contents'}[1]{'parent'}
 = 
$result_trees{'style_not_closed_before_first_node'}{'contents'}[1]{'args'}[0];
+$result_trees{'style_not_closed_before_first_node'}{'contents'}[1]{'args'}[0]{'contents'}[2]{'parent'}
 = 
$result_trees{'style_not_closed_before_first_node'}{'contents'}[1]{'args'}[0];
+$result_trees{'style_not_closed_before_first_node'}{'contents'}[1]{'args'}[0]{'parent'}
 = $result_trees{'style_not_closed_before_first_node'}{'contents'}[1];
+$result_trees{'style_not_closed_before_first_node'}{'contents'}[1]{'contents'}[0]{'contents'}[0]{'parent'}
 = 
$result_trees{'style_not_closed_before_first_node'}{'contents'}[1]{'contents'}[0];
+$result_trees{'style_not_closed_before_first_node'}{'contents'}[1]{'contents'}[0]{'parent'}
 = $result_trees{'style_not_closed_before_first_node'}{'contents'}[1];
+$result_trees{'style_not_closed_before_first_node'}{'contents'}[1]{'parent'} = 
$result_trees{'style_not_closed_before_first_node'};
+
+$result_texis{'style_not_closed_before_first_node'} = '@code{in code
+
address@hidden Top
+In node
+';
+
+
+$result_texts{'style_not_closed_before_first_node'} = 'in code
+
+In node
+';
+
+$result_errors{'style_not_closed_before_first_node'} = [
+  {
+    'error_line' => ':2: @code missing close brace
+',
+    'file_name' => '',
+    'line_nr' => 2,
+    'macro' => '',
+    'text' => '@code missing close brace',
+    'type' => 'error'
+  }
+];
+
+

Index: t/results/invalid_nestings/style_not_closed_no_newline_root_commands.pl
===================================================================
RCS file: 
t/results/invalid_nestings/style_not_closed_no_newline_root_commands.pl
diff -N t/results/invalid_nestings/style_not_closed_no_newline_root_commands.pl
--- /dev/null   1 Jan 1970 00:00:00 -0000
+++ t/results/invalid_nestings/style_not_closed_no_newline_root_commands.pl     
23 Oct 2010 15:36:53 -0000      1.1
@@ -0,0 +1,306 @@
+use vars qw(%result_texis %result_texts %result_trees %result_errors);
+
+$result_trees{'style_not_closed_no_newline_root_commands'} = {
+  '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' => 'chapter'
+                    }
+                  ],
+                  'parent' => {},
+                  'type' => 'menu_entry_node'
+                },
+                {
+                  'parent' => {},
+                  'text' => '::',
+                  'type' => 'menu_entry_separator'
+                },
+                {
+                  'contents' => [
+                    {
+                      'parent' => {},
+                      'text' => '
+'
+                    }
+                  ],
+                  'parent' => {},
+                  'type' => 'menu_entry_description'
+                }
+              ],
+              'parent' => {},
+              'type' => 'menu_entry'
+            }
+          ],
+          'parent' => {}
+        },
+        {
+          'parent' => {},
+          'text' => '
+',
+          'type' => 'empty_line_after_command'
+        },
+        {
+          'parent' => {},
+          'text' => '
+',
+          'type' => 'empty_line'
+        },
+        {
+          'contents' => [
+            {
+              'args' => [
+                {
+                  'contents' => [
+                    {
+                      'parent' => {},
+                      'text' => 'not closed
+'
+                    }
+                  ],
+                  'parent' => {},
+                  'type' => 'brace_command_arg'
+                }
+              ],
+              'cmdname' => 'code',
+              'contents' => [],
+              'parent' => {}
+            }
+          ],
+          'parent' => {},
+          'type' => 'paragraph'
+        }
+      ],
+      'parent' => {}
+    },
+    {
+      'args' => [
+        {
+          'contents' => [
+            {
+              'parent' => {},
+              'text' => ' ',
+              'type' => 'empty_spaces_after_command'
+            },
+            {
+              'parent' => {},
+              'text' => 'chapter'
+            },
+            {
+              'parent' => {},
+              'text' => '
+',
+              'type' => 'spaces_at_end'
+            }
+          ],
+          'parent' => {},
+          'type' => 'misc_line_arg'
+        }
+      ],
+      'cmdname' => 'node',
+      'contents' => [],
+      'parent' => {}
+    },
+    {
+      'args' => [
+        {
+          'contents' => [
+            {
+              'parent' => {},
+              'text' => ' ',
+              'type' => 'empty_spaces_after_command'
+            },
+            {
+              'parent' => {},
+              'text' => 'chapter'
+            },
+            {
+              'parent' => {},
+              'text' => '
+',
+              'type' => 'spaces_at_end'
+            }
+          ],
+          'parent' => {},
+          'type' => 'misc_line_arg'
+        }
+      ],
+      'cmdname' => 'chapter',
+      'contents' => [
+        {
+          'parent' => {},
+          'text' => '
+',
+          'type' => 'empty_line'
+        },
+        {
+          'contents' => [
+            {
+              'args' => [
+                {
+                  'contents' => [
+                    {
+                      'parent' => {},
+                      'text' => 'still not closed
+'
+                    }
+                  ],
+                  'parent' => {},
+                  'type' => 'brace_command_arg'
+                }
+              ],
+              'cmdname' => 'code',
+              'contents' => [],
+              'parent' => {}
+            }
+          ],
+          'parent' => {},
+          'type' => 'paragraph'
+        }
+      ],
+      'parent' => {}
+    },
+    {
+      'cmdname' => 'bye',
+      'parent' => {}
+    }
+  ],
+  'type' => 'document_root'
+};
+$result_trees{'style_not_closed_no_newline_root_commands'}{'contents'}[1]{'args'}[0]{'contents'}[0]{'parent'}
 = 
$result_trees{'style_not_closed_no_newline_root_commands'}{'contents'}[1]{'args'}[0];
+$result_trees{'style_not_closed_no_newline_root_commands'}{'contents'}[1]{'args'}[0]{'contents'}[1]{'parent'}
 = 
$result_trees{'style_not_closed_no_newline_root_commands'}{'contents'}[1]{'args'}[0];
+$result_trees{'style_not_closed_no_newline_root_commands'}{'contents'}[1]{'args'}[0]{'contents'}[2]{'parent'}
 = 
$result_trees{'style_not_closed_no_newline_root_commands'}{'contents'}[1]{'args'}[0];
+$result_trees{'style_not_closed_no_newline_root_commands'}{'contents'}[1]{'args'}[0]{'parent'}
 = $result_trees{'style_not_closed_no_newline_root_commands'}{'contents'}[1];
+$result_trees{'style_not_closed_no_newline_root_commands'}{'contents'}[1]{'contents'}[0]{'parent'}
 = $result_trees{'style_not_closed_no_newline_root_commands'}{'contents'}[1];
+$result_trees{'style_not_closed_no_newline_root_commands'}{'contents'}[1]{'contents'}[1]{'contents'}[0]{'parent'}
 = 
$result_trees{'style_not_closed_no_newline_root_commands'}{'contents'}[1]{'contents'}[1];
+$result_trees{'style_not_closed_no_newline_root_commands'}{'contents'}[1]{'contents'}[1]{'contents'}[1]{'args'}[0]{'parent'}
 = 
$result_trees{'style_not_closed_no_newline_root_commands'}{'contents'}[1]{'contents'}[1]{'contents'}[1];
+$result_trees{'style_not_closed_no_newline_root_commands'}{'contents'}[1]{'contents'}[1]{'contents'}[1]{'args'}[1]{'contents'}[0]{'parent'}
 = 
$result_trees{'style_not_closed_no_newline_root_commands'}{'contents'}[1]{'contents'}[1]{'contents'}[1]{'args'}[1];
+$result_trees{'style_not_closed_no_newline_root_commands'}{'contents'}[1]{'contents'}[1]{'contents'}[1]{'args'}[1]{'parent'}
 = 
$result_trees{'style_not_closed_no_newline_root_commands'}{'contents'}[1]{'contents'}[1]{'contents'}[1];
+$result_trees{'style_not_closed_no_newline_root_commands'}{'contents'}[1]{'contents'}[1]{'contents'}[1]{'args'}[2]{'parent'}
 = 
$result_trees{'style_not_closed_no_newline_root_commands'}{'contents'}[1]{'contents'}[1]{'contents'}[1];
+$result_trees{'style_not_closed_no_newline_root_commands'}{'contents'}[1]{'contents'}[1]{'contents'}[1]{'args'}[3]{'contents'}[0]{'parent'}
 = 
$result_trees{'style_not_closed_no_newline_root_commands'}{'contents'}[1]{'contents'}[1]{'contents'}[1]{'args'}[3];
+$result_trees{'style_not_closed_no_newline_root_commands'}{'contents'}[1]{'contents'}[1]{'contents'}[1]{'args'}[3]{'parent'}
 = 
$result_trees{'style_not_closed_no_newline_root_commands'}{'contents'}[1]{'contents'}[1]{'contents'}[1];
+$result_trees{'style_not_closed_no_newline_root_commands'}{'contents'}[1]{'contents'}[1]{'contents'}[1]{'parent'}
 = 
$result_trees{'style_not_closed_no_newline_root_commands'}{'contents'}[1]{'contents'}[1];
+$result_trees{'style_not_closed_no_newline_root_commands'}{'contents'}[1]{'contents'}[1]{'parent'}
 = $result_trees{'style_not_closed_no_newline_root_commands'}{'contents'}[1];
+$result_trees{'style_not_closed_no_newline_root_commands'}{'contents'}[1]{'contents'}[2]{'parent'}
 = $result_trees{'style_not_closed_no_newline_root_commands'}{'contents'}[1];
+$result_trees{'style_not_closed_no_newline_root_commands'}{'contents'}[1]{'contents'}[3]{'parent'}
 = $result_trees{'style_not_closed_no_newline_root_commands'}{'contents'}[1];
+$result_trees{'style_not_closed_no_newline_root_commands'}{'contents'}[1]{'contents'}[4]{'contents'}[0]{'args'}[0]{'contents'}[0]{'parent'}
 = 
$result_trees{'style_not_closed_no_newline_root_commands'}{'contents'}[1]{'contents'}[4]{'contents'}[0]{'args'}[0];
+$result_trees{'style_not_closed_no_newline_root_commands'}{'contents'}[1]{'contents'}[4]{'contents'}[0]{'args'}[0]{'parent'}
 = 
$result_trees{'style_not_closed_no_newline_root_commands'}{'contents'}[1]{'contents'}[4]{'contents'}[0];
+$result_trees{'style_not_closed_no_newline_root_commands'}{'contents'}[1]{'contents'}[4]{'contents'}[0]{'parent'}
 = 
$result_trees{'style_not_closed_no_newline_root_commands'}{'contents'}[1]{'contents'}[4];
+$result_trees{'style_not_closed_no_newline_root_commands'}{'contents'}[1]{'contents'}[4]{'parent'}
 = $result_trees{'style_not_closed_no_newline_root_commands'}{'contents'}[1];
+$result_trees{'style_not_closed_no_newline_root_commands'}{'contents'}[1]{'parent'}
 = $result_trees{'style_not_closed_no_newline_root_commands'};
+$result_trees{'style_not_closed_no_newline_root_commands'}{'contents'}[2]{'args'}[0]{'contents'}[0]{'parent'}
 = 
$result_trees{'style_not_closed_no_newline_root_commands'}{'contents'}[2]{'args'}[0];
+$result_trees{'style_not_closed_no_newline_root_commands'}{'contents'}[2]{'args'}[0]{'contents'}[1]{'parent'}
 = 
$result_trees{'style_not_closed_no_newline_root_commands'}{'contents'}[2]{'args'}[0];
+$result_trees{'style_not_closed_no_newline_root_commands'}{'contents'}[2]{'args'}[0]{'contents'}[2]{'parent'}
 = 
$result_trees{'style_not_closed_no_newline_root_commands'}{'contents'}[2]{'args'}[0];
+$result_trees{'style_not_closed_no_newline_root_commands'}{'contents'}[2]{'args'}[0]{'parent'}
 = $result_trees{'style_not_closed_no_newline_root_commands'}{'contents'}[2];
+$result_trees{'style_not_closed_no_newline_root_commands'}{'contents'}[2]{'parent'}
 = $result_trees{'style_not_closed_no_newline_root_commands'};
+$result_trees{'style_not_closed_no_newline_root_commands'}{'contents'}[3]{'args'}[0]{'contents'}[0]{'parent'}
 = 
$result_trees{'style_not_closed_no_newline_root_commands'}{'contents'}[3]{'args'}[0];
+$result_trees{'style_not_closed_no_newline_root_commands'}{'contents'}[3]{'args'}[0]{'contents'}[1]{'parent'}
 = 
$result_trees{'style_not_closed_no_newline_root_commands'}{'contents'}[3]{'args'}[0];
+$result_trees{'style_not_closed_no_newline_root_commands'}{'contents'}[3]{'args'}[0]{'contents'}[2]{'parent'}
 = 
$result_trees{'style_not_closed_no_newline_root_commands'}{'contents'}[3]{'args'}[0];
+$result_trees{'style_not_closed_no_newline_root_commands'}{'contents'}[3]{'args'}[0]{'parent'}
 = $result_trees{'style_not_closed_no_newline_root_commands'}{'contents'}[3];
+$result_trees{'style_not_closed_no_newline_root_commands'}{'contents'}[3]{'contents'}[0]{'parent'}
 = $result_trees{'style_not_closed_no_newline_root_commands'}{'contents'}[3];
+$result_trees{'style_not_closed_no_newline_root_commands'}{'contents'}[3]{'contents'}[1]{'contents'}[0]{'args'}[0]{'contents'}[0]{'parent'}
 = 
$result_trees{'style_not_closed_no_newline_root_commands'}{'contents'}[3]{'contents'}[1]{'contents'}[0]{'args'}[0];
+$result_trees{'style_not_closed_no_newline_root_commands'}{'contents'}[3]{'contents'}[1]{'contents'}[0]{'args'}[0]{'parent'}
 = 
$result_trees{'style_not_closed_no_newline_root_commands'}{'contents'}[3]{'contents'}[1]{'contents'}[0];
+$result_trees{'style_not_closed_no_newline_root_commands'}{'contents'}[3]{'contents'}[1]{'contents'}[0]{'parent'}
 = 
$result_trees{'style_not_closed_no_newline_root_commands'}{'contents'}[3]{'contents'}[1];
+$result_trees{'style_not_closed_no_newline_root_commands'}{'contents'}[3]{'contents'}[1]{'parent'}
 = $result_trees{'style_not_closed_no_newline_root_commands'}{'contents'}[3];
+$result_trees{'style_not_closed_no_newline_root_commands'}{'contents'}[3]{'parent'}
 = $result_trees{'style_not_closed_no_newline_root_commands'};
+$result_trees{'style_not_closed_no_newline_root_commands'}{'contents'}[4]{'parent'}
 = $result_trees{'style_not_closed_no_newline_root_commands'};
+
+$result_texis{'style_not_closed_no_newline_root_commands'} = '@node Top
+
address@hidden
+* chapter::
address@hidden menu
+
address@hidden closed
address@hidden chapter
address@hidden chapter
+
address@hidden not closed
address@hidden
+';
+
+
+$result_texts{'style_not_closed_no_newline_root_commands'} = '
+* chapter::
+
+not closed
+chapter
+
+still not closed
+';
+
+$result_errors{'style_not_closed_no_newline_root_commands'} = [
+  {
+    'error_line' => ':8: @code missing close brace
+',
+    'file_name' => '',
+    'line_nr' => 8,
+    'macro' => '',
+    'text' => '@code missing close brace',
+    'type' => 'error'
+  },
+  {
+    'error_line' => ':12: @code missing close brace
+',
+    'file_name' => '',
+    'line_nr' => 12,
+    'macro' => '',
+    'text' => '@code missing close brace',
+    'type' => 'error'
+  }
+];
+
+

Index: t/results/invalid_nestings/style_not_closed_root_commands.pl
===================================================================
RCS file: t/results/invalid_nestings/style_not_closed_root_commands.pl
diff -N t/results/invalid_nestings/style_not_closed_root_commands.pl
--- /dev/null   1 Jan 1970 00:00:00 -0000
+++ t/results/invalid_nestings/style_not_closed_root_commands.pl        23 Oct 
2010 15:36:53 -0000      1.1
@@ -0,0 +1,324 @@
+use vars qw(%result_texis %result_texts %result_trees %result_errors);
+
+$result_trees{'style_not_closed_root_commands'} = {
+  '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' => 'chapter'
+                    }
+                  ],
+                  'parent' => {},
+                  'type' => 'menu_entry_node'
+                },
+                {
+                  'parent' => {},
+                  'text' => '::',
+                  'type' => 'menu_entry_separator'
+                },
+                {
+                  'contents' => [
+                    {
+                      'parent' => {},
+                      'text' => '
+'
+                    }
+                  ],
+                  'parent' => {},
+                  'type' => 'menu_entry_description'
+                }
+              ],
+              'parent' => {},
+              'type' => 'menu_entry'
+            }
+          ],
+          'parent' => {}
+        },
+        {
+          'parent' => {},
+          'text' => '
+',
+          'type' => 'empty_line_after_command'
+        },
+        {
+          'parent' => {},
+          'text' => '
+',
+          'type' => 'empty_line'
+        },
+        {
+          'contents' => [
+            {
+              'args' => [
+                {
+                  'contents' => [
+                    {
+                      'parent' => {},
+                      'text' => 'not closed
+'
+                    },
+                    {
+                      'parent' => {},
+                      'text' => '
+',
+                      'type' => 'empty_line'
+                    }
+                  ],
+                  'parent' => {},
+                  'type' => 'brace_command_arg'
+                }
+              ],
+              'cmdname' => 'code',
+              'contents' => [],
+              'parent' => {}
+            }
+          ],
+          'parent' => {},
+          'type' => 'paragraph'
+        }
+      ],
+      'parent' => {}
+    },
+    {
+      'args' => [
+        {
+          'contents' => [
+            {
+              'parent' => {},
+              'text' => ' ',
+              'type' => 'empty_spaces_after_command'
+            },
+            {
+              'parent' => {},
+              'text' => 'chapter'
+            },
+            {
+              'parent' => {},
+              'text' => '
+',
+              'type' => 'spaces_at_end'
+            }
+          ],
+          'parent' => {},
+          'type' => 'misc_line_arg'
+        }
+      ],
+      'cmdname' => 'node',
+      'contents' => [],
+      'parent' => {}
+    },
+    {
+      'args' => [
+        {
+          'contents' => [
+            {
+              'parent' => {},
+              'text' => ' ',
+              'type' => 'empty_spaces_after_command'
+            },
+            {
+              'parent' => {},
+              'text' => 'chapter'
+            },
+            {
+              'parent' => {},
+              'text' => '
+',
+              'type' => 'spaces_at_end'
+            }
+          ],
+          'parent' => {},
+          'type' => 'misc_line_arg'
+        }
+      ],
+      'cmdname' => 'chapter',
+      'contents' => [
+        {
+          'parent' => {},
+          'text' => '
+',
+          'type' => 'empty_line'
+        },
+        {
+          'contents' => [
+            {
+              'args' => [
+                {
+                  'contents' => [
+                    {
+                      'parent' => {},
+                      'text' => 'still not closed
+'
+                    },
+                    {
+                      'parent' => {},
+                      'text' => '
+',
+                      'type' => 'empty_line'
+                    }
+                  ],
+                  'parent' => {},
+                  'type' => 'brace_command_arg'
+                }
+              ],
+              'cmdname' => 'code',
+              'contents' => [],
+              'parent' => {}
+            }
+          ],
+          'parent' => {},
+          'type' => 'paragraph'
+        }
+      ],
+      'parent' => {}
+    },
+    {
+      'cmdname' => 'bye',
+      'parent' => {}
+    }
+  ],
+  'type' => 'document_root'
+};
+$result_trees{'style_not_closed_root_commands'}{'contents'}[1]{'args'}[0]{'contents'}[0]{'parent'}
 = $result_trees{'style_not_closed_root_commands'}{'contents'}[1]{'args'}[0];
+$result_trees{'style_not_closed_root_commands'}{'contents'}[1]{'args'}[0]{'contents'}[1]{'parent'}
 = $result_trees{'style_not_closed_root_commands'}{'contents'}[1]{'args'}[0];
+$result_trees{'style_not_closed_root_commands'}{'contents'}[1]{'args'}[0]{'contents'}[2]{'parent'}
 = $result_trees{'style_not_closed_root_commands'}{'contents'}[1]{'args'}[0];
+$result_trees{'style_not_closed_root_commands'}{'contents'}[1]{'args'}[0]{'parent'}
 = $result_trees{'style_not_closed_root_commands'}{'contents'}[1];
+$result_trees{'style_not_closed_root_commands'}{'contents'}[1]{'contents'}[0]{'parent'}
 = $result_trees{'style_not_closed_root_commands'}{'contents'}[1];
+$result_trees{'style_not_closed_root_commands'}{'contents'}[1]{'contents'}[1]{'contents'}[0]{'parent'}
 = 
$result_trees{'style_not_closed_root_commands'}{'contents'}[1]{'contents'}[1];
+$result_trees{'style_not_closed_root_commands'}{'contents'}[1]{'contents'}[1]{'contents'}[1]{'args'}[0]{'parent'}
 = 
$result_trees{'style_not_closed_root_commands'}{'contents'}[1]{'contents'}[1]{'contents'}[1];
+$result_trees{'style_not_closed_root_commands'}{'contents'}[1]{'contents'}[1]{'contents'}[1]{'args'}[1]{'contents'}[0]{'parent'}
 = 
$result_trees{'style_not_closed_root_commands'}{'contents'}[1]{'contents'}[1]{'contents'}[1]{'args'}[1];
+$result_trees{'style_not_closed_root_commands'}{'contents'}[1]{'contents'}[1]{'contents'}[1]{'args'}[1]{'parent'}
 = 
$result_trees{'style_not_closed_root_commands'}{'contents'}[1]{'contents'}[1]{'contents'}[1];
+$result_trees{'style_not_closed_root_commands'}{'contents'}[1]{'contents'}[1]{'contents'}[1]{'args'}[2]{'parent'}
 = 
$result_trees{'style_not_closed_root_commands'}{'contents'}[1]{'contents'}[1]{'contents'}[1];
+$result_trees{'style_not_closed_root_commands'}{'contents'}[1]{'contents'}[1]{'contents'}[1]{'args'}[3]{'contents'}[0]{'parent'}
 = 
$result_trees{'style_not_closed_root_commands'}{'contents'}[1]{'contents'}[1]{'contents'}[1]{'args'}[3];
+$result_trees{'style_not_closed_root_commands'}{'contents'}[1]{'contents'}[1]{'contents'}[1]{'args'}[3]{'parent'}
 = 
$result_trees{'style_not_closed_root_commands'}{'contents'}[1]{'contents'}[1]{'contents'}[1];
+$result_trees{'style_not_closed_root_commands'}{'contents'}[1]{'contents'}[1]{'contents'}[1]{'parent'}
 = 
$result_trees{'style_not_closed_root_commands'}{'contents'}[1]{'contents'}[1];
+$result_trees{'style_not_closed_root_commands'}{'contents'}[1]{'contents'}[1]{'parent'}
 = $result_trees{'style_not_closed_root_commands'}{'contents'}[1];
+$result_trees{'style_not_closed_root_commands'}{'contents'}[1]{'contents'}[2]{'parent'}
 = $result_trees{'style_not_closed_root_commands'}{'contents'}[1];
+$result_trees{'style_not_closed_root_commands'}{'contents'}[1]{'contents'}[3]{'parent'}
 = $result_trees{'style_not_closed_root_commands'}{'contents'}[1];
+$result_trees{'style_not_closed_root_commands'}{'contents'}[1]{'contents'}[4]{'contents'}[0]{'args'}[0]{'contents'}[0]{'parent'}
 = 
$result_trees{'style_not_closed_root_commands'}{'contents'}[1]{'contents'}[4]{'contents'}[0]{'args'}[0];
+$result_trees{'style_not_closed_root_commands'}{'contents'}[1]{'contents'}[4]{'contents'}[0]{'args'}[0]{'contents'}[1]{'parent'}
 = 
$result_trees{'style_not_closed_root_commands'}{'contents'}[1]{'contents'}[4]{'contents'}[0]{'args'}[0];
+$result_trees{'style_not_closed_root_commands'}{'contents'}[1]{'contents'}[4]{'contents'}[0]{'args'}[0]{'parent'}
 = 
$result_trees{'style_not_closed_root_commands'}{'contents'}[1]{'contents'}[4]{'contents'}[0];
+$result_trees{'style_not_closed_root_commands'}{'contents'}[1]{'contents'}[4]{'contents'}[0]{'parent'}
 = 
$result_trees{'style_not_closed_root_commands'}{'contents'}[1]{'contents'}[4];
+$result_trees{'style_not_closed_root_commands'}{'contents'}[1]{'contents'}[4]{'parent'}
 = $result_trees{'style_not_closed_root_commands'}{'contents'}[1];
+$result_trees{'style_not_closed_root_commands'}{'contents'}[1]{'parent'} = 
$result_trees{'style_not_closed_root_commands'};
+$result_trees{'style_not_closed_root_commands'}{'contents'}[2]{'args'}[0]{'contents'}[0]{'parent'}
 = $result_trees{'style_not_closed_root_commands'}{'contents'}[2]{'args'}[0];
+$result_trees{'style_not_closed_root_commands'}{'contents'}[2]{'args'}[0]{'contents'}[1]{'parent'}
 = $result_trees{'style_not_closed_root_commands'}{'contents'}[2]{'args'}[0];
+$result_trees{'style_not_closed_root_commands'}{'contents'}[2]{'args'}[0]{'contents'}[2]{'parent'}
 = $result_trees{'style_not_closed_root_commands'}{'contents'}[2]{'args'}[0];
+$result_trees{'style_not_closed_root_commands'}{'contents'}[2]{'args'}[0]{'parent'}
 = $result_trees{'style_not_closed_root_commands'}{'contents'}[2];
+$result_trees{'style_not_closed_root_commands'}{'contents'}[2]{'parent'} = 
$result_trees{'style_not_closed_root_commands'};
+$result_trees{'style_not_closed_root_commands'}{'contents'}[3]{'args'}[0]{'contents'}[0]{'parent'}
 = $result_trees{'style_not_closed_root_commands'}{'contents'}[3]{'args'}[0];
+$result_trees{'style_not_closed_root_commands'}{'contents'}[3]{'args'}[0]{'contents'}[1]{'parent'}
 = $result_trees{'style_not_closed_root_commands'}{'contents'}[3]{'args'}[0];
+$result_trees{'style_not_closed_root_commands'}{'contents'}[3]{'args'}[0]{'contents'}[2]{'parent'}
 = $result_trees{'style_not_closed_root_commands'}{'contents'}[3]{'args'}[0];
+$result_trees{'style_not_closed_root_commands'}{'contents'}[3]{'args'}[0]{'parent'}
 = $result_trees{'style_not_closed_root_commands'}{'contents'}[3];
+$result_trees{'style_not_closed_root_commands'}{'contents'}[3]{'contents'}[0]{'parent'}
 = $result_trees{'style_not_closed_root_commands'}{'contents'}[3];
+$result_trees{'style_not_closed_root_commands'}{'contents'}[3]{'contents'}[1]{'contents'}[0]{'args'}[0]{'contents'}[0]{'parent'}
 = 
$result_trees{'style_not_closed_root_commands'}{'contents'}[3]{'contents'}[1]{'contents'}[0]{'args'}[0];
+$result_trees{'style_not_closed_root_commands'}{'contents'}[3]{'contents'}[1]{'contents'}[0]{'args'}[0]{'contents'}[1]{'parent'}
 = 
$result_trees{'style_not_closed_root_commands'}{'contents'}[3]{'contents'}[1]{'contents'}[0]{'args'}[0];
+$result_trees{'style_not_closed_root_commands'}{'contents'}[3]{'contents'}[1]{'contents'}[0]{'args'}[0]{'parent'}
 = 
$result_trees{'style_not_closed_root_commands'}{'contents'}[3]{'contents'}[1]{'contents'}[0];
+$result_trees{'style_not_closed_root_commands'}{'contents'}[3]{'contents'}[1]{'contents'}[0]{'parent'}
 = 
$result_trees{'style_not_closed_root_commands'}{'contents'}[3]{'contents'}[1];
+$result_trees{'style_not_closed_root_commands'}{'contents'}[3]{'contents'}[1]{'parent'}
 = $result_trees{'style_not_closed_root_commands'}{'contents'}[3];
+$result_trees{'style_not_closed_root_commands'}{'contents'}[3]{'parent'} = 
$result_trees{'style_not_closed_root_commands'};
+$result_trees{'style_not_closed_root_commands'}{'contents'}[4]{'parent'} = 
$result_trees{'style_not_closed_root_commands'};
+
+$result_texis{'style_not_closed_root_commands'} = '@node Top
+
address@hidden
+* chapter::
address@hidden menu
+
address@hidden closed
+
address@hidden chapter
address@hidden chapter
+
address@hidden not closed
+
address@hidden
+';
+
+
+$result_texts{'style_not_closed_root_commands'} = '
+* chapter::
+
+not closed
+
+chapter
+
+still not closed
+
+';
+
+$result_errors{'style_not_closed_root_commands'} = [
+  {
+    'error_line' => ':8: @code missing close brace
+',
+    'file_name' => '',
+    'line_nr' => 8,
+    'macro' => '',
+    'text' => '@code missing close brace',
+    'type' => 'error'
+  },
+  {
+    'error_line' => ':13: @code missing close brace
+',
+    'file_name' => '',
+    'line_nr' => 13,
+    'macro' => '',
+    'text' => '@code missing close brace',
+    'type' => 'error'
+  }
+];
+
+

Index: t/results/paragraph/paragraph_in_style_command.pl
===================================================================
RCS file: t/results/paragraph/paragraph_in_style_command.pl
diff -N t/results/paragraph/paragraph_in_style_command.pl
--- /dev/null   1 Jan 1970 00:00:00 -0000
+++ t/results/paragraph/paragraph_in_style_command.pl   23 Oct 2010 15:36:53 
-0000      1.1
@@ -0,0 +1,204 @@
+use vars qw(%result_texis %result_texts %result_trees %result_errors);
+
+$result_trees{'paragraph_in_style_command'} = {
+  'contents' => [
+    {
+      'contents' => [
+        {
+          'parent' => {},
+          'text' => 'a 2 paragraphs sample '
+        },
+        {
+          'args' => [
+            {
+              'contents' => [
+                {
+                  'parent' => {},
+                  'text' => 'in first paragraph
+'
+                },
+                {
+                  'parent' => {},
+                  'text' => '
+',
+                  'type' => 'empty_line'
+                }
+              ],
+              'parent' => {},
+              'type' => 'brace_command_arg'
+            }
+          ],
+          'cmdname' => 'samp',
+          'contents' => [],
+          'parent' => {}
+        }
+      ],
+      'parent' => {},
+      'type' => 'paragraph'
+    },
+    {
+      'contents' => [
+        {
+          'parent' => {},
+          'text' => 'in second.
+'
+        }
+      ],
+      'parent' => {},
+      'type' => 'paragraph'
+    },
+    {
+      'parent' => {},
+      'text' => '
+',
+      'type' => 'empty_line'
+    },
+    {
+      'contents' => [
+        {
+          'parent' => {},
+          'text' => 'a 3 paragraphs sample '
+        },
+        {
+          'args' => [
+            {
+              'contents' => [
+                {
+                  'parent' => {},
+                  'text' => 'in first paragraph
+'
+                },
+                {
+                  'parent' => {},
+                  'text' => '
+',
+                  'type' => 'empty_line'
+                }
+              ],
+              'parent' => {},
+              'type' => 'brace_command_arg'
+            }
+          ],
+          'cmdname' => 'samp',
+          'contents' => [],
+          'parent' => {}
+        }
+      ],
+      'parent' => {},
+      'type' => 'paragraph'
+    },
+    {
+      'contents' => [
+        {
+          'parent' => {},
+          'text' => 'in second
+'
+        }
+      ],
+      'parent' => {},
+      'type' => 'paragraph'
+    },
+    {
+      'parent' => {},
+      'text' => '
+',
+      'type' => 'empty_line'
+    },
+    {
+      'contents' => [
+        {
+          'parent' => {},
+          'text' => 'in third.
+'
+        }
+      ],
+      'parent' => {},
+      'type' => 'paragraph'
+    }
+  ],
+  'type' => 'text_root'
+};
+$result_trees{'paragraph_in_style_command'}{'contents'}[0]{'contents'}[0]{'parent'}
 = $result_trees{'paragraph_in_style_command'}{'contents'}[0];
+$result_trees{'paragraph_in_style_command'}{'contents'}[0]{'contents'}[1]{'args'}[0]{'contents'}[0]{'parent'}
 = 
$result_trees{'paragraph_in_style_command'}{'contents'}[0]{'contents'}[1]{'args'}[0];
+$result_trees{'paragraph_in_style_command'}{'contents'}[0]{'contents'}[1]{'args'}[0]{'contents'}[1]{'parent'}
 = 
$result_trees{'paragraph_in_style_command'}{'contents'}[0]{'contents'}[1]{'args'}[0];
+$result_trees{'paragraph_in_style_command'}{'contents'}[0]{'contents'}[1]{'args'}[0]{'parent'}
 = $result_trees{'paragraph_in_style_command'}{'contents'}[0]{'contents'}[1];
+$result_trees{'paragraph_in_style_command'}{'contents'}[0]{'contents'}[1]{'parent'}
 = $result_trees{'paragraph_in_style_command'}{'contents'}[0];
+$result_trees{'paragraph_in_style_command'}{'contents'}[0]{'parent'} = 
$result_trees{'paragraph_in_style_command'};
+$result_trees{'paragraph_in_style_command'}{'contents'}[1]{'contents'}[0]{'parent'}
 = $result_trees{'paragraph_in_style_command'}{'contents'}[1];
+$result_trees{'paragraph_in_style_command'}{'contents'}[1]{'parent'} = 
$result_trees{'paragraph_in_style_command'};
+$result_trees{'paragraph_in_style_command'}{'contents'}[2]{'parent'} = 
$result_trees{'paragraph_in_style_command'};
+$result_trees{'paragraph_in_style_command'}{'contents'}[3]{'contents'}[0]{'parent'}
 = $result_trees{'paragraph_in_style_command'}{'contents'}[3];
+$result_trees{'paragraph_in_style_command'}{'contents'}[3]{'contents'}[1]{'args'}[0]{'contents'}[0]{'parent'}
 = 
$result_trees{'paragraph_in_style_command'}{'contents'}[3]{'contents'}[1]{'args'}[0];
+$result_trees{'paragraph_in_style_command'}{'contents'}[3]{'contents'}[1]{'args'}[0]{'contents'}[1]{'parent'}
 = 
$result_trees{'paragraph_in_style_command'}{'contents'}[3]{'contents'}[1]{'args'}[0];
+$result_trees{'paragraph_in_style_command'}{'contents'}[3]{'contents'}[1]{'args'}[0]{'parent'}
 = $result_trees{'paragraph_in_style_command'}{'contents'}[3]{'contents'}[1];
+$result_trees{'paragraph_in_style_command'}{'contents'}[3]{'contents'}[1]{'parent'}
 = $result_trees{'paragraph_in_style_command'}{'contents'}[3];
+$result_trees{'paragraph_in_style_command'}{'contents'}[3]{'parent'} = 
$result_trees{'paragraph_in_style_command'};
+$result_trees{'paragraph_in_style_command'}{'contents'}[4]{'contents'}[0]{'parent'}
 = $result_trees{'paragraph_in_style_command'}{'contents'}[4];
+$result_trees{'paragraph_in_style_command'}{'contents'}[4]{'parent'} = 
$result_trees{'paragraph_in_style_command'};
+$result_trees{'paragraph_in_style_command'}{'contents'}[5]{'parent'} = 
$result_trees{'paragraph_in_style_command'};
+$result_trees{'paragraph_in_style_command'}{'contents'}[6]{'contents'}[0]{'parent'}
 = $result_trees{'paragraph_in_style_command'}{'contents'}[6];
+$result_trees{'paragraph_in_style_command'}{'contents'}[6]{'parent'} = 
$result_trees{'paragraph_in_style_command'};
+
+$result_texis{'paragraph_in_style_command'} = 'a 2 paragraphs sample @samp{in 
first paragraph
+
+}in second.
+
+a 3 paragraphs sample @samp{in first paragraph
+
+}in second
+
+in third.
+';
+
+
+$result_texts{'paragraph_in_style_command'} = 'a 2 paragraphs sample in first 
paragraph
+
+in second.
+
+a 3 paragraphs sample in first paragraph
+
+in second
+
+in third.
+';
+
+$result_errors{'paragraph_in_style_command'} = [
+  {
+    'error_line' => ':2: @samp missing close brace
+',
+    'file_name' => '',
+    'line_nr' => 2,
+    'macro' => '',
+    'text' => '@samp missing close brace',
+    'type' => 'error'
+  },
+  {
+    'error_line' => ':3: Misplaced }
+',
+    'file_name' => '',
+    'line_nr' => 3,
+    'macro' => '',
+    'text' => 'Misplaced }',
+    'type' => 'error'
+  },
+  {
+    'error_line' => ':6: @samp missing close brace
+',
+    'file_name' => '',
+    'line_nr' => 6,
+    'macro' => '',
+    'text' => '@samp missing close brace',
+    'type' => 'error'
+  },
+  {
+    'error_line' => ':9: Misplaced }
+',
+    'file_name' => '',
+    'line_nr' => 9,
+    'macro' => '',
+    'text' => 'Misplaced }',
+    'type' => 'error'
+  }
+];
+
+

Index: t/results/preformatted/empty_line.pl
===================================================================
RCS file: t/results/preformatted/empty_line.pl
diff -N t/results/preformatted/empty_line.pl
--- /dev/null   1 Jan 1970 00:00:00 -0000
+++ t/results/preformatted/empty_line.pl        23 Oct 2010 15:36:53 -0000      
1.1
@@ -0,0 +1,64 @@
+use vars qw(%result_texis %result_texts %result_trees %result_errors);
+
+$result_trees{'empty_line'} = {
+  'contents' => [
+    {
+      'cmdname' => 'example',
+      'contents' => [
+        {
+          'parent' => {},
+          'text' => '
+',
+          'type' => 'empty_line_after_command'
+        },
+        {
+          'parent' => {},
+          'text' => 'example
+'
+        },
+        {
+          'parent' => {},
+          'text' => '
+',
+          'type' => 'empty_line'
+        },
+        {
+          'parent' => {},
+          'text' => 'after empty line
+'
+        }
+      ],
+      'parent' => {}
+    },
+    {
+      'parent' => {},
+      'text' => '
+',
+      'type' => 'empty_line_after_command'
+    }
+  ],
+  'type' => 'text_root'
+};
+$result_trees{'empty_line'}{'contents'}[0]{'contents'}[0]{'parent'} = 
$result_trees{'empty_line'}{'contents'}[0];
+$result_trees{'empty_line'}{'contents'}[0]{'contents'}[1]{'parent'} = 
$result_trees{'empty_line'}{'contents'}[0];
+$result_trees{'empty_line'}{'contents'}[0]{'contents'}[2]{'parent'} = 
$result_trees{'empty_line'}{'contents'}[0];
+$result_trees{'empty_line'}{'contents'}[0]{'contents'}[3]{'parent'} = 
$result_trees{'empty_line'}{'contents'}[0];
+$result_trees{'empty_line'}{'contents'}[0]{'parent'} = 
$result_trees{'empty_line'};
+$result_trees{'empty_line'}{'contents'}[1]{'parent'} = 
$result_trees{'empty_line'};
+
+$result_texis{'empty_line'} = '@example
+example
+
+after empty line
address@hidden example
+';
+
+
+$result_texts{'empty_line'} = 'example
+
+after empty line
+';
+
+$result_errors{'empty_line'} = [];
+
+

Index: t/results/preformatted/empty_line_style_command.pl
===================================================================
RCS file: t/results/preformatted/empty_line_style_command.pl
diff -N t/results/preformatted/empty_line_style_command.pl
--- /dev/null   1 Jan 1970 00:00:00 -0000
+++ t/results/preformatted/empty_line_style_command.pl  23 Oct 2010 15:36:53 
-0000      1.1
@@ -0,0 +1,89 @@
+use vars qw(%result_texis %result_texts %result_trees %result_errors);
+
+$result_trees{'empty_line_style_command'} = {
+  'contents' => [
+    {
+      'cmdname' => 'example',
+      'contents' => [
+        {
+          'parent' => {},
+          'text' => '
+',
+          'type' => 'empty_line_after_command'
+        },
+        {
+          'parent' => {},
+          'text' => 'example '
+        },
+        {
+          'args' => [
+            {
+              'contents' => [
+                {
+                  'parent' => {},
+                  'text' => 'in samp
+'
+                },
+                {
+                  'parent' => {},
+                  'text' => '
+',
+                  'type' => 'empty_line'
+                },
+                {
+                  'parent' => {},
+                  'text' => 'after empty'
+                }
+              ],
+              'parent' => {},
+              'type' => 'brace_command_arg'
+            }
+          ],
+          'cmdname' => 'samp',
+          'contents' => [],
+          'parent' => {}
+        },
+        {
+          'parent' => {},
+          'text' => ' line
+'
+        }
+      ],
+      'parent' => {}
+    },
+    {
+      'parent' => {},
+      'text' => '
+',
+      'type' => 'empty_line_after_command'
+    }
+  ],
+  'type' => 'text_root'
+};
+$result_trees{'empty_line_style_command'}{'contents'}[0]{'contents'}[0]{'parent'}
 = $result_trees{'empty_line_style_command'}{'contents'}[0];
+$result_trees{'empty_line_style_command'}{'contents'}[0]{'contents'}[1]{'parent'}
 = $result_trees{'empty_line_style_command'}{'contents'}[0];
+$result_trees{'empty_line_style_command'}{'contents'}[0]{'contents'}[2]{'args'}[0]{'contents'}[0]{'parent'}
 = 
$result_trees{'empty_line_style_command'}{'contents'}[0]{'contents'}[2]{'args'}[0];
+$result_trees{'empty_line_style_command'}{'contents'}[0]{'contents'}[2]{'args'}[0]{'contents'}[1]{'parent'}
 = 
$result_trees{'empty_line_style_command'}{'contents'}[0]{'contents'}[2]{'args'}[0];
+$result_trees{'empty_line_style_command'}{'contents'}[0]{'contents'}[2]{'args'}[0]{'contents'}[2]{'parent'}
 = 
$result_trees{'empty_line_style_command'}{'contents'}[0]{'contents'}[2]{'args'}[0];
+$result_trees{'empty_line_style_command'}{'contents'}[0]{'contents'}[2]{'args'}[0]{'parent'}
 = $result_trees{'empty_line_style_command'}{'contents'}[0]{'contents'}[2];
+$result_trees{'empty_line_style_command'}{'contents'}[0]{'contents'}[2]{'parent'}
 = $result_trees{'empty_line_style_command'}{'contents'}[0];
+$result_trees{'empty_line_style_command'}{'contents'}[0]{'contents'}[3]{'parent'}
 = $result_trees{'empty_line_style_command'}{'contents'}[0];
+$result_trees{'empty_line_style_command'}{'contents'}[0]{'parent'} = 
$result_trees{'empty_line_style_command'};
+$result_trees{'empty_line_style_command'}{'contents'}[1]{'parent'} = 
$result_trees{'empty_line_style_command'};
+
+$result_texis{'empty_line_style_command'} = '@example
+example @samp{in samp
+
+after empty} line
address@hidden example
+';
+
+
+$result_texts{'empty_line_style_command'} = 'example in samp
+
+after empty line
+';
+
+$result_errors{'empty_line_style_command'} = [];
+
+



reply via email to

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