Concurrent Clean コンパイラの日本語化

目下、コンパイラの日本語化に取り組んでおります。とりあえず、攻略すべきは、文字列の中のダメ文字「ソ」を正しく取り扱えるようになること。
で、今、詰まっているのは、どのソースが、信頼できる最新のソースなのかということ。てか、公式ホームページからダウンロードしたソースのはずなんだけど、IDEのときと違って、ソースの構造がわかりにくて。
で、それっぽいプロジェクトファイル(cocl.prj)を見つけて、適当に階層を移動させて、コンパイルしてみると、バイナリ配布のCleanCompiler.exeと同じサイズのexeが生成されたのですが、バイナリ比較してみると中身が違うようです。そんなものなのか?
新しいexeを古いexeと交換して、再びcocl.prjをコンパイルしてみると、コンパイルできるようです。なので、コンパイラとしてはきちんと機能しているようなのですが・・・。大丈夫かな?
ああ〜、どうやったら、2つのコンパイラが同じ動作をすることが確認できるんだ〜?

      • -

サンプルプロジェクトをよく観察していると、.icl.dcl -> .abc の部分ではなく、.abc -> .o のところで、文字列リテラルを解釈しているようです。つまり、日本語化のためには、CodeGenerator.exeの方を修正する必要があるのです。

      • -

.abcファイルの「buildAC」が、文字列リテラルを処理しているコマンドのようです。で、これに対応するCの関数が、「void code_buildAC (char *string,int string_length)」です。
さらにこの中で、「LABEL *w_code_descriptor_length_and_string (char *string,int length)」を呼び出して、文字列を解析して、ラベルを貼っています。

      • -

あ、でも、code_buildACが呼ばれた時点で、すでにエスケープシーケンスは解決されているような感じだな。

      • -

今気づいたのですが、CleanCompiler.exeでも、「ソ」が文字列リテラルの最後にあると、文字列の終わりを認識できなくて、エラーになってしまいます。なので、CodeGenerator.exeだけでなく、CleanCompiler.exeの方も対応しなければいけないようです。