XES - Project Plan - Class Library Translation

This proposed enhancement is in the Sourceforge feature request system.

At the moment the program can help to translate the syntax of one language to another. However, until now there is no attempt to translate the class libraries which the program calls.

For example the java program might contain a the following call:

System.out.println("apperanceBean.writeJava:" + e);

If we are translating the program into a .net language we would want to translate it as follows:

Console.WriteLine("apperanceBean.writeJava:" + e);

So what I am suggesting is to give XES the ability to read in a large table containing a column for each class library and a row for each possible class library call:

Java .net Qt3
System.out.println Console.WriteLine QErrorMessage

XES would then substitute the appropriate text in the program from the table.

Of course such a simplistic translation cannot correctly handle all possible differences between the class libraries but it should provide a starting point for manual translation.

The advantages of this method are:

Implementation Issues

If we take the above example, can we just replace the 'System.out.println' entry in the symbol table with 'Console.WriteLine' and so on. This would seem to be the quickest approach and I think this would work well in most cases. The only possible problem would be that it would be replaced regardless of whether the text is a library call, an include path, a comment, a string constant, etc. I think it would add a lot of complexity as the symbol table would have to have an extra column to determine if the entry is a library call, an include path, a comment, a string constant, a method name, a class name, a variable name etc. So I suggest that we just do a global replace for the first implementation and then refine that later if that proves necessary.

User Interface

I suggest adding a new 'library translation' tab. This tab would allow the table to be loaded, displayed, modified and saved. There would also be buttons to select the input and output library and a button to do the translation.

Further Stages

In order to make the work manageable this does not include everything required, I propose the following follow on projects:

This enhancement needs to be further extended as described here.

Also a table needs to generated in order to use this feature to translate class library names as described here.

metadata block
see also:


Correspondence about this page

This site may have errors. Don't use for critical systems.

Copyright (c) 1998-2023 Martin John Baker - All rights reserved - privacy policy.