#!/usr/bin/env php
<?php
// Usage:
// $ jflex TokenMaker4MyRSJTextArea.flex
// $ ./AfterRewrite.php TokenMaker4MyRSJTextArea.java
if (count($argv) < 2) {
echo "input file name (or, command-line argument)\n";
$argv[1] = rtrim(fgets(STDIN));
echo "OK. I'll read {$argv[1]} (wait 2 secs)\n";
sleep(2);
}
$count_zzRefill = 0;
$count_yyreset = 0;
$passCheckpoint = 0;
$out = "";
foreach (file($argv[1]) as $line) {
if (preg_match("/public final void yyreset\(/", $line)) {
$count_yyreset++;
if ($count_yyreset > 1) {
$line = str_replace("yyreset", "yyreset_GOMI", $line);
}
$out .= $line;
} else if (preg_match("/private boolean zzRefill\(/", $line)) {
$count_zzRefill++;
if ($count_zzRefill > 1) {
$line = str_replace("zzRefill", "zzRefill_GOMI", $line);
}
$out .= $line;
} else if (preg_match("/Character\.charCount\(zzInput\)/", $line)){
$out .= "// ".$line;
} else if (preg_match("/if\ \(eof\)/", $line)){
$passCheckpoint++;
$out .= $line;
} else {
if (preg_match("/zzInput = Character\.codePointAt\(zzBufferL\,\ zzCurrentPosL\,\ zzEndReadL\)/", $line)) {
$out .= " zzInput = zzBufferL[zzCurrentPosL++]; \n";
} else {
$out .= $line;
}
}
}
// もとのファイルに書き出し
// echo $out;
file_put_contents($argv[1], $out);
echo "Overwrote to {$argv[1]} .\n";