The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.

rules

Generate the PIR code that matches the various rules we have.

open (RULES,$rulefile) or die "can't read rules file.\n";

$rules = <<'EOH'; # Read in any of the perl6-ian grammars that have been defined for Tcl

.sub "_load_grammar" .local pmc p6rule_compile p6rule_compile = find_global "PGE", "p6rule"

  .local string grammar
  grammar = "_Tcl_Rules" #xxx should probably not hardcode this.
EOH

my $rule = join("",<RULES>); $rule =~ s/\n//g;

while ($rule =~ m/rule\s+(\w+)\s*{\s*(.*?)\s*};?/g) { my $rule_name = $1; my $rule_def = $2; $rule_def =~ s:\s+: :g; # remove extra whitespace $rule_def =~ s:\\:\\\\:g; $rule_def =~ s:":\\":g;

  $rules .= <<EORULE
  p6rule_compile("$rule_def", grammar, "$rule_name")
EORULE

};

$rules .= ".end\n";