#!/usr/bin/perl -w

use strict;

&usage('requires 2 args, not '.scalar @ARGV) if (@ARGV != 2);

&linkify($ARGV[0], $ARGV[1]);

sub linkify {
    my ($termsFile, $grammarFile) = @_;
    open (G,'<', $grammarFile) || &usage("can't open grammar file \"$grammarFile\" for reading: $!");
    my $grammar;
    {
	local $/ = undef;
	$grammar = <G>;
	close(G);
	$grammar =~ s/&/&amp;/g;
	$grammar =~ s/</&lt;/g;
	$grammar =~ s/>/&gt;/g;
    }
    open (T,'<', $termsFile) || &usage("can't open terms file \"$termsFile\" for reading: $!");
    foreach my $term (<T>) {
	chomp $term;
	$grammar =~ s/(?<![a-zA-Z0-9_])$term(?![:a-zA-Z0-9_])/<a href="#$term">$term<\/a>/g;
	$grammar =~ s/(?<![a-zA-Z0-9_])$term:/<a name="$term">$term<\/a>:/g;
    }
    close(T);
    my @lines = split("\n", $grammar);
    my $line_no = 1;
    foreach my $line (@lines) {
	print "<a name=\"_$line_no\"/>$line\n";
	$line_no++;
    }
}

sub usage {
    my ($msg) = @_;
    die "$msg\nUSAGE: $0 terms grammar\n";
}
