Newer
Older
KisoJikkenNWP / src / main / java / istlab / KisoJikken / Test / AfterRewrite.php
#!/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";