+=head2 Functions
+
+=over 4
+
+=item C<triangular_grammar ($base, $max, $directives)>
+
+Create a large triangular grammar which looks like :
+
+ input:
+ exp { if ($1 != 0) abort (); $$ = $1; }
+ | input exp { if ($2 != $1 + 1) abort (); $$ = $2; }
+ ;
+
+ exp:
+ END { $$ = 0; }
+ | "1" END { $$ = 1; }
+ | "1" "2" END { $$ = 2; }
+ | "1" "2" "3" END { $$ = 3; }
+ | "1" "2" "3" "4" END { $$ = 4; }
+ | "1" "2" "3" "4" "5" END { $$ = 5; }
+ ;
+
+C<$base> is the base name for the file to create (C<$base.y>).
+C<$max> is the number of such rules (here, 5). You may pass
+additional Bison C<$directives>.
+
+The created parser is self contained: it includes its scanner, and
+source of input.
+=cut
+