Software industry has a huge amount of legacy programs needing modernization. This book considers re-engineering legacy programs via language conversion. In language conversion, the source and target languages can be either from the same programming paradigm or from different ones. The book describes the converter translating PL/M programs into C. Special attention is paid to the problems encountered during conversion. Legacy systems are typically large, and thus, the space requirements of the converter should be reduced. Moreover, conditional compilation of the source language may cause parsing problems in source-to-source translation. As a solution for this problem, multi-branch parsing is introduced. To manage situations where the target language is an object-oriented one, the book introduces methods to identify object-oriented features, such as subclass relationships and polymorphism, from legacy programs. Methods introduced in this book should be useful to both software practitioners and researchers, especially to those who are dealing with legacy programs and software maintenance.