name:
'match' | 'name' | 'mode' | 'priority'
####
name:
'match'
| 'name'
| 'mode'
| 'priority'
##
##
name:
'match'
{ [$item[0],$item[1]] }
| 'name'
{ [$item[0],$item[1]] }
| 'mode'
{ [$item[0],$item[1]] }
| 'priority'
{ [$item[0],$item[1]] }
##
##
sub AUTOLOAD {
my $tree = shift;
our $AUTOLOAD;
print STDERR "@@@ $AUTOLOAD(\$tree) @@@\n";
recurse($tree);
}
##
##
sub startrule {
my $tree = shift;
foreach (@$tree) {
if ( ref eq 'ARRAY' ) {
if ( ref( @$_[0] ) eq 'ARRAY' ) {
startrule($_);
}
else {
&{ @$_[0] } ($_);
}
}
}
}
##
##
style_option:
'version'
{ [@item[0..$#item]] }
| 'xmlns:xsl'
{ [@item[0..$#item]] }
| 'id'
{ [@item[0..$#item]] }
| 'extension-element-prefixes'
{ [@item[0..$#item]] }
| 'exclude-result-prefixes'
{ [@item[0..$#item]] }
| /[a-zA-Z0-9:_.\-]+/
{ [@item[0..$#item]] }
##
##
style_option:
'version'
{ [@item[0..$#item]] }
| 'xmlns:xsl'
{ [@item[0..$#item]] }
| 'id'
{ [@item[0..$#item]] }
| 'extension-element-prefixes'
{ [@item[0..$#item]] }
| 'exclude-result-prefixes'
{ [@item[0..$#item]] }
| char_set
{ [@item[0..$#item]] }
char_set:
/[a-zA-Z0-9:_.\-]+/
{ $item[1] }
##
##
preserve_space:
'preserve-space' '[' 'elements' '=' qstring ']' paren(?)
##
##
{ [$item[0],$item[5]] }
##
##
xcomment:
<skip: qr/[ \t]*/> newline(0..) '<!--'
{
($text,$return) = main::parse_delimited($text,'<!--','-->');
$return = ['xcomment',$return];
}
##
##
#______________________________________________________________________________
sub parse_delimited {
my $text = shift;
my $startdelim = shift;
my $enddelim = shift;
my $mc = new Text::DelimMatch( $startdelim, $enddelim );
my ( $p, $m, $r ) = $mc->match( $startdelim . $text );
if ($p) {
$text = $p;
}
else {
$text = "";
}
$text .= $r if ($r);
$m =~ s/^$startdelim//;
$m =~ s/$enddelim$//;
return $text, $m;
}
#______________________________________________________________________________
##
##
startrule:
is_printable(s)
{[$item[0],$item[1]]}
| name
{[$item[0],$item[1]]}
is_printable:
/[[:print:]]+/
{ [$item[0],$item[2]] }
name:
'match'
{ [@item[0..$#item]] }
| 'name'
{ [@item[0..$#item]] }
| 'mode'
{ [@item[0..$#item]] }
| 'priority'
{ $item[1] }