#!/usr/bin/perl

$index = 1;

$blahnum = 0;

while (<>) {
  chomp;
  if (/(\S+)([AD]) (\d+) (\d+)/) {
    ($name, $dir, $start, $length) = ($1, $2, $3, $4);
    if ($dir eq 'A') {
      print "  t = new GridLight($name, true, \&grid[$start], $length); across.push_back(t);\n"
    } elsif ($dir eq 'D') {
      print "  t = new GridLight($name, false, \&grid[$start], $length); down.push_back(t);\n"
    }
  } elsif (/(\S+) \* (\d+) = (\S+)/) {
    print "  ConMultiple V$index (\"$1\", \"$3\", $2);\n";
  } elsif (/(\S+) \* (\S+) = (\S+)/) {
    print "  ConProduct V$index (\"$1\", \"$2\", \"$3\");\n";
  } elsif (/(\S+) \/ (\d+) = (\S+)/) {
    print "  ConMultiple V$index (\"$3\", \"$1\", $2);\n";
  } elsif (/(\S+) \/ (\S+) = (\S+)/) {
    print "  ConProduct V$index (\"$3\", \"$2\", \"$1\");\n";
  } elsif (/(\S+) \+ (\S+) = (\S+)/) {
    print "  ConSum V$index (\"$1\", \"$2\", \"$3\");\n";
  } elsif (/(\S+) \- (\S+) = (\S+)/) {
    print "  ConSum V$index (\"$3\", \"$2\", \"$1\");\n";
  } elsif (/(\S+) \% (\S+) = (\S+)/) {
    print "  ConMod V$index (\"$1\", \"$2\", \"$3\");\n";
  } elsif (/(\S+) average (\S+) = (\S+)/) {
    $blahnum++;
    print "  MakeLight(\"BBBBB$blahnum\");\n";
    print "  ConSum V$index (\"$1\", \"$2\", \"BBBBB$blahnum\");\n";
    $index++;
    print "  ConMultiple V$index (\"$3\", \"BBBBB$blahnum\", 2);\n";
  } elsif (/(\S+) \^ (\d+) = (\S+)/) {
    print "  ConPower V$index (\"$1\", \"$3\", $2);\n";
  } elsif (/square root of (\S+) = (\S+)/) {
    print "  ConPower V$index (\"$2\", \"$1\", 2);\n";
  } elsif (/(\S+) squared = (\S+)/) {
    print "  ConPower V$index (\"$1\", \"$2\", 2);\n";
  } elsif (/(\S+) cubed = (\S+)/) {
    print "  ConPower V$index (\"$1\", \"$2\", 3);\n";
  } elsif (/digprod (\S+) = (\S+)/) {
    print "  ConDigprod V$index (\"$1\", \"$2\");\n";
  } elsif (/digsum (\S+) = (\S+)/) {
    print "  ConDigsum V$index (\"$1\", \"$2\");\n";
  } elsif (/(\S+) digprod = (\S+)/) {
    print "  ConDigprod V$index (\"$1\", \"$2\");\n";
  } elsif (/(\S+) digsum = (\S+)/) {
    print "  ConDigsum V$index (\"$1\", \"$2\");\n";
  } elsif (/(\S+) reversed = (\S+)/) {
    print "  ConReverse V$index (\"$1\", \"$2\");\n";
  } elsif (/(\S+) reverse = (\S+)/) {
    print "  ConReverse V$index (\"$1\", \"$2\");\n";
  } elsif (/(\S+) anagram = (\S+)/) {
    print "  ConAnagram V$index (\"$1\", \"$2\");\n";
  } elsif (/(\S+) anag = (\S+)/) {
    print "  ConAnagram V$index (\"$1\", \"$2\");\n";
  } elsif (/(\S+) anagram (\S+)/) {
    print "  ConAnagram V$index (\"$1\", \"$2\");\n";
  } elsif (/(\S+) anag (\S+)/) {
    print "  ConAnagram V$index (\"$1\", \"$2\");\n";
  } elsif (/(\S+) exclusive (\S+)/) {
    print "  ConExclusive V$index (\"$1\", \"$2\");\n";
  } elsif (/reverse (\S+) = (\S+)/) {
    print "  ConReverse V$index (\"$1\", \"$2\");\n";
  } elsif (/anagram (\S+) = (\S+)/) {
    print "  ConAnagram V$index (\"$1\", \"$2\");\n";
  } elsif (/^(\S+)$/) {
    print "  MakeLight(\"$1\");\n";
    $index--;
  } elsif (/(\S+) = (\d+) (\d+)/) {
    print "  MakeLight(\"$1\", $2, $3);\n";
    $index--;
  } elsif (/(\S+) = (\d+)/) {
    print "  MakeLight(\"$1\", $2);\n";
    $index--;
  } else {
    print "  // $_\n";
  }
  $index++;
}


