mirror of
https://github.com/twiglet/cs2j.git
synced 2025-01-18 13:15:17 +01:00
Add extra translation steps to the pipeline to (eventually) produce Java
This commit is contained in:
parent
e4bd86900b
commit
e914af9031
@ -5,6 +5,9 @@ set -e
|
|||||||
cd src/cs2j/CSharp
|
cd src/cs2j/CSharp
|
||||||
java -Xmx512m -jar ../../../jar/antlr-3.3.jar -make cs.g
|
java -Xmx512m -jar ../../../jar/antlr-3.3.jar -make cs.g
|
||||||
java -Xmx512m -jar ../../../jar/antlr-3.3.jar -make TemplateExtracter.g
|
java -Xmx512m -jar ../../../jar/antlr-3.3.jar -make TemplateExtracter.g
|
||||||
|
java -Xmx512m -jar ../../../jar/antlr-3.3.jar -make JavaMaker.g
|
||||||
|
java -Xmx512m -jar ../../../jar/antlr-3.3.jar -make NetMaker.g
|
||||||
|
java -Xmx512m -jar ../../../jar/antlr-3.3.jar -make JavaPrettyPrint.g
|
||||||
cd ../../../
|
cd ../../../
|
||||||
xbuild
|
xbuild
|
||||||
echo 'All Done'
|
echo 'All Done'
|
||||||
|
@ -18,8 +18,8 @@ namespace RusticiSoftware.Translator.CSharp
|
|||||||
class CS2J
|
class CS2J
|
||||||
{
|
{
|
||||||
private const string VERSION = "2009.1.1.x";
|
private const string VERSION = "2009.1.1.x";
|
||||||
private static DirectoryHT<TypeRepTemplate> AppEnv { get; set; }
|
private static DirectoryHT<TypeRepTemplate> AppEnv { get; set; }
|
||||||
private static CS2JSettings cfg = new CS2JSettings();
|
private static CS2JSettings cfg = new CS2JSettings();
|
||||||
|
|
||||||
public delegate void FileProcessor(string fName);
|
public delegate void FileProcessor(string fName);
|
||||||
|
|
||||||
@ -49,18 +49,18 @@ namespace RusticiSoftware.Translator.CSharp
|
|||||||
Environment.Exit(0);
|
Environment.Exit(0);
|
||||||
}
|
}
|
||||||
|
|
||||||
private static void addDirectories(IList<string> strs, string rawStr) {
|
private static void addDirectories(IList<string> strs, string rawStr) {
|
||||||
string[] argDirs = rawStr.Split(';');
|
string[] argDirs = rawStr.Split(';');
|
||||||
for (int i = 0; i < argDirs.Length; i++)
|
for (int i = 0; i < argDirs.Length; i++)
|
||||||
strs.Add(Path.GetFullPath(argDirs[i]).ToLower());
|
strs.Add(Path.GetFullPath(argDirs[i]).ToLower());
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void CS2JMain(string[] args)
|
public static void CS2JMain(string[] args)
|
||||||
{
|
{
|
||||||
long startTime = DateTime.Now.Ticks;
|
long startTime = DateTime.Now.Ticks;
|
||||||
IList<string> remArgs = new List<string>();
|
IList<string> remArgs = new List<string>();
|
||||||
XmlTextWriter enumXmlWriter = null;
|
XmlTextWriter enumXmlWriter = null;
|
||||||
AppEnv = new DirectoryHT<TypeRepTemplate>(null);
|
AppEnv = new DirectoryHT<TypeRepTemplate>(null);
|
||||||
|
|
||||||
// Use a try/catch block for parser exceptions
|
// Use a try/catch block for parser exceptions
|
||||||
try
|
try
|
||||||
@ -71,36 +71,36 @@ namespace RusticiSoftware.Translator.CSharp
|
|||||||
|
|
||||||
if (cfg.Verbosity >= 2) Console.Error.WriteLine("Parsing Command Line Arguments...");
|
if (cfg.Verbosity >= 2) Console.Error.WriteLine("Parsing Command Line Arguments...");
|
||||||
|
|
||||||
OptionSet p = new OptionSet ()
|
OptionSet p = new OptionSet ()
|
||||||
.Add ("v", v => cfg.Verbosity++)
|
.Add ("v", v => cfg.Verbosity++)
|
||||||
.Add ("debug=", v => cfg.DebugLevel = Int32.Parse(v))
|
.Add ("debug=", v => cfg.DebugLevel = Int32.Parse(v))
|
||||||
.Add ("warnings", v => cfg.Warnings = true)
|
.Add ("warnings", v => cfg.Warnings = true)
|
||||||
.Add ("version", v => showVersion())
|
.Add ("version", v => showVersion())
|
||||||
.Add ("help|h|?", v => showUsage())
|
.Add ("help|h|?", v => showUsage())
|
||||||
.Add ("dumpcsharp", v => cfg.DumpCSharp = true)
|
.Add ("dumpcsharp", v => cfg.DumpCSharp = true)
|
||||||
.Add ("dumpjava", v => cfg.DumpJava = true)
|
.Add ("dumpjava", v => cfg.DumpJava = true)
|
||||||
.Add ("dumpjavasyntax", v => cfg.DumpJavaSyntax = true)
|
.Add ("dumpjavasyntax", v => cfg.DumpJavaSyntax = true)
|
||||||
.Add ("dumptokens", v => cfg.DisplayTokens = true)
|
.Add ("dumptokens", v => cfg.DisplayTokens = true)
|
||||||
.Add ("D=", def => cfg.MacroDefines.Add(def))
|
.Add ("D=", def => cfg.MacroDefines.Add(def))
|
||||||
.Add ("dumpenums", v => cfg.DumpEnums = true)
|
.Add ("dumpenums", v => cfg.DumpEnums = true)
|
||||||
.Add ("enumdir=", dir => cfg.EnumDir = Path.Combine(Directory.GetCurrentDirectory(), dir))
|
.Add ("enumdir=", dir => cfg.EnumDir = Path.Combine(Directory.GetCurrentDirectory(), dir))
|
||||||
.Add ("dumpxmls", v => cfg.DumpXmls = true)
|
.Add ("dumpxmls", v => cfg.DumpXmls = true)
|
||||||
.Add ("xmldir=", dir => cfg.XmlDir = Path.Combine(Directory.GetCurrentDirectory(), dir))
|
.Add ("xmldir=", dir => cfg.XmlDir = Path.Combine(Directory.GetCurrentDirectory(), dir))
|
||||||
.Add ("odir=", dir => cfg.OutDir = dir)
|
.Add ("odir=", dir => cfg.OutDir = dir)
|
||||||
.Add ("cheatdir=", dir => cfg.CheatDir = dir)
|
.Add ("cheatdir=", dir => cfg.CheatDir = dir)
|
||||||
.Add ("netdir=", dirs => addDirectories(cfg.NetRoot, dirs))
|
.Add ("netdir=", dirs => addDirectories(cfg.NetRoot, dirs))
|
||||||
.Add ("exnetdir=", dirs => addDirectories(cfg.ExNetRoot, dirs))
|
.Add ("exnetdir=", dirs => addDirectories(cfg.ExNetRoot, dirs))
|
||||||
.Add ("appdir=", dirs => addDirectories(cfg.AppRoot, dirs))
|
.Add ("appdir=", dirs => addDirectories(cfg.AppRoot, dirs))
|
||||||
.Add ("exappdir=", dirs => addDirectories(cfg.ExAppRoot, dirs))
|
.Add ("exappdir=", dirs => addDirectories(cfg.ExAppRoot, dirs))
|
||||||
.Add ("exclude=", dirs => addDirectories(cfg.Exclude, dirs))
|
.Add ("exclude=", dirs => addDirectories(cfg.Exclude, dirs))
|
||||||
;
|
;
|
||||||
|
|
||||||
//TODO: fix enum dump
|
//TODO: fix enum dump
|
||||||
// Final argument is translation target
|
// Final argument is translation target
|
||||||
remArgs = p.Parse (args);
|
remArgs = p.Parse (args);
|
||||||
|
|
||||||
|
|
||||||
// Load .Net templates
|
// Load .Net templates
|
||||||
foreach (string r in cfg.NetRoot)
|
foreach (string r in cfg.NetRoot)
|
||||||
doFile(r, ".xml", addNetTranslation, cfg.ExNetRoot);
|
doFile(r, ".xml", addNetTranslation, cfg.ExNetRoot);
|
||||||
|
|
||||||
@ -110,16 +110,16 @@ namespace RusticiSoftware.Translator.CSharp
|
|||||||
cfg.AppRoot.Add(remArgs[0]);
|
cfg.AppRoot.Add(remArgs[0]);
|
||||||
foreach (string r in cfg.AppRoot)
|
foreach (string r in cfg.AppRoot)
|
||||||
doFile(r, ".cs", addAppSigTranslation, cfg.ExAppRoot); // parse it
|
doFile(r, ".cs", addAppSigTranslation, cfg.ExAppRoot); // parse it
|
||||||
if (cfg.DumpEnums) {
|
if (cfg.DumpEnums) {
|
||||||
enumXmlWriter = new XmlTextWriter(cfg.EnumDir, System.Text.Encoding.UTF8);
|
enumXmlWriter = new XmlTextWriter(cfg.EnumDir, System.Text.Encoding.UTF8);
|
||||||
}
|
}
|
||||||
if (cfg.DumpXmls)
|
if (cfg.DumpXmls)
|
||||||
{
|
{
|
||||||
// Get package name and convert to directory name
|
// Get package name and convert to directory name
|
||||||
foreach (KeyValuePair<string,TypeRepTemplate> de in AppEnv)
|
foreach (KeyValuePair<string,TypeRepTemplate> de in AppEnv)
|
||||||
{
|
{
|
||||||
String xmlFName = Path.Combine(cfg.XmlDir,
|
String xmlFName = Path.Combine(cfg.XmlDir,
|
||||||
((string)de.Key).Replace('.', Path.DirectorySeparatorChar) + ".xml");
|
((string)de.Key).Replace('.', Path.DirectorySeparatorChar) + ".xml");
|
||||||
String xmlFDir = Path.GetDirectoryName(xmlFName);
|
String xmlFDir = Path.GetDirectoryName(xmlFName);
|
||||||
if (!Directory.Exists(xmlFDir))
|
if (!Directory.Exists(xmlFDir))
|
||||||
{
|
{
|
||||||
@ -135,8 +135,8 @@ namespace RusticiSoftware.Translator.CSharp
|
|||||||
if (cfg.DumpEnums)
|
if (cfg.DumpEnums)
|
||||||
{
|
{
|
||||||
enumXmlWriter.WriteEndElement();
|
enumXmlWriter.WriteEndElement();
|
||||||
enumXmlWriter.Close();
|
enumXmlWriter.Close();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
@ -161,7 +161,7 @@ namespace RusticiSoftware.Translator.CSharp
|
|||||||
// Call processFile on all files below f that have the given extension
|
// Call processFile on all files below f that have the given extension
|
||||||
public static void doFile(string root, string ext, FileProcessor processFile, IList<string> excludes)
|
public static void doFile(string root, string ext, FileProcessor processFile, IList<string> excludes)
|
||||||
{
|
{
|
||||||
string canonicalPath = Path.GetFullPath(root);
|
string canonicalPath = Path.GetFullPath(root);
|
||||||
// If this is a directory, walk each file/dir in that directory
|
// If this is a directory, walk each file/dir in that directory
|
||||||
if (!excludes.Contains(canonicalPath.ToLower()))
|
if (!excludes.Contains(canonicalPath.ToLower()))
|
||||||
{
|
{
|
||||||
@ -193,16 +193,16 @@ namespace RusticiSoftware.Translator.CSharp
|
|||||||
|
|
||||||
if (cfg.Verbosity > 2) Console.WriteLine("Parsing " + Path.GetFileName(fullName));
|
if (cfg.Verbosity > 2) Console.WriteLine("Parsing " + Path.GetFileName(fullName));
|
||||||
|
|
||||||
ICharStream input = new ANTLRFileStream(fullName);
|
ICharStream input = new ANTLRFileStream(fullName);
|
||||||
|
|
||||||
PreProcessor lex = new PreProcessor();
|
PreProcessor lex = new PreProcessor();
|
||||||
lex.AddDefine(cfg.MacroDefines);
|
lex.AddDefine(cfg.MacroDefines);
|
||||||
lex.CharStream = input;
|
lex.CharStream = input;
|
||||||
lex.TraceDestination = Console.Error;
|
lex.TraceDestination = Console.Error;
|
||||||
|
|
||||||
CommonTokenStream tokens = new CommonTokenStream(lex);
|
CommonTokenStream tokens = new CommonTokenStream(lex);
|
||||||
csParser p = new csParser(tokens);
|
csParser p = new csParser(tokens);
|
||||||
p.TraceDestination = Console.Error;
|
p.TraceDestination = Console.Error;
|
||||||
|
|
||||||
csParser.compilation_unit_return parser_rt = p.compilation_unit();
|
csParser.compilation_unit_return parser_rt = p.compilation_unit();
|
||||||
|
|
||||||
@ -220,146 +220,178 @@ namespace RusticiSoftware.Translator.CSharp
|
|||||||
}
|
}
|
||||||
|
|
||||||
CommonTreeNodeStream nodes = new CommonTreeNodeStream(parser_rt.Tree);
|
CommonTreeNodeStream nodes = new CommonTreeNodeStream(parser_rt.Tree);
|
||||||
nodes.TokenStream = tokens;
|
nodes.TokenStream = tokens;
|
||||||
|
|
||||||
return nodes;
|
return nodes;
|
||||||
|
|
||||||
}
|
}
|
||||||
// Here's where we do the real work...
|
// Here's where we do the real work...
|
||||||
public static void addNetTranslation(string fullName)
|
public static void addNetTranslation(string fullName)
|
||||||
{
|
{
|
||||||
Stream s = new FileStream(fullName, FileMode.Open, FileAccess.Read);
|
Stream s = new FileStream(fullName, FileMode.Open, FileAccess.Read);
|
||||||
TypeRepTemplate t = TypeRepTemplate.newInstance(s);
|
TypeRepTemplate t = TypeRepTemplate.newInstance(s);
|
||||||
AppEnv[t.TypeName] = t;
|
AppEnv[t.TypeName] = t;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Here's where we do the real work...
|
// Here's where we do the real work...
|
||||||
public static void addAppSigTranslation(string fullName)
|
public static void addAppSigTranslation(string fullName)
|
||||||
{
|
{
|
||||||
if (cfg.DebugLevel > 3) Console.Out.WriteLine("Extracting type info from file {0}", fullName);
|
|
||||||
|
if (cfg.DebugLevel > 3) Console.Out.WriteLine("Extracting type info from file {0}", fullName);
|
||||||
ITreeNodeStream csTree = parseFile(fullName);
|
ITreeNodeStream csTree = parseFile(fullName);
|
||||||
if (csTree != null)
|
if (csTree != null)
|
||||||
{
|
{
|
||||||
|
|
||||||
TemplateExtracter templateWalker = new TemplateExtracter(csTree);
|
TemplateExtracter templateWalker = new TemplateExtracter(csTree);
|
||||||
templateWalker.Filename = fullName;
|
templateWalker.Filename = fullName;
|
||||||
templateWalker.TraceDestination = Console.Error;
|
templateWalker.TraceDestination = Console.Error;
|
||||||
|
|
||||||
templateWalker.compilation_unit(cfg, AppEnv);
|
templateWalker.compilation_unit(cfg, AppEnv);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Here's where we do the real work...
|
// Here's where we do the real work...
|
||||||
public static void translateFile(string fullName)
|
public static void translateFile(string fullName)
|
||||||
{
|
{
|
||||||
if (cfg.DebugLevel > 3) Console.Out.WriteLine("Translating file {0}", fullName);
|
long startTime = DateTime.Now.Ticks;
|
||||||
CommonTreeNodeStream csTree = parseFile(fullName);
|
if (cfg.DebugLevel > 3) Console.Out.WriteLine("Translating file {0}", fullName);
|
||||||
if (cfg.DumpCSharp && csTree != null) AntlrUtils.AntlrUtils.DumpNodes(csTree);
|
ITreeNodeStream csTree = parseFile(fullName);
|
||||||
|
if (cfg.DumpCSharp && csTree != null) AntlrUtils.AntlrUtils.DumpNodes((CommonTreeNodeStream)csTree);
|
||||||
|
|
||||||
|
if (csTree != null)
|
||||||
|
{
|
||||||
|
Dictionary<string, CommonTree> cus = new Dictionary<string, CommonTree>();
|
||||||
|
JavaMaker javaMaker = new JavaMaker(csTree);
|
||||||
|
javaMaker.Filename = fullName;
|
||||||
|
javaMaker.TraceDestination = Console.Error;
|
||||||
|
|
||||||
|
JavaMaker.compilation_unit_return java = javaMaker.compilation_unit(cfg, cus);
|
||||||
|
foreach (KeyValuePair<string, CommonTree> package in cus) {
|
||||||
|
|
||||||
|
CommonTreeNodeStream javaSyntaxNodes = new CommonTreeNodeStream(package.Value);
|
||||||
|
javaSyntaxNodes.TokenStream = csTree.TokenStream;
|
||||||
|
|
||||||
|
NetMaker netMaker = new NetMaker(javaSyntaxNodes);
|
||||||
|
netMaker.Filename = fullName;
|
||||||
|
netMaker.TraceDestination = Console.Error;
|
||||||
|
|
||||||
|
NetMaker.type_declaration_return javaCompilationUnit = netMaker.type_declaration();
|
||||||
|
|
||||||
|
CommonTreeNodeStream javaCompilationUnitNodes = new CommonTreeNodeStream(javaCompilationUnit.Tree);
|
||||||
|
javaCompilationUnitNodes.TokenStream = csTree.TokenStream;
|
||||||
|
|
||||||
|
JavaPrettyPrint outputMaker = new JavaPrettyPrint(javaCompilationUnitNodes);
|
||||||
|
outputMaker.Filename = fullName;
|
||||||
|
outputMaker.TraceDestination = Console.Error;
|
||||||
|
|
||||||
|
outputMaker.type_declaration();
|
||||||
|
}
|
||||||
|
// ITreeNodeStream javaTree = java.Tree;
|
||||||
|
}
|
||||||
|
|
||||||
// ASTNode t = parseFile(f, s);
|
// ASTNode t = parseFile(f, s);
|
||||||
// if (t != null)
|
// if (t != null)
|
||||||
// {
|
// {
|
||||||
// if (showTree)
|
// if (showTree)
|
||||||
// {
|
// {
|
||||||
// ASTNode r = (ASTNode)new ASTNodeFactory().create(0, "AST ROOT");
|
// ASTNode r = (ASTNode)new ASTNodeFactory().create(0, "AST ROOT");
|
||||||
// r.setFirstChild(t);
|
// r.setFirstChild(t);
|
||||||
// ASTFrame frame = new ASTFrame("C# AST for file [" + f + "]", r);
|
// ASTFrame frame = new ASTFrame("C# AST for file [" + f + "]", r);
|
||||||
// frame.ShowDialog();
|
// frame.ShowDialog();
|
||||||
// //frame.Visible = true;
|
// //frame.Visible = true;
|
||||||
// // System.out.println(t.toStringList());
|
// // System.out.println(t.toStringList());
|
||||||
// }
|
// }
|
||||||
// ASTNode r1 = (ASTNode)new ASTNodeFactory().create(0, "AST ROOT");
|
// ASTNode r1 = (ASTNode)new ASTNodeFactory().create(0, "AST ROOT");
|
||||||
// r1.setFirstChild(t);
|
// r1.setFirstChild(t);
|
||||||
// ASTFrame frame1 = new ASTFrame("C# AST for file [" + f + "]", r1);
|
// ASTFrame frame1 = new ASTFrame("C# AST for file [" + f + "]", r1);
|
||||||
// if (showCSharp)
|
// if (showCSharp)
|
||||||
// frame1.ShowDialog();
|
// frame1.ShowDialog();
|
||||||
|
|
||||||
// CSharpTranslator transformer = new CSharpTranslator();
|
// CSharpTranslator transformer = new CSharpTranslator();
|
||||||
// transformer.setASTNodeClass(typeof(ASTNode).FullName);
|
// transformer.setASTNodeClass(typeof(ASTNode).FullName);
|
||||||
// transformer.setASTFactory(new ASTNodeFactory());
|
// transformer.setASTFactory(new ASTNodeFactory());
|
||||||
// CSharpTranslator.initializeASTFactory(transformer.getASTFactory());
|
// CSharpTranslator.initializeASTFactory(transformer.getASTFactory());
|
||||||
|
|
||||||
// long startTime = DateTime.Now.Ticks;
|
// long startTime = DateTime.Now.Ticks;
|
||||||
// transformer.compilationUnit(t, null);
|
// transformer.compilationUnit(t, null);
|
||||||
|
|
||||||
// //BaseAST.setVerboseStringConversion(true, tokenNames);
|
// //BaseAST.setVerboseStringConversion(true, tokenNames);
|
||||||
// ASTNode r2 = (ASTNode)new ASTNodeFactory().create(0, "AST ROOT");
|
// ASTNode r2 = (ASTNode)new ASTNodeFactory().create(0, "AST ROOT");
|
||||||
// r2.setFirstChild(transformer.getAST());
|
// r2.setFirstChild(transformer.getAST());
|
||||||
// ASTFrame frame2 = new ASTFrame("Java syntax AST for file [" + f + "]", r2);
|
// ASTFrame frame2 = new ASTFrame("Java syntax AST for file [" + f + "]", r2);
|
||||||
// if (showJavaSyntax)
|
// if (showJavaSyntax)
|
||||||
// frame2.ShowDialog();
|
// frame2.ShowDialog();
|
||||||
|
|
||||||
// // Take each java compilation unit (each class defn) and write it to the appropriate file
|
// // Take each java compilation unit (each class defn) and write it to the appropriate file
|
||||||
// IEnumerator enumCU = transformer.getAST().findAllPartial((ASTNode)transformer.getASTFactory().create(CSharpParser.COMPILATION_UNIT));
|
// IEnumerator enumCU = transformer.getAST().findAllPartial((ASTNode)transformer.getASTFactory().create(CSharpParser.COMPILATION_UNIT));
|
||||||
// while (enumCU.MoveNext())
|
// while (enumCU.MoveNext())
|
||||||
// {
|
// {
|
||||||
// ASTNode javaCU = (ASTNode)enumCU.Current;
|
// ASTNode javaCU = (ASTNode)enumCU.Current;
|
||||||
|
|
||||||
// // Extract class/interface name
|
// // Extract class/interface name
|
||||||
// String claName = JavaTreeParser.getClassName(javaCU);
|
// String claName = JavaTreeParser.getClassName(javaCU);
|
||||||
|
|
||||||
// // Get package name and convert to directory name
|
// // Get package name and convert to directory name
|
||||||
// String nsDir = "";
|
// String nsDir = "";
|
||||||
// foreach (String nsc in JavaTreeParser.getPackageName(javaCU))
|
// foreach (String nsc in JavaTreeParser.getPackageName(javaCU))
|
||||||
// {
|
// {
|
||||||
// nsDir = Path.Combine(nsDir, nsc);
|
// nsDir = Path.Combine(nsDir, nsc);
|
||||||
// }
|
// }
|
||||||
|
|
||||||
// // Build destination filename for this class
|
// // Build destination filename for this class
|
||||||
// String fName = Path.Combine(Path.Combine(outDir, nsDir), claName + ".java");
|
// String fName = Path.Combine(Path.Combine(outDir, nsDir), claName + ".java");
|
||||||
|
|
||||||
// if (cheatDir != "")
|
// if (cheatDir != "")
|
||||||
// {
|
// {
|
||||||
// String cheatFile = Path.Combine(cheatDir, Path.Combine(nsDir, claName + ".java"));
|
// String cheatFile = Path.Combine(cheatDir, Path.Combine(nsDir, claName + ".java"));
|
||||||
// if (File.Exists(cheatFile))
|
// if (File.Exists(cheatFile))
|
||||||
// {
|
// {
|
||||||
// // the old switcheroo
|
// // the old switcheroo
|
||||||
// File.Copy(cheatFile, fName, true);
|
// File.Copy(cheatFile, fName, true);
|
||||||
// continue;
|
// continue;
|
||||||
// }
|
// }
|
||||||
|
|
||||||
// String ignoreMarker = Path.Combine(cheatDir, Path.Combine(nsDir, claName + ".none"));
|
// String ignoreMarker = Path.Combine(cheatDir, Path.Combine(nsDir, claName + ".none"));
|
||||||
// if (File.Exists(ignoreMarker))
|
// if (File.Exists(ignoreMarker))
|
||||||
// {
|
// {
|
||||||
// // Don't generate this class
|
// // Don't generate this class
|
||||||
// continue;
|
// continue;
|
||||||
// }
|
// }
|
||||||
// }
|
// }
|
||||||
|
|
||||||
// NetTranslator netTx = new NetTranslator();
|
// NetTranslator netTx = new NetTranslator();
|
||||||
// netTx.setASTNodeClass(typeof(ASTNode).FullName);
|
// netTx.setASTNodeClass(typeof(ASTNode).FullName);
|
||||||
// netTx.setASTFactory(new ASTNodeFactory());
|
// netTx.setASTFactory(new ASTNodeFactory());
|
||||||
// NetTranslator.initializeASTFactory(netTx.getASTFactory());
|
// NetTranslator.initializeASTFactory(netTx.getASTFactory());
|
||||||
// netTx.compilationUnit(javaCU, null, appEnv);
|
// netTx.compilationUnit(javaCU, null, appEnv);
|
||||||
|
|
||||||
// //BaseAST.setVerboseStringConversion(true, tokenNames);
|
// //BaseAST.setVerboseStringConversion(true, tokenNames);
|
||||||
// ASTNode r3 = (ASTNode)new ASTNodeFactory().create(0, "AST ROOT");
|
// ASTNode r3 = (ASTNode)new ASTNodeFactory().create(0, "AST ROOT");
|
||||||
// r3.setFirstChild(netTx.getAST());
|
// r3.setFirstChild(netTx.getAST());
|
||||||
// ASTFrame frame3 = new ASTFrame("Java AST for file [" + f + "]", r3);
|
// ASTFrame frame3 = new ASTFrame("Java AST for file [" + f + "]", r3);
|
||||||
// if (showJava)
|
// if (showJava)
|
||||||
// frame3.ShowDialog();
|
// frame3.ShowDialog();
|
||||||
|
|
||||||
// Console.WriteLine(fName);
|
// Console.WriteLine(fName);
|
||||||
|
|
||||||
// String fDir = Path.GetDirectoryName(fName);
|
// String fDir = Path.GetDirectoryName(fName);
|
||||||
// if (!Directory.Exists(fDir))
|
// if (!Directory.Exists(fDir))
|
||||||
// {
|
// {
|
||||||
// Directory.CreateDirectory(fDir);
|
// Directory.CreateDirectory(fDir);
|
||||||
// }
|
// }
|
||||||
// FileInfo outF = new FileInfo(fName);
|
// FileInfo outF = new FileInfo(fName);
|
||||||
// StreamWriter w = new StreamWriter(outF.Create());
|
// StreamWriter w = new StreamWriter(outF.Create());
|
||||||
// JavaPrettyPrinter writer = new JavaPrettyPrinter();
|
// JavaPrettyPrinter writer = new JavaPrettyPrinter();
|
||||||
// writer.compilationUnit(netTx.getAST(), w, enumXmlWriter, filter);
|
// writer.compilationUnit(netTx.getAST(), w, enumXmlWriter, filter);
|
||||||
// w.Close();
|
// w.Close();
|
||||||
|
|
||||||
// }
|
// }
|
||||||
|
|
||||||
// double elapsedTime = ((DateTime.Now.Ticks - startTime) / TimeSpan.TicksPerMillisecond) / 1000.0;
|
double elapsedTime = ((DateTime.Now.Ticks - startTime) / TimeSpan.TicksPerMillisecond) / 1000.0;
|
||||||
// //System.Console.Out.WriteLine(writer.ToString());
|
//System.Console.Out.WriteLine(writer.ToString());
|
||||||
// System.Console.Out.WriteLine("");
|
System.Console.Out.WriteLine("");
|
||||||
// System.Console.Out.WriteLine("");
|
System.Console.Out.WriteLine("");
|
||||||
// System.Console.Out.WriteLine("Pretty-printed {0} in: {1} seconds.", f, elapsedTime);
|
System.Console.Out.WriteLine("Pretty-printed {0} in: {1} seconds.", fullName, elapsedTime);
|
||||||
// }
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -3,3 +3,9 @@ csLexer.cs
|
|||||||
csParser.cs
|
csParser.cs
|
||||||
TemplateExtracter.cs
|
TemplateExtracter.cs
|
||||||
TemplateExtracter.tokens
|
TemplateExtracter.tokens
|
||||||
|
NetMaker.cs
|
||||||
|
NetMaker.tokens
|
||||||
|
JavaMaker.cs
|
||||||
|
JavaMaker.tokens
|
||||||
|
JavaPrettyPrint.cs
|
||||||
|
JavaPrettyPrint.tokens
|
||||||
|
@ -45,5 +45,25 @@ namespace RusticiSoftware.Translator.CSharp
|
|||||||
Console.Out.WriteLine(s);
|
Console.Out.WriteLine(s);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// distinguish classes with same name, but differing numbers of type arguments
|
||||||
|
protected string mkTypeName (string name, List<String> tyargs) {
|
||||||
|
return name + (tyargs.Count > 0 ? "'" + tyargs.Count.ToString() : "");
|
||||||
|
}
|
||||||
|
|
||||||
|
protected string formatTyargs(List<string> tyargs) {
|
||||||
|
|
||||||
|
if (tyargs.Count == 0) {
|
||||||
|
return "";
|
||||||
|
}
|
||||||
|
StringBuilder buf = new StringBuilder();
|
||||||
|
buf.Append("<");
|
||||||
|
foreach (string t in tyargs) {
|
||||||
|
buf.Append(t + ",");
|
||||||
|
}
|
||||||
|
buf.Remove(buf.Length-1,1);
|
||||||
|
buf.Append(">");
|
||||||
|
return buf.ToString();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
1093
CSharpTranslator/antlr3/src/cs2j/CSharp/JavaMaker.g
Normal file
1093
CSharpTranslator/antlr3/src/cs2j/CSharp/JavaMaker.g
Normal file
File diff suppressed because it is too large
Load Diff
1046
CSharpTranslator/antlr3/src/cs2j/CSharp/JavaPrettyPrint.g
Normal file
1046
CSharpTranslator/antlr3/src/cs2j/CSharp/JavaPrettyPrint.g
Normal file
File diff suppressed because it is too large
Load Diff
1041
CSharpTranslator/antlr3/src/cs2j/CSharp/NetMaker.g
Normal file
1041
CSharpTranslator/antlr3/src/cs2j/CSharp/NetMaker.g
Normal file
File diff suppressed because it is too large
Load Diff
@ -69,20 +69,6 @@ scope NSContext {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
protected string formatTyargs(List<string> tyargs) {
|
|
||||||
|
|
||||||
if (tyargs.Count == 0) {
|
|
||||||
return "";
|
|
||||||
}
|
|
||||||
StringBuilder buf = new StringBuilder();
|
|
||||||
buf.Append("<");
|
|
||||||
foreach (string t in tyargs) {
|
|
||||||
buf.Append(t + ",");
|
|
||||||
}
|
|
||||||
buf.Remove(buf.Length-1,1);
|
|
||||||
buf.Append(">");
|
|
||||||
return buf.ToString();
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/********************************************************************************************
|
/********************************************************************************************
|
||||||
@ -672,10 +658,8 @@ scope NSContext;
|
|||||||
{
|
{
|
||||||
Debug("Processing class: " + $type_or_generic.type);
|
Debug("Processing class: " + $type_or_generic.type);
|
||||||
klass.Uses = this.NameSpaceContext;
|
klass.Uses = this.NameSpaceContext;
|
||||||
klass.TypeName = this.ParentNameSpace + "." + $type_or_generic.type;
|
klass.TypeName = this.ParentNameSpace + "." + mkTypeName($type_or_generic.type, $type_or_generic.generic_arguments);
|
||||||
if ($type_or_generic.generic_arguments.Count > 0) {
|
if ($type_or_generic.generic_arguments.Count > 0) {
|
||||||
// distinguish classes with same name, but differing numbers of type arguments
|
|
||||||
klass.TypeName+= "'" + $type_or_generic.generic_arguments.Count.ToString();
|
|
||||||
klass.TypeParams = $type_or_generic.generic_arguments.ToArray();
|
klass.TypeParams = $type_or_generic.generic_arguments.ToArray();
|
||||||
}
|
}
|
||||||
// Nested types can see things in this space
|
// Nested types can see things in this space
|
||||||
@ -848,10 +832,8 @@ scope NSContext;
|
|||||||
{
|
{
|
||||||
Debug("Processing delegate: " + $identifier.text);
|
Debug("Processing delegate: " + $identifier.text);
|
||||||
dlegate.Uses = this.NameSpaceContext;
|
dlegate.Uses = this.NameSpaceContext;
|
||||||
dlegate.TypeName = this.ParentNameSpace + "." + $identifier.text;
|
dlegate.TypeName = this.ParentNameSpace + "." + mkTypeName($identifier.text, $variant_generic_parameter_list.tyargs);
|
||||||
if ($variant_generic_parameter_list.tyargs != null && $variant_generic_parameter_list.tyargs.Count > 0) {
|
if ($variant_generic_parameter_list.tyargs != null && $variant_generic_parameter_list.tyargs.Count > 0) {
|
||||||
// distinguish classes with same name, but differing numbers of type arguments
|
|
||||||
dlegate.TypeName+= "'" + $variant_generic_parameter_list.tyargs.Count.ToString();
|
|
||||||
dlegate.TypeParams = $variant_generic_parameter_list.tyargs.ToArray();
|
dlegate.TypeParams = $variant_generic_parameter_list.tyargs.ToArray();
|
||||||
}
|
}
|
||||||
dlegate.Return=$return_type.thetext;
|
dlegate.Return=$return_type.thetext;
|
||||||
@ -938,10 +920,8 @@ scope NSContext;
|
|||||||
{
|
{
|
||||||
Debug("Processing interface: " + $identifier.text);
|
Debug("Processing interface: " + $identifier.text);
|
||||||
iface.Uses = this.NameSpaceContext;
|
iface.Uses = this.NameSpaceContext;
|
||||||
iface.TypeName = this.ParentNameSpace + "." + $identifier.text;
|
iface.TypeName = this.ParentNameSpace + "." + mkTypeName($identifier.text, $variant_generic_parameter_list.tyargs);
|
||||||
if ($variant_generic_parameter_list.tyargs != null && $variant_generic_parameter_list.tyargs.Count > 0) {
|
if ($variant_generic_parameter_list.tyargs != null && $variant_generic_parameter_list.tyargs.Count > 0) {
|
||||||
// distinguish classes with same name, but differing numbers of type arguments
|
|
||||||
iface.TypeName+= "'" + $variant_generic_parameter_list.tyargs.Count.ToString();
|
|
||||||
iface.TypeParams = $variant_generic_parameter_list.tyargs.ToArray();
|
iface.TypeParams = $variant_generic_parameter_list.tyargs.ToArray();
|
||||||
}
|
}
|
||||||
// Nested types can see things in this space
|
// Nested types can see things in this space
|
||||||
@ -1024,10 +1004,8 @@ scope NSContext;
|
|||||||
{
|
{
|
||||||
Debug("Processing struct: " + $type_or_generic.type);
|
Debug("Processing struct: " + $type_or_generic.type);
|
||||||
strukt.Uses = this.NameSpaceContext;
|
strukt.Uses = this.NameSpaceContext;
|
||||||
strukt.TypeName = this.ParentNameSpace + "." + $type_or_generic.type;
|
strukt.TypeName = this.ParentNameSpace + "." + mkTypeName($type_or_generic.type, $type_or_generic.generic_arguments);
|
||||||
if ($type_or_generic.generic_arguments.Count > 0) {
|
if ($type_or_generic.generic_arguments.Count > 0) {
|
||||||
// distinguish structs with same name, but differing numbers of type arguments
|
|
||||||
strukt.TypeName+= "'" + $type_or_generic.generic_arguments.Count.ToString();
|
|
||||||
strukt.TypeParams = $type_or_generic.generic_arguments.ToArray();
|
strukt.TypeParams = $type_or_generic.generic_arguments.ToArray();
|
||||||
}
|
}
|
||||||
// Nested types can see things in this space
|
// Nested types can see things in this space
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
<?xml version="1.0" encoding="utf-8"?>
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" ToolsVersion="4.0">
|
<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" ToolsVersion="4.0">
|
||||||
<PropertyGroup>
|
<PropertyGroup>
|
||||||
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
|
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
|
||||||
@ -66,11 +66,17 @@
|
|||||||
<Compile Include="Utils\TypeHelper.cs" />
|
<Compile Include="Utils\TypeHelper.cs" />
|
||||||
<Compile Include="CSharp\TemplateExtracter.cs" />
|
<Compile Include="CSharp\TemplateExtracter.cs" />
|
||||||
<Compile Include="CLR\CS2JSettings.cs" />
|
<Compile Include="CLR\CS2JSettings.cs" />
|
||||||
|
<Compile Include="CSharp\JavaMaker.cs" />
|
||||||
|
<Compile Include="CSharp\JavaPrettyPrint.cs" />
|
||||||
|
<Compile Include="CSharp\NetMaker.cs" />
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<None Include="CSharp\csCrawl.g" />
|
<None Include="CSharp\csCrawl.g" />
|
||||||
<None Include="CSharp\cs.g" />
|
<None Include="CSharp\cs.g" />
|
||||||
<None Include="CSharp\TemplateExtracter.g" />
|
<None Include="CSharp\TemplateExtracter.g" />
|
||||||
|
<None Include="CSharp\JavaMaker.g" />
|
||||||
|
<None Include="CSharp\JavaPrettyPrint.g" />
|
||||||
|
<None Include="CSharp\NetMaker.g" />
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<Content Include="README.txt" />
|
<Content Include="README.txt" />
|
||||||
|
Loading…
x
Reference in New Issue
Block a user