お馬鹿な構文解析

某プロジェクトだが何年も外注任せにしてしまっていて、単発の修正を設計書・テスト成績書なんかで縛りまくった結果、馬鹿なコードが幾重にも層を成し、まさに収拾のつかない悲惨な状態となっている。字句解析も似たような状況であり、改修のためソースを覗いたら、出るは出るは、すんげー適当で勝手な解釈、エラー処理。しかも毎回場当たり的に作成された構文。シングルクォートのエスケープ方法一つを取っても、バックスラッシュに続けるもの、クォートを重ねるもの、エスケープ不要なもの、理由なくエラーとするもの……。

誰かが言っていたが、これが何十万も払わせるソフトウェアとは到底思えない。確かに細かく仕様追加を重ねてきたが、もうとっくにリファインするべき時期は過ぎ去ってしまっている。出がらしに誰が魅力を感じるというのだ。
とはいえ、これだけぶよぶよに肥大化したコードを手入れするのにどれだけの期間が必要なのか、誰にも想像がつかない。捨て去るのが一番得策なのだが、過去の互換性を気にして誰も決断できないのだ。きちんとした仕様を練り上げ、堅いコーディングをし、その外側に互換性の皮を被せるのだ。