{'fraction_non_alphanumeric': 0.015015015015015015, 'fraction_numerical': 0.0, 'mean_word_length': 5.211180124223603, 'pattern_counts': {'":': 0, '<': 0, '<?xml version=': 0, '>': 0, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
Migration of Common Lisp Programs to the Java Platform -The Linj Approach

Translation between high-level programming languages might be the last resort to preserve software written in languages that are no longer widely used. Although the translation process has many similarities with the compilation process, it becomes much more complex when it must produce maintainable code. In this case, besides preserving the semantics of the original software, the translator must also generate a program that obeys the pragmatics of the target language and that should be as similar as possible to an equivalent human-written program in that language. In this paper, we present Linj, a translator between common Lisp and Java that generates human-readable Java code that can be further maintained by Java programmers. The translator explores extensive knowledge of the syntax, semantics and pragmatics of both common Lisp and Java, is extensible and has been successfully used in several industry projects