#!/usr/bin/perl

$mode = 0;

sub push_para
{
  $fst = shift;

  $fst =~ s/&/&amp;/g;
  $fst =~ s/</&lt;/g;
  $fst =~ s/>/&gt;/g;

  $para =~ s/&/&amp;/g;
  $para =~ s/</&lt;/g;
  $para =~ s/>/&gt;/g;

  $n = "[^\\[\\]]*";
  $n2 = "($n\\[$n\\]$n)*";
  $n3 = "($n2\\[$n2\\]$n2)*";
  $para =~ s%\[($n3)\]%<b><tt>$1</tt></b>%g;
  $para =~ s%\[($n2)\]%<b><tt>$1</tt></b>%g;
  $para =~ s%\[($n)\]%<b><tt>$1</tt></b>%g;

  print "<h1><tt>$fst</tt></h1>\n" if ($fst ne "");
  print "<p>$para</p>\n";
}

$next_line = undef;

while (1) {
  if (defined $next_line) { $_ = $next_line; undef $next_line; }
  else { $_ = <>; }
  
  last if ($_ eq "");
  if ($mode == 0) {
    if (m{^\s*/\*\*\s*(.*)\*/}) {
      $mode = 2;
      $para = $1;
    } elsif (m{^\s*/\*\*\s*(.*)}) {
    	$para = "$1\n";
	$mode = 1;
    }
  } elsif ($mode == 1) {
    if (m{^\s*(.*)\*/}) {
      $mode = 2;
      $para .= $1;
    } else {
      $para .= $_;
    }
  } elsif ($mode == 2) {
    if (/^([a-z<>'].*?)(\s*=\s*".*")?\s*;?\s*$/) {
        push_para($1);
	$mode = 0;
    } else {
        push_para("");
	$mode = 0;
    	$next_line = $_;
    }
  }
}
