#!/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";